diff --git a/apps/web/app/(marketing)/blog/_components/html-renderer.module.css b/apps/web/app/(marketing)/blog/_components/html-renderer.module.css
index 1c05748a4..b31f68626 100644
--- a/apps/web/app/(marketing)/blog/_components/html-renderer.module.css
+++ b/apps/web/app/(marketing)/blog/_components/html-renderer.module.css
@@ -3,15 +3,15 @@
}
.HTML h1 {
- @apply mt-14 text-4xl font-semibold font-heading tracking-tight ;
+ @apply mt-14 text-4xl font-semibold font-heading tracking-tight;
}
.HTML h2 {
- @apply mb-4 mt-12 font-semibold text-2xl font-heading tracking-tight;
+ @apply mb-6 mt-12 font-semibold text-2xl font-heading tracking-tight;
}
.HTML h3 {
- @apply mt-10 text-xl font-semibold font-heading tracking-tight;
+ @apply mt-12 text-xl font-semibold font-heading tracking-tight;
}
.HTML h4 {
@@ -41,11 +41,11 @@ For more info: https://github.com/tailwindlabs/tailwindcss/issues/3258#issuecomm
}
.HTML p {
- @apply mb-4 mt-2 text-base leading-7;
+ @apply mb-6 mt-4 text-base leading-7 text-muted-foreground;
}
.HTML li {
- @apply relative my-1.5 text-base leading-7;
+ @apply relative my-1.5 text-base leading-7 text-muted-foreground;
}
.HTML ul > li:before {
@@ -55,7 +55,7 @@ For more info: https://github.com/tailwindlabs/tailwindcss/issues/3258#issuecomm
}
.HTML ol > li:before {
- @apply inline-flex font-medium;
+ @apply inline-flex font-medium text-muted-foreground;
content: counters(counts, '.') '. ';
font-feature-settings: 'tnum';
@@ -63,7 +63,7 @@ For more info: https://github.com/tailwindlabs/tailwindcss/issues/3258#issuecomm
.HTML b,
.HTML strong {
- @apply font-bold;
+ @apply font-semibold text-secondary-foreground;
}
:global(.dark) .HTML b,
@@ -92,10 +92,35 @@ For more info: https://github.com/tailwindlabs/tailwindcss/issues/3258#issuecomm
font-feature-settings: 'tnum';
}
+.HTML p > code, .HTML li > code {
+ @apply p-0.5 text-sm font-semibold bg-muted/50 border font-mono text-secondary-foreground;
+}
+
.HTML blockquote {
@apply my-4 border-l-8 border border-primary px-6 py-4 text-lg font-medium text-muted-foreground;
}
-.HTML pre {
- @apply my-6 text-sm text-current border p-6 rounded-lg overflow-x-scroll;
+.HTML a {
+ @apply border-b-black border-b hover:border-b-2 pb-0.5 text-secondary-foreground font-semibold;
}
+
+:global(.dark) .HTML a {
+ @apply border-yellow-300;
+}
+
+.HTML hr {
+ @apply mt-8 mb-6 border-border;
+}
+
+.HTML [role='alert'] {
+ @apply py-4 m-0 my-8;
+}
+
+.HTML [role='alert'] * {
+ color: inherit;
+ @apply m-0 p-0 text-sm;
+}
+
+.HTML [role='alert'] h5 {
+ color: inherit;
+}
\ No newline at end of file
diff --git a/apps/web/app/(marketing)/blog/page.tsx b/apps/web/app/(marketing)/blog/page.tsx
index 605e30e1e..e7febf287 100644
--- a/apps/web/app/(marketing)/blog/page.tsx
+++ b/apps/web/app/(marketing)/blog/page.tsx
@@ -37,6 +37,7 @@ const getContentItems = cache(
limit,
offset,
language,
+ content: false,
sortBy: 'publishedAt',
sortDirection: 'desc',
});
diff --git a/apps/web/app/(marketing)/docs/[...slug]/page.tsx b/apps/web/app/(marketing)/docs/[...slug]/page.tsx
index 4bb257976..f29a3b7dd 100644
--- a/apps/web/app/(marketing)/docs/[...slug]/page.tsx
+++ b/apps/web/app/(marketing)/docs/[...slug]/page.tsx
@@ -61,13 +61,15 @@ async function DocumentationPage({ params }: DocumentationPageProps) {
);
return (
-
-
-
+
+
+
{page.title}
-
+
{description}
diff --git a/apps/web/app/(marketing)/docs/_components/docs-nav-link.tsx b/apps/web/app/(marketing)/docs/_components/docs-nav-link.tsx
index 960ce90b9..012971fbd 100644
--- a/apps/web/app/(marketing)/docs/_components/docs-nav-link.tsx
+++ b/apps/web/app/(marketing)/docs/_components/docs-nav-link.tsx
@@ -1,13 +1,20 @@
'use client';
+import { useRef } from 'react';
+
import Link from 'next/link';
import { usePathname } from 'next/navigation';
import { SidebarMenuButton, SidebarMenuItem } from '@kit/ui/shadcn-sidebar';
import { cn, isRouteActive } from '@kit/ui/utils';
-export function DocsNavLink({ label, url }: { label: string; url: string }) {
+export function DocsNavLink({
+ label,
+ url,
+ children,
+}: React.PropsWithChildren<{ label: string; url: string }>) {
const currentPath = usePathname();
+ const ref = useRef(null);
const isCurrent = isRouteActive(url, currentPath, true);
return (
@@ -15,10 +22,16 @@ export function DocsNavLink({ label, url }: { label: string; url: string }) {
- {label}
+
+ {label}
+
+
+ {children}
diff --git a/apps/web/app/(marketing)/docs/_components/docs-navigation-collapsible.tsx b/apps/web/app/(marketing)/docs/_components/docs-navigation-collapsible.tsx
new file mode 100644
index 000000000..5a36aa498
--- /dev/null
+++ b/apps/web/app/(marketing)/docs/_components/docs-navigation-collapsible.tsx
@@ -0,0 +1,30 @@
+'use client';
+
+import { usePathname } from 'next/navigation';
+
+import { Cms } from '@kit/cms';
+import { Collapsible } from '@kit/ui/collapsible';
+import { isRouteActive } from '@kit/ui/utils';
+
+export function DocsNavigationCollapsible(
+ props: React.PropsWithChildren<{
+ node: Cms.ContentItem;
+ prefix: string;
+ }>,
+) {
+ const currentPath = usePathname();
+ const prefix = props.prefix;
+
+ const isChildActive = props.node.children.some((child) =>
+ isRouteActive(prefix + '/' + child.url, currentPath, false),
+ );
+
+ return (
+
+ {props.children}
+
+ );
+}
diff --git a/apps/web/app/(marketing)/docs/_components/docs-navigation.tsx b/apps/web/app/(marketing)/docs/_components/docs-navigation.tsx
index cc2e7bad4..becaa8991 100644
--- a/apps/web/app/(marketing)/docs/_components/docs-navigation.tsx
+++ b/apps/web/app/(marketing)/docs/_components/docs-navigation.tsx
@@ -1,66 +1,137 @@
+import { ChevronDown } from 'lucide-react';
+
import { Cms } from '@kit/cms';
+import { CollapsibleContent, CollapsibleTrigger } from '@kit/ui/collapsible';
import {
Sidebar,
SidebarGroup,
SidebarGroupContent,
SidebarMenu,
+ SidebarMenuButton,
+ SidebarMenuItem,
SidebarMenuSub,
} from '@kit/ui/shadcn-sidebar';
import { DocsNavLink } from '~/(marketing)/docs/_components/docs-nav-link';
+import { DocsNavigationCollapsible } from '~/(marketing)/docs/_components/docs-navigation-collapsible';
import { FloatingDocumentationNavigation } from './floating-docs-navigation';
-function Node({ node, level }: { node: Cms.ContentItem; level: number }) {
- const pathPrefix = `/docs`;
- const url = `${pathPrefix}/${node.slug}`;
+function Node({
+ node,
+ level,
+ prefix,
+}: {
+ node: Cms.ContentItem;
+ level: number;
+ prefix: string;
+}) {
+ const url = `${prefix}/${node.slug}`;
+ const label = node.label ? node.label : node.title;
+
+ const Container = (props: React.PropsWithChildren) => {
+ if (node.collapsible) {
+ return (
+
+ {props.children}
+
+ );
+ }
+
+ return props.children;
+ };
+
+ const ContentContainer = (props: React.PropsWithChildren) => {
+ if (node.collapsible) {
+ return {props.children} ;
+ }
+
+ return props.children;
+ };
+
+ const Trigger = () => {
+ if (node.collapsible) {
+ return (
+
+
+
+ {label}
+
+
+
+
+ );
+ }
+
+ return ;
+ };
return (
- <>
-
+
+
- {(node.children ?? []).length > 0 && (
-
- )}
- >
+
+
+
+
);
}
-function Tree({ pages, level }: { pages: Cms.ContentItem[]; level: number }) {
+function Tree({
+ pages,
+ level,
+ prefix,
+}: {
+ pages: Cms.ContentItem[];
+ level: number;
+ prefix: string;
+}) {
if (level === 0) {
return pages.map((treeNode, index) => (
-
-
-
-
-
-
-
+
));
}
return (
{pages.map((treeNode, index) => (
-
+
))}
);
}
-export function DocsNavigation({ pages }: { pages: Cms.ContentItem[] }) {
+export function DocsNavigation({
+ pages,
+ prefix = '/docs',
+}: {
+ pages: Cms.ContentItem[];
+ prefix?: string;
+}) {
return (
<>
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
>
diff --git a/apps/web/app/(marketing)/docs/_lib/server/docs.loader.ts b/apps/web/app/(marketing)/docs/_lib/server/docs.loader.ts
index 996a9d97e..3bec1b3be 100644
--- a/apps/web/app/(marketing)/docs/_lib/server/docs.loader.ts
+++ b/apps/web/app/(marketing)/docs/_lib/server/docs.loader.ts
@@ -18,7 +18,8 @@ async function docsLoader(language: string | undefined) {
const data = await cms.getContentItems({
collection: 'documentation',
language,
- limit: 500,
+ limit: Infinity,
+ content: false,
});
return data.items;
diff --git a/apps/web/app/(marketing)/docs/layout.tsx b/apps/web/app/(marketing)/docs/layout.tsx
index 096384a54..1ad7cd137 100644
--- a/apps/web/app/(marketing)/docs/layout.tsx
+++ b/apps/web/app/(marketing)/docs/layout.tsx
@@ -15,7 +15,7 @@ async function DocsLayout({ children }: React.PropsWithChildren) {
return (
diff --git a/apps/web/app/(marketing)/layout.tsx b/apps/web/app/(marketing)/layout.tsx
index d7295d1ef..dda93b0a9 100644
--- a/apps/web/app/(marketing)/layout.tsx
+++ b/apps/web/app/(marketing)/layout.tsx
@@ -2,6 +2,7 @@ import { getSupabaseServerClient } from '@kit/supabase/server-client';
import { SiteFooter } from '~/(marketing)/_components/site-footer';
import { SiteHeader } from '~/(marketing)/_components/site-header';
+import { BackgroundHue } from '~/components/background-hue';
import { withI18n } from '~/lib/i18n/with-i18n';
async function SiteLayout(props: React.PropsWithChildren) {
@@ -17,6 +18,7 @@ async function SiteLayout(props: React.PropsWithChildren) {
{props.children}
+
);
diff --git a/apps/web/app/(marketing)/page.tsx b/apps/web/app/(marketing)/page.tsx
index 50665141b..e79f56aa0 100644
--- a/apps/web/app/(marketing)/page.tsx
+++ b/apps/web/app/(marketing)/page.tsx
@@ -10,7 +10,6 @@ import {
FeatureGrid,
FeatureShowcase,
FeatureShowcaseIconContainer,
- GradientSecondaryText,
Hero,
Pill,
SecondaryHero,
@@ -24,38 +23,40 @@ import { withI18n } from '~/lib/i18n/with-i18n';
function Home() {
return (
-
- The leading SaaS Starter Kit for ambitious developers
-
- }
- title={
- <>
- The ultimate SaaS Starter
- for your next project
- >
- }
- subtitle={
-
- Build and Ship a SaaS faster than ever before with the next-gen SaaS
- Starter Kit. Ship your SaaS in days, not months.
-
- }
- cta={ }
- image={
-
- }
- />
+
+
+ The leading SaaS Starter Kit for ambitious developers
+
+ }
+ title={
+ <>
+ The ultimate SaaS Starter
+ for your next project
+ >
+ }
+ subtitle={
+
+ Build and Ship a SaaS faster than ever before with the next-gen
+ SaaS Starter Kit. Ship your SaaS in days, not months.
+
+ }
+ cta={ }
+ image={
+
+ }
+ />
+
.{' '}
-
+
Unleash your creativity and build your SaaS faster than ever
with Makerkit.
-
+
>
}
icon={
@@ -83,9 +84,7 @@ function Home() {
>
@@ -155,7 +154,7 @@ function Home() {
}
>
Get started for free. No credit card required.}
+ pill={No credit card required. }
heading="Fair pricing for all types of businesses"
subheading="Get started on our free plan and upgrade when you are ready."
/>
diff --git a/apps/web/app/auth/layout.tsx b/apps/web/app/auth/layout.tsx
index ff7b33bc3..341bda461 100644
--- a/apps/web/app/auth/layout.tsx
+++ b/apps/web/app/auth/layout.tsx
@@ -1,9 +1,16 @@
import { AuthLayoutShell } from '@kit/auth/shared';
import { AppLogo } from '~/components/app-logo';
+import { BackgroundHue } from '~/components/background-hue';
function AuthLayout({ children }: React.PropsWithChildren) {
- return {children} ;
+ return (
+
+ {children}
+
+
+
+ );
}
export default AuthLayout;
diff --git a/apps/web/app/sitemap.xml/route.ts b/apps/web/app/sitemap.xml/route.ts
index 6d34cb8f0..33db9e9a3 100644
--- a/apps/web/app/sitemap.xml/route.ts
+++ b/apps/web/app/sitemap.xml/route.ts
@@ -54,6 +54,7 @@ async function getContentItems() {
const posts = client
.getContentItems({
collection: 'posts',
+ content: false,
limit,
})
.then((response) => response.items)
@@ -69,6 +70,7 @@ async function getContentItems() {
const docs = client
.getContentItems({
collection: 'documentation',
+ content: false,
limit,
})
.then((response) => response.items)
diff --git a/apps/web/components/app-logo.tsx b/apps/web/components/app-logo.tsx
index 5646b8bc7..55a4864c4 100644
--- a/apps/web/components/app-logo.tsx
+++ b/apps/web/components/app-logo.tsx
@@ -31,10 +31,14 @@ export function AppLogo({
label,
className,
}: {
- href?: string;
+ href?: string | null;
className?: string;
label?: string;
}) {
+ if (href === null) {
+ return ;
+ }
+
return (
diff --git a/apps/web/components/background-hue.tsx b/apps/web/components/background-hue.tsx
new file mode 100644
index 000000000..6c8e0f40b
--- /dev/null
+++ b/apps/web/components/background-hue.tsx
@@ -0,0 +1,52 @@
+const DEFAULT_COLORS_SCALE = {
+ 0: 'hsl(var(--primary))',
+ 1: 'hsl(var(--primary))',
+ 2: 'hsl(var(--primary))',
+};
+
+export function BackgroundHue({
+ className,
+ opacity = 0.03,
+ colorsScale = DEFAULT_COLORS_SCALE,
+}: {
+ className?: string;
+ opacity?: number;
+ colorsScale?: Record;
+}) {
+ const colors = Object.values(colorsScale).map((color, index, array) => {
+ const offset = array.length > 1 ? index / (array.length - 1) : 0;
+ const stopOpacity = 1 - index / (array.length - 1);
+
+ return (
+
+ );
+ });
+
+ return (
+
+
+
+ {colors}
+
+
+
+
+ );
+}
diff --git a/apps/web/package.json b/apps/web/package.json
index e429446a0..dd44bad54 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -55,8 +55,8 @@
"@makerkit/data-loader-supabase-nextjs": "^1.2.3",
"@marsidev/react-turnstile": "^1.1.0",
"@radix-ui/react-icons": "^1.3.2",
- "@supabase/supabase-js": "^2.47.1",
- "@tanstack/react-query": "5.62.2",
+ "@supabase/supabase-js": "^2.47.2",
+ "@tanstack/react-query": "5.62.3",
"@tanstack/react-table": "^8.20.5",
"date-fns": "^4.1.0",
"lucide-react": "^0.468.0",
@@ -65,10 +65,10 @@
"next-themes": "0.4.4",
"react": "19.0.0",
"react-dom": "19.0.0",
- "react-hook-form": "^7.53.2",
+ "react-hook-form": "^7.54.0",
"react-i18next": "^15.1.3",
"recharts": "2.14.1",
- "sonner": "^1.7.0",
+ "sonner": "^1.7.1",
"tailwind-merge": "^2.5.5",
"zod": "^3.23.8"
},
diff --git a/packages/billing/gateway/package.json b/packages/billing/gateway/package.json
index 1b0303573..585187b28 100644
--- a/packages/billing/gateway/package.json
+++ b/packages/billing/gateway/package.json
@@ -27,13 +27,13 @@
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*",
- "@supabase/supabase-js": "^2.47.1",
+ "@supabase/supabase-js": "^2.47.2",
"@types/react": "npm:types-react@19.0.0-rc.1",
"date-fns": "^4.1.0",
"lucide-react": "^0.468.0",
"next": "15.0.4",
"react": "19.0.0",
- "react-hook-form": "^7.53.2",
+ "react-hook-form": "^7.54.0",
"react-i18next": "^15.1.3",
"zod": "^3.23.8"
},
diff --git a/packages/billing/gateway/src/components/pricing-table.tsx b/packages/billing/gateway/src/components/pricing-table.tsx
index eaf0ce089..40b7ba4cf 100644
--- a/packages/billing/gateway/src/components/pricing-table.tsx
+++ b/packages/billing/gateway/src/components/pricing-table.tsx
@@ -392,32 +392,36 @@ function PlanIntervalSwitcher(
}>,
) {
return (
-
+
{props.intervals.map((plan, index) => {
const selected = plan === props.interval;
const className = cn(
- 'animate-in fade-in !outline-none transition-all focus:!ring-0',
+ 'animate-in fade-in rounded-full !outline-none transition-all focus:!ring-0',
{
- 'rounded-r-none border-r-transparent': index === 0,
- 'rounded-l-none': index === props.intervals.length - 1,
- ['hover:text-primary text-muted-foreground border']: !selected,
- ['hover:text-initial hover:bg-background cursor-default font-semibold']:
- selected,
+ 'border-r-transparent': index === 0,
+ ['hover:text-primary text-muted-foreground']: !selected,
+ ['cursor-default font-semibold']: selected,
+ ['hover:bg-initial']: !selected
},
);
return (
props.setInterval(plan)}
>
-
-
-
-
+
+
diff --git a/packages/billing/lemon-squeezy/package.json b/packages/billing/lemon-squeezy/package.json
index b1fcfa9ac..e51ecedd5 100644
--- a/packages/billing/lemon-squeezy/package.json
+++ b/packages/billing/lemon-squeezy/package.json
@@ -14,7 +14,7 @@
"./components": "./src/components/index.ts"
},
"dependencies": {
- "@lemonsqueezy/lemonsqueezy.js": "3.3.1"
+ "@lemonsqueezy/lemonsqueezy.js": "4.0.0"
},
"devDependencies": {
"@kit/billing": "workspace:*",
diff --git a/packages/cms/keystatic/src/keystatic-client.ts b/packages/cms/keystatic/src/keystatic-client.ts
index 96ec807f8..77964c9a2 100644
--- a/packages/cms/keystatic/src/keystatic-client.ts
+++ b/packages/cms/keystatic/src/keystatic-client.ts
@@ -1,7 +1,7 @@
import { Cms, CmsClient } from '@kit/cms-types';
import { createKeystaticReader } from './create-reader';
-import { PostEntryProps } from './keystatic.config';
+import { DocumentationEntryProps, PostEntryProps } from './keystatic.config';
import { renderMarkdoc } from './markdoc';
export function createKeystaticClient() {
@@ -19,11 +19,13 @@ class KeystaticClient implements CmsClient {
throw new Error(`Collection ${collection} not found`);
}
- const docs = await reader.collections[collection].all();
+ const fetchContent = options.content ?? true;
const startOffset = options?.offset ?? 0;
const endOffset = startOffset + (options?.limit ?? 10);
+ const docs = await reader.collections[collection].all();
+
const filtered = docs
.filter((item) => {
const status = options?.status ?? 'published';
@@ -80,72 +82,95 @@ class KeystaticClient implements CmsClient {
return right - left;
});
- function processItems(items: typeof docs) {
- const result: typeof docs = [...items];
+ function processItems(items: typeof filtered) {
+ const slugSet = new Set(items.map((item) => item.slug));
+ const indexFileCache = new Map();
+ const parentCache = new Map();
- const indexFiles = items.filter((item) => {
- const parts = item.slug.split('/');
+ const isIndexFile = (slug: string): boolean => {
+ if (indexFileCache.has(slug)) {
+ return indexFileCache.get(slug)!;
+ }
- return (
- parts.length > 1 &&
- parts[parts.length - 1] === parts[parts.length - 2]
- );
- });
+ const parts = slug.split('/');
+
+ const result =
+ parts.length === 1 ||
+ (parts.length >= 2 &&
+ parts[parts.length - 1] === parts[parts.length - 2]);
+
+ indexFileCache.set(slug, result);
+ return result;
+ };
+
+ const findClosestValidParent = (pathParts: string[]): string | null => {
+ const path = pathParts.join('/');
+
+ if (parentCache.has(path)) {
+ return parentCache.get(path)!;
+ }
- function findParentIndex(pathParts: string[]): string | null {
- // Try each level up from the current path until we find an index file
for (let i = pathParts.length - 1; i > 0; i--) {
- const currentPath = pathParts.slice(0, i).join('/');
+ const parentParts = pathParts.slice(0, i);
+ const lastPart = parentParts[parentParts.length - 1];
- const possibleParent = indexFiles.find((indexFile) => {
- const indexParts = indexFile.slug.split('/');
- const indexFolderPath = indexParts.slice(0, -1).join('/');
+ if (!lastPart) {
+ continue;
+ }
- return indexFolderPath === currentPath;
- });
+ const possibleIndexParent = parentParts.concat(lastPart).join('/');
- if (possibleParent) {
- return possibleParent.slug;
+ if (slugSet.has(possibleIndexParent)) {
+ parentCache.set(path, possibleIndexParent);
+ return possibleIndexParent;
+ }
+
+ const regularParent = parentParts.join('/');
+
+ if (slugSet.has(regularParent)) {
+ parentCache.set(path, regularParent);
+ return regularParent;
}
}
- return null;
- }
- result.forEach((item) => {
- // never override the parent if it's already set in the config
- if (item.entry.parent) {
- return;
+ parentCache.set(path, null);
+ return null;
+ };
+
+ const results = new Array(items.length) as typeof items;
+
+ for (let i = 0; i < items.length; i++) {
+ const item = items[i];
+
+ if (!item) {
+ continue;
+ }
+
+ if (isIndexFile(item.slug)) {
+ item.entry.parent = null;
+ results[i] = item;
+ continue;
}
const pathParts = item.slug.split('/');
+ const parentParts = pathParts.slice(0, -1);
+ const lastPart = parentParts[parentParts.length - 1]!;
+ const possibleIndexParent = parentParts.concat(lastPart).join('/');
- // Skip if this is a root level index file (e.g., "authentication/authentication")
- if (pathParts.length === 2 && pathParts[0] === pathParts[1]) {
- item.entry.parent = null;
- return;
- }
-
- // Check if current item is an index file
- const isIndexFile =
- pathParts[pathParts.length - 1] === pathParts[pathParts.length - 2];
-
- if (isIndexFile) {
- // For index files, find parent in the level above
- const parentPath = pathParts.slice(0, -2);
- if (parentPath.length > 0) {
- item.entry.parent = findParentIndex(
- parentPath.concat(parentPath[parentPath.length - 1]!),
- );
- } else {
- item.entry.parent = null;
- }
+ if (slugSet.has(possibleIndexParent)) {
+ item.entry.parent = possibleIndexParent;
} else {
- // For regular files, find parent in the current folder
- item.entry.parent = findParentIndex(pathParts);
+ const regularParent = parentParts.join('/');
+ if (slugSet.has(regularParent)) {
+ item.entry.parent = regularParent;
+ } else {
+ item.entry.parent = findClosestValidParent(pathParts);
+ }
}
- });
+ results[i] = item;
+ }
- return result;
+ return results;
}
const itemsWithParents = processItems(filtered);
@@ -156,7 +181,25 @@ class KeystaticClient implements CmsClient {
.sort((a, b) => {
return (a.entry.order ?? 0) - (b.entry.order ?? 0);
})
- .map((item) => this.mapPost(item)),
+ .map((item) => {
+ if (collection === 'documentation') {
+ return this.mapDocumentationPost(
+ item as {
+ entry: DocumentationEntryProps;
+ slug: string;
+ },
+ { fetchContent },
+ );
+ }
+
+ return this.mapPost(
+ item as {
+ entry: PostEntryProps;
+ slug: string;
+ },
+ { fetchContent },
+ );
+ }),
);
return {
@@ -192,13 +235,7 @@ class KeystaticClient implements CmsClient {
return Promise.resolve(undefined);
}
- const allPosts = await reader.collections[collection].all();
-
- const children = allPosts.filter(
- (item) => item.entry.parent === params.slug,
- );
-
- return this.mapPost({ entry: doc, slug: params.slug }, children);
+ return this.mapPost({ entry: doc as PostEntryProps, slug: params.slug });
}
async getCategories() {
@@ -217,18 +254,79 @@ class KeystaticClient implements CmsClient {
return Promise.resolve(undefined);
}
- private async mapPost<
+ private async mapDocumentationPost<
Type extends {
- entry: PostEntryProps;
+ entry: DocumentationEntryProps;
slug: string;
},
- >(item: Type, children: Type[] = []): Promise {
+ >(
+ item: Type,
+ params: {
+ fetchContent: boolean;
+ } = {
+ fetchContent: true,
+ },
+ ): Promise {
const publishedAt = item.entry.publishedAt
? new Date(item.entry.publishedAt)
: new Date();
const content = await item.entry.content();
- const html = await renderMarkdoc(content.node);
+ const html = params.fetchContent ? await renderMarkdoc(content.node) : [];
+
+ return {
+ id: item.slug,
+ title: item.entry.title,
+ label: item.entry.label,
+ url: item.slug,
+ slug: item.slug,
+ description: item.entry.description,
+ publishedAt: publishedAt.toISOString(),
+ content: html as string,
+ image: item.entry.image ?? undefined,
+ status: item.entry.status,
+ collapsible: item.entry.collapsible,
+ collapsed: item.entry.collapsed,
+ categories:
+ (item.entry.categories ?? []).map((item) => {
+ return {
+ id: item,
+ name: item,
+ slug: item,
+ };
+ }) ?? [],
+ tags: (item.entry.tags ?? []).map((item) => {
+ return {
+ id: item,
+ name: item,
+ slug: item,
+ };
+ }),
+ parentId: item.entry.parent ?? undefined,
+ order: item.entry.order ?? 1,
+ children: [],
+ };
+ }
+
+ private async mapPost<
+ Type extends {
+ entry: PostEntryProps;
+ slug: string;
+ },
+ >(
+ item: Type,
+ params: {
+ fetchContent: boolean;
+ } = {
+ fetchContent: true,
+ },
+ ): Promise {
+ const publishedAt = item.entry.publishedAt
+ ? new Date(item.entry.publishedAt)
+ : new Date();
+
+ const content = await item.entry.content();
+ const html = params.fetchContent ? await renderMarkdoc(content.node) : [];
return {
id: item.slug,
@@ -242,14 +340,14 @@ class KeystaticClient implements CmsClient {
image: item.entry.image ?? undefined,
status: item.entry.status,
categories:
- item.entry.categories.map((item) => {
+ (item.entry.categories ?? []).map((item) => {
return {
id: item,
name: item,
slug: item,
};
}) ?? [],
- tags: item.entry.tags.map((item) => {
+ tags: (item.entry.tags ?? []).map((item) => {
return {
id: item,
name: item,
@@ -258,9 +356,7 @@ class KeystaticClient implements CmsClient {
}),
parentId: item.entry.parent ?? undefined,
order: item.entry.order ?? 1,
- children: await Promise.all(
- children.map((child) => this.mapPost(child, [])),
- ),
+ children: [],
};
}
}
diff --git a/packages/cms/keystatic/src/keystatic.config.ts b/packages/cms/keystatic/src/keystatic.config.ts
index 5e6ff90ec..a10086338 100644
--- a/packages/cms/keystatic/src/keystatic.config.ts
+++ b/packages/cms/keystatic/src/keystatic.config.ts
@@ -39,6 +39,10 @@ export type PostEntryProps = Entry<
(typeof keyStaticConfig)['collections']['posts']
>;
+export type DocumentationEntryProps = Entry<
+ (typeof keyStaticConfig)['collections']['documentation']
+>;
+
function createKeyStaticConfig(path = '') {
if (path && !path.endsWith('/')) {
path += '/';
@@ -135,6 +139,14 @@ function getKeystaticCollections(path: string) {
{ label: 'Pending', value: 'pending' },
],
}),
+ collapsible: fields.checkbox({
+ label: 'Collapsible',
+ defaultValue: false,
+ }),
+ collapsed: fields.checkbox({
+ label: 'Collapsed',
+ defaultValue: false,
+ }),
},
}),
};
diff --git a/packages/cms/types/src/cms-client.ts b/packages/cms/types/src/cms-client.ts
index bc4a90af9..a6d4c7b90 100644
--- a/packages/cms/types/src/cms-client.ts
+++ b/packages/cms/types/src/cms-client.ts
@@ -16,6 +16,8 @@ export namespace Cms {
order: number;
children: ContentItem[];
parentId: string | undefined;
+ collapsible?: boolean;
+ collapsed?: boolean;
}
export type ContentItemStatus = 'draft' | 'published' | 'review' | 'pending';
@@ -38,6 +40,7 @@ export namespace Cms {
offset?: number;
categories?: string[];
tags?: string[];
+ content?: boolean;
parentIds?: string[];
language?: string | undefined;
sortDirection?: 'asc' | 'desc';
diff --git a/packages/database-webhooks/package.json b/packages/database-webhooks/package.json
index ea6646943..f0c296abd 100644
--- a/packages/database-webhooks/package.json
+++ b/packages/database-webhooks/package.json
@@ -23,7 +23,7 @@
"@kit/tailwind-config": "workspace:*",
"@kit/team-accounts": "workspace:*",
"@kit/tsconfig": "workspace:*",
- "@supabase/supabase-js": "^2.47.1",
+ "@supabase/supabase-js": "^2.47.2",
"zod": "^3.23.8"
},
"eslintConfig": {
diff --git a/packages/email-templates/package.json b/packages/email-templates/package.json
index f3933d1bd..dc2f9fef2 100644
--- a/packages/email-templates/package.json
+++ b/packages/email-templates/package.json
@@ -13,7 +13,7 @@
".": "./src/index.ts"
},
"dependencies": {
- "@react-email/components": "0.0.29"
+ "@react-email/components": "0.0.30"
},
"devDependencies": {
"@kit/eslint-config": "workspace:*",
diff --git a/packages/features/accounts/package.json b/packages/features/accounts/package.json
index 19192df11..ed4b6f2b0 100644
--- a/packages/features/accounts/package.json
+++ b/packages/features/accounts/package.json
@@ -34,8 +34,8 @@
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*",
"@radix-ui/react-icons": "^1.3.2",
- "@supabase/supabase-js": "^2.47.1",
- "@tanstack/react-query": "5.62.2",
+ "@supabase/supabase-js": "^2.47.2",
+ "@tanstack/react-query": "5.62.3",
"@types/react": "npm:types-react@19.0.0-rc.1",
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
"lucide-react": "^0.468.0",
@@ -43,9 +43,9 @@
"next-themes": "0.4.4",
"react": "19.0.0",
"react-dom": "19.0.0",
- "react-hook-form": "^7.53.2",
+ "react-hook-form": "^7.54.0",
"react-i18next": "^15.1.3",
- "sonner": "^1.7.0",
+ "sonner": "^1.7.1",
"zod": "^3.23.8"
},
"prettier": "@kit/prettier-config",
diff --git a/packages/features/accounts/src/components/personal-account-dropdown.tsx b/packages/features/accounts/src/components/personal-account-dropdown.tsx
index 29dcaf2be..4cff42561 100644
--- a/packages/features/accounts/src/components/personal-account-dropdown.tsx
+++ b/packages/features/accounts/src/components/personal-account-dropdown.tsx
@@ -148,7 +148,7 @@ export function PersonalAccountDropdown({
@@ -162,7 +162,7 @@ export function PersonalAccountDropdown({
-
+
@@ -176,7 +176,7 @@ export function PersonalAccountDropdown({
diff --git a/packages/features/admin/package.json b/packages/features/admin/package.json
index bef65a0aa..8f8033b5f 100644
--- a/packages/features/admin/package.json
+++ b/packages/features/admin/package.json
@@ -21,15 +21,15 @@
"@kit/ui": "workspace:*",
"@makerkit/data-loader-supabase-core": "^0.0.8",
"@makerkit/data-loader-supabase-nextjs": "^1.2.3",
- "@supabase/supabase-js": "^2.47.1",
- "@tanstack/react-query": "5.62.2",
+ "@supabase/supabase-js": "^2.47.2",
+ "@tanstack/react-query": "5.62.3",
"@tanstack/react-table": "^8.20.5",
"@types/react": "npm:types-react@19.0.0-rc.1",
"lucide-react": "^0.468.0",
"next": "15.0.4",
"react": "19.0.0",
"react-dom": "19.0.0",
- "react-hook-form": "^7.53.2",
+ "react-hook-form": "^7.54.0",
"zod": "^3.23.8"
},
"exports": {
diff --git a/packages/features/auth/package.json b/packages/features/auth/package.json
index 93a7521d7..51039168f 100644
--- a/packages/features/auth/package.json
+++ b/packages/features/auth/package.json
@@ -28,14 +28,14 @@
"@kit/ui": "workspace:*",
"@marsidev/react-turnstile": "^1.1.0",
"@radix-ui/react-icons": "^1.3.2",
- "@supabase/supabase-js": "^2.47.1",
- "@tanstack/react-query": "5.62.2",
+ "@supabase/supabase-js": "^2.47.2",
+ "@tanstack/react-query": "5.62.3",
"@types/react": "npm:types-react@19.0.0-rc.1",
"lucide-react": "^0.468.0",
"next": "15.0.4",
- "react-hook-form": "^7.53.2",
+ "react-hook-form": "^7.54.0",
"react-i18next": "^15.1.3",
- "sonner": "^1.7.0",
+ "sonner": "^1.7.1",
"zod": "^3.23.8"
},
"prettier": "@kit/prettier-config",
diff --git a/packages/features/notifications/package.json b/packages/features/notifications/package.json
index 4fb6fa51c..d590ba3f4 100644
--- a/packages/features/notifications/package.json
+++ b/packages/features/notifications/package.json
@@ -20,8 +20,8 @@
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*",
- "@supabase/supabase-js": "^2.47.1",
- "@tanstack/react-query": "5.62.2",
+ "@supabase/supabase-js": "^2.47.2",
+ "@tanstack/react-query": "5.62.3",
"@types/react": "npm:types-react@19.0.0-rc.1",
"lucide-react": "^0.468.0",
"react": "19.0.0",
diff --git a/packages/features/team-accounts/package.json b/packages/features/team-accounts/package.json
index 4b93ef4de..092a43667 100644
--- a/packages/features/team-accounts/package.json
+++ b/packages/features/team-accounts/package.json
@@ -32,8 +32,8 @@
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:*",
- "@supabase/supabase-js": "^2.47.1",
- "@tanstack/react-query": "5.62.2",
+ "@supabase/supabase-js": "^2.47.2",
+ "@tanstack/react-query": "5.62.3",
"@tanstack/react-table": "^8.20.5",
"@types/react": "npm:types-react@19.0.0-rc.1",
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
@@ -43,9 +43,9 @@
"next": "15.0.4",
"react": "19.0.0",
"react-dom": "19.0.0",
- "react-hook-form": "^7.53.2",
+ "react-hook-form": "^7.54.0",
"react-i18next": "^15.1.3",
- "sonner": "^1.7.0",
+ "sonner": "^1.7.1",
"zod": "^3.23.8"
},
"prettier": "@kit/prettier-config",
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 596277e97..2b5a9759c 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -21,7 +21,7 @@
"@kit/shared": "workspace:*",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
- "@tanstack/react-query": "5.62.2",
+ "@tanstack/react-query": "5.62.3",
"next": "15.0.4",
"react": "19.0.0",
"react-dom": "19.0.0",
@@ -29,7 +29,7 @@
},
"dependencies": {
"i18next": "24.0.5",
- "i18next-browser-languagedetector": "8.0.0",
+ "i18next-browser-languagedetector": "8.0.1",
"i18next-resources-to-backend": "^1.2.1"
},
"eslintConfig": {
diff --git a/packages/next/package.json b/packages/next/package.json
index ef084140d..10c2df64b 100644
--- a/packages/next/package.json
+++ b/packages/next/package.json
@@ -21,7 +21,7 @@
"@kit/supabase": "workspace:*",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
- "@supabase/supabase-js": "^2.47.1",
+ "@supabase/supabase-js": "^2.47.2",
"next": "15.0.4",
"zod": "^3.23.8"
},
diff --git a/packages/supabase/package.json b/packages/supabase/package.json
index 0d4ac98d2..3e8078d74 100644
--- a/packages/supabase/package.json
+++ b/packages/supabase/package.json
@@ -29,8 +29,8 @@
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@supabase/ssr": "^0.5.2",
- "@supabase/supabase-js": "^2.47.1",
- "@tanstack/react-query": "5.62.2",
+ "@supabase/supabase-js": "^2.47.2",
+ "@tanstack/react-query": "5.62.3",
"@types/react": "npm:types-react@19.0.0-rc.1",
"next": "15.0.4",
"react": "19.0.0",
diff --git a/packages/ui/package.json b/packages/ui/package.json
index e2443f74f..0828e6d0a 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -43,7 +43,7 @@
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@radix-ui/react-icons": "^1.3.2",
- "@tanstack/react-query": "5.62.2",
+ "@tanstack/react-query": "5.62.3",
"@tanstack/react-table": "^8.20.5",
"@types/react": "npm:types-react@19.0.0-rc.1",
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
@@ -54,9 +54,9 @@
"next-themes": "0.4.4",
"prettier": "^3.4.2",
"react-day-picker": "^8.10.1",
- "react-hook-form": "^7.53.2",
+ "react-hook-form": "^7.54.0",
"react-i18next": "^15.1.3",
- "sonner": "^1.7.0",
+ "sonner": "^1.7.1",
"tailwindcss": "3.4.16",
"tailwindcss-animate": "^1.0.7",
"typescript": "^5.7.2",
@@ -106,6 +106,7 @@
"./chart": "./src/shadcn/chart.tsx",
"./skeleton": "./src/shadcn/skeleton.tsx",
"./shadcn-sidebar": "./src/shadcn/sidebar.tsx",
+ "./collapsible": "./src/shadcn/collapsible.tsx",
"./utils": "./src/lib/utils/index.ts",
"./if": "./src/makerkit/if.tsx",
"./trans": "./src/makerkit/trans.tsx",
diff --git a/packages/ui/src/makerkit/marketing/feature-card.tsx b/packages/ui/src/makerkit/marketing/feature-card.tsx
index 095a93fb6..53419f88d 100644
--- a/packages/ui/src/makerkit/marketing/feature-card.tsx
+++ b/packages/ui/src/makerkit/marketing/feature-card.tsx
@@ -30,7 +30,7 @@ export const FeatureCard = forwardRef(
>
{label}
-
+
{description}
diff --git a/packages/ui/src/makerkit/marketing/feature-grid.tsx b/packages/ui/src/makerkit/marketing/feature-grid.tsx
index f5fda36e6..8524a350c 100644
--- a/packages/ui/src/makerkit/marketing/feature-grid.tsx
+++ b/packages/ui/src/makerkit/marketing/feature-grid.tsx
@@ -10,7 +10,7 @@ export const FeatureGrid = forwardRef<
(
>
{icon &&
{icon}
}
-
+
{heading}
diff --git a/packages/ui/src/makerkit/marketing/header.tsx b/packages/ui/src/makerkit/marketing/header.tsx
index 8f0562ec6..2e04a443e 100644
--- a/packages/ui/src/makerkit/marketing/header.tsx
+++ b/packages/ui/src/makerkit/marketing/header.tsx
@@ -24,7 +24,7 @@ export const Header = forwardRef
(
>
-
{logo}
+
{logo}
{navigation}
{actions}
diff --git a/packages/ui/src/makerkit/marketing/hero-title.tsx b/packages/ui/src/makerkit/marketing/hero-title.tsx
index b7fcb8109..a9b38c501 100644
--- a/packages/ui/src/makerkit/marketing/hero-title.tsx
+++ b/packages/ui/src/makerkit/marketing/hero-title.tsx
@@ -16,7 +16,7 @@ export const HeroTitle = forwardRef<
-
{subtitle}
-
+
)}
@@ -78,8 +76,11 @@ export function Hero({
{image && (
diff --git a/packages/ui/src/makerkit/marketing/pill.tsx b/packages/ui/src/makerkit/marketing/pill.tsx
index 3da959fe7..549d08442 100644
--- a/packages/ui/src/makerkit/marketing/pill.tsx
+++ b/packages/ui/src/makerkit/marketing/pill.tsx
@@ -3,7 +3,6 @@ import { forwardRef } from 'react';
import { Slot, Slottable } from '@radix-ui/react-slot';
import { cn } from '../../lib/utils';
-import { GradientSecondaryText } from './gradient-secondary-text';
export const Pill = forwardRef<
HTMLHeadingElement,
@@ -33,7 +32,7 @@ export const Pill = forwardRef<
)}
- {props.children}
+ {props.children}
);
diff --git a/packages/ui/src/makerkit/marketing/secondary-hero.tsx b/packages/ui/src/makerkit/marketing/secondary-hero.tsx
index c5c3b0321..d5af76d77 100644
--- a/packages/ui/src/makerkit/marketing/secondary-hero.tsx
+++ b/packages/ui/src/makerkit/marketing/secondary-hero.tsx
@@ -18,7 +18,7 @@ export const SecondaryHero = forwardRef
(
(
{heading}
-
{subheading}
-
+
{children}
diff --git a/packages/ui/src/makerkit/mode-toggle.tsx b/packages/ui/src/makerkit/mode-toggle.tsx
index 9f9b95f0a..7d71217da 100644
--- a/packages/ui/src/makerkit/mode-toggle.tsx
+++ b/packages/ui/src/makerkit/mode-toggle.tsx
@@ -74,7 +74,7 @@ export function SubMenuModeToggle() {
return (
=6.9.0'}
- '@babel/generator@7.17.7':
- resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==}
- engines: {node: '>=6.9.0'}
-
'@babel/generator@7.26.2':
resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
engines: {node: '>=6.9.0'}
+ '@babel/generator@7.26.3':
+ resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-compilation-targets@7.25.9':
resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
engines: {node: '>=6.9.0'}
- '@babel/helper-environment-visitor@7.24.7':
- resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-function-name@7.24.7':
- resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-hoist-variables@7.24.7':
- resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-module-imports@7.25.9':
resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
engines: {node: '>=6.9.0'}
@@ -1605,10 +1593,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/helper-split-export-declaration@7.24.7':
- resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-string-parser@7.25.9':
resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
engines: {node: '>=6.9.0'}
@@ -1630,6 +1614,11 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/parser@7.26.3':
+ resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
'@babel/runtime-corejs3@7.26.0':
resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==}
engines: {node: '>=6.9.0'}
@@ -1642,22 +1631,22 @@ packages:
resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.23.2':
- resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==}
- engines: {node: '>=6.9.0'}
-
'@babel/traverse@7.25.9':
resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.17.0':
- resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==}
+ '@babel/traverse@7.26.4':
+ resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==}
engines: {node: '>=6.9.0'}
'@babel/types@7.26.0':
resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.26.3':
+ resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==}
+ engines: {node: '>=6.9.0'}
+
'@baselime/node-opentelemetry@0.5.8':
resolution: {integrity: sha512-wF3119LuxWLqCg1od6qHWqzz8fdod9HIB03Aa8EZNoxcGY7kxFXdDW8v1iz8jCx2bCRHw6ZYSL9Hpg8AwDnzyg==}
peerDependencies:
@@ -1988,8 +1977,8 @@ packages:
react: ^18.2.0
react-dom: ^18.2.0
- '@lemonsqueezy/lemonsqueezy.js@3.3.1':
- resolution: {integrity: sha512-gM/FdNsK3BlrD6JRrhmiyqBXQsCpzSUdKSoZwJMQfXqfqcK321og+uMssc6HYcygUMrGvPnNJyJ1RqZPFDrgtg==}
+ '@lemonsqueezy/lemonsqueezy.js@4.0.0':
+ resolution: {integrity: sha512-xcY1/lDrY7CpIF98WKiL1ElsfoVhddP7FT0fw7ssOzrFqQsr44HgolKrQZxd9SywsCPn12OTOUieqDIokI3mFg==}
engines: {node: '>=20'}
'@makerkit/data-loader-supabase-core@0.0.8':
@@ -2673,7 +2662,7 @@ packages:
'@radix-ui/react-compose-refs@1.1.0':
resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
+ '@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2691,7 +2680,7 @@ packages:
'@radix-ui/react-context@1.1.1':
resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
+ '@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2722,8 +2711,8 @@ packages:
'@radix-ui/react-dismissable-layer@1.1.1':
resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
- '@types/react-dom': npm:types-react-dom@19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2748,7 +2737,7 @@ packages:
'@radix-ui/react-focus-guards@1.1.1':
resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
+ '@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2757,8 +2746,8 @@ packages:
'@radix-ui/react-focus-scope@1.1.0':
resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
- '@types/react-dom': npm:types-react-dom@19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2836,8 +2825,8 @@ packages:
'@radix-ui/react-popper@1.2.0':
resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
- '@types/react-dom': npm:types-react-dom@19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2862,8 +2851,8 @@ packages:
'@radix-ui/react-presence@1.1.1':
resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
- '@types/react-dom': npm:types-react-dom@19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2901,8 +2890,8 @@ packages:
'@radix-ui/react-roving-focus@1.1.0':
resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
- '@types/react-dom': npm:types-react-dom@19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -3041,7 +3030,7 @@ packages:
'@radix-ui/react-use-layout-effect@1.1.0':
resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
+ '@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3050,7 +3039,7 @@ packages:
'@radix-ui/react-use-previous@1.1.0':
resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
+ '@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3068,7 +3057,7 @@ packages:
'@radix-ui/react-use-size@1.1.0':
resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
+ '@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3077,8 +3066,8 @@ packages:
'@radix-ui/react-visually-hidden@1.1.0':
resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==}
peerDependencies:
- '@types/react': npm:types-react@19.0.0-rc.1
- '@types/react-dom': npm:types-react-dom@19.0.0-rc.1
+ '@types/react': '*'
+ '@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -3357,8 +3346,8 @@ packages:
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
- '@react-email/components@0.0.29':
- resolution: {integrity: sha512-rfnzXkPcovd6+mt3nz+xmtHbwzgF8+yxco3RicwiVlcXPxayIBaq6uZAr1nHX1h2fKURrWsQEHgKaqiyHAdrrg==}
+ '@react-email/components@0.0.30':
+ resolution: {integrity: sha512-JkPcGE/r3WsHMVO4kjkaQzAyXiSPATg5TgzTImypjGHbwrdLaDMVEBZz1SuLV8GexqCnmzo1qmhVHtHq8E7UWg==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3410,8 +3399,8 @@ packages:
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
- '@react-email/markdown@0.0.13':
- resolution: {integrity: sha512-eDWd1ZGgD50bDX5A+pS+Lz65BkPVdwfWgFtEMtJTgXWBSsKkouQ94tmBFECUxUERr+bKSt+uJC6G6p9yD7BK9A==}
+ '@react-email/markdown@0.0.14':
+ resolution: {integrity: sha512-5IsobCyPkb4XwnQO8uFfGcNOxnsg3311GRXhJ3uKv51P7Jxme4ycC/MITnwIZ10w2zx7HIyTiqVzTj4XbuIHbg==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3873,8 +3862,8 @@ packages:
resolution: {integrity: sha512-2ZpEaezx3S0QPtnske175NDaLvUvaVKd4ePHpUN0QF/uV4BBBBRUy5BvQONDym+utbbW0QhSJoiRPnp4FS+4Vg==}
engines: {node: '>=12.16'}
- '@supabase/auth-js@2.65.1':
- resolution: {integrity: sha512-IA7i2Xq2SWNCNMKxwmPlHafBQda0qtnFr8QnyyBr+KaSxoXXqEzFCnQ1dGTy6bsZjVBgXu++o3qrDypTspaAPw==}
+ '@supabase/auth-js@2.66.1':
+ resolution: {integrity: sha512-kOW+04SuDXmP2jRX9JL1Rgzduj8BcOG1qC3RaWdZsxnv89svNCdLRv8PfXW3QPKJdw0k1jF30OlQDPkzbDEL9w==}
'@supabase/functions-js@2.4.3':
resolution: {integrity: sha512-sOLXy+mWRyu4LLv1onYydq+10mNRQ4rzqQxNhbrKLTLTcdcmS9hbWif0bGz/NavmiQfPs4ZcmQJp4WqOXlR4AQ==}
@@ -3897,8 +3886,8 @@ packages:
'@supabase/storage-js@2.7.1':
resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==}
- '@supabase/supabase-js@2.47.1':
- resolution: {integrity: sha512-Q5zBX3BhK4tIFE6W8TK7NP29G9XCX8nzMydHONI8e/6HjYnKmUyNf33rsTTwGVVlXz2ruzJKO+EX4wuwD21Q4g==}
+ '@supabase/supabase-js@2.47.2':
+ resolution: {integrity: sha512-BdP5hY29eCROJRV61WCM+OzcTSjaSzZe0H+2l88tOwmTG+1XqCiVYtZnUNIh12V8g5gdmQL5urp1pSYARbl38A==}
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
@@ -3909,11 +3898,11 @@ packages:
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
- '@tanstack/query-core@5.62.2':
- resolution: {integrity: sha512-LcwVcC5qpsDpHcqlXUUL5o9SaOBwhNkGeV+B06s0GBoyBr8FqXPuXT29XzYXR36lchhnerp6XO+CWc84/vh7Zg==}
+ '@tanstack/query-core@5.62.3':
+ resolution: {integrity: sha512-Jp/nYoz8cnO7kqhOlSv8ke/0MJRJVGuZ0P/JO9KQ+f45mpN90hrerzavyTKeSoT/pOzeoOUkv1Xd0wPsxAWXfg==}
- '@tanstack/react-query@5.62.2':
- resolution: {integrity: sha512-fkTpKKfwTJtVPKVR+ag7YqFgG/7TRVVPzduPAUF9zRCiiA8Wu305u+KJl8rCrh98Qce77vzIakvtUyzWLtaPGA==}
+ '@tanstack/react-query@5.62.3':
+ resolution: {integrity: sha512-y2zDNKuhgiuMgsKkqd4AcsLIBiCfEO8U11AdrtAUihmLbRNztPrlcZqx2lH1GacZsx+y1qRRbCcJLYTtF1vKsw==}
peerDependencies:
react: ^18 || ^19
@@ -3936,14 +3925,21 @@ packages:
'@tootallnate/quickjs-emscripten@0.23.0':
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
- '@trivago/prettier-plugin-sort-imports@4.3.0':
- resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==}
+ '@trivago/prettier-plugin-sort-imports@5.1.0':
+ resolution: {integrity: sha512-IlzY6Qxd+T5lLS3JLgaXUMIedFJY2/RB4QlFV3K47l08Z2xIeEIRCMMlvuI/n/4Kjw6ofvq+g3YoBYKidnpJOg==}
+ engines: {node: '>18.12'}
peerDependencies:
'@vue/compiler-sfc': 3.x
prettier: 2.x - 3.x
+ prettier-plugin-svelte: 3.x
+ svelte: 4.x
peerDependenciesMeta:
'@vue/compiler-sfc':
optional: true
+ prettier-plugin-svelte:
+ optional: true
+ svelte:
+ optional: true
'@trpc/server@10.45.2':
resolution: {integrity: sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg==}
@@ -4778,6 +4774,15 @@ packages:
supports-color:
optional: true
+ debug@4.4.0:
+ resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decimal.js-light@2.5.1:
resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==}
@@ -5448,8 +5453,8 @@ packages:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
- i18next-browser-languagedetector@8.0.0:
- resolution: {integrity: sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==}
+ i18next-browser-languagedetector@8.0.1:
+ resolution: {integrity: sha512-z9ZuWA7qxbww+cPtdJTgV0O2H9+qlLpQnb37RpnwfsWnUmrO+q92gbVKVtfBL7jRvxfmVMOUKxKGg6VBqO49Pg==}
i18next-resources-to-backend@1.2.1:
resolution: {integrity: sha512-okHbVA+HZ7n1/76MsfhPqDou0fptl2dAlhRDu2ideXloRRduzHsqDOznJBef+R3DFZnbvWoBW+KxJ7fnFjd6Yw==}
@@ -5756,11 +5761,6 @@ packages:
jsbn@1.1.0:
resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
- jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
-
jsesc@3.0.2:
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
engines: {node: '>=6'}
@@ -5903,10 +5903,10 @@ packages:
match-sorter@6.3.4:
resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==}
- md-to-react-email@5.0.4:
- resolution: {integrity: sha512-+XXP7QWNh2g2EGKeCSP8UIrOG45hX4mxUaxSyn1qSO+BFH2uTZ7LE5tt2TAdGAeIUuGuvzZ/o3cByulQ68OxJg==}
+ md-to-react-email@5.0.5:
+ resolution: {integrity: sha512-OvAXqwq57uOk+WZqFFNCMZz8yDp8BD3WazW1wAKHUrPbbdr89K9DWS6JXY09vd9xNdPNeurI8DU/X4flcfaD8A==}
peerDependencies:
- react: 18.x
+ react: ^18.0 || ^19.0
mdast-util-find-and-replace@3.0.1:
resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==}
@@ -6667,8 +6667,8 @@ packages:
peerDependencies:
react: '>=16.13.1'
- react-hook-form@7.53.2:
- resolution: {integrity: sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==}
+ react-hook-form@7.54.0:
+ resolution: {integrity: sha512-PS05+UQy/IdSbJNojBypxAo9wllhHgGmyr8/dyGQcPoiMf3e7Dfb9PWYVRco55bLbxH9S+1yDDJeTdlYCSxO3A==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19
@@ -7002,8 +7002,8 @@ packages:
sonic-boom@4.2.0:
resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
- sonner@1.7.0:
- resolution: {integrity: sha512-W6dH7m5MujEPyug3lpI2l3TC3Pp1+LTgK0Efg+IHDrBbtEjyCmCHHo6yfNBOsf1tFZ6zf+jceWwB38baC8yO9g==}
+ sonner@1.7.1:
+ resolution: {integrity: sha512-b6LHBfH32SoVasRFECrdY8p8s7hXPDn3OHUFbZZbiB1ctLS9Gdh6rpX2dVrpQA0kiL5jcRzDDldwwLkSKk3+QQ==}
peerDependencies:
react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
@@ -7233,10 +7233,6 @@ packages:
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
engines: {node: '>=0.6.0'}
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
-
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -7703,12 +7699,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.17.7':
- dependencies:
- '@babel/types': 7.17.0
- jsesc: 2.5.2
- source-map: 0.5.7
-
'@babel/generator@7.26.2':
dependencies:
'@babel/parser': 7.26.2
@@ -7717,6 +7707,14 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.25
jsesc: 3.0.2
+ '@babel/generator@7.26.3':
+ dependencies:
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.0.2
+
'@babel/helper-compilation-targets@7.25.9':
dependencies:
'@babel/compat-data': 7.26.2
@@ -7725,19 +7723,6 @@ snapshots:
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-environment-visitor@7.24.7':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/helper-function-name@7.24.7':
- dependencies:
- '@babel/template': 7.25.9
- '@babel/types': 7.26.0
-
- '@babel/helper-hoist-variables@7.24.7':
- dependencies:
- '@babel/types': 7.26.0
-
'@babel/helper-module-imports@7.25.9':
dependencies:
'@babel/traverse': 7.25.9
@@ -7754,10 +7739,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helper-split-export-declaration@7.24.7':
- dependencies:
- '@babel/types': 7.26.0
-
'@babel/helper-string-parser@7.25.9': {}
'@babel/helper-validator-identifier@7.25.9': {}
@@ -7773,6 +7754,10 @@ snapshots:
dependencies:
'@babel/types': 7.26.0
+ '@babel/parser@7.26.3':
+ dependencies:
+ '@babel/types': 7.26.3
+
'@babel/runtime-corejs3@7.26.0':
dependencies:
core-js-pure: 3.39.0
@@ -7788,21 +7773,6 @@ snapshots:
'@babel/parser': 7.26.2
'@babel/types': 7.26.0
- '@babel/traverse@7.23.2':
- dependencies:
- '@babel/code-frame': 7.26.2
- '@babel/generator': 7.26.2
- '@babel/helper-environment-visitor': 7.24.7
- '@babel/helper-function-name': 7.24.7
- '@babel/helper-hoist-variables': 7.24.7
- '@babel/helper-split-export-declaration': 7.24.7
- '@babel/parser': 7.26.2
- '@babel/types': 7.26.0
- debug: 4.3.7
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
'@babel/traverse@7.25.9':
dependencies:
'@babel/code-frame': 7.26.2
@@ -7815,16 +7785,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/types@7.17.0':
+ '@babel/traverse@7.26.4':
dependencies:
- '@babel/helper-validator-identifier': 7.25.9
- to-fast-properties: 2.0.0
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.3
+ '@babel/parser': 7.26.3
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.3
+ debug: 4.4.0
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
'@babel/types@7.26.0':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
+ '@babel/types@7.26.3':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
'@baselime/node-opentelemetry@0.5.8(@trpc/server@10.45.2)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -8015,9 +7997,9 @@ snapshots:
protobufjs: 7.4.0
yargs: 17.7.2
- '@hookform/resolvers@3.9.1(react-hook-form@7.53.2(react@19.0.0))':
+ '@hookform/resolvers@3.9.1(react-hook-form@7.54.0(react@19.0.0))':
dependencies:
- react-hook-form: 7.53.2(react@19.0.0)
+ react-hook-form: 7.54.0(react@19.0.0)
'@humanwhocodes/config-array@0.13.0':
dependencies:
@@ -8354,19 +8336,19 @@ snapshots:
react-dom: 19.0.0(react@19.0.0)
server-only: 0.0.1
- '@lemonsqueezy/lemonsqueezy.js@3.3.1': {}
+ '@lemonsqueezy/lemonsqueezy.js@4.0.0': {}
- '@makerkit/data-loader-supabase-core@0.0.8(@supabase/postgrest-js@1.16.3)(@supabase/supabase-js@2.47.1)':
+ '@makerkit/data-loader-supabase-core@0.0.8(@supabase/postgrest-js@1.16.3)(@supabase/supabase-js@2.47.2)':
dependencies:
'@supabase/postgrest-js': 1.16.3
- '@supabase/supabase-js': 2.47.1
+ '@supabase/supabase-js': 2.47.2
ts-case-convert: 2.1.0
- '@makerkit/data-loader-supabase-nextjs@1.2.3(@supabase/postgrest-js@1.16.3)(@supabase/supabase-js@2.47.1)(@tanstack/react-query@5.62.2(react@19.0.0))(next@15.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.49.0)(babel-plugin-react-compiler@19.0.0-beta-df7b47d-20241124)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)':
+ '@makerkit/data-loader-supabase-nextjs@1.2.3(@supabase/postgrest-js@1.16.3)(@supabase/supabase-js@2.47.2)(@tanstack/react-query@5.62.3(react@19.0.0))(next@15.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.49.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)':
dependencies:
- '@makerkit/data-loader-supabase-core': 0.0.8(@supabase/postgrest-js@1.16.3)(@supabase/supabase-js@2.47.1)
- '@supabase/supabase-js': 2.47.1
- '@tanstack/react-query': 5.62.2(react@19.0.0)
+ '@makerkit/data-loader-supabase-core': 0.0.8(@supabase/postgrest-js@1.16.3)(@supabase/supabase-js@2.47.2)
+ '@supabase/supabase-js': 2.47.2
+ '@tanstack/react-query': 5.62.3(react@19.0.0)
next: 15.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.49.0)(babel-plugin-react-compiler@19.0.0-beta-df7b47d-20241124)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react: 19.0.0
transitivePeerDependencies:
@@ -10148,7 +10130,7 @@ snapshots:
dependencies:
react: 19.0.0
- '@react-email/components@0.0.29(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ '@react-email/components@0.0.30(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@react-email/body': 0.0.11(react@19.0.0)
'@react-email/button': 0.0.19(react@19.0.0)
@@ -10163,7 +10145,7 @@ snapshots:
'@react-email/html': 0.0.11(react@19.0.0)
'@react-email/img': 0.0.11(react@19.0.0)
'@react-email/link': 0.0.12(react@19.0.0)
- '@react-email/markdown': 0.0.13(react@19.0.0)
+ '@react-email/markdown': 0.0.14(react@19.0.0)
'@react-email/preview': 0.0.12(react@19.0.0)
'@react-email/render': 1.0.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@react-email/row': 0.0.12(react@19.0.0)
@@ -10206,9 +10188,9 @@ snapshots:
dependencies:
react: 19.0.0
- '@react-email/markdown@0.0.13(react@19.0.0)':
+ '@react-email/markdown@0.0.14(react@19.0.0)':
dependencies:
- md-to-react-email: 5.0.4(react@19.0.0)
+ md-to-react-email: 5.0.5(react@19.0.0)
react: 19.0.0
'@react-email/preview@0.0.12(react@19.0.0)':
@@ -10828,7 +10810,7 @@ snapshots:
'@stripe/stripe-js@5.2.0': {}
- '@supabase/auth-js@2.65.1':
+ '@supabase/auth-js@2.66.1':
dependencies:
'@supabase/node-fetch': 2.6.15
@@ -10854,9 +10836,9 @@ snapshots:
- bufferutil
- utf-8-validate
- '@supabase/ssr@0.5.2(@supabase/supabase-js@2.47.1)':
+ '@supabase/ssr@0.5.2(@supabase/supabase-js@2.47.2)':
dependencies:
- '@supabase/supabase-js': 2.47.1
+ '@supabase/supabase-js': 2.47.2
'@types/cookie': 0.6.0
cookie: 0.7.2
@@ -10864,9 +10846,9 @@ snapshots:
dependencies:
'@supabase/node-fetch': 2.6.15
- '@supabase/supabase-js@2.47.1':
+ '@supabase/supabase-js@2.47.2':
dependencies:
- '@supabase/auth-js': 2.65.1
+ '@supabase/auth-js': 2.66.1
'@supabase/functions-js': 2.4.3
'@supabase/node-fetch': 2.6.15
'@supabase/postgrest-js': 1.16.3
@@ -10886,11 +10868,11 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@tanstack/query-core@5.62.2': {}
+ '@tanstack/query-core@5.62.3': {}
- '@tanstack/react-query@5.62.2(react@19.0.0)':
+ '@tanstack/react-query@5.62.3(react@19.0.0)':
dependencies:
- '@tanstack/query-core': 5.62.2
+ '@tanstack/query-core': 5.62.3
react: 19.0.0
'@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
@@ -10910,12 +10892,12 @@ snapshots:
'@tootallnate/quickjs-emscripten@0.23.0': {}
- '@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.4.2)':
+ '@trivago/prettier-plugin-sort-imports@5.1.0(prettier@3.4.2)':
dependencies:
- '@babel/generator': 7.17.7
- '@babel/parser': 7.26.2
- '@babel/traverse': 7.23.2
- '@babel/types': 7.17.0
+ '@babel/generator': 7.26.3
+ '@babel/parser': 7.26.3
+ '@babel/traverse': 7.26.4
+ '@babel/types': 7.26.3
javascript-natural-sort: 0.7.1
lodash: 4.17.21
prettier: 3.4.2
@@ -11874,6 +11856,10 @@ snapshots:
dependencies:
ms: 2.1.3
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
decimal.js-light@2.5.1: {}
decode-named-character-reference@1.0.2:
@@ -12667,7 +12653,7 @@ snapshots:
human-signals@2.1.0: {}
- i18next-browser-languagedetector@8.0.0:
+ i18next-browser-languagedetector@8.0.1:
dependencies:
'@babel/runtime': 7.26.0
@@ -12976,8 +12962,6 @@ snapshots:
jsbn@1.1.0: {}
- jsesc@2.5.2: {}
-
jsesc@3.0.2: {}
json-buffer@3.0.1: {}
@@ -13098,7 +13082,7 @@ snapshots:
'@babel/runtime': 7.26.0
remove-accents: 0.5.0
- md-to-react-email@5.0.4(react@19.0.0):
+ md-to-react-email@5.0.5(react@19.0.0):
dependencies:
marked: 7.0.4
react: 19.0.0
@@ -13968,11 +13952,11 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier-plugin-tailwindcss@0.6.9(@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.4.2))(prettier@3.4.2):
+ prettier-plugin-tailwindcss@0.6.9(@trivago/prettier-plugin-sort-imports@5.1.0(prettier@3.4.2))(prettier@3.4.2):
dependencies:
prettier: 3.4.2
optionalDependencies:
- '@trivago/prettier-plugin-sort-imports': 4.3.0(prettier@3.4.2)
+ '@trivago/prettier-plugin-sort-imports': 5.1.0(prettier@3.4.2)
prettier@3.3.3: {}
@@ -14111,7 +14095,7 @@ snapshots:
'@babel/runtime': 7.26.0
react: 19.0.0
- react-hook-form@7.53.2(react@19.0.0):
+ react-hook-form@7.54.0(react@19.0.0):
dependencies:
react: 19.0.0
@@ -14499,7 +14483,7 @@ snapshots:
dependencies:
atomic-sleep: 1.0.0
- sonner@1.7.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ sonner@1.7.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
@@ -14757,8 +14741,6 @@ snapshots:
dependencies:
os-tmpdir: 1.0.2
- to-fast-properties@2.0.0: {}
-
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json
index 7e42f0adc..5543f3c65 100644
--- a/tooling/prettier/package.json
+++ b/tooling/prettier/package.json
@@ -9,7 +9,7 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@trivago/prettier-plugin-sort-imports": "^4.3.0",
+ "@trivago/prettier-plugin-sort-imports": "^5.1.0",
"prettier": "^3.4.2",
"prettier-plugin-tailwindcss": "^0.6.9"
},