From 143f141e0f4be423e4eb5aab222e8ad1be4bb2c5 Mon Sep 17 00:00:00 2001 From: Jeremias Menichelli Date: Mon, 31 Aug 2026 16:55:04 +0200 Subject: [PATCH] feat: initial kb scaffolding (#49601) --- apps/kb/.gitignore | 24 + apps/kb/AGENTS.md | 36 + apps/kb/CLAUDE.md | 1 + apps/kb/README.md | 46 + apps/kb/astro.config.mjs | 47 + apps/kb/package.json | 32 + apps/kb/public/favicon/apple-icon-114x114.png | Bin 0 -> 1525 bytes apps/kb/public/favicon/apple-icon-120x120.png | Bin 0 -> 1557 bytes apps/kb/public/favicon/apple-icon-144x144.png | Bin 0 -> 1968 bytes apps/kb/public/favicon/apple-icon-152x152.png | Bin 0 -> 2091 bytes apps/kb/public/favicon/apple-icon-57x57.png | Bin 0 -> 840 bytes apps/kb/public/favicon/apple-icon-60x60.png | Bin 0 -> 913 bytes apps/kb/public/favicon/apple-icon-72x72.png | Bin 0 -> 1033 bytes apps/kb/public/favicon/apple-icon-76x76.png | Bin 0 -> 1083 bytes apps/kb/public/favicon/favicon-128.png | Bin 0 -> 1978 bytes apps/kb/public/favicon/favicon-16x16.png | Bin 0 -> 341 bytes apps/kb/public/favicon/favicon-180x180.png | Bin 0 -> 2481 bytes apps/kb/public/favicon/favicon-196x196.png | Bin 0 -> 3032 bytes apps/kb/public/favicon/favicon-32x32.png | Bin 0 -> 568 bytes apps/kb/public/favicon/favicon-48x48.png | Bin 0 -> 4769 bytes apps/kb/public/favicon/favicon-96x96.png | Bin 0 -> 1330 bytes apps/kb/public/favicon/favicon.ico | Bin 0 -> 1150 bytes apps/kb/public/supabase-dark.svg | 23 + apps/kb/public/supabase-light.svg | 23 + apps/kb/src/assets/astro.svg | 1 + apps/kb/src/assets/background.svg | 1 + apps/kb/src/components/Header.tsx | 20 + apps/kb/src/components/Hero.tsx | 17 + apps/kb/src/components/Logo.tsx | 31 + apps/kb/src/components/Nav.tsx | 78 ++ apps/kb/src/components/ThemeToggle.tsx | 65 + apps/kb/src/env.d.ts | 1 + apps/kb/src/layouts/Layout.astro | 88 ++ apps/kb/src/pages/index.astro | 8 + apps/kb/src/styles/globals.css | 74 ++ apps/kb/tsconfig.json | 9 + apps/kb/turbo.jsonc | 11 + apps/kb/vercel.json | 3 + package.json | 2 + pnpm-lock.yaml | 1123 ++++++++++++++++- pnpm-workspace.yaml | 2 + 41 files changed, 1751 insertions(+), 15 deletions(-) create mode 100644 apps/kb/.gitignore create mode 100644 apps/kb/AGENTS.md create mode 120000 apps/kb/CLAUDE.md create mode 100644 apps/kb/README.md create mode 100644 apps/kb/astro.config.mjs create mode 100644 apps/kb/package.json create mode 100644 apps/kb/public/favicon/apple-icon-114x114.png create mode 100644 apps/kb/public/favicon/apple-icon-120x120.png create mode 100644 apps/kb/public/favicon/apple-icon-144x144.png create mode 100644 apps/kb/public/favicon/apple-icon-152x152.png create mode 100644 apps/kb/public/favicon/apple-icon-57x57.png create mode 100644 apps/kb/public/favicon/apple-icon-60x60.png create mode 100644 apps/kb/public/favicon/apple-icon-72x72.png create mode 100644 apps/kb/public/favicon/apple-icon-76x76.png create mode 100644 apps/kb/public/favicon/favicon-128.png create mode 100644 apps/kb/public/favicon/favicon-16x16.png create mode 100644 apps/kb/public/favicon/favicon-180x180.png create mode 100644 apps/kb/public/favicon/favicon-196x196.png create mode 100644 apps/kb/public/favicon/favicon-32x32.png create mode 100644 apps/kb/public/favicon/favicon-48x48.png create mode 100644 apps/kb/public/favicon/favicon-96x96.png create mode 100644 apps/kb/public/favicon/favicon.ico create mode 100644 apps/kb/public/supabase-dark.svg create mode 100644 apps/kb/public/supabase-light.svg create mode 100644 apps/kb/src/assets/astro.svg create mode 100644 apps/kb/src/assets/background.svg create mode 100644 apps/kb/src/components/Header.tsx create mode 100644 apps/kb/src/components/Hero.tsx create mode 100644 apps/kb/src/components/Logo.tsx create mode 100644 apps/kb/src/components/Nav.tsx create mode 100644 apps/kb/src/components/ThemeToggle.tsx create mode 100644 apps/kb/src/env.d.ts create mode 100644 apps/kb/src/layouts/Layout.astro create mode 100644 apps/kb/src/pages/index.astro create mode 100644 apps/kb/src/styles/globals.css create mode 100644 apps/kb/tsconfig.json create mode 100644 apps/kb/turbo.jsonc create mode 100644 apps/kb/vercel.json diff --git a/apps/kb/.gitignore b/apps/kb/.gitignore new file mode 100644 index 00000000000..016b59ea143 --- /dev/null +++ b/apps/kb/.gitignore @@ -0,0 +1,24 @@ +# build output +dist/ + +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ diff --git a/apps/kb/AGENTS.md b/apps/kb/AGENTS.md new file mode 100644 index 00000000000..d2093805665 --- /dev/null +++ b/apps/kb/AGENTS.md @@ -0,0 +1,36 @@ +## Development + +When starting the dev server, run: + +``` +# From the root directory of the project +pnpm dev:kb + +# From the apps/kb directory +pnpm dev +``` + +## Build + +To run a full production build, run: + +``` +# From the root directory of the project +pnpm build:kb + +# From the apps/kb directory +pnpm build +``` + +## Documentation + +Full documentation: https://docs.astro.build + +Consult these guides before working on related tasks: + +- [Adding pages, dynamic routes, or middleware](https://docs.astro.build/en/guides/routing/) +- [Working with Astro components](https://docs.astro.build/en/basics/astro-components/) +- [Using React, Vue, Svelte, or other framework components](https://docs.astro.build/en/guides/framework-components/) +- [Adding or managing content](https://docs.astro.build/en/guides/content-collections/) +- [Adding styles or using Tailwind](https://docs.astro.build/en/guides/styling/) +- [Supporting multiple languages](https://docs.astro.build/en/guides/internationalization/) diff --git a/apps/kb/CLAUDE.md b/apps/kb/CLAUDE.md new file mode 120000 index 00000000000..47dc3e3d863 --- /dev/null +++ b/apps/kb/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/apps/kb/README.md b/apps/kb/README.md new file mode 100644 index 00000000000..414a13a6619 --- /dev/null +++ b/apps/kb/README.md @@ -0,0 +1,46 @@ +# Astro Starter Kit: Basics + +```sh +npm create astro@latest -- --template basics +``` + +> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! + +## 🚀 Project Structure + +Inside of your Astro project, you'll see the following folders and files: + +```text +/ +├── public/ +│ └── favicon.svg +├── src +│   ├── assets +│   │   └── astro.svg +│   ├── components +│   │   └── Welcome.astro +│   ├── layouts +│   │   └── Layout.astro +│   └── pages +│   └── index.astro +└── package.json +``` + +To learn more about the folder structure of an Astro project, refer to [our guide on project structure](https://docs.astro.build/en/basics/project-structure/). + +## 🧞 Commands + +All commands are run from the root of the project, from a terminal: + +| Command | Action | +| :------------------------ | :----------------------------------------------- | +| `npm install` | Installs dependencies | +| `npm run dev` | Starts local dev server at `localhost:4321` | +| `npm run build` | Build your production site to `./dist/` | +| `npm run preview` | Preview your build locally, before deploying | +| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | +| `npm run astro -- --help` | Get help using the Astro CLI | + +## 👀 Want to learn more? + +Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). diff --git a/apps/kb/astro.config.mjs b/apps/kb/astro.config.mjs new file mode 100644 index 00000000000..23662b95a67 --- /dev/null +++ b/apps/kb/astro.config.mjs @@ -0,0 +1,47 @@ +// @ts-check +import { createRequire } from 'node:module' +import path from 'node:path' + +import react from '@astrojs/react' +import tailwindcss from '@tailwindcss/vite' +import { defineConfig } from 'astro/config' + +// Absolute dir of lodash-es, for the SSR-only lodash alias below (same fix +// apps/studio/vite.config.ts uses). `packages/ui`'s clipboard util does +// `import { noop } from 'lodash'` — under Vite's dev-mode SSR module runner, +// that CJS import evaluates as pure ESM (no module/exports/require), so the +// named import binds to undefined. lodash-es is real ESM and the same +// version, so swapping it in for SSR only (client bundles are untouched) +// fixes it without touching the shared `ui` package. +const lodashEsDir = path.dirname(createRequire(import.meta.url).resolve('lodash-es/package.json')) + +// Not typed as `import('vite').Plugin` — kb's own `vite` (from the pnpm +// catalog) and Astro's internal vite dependency resolve to distinct type +// instances, and comparing them blows TS's structural-comparison stack depth. +const ssrLodashEs = { + name: 'kb-ssr-lodash-es', + enforce: 'pre', + /** + * @param {string} source + * @param {string | undefined} _importer + * @param {{ ssr?: boolean } | undefined} options + */ + resolveId(source, _importer, options) { + if (!options?.ssr) return + if (source === 'lodash') return path.join(lodashEsDir, 'lodash.js') + const subpath = source.match(/^lodash\/(.+?)(\.js)?$/) + if (subpath) return path.join(lodashEsDir, `${subpath[1]}.js`) + }, +} + +// https://astro.build/config +export default defineConfig({ + base: '/kb', + integrations: [react()], + vite: { + ssr: { + noExternal: ['lodash'], + }, + plugins: [tailwindcss(), ssrLodashEs], + }, +}) diff --git a/apps/kb/package.json b/apps/kb/package.json new file mode 100644 index 00000000000..109857da3d7 --- /dev/null +++ b/apps/kb/package.json @@ -0,0 +1,32 @@ +{ + "name": "kb", + "type": "module", + "version": "0.0.1", + "engines": { + "node": ">=22.12.0" + }, + "scripts": { + "dev": "astro dev --port 3008", + "build": "astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/react": "^6.0.4", + "astro": "^7.2.6", + "react": "catalog:", + "react-dom": "catalog:", + "ui": "workspace:*" + }, + "devDependencies": { + "@tailwindcss/vite": "4.2.4", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "config": "workspace:*", + "lodash-es": "catalog:", + "tailwindcss": "catalog:" + }, + "allowScripts": { + "esbuild": true + } +} diff --git a/apps/kb/public/favicon/apple-icon-114x114.png b/apps/kb/public/favicon/apple-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..396cee8516afe835bfb140b475f610245b6b68b2 GIT binary patch literal 1525 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 Hu0mjf)w1ib literal 0 HcmV?d00001 diff --git a/apps/kb/public/favicon/apple-icon-144x144.png b/apps/kb/public/favicon/apple-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..144190d197673d6d534fe8df78bd7269eedcbe08 GIT binary patch literal 1968 zcmah~do&Y@AK$~Ytzj6ASi_P?tre0@8)J68cEfe)!LQ5BqjU@9Rc01ajCsplD79<- zbZf2dP-N}rwM-Y4XDu}3IpkTc&hOvfIlu2Y-{<+9@ArJZ=X=ig8pDgG0XKvL000fT z8};a>&-t!U@TTo7*2x3_fW{0DUzg2P@Bax3h5Db6|JFA)Hgt7$CnqPTr>E!V=f}s# z*VosTO6BP2=FMg~lF4MRU%!6%@L^3&4WG|%ZEdx+wQXo<5R1hEfuO3Y3X8>JFqr1%W~o&A;>8Q0 zP>4pOB@)T==g&nVQDtRiU0vPNr%$b{tSl@na5x;1NGvHSxpnInl}e>hD0z8#`}gn9 z$jCT%?i`E73JMBhFc{g{+41r5Mn*=Vp`mm--PP4KEG*2=&(GiAzv{|X{qGBkIqKyD zSe_daJ(#HHrkoD2F*h+p(w?~?E!9^H0RVMtI+fxZ*Ecl~?*9>wQV&)eXpS|9)fI}M zE#{AQn_{ms`5zoRHZ}~LkDY;chX=}X4oKEc$fKj8^Nwl0ywlRL6f2M-zD3CNKd%mD z)2;irw-@fjr|$_Uw0m;zP~Ao4koDS&3$RUa#cGp1jfeb%y#*HvxRa(ChX6G znq-lg510m$fgna+TM;R9kg?L zW6MduABvPLQ+<2Yiq?SF%|XQn`)pxV?SWLrZAm06VhUN~PD+dotVOk5FuJamly1hz zQQ8*?x?O}RjJb}jA_|vgnKMau!^k^_^~gp_R!t1p0Hny3!EA;*ydCl3y*Co6$j8rQ zYM=(w96*4|G1%0~n?CK?9&=pjhR4&msa8eG)L%RU5ChL;K_SUfZ8 z`$dh)sU&|qvNZ&e$`CX=6LOk-nt0Bf#A-7B?hdv$!U30QUA0gK;}ws*fPADuSpJ@0 zu|%#mi!09m3wU|5ovUoLPW>%q`HI09MB&})M%i{-Lp$+h+9iik{XELt_SCbS8mpXx zU#dTp^dU)>kPGjNvQijANp9+d&-Ta3_sN8o^ZwLEbl3;>NcsJkKd)oPseb#AL6N4x z2;ch@Ronxd)(}!l3i4zfU%c^p4s7GKz_jElJyaQ5XP~8hsNn}tG$b^8f$1e2#xz8v zB&8DYnup(jYwNkT)Q5^)aJGEq9)X}45gN-hQmWM1TMvrw7;~-$q^)1L)df5(!JLN} zw?R}_7KrJ)4*YU9S+@sxcqJ^Zf;>SAs&#F|LX#6{rNPI~EYE@Lo8kF!jhIv#O)<_y zqY8-odq8u}a)n%VAIr>4t<8$geW{&AlY(4EKrn1Pk~Q@0K)U5?lN>rXWeL@Yvym1<; zLz*DXWY$NnlOT)>mE{8U;C)Ps7_z7_M4rgwwZf?o zU%m#((M9es`AokeU6Zeio{3MKF6?%Ojre@2e|t=9@`VA^b9M}sJ5#z`}_LjA7%?d}aWX1vh@|^Uf7bWi|#CY?w0O&4W)EcK?)<2E@ed7QC literal 0 HcmV?d00001 diff --git a/apps/kb/public/favicon/apple-icon-152x152.png b/apps/kb/public/favicon/apple-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..cb261b8bba09fbbae67a0821fe974a6c592ce156 GIT binary patch literal 2091 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 B06zc# literal 0 HcmV?d00001 diff --git a/apps/kb/public/favicon/favicon-128.png b/apps/kb/public/favicon/favicon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..4fab8e34978e7315d09c1a652e2a578e8d071d0f GIT binary patch literal 1978 zcmV;r2SxaaP)C0003pP)t-s92^_~ z000^q8XO!P92^`O85tWJ8yp-Q8yg!O92^}T9UL4S92^`R92^@P8yg!N8X6iJ8X6iJ z8XFrM8yg!M8X6lL8yp-Q78Vv99321u{{R30A0Hp&gwp|=;7hv z-QC^p?(XvP^55Uz_xJbo^z(?(9jwh8W$HA*Votm z{r&m*`343C0s;d2`}?-Gwh#~yu&}VJtE&_g6v4s4_V)J0#l_3Z%fG+B&CSin$H%j? zv%|x~sHmt74Gq1$y}G)(xVX5brKO^xqMn|f$;ru^o1476ysfRRcXxM`l$3;ognoX0 zJ3BjZadB*HY-MF-B_$=8n3zLDLntUHii(PlkB?hhTT)U|EiElDFfh9IR!{%{02y>r zPE+RqF!k#OnBAWF)y%@cqK$}HDkvKiTijcf3f+SM00tgOL_t(|+U=W(R@y)mhAFOX zt!=g2+&i);YtRTm2oeEzMFqtT_uB3KU!jvl!(u~1&oDhbelPHUxpVK#=wW;>9{KQo z^v!1L>TXMfhi)8X(lj91Ty}@_i=~_Way*s6A{W6-zX8vsBeOZ zM49l75uuFvd_*Y2zF{I1pT`P33p@+7Ly23s2+(qwx>MjHKsBsZQFdX#M?k8o&Bgh1 zO_fLw_y|xLi@;bcS9{cej{wbL0}RfQIK!y|cnT&b1%)`mML@y@u&9X;knn2~EJ^|d zB)OUffdaIQdmvDN4ZuAJ6~Jp~VMWc7Kfp(T;suBlkP0*^Qb3Xm84xJI2A~E41*n4O z&_PiiqyYW^kpdF_S`{fk3)&nA6p%EmKsN{61?&N6z!U5ZNPtqj1fc@B03rq06(lB7 zK$6u(c$!MJOj_V0KsDTkKd>_Z0jl6P5Gg>6D@eafpb$#`PC&woWd{L7*+4ZY7+?ok z+P{EeUqPNEa(#WpxV*ePWi*@3bH@Gsw{K@>XSa<;)j#yGUfbO*t!y)oy~^6w`lcx| zGaC%Wl8HP(TvDaJ1gL_i;7H)?_E66+o#^?;8!Vs2FV3gpGl8(4znaLiVr;5fe**X& zoSD77ZOz|d-`|pN6d=Ex1Gq-14*>~(Ccv3+qtW*LM^^q^U^W;v3Si{Jj;eSUkYp_a zJqR8)%=NeGujjM%*YjHhauB65^(sKCxC6Zf4(0HUPZ|)#|JPibd=DS^m79uNNTNQUItS_1FUv z-hmr|-5P5^md^&@h}D15$Y%oW1%M0p0`?Weoj~a^f8F|iy#V2;F@uR^^BifSLc9rR zY6e^hluG6XU~NE=I1}h9z&4htHv#<)>WUaU2=08d!;2m zWeT*;AQK3EMXGocpfZWN6ew<+8_=ei&jbRUGkBqI!yW}xDdtk(plIf27Fh$@1u%~R zqXjRK5YGad7I!Idy#JWb1m?PD@XWdpd2PZ5xFWG}Y;J%|K<@x!6Ee<0J)a3wuu4fE z0)<~L1u7eMex$ntBAP1ocPqwIcLHk_Bi|~3wFyNZHlf5%q@*tan#Cr#Ah)%{29OoN z60nW|^CkrF-Ol$~0b0h3S{Qn=zLm+CE0AI>XygaY0_1aWib~%Cgi^$ty9H%OGPfP ze7=|#)Q3Y;|H`vp@eiNHKmBI-CkOfXecb<$+wuH=%*UP2?a%*z1BVN+${@NdApigX M07*qoM6N<$g5DE-!2kdN literal 0 HcmV?d00001 diff --git a/apps/kb/public/favicon/favicon-16x16.png b/apps/kb/public/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7d05a72096bbbe8116810db30032c3b81c7db140 GIT binary patch literal 341 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 O0AXyfs0M`pz5fEg=dTO^ literal 0 HcmV?d00001 diff --git a/apps/kb/public/favicon/favicon-196x196.png b/apps/kb/public/favicon/favicon-196x196.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0258526ae9c517ff687e2db4bce3d01e9e6041 GIT binary patch literal 3032 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 sY= z@ZrO&SFcW9o5pC-X^UQpZdBI|+e5s@JW)`~IA z+vvSa{)XA}noMWrhG!eIH*NoZ@AKSQ5&L}$CTMLqXJlF^8@b9ZhS@@LP1e4bN~PV literal 0 HcmV?d00001 diff --git a/apps/kb/public/favicon/favicon-48x48.png b/apps/kb/public/favicon/favicon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..40377a51b54a7a27eeca15f66335f59b370e8085 GIT binary patch literal 4769 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 rp-@ZF>?Y(`62`cjVUeKv42d!%fg>`jxot>SH zjg9v9_EM?T)6=u7t7~Xzh|A^DXtdhe+KP&boSdBO?ChYRpxD@0A0HnMhjZh`jkvft zGMO9}7DgZt3JVL_Y<6;TG9Hg#d10Szm;jv~6%h^AOtl&XhfVZNe6E_h)RR;hg+KxT ze-RoIc$7M!sXiP1-peNEikdn3Tgl^x*q*j>=D7sRz*y<2IlbNke|95;=J%;|%7Uad zayuvYRqHH{da~SqVyYL8$2c!tnHyE731(C?oM-u`Ih${8*AVFDXoguNp;`a;7Q~$Z z>u=v$b#c)V{i}4AB>mv)4%#)4p-Q_nXu%s0*Pp?|N>@kU1@k_&m|5I2J9!@A_GBZZ zw$}aysuQ(zDSYMjM@@*Z-Vu;yOwVMnD~Vtb!%toq^8t+3aO) zQ0NHVmAf-wD^pJEcTOHMVH`)gD)%tkA&Vp6*p8YWBr+j5%O$5+4B~(4dgJOVt~Jf! zzcTDOrJFtLpS|gy*U2}hv#4#>#0S_m__dUxTC_;*Q&;vWoIpDjwhbPo4GYK06<32n zLuGjA(g*m(Obtn-5cel6oO9{|X`-3#m4e*}Eqm;+WUXeny>qR>gI={&YpoqkMJTbt z`;?^q_W0Fqxz%EKRk=5)O3?ZeX-$AnuU^T;Nsx>Z+9NxOd!jq<_>Vs;S(|w$B!!lS zwo=9UFXM^;+a}n(L=v`L|)Ro)w^UwX`GJIO+%^p3B@)Zq;-0>ty?5TzA%+j05z#s>-C%g~ft6Gp6y z8dSM2T#NHa-<50bCup@yP5BkrOR8Vg(516edrQY5G7aAsa0q$;rG6>f{qgFtSMBiP z)9@d59%l?v12ZRTQ)QG*;mc24Z#_pfWY|)EAx%Y}X&^->a&LQ7r{50{2ZyHQCD2Iu zMau;Dl5=uiS~!#fvDYu;vsU<#&@erVq-()5L!cqvZFN4b>>2Kk@saQF9 zB=1;3D$%=15#M2M^vwoU&GUB!BfDS_Ys@<{rpgilW~3jSWJ7ES3hBp{Sw4;<0+H*p z;0~gU=)lPKkif2SKbdrZkKx4J7^DdicVGrpSBZtg96T3UN1wPEBNzo^>3f9@fq>Q6 zo}uG#m*|iKjDBQ;zHT0KrDucw>FeJMLB_NZ{he7B6|9fK*E&$7-9~ZY&5_iTLX7gOVO(eU{obbmxheGrBDA46DVb^rhX literal 0 HcmV?d00001 diff --git a/apps/kb/public/favicon/favicon.ico b/apps/kb/public/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..343ad561d7124831f651e4a8146f1f04bbf129b2 GIT binary patch literal 1150 zcmbtUyNbd<6rF|bwhXX zAC)Aag`ib9J9peHS&6RhCY+hfojK>;Im3jpC;oaojJGm-e`f5BF{W_v5RaVWykm^d zy}q0w#=HrILLVF^2Ob1*h-*B^bLP3pl_Uw#Xw

?(bkQh*&I!R;z_vE(gEge>a!* zL;PeiiOFPw!C-()CWAmAa8rYF_2#ndiqLiQD;y3ZpUByVllHM{kskpIr!HPY$yujh8D qLwQtHMYr2^-RtH0YhyZZ^7Y#MSN!T7xb)aXhq(W`zxIFNul* + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/kb/public/supabase-light.svg b/apps/kb/public/supabase-light.svg new file mode 100644 index 00000000000..60cbc71dc7c --- /dev/null +++ b/apps/kb/public/supabase-light.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/kb/src/assets/astro.svg b/apps/kb/src/assets/astro.svg new file mode 100644 index 00000000000..8cf8fb0c7da --- /dev/null +++ b/apps/kb/src/assets/astro.svg @@ -0,0 +1 @@ + diff --git a/apps/kb/src/assets/background.svg b/apps/kb/src/assets/background.svg new file mode 100644 index 00000000000..4b2be0ac0e4 --- /dev/null +++ b/apps/kb/src/assets/background.svg @@ -0,0 +1 @@ + diff --git a/apps/kb/src/components/Header.tsx b/apps/kb/src/components/Header.tsx new file mode 100644 index 00000000000..5f7c344da07 --- /dev/null +++ b/apps/kb/src/components/Header.tsx @@ -0,0 +1,20 @@ +import { Logo } from './Logo' +import { Nav } from './Nav' +import { ThemeToggle } from './ThemeToggle' + +// Bare-bones port of apps/docs' TopNavBar — logo, nav, and theme toggle, each +// split into their own component (Logo.tsx, Nav.tsx, ThemeToggle.tsx). No +// search, no user menu, no dashboard link — kb doesn't have any of that yet. +function Header() { + return ( +

+
+ +
+ +
+ ) +} + +export { Header } diff --git a/apps/kb/src/components/Hero.tsx b/apps/kb/src/components/Hero.tsx new file mode 100644 index 00000000000..8da35007604 --- /dev/null +++ b/apps/kb/src/components/Hero.tsx @@ -0,0 +1,17 @@ +// Ported from apps/docs/components/HomePageCover.tsx — just the title + intro +// copy (rebranded for kb), without the animated logo or the CLI/AI setup +// prompt panel (docs-specific, feature-flagged, and not something kb has yet). +function Hero() { + return ( +
+
+

Supabase Knowledge Base

+

+ In-depth guides, tutorials, and explainers for best practices for Supabase databases. +

+
+
+ ) +} + +export { Hero } diff --git a/apps/kb/src/components/Logo.tsx b/apps/kb/src/components/Logo.tsx new file mode 100644 index 00000000000..4e9a308302b --- /dev/null +++ b/apps/kb/src/components/Logo.tsx @@ -0,0 +1,31 @@ +// Same wordmark swap apps/docs' HeaderLogo uses (light/dark SVG pair from +// apps/docs/public), plus the "KB" mono label docs uses "DOCS" for. +// +// The SVGs live in public/, which Astro's `base` config doesn't rewrite on +// its own, so the base is prepended by hand — see +// https://docs.astro.build/en/reference/configuration-reference/#base +function Logo() { + const base = import.meta.env.BASE_URL + + return ( + + Supabase logo + Supabase logo + KB + + ) +} + +export { Logo } diff --git a/apps/kb/src/components/Nav.tsx b/apps/kb/src/components/Nav.tsx new file mode 100644 index 00000000000..268a5953a1e --- /dev/null +++ b/apps/kb/src/components/Nav.tsx @@ -0,0 +1,78 @@ +import { + cn, + NavigationMenu, + NavigationMenuContent, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, + navigationMenuTriggerStyle, +} from 'ui' + +/** + * Hard-codding links in here for now until we have actual content. Might be worth putting these arrays in their on data file too. + */ +const topics = [ + { label: 'Troubleshooting', href: '#' }, + { label: 'Migrations', href: '#' }, + { label: 'Comparisons', href: '#' }, +] + +const resources = [ + { label: 'Status', href: 'https://status.supabase.com' }, + { label: 'Changelog', href: 'https://supabase.com/changelog' }, + { label: 'Docs', href: 'https://supabase.com/docs' }, +] + +const menus = [ + { label: 'Topics', items: topics }, + { label: 'Resources', items: resources }, +] + +const triggerClass = + 'h-(--header-height) p-2 border-transparent font-normal rounded-none text-foreground-light hover:text-foreground data-open:text-foreground! border-0 focus-ring focus-visible:text-foreground h-full focus-visible:rounded-sm shadow-none!' +// docs gates this at `md:absolute` (its own base component class) because its +// nav is hidden entirely below `lg` in favor of a separate mobile menu. kb +// doesn't have that split — the nav is always visible — so `absolute` is +// unconditional here; without it, an open menu pushes its siblings around +// below the `md` breakpoint instead of overlaying them. +const contentClass = + 'absolute top-[calc(100%+4px)]! min-w-56 max-h-[calc(100vh-4rem)] border-y w-screen md:w-64 overflow-hidden overflow-y-auto rounded-none md:rounded-md md:border border-overlay bg-overlay text-foreground-light shadow-md duration-0!' +const itemClass = + 'w-full flex h-8 items-center text-foreground-light text-sm hover:text-foreground select-none rounded-md p-2 leading-none no-underline focus-ring focus-visible:text-foreground' + +function Nav() { + return ( +
+ + + {menus.map((menu) => ( + + + {menu.label} + + +
+ {menu.items.map((item) => ( + + + {item.label} + + + ))} +
+
+
+ ))} +
+
+
+ ) +} + +export { Nav } diff --git a/apps/kb/src/components/ThemeToggle.tsx b/apps/kb/src/components/ThemeToggle.tsx new file mode 100644 index 00000000000..a09b8163bda --- /dev/null +++ b/apps/kb/src/components/ThemeToggle.tsx @@ -0,0 +1,65 @@ +// Same sun/moon icon apps/docs' mobile menu ThemeToggle uses (ui-patterns/ThemeToggle), +// but a plain binary light/dark switch — no system option, no dropdown, no next-themes. +function toggleTheme() { + const isDark = document.documentElement.getAttribute('data-theme') !== 'light' + const next = isDark ? 'light' : 'dark' + document.documentElement.setAttribute('data-theme', next) + try { + localStorage.setItem('theme', next) + } catch { + // localStorage unavailable (e.g. private browsing) — theme just won't persist. + } +} + +// Theme is read/written as the `data-theme` attribute on (matching +// next-themes' default `attribute="data-theme"`, which is what the shared +// theme CSS and Tailwind's `dark:` variant key off — see +// packages/config/css/variants.css). The no-flash script in Layout.astro sets +// the initial attribute before paint; this just flips it on click. The icons +// themselves don't need React state — which one is visible is driven purely +// by the `dark:` CSS variant, so there's no hydration-mismatch risk to guard +// against here. +function ThemeToggle() { + return ( + + ) +} + +export { ThemeToggle } diff --git a/apps/kb/src/env.d.ts b/apps/kb/src/env.d.ts new file mode 100644 index 00000000000..f964fe0cffd --- /dev/null +++ b/apps/kb/src/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/kb/src/layouts/Layout.astro b/apps/kb/src/layouts/Layout.astro new file mode 100644 index 00000000000..fc04f9e14e5 --- /dev/null +++ b/apps/kb/src/layouts/Layout.astro @@ -0,0 +1,88 @@ +--- +import { Header } from '../components/Header' +import '../styles/globals.css' +--- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Supabase Knowledge Base + + +
+ + + + + diff --git a/apps/kb/src/pages/index.astro b/apps/kb/src/pages/index.astro new file mode 100644 index 00000000000..d860bb804ea --- /dev/null +++ b/apps/kb/src/pages/index.astro @@ -0,0 +1,8 @@ +--- +import { Hero } from '../components/Hero' +import Layout from '../layouts/Layout.astro' +--- + + + + diff --git a/apps/kb/src/styles/globals.css b/apps/kb/src/styles/globals.css new file mode 100644 index 00000000000..bd5c11ac068 --- /dev/null +++ b/apps/kb/src/styles/globals.css @@ -0,0 +1,74 @@ +@import 'config/tailwind.config.css'; + +@source '../pages/**/*.astro'; +@source '../components/**/*.{astro,tsx}'; +@source '../layouts/**/*.astro'; +@source './../../../../packages/ui/src/**/*.{tsx,ts,js}'; +@source './../../../../packages/ui-patterns/src/**/*.{tsx,ts,js}'; + +/* apps/docs loads Inter/Manrope via next/font, which injects these two + * variables as inline styles on . kb loads the same fonts via the + * tags in Layout.astro instead, so they're declared here as plain + * custom properties rather than next/font output. */ +:root { + --font-inter: 'Inter', system-ui, sans-serif; + --font-manrope: 'Manrope', system-ui, sans-serif; +} + +/* Same @theme block as apps/docs/styles/globals.css. */ +@theme inline { + --font-sans: + var(--font-inter), Inter, Helvetica Neue, Helvetica, ui-sans-serif, system-ui, sans-serif; + --font-heading: var(--font-manrope, var(--font-sans)); + --font-mono: 'Source Code Pro', ui-monospace, Menlo, monospace; +} + +/* Same type scale as apps/docs/styles/globals.css — without this, utilities + * like `text-sm` resolve to Tailwind's default 0.875rem instead of docs' + * 0.8125rem, so text using the same class names still renders at different + * sizes than docs. */ +@theme { + --text-sm: 0.8125rem; + --text-base: 0.9375rem; + --text-lg: 1rem; + --text-xl: 1.125rem; + --text-2xl: 1.375rem; + --text-3xl: 1.75rem; + --text-4xl: 2.125rem; + --text-5xl: 2.875rem; + --text-6xl: 3.625rem; + --text-7xl: 4.375rem; + --text-8xl: 5.875rem; + --text-9xl: 7.875rem; + --font-weight-normal: 450; +} + +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Same rule as apps/docs/styles/globals.css: headings use font-heading + * (Manrope) by default instead of the body's font-sans (Inter). */ +h1:not(.font-mono), +h2:not(.font-mono), +h3:not(.font-mono), +h4:not(.font-mono), +h5:not(.font-mono), +h6:not(.font-mono), +.h1:not(.font-mono), +.h2:not(.font-mono), +.h3:not(.font-mono), +.h4:not(.font-mono), +.h5:not(.font-mono), +.h6:not(.font-mono) { + @apply font-heading font-semibold; +} + +*, +::after, +::before, +::backdrop, +::file-selector-button { + border-color: var(--border-default, currentColor); +} diff --git a/apps/kb/tsconfig.json b/apps/kb/tsconfig.json new file mode 100644 index 00000000000..2424dae7d70 --- /dev/null +++ b/apps/kb/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "astro/tsconfigs/strict", + "compilerOptions": { + "jsx": "react-jsx", + "jsxImportSource": "react" + }, + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} diff --git a/apps/kb/turbo.jsonc b/apps/kb/turbo.jsonc new file mode 100644 index 00000000000..53b4a6210ff --- /dev/null +++ b/apps/kb/turbo.jsonc @@ -0,0 +1,11 @@ +{ + "$schema": "./../../node_modules/turbo/schema.json", + "extends": ["//"], + "tasks": { + "build": { + "dependsOn": ["^build"], + "inputs": ["$TURBO_DEFAULT$"], + "outputs": ["dist/**"], + }, + }, +} diff --git a/apps/kb/vercel.json b/apps/kb/vercel.json new file mode 100644 index 00000000000..8df7e53755b --- /dev/null +++ b/apps/kb/vercel.json @@ -0,0 +1,3 @@ +{ + "buildCommand": "pnpm build" +} diff --git a/package.json b/package.json index 0ca9b3f9aa1..aa441729e00 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,13 @@ "build:studio:docker:tanstack": "docker build . -f apps/studio/Dockerfile --target production -t supabase-studio:local-tanstack --build-arg NEXT_PUBLIC_STUDIO_AUTH_MODE=supabase --build-arg STUDIO_FRAMEWORK=tanstack --no-cache", "build:design-system": "turbo run build --filter=design-system", "build:docs": "turbo run build --filter=docs", + "build:kb": "turbo run build --filter=kb", "clean": "turbo run clean --parallel && rimraf -G .turbo/cache && pnpm purge", "dev": "turbo run dev --parallel", "dev:studio": "turbo run dev --filter=studio --parallel", "dev:studio-local": "pnpm setup:cli && NODE_ENV=test MODE=test pnpm --prefix ./apps/studio dev", "dev:docs": "turbo run dev --filter=docs --parallel", + "dev:kb": "turbo run dev --filter=kb --parallel", "dev:www": "turbo run dev --filter=www --parallel", "dev:design-system": "turbo run dev --filter=design-system --parallel", "lint": "turbo run lint", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 331ef4c57f2..b772ab3ff07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -733,6 +733,43 @@ importers: specifier: 'catalog:' version: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + apps/kb: + dependencies: + '@astrojs/react': + specifier: ^6.0.4 + version: 6.0.4(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(esbuild@0.28.1)(jiti@2.7.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + astro: + specifier: ^7.2.6 + version: 7.2.9(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@22.13.14)(aws4fetch@1.0.20)(db0@0.3.4(@electric-sql/pglite@0.4.5))(ioredis@5.10.1(supports-color@8.1.1))(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + react: + specifier: 'catalog:' + version: 19.2.6 + react-dom: + specifier: 'catalog:' + version: 19.2.6(react@19.2.6) + ui: + specifier: workspace:* + version: link:../../packages/ui + devDependencies: + '@tailwindcss/vite': + specifier: 4.2.4 + version: 4.2.4(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + '@types/react': + specifier: 'catalog:' + version: 19.2.14 + '@types/react-dom': + specifier: 'catalog:' + version: 19.2.3(@types/react@19.2.14) + config: + specifier: workspace:* + version: link:../../packages/config + lodash-es: + specifier: ^4.18.1 + version: 4.18.1 + tailwindcss: + specifier: 'catalog:' + version: 4.2.4 + apps/learn: dependencies: common: @@ -3043,6 +3080,94 @@ packages: '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@astrojs/compiler-binding-darwin-arm64@0.4.0': + resolution: {integrity: sha512-ZVUwHundaQyFNjE6uoa0usaC0WOCitDCLS/4mdb4rOiJXwVUuKJBMxI5WMzXLWmamsXtK/Z//ifLXvV5Yeh4Hw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@astrojs/compiler-binding-darwin-x64@0.4.0': + resolution: {integrity: sha512-FI6G8AY8u6fR1SI/QRR5yGMwtvZwP34CDmZpZ5HwJGa50UM1VISTLhqkhV4a476pmgd25X1Aur2dqw6hUnrlKA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': + resolution: {integrity: sha512-lB9gLFJK7m82EnjaU8nlRBEfcwGNeHidW3sSjODTUjMNaoewVuUz9fwwdY5M4jiSXIqWLH3yl6TX8FTDKA74Sw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': + resolution: {integrity: sha512-HPbvWqbxFxyaoQJhLxCaSjtYBx9KBo7JGVzEFZCmMl968a2PsSH0UfiODYgYPXofTOIsIH2aoCcrHXML0IA3ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': + resolution: {integrity: sha512-tQKolMxoJ/+0AmLWm1PmJ/i+z3i10ZU1bNuVjEDulCf48azEMtUNjTZgHJ5MPtpYRNc7dlETr8QujUfduzoC7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': + resolution: {integrity: sha512-5v5YymudsxMHp3NBLCS8BUlu5CRqeLtWD9cKS/4nIhIEHCbpz9okmVV6I0HWqmBAPhWYcDa3vw/vltYPrOQCTA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@astrojs/compiler-binding-wasm32-wasi@0.4.0': + resolution: {integrity: sha512-m/phuH3x3PREvv1OnkM44NoPh4MatUadix1fB1u5SvMLCyDTUZykDJbKnWf1cjnYmHdlB8HcjTjl6JrCqAIXcw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': + resolution: {integrity: sha512-B9zYf3okEY83kM8gydlpH2BHP00w4ifxPqlYlWrgTwuD6wnkrJDCwBlgy1q31cERjCJRXN1lrE2VmkLvFjv/6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': + resolution: {integrity: sha512-zB0Nrv0dGc0zZWPGDRmmETTPhDRqyZjAjk+gWMlVrJX5U89obpB3VUUE1ZiHxOCN5LQojeLK6O8L/dnoHolvNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@astrojs/compiler-binding@0.4.0': + resolution: {integrity: sha512-x2RjDUuWfwLNtc3mjAdSRInwqh/rqbLar9cm/5FOMbHvmYZB7yfKewzSclAxWjIZsypJDXv1lhaP2WG+P8TK3g==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@astrojs/compiler-rs@0.4.0': + resolution: {integrity: sha512-koVikeon1kreEy+/JzLQRy3vzHHQVOjycs4degg4vFufKApZOwMZvSSAEztYNhmcQVfNVsVZZI4cEge3cexAbQ==} + engines: {node: '>=22.12.0'} + + '@astrojs/internal-helpers@0.10.4': + resolution: {integrity: sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA==} + + '@astrojs/markdown-satteri@0.3.8': + resolution: {integrity: sha512-n8ItpFTCmlDsVR5+rwDmehSf+jFCYLWmZiisZNGuF7xILqYhsVeBfcha4qgS2Seq3fAc9Tm58ZVrvqFQ6RQgRQ==} + + '@astrojs/prism@4.0.2': + resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} + engines: {node: '>=22.12.0'} + + '@astrojs/react@6.0.4': + resolution: {integrity: sha512-0PDs0gM00vbUnw84Dh+YaxYaZzlppyzJub0J8wOO8/8AG4gV8L8X1ttiRp8cbSBGiWcu3UuspCaqIDO31ta8Uw==} + engines: {node: '>=22.12.0'} + peerDependencies: + '@types/react': ^17.0.50 || ^18.0.21 || ^19.0.0 + '@types/react-dom': ^17.0.17 || ^18.0.6 || ^19.0.0 + react: ^17.0.2 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0 + + '@astrojs/telemetry@3.3.3': + resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} @@ -3385,6 +3510,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.29.7': + resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.29.7': + resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.28.0': resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} engines: {node: '>=6.9.0'} @@ -3471,6 +3608,55 @@ packages: resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true + '@bruits/satteri-darwin-arm64@0.10.5': + resolution: {integrity: sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==} + cpu: [arm64] + os: [darwin] + + '@bruits/satteri-darwin-x64@0.10.5': + resolution: {integrity: sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==} + cpu: [x64] + os: [darwin] + + '@bruits/satteri-linux-arm64-gnu@0.10.5': + resolution: {integrity: sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@bruits/satteri-linux-arm64-musl@0.10.5': + resolution: {integrity: sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@bruits/satteri-linux-x64-gnu@0.10.5': + resolution: {integrity: sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@bruits/satteri-linux-x64-musl@0.10.5': + resolution: {integrity: sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@bruits/satteri-wasm32-wasi@0.10.5': + resolution: {integrity: sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@bruits/satteri-win32-arm64-msvc@0.10.5': + resolution: {integrity: sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==} + cpu: [arm64] + os: [win32] + + '@bruits/satteri-win32-x64-msvc@0.10.5': + resolution: {integrity: sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==} + cpu: [x64] + os: [win32] + '@bsmnt/scrollytelling@0.3.3': resolution: {integrity: sha512-2CqKzVP5osiWhU7g6/5u4nChT7VxHXuDTcX93zbvw0/Wn0TUtv10Yp5XNJ2qM979BQf0mNrR9XVEpqTVr37RLg==} peerDependencies: @@ -3484,6 +3670,10 @@ packages: '@bundled-es-modules/statuses@1.0.1': resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + '@capsizecss/unpack@4.0.1': + resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} + engines: {node: '>=18'} + '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} @@ -3715,6 +3905,9 @@ packages: '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/core@1.11.2': resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} @@ -3724,9 +3917,15 @@ packages: '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.11.2': resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -4408,76 +4607,155 @@ packages: resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + '@img/sharp-darwin-arm64@0.34.5': resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] + '@img/sharp-darwin-arm64@0.35.4': + resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-x64@0.34.5': resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-darwin-x64@0.35.4': + resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.4': + resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} + engines: {node: '>=20.9.0'} + os: [freebsd] + '@img/sharp-libvips-darwin-arm64@1.2.4': resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.3.3': + resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.2.4': resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.3.3': + resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm64@1.3.3': + resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm@1.3.3': + resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-ppc64@1.3.3': + resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-riscv64@1.3.3': + resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-s390x@1.3.3': + resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-x64@1.3.3': + resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} + cpu: [x64] + os: [linux] + libc: [musl] + '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4485,6 +4763,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm64@0.35.4': + resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4492,6 +4777,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm@0.35.4': + resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4499,6 +4791,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-ppc64@0.35.4': + resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4506,6 +4805,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-riscv64@0.35.4': + resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4513,6 +4819,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-s390x@0.35.4': + resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4520,6 +4833,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-x64@0.35.4': + resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4527,6 +4847,13 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-arm64@0.35.4': + resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -4534,29 +4861,63 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-x64@0.35.4': + resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [musl] + '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] + '@img/sharp-wasm32@0.35.4': + resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.4': + resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + '@img/sharp-win32-arm64@0.34.5': resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] + '@img/sharp-win32-arm64@0.35.4': + resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + '@img/sharp-win32-ia32@0.34.5': resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-ia32@0.35.4': + resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-x64@0.34.5': resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] + '@img/sharp-win32-x64@0.35.4': + resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -5516,6 +5877,9 @@ packages: resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==} engines: {node: '>=14'} + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + '@oxc-parser/binding-android-arm-eabi@0.143.0': resolution: {integrity: sha512-n9uozULWflPqBtdmI8lAabLqGKNgLVNN0ZH8HfgCwpKGNtzRzauB76jTiW/3YLkcA7N1zskpi9GdVnZuu1SAvg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -6963,6 +7327,9 @@ packages: cpu: [x64] os: [win32] + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rolldown/pluginutils@1.0.0-rc.7': resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} @@ -8438,6 +8805,18 @@ packages: '@types/aria-query@5.0.2': resolution: {integrity: sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==} + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -8589,6 +8968,9 @@ packages: '@types/estree-jsx@1.0.1': resolution: {integrity: sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -8613,6 +8995,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + '@types/js-cookie@3.0.6': resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} @@ -8683,6 +9068,9 @@ packages: '@types/ms@0.7.32': resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==} + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + '@types/node-fetch@2.6.6': resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} @@ -9097,6 +9485,12 @@ packages: '@vercel/routing-utils@6.1.1': resolution: {integrity: sha512-kUJn6CRuLvua5xvDZTJu1rC8GLdniC8D5VIzoJKm0dUdcUxv3LEx+pi8dokxWS+YM7cIs1Z3Y8ms/BDW1iBzzA==} + '@vitejs/plugin-react@5.2.0': + resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + '@vitejs/plugin-react@6.0.1': resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9500,6 +9894,10 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + am-i-vibing@0.4.0: + resolution: {integrity: sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==} + hasBin: true + amaro@1.1.5: resolution: {integrity: sha512-oo72OEYOSfSPe+96V+jh41gaFWfl9HddXFAHMFM+emjdZkzbtcg0bFWoYaWf8IMlqmZ0VM8F13frI8Ktt3+ADA==} engines: {node: '>=22'} @@ -9684,6 +10082,16 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true + astro@7.2.9: + resolution: {integrity: sha512-o5nZFo/bieF6rp4x9sQSLhI7GO7Bahpld38Y4LvX27nFoxNiuttjI+Hea81w5ksORLHgdPUlQpU9obPz5QRa8g==} + engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + peerDependencies: + '@astrojs/markdown-remark': 7.2.4 + peerDependenciesMeta: + '@astrojs/markdown-remark': + optional: true + async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} @@ -10059,6 +10467,10 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} @@ -10262,6 +10674,10 @@ packages: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} + common-ancestor-path@2.0.0: + resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} + engines: {node: '>= 18'} + common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -10317,6 +10733,7 @@ packages: configcat-js@9.5.1: resolution: {integrity: sha512-M7ZPMtS+wCJLsFwcMkXa/ka+r/uEbN5MYS1FEnnlM2cohvpR2vpvvSMe0fuhc83HDgXJari08LyRXay0k0S80g==} + deprecated: Official support for this package has ended. Please migrate to @configcat/sdk. For guidance on migration, see https://configcat.com/docs/sdk-reference/js/#migration-to-the-new-sdk consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} @@ -10376,6 +10793,10 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + cookie@2.0.1: + resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==} + engines: {node: '>=22'} + copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} @@ -10934,6 +11355,10 @@ packages: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} + diff@9.0.0: + resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} + engines: {node: '>=0.3.1'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -11518,6 +11943,9 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -11760,6 +12188,10 @@ packages: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} + find-proc@0.1.0: + resolution: {integrity: sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==} + engines: {node: ^20.19.0 || >=22.12.0} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -11791,6 +12223,10 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + fnv1a-64@0.1.2: resolution: {integrity: sha512-mJbcILTPybAR1jdOwt/lVv8N2cffeJFFP+gVbSAwLEx1ujXH27RpPd8Rokec/KX9c76UYIB6Co+H4lQzxPnJfA==} @@ -11803,6 +12239,13 @@ packages: debug: optional: true + fontace@0.4.1: + resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} + + fontkitten@1.0.3: + resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} + engines: {node: '>=20'} + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -12014,12 +12457,13 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - get-tsconfig@4.14.1: resolution: {integrity: sha512-Dz/6HxkrxgNehhxLVeyv8sad9UzF2xBVeaKBQNDfJ5XiSXmp2gTR0eO0RWiT2NCKS5aGP9jjkOMggTN90qU50A==} + get-tsconfig@5.0.0-beta.4: + resolution: {integrity: sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==} + engines: {node: '>=20.20.0'} + get-value@3.0.1: resolution: {integrity: sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==} engines: {node: '>=6.0'} @@ -12402,6 +12846,9 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + html-to-image@1.11.13: resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} @@ -12417,6 +12864,9 @@ packages: http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -12714,6 +13164,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-docker@4.0.0: + resolution: {integrity: sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==} + engines: {node: '>=20'} + hasBin: true + is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -14240,6 +14695,10 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -14309,6 +14768,10 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + neotraverse@1.0.1: + resolution: {integrity: sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==} + engines: {node: '>= 10'} + next-contentlayer2@0.4.6: resolution: {integrity: sha512-r1g/zCl3dXFfMlMI87n2+V90Jz7inMrfyRzmMSQdDfCBy3uexnsoM43wPbklza2teyd/pdfUT0I0gw/IE+YA4Q==} peerDependencies: @@ -14404,6 +14867,9 @@ packages: xml2js: optional: true + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -14838,6 +15304,10 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@7.3.1: + resolution: {integrity: sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q==} + engines: {node: '>=20'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -14850,12 +15320,23 @@ packages: resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} + p-queue@9.3.3: + resolution: {integrity: sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==} + engines: {node: '>=20'} + + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-manager-detector@1.3.0: resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} + pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -15049,6 +15530,9 @@ packages: phenomenon@1.6.0: resolution: {integrity: sha512-7h9/fjPD3qNlgggzm88cY58l9sudZ6Ey+UmZsizfhtawO6E3srZQXywaNm2lBwT72TbpHYRPy7ytIHeBUD/G0A==} + piccolore@0.1.3: + resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -15385,6 +15869,10 @@ packages: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + process-ancestry@0.1.0: + resolution: {integrity: sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==} + engines: {node: '>=18.0.0'} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -15639,6 +16127,10 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} + react-refresh@0.18.0: + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} + engines: {node: '>=0.10.0'} + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -16006,6 +16498,9 @@ packages: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} + retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -16149,6 +16644,9 @@ packages: resolution: {integrity: sha512-XU9EELUEZuioT4acLIpCXxHcFzrsC8muvg0MY28d+TlqwxbkTzBmWbw+3+hnCzXT7YZ0Qm8k3eXktDaEu+qmEw==} engines: {node: '>=16'} + satteri@0.10.5: + resolution: {integrity: sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==} + sax@1.5.0: resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} engines: {node: '>=11.0.0'} @@ -16307,6 +16805,15 @@ packages: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.35.4: + resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -17265,6 +17772,9 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unifont@0.7.5: + resolution: {integrity: sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==} + unimport@6.4.0: resolution: {integrity: sha512-JJOOuNMFq8b4ZPBKwQUxEcba4MplskDzYI1Lvrf8rJfWphZTWvPNXWa493qsPngHUmub89w6C7j+SeLWTE/UIQ==} engines: {node: '>=18.12.0'} @@ -17866,6 +18376,14 @@ packages: vite: optional: true + vitefu@1.1.3: + resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + vite: + optional: true + vitest@4.1.4: resolution: {integrity: sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -18173,6 +18691,9 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} + xxhash-wasm@1.1.0: + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + y-monaco@0.1.6: resolution: {integrity: sha512-sYRywMmcylt+Nupl+11AvizD2am06ST8lkVbUXuaEmrtV6Tf+TD4rsEm6u9YGGowYue+Vfg1IJ97SUP2J+PVXg==} engines: {node: '>=12.0.0', npm: '>=6.0.0'} @@ -18239,6 +18760,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + yoctocolors-cjs@2.1.3: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} @@ -18525,6 +19050,115 @@ snapshots: '@asamuzakjp/nwsapi@2.3.9': {} + '@astrojs/compiler-binding-darwin-arm64@0.4.0': + optional: true + + '@astrojs/compiler-binding-darwin-x64@0.4.0': + optional: true + + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': + optional: true + + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': + optional: true + + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': + optional: true + + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': + optional: true + + '@astrojs/compiler-binding-wasm32-wasi@0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + dependencies: + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': + optional: true + + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': + optional: true + + '@astrojs/compiler-binding@0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + optionalDependencies: + '@astrojs/compiler-binding-darwin-arm64': 0.4.0 + '@astrojs/compiler-binding-darwin-x64': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-musl': 0.4.0 + '@astrojs/compiler-binding-linux-x64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-x64-musl': 0.4.0 + '@astrojs/compiler-binding-wasm32-wasi': 0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) + '@astrojs/compiler-binding-win32-arm64-msvc': 0.4.0 + '@astrojs/compiler-binding-win32-x64-msvc': 0.4.0 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + '@astrojs/compiler-rs@0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + dependencies: + '@astrojs/compiler-binding': 0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + '@astrojs/internal-helpers@0.10.4': + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + js-yaml: 4.3.1 + picomatch: 4.0.5 + retext-smartypants: 6.2.0 + shiki: 4.2.0 + smol-toml: 1.8.0 + unified: 11.0.5 + + '@astrojs/markdown-satteri@0.3.8': + dependencies: + '@astrojs/internal-helpers': 0.10.4 + '@astrojs/prism': 4.0.2 + github-slugger: 2.0.0 + satteri: 0.10.5 + + '@astrojs/prism@4.0.2': + dependencies: + prismjs: 1.30.0 + + '@astrojs/react@6.0.4(@types/node@22.13.14)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(esbuild@0.28.1)(jiti@2.7.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)': + dependencies: + '@astrojs/internal-helpers': 0.10.4 + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@vitejs/plugin-react': 5.2.0(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + devalue: 5.9.0 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + ultrahtml: 1.7.0 + vite: 8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + transitivePeerDependencies: + - '@types/node' + - '@vitejs/devtools' + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@astrojs/telemetry@3.3.3': + dependencies: + ci-info: 4.4.0 + dset: 3.1.4 + is-docker: 4.0.0 + package-manager-detector: 1.8.0 + '@aws-crypto/sha256-browser@5.2.0': dependencies: '@aws-crypto/sha256-js': 5.2.0 @@ -19094,7 +19728,7 @@ snapshots: '@babel/helper-module-imports@7.29.7(supports-color@8.1.1)': dependencies: '@babel/traverse': 7.29.7(supports-color@8.1.1) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -19191,7 +19825,7 @@ snapshots: '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: @@ -19216,6 +19850,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + dependencies: + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) @@ -19334,6 +19978,37 @@ snapshots: dependencies: css-tree: 3.1.0 + '@bruits/satteri-darwin-arm64@0.10.5': + optional: true + + '@bruits/satteri-darwin-x64@0.10.5': + optional: true + + '@bruits/satteri-linux-arm64-gnu@0.10.5': + optional: true + + '@bruits/satteri-linux-arm64-musl@0.10.5': + optional: true + + '@bruits/satteri-linux-x64-gnu@0.10.5': + optional: true + + '@bruits/satteri-linux-x64-musl@0.10.5': + optional: true + + '@bruits/satteri-wasm32-wasi@0.10.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@bruits/satteri-win32-arm64-msvc@0.10.5': + optional: true + + '@bruits/satteri-win32-x64-msvc@0.10.5': + optional: true + '@bsmnt/scrollytelling@0.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(gsap@3.13.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -19353,6 +20028,10 @@ snapshots: dependencies: statuses: 2.0.2 + '@capsizecss/unpack@4.0.1': + dependencies: + fontkitten: 1.0.3 + '@chevrotain/types@11.1.2': {} '@clack/core@1.4.3': @@ -19729,6 +20408,12 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.11.2': dependencies: '@emnapi/wasi-threads': 1.2.2 @@ -19744,11 +20429,21 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.11.2': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 @@ -20445,10 +21140,10 @@ snapshots: '@graphql-tools/graphql-tag-pluck@8.3.19(graphql@16.11.0)(supports-color@8.1.1)': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.29.7(supports-color@8.1.1)) '@babel/traverse': 7.29.7(supports-color@8.1.1) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@graphql-tools/utils': 10.8.6(graphql@16.11.0) graphql: 16.11.0 tslib: 2.8.1 @@ -20679,100 +21374,207 @@ snapshots: '@img/colour@1.0.0': optional: true + '@img/colour@1.1.0': + optional: true + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true + '@img/sharp-darwin-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.3 + optional: true + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true + '@img/sharp-darwin-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.3 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 + optional: true + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true + '@img/sharp-libvips-darwin-arm64@1.3.3': + optional: true + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true + '@img/sharp-libvips-darwin-x64@1.3.3': + optional: true + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true + '@img/sharp-libvips-linux-arm64@1.3.3': + optional: true + '@img/sharp-libvips-linux-arm@1.2.4': optional: true + '@img/sharp-libvips-linux-arm@1.3.3': + optional: true + '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true + '@img/sharp-libvips-linux-ppc64@1.3.3': + optional: true + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true + '@img/sharp-libvips-linux-riscv64@1.3.3': + optional: true + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true + '@img/sharp-libvips-linux-s390x@1.3.3': + optional: true + '@img/sharp-libvips-linux-x64@1.2.4': optional: true + '@img/sharp-libvips-linux-x64@1.3.3': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + optional: true + '@img/sharp-linux-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true + '@img/sharp-linux-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.3 + optional: true + '@img/sharp-linux-arm@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.2.4 optional: true + '@img/sharp-linux-arm@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.3 + optional: true + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.2.4 optional: true + '@img/sharp-linux-ppc64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.3 + optional: true + '@img/sharp-linux-riscv64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true + '@img/sharp-linux-riscv64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.3 + optional: true + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true + '@img/sharp-linux-s390x@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.3 + optional: true + '@img/sharp-linux-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.2.4 optional: true + '@img/sharp-linux-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.3 + optional: true + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true + '@img/sharp-linuxmusl-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + optional: true + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true + '@img/sharp-linuxmusl-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + optional: true + '@img/sharp-wasm32@0.34.5': dependencies: '@emnapi/runtime': 1.10.0 optional: true + '@img/sharp-wasm32@0.35.4': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 + optional: true + '@img/sharp-win32-arm64@0.34.5': optional: true + '@img/sharp-win32-arm64@0.35.4': + optional: true + '@img/sharp-win32-ia32@0.34.5': optional: true + '@img/sharp-win32-ia32@0.35.4': + optional: true + '@img/sharp-win32-x64@0.34.5': optional: true + '@img/sharp-win32-x64@0.35.4': + optional: true + '@inquirer/ansi@1.0.2': {} '@inquirer/checkbox@4.3.2(@types/node@22.13.14)': @@ -21155,6 +21957,13 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 + optional: true + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: '@emnapi/core': 1.11.2 @@ -21162,6 +21971,13 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.3 + optional: true + '@next/bundle-analyzer@15.3.1': dependencies: webpack-bundle-analyzer: 4.10.1 @@ -22000,7 +22816,7 @@ snapshots: '@opentelemetry/propagator-b3': 1.24.1(@opentelemetry/api@1.9.1) '@opentelemetry/propagator-jaeger': 1.24.1(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.9.1) - semver: 7.8.1 + semver: 7.8.5 '@opentelemetry/semantic-conventions@1.24.1': {} @@ -22010,6 +22826,8 @@ snapshots: '@opentelemetry/semantic-conventions@1.41.1': {} + '@oslojs/encoding@1.1.0': {} + '@oxc-parser/binding-android-arm-eabi@0.143.0': optional: true @@ -23336,6 +24154,8 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.2.3': optional: true + '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rolldown/pluginutils@1.0.0-rc.7': {} '@rolldown/pluginutils@1.0.1': {} @@ -24602,6 +25422,13 @@ snapshots: tailwindcss: 4.2.4 vite: 8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + '@tailwindcss/vite@4.2.4(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': + dependencies: + '@tailwindcss/node': 4.2.4 + '@tailwindcss/oxide': 4.2.4 + tailwindcss: 4.2.4 + vite: 8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + '@tanstack/devtools-client@0.0.6': dependencies: '@tanstack/devtools-event-client': 0.4.4 @@ -24924,7 +25751,7 @@ snapshots: '@babel/types': 7.29.7 ansis: 4.1.0 babel-dead-code-elimination: 1.0.12(supports-color@8.1.1) - diff: 8.0.3 + diff: 8.0.4 pathe: 2.0.3 tinyglobby: 0.2.17 transitivePeerDependencies: @@ -25091,6 +25918,27 @@ snapshots: '@types/aria-query@5.0.2': {} + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.8 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.8 + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -25271,6 +26119,10 @@ snapshots: dependencies: '@types/estree': 1.0.5 + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.5 + '@types/estree@1.0.5': {} '@types/estree@1.0.8': {} @@ -25293,6 +26145,10 @@ snapshots: dependencies: '@types/unist': 2.0.8 + '@types/hast@3.0.5': + dependencies: + '@types/unist': 2.0.8 + '@types/js-cookie@3.0.6': {} '@types/js-yaml@4.0.6': {} @@ -25353,6 +26209,10 @@ snapshots: '@types/ms@0.7.32': {} + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 2.0.8 + '@types/node-fetch@2.6.6': dependencies: '@types/node': 22.13.14 @@ -25554,7 +26414,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.48.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 9.0.7 - semver: 7.8.1 + semver: 7.8.5 tinyglobby: 0.2.17 ts-api-utils: 2.1.0(typescript@6.0.2) typescript: 6.0.2 @@ -25569,7 +26429,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.65.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.3 - semver: 7.8.1 + semver: 7.8.5 tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@6.0.2) typescript: 6.0.2 @@ -25790,6 +26650,18 @@ snapshots: optionalDependencies: ajv: 6.14.0 + '@vitejs/plugin-react@5.2.0(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': + dependencies: + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@rolldown/pluginutils': 1.0.0-rc.3 + '@types/babel__core': 7.20.5 + react-refresh: 0.18.0 + vite: 8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + transitivePeerDependencies: + - supports-color + '@vitejs/plugin-react@6.0.1(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 @@ -26331,6 +27203,10 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + am-i-vibing@0.4.0: + dependencies: + process-ancestry: 0.1.0 + amaro@1.1.5: {} animejs@4.0.2: {} @@ -26543,6 +27419,97 @@ snapshots: astring@1.9.0: {} + astro@7.2.9(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(@types/node@22.13.14)(aws4fetch@1.0.20)(db0@0.3.4(@electric-sql/pglite@0.4.5))(ioredis@5.10.1(supports-color@8.1.1))(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0): + dependencies: + '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) + '@astrojs/internal-helpers': 0.10.4 + '@astrojs/markdown-satteri': 0.3.8 + '@astrojs/telemetry': 3.3.3 + '@capsizecss/unpack': 4.0.1 + '@clack/prompts': 1.7.0 + '@oslojs/encoding': 1.1.0 + am-i-vibing: 0.4.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + ci-info: 4.4.0 + clsx: 2.1.1 + common-ancestor-path: 2.0.0 + cookie: 2.0.1 + devalue: 5.9.0 + diff: 9.0.0 + dset: 3.1.4 + es-module-lexer: 2.1.0 + esbuild: 0.28.1 + find-proc: 0.1.0 + flattie: 1.1.1 + fontace: 0.4.1 + get-tsconfig: 5.0.0-beta.4 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + js-yaml: 4.3.1 + jsonc-parser: 3.3.1 + magic-string: 1.1.0 + magicast: 0.5.4 + mrmime: 2.0.1 + neotraverse: 1.0.1 + obug: 2.1.1 + p-limit: 7.3.1 + p-queue: 9.3.3 + package-manager-detector: 1.8.0 + piccolore: 0.1.3 + picomatch: 4.0.5 + semver: 7.8.5 + shiki: 4.2.0 + smol-toml: 1.8.0 + svgo: 4.0.2 + tinyclip: 0.1.15 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + ultrahtml: 1.7.0 + unifont: 0.7.5 + unstorage: 1.17.5(aws4fetch@1.0.20)(db0@0.3.4(@electric-sql/pglite@0.4.5))(ioredis@5.10.1(supports-color@8.1.1)) + vite: 8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + xxhash-wasm: 1.1.0 + yargs-parser: 22.0.0 + zod: 4.4.3 + optionalDependencies: + sharp: 0.35.4(@types/node@22.13.14) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@emnapi/core' + - '@emnapi/runtime' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - uploadthing + - yaml + async-sema@3.1.1: {} async@3.2.4: {} @@ -27031,6 +27998,8 @@ snapshots: chrome-trace-event@1.0.4: {} + ci-info@4.4.0: {} + citty@0.1.6: dependencies: consola: 3.4.2 @@ -27207,6 +28176,8 @@ snapshots: has-own-prop: 2.0.0 repeat-string: 1.6.1 + common-ancestor-path@2.0.0: {} + common-tags@1.8.2: {} commondir@1.0.1: {} @@ -27334,6 +28305,8 @@ snapshots: cookie@1.0.2: {} + cookie@2.0.1: {} + copy-to-clipboard@3.3.3: dependencies: toggle-selection: 1.0.6 @@ -27900,6 +28873,8 @@ snapshots: diff@8.0.4: {} + diff@9.0.0: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -28341,7 +29316,7 @@ snapshots: eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.48.0(eslint@9.37.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-import-resolver-typescript@3.6.1)(eslint@9.37.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.37.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.2))(eslint-import-resolver-typescript@3.6.1)(eslint@9.37.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1) fast-glob: 3.3.3 - get-tsconfig: 4.10.0 + get-tsconfig: 4.14.1 is-core-module: 2.16.1 is-glob: 4.0.3 transitivePeerDependencies: @@ -28617,6 +29592,8 @@ snapshots: eventemitter3@4.0.7: {} + eventemitter3@5.0.4: {} + events@3.3.0: {} eventsource-parser@1.1.2: {} @@ -28970,6 +29947,8 @@ snapshots: transitivePeerDependencies: - supports-color + find-proc@0.1.0: {} + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -28992,10 +29971,20 @@ snapshots: flatted@3.4.2: {} + flattie@1.1.1: {} + fnv1a-64@0.1.2: {} follow-redirects@1.16.0: {} + fontace@0.4.1: + dependencies: + fontkitten: 1.0.3 + + fontkitten@1.0.3: + dependencies: + tiny-inflate: 1.0.3 + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -29185,11 +30174,11 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.10.0: + get-tsconfig@4.14.1: dependencies: resolve-pkg-maps: 1.0.0 - get-tsconfig@4.14.1: + get-tsconfig@5.0.0-beta.4: dependencies: resolve-pkg-maps: 1.0.0 @@ -29714,6 +30703,8 @@ snapshots: html-escaper@2.0.2: {} + html-escaper@3.0.3: {} + html-to-image@1.11.13: {} html-url-attributes@3.0.0: {} @@ -29729,6 +30720,8 @@ snapshots: http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -30045,6 +31038,8 @@ snapshots: is-docker@3.0.0: {} + is-docker@4.0.0: {} + is-extendable@0.1.1: {} is-extendable@1.0.1: @@ -32078,6 +33073,8 @@ snapshots: mrmime@2.0.0: {} + mrmime@2.0.1: {} + ms@2.0.0: {} ms@2.1.3: {} @@ -32153,6 +33150,8 @@ snapshots: neo-async@2.6.2: {} + neotraverse@1.0.1: {} + next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.28.1)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.28.1)(markdown-wasm@1.2.0)(next@16.2.11(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(supports-color@8.1.1): dependencies: '@contentlayer2/core': 0.4.3(esbuild@0.28.1)(markdown-wasm@1.2.0)(supports-color@8.1.1) @@ -32367,6 +33366,10 @@ snapshots: - vite - webpack + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -32964,6 +33967,10 @@ snapshots: dependencies: yocto-queue: 0.1.0 + p-limit@7.3.1: + dependencies: + yocto-queue: 1.2.2 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -32974,10 +33981,19 @@ snapshots: p-map@7.0.4: {} + p-queue@9.3.3: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.1 + + p-timeout@7.0.1: {} + package-json-from-dist@1.0.1: {} package-manager-detector@1.3.0: {} + package-manager-detector@1.8.0: {} + pako@0.2.9: {} papaparse@5.4.1: {} @@ -33178,6 +34194,8 @@ snapshots: phenomenon@1.6.0: {} + piccolore@0.1.3: {} + picocolors@1.1.1: {} picomatch-browser@2.2.6: {} @@ -33476,6 +34494,8 @@ snapshots: proc-log@4.2.0: {} + process-ancestry@0.1.0: {} + process-nextick-args@2.0.1: {} process@0.11.10: {} @@ -33801,6 +34821,8 @@ snapshots: react-refresh@0.14.2: {} + react-refresh@0.18.0: {} + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.6): dependencies: react: 19.2.6 @@ -34332,6 +35354,12 @@ snapshots: ret@0.2.2: {} + retext-smartypants@6.2.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.1.0 + retry@0.12.0: {} rettime@0.7.0: {} @@ -34537,6 +35565,23 @@ snapshots: postcss-value-parser: 4.2.0 yoga-wasm-web: 0.3.3 + satteri@0.10.5: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + optionalDependencies: + '@bruits/satteri-darwin-arm64': 0.10.5 + '@bruits/satteri-darwin-x64': 0.10.5 + '@bruits/satteri-linux-arm64-gnu': 0.10.5 + '@bruits/satteri-linux-arm64-musl': 0.10.5 + '@bruits/satteri-linux-x64-gnu': 0.10.5 + '@bruits/satteri-linux-x64-musl': 0.10.5 + '@bruits/satteri-wasm32-wasi': 0.10.5 + '@bruits/satteri-win32-arm64-msvc': 0.10.5 + '@bruits/satteri-win32-x64-msvc': 0.10.5 + sax@1.5.0: {} saxes@6.0.0: @@ -34754,7 +35799,7 @@ snapshots: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 - semver: 7.8.1 + semver: 7.8.5 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -34782,6 +35827,40 @@ snapshots: '@img/sharp-win32-x64': 0.34.5 optional: true + sharp@0.35.4(@types/node@22.13.14): + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.4 + '@img/sharp-darwin-x64': 0.35.4 + '@img/sharp-freebsd-wasm32': 0.35.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-linux-arm': 0.35.4 + '@img/sharp-linux-arm64': 0.35.4 + '@img/sharp-linux-ppc64': 0.35.4 + '@img/sharp-linux-riscv64': 0.35.4 + '@img/sharp-linux-s390x': 0.35.4 + '@img/sharp-linux-x64': 0.35.4 + '@img/sharp-linuxmusl-arm64': 0.35.4 + '@img/sharp-linuxmusl-x64': 0.35.4 + '@img/sharp-webcontainers-wasm32': 0.35.4 + '@img/sharp-win32-arm64': 0.35.4 + '@img/sharp-win32-ia32': 0.35.4 + '@img/sharp-win32-x64': 0.35.4 + '@types/node': 22.13.14 + optional: true + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -35805,6 +36884,12 @@ snapshots: trough: 2.1.0 vfile: 6.0.3 + unifont@0.7.5: + dependencies: + css-tree: 3.1.0 + ohash: 2.0.11 + undici: 8.10.0 + unimport@6.4.0(esbuild@0.28.1)(oxc-parser@0.143.0)(rolldown@1.2.3)(rollup@4.60.3)(vite@7.3.5(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))(webpack@5.105.4(esbuild@0.28.1)): dependencies: acorn: 8.18.0 @@ -36435,6 +37520,10 @@ snapshots: optionalDependencies: vite: 8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vitefu@1.1.3(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): + optionalDependencies: + vite: 8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vitest@4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.4 @@ -36806,6 +37895,8 @@ snapshots: xtend@4.0.2: {} + xxhash-wasm@1.1.0: {} + y-monaco@0.1.6(monaco-editor@0.52.2)(yjs@13.6.29): dependencies: lib0: 0.2.117 @@ -36863,6 +37954,8 @@ snapshots: yocto-queue@0.1.0: {} + yocto-queue@1.2.2: {} + yoctocolors-cjs@2.1.3: {} yoctocolors@2.1.2: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3ab6eef170e..a47ee4d06b4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -90,6 +90,8 @@ minimumReleaseAgeExclude: - mdast-jsx # The following are excluded to fix vulnerablities. - react-use + - '@astrojs/markdown-satteri@0.3.8' + - astro@7.2.6 overrides: '@ardatan/relay-compiler>immutable': ^3.8.3