From f0a7e5a5c28c779f0c308a0bd1c38ba1854975cb Mon Sep 17 00:00:00 2001 From: Charis <26616127+charislam@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:25:36 -0400 Subject: [PATCH 1/5] fix(docs): also make logo dimensions configurable (#39086) --- .../Navigation/NavigationMenu/TopNavBar.tsx | 14 +++++++------- .../hooks/custom-content/CustomContent.types.ts | 4 +++- apps/docs/hooks/custom-content/custom-content.json | 2 +- .../hooks/custom-content/useCustomContent.test.ts | 14 ++++++-------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx b/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx index 195983325d90d..1ae88b582aea1 100644 --- a/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx @@ -110,7 +110,7 @@ const TopNavBar: FC = () => { } const HeaderLogo = memo(() => { - const { navigationLogoUrl } = useCustomContent(['navigation:logo_url']) + const { navigationLogo } = useCustomContent(['navigation:logo']) return ( { > Supabase wordmark Supabase wordmark DOCS diff --git a/apps/docs/hooks/custom-content/CustomContent.types.ts b/apps/docs/hooks/custom-content/CustomContent.types.ts index ece890f25daa1..ce845cef5b59d 100644 --- a/apps/docs/hooks/custom-content/CustomContent.types.ts +++ b/apps/docs/hooks/custom-content/CustomContent.types.ts @@ -1,7 +1,9 @@ export type CustomContentTypes = { homepageHeading: string - navigationLogoUrl: { + navigationLogo: { light: string dark: string + width?: number + height?: number } } diff --git a/apps/docs/hooks/custom-content/custom-content.json b/apps/docs/hooks/custom-content/custom-content.json index b6fe8d9eea660..71c311548424a 100644 --- a/apps/docs/hooks/custom-content/custom-content.json +++ b/apps/docs/hooks/custom-content/custom-content.json @@ -1,6 +1,6 @@ { "homepage:heading": "Supabase Documentation", - "navigation:logo_url": { + "navigation:logo": { "light": "/docs/supabase-light.svg", "dark": "/docs/supabase-dark.svg" } diff --git a/apps/docs/hooks/custom-content/useCustomContent.test.ts b/apps/docs/hooks/custom-content/useCustomContent.test.ts index 049d3eb450404..38145d93f5f63 100644 --- a/apps/docs/hooks/custom-content/useCustomContent.test.ts +++ b/apps/docs/hooks/custom-content/useCustomContent.test.ts @@ -15,19 +15,19 @@ describe('useCustomContent', () => { it('should return null if content is not found in the custom-content.json file', async () => { vi.doMock('./custom-content.json', () => ({ default: { - 'navigation:logo_url': null, + 'navigation:logo': null, }, })) const { useCustomContent } = await import('./useCustomContent') - const { result } = renderHook(() => useCustomContent(['navigation:logo_url'])) - expect(result.current.navigationLogoUrl).toEqual(null) + const { result } = renderHook(() => useCustomContent(['navigation:logo'])) + expect(result.current.navigationLogo).toEqual(null) }) it('should return the content for the key passed in if it exists in the custom-content.json file', async () => { vi.doMock('./custom-content.json', () => ({ default: { - 'navigation:logo_url': { + 'navigation:logo': { light: 'https://example.com/logo-light.svg', dark: 'https://example.com/logo-dark.svg', }, @@ -36,10 +36,8 @@ describe('useCustomContent', () => { })) const { useCustomContent } = await import('./useCustomContent') - const { result } = renderHook(() => - useCustomContent(['navigation:logo_url', 'homepage:heading']) - ) - expect(result.current.navigationLogoUrl).toEqual({ + const { result } = renderHook(() => useCustomContent(['navigation:logo', 'homepage:heading'])) + expect(result.current.navigationLogo).toEqual({ light: 'https://example.com/logo-light.svg', dark: 'https://example.com/logo-dark.svg', }) From cfed29fa202023cfce18aa5f7c6d923c812fd5e5 Mon Sep 17 00:00:00 2001 From: Wen Bo Xie Date: Tue, 30 Sep 2025 12:51:35 -0400 Subject: [PATCH 2/5] fix: change authorship of lovable cloud blog post (#39124) --- apps/www/_blog/2025-09-29-lovable-cloud-launch.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/_blog/2025-09-29-lovable-cloud-launch.mdx b/apps/www/_blog/2025-09-29-lovable-cloud-launch.mdx index 9babccea5f648..139b5e315fffc 100644 --- a/apps/www/_blog/2025-09-29-lovable-cloud-launch.mdx +++ b/apps/www/_blog/2025-09-29-lovable-cloud-launch.mdx @@ -1,7 +1,7 @@ --- title: 'Lovable Cloud + Supabase: The Default Platform for AI Builders' description: Lovable Cloud makes building with AI agents easier than ever, with every project powered by Supabase behind the scenes. -author: wenbo +author: prashant image: 2025-09-lovable-cloud-launch/og.png thumb: 2025-09-lovable-cloud-launch/og.png categories: From 360663d4f6c03ca2b9489aa3ed864f6efbaff6ec Mon Sep 17 00:00:00 2001 From: Prashant Sridharan <914007+CoolAssPuppy@users.noreply.github.com> Date: Tue, 30 Sep 2025 17:53:13 +0100 Subject: [PATCH 3/5] Aded a new blog post to support the Bolt Cloud launch (#39098) * Aded a new blog post to support the Bolt Cloud launch * change authorship --------- Co-authored-by: Wen Bo Xie --- .../_blog/2025-09-30-bolt-cloud-launch.mdx | 76 ++++++++++++++++++ .../blog/2025-09-bolt-cloud-launch/og.png | Bin 0 -> 22379 bytes 2 files changed, 76 insertions(+) create mode 100644 apps/www/_blog/2025-09-30-bolt-cloud-launch.mdx create mode 100644 apps/www/public/images/blog/2025-09-bolt-cloud-launch/og.png diff --git a/apps/www/_blog/2025-09-30-bolt-cloud-launch.mdx b/apps/www/_blog/2025-09-30-bolt-cloud-launch.mdx new file mode 100644 index 0000000000000..141962b69b2ce --- /dev/null +++ b/apps/www/_blog/2025-09-30-bolt-cloud-launch.mdx @@ -0,0 +1,76 @@ +--- +title: Enterprise speed, enterprise standards with Bolt Cloud + Supabase +description: With today's launch of Bolt Cloud, every project that needs a backend is powered by Supabase, giving developers enterprise standards with the speed of vibe coding. +author: prashant +image: 2025-09-bolt-cloud-launch/og.png +thumb: 2025-09-bolt-cloud-launch/og.png +categories: + - product + - bolt + - enterprise +date: 2025-09-30:08:00 +toc_depth: 2 +--- + +With today's launch of Bolt Cloud, every project in [Bolt Cloud](https://bolt.new) that needs a backend is powered by Supabase. Now, when you tell Bolt what you want to build, your project launches with a complete Supabase foundation including: + +- A full Postgres Database +- Authentication and user management +- Storage for files, videos, and more +- Edge Functions +- Realtime for more immersive user experiences + +Together, Bolt and Supabase give developers and product managers the best of both worlds: the speed of vibe coding and the standards enterprises require. Bolt has already connected their apps to over 600,000 Supabase backends today. + +## The enterprise developer problem + +Enterprise developers and product managers face familiar challenges: + +- **Endless error loops.** Quick demos often collapse under real-world traffic or audits. Supabase + Bolt ensure reliability from the start. +- **Half-wired backends.** Databases here, auth there, storage somewhere else — every integration adds friction and failure points. The Bolt agent wires everything up with Supabase built in. +- **Prototypes that stall.** Tools that accelerate early prototypes often fail at scale, forcing painful rewrites. Supabase scale plus Bolt Cloud means you can move fast without hitting a rewrite wall. + +Enterprise teams need speed and reliability. Supabase bridges both. It's the Postgres development platform that lets you build in a weekend and scale to millions, with the performance, compliance, and observability enterprises demand. Bolt Cloud proves the same point: speed only matters if you can trust the foundation. + +## Supabase and Bolt Cloud: build enterprise applications in minutes + +Bolt Cloud projects that use Supabase as their backend let teams move fast on infrastructure already trusted by enterprises across industries: + +- **[Postgres Database](/database).** Production-ready Postgres with extensions, scaling, and backups built in. No proprietary query languages, no migration headaches, just SQL. +- **[Supabase Auth](/auth).** Complete authentication and user management, including enterprise features like SAML and SSO, plus Row Level Security for granular access control. +- **[Supabase Storage](/storage).** S3-compatible object storage, built for handling user-generated content at scale. +- **[Supabase Edge Functions](/edge-functions).** Globally distributed functions for custom business logic, deployed close to your users. +- **[Realtime APIs](/realtime).** Postgres replication exposed as APIs, enabling collaboration and live data without additional infrastructure. + +Because Supabase is just Postgres, enterprises can reuse their skills, connect existing systems through Foreign Data Wrappers, and trust technology proven at global scale. + +## Enterprise standards included + +Bolt Cloud projects built on Supabase meet enterprise requirements: + +- SOC 2 and HIPAA certifications for compliance-driven industries +- Row Level Security for protecting sensitive data +- Read replicas and horizontal scaling for unpredictable traffic +- Point-in-time recovery and automatic backups for resilience + +These are not afterthoughts. They are table stakes for enterprise scale. Supabase delivers them out of the box. + +## Why this matters + +_Build in a weekend_. _Scale to millions_. This isn't just a tagline. It's how we operate. It means balancing the need for teams to move fast with the requirement to act responsibly and safely. Supabase is not just for startups. Modern enterprise teams face equal pressure to move faster than ever. + +Bolt Cloud shows how this vision works in practice. A modern frontend workflow can extend into a secure, scalable backend powered by Supabase. Enterprise developers can move at the speed of AI-assisted development without leaving behind the standards their organizations require. + +## Start building + +Supabase is more than a database. It is the fully integrated Postgres development platform that reduces complexity for developers and reduces risk for enterprises. Bolt Cloud highlights the same trend we built around: giving teams superpowers without compromise. + +**For developers:** Easy tools, instant setup, and seamless integrations. + +**For enterprises:** Compliance, reliability, and the ability to scale with confidence. + +It is not a tradeoff anymore. The new generation of tools delivers both. + +[Get started with Supabase →](https://supabase.com/dashboard) + +[Start your first Bolt Cloud project today →](https://bolt.new) diff --git a/apps/www/public/images/blog/2025-09-bolt-cloud-launch/og.png b/apps/www/public/images/blog/2025-09-bolt-cloud-launch/og.png new file mode 100644 index 0000000000000000000000000000000000000000..510daf29725a6dabde5deb86aec82c572f6d48f1 GIT binary patch literal 22379 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 literal 0 HcmV?d00001 From cb66b6b6355f3b18b7d93dd6bd4d83869efac4cf Mon Sep 17 00:00:00 2001 From: Steve Chavez Date: Tue, 30 Sep 2025 14:37:07 -0500 Subject: [PATCH 4/5] feat: blog post postgrest 13 (#38840) * add CodeTabs component to www * add to www mdx components --- .../_blog/2025-09-30-postgrest-13-release.mdx | 204 ++++++ apps/www/app/blog/[slug]/page.tsx | 6 +- apps/www/components/CodeBlock/CodeBlock.tsx | 23 +- .../components/CodeBlock/CodeBlock.utils.js | 233 +++++++ .../CodeTabs/CodeTabs.components.tsx | 21 + apps/www/components/CodeTabs/index.ts | 2 + .../components/CodeTabs/simple-transform.ts | 48 ++ apps/www/components/CodeTabs/utils.ts | 13 + apps/www/components/Tabs/Tabs.tsx | 77 +++ apps/www/components/Tabs/index.ts | 2 + apps/www/lib/authors.json | 8 + apps/www/lib/mdx/mdxComponents.tsx | 20 +- apps/www/lib/mdx/mdxSerialize.ts | 16 +- apps/www/package.json | 12 +- .../postgrest-13-release.png | Bin 0 -> 22666 bytes apps/www/public/sitemap_www.xml | 12 + pnpm-lock.yaml | 598 ++++++++---------- 17 files changed, 958 insertions(+), 337 deletions(-) create mode 100644 apps/www/_blog/2025-09-30-postgrest-13-release.mdx create mode 100644 apps/www/components/CodeTabs/CodeTabs.components.tsx create mode 100644 apps/www/components/CodeTabs/index.ts create mode 100644 apps/www/components/CodeTabs/simple-transform.ts create mode 100644 apps/www/components/CodeTabs/utils.ts create mode 100644 apps/www/components/Tabs/Tabs.tsx create mode 100644 apps/www/components/Tabs/index.ts create mode 100644 apps/www/public/images/blog/2025-09-30-postgrest-13-release/postgrest-13-release.png diff --git a/apps/www/_blog/2025-09-30-postgrest-13-release.mdx b/apps/www/_blog/2025-09-30-postgrest-13-release.mdx new file mode 100644 index 0000000000000..d729893ebfc36 --- /dev/null +++ b/apps/www/_blog/2025-09-30-postgrest-13-release.mdx @@ -0,0 +1,204 @@ +--- +title: PostgREST 13 +description: New features and changes in PostgREST version 13. +author: steve_chavez,laurenceisla,avallete +image: 2025-09-30-postgrest-13-release/postgrest-13-release.png +thumb: 2025-09-30-postgrest-13-release/postgrest-13-release.png +categories: + - postgres +tags: + - postgres + - postgrest + - release-notes +date: '2025-09-30' +--- + +PostgREST 13 is out! It comes with API and Observabilty improvements. In this post, we'll see what's new. + +## Spread To-Many relationships + +This new feature allows you to represent one-to-many and many-to-many relationships as flat JSON arrays. + +For example, if you have database similar to IMDB and you’d like to represent it as a hierarchical JSON structure for your frontend, like so: + +```json +[ + { + "title": "The Shawshank Redemption", + "actors": ["Tim Robbins", "Morgan Freeman"], + "genres": ["Drama"] + }, + { + "title": "The Godfather", + "actors": ["Marlon Brando", "Al Pacino"], + "genres": ["Drama", "Crime"] + }, + { + "title": "The Dark Knight", + "actors": ["Christian Bale", "Heath Ledger"], + "genres": ["Drama", "Crime", "Action"] + } +] +``` + +You can now do it this way: + +<$CodeTabs> + +```js name=JavaScript +const { data, error } = await supabase.from('titles').select(` + title:primary_title, + ...people(actors:primary_name), + ...genres(genres:name) +`) +``` + +```bash name=Bash +curl --get 'https:///titles' + -d "select=title:primary_title,...people(actors:primary_name),...genres(genres:name)" + -H "Authorization: Bearer " +``` + +```swift name=Swift +try await supabase.from("titles").select( +""" + title:primary_title, + ...people(actors:primary_name), + ...genres(genres:name) +""") +``` + + + +The above `...people` is “spreading” the many-to-many relationship between `titles` and `people`, forming a flat array only consisting of the `primary_name` column. This flat array is then renamed to `actors`. We do a similar process for `genres` , which also forms a many-to-many relationship with `people`. + +You can see the data model used for this example on this [gist](https://gist.github.com/steve-chavez/93f7ae04b4323e1952710af7129b32cf). There are more details about this feature on the [official docs](https://docs.postgrest.org/en/v13/references/api/resource_embedding.html#spread-to-many-relationships). + +## Automatic tsvector convertion + +Previously you could only use the full text search operator on `tsvector` columns, now you can do it on `text` and `json/jsonb` columns too: + +<$CodeTabs> + +```js name=JavaScript +const { data, error } = await supabase.from('titles').textSearch('primary_name', `'god' & 'father'`) +``` + +```bash name=Bash +curl --get 'https:///titles' + -d "primary_name=fts.'god'%26'father" + -H "Authorization: Bearer " +``` + +```swift name=Swift +try await supabase + .from("titles") + .fts("primary_name",value: "'god' & 'father'") +``` + + + +This works because `text` and `json/jsonb` columns will be automatically converted with `to_tsvector`. + +To ensure this operation is fast, add an index: + +```sql +create index idx_titles on people +using gin (to_tsvector('english', primary_name)); +``` + +## Max Affected + +You can now limit to the amount of rows affected by an `update` or `delete` operation with `maxAffected`: + +<$CodeTabs> + +```js name=JavaScript +const { data, error } = await supabase + .from('people') + .update({ primary_name: 'Marlon Brando Jr.' }) + .eq('nconst', 'nm0000008') + .maxAffected(1) + +// This is available starting from supabase-js version 2.56.0 +``` + +```bash name=Bash +curl -X PATCH 'https:///people' \ + -d "nconst=eq.nm0000008" \ + -H "Authorization: Bearer " \ + -H "Prefer: handling=strict, max-affected=1" \ + -H "Content-Type: application/json" \ + -d @- < + +If the rows affected by the operation surpass the limit in `maxAffected`, an error will be thrown. + +This also works with `rpc()`, given that it modifies rows and returns the affected rows. More on details on the [official docs](https://docs.postgrest.org/en/v13/references/api/preferences.html#max-affected). + +## Content-Length header + +For observability, you can now verify the response body size in bytes in the `Content-Length` header. + +```bash +HTTP/1.1 200 OK +Content-Length: 104 +Content-Location: /items +``` + +This helps in cases where you want to know which requests consume the most traffic to avoid exceeding egress limits. + +## Proxy-Status header + +The PostgREST error code is now present in the `Proxy-Status` header. + +```bash +HTTP/1.1 406 Not Acceptable +Proxy-Status: PostgREST; error=PGRST116 +``` + +You can check the `Proxy-Status` and `Content-Length` headers in the Supabase Logs Explorer. + +## Breaking Changes + +### JWT `kid` validation + +PostgREST now validates the JWT `kid` claim. If your JWT contains a Key ID (`kid`), it will try to match this with one of the `kid`'s in the configured JSON Web Key Set. Check the [official docs](https://docs.postgrest.org/en/v13/references/auth.html#jwk-kid-validation) for more details. + +If you use Supabase Auth or the CLI to create JSON Web Keys, you shouldn’t worry about this change as both systems will ensure `kid`'s are present in the JSON Web Key Set. + +For users that integrate with other Auth systems, make sure that both your JWT and JWKS follow the above rules. + +### Schema validation in PostgREST search path + +The schemas inside `db-schemas` and `db-extra-search-path` are now validated. This means you cannot put a nonexistent schema there, if you do PostgREST will fail with an error message. + +If you drop a schema during a migration, you should make sure this is synced with the PostgREST search path, which is possible thanks to postgres transactional DDL: + +```sql +begin; +drop schema old_schema; +alter role authenticator set pgrst.db_schemas = 'public, pg_graphql, others'; -- make sure old_schema is not present here +commit; +``` + +## Try it out + +PostgREST v13 is now available for all new projects on the Supabase platform, old projects can upgrade to get this new version. + +You can look at the full changelog on the [release notes](https://github.com/PostgREST/postgrest/releases/tag/v13.0.0). diff --git a/apps/www/app/blog/[slug]/page.tsx b/apps/www/app/blog/[slug]/page.tsx index dd3ce29f66fab..d5f50513a30f5 100644 --- a/apps/www/app/blog/[slug]/page.tsx +++ b/apps/www/app/blog/[slug]/page.tsx @@ -39,7 +39,7 @@ async function getCMSPostFromAPI( const response = await fetch(url.toString(), fetchOptions) if (!response.ok) { - console.error('[getCMSPostFromAPI] Non-OK response:', response.status) + console.warn('[getCMSPostFromAPI] Non-OK response:', response.status) return null } @@ -47,7 +47,7 @@ async function getCMSPostFromAPI( return data.success ? data.post : null } catch (error) { - console.error('[getCMSPostFromAPI] Error:', error) + console.warn('[getCMSPostFromAPI] Error:', error) return null } } @@ -295,7 +295,7 @@ export default async function BlogPostPage({ params }: { params: Promise try { processedContent = await processCMSContent(cmsPost.richContent || cmsPost.content, tocDepth) } catch (error) { - console.error('Error processing CMS content, falling back to legacy processing:', error) + console.warn('Error processing CMS content, falling back to legacy processing:', error) // Fallback to legacy processing const mdxSource = await mdxSerialize(cmsPost.content || '', { tocDepth }) processedContent = { diff --git a/apps/www/components/CodeBlock/CodeBlock.tsx b/apps/www/components/CodeBlock/CodeBlock.tsx index 7e333ab0d4b19..e411aec300f6f 100644 --- a/apps/www/components/CodeBlock/CodeBlock.tsx +++ b/apps/www/components/CodeBlock/CodeBlock.tsx @@ -13,9 +13,10 @@ import sql from 'react-syntax-highlighter/dist/cjs/languages/hljs/sql' import yaml from 'react-syntax-highlighter/dist/cjs/languages/hljs/yaml' import json from 'react-syntax-highlighter/dist/cjs/languages/hljs/json' import { Button, cn } from 'ui' -import monokaiCustomTheme from './CodeBlock.utils' +import monokaiCustomTheme, { codeHikeTheme } from './CodeBlock.utils' export type LANG = 'js' | 'sql' | 'py' | 'bash' | 'ts' | 'tsx' | 'kotlin' | 'yaml' | 'json' + export interface CodeBlockProps { lang: LANG startingLineNumber?: number @@ -25,11 +26,13 @@ export interface CodeBlockProps { children?: string size?: 'small' | 'medium' | 'large' background?: string + filename?: string + theme?: 'monokai' | 'code-hike' } function CodeBlock(props: CodeBlockProps) { const { resolvedTheme } = useTheme() - const isDarkTheme = resolvedTheme?.includes('dark')! + const isDarkTheme = resolvedTheme?.includes('dark') ?? false const [copied, setCopied] = useState(false) const [mounted, setMounted] = useState(false) @@ -51,6 +54,8 @@ function CodeBlock(props: CodeBlockProps) { }, 1000) } + const isCodeHikeTheme = props.theme === 'code-hike' + let lang = props.lang ? props.lang : props.className @@ -111,7 +116,15 @@ function CodeBlock(props: CodeBlockProps) { {/* @ts-ignore */} diff --git a/apps/www/components/CodeBlock/CodeBlock.utils.js b/apps/www/components/CodeBlock/CodeBlock.utils.js index 7eea1da69cec3..4a3da382c6529 100644 --- a/apps/www/components/CodeBlock/CodeBlock.utils.js +++ b/apps/www/components/CodeBlock/CodeBlock.utils.js @@ -229,4 +229,237 @@ const monokaiCustomTheme = { }, } +// CodeHike theme based on the colors from code-hike.scss +const codeHikeTheme = { + dark: { + hljs: { + display: 'block', + overflowX: 'auto', + padding: '0.5em', + background: '#2a2929', // --ch-16 dark + color: '#f8f8f2', // --ch-4 + }, + 'hljs-tag': { + color: '#79c0ff', // --ch-2 + }, + 'hljs-keyword': { + color: '#79c0ff', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-selector-tag': { + color: '#79c0ff', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-literal': { + color: '#79c0ff', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-strong': { + color: '#79c0ff', // --ch-2 + }, + 'hljs-name': { + color: '#79c0ff', // --ch-2 + }, + 'hljs-code': { + color: '#569cd6', // --ch-7 + }, + 'hljs-class .hljs-title': { + color: '#8b949e', // --ch-1 + }, + 'hljs-attribute': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-symbol': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-regexp': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-link': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-string': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-bullet': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-subst': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-title': { + color: '#ffcda1', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-section': { + color: '#ffcda1', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-emphasis': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-type': { + color: '#ffcda1', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-built_in': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-builtin-name': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-selector-attr': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-selector-pseudo': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-addition': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-variable': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-template-tag': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-template-variable': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-comment': { + color: '#8b949e', // --ch-1 + }, + 'hljs-quote': { + color: '#8b949e', // --ch-1 + }, + 'hljs-deletion': { + color: '#8b949e', // --ch-1 + }, + 'hljs-meta': { + color: '#8b949e', // --ch-1 + }, + 'hljs-doctag': { + fontWeight: 'normal', + }, + 'hljs-selector-id': { + fontWeight: 'normal', + }, + }, + light: { + hljs: { + display: 'block', + overflowX: 'auto', + padding: '0.5em', + background: '#eeeeee', // --ch-16 light + color: '#24292f', // --ch-4 + }, + 'hljs-tag': { + color: '#0550ae', // --ch-2 + }, + 'hljs-keyword': { + color: '#0550ae', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-selector-tag': { + color: '#0550ae', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-literal': { + color: '#0550ae', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-strong': { + color: '#0550ae', // --ch-2 + }, + 'hljs-name': { + color: '#0550ae', // --ch-2 + }, + 'hljs-code': { + color: '#cf222e', // --ch-7 + }, + 'hljs-class .hljs-title': { + color: '#6e7781', // --ch-1 + }, + 'hljs-attribute': { + color: '#8250df', // --ch-5 + }, + 'hljs-symbol': { + color: '#8250df', // --ch-5 + }, + 'hljs-regexp': { + color: '#8250df', // --ch-5 + }, + 'hljs-link': { + color: '#8250df', // --ch-5 + }, + 'hljs-string': { + color: '#953800', // --ch-3 + }, + 'hljs-bullet': { + color: '#953800', // --ch-3 + }, + 'hljs-subst': { + color: '#953800', // --ch-3 + }, + 'hljs-title': { + color: '#953800', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-section': { + color: '#953800', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-emphasis': { + color: '#953800', // --ch-3 + }, + 'hljs-type': { + color: '#953800', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-built_in': { + color: '#953800', // --ch-3 + }, + 'hljs-builtin-name': { + color: '#953800', // --ch-3 + }, + 'hljs-selector-attr': { + color: '#953800', // --ch-3 + }, + 'hljs-selector-pseudo': { + color: '#953800', // --ch-3 + }, + 'hljs-addition': { + color: '#953800', // --ch-3 + }, + 'hljs-variable': { + color: '#953800', // --ch-3 + }, + 'hljs-template-tag': { + color: '#953800', // --ch-3 + }, + 'hljs-template-variable': { + color: '#953800', // --ch-3 + }, + 'hljs-comment': { + color: '#6e7781', // --ch-1 + }, + 'hljs-quote': { + color: '#6e7781', // --ch-1 + }, + 'hljs-deletion': { + color: '#6e7781', // --ch-1 + }, + 'hljs-meta': { + color: '#6e7781', // --ch-1 + }, + 'hljs-doctag': { + fontWeight: 'normal', + }, + 'hljs-selector-id': { + fontWeight: 'normal', + }, + }, +} + +export { codeHikeTheme } export default monokaiCustomTheme diff --git a/apps/www/components/CodeTabs/CodeTabs.components.tsx b/apps/www/components/CodeTabs/CodeTabs.components.tsx new file mode 100644 index 0000000000000..b15f0d9ba745c --- /dev/null +++ b/apps/www/components/CodeTabs/CodeTabs.components.tsx @@ -0,0 +1,21 @@ +import type { PropsWithChildren } from 'react' + +import { cn } from 'ui' + +export function NamedCodeBlock({ name, children }: PropsWithChildren<{ name: string }>) { + return ( +
+
+ {name} +
+ {children} +
+ ) +} diff --git a/apps/www/components/CodeTabs/index.ts b/apps/www/components/CodeTabs/index.ts new file mode 100644 index 0000000000000..3366febfa064d --- /dev/null +++ b/apps/www/components/CodeTabs/index.ts @@ -0,0 +1,2 @@ +export { NamedCodeBlock } from './CodeTabs.components' +export { preprocessMdxWithCodeTabs } from './utils' diff --git a/apps/www/components/CodeTabs/simple-transform.ts b/apps/www/components/CodeTabs/simple-transform.ts new file mode 100644 index 0000000000000..8b85b9fb042fd --- /dev/null +++ b/apps/www/components/CodeTabs/simple-transform.ts @@ -0,0 +1,48 @@ +/** + * Simple string-based transformation for CodeTabs + * This avoids the complex AST manipulation that's causing issues + */ + +export function transformCodeTabs(mdx: string): string { + // Pattern to match <$CodeTabs>... blocks + const codeTabsPattern = /<\$CodeTabs>([\s\S]*?)<\/\$CodeTabs>/g + + return mdx.replace(codeTabsPattern, (match, content) => { + // Extract code blocks from the content + const codeBlockPattern = /```(\w+)(?:\s+name=([^\s]+))?\s*\n([\s\S]*?)\n```/g + const codeBlocks: Array<{ lang: string; name?: string; content: string }> = [] + + let blockMatch: RegExpExecArray | null + // biome-ignore lint/suspicious/noAssignInExpressions: required for regex loop + while ((blockMatch = codeBlockPattern.exec(content)) !== null) { + const [, lang, name, blockContent] = blockMatch + codeBlocks.push({ + lang, + name: name || `${lang}.${lang === 'bash' ? 'sh' : lang}`, + content: blockContent.trim(), + }) + } + + if (codeBlocks.length === 0) { + return match // Return original if no code blocks found + } + + // Generate the Tabs structure + const tabPanels = codeBlocks + .map( + (block) => ` + + +\`\`\`${block.lang} +${block.content} +\`\`\` + + ` + ) + .join('') + + return ` +${tabPanels} +` + }) +} diff --git a/apps/www/components/CodeTabs/utils.ts b/apps/www/components/CodeTabs/utils.ts new file mode 100644 index 0000000000000..e5befcfc12eea --- /dev/null +++ b/apps/www/components/CodeTabs/utils.ts @@ -0,0 +1,13 @@ +import { transformCodeTabs } from './simple-transform' + +export function preprocessMdxWithCodeTabs(mdx: string) { + try { + // Use simple string-based transformation + const transformed = transformCodeTabs(mdx) + return Promise.resolve(transformed) + } catch (error) { + console.error('preprocessMdxWithCodeTabs error:', error) + // Fallback to returning the original MDX + return Promise.resolve(mdx) + } +} diff --git a/apps/www/components/Tabs/Tabs.tsx b/apps/www/components/Tabs/Tabs.tsx new file mode 100644 index 0000000000000..4811f9fca94ab --- /dev/null +++ b/apps/www/components/Tabs/Tabs.tsx @@ -0,0 +1,77 @@ +'use client' + +import { useState, useEffect } from 'react' +import { cn, Tabs_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_, TabsContent_Shadcn_ } from 'ui' + +export interface TabsProps { + children: React.ReactNode + className?: string + defaultActiveId?: string + listClassNames?: string +} + +export interface TabPanelProps { + children: React.ReactNode + id: string + label: string + className?: string +} + +function Tabs({ children, className, defaultActiveId, listClassNames }: TabsProps) { + const [mounted, setMounted] = useState(false) + const [activeTab, setActiveTab] = useState(defaultActiveId) + + useEffect(() => { + setMounted(true) + }, []) + + if (!mounted) return null + + // Extract tab panels from children + const tabPanels = Array.isArray(children) ? children : [children] + const validTabPanels = tabPanels.filter( + (child) => child && typeof child === 'object' && 'props' in child && child.props.id + ) + + if (validTabPanels.length === 0) return null + + const currentActiveTab = activeTab || validTabPanels[0]?.props?.id + + return ( +
+ + + {validTabPanels.map((panel) => ( + + {panel.props.label} + + ))} + + {validTabPanels.map((panel) => ( + + {panel.props.children} + + ))} + +
+ ) +} + +function TabPanel({ children, id, label, className }: TabPanelProps) { + return ( +
+ {children} +
+ ) +} + +export { Tabs, TabPanel } +export default Tabs diff --git a/apps/www/components/Tabs/index.ts b/apps/www/components/Tabs/index.ts new file mode 100644 index 0000000000000..2b7eec56a135c --- /dev/null +++ b/apps/www/components/Tabs/index.ts @@ -0,0 +1,2 @@ +export { Tabs, TabPanel } from './Tabs' +export type { TabsProps, TabPanelProps } from './Tabs' diff --git a/apps/www/lib/authors.json b/apps/www/lib/authors.json index 4940276eb0c25..6e5af52174d17 100644 --- a/apps/www/lib/authors.json +++ b/apps/www/lib/authors.json @@ -106,6 +106,14 @@ "author_url": "https://github.com/laurenceisla", "author_image_url": "https://github.com/laurenceisla.png" }, + { + "author_id": "avallete", + "author": "Andrew Valleteau", + "username": "avallete", + "position": "Engineering", + "author_url": "https://github.com/avallete", + "author_image_url": "https://github.com/avallete.png" + }, { "author_id": "supabase", "author": "Supabase", diff --git a/apps/www/lib/mdx/mdxComponents.tsx b/apps/www/lib/mdx/mdxComponents.tsx index 90a00a1908cdc..2e391394b8a04 100644 --- a/apps/www/lib/mdx/mdxComponents.tsx +++ b/apps/www/lib/mdx/mdxComponents.tsx @@ -1,6 +1,5 @@ 'use client' -import { PropsWithChildren } from 'react' import { CH } from '@code-hike/mdx/components' import dynamic from 'next/dynamic' import { ArrowUpRight, Triangle } from 'lucide-react' @@ -14,11 +13,26 @@ import { Image, } from 'ui' import { Admonition } from 'ui-patterns/admonition' +import type { PropsWithChildren } from 'react' import type { ImageProps } from 'ui/src/components/Image/Image' const Avatar = dynamic(() => import('~/components/Avatar')) const Chart = dynamic(() => import('~/components/Charts/PGCharts')) const CodeBlock = dynamic(() => import('~/components/CodeBlock/CodeBlock')) +const Tabs = dynamic(() => import('~/components/Tabs/Tabs'), { ssr: false }) +const TabPanel = dynamic( + () => import('~/components/Tabs/Tabs').then((mod) => ({ default: mod.TabPanel })), + { ssr: false } +) +const NamedCodeBlock = dynamic( + () => + import('~/components/CodeTabs').then((mod) => ({ + default: mod.NamedCodeBlock, + })), + { + ssr: false, + } +) const ImageFadeStack = dynamic(() => import('~/components/ImageFadeStack')) const ImageGrid = dynamic(() => import('~/components/ImageGrid')) const InlineCodeTag = dynamic(() => import('~/components/InlineCode')) @@ -73,6 +87,9 @@ const BlogCollapsible = ({ export default function mdxComponents(type?: 'blog' | 'lp' | undefined) { const components = { CodeBlock, + Tabs, + TabPanel, + NamedCodeBlock, CH, h1: (props: any) => , h2: (props: any) => , @@ -110,6 +127,7 @@ export default function mdxComponents(type?: 'blog' | 'lp' | undefined) { /> ) } + // biome-ignore lint/a11y/useAltText: provided in props return }, Img: ({ zoomable = true, className, ...props }: ImageProps & { wide?: boolean }) => ( diff --git a/apps/www/lib/mdx/mdxSerialize.ts b/apps/www/lib/mdx/mdxSerialize.ts index 35a43940b50ae..7e4b6d7cd297a 100644 --- a/apps/www/lib/mdx/mdxSerialize.ts +++ b/apps/www/lib/mdx/mdxSerialize.ts @@ -2,8 +2,9 @@ import { serialize } from 'next-mdx-remote/serialize' import rehypeSlug from 'rehype-slug' import remarkGfm from 'remark-gfm' -import { CodeHikeConfig, remarkCodeHike } from '@code-hike/mdx' +import { type CodeHikeConfig, remarkCodeHike } from '@code-hike/mdx' import codeHikeTheme from 'config/code-hike.theme.json' with { type: 'json' } +import { preprocessMdxWithCodeTabs } from '~/components/CodeTabs' // mdx2 needs self-closing tags. // dragging an image onto a GitHub discussion creates an @@ -64,13 +65,18 @@ function createRemarkCollectToc(maxDepth: number) { walk(tree) // Attach to tree data for retrieval post-serialize - ;(tree.data || (tree.data = {})).__collectedToc = items + if (!tree.data) { + tree.data = {} + } + tree.data.__collectedToc = items } } } export async function mdxSerialize(source: string, options?: { tocDepth?: number }) { const formattedSource = addSelfClosingTags(source) + // Preprocess MDX to handle CodeTabs transformation + const preprocessedSource = await preprocessMdxWithCodeTabs(formattedSource) const codeHikeOptions: CodeHikeConfig = { theme: codeHikeTheme, lineNumbers: true, @@ -82,7 +88,7 @@ export async function mdxSerialize(source: string, options?: { tocDepth?: number const tocDepth = options?.tocDepth ?? 2 let collectedToc: TocItem[] = [] - const mdxSource: any = await serialize(formattedSource, { + const mdxSource = await serialize(preprocessedSource, { scope: { chCodeConfig: codeHikeOptions, }, @@ -91,10 +97,10 @@ export async function mdxSerialize(source: string, options?: { tocDepth?: number [remarkCodeHike, codeHikeOptions], remarkGfm, // Collect headings into a simple TOC structure - function () { + () => { const plugin = createRemarkCollectToc(tocDepth) const transformer = (plugin as any)() - return function (tree: any) { + return (tree: any) => { transformer(tree) if (tree?.data?.__collectedToc) { collectedToc = tree.data.__collectedToc as TocItem[] diff --git a/apps/www/package.json b/apps/www/package.json index 45fbe5561ab8b..ad034c28b758e 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -26,11 +26,11 @@ "@next/bundle-analyzer": "15.3.1", "@next/mdx": "15.3.1", "@octokit/auth-app": "^7.0.0", - "@payloadcms/live-preview-react": "^3.0.0", "@octokit/core": "^6.0.0", "@octokit/graphql": "^8.0.0", "@octokit/plugin-paginate-graphql": "^4.0.0", "@octokit/rest": "^21.0.0", + "@payloadcms/live-preview-react": "^3.0.0", "@radix-ui/react-dialog": "^1.0.5", "@sentry/nextjs": "^10", "@supabase/supabase-js": "catalog:", @@ -52,6 +52,13 @@ "icons": "workspace:*", "lucide-react": "*", "markdown-toc": "^1.2.0", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-gfm": "^2.0.2", + "mdast-util-mdx": "^2.0.1", + "mdast-util-mdx-jsx": "^2.1.4", + "mdast-util-to-markdown": "^1.5.0", + "micromark-extension-gfm": "^2.0.3", + "micromark-extension-mdxjs": "^1.0.1", "next": "catalog:", "next-mdx-remote": "^4.4.1", "next-seo": "^6.5.0", @@ -86,6 +93,7 @@ "@types/animejs": "^3.1.12", "@types/classnames": "^2.3.1", "@types/common-tags": "^1.8.4", + "@types/mdast": "^4.0.4", "@types/mdx-js__react": "^1.5.6", "@types/parse-numeric-range": "^0.0.1", "@types/react": "catalog:", @@ -97,7 +105,9 @@ "api-types": "workspace:*", "postcss": "^8.5.3", "react-hook-form": "^7.45.0", + "tailwindcss": "^3.4.1", "tsconfig": "workspace:*", + "unist-util-visit-parents": "5.1.3", "uuid": "^9.0.1", "zod": "catalog:" }, diff --git a/apps/www/public/images/blog/2025-09-30-postgrest-13-release/postgrest-13-release.png b/apps/www/public/images/blog/2025-09-30-postgrest-13-release/postgrest-13-release.png new file mode 100644 index 0000000000000000000000000000000000000000..12d899045e44a6cbe326b09fb2bc6445844880ca GIT binary patch literal 22666 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 ZDdo6Qs2jl4{LII)G`BlhYUX+Ke*nVarnLY7 literal 0 HcmV?d00001 diff --git a/apps/www/public/sitemap_www.xml b/apps/www/public/sitemap_www.xml index 944e53e64b632..b27b565864822 100644 --- a/apps/www/public/sitemap_www.xml +++ b/apps/www/public/sitemap_www.xml @@ -2162,6 +2162,18 @@ 0.5 + + https://supabase.com/blog/defense-in-depth-mcp + weekly + 0.5 + + + + https://supabase.com/blog/postgrest-13-release + weekly + 0.5 + + https://supabase.com/customers/asap-work weekly diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d39f21839390c..41bbae33039ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -237,10 +237,10 @@ importers: version: 1.2.0 next: specifier: 'catalog:' - version: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + version: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) next-contentlayer2: specifier: 0.4.6 - version: 0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1) + version: 0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -382,13 +382,13 @@ importers: version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/nextjs': specifier: ^10.3.0 - version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) + version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) '@supabase/supabase-js': specifier: 'catalog:' version: 2.49.3 '@tailwindcss/container-queries': specifier: ^0.1.1 - version: 0.1.1(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2))) + version: 0.1.1(tailwindcss@4.1.13) '@tanstack/react-query': specifier: ^5.13.4 version: 5.13.4(react@18.3.1) @@ -797,7 +797,7 @@ importers: version: 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/nextjs': specifier: ^10.3.0 - version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) + version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) '@std/path': specifier: npm:@jsr/std__path@^1.0.8 version: '@jsr/std__path@1.0.8' @@ -932,13 +932,13 @@ importers: version: 0.52.2 next: specifier: 'catalog:' - version: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + version: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nuqs: specifier: ^2.4.1 - version: 2.4.1(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 2.4.1(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) openai: specifier: ^4.75.1 version: 4.104.0(encoding@0.1.13)(ws@8.18.3)(zod@3.25.76) @@ -1209,7 +1209,7 @@ importers: version: 2.4.11(typescript@5.9.2) next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) + version: 0.9.13(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) node-mocks-http: specifier: ^1.17.2 version: 1.17.2(@types/node@22.13.14) @@ -1573,7 +1573,7 @@ importers: version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/nextjs': specifier: ^10 - version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) + version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) '@supabase/supabase-js': specifier: 'catalog:' version: 2.49.3 @@ -1631,6 +1631,27 @@ importers: markdown-toc: specifier: ^1.2.0 version: 1.2.0 + mdast-util-from-markdown: + specifier: ^2.0.2 + version: 2.0.2(supports-color@8.1.1) + mdast-util-gfm: + specifier: ^2.0.2 + version: 2.0.2(supports-color@8.1.1) + mdast-util-mdx: + specifier: ^2.0.1 + version: 2.0.1(supports-color@8.1.1) + mdast-util-mdx-jsx: + specifier: ^2.1.4 + version: 2.1.4(supports-color@8.1.1) + mdast-util-to-markdown: + specifier: ^1.5.0 + version: 1.5.0 + micromark-extension-gfm: + specifier: ^2.0.3 + version: 2.0.3 + micromark-extension-mdxjs: + specifier: ^1.0.1 + version: 1.0.1 next: specifier: 'catalog:' version: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) @@ -1728,6 +1749,9 @@ importers: '@types/common-tags': specifier: ^1.8.4 version: 1.8.4 + '@types/mdast': + specifier: ^4.0.4 + version: 4.0.4 '@types/mdx-js__react': specifier: ^1.5.6 version: 1.5.6 @@ -1761,9 +1785,15 @@ importers: react-hook-form: specifier: ^7.45.0 version: 7.47.0(react@18.3.1) + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig + unist-util-visit-parents: + specifier: 5.1.3 + version: 5.1.3 uuid: specifier: ^9.0.1 version: 9.0.1 @@ -2514,7 +2544,7 @@ importers: version: link:../api-types next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) + version: 0.9.13(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) tsx: specifier: ^4.19.3 version: 4.19.3 @@ -4125,6 +4155,7 @@ packages: '@graphql-tools/prisma-loader@8.0.17': resolution: {integrity: sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg==} engines: {node: '>=16.0.0'} + deprecated: 'This package was intended to be used with an older versions of Prisma.\nThe newer versions of Prisma has a different approach to GraphQL integration.\nTherefore, this package is no longer needed and has been deprecated and removed.\nLearn more: https://www.prisma.io/graphql' peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -9452,6 +9483,9 @@ packages: '@types/mdast@4.0.1': resolution: {integrity: sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdx-js__react@1.5.6': resolution: {integrity: sha512-NPQSvm0NiUzagIWkqY8wcHILt61dI/FerbX5ZIilFpCmDBtRii20CtGdzXrbAZXOk49BziT69xBlOzOuROAAEw==} @@ -10633,9 +10667,6 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001695: - resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} - caniuse-lite@1.0.30001743: resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} @@ -12565,14 +12596,6 @@ packages: fbjs@3.0.5: resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -14027,10 +14050,6 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - jiti@2.5.1: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true @@ -16145,10 +16164,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -18348,6 +18363,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwindcss@4.1.13: + resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -20021,8 +20039,8 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@antfu/ni@23.3.1': {} @@ -20035,7 +20053,7 @@ snapshots: '@ardatan/relay-compiler@12.0.3(encoding@0.1.13)(graphql@16.11.0)': dependencies: '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.4 '@babel/runtime': 7.26.10 chalk: 4.1.2 fb-watchman: 2.0.2 @@ -21334,7 +21352,7 @@ snapshots: '@babel/traverse': 7.27.0(supports-color@8.1.1) '@babel/types': 7.27.0 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -21354,7 +21372,7 @@ snapshots: '@babel/types': 7.28.4 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -21379,7 +21397,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-annotate-as-pure@7.27.3': dependencies: @@ -21429,23 +21447,23 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-function-name@7.24.7': dependencies: '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-globals@7.28.0': {} '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-member-expression-to-functions@7.25.9(supports-color@8.1.1)': dependencies: '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -21459,7 +21477,7 @@ snapshots: '@babel/helper-module-imports@7.25.9(supports-color@8.1.1)': dependencies: '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -21490,7 +21508,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-optimise-call-expression@7.27.1': dependencies: @@ -21521,7 +21539,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.25.9(supports-color@8.1.1)': dependencies: '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -21534,7 +21552,7 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-string-parser@7.24.7': {} @@ -21555,7 +21573,7 @@ snapshots: '@babel/helpers@7.26.10': dependencies: '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helpers@7.28.4': dependencies: @@ -21685,7 +21703,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.27.0 '@babel/types': 7.27.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -21697,7 +21715,7 @@ snapshots: '@babel/parser': 7.27.0 '@babel/template': 7.27.0 '@babel/types': 7.27.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -21710,7 +21728,7 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -22198,7 +22216,7 @@ snapshots: '@esbuild-plugins/node-resolve@0.2.2(esbuild@0.25.2)(supports-color@8.1.1)': dependencies: '@types/resolve': 1.20.6 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) esbuild: 0.25.2 escape-string-regexp: 4.0.0 resolve: 1.22.10 @@ -22297,7 +22315,7 @@ snapshots: '@eslint/eslintrc@2.1.4(supports-color@8.1.1)': dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.2.4 @@ -22857,10 +22875,10 @@ snapshots: '@graphql-tools/graphql-tag-pluck@8.3.19(graphql@16.11.0)(supports-color@8.1.1)': dependencies: '@babel/core': 7.26.10(supports-color@8.1.1) - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.4 '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@graphql-tools/utils': 10.8.6(graphql@16.11.0) graphql: 16.11.0 tslib: 2.8.1 @@ -23079,7 +23097,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14(supports-color@8.1.1)': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -23257,19 +23275,19 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} @@ -23277,8 +23295,8 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -23287,12 +23305,12 @@ snapshots: '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.9': dependencies: @@ -27425,10 +27443,6 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.9-commit.d91dfb5': {} - '@rollup/plugin-alias@5.1.1(rollup@4.38.0)': - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-alias@5.1.1(rollup@4.50.2)': optionalDependencies: rollup: 4.50.2 @@ -27438,45 +27452,37 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.38.0) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 + magic-string: 0.30.19 + picomatch: 4.0.3 optionalDependencies: rollup: 4.38.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.38.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.50.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.50.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 + magic-string: 0.30.19 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.38.0 + rollup: 4.50.2 '@rollup/plugin-commonjs@28.0.6(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 magic-string: 0.30.19 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-inject@5.0.5(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - estree-walker: 2.0.2 - magic-string: 0.30.19 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-inject@5.0.5(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) @@ -27485,28 +27491,12 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-json@6.1.0(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-json@6.1.0(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) @@ -27517,13 +27507,6 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-replace@6.0.2(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - magic-string: 0.30.19 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-replace@6.0.2(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) @@ -27531,14 +27514,6 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-terser@0.4.4(rollup@4.38.0)': - dependencies: - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.39.0 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-terser@0.4.4(rollup@4.50.2)': dependencies: serialize-javascript: 6.0.2 @@ -27551,7 +27526,7 @@ snapshots: dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.38.0 @@ -27559,7 +27534,7 @@ snapshots: dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.50.2 @@ -27778,33 +27753,7 @@ snapshots: '@sentry/core@10.3.0': {} - '@sentry/nextjs@10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.36.0 - '@rollup/plugin-commonjs': 28.0.1(rollup@4.38.0) - '@sentry-internal/browser-utils': 10.3.0 - '@sentry/core': 10.3.0 - '@sentry/node': 10.3.0(supports-color@8.1.1) - '@sentry/opentelemetry': 10.3.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.36.0) - '@sentry/react': 10.3.0(react@18.3.1) - '@sentry/vercel-edge': 10.3.0 - '@sentry/webpack-plugin': 4.0.2(encoding@0.1.13)(supports-color@8.1.1)(webpack@5.94.0) - chalk: 3.0.0 - next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) - resolve: 1.22.8 - rollup: 4.38.0 - stacktrace-parser: 0.1.10 - transitivePeerDependencies: - - '@opentelemetry/context-async-hooks' - - '@opentelemetry/core' - - '@opentelemetry/sdk-trace-base' - - encoding - - react - - supports-color - - webpack - - '@sentry/nextjs@10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0)': + '@sentry/nextjs@10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.36.0 @@ -28745,6 +28694,10 @@ snapshots: dependencies: tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) + '@tailwindcss/container-queries@0.1.1(tailwindcss@4.1.13)': + dependencies: + tailwindcss: 4.1.13 + '@tailwindcss/forms@0.5.6(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)))': dependencies: mini-svg-data-uri: 1.4.4 @@ -28766,7 +28719,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/router-utils': 1.114.12 babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) dedent: 1.5.3(babel-plugin-macros@3.1.0) @@ -28965,7 +28918,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/router-utils': 1.114.12 babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) tiny-invariant: 1.3.3 @@ -29150,7 +29103,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/router-core': 1.114.25 '@tanstack/router-generator': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/router-utils': 1.114.12 @@ -29172,7 +29125,7 @@ snapshots: '@tanstack/router-utils@1.114.12': dependencies: '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.4 ansis: 3.17.0 diff: 7.0.0 @@ -29184,7 +29137,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/directive-functions-plugin': 1.114.12(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.5.1)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) dedent: 1.5.3(babel-plugin-macros@3.1.0) @@ -29472,17 +29425,17 @@ snapshots: '@types/babel__generator@7.6.5': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@types/babel__template@7.4.2': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__traverse@7.20.2': dependencies: @@ -29490,7 +29443,7 @@ snapshots: '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@types/braces@3.0.5': {} @@ -29745,6 +29698,10 @@ snapshots: dependencies: '@types/unist': 2.0.8 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 2.0.8 + '@types/mdx-js__react@1.5.6': dependencies: '@types/react': 18.3.3 @@ -29974,7 +29931,7 @@ snapshots: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/typescript-estree': 7.2.0(supports-color@8.1.1)(typescript@5.9.2) '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.0(supports-color@8.1.1) optionalDependencies: typescript: 5.9.2 @@ -29985,7 +29942,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.9.2) '@typescript-eslint/types': 8.34.1 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -30008,7 +29965,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.34.1(supports-color@8.1.1)(typescript@5.9.2) '@typescript-eslint/utils': 8.34.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.0(supports-color@8.1.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -30023,7 +29980,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -30040,7 +29997,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.9.2) '@typescript-eslint/types': 8.34.1 '@typescript-eslint/visitor-keys': 8.34.1 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -30105,10 +30062,10 @@ snapshots: optionalDependencies: '@aws-sdk/credential-provider-web-identity': 3.830.0 - '@vercel/nft@0.29.2(rollup@4.38.0)(supports-color@8.1.1)': + '@vercel/nft@0.29.2(rollup@4.50.2)(supports-color@8.1.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13)(supports-color@8.1.1) - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.50.2) acorn: 8.14.1 acorn-import-attributes: 1.9.5(acorn@8.14.1) async-sema: 3.1.1 @@ -30117,7 +30074,7 @@ snapshots: glob: 10.4.5 graceful-fs: 4.2.11 node-gyp-build: 4.8.4 - picomatch: 4.0.2 + picomatch: 4.0.3 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -30136,7 +30093,7 @@ snapshots: glob: 10.4.5 graceful-fs: 4.2.11 node-gyp-build: 4.8.4 - picomatch: 4.0.2 + picomatch: 4.0.3 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -30164,7 +30121,7 @@ snapshots: mlly: 1.7.4 node-forge: 1.3.1 pathe: 1.1.2 - std-env: 3.8.1 + std-env: 3.9.0 ufo: 1.5.4 untun: 0.1.3 uqr: 0.1.2 @@ -30202,14 +30159,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.1.7 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.8.1 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 vitest: 3.0.9(@types/node@22.13.14)(jiti@2.5.1)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.9.2))(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) @@ -30220,14 +30177,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.1.7 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.8.1 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.4)(jiti@2.5.1)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.9.2))(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.20.3)(yaml@2.8.1) @@ -30238,14 +30195,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.1.7 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.8.1 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.4)(jiti@2.5.1)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.9.2))(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) @@ -30632,10 +30589,6 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -30658,7 +30611,7 @@ snapshots: agent-base@6.0.2(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -31128,7 +31081,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -31170,7 +31123,7 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 electron-to-chromium: 1.5.88 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -31232,7 +31185,7 @@ snapshots: dotenv: 16.5.0 exsolve: 1.0.4 giget: 2.0.0 - jiti: 2.4.2 + jiti: 2.5.1 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 @@ -31341,12 +31294,10 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.26.2 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001695: {} - caniuse-lite@1.0.30001743: {} capital-case@1.0.4: @@ -32201,17 +32152,17 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.4.0(supports-color@9.4.0): + debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 optionalDependencies: - supports-color: 9.4.0 + supports-color: 8.1.1 - debug@4.4.3(supports-color@8.1.1): + debug@4.4.3(supports-color@9.4.0): dependencies: ms: 2.1.3 optionalDependencies: - supports-color: 8.1.1 + supports-color: 9.4.0 decimal.js-light@2.5.1: {} @@ -32694,7 +32645,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.25.2)(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) esbuild: 0.25.2 transitivePeerDependencies: - supports-color @@ -32841,7 +32792,7 @@ snapshots: eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.31.0)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) enhanced-resolve: 5.18.1 eslint: 8.57.0(supports-color@8.1.1) eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) @@ -33193,7 +33144,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -33384,10 +33335,6 @@ snapshots: transitivePeerDependencies: - encoding - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -33443,7 +33390,7 @@ snapshots: finalhandler@2.1.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -33917,7 +33864,7 @@ snapshots: '@graphql-tools/utils': 10.8.6(graphql@16.11.0) cosmiconfig: 9.0.0(typescript@5.9.2) graphql: 16.11.0 - jiti: 2.4.2 + jiti: 2.5.1 minimatch: 10.0.1 string-env-interpolation: 1.0.1 tslib: 2.8.1 @@ -34391,7 +34338,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2(supports-color@8.1.1) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -34407,7 +34354,7 @@ snapshots: http-proxy-agent@7.0.2(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -34428,35 +34375,35 @@ snapshots: https-proxy-agent@5.0.1(supports-color@8.1.1): dependencies: agent-base: 6.0.2(supports-color@8.1.1) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@6.2.1(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.4(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6(supports-color@9.4.0): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -34619,7 +34566,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -34633,7 +34580,7 @@ snapshots: dependencies: '@ioredis/commands': 1.4.0 cluster-key-slot: 1.1.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -34856,7 +34803,7 @@ snapshots: is-reference@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 is-regex@1.1.4: dependencies: @@ -35014,8 +34961,8 @@ snapshots: istanbul-lib-source-maps@5.0.6(supports-color@8.1.1): dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0(supports-color@8.1.1) + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -35075,8 +35022,6 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: {} - jiti@2.5.1: {} jose@5.9.6: {} @@ -35186,7 +35131,7 @@ snapshots: json-schema-resolver@2.0.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) rfdc: 1.4.1 uri-js: 4.4.1 transitivePeerDependencies: @@ -35581,12 +35526,12 @@ snapshots: magic-string@0.30.8: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 source-map-js: 1.2.1 make-dir@3.1.0: @@ -35712,7 +35657,7 @@ snapshots: mdast-util-find-and-replace@3.0.1: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -35736,7 +35681,7 @@ snapshots: mdast-util-from-markdown@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -35753,7 +35698,7 @@ snapshots: mdast-util-from-markdown@2.0.2(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -35770,7 +35715,7 @@ snapshots: mdast-util-frontmatter@2.0.1(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) @@ -35788,7 +35733,7 @@ snapshots: mdast-util-gfm-autolink-literal@2.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 @@ -35802,7 +35747,7 @@ snapshots: mdast-util-gfm-footnote@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35817,7 +35762,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: @@ -35834,7 +35779,7 @@ snapshots: mdast-util-gfm-table@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) @@ -35849,7 +35794,7 @@ snapshots: mdast-util-gfm-task-list-item@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35883,7 +35828,7 @@ snapshots: mdast-util-math@3.0.0(supports-color@8.1.1): dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) @@ -35906,7 +35851,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35934,7 +35879,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 @@ -35981,7 +35926,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35995,7 +35940,7 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 mdast-util-to-hast@12.3.0: @@ -36012,7 +35957,7 @@ snapshots: mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 @@ -36034,7 +35979,7 @@ snapshots: mdast-util-to-markdown@2.1.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 @@ -36049,7 +35994,7 @@ snapshots: mdast-util-to-string@4.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-toc@6.1.1: dependencies: @@ -36377,8 +36322,8 @@ snapshots: micromark-extension-mdxjs@1.0.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) micromark-extension-mdx-expression: 1.0.8 micromark-extension-mdx-jsx: 1.0.5 micromark-extension-mdx-md: 1.0.1 @@ -36628,7 +36573,7 @@ snapshots: micromark@3.2.0(supports-color@8.1.1): dependencies: '@types/debug': 4.1.9 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -36650,7 +36595,7 @@ snapshots: micromark@4.0.0(supports-color@8.1.1): dependencies: '@types/debug': 4.1.9 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -36967,6 +36912,20 @@ snapshots: neo-async@2.6.2: {} + next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1): + dependencies: + '@contentlayer2/core': 0.4.3(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/utils': 0.4.3 + contentlayer2: 0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@effect-ts/otel-node' + - esbuild + - markdown-wasm + - supports-color + next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1): dependencies: '@contentlayer2/core': 0.4.3(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) @@ -36996,12 +36955,7 @@ snapshots: dependencies: js-yaml-loader: 1.2.2 - next-router-mock@0.9.13(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1): - dependencies: - next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) - react: 18.3.1 - - next-router-mock@0.9.13(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1): + next-router-mock@0.9.13(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1): dependencies: next: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) react: 18.3.1 @@ -37023,7 +36977,7 @@ snapshots: dependencies: '@next/env': 15.5.2 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -37049,7 +37003,7 @@ snapshots: dependencies: '@next/env': 15.5.2 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -37077,14 +37031,14 @@ snapshots: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@netlify/functions': 3.0.4 - '@rollup/plugin-alias': 5.1.1(rollup@4.38.0) - '@rollup/plugin-commonjs': 28.0.3(rollup@4.38.0) - '@rollup/plugin-inject': 5.0.5(rollup@4.38.0) - '@rollup/plugin-json': 6.1.0(rollup@4.38.0) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.38.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.38.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.38.0) - '@vercel/nft': 0.29.2(rollup@4.38.0)(supports-color@8.1.1) + '@rollup/plugin-alias': 5.1.1(rollup@4.50.2) + '@rollup/plugin-commonjs': 28.0.3(rollup@4.50.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.50.2) + '@rollup/plugin-json': 6.1.0(rollup@4.50.2) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.50.2) + '@rollup/plugin-replace': 6.0.2(rollup@4.50.2) + '@rollup/plugin-terser': 0.4.4(rollup@4.50.2) + '@vercel/nft': 0.29.2(rollup@4.50.2)(supports-color@8.1.1) archiver: 7.0.1 c12: 3.0.2(magicast@0.3.5) chokidar: 4.0.3 @@ -37109,11 +37063,11 @@ snapshots: hookable: 5.5.3 httpxy: 0.1.7 ioredis: 5.6.0(supports-color@8.1.1) - jiti: 2.4.2 + jiti: 2.5.1 klona: 2.0.6 knitwork: 1.2.0 listhen: 1.9.0 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 mime: 4.0.6 mlly: 1.7.4 @@ -37127,14 +37081,14 @@ snapshots: pkg-types: 2.1.0 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.38.0 - rollup-plugin-visualizer: 5.14.0(rollup@4.38.0) + rollup: 4.50.2 + rollup-plugin-visualizer: 5.14.0(rollup@4.50.2) scule: 1.3.0 semver: 7.7.2 serve-placeholder: 2.0.2 serve-static: 1.16.2(supports-color@8.1.1) source-map: 0.7.4 - std-env: 3.8.1 + std-env: 3.9.0 ufo: 1.5.4 ultrahtml: 1.5.3 uncrypto: 0.1.3 @@ -37497,12 +37451,12 @@ snapshots: mitt: 3.0.1 next: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) - nuqs@2.4.1(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + nuqs@2.4.1(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: mitt: 3.0.1 react: 18.3.1 optionalDependencies: - next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + next: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) react-router: 7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nuxt@4.1.2(@electric-sql/pglite@0.2.15)(@parcel/watcher@2.5.1)(@types/node@22.13.14)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2(@electric-sql/pglite@0.2.15)(drizzle-orm@0.44.2(@electric-sql/pglite@0.2.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.4)(pg@8.16.3)))(drizzle-orm@0.44.2(@electric-sql/pglite@0.2.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.4)(pg@8.16.3))(encoding@0.1.13)(eslint@8.57.0(supports-color@8.1.1))(ioredis@5.7.0(supports-color@8.1.1))(magicast@0.3.5)(rollup@4.50.2)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.20.3)(typescript@5.9.2)(vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.20.3)(yaml@2.8.1))(yaml@2.8.1): @@ -38294,8 +38248,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pidtree@0.3.1: {} @@ -38457,24 +38409,24 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-import@15.1.0(postcss@8.5.3): + postcss-import@15.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.5.3): + postcss-js@4.0.1(postcss@8.5.6): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.3 + postcss: 8.5.6 - postcss-load-config@4.0.1(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)): + postcss-load-config@4.0.1(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)): dependencies: lilconfig: 2.1.0 - yaml: 2.4.5 + yaml: 2.8.1 optionalDependencies: - postcss: 8.5.3 + postcss: 8.5.6 ts-node: 10.9.2(@types/node@22.13.14)(typescript@5.9.2) postcss-merge-longhand@7.0.5(postcss@8.5.6): @@ -38516,9 +38468,9 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-nested@6.0.1(postcss@8.5.3): + postcss-nested@6.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 6.0.13 postcss-normalize-charset@7.0.1(postcss@8.5.6): @@ -38613,7 +38565,7 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -39086,7 +39038,7 @@ snapshots: react-markdown@10.1.0(@types/react@18.3.3)(react@18.3.1)(supports-color@8.1.1): dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/react': 18.3.3 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6(supports-color@8.1.1) @@ -39628,7 +39580,7 @@ snapshots: remark-frontmatter@5.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-frontmatter: 2.0.1(supports-color@8.1.1) micromark-extension-frontmatter: 2.0.0 unified: 11.0.5 @@ -39646,7 +39598,7 @@ snapshots: remark-gfm@4.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0(supports-color@8.1.1) micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0(supports-color@8.1.1) @@ -39657,7 +39609,7 @@ snapshots: remark-html@16.0.1: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 hast-util-sanitize: 5.0.0 hast-util-to-html: 9.0.0 mdast-util-to-hast: 13.2.0 @@ -39665,7 +39617,7 @@ snapshots: remark-math@6.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-math: 3.0.0(supports-color@8.1.1) micromark-extension-math: 3.0.0 unified: 11.0.5 @@ -39674,12 +39626,12 @@ snapshots: remark-mdx-frontmatter@4.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 estree-util-is-identifier-name: 3.0.0 estree-util-value-to-estree: 3.3.3 toml: 3.0.0 unified: 11.0.5 - yaml: 2.4.5 + yaml: 2.8.1 remark-mdx@2.3.0(supports-color@8.1.1): dependencies: @@ -39705,7 +39657,7 @@ snapshots: remark-parse@11.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) micromark-util-types: 2.0.0 unified: 11.0.5 @@ -39722,7 +39674,7 @@ snapshots: remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 @@ -39735,7 +39687,7 @@ snapshots: remark-stringify@11.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 unified: 11.0.5 @@ -39750,7 +39702,7 @@ snapshots: remark@15.0.1(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 remark-parse: 11.0.0(supports-color@8.1.1) remark-stringify: 11.0.0 unified: 11.0.5 @@ -39871,19 +39823,19 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.1 - rollup-plugin-visualizer@5.14.0(rollup@4.38.0): + rollup-plugin-visualizer@5.14.0(rollup@4.50.2): dependencies: open: 8.4.2 - picomatch: 4.0.2 + picomatch: 4.0.3 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.38.0 + rollup: 4.50.2 rollup-plugin-visualizer@6.0.3(rollup@4.50.2): dependencies: open: 8.4.2 - picomatch: 4.0.2 + picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: @@ -39944,7 +39896,7 @@ snapshots: router@2.2.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -40118,7 +40070,7 @@ snapshots: send@1.2.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -40411,7 +40363,7 @@ snapshots: dependencies: '@kwsites/file-exists': 1.1.1(supports-color@8.1.1) '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -40423,7 +40375,7 @@ snapshots: simple-websocket@9.1.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) queue-microtask: 1.2.3 randombytes: 2.1.0 readable-stream: 3.6.2 @@ -40489,7 +40441,7 @@ snapshots: socks-proxy-agent@6.2.1(supports-color@8.1.1): dependencies: agent-base: 6.0.2(supports-color@8.1.1) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -40497,7 +40449,7 @@ snapshots: socks-proxy-agent@8.0.3(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -40903,7 +40855,7 @@ snapshots: sucrase@3.34.0: dependencies: - '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 glob: 7.1.6 lines-and-columns: 1.2.4 @@ -41026,17 +40978,19 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.3 - postcss-import: 15.1.0(postcss@8.5.3) - postcss-js: 4.0.1(postcss@8.5.3) - postcss-load-config: 4.0.1(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) - postcss-nested: 6.0.1(postcss@8.5.3) + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.0.1(postcss@8.5.6) + postcss-load-config: 4.0.1(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) + postcss-nested: 6.0.1(postcss@8.5.6) postcss-selector-parser: 6.0.13 resolve: 1.22.10 sucrase: 3.34.0 transitivePeerDependencies: - ts-node + tailwindcss@4.1.13: {} + tapable@2.2.1: {} tar-fs@2.1.3: @@ -41183,8 +41137,8 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 tinyglobby@0.2.15: dependencies: @@ -41652,14 +41606,14 @@ snapshots: escape-string-regexp: 5.0.0 estree-walker: 3.0.3 local-pkg: 1.1.1 - magic-string: 0.30.17 + magic-string: 0.30.19 mlly: 1.7.4 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 pkg-types: 1.3.1 scule: 1.3.0 strip-literal: 3.0.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 unplugin: 2.2.2 unplugin-utils: 0.2.4 @@ -41802,7 +41756,7 @@ snapshots: unplugin-utils@0.2.4: dependencies: pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 unplugin-utils@0.3.0: dependencies: @@ -41914,7 +41868,7 @@ snapshots: unwasm@0.3.9: dependencies: knitwork: 1.2.0 - magic-string: 0.30.17 + magic-string: 0.30.19 mlly: 1.7.4 pathe: 1.1.2 pkg-types: 1.3.1 @@ -42220,7 +42174,7 @@ snapshots: vite-node@3.0.0-beta.2(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 1.1.2 vite: 6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) @@ -42390,11 +42344,11 @@ snapshots: vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): dependencies: esbuild: 0.25.2 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.38.0 - tinyglobby: 0.2.14 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.2 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.14 fsevents: 2.3.3 @@ -42407,11 +42361,11 @@ snapshots: vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1): dependencies: esbuild: 0.25.2 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.38.0 - tinyglobby: 0.2.14 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.2 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.14 fsevents: 2.3.3 @@ -42424,11 +42378,11 @@ snapshots: vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.20.3)(yaml@2.8.1): dependencies: esbuild: 0.25.2 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.38.0 - tinyglobby: 0.2.14 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.2 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.14 fsevents: 2.3.3 From b08baacb272fd92bb107288cc3db71873eaaccf1 Mon Sep 17 00:00:00 2001 From: Yorvi <56038241+YorviArias@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:09:40 -0400 Subject: [PATCH 5/5] add myself to humans.txt (#39130) Co-authored-by: Yorvi Arias --- apps/docs/public/humans.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index 7c7cfb3d29884..7aed925d2dbd5 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -140,6 +140,7 @@ Tyler Fontaine Tyler Shukert TzeYiing L Wen Bo Xie +Yorvi Arias Yuliya Marinova Yuri Santana ____________