diff --git a/playgrounds/skeleton-svelte/src/routes/light-switch.svelte b/playgrounds/skeleton-svelte/src/routes/light-switch.svelte
index 13819d82be..570c58f32a 100644
--- a/playgrounds/skeleton-svelte/src/routes/light-switch.svelte
+++ b/playgrounds/skeleton-svelte/src/routes/light-switch.svelte
@@ -14,7 +14,6 @@
document.documentElement.setAttribute('data-mode', mode);
localStorage.setItem('mode', mode);
checked = event.checked;
- console.log(event);
};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7c74b7c483..082648bcef 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -18,15 +18,15 @@ catalogs:
'@astrojs/react':
specifier: 4.4.0
version: 4.4.0
+ '@astrojs/sitemap':
+ specifier: 3.6.0
+ version: 3.6.0
'@astrojs/svelte':
specifier: 7.2.0
version: 7.2.0
'@astrojs/vercel':
specifier: 8.2.10
version: 8.2.10
- '@atproto/api':
- specifier: 0.17.3
- version: 0.17.3
'@changesets/cli':
specifier: 2.29.7
version: 2.29.7
@@ -42,9 +42,30 @@ catalogs:
'@lucide/svelte':
specifier: 0.546.0
version: 0.546.0
- '@nanostores/persistent':
- specifier: 1.1.0
- version: 1.1.0
+ '@resvg/resvg-js':
+ specifier: 2.6.2
+ version: 2.6.2
+ '@shikijs/core':
+ specifier: 3.13.0
+ version: 3.13.0
+ '@shikijs/engine-javascript':
+ specifier: 3.13.0
+ version: 3.13.0
+ '@shikijs/langs':
+ specifier: 3.13.0
+ version: 3.13.0
+ '@shikijs/themes':
+ specifier: 3.13.0
+ version: 3.13.0
+ '@shikijs/transformers':
+ specifier: 3.13.0
+ version: 3.13.0
+ '@shikijs/types':
+ specifier: 3.13.0
+ version: 3.13.0
+ '@stackblitz/sdk':
+ specifier: 1.11.0
+ version: 1.11.0
'@sveltejs/adapter-auto':
specifier: 7.0.0
version: 7.0.0
@@ -90,9 +111,9 @@ catalogs:
'@types/estree':
specifier: 1.0.8
version: 1.0.8
- '@types/mdast':
- specifier: 4.0.4
- version: 4.0.4
+ '@types/html-escaper':
+ specifier: 3.0.4
+ version: 3.0.4
'@types/node':
specifier: 24.8.1
version: 24.8.1
@@ -105,9 +126,6 @@ catalogs:
'@types/semver':
specifier: 7.7.1
version: 7.7.1
- '@types/unist':
- specifier: 3.0.3
- version: 3.0.3
'@vitejs/plugin-react':
specifier: 5.0.4
version: 5.0.4
@@ -189,9 +207,12 @@ catalogs:
astro-auto-import:
specifier: 0.4.5
version: 0.4.5
- astro-expressive-code:
- specifier: 0.41.3
- version: 0.41.3
+ astro-pagefind:
+ specifier: 1.8.5
+ version: 1.8.5
+ astro-seo:
+ specifier: 0.8.4
+ version: 0.8.4
chroma-js:
specifier: 3.1.2
version: 3.1.2
@@ -207,6 +228,9 @@ catalogs:
fuse.js:
specifier: 7.1.0
version: 7.1.0
+ html-escaper:
+ specifier: 3.0.3
+ version: 3.0.3
jsdom:
specifier: 27.0.1
version: 27.0.1
@@ -219,27 +243,9 @@ catalogs:
magic-string:
specifier: 0.30.19
version: 0.30.19
- mdast-util-from-markdown:
- specifier: 2.0.2
- version: 2.0.2
- mdast-util-gfm:
- specifier: 3.1.0
- version: 3.1.0
- mdast-util-mdx:
- specifier: 3.0.0
- version: 3.0.0
- mdast-util-to-markdown:
- specifier: 2.1.2
- version: 2.1.2
- micromark-extension-mdxjs:
- specifier: 3.0.0
- version: 3.0.0
nanoid:
specifier: 5.1.6
version: 5.1.6
- nanostores:
- specifier: 1.0.1
- version: 1.0.1
next:
specifier: 15.5.6
version: 15.5.6
@@ -258,9 +264,6 @@ catalogs:
package-manager-detector:
specifier: 1.5.0
version: 1.5.0
- pagefind:
- specifier: 1.4.0
- version: 1.4.0
playwright:
specifier: 1.56.1
version: 1.56.1
@@ -285,6 +288,9 @@ catalogs:
sass-embedded:
specifier: 1.93.2
version: 1.93.2
+ satori:
+ specifier: 0.18.3
+ version: 0.18.3
semver:
specifier: 7.7.3
version: 7.7.3
@@ -318,9 +324,6 @@ catalogs:
typescript:
specifier: 5.9.3
version: 5.9.3
- unist-util-visit:
- specifier: 5.0.0
- version: 5.0.0
unplugin-macros:
specifier: 0.18.2
version: 0.18.2
@@ -330,9 +333,6 @@ catalogs:
vite:
specifier: 7.1.10
version: 7.1.10
- vite-plugin-pagefind:
- specifier: 1.0.7
- version: 1.0.7
vite-plugin-transform-lucide-imports:
specifier: 0.3.0
version: 0.3.0
@@ -811,15 +811,15 @@ importers:
'@astrojs/react':
specifier: 'catalog:'
version: 4.4.0(@types/node@24.8.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(jiti@2.6.1)(lightningcss@1.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)
+ '@astrojs/sitemap':
+ specifier: 'catalog:'
+ version: 3.6.0
'@astrojs/svelte':
specifier: 'catalog:'
version: 7.2.0(@types/node@24.8.1)(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(svelte@5.41.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)
'@astrojs/vercel':
specifier: 'catalog:'
version: 8.2.10(@sveltejs/kit@2.47.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.41.0)(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.41.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)))(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(next@15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2))(react@19.2.0)(rollup@4.52.4)(svelte@5.41.0)
- '@atproto/api':
- specifier: 'catalog:'
- version: 0.17.3
'@faker-js/faker':
specifier: 'catalog:'
version: 10.1.0
@@ -829,9 +829,27 @@ importers:
'@lucide/svelte':
specifier: 'catalog:'
version: 0.546.0(svelte@5.41.0)
- '@nanostores/persistent':
+ '@resvg/resvg-js':
+ specifier: 'catalog:'
+ version: 2.6.2
+ '@shikijs/core':
+ specifier: 'catalog:'
+ version: 3.13.0
+ '@shikijs/engine-javascript':
+ specifier: 'catalog:'
+ version: 3.13.0
+ '@shikijs/langs':
specifier: 'catalog:'
- version: 1.1.0(nanostores@1.0.1)
+ version: 3.13.0
+ '@shikijs/themes':
+ specifier: 'catalog:'
+ version: 3.13.0
+ '@shikijs/transformers':
+ specifier: 'catalog:'
+ version: 3.13.0
+ '@shikijs/types':
+ specifier: 'catalog:'
+ version: 3.13.0
'@skeletonlabs/skeleton':
specifier: workspace:*
version: link:../../packages/skeleton
@@ -844,63 +862,45 @@ importers:
'@skeletonlabs/skeleton-svelte':
specifier: workspace:*
version: link:../../packages/skeleton-svelte
- '@tailwindcss/forms':
+ '@stackblitz/sdk':
specifier: 'catalog:'
- version: 0.5.10(tailwindcss@4.1.14)
+ version: 1.11.0
'@tailwindcss/vite':
specifier: 'catalog:'
version: 4.1.14(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
- '@types/mdast':
+ '@types/html-escaper':
specifier: 'catalog:'
- version: 4.0.4
+ version: 3.0.4
'@types/react':
specifier: 'catalog:'
version: 19.2.2
'@types/react-dom':
specifier: 'catalog:'
version: 19.2.2(@types/react@19.2.2)
- '@types/unist':
- specifier: 'catalog:'
- version: 3.0.3
astro:
specifier: 'catalog:'
version: 5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)
astro-auto-import:
specifier: 'catalog:'
version: 0.4.5(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))
- astro-expressive-code:
+ astro-pagefind:
specifier: 'catalog:'
- version: 0.41.3(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))
+ version: 1.8.5(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))
+ astro-seo:
+ specifier: 'catalog:'
+ version: 0.8.4(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)
fuse.js:
specifier: 'catalog:'
version: 7.1.0
+ html-escaper:
+ specifier: 'catalog:'
+ version: 3.0.3
lucide-react:
specifier: 'catalog:'
version: 0.546.0(react@19.2.0)
- mdast-util-from-markdown:
- specifier: 'catalog:'
- version: 2.0.2
- mdast-util-gfm:
- specifier: 'catalog:'
- version: 3.1.0
- mdast-util-mdx:
- specifier: 'catalog:'
- version: 3.0.0
- mdast-util-to-markdown:
- specifier: 'catalog:'
- version: 2.1.2
- micromark-extension-mdxjs:
- specifier: 'catalog:'
- version: 3.0.0
- nanostores:
- specifier: 'catalog:'
- version: 1.0.1
octokit:
specifier: 'catalog:'
version: 5.0.4
- pagefind:
- specifier: 'catalog:'
- version: 1.4.0
playwright:
specifier: 'catalog:'
version: 1.56.1
@@ -910,6 +910,9 @@ importers:
react-dom:
specifier: 'catalog:'
version: 19.2.0(react@19.2.0)
+ satori:
+ specifier: 'catalog:'
+ version: 0.18.3
sharp:
specifier: 'catalog:'
version: 0.34.4
@@ -931,12 +934,6 @@ importers:
typescript:
specifier: 'catalog:'
version: 5.9.3
- unist-util-visit:
- specifier: 'catalog:'
- version: 5.0.0
- vite-plugin-pagefind:
- specifier: 'catalog:'
- version: 1.0.7(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
vite-plugin-transform-lucide-imports:
specifier: 'catalog:'
version: 0.3.0(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
@@ -1016,6 +1013,12 @@ packages:
'@asamuzakjp/nwsapi@2.3.9':
resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
+ '@astrojs/check@0.5.10':
+ resolution: {integrity: sha512-vliHXM9cu/viGeKiksUM4mXfO816ohWtawTl2ADPgTsd4nUMjFiyAl7xFZhF34yy4hq4qf7jvK1F2PlR3b5I5w==}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+
'@astrojs/check@0.9.4':
resolution: {integrity: sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==}
hasBin: true
@@ -1065,6 +1068,9 @@ packages:
react: ^17.0.2 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0
+ '@astrojs/sitemap@3.6.0':
+ resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==}
+
'@astrojs/svelte@7.2.0':
resolution: {integrity: sha512-6AbtExkKc+m0tHR7Plf4bd3Myx0FMHmAICFfp4eAlv8IavjFmZMIjosRvm2+1l8MTH80p+cQxQmo/R3K+RvXlw==}
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
@@ -1085,21 +1091,6 @@ packages:
'@astrojs/yaml2ts@0.2.2':
resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==}
- '@atproto/api@0.17.3':
- resolution: {integrity: sha512-pdQXhUAapNPdmN00W0vX5ta/aMkHqfgBHATt20X02XwxQpY2AnrPm2Iog4FyjsZqoHooAtCNV/NWJ4xfddJzsg==}
-
- '@atproto/common-web@0.4.3':
- resolution: {integrity: sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg==}
-
- '@atproto/lexicon@0.5.1':
- resolution: {integrity: sha512-y8AEtYmfgVl4fqFxqXAeGvhesiGkxiy3CWoJIfsFDDdTlZUC8DFnZrYhcqkIop3OlCkkljvpSJi1hbeC1tbi8A==}
-
- '@atproto/syntax@0.4.1':
- resolution: {integrity: sha512-CJdImtLAiFO+0z3BWTtxwk6aY5w4t8orHTMVJgkf++QRJWTxPbIFko/0hrkADB7n2EruDxDSeAgfUGehpH6ngw==}
-
- '@atproto/xrpc@0.7.5':
- resolution: {integrity: sha512-MUYNn5d2hv8yVegRL0ccHvTHAVj5JSnW07bkbiaz96UH45lvYNRVwt44z+yYVnb0/mvBzyD3/ZQ55TRGt7fHkA==}
-
'@babel/code-frame@7.27.1':
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
@@ -1292,10 +1283,6 @@ packages:
resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
engines: {node: '>=18'}
- '@ctrl/tinycolor@4.2.0':
- resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==}
- engines: {node: '>=14'}
-
'@emmetio/abbreviation@2.3.3':
resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==}
@@ -1482,18 +1469,6 @@ packages:
cpu: [x64]
os: [win32]
- '@expressive-code/core@0.41.3':
- resolution: {integrity: sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==}
-
- '@expressive-code/plugin-frames@0.41.3':
- resolution: {integrity: sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==}
-
- '@expressive-code/plugin-shiki@0.41.3':
- resolution: {integrity: sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==}
-
- '@expressive-code/plugin-text-markers@0.41.3':
- resolution: {integrity: sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==}
-
'@faker-js/faker@10.1.0':
resolution: {integrity: sha512-C3mrr3b5dRVlKPJdfrAXS8+dq+rq8Qm5SNRazca0JKgw1HQERFmrVb0towvMmw5uu8hHKNiQasMaR/tydf3Zsg==}
engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'}
@@ -1710,12 +1685,6 @@ packages:
'@mdx-js/mdx@3.1.1':
resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==}
- '@nanostores/persistent@1.1.0':
- resolution: {integrity: sha512-e6vfv7H99VkCfSoNTR/qNVMj6vXwWcsEL+LCQQamej5GK9iDefKxPCJjdOpBi1p4lNCFIQ+9VjYF1spvvc2p6A==}
- engines: {node: ^20.0.0 || >=22.0.0}
- peerDependencies:
- nanostores: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^1.0.0
-
'@napi-rs/wasm-runtime@1.0.7':
resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==}
@@ -1983,6 +1952,9 @@ packages:
cpu: [x64]
os: [darwin]
+ '@pagefind/default-ui@1.4.0':
+ resolution: {integrity: sha512-wie82VWn3cnGEdIjh4YwNESyS1G6vRHwL6cNjy9CFgNnWW/PGRjsLq300xjVH5sfPFK3iK36UxvIBymtQIEiSQ==}
+
'@pagefind/freebsd-x64@1.4.0':
resolution: {integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==}
cpu: [x64]
@@ -2122,6 +2094,86 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
+ '@resvg/resvg-js-android-arm-eabi@2.6.2':
+ resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+
+ '@resvg/resvg-js-android-arm64@2.6.2':
+ resolution: {integrity: sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@resvg/resvg-js-darwin-arm64@2.6.2':
+ resolution: {integrity: sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@resvg/resvg-js-darwin-x64@2.6.2':
+ resolution: {integrity: sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2':
+ resolution: {integrity: sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@resvg/resvg-js-linux-arm64-gnu@2.6.2':
+ resolution: {integrity: sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@resvg/resvg-js-linux-arm64-musl@2.6.2':
+ resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@resvg/resvg-js-linux-x64-gnu@2.6.2':
+ resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@resvg/resvg-js-linux-x64-musl@2.6.2':
+ resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@resvg/resvg-js-win32-arm64-msvc@2.6.2':
+ resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@resvg/resvg-js-win32-ia32-msvc@2.6.2':
+ resolution: {integrity: sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@resvg/resvg-js-win32-x64-msvc@2.6.2':
+ resolution: {integrity: sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@resvg/resvg-js@2.6.2':
+ resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==}
+ engines: {node: '>= 10'}
+
'@rolldown/binding-android-arm64@1.0.0-beta.43':
resolution: {integrity: sha512-TP8bcPOb1s6UmY5syhXrDn9k0XkYcw+XaoylTN4cJxf0JOVS2j682I3aTcpfT51hOFGr2bRwNKN9RZ19XxeQbA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2363,12 +2415,23 @@ packages:
'@shikijs/themes@3.13.0':
resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==}
+ '@shikijs/transformers@3.13.0':
+ resolution: {integrity: sha512-833lcuVzcRiG+fXvgslWsM2f4gHpjEgui1ipIknSizRuTgMkNZupiXE5/TVJ6eSYfhNBFhBZKkReKWO2GgYmqA==}
+
'@shikijs/types@3.13.0':
resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+ '@shuding/opentype.js@1.4.0-beta.0':
+ resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==}
+ engines: {node: '>= 8.0.0'}
+ hasBin: true
+
+ '@stackblitz/sdk@1.11.0':
+ resolution: {integrity: sha512-DFQGANNkEZRzFk1/rDP6TcFdM82ycHE+zfl9C/M/jXlH68jiqHWHFMQURLELoD8koxvu/eW5uhg94NSAZlYrUQ==}
+
'@standard-schema/spec@1.0.0':
resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
@@ -2652,6 +2715,9 @@ packages:
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+ '@types/html-escaper@3.0.4':
+ resolution: {integrity: sha512-UKSaMPMXXKnq1jDj74seVikfdq5pWvoXcIgOUbwYzHuAEGiv8/juom1i/MsWBF8boFSI0uHQCSZauzr5OYnnJA==}
+
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
@@ -2667,6 +2733,9 @@ packages:
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+ '@types/node@17.0.45':
+ resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
+
'@types/node@18.19.130':
resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==}
@@ -2681,6 +2750,9 @@ packages:
'@types/react@19.2.2':
resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==}
+ '@types/sax@1.2.7':
+ resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
+
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
@@ -3011,6 +3083,9 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
@@ -3049,10 +3124,13 @@ packages:
peerDependencies:
astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta
- astro-expressive-code@0.41.3:
- resolution: {integrity: sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==}
+ astro-pagefind@1.8.5:
+ resolution: {integrity: sha512-CVhKKA9bTQ7hLsHk9KTNDzOdgR4EI04gn0mjDGfnXzaHx7rL92YkNpFM5AoFl9NWmOUbaIFC2DN7Yvs/ZFPRdA==}
peerDependencies:
- astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0
+ astro: ^2.0.4 || ^3 || ^4 || ^5
+
+ astro-seo@0.8.4:
+ resolution: {integrity: sha512-Ou1vzQSXAxa0K8rtNtXNvSpYqOGEgMhh0immMxJeXmbVZac3UKCNWAoXWyOQDFYsZvBugCRSg0N1phBqPMVgCw==}
astro@5.14.6:
resolution: {integrity: sha512-MSdjKt2W2a56x868DqDWgbfw4D689/8EGhHG4465h7eivTI237u1aBx4iJvgI6WfgdUE61+coAvMjUkEvOWbpA==}
@@ -3062,9 +3140,6 @@ packages:
async-sema@3.1.1:
resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
- await-lock@2.2.2:
- resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
-
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
@@ -3078,6 +3153,10 @@ packages:
base-64@1.0.0:
resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
+ base64-js@0.0.8:
+ resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==}
+ engines: {node: '>= 0.4'}
+
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -3085,9 +3164,6 @@ packages:
resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==}
hasBin: true
- bcp-47-match@2.0.3:
- resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==}
-
before-after-hook@4.0.0:
resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==}
@@ -3098,6 +3174,10 @@ packages:
bidi-js@1.0.3:
resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
@@ -3140,6 +3220,9 @@ packages:
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
engines: {node: '>=16'}
+ camelize@1.0.1:
+ resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
+
caniuse-lite@1.0.30001750:
resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==}
@@ -3173,6 +3256,10 @@ packages:
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
engines: {node: '>= 16'}
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
@@ -3268,11 +3355,25 @@ packages:
crossws@0.3.5:
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
+ css-background-parser@0.1.0:
+ resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==}
+
+ css-box-shadow@1.0.0-3:
+ resolution: {integrity: sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==}
+
+ css-color-keywords@1.0.0:
+ resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
+ engines: {node: '>=4'}
+
+ css-gradient-parser@0.0.17:
+ resolution: {integrity: sha512-w2Xy9UMMwlKtou0vlRnXvWglPAceXCTtcmVSo8ZBUvqCV5aXEFP/PC6d+I464810I9FT++UACwTD5511bmGPUg==}
+ engines: {node: '>=16'}
+
css-select@5.2.2:
resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
- css-selector-parser@3.1.3:
- resolution: {integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==}
+ css-to-react-native@3.2.0:
+ resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
css-tree@3.1.0:
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
@@ -3386,10 +3487,6 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
- direction@2.0.1:
- resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==}
- hasBin: true
-
dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
@@ -3438,6 +3535,10 @@ packages:
emmet@2.4.11:
resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==}
+ emoji-regex-xs@2.0.1:
+ resolution: {integrity: sha512-1QFuh8l7LqUcKe24LsPUNzjrzJQ7pgRwp1QMcZ5MX6mFplk2zQ08NVCM84++1cveaUUYtcCYHmeFEuNg16sU4g==}
+ engines: {node: '>=10.0.0'}
+
emoji-regex@10.5.0:
resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==}
@@ -3485,6 +3586,9 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
@@ -3531,9 +3635,6 @@ packages:
resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
engines: {node: '>=12.0.0'}
- expressive-code@0.41.3:
- resolution: {integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==}
-
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -3568,6 +3669,9 @@ packages:
picomatch:
optional: true
+ fflate@0.7.4:
+ resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==}
+
file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
@@ -3651,9 +3755,6 @@ packages:
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
h3@1.15.4:
resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==}
@@ -3667,9 +3768,6 @@ packages:
hast-util-from-parse5@8.0.3:
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
- hast-util-has-property@3.0.0:
- resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==}
-
hast-util-is-element@3.0.0:
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
@@ -3679,9 +3777,6 @@ packages:
hast-util-raw@9.1.0:
resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
- hast-util-select@6.0.4:
- resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==}
-
hast-util-to-estree@3.1.3:
resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==}
@@ -3694,9 +3789,6 @@ packages:
hast-util-to-parse5@8.0.0:
resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
- hast-util-to-string@3.0.1:
- resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==}
-
hast-util-to-text@4.0.2:
resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
@@ -3710,6 +3802,10 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
+ hex-rgb@4.3.0:
+ resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==}
+ engines: {node: '>=6'}
+
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
@@ -3775,6 +3871,10 @@ packages:
is-alphanumerical@2.0.1:
resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
is-decimal@2.0.1:
resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
@@ -3832,9 +3932,6 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- iso-datestring-validator@2.2.2:
- resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
-
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
@@ -3977,6 +4074,9 @@ packages:
resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
engines: {node: '>= 12.0.0'}
+ linebreak@1.1.0:
+ resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==}
+
locate-character@3.0.0:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
@@ -4240,9 +4340,6 @@ packages:
muggle-string@0.4.1:
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
- multiformats@9.9.0:
- resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
-
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -4253,10 +4350,6 @@ packages:
engines: {node: ^18 || >=20}
hasBin: true
- nanostores@1.0.1:
- resolution: {integrity: sha512-kNZ9xnoJYKg/AfxjrVL4SS0fKX++4awQReGqWnwTRHxeHGZ1FJFVgTqr/eMrNQdp0Tz7M7tG/TDaX8QfHDwVCw==}
- engines: {node: ^20.0.0 || >=22.0.0}
-
neotraverse@0.6.18:
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
engines: {node: '>= 10'}
@@ -4410,6 +4503,9 @@ packages:
pako@0.2.9:
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
+ parse-css-color@0.2.1:
+ resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==}
+
parse-entities@4.0.2:
resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
@@ -4479,15 +4575,8 @@ packages:
engines: {node: '>=18'}
hasBin: true
- postcss-nested@6.2.0:
- resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.2.14
-
- postcss-selector-parser@6.1.2:
- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
- engines: {node: '>=4'}
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
postcss@8.4.31:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
@@ -4588,6 +4677,10 @@ packages:
resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
engines: {node: '>=6'}
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
@@ -4627,9 +4720,6 @@ packages:
resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==}
engines: {node: '>=12'}
- rehype-expressive-code@0.41.3:
- resolution: {integrity: sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==}
-
rehype-parse@9.0.1:
resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==}
@@ -4877,6 +4967,13 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
+ satori@0.18.3:
+ resolution: {integrity: sha512-T3DzWNmnrfVmk2gCIlAxLRLbGkfp3K7TyRva+Byyojqu83BNvnMeqVeYRdmUw4TKCsyH4RiQ/KuF/I4yEzgR5A==}
+ engines: {node: '>=16'}
+
+ sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
+
saxes@6.0.0:
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
engines: {node: '>=v12.22.7'}
@@ -4928,6 +5025,12 @@ packages:
sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+ sitemap@8.0.0:
+ resolution: {integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==}
+ engines: {node: '>=14.0.0', npm: '>=6.0.0'}
+ deprecated: 'SECURITY: Multiple vulnerabilities fixed in 8.0.1 (XML injection, path traversal, command injection, protocol injection). Upgrade immediately: npm install sitemap@8.0.1'
+ hasBin: true
+
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
@@ -4959,6 +5062,9 @@ packages:
std-env@3.9.0:
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
+ stream-replace-string@2.0.0:
+ resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==}
+
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -4971,6 +5077,9 @@ packages:
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
engines: {node: '>=18'}
+ string.prototype.codepointat@0.2.1:
+ resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==}
+
stringify-entities@4.0.4:
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
@@ -5099,10 +5208,6 @@ packages:
resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==}
engines: {node: '>=14.0.0'}
- tlds@1.260.0:
- resolution: {integrity: sha512-78+28EWBhCEE7qlyaHA9OR3IPvbCLiDh3Ckla593TksfFc9vfTsgvH7eS+dr3o9qr31gwGbogcI16yN91PoRjQ==}
- hasBin: true
-
tldts-core@7.0.17:
resolution: {integrity: sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==}
@@ -5208,9 +5313,6 @@ packages:
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
- uint8arrays@3.0.0:
- resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==}
-
ultrahtml@1.6.0:
resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
@@ -5370,9 +5472,6 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
varint@6.0.0:
resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
@@ -5390,11 +5489,6 @@ packages:
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
- vite-plugin-pagefind@1.0.7:
- resolution: {integrity: sha512-BTYGhqbEsEBfG7ZIbV41HjKAKGlJcq+h819Lsq+83+bkN5mcrl0YLqbh0fx+tCvmdOZs9rfgMpKoBlyv8pcvfQ==}
- peerDependencies:
- vite: '>=4.0.0'
-
vite-plugin-transform-lucide-imports@0.3.0:
resolution: {integrity: sha512-/zIVzj7SqIvQ2kLAerVUJTTcQvMe+jyqfvzU/D5jJvf5f4z4CmlT+ui3LfhhVOPbY49dcsxLULfbFDRNxdSXhg==}
peerDependencies:
@@ -5750,6 +5844,9 @@ packages:
resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==}
engines: {node: '>=18'}
+ yoga-layout@3.2.1:
+ resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==}
+
zimmerframe@1.1.4:
resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
@@ -5794,6 +5891,18 @@ snapshots:
'@asamuzakjp/nwsapi@2.3.9': {}
+ '@astrojs/check@0.5.10(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)':
+ dependencies:
+ '@astrojs/language-server': 2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)
+ chokidar: 3.6.0
+ fast-glob: 3.3.3
+ kleur: 4.1.5
+ typescript: 5.9.3
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - prettier
+ - prettier-plugin-astro
+
'@astrojs/check@0.9.4(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)':
dependencies:
'@astrojs/language-server': 2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)
@@ -5912,6 +6021,12 @@ snapshots:
- tsx
- yaml
+ '@astrojs/sitemap@3.6.0':
+ dependencies:
+ sitemap: 8.0.0
+ stream-replace-string: 2.0.0
+ zod: 3.25.76
+
'@astrojs/svelte@7.2.0(@types/node@24.8.1)(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(svelte@5.41.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)':
dependencies:
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.41.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
@@ -5973,39 +6088,6 @@ snapshots:
dependencies:
yaml: 2.8.1
- '@atproto/api@0.17.3':
- dependencies:
- '@atproto/common-web': 0.4.3
- '@atproto/lexicon': 0.5.1
- '@atproto/syntax': 0.4.1
- '@atproto/xrpc': 0.7.5
- await-lock: 2.2.2
- multiformats: 9.9.0
- tlds: 1.260.0
- zod: 3.25.76
-
- '@atproto/common-web@0.4.3':
- dependencies:
- graphemer: 1.4.0
- multiformats: 9.9.0
- uint8arrays: 3.0.0
- zod: 3.25.76
-
- '@atproto/lexicon@0.5.1':
- dependencies:
- '@atproto/common-web': 0.4.3
- '@atproto/syntax': 0.4.1
- iso-datestring-validator: 2.2.2
- multiformats: 9.9.0
- zod: 3.25.76
-
- '@atproto/syntax@0.4.1': {}
-
- '@atproto/xrpc@0.7.5':
- dependencies:
- '@atproto/lexicon': 0.5.1
- zod: 3.25.76
-
'@babel/code-frame@7.27.1':
dependencies:
'@babel/helper-validator-identifier': 7.27.1
@@ -6312,8 +6394,6 @@ snapshots:
'@csstools/css-tokenizer@3.0.4': {}
- '@ctrl/tinycolor@4.2.0': {}
-
'@emmetio/abbreviation@2.3.3':
dependencies:
'@emmetio/scanner': 1.0.4
@@ -6431,31 +6511,6 @@ snapshots:
'@esbuild/win32-x64@0.25.10':
optional: true
- '@expressive-code/core@0.41.3':
- dependencies:
- '@ctrl/tinycolor': 4.2.0
- hast-util-select: 6.0.4
- hast-util-to-html: 9.0.5
- hast-util-to-text: 4.0.2
- hastscript: 9.0.1
- postcss: 8.5.6
- postcss-nested: 6.2.0(postcss@8.5.6)
- unist-util-visit: 5.0.0
- unist-util-visit-parents: 6.0.1
-
- '@expressive-code/plugin-frames@0.41.3':
- dependencies:
- '@expressive-code/core': 0.41.3
-
- '@expressive-code/plugin-shiki@0.41.3':
- dependencies:
- '@expressive-code/core': 0.41.3
- shiki: 3.13.0
-
- '@expressive-code/plugin-text-markers@0.41.3':
- dependencies:
- '@expressive-code/core': 0.41.3
-
'@faker-js/faker@10.1.0': {}
'@floating-ui/core@1.7.3':
@@ -6669,10 +6724,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@nanostores/persistent@1.1.0(nanostores@1.0.1)':
- dependencies:
- nanostores: 1.0.1
-
'@napi-rs/wasm-runtime@1.0.7':
dependencies:
'@emnapi/core': 1.5.0
@@ -6917,6 +6968,8 @@ snapshots:
'@pagefind/darwin-x64@1.4.0':
optional: true
+ '@pagefind/default-ui@1.4.0': {}
+
'@pagefind/freebsd-x64@1.4.0':
optional: true
@@ -7018,6 +7071,57 @@ snapshots:
dependencies:
dotenv: 16.6.1
+ '@resvg/resvg-js-android-arm-eabi@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-android-arm64@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-darwin-arm64@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-darwin-x64@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-arm64-gnu@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-arm64-musl@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-x64-gnu@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-x64-musl@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-win32-arm64-msvc@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-win32-ia32-msvc@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-win32-x64-msvc@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js@2.6.2':
+ optionalDependencies:
+ '@resvg/resvg-js-android-arm-eabi': 2.6.2
+ '@resvg/resvg-js-android-arm64': 2.6.2
+ '@resvg/resvg-js-darwin-arm64': 2.6.2
+ '@resvg/resvg-js-darwin-x64': 2.6.2
+ '@resvg/resvg-js-linux-arm-gnueabihf': 2.6.2
+ '@resvg/resvg-js-linux-arm64-gnu': 2.6.2
+ '@resvg/resvg-js-linux-arm64-musl': 2.6.2
+ '@resvg/resvg-js-linux-x64-gnu': 2.6.2
+ '@resvg/resvg-js-linux-x64-musl': 2.6.2
+ '@resvg/resvg-js-win32-arm64-msvc': 2.6.2
+ '@resvg/resvg-js-win32-ia32-msvc': 2.6.2
+ '@resvg/resvg-js-win32-x64-msvc': 2.6.2
+
'@rolldown/binding-android-arm64@1.0.0-beta.43':
optional: true
@@ -7168,6 +7272,11 @@ snapshots:
dependencies:
'@shikijs/types': 3.13.0
+ '@shikijs/transformers@3.13.0':
+ dependencies:
+ '@shikijs/core': 3.13.0
+ '@shikijs/types': 3.13.0
+
'@shikijs/types@3.13.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
@@ -7175,6 +7284,13 @@ snapshots:
'@shikijs/vscode-textmate@10.0.2': {}
+ '@shuding/opentype.js@1.4.0-beta.0':
+ dependencies:
+ fflate: 0.7.4
+ string.prototype.codepointat: 0.2.1
+
+ '@stackblitz/sdk@1.11.0': {}
+
'@standard-schema/spec@1.0.0': {}
'@sveltejs/acorn-typescript@1.0.6(acorn@8.15.0)':
@@ -7245,12 +7361,12 @@ snapshots:
transitivePeerDependencies:
- typescript
- '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.41.0)(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.41.0)(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))':
+ '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.41.0)(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.41.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.41.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
debug: 4.4.3
svelte: 5.41.0
- vite: 6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
@@ -7265,14 +7381,14 @@ snapshots:
'@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.41.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.41.0)(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.41.0)(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
+ '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.41.0)(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.41.0)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
debug: 4.4.3
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.19
svelte: 5.41.0
vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)
- vitefu: 1.1.1(vite@6.3.6(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
+ vitefu: 1.1.1(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- supports-color
@@ -7504,6 +7620,8 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
+ '@types/html-escaper@3.0.4': {}
+
'@types/mdast@4.0.4':
dependencies:
'@types/unist': 3.0.3
@@ -7518,6 +7636,8 @@ snapshots:
'@types/node@12.20.55': {}
+ '@types/node@17.0.45': {}
+
'@types/node@18.19.130':
dependencies:
undici-types: 5.26.5
@@ -7534,6 +7654,10 @@ snapshots:
dependencies:
csstype: 3.1.3
+ '@types/sax@1.2.7':
+ dependencies:
+ '@types/node': 24.8.1
+
'@types/semver@7.7.1': {}
'@types/unist@2.0.11': {}
@@ -8064,6 +8188,8 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.1
+ arg@5.0.2: {}
+
argparse@1.0.10:
dependencies:
sprintf-js: 1.0.3
@@ -8095,10 +8221,20 @@ snapshots:
acorn: 8.15.0
astro: 5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)
- astro-expressive-code@0.41.3(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)):
+ astro-pagefind@1.8.5(astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)):
dependencies:
+ '@pagefind/default-ui': 1.4.0
astro: 5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)
- rehype-expressive-code: 0.41.3
+ pagefind: 1.4.0
+ sirv: 3.0.2
+
+ astro-seo@0.8.4(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3):
+ dependencies:
+ '@astrojs/check': 0.5.10(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)
+ transitivePeerDependencies:
+ - prettier
+ - prettier-plugin-astro
+ - typescript
astro@5.14.6(@types/node@24.8.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.52.4)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1):
dependencies:
@@ -8203,8 +8339,6 @@ snapshots:
async-sema@3.1.1: {}
- await-lock@2.2.2: {}
-
axobject-query@4.1.0: {}
bail@2.0.2: {}
@@ -8213,12 +8347,12 @@ snapshots:
base-64@1.0.0: {}
+ base64-js@0.0.8: {}
+
base64-js@1.5.1: {}
baseline-browser-mapping@2.8.16: {}
- bcp-47-match@2.0.3: {}
-
before-after-hook@4.0.0: {}
better-path-resolve@1.0.0:
@@ -8229,6 +8363,8 @@ snapshots:
dependencies:
require-from-string: 2.0.2
+ binary-extensions@2.3.0: {}
+
bindings@1.5.0:
dependencies:
file-uri-to-path: 1.0.0
@@ -8276,6 +8412,8 @@ snapshots:
camelcase@8.0.0: {}
+ camelize@1.0.1: {}
+
caniuse-lite@1.0.30001750: {}
ccount@2.0.1: {}
@@ -8302,6 +8440,18 @@ snapshots:
check-error@2.1.1: {}
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
chokidar@4.0.3:
dependencies:
readdirp: 4.1.2
@@ -8373,6 +8523,14 @@ snapshots:
dependencies:
uncrypto: 0.1.3
+ css-background-parser@0.1.0: {}
+
+ css-box-shadow@1.0.0-3: {}
+
+ css-color-keywords@1.0.0: {}
+
+ css-gradient-parser@0.0.17: {}
+
css-select@5.2.2:
dependencies:
boolbase: 1.0.0
@@ -8381,7 +8539,11 @@ snapshots:
domutils: 3.2.2
nth-check: 2.1.1
- css-selector-parser@3.1.3: {}
+ css-to-react-native@3.2.0:
+ dependencies:
+ camelize: 1.0.1
+ css-color-keywords: 1.0.0
+ postcss-value-parser: 4.2.0
css-tree@3.1.0:
dependencies:
@@ -8464,8 +8626,6 @@ snapshots:
dependencies:
path-type: 4.0.0
- direction@2.0.1: {}
-
dlv@1.1.3: {}
dom-accessibility-api@0.5.16: {}
@@ -8505,6 +8665,8 @@ snapshots:
'@emmetio/abbreviation': 2.3.3
'@emmetio/css-abbreviation': 2.1.8
+ emoji-regex-xs@2.0.1: {}
+
emoji-regex@10.5.0: {}
emoji-regex@8.0.0: {}
@@ -8574,6 +8736,8 @@ snapshots:
escalade@3.2.0: {}
+ escape-html@1.0.3: {}
+
escape-string-regexp@5.0.0: {}
esm-env@1.2.2: {}
@@ -8623,13 +8787,6 @@ snapshots:
expect-type@1.2.2: {}
- expressive-code@0.41.3:
- dependencies:
- '@expressive-code/core': 0.41.3
- '@expressive-code/plugin-frames': 0.41.3
- '@expressive-code/plugin-shiki': 0.41.3
- '@expressive-code/plugin-text-markers': 0.41.3
-
extend@3.0.2: {}
extendable-error@0.1.7: {}
@@ -8659,6 +8816,8 @@ snapshots:
optionalDependencies:
picomatch: 4.0.3
+ fflate@0.7.4: {}
+
file-uri-to-path@1.0.0: {}
fill-range@7.1.1:
@@ -8752,8 +8911,6 @@ snapshots:
graceful-fs@4.2.11: {}
- graphemer@1.4.0: {}
-
h3@1.15.4:
dependencies:
cookie-es: 1.2.2
@@ -8788,10 +8945,6 @@ snapshots:
vfile-location: 5.0.3
web-namespaces: 2.0.1
- hast-util-has-property@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
hast-util-is-element@3.0.0:
dependencies:
'@types/hast': 3.0.4
@@ -8816,24 +8969,6 @@ snapshots:
web-namespaces: 2.0.1
zwitch: 2.0.4
- hast-util-select@6.0.4:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- bcp-47-match: 2.0.3
- comma-separated-tokens: 2.0.3
- css-selector-parser: 3.1.3
- devlop: 1.1.0
- direction: 2.0.1
- hast-util-has-property: 3.0.0
- hast-util-to-string: 3.0.1
- hast-util-whitespace: 3.0.0
- nth-check: 2.1.1
- property-information: 7.1.0
- space-separated-tokens: 2.0.2
- unist-util-visit: 5.0.0
- zwitch: 2.0.4
-
hast-util-to-estree@3.1.3:
dependencies:
'@types/estree': 1.0.8
@@ -8899,10 +9034,6 @@ snapshots:
web-namespaces: 2.0.1
zwitch: 2.0.4
- hast-util-to-string@3.0.1:
- dependencies:
- '@types/hast': 3.0.4
-
hast-util-to-text@4.0.2:
dependencies:
'@types/hast': 3.0.4
@@ -8924,6 +9055,8 @@ snapshots:
he@1.2.0: {}
+ hex-rgb@4.3.0: {}
+
hookable@5.5.3: {}
html-encoding-sniffer@4.0.0:
@@ -8981,6 +9114,10 @@ snapshots:
is-alphabetical: 2.0.1
is-decimal: 2.0.1
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
is-decimal@2.0.1: {}
is-docker@3.0.0: {}
@@ -9021,8 +9158,6 @@ snapshots:
isexe@2.0.0: {}
- iso-datestring-validator@2.2.2: {}
-
jackspeak@3.4.3:
dependencies:
'@isaacs/cliui': 8.0.2
@@ -9146,6 +9281,11 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.30.1
lightningcss-win32-x64-msvc: 1.30.1
+ linebreak@1.1.0:
+ dependencies:
+ base64-js: 0.0.8
+ unicode-trie: 2.0.0
+
locate-character@3.0.0: {}
locate-path@5.0.0:
@@ -9662,14 +9802,10 @@ snapshots:
muggle-string@0.4.1: {}
- multiformats@9.9.0: {}
-
nanoid@3.3.11: {}
nanoid@5.1.6: {}
- nanostores@1.0.1: {}
-
neotraverse@0.6.18: {}
next@15.5.6(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(sass@1.93.2):
@@ -9836,6 +9972,11 @@ snapshots:
pako@0.2.9: {}
+ parse-css-color@0.2.1:
+ dependencies:
+ color-name: 1.1.4
+ hex-rgb: 4.3.0
+
parse-entities@4.0.2:
dependencies:
'@types/unist': 2.0.11
@@ -9900,15 +10041,7 @@ snapshots:
optionalDependencies:
fsevents: 2.3.2
- postcss-nested@6.2.0(postcss@8.5.6):
- dependencies:
- postcss: 8.5.6
- postcss-selector-parser: 6.1.2
-
- postcss-selector-parser@6.1.2:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
+ postcss-value-parser@4.2.0: {}
postcss@8.4.31:
dependencies:
@@ -10002,6 +10135,10 @@ snapshots:
pify: 4.0.1
strip-bom: 3.0.0
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
readdirp@4.1.2: {}
recma-build-jsx@1.0.0:
@@ -10056,10 +10193,6 @@ snapshots:
dependencies:
rc: 1.2.8
- rehype-expressive-code@0.41.3:
- dependencies:
- expressive-code: 0.41.3
-
rehype-parse@9.0.1:
dependencies:
'@types/hast': 3.0.4
@@ -10368,6 +10501,22 @@ snapshots:
'@parcel/watcher': 2.5.1
optional: true
+ satori@0.18.3:
+ dependencies:
+ '@shuding/opentype.js': 1.4.0-beta.0
+ css-background-parser: 0.1.0
+ css-box-shadow: 1.0.0-3
+ css-gradient-parser: 0.0.17
+ css-to-react-native: 3.2.0
+ emoji-regex-xs: 2.0.1
+ escape-html: 1.0.3
+ linebreak: 1.1.0
+ parse-css-color: 0.2.1
+ postcss-value-parser: 4.2.0
+ yoga-layout: 3.2.1
+
+ sax@1.4.1: {}
+
saxes@6.0.0:
dependencies:
xmlchars: 2.2.0
@@ -10440,6 +10589,13 @@ snapshots:
sisteransi@1.0.5: {}
+ sitemap@8.0.0:
+ dependencies:
+ '@types/node': 17.0.45
+ '@types/sax': 1.2.7
+ arg: 5.0.2
+ sax: 1.4.1
+
slash@3.0.0: {}
smol-toml@1.4.2: {}
@@ -10461,6 +10617,8 @@ snapshots:
std-env@3.9.0: {}
+ stream-replace-string@2.0.0: {}
+
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -10479,6 +10637,8 @@ snapshots:
get-east-asian-width: 1.4.0
strip-ansi: 7.1.2
+ string.prototype.codepointat@0.2.1: {}
+
stringify-entities@4.0.4:
dependencies:
character-entities-html4: 2.1.0
@@ -10606,8 +10766,6 @@ snapshots:
tinyspy@4.0.4: {}
- tlds@1.260.0: {}
-
tldts-core@7.0.17: {}
tldts@7.0.17:
@@ -10699,10 +10857,6 @@ snapshots:
ufo@1.6.1: {}
- uint8arrays@3.0.0:
- dependencies:
- multiformats: 9.9.0
-
ultrahtml@1.6.0: {}
unconfig@7.3.3:
@@ -10860,8 +11014,6 @@ snapshots:
punycode: 2.3.1
optional: true
- util-deprecate@1.0.2: {}
-
varint@6.0.0: {}
vfile-location@5.0.3:
@@ -10900,12 +11052,6 @@ snapshots:
- tsx
- yaml
- vite-plugin-pagefind@1.0.7(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)):
- dependencies:
- colorette: 2.0.20
- package-manager-detector: 0.2.11
- vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)
-
vite-plugin-transform-lucide-imports@0.3.0(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.2)(sass@1.93.2)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
'@sveltejs/acorn-typescript': 1.0.6(acorn@8.15.0)
@@ -11225,6 +11371,8 @@ snapshots:
yoctocolors@2.1.2: {}
+ yoga-layout@3.2.1: {}
+
zimmerframe@1.1.4: {}
zod-to-json-schema@3.24.6(zod@3.25.76):
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 8c4b0d5480..4f4fc8b092 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -8,15 +8,22 @@ catalog:
'@astrojs/mdx': 4.3.7
'@astrojs/partytown': 2.1.4
'@astrojs/react': 4.4.0
+ '@astrojs/sitemap': 3.6.0
'@astrojs/svelte': 7.2.0
'@astrojs/vercel': 8.2.10
- '@atproto/api': 0.17.3
'@changesets/cli': 2.29.7
'@clack/prompts': 0.11.0
'@faker-js/faker': 10.1.0
'@floating-ui/dom': 1.7.4
'@lucide/svelte': 0.546.0
- '@nanostores/persistent': 1.1.0
+ '@resvg/resvg-js': 2.6.2
+ '@shikijs/core': 3.13.0
+ '@shikijs/engine-javascript': 3.13.0
+ '@shikijs/langs': 3.13.0
+ '@shikijs/themes': 3.13.0
+ '@shikijs/transformers': 3.13.0
+ '@shikijs/types': 3.13.0
+ '@stackblitz/sdk': 1.11.0
'@sveltejs/adapter-auto': 7.0.0
'@sveltejs/adapter-vercel': 5.10.3
'@sveltejs/kit': 2.47.1
@@ -32,12 +39,11 @@ catalog:
'@trivago/prettier-plugin-sort-imports': 5.2.2
'@types/chroma-js': 3.1.1
'@types/estree': 1.0.8
- '@types/mdast': 4.0.4
+ '@types/html-escaper': 3.0.4
'@types/node': 24.8.1
'@types/react': 19.2.2
'@types/react-dom': 19.2.2
'@types/semver': 7.7.1
- '@types/unist': 3.0.3
'@vitejs/plugin-react': 5.0.4
'@zag-js/accordion': 1.26.3
'@zag-js/avatar': 1.26.3
@@ -65,30 +71,25 @@ catalog:
'@zag-js/tree-view': 1.26.3
astro: 5.14.6
astro-auto-import: 0.4.5
- astro-expressive-code: 0.41.3
+ astro-pagefind: 1.8.5
+ astro-seo: 0.8.4
chroma-js: 3.1.2
colorette: 2.0.20
commander: 14.0.1
detect-indent: 7.0.2
fuse.js: 7.1.0
+ html-escaper: 3.0.3
jsdom: 27.0.1
latest-version: 9.0.0
lucide-react: 0.546.0
magic-string: 0.30.19
- mdast-util-from-markdown: 2.0.2
- mdast-util-gfm: 3.1.0
- mdast-util-mdx: 3.0.0
- mdast-util-to-markdown: 2.1.2
- micromark-extension-mdxjs: 3.0.0
nanoid: 5.1.6
- nanostores: 1.0.1
next: 15.5.6
node-html-parser: 7.0.1
octokit: 5.0.4
oxlint: 1.23.0
oxlint-tsgolint: 0.2.0
package-manager-detector: 1.5.0
- pagefind: 1.4.0
playwright: 1.56.1
postcss: 8.5.6
prettier: 3.6.2
@@ -97,6 +98,7 @@ catalog:
react: 19.2.0
react-dom: 19.2.0
sass-embedded: 1.93.2
+ satori: 0.18.3
semver: 7.7.3
sharp: 0.34.4
shiki: 3.13.0
@@ -108,11 +110,9 @@ catalog:
tsdown: 0.15.8
type-fest: 5.1.0
typescript: 5.9.3
- unist-util-visit: 5.0.0
unplugin-macros: 0.18.2
unplugin-raw: 0.6.3
vite: 7.1.10
- vite-plugin-pagefind: 1.0.7
vite-plugin-transform-lucide-imports: 0.3.0
vitest: 3.2.4
zimmerframe: 1.1.4
diff --git a/sites/skeleton.dev/astro.config.ts b/sites/skeleton.dev/astro.config.ts
index 308a41a90b..47fd1e431d 100644
--- a/sites/skeleton.dev/astro.config.ts
+++ b/sites/skeleton.dev/astro.config.ts
@@ -2,98 +2,64 @@ import { generateTypeDocumentation } from './scripts/generate-type-documentation
import mdx from '@astrojs/mdx';
import partytown from '@astrojs/partytown';
import react from '@astrojs/react';
-import svelte, { vitePreprocess } from '@astrojs/svelte';
+import sitemap from '@astrojs/sitemap';
+import svelte from '@astrojs/svelte';
import vercel from '@astrojs/vercel';
import tailwindcss from '@tailwindcss/vite';
import type { AstroIntegration } from 'astro';
-import AutoImport from 'astro-auto-import';
-import expressiveCode from 'astro-expressive-code';
+import autoImport from 'astro-auto-import';
+import pagefind from 'astro-pagefind';
import { defineConfig } from 'astro/config';
-import { join } from 'node:path';
-import { fileURLToPath } from 'node:url';
-import { createIndex } from 'pagefind';
-import { pagefind } from 'vite-plugin-pagefind';
-import transformLucideImports from 'vite-plugin-transform-lucide-imports';
+import transformLucideImports, { SUPPORTED_EXTENSIONS } from 'vite-plugin-transform-lucide-imports';
-function skeleton(): AstroIntegration {
- return {
- name: 'skeleton',
- hooks: {
- 'astro:config:setup': async (ctx) => {
- if (ctx.command !== 'build') {
- return;
- }
- ctx.logger.info('Generating type documentation...');
- await generateTypeDocumentation();
- ctx.logger.info('Type documentation generated.');
- },
- 'astro:build:done': async (ctx) => {
- ctx.logger.info('Generating search index...');
- const pagefind = await createIndex({
- excludeSelectors: ['.expressive-code'],
- });
- if (!pagefind.index || pagefind.errors.length > 0) {
- throw new Error(`Failed to create search index: ${pagefind.errors.join(', ')}`);
- }
- await pagefind.index.addDirectory({
- path: fileURLToPath(ctx.dir),
- });
- const response = await pagefind.index.writeFiles({
- outputPath: join(fileURLToPath(ctx.dir), 'pagefind'),
- });
- if (response.errors.length > 0) {
- ctx.logger.error(`Failed to write search index.: ${response.errors.join(', ')}`);
- } else {
- ctx.logger.info('Search index generated.');
- }
- },
- },
- };
+export function getSite() {
+ if (import.meta.env.DEV) {
+ return 'http://localhost:4321';
+ }
+ if (process.env.VERCEL_ENV === 'production') {
+ return `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}`;
+ }
+ return `https://${process.env.VERCEL_URL}`;
}
export default defineConfig({
+ site: getSite(),
+ prefetch: true,
+ markdown: {
+ syntaxHighlight: false,
+ },
integrations: [
skeleton(),
- partytown(),
- svelte({
- preprocess: vitePreprocess(),
- compilerOptions: {
- experimental: {
- async: true,
- },
- },
- }),
react(),
- expressiveCode({
- defaultProps: { wrap: true },
- themes: ['dark-plus', 'github-dark'],
- }),
- AutoImport({
+ svelte(),
+ autoImport({
imports: [
{
- 'astro-expressive-code/components': ['Code'],
- '@/components/ui/api-table.astro': [['default', 'ApiTable']],
- '@/components/ui/preview.tsx': [['default', 'Preview']],
- '@/components/ui/framework-tabs.tsx': [['default', 'FrameworkTabs']],
+ './src/components/ui/framework.astro': [['default', 'Framework']],
+ './src/components/ui/api-table.astro': [['default', 'ApiTable']],
+ './src/components/ui/preview.svelte': [['default', 'Preview']],
+ './src/components/ui/alert.astro': [['default', 'Alert']],
},
],
}),
- /**
- * Note: Keep this as the last integration so that framework components are available in MDX.
- */
mdx(),
+ partytown(),
+ sitemap(),
+ pagefind(),
],
-
vite: {
+ build: {
+ rollupOptions: {
+ external: ['/pagefind/pagefind.js'],
+ },
+ },
+ assetsInclude: '**/pagefind.js',
plugins: [
- // @ts-expect-error - vite version mismatch
+ /* @ts-expect-error vite version mismatch */
tailwindcss(),
- // @ts-expect-error - vite version mismatch
- pagefind({
- outputDirectory: 'dist',
- }),
- // @ts-expect-error - vite version mismatch
+ /* @ts-expect-error vite version mismatch */
transformLucideImports({
+ extensions: [...SUPPORTED_EXTENSIONS, '.astro'],
onwarn(warning, defaultHandler) {
if (warning.message.match(/Skipping optimization of (\S+) because \1 is already a tree shaken package/)) {
return;
@@ -103,6 +69,21 @@ export default defineConfig({
}),
],
},
-
adapter: vercel(),
});
+
+function skeleton(): AstroIntegration {
+ return {
+ name: 'skeleton',
+ hooks: {
+ 'astro:config:setup': async (context) => {
+ if (context.command !== 'build') {
+ return;
+ }
+ context.logger.info('Generating type documentation...');
+ await generateTypeDocumentation();
+ context.logger.info('Type documentation generated.');
+ },
+ },
+ };
+}
diff --git a/sites/skeleton.dev/package.json b/sites/skeleton.dev/package.json
index 3829d94bb8..d37ccaaaf4 100644
--- a/sites/skeleton.dev/package.json
+++ b/sites/skeleton.dev/package.json
@@ -1,8 +1,7 @@
{
"name": "@skeletonlabs/skeleton.dev",
- "version": "0.0.1",
+ "version": "1.0.0",
"private": true,
- "type": "module",
"scripts": {
"dev": "astro dev",
"build": "astro build",
@@ -15,39 +14,40 @@
"@astrojs/mdx": "catalog:",
"@astrojs/partytown": "catalog:",
"@astrojs/react": "catalog:",
+ "@astrojs/sitemap": "catalog:",
"@astrojs/svelte": "catalog:",
"@astrojs/vercel": "catalog:",
- "@atproto/api": "catalog:",
"@faker-js/faker": "catalog:",
"@floating-ui/dom": "catalog:",
"@lucide/svelte": "catalog:",
- "@nanostores/persistent": "catalog:",
+ "@resvg/resvg-js": "catalog:",
+ "@shikijs/core": "catalog:",
+ "@shikijs/engine-javascript": "catalog:",
+ "@shikijs/langs": "catalog:",
+ "@shikijs/themes": "catalog:",
+ "@shikijs/transformers": "catalog:",
+ "@shikijs/types": "catalog:",
"@skeletonlabs/skeleton": "workspace:*",
"@skeletonlabs/skeleton-common": "workspace:*",
"@skeletonlabs/skeleton-react": "workspace:*",
"@skeletonlabs/skeleton-svelte": "workspace:*",
- "@tailwindcss/forms": "catalog:",
+ "@stackblitz/sdk": "catalog:",
"@tailwindcss/vite": "catalog:",
- "@types/mdast": "catalog:",
+ "@types/html-escaper": "catalog:",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
- "@types/unist": "catalog:",
"astro": "catalog:",
"astro-auto-import": "catalog:",
- "astro-expressive-code": "catalog:",
+ "astro-pagefind": "catalog:",
+ "astro-seo": "catalog:",
"fuse.js": "catalog:",
+ "html-escaper": "catalog:",
"lucide-react": "catalog:",
- "mdast-util-from-markdown": "catalog:",
- "mdast-util-gfm": "catalog:",
- "mdast-util-mdx": "catalog:",
- "mdast-util-to-markdown": "catalog:",
- "micromark-extension-mdxjs": "catalog:",
- "nanostores": "catalog:",
"octokit": "catalog:",
- "pagefind": "catalog:",
"playwright": "catalog:",
"react": "catalog:",
"react-dom": "catalog:",
+ "satori": "catalog:",
"sharp": "catalog:",
"shiki": "catalog:",
"svelte": "catalog:",
@@ -55,8 +55,7 @@
"tinyglobby": "catalog:",
"ts-morph": "catalog:",
"typescript": "catalog:",
- "unist-util-visit": "catalog:",
- "vite-plugin-pagefind": "catalog:",
"vite-plugin-transform-lucide-imports": "catalog:"
- }
+ },
+ "type": "module"
}
diff --git a/sites/skeleton.dev/public/llms.txt b/sites/skeleton.dev/public/llms.txt
deleted file mode 100644
index d153f63a32..0000000000
--- a/sites/skeleton.dev/public/llms.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-# Skeleton Documentation for LLMs
-
-> Skeleton provides a uniform design language and structured framework for controlling the look and feel of your product and user experience. It serves as an opinionated design system that aims to greatly reduce the amount of time spent managing design elements and patterns, allowing you to more quickly build and manage your frontend interfaces at scale.
-
-
-## Documentation Sets
-
-- [React package documentation](https://skeleton.dev/llms-react.txt): documentation with React specific examples.
-- [Svelte package documentation](https://skeleton.dev/llms-svelte.txt): documentation with Svelte specific examples.
-
-## Notes
-- The content is automatically generated from the official documentation
-- Skeleton's core features are framework agnostic, only requiring the use of [Tailwind CSS](https://tailwindcss.com/). This provides full access to all design system features, while enabling you to standardize the design process for your framework of choice.
-
diff --git a/sites/skeleton.dev/scripts/generate-showcase-project-thumbnails.ts b/sites/skeleton.dev/scripts/generate-showcase-project-thumbnails.ts
index 3c6bcdd350..6a980c2b2b 100644
--- a/sites/skeleton.dev/scripts/generate-showcase-project-thumbnails.ts
+++ b/sites/skeleton.dev/scripts/generate-showcase-project-thumbnails.ts
@@ -6,7 +6,7 @@ import { glob } from 'tinyglobby';
const ROOT_DIRECTORY = join(dirname(fileURLToPath(import.meta.url)), '..');
const SHOWCASE_PROJECTS_DIRECTORY = join(ROOT_DIRECTORY, 'src', 'content', 'showcase-projects');
-const OUTPUT_DIRECTORY = join(ROOT_DIRECTORY, 'src', 'images', 'showcase-project-thumbnails');
+const OUTPUT_DIRECTORY = join(ROOT_DIRECTORY, 'src', 'assets', 'showcase-project-thumbnails');
async function generateShowcaseProjectThumbnails() {
const browser = await chromium.launch();
@@ -28,23 +28,35 @@ async function generateShowcaseProjectThumbnails() {
await Promise.all(
projects.map(async (project) => {
- for (const colorScheme of ['light', 'dark'] as const) {
- const page = await browser.newPage({
- viewport: { width: 1920, height: 1080 },
- });
- await page.emulateMedia({ colorScheme });
- await page.goto(project.url, { waitUntil: 'networkidle' });
- for (const instruction of project.playwright?.instructions ?? []) {
- // oxlint-disable-next-line no-implied-eval
- const fn = new Function('page', `return (async () => { ${instruction} })()`);
- await fn(page);
- }
- await page.screenshot({ path: join(OUTPUT_DIRECTORY, `${project.slug}-${colorScheme}.png`) });
- await page.close();
+ try {
+ await Promise.all(
+ (['light', 'dark'] as const).map(async (colorScheme) => {
+ const page = await browser.newPage({ viewport: { width: 1920, height: 1080 } });
+ await page.emulateMedia({ colorScheme });
+ await page.goto(project.url, {
+ waitUntil: 'domcontentloaded',
+ });
+ // Let client side rendering finish
+ await page.waitForTimeout(2500);
+
+ for (const instruction of project.playwright?.instructions ?? []) {
+ // oxlint-disable-next-line no-implied-eval
+ const fn = new Function('page', `return (async () => { ${instruction} })()`);
+ await fn(page);
+ }
+
+ await page.screenshot({
+ path: join(OUTPUT_DIRECTORY, `${project.slug}-${colorScheme}.png`),
+ });
+
+ await page.close();
+ }),
+ );
+ } catch {
+ console.warn(`Failed to generate thumbnail for project "${project.slug}", skipping...`);
}
}),
);
-
await browser.close();
}
diff --git a/sites/skeleton.dev/src/app.css b/sites/skeleton.dev/src/app.css
index f6b11b4a59..61354e930b 100644
--- a/sites/skeleton.dev/src/app.css
+++ b/sites/skeleton.dev/src/app.css
@@ -1,6 +1,4 @@
@import 'tailwindcss';
-@plugin "@tailwindcss/forms";
-
@import '@skeletonlabs/skeleton';
@import '@skeletonlabs/skeleton-svelte';
@import '@skeletonlabs/skeleton-react';
@@ -27,61 +25,47 @@
@import '@skeletonlabs/skeleton/themes/vox';
@import '@skeletonlabs/skeleton/themes/wintry';
-/* Set Selector dark mode strategy */
-@custom-variant dark (&:where([data-mode="dark"], [data-mode="dark"] *));
-
-/* Global Styles */
-
-html {
- scroll-behavior: smooth;
- scrollbar-gutter: stable;
-}
-
-/* Local Utilities --- */
+@custom-variant dark {
+ &:where([data-mode='dark'], [data-mode='dark'] *) {
+ @slot;
+ }
-.flex-centered {
- display: flex;
- align-items: center;
- justify-content: center;
+ @media (prefers-color-scheme: dark) {
+ &:where([data-mode='system'], [data-mode='system'] *) {
+ @slot;
+ }
+ }
}
-/* https://stackoverflow.com/a/13996191 */
-.bg-noise {
+@utility bg-noise {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAUVBMVEWFhYWDg4N3d3dtbW17e3t1dXWBgYGHh4d5eXlzc3OLi4ubm5uVlZWPj4+NjY19fX2JiYl/f39ra2uRkZGZmZlpaWmXl5dvb29xcXGTk5NnZ2c8TV1mAAAAG3RSTlNAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAvEOwtAAAFVklEQVR4XpWWB67c2BUFb3g557T/hRo9/WUMZHlgr4Bg8Z4qQgQJlHI4A8SzFVrapvmTF9O7dmYRFZ60YiBhJRCgh1FYhiLAmdvX0CzTOpNE77ME0Zty/nWWzchDtiqrmQDeuv3powQ5ta2eN0FY0InkqDD73lT9c9lEzwUNqgFHs9VQce3TVClFCQrSTfOiYkVJQBmpbq2L6iZavPnAPcoU0dSw0SUTqz/GtrGuXfbyyBniKykOWQWGqwwMA7QiYAxi+IlPdqo+hYHnUt5ZPfnsHJyNiDtnpJyayNBkF6cWoYGAMY92U2hXHF/C1M8uP/ZtYdiuj26UdAdQQSXQErwSOMzt/XWRWAz5GuSBIkwG1H3FabJ2OsUOUhGC6tK4EMtJO0ttC6IBD3kM0ve0tJwMdSfjZo+EEISaeTr9P3wYrGjXqyC1krcKdhMpxEnt5JetoulscpyzhXN5FRpuPHvbeQaKxFAEB6EN+cYN6xD7RYGpXpNndMmZgM5Dcs3YSNFDHUo2LGfZuukSWyUYirJAdYbF3MfqEKmjM+I2EfhA94iG3L7uKrR+GdWD73ydlIB+6hgref1QTlmgmbM3/LeX5GI1Ux1RWpgxpLuZ2+I+IjzZ8wqE4nilvQdkUdfhzI5QDWy+kw5Wgg2pGpeEVeCCA7b85BO3F9DzxB3cdqvBzWcmzbyMiqhzuYqtHRVG2y4x+KOlnyqla8AoWWpuBoYRxzXrfKuILl6SfiWCbjxoZJUaCBj1CjH7GIaDbc9kqBY3W/Rgjda1iqQcOJu2WW+76pZC9QG7M00dffe9hNnseupFL53r8F7YHSwJWUKP2q+k7RdsxyOB11n0xtOvnW4irMMFNV4H0uqwS5ExsmP9AxbDTc9JwgneAT5vTiUSm1E7BSflSt3bfa1tv8Di3R8n3Af7MNWzs49hmauE2wP+ttrq+AsWpFG2awvsuOqbipWHgtuvuaAE+A1Z/7gC9hesnr+7wqCwG8c5yAg3AL1fm8T9AZtp/bbJGwl1pNrE7RuOX7PeMRUERVaPpEs+yqeoSmuOlokqw49pgomjLeh7icHNlG19yjs6XXOMedYm5xH2YxpV2tc0Ro2jJfxC50ApuxGob7lMsxfTbeUv07TyYxpeLucEH1gNd4IKH2LAg5TdVhlCafZvpskfncCfx8pOhJzd76bJWeYFnFciwcYfubRc12Ip/ppIhA1/mSZ/RxjFDrJC5xifFjJpY2Xl5zXdguFqYyTR1zSp1Y9p+tktDYYSNflcxI0iyO4TPBdlRcpeqjK/piF5bklq77VSEaA+z8qmJTFzIWiitbnzR794USKBUaT0NTEsVjZqLaFVqJoPN9ODG70IPbfBHKK+/q/AWR0tJzYHRULOa4MP+W/HfGadZUbfw177G7j/OGbIs8TahLyynl4X4RinF793Oz+BU0saXtUHrVBFT/DnA3ctNPoGbs4hRIjTok8i+algT1lTHi4SxFvONKNrgQFAq2/gFnWMXgwffgYMJpiKYkmW3tTg3ZQ9Jq+f8XN+A5eeUKHWvJWJ2sgJ1Sop+wwhqFVijqWaJhwtD8MNlSBeWNNWTa5Z5kPZw5+LbVT99wqTdx29lMUH4OIG/D86ruKEauBjvH5xy6um/Sfj7ei6UUVk4AIl3MyD4MSSTOFgSwsH/QJWaQ5as7ZcmgBZkzjjU1UrQ74ci1gWBCSGHtuV1H2mhSnO3Wp/3fEV5a+4wz//6qy8JxjZsmxxy5+4w9CDNJY09T072iKG0EnOS0arEYgXqYnXcYHwjTtUNAcMelOd4xpkoqiTYICWFq0JSiPfPDQdnt+4/wuqcXY47QILbgAAAABJRU5ErkJggg==);
background-blend-mode: overlay;
}
-/* Astro Components --- */
-
-.astro-code {
+@utility card-filled-enhanced {
border-radius: var(--radius-container);
- padding: --spacing(4);
+ background-color: var(--color-primary-500);
+ color: var(--color-primary-contrast-500);
}
-/* Theme Enhancements --- */
+@utility linker {
+ border-radius: var(--radius-container);
+ display: flex;
+ justify-content: center;
+ padding-inline: --spacing(4);
+ padding-block: --spacing(10);
+ background-color: var(--color-primary-500);
+ color: var(--color-primary-contrast-500);
+}
-/* Homepage Gradients */
-.gradient-homepage-one {
- background-size: cover;
- background-image:
- radial-gradient(at 24% 25%, color-mix(in oklab, var(--color-primary-500) 30%, transparent) 0px, transparent 30%),
- radial-gradient(at 35% 13%, color-mix(in oklab, var(--color-success-500) 18%, transparent) 0px, transparent 30%),
- radial-gradient(at 100% 64%, color-mix(in oklab, var(--color-error-500) 3%, transparent) 0px, transparent 40%);
+:root {
+ --header-height: 70px;
}
-.gradient-homepage-two {
- background-size: cover;
- background-image:
- radial-gradient(at 25% 40%, color-mix(in oklab, var(--color-primary-500) 10%, transparent) 0px, transparent 35%),
- radial-gradient(at 100% 58%, color-mix(in oklab, var(--color-success-500) 5%, transparent) 0px, transparent 35%);
+
+html {
+ scrollbar-gutter: stable;
}
-/* Inner Page Gradient */
-/*
-[data-theme='concord'],
-[data-theme='reign'],
-[data-theme='terminus'],
-[data-theme='vox'],
-*/
[data-theme='catppuccin'],
[data-theme='cerberus'],
[data-theme='crimson'],
@@ -107,74 +91,22 @@ html {
}
}
-/* Filled Cards */
-.card-filled-enhanced {
- border-radius: var(--radius-container);
- background-color: var(--color-primary-500);
- color: var(--color-primary-contrast-500);
-}
-
-/* Linker */
-/* Prominent link elements for MDX pages */
-
-.linker {
- border-radius: var(--radius-container);
- display: flex;
- justify-content: center;
- padding-inline: --spacing(4);
- padding-block: --spacing(10);
- background-color: var(--color-primary-500);
- color: var(--color-primary-contrast-500);
-}
-
-/* Floating UI */
-/* https://floating-ui.com/docs/tutorial#making-the-tooltip-float */
-/* https://floating-ui-svelte.vercel.app/docs/getting-started */
-
-.floating {
- width: max-content;
- position: absolute;
- top: 0;
- left: 0;
-}
+/* Hide Scrollbars Tracks */
-/* useTransition - https://floating-ui.com/docs/useTransition#usetransitionstatus */
-.floating {
- transition-property: opacity;
-}
-.floating[data-status='open'],
-.floating[data-status='close'] {
- transition-duration: 250ms;
-}
-.floating[data-status='initial'],
-.floating[data-status='close'] {
- opacity: 0;
+.hide-scrollbar-track {
+ scrollbar-color: var(--color-surface-300-700) rgba(0, 0, 0, 0); /* thumb / track */
}
-/* Carbon Ad Styles */
+/* Animations */
-#carbonads {
- background-color: var(--color-surface-50-950);
- border-width: 1px;
- border-color: var(--color-surface-200-800);
-}
-#carbonads .carbon-wrap {
- display: grid;
- grid-template-columns: auto 1fr;
- gap: --spacing(3);
-}
-#carbonads .carbon-text {
- font-size: 11px;
- padding: --spacing(1);
- text-decoration-line: none;
- opacity: 0.75;
+@keyframes spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
}
-#carbonads .carbon-poweredby {
- display: block;
- background-color: var(--color-surface-100-900);
- color: var(--color-surface-600-400);
- font-size: 10px;
- padding: --spacing(1);
- text-align: right;
- text-transform: uppercase;
+.spin-360 {
+ animation: spin 5s linear infinite; /* Shorthand */
}
diff --git a/sites/skeleton.dev/src/images/brand/skeleton-full.svg b/sites/skeleton.dev/src/assets/branding/skeleton-big.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/skeleton-full.svg
rename to sites/skeleton.dev/src/assets/branding/skeleton-big.svg
diff --git a/sites/skeleton.dev/src/images/brand/skeleton.svg b/sites/skeleton.dev/src/assets/branding/skeleton.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/skeleton.svg
rename to sites/skeleton.dev/src/assets/branding/skeleton.svg
diff --git a/sites/skeleton.dev/public/favicon.png b/sites/skeleton.dev/src/assets/favicon.png
similarity index 100%
rename from sites/skeleton.dev/public/favicon.png
rename to sites/skeleton.dev/src/assets/favicon.png
diff --git a/sites/skeleton.dev/src/images/headless/bits-ui/bits-banner.png b/sites/skeleton.dev/src/assets/headless/bits-ui/banner.png
similarity index 100%
rename from sites/skeleton.dev/src/images/headless/bits-ui/bits-banner.png
rename to sites/skeleton.dev/src/assets/headless/bits-ui/banner.png
diff --git a/sites/skeleton.dev/src/images/headless/bits-ui/bits-component.gif b/sites/skeleton.dev/src/assets/headless/bits-ui/date-picker.gif
similarity index 100%
rename from sites/skeleton.dev/src/images/headless/bits-ui/bits-component.gif
rename to sites/skeleton.dev/src/assets/headless/bits-ui/date-picker.gif
diff --git a/sites/skeleton.dev/src/images/headless/melt-ui/melt-component.gif b/sites/skeleton.dev/src/assets/headless/melt-ui/accordion.gif
similarity index 100%
rename from sites/skeleton.dev/src/images/headless/melt-ui/melt-component.gif
rename to sites/skeleton.dev/src/assets/headless/melt-ui/accordion.gif
diff --git a/sites/skeleton.dev/src/images/headless/melt-ui/melt-banner.png b/sites/skeleton.dev/src/assets/headless/melt-ui/banner.png
similarity index 100%
rename from sites/skeleton.dev/src/images/headless/melt-ui/melt-banner.png
rename to sites/skeleton.dev/src/assets/headless/melt-ui/banner.png
diff --git a/sites/skeleton.dev/src/images/headless/radix-ui/radix-banner.png b/sites/skeleton.dev/src/assets/headless/radix-ui/banner.png
similarity index 100%
rename from sites/skeleton.dev/src/images/headless/radix-ui/radix-banner.png
rename to sites/skeleton.dev/src/assets/headless/radix-ui/banner.png
diff --git a/sites/skeleton.dev/src/images/headless/radix-ui/radix-component.gif b/sites/skeleton.dev/src/assets/headless/radix-ui/toggle-group.gif
similarity index 100%
rename from sites/skeleton.dev/src/images/headless/radix-ui/radix-component.gif
rename to sites/skeleton.dev/src/assets/headless/radix-ui/toggle-group.gif
diff --git a/sites/skeleton.dev/src/assets/landing-page/massive-attack-mezzanine.webp b/sites/skeleton.dev/src/assets/landing-page/massive-attack-mezzanine.webp
new file mode 100644
index 0000000000..c8a293df34
Binary files /dev/null and b/sites/skeleton.dev/src/assets/landing-page/massive-attack-mezzanine.webp differ
diff --git a/sites/skeleton.dev/src/assets/landing-page/skeleton-figma-ui-kit.png b/sites/skeleton.dev/src/assets/landing-page/skeleton-figma-ui-kit.png
new file mode 100644
index 0000000000..3e04d6cc5e
Binary files /dev/null and b/sites/skeleton.dev/src/assets/landing-page/skeleton-figma-ui-kit.png differ
diff --git a/sites/skeleton.dev/src/images/brand/astro.svg b/sites/skeleton.dev/src/assets/logos/astro.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/astro.svg
rename to sites/skeleton.dev/src/assets/logos/astro.svg
diff --git a/sites/skeleton.dev/src/images/brand/bluesky.svg b/sites/skeleton.dev/src/assets/logos/bluesky.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/bluesky.svg
rename to sites/skeleton.dev/src/assets/logos/bluesky.svg
diff --git a/sites/skeleton.dev/src/assets/logos/chatgpt.svg b/sites/skeleton.dev/src/assets/logos/chatgpt.svg
new file mode 100644
index 0000000000..d65783fa6a
--- /dev/null
+++ b/sites/skeleton.dev/src/assets/logos/chatgpt.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sites/skeleton.dev/src/assets/logos/claude.svg b/sites/skeleton.dev/src/assets/logos/claude.svg
new file mode 100644
index 0000000000..bd179f0167
--- /dev/null
+++ b/sites/skeleton.dev/src/assets/logos/claude.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/sites/skeleton.dev/src/images/brand/discord.svg b/sites/skeleton.dev/src/assets/logos/discord.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/discord.svg
rename to sites/skeleton.dev/src/assets/logos/discord.svg
diff --git a/sites/skeleton.dev/src/images/brand/github.svg b/sites/skeleton.dev/src/assets/logos/github.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/github.svg
rename to sites/skeleton.dev/src/assets/logos/github.svg
diff --git a/sites/skeleton.dev/src/images/brand/react.svg b/sites/skeleton.dev/src/assets/logos/react.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/react.svg
rename to sites/skeleton.dev/src/assets/logos/react.svg
diff --git a/sites/skeleton.dev/src/images/brand/solid.svg b/sites/skeleton.dev/src/assets/logos/solid.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/solid.svg
rename to sites/skeleton.dev/src/assets/logos/solid.svg
diff --git a/sites/skeleton.dev/src/images/brand/svelte.svg b/sites/skeleton.dev/src/assets/logos/svelte.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/svelte.svg
rename to sites/skeleton.dev/src/assets/logos/svelte.svg
diff --git a/sites/skeleton.dev/src/images/brand/vue.svg b/sites/skeleton.dev/src/assets/logos/vue.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/vue.svg
rename to sites/skeleton.dev/src/assets/logos/vue.svg
diff --git a/sites/skeleton.dev/src/images/brand/youtube.svg b/sites/skeleton.dev/src/assets/logos/youtube.svg
similarity index 100%
rename from sites/skeleton.dev/src/images/brand/youtube.svg
rename to sites/skeleton.dev/src/assets/logos/youtube.svg
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/5-letter-rogue-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/5-letter-rogue-dark.png
new file mode 100644
index 0000000000..c41a9e7f66
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/5-letter-rogue-dark.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/5-letter-rogue-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/5-letter-rogue-light.png
new file mode 100644
index 0000000000..9865ead8f2
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/5-letter-rogue-light.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/andrea-cerasoni-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/andrea-cerasoni-dark.png
new file mode 100644
index 0000000000..3240f704a5
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/andrea-cerasoni-dark.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/andrea-cerasoni-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/andrea-cerasoni-light.png
new file mode 100644
index 0000000000..c36b9f969c
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/andrea-cerasoni-light.png differ
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/bark-acedemy-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/bark-acedemy-dark.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/bark-acedemy-dark.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/bark-acedemy-dark.png
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/bark-acedemy-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/bark-acedemy-light.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/bark-acedemy-light.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/bark-acedemy-light.png
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/endigo-design-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/endigo-design-dark.png
new file mode 100644
index 0000000000..65a5fdd3d3
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/endigo-design-dark.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/endigo-design-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/endigo-design-light.png
new file mode 100644
index 0000000000..04565b86c4
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/endigo-design-light.png differ
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/equimake-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/equimake-dark.png
similarity index 64%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/equimake-dark.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/equimake-dark.png
index e6381b2e5c..2ca3fc428a 100644
Binary files a/sites/skeleton.dev/src/images/showcase-project-thumbnails/equimake-dark.png and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/equimake-dark.png differ
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/equimake-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/equimake-light.png
similarity index 59%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/equimake-light.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/equimake-light.png
index a81ccf7a2e..4ad4516509 100644
Binary files a/sites/skeleton.dev/src/images/showcase-project-thumbnails/equimake-light.png and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/equimake-light.png differ
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/hoorai-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/hoorai-dark.png
similarity index 80%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/hoorai-dark.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/hoorai-dark.png
index c56302e3e5..390bbdfe1b 100644
Binary files a/sites/skeleton.dev/src/images/showcase-project-thumbnails/hoorai-dark.png and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/hoorai-dark.png differ
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/hoorai-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/hoorai-light.png
similarity index 81%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/hoorai-light.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/hoorai-light.png
index 1087eca531..6936555ee7 100644
Binary files a/sites/skeleton.dev/src/images/showcase-project-thumbnails/hoorai-light.png and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/hoorai-light.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/minnestay-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/minnestay-dark.png
new file mode 100644
index 0000000000..31aafd7f95
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/minnestay-dark.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/minnestay-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/minnestay-light.png
new file mode 100644
index 0000000000..cf63cdb3ce
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/minnestay-light.png differ
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/superforms-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/superforms-dark.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/superforms-dark.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/superforms-dark.png
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/superforms-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/superforms-light.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/superforms-light.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/superforms-light.png
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/svelte-sirens-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/svelte-sirens-dark.png
new file mode 100644
index 0000000000..10e28d5872
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/svelte-sirens-dark.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/svelte-sirens-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/svelte-sirens-light.png
new file mode 100644
index 0000000000..8a2deafddd
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/svelte-sirens-light.png differ
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/sveltey-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/sveltey-dark.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/sveltey-dark.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/sveltey-dark.png
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/sveltey-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/sveltey-light.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/sveltey-light.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/sveltey-light.png
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/texpile-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/texpile-dark.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/texpile-dark.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/texpile-dark.png
diff --git a/sites/skeleton.dev/src/images/showcase-project-thumbnails/texpile-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/texpile-light.png
similarity index 100%
rename from sites/skeleton.dev/src/images/showcase-project-thumbnails/texpile-light.png
rename to sites/skeleton.dev/src/assets/showcase-project-thumbnails/texpile-light.png
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/typogram-dark.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/typogram-dark.png
new file mode 100644
index 0000000000..2d2362090b
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/typogram-dark.png differ
diff --git a/sites/skeleton.dev/src/assets/showcase-project-thumbnails/typogram-light.png b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/typogram-light.png
new file mode 100644
index 0000000000..2d2362090b
Binary files /dev/null and b/sites/skeleton.dev/src/assets/showcase-project-thumbnails/typogram-light.png differ
diff --git a/sites/skeleton.dev/src/assets/sponsors/github.png b/sites/skeleton.dev/src/assets/sponsors/github.png
new file mode 100644
index 0000000000..c4d1cb726a
Binary files /dev/null and b/sites/skeleton.dev/src/assets/sponsors/github.png differ
diff --git a/sites/skeleton.dev/src/assets/sponsors/kofi.png b/sites/skeleton.dev/src/assets/sponsors/kofi.png
new file mode 100644
index 0000000000..cb7553dc9e
Binary files /dev/null and b/sites/skeleton.dev/src/assets/sponsors/kofi.png differ
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/z-index.tsx b/sites/skeleton.dev/src/components/examples/components/combobox/react/z-index.tsx
deleted file mode 100644
index ae26368b55..0000000000
--- a/sites/skeleton.dev/src/components/examples/components/combobox/react/z-index.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import { Combobox, Portal, type ComboboxRootProps, useListCollection } from '@skeletonlabs/skeleton-react';
-import { useState } from 'react';
-
-const data = [
- { label: 'Apple', value: 'apple' },
- { label: 'Banana', value: 'banana' },
- { label: 'Orange', value: 'orange' },
- { label: 'Carrot', value: 'carrot' },
- { label: 'Broccoli', value: 'broccoli' },
- { label: 'Spinach', value: 'spinach' },
-];
-
-export default function ZIndex() {
- const [items, setItems] = useState(data);
-
- const collection = useListCollection({
- items: items,
- itemToString: (item) => item.label,
- itemToValue: (item) => item.value,
- });
-
- const onOpenChange = () => {
- setItems(data);
- };
-
- const onInputValueChange: ComboboxRootProps['onInputValueChange'] = (event) => {
- const filtered = data.filter((item) => item.value.toLowerCase().includes(event.inputValue.toLowerCase()));
- if (filtered.length > 0) {
- setItems(filtered);
- } else {
- setItems(data);
- }
- };
-
- return (
-
-
-
-
-
-
-
-
- {items.map((item) => (
-
- {item.label}
-
-
- ))}
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/z-index.svelte b/sites/skeleton.dev/src/components/examples/components/combobox/svelte/z-index.svelte
deleted file mode 100644
index d0398ed215..0000000000
--- a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/z-index.svelte
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {#each items as item (item.value)}
-
- {item.label}
-
-
- {/each}
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/examples/design/typography/mark.astro b/sites/skeleton.dev/src/components/examples/design/typography/mark.astro
index 2518e6a45e..b4df701481 100644
--- a/sites/skeleton.dev/src/components/examples/design/typography/mark.astro
+++ b/sites/skeleton.dev/src/components/examples/design/typography/mark.astro
@@ -1,4 +1,4 @@
-
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, aliquid . Molestias, odio illum voluptatibus natus dignissimos , quidem est unde aspernatur veniam pariatur fuga.
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nesciunt, aliquid . Molestias, odio illum voluptatibus
+ natus dignissimos , quidem est unde aspernatur veniam pariatur fuga.
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/react/collapsible.tsx b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/collapsible.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/react/collapsible.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/react/collapsible.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/react/controlled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/controlled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/react/controlled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/react/controlled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/react/indicator.tsx b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/indicator.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/react/indicator.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/react/indicator.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/react/multiple.tsx b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/multiple.tsx
similarity index 95%
rename from sites/skeleton.dev/src/components/examples/components/accordion/react/multiple.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/react/multiple.tsx
index d71c9586ac..42fc89be83 100644
--- a/sites/skeleton.dev/src/components/examples/components/accordion/react/multiple.tsx
+++ b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/multiple.tsx
@@ -1,5 +1,7 @@
import { Accordion } from '@skeletonlabs/skeleton-react';
+// [!code highlight]
+
export default function Multiple() {
return (
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/react/orientation.tsx b/sites/skeleton.dev/src/components/examples/framework-components/accordion/react/orientation.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/react/orientation.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/react/orientation.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/svelte/collapsible.svelte b/sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/collapsible.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/svelte/collapsible.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/collapsible.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/svelte/controlled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/controlled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/svelte/controlled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/controlled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/svelte/indicator.svelte b/sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/indicator.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/svelte/indicator.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/indicator.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/svelte/multiple.svelte b/sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/multiple.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/svelte/multiple.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/multiple.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/accordion/svelte/orientation.svelte b/sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/orientation.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/accordion/svelte/orientation.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/accordion/svelte/orientation.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/react/centered.tsx b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/centered.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/react/centered.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/centered.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/react/extended.tsx b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/extended.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/react/extended.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/extended.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/react/responsive.tsx b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/responsive.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/react/responsive.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/react/responsive.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/svelte/centered.svelte b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/centered.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/svelte/centered.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/centered.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/svelte/extended.svelte b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/extended.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/svelte/extended.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/extended.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/app-bar/svelte/responsive.svelte b/sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/responsive.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/app-bar/svelte/responsive.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/app-bar/svelte/responsive.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/avatar/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/avatar/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/avatar/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/avatar/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/avatar/react/fallback.tsx b/sites/skeleton.dev/src/components/examples/framework-components/avatar/react/fallback.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/avatar/react/fallback.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/avatar/react/fallback.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/avatar/react/filter.tsx b/sites/skeleton.dev/src/components/examples/framework-components/avatar/react/filter.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/avatar/react/filter.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/avatar/react/filter.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/avatar/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/avatar/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/avatar/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/avatar/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/avatar/svelte/fallback.svelte b/sites/skeleton.dev/src/components/examples/framework-components/avatar/svelte/fallback.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/avatar/svelte/fallback.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/avatar/svelte/fallback.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/avatar/svelte/filter.svelte b/sites/skeleton.dev/src/components/examples/framework-components/avatar/svelte/filter.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/avatar/svelte/filter.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/avatar/svelte/filter.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/react/alignment.tsx b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/alignment.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/react/alignment.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/alignment.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/react/controlled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/controlled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/react/controlled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/controlled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/react/disabled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/disabled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/react/disabled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/disabled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/react/indicator.tsx b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/indicator.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/react/indicator.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/react/indicator.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/svelte/alignment.svelte b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/alignment.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/svelte/alignment.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/alignment.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/svelte/controlled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/controlled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/svelte/controlled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/controlled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/svelte/disabled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/disabled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/svelte/disabled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/disabled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/collapsible/svelte/indicator.svelte b/sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/indicator.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/collapsible/svelte/indicator.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/collapsible/svelte/indicator.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/auto-highlight.tsx b/sites/skeleton.dev/src/components/examples/framework-components/combobox/react/auto-highlight.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/react/auto-highlight.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/react/auto-highlight.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/custom-filter.tsx b/sites/skeleton.dev/src/components/examples/framework-components/combobox/react/custom-filter.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/react/custom-filter.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/react/custom-filter.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/combobox/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/combobox/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/disabled-item.tsx b/sites/skeleton.dev/src/components/examples/framework-components/combobox/react/disabled-item.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/react/disabled-item.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/react/disabled-item.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/group.tsx b/sites/skeleton.dev/src/components/examples/framework-components/combobox/react/group.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/react/group.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/react/group.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/react/multiple.tsx b/sites/skeleton.dev/src/components/examples/framework-components/combobox/react/multiple.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/react/multiple.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/react/multiple.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/auto-highlight.svelte b/sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/auto-highlight.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/svelte/auto-highlight.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/auto-highlight.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/custom-filter.svelte b/sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/custom-filter.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/svelte/custom-filter.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/custom-filter.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/disabled-item.svelte b/sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/disabled-item.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/svelte/disabled-item.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/disabled-item.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/group.svelte b/sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/group.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/svelte/group.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/group.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/combobox/svelte/multiple.svelte b/sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/multiple.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/combobox/svelte/multiple.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/combobox/svelte/multiple.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/react/controlled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/controlled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/react/controlled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/controlled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/react/disabled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/disabled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/react/disabled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/disabled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/react/inline.tsx b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/inline.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/react/inline.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/inline.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/react/min-max.tsx b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/min-max.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/react/min-max.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/min-max.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/react/range.tsx b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/range.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/react/range.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/range.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/react/with-selects.tsx b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/with-selects.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/react/with-selects.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/react/with-selects.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/svelte/controlled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/controlled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/svelte/controlled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/controlled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/svelte/disabled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/disabled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/svelte/disabled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/disabled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/svelte/inline.svelte b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/inline.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/svelte/inline.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/inline.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/svelte/min-max.svelte b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/min-max.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/svelte/min-max.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/min-max.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/svelte/range.svelte b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/range.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/svelte/range.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/range.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/date-picker/svelte/with-selects.svelte b/sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/with-selects.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/date-picker/svelte/with-selects.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/date-picker/svelte/with-selects.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/react/alert-dialog.tsx b/sites/skeleton.dev/src/components/examples/framework-components/dialog/react/alert-dialog.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/react/alert-dialog.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/react/alert-dialog.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/dialog/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/dialog/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/react/drawer.tsx b/sites/skeleton.dev/src/components/examples/framework-components/dialog/react/drawer.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/react/drawer.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/react/drawer.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/react/headless.tsx b/sites/skeleton.dev/src/components/examples/framework-components/dialog/react/headless.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/react/headless.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/react/headless.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/react/interaction.tsx b/sites/skeleton.dev/src/components/examples/framework-components/dialog/react/interaction.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/react/interaction.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/react/interaction.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/react/z-index.tsx b/sites/skeleton.dev/src/components/examples/framework-components/dialog/react/z-index.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/react/z-index.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/react/z-index.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/svelte/alert-dialog.svelte b/sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/alert-dialog.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/svelte/alert-dialog.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/alert-dialog.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/svelte/drawer.svelte b/sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/drawer.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/svelte/drawer.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/drawer.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/svelte/headless.svelte b/sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/headless.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/svelte/headless.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/headless.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/svelte/interaction.svelte b/sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/interaction.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/svelte/interaction.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/interaction.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/dialog/svelte/z-index.svelte b/sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/z-index.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/dialog/svelte/z-index.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/dialog/svelte/z-index.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/react/button.tsx b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/button.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/react/button.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/button.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/react/clear-files.tsx b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/clear-files.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/react/clear-files.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/clear-files.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/react/custom-content.tsx b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/custom-content.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/react/custom-content.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/custom-content.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/react/disabled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/disabled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/react/disabled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/react/disabled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/svelte/button.svelte b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/button.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/svelte/button.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/button.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/svelte/clear-files.svelte b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/clear-files.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/svelte/clear-files.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/clear-files.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/svelte/custom-content.svelte b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/custom-content.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/svelte/custom-content.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/custom-content.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/file-upload/svelte/disabled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/disabled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/file-upload/svelte/disabled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/file-upload/svelte/disabled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/listbox/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/listbox/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/react/disabled-item.tsx b/sites/skeleton.dev/src/components/examples/framework-components/listbox/react/disabled-item.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/react/disabled-item.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/react/disabled-item.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/react/disabled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/listbox/react/disabled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/react/disabled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/react/disabled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/react/group.tsx b/sites/skeleton.dev/src/components/examples/framework-components/listbox/react/group.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/react/group.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/react/group.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/react/multiple.tsx b/sites/skeleton.dev/src/components/examples/framework-components/listbox/react/multiple.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/react/multiple.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/react/multiple.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/react/search.tsx b/sites/skeleton.dev/src/components/examples/framework-components/listbox/react/search.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/react/search.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/react/search.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/svelte/disabled-item.svelte b/sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/disabled-item.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/svelte/disabled-item.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/disabled-item.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/svelte/disabled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/disabled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/svelte/disabled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/disabled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/svelte/group.svelte b/sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/group.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/svelte/group.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/group.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/svelte/multiple.svelte b/sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/multiple.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/svelte/multiple.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/multiple.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/listbox/svelte/search.svelte b/sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/search.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/listbox/svelte/search.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/listbox/svelte/search.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/navigation/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/react/rail.tsx b/sites/skeleton.dev/src/components/examples/framework-components/navigation/react/rail.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/react/rail.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/react/rail.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/react/sidebar.tsx b/sites/skeleton.dev/src/components/examples/framework-components/navigation/react/sidebar.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/react/sidebar.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/react/sidebar.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/react/toggle.tsx b/sites/skeleton.dev/src/components/examples/framework-components/navigation/react/toggle.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/react/toggle.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/react/toggle.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/svelte/rail.svelte b/sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/rail.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/svelte/rail.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/rail.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/svelte/sidebar.svelte b/sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/sidebar.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/svelte/sidebar.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/sidebar.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/navigation/svelte/toggle.svelte b/sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/toggle.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/navigation/svelte/toggle.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/navigation/svelte/toggle.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/pagination/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/pagination/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/pagination/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/pagination/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/pagination/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/pagination/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/pagination/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/pagination/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/pagination/react/dynamic-page-size.tsx b/sites/skeleton.dev/src/components/examples/framework-components/pagination/react/dynamic-page-size.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/pagination/react/dynamic-page-size.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/pagination/react/dynamic-page-size.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/pagination/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/pagination/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/pagination/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/pagination/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/pagination/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/pagination/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/pagination/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/pagination/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/pagination/svelte/dynamic-page-size.svelte b/sites/skeleton.dev/src/components/examples/framework-components/pagination/svelte/dynamic-page-size.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/pagination/svelte/dynamic-page-size.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/pagination/svelte/dynamic-page-size.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/react/arrow.tsx b/sites/skeleton.dev/src/components/examples/framework-components/popover/react/arrow.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/react/arrow.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/react/arrow.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/popover/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/popover/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/react/headless.tsx b/sites/skeleton.dev/src/components/examples/framework-components/popover/react/headless.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/react/headless.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/react/headless.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/react/programmatic.tsx b/sites/skeleton.dev/src/components/examples/framework-components/popover/react/programmatic.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/react/programmatic.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/react/programmatic.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/react/z-index.tsx b/sites/skeleton.dev/src/components/examples/framework-components/popover/react/z-index.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/react/z-index.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/react/z-index.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/svelte/arrow.svelte b/sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/arrow.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/svelte/arrow.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/arrow.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/svelte/headless.svelte b/sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/headless.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/svelte/headless.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/headless.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/svelte/programmatic.svelte b/sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/programmatic.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/svelte/programmatic.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/programmatic.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/popover/svelte/z-index.svelte b/sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/z-index.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/popover/svelte/z-index.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/popover/svelte/z-index.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/portal/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/portal/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/portal/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/portal/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/portal/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/portal/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/portal/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/portal/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/react/centered-content.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/centered-content.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/react/centered-content.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/centered-content.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/react/color.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/color.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/react/color.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/color.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/react/custom-value-text.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/custom-value-text.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/react/custom-value-text.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/custom-value-text.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/react/format.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/format.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/react/format.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/format.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/react/indeterminate.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/indeterminate.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/react/indeterminate.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/indeterminate.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/react/size.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/size.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/react/size.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/react/size.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/centered-content.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/centered-content.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/centered-content.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/centered-content.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/color.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/color.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/color.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/color.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/custom-value-text.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/custom-value-text.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/custom-value-text.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/custom-value-text.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/format.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/format.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/format.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/format.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/indeterminate.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/indeterminate.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/indeterminate.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/indeterminate.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/size.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/size.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-circular/svelte/size.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-circular/svelte/size.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/color.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/color.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/color.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/color.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/custom-animation.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/custom-animation.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/custom-animation.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/custom-animation.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/height.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/height.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/height.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/height.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/indeterminate.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/indeterminate.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/indeterminate.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/indeterminate.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/native.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/native.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/native.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/native.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/react/orientation.tsx b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/orientation.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/react/orientation.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/react/orientation.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/color.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/color.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/color.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/color.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/custom-animation.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/custom-animation.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/custom-animation.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/custom-animation.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/height.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/height.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/height.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/height.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/indeterminate.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/indeterminate.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/indeterminate.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/indeterminate.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/native.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/native.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/native.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/native.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/orientation.svelte b/sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/orientation.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/progress-linear/svelte/orientation.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/progress-linear/svelte/orientation.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/react/custom-icons.tsx b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/custom-icons.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/react/custom-icons.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/custom-icons.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/react/disabled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/disabled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/react/disabled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/disabled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/react/half.tsx b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/half.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/react/half.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/half.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/react/label.tsx b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/label.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/react/label.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/react/label.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/svelte/custom-icons.svelte b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/custom-icons.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/svelte/custom-icons.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/custom-icons.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/svelte/disabled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/disabled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/svelte/disabled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/disabled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/svelte/half.svelte b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/half.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/svelte/half.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/half.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/rating-group/svelte/label.svelte b/sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/label.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/rating-group/svelte/label.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/rating-group/svelte/label.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/controlled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/controlled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/controlled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/controlled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/disabled-item.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/disabled-item.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/disabled-item.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/disabled-item.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/disabled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/disabled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/disabled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/disabled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/icons.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/icons.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/icons.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/icons.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/orientation.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/orientation.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/orientation.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/orientation.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/react/read-only.tsx b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/read-only.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/react/read-only.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/react/read-only.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/controlled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/controlled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/controlled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/controlled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/disabled-item.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/disabled-item.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/disabled-item.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/disabled-item.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/disabled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/disabled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/disabled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/disabled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/icons.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/icons.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/icons.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/icons.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/orientation.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/orientation.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/orientation.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/orientation.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/read-only.svelte b/sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/read-only.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/segmented-control/svelte/read-only.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/segmented-control/svelte/read-only.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/react/color.tsx b/sites/skeleton.dev/src/components/examples/framework-components/slider/react/color.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/react/color.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/react/color.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/slider/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/slider/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/react/disabled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/slider/react/disabled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/react/disabled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/react/disabled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/react/multiple-thumbs.tsx b/sites/skeleton.dev/src/components/examples/framework-components/slider/react/multiple-thumbs.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/react/multiple-thumbs.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/react/multiple-thumbs.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/react/readonly.tsx b/sites/skeleton.dev/src/components/examples/framework-components/slider/react/readonly.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/react/readonly.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/react/readonly.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/svelte/color.svelte b/sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/color.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/svelte/color.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/color.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/svelte/disabled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/disabled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/svelte/disabled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/disabled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/svelte/multiple-thumbs.svelte b/sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/multiple-thumbs.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/svelte/multiple-thumbs.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/multiple-thumbs.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/slider/svelte/readonly.svelte b/sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/readonly.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/slider/svelte/readonly.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/slider/svelte/readonly.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/react/colors.tsx b/sites/skeleton.dev/src/components/examples/framework-components/switch/react/colors.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/react/colors.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/react/colors.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/switch/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/switch/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/react/list.tsx b/sites/skeleton.dev/src/components/examples/framework-components/switch/react/list.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/react/list.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/react/list.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/react/thumb-icons.tsx b/sites/skeleton.dev/src/components/examples/framework-components/switch/react/thumb-icons.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/react/thumb-icons.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/react/thumb-icons.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/svelte/colors.svelte b/sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/colors.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/svelte/colors.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/colors.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/svelte/list.svelte b/sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/list.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/svelte/list.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/list.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/switch/svelte/thumb-icons.svelte b/sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/thumb-icons.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/switch/svelte/thumb-icons.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/switch/svelte/thumb-icons.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tabs/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tabs/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/react/fluid.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tabs/react/fluid.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/react/fluid.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/react/fluid.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/react/vertical.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tabs/react/vertical.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/react/vertical.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/react/vertical.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/svelte/fluid.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/fluid.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/svelte/fluid.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/fluid.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tabs/svelte/vertical.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/vertical.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tabs/svelte/vertical.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tabs/svelte/vertical.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/react/color.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/color.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/react/color.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/color.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/react/custom-icon.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/custom-icon.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/react/custom-icon.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/custom-icon.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/react/provider.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/provider.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/react/provider.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/react/provider.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/svelte/color.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/color.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/svelte/color.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/color.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/svelte/custom-icon.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/custom-icon.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/svelte/custom-icon.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/custom-icon.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tags-input/svelte/provider.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/provider.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tags-input/svelte/provider.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tags-input/svelte/provider.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/react/action.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toast/react/action.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/react/action.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/react/action.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/react/closable.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toast/react/closable.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/react/closable.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/react/closable.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toast/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/react/meta.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toast/react/meta.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/react/meta.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/react/meta.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/react/placement.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toast/react/placement.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/react/placement.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/react/placement.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/react/promise.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toast/react/promise.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/react/promise.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/react/promise.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/react/type.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toast/react/type.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/react/type.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/react/type.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/svelte/action.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/action.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/svelte/action.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/action.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/svelte/closable.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/closable.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/svelte/closable.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/closable.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/svelte/meta.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/meta.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/svelte/meta.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/meta.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/svelte/placement.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/placement.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/svelte/placement.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/placement.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/svelte/promise.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/promise.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/svelte/promise.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/promise.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toast/svelte/type.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/type.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toast/svelte/type.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toast/svelte/type.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/react/controlled.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/controlled.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/react/controlled.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/controlled.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/react/orientation.tsx b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/orientation.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/react/orientation.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/react/orientation.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/controlled.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/controlled.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/controlled.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/controlled.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/orientation.svelte b/sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/orientation.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/toggle-group/svelte/orientation.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/toggle-group/svelte/orientation.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/react/arrow.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/arrow.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/react/arrow.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/arrow.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/react/dir.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/dir.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/react/dir.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/dir.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/react/headless.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/headless.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/react/headless.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/headless.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/react/programmatic.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/programmatic.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/react/programmatic.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/programmatic.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/react/z-index.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/z-index.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/react/z-index.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/react/z-index.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/svelte/arrow.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/arrow.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/svelte/arrow.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/arrow.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/svelte/dir.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/dir.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/svelte/dir.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/dir.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/svelte/headless.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/headless.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/svelte/headless.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/headless.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/svelte/programmatic.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/programmatic.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/svelte/programmatic.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/programmatic.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tooltip/svelte/z-index.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/z-index.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tooltip/svelte/z-index.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tooltip/svelte/z-index.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/react/collapse-expand.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/collapse-expand.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/react/collapse-expand.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/collapse-expand.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/react/default.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/default.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/react/default.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/default.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/react/lazy-loading.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/lazy-loading.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/react/lazy-loading.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/lazy-loading.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/react/multiple-selection.tsx b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/multiple-selection.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/react/multiple-selection.tsx
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/react/multiple-selection.tsx
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/svelte/collapse-expand.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/collapse-expand.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/svelte/collapse-expand.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/collapse-expand.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/svelte/default.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/default.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/svelte/default.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/default.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/svelte/lazy-loading.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/lazy-loading.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/svelte/lazy-loading.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/lazy-loading.svelte
diff --git a/sites/skeleton.dev/src/components/examples/components/tree-view/svelte/multiple-selection.svelte b/sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/multiple-selection.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/components/tree-view/svelte/multiple-selection.svelte
rename to sites/skeleton.dev/src/components/examples/framework-components/tree-view/svelte/multiple-selection.svelte
diff --git a/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/default.astro b/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/default.astro
index 4d92c2099e..0f9845ddc6 100644
--- a/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/default.astro
+++ b/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/default.astro
@@ -1,19 +1,12 @@
-Copy to Clipboard
+Copy to Clipboard
diff --git a/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/input.astro b/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/input.astro
index c95636df66..26843b7e35 100644
--- a/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/input.astro
+++ b/sites/skeleton.dev/src/components/examples/guides/cookbook/clipboard/input.astro
@@ -1,20 +1,15 @@
-
- Copy
+
+ Copy
diff --git a/sites/skeleton.dev/src/components/examples/guides/cookbook/table-of-contents/default.astro b/sites/skeleton.dev/src/components/examples/guides/cookbook/table-of-contents/default.astro
index b57ca2fcc5..d5fd4fce4d 100644
--- a/sites/skeleton.dev/src/components/examples/guides/cookbook/table-of-contents/default.astro
+++ b/sites/skeleton.dev/src/components/examples/guides/cookbook/table-of-contents/default.astro
@@ -21,23 +21,16 @@ const headings: PageHeadings[] = [
/** Provide a padding-left class based on the depth. */
function setIndentationClass(depth: number) {
- // prettier-ignore
- switch(depth) {
- case(6): { return 'pl-12';
- }
- case(5): { return 'pl-10';
- }
- case(4): { return 'pl-8';
- }
- case(3): { return 'pl-6';
- }
- case(2): { return 'pl-4';
- }
- case(1): { return 'pl-2';
- }
- default: { return 'pl-0';
- }
- }
+ return (
+ {
+ 0: 'pl-0',
+ 1: 'pl-2',
+ 2: 'pl-4',
+ 3: 'pl-6',
+ 4: 'pl-8',
+ 5: 'pl-10',
+ }[depth] ?? 'pl-0'
+ );
}
---
diff --git a/sites/skeleton.dev/src/components/examples/integrations/code-block/default.astro b/sites/skeleton.dev/src/components/examples/integrations/code-block/default.astro
deleted file mode 100644
index e6ac8e38c8..0000000000
--- a/sites/skeleton.dev/src/components/examples/integrations/code-block/default.astro
+++ /dev/null
@@ -1,15 +0,0 @@
----
-import Code from 'astro/components/Code.astro';
-
-const exampleConsole = `npx sv create my-skeleton-app`;
-const exampleHtml = `Hello World
`;
-const exampleCss = `.foobar { background: green; }`;
-const exampleJavascript = `const foo = 'bar';`;
----
-
-
-
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/examples/integrations/code-block/react/code-block.tsx b/sites/skeleton.dev/src/components/examples/integrations/code-block/react/code-block.tsx
new file mode 100644
index 0000000000..53935b23f8
--- /dev/null
+++ b/sites/skeleton.dev/src/components/examples/integrations/code-block/react/code-block.tsx
@@ -0,0 +1,49 @@
+import { createHighlighterCore } from 'shiki/core';
+import { createJavaScriptRegexEngine } from 'shiki/engine/javascript';
+
+const highlighter = await createHighlighterCore({
+ langs: [import('@shikijs/langs/bash'), import('@shikijs/langs/css'), import('@shikijs/langs/html'), import('@shikijs/langs/javascript')],
+ themes: [import('@shikijs/themes/github-dark')],
+ engine: createJavaScriptRegexEngine(),
+});
+
+interface CodeBlockProps {
+ code: Parameters[0];
+ lang?: Parameters[1]['lang'];
+ // Base Style Props
+ base?: string;
+ background?: string;
+ rounded?: string;
+ shadow?: string;
+ classes?: string;
+ // Pre Style Props
+ preBase?: string;
+ prePadding?: string;
+ preClasses?: string;
+}
+
+export default function CodeBlock({
+ code = '',
+ lang = 'txt',
+ // Base Style Props
+ base = 'overflow-hidden',
+ background = 'bg-neutral-950',
+ rounded = 'rounded-container',
+ shadow = '',
+ classes = '',
+ // Pre Style Props
+ preBase = '',
+ prePadding = '[&>pre]:p-4',
+ preClasses = '',
+}: CodeBlockProps) {
+ const html = highlighter.codeToHtml(code, {
+ lang,
+ theme: 'github-dark',
+ });
+ return (
+
+ );
+}
diff --git a/sites/skeleton.dev/src/components/examples/integrations/code-block/react/component.tsx b/sites/skeleton.dev/src/components/examples/integrations/code-block/react/component.tsx
deleted file mode 100644
index f995322051..0000000000
--- a/sites/skeleton.dev/src/components/examples/integrations/code-block/react/component.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-'use client';
-
-import { createHighlighterCoreSync } from 'shiki/core';
-import { createJavaScriptRegexEngine } from 'shiki/engine/javascript';
-import console from 'shiki/langs/console.mjs';
-import css from 'shiki/langs/css.mjs';
-import html from 'shiki/langs/html.mjs';
-import js from 'shiki/langs/javascript.mjs';
-import svelte from 'shiki/langs/svelte.mjs';
-import themeDarkPlus from 'shiki/themes/dark-plus.mjs';
-
-// https://shiki.style/guide/sync-usage
-const shiki = createHighlighterCoreSync({
- engine: createJavaScriptRegexEngine(),
- // Implement your import theme.
- themes: [themeDarkPlus],
- // Implement your imported and supported languages.
- langs: [console, html, css, js, svelte],
-});
-
-interface CodeBlockProps {
- code: string;
- lang?: string;
- theme?: string;
- // Base Style Props
- base?: string;
- background?: string;
- rounded?: string;
- shadow?: string;
- classes?: string;
- // Pre Style Props
- preBase?: string;
- prePadding?: string;
- preClasses?: string;
-}
-
-export default function CodeBlock({
- code = '',
- lang = 'console',
- theme = 'dark-plus',
- // Base Style Props
- base = 'overflow-hidden',
- background = 'bg-neutral-950',
- rounded = 'rounded-container',
- shadow = '',
- classes = '',
- // Pre Style Props
- preBase = '',
- prePadding = '[&>pre]:p-4',
- preClasses = '',
-}: CodeBlockProps) {
- // Shiki convert to HTML
- const generatedHtml = shiki.codeToHtml(code, { lang, theme });
-
- return (
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/examples/integrations/code-block/react/page.tsx b/sites/skeleton.dev/src/components/examples/integrations/code-block/react/page.tsx
index 8d770e87f3..0b5694526f 100644
--- a/sites/skeleton.dev/src/components/examples/integrations/code-block/react/page.tsx
+++ b/sites/skeleton.dev/src/components/examples/integrations/code-block/react/page.tsx
@@ -1,18 +1,12 @@
-import CodeBlock from '@/components/examples/integrations/code-block/react/component';
-
-export default function Home() {
- // Source Code
- const exampleConsole = `npx sv create my-skeleton-app`;
- const exampleHtml = `Hello World
`;
- const exampleCss = `.foobar { background: green; }`;
- const exampleJavascript = `const foo = 'bar';`;
+import CodeBlock from './code-block';
+export default function Page() {
return (
-
-
-
-
+
+
+
+
);
}
diff --git a/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/component.svelte b/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/code-block.svelte
similarity index 54%
rename from sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/component.svelte
rename to sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/code-block.svelte
index 41101f0e5a..ff56238513 100644
--- a/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/component.svelte
+++ b/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/code-block.svelte
@@ -1,25 +1,21 @@
diff --git a/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/page.svelte b/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/page.svelte
index 454540fba2..974ab3b24a 100644
--- a/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/page.svelte
+++ b/sites/skeleton.dev/src/components/examples/integrations/code-block/svelte/page.svelte
@@ -1,16 +1,10 @@
-
-
-
-
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/badges/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/badges/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/badges/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/badges/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/badges/overlap.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/badges/overlap.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/badges/overlap.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/badges/overlap.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/badges/presets.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/badges/presets.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/badges/presets.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/badges/presets.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/buttons/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/buttons/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/buttons/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/buttons/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/buttons/disabled.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/buttons/disabled.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/buttons/disabled.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/buttons/disabled.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/buttons/group.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/buttons/group.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/buttons/group.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/buttons/group.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/buttons/presets.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/buttons/presets.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/buttons/presets.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/buttons/presets.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/buttons/sizes.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/buttons/sizes.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/buttons/sizes.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/buttons/sizes.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/cards/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/cards/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/cards/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/cards/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/cards/detailed.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/cards/detailed.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/cards/detailed.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/cards/detailed.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/cards/presets.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/cards/presets.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/cards/presets.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/cards/presets.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/chips/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/chips/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/chips/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/chips/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/chips/disabled.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/chips/disabled.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/chips/disabled.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/chips/disabled.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/chips/presets.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/chips/presets.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/chips/presets.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/chips/presets.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/chips/react/select.tsx b/sites/skeleton.dev/src/components/examples/tailwind-components/chips/react/select.tsx
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/chips/react/select.tsx
rename to sites/skeleton.dev/src/components/examples/tailwind-components/chips/react/select.tsx
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/chips/svelte/select.svelte b/sites/skeleton.dev/src/components/examples/tailwind-components/chips/svelte/select.svelte
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/chips/svelte/select.svelte
rename to sites/skeleton.dev/src/components/examples/tailwind-components/chips/svelte/select.svelte
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/dividers/colors.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/dividers/colors.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/dividers/colors.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/dividers/colors.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/dividers/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/dividers/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/dividers/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/dividers/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/dividers/size.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/dividers/size.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/dividers/size.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/dividers/size.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/dividers/style.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/dividers/style.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/dividers/style.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/dividers/style.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/dividers/vert.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/dividers/vert.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/dividers/vert.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/dividers/vert.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/checkboxes.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/checkboxes.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/checkboxes.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/checkboxes.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/groups.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/groups.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/groups.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/groups.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/input.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/input.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/input.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/input.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/radio.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/radio.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/radio.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/radio.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/select.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/select.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/select.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/select.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/selection.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/selection.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/selection.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/selection.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/special.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/special.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/special.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/special.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/forms/textarea.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/forms/textarea.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/forms/textarea.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/forms/textarea.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/placeholders/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/placeholders/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/placeholders/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/placeholders/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/tables/default.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/tables/default.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/tables/default.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/tables/default.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/tables/full.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/tables/full.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/tables/full.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/tables/full.astro
diff --git a/sites/skeleton.dev/src/components/examples/tailwind/tables/nav.astro b/sites/skeleton.dev/src/components/examples/tailwind-components/tables/nav.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/examples/tailwind/tables/nav.astro
rename to sites/skeleton.dev/src/components/examples/tailwind-components/tables/nav.astro
diff --git a/sites/skeleton.dev/src/components/homepage/component-grid.tsx b/sites/skeleton.dev/src/components/homepage/component-grid.tsx
deleted file mode 100644
index c6c19617a1..0000000000
--- a/sites/skeleton.dev/src/components/homepage/component-grid.tsx
+++ /dev/null
@@ -1,457 +0,0 @@
-import { Avatar, Switch, Slider, Progress, SegmentedControl } from '@skeletonlabs/skeleton-react';
-import {
- ArrowUpRightIcon,
- CheckIcon,
- AudioLinesIcon,
- FastForwardIcon,
- AudioWaveform,
- Headphones,
- PlayIcon,
- RewindIcon,
- UsersIcon,
- Volume2Icon,
- ChartNoAxesColumnIncreasingIcon,
-} from 'lucide-react';
-import { Fragment, useState } from 'react';
-
-const cardClasses = 'card preset-outlined-surface-200-800 bg-surface-50-950 p-5 space-y-5';
-
-function camelCaseToReadable(str: string) {
- return str
- .replace(/([A-Z])/g, ' $1')
- .replace(/^./, (s) => s.toUpperCase())
- .trim();
-}
-
-const teamData = [
- { name: 'Janet Rosenbell', email: 'jrosenbell@email.com' },
- { name: 'Jason Greene', email: 'jgreene@email.com' },
- { name: 'Lucas Gamble', email: 'lgamble@email.com' },
- { name: 'Murray Henderson', email: 'mhenderson@email.com' },
-];
-
-const tableData = [
- { position: '0', name: 'Iron', symbol: 'Fe', atomic_no: '26' },
- { position: '1', name: 'Rhodium', symbol: 'Rh', atomic_no: '45' },
- { position: '2', name: 'Iodine', symbol: 'I', atomic_no: '53' },
- { position: '3', name: 'Radon', symbol: 'Rn', atomic_no: '86' },
- { position: '4', name: 'Technetium', symbol: 'Tc', atomic_no: '43' },
-];
-
-export default function ComponentGrid() {
- const [notifications, setNotifications] = useState({
- doNotDisturb: false,
- global: false,
- personal: false,
- priority: false,
- news: false,
- });
- return (
-
-
-
-
-
- GitHub
- Google
-
-
-
-
Create Account
-
-
-
-
- {Object.entries(notifications).map(([key, value], i) => (
-
- {i > 0 && }
-
- setNotifications((prev) => ({
- ...prev,
- [key]: details.checked,
- }))
- }
- disabled={key !== 'doNotDisturb' && notifications.doNotDisturb}
- >
- {camelCaseToReadable(key)}
-
-
-
-
-
-
- ))}
-
-
-
-
-
-
-
- {teamData.map((member, i) => (
-
- {i > 0 && }
-
-
-
-
-
-
{member.name}
-
{member.email}
-
-
-
- ))}
-
-
-
-
-
- Music
- Harman Kardon Luna
-
-
-
-
-
-
- Normalize
-
-
-
- Equalizer
-
-
-
-
-
- 3D Audio
-
-
-
-
-
- Crossfade
-
-
-
-
-
-
-
Success
-
Task was completed.
-
-
-
- Dismiss
-
-
-
-
-
-
Statistics
-
-
-
Data represents quarterly metrics for the TPS reports. Updates every 24 hours.
-
-
-
Progression
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Revenue
-
Posted April 1-13
-
-
-
-
-
-
-
-
-
-
-
-
-
Delivery
-
- Tomorrow
- Within 2 days
-
-
-
-
Size
-
- 5.5
- 6
- 6.5
- 7
- 7.5
- 8
- 8.5
- 9
- 9.5
- 10
-
-
-
-
Material
-
- Canvas
- Mesh
- Suede
- Leather
-
-
-
-
-
-
-
-
-
Invoice Paid
-
You paid $14,276. Receipt submitted to:
-
me@email.com
-
-
- Mark Completed
- Cancel
-
-
-
-
-
Set Reminder
-
- Time
-
-
-
- 5 mins
-
-
-
- 15 mins
-
-
-
- 30 mins
-
-
-
-
-
- Message
-
-
-
- Submit
-
-
-
-
-
-
+1,248
-
- +150% increase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Pink Floyd
-
-
-
Another Brick in the Wall
-
3:16
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/homepage/design-system.tsx b/sites/skeleton.dev/src/components/homepage/design-system.tsx
deleted file mode 100644
index e7c2f22b58..0000000000
--- a/sites/skeleton.dev/src/components/homepage/design-system.tsx
+++ /dev/null
@@ -1,213 +0,0 @@
-import { BookmarkIcon, HeartIcon, TriangleIcon, UserRoundIcon } from 'lucide-react';
-import { useState } from 'react';
-
-const spacing = ['w-4', 'w-8', 'w-16', 'w-24', 'w-32', 'w-48', 'w-56', 'w-64', 'w-72'];
-
-const steps = [
- {
- label: 'The Figma UI Kit',
- desc: 'This premium kit allows you preview and mock all available interface elements, including dark mode support. Comes with a Figma plugin to import theme colors automatically.',
- },
- {
- label: 'Themes',
- desc: 'Themes are empowered by CSS custom properties, enabling simple integration into Tailwind. Register multiple themes and easily switch on demand.',
- },
- {
- label: 'Colors',
- desc: 'Manage your color palette with support for contrast tones. Make use of Color Pairings for balancing dark mode. As well as Presets to apply canned styles to elements and components.',
- },
- {
- label: 'Presets',
- desc: 'Presets are utility classes combining Tailwind and Skeleton primitives. Style buttons, badges, cards, and more. Mix and match to create any look or feel.',
- },
- {
- label: 'Typography',
- desc: 'Skeleton provides an array of opt-in utility classes for typographic elements. Includes primitives for generating semantic typography. Adjust theme settings to set the perfect typographic scale.',
- },
- {
- label: 'Spacing',
- desc: 'Use the new Tailwind spacing system to dynamically scaling using a single theme-specified scale factor.',
- },
- {
- label: 'Iconography',
- desc: "Skeleton takes an agnostic approach to icons, allowing you to bring your own icon library or mix and match to fulfill your project's aesthetic.",
- },
-];
-
-export default function DesignSystem() {
- const [active, activeStep] = useState(0);
-
- const btnActive = 'btn preset-filled';
- const btnInactive = 'btn preset-outlined-surface-800-200 hover:preset-tonal';
-
- const setStateClass = (buttonState: number) => {
- return buttonState === active ? btnActive : btnInactive;
- };
-
- return (
-
- {/* Text */}
-
-
Design System
-
- {steps.map((step, i) => (
- activeStep(i)}
- className={`${setStateClass(i)} ${i === 0 ? 'col-span-2' : ''}`}
- >
- {i === 0 && (
-
-
-
-
-
-
-
- )}
- {step.label}
-
- ))}
-
-
-
- {/* Carousel */}
-
- {active === 0 && (
- /* Step 1: Figma */
-
- )}
- {active === 1 && (
- /* Step 2: Themes */
-
- {/*
*/}
- {/* prettier-ignore */}
-
-{`[data-theme='cerberus'] {
- --spacing: 0.25rem;
- --text-scaling: 1.067;
- --base-font-color: var(--color-surface-950);
- --base-font-color-dark: var(--color-surface-50);
- --base-font-family: system-ui;
- --base-font-size: inherit;
- --base-line-height: inherit;
- --base-font-weight: normal;
- --base-font-style: normal;
- --base-letter-spacing: 0em;
- --heading-font-color: inherit;
- --heading-font-color-dark: inherit;
- --heading-font-family: inherit;
- --heading-font-weight: bold;
- --heading-font-style: normal;
- --heading-letter-spacing: inherit;
- --anchor-font-color: var(--color-primary-500);
- --anchor-font-color-dark: var(--color-primary-400);
- --anchor-font-family: inherit;
- --anchor-font-size: inherit;
- --anchor-line-height: inherit;
- --anchor-font-weight: inherit;
- --anchor-font-style: inherit;
- --anchor-letter-spacing: inherit;
- --anchor-text-decoration: none;
- --anchor-text-decoration-hover: underline;
- --anchor-text-decoration-active: none;
- --anchor-text-decoration-focus: none;`.trim()}
-
-
-
- )}
- {active === 2 && (
- /* Step 3: Colors */
-
- )}
- {active === 3 && (
- /* Step 4: Presets */
-
-
-
- Filled
-
-
-
-
- Tonal
-
-
-
-
- Outlined
-
-
-
-
- Elevated
-
-
-
-
- Ghost
-
-
-
-
-
-
-
-
- )}
- {active === 4 && (
- /* Step 5: Typography */
-
-
Aa
-
The quick brown fox jumped over the lazy dog.
-
- )}
- {active === 5 && (
- /* Step 6: Spacing */
-
- {spacing.map((rowHeight) => (
-
- ))}
-
- )}
- {active === 6 && (
- /* Step 7: Iconography */
-
-
-
-
-
- )}
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/homepage/even-more.astro b/sites/skeleton.dev/src/components/homepage/even-more.astro
deleted file mode 100644
index e1d7436e6f..0000000000
--- a/sites/skeleton.dev/src/components/homepage/even-more.astro
+++ /dev/null
@@ -1,64 +0,0 @@
----
-import { SunMoonIcon, PaletteIcon, BadgeCheckIcon, PuzzleIcon, FileCodeIcon, BlocksIcon } from 'lucide-react';
----
-
-
-
-
-
And Even More...
-
- Solve the hard problems at scale. Skeleton comes with an assortment of quality of life features out of the box.
-
-
-
-
-
-
-
-
-
Use Anywhere
-
Core features such as theses and utility classes require one dependency — Tailwind CSS.
-
-
-
-
-
-
-
Built with Zag.js
-
Enables cross-framework components with standardized features, a11y, and i18n.
-
-
-
-
-
-
-
Integrations
-
Easily extend Skeleton using our turnkey guides for icons, code blocks, and more.
-
-
-
-
-
-
-
Adaptive Design
-
All interface elements automatically adapt to your themes colors, fonts, and overall aesethetic.
-
-
-
-
-
-
-
Dark Mode
-
Full support for Tailwind's dark mode and color scheme mechanisms out of the box.
-
-
-
-
-
-
-
Typescript
-
Type-safe by default, with helpful IntelliSense feedback as you work.
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/homepage/framework-components.tsx b/sites/skeleton.dev/src/components/homepage/framework-components.tsx
deleted file mode 100644
index aec84ff55e..0000000000
--- a/sites/skeleton.dev/src/components/homepage/framework-components.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import { Switch } from '@skeletonlabs/skeleton-react';
-import { ChevronRightIcon } from 'lucide-react';
-
-export default function FrameworkComponents() {
- return (
-
-
-
-
Tailwind Components
-
- Common visual interfaces, such as cards, buttons, and tables. Using semantic HTML elements and Tailwind utility classes.
-
-
-
-
-
-
-
Functional Components
-
- Interactive components for supported frameworks. Handle state and logic for user interaction and form elements.
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/homepage/hero.astro b/sites/skeleton.dev/src/components/homepage/hero.astro
deleted file mode 100644
index 36e946534d..0000000000
--- a/sites/skeleton.dev/src/components/homepage/hero.astro
+++ /dev/null
@@ -1,44 +0,0 @@
----
-import SkeletonFull from '@/images/brand/skeleton-full.svg';
-import { ChevronRightIcon } from 'lucide-react';
----
-
-
diff --git a/sites/skeleton.dev/src/components/homepage/metrics.astro b/sites/skeleton.dev/src/components/homepage/metrics.astro
deleted file mode 100644
index e4f4bf762e..0000000000
--- a/sites/skeleton.dev/src/components/homepage/metrics.astro
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
80k+
-
Monthly Downloads
-
-
-
-
-
-
-
-
2k+
-
Discord Members
-
-
-
diff --git a/sites/skeleton.dev/src/components/homepage/playground.astro b/sites/skeleton.dev/src/components/homepage/playground.astro
deleted file mode 100644
index ba91076bb9..0000000000
--- a/sites/skeleton.dev/src/components/homepage/playground.astro
+++ /dev/null
@@ -1,80 +0,0 @@
----
-import React from '@/images/brand/react.svg';
-import Svelte from '@/images/brand/svelte.svg';
-import Vue from '@/images/brand/vue.svg';
-import Solid from '@/images/brand/solid.svg';
-import Astro_ from '@/images/brand/astro.svg'; // Astro is a reserved word
-import { EllipsisIcon } from 'lucide-react';
----
-
-
-
-
-
Live Demos
-
Test drive Skeleton directly in your browser for supported frameworks.
-
* Functional components limited to React and Svelte .
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/homepage/sponsors.astro b/sites/skeleton.dev/src/components/homepage/sponsors.astro
deleted file mode 100644
index 6abb05728e..0000000000
--- a/sites/skeleton.dev/src/components/homepage/sponsors.astro
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
Sponsor Us
-
- Projects like Skeleton exist through the generosity of our community. Help fund the project, while receiving fun incentives in
- return. Available on the following services.
-
-
-
-
-
-
-
- GitHub
-
-
-
-
- Ko-Fi
-
-
-
diff --git a/sites/skeleton.dev/src/components/landing-page/additional-features.astro b/sites/skeleton.dev/src/components/landing-page/additional-features.astro
new file mode 100644
index 0000000000..e83a7a56df
--- /dev/null
+++ b/sites/skeleton.dev/src/components/landing-page/additional-features.astro
@@ -0,0 +1,60 @@
+---
+import { SunMoonIcon, PaletteIcon, BadgeCheckIcon, PuzzleIcon, FileCodeIcon, BlocksIcon } from '@lucide/svelte';
+
+const features = [
+ {
+ title: 'Easy to Use',
+ description: 'Core features such as themes and utility classes require a single dependency — Tailwind CSS.',
+ Icon: BadgeCheckIcon,
+ },
+ {
+ title: 'Built with Zag.js',
+ description: 'Battle tested cross-framework components with standardized features, a11y, and i18n.',
+ Icon: BlocksIcon,
+ },
+ {
+ title: 'Integrations',
+ description: 'Easily extend Skeleton using our friendly guides for icons, code blocks, and more.',
+ Icon: PuzzleIcon,
+ },
+ {
+ title: 'Adaptive Design',
+ description: "Create interfaces that automatically adapt to your theme's colors, fonts, and overall aesthetic.",
+ Icon: PaletteIcon,
+ },
+ {
+ title: 'Dark Mode',
+ description: "Integrated support for Tailwind's powerful dark mode and color scheme mechanisms.",
+ Icon: SunMoonIcon,
+ },
+ {
+ title: 'Typescript',
+ description: 'Type-safe by default, providing helpful IntelliSense feedback as you work.',
+ Icon: FileCodeIcon,
+ },
+] as const;
+---
+
+
+
+
And Even More...
+
+ Solve the hard problems at scale. Skeleton comes with an assortment of quality of life features out of the box.
+
+
+
+ {
+ features.map((feature) => {
+ return (
+
+
+
+
{feature.title}
+
{feature.description}
+
+
+ );
+ })
+ }
+
+
diff --git a/sites/skeleton.dev/src/components/homepage/cta.astro b/sites/skeleton.dev/src/components/landing-page/build-with-skeleton-today.astro
similarity index 53%
rename from sites/skeleton.dev/src/components/homepage/cta.astro
rename to sites/skeleton.dev/src/components/landing-page/build-with-skeleton-today.astro
index 92bcbbca0e..f4a3a84077 100644
--- a/sites/skeleton.dev/src/components/homepage/cta.astro
+++ b/sites/skeleton.dev/src/components/landing-page/build-with-skeleton-today.astro
@@ -1,13 +1,14 @@
---
-import { ChevronRightIcon } from 'lucide-react';
+import { getRelativeDocsUrl } from '@/modules/framework';
+import { ChevronRightIcon } from '@lucide/svelte';
---
diff --git a/sites/skeleton.dev/src/components/landing-page/component-grid.svelte b/sites/skeleton.dev/src/components/landing-page/component-grid.svelte
new file mode 100644
index 0000000000..c097345f6e
--- /dev/null
+++ b/sites/skeleton.dev/src/components/landing-page/component-grid.svelte
@@ -0,0 +1,436 @@
+
+
+
+
+
+
+
+ GitHub
+ Google
+
+
+
+
Create Account
+
+
+
+
+ {#each Object.entries(notifications) as [key, value], i (key)}
+ {#if i > 0}
+
+ {/if}
+
+ (notifications[key as keyof typeof notifications] = details.checked)}
+ disabled={key !== 'doNotDisturb' && notifications.doNotDisturb}
+ >
+ {camelCaseToReadable(key)}
+
+
+
+
+
+ {/each}
+
+
+
+
+
+
+
+
+
+ {#each teamData as member, i}
+ {#if i > 0}
+
+ {/if}
+
+
+
+
+
+
{member.name}
+
{member.email}
+
+
+ {/each}
+
+
+
+
+
+ Music
+ Harman Kardon Luna
+
+
+
+
+
+
+
+
+ Normalize
+
+
+
+
+
+ Equalizer
+
+
+
+
+
+ 3D Audio
+
+
+
+
+
+ Crossfade
+
+
+
+
+
+
+
+
Success
+
Task was completed.
+
+
+ Dismiss
+
+
+
+
+
+
Statistics
+
+
+
Data represents quarterly metrics for the TPS reports. Updates every 24 hours.
+
+
+
+
Progression
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Revenue
+
Posted April 1-13
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Delivery
+
+ Tomorrow
+ Within 2 days
+
+
+
+
Size
+
+ 5.5
+ 6
+ 6.5
+ 7
+ 7.5
+ 8
+ 8.5
+ 9
+ 9.5
+ 10
+
+
+
+
Material
+
+ Canvas
+ Mesh
+ Suede
+ Leather
+
+
+
+
+
+
+
+
+
+
Invoice Paid
+
You paid $14,276. Receipt submitted to:
+
me@email.com
+
+
+ Mark Completed
+ Cancel
+
+
+
+
+
+
+
Set Reminder
+
+ Time
+
+
+
+ 5 mins
+
+
+
+ 15 mins
+
+
+
+ 30 mins
+
+
+
+
+
+
+ Message
+
+
+
+ Submit
+
+
+
+
+
+
+
+1,248
+
+150% increase
+
+
+
+
+
+
+
+
+
+
+
+
Pink Floyd
+
+
+
Another Brick in the Wall
+
3:16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/landing-page/design-system.svelte b/sites/skeleton.dev/src/components/landing-page/design-system.svelte
new file mode 100644
index 0000000000..69a0ecca26
--- /dev/null
+++ b/sites/skeleton.dev/src/components/landing-page/design-system.svelte
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+
+
Design System
+
+ {#each Object.entries(steps) as [key, step] (key)}
+ (activeStep = steps[key as keyof typeof steps])}
+ class={{ 'col-span-2': key === 'figma', [activeStep.label === step.label ? btnActive : btnInactive]: true }}
+ >
+ {#if key === 'figma'}
+
+
+
+
+
+
+
+ {/if}
+ {step.label}
+
+ {/each}
+
+
+
{activeStep.description}
+ {#if activeStep.label === 'The Figma UI Kit'}
+
Learn More →
+ {/if}
+
+
+
+
+ {#if activeStep.label === 'The Figma UI Kit'}
+
+ {/if}
+
+ {#if activeStep.label === 'Themes'}
+
+
+{`[data-theme='cerberus'] {
+ --spacing: 0.25rem;
+ --text-scaling: 1.067;
+ --base-font-color: var(--color-surface-950);
+ --base-font-color-dark: var(--color-surface-50);
+ --base-font-family: system-ui;
+ --base-font-size: inherit;
+ --base-line-height: inherit;
+ --base-font-weight: normal;
+ --base-font-style: normal;
+ --base-letter-spacing: 0em;
+ --heading-font-color: inherit;
+ --heading-font-color-dark: inherit;
+ --heading-font-family: inherit;
+ --heading-font-weight: bold;
+ --heading-font-style: normal;
+ --heading-letter-spacing: inherit;
+ --anchor-font-color: var(--color-primary-500);
+ --anchor-font-color-dark: var(--color-primary-400);
+ --anchor-font-family: inherit;
+ --anchor-font-size: inherit;
+ --anchor-line-height: inherit;
+ --anchor-font-weight: inherit;
+ --anchor-font-style: inherit;
+ --anchor-letter-spacing: inherit;
+ --anchor-text-decoration: none;
+ --anchor-text-decoration-hover: underline;
+ --anchor-text-decoration-active: none;
+ --anchor-text-decoration-focus: none;`.trim()}
+
+
+ {/if}
+
+ {#if activeStep.label === 'Colors'}
+
+ {/if}
+
+ {#if activeStep.label === 'Presets'}
+
+
+ Filled
+
+
+ Tonal
+
+
+ Outlined
+
+
+ Elevated
+
+
+ Ghost
+
+
+
+
+
+
+
+ {/if}
+
+ {#if activeStep.label === 'Typography'}
+
+
Aa
+
The quick brown fox jumped over the lazy dog.
+
+ {/if}
+
+ {#if activeStep.label === 'Spacing'}
+
+ {#each spacing as rowHeight}
+
+ {/each}
+
+ {/if}
+
+ {#if activeStep.label === 'Iconography'}
+
+
+
+
+
+ {/if}
+
+
diff --git a/sites/skeleton.dev/src/components/landing-page/live-demos.astro b/sites/skeleton.dev/src/components/landing-page/live-demos.astro
new file mode 100644
index 0000000000..17e9159691
--- /dev/null
+++ b/sites/skeleton.dev/src/components/landing-page/live-demos.astro
@@ -0,0 +1,80 @@
+---
+import React from '@/assets/logos/react.svg';
+import Svelte from '@/assets/logos/svelte.svg';
+import Vue from '@/assets/logos/vue.svg';
+import Solid from '@/assets/logos/solid.svg';
+import Astro_ from '@/assets/logos/astro.svg'; // Astro is a reserved word
+import { EllipsisIcon } from '@lucide/svelte';
+import { getRelativeDocsUrl } from '@/modules/framework';
+
+const frameworks = [
+ {
+ name: 'React',
+ href: 'https://stackblitz.com/github/skeletonlabs/demos/tree/main/demos/nextjs',
+ bgColor: '#00D8FF',
+ Icon: React,
+ },
+ {
+ name: 'Svelte',
+ href: 'https://stackblitz.com/github/skeletonlabs/demos/tree/main/demos/sveltekit',
+ bgColor: '#FF3E00',
+ Icon: Svelte,
+ },
+ {
+ name: 'Vue',
+ href: 'https://stackblitz.com/github/skeletonlabs/demos/tree/main/demos/nuxt',
+ bgColor: '#42B883',
+ Icon: Vue,
+ note: '*',
+ },
+ {
+ name: 'Solid',
+ href: 'https://stackblitz.com/github/skeletonlabs/demos/tree/main/demos/solidstart',
+ bgColor: '#57A0FF',
+ Icon: Solid,
+ note: '*',
+ },
+ {
+ name: 'Astro',
+ href: 'https://stackblitz.com/github/skeletonlabs/demos/tree/main/demos/astro',
+ bgColor: '#761CBA',
+ Icon: Astro_,
+ note: '*',
+ },
+ {
+ name: 'More',
+ href: getRelativeDocsUrl(Astro, 'get-started/installation'),
+ bgColor: 'var(--skeleton-preset-tonal-bg)',
+ Icon: EllipsisIcon,
+ },
+];
+---
+
+
+
+
Live Demos
+
Test drive Skeleton directly in your browser for supported frameworks.
+
* Functional components limited to React and Svelte .
+
+
+
diff --git a/sites/skeleton.dev/src/components/landing-page/metrics.astro b/sites/skeleton.dev/src/components/landing-page/metrics.astro
new file mode 100644
index 0000000000..0904ffe3fb
--- /dev/null
+++ b/sites/skeleton.dev/src/components/landing-page/metrics.astro
@@ -0,0 +1,23 @@
+---
+const metrics = [
+ { value: '150k+', label: 'Total Monthly Downloads' },
+ { value: '5k+', label: 'GitHub Stars' },
+ { value: '2k+', label: 'Discord Members' },
+] as const;
+---
+
+
+ {
+ metrics.map((metric, i) => (
+ <>
+
+
+
{metric.value}
+
{metric.label}
+
+
+ {i !== metrics.length - 1 &&
}
+ >
+ ))
+ }
+
diff --git a/sites/skeleton.dev/src/components/homepage/open-source.astro b/sites/skeleton.dev/src/components/landing-page/open-source.astro
similarity index 79%
rename from sites/skeleton.dev/src/components/homepage/open-source.astro
rename to sites/skeleton.dev/src/components/landing-page/open-source.astro
index 39bafed61e..822380c9d3 100644
--- a/sites/skeleton.dev/src/components/homepage/open-source.astro
+++ b/sites/skeleton.dev/src/components/landing-page/open-source.astro
@@ -1,12 +1,12 @@
---
-import { getCollection } from 'astro:content';
-import { ChevronRightIcon } from 'lucide-react';
+import { ChevronRightIcon } from '@lucide/svelte';
+import { getCollection } from '@/modules/content';
+import { getRelativeDocsUrl } from '@/modules/framework';
const contributors = await getCollection('contributors');
---
-
{
contributors.map((contributor) => {
@@ -18,7 +18,6 @@ const contributors = await getCollection('contributors');
})
}
-
Open Source
@@ -31,9 +30,9 @@ const contributors = await getCollection('contributors');
View GitHub
-
+
-
+
How to Contribute
diff --git a/sites/skeleton.dev/src/components/landing-page/sponsors.astro b/sites/skeleton.dev/src/components/landing-page/sponsors.astro
new file mode 100644
index 0000000000..32561d1f32
--- /dev/null
+++ b/sites/skeleton.dev/src/components/landing-page/sponsors.astro
@@ -0,0 +1,45 @@
+---
+import Github from '@/assets/sponsors/github.png';
+import KoFi from '@/assets/sponsors/kofi.png';
+import { Image } from 'astro:assets';
+
+const sponsors = [
+ {
+ href: 'https://github.com/sponsors/skeletonlabs',
+ image: Github,
+ title: 'GitHub',
+ },
+ {
+ href: 'https://ko-fi.com/skeletonlabs',
+ image: KoFi,
+ title: 'Ko-Fi',
+ },
+] as const;
+---
+
+
+
+
+
Sponsor Us
+
+ Projects like Skeleton exist through the generosity of our community. Help fund the project, while receiving fun incentives in
+ return. Available on the following services.
+
+
+
+
+ {
+ sponsors.map((sponsor) => (
+
+
+ {sponsor.title}
+
+ ))
+ }
+
+
diff --git a/sites/skeleton.dev/src/components/landing-page/tailwind-and-framework-components.svelte b/sites/skeleton.dev/src/components/landing-page/tailwind-and-framework-components.svelte
new file mode 100644
index 0000000000..57da18a274
--- /dev/null
+++ b/sites/skeleton.dev/src/components/landing-page/tailwind-and-framework-components.svelte
@@ -0,0 +1,38 @@
+
+
+
+
+
+
Tailwind Components
+
+ Common visual interfaces, such as cards, buttons, and tables. Using semantic HTML elements and Tailwind utility classes.
+
+
+
+
+ Button
+
+
+
+
+
+
+
Framework Components
+
+ Interactive components for supported frameworks. Handle state and logic for user interaction and form elements.
+
+
+
+
+ Toggle
+
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/layouts/docs-layout.astro b/sites/skeleton.dev/src/components/layouts/docs-layout.astro
new file mode 100644
index 0000000000..8ae83ff84e
--- /dev/null
+++ b/sites/skeleton.dev/src/components/layouts/docs-layout.astro
@@ -0,0 +1,125 @@
+---
+import { components } from '@/components/typography';
+import H1 from '@/components/typography/h1.astro';
+import Header from '@/components/ui/header/header.astro';
+import Footer from '@/components/ui/footer.astro';
+import Navigation from '@/components/ui/navigation.astro';
+import Alert from '@/components/ui/alert.astro';
+import TableOfContents from '@/components/ui/table-of-contents.svelte';
+import Advertisement from '@/components/ui/advertisement.astro';
+import Breadcrumbs from '@/components/ui/breadcrumbs.astro';
+import { render, type CollectionEntry } from 'astro:content';
+import ChipsBar from '../ui/chips-bar.astro';
+import { SquarePenIcon } from '@lucide/svelte';
+import LlmMenu from '@/components/ui/large-language-models.svelte';
+import NavigationSteps from '@/components/ui/navigation-steps.astro';
+
+interface Props {
+ doc: CollectionEntry<'docs'>;
+ previousDoc?: CollectionEntry<'docs'>;
+ nextDoc?: CollectionEntry<'docs'>;
+}
+
+const { doc, previousDoc, nextDoc } = Astro.props;
+
+const { Content, headings } = await render(doc);
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {doc.data.title}
+ {doc.data.description}
+
+
+ {
+ doc.data.stability !== 'stable' && (
+
+ This feature is currently marked as {doc.data.stability} and not intended for production use. It may receive breaking changes
+ before its stable release.
+
+ )
+ }
+
+
+
+
+
+ {doc.data.summary}
+
+ {
+ doc.data.features && (
+ <>
+ Key Features
+
+ {doc.data.features.map((listItem) => (
+ {listItem}
+ ))}
+
+ >
+ )
+ }
+
+
+
+
+
+
+
+
+ Edit this page on GitHub
+
+
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/layouts/docs.astro b/sites/skeleton.dev/src/components/layouts/docs.astro
deleted file mode 100644
index 8a06b3a19f..0000000000
--- a/sites/skeleton.dev/src/components/layouts/docs.astro
+++ /dev/null
@@ -1,98 +0,0 @@
----
-import Breadcrumbs from '@/components/ui/breadcrumbs.astro';
-import ChipsBar from '@/components/ui/chips-bar.astro';
-import Footer from '@/components/ui/footer.astro';
-import FrameworkPicker from '@/components/ui/framework-picker.astro';
-import Header from '@/components/ui/header.astro';
-import Navigation from '@/components/ui/navigation';
-import TableOfContents from '@/components/ui/table-of-contents.astro';
-import LayoutRoot from '@/components/layouts/root.astro';
-import type { InferEntrySchema } from 'astro:content';
-import { commonNavigationGroups } from '@/lib/navigation';
-import Alert from '@/components/mdx/alert.astro';
-
-interface PageHeading {
- depth: number;
- slug: string;
- text: string;
-}
-
-interface Props {
- frontmatter: InferEntrySchema<'docs'>;
- headings: PageHeading[];
-}
-
-// Props
-const { frontmatter, headings } = Astro.props satisfies Props;
-// Layout Props
-const layoutProps = {
- title: frontmatter.title,
- classList: 'grid grid-rows-[auto_1fr]',
-};
-
-const prefix = 'https://github.com/skeletonlabs/skeleton/tree/main/';
-const urls = {
- githubDocsUrl: `${prefix}/sites/skeleton.dev/src/content`,
- githubSkeletonCommon: `${prefix}/packages/skeleton-common`,
- githubSkeletonUrl: `${prefix}/packages/skeleton/src`,
- githubSvelteUrl: `${prefix}/packages/skeleton-svelte`,
- githubReactUrl: `${prefix}/packages/skeleton-react`,
-};
----
-
-
-
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/layouts/root-layout.astro b/sites/skeleton.dev/src/components/layouts/root-layout.astro
new file mode 100644
index 0000000000..3a612656a6
--- /dev/null
+++ b/sites/skeleton.dev/src/components/layouts/root-layout.astro
@@ -0,0 +1,101 @@
+---
+import '@/app.css';
+import { SEO } from 'astro-seo';
+import favicon from '@/assets/favicon.png';
+import { ClientRouter } from 'astro:transitions';
+import Analytics from '@/components/ui/analytics.astro';
+import ThemeLoader from '@/components/ui/theme-loader.astro';
+import ModeLoader from '@/components/ui/mode-loader.astro';
+
+interface Props {
+ title?: string;
+ description?: string;
+ classList?: string;
+}
+
+const {
+ title = 'Skeleton',
+ description = 'Skeleton uses Tailwind as the foundation for building adaptive design systems. Including turnkey components for your favorite web frameworks.',
+ classList,
+} = Astro.props;
+
+const titleWithSkeletonSuffix = title === 'Skeleton' ? title : `${title} · Skeleton`;
+
+const skeletonImage = new URL(`/api/og-image?feature=${title}`, Astro.site);
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/layouts/root.astro b/sites/skeleton.dev/src/components/layouts/root.astro
deleted file mode 100644
index ccb6f01845..0000000000
--- a/sites/skeleton.dev/src/components/layouts/root.astro
+++ /dev/null
@@ -1,107 +0,0 @@
----
-import '@/app.css';
-
-import OpenGraphImage from '@/images/meta/opengraph.png';
-import { ClientRouter } from 'astro:transitions';
-
-interface Props {
- title?: string;
- description?: string;
- classList?: string;
-}
-
-const { title, description, classList } = Astro.props;
-
-// Format meta tag data
-const meta = {
- title: `${title ? title + ' - ' : ''}Skeleton`,
- description: description ? description : 'Skeleton is an adaptive design system powered by Tailwind CSS.',
- image: OpenGraphImage.src,
-};
----
-
-
-
-
-
{meta.title}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/a.astro b/sites/skeleton.dev/src/components/mdx/a.astro
deleted file mode 100644
index 84f69e814b..0000000000
--- a/sites/skeleton.dev/src/components/mdx/a.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/blockquote.astro b/sites/skeleton.dev/src/components/mdx/blockquote.astro
deleted file mode 100644
index a9a20f97a2..0000000000
--- a/sites/skeleton.dev/src/components/mdx/blockquote.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/code.astro b/sites/skeleton.dev/src/components/mdx/code.astro
deleted file mode 100644
index d57a27bde6..0000000000
--- a/sites/skeleton.dev/src/components/mdx/code.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/h1.astro b/sites/skeleton.dev/src/components/mdx/h1.astro
deleted file mode 100644
index ce45c007c4..0000000000
--- a/sites/skeleton.dev/src/components/mdx/h1.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/h2.astro b/sites/skeleton.dev/src/components/mdx/h2.astro
deleted file mode 100644
index 286154a88d..0000000000
--- a/sites/skeleton.dev/src/components/mdx/h2.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/h3.astro b/sites/skeleton.dev/src/components/mdx/h3.astro
deleted file mode 100644
index b2cce68929..0000000000
--- a/sites/skeleton.dev/src/components/mdx/h3.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/h4.astro b/sites/skeleton.dev/src/components/mdx/h4.astro
deleted file mode 100644
index aa6bd2ef03..0000000000
--- a/sites/skeleton.dev/src/components/mdx/h4.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/h5.astro b/sites/skeleton.dev/src/components/mdx/h5.astro
deleted file mode 100644
index b079ec5c47..0000000000
--- a/sites/skeleton.dev/src/components/mdx/h5.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/h6.astro b/sites/skeleton.dev/src/components/mdx/h6.astro
deleted file mode 100644
index 91a2430b3c..0000000000
--- a/sites/skeleton.dev/src/components/mdx/h6.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-const props = Astro.props;
----
-
-
diff --git a/sites/skeleton.dev/src/components/mdx/index.ts b/sites/skeleton.dev/src/components/mdx/index.ts
deleted file mode 100644
index 93016186bb..0000000000
--- a/sites/skeleton.dev/src/components/mdx/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import a from '@/components/mdx/a.astro';
-import blockquote from '@/components/mdx/blockquote.astro';
-import code from '@/components/mdx/code.astro';
-import h1 from '@/components/mdx/h1.astro';
-import h2 from '@/components/mdx/h2.astro';
-import h3 from '@/components/mdx/h3.astro';
-import h4 from '@/components/mdx/h4.astro';
-import h5 from '@/components/mdx/h5.astro';
-import h6 from '@/components/mdx/h6.astro';
-import hr from '@/components/mdx/hr.astro';
-import ol from '@/components/mdx/ol.astro';
-import table from '@/components/mdx/table.astro';
-import ul from '@/components/mdx/ul.astro';
-
-export const components = {
- a: a,
- h1: h1,
- h2: h2,
- h3: h3,
- h4: h4,
- h5: h5,
- h6: h6,
- hr: hr,
- ol: ol,
- ul: ul,
- code: code,
- table: table,
- blockquote: blockquote,
-};
diff --git a/sites/skeleton.dev/src/components/typography/a.astro b/sites/skeleton.dev/src/components/typography/a.astro
new file mode 100644
index 0000000000..673fdcacb2
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/a.astro
@@ -0,0 +1,21 @@
+---
+import { getRelativeDocsUrl } from '@/modules/framework';
+
+const props = Astro.props;
+
+const isExternal = !props.href.includes(import.meta.env.SITE) && !props.href.startsWith('/') && !props.href.startsWith('#');
+
+if (isExternal) {
+ props.target = '_blank';
+ props.rel = 'noopener noreferrer';
+}
+
+if (!isExternal && props.href.startsWith('/docs')) {
+ const docId = props.href.replace('/docs/', '');
+ props.href = getRelativeDocsUrl(Astro, docId);
+}
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/typography/blockquote.astro b/sites/skeleton.dev/src/components/typography/blockquote.astro
new file mode 100644
index 0000000000..dbadaeeb00
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/blockquote.astro
@@ -0,0 +1,7 @@
+---
+const props = Astro.props;
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/typography/code.astro b/sites/skeleton.dev/src/components/typography/code.astro
new file mode 100644
index 0000000000..9cdf4c3825
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/code.astro
@@ -0,0 +1,16 @@
+---
+import { unescape } from 'html-escaper';
+import Code_ from '@/components/ui/code.svelte';
+---
+
+{
+ Astro.props.class ? (
+
+
+
+ ) : (
+
+
+
+ )
+}
diff --git a/sites/skeleton.dev/src/components/typography/h1.astro b/sites/skeleton.dev/src/components/typography/h1.astro
new file mode 100644
index 0000000000..b0a32f2e51
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/h1.astro
@@ -0,0 +1,7 @@
+---
+const props = Astro.props;
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/typography/h2.astro b/sites/skeleton.dev/src/components/typography/h2.astro
new file mode 100644
index 0000000000..6aa6241e18
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/h2.astro
@@ -0,0 +1,7 @@
+---
+const props = Astro.props;
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/typography/h3.astro b/sites/skeleton.dev/src/components/typography/h3.astro
new file mode 100644
index 0000000000..cd0745e5ad
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/h3.astro
@@ -0,0 +1,7 @@
+---
+const props = Astro.props;
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/typography/h4.astro b/sites/skeleton.dev/src/components/typography/h4.astro
new file mode 100644
index 0000000000..c36fc5d6f1
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/h4.astro
@@ -0,0 +1,7 @@
+---
+const props = Astro.props;
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/typography/h5.astro b/sites/skeleton.dev/src/components/typography/h5.astro
new file mode 100644
index 0000000000..12a9f2a54f
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/h5.astro
@@ -0,0 +1,7 @@
+---
+const props = Astro.props;
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/typography/h6.astro b/sites/skeleton.dev/src/components/typography/h6.astro
new file mode 100644
index 0000000000..cdcdd571ad
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/h6.astro
@@ -0,0 +1,7 @@
+---
+const props = Astro.props;
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/mdx/hr.astro b/sites/skeleton.dev/src/components/typography/hr.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/mdx/hr.astro
rename to sites/skeleton.dev/src/components/typography/hr.astro
diff --git a/sites/skeleton.dev/src/components/typography/index.ts b/sites/skeleton.dev/src/components/typography/index.ts
new file mode 100644
index 0000000000..c00799f876
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/index.ts
@@ -0,0 +1,31 @@
+import a from '@/components/typography/a.astro';
+import blockquote from '@/components/typography/blockquote.astro';
+import code from '@/components/typography/code.astro';
+import h1 from '@/components/typography/h1.astro';
+import h2 from '@/components/typography/h2.astro';
+import h3 from '@/components/typography/h3.astro';
+import h4 from '@/components/typography/h4.astro';
+import h5 from '@/components/typography/h5.astro';
+import h6 from '@/components/typography/h6.astro';
+import hr from '@/components/typography/hr.astro';
+import ol from '@/components/typography/ol.astro';
+import pre from '@/components/typography/pre.astro';
+import table from '@/components/typography/table.astro';
+import ul from '@/components/typography/ul.astro';
+
+export const components = {
+ a,
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ hr,
+ ol,
+ ul,
+ pre,
+ code,
+ table,
+ blockquote,
+};
diff --git a/sites/skeleton.dev/src/components/mdx/ol.astro b/sites/skeleton.dev/src/components/typography/ol.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/mdx/ol.astro
rename to sites/skeleton.dev/src/components/typography/ol.astro
diff --git a/sites/skeleton.dev/src/components/typography/pre.astro b/sites/skeleton.dev/src/components/typography/pre.astro
new file mode 100644
index 0000000000..4fa864ce7a
--- /dev/null
+++ b/sites/skeleton.dev/src/components/typography/pre.astro
@@ -0,0 +1 @@
+
diff --git a/sites/skeleton.dev/src/components/mdx/table.astro b/sites/skeleton.dev/src/components/typography/table.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/mdx/table.astro
rename to sites/skeleton.dev/src/components/typography/table.astro
diff --git a/sites/skeleton.dev/src/components/mdx/ul.astro b/sites/skeleton.dev/src/components/typography/ul.astro
similarity index 100%
rename from sites/skeleton.dev/src/components/mdx/ul.astro
rename to sites/skeleton.dev/src/components/typography/ul.astro
diff --git a/sites/skeleton.dev/src/components/ui/advertisement.astro b/sites/skeleton.dev/src/components/ui/advertisement.astro
new file mode 100644
index 0000000000..78b15f747a
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/advertisement.astro
@@ -0,0 +1,44 @@
+{
+ import.meta.env.PROD && (
+
+ )
+}
+
+
diff --git a/sites/skeleton.dev/src/components/mdx/alert.astro b/sites/skeleton.dev/src/components/ui/alert.astro
similarity index 90%
rename from sites/skeleton.dev/src/components/mdx/alert.astro
rename to sites/skeleton.dev/src/components/ui/alert.astro
index b3b9d5a64c..cfc6d1a7bb 100644
--- a/sites/skeleton.dev/src/components/mdx/alert.astro
+++ b/sites/skeleton.dev/src/components/ui/alert.astro
@@ -1,5 +1,5 @@
---
-import { InfoIcon, TriangleAlertIcon } from 'lucide-react';
+import { InfoIcon, TriangleAlertIcon } from '@lucide/svelte';
interface Props {
type: 'info' | 'warning';
diff --git a/sites/skeleton.dev/src/components/ui/analytics.astro b/sites/skeleton.dev/src/components/ui/analytics.astro
new file mode 100644
index 0000000000..fa1b4979ec
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/analytics.astro
@@ -0,0 +1,12 @@
+{
+ import.meta.env.PROD && (
+
+ )
+}
diff --git a/sites/skeleton.dev/src/components/ui/api-table.astro b/sites/skeleton.dev/src/components/ui/api-table.astro
index aa8ec9e3cb..a005a7e8c6 100644
--- a/sites/skeleton.dev/src/components/ui/api-table.astro
+++ b/sites/skeleton.dev/src/components/ui/api-table.astro
@@ -1,14 +1,15 @@
---
import { getEntry } from 'astro:content';
-import { Code } from 'astro-expressive-code/components';
+import Code from '@/components/typography/code.astro';
+import { getActiveFramework } from '@/modules/framework';
interface Props {
component: string;
framework: string;
}
-const framework = Astro.props.framework ?? Astro.params.slug?.split('/').at(-1);
-const component = Astro.props.component ?? Astro.params.slug?.split('/').at(-2);
+const framework = Astro.props.framework ?? getActiveFramework(Astro).id;
+const component = Astro.props.component ?? Astro.url.pathname.split('/').filter(Boolean).pop();
const types = await getEntry('types', `${framework}/${component}`);
@@ -19,12 +20,12 @@ function kebabToPascal(str: string) {
.join('');
}
-if (!types && process.env.NODE_ENV === 'production') {
+if (!types && import.meta.env.PROD) {
throw new Error(`Unable to auto detect types for ${framework}/${component}`);
}
---
-
+
{
!types ? (
@@ -36,37 +37,37 @@ if (!types && process.env.NODE_ENV === 'production') {
<>
{type.name.replace(kebabToPascal(component), '').replace('Props', '')}
{type.metadata.classValue && type.metadata.classValue !== "''" &&
}
-
-
-
- Property
- Default
- Type
-
-
-
- {type.props.map((property) => (
-
-
- {property.name}
-
-
- {property.JSDoc && property.JSDoc.tags.some((tag) => tag.name === 'default') ? (
- {property.JSDoc.tags.find((tag) => tag.name === 'default')?.value}
- ) : (
- -
- )}
-
-
- {/* This pre tag will otherwise include the line breaks prettier adds */}
- {/* prettier-ignore */}
- {property.type}
- {property.JSDoc.description}
-
+
+
+
+
+ Prop
+ Default
+ Type
- ))}
-
-
+
+
+ {type.props.map((property) => (
+
+
+ {property.name}
+
+
+ {property.JSDoc && property.JSDoc.tags.some((tag) => tag.name === 'default') ? (
+ {property.JSDoc.tags.find((tag) => tag.name === 'default')?.value}
+ ) : (
+ —
+ )}
+
+
+ {property.type}
+ {property.JSDoc.description}
+
+
+ ))}
+
+
+
>
))}
diff --git a/sites/skeleton.dev/src/components/ui/breadcrumbs.astro b/sites/skeleton.dev/src/components/ui/breadcrumbs.astro
index 31cb43f5d5..f7d112247b 100644
--- a/sites/skeleton.dev/src/components/ui/breadcrumbs.astro
+++ b/sites/skeleton.dev/src/components/ui/breadcrumbs.astro
@@ -1,31 +1,55 @@
---
-const { pathname } = Astro.url;
-const exceptions = ['components']; // Add more exceptions here
-const breadcrumbs = pathname.split('/').filter((crumb) => Boolean(crumb) && crumb !== 'docs');
+import { getActiveFrameworkId } from '@/modules/framework';
+import { getEntry } from 'astro:content';
+
+const base = `/docs/${getActiveFrameworkId(Astro)}`;
+const path = Astro.url.pathname.replace(`${base}/`, '');
+
+const segments = path.split('/').filter(Boolean);
+
+const crumbs = await Promise.all(
+ segments.map(async (segment, i) => {
+ const label = segment.replace(/-/g, ' ');
+ const isFirst = i === 0;
+ const isLast = i === segments.length - 1;
+
+ if (isFirst || isLast) {
+ return {
+ label,
+ };
+ }
+
+ const doc = await getEntry('docs', segments.slice(0, i + 1).join('/'));
+
+ if (doc) {
+ return {
+ label: doc.data.title,
+ href: `${base}/${doc.id}`,
+ };
+ }
+
+ return {
+ label,
+ };
+ }),
+);
---
-
+
{
- breadcrumbs.map((crumb, i, arr) => {
- const isLast = i === arr.length - 1;
- const isException = exceptions.includes(breadcrumbs[0]);
- const href = isException || isLast ? undefined : `/docs/${breadcrumbs[0]}/${crumb}`;
- const displayCrumb = crumb.replace('-', ' ');
-
- return (
- <>
-
- {href ? (
-
- {displayCrumb}
-
- ) : (
- displayCrumb
- )}
-
- {!isLast && › }
- >
- );
- })
+ crumbs.map((crumb, i) => (
+ <>
+
+ {crumb.href ? (
+
+ {crumb.label}
+
+ ) : (
+ crumb.label
+ )}
+
+ {i < crumbs.length - 1 && › }
+ >
+ ))
}
diff --git a/sites/skeleton.dev/src/components/ui/chips-bar.astro b/sites/skeleton.dev/src/components/ui/chips-bar.astro
index 7c944ca320..ed2d67ff89 100644
--- a/sites/skeleton.dev/src/components/ui/chips-bar.astro
+++ b/sites/skeleton.dev/src/components/ui/chips-bar.astro
@@ -1,74 +1,93 @@
---
-import { PersonStandingIcon, BookOpenIcon, CodeIcon, BlocksIcon, FileTextIcon } from 'lucide-react';
+import { CodeIcon, BlocksIcon, PersonStandingIcon } from '@lucide/svelte';
+import { getActiveFramework } from '@/modules/framework';
+import type { CollectionEntry } from 'astro:content';
-// Props
-const { frontmatter, urls } = Astro.props;
----
+interface Props {
+ doc: CollectionEntry<'docs'>;
+}
+
+const { doc } = Astro.props;
+
+const REPOSITORY_ROOT = new URL(`https://github.com/skeletonlabs/skeleton/tree/main/`);
+const ZAG_ROOT = new URL('https://zagjs.com/');
+
+const path = doc.id.split('/');
+const section = path.at(0) ?? '';
+const feature = path.at(1) ?? '';
+
+const activeFramework = getActiveFramework(Astro);
+
+function getSourcePath() {
+ if (doc.data.references.source === false) {
+ return;
+ }
+ if (doc.data.references.source) {
+ return new URL(doc.data.references.source);
+ }
+ if (section === 'framework-components') {
+ return new URL(`packages/skeleton-${activeFramework.id}/src/components/${feature}`, REPOSITORY_ROOT);
+ }
+ if (section === 'tailwind-components') {
+ return new URL(`packages/skeleton/src/utilities/${feature}.css`, REPOSITORY_ROOT);
+ }
+}
-
- {
- frontmatter.srcCore && (
-
-
- Source
-
- )
+function getStylesUrl() {
+ if (doc.data.references.styles === false) {
+ return;
}
- {
- frontmatter.srcCss && (
-
-
- CSS
-
- )
+ if (doc.data.references.styles) {
+ return new URL(doc.data.references.styles);
}
- {
- frontmatter.srcReact && (
-
-
- React
-
- )
+ if (section === 'framework-components') {
+ return new URL(`packages/skeleton-common/src/classes/${feature}.ts`, REPOSITORY_ROOT);
+ }
+}
+
+function getA11yUrl() {
+ if (doc.data.references.a11y === false) {
+ return;
}
- {
- frontmatter.srcSvelte && (
-
-
- Svelte
-
- )
+ if (doc.data.references.a11y) {
+ return new URL(doc.data.references.a11y);
}
- {
- frontmatter.showDocsUrl && (
-
-
- Doc
-
- )
+}
+
+function getZagUrl() {
+ if (doc.data.references.zag === false) {
+ return;
}
- {
- frontmatter.srcAlly && (
-
-
- A11y
-
- )
+ if (doc.data.references.zag) {
+ return new URL(doc.data.references.zag);
}
- {
- frontmatter.srcZag && (
-
-
- API
-
- )
+ if (section === 'framework-components') {
+ return new URL(`components/${activeFramework.id}/${feature}`, ZAG_ROOT);
}
-
-
-
- LLM
-
-
+}
+
+const references = [
+ { label: 'Source', url: getSourcePath(), icon: CodeIcon },
+ { label: 'Styles', url: getStylesUrl(), icon: CodeIcon },
+ { label: 'A11y', url: getA11yUrl(), icon: PersonStandingIcon },
+ { label: 'Zag', url: getZagUrl(), icon: BlocksIcon },
+].filter((reference): reference is { label: string; url: URL; icon: typeof CodeIcon } => Boolean(reference.url));
+---
+
+{
+ references.length > 0 && (
+
+ {references.map((reference) => (
+
+
+ {reference.label}
+
+ ))}
+
+ )
+}
diff --git a/sites/skeleton.dev/src/components/ui/code.svelte b/sites/skeleton.dev/src/components/ui/code.svelte
new file mode 100644
index 0000000000..80734d2253
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/code.svelte
@@ -0,0 +1,126 @@
+
+
+
+
+ {lang}
+
+ {#if hasCopied}
+
+ Copied
+ {:else}
+
+ Copy code
+ {/if}
+
+
+ {@html html}
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/drawer.tsx b/sites/skeleton.dev/src/components/ui/drawer.tsx
deleted file mode 100644
index 3364f0a390..0000000000
--- a/sites/skeleton.dev/src/components/ui/drawer.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import Navigation from './navigation';
-import type { NavigationGroup } from '@/lib/navigation';
-import { Dialog, Portal } from '@skeletonlabs/skeleton-react';
-import { XIcon, MenuIcon } from 'lucide-react';
-
-interface DrawerProps {
- navigationGroups: NavigationGroup[];
- url: URL;
-}
-
-export default function Drawer(props: DrawerProps) {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/figma-buy-now.astro b/sites/skeleton.dev/src/components/ui/figma-buy-now.astro
deleted file mode 100644
index 611826f7a5..0000000000
--- a/sites/skeleton.dev/src/components/ui/figma-buy-now.astro
+++ /dev/null
@@ -1,115 +0,0 @@
----
-import { CheckIcon } from 'lucide-react';
----
-
-
-
-
Get Access
-
Figma UI Kit for Skeleton includes:
-
-
-
-
-
-
Figma Skeleton v3 Components library
-
-
-
-
-
-
-
Dark / Light Support
-
-
-
-
-
-
Custom Theme Support
-
-
-
-
-
-
Figma Plugin to import your custom Theme
-
-
-
-
-
-
-
Individual License
-
-
- $109
- +1 year of updates
-
-
Buy
-
-
-
-
Team License
-
-
-
- $219
- +1 year of updates
-
-
Buy
-
-
-
-
-
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/ui/footer.astro b/sites/skeleton.dev/src/components/ui/footer.astro
index 78de13b37a..3e28b96328 100644
--- a/sites/skeleton.dev/src/components/ui/footer.astro
+++ b/sites/skeleton.dev/src/components/ui/footer.astro
@@ -1,19 +1,20 @@
---
-import { socialLinks } from '@/lib/social-links';
+import { socialLinks } from '@/modules/social-links';
+import type { HTMLAttributes } from 'astro/types';
-const { classList = 'p-4' } = Astro.props;
+interface Props extends HTMLAttributes<'footer'> {}
+
+const { class: className = 'p-4', ...rest } = Astro.props;
---
-
+
-
{
socialLinks.map((link) => (
diff --git a/sites/skeleton.dev/src/components/ui/framework-picker.astro b/sites/skeleton.dev/src/components/ui/framework-picker.astro
deleted file mode 100644
index f71a72026d..0000000000
--- a/sites/skeleton.dev/src/components/ui/framework-picker.astro
+++ /dev/null
@@ -1,63 +0,0 @@
----
-import { frameworks } from '@/lib/framework';
-
-function getPathAndFramework(pathname: string) {
- const parts = pathname.split('/').filter(Boolean);
- const path = parts.slice(0, -1).join('/');
- const frameworkSlug = parts.at(-1);
- const framework = frameworks.find(({ slug }) => slug === frameworkSlug);
- return [path, framework] as const;
-}
-
-const [path, framework] = getPathAndFramework(Astro.url.pathname);
-
-// Classes
-const cBtn = 'flex justify-center items-center space-x-4 py-8 rounded-tl-container rounded-tr-container';
-const cActive =
- 'bg-gradient-to-b from-surface-100 dark:from-surface-900/30 to-transparent border-t-[1px] border-l-[1px] border-r-[1px] border-surface-200-800';
-const cHover = 'hover:bg-gradient-to-t from-surface-100 dark:from-surface-900/30 to-transparent border-b-[1px] border-surface-200-800';
----
-
-{
- framework && (
-
- {frameworks.map((link) => (
-
-
- {link.name}
-
- ))}
-
- )
-}
-
-
diff --git a/sites/skeleton.dev/src/components/ui/framework-tabs.tsx b/sites/skeleton.dev/src/components/ui/framework-tabs.tsx
deleted file mode 100644
index 1e391bc746..0000000000
--- a/sites/skeleton.dev/src/components/ui/framework-tabs.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import { useState, type ReactNode } from 'react';
-
-interface FrameworkTabsProps {
- selected: 'svelte' | 'react';
- svelte: ReactNode;
- react: ReactNode;
-}
-
-export default function FrameworkTabs(props: FrameworkTabsProps) {
- const [selected, setSelected] = useState(props.selected || 'react');
- const cTab = 'font-bold py-2 px-4 border-b-[3px] border-transparent capitalize';
- const cTabActive = '!border-surface-950-50';
-
- function selectedClass(tab: string) {
- if (tab === selected) {
- return cTabActive;
- }
- }
-
- return (
-
- {/* Tabs */}
-
- setSelected('react')}>
- React
-
- setSelected('svelte')}>
- Svelte
-
-
- {/* Panel: React */}
-
{props.react}
- {/* Panel: Svelte */}
-
{props.svelte}
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/framework.astro b/sites/skeleton.dev/src/components/ui/framework.astro
new file mode 100644
index 0000000000..83376e4971
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/framework.astro
@@ -0,0 +1,16 @@
+---
+import { getActiveFramework } from '@/modules/framework';
+import { type CollectionEntry } from 'astro:content';
+
+interface Props {
+ id: CollectionEntry<'frameworks'>['id'];
+}
+
+const { id } = Astro.props;
+
+const framework = getActiveFramework(Astro);
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header-sponsors.tsx b/sites/skeleton.dev/src/components/ui/header-sponsors.tsx
deleted file mode 100644
index cd9cd33b34..0000000000
--- a/sites/skeleton.dev/src/components/ui/header-sponsors.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import { Popover, Portal } from '@skeletonlabs/skeleton-react';
-import { ArrowUpRightIcon, ChevronDownIcon, HeartIcon } from 'lucide-react';
-
-export default function HeaderSponsors() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/header-themes.tsx b/sites/skeleton.dev/src/components/ui/header-themes.tsx
deleted file mode 100644
index 4f9abc11b0..0000000000
--- a/sites/skeleton.dev/src/components/ui/header-themes.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import { themes } from '@skeletonlabs/skeleton-common';
-import { Popover, Portal } from '@skeletonlabs/skeleton-react';
-import { SwatchBookIcon, ChevronDownIcon, ArrowUpRightIcon } from 'lucide-react';
-import { useEffect, useState } from 'react';
-
-const DEFAULT_THEME = 'cerberus';
-
-export default function HeaderThemes() {
- const [activeTheme, setActiveTheme] = useState(DEFAULT_THEME);
-
- useEffect(() => {
- setActiveTheme(localStorage.getItem('theme') || DEFAULT_THEME);
- }, []);
-
- function selectTheme(theme: string) {
- setActiveTheme(theme);
- document.documentElement.setAttribute('data-theme', theme);
- localStorage.setItem('theme', theme);
- }
-
- return (
-
-
-
- Theme
-
-
-
-
-
-
-
- Create a Theme
-
-
-
-
-
- {themes.map((theme) => (
-
selectTheme(theme.name)}
- >
- {theme.emoji}
- {theme.name}
-
-
- ))}
-
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/header-version.tsx b/sites/skeleton.dev/src/components/ui/header-version.tsx
deleted file mode 100644
index d96ce3880e..0000000000
--- a/sites/skeleton.dev/src/components/ui/header-version.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import { Popover, Portal } from '@skeletonlabs/skeleton-react';
-import packageJson from '@skeletonlabs/skeleton/package.json';
-import { ChevronDownIcon, ArrowUpRightIcon } from 'lucide-react';
-
-export default function HeaderVersion() {
- return (
-
-
- v{packageJson.version}
-
-
-
-
-
- {['v3', 'v2', 'v1'].map((version) => (
-
- {version} Docs
-
-
- ))}
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/header.astro b/sites/skeleton.dev/src/components/ui/header.astro
deleted file mode 100644
index 62aeecfe28..0000000000
--- a/sites/skeleton.dev/src/components/ui/header.astro
+++ /dev/null
@@ -1,79 +0,0 @@
----
-import Drawer from '@/components/ui/drawer';
-import LightSwitch from '@/components/ui/light-switch';
-import Skeleton from '@/images/brand/skeleton.svg';
-import { socialLinks } from '@/lib/social-links';
-import HeaderSponsors from '@/components/ui/header-sponsors';
-import HeaderThemes from '@/components/ui/header-themes';
-import HeaderVersion from '@/components/ui/header-version';
-import Search from '@/components/ui/search';
-import { commonNavigationGroups } from '@/lib/navigation';
-
-const coreLinks = [
- { href: '/docs/get-started/introduction', title: 'Docs' },
- { href: '/news', title: 'News' },
- { href: '/showcase', title: 'Showcase' },
- { href: 'https://themes.skeleton.dev/', title: 'Themes', target: '_blank' },
- { href: '/figma', title: 'Figma' },
-];
-const versionLinks = [
- { href: 'https://v1.skeleton.dev/', title: 'Version 1', target: '_blank' },
- { href: 'https://v2.skeleton.dev/', title: 'Version 2', target: '_blank' },
- { href: 'https://v3.skeleton.dev/', title: 'Version 3', target: '_blank' },
-];
-
-const navigationGroups = [
- {
- title: 'Overview',
- items: coreLinks,
- },
- ...commonNavigationGroups,
- {
- title: 'Previous Versions',
- items: versionLinks,
- },
-];
----
-
-
-
-
-
-
-
-
-
-
-
-
- {
- socialLinks.slice(0, 2).map((link) => (
-
-
-
- ))
- }
-
-
-
-
-
-
diff --git a/sites/skeleton.dev/src/components/ui/header/drawer.svelte b/sites/skeleton.dev/src/components/ui/header/drawer.svelte
new file mode 100644
index 0000000000..8b62034e6b
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/drawer.svelte
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {@render children()}
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header/framework.svelte b/sites/skeleton.dev/src/components/ui/header/framework.svelte
new file mode 100644
index 0000000000..cb8bea3de4
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/framework.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
+ {activeFramework.data.name}
+
+
+
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header/header.astro b/sites/skeleton.dev/src/components/ui/header/header.astro
new file mode 100644
index 0000000000..4b4e1b50f3
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/header.astro
@@ -0,0 +1,108 @@
+---
+import { getRelativeDocsUrl, getActiveFramework } from '@/modules/framework';
+import { getCollection } from '@/modules/content';
+// Skeleton Logo
+import Skeleton from '@/assets/branding/skeleton.svg';
+// Social Logos
+import LogoGitHub from '@/assets/logos/github.svg';
+import LogoDiscord from '@/assets/logos/discord.svg';
+import LogoBluesky from '@/assets/logos/bluesky.svg';
+// Modals
+import DrawerTrigger from '@/components/ui/header/drawer.svelte';
+import SearchTrigger from '@/components/ui/header/search.svelte';
+// Child Components
+import FrameworkPicker from '@/components/ui/header/framework.svelte';
+import VersionPicker from '@/components/ui/header/version.svelte';
+import ThemePicker from '@/components/ui/header/theme.svelte';
+import PlusPicker from '@/components/ui/header/plus.svelte';
+import SponsorPicker from '@/components/ui/header/sponsor.svelte';
+// Components
+import Navigation from '../navigation.astro';
+
+const frameworks = await getCollection('frameworks');
+const activeFramework = getActiveFramework(Astro);
+
+const links = [
+ // { href: '/', title: 'Design System' }, // coming in v5
+ // { href: '/components', title: 'Components' }, // coming in v5
+ { href: getRelativeDocsUrl(Astro, '/get-started/introduction'), title: 'Docs' },
+ { href: '/showcase', title: 'Showcase' },
+];
+const socialLinks = [
+ { href: 'https://github.com/skeletonlabs/skeleton', icon: LogoGitHub, title: 'GitHub' },
+ { href: 'https://discord.gg/EXqV7W8MtY', icon: LogoDiscord, title: 'Discord' },
+ { href: 'https://bsky.app/profile/skeleton.dev', icon: LogoBluesky, title: 'Bluesky' },
+];
+---
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header/plus.svelte b/sites/skeleton.dev/src/components/ui/header/plus.svelte
new file mode 100644
index 0000000000..c30129c84d
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/plus.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+ More
+
+
+
+
+
+
+
+ Community Tools
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header/search.svelte b/sites/skeleton.dev/src/components/ui/header/search.svelte
new file mode 100644
index 0000000000..ae691fd5b3
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/search.svelte
@@ -0,0 +1,224 @@
+
+
+{#snippet result(item: Result)}
+
+
+
+
{item.title}
+
{item.url}
+
+
+
+
+{/snippet}
+
+{#snippet subresult(item: Subresult)}
+
+
+
+
{item.title}
+
+ {@html item.excerpt}
+
+
+
+
+{/snippet}
+
+
+
+
+ Search...
+ ⌘ K
+
+
+
+
+
+
+
+
+ {#if status === 'idle'}
+ What can we help you find?
+ {:else if status === 'done'}
+ {#if collection.items.length === 0}
+
+ No results found for {query}
+
+ {:else}
+
+ {#each collection.items as item (item)}
+ {#if item.type === 'result'}
+ {@render result(item)}
+ {:else if item.type === 'subresult'}
+ {@render subresult(item)}
+ {/if}
+ {/each}
+
+ {/if}
+ {/if}
+
+
+ ↑ ↓ Navigate
+ ⏎ Select
+ Esc Close
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header/sponsor.svelte b/sites/skeleton.dev/src/components/ui/header/sponsor.svelte
new file mode 100644
index 0000000000..6a7bb60cf3
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/sponsor.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+ Sponsor Us
+ Support the project!
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header/theme.svelte b/sites/skeleton.dev/src/components/ui/header/theme.svelte
new file mode 100644
index 0000000000..03da52c95e
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/theme.svelte
@@ -0,0 +1,104 @@
+
+
+
+
+
+ Theme
+
+
+
+
+
+
+
+ details.value && setActiveMode(details.value)}
+ class="bg-surface-50-950 w-full mb-2"
+ >
+
+
+
+
+
+ System
+
+
+
+
+
+
+ Light
+
+
+
+
+
+
+ Dark
+
+
+
+
+
+
+
+
+
+ {#each themes as theme (theme)}
+
setActiveTheme(theme.name)}
+ >
+ {theme.emoji}
+ {theme.name}
+
+
+ {/each}
+
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/header/version.svelte b/sites/skeleton.dev/src/components/ui/header/version.svelte
new file mode 100644
index 0000000000..4554af2bbb
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/header/version.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+ v{packageJson.version}
+
+
+
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/large-language-models.svelte b/sites/skeleton.dev/src/components/ui/large-language-models.svelte
new file mode 100644
index 0000000000..f183f32c7b
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/large-language-models.svelte
@@ -0,0 +1,56 @@
+
+
+
+
+
+ LLM
+
+
+
+
+
+
+ {#each links as link (link)}
+
+ {@html link.icon}
+ Open in {link.title}
+
+ {/each}
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/light-switch.tsx b/sites/skeleton.dev/src/components/ui/light-switch.tsx
deleted file mode 100644
index b4617ce0a8..0000000000
--- a/sites/skeleton.dev/src/components/ui/light-switch.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { MoonIcon, SunIcon } from 'lucide-react';
-import { useEffect, useState } from 'react';
-
-type Mode = 'dark' | 'light';
-
-const FALLBACK = 'light' as const;
-
-export default function LightSwitch() {
- const [mode, setMode] = useState(null);
-
- useEffect(() => {
- const stored = localStorage.getItem('mode') as Mode | null;
- setMode(stored ?? FALLBACK);
- }, []);
-
- useEffect(() => {
- if (!mode) {
- return;
- }
- document.documentElement.setAttribute('data-mode', mode);
- localStorage.setItem('mode', mode);
- }, [mode]);
-
- return (
- setMode(mode === 'dark' ? 'light' : 'dark')}
- role="switch"
- aria-checked={mode === 'dark'}
- title="Toggle dark mode."
- aria-label="Toggle dark mode."
- >
- {mode && (mode === 'dark' ? : )}
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/mode-loader.astro b/sites/skeleton.dev/src/components/ui/mode-loader.astro
new file mode 100644
index 0000000000..1209b1c947
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/mode-loader.astro
@@ -0,0 +1,9 @@
+
diff --git a/sites/skeleton.dev/src/components/ui/nav-grid.astro b/sites/skeleton.dev/src/components/ui/nav-grid.astro
deleted file mode 100644
index f2eaeaae44..0000000000
--- a/sites/skeleton.dev/src/components/ui/nav-grid.astro
+++ /dev/null
@@ -1,40 +0,0 @@
----
-import { getCollection } from 'astro:content';
-import type { CollectionEntry } from 'astro:content';
-
-interface Props {
- collection: 'docs';
- path: string;
- classes: string;
-}
-
-const { collection, path, classes } = Astro.props;
-
-// Get collection, filter by path
-const collectionItems = await getCollection(collection, (item) => {
- if (item.filePath?.includes(path) && !item.id.endsWith('meta.mdx')) {
- return item;
- }
-});
-
-// Sort Order
-const sortByOrder = (a: CollectionEntry<'docs'>, b: CollectionEntry<'docs'>) => {
- return a.data.order - b.data.order;
-};
----
-
-
- {
- collectionItems.sort(sortByOrder).map((item) => (
- <>
-
- {item.data.title}
- {item.data.description}
-
- >
- ))
- }
-
diff --git a/sites/skeleton.dev/src/components/ui/navigation-grid.astro b/sites/skeleton.dev/src/components/ui/navigation-grid.astro
new file mode 100644
index 0000000000..d13d2317d4
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/navigation-grid.astro
@@ -0,0 +1,27 @@
+---
+import { getCollection } from '@/modules/content';
+import { getRelativeDocsUrl } from '@/modules/framework';
+import type { HTMLAttributes } from 'astro/types';
+
+interface Props extends Omit, 'filter'> {
+ filter?: Parameters[1];
+}
+
+const { filter, class: className, ...rest } = Astro.props;
+
+const docs = await getCollection('docs', filter);
+---
+
+
+ {
+ docs.map((doc) => (
+
+ {doc.data.title}
+ {doc.data.description}
+
+ ))
+ }
+
diff --git a/sites/skeleton.dev/src/components/ui/navigation-steps.astro b/sites/skeleton.dev/src/components/ui/navigation-steps.astro
new file mode 100644
index 0000000000..2ae1b673b6
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/navigation-steps.astro
@@ -0,0 +1,42 @@
+---
+import { getRelativeDocsUrl } from '@/modules/framework';
+import { ArrowLeftIcon, ArrowRightIcon } from '@lucide/svelte';
+import type { CollectionEntry } from 'astro:content';
+
+interface Props {
+ previousDoc?: CollectionEntry<'docs'>;
+ nextDoc?: CollectionEntry<'docs'>;
+}
+
+const { previousDoc, nextDoc } = Astro.props;
+---
+
+
+
+ {
+ previousDoc && (
+
+
+
+
Previous
+
{previousDoc.data.title}
+
+
+ )
+ }
+
+ {
+ nextDoc && (
+
+
+
Next
+
{nextDoc.data.title}
+
+
+
+ )
+ }
+
diff --git a/sites/skeleton.dev/src/components/ui/navigation.astro b/sites/skeleton.dev/src/components/ui/navigation.astro
new file mode 100644
index 0000000000..01fdd49673
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/navigation.astro
@@ -0,0 +1,38 @@
+---
+import { getRelativeDocsUrl } from '@/modules/framework';
+import { commonSections, type Section } from '@/modules/navigation';
+import { removeTrailingSlash } from '@/modules/normalize-path';
+
+interface Props {
+ sections?: Section[];
+}
+
+const { sections = commonSections } = Astro.props;
+---
+
+
+ {
+ sections.map(async (section) => (
+
+ {section.label}
+
+
+ ))
+ }
+
diff --git a/sites/skeleton.dev/src/components/ui/navigation.tsx b/sites/skeleton.dev/src/components/ui/navigation.tsx
deleted file mode 100644
index 04c72a34f4..0000000000
--- a/sites/skeleton.dev/src/components/ui/navigation.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import { framework } from '@/lib/framework';
-import type { NavigationGroup } from '@/lib/navigation';
-import { useEffect } from 'react';
-
-interface NavigationProps {
- navigationGroups: NavigationGroup[];
- url: URL;
-}
-
-export default function Navigation(props: NavigationProps) {
- const { navigationGroups, url } = props;
-
- useEffect(() => {
- const SIDEBAR_SCROLL_KEY = 'sidebar-scroll-position';
-
- function handleSidebarScroll(event: Event) {
- if (!(event.target instanceof HTMLElement)) {
- return;
- }
- sessionStorage.setItem(SIDEBAR_SCROLL_KEY, String(event.target.scrollTop));
- }
-
- function restoreScrollPosition() {
- const sidebar = document.querySelector('[data-navigation]');
- if (!sidebar) {
- return;
- }
-
- const scrollPosition = sessionStorage.getItem(SIDEBAR_SCROLL_KEY);
- sidebar.scrollTop = parseInt(scrollPosition ?? '0', 10);
-
- sidebar.removeEventListener('scroll', handleSidebarScroll);
- sidebar.addEventListener('scroll', handleSidebarScroll);
- }
-
- function rewriteAnchorHrefs(value: ReturnType) {
- const anchors = document.querySelectorAll('a');
- for (const anchor of anchors) {
- if (!anchor.href.endsWith('meta')) {
- continue;
- }
- anchor.setAttribute('href', anchor.href.replace('meta', value));
- }
- }
-
- restoreScrollPosition();
- rewriteAnchorHrefs(framework.get());
-
- framework.subscribe((framework) => {
- rewriteAnchorHrefs(framework);
- });
-
- document.addEventListener('astro:after-swap', () => {
- restoreScrollPosition();
- rewriteAnchorHrefs(framework.get());
- });
- }, []);
-
- return (
-
- {navigationGroups.map((group) => (
-
- {group.title}
-
-
- ))}
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/open-in-stackblitz.svelte b/sites/skeleton.dev/src/components/ui/open-in-stackblitz.svelte
new file mode 100644
index 0000000000..3ef623e8c0
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/open-in-stackblitz.svelte
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/sites/skeleton.dev/src/components/ui/preview.svelte b/sites/skeleton.dev/src/components/ui/preview.svelte
new file mode 100644
index 0000000000..9ce305b406
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/preview.svelte
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+ (viewMode = details.value[0])} deselectable={false}>
+
+
+
+
+
+
+
+
+
+ (customizeMode = details.value[0])}
+ class="ml-auto {viewMode === 'preview' ? 'block' : 'hidden'}"
+ >
+
+
+
+
+
+
+ {#if framework}
+
+ {/if}
+
+
+
+
+ {#each presets as preset, i (preset)}
+ (activePreset = preset)}
+ >
+ {preset}
+
+ {/each}
+
+
+
+
+ {@render children?.()}
+
+
+
+
+ {#if fileEntries.length > 1}
+
+ {#if files}
+ {#each fileEntries as [file] (file)}
+ {file}
+ {/each}
+ {/if}
+
+
+ {/if}
+
+ {#each fileEntries as [file, content] (file)}
+
+
+
+ {/each}
+
+
diff --git a/sites/skeleton.dev/src/components/ui/preview.tsx b/sites/skeleton.dev/src/components/ui/preview.tsx
deleted file mode 100644
index e106248596..0000000000
--- a/sites/skeleton.dev/src/components/ui/preview.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import { useState, type ReactNode } from 'react';
-
-interface PreviewProps {
- selected: 'preview' | 'code' | 'codeReact' | 'codeSvelte';
- preview: ReactNode;
- code: ReactNode;
- codeReact: ReactNode;
- codeSvelte: ReactNode;
-}
-
-export default function Preview(props: PreviewProps) {
- const [selected, setSelected] = useState(props.selected || 'preview');
- const cTab = 'border-b-[1px] border-transparent pb-2 hover:[&>span]:preset-tonal-primary';
- const cTabControl = 'block p-2 px-4 capitalize rounded-container';
- const cTabActive = '!border-surface-950-50';
-
- function selectedClass(tab: string) {
- if (tab === selected) {
- return cTabActive;
- }
- }
-
- return (
-
- {/* Tabs */}
-
- {/* Tab: Preview */}
- {props.preview && (
- setSelected('preview')}>
- Preview
-
- )}
- {/* Tab: Code (generic) */}
- {props.code && (
- setSelected('code')}>
- {props.codeReact || props.codeSvelte ? 'Generic' : 'Code'}
-
- )}
- {/* Tab: Code (React) */}
- {props.codeReact && (
- setSelected('codeReact')}>
- React
-
- )}
- {/* Tab: Code (Svelte) */}
- {props.codeSvelte && (
- setSelected('codeSvelte')}>
- Svelte
-
- )}
-
- {/* Panel: Preview */}
-
- {props.preview}
-
- {/* Panel: Code (Generic) */}
-
{props.code}
- {/* Panel: Code (React) */}
-
{props.codeReact}
- {/* Panel: Code (Svelte) */}
-
{props.codeSvelte}
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/process-step.astro b/sites/skeleton.dev/src/components/ui/process-step.astro
index 0bd10913de..9784df8bc3 100644
--- a/sites/skeleton.dev/src/components/ui/process-step.astro
+++ b/sites/skeleton.dev/src/components/ui/process-step.astro
@@ -1,13 +1,18 @@
---
-import { CheckIcon } from 'lucide-react';
+import { CheckIcon } from '@lucide/svelte';
+
+interface Props {
+ step: string | number;
+}
+
const { step } = Astro.props;
---
- {step !== 'check' ? step : }
+ {step !== 'check' ? step : }
-
+
diff --git a/sites/skeleton.dev/src/components/ui/search.tsx b/sites/skeleton.dev/src/components/ui/search.tsx
deleted file mode 100644
index 09fe1a4e19..0000000000
--- a/sites/skeleton.dev/src/components/ui/search.tsx
+++ /dev/null
@@ -1,174 +0,0 @@
-import { isFramework, framework } from '@/lib/framework';
-import { Dialog, Portal, useDialog } from '@skeletonlabs/skeleton-react';
-import { BookIcon, ChevronRightIcon, HashIcon, LoaderIcon, SearchIcon } from 'lucide-react';
-import { useEffect, useState, useCallback } from 'react';
-import type { Pagefind, PagefindSearchFragment } from 'vite-plugin-pagefind/types';
-
-type SearchState =
- | { status: 'idle' }
- | { status: 'loading' }
- | { status: 'success'; results: PagefindSearchFragment[] }
- | { status: 'error'; error: string };
-
-export default function Search() {
- let pagefind: Pagefind | null = null;
- const [query, setQuery] = useState('');
- const [searchState, setSearchState] = useState({ status: 'idle' });
-
- const dialog = useDialog();
-
- const getOrInitializePagefind = useCallback(async () => {
- if (pagefind) {
- return pagefind;
- }
- // @ts-expect-error - will be present at runtime
- pagefind = await import('/pagefind/pagefind.js');
- if (!pagefind) {
- throw new Error('Unable to find pagefind module');
- }
- await pagefind.init();
- return pagefind;
- // oxlint-disable-next-line exhaustive-deps
- }, []);
-
- const performSearch = useCallback(
- async (searchQuery: string) => {
- if (!searchQuery.trim()) {
- setSearchState({ status: 'idle' });
- return;
- }
-
- setSearchState({ status: 'loading' });
-
- try {
- const pf = await getOrInitializePagefind();
- const result = await pf.debouncedSearch(searchQuery, {}, 250);
-
- // If null, this search was cancelled by a more recent search - do nothing
- if (result === null) {
- return;
- }
-
- const results = (await Promise.all(result.results.map((r) => r.data()))).filter((res) => {
- const urlFramework = res.url.split('/').at(-2);
- if (!isFramework(urlFramework)) return true;
- return urlFramework === framework.get();
- });
-
- setSearchState({ status: 'success', results: results });
- } catch {
- setSearchState({ status: 'error', error: 'Search failed' });
- }
- },
- // oxlint-disable-next-line exhaustive-deps
- [getOrInitializePagefind],
- );
-
- useEffect(() => {
- performSearch(query).catch(() => {
- setSearchState({ status: 'error', error: 'Search failed' });
- });
- }, [query, performSearch]);
-
- useEffect(() => {
- function onKeyDown(event: KeyboardEvent) {
- if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') {
- event.preventDefault();
- dialog.setOpen(true);
- }
- }
- document.addEventListener('keydown', onKeyDown);
- return () => document.removeEventListener('keydown', onKeyDown);
- }, [dialog]);
-
- return (
-
-
-
-
- Search...
-
-
- ⌘
- K
-
-
-
-
-
-
-
-
-
-
-
setQuery(e.target.value)} />
-
-
- {searchState.status === 'idle' ? (
- What can we help you find?
- ) : searchState.status === 'loading' ? (
-
-
-
- ) : searchState.status === 'error' ? (
- {searchState.error}
- ) : searchState.results.length === 0 ? (
-
- No results found for {query}
-
- ) : (
-
- {searchState.results.map((result) => (
-
- dialog.setOpen(false)}
- >
-
-
-
{result.meta.title}
-
{result.url}
-
-
-
-
-
- ))}
-
- )}
-
-
-
-
-
- );
-}
diff --git a/sites/skeleton.dev/src/components/ui/table-cookbook.astro b/sites/skeleton.dev/src/components/ui/table-cookbook.astro
index 2fdf6b39fb..73fca09dd0 100644
--- a/sites/skeleton.dev/src/components/ui/table-cookbook.astro
+++ b/sites/skeleton.dev/src/components/ui/table-cookbook.astro
@@ -1,12 +1,8 @@
---
-import { getCollection } from 'astro:content';
+import { getCollection } from '@/modules/content';
-const collection = 'docs';
-const path = 'guides/cookbook/';
-
-// Get Collection
-const tableData = await getCollection(collection, (item) => {
- if (item.filePath?.includes(path)) {
+const docs = await getCollection('docs', (item) => {
+ if (item.filePath?.includes('guides/cookbook/')) {
return item;
}
});
@@ -16,19 +12,18 @@ const tableData = await getCollection(collection, (item) => {
{
- tableData.map((row) => (
-
- {row.data.title}
+ docs.map((doc) => (
+
+ {doc.data.title}
- {row.data.tags?.map((tag: string) => (
+ {doc.data.tags?.map((tag: string) => (
{tag}
))}
- {/* {row.data.pubDate?.toLocaleDateString()} */}
-
+
Explore →
diff --git a/sites/skeleton.dev/src/components/ui/table-of-contents.astro b/sites/skeleton.dev/src/components/ui/table-of-contents.astro
deleted file mode 100644
index c95003dba1..0000000000
--- a/sites/skeleton.dev/src/components/ui/table-of-contents.astro
+++ /dev/null
@@ -1,51 +0,0 @@
----
-interface PageHeadings {
- depth: number;
- slug: string;
- text: string;
-}
-
-interface Props {
- headings: PageHeadings[];
-}
-
-const { headings } = Astro.props;
-
-function setDepthClass(depth: number) {
- if (depth === 3) {
- return 'ml-4';
- }
- if (depth === 4) {
- return 'ml-6';
- }
- if (depth === 5) {
- return 'ml-8';
- }
- if (depth === 6) {
- return 'ml-10';
- }
- return;
-}
----
-
-{
- headings.length > 0 && (
-
- On This Page
-
-
- )
-}
diff --git a/sites/skeleton.dev/src/components/ui/table-of-contents.svelte b/sites/skeleton.dev/src/components/ui/table-of-contents.svelte
new file mode 100644
index 0000000000..2c0dcc83b5
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/table-of-contents.svelte
@@ -0,0 +1,80 @@
+
+
+
+
+{#if headings.length > 0}
+
+
+ On This Page
+
+
+
+
+ {#each headings as heading (heading)}
+
+ {#snippet element(attributes: Record)}
+
+
+ {heading.text}
+
+
+
+ {/snippet}
+
+ {/each}
+
+
+
+{/if}
diff --git a/sites/skeleton.dev/src/components/ui/theme-list.astro b/sites/skeleton.dev/src/components/ui/theme-list.astro
index f97bcc1e3b..d712e6690f 100644
--- a/sites/skeleton.dev/src/components/ui/theme-list.astro
+++ b/sites/skeleton.dev/src/components/ui/theme-list.astro
@@ -26,9 +26,16 @@ import { themes } from '@skeletonlabs/skeleton-common';
diff --git a/sites/skeleton.dev/src/components/ui/theme-loader.astro b/sites/skeleton.dev/src/components/ui/theme-loader.astro
new file mode 100644
index 0000000000..0f135dd343
--- /dev/null
+++ b/sites/skeleton.dev/src/components/ui/theme-loader.astro
@@ -0,0 +1,9 @@
+
diff --git a/sites/skeleton.dev/src/content.config.ts b/sites/skeleton.dev/src/content.config.ts
index 0e8fbf3d51..7730639391 100644
--- a/sites/skeleton.dev/src/content.config.ts
+++ b/sites/skeleton.dev/src/content.config.ts
@@ -3,41 +3,39 @@ import { defineCollection, z } from 'astro:content';
import { Octokit } from 'octokit';
export const collections = {
- docs: defineCollection({
+ frameworks: defineCollection({
loader: glob({
- base: './src/content/docs',
- pattern: ['**/*.mdx', '!**/_*.mdx'],
+ base: './src/content/frameworks',
+ pattern: '*.json',
}),
schema: z.object({
- title: z.string().optional().default('(Title)'),
- description: z.string().optional().default('(Description)'),
- srcCore: z.string().optional(),
- srcCss: z.string().optional(),
- srcSvelte: z.string().optional(),
- srcReact: z.string().optional(),
- srcAlly: z.string().optional(),
- srcZag: z.string().optional(),
- stability: z.enum(['alpha', 'beta', 'stable']).optional().default('stable'),
- showDocsUrl: z.boolean().optional().default(false),
- pubDate: z.date().optional(),
- tags: z.array(z.string()).optional(),
- order: z.number().optional().default(0),
+ name: z.string().nonempty(),
+ logo: z.string().nonempty(),
+ default: z.boolean().optional().default(false),
}),
}),
- 'showcase-projects': defineCollection({
+ docs: defineCollection({
loader: glob({
- base: './src/content/showcase-projects',
- pattern: '**/*.json',
+ base: './src/content/docs',
+ pattern: '**/*.{md,mdx}',
}),
schema: z.object({
- name: z.string(),
- description: z.string(),
- url: z.string(),
- playwright: z
+ title: z.string().nonempty(),
+ description: z.string().nonempty(),
+ summary: z.string().optional(),
+ features: z.array(z.string()).optional(),
+ stability: z.enum(['alpha', 'beta', 'stable']).optional().default('stable'),
+ order: z.number().nonnegative().optional().default(0),
+ tags: z.array(z.string()).optional().default([]),
+ references: z
.object({
- instructions: z.array(z.string()),
+ source: z.union([z.string().url(), z.literal(false)]).optional(),
+ styles: z.union([z.string().url(), z.literal(false)]).optional(),
+ a11y: z.union([z.string().url(), z.literal(false)]).optional(),
+ zag: z.union([z.string().url(), z.literal(false)]).optional(),
})
- .optional(),
+ .optional()
+ .default({}),
}),
}),
contributors: defineCollection({
@@ -69,6 +67,22 @@ export const collections = {
login: z.string(),
}),
}),
+ 'showcase-projects': defineCollection({
+ loader: glob({
+ base: './src/content/showcase-projects',
+ pattern: '*.json',
+ }),
+ schema: z.object({
+ name: z.string(),
+ description: z.string(),
+ url: z.string(),
+ playwright: z
+ .object({
+ instructions: z.array(z.string()),
+ })
+ .optional(),
+ }),
+ }),
types: defineCollection({
loader: glob({
base: './src/content/types',
diff --git a/sites/skeleton.dev/src/content/docs/components/accordion/meta.mdx b/sites/skeleton.dev/src/content/docs/components/accordion/meta.mdx
deleted file mode 100644
index 370e1b6f46..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/accordion/meta.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Accordion
-description: Divide content into collapsible sections.
-srcCss: '/src/classes/accordion'
-srcSvelte: '/src/components/accordion'
-srcReact: '/src/components/accordion'
-srcAlly: 'https://www.w3.org/WAI/ARIA/apg/patterns/accordion/'
-srcZag: 'https://zagjs.com/components/react/accordion'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/accordion/react.mdx b/sites/skeleton.dev/src/content/docs/components/accordion/react.mdx
deleted file mode 100644
index a81325f41f..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/accordion/react.mdx
+++ /dev/null
@@ -1,109 +0,0 @@
-import Default from '@/components/examples/components/accordion/react/default';
-import DefaultRaw from '@/components/examples/components/accordion/react/default?raw';
-
-import Controlled from '@/components/examples/components/accordion/react/controlled';
-import ControlledRaw from '@/components/examples/components/accordion/react/controlled?raw';
-
-import Indicator from '@/components/examples/components/accordion/react/indicator';
-import IndicatorRaw from '@/components/examples/components/accordion/react/indicator?raw';
-
-import Collapsible from '@/components/examples/components/accordion/react/collapsible';
-import CollapsibleRaw from '@/components/examples/components/accordion/react/collapsible?raw';
-
-import Multiple from '@/components/examples/components/accordion/react/multiple';
-import MultipleRaw from '@/components/examples/components/accordion/react/multiple?raw';
-
-import Orientation from '@/components/examples/components/accordion/react/orientation';
-import OrientationRaw from '@/components/examples/components/accordion/react/orientation?raw';
-
-import Dir from '@/components/examples/components/accordion/react/dir';
-import DirRaw from '@/components/examples/components/accordion/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-Use `value` and `onValueChange` to control the value of the Accordion.
-
-
-
-
-
-
-
-
-
-
-## Indicator
-
-Add an indicator to the trigger with `Accordion.ItemIndicator`.
-
-
-
-
-
-
-
-
-
-
-## Collapsible
-
-By default you can't close open items. Adding `collapsible` changes this behavior.
-
-
-
-
-
-
-
-
-
-
-## Multiple
-
-Adding `multiple` allows items to open independently.
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-Use the `orientation` prop to change the layout direction of the Accordion.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/accordion/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/accordion/svelte.mdx
deleted file mode 100644
index e4f2a81580..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/accordion/svelte.mdx
+++ /dev/null
@@ -1,109 +0,0 @@
-import Default from '@/components/examples/components/accordion/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/accordion/svelte/default.svelte?raw';
-
-import Controlled from '@/components/examples/components/accordion/svelte/controlled.svelte';
-import ControlledRaw from '@/components/examples/components/accordion/svelte/controlled.svelte?raw';
-
-import Indicator from '@/components/examples/components/accordion/svelte/indicator.svelte';
-import IndicatorRaw from '@/components/examples/components/accordion/svelte/indicator.svelte?raw';
-
-import Collapsible from '@/components/examples/components/accordion/svelte/collapsible.svelte';
-import CollapsibleRaw from '@/components/examples/components/accordion/svelte/collapsible.svelte?raw';
-
-import Multiple from '@/components/examples/components/accordion/svelte/multiple.svelte';
-import MultipleRaw from '@/components/examples/components/accordion/svelte/multiple.svelte?raw';
-
-import Orientation from '@/components/examples/components/accordion/svelte/orientation.svelte';
-import OrientationRaw from '@/components/examples/components/accordion/svelte/orientation.svelte?raw';
-
-import Dir from '@/components/examples/components/accordion/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/accordion/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-Use `value` and `onValueChange` to control the value of the Accordion.
-
-
-
-
-
-
-
-
-
-
-## Indicator
-
-Add an indicator to the trigger with `Accordion.ItemIndicator`.
-
-
-
-
-
-
-
-
-
-
-## Collapsible
-
-By default you can't close open items. Adding `collapsible` changes this behavior.
-
-
-
-
-
-
-
-
-
-
-## Multiple
-
-Adding `multiple` allows items to open independently.
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-Use the `orientation` prop to change the layout direction of the Accordion.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/app-bar/meta.mdx b/sites/skeleton.dev/src/content/docs/components/app-bar/meta.mdx
deleted file mode 100644
index e80e24bf72..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/app-bar/meta.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: App Bar
-description: A header element for the top of your page layout.
-srcCss: '/src/classes/app-bar'
-srcSvelte: '/src/components/app-bar'
-srcReact: '/src/components/app-bar'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/app-bar/react.mdx b/sites/skeleton.dev/src/content/docs/components/app-bar/react.mdx
deleted file mode 100644
index 7a4812c4de..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/app-bar/react.mdx
+++ /dev/null
@@ -1,61 +0,0 @@
-import Default from '@/components/examples/components/app-bar/react/default';
-import DefaultRaw from '@/components/examples/components/app-bar/react/default.tsx?raw';
-
-import Centered from '@/components/examples/components/app-bar/react/centered';
-import CenteredRaw from '@/components/examples/components/app-bar/react/centered.tsx?raw';
-
-import Extended from '@/components/examples/components/app-bar/react/extended';
-import ExtendedRaw from '@/components/examples/components/app-bar/react/extended.tsx?raw';
-
-import Responsive from '@/components/examples/components/app-bar/react/responsive';
-import ResponsiveRaw from '@/components/examples/components/app-bar/react/responsive.tsx?raw';
-
-
-
-
-
-
-
-
-
-
-## Centered
-
-Control the layout using a [grid-cols-\*](https://tailwindcss.com/docs/grid-column) utility class.
-
-
-
-
-
-
-
-
-
-
-## Extended
-
-Move the `` to a new row within the root.
-
-
-
-
-
-
-
-
-
-
-## Responsive
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/app-bar/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/app-bar/svelte.mdx
deleted file mode 100644
index 333720ea21..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/app-bar/svelte.mdx
+++ /dev/null
@@ -1,61 +0,0 @@
-import Default from '@/components/examples/components/app-bar/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/app-bar/svelte/default.svelte?raw';
-
-import Centered from '@/components/examples/components/app-bar/svelte/centered.svelte';
-import CenteredRaw from '@/components/examples/components/app-bar/svelte/centered.svelte?raw';
-
-import Extended from '@/components/examples/components/app-bar/svelte/extended.svelte';
-import ExtendedRaw from '@/components/examples/components/app-bar/svelte/extended.svelte?raw';
-
-import Responsive from '@/components/examples/components/app-bar/svelte/responsive.svelte';
-import ResponsiveRaw from '@/components/examples/components/app-bar/svelte/responsive.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Centered
-
-Control the layout using a [grid-cols-\*](https://tailwindcss.com/docs/grid-column) utility class.
-
-
-
-
-
-
-
-
-
-
-## Extended
-
-Move the `` to a new row within the root.
-
-
-
-
-
-
-
-
-
-
-## Responsive
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/avatar/meta.mdx b/sites/skeleton.dev/src/content/docs/components/avatar/meta.mdx
deleted file mode 100644
index 7f4869cc7c..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/avatar/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Avatar
-description: An image with a fallback for representing the user.
-srcCss: '/src/classes/avatar'
-srcSvelte: '/src/components/avatar'
-srcReact: '/src/components/avatar'
-srcZag: 'https://zagjs.com/components/react/avatar'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/avatar/react.mdx b/sites/skeleton.dev/src/content/docs/components/avatar/react.mdx
deleted file mode 100644
index a7d637a55c..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/avatar/react.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
-import Default from '@/components/examples/components/avatar/react/default';
-import DefaultRaw from '@/components/examples/components/avatar/react/default?raw';
-
-import Fallback from '@/components/examples/components/avatar/react/fallback';
-import FallbackRaw from '@/components/examples/components/avatar/react/fallback?raw';
-
-import Filter from '@/components/examples/components/avatar/react/filter';
-import FilterRaw from '@/components/examples/components/avatar/react/filter?raw';
-
-
-
-
-
-
-
-
-
-
-## Fallback
-
-Use `` to provide initials, icons, or a framework-specific image component.
-
-
-
-
-
-
-
-
-
-
-## Filter
-
-Avatars can implement [SVG Filters](/docs/guides/cookbook/svg-filters) using the image `className` attribute.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/avatar/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/avatar/svelte.mdx
deleted file mode 100644
index cc6bb7b410..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/avatar/svelte.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
-import Default from '@/components/examples/components/avatar/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/avatar/svelte/default.svelte?raw';
-
-import Fallback from '@/components/examples/components/avatar/svelte/fallback.svelte';
-import FallbackRaw from '@/components/examples/components/avatar/svelte/fallback.svelte?raw';
-
-import Filter from '@/components/examples/components/avatar/svelte/filter.svelte';
-import FilterRaw from '@/components/examples/components/avatar/svelte/filter.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Fallback
-
-Use `` to provide initials, icons, or a framework-specific image component.
-
-
-
-
-
-
-
-
-
-
-## Filter
-
-Avatars can implement [SVG Filters](/docs/guides/cookbook/svg-filters) using the image `class` attribute.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/collapsible/meta.mdx b/sites/skeleton.dev/src/content/docs/components/collapsible/meta.mdx
deleted file mode 100644
index b5205df652..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/collapsible/meta.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Collapsible
-description: A container that can be expanded or collapsed to show or hide content.
-srcCss: '/src/classes/collapsible'
-srcSvelte: '/src/components/collapsible'
-srcReact: '/src/components/collapsible'
-srcZag: 'https://zagjs.com/components/react/collapsible'
-showDocsUrl: true
-stability: 'beta'
----
diff --git a/sites/skeleton.dev/src/content/docs/components/collapsible/react.mdx b/sites/skeleton.dev/src/content/docs/components/collapsible/react.mdx
deleted file mode 100644
index 5140c257d7..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/collapsible/react.mdx
+++ /dev/null
@@ -1,87 +0,0 @@
-import Default from '@/components/examples/components/collapsible/react/default';
-import DefaultRaw from '@/components/examples/components/collapsible/react/default?raw';
-
-import Controlled from '@/components/examples/components/collapsible/react/controlled';
-import ControlledRaw from '@/components/examples/components/collapsible/react/controlled?raw';
-
-import Indicator from '@/components/examples/components/collapsible/react/indicator';
-import IndicatorRaw from '@/components/examples/components/collapsible/react/indicator?raw';
-
-import Disabled from '@/components/examples/components/collapsible/react/disabled';
-import DisabledRaw from '@/components/examples/components/collapsible/react/disabled?raw';
-
-import Alignment from '@/components/examples/components/collapsible/react/alignment';
-import AlignmentRaw from '@/components/examples/components/collapsible/react/alignment?raw';
-
-import Dir from '@/components/examples/components/collapsible/react/dir';
-import DirRaw from '@/components/examples/components/collapsible/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-
-
-
-
-
-
-
-
-
-## Indicator
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Alignment
-
-
-
-
-
-
-
-
-
-
-{/* TODO: Uncomment once Zag >=1.26.2 is released and used by Skeleton */}
-
-{/* ## Direction */}
-
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/collapsible/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/collapsible/svelte.mdx
deleted file mode 100644
index dc153461b4..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/collapsible/svelte.mdx
+++ /dev/null
@@ -1,87 +0,0 @@
-import Default from '@/components/examples/components/collapsible/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/collapsible/svelte/default.svelte?raw';
-
-import Controlled from '@/components/examples/components/collapsible/svelte/controlled.svelte';
-import ControlledRaw from '@/components/examples/components/collapsible/svelte/controlled.svelte?raw';
-
-import Indicator from '@/components/examples/components/collapsible/svelte/indicator.svelte';
-import IndicatorRaw from '@/components/examples/components/collapsible/svelte/indicator.svelte?raw';
-
-import Disabled from '@/components/examples/components/collapsible/svelte/disabled.svelte';
-import DisabledRaw from '@/components/examples/components/collapsible/svelte/disabled.svelte?raw';
-
-import Alignment from '@/components/examples/components/collapsible/svelte/alignment.svelte';
-import AlignmentRaw from '@/components/examples/components/collapsible/svelte/alignment.svelte?raw';
-
-import Dir from '@/components/examples/components/collapsible/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/collapsible/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-
-
-
-
-
-
-
-
-
-## Indicator
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Alignment
-
-
-
-
-
-
-
-
-
-
-{/* TODO: Uncomment once Zag >=1.26.2 is released and used by Skeleton */}
-
-{/* ## Direction */}
-
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-{/* */}
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/combobox/meta.mdx b/sites/skeleton.dev/src/content/docs/components/combobox/meta.mdx
deleted file mode 100644
index e09ffa8377..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/combobox/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Combobox
-description: A combobox is an input widget with an associated popup that enables users to select a value from a collection of possible values.
-srcCss: '/src/classes/combobox'
-srcSvelte: '/src/components/combobox'
-srcReact: '/src/components/combobox'
-srcZag: 'https://zagjs.com/components/react/combobox'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/combobox/react.mdx b/sites/skeleton.dev/src/content/docs/components/combobox/react.mdx
deleted file mode 100644
index 0277175daf..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/combobox/react.mdx
+++ /dev/null
@@ -1,129 +0,0 @@
-import Default from '@/components/examples/components/combobox/react/default';
-import DefaultRaw from '@/components/examples/components/combobox/react/default?raw';
-
-import Group from '@/components/examples/components/combobox/react/group';
-import GroupRaw from '@/components/examples/components/combobox/react/group?raw';
-
-import AutoHighlight from '@/components/examples/components/combobox/react/auto-highlight';
-import AutoHighlightRaw from '@/components/examples/components/combobox/react/auto-highlight?raw';
-
-import Multiple from '@/components/examples/components/combobox/react/multiple';
-import MultipleRaw from '@/components/examples/components/combobox/react/multiple?raw';
-
-import DisabledItem from '@/components/examples/components/combobox/react/disabled-item';
-import DisabledItemRaw from '@/components/examples/components/combobox/react/disabled-item?raw';
-
-import CustomFilter from '@/components/examples/components/combobox/react/custom-filter';
-import CustomFilterRaw from '@/components/examples/components/combobox/react/custom-filter?raw';
-
-import Dir from '@/components/examples/components/combobox/react/dir';
-import DirRaw from '@/components/examples/components/combobox/react/dir?raw';
-
-import ZIndex from '@/components/examples/components/combobox/react/z-index';
-import ZIndexRaw from '@/components/examples/components/combobox/react/z-index?raw';
-
-
-
-
-
-
-
-
-
-
-## Groups
-
-Create labelled groups for your items.
-
-
-
-
-
-
-
-
-
-
-## Auto Highlight
-
-Search for any option, then tap Enter on your keyboard to automatically select it.
-
-
-
-
-
-
-
-
-
-
-## Multiple
-
-To maintain filtering functionality and improve clarity for users, we recommend displaying each selected value outside the perimeter of the Combobox component.
-
-
-
-
-
-
-
-
-
-
-## Disabled Item
-
-
-
-
-
-
-
-
-
-
-## Custom Filter
-
-Try mistyping `apple` or `banana` to see the custom filter using the fuzzy search from [Fuse.js](https://fusejs.io/) in action.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Guidelines
-
-### Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the Positioner component part.
-
-
-
-
-
-
-
-
-
-
-### Max Items
-
-We recommend no more than 500 items max. For normal usage, a few dozen will provide the best performance.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/combobox/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/combobox/svelte.mdx
deleted file mode 100644
index a2f78ea4fe..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/combobox/svelte.mdx
+++ /dev/null
@@ -1,129 +0,0 @@
-import Default from '@/components/examples/components/combobox/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/combobox/svelte/default.svelte?raw';
-
-import Group from '@/components/examples/components/combobox/svelte/group.svelte';
-import GroupRaw from '@/components/examples/components/combobox/svelte/group.svelte?raw';
-
-import AutoHighlight from '@/components/examples/components/combobox/svelte/auto-highlight.svelte';
-import AutoHighlightRaw from '@/components/examples/components/combobox/svelte/auto-highlight.svelte?raw';
-
-import Multiple from '@/components/examples/components/combobox/svelte/multiple.svelte';
-import MultipleRaw from '@/components/examples/components/combobox/svelte/multiple.svelte?raw';
-
-import DisabledItem from '@/components/examples/components/combobox/svelte/disabled-item.svelte';
-import DisabledItemRaw from '@/components/examples/components/combobox/svelte/disabled-item.svelte?raw';
-
-import CustomFilter from '@/components/examples/components/combobox/svelte/custom-filter.svelte';
-import CustomFilterRaw from '@/components/examples/components/combobox/svelte/custom-filter.svelte?raw';
-
-import Dir from '@/components/examples/components/combobox/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/combobox/svelte/dir.svelte?raw';
-
-import ZIndex from '@/components/examples/components/combobox/svelte/z-index.svelte';
-import ZIndexRaw from '@/components/examples/components/combobox/svelte/z-index.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Groups
-
-Create labelled groups for your items.
-
-
-
-
-
-
-
-
-
-
-## Auto Highlight
-
-Search for any option, then tap Enter on your keyboard to automatically select it.
-
-
-
-
-
-
-
-
-
-
-## Multiple
-
-To maintain filtering functionality and improve clarity for users, we recommend displaying each selected value outside the perimeter of the Combobox component.
-
-
-
-
-
-
-
-
-
-
-## Disabled Item
-
-
-
-
-
-
-
-
-
-
-## Custom Filter
-
-Try mistyping `apple` or `banana` to see the custom filter using the fuzzy search from [Fuse.js](https://fusejs.io/) in action.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Guidelines
-
-### Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the Positioner component part.
-
-
-
-
-
-
-
-
-
-
-### Max Items
-
-We recommend no more than 500 items max. For normal usage, a few dozen will provide the best performance.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/date-picker/meta.mdx b/sites/skeleton.dev/src/content/docs/components/date-picker/meta.mdx
deleted file mode 100644
index 51200719a9..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/date-picker/meta.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Date Picker
-description: Select dates from a calendar interface.
-srcCss: '/src/classes/date-picker'
-srcSvelte: '/src/components/date-picker'
-srcReact: '/src/components/date-picker'
-srcZag: 'https://zagjs.com/components/react/date-picker'
-showDocsUrl: true
-stability: 'beta'
----
diff --git a/sites/skeleton.dev/src/content/docs/components/date-picker/react.mdx b/sites/skeleton.dev/src/content/docs/components/date-picker/react.mdx
deleted file mode 100644
index 49505d370b..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/date-picker/react.mdx
+++ /dev/null
@@ -1,143 +0,0 @@
-import Controlled from '@/components/examples/components/date-picker/react/controlled';
-import ControlledRaw from '@/components/examples/components/date-picker/react/controlled.tsx?raw';
-
-import Default from '@/components/examples/components/date-picker/react/default';
-import DefaultRaw from '@/components/examples/components/date-picker/react/default.tsx?raw';
-
-import Disabled from '@/components/examples/components/date-picker/react/disabled';
-import DisabledRaw from '@/components/examples/components/date-picker/react/disabled.tsx?raw';
-
-import MinMax from '@/components/examples/components/date-picker/react/min-max';
-import MinMaxRaw from '@/components/examples/components/date-picker/react/min-max.tsx?raw';
-
-import Range from '@/components/examples/components/date-picker/react/range';
-import RangeRaw from '@/components/examples/components/date-picker/react/range.tsx?raw';
-
-import Inline from '@/components/examples/components/date-picker/react/inline';
-import InlineRaw from '@/components/examples/components/date-picker/react/inline.tsx?raw';
-
-import WithSelects from '@/components/examples/components/date-picker/react/with-selects';
-import WithSelectsRaw from '@/components/examples/components/date-picker/react/with-selects.tsx?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-Manage the selected date value with React state.
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-Disable the date picker to prevent user interaction.
-
-
-
-
-
-
-
-
-
-
-## Minimum and Maximum
-
-Restrict date selection to a specific range using the `min` and `max` props with the `parseDate` helper function.
-
-
-
-
-
-
-
-
-
-
-## Range Selection
-
-Enable range selection by setting `selectionMode="range"` on the root component. Use two input fields with `index={0}` and `index={1}` to represent the start and end dates.
-
-
-
-
-
-
-
-
-
-
-## Inline calendar
-
-Display the calendar inline without a popover by adding the `inline` prop to the root component. When using inline mode, omit the `Portal` and `Positioner` components.
-
-
-
-
-
-
-
-
-
-
-## Month and Year Selection
-
-Optionally add ` ` and ` ` components to provide dropdown selectors for quickly changing the month and year.
-
-
-
-
-
-
-
-
-
-
-## Guidelines
-
-### Portal
-
-The Date Picker content is rendered inside a [Portal](/docs/components/portal) component by default to avoid z-index stacking issues. The Portal renders the content at the end of the document body.
-
-### Views
-
-The Date Picker supports three different views:
-
-- **Day view** - Select a specific day from the calendar
-- **Month view** - Select a month by clicking the view trigger when in day view
-- **Year view** - Select a year by clicking the view trigger when in month view
-
-Use the `` component with the `view` prop to define each view's layout.
-
-### Context
-
-The `` component provides access to the date picker API for rendering dynamic content like weeks, months, and years grids. Use the render prop pattern to access the API.
-
-### Parse Date
-
-Use the `parseDate` helper function to convert strings or Date objects to the appropriate date format. Zag.js adjusts this using [@internationalized/date](https://github.com/adobe/react-spectrum/tree/main/packages/@internationalized/date) under the hood.
-
-```tsx
-import { parseDate } from '@skeletonlabs/skeleton-react';
-
-const date = parseDate('2025-10-15');
-const minDate = parseDate('2024-01-01');
-const maxDate = parseDate('2024-12-31');
-```
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/date-picker/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/date-picker/svelte.mdx
deleted file mode 100644
index 8ab9dbc877..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/date-picker/svelte.mdx
+++ /dev/null
@@ -1,145 +0,0 @@
-import Controlled from '@/components/examples/components/date-picker/svelte/controlled.svelte';
-import ControlledRaw from '@/components/examples/components/date-picker/svelte/controlled.svelte?raw';
-
-import Default from '@/components/examples/components/date-picker/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/date-picker/svelte/default.svelte?raw';
-
-import Disabled from '@/components/examples/components/date-picker/svelte/disabled.svelte';
-import DisabledRaw from '@/components/examples/components/date-picker/svelte/disabled.svelte?raw';
-
-import MinMax from '@/components/examples/components/date-picker/svelte/min-max.svelte';
-import MinMaxRaw from '@/components/examples/components/date-picker/svelte/min-max.svelte?raw';
-
-import Range from '@/components/examples/components/date-picker/svelte/range.svelte';
-import RangeRaw from '@/components/examples/components/date-picker/svelte/range.svelte?raw';
-
-import Inline from '@/components/examples/components/date-picker/svelte/inline.svelte';
-import InlineRaw from '@/components/examples/components/date-picker/svelte/inline.svelte?raw';
-
-import WithSelects from '@/components/examples/components/date-picker/svelte/with-selects.svelte';
-import WithSelectsRaw from '@/components/examples/components/date-picker/svelte/with-selects.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-Manage the selected date value with Svelte state.
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-Disable the date picker to prevent user interaction.
-
-
-
-
-
-
-
-
-
-
-## Minimum and Maximum
-
-Restrict date selection to a specific range using the `min` and `max` props with the `parseDate` helper function.
-
-
-
-
-
-
-
-
-
-
-## Range Selection
-
-Enable range selection by setting `selectionMode="range"` on the root component. Use two input fields with `index={0}` and `index={1}` to represent the start and end dates.
-
-
-
-
-
-
-
-
-
-
-## Inline calendar
-
-Display the calendar inline without a popover by adding the `inline` prop to the root component. When using inline mode, omit the `Portal` and `Positioner` components.
-
-
-
-
-
-
-
-
-
-
-## Month and Year Selection
-
-Optionally add ` ` and ` ` components to provide dropdown selectors for quickly changing the month and year.
-
-
-
-
-
-
-
-
-
-
-## Guidelines
-
-### Portal
-
-The Date Picker content is rendered inside a [Portal](/docs/components/portal) component by default to avoid z-index stacking issues. The Portal renders the content at the end of the document body.
-
-### Views
-
-The Date Picker supports three different views:
-
-- **Day view** - Select a specific day from the calendar
-- **Month view** - Select a month by clicking the view trigger when in day view
-- **Year view** - Select a year by clicking the view trigger when in month view
-
-Use the `` component with the `view` prop to define each view's layout.
-
-### Context
-
-The `` component provides access to the date picker API for rendering dynamic content like weeks, months, and years grids. Use the children snippet pattern to access the API.
-
-### Parse Date
-
-Use the `parseDate` helper function to convert strings or Date objects to the appropriate date format. Zag.js adjusts this using [@internationalized/date](https://github.com/adobe/react-spectrum/tree/main/packages/@internationalized/date) under the hood.
-
-```svelte
-
-```
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/dialog/meta.mdx b/sites/skeleton.dev/src/content/docs/components/dialog/meta.mdx
deleted file mode 100644
index 7f9e640342..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/dialog/meta.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Dialog
-
-description: A modal dialog for displaying content and actions.
-srcCss: '/src/classes/dialog'
-srcSvelte: '/src/components/dialog'
-srcReact: '/src/components/dialog'
-srcZag: 'https://zagjs.com/components/react/dialog'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/dialog/react.mdx b/sites/skeleton.dev/src/content/docs/components/dialog/react.mdx
deleted file mode 100644
index 7de62b9e1a..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/dialog/react.mdx
+++ /dev/null
@@ -1,116 +0,0 @@
-import Default from '@/components/examples/components/dialog/react/default';
-import DefaultRaw from '@/components/examples/components/dialog/react/default?raw';
-
-import AlertDialog from '@/components/examples/components/dialog/react/alert-dialog';
-import AlertDialogRaw from '@/components/examples/components/dialog/react/alert-dialog?raw';
-
-import Interaction from '@/components/examples/components/dialog/react/interaction';
-import InteractionRaw from '@/components/examples/components/dialog/react/interaction?raw';
-
-import Drawer from '@/components/examples/components/dialog/react/drawer';
-import DrawerRaw from '@/components/examples/components/dialog/react/drawer?raw';
-
-import ZIndex from '@/components/examples/components/dialog/react/z-index';
-import ZIndexRaw from '@/components/examples/components/dialog/react/z-index?raw';
-
-import Dir from '@/components/examples/components/dialog/react/dir';
-import DirRaw from '@/components/examples/components/dialog/react/dir?raw';
-
-import Headless from '@/components/examples/components/dialog/react/headless';
-import HeadlessRaw from '@/components/examples/components/dialog/react/headless?raw';
-
-
-
-
-
-
-
-
-
-
-## Alert Dialog
-
-The [alertdialog](https://w3c.github.io/aria/#alertdialog) role enables assistive technologies and browsers to distinguish alert dialogs from other dialogs so they have the option of giving alert dialogs special treatment, such as playing a system alert sound.
-
-
-
-
-
-
-
-
-
-
-## Interaction
-
-If desired, you can disable click to close interactions for the backdrop. We recommend using this sparingly, as this traps the
-user in this experience.
-
-
-
-
-
-
-
-
-
-
-## Drawer
-
-This example repurposes the Dialog for use as a side-panel Drawer. It also introduces basic transition animations.
-
-
-
-
-
-
-
-
-
-
-## Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the `Positioner` component part.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Headless
-
-Unlike most components in Skeleton, this feature is provided "headless". This means no default styles are applied out of the box. This ensures you retain full control of all styling.
-
-
-
-
-
-
-
-
-
-
-The benefits are as follows:
-
-- You can make the `Trigger` surround any element, including an icon, button, image, etc.
-- You can modify the entire structure within `Content`, including custom markup and styling.
-- You may place the `CloseTrigger` anywhere, and use it as an X close option.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/dialog/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/dialog/svelte.mdx
deleted file mode 100644
index 0e0c09d776..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/dialog/svelte.mdx
+++ /dev/null
@@ -1,116 +0,0 @@
-import Default from '@/components/examples/components/dialog/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/dialog/svelte/default.svelte?raw';
-
-import AlertDialog from '@/components/examples/components/dialog/svelte/alert-dialog.svelte';
-import AlertDialogRaw from '@/components/examples/components/dialog/svelte/alert-dialog.svelte?raw';
-
-import Interaction from '@/components/examples/components/dialog/svelte/interaction.svelte';
-import InteractionRaw from '@/components/examples/components/dialog/svelte/interaction.svelte?raw';
-
-import Drawer from '@/components/examples/components/dialog/svelte/drawer.svelte';
-import DrawerRaw from '@/components/examples/components/dialog/svelte/drawer.svelte?raw';
-
-import ZIndex from '@/components/examples/components/dialog/svelte/z-index.svelte';
-import ZIndexRaw from '@/components/examples/components/dialog/svelte/z-index.svelte?raw';
-
-import Dir from '@/components/examples/components/dialog/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/dialog/svelte/dir.svelte?raw';
-
-import Headless from '@/components/examples/components/dialog/svelte/headless.svelte';
-import HeadlessRaw from '@/components/examples/components/dialog/svelte/headless.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Alert Dialog
-
-The [alertdialog](https://w3c.github.io/aria/#alertdialog) role enables assistive technologies and browsers to distinguish alert dialogs from other dialogs so they have the option of giving alert dialogs special treatment, such as playing a system alert sound.
-
-
-
-
-
-
-
-
-
-
-## Interaction
-
-If desired, you can disable click to close interactions for the backdrop. We recommend using this sparingly, as this traps the
-user in this experience.
-
-
-
-
-
-
-
-
-
-
-## Drawer
-
-This example repurposes the Dialog for use as a side-panel Drawer. It also introduces basic transition animations.
-
-
-
-
-
-
-
-
-
-
-## Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the `Positioner` component part.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Headless
-
-Unlike most components in Skeleton, this feature is provided "headless". This means no default styles are applied out of the box. This ensures you retain full control of all styling.
-
-
-
-
-
-
-
-
-
-
-The benefits are as follows:
-
-- You can make the `Trigger` surround any element, including an icon, button, image, etc.
-- You can modify the entire structure within `Content`, including custom markup and styling.
-- You may place the `CloseTrigger` anywhere, and use it as an X close option.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/file-upload/meta.mdx b/sites/skeleton.dev/src/content/docs/components/file-upload/meta.mdx
deleted file mode 100644
index 8f283a20ee..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/file-upload/meta.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: File Upload
-description: A component for uploading files with drag-and-drop and browse support.
-srcCss: '/src/classes/file-upload'
-srcSvelte: '/src/components/file-upload'
-srcReact: '/src/components/file-upload'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/file-upload/react.mdx b/sites/skeleton.dev/src/content/docs/components/file-upload/react.mdx
deleted file mode 100644
index 027be2cd94..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/file-upload/react.mdx
+++ /dev/null
@@ -1,89 +0,0 @@
-import Default from '@/components/examples/components/file-upload/react/default';
-import DefaultRaw from '@/components/examples/components/file-upload/react/default?raw';
-
-import CustomContent from '@/components/examples/components/file-upload/react/custom-content';
-import CustomContentRaw from '@/components/examples/components/file-upload/react/custom-content?raw';
-
-import Disabled from '@/components/examples/components/file-upload/react/disabled';
-import DisabledRaw from '@/components/examples/components/file-upload/react/disabled?raw';
-
-import Button from '@/components/examples/components/file-upload/react/button';
-import ButtonRaw from '@/components/examples/components/file-upload/react/button?raw';
-
-import ClearFiles from '@/components/examples/components/file-upload/react/clear-files';
-import ClearFilesRaw from '@/components/examples/components/file-upload/react/clear-files?raw';
-
-import Dir from '@/components/examples/components/file-upload/react/dir';
-import DirRaw from '@/components/examples/components/file-upload/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Custom Content
-
-Supply your own text and icons within the dropzone.
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Button Only
-
-
-
-
-
-
-
-
-
-
-## Clear Files
-
-Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the `clearFiles` method.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/file-upload/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/file-upload/svelte.mdx
deleted file mode 100644
index 670ae6c825..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/file-upload/svelte.mdx
+++ /dev/null
@@ -1,89 +0,0 @@
-import Default from '@/components/examples/components/file-upload/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/file-upload/svelte/default.svelte?raw';
-
-import CustomContent from '@/components/examples/components/file-upload/svelte/custom-content.svelte';
-import CustomContentRaw from '@/components/examples/components/file-upload/svelte/custom-content.svelte?raw';
-
-import Disabled from '@/components/examples/components/file-upload/svelte/disabled.svelte';
-import DisabledRaw from '@/components/examples/components/file-upload/svelte/disabled.svelte?raw';
-
-import Button from '@/components/examples/components/file-upload/svelte/button.svelte';
-import ButtonRaw from '@/components/examples/components/file-upload/svelte/button.svelte?raw';
-
-import ClearFiles from '@/components/examples/components/file-upload/svelte/clear-files.svelte';
-import ClearFilesRaw from '@/components/examples/components/file-upload/svelte/clear-files.svelte?raw';
-
-import Dir from '@/components/examples/components/file-upload/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/file-upload/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Custom Content
-
-Supply your own text and icons within the dropzone.
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Button Only
-
-
-
-
-
-
-
-
-
-
-## Clear Files
-
-Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the `clearFiles` method.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/listbox/meta.mdx b/sites/skeleton.dev/src/content/docs/components/listbox/meta.mdx
deleted file mode 100644
index 775439fe15..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/listbox/meta.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Listbox
-description: Select one or more items from a list of options.
-srcCss: '/src/classes/listbox'
-srcSvelte: '/src/components/listbox'
-srcReact: '/src/components/listbox'
-srcZag: 'https://zagjs.com/components/react/listbox'
-showDocsUrl: true
-stability: 'beta'
----
diff --git a/sites/skeleton.dev/src/content/docs/components/listbox/react.mdx b/sites/skeleton.dev/src/content/docs/components/listbox/react.mdx
deleted file mode 100644
index 6b69567594..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/listbox/react.mdx
+++ /dev/null
@@ -1,111 +0,0 @@
-import Default from '@/components/examples/components/listbox/react/default';
-import DefaultRaw from '@/components/examples/components/listbox/react/default?raw';
-
-import Group from '@/components/examples/components/listbox/react/group';
-import GroupRaw from '@/components/examples/components/listbox/react/group?raw';
-
-import Multiple from '@/components/examples/components/listbox/react/multiple';
-import MultipleRaw from '@/components/examples/components/listbox/react/multiple?raw';
-
-import Disabled from '@/components/examples/components/listbox/react/disabled';
-import DisabledRaw from '@/components/examples/components/listbox/react/disabled?raw';
-
-import DisabledItem from '@/components/examples/components/listbox/react/disabled-item';
-import DisabledItemRaw from '@/components/examples/components/listbox/react/disabled-item?raw';
-
-import Search from '@/components/examples/components/listbox/react/search';
-import SearchRaw from '@/components/examples/components/listbox/react/search?raw';
-
-import Dir from '@/components/examples/components/listbox/react/dir';
-import DirRaw from '@/components/examples/components/listbox/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Groups
-
-Create labelled groups for your items.
-
-
-
-
-
-
-
-
-
-
-## Multiple
-
-Select multiple items from the list.
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-Disable the entire listbox.
-
-
-
-
-
-
-
-
-
-
-## Disabled Item
-
-Disable specific items in the list.
-
-
-
-
-
-
-
-
-
-
-## Search
-
-Add a search input to filter items.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-Control the text direction of the listbox.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/listbox/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/listbox/svelte.mdx
deleted file mode 100644
index ccdcd385e3..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/listbox/svelte.mdx
+++ /dev/null
@@ -1,111 +0,0 @@
-import Default from '@/components/examples/components/listbox/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/listbox/svelte/default.svelte?raw';
-
-import Group from '@/components/examples/components/listbox/svelte/group.svelte';
-import GroupRaw from '@/components/examples/components/listbox/svelte/group.svelte?raw';
-
-import Multiple from '@/components/examples/components/listbox/svelte/multiple.svelte';
-import MultipleRaw from '@/components/examples/components/listbox/svelte/multiple.svelte?raw';
-
-import Disabled from '@/components/examples/components/listbox/svelte/disabled.svelte';
-import DisabledRaw from '@/components/examples/components/listbox/svelte/disabled.svelte?raw';
-
-import DisabledItem from '@/components/examples/components/listbox/svelte/disabled-item.svelte';
-import DisabledItemRaw from '@/components/examples/components/listbox/svelte/disabled-item.svelte?raw';
-
-import Search from '@/components/examples/components/listbox/svelte/search.svelte';
-import SearchRaw from '@/components/examples/components/listbox/svelte/search.svelte?raw';
-
-import Dir from '@/components/examples/components/listbox/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/listbox/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Groups
-
-Create labelled groups for your items.
-
-
-
-
-
-
-
-
-
-
-## Multiple
-
-Select multiple items from the list.
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-Disable the entire listbox.
-
-
-
-
-
-
-
-
-
-
-## Disabled Item
-
-Disable specific items in the list.
-
-
-
-
-
-
-
-
-
-
-## Search
-
-Add a search input to filter items.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-Control the text direction of the listbox.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/navigation/meta.mdx b/sites/skeleton.dev/src/content/docs/components/navigation/meta.mdx
deleted file mode 100644
index 7ac6f55f2c..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/navigation/meta.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: Navigation
-description: A flexible navigation interface for large, medium, and small screens.
-srcCss: '/src/classes/navigation'
-srcSvelte: '/src/components/navigation'
-srcReact: '/src/components/navigation'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/navigation/react.mdx b/sites/skeleton.dev/src/content/docs/components/navigation/react.mdx
deleted file mode 100644
index a1706901ff..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/navigation/react.mdx
+++ /dev/null
@@ -1,79 +0,0 @@
-import Default from '@/components/examples/components/navigation/react/default';
-import DefaultRaw from '@/components/examples/components/navigation/react/default.tsx?raw';
-
-import Rail from '@/components/examples/components/navigation/react/rail';
-import RailRaw from '@/components/examples/components/navigation/react/rail.tsx?raw';
-
-import Sidebar from '@/components/examples/components/navigation/react/sidebar';
-import SidebarRaw from '@/components/examples/components/navigation/react/sidebar.tsx?raw';
-
-import Toggle from '@/components/examples/components/navigation/react/toggle';
-import ToggleRaw from '@/components/examples/components/navigation/react/toggle.tsx?raw';
-
-## Bar
-
-
-
-
-
-
-
-
-
-
-- Recommended for small sized screens (ex: mobile).
-- Ideal for vertical screen layouts.
-- Should be fixed to the bottom of the viewport.
-- Supports 3-5 tiles based on contents and viewport width.
-- Consider progressive enhancement with the [Virtual Keyboard API](https://developer.mozilla.org/en-US/docs/Web/API/VirtualKeyboard_API).
-
-## Rail
-
-
-
-
-
-
-
-
-
-
-- Recommended for medium sized screens (ex: tablet).
-- Ideal for horizontal screen layouts.
-- Should be fixed to the left or right of the viewport.
-- Supports 3-7 tiles based on contents and viewport height.
-
-## Sidebar
-
-
-
-
-
-
-
-
-
-
-- Recommended for large sized screens (ex: desktop).
-- Ideal for horizontal screen layouts.
-- Should be fixed to the left or right of the viewport.
-- Supports multiple groups of links for deep navigation.
-- Supports a label field per each group.
-- Can scroll vertically if contents extend beyond the viewport height.
-
-## Toggle Layout
-
-Using reactive state we can dynamically switch between multiple layouts. Tap the double arrow icon to toggle.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/navigation/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/navigation/svelte.mdx
deleted file mode 100644
index e5fb90625a..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/navigation/svelte.mdx
+++ /dev/null
@@ -1,79 +0,0 @@
-import Default from '@/components/examples/components/navigation/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/navigation/svelte/default.svelte?raw';
-
-import Rail from '@/components/examples/components/navigation/svelte/rail.svelte';
-import RailRaw from '@/components/examples/components/navigation/svelte/rail.svelte?raw';
-
-import Sidebar from '@/components/examples/components/navigation/svelte/sidebar.svelte';
-import SidebarRaw from '@/components/examples/components/navigation/svelte/sidebar.svelte?raw';
-
-import Toggle from '@/components/examples/components/navigation/svelte/toggle.svelte';
-import ToggleRaw from '@/components/examples/components/navigation/svelte/toggle.svelte?raw';
-
-## Bar
-
-
-
-
-
-
-
-
-
-
-- Recommended for small sized screens (ex: mobile).
-- Ideal for vertical screen layouts.
-- Should be fixed to the bottom of the viewport.
-- Supports 3-5 tiles based on contents and viewport width.
-- Consider progressive enhancement with the [Virtual Keyboard API](https://developer.mozilla.org/en-US/docs/Web/API/VirtualKeyboard_API).
-
-## Rail
-
-
-
-
-
-
-
-
-
-
-- Recommended for medium sized screens (ex: tablet).
-- Ideal for horizontal screen layouts.
-- Should be fixed to the left or right of the viewport.
-- Supports 3-7 tiles based on contents and viewport height.
-
-## Sidebar
-
-
-
-
-
-
-
-
-
-
-- Recommended for large sized screens (ex: desktop).
-- Ideal for horizontal screen layouts.
-- Should be fixed to the left or right of the viewport.
-- Supports multiple groups of links for deep navigation.
-- Supports a label field per each group.
-- Can scroll vertically if contents extend beyond the viewport height.
-
-## Toggle Layout
-
-Using reactive state we can dynamically switch between multiple layouts. Tap the double arrow icon to toggle.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/pagination/meta.mdx b/sites/skeleton.dev/src/content/docs/components/pagination/meta.mdx
deleted file mode 100644
index 9d48e6c504..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/pagination/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Pagination
-description: Navigate between multiple pages of content.
-srcCss: '/src/classes/pagination'
-srcSvelte: '/src/components/pagination'
-srcReact: '/src/components/pagination'
-srcZag: 'https://zagjs.com/components/react/pagination'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/pagination/react.mdx b/sites/skeleton.dev/src/content/docs/components/pagination/react.mdx
deleted file mode 100644
index 841244b233..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/pagination/react.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
-import Default from '@/components/examples/components/pagination/react/default';
-import DefaultRaw from '@/components/examples/components/pagination/react/default?raw';
-
-import DynamicPageSize from '@/components/examples/components/pagination/react/dynamic-page-size';
-import DynamicPageSizeRaw from '@/components/examples/components/pagination/react/dynamic-page-size?raw';
-
-import Dir from '@/components/examples/components/pagination/react/dir';
-import DirRaw from '@/components/examples/components/pagination/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Page Size
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Total Count
-
-For server-side pagination, your data source may be truncated. Make sure to specify the total records using `count`.
-
-```json
-{
- "data": [...],
- "pagination": {
- "page": 1,
- "limit": 10,
- "count": 500,
- }
-}
-```
-
-{/* prettier-ignore */}
-```tsx
-
- ...
-
-```
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/pagination/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/pagination/svelte.mdx
deleted file mode 100644
index 839be390a6..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/pagination/svelte.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
-import Default from '@/components/examples/components/pagination/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/pagination/svelte/default.svelte?raw';
-
-import DynamicPageSize from '@/components/examples/components/pagination/svelte/dynamic-page-size.svelte';
-import DynamicPageSizeRaw from '@/components/examples/components/pagination/svelte/dynamic-page-size.svelte?raw';
-
-import Dir from '@/components/examples/components/pagination/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/pagination/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Page Size
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Total Count
-
-For server-side pagination, your data source may be truncated. Make sure to specify the total records using `count`.
-
-```json
-{
- "data": [...],
- "pagination": {
- "page": 1,
- "limit": 10,
- "count": 500,
- }
-}
-```
-
-{/* prettier-ignore */}
-```svelte
-
- ...
-
-```
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/popover/meta.mdx b/sites/skeleton.dev/src/content/docs/components/popover/meta.mdx
deleted file mode 100644
index 039029ef0c..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/popover/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Popover
-description: A component that displays content in a floating panel, triggered by user interaction.
-srcCss: '/src/classes/popover'
-srcSvelte: '/src/components/popover'
-srcReact: '/src/components/popover'
-srcZag: 'https://zagjs.com/components/react/popover'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/popover/react.mdx b/sites/skeleton.dev/src/content/docs/components/popover/react.mdx
deleted file mode 100644
index ac08f18562..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/popover/react.mdx
+++ /dev/null
@@ -1,101 +0,0 @@
-import Default from '@/components/examples/components/popover/react/default';
-import DefaultRaw from '@/components/examples/components/popover/react/default?raw';
-
-import Programmatic from '@/components/examples/components/popover/react/programmatic';
-import ProgrammaticRaw from '@/components/examples/components/popover/react/programmatic?raw';
-
-import Arrow from '@/components/examples/components/popover/react/arrow';
-import ArrowRaw from '@/components/examples/components/popover/react/arrow?raw';
-
-import ZIndex from '@/components/examples/components/popover/react/z-index';
-import ZIndexRaw from '@/components/examples/components/popover/react/z-index?raw';
-
-import Dir from '@/components/examples/components/popover/react/dir';
-import DirRaw from '@/components/examples/components/popover/react/dir?raw';
-
-import Headless from '@/components/examples/components/popover/react/headless';
-import HeadlessRaw from '@/components/examples/components/popover/react/headless?raw';
-
-
-
-
-
-
-
-
-
-
-## Arrow
-
-You may optionally enable arrows via the `Arrow` and `ArrowTip` component parts. Note that Zag.js opts to style these with CSS custom properties, which can be adjusted using a `style` attribute.
-
-
-
-
-
-
-
-
-
-
-## Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the `Positioner` component part.
-
-> NOTE: This will need to be forced using `!` for `!important` to override the Zag.js defaults.
-
-
-
-
-
-
-
-
-
-
-## Programmatic Control
-
-This is made possible via the Provider Pattern.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Headless
-
-Unlike most components in Skeleton, this feature is provided "headless". This means no default styles are applied out of the box. This ensures you retain full control of all styling.
-
-
-
-
-
-
-
-
-
-
-The benefits are as follows:
-
-- You can make the `Trigger` surround any element, including an icon, button, image, etc.
-- You can modify the entire structure within `Content`, including custom markup and styling.
-- You may place the `CloseTrigger` anywhere, and use it as an X close option.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/popover/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/popover/svelte.mdx
deleted file mode 100644
index 482a5ff645..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/popover/svelte.mdx
+++ /dev/null
@@ -1,101 +0,0 @@
-import Default from '@/components/examples/components/popover/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/popover/svelte/default.svelte?raw';
-
-import Programmatic from '@/components/examples/components/popover/svelte/programmatic.svelte';
-import ProgrammaticRaw from '@/components/examples/components/popover/svelte/programmatic.svelte?raw';
-
-import Arrow from '@/components/examples/components/popover/svelte/arrow.svelte';
-import ArrowRaw from '@/components/examples/components/popover/svelte/arrow.svelte?raw';
-
-import ZIndex from '@/components/examples/components/popover/svelte/z-index.svelte';
-import ZIndexRaw from '@/components/examples/components/popover/svelte/z-index.svelte?raw';
-
-import Dir from '@/components/examples/components/popover/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/popover/svelte/dir.svelte?raw';
-
-import Headless from '@/components/examples/components/popover/svelte/headless.svelte';
-import HeadlessRaw from '@/components/examples/components/popover/svelte/headless.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Arrow
-
-You may optionally enable arrows via the `Arrow` and `ArrowTip` component parts. Note that Zag.js opts to style these with CSS custom properties, which can be adjusted using a `style` attribute.
-
-
-
-
-
-
-
-
-
-
-## Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the `Positioner` component part.
-
-> NOTE: This will need to be forced using `!` for `!important` to override the Zag.js defaults.
-
-
-
-
-
-
-
-
-
-
-## Programmatic Control
-
-This is made possible via the Provider Pattern.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Headless
-
-Unlike most components in Skeleton, this feature is provided "headless". This means no default styles are applied out of the box. This ensures you retain full control of all styling.
-
-
-
-
-
-
-
-
-
-
-The benefits are as follows:
-
-- You can make the `Trigger` surround any element, including an icon, button, image, etc.
-- You can modify the entire structure within `Content`, including custom markup and styling.
-- You may place the `CloseTrigger` anywhere, and use it as an X close option.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/portal/meta.mdx b/sites/skeleton.dev/src/content/docs/components/portal/meta.mdx
deleted file mode 100644
index 1c27eaa9ed..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/portal/meta.mdx
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Portal
-description: Renders children into a DOM node that exists outside the DOM hierarchy.
-srcSvelte: '/src/components/portal'
-srcReact: '/src/components/portal'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/portal/react.mdx b/sites/skeleton.dev/src/content/docs/components/portal/react.mdx
deleted file mode 100644
index 6a5d111587..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/portal/react.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
-import Default from '@/components/examples/components/portal/react/default';
-import DefaultRaw from '@/components/examples/components/portal/react/default?raw';
-
-
-
-
-
-
-
-
-
-
-## How It Works
-
-When enabled, the content will move from the source to the target element.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/portal/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/portal/svelte.mdx
deleted file mode 100644
index b5f4eff366..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/portal/svelte.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
-import Default from '@/components/examples/components/portal/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/portal/svelte/default.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## How It Works
-
-When enabled, the content will move from the source to the target element.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/progress-circular/meta.mdx b/sites/skeleton.dev/src/content/docs/components/progress-circular/meta.mdx
deleted file mode 100644
index e0625921bf..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/progress-circular/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Progress Circular
-description: An indicator showing the progress or completion of a task.
-srcCss: '/src/classes/progress'
-srcSvelte: '/src/components/progress'
-srcReact: '/src/components/progress'
-srcZag: 'https://zagjs.com/components/react/circular-progress'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/progress-circular/react.mdx b/sites/skeleton.dev/src/content/docs/components/progress-circular/react.mdx
deleted file mode 100644
index 4b583aa5c8..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/progress-circular/react.mdx
+++ /dev/null
@@ -1,107 +0,0 @@
-import Default from '@/components/examples/components/progress-circular/react/default';
-import DefaultRaw from '@/components/examples/components/progress-circular/react/default?raw';
-
-import Size from '@/components/examples/components/progress-circular/react/size';
-import SizeRaw from '@/components/examples/components/progress-circular/react/size?raw';
-
-import Color from '@/components/examples/components/progress-circular/react/color';
-import ColorRaw from '@/components/examples/components/progress-circular/react/color?raw';
-
-import CenteredContent from '@/components/examples/components/progress-circular/react/centered-content';
-import CenteredContentRaw from '@/components/examples/components/progress-circular/react/centered-content?raw';
-
-import Indeterminate from '@/components/examples/components/progress-circular/react/indeterminate';
-import IndeterminateRaw from '@/components/examples/components/progress-circular/react/indeterminate?raw';
-
-import Format from '@/components/examples/components/progress-circular/react/format';
-import FormatRaw from '@/components/examples/components/progress-circular/react/format?raw';
-
-import CustomValueText from '@/components/examples/components/progress-circular/react/custom-value-text';
-import CustomValueTextRaw from '@/components/examples/components/progress-circular/react/custom-value-text?raw';
-
-
-
-
-
-
-
-
-
-
-## Size
-
-
-
-
-
-
-
-
-
-
-## Color
-
-
-
-
-
-
-
-
-
-
-## Centered Content
-
-
-
-
-
-
-
-
-
-
-## Indeterminate
-
-Set the value to `null` to make the progress indeterminate.
-
-
-
-
-
-
-
-
-
-
-## Format
-
-Use the `format` prop to customize the output of the `ValueText` component, options are:
-
-- `percentage` (default) - shows the percentage value
-- `decimal` - shows the decimal value (0.0 - 1.0)
-- Provide formatting using the [Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl)
-
-
-
-
-
-
-
-
-
-
-## Custom Value Text
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/progress-circular/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/progress-circular/svelte.mdx
deleted file mode 100644
index 222ea9234d..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/progress-circular/svelte.mdx
+++ /dev/null
@@ -1,106 +0,0 @@
-import Default from '@/components/examples/components/progress-circular/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/progress-circular/svelte/default.svelte?raw';
-
-import Size from '@/components/examples/components/progress-circular/svelte/size.svelte';
-import SizeRaw from '@/components/examples/components/progress-circular/svelte/size.svelte?raw';
-
-import Color from '@/components/examples/components/progress-circular/svelte/color.svelte';
-import ColorRaw from '@/components/examples/components/progress-circular/svelte/color.svelte?raw';
-
-import CenteredContent from '@/components/examples/components/progress-circular/svelte/centered-content.svelte';
-import CenteredContentRaw from '@/components/examples/components/progress-circular/svelte/centered-content.svelte?raw';
-
-import Indeterminate from '@/components/examples/components/progress-circular/svelte/indeterminate.svelte';
-import IndeterminateRaw from '@/components/examples/components/progress-circular/svelte/indeterminate.svelte?raw';
-
-import Format from '@/components/examples/components/progress-circular/svelte/format.svelte';
-import FormatRaw from '@/components/examples/components/progress-circular/svelte/format.svelte?raw';
-
-import CustomValueText from '@/components/examples/components/progress-circular/svelte/custom-value-text.svelte';
-import CustomValueTextRaw from '@/components/examples/components/progress-circular/svelte/custom-value-text.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Size
-
-
-
-
-
-
-
-
-
-
-## Color
-
-
-
-
-
-
-
-
-
-
-## Centered Content
-
-
-
-
-
-
-
-
-
-
-## Indeterminate
-
-Set the value to `null` to make the progress indeterminate.
-
-
-
-
-
-
-
-
-
-## Format
-
-Use the `format` prop to customize the output of the `ValueText` component, options are:
-
-- `percentage` (default) - shows the percentage value
-- `decimal` - shows the decimal value (0.0 - 1.0)
-- Provide formatting using the [Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl)
-
-
-
-
-
-
-
-
-
-
-## Custom Value Text
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/progress-linear/meta.mdx b/sites/skeleton.dev/src/content/docs/components/progress-linear/meta.mdx
deleted file mode 100644
index 7a77384f70..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/progress-linear/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Progress Linear
-description: An indicator showing the progress or completion of a task.
-srcCss: '/src/classes/progress'
-srcSvelte: '/src/components/progress'
-srcReact: '/src/components/progress'
-srcZag: 'https://zagjs.com/components/react/linear-progress'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/progress-linear/react.mdx b/sites/skeleton.dev/src/content/docs/components/progress-linear/react.mdx
deleted file mode 100644
index e3699ffcea..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/progress-linear/react.mdx
+++ /dev/null
@@ -1,127 +0,0 @@
-import Default from '@/components/examples/components/progress-linear/react/default';
-import DefaultRaw from '@/components/examples/components/progress-linear/react/default?raw';
-
-import Color from '@/components/examples/components/progress-linear/react/color';
-import ColorRaw from '@/components/examples/components/progress-linear/react/color?raw';
-
-import Height from '@/components/examples/components/progress-linear/react/height';
-import HeightRaw from '@/components/examples/components/progress-linear/react/height?raw';
-
-import Orientation from '@/components/examples/components/progress-linear/react/orientation';
-import OrientationRaw from '@/components/examples/components/progress-linear/react/orientation?raw';
-
-import Indeterminate from '@/components/examples/components/progress-linear/react/indeterminate';
-import IndeterminateRaw from '@/components/examples/components/progress-linear/react/indeterminate?raw';
-
-import CustomAnimation from '@/components/examples/components/progress-linear/react/custom-animation';
-import CustomAnimationRaw from '@/components/examples/components/progress-linear/react/custom-animation?raw';
-
-import Native from '@/components/examples/components/progress-linear/react/native';
-import NativeRaw from '@/components/examples/components/progress-linear/react/native?raw';
-
-import Dir from '@/components/examples/components/progress-linear/react/dir';
-import DirRaw from '@/components/examples/components/progress-linear/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Color
-
-Provide background color values for the track and range to customize the colors.
-
-
-
-
-
-
-
-
-
-
-## Height
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-For vertical orieintation, a height must be defined on the Track component. The default is `h-[100px]`.
-
-
-
-
-
-
-
-
-
-
-## Indeterminate
-
-You must explicitely specify a `null` value to trigger indeterminate mode.
-
-
-
-
-
-
-
-
-
-
-### Custom Animation
-
-
-
-
-
-
-
-
-
-
-Consider using following variants to target the orientation and state.
-
-- `data-[orientation=horizontal]:my-custom-animation` - target the horizontal orientation.
-- `data-[orientation=vertical]:my-custom-animation` - target the vertical orientation.
-- `data-[state=indeterminate]:my-custom-animation` - target the indeterminate state.
-
-## Native Alternative
-
-The native [`progress`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress) element is available cross browser, but does not support indeterminate animations.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/progress-linear/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/progress-linear/svelte.mdx
deleted file mode 100644
index 455e8c2e47..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/progress-linear/svelte.mdx
+++ /dev/null
@@ -1,127 +0,0 @@
-import Default from '@/components/examples/components/progress-linear/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/progress-linear/svelte/default.svelte?raw';
-
-import Color from '@/components/examples/components/progress-linear/svelte/color.svelte';
-import ColorRaw from '@/components/examples/components/progress-linear/svelte/color.svelte?raw';
-
-import Height from '@/components/examples/components/progress-linear/svelte/height.svelte';
-import HeightRaw from '@/components/examples/components/progress-linear/svelte/height.svelte?raw';
-
-import Orientation from '@/components/examples/components/progress-linear/svelte/orientation.svelte';
-import OrientationRaw from '@/components/examples/components/progress-linear/svelte/orientation.svelte?raw';
-
-import Indeterminate from '@/components/examples/components/progress-linear/svelte/indeterminate.svelte';
-import IndeterminateRaw from '@/components/examples/components/progress-linear/svelte/indeterminate.svelte?raw';
-
-import CustomAnimation from '@/components/examples/components/progress-linear/svelte/custom-animation.svelte';
-import CustomAnimationRaw from '@/components/examples/components/progress-linear/svelte/custom-animation.svelte?raw';
-
-import Native from '@/components/examples/components/progress-linear/svelte/native.svelte';
-import NativeRaw from '@/components/examples/components/progress-linear/svelte/native.svelte?raw';
-
-import Dir from '@/components/examples/components/progress-linear/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/progress-linear/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Color
-
-Provide background color values for the track and range to customize the colors.
-
-
-
-
-
-
-
-
-
-
-## Height
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-For vertical orieintation, a height must be defined on the Track component. The default is `h-[100px]`.
-
-
-
-
-
-
-
-
-
-
-## Indeterminate
-
-You must explicitely specify a `null` value to trigger indeterminate mode.
-
-
-
-
-
-
-
-
-
-
-### Custom Animation
-
-
-
-
-
-
-
-
-
-
-Consider using following variants to target the orientation and state.
-
-- `data-[orientation=horizontal]:my-custom-animation` - target the horizontal orientation.
-- `data-[orientation=vertical]:my-custom-animation` - target the vertical orientation.
-- `data-[state=indeterminate]:my-custom-animation` - target the indeterminate state.
-
-## Native Alternative
-
-The native [`progress`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress) element is available cross browser, but does not support indeterminate animations.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/rating-group/meta.mdx b/sites/skeleton.dev/src/content/docs/components/rating-group/meta.mdx
deleted file mode 100644
index fadbd09350..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/rating-group/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Rating Group
-description: Rating Group allows users to rate something
-srcCss: '/src/classes/ratings-group'
-srcSvelte: '/src/components/rating-group'
-srcReact: '/src/components/rating-group'
-srcZag: 'https://zagjs.com/components/react/rating-group'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/rating-group/react.mdx b/sites/skeleton.dev/src/content/docs/components/rating-group/react.mdx
deleted file mode 100644
index 8d246ebb85..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/rating-group/react.mdx
+++ /dev/null
@@ -1,85 +0,0 @@
-import Default from '@/components/examples/components/rating-group/react/default';
-import DefaultRaw from '@/components/examples/components/rating-group/react/default?raw';
-
-import Half from '@/components/examples/components/rating-group/react/half';
-import HalfRaw from '@/components/examples/components/rating-group/react/half?raw';
-
-import CustomIcons from '@/components/examples/components/rating-group/react/custom-icons';
-import CustomIconsRaw from '@/components/examples/components/rating-group/react/custom-icons?raw';
-
-import Label from '@/components/examples/components/rating-group/react/label';
-import LabelRaw from '@/components/examples/components/rating-group/react/label?raw';
-
-import Disabled from '@/components/examples/components/rating-group/react/disabled';
-import DisabledRaw from '@/components/examples/components/rating-group/react/disabled?raw';
-
-import Dir from '@/components/examples/components/rating-group/react/dir';
-import DirRaw from '@/components/examples/components/rating-group/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Allow Half
-
-
-
-
-
-
-
-
-
-
-## Custom Icons
-
-
-
-
-
-
-
-
-
-
-## Label
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/rating-group/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/rating-group/svelte.mdx
deleted file mode 100644
index a01b2e5ff4..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/rating-group/svelte.mdx
+++ /dev/null
@@ -1,85 +0,0 @@
-import Default from '@/components/examples/components/rating-group/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/rating-group/svelte/default.svelte?raw';
-
-import Half from '@/components/examples/components/rating-group/svelte/half.svelte';
-import HalfRaw from '@/components/examples/components/rating-group/svelte/half.svelte?raw';
-
-import CustomIcons from '@/components/examples/components/rating-group/svelte/custom-icons.svelte';
-import CustomIconsRaw from '@/components/examples/components/rating-group/svelte/custom-icons.svelte?raw';
-
-import Label from '@/components/examples/components/rating-group/svelte/label.svelte';
-import LabelRaw from '@/components/examples/components/rating-group/svelte/label.svelte?raw';
-
-import Disabled from '@/components/examples/components/rating-group/svelte/disabled.svelte';
-import DisabledRaw from '@/components/examples/components/rating-group/svelte/disabled.svelte?raw';
-
-import Dir from '@/components/examples/components/rating-group/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/rating-group/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Allow Half
-
-
-
-
-
-
-
-
-
-
-## Custom Icons
-
-
-
-
-
-
-
-
-
-
-## Label
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/segmented-control/meta.mdx b/sites/skeleton.dev/src/content/docs/components/segmented-control/meta.mdx
deleted file mode 100644
index a100726e60..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/segmented-control/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Segmented Control
-description: Capture input for a limited set of options.
-srcCss: '/src/classes/segmented-control'
-srcSvelte: '/src/components/segmented-control'
-srcReact: '/src/components/segmented-control'
-srcZag: 'https://zagjs.com/components/react/segmented-control'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/segmented-control/react.mdx b/sites/skeleton.dev/src/content/docs/components/segmented-control/react.mdx
deleted file mode 100644
index 79d2b2b3a2..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/segmented-control/react.mdx
+++ /dev/null
@@ -1,113 +0,0 @@
-import Default from '@/components/examples/components/segmented-control/react/default';
-import DefaultRaw from '@/components/examples/components/segmented-control/react/default?raw';
-
-import Controlled from '@/components/examples/components/segmented-control/react/controlled';
-import ControlledRaw from '@/components/examples/components/segmented-control/react/controlled?raw';
-
-import Icons from '@/components/examples/components/segmented-control/react/icons';
-import IconsRaw from '@/components/examples/components/segmented-control/react/icons?raw';
-
-import Orientation from '@/components/examples/components/segmented-control/react/orientation';
-import OrientationRaw from '@/components/examples/components/segmented-control/react/orientation?raw';
-
-import ReadOnly from '@/components/examples/components/segmented-control/react/read-only';
-import ReadOnlyRaw from '@/components/examples/components/segmented-control/react/read-only?raw';
-
-import Disabled from '@/components/examples/components/segmented-control/react/disabled';
-import DisabledRaw from '@/components/examples/components/segmented-control/react/disabled?raw';
-
-import DisabledItem from '@/components/examples/components/segmented-control/react/disabled-item';
-import DisabledItemRaw from '@/components/examples/components/segmented-control/react/disabled-item?raw';
-
-import Dir from '@/components/examples/components/segmented-control/react/dir';
-import DirRaw from '@/components/examples/components/segmented-control/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-
-
-
-
-
-
-
-
-
-## Icons
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-
-
-
-
-
-
-
-
-
-## Read Only
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Disabled Item
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/segmented-control/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/segmented-control/svelte.mdx
deleted file mode 100644
index 91a40e6400..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/segmented-control/svelte.mdx
+++ /dev/null
@@ -1,113 +0,0 @@
-import Default from '@/components/examples/components/segmented-control/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/segmented-control/svelte/default.svelte?raw';
-
-import Controlled from '@/components/examples/components/segmented-control/svelte/controlled.svelte';
-import ControlledRaw from '@/components/examples/components/segmented-control/svelte/controlled.svelte?raw';
-
-import Icons from '@/components/examples/components/segmented-control/svelte/icons.svelte';
-import IconsRaw from '@/components/examples/components/segmented-control/svelte/icons.svelte?raw';
-
-import Orientation from '@/components/examples/components/segmented-control/svelte/orientation.svelte';
-import OrientationRaw from '@/components/examples/components/segmented-control/svelte/orientation.svelte?raw';
-
-import ReadOnly from '@/components/examples/components/segmented-control/svelte/read-only.svelte';
-import ReadOnlyRaw from '@/components/examples/components/segmented-control/svelte/read-only.svelte?raw';
-
-import Disabled from '@/components/examples/components/segmented-control/svelte/disabled.svelte';
-import DisabledRaw from '@/components/examples/components/segmented-control/svelte/disabled.svelte?raw';
-
-import DisabledItem from '@/components/examples/components/segmented-control/svelte/disabled-item.svelte';
-import DisabledItemRaw from '@/components/examples/components/segmented-control/svelte/disabled-item.svelte?raw';
-
-import Dir from '@/components/examples/components/segmented-control/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/segmented-control/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-
-
-
-
-
-
-
-
-
-## Icons
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-
-
-
-
-
-
-
-
-
-## Read Only
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Disabled Item
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/slider/meta.mdx b/sites/skeleton.dev/src/content/docs/components/slider/meta.mdx
deleted file mode 100644
index 5be703cb73..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/slider/meta.mdx
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: Slider
-
-description: Capture input from a range of values.
-srcCss: '/src/classes/slider'
-srcSvelte: '/src/components/slider'
-srcReact: '/src/components/slider'
-srcAlly: 'https://www.w3.org/WAI/ARIA/apg/patterns/slider/'
-srcZag: 'https://zagjs.com/components/react/slider'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/slider/react.mdx b/sites/skeleton.dev/src/content/docs/components/slider/react.mdx
deleted file mode 100644
index 6c87bed782..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/slider/react.mdx
+++ /dev/null
@@ -1,85 +0,0 @@
-import Default from '@/components/examples/components/slider/react/default';
-import DefaultRaw from '@/components/examples/components/slider/react/default?raw';
-
-import Color from '@/components/examples/components/slider/react/color';
-import ColorRaw from '@/components/examples/components/slider/react/color?raw';
-
-import Disabled from '@/components/examples/components/slider/react/disabled';
-import DisabledRaw from '@/components/examples/components/slider/react/disabled?raw';
-
-import Readonly from '@/components/examples/components/slider/react/readonly';
-import ReadonlyRaw from '@/components/examples/components/slider/react/readonly?raw';
-
-import MultipleThumbs from '@/components/examples/components/slider/react/multiple-thumbs';
-import MultipleThumbsRaw from '@/components/examples/components/slider/react/multiple-thumbs?raw';
-
-import Dir from '@/components/examples/components/slider/react/dir';
-import DirRaw from '@/components/examples/components/slider/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Color
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Readonly
-
-
-
-
-
-
-
-
-
-
-## Multiple Thumbs
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/slider/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/slider/svelte.mdx
deleted file mode 100644
index 2c30696981..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/slider/svelte.mdx
+++ /dev/null
@@ -1,85 +0,0 @@
-import Default from '@/components/examples/components/slider/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/slider/svelte/default.svelte?raw';
-
-import Color from '@/components/examples/components/slider/svelte/color.svelte';
-import ColorRaw from '@/components/examples/components/slider/svelte/color.svelte?raw';
-
-import Disabled from '@/components/examples/components/slider/svelte/disabled.svelte';
-import DisabledRaw from '@/components/examples/components/slider/svelte/disabled.svelte?raw';
-
-import Readonly from '@/components/examples/components/slider/svelte/readonly.svelte';
-import ReadonlyRaw from '@/components/examples/components/slider/svelte/readonly.svelte?raw';
-
-import MultipleThumbs from '@/components/examples/components/slider/svelte/multiple-thumbs.svelte';
-import MultipleThumbsRaw from '@/components/examples/components/slider/svelte/multiple-thumbs.svelte?raw';
-
-import Dir from '@/components/examples/components/slider/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/slider/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Color
-
-
-
-
-
-
-
-
-
-
-## Disabled
-
-
-
-
-
-
-
-
-
-
-## Readonly
-
-
-
-
-
-
-
-
-
-
-## Multiple Thumbs
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/switch/meta.mdx b/sites/skeleton.dev/src/content/docs/components/switch/meta.mdx
deleted file mode 100644
index 575eb68d30..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/switch/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Switch
-
-description: Toggle between two states, such as on/off.
-srcCss: '/src/classes/switch'
-srcSvelte: '/src/components/switch'
-srcReact: '/src/components/switch'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/switch/react.mdx b/sites/skeleton.dev/src/content/docs/components/switch/react.mdx
deleted file mode 100644
index 77f03d6d5a..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/switch/react.mdx
+++ /dev/null
@@ -1,73 +0,0 @@
-import Default from '@/components/examples/components/switch/react/default';
-import DefaultRaw from '@/components/examples/components/switch/react/default?raw';
-
-import Colors from '@/components/examples/components/switch/react/colors';
-import ColorsRaw from '@/components/examples/components/switch/react/colors?raw';
-
-import List from '@/components/examples/components/switch/react/list';
-import ListRaw from '@/components/examples/components/switch/react/list?raw';
-
-import ThumbIcons from '@/components/examples/components/switch/react/thumb-icons';
-import ThumbIconsRaw from '@/components/examples/components/switch/react/thumb-icons?raw';
-
-import Dir from '@/components/examples/components/switch/react/dir';
-import DirRaw from '@/components/examples/components/switch/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Checked Color
-
-Use the [Tailwind data attribute syntax](https://tailwindcss.com/docs/hover-focus-and-other-states#data-attributes) to target the active state using `data-[state=checked]`
-
-
-
-
-
-
-
-
-
-
-## List
-
-
-
-
-
-
-
-
-
-
-## Icons
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/switch/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/switch/svelte.mdx
deleted file mode 100644
index 341fee38d5..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/switch/svelte.mdx
+++ /dev/null
@@ -1,73 +0,0 @@
-import Default from '@/components/examples/components/switch/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/switch/svelte/default.svelte?raw';
-
-import Colors from '@/components/examples/components/switch/svelte/colors.svelte';
-import ColorsRaw from '@/components/examples/components/switch/svelte/colors.svelte?raw';
-
-import List from '@/components/examples/components/switch/svelte/list.svelte';
-import ListRaw from '@/components/examples/components/switch/svelte/list.svelte?raw';
-
-import ThumbIcons from '@/components/examples/components/switch/svelte/thumb-icons.svelte';
-import ThumbIconsRaw from '@/components/examples/components/switch/svelte/thumb-icons.svelte?raw';
-
-import Dir from '@/components/examples/components/switch/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/switch/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Checked Color
-
-Use the [Tailwind data attribute syntax](https://tailwindcss.com/docs/hover-focus-and-other-states#data-attributes) to target the active state using `data-[state=checked]`
-
-
-
-
-
-
-
-
-
-
-## List
-
-
-
-
-
-
-
-
-
-
-## Icons
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tabs/meta.mdx b/sites/skeleton.dev/src/content/docs/components/tabs/meta.mdx
deleted file mode 100644
index 5347acf6f0..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tabs/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Tabs
-description: Use tabs to quickly switch between different views and pages.
-srcCss: '/src/classes/tabs'
-srcSvelte: '/src/components/tabs'
-srcReact: '/src/components/tabs'
-srcZag: 'https://zagjs.com/components/react/tabs'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/tabs/react.mdx b/sites/skeleton.dev/src/content/docs/components/tabs/react.mdx
deleted file mode 100644
index c13aa86d6a..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tabs/react.mdx
+++ /dev/null
@@ -1,57 +0,0 @@
-import Default from '@/components/examples/components/tabs/react/default';
-import DefaultRaw from '@/components/examples/components/tabs/react/default.tsx?raw';
-
-import Fluid from '@/components/examples/components/tabs/react/fluid';
-import FluidRaw from '@/components/examples/components/tabs/react/fluid.tsx?raw';
-
-import Vertical from '@/components/examples/components/tabs/react/vertical';
-import VerticalRaw from '@/components/examples/components/tabs/react/vertical.tsx?raw';
-
-import Dir from '@/components/examples/components/tabs/react/dir';
-import DirRaw from '@/components/examples/components/tabs/react/dir.tsx?raw';
-
-
-
-
-
-
-
-
-
-
-## Fluid Width
-
-
-
-
-
-
-
-
-
-
-## Vertical
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tabs/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/tabs/svelte.mdx
deleted file mode 100644
index 05185d94b0..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tabs/svelte.mdx
+++ /dev/null
@@ -1,57 +0,0 @@
-import Default from '@/components/examples/components/tabs/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/tabs/svelte/default.svelte?raw';
-
-import Fluid from '@/components/examples/components/tabs/svelte/fluid.svelte';
-import FluidRaw from '@/components/examples/components/tabs/svelte/fluid.svelte?raw';
-
-import Vertical from '@/components/examples/components/tabs/svelte/vertical.svelte';
-import VerticalRaw from '@/components/examples/components/tabs/svelte/vertical.svelte?raw';
-
-import Dir from '@/components/examples/components/tabs/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/tabs/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Fluid Width
-
-
-
-
-
-
-
-
-
-
-## Vertical
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tags-input/meta.mdx b/sites/skeleton.dev/src/content/docs/components/tags-input/meta.mdx
deleted file mode 100644
index b7f2e96dd7..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tags-input/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Tags Input
-description: Allows input of multiple values.
-srcCss: '/src/classes/tags-input'
-srcSvelte: '/src/components/tags-input'
-srcReact: '/src/components/tags-input'
-srcZag: 'https://zagjs.com/components/react/tags-input'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/tags-input/react.mdx b/sites/skeleton.dev/src/content/docs/components/tags-input/react.mdx
deleted file mode 100644
index a63f58ca16..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tags-input/react.mdx
+++ /dev/null
@@ -1,73 +0,0 @@
-import Default from '@/components/examples/components/tags-input/react/default';
-import DefaultRaw from '@/components/examples/components/tags-input/react/default?raw';
-
-import CustomIcon from '@/components/examples/components/tags-input/react/custom-icon';
-import CustomIconRaw from '@/components/examples/components/tags-input/react/custom-icon?raw';
-
-import Color from '@/components/examples/components/tags-input/react/color';
-import ColorRaw from '@/components/examples/components/tags-input/react/color?raw';
-
-import Provider from '@/components/examples/components/tags-input/react/provider';
-import ProviderRaw from '@/components/examples/components/tags-input/react/provider?raw';
-
-import Dir from '@/components/examples/components/tags-input/react/dir';
-import DirRaw from '@/components/examples/components/tags-input/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Custom Icon
-
-
-
-
-
-
-
-
-
-
-## Color
-
-
-
-
-
-
-
-
-
-
-## Provider Pattern
-
-Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the the inner component APIs.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tags-input/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/tags-input/svelte.mdx
deleted file mode 100644
index 4505bde174..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tags-input/svelte.mdx
+++ /dev/null
@@ -1,73 +0,0 @@
-import Default from '@/components/examples/components/tags-input/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/tags-input/svelte/default.svelte?raw';
-
-import CustomIcon from '@/components/examples/components/tags-input/svelte/custom-icon.svelte';
-import CustomIconRaw from '@/components/examples/components/tags-input/svelte/custom-icon.svelte?raw';
-
-import Color from '@/components/examples/components/tags-input/svelte/color.svelte';
-import ColorRaw from '@/components/examples/components/tags-input/svelte/color.svelte?raw';
-
-import Provider from '@/components/examples/components/tags-input/svelte/provider.svelte';
-import ProviderRaw from '@/components/examples/components/tags-input/svelte/provider.svelte?raw';
-
-import Dir from '@/components/examples/components/tags-input/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/tags-input/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Custom Icon
-
-
-
-
-
-
-
-
-
-
-## Color
-
-
-
-
-
-
-
-
-
-
-## Provider Pattern
-
-Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the the inner component APIs.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/toast/meta.mdx b/sites/skeleton.dev/src/content/docs/components/toast/meta.mdx
deleted file mode 100644
index aac743a8ab..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/toast/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Toast
-
-description: Display brief messages to users.
-srcCss: '/src/classes/toast'
-srcSvelte: '/src/components/toast'
-srcReact: '/src/components/toast'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/toast/react.mdx b/sites/skeleton.dev/src/content/docs/components/toast/react.mdx
deleted file mode 100644
index 6dbbcc9c85..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/toast/react.mdx
+++ /dev/null
@@ -1,116 +0,0 @@
-import Default from '@/components/examples/components/toast/react/default';
-import DefaultRaw from '@/components/examples/components/toast/react/default?raw';
-
-import Type from '@/components/examples/components/toast/react/type';
-import TypeRaw from '@/components/examples/components/toast/react/type?raw';
-
-import Action from '@/components/examples/components/toast/react/action';
-import ActionRaw from '@/components/examples/components/toast/react/action?raw';
-
-import Closable from '@/components/examples/components/toast/react/closable';
-import ClosableRaw from '@/components/examples/components/toast/react/closable?raw';
-
-import Placement from '@/components/examples/components/toast/react/placement';
-import PlacementRaw from '@/components/examples/components/toast/react/placement?raw';
-
-import Meta from '@/components/examples/components/toast/react/meta';
-import MetaRaw from '@/components/examples/components/toast/react/meta?raw';
-
-import Promise from '@/components/examples/components/toast/react/promise';
-import PromiseRaw from '@/components/examples/components/toast/react/promise?raw';
-
-
-
-
-
-
-
-
-
-
-## Usage
-
-This component acts as a Singleton - meaning you only implement a single instance (typically at the root scope of your app) and then reused it over and over. To do this, implement the `` at the root scope of your app, and use a shared `createToaster()` instance to trigger messages to that group from anywhere in your application.
-
-## Type
-
-
-
-
-
-
-
-
-
-
-Types can be specified in one of two ways:
-
-- Via a trigger method: `toaster.{info|success|warning|error}()`
-- Via the object key: `type: {info|success|warning|error}`
-
-## Action
-
-Include an optional action button.
-
-
-
-
-
-
-
-
-
-
-## Closable
-
-By passing `closable: false` you can disable the close button.
-
-
-
-
-
-
-
-
-
-
-## Placement
-
-
-
-
-
-
-
-
-
-
-## Meta
-
-Use the `meta` key to provide arbitrary data. Then use this to modify your Toast template.
-
-
-
-
-
-
-
-
-
-
-## Promise
-
-Use promises for asynchronous triggers.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/toast/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/toast/svelte.mdx
deleted file mode 100644
index c946e7d0a4..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/toast/svelte.mdx
+++ /dev/null
@@ -1,116 +0,0 @@
-import Default from '@/components/examples/components/toast/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/toast/svelte/default.svelte?raw';
-
-import Type from '@/components/examples/components/toast/svelte/type.svelte';
-import TypeRaw from '@/components/examples/components/toast/svelte/type.svelte?raw';
-
-import Action from '@/components/examples/components/toast/svelte/action.svelte';
-import ActionRaw from '@/components/examples/components/toast/svelte/action.svelte?raw';
-
-import Closable from '@/components/examples/components/toast/svelte/closable.svelte';
-import ClosableRaw from '@/components/examples/components/toast/svelte/closable.svelte?raw';
-
-import Placement from '@/components/examples/components/toast/svelte/placement.svelte';
-import PlacementRaw from '@/components/examples/components/toast/svelte/placement.svelte?raw';
-
-import Meta from '@/components/examples/components/toast/svelte/meta.svelte';
-import MetaRaw from '@/components/examples/components/toast/svelte/meta.svelte?raw';
-
-import Promise from '@/components/examples/components/toast/svelte/promise.svelte';
-import PromiseRaw from '@/components/examples/components/toast/svelte/promise.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Usage
-
-This component acts as a Singleton - meaning you only implement a single instance (typically at the root scope of your app) and then reused it over and over. To do this, implement the `` at the root scope of your app (for SvelteKit this would be your root `+layout.svelte`), and use a shared `createToaster()` instance to trigger messages to that group from anywhere in your application.
-
-## Type
-
-
-
-
-
-
-
-
-
-
-Types can be specified in one of two ways:
-
-- Via a trigger method: `toaster.{info|success|warning|error}()`
-- Via the object key: `type: {info|success|warning|error}`
-
-## Action
-
-Include an optional action button.
-
-
-
-
-
-
-
-
-
-
-## Closable
-
-By passing `closable: false` you can disable the close button.
-
-
-
-
-
-
-
-
-
-
-## Placement
-
-
-
-
-
-
-
-
-
-
-## Meta
-
-Use the `meta` key to provide arbitrary data. Then use this to modify your Toast template.
-
-
-
-
-
-
-
-
-
-
-## Promise
-
-Use promises for asynchronous triggers.
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/toggle-group/meta.mdx b/sites/skeleton.dev/src/content/docs/components/toggle-group/meta.mdx
deleted file mode 100644
index 3994870248..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/toggle-group/meta.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Toggle Group
-description: Grouped buttons for toggling option states.
-srcCss: '/src/classes/toggle-group'
-srcSvelte: '/src/components/toggle-group'
-srcReact: '/src/components/toggle-group'
-srcZag: 'https://zagjs.com/components/react/toggle-group'
-showDocsUrl: true
-stability: beta
----
diff --git a/sites/skeleton.dev/src/content/docs/components/toggle-group/react.mdx b/sites/skeleton.dev/src/content/docs/components/toggle-group/react.mdx
deleted file mode 100644
index c5e807ea3b..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/toggle-group/react.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
-import Default from '@/components/examples/components/toggle-group/react/default';
-import DefaultRaw from '@/components/examples/components/toggle-group/react/default?raw';
-
-import Controlled from '@/components/examples/components/toggle-group/react/controlled';
-import ControlledRaw from '@/components/examples/components/toggle-group/react/controlled?raw';
-
-import Orientation from '@/components/examples/components/toggle-group/react/orientation';
-import OrientationRaw from '@/components/examples/components/toggle-group/react/orientation?raw';
-
-import Dir from '@/components/examples/components/toggle-group/react/dir';
-import DirRaw from '@/components/examples/components/toggle-group/react/dir?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-Use the `orientation` prop to change the layout direction of the Toggle Group.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/toggle-group/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/toggle-group/svelte.mdx
deleted file mode 100644
index 9600cce250..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/toggle-group/svelte.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
-import Default from '@/components/examples/components/toggle-group/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/toggle-group/svelte/default.svelte?raw';
-
-import Controlled from '@/components/examples/components/toggle-group/svelte/controlled.svelte';
-import ControlledRaw from '@/components/examples/components/toggle-group/svelte/controlled.svelte?raw';
-
-import Orientation from '@/components/examples/components/toggle-group/svelte/orientation.svelte';
-import OrientationRaw from '@/components/examples/components/toggle-group/svelte/orientation.svelte?raw';
-
-import Dir from '@/components/examples/components/toggle-group/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/toggle-group/svelte/dir.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Controlled
-
-
-
-
-
-
-
-
-
-
-## Orientation
-
-Use the `orientation` prop to change the layout direction of the Toggle Group.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tooltip/meta.mdx b/sites/skeleton.dev/src/content/docs/components/tooltip/meta.mdx
deleted file mode 100644
index 8cc7b45924..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tooltip/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Tooltip
-
-description: A floating label that appears on hover or focus, providing additional context.
-srcCss: '/src/classes/tooltip'
-srcSvelte: '/src/components/tooltip'
-srcReact: '/src/components/tooltip'
-showDocsUrl: true
----
diff --git a/sites/skeleton.dev/src/content/docs/components/tooltip/react.mdx b/sites/skeleton.dev/src/content/docs/components/tooltip/react.mdx
deleted file mode 100644
index f60833d801..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tooltip/react.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
-import Default from '@/components/examples/components/tooltip/react/default';
-import DefaultRaw from '@/components/examples/components/tooltip/react/default?raw';
-
-import Programmatic from '@/components/examples/components/tooltip/react/programmatic';
-import ProgrammaticRaw from '@/components/examples/components/tooltip/react/programmatic?raw';
-
-import Arrow from '@/components/examples/components/tooltip/react/arrow';
-import ArrowRaw from '@/components/examples/components/tooltip/react/arrow?raw';
-
-import ZIndex from '@/components/examples/components/tooltip/react/z-index';
-import ZIndexRaw from '@/components/examples/components/tooltip/react/z-index?raw';
-
-import Dir from '@/components/examples/components/tooltip/react/dir';
-import DirRaw from '@/components/examples/components/tooltip/react/dir?raw';
-
-import Headless from '@/components/examples/components/tooltip/react/headless';
-import HeadlessRaw from '@/components/examples/components/tooltip/react/headless?raw';
-
-
-
-
-
-
-
-
-
-
-## Arrow
-
-You may optionally enable arrows via the `Arrow` and `ArrowTip` component parts. Note that Zag.js opts to style these with CSS custom properties, which can be adjusted using a `style` attribute.
-
-
-
-
-
-
-
-
-
-
-## Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the `Positioner` component part.
-
-
-
-
-
-
-
-
-
-
-## Programmatic Control
-
-This is made possible via the Provider Pattern.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Headless
-
-Unlike most components in Skeleton, this feature is provided "headless". This means no default styles are applied out of the box. This ensures you retain full control of all styling.
-
-
-
-
-
-
-
-
-
-
-The benefits are as follows:
-
-- You can make the `Trigger` surround any element, including an icon, button, image, etc.
-- You can modify the entire structure within `Content`, including custom markup and styling.
-- You may place the `CloseTrigger` anywhere, and use it as an X close option.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tooltip/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/tooltip/svelte.mdx
deleted file mode 100644
index a8834b3440..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tooltip/svelte.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
-import Default from '@/components/examples/components/tooltip/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/tooltip/svelte/default.svelte?raw';
-
-import Arrow from '@/components/examples/components/tooltip/svelte/arrow.svelte';
-import ArrowRaw from '@/components/examples/components/tooltip/svelte/arrow.svelte?raw';
-
-import ZIndex from '@/components/examples/components/tooltip/svelte/z-index.svelte';
-import ZIndexRaw from '@/components/examples/components/tooltip/svelte/z-index.svelte?raw';
-
-import Programmatic from '@/components/examples/components/tooltip/svelte/programmatic.svelte';
-import ProgrammaticRaw from '@/components/examples/components/tooltip/svelte/programmatic.svelte?raw';
-
-import Dir from '@/components/examples/components/tooltip/svelte/dir.svelte';
-import DirRaw from '@/components/examples/components/tooltip/svelte/dir.svelte?raw';
-
-import Headless from '@/components/examples/components/tooltip/svelte/headless.svelte';
-import HeadlessRaw from '@/components/examples/components/tooltip/svelte/headless.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Arrow
-
-You may optionally enable arrows via the `Arrow` and `ArrowTip` component parts. Note that Zag.js opts to style these with CSS custom properties, which can be adjusted using a `style` attribute.
-
-
-
-
-
-
-
-
-
-
-## Z-Index
-
-By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the `Positioner` component part.
-
-
-
-
-
-
-
-
-
-
-## Programmatic Control
-
-This is made possible via the Provider Pattern.
-
-
-
-
-
-
-
-
-
-
-## Direction
-
-
-
-
-
-
-
-
-
-
-## Headless
-
-Unlike most components in Skeleton, this feature is provided "headless". This means no default styles are applied out of the box. This ensures you retain full control of all styling.
-
-
-
-
-
-
-
-
-
-
-The benefits are as follows:
-
-- You can make the `Trigger` surround any element, including an icon, button, image, etc.
-- You can modify the entire structure within `Content`, including custom markup and styling.
-- You may place the `CloseTrigger` anywhere, and use it as an X close option.
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tree-view/meta.mdx b/sites/skeleton.dev/src/content/docs/components/tree-view/meta.mdx
deleted file mode 100644
index 31179bec30..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tree-view/meta.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Tree View
-description: Used to display hierarchical data.
-srcSvelte: '/src/components/tree-view'
-srcReact: '/src/components/tree-view'
-srcZag: 'https://zagjs.com/components/react/tree-view'
-showDocsUrl: true
-stability: 'beta'
----
diff --git a/sites/skeleton.dev/src/content/docs/components/tree-view/react.mdx b/sites/skeleton.dev/src/content/docs/components/tree-view/react.mdx
deleted file mode 100644
index e8b5b1ef3e..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tree-view/react.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
-import Default from '@/components/examples/components/tree-view/react/default';
-import DefaultRaw from '@/components/examples/components/tree-view/react/default?raw';
-
-import MultipleSelection from '@/components/examples/components/tree-view/react/multiple-selection';
-import MultipleSelectionRaw from '@/components/examples/components/tree-view/react/multiple-selection?raw';
-
-import CollapseExpand from '@/components/examples/components/tree-view/react/collapse-expand';
-import CollapseExpandRaw from '@/components/examples/components/tree-view/react/collapse-expand?raw';
-
-import LazyLoading from '@/components/examples/components/tree-view/react/lazy-loading';
-import LazyLoadingRaw from '@/components/examples/components/tree-view/react/lazy-loading?raw';
-
-
-
-
-
-
-
-
-
-
-## Multiple Selection
-
-- Windows: Hold Ctrl + left click with mouse.
-- MacOS: Hold ⌘ + left click with mouse.
-
-
-
-
-
-
-
-
-
-
-## Collapse and Expand
-
-Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the `collapse` and `expand` methods on the `TreeView` instance.
-
-
-
-
-
-
-
-
-
-
-## Lazy Loading
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/components/tree-view/svelte.mdx b/sites/skeleton.dev/src/content/docs/components/tree-view/svelte.mdx
deleted file mode 100644
index 45025d8ac7..0000000000
--- a/sites/skeleton.dev/src/content/docs/components/tree-view/svelte.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
-import Default from '@/components/examples/components/tree-view/svelte/default.svelte';
-import DefaultRaw from '@/components/examples/components/tree-view/svelte/default.svelte?raw';
-
-import MultipleSelection from '@/components/examples/components/tree-view/svelte/multiple-selection.svelte';
-import MultipleSelectionRaw from '@/components/examples/components/tree-view/svelte/multiple-selection.svelte?raw';
-
-import CollapseExpand from '@/components/examples/components/tree-view/svelte/collapse-expand.svelte';
-import CollapseExpandRaw from '@/components/examples/components/tree-view/svelte/collapse-expand.svelte?raw';
-
-import LazyLoading from '@/components/examples/components/tree-view/svelte/lazy-loading.svelte';
-import LazyLoadingRaw from '@/components/examples/components/tree-view/svelte/lazy-loading.svelte?raw';
-
-
-
-
-
-
-
-
-
-
-## Multiple Selection
-
-- Windows: Hold Ctrl + left click with mouse.
-- MacOS: Hold ⌘ + left click with mouse.
-
-
-
-
-
-
-
-
-
-
-## Collapse and Expand
-
-Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the `collapse` and `expand` methods on the `TreeView` instance.
-
-
-
-
-
-
-
-
-
-
-## Lazy Loading
-
-
-
-
-
-
-
-
-
-
-## API Reference
-
-
diff --git a/sites/skeleton.dev/src/content/docs/design/colors.mdx b/sites/skeleton.dev/src/content/docs/design/colors.mdx
index 155b90b861..c5c330aa28 100644
--- a/sites/skeleton.dev/src/content/docs/design/colors.mdx
+++ b/sites/skeleton.dev/src/content/docs/design/colors.mdx
@@ -1,7 +1,8 @@
---
title: Colors
description: The Skeleton color system.
-srcCore: '/base/theme.scss'
+references:
+ source: 'https://github.com/skeletonlabs/skeleton/blob/main/packages/skeleton/src/base/theme.scss'
order: 10
---
@@ -18,7 +19,7 @@ import Pairings from '@/components/examples/design/colors/pairings.astro';
Supports all standard Tailwind color utility classes using the following pattern.
-```
+```txt
{property}-{color}-{shade}
```
@@ -40,17 +41,12 @@ Supports all standard Tailwind color utility classes using the following
Contrast color values are available for every shade. Use these to set accessible text color and icon fill values.
-```
+```txt
{property}-{color}-contrast-{shade}
```
-
-
-
-
-
-
-
+
+
See the [Preset system](/docs/design/presets) for additional utility classes that automatically mix each color and contrast tone.
@@ -61,7 +57,7 @@ See the [Preset system](/docs/design/presets) for additional utility classes tha
Provides a condensed syntax of dual-tone color values balanced to swap between light and dark mode. These are supported for all the same properties standard colors support (`bg`, `border`, `fill`, etc).
-```
+```txt
{property}-{color}-{lightModeShade}-{darkModeShade}
```
@@ -104,24 +100,7 @@ The following shows actual Color Pairings. Toggle this website between light and
Color Parings are useful for generating a hierarchy of visual layers, ranging from foreground to background elements. Each reuse the same color ramp but, but inverts the order when toggling from light to dark mode.
-
-
-
-
- ```html
- Foreground
- ...
- ...
- ...
- ...
- Branding
- ...
- ...
- ...
- ...
- Background
- ```
-
+
- We can use shade `950` for light mode and `50` from dark mode to represent our body text color.
diff --git a/sites/skeleton.dev/src/content/docs/design/iconography.mdx b/sites/skeleton.dev/src/content/docs/design/iconography.mdx
new file mode 100644
index 0000000000..2a09ccb3a5
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/design/iconography.mdx
@@ -0,0 +1,80 @@
+---
+title: Iconography
+description: Learn how to integrate Lucide for iconography in Skeleton.
+summary: Skeleton takes an agnostic approach to icons, meaning you can use any combination of SVGs, emoji, unicode, or dedicated icon libraries. Mix and match to fulfill your project's unique requirements.
+order: 50
+---
+
+import { TriangleIcon, HeartIcon, UserRoundIcon } from '@lucide/svelte';
+
+## Lucide
+
+
+
+
+
+
+
+
+
+If you're looking for an opinionated solution, Skeleton recommends [Lucide](https://lucide.dev/). This provides a huge selection of icons that are available to all popular frameworks and feature a clean and modern style. All code examples in this documentation site implement Lucide, but feel free to replace with any alternative.
+
+## Installation
+
+
+
+Follow the official instructions to install [Lucide for Svelte](https://lucide.dev/guide/packages/lucide-svelte).
+
+
+
+
+
+Follow the official instructions to install [Lucide for React](https://lucide.dev/guide/packages/lucide-react).
+
+
+
+## Usage
+
+
+
+```svelte
+
+
+
+```
+
+
+
+
+
+```tsx
+import { SkullIcon } from 'lucide-react';
+
+export default function App() {
+ return ;
+}
+```
+
+
+
+## Alternatives
+
+
+
+- [Iconify](https://iconify.design/) - provides a vast array of icon sets supported by popular icon libraries.
+- [Font Awesome](https://fontawesome.com/) - provides a huge variety of icons in their free tier.
+- [SimpleIcons](https://simpleicons.org/) - provides an excellent selection of brand icons.
+
+
+
+
+
+- [Radix Icons](https://www.radix-ui.com/icons) - features modern styles and a large selection, supports React only.
+- [Iconify](https://iconify.design/) - provides a vast array of icon sets supported by popular icon libraries.
+- [Font Awesome](https://fontawesome.com/) - provides a huge variety of icons in their free tier.
+- [HeroIcons](https://heroicons.com/) - from the makers of Tailwind CSS, supports React and Vue.
+- [SimpleIcons](https://simpleicons.org/) - provides an excellent selection of brand icons.
+
+
diff --git a/sites/skeleton.dev/src/content/docs/design/presets.mdx b/sites/skeleton.dev/src/content/docs/design/presets.mdx
index 4b9f9eb7e4..0b1d3bba47 100644
--- a/sites/skeleton.dev/src/content/docs/design/presets.mdx
+++ b/sites/skeleton.dev/src/content/docs/design/presets.mdx
@@ -1,7 +1,8 @@
---
title: Presets
description: Canned styles for your interface elements.
-srcCore: '/utilities/presets.scss'
+references:
+ source: 'https://github.com/skeletonlabs/skeleton/blob/main/packages/skeleton/src/utilities/presets.scss'
order: 20
---
@@ -29,13 +30,8 @@ import TonalRaw from '@/components/examples/design/presets/tonal.astro?raw';
}
-
-
-
-
-
-
-
+
+
1. **Filled** - a filled preset of the primary brand color.
@@ -53,47 +49,34 @@ Skeleton's provides the following opinionated set of styles, including accessibl
### Filled
-```
+```txt
preset-filled-{color}-{lightModeShade}-{darkModeShade}
```
-
-
-
-
-
-
-
+
+
### Tonal
-```
+```txt
preset-tonal-{color}
```
-
-
-
-
-
-
-
+
+
### Outlined
-```
+```txt
preset-outlined-{color}-{shade}-{shade}
```
-
-
-
-
-
-
-
+`preset-outlined-{color}-{shade}-{shade}`
+
+
+
## Custom Presets
@@ -111,35 +94,20 @@ Please be aware the following presets are not included by Skeleton. Rather, thes
### Input Presets
-
-
-
-
-
-
-
+
+
### Gradient Presets
Tailwind provides a number of powerful [Gradient](https://tailwindcss.com/docs/gradient-color-stops) utility classes that can be used to generate presets.
-
-
-
-
-
-
-
+
+
### Glass Presets
-
-
-
-
-
-
-
+
+
diff --git a/sites/skeleton.dev/src/content/docs/design/spacing.mdx b/sites/skeleton.dev/src/content/docs/design/spacing.mdx
index 2f6a23e2c7..572d8c391d 100644
--- a/sites/skeleton.dev/src/content/docs/design/spacing.mdx
+++ b/sites/skeleton.dev/src/content/docs/design/spacing.mdx
@@ -8,20 +8,8 @@ import Default from '@/components/examples/design/spacing/default.svelte';
This is enabled by the [Tailwind spacing system](https://tailwindcss.com/blog/tailwindcss-v4#dynamic-utility-values-and-variants).
-
-
-
-
-
-
- Scaling can be adjusted by modifying the [type scale](/docs/get-started/core-api#typography) theme property.
- ```css
- [data-theme='cerberus'] {
- --spacing: 0.25rem;
- }
- ```
-
-
+
+
This affects the following utilities.
diff --git a/sites/skeleton.dev/src/content/docs/design/themes.mdx b/sites/skeleton.dev/src/content/docs/design/themes.mdx
index c552daf3ee..828f0bf0c0 100644
--- a/sites/skeleton.dev/src/content/docs/design/themes.mdx
+++ b/sites/skeleton.dev/src/content/docs/design/themes.mdx
@@ -1,35 +1,21 @@
---
title: Themes
description: The Skeleton theme system.
-srcCore: '/themes'
+summary: Skeleton themes utilize CSS custom properties to define core settings for your design system. Provided with a number of presets theme out of the box, as well as a powerful theme generator to create your own. Enable one or more and quickly switch on-demand.
+references:
+ source: 'https://github.com/skeletonlabs/skeleton/blob/main/packages/skeleton/src/themes'
order: 0
---
import ThemeList from '@/components/ui/theme-list.astro';
-{
-
-
- Skeleton themes utilize{' '}
-
- CSS custom properties
- {' '}
- to define core settings for your design system. Provided with a number of presets theme out of the box, as well as a powerful theme
- generator to create your own. Enable one or more and quickly switch on-demand.
-
-}
-
----
-
## Preset Themes
-Skeleton is provided with high quality set of hand curated themes, as shown below.
+Skeleton is provided with high quality set of hand curated themes. Tap the themes below to preview.
-Tap the theme preview above to copy the theme name to your clipboard. Then implement any desired theme in your app's global stylesheet.
-
-```css title="app.css" {3}
+```css
/* @import '@skeletonlabs/skeleton'; */
@import '@skeletonlabs/skeleton/themes/{theme-name}';
```
@@ -92,7 +78,7 @@ You may define the active theme using the `data-theme` attribute on your `
You can modify any [theme property](/docs/get-started/core-api) on demand using the following technique. Simply add this to your global stylesheet, following all Tailwind and Skeleton configuration. Use this to override preset theme properties.
-```css title="app.css"
+```css
[data-theme='cerberus'] {
--spacing: 0.22rem;
--radius-container: 0.375rem;
@@ -125,7 +111,7 @@ If your application supports multiple themes, you may isolate selection using th
Your app's light and dark mode background color values can be adjusted using the following [theme properties](/docs/get-started/core-api#colors).
-```css title="app.css"
+```css
[data-theme='cerberus'] body {
--body-background-color: pink;
--body-background-color-dark: green;
@@ -134,7 +120,7 @@ Your app's light and dark mode background color values can be adjusted using the
Background images are supported, including CSS mesh gradients. The following example adheres to theme colors.
-```css title="app.css"
+```css
[data-theme='cerberus'] body {
background-image:
radial-gradient(at 24% 25%, color-mix(in oklab, var(--color-primary-500) 30%, transparent) 0px, transparent 30%),
@@ -167,19 +153,19 @@ Skeleton recommends the use of [Fontsource](https://fontsource.org/) for install
Install your font of choice.
-```console
+```bash
npm install @fontsource/open-sans
```
Then import each font at the top of your global stylesheet, but below your Tailwind configuration.
-```css title="app.css"
+```css
@import '@fontsource/open-sans';
```
Finally, use the following [theme properties](/docs/get-started/core-api#base-1) to set each respective font-family property. Note that for custom themes, these settings are can be defined directly within each respective theme file.
-```css title="app.css"
+```css
[data-theme='cerberus'] {
--heading-font-family: 'Open Sans', sans-serif;
--base-font-family: 'Open Sans', sans-serif;
diff --git a/sites/skeleton.dev/src/content/docs/design/typography.mdx b/sites/skeleton.dev/src/content/docs/design/typography.mdx
index b463cd9e69..75aae99cf1 100644
--- a/sites/skeleton.dev/src/content/docs/design/typography.mdx
+++ b/sites/skeleton.dev/src/content/docs/design/typography.mdx
@@ -1,7 +1,9 @@
---
title: Typography
description: The Skeleton typography system.
-srcCore: '/utilities/typography.css'
+summary: Skeleton provides an array of opt-in utility classes for common typographic elements, with a fully functional typography scale based on your theme settings. As well as a number of primitives for generating a semantic typography set for your project's individual needs.
+references:
+ source: 'https://github.com/skeletonlabs/skeleton/blob/main/packages/skeleton/src/utilities/typography.css'
order: 30
---
@@ -41,49 +43,12 @@ import ListUnorderedRaw from '@/components/examples/design/typography/list-unord
import Semantic from '@/components/examples/design/typography/semantic.svelte';
import SemanticRaw from '@/components/examples/design/typography/semantic.svelte?raw';
-{
-
-
- Skeleton provides an array of opt-in utility classes for common typographic elements, with a fully functional typography scale based on
- your theme settings. As well as a number of primitives for generating a semantic typography set for your project's individual needs.
-
-
-}
-
## Typographic Scale
Skeleton introduces customizable [Typographic Scale](https://designcode.io/typographic-scales) to Tailwind's [font-size](https://tailwindcss.com/docs/font-size) properties.
-
-
-
-
-
-
- Scaling can be adjusted by modifying the [type scale](/docs/get-started/core-api#typography) theme property.
- ```css
- [data-theme='cerberus'] {
- --text-scaling: 1.067;
- }
- ```
- This affects the following text sizes.
- ```html
-
text-xs
- text-sm
- text-base
- text-lg
- text-xl
- text-2xl
- text-3xl
- text-4xl
- text-5xl
- text-6xl
- text-7xl
- text-8xl
- text-9xl
- ```
-
-
+
+
## Utility Classes
@@ -92,101 +57,56 @@ Use the following utility classes to quickly style semantic HTML elements. These
### Headings
-
-
-
-
-
-
-
+
+
### Paragraphs
-
-
-
-
-
-
-
+
+
### Blockquotes
-
-
-
-
-
-
-
+
+
### Anchor
-
-
-
-
-
-
-
+
+
### Pre-Formatted
-
-
-
-
-
-
-
+
+
### Code
-
-
-
-
-
-
-
+
+
### Keyboard
-
-
-
-
-
-
-
+
+
### Insert & Delete
-
-
-
-
-
-
-
+
+
### Mark
-
-
-
-
-
-
-
+
+
## Lists
@@ -194,68 +114,38 @@ Skeleton defers to Tailwind's built-in utility classes for common list styles.
### Unordered
-
-
-
-
-
-
-
+
+
### Ordered
-
-
-
-
-
-
-
+
+
### Basic
-
-
-
-
-
-
-
+
+
### Description
-
-
-
-
-
-
-
+
+
### Navigation
-
-
-
-
-
-
-
+
+
## Semantic Typography
When working with your designers, they may craft a semantic typography set for your project. To handle this, we recommend implementing [custom presets](/docs/design/presets#custom-presets) that mix CSS primitives with semantic HTML elements to replicate all desired styles. Feel free to use the boilerplate below, adding each style to your global stylesheet.
-
-
-
-
-
-
-
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/accordion.mdx b/sites/skeleton.dev/src/content/docs/framework-components/accordion.mdx
new file mode 100644
index 0000000000..a87cdae34f
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/accordion.mdx
@@ -0,0 +1,139 @@
+---
+title: Accordion
+description: Divide content into collapsible sections.
+features: [Full keyboard navigation, Can expand one or multiple items, Collapse each accordion item, Horizontal or vertical orientations]
+---
+
+import CollapsibleReact from '@/components/examples/framework-components/accordion/react/collapsible';
+import CollapsibleReactRaw from '@/components/examples/framework-components/accordion/react/collapsible?raw';
+import ControlledReact from '@/components/examples/framework-components/accordion/react/controlled';
+import ControlledReactRaw from '@/components/examples/framework-components/accordion/react/controlled?raw';
+import DefaultReact from '@/components/examples/framework-components/accordion/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/accordion/react/default?raw';
+import DirReact from '@/components/examples/framework-components/accordion/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/accordion/react/dir?raw';
+import IndicatorReact from '@/components/examples/framework-components/accordion/react/indicator';
+import IndicatorReactRaw from '@/components/examples/framework-components/accordion/react/indicator?raw';
+import MultipleReact from '@/components/examples/framework-components/accordion/react/multiple';
+import MultipleReactRaw from '@/components/examples/framework-components/accordion/react/multiple?raw';
+import OrientationReact from '@/components/examples/framework-components/accordion/react/orientation';
+import OrientationReactRaw from '@/components/examples/framework-components/accordion/react/orientation?raw';
+import CollapsibleSvelte from '@/components/examples/framework-components/accordion/svelte/collapsible.svelte';
+import CollapsibleSvelteRaw from '@/components/examples/framework-components/accordion/svelte/collapsible.svelte?raw';
+import ControlledSvelte from '@/components/examples/framework-components/accordion/svelte/controlled.svelte';
+import ControlledSvelteRaw from '@/components/examples/framework-components/accordion/svelte/controlled.svelte?raw';
+import DefaultSvelte from '@/components/examples/framework-components/accordion/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/accordion/svelte/default.svelte?raw';
+import DirSvelte from '@/components/examples/framework-components/accordion/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/accordion/svelte/dir.svelte?raw';
+import IndicatorSvelte from '@/components/examples/framework-components/accordion/svelte/indicator.svelte';
+import IndicatorSvelteRaw from '@/components/examples/framework-components/accordion/svelte/indicator.svelte?raw';
+import MultipleSvelte from '@/components/examples/framework-components/accordion/svelte/multiple.svelte';
+import MultipleSvelteRaw from '@/components/examples/framework-components/accordion/svelte/multiple.svelte?raw';
+import OrientationSvelte from '@/components/examples/framework-components/accordion/svelte/orientation.svelte';
+import OrientationSvelteRaw from '@/components/examples/framework-components/accordion/svelte/orientation.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Controlled
+
+Use the `open` and `onOpenChange` props to control the state.
+
+
+
+
+
+
+
+
+
+
+
+
+## Multiple
+
+Allow multiple accordion items to stay open at once using the `multiple` prop.
+
+
+
+
+
+
+
+
+
+
+
+
+## Collapsible
+
+Allow closing all items when one is open using the `collapsible` prop.
+
+
+
+
+
+
+
+
+
+
+
+
+## Indicator
+
+Add a custom indicator to accordion triggers.
+
+
+
+
+
+
+
+
+
+
+
+
+## Orientation
+
+Render the accordion vertically or horizontally using the `orientation` prop.
+
+
+
+
+
+
+
+
+
+
+
+
+## Dir
+
+Set the text direction (`ltr` or `rtl`) using the `dir` prop.
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/app-bar.mdx b/sites/skeleton.dev/src/content/docs/framework-components/app-bar.mdx
new file mode 100644
index 0000000000..eb6ea3bac9
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/app-bar.mdx
@@ -0,0 +1,86 @@
+---
+title: App Bar
+description: A header element for the top of your page layout.
+---
+
+import DefaultReact from '@/components/examples/framework-components/app-bar/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/app-bar/react/default.tsx?raw';
+
+import CenteredReact from '@/components/examples/framework-components/app-bar/react/centered';
+import CenteredReactRaw from '@/components/examples/framework-components/app-bar/react/centered.tsx?raw';
+
+import ExtendedReact from '@/components/examples/framework-components/app-bar/react/extended';
+import ExtendedReactRaw from '@/components/examples/framework-components/app-bar/react/extended.tsx?raw';
+
+import ResponsiveReact from '@/components/examples/framework-components/app-bar/react/responsive';
+import ResponsiveReactRaw from '@/components/examples/framework-components/app-bar/react/responsive.tsx?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/app-bar/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/app-bar/svelte/default.svelte?raw';
+
+import CenteredSvelte from '@/components/examples/framework-components/app-bar/svelte/centered.svelte';
+import CenteredSvelteRaw from '@/components/examples/framework-components/app-bar/svelte/centered.svelte?raw';
+
+import ExtendedSvelte from '@/components/examples/framework-components/app-bar/svelte/extended.svelte';
+import ExtendedSvelteRaw from '@/components/examples/framework-components/app-bar/svelte/extended.svelte?raw';
+
+import ResponsiveSvelte from '@/components/examples/framework-components/app-bar/svelte/responsive.svelte';
+import ResponsiveSvelteRaw from '@/components/examples/framework-components/app-bar/svelte/responsive.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Centered
+
+Control the layout using a [grid-cols-\*](https://tailwindcss.com/docs/grid-column) utility class.
+
+
+
+
+
+
+
+
+
+
+
+
+## Extended
+
+Move the `` to a new row within the root.
+
+
+
+
+
+
+
+
+
+
+
+
+## Responsive
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/avatar.mdx b/sites/skeleton.dev/src/content/docs/framework-components/avatar.mdx
new file mode 100644
index 0000000000..dd58edd7eb
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/avatar.mdx
@@ -0,0 +1,62 @@
+---
+title: Avatar
+description: An image with a fallback for representing the user.
+---
+
+import DefaultReact from '@/components/examples/framework-components/avatar/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/avatar/react/default?raw';
+import FallbackReact from '@/components/examples/framework-components/avatar/react/fallback';
+import FallbackReactRaw from '@/components/examples/framework-components/avatar/react/fallback?raw';
+import FilterReact from '@/components/examples/framework-components/avatar/react/filter';
+import FilterReactRaw from '@/components/examples/framework-components/avatar/react/filter?raw';
+import DefaultSvelte from '@/components/examples/framework-components/avatar/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/avatar/svelte/default.svelte?raw';
+import FallbackSvelte from '@/components/examples/framework-components/avatar/svelte/fallback.svelte';
+import FallbackSvelteRaw from '@/components/examples/framework-components/avatar/svelte/fallback.svelte?raw';
+import FilterSvelte from '@/components/examples/framework-components/avatar/svelte/filter.svelte';
+import FilterSvelteRaw from '@/components/examples/framework-components/avatar/svelte/filter.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Fallback
+
+Use a fallback when an image fails to load or is unavailable.
+
+
+
+
+
+
+
+
+
+
+
+
+## Filter
+
+Apply [SVG Filters](/docs/guides/cookbook/svg-filters) to avatar images.
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/collapsible.mdx b/sites/skeleton.dev/src/content/docs/framework-components/collapsible.mdx
new file mode 100644
index 0000000000..ebb839dd40
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/collapsible.mdx
@@ -0,0 +1,120 @@
+---
+title: Collapsible
+description: A container that can be expanded or collapsed to show or hide content.
+---
+
+import DefaultReact from '@/components/examples/framework-components/collapsible/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/collapsible/react/default?raw';
+
+import ControlledReact from '@/components/examples/framework-components/collapsible/react/controlled';
+import ControlledReactRaw from '@/components/examples/framework-components/collapsible/react/controlled?raw';
+
+import IndicatorReact from '@/components/examples/framework-components/collapsible/react/indicator';
+import IndicatorReactRaw from '@/components/examples/framework-components/collapsible/react/indicator?raw';
+
+import DisabledReact from '@/components/examples/framework-components/collapsible/react/disabled';
+import DisabledReactRaw from '@/components/examples/framework-components/collapsible/react/disabled?raw';
+
+import AlignmentReact from '@/components/examples/framework-components/collapsible/react/alignment';
+import AlignmentReactRaw from '@/components/examples/framework-components/collapsible/react/alignment?raw';
+
+import DirReact from '@/components/examples/framework-components/collapsible/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/collapsible/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/collapsible/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/collapsible/svelte/default.svelte?raw';
+
+import ControlledSvelte from '@/components/examples/framework-components/collapsible/svelte/controlled.svelte';
+import ControlledSvelteRaw from '@/components/examples/framework-components/collapsible/svelte/controlled.svelte?raw';
+
+import IndicatorSvelte from '@/components/examples/framework-components/collapsible/svelte/indicator.svelte';
+import IndicatorSvelteRaw from '@/components/examples/framework-components/collapsible/svelte/indicator.svelte?raw';
+
+import DisabledSvelte from '@/components/examples/framework-components/collapsible/svelte/disabled.svelte';
+import DisabledSvelteRaw from '@/components/examples/framework-components/collapsible/svelte/disabled.svelte?raw';
+
+import AlignmentSvelte from '@/components/examples/framework-components/collapsible/svelte/alignment.svelte';
+import AlignmentSvelteRaw from '@/components/examples/framework-components/collapsible/svelte/alignment.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/collapsible/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/collapsible/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Controlled
+
+
+
+
+
+
+
+
+
+
+
+
+## Indicator
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled
+
+
+
+
+
+
+
+
+
+
+
+
+## Alignment
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/combobox.mdx b/sites/skeleton.dev/src/content/docs/framework-components/combobox.mdx
new file mode 100644
index 0000000000..b4b48ab778
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/combobox.mdx
@@ -0,0 +1,161 @@
+---
+title: Combobox
+description: A combobox is an input widget with an associated popup that enables users to select a value from a collection of possible values.
+---
+
+import DefaultReact from '@/components/examples/framework-components/combobox/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/combobox/react/default?raw';
+
+import GroupReact from '@/components/examples/framework-components/combobox/react/group';
+import GroupReactRaw from '@/components/examples/framework-components/combobox/react/group?raw';
+
+import AutoHighlightReact from '@/components/examples/framework-components/combobox/react/auto-highlight';
+import AutoHighlightReactRaw from '@/components/examples/framework-components/combobox/react/auto-highlight?raw';
+
+import MultipleReact from '@/components/examples/framework-components/combobox/react/multiple';
+import MultipleReactRaw from '@/components/examples/framework-components/combobox/react/multiple?raw';
+
+import DisabledItemReact from '@/components/examples/framework-components/combobox/react/disabled-item';
+import DisabledItemReactRaw from '@/components/examples/framework-components/combobox/react/disabled-item?raw';
+
+import CustomFilterReact from '@/components/examples/framework-components/combobox/react/custom-filter';
+import CustomFilterReactRaw from '@/components/examples/framework-components/combobox/react/custom-filter?raw';
+
+import DirReact from '@/components/examples/framework-components/combobox/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/combobox/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/combobox/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/combobox/svelte/default.svelte?raw';
+
+import GroupSvelte from '@/components/examples/framework-components/combobox/svelte/group.svelte';
+import GroupSvelteRaw from '@/components/examples/framework-components/combobox/svelte/group.svelte?raw';
+
+import AutoHighlightSvelte from '@/components/examples/framework-components/combobox/svelte/auto-highlight.svelte';
+import AutoHighlightSvelteRaw from '@/components/examples/framework-components/combobox/svelte/auto-highlight.svelte?raw';
+
+import MultipleSvelte from '@/components/examples/framework-components/combobox/svelte/multiple.svelte';
+import MultipleSvelteRaw from '@/components/examples/framework-components/combobox/svelte/multiple.svelte?raw';
+
+import DisabledItemSvelte from '@/components/examples/framework-components/combobox/svelte/disabled-item.svelte';
+import DisabledItemSvelteRaw from '@/components/examples/framework-components/combobox/svelte/disabled-item.svelte?raw';
+
+import CustomFilterSvelte from '@/components/examples/framework-components/combobox/svelte/custom-filter.svelte';
+import CustomFilterSvelteRaw from '@/components/examples/framework-components/combobox/svelte/custom-filter.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/combobox/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/combobox/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Groups
+
+Create labelled groups for your items.
+
+
+
+
+
+
+
+
+
+
+
+
+## Auto Highlight
+
+Search for any option, then tap Enter on your keyboard to automatically select it.
+
+
+
+
+
+
+
+
+
+
+
+
+## Multiple
+
+To maintain filtering functionality and improve clarity for users, we recommend displaying each selected value outside the perimeter of the Combobox component.
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled Item
+
+
+
+
+
+
+
+
+
+
+
+
+## Custom Filter
+
+Try mistyping `apple` or `banana` to see the custom filter using the fuzzy search from [Fuse.js](https://fusejs.io/) in action.
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## Guidelines
+
+### Z-Index
+
+By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the Positioner component part.
+
+```astro
+
+```
+
+### Max Items
+
+We recommend no more than 500 items max. For normal usage, a few dozen will provide the best performance.
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/date-picker.mdx b/sites/skeleton.dev/src/content/docs/framework-components/date-picker.mdx
new file mode 100644
index 0000000000..6cc6187cb8
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/date-picker.mdx
@@ -0,0 +1,154 @@
+---
+title: Date Picker
+description: Select dates from a calendar interface.
+---
+
+import ControlledReact from '@/components/examples/framework-components/date-picker/react/controlled';
+import ControlledReactRaw from '@/components/examples/framework-components/date-picker/react/controlled.tsx?raw';
+
+import DefaultReact from '@/components/examples/framework-components/date-picker/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/date-picker/react/default.tsx?raw';
+
+import DisabledReact from '@/components/examples/framework-components/date-picker/react/disabled';
+import DisabledReactRaw from '@/components/examples/framework-components/date-picker/react/disabled.tsx?raw';
+
+import MinMaxReact from '@/components/examples/framework-components/date-picker/react/min-max';
+import MinMaxReactRaw from '@/components/examples/framework-components/date-picker/react/min-max.tsx?raw';
+
+import RangeReact from '@/components/examples/framework-components/date-picker/react/range';
+import RangeReactRaw from '@/components/examples/framework-components/date-picker/react/range.tsx?raw';
+
+import InlineReact from '@/components/examples/framework-components/date-picker/react/inline';
+import InlineReactRaw from '@/components/examples/framework-components/date-picker/react/inline.tsx?raw';
+
+import WithSelectsReact from '@/components/examples/framework-components/date-picker/react/with-selects';
+import WithSelectsReactRaw from '@/components/examples/framework-components/date-picker/react/with-selects.tsx?raw';
+
+import ControlledSvelte from '@/components/examples/framework-components/date-picker/svelte/controlled.svelte';
+import ControlledSvelteRaw from '@/components/examples/framework-components/date-picker/svelte/controlled.svelte?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/date-picker/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/date-picker/svelte/default.svelte?raw';
+
+import DisabledSvelte from '@/components/examples/framework-components/date-picker/svelte/disabled.svelte';
+import DisabledSvelteRaw from '@/components/examples/framework-components/date-picker/svelte/disabled.svelte?raw';
+
+import MinMaxSvelte from '@/components/examples/framework-components/date-picker/svelte/min-max.svelte';
+import MinMaxSvelteRaw from '@/components/examples/framework-components/date-picker/svelte/min-max.svelte?raw';
+
+import RangeSvelte from '@/components/examples/framework-components/date-picker/svelte/range.svelte';
+import RangeSvelteRaw from '@/components/examples/framework-components/date-picker/svelte/range.svelte?raw';
+
+import InlineSvelte from '@/components/examples/framework-components/date-picker/svelte/inline.svelte';
+import InlineSvelteRaw from '@/components/examples/framework-components/date-picker/svelte/inline.svelte?raw';
+
+import WithSelectsSvelte from '@/components/examples/framework-components/date-picker/svelte/with-selects.svelte';
+import WithSelectsSvelteRaw from '@/components/examples/framework-components/date-picker/svelte/with-selects.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Controlled
+
+Manage the selected date value with controlled state.
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled
+
+Disable the date picker to prevent user interaction.
+
+
+
+
+
+
+
+
+
+
+
+
+## Minimum and Maximum
+
+Restrict date selection to a specific range using the `min` and `max` props with the `parseDate` helper function.
+
+
+
+
+
+
+
+
+
+
+
+
+## Range Selection
+
+Enable range selection by setting `selectionMode="range"` on the root component. Pair with two inputs fields:
+
+- `index={0}` to represent the start dates.
+- `index={1}` to represent the end dates.
+
+
+
+
+
+
+
+
+
+
+
+
+## Inline calendar
+
+Display the calendar inline without a popover by adding the `inline` prop to the root component. When using inline mode, omit the `Portal` and `Positioner` components.
+
+
+
+
+
+
+
+
+
+
+
+
+## Month and Year Selection
+
+Add `MonthSelect` and `YearSelect` components to provide selectors for quickly changing the month and year.
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/dialog.mdx b/sites/skeleton.dev/src/content/docs/framework-components/dialog.mdx
new file mode 100644
index 0000000000..da0673b5dd
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/dialog.mdx
@@ -0,0 +1,150 @@
+---
+title: Dialog
+description: A modal dialog for displaying content and actions.
+---
+
+import DefaultReact from '@/components/examples/framework-components/dialog/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/dialog/react/default?raw';
+
+import AlertDialogReact from '@/components/examples/framework-components/dialog/react/alert-dialog';
+import AlertDialogReactRaw from '@/components/examples/framework-components/dialog/react/alert-dialog?raw';
+
+import InteractionReact from '@/components/examples/framework-components/dialog/react/interaction';
+import InteractionReactRaw from '@/components/examples/framework-components/dialog/react/interaction?raw';
+
+import DrawerReact from '@/components/examples/framework-components/dialog/react/drawer';
+import DrawerReactRaw from '@/components/examples/framework-components/dialog/react/drawer?raw';
+
+import ZIndexReact from '@/components/examples/framework-components/dialog/react/z-index';
+import ZIndexReactRaw from '@/components/examples/framework-components/dialog/react/z-index?raw';
+
+import DirReact from '@/components/examples/framework-components/dialog/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/dialog/react/dir?raw';
+
+import HeadlessReact from '@/components/examples/framework-components/dialog/react/headless';
+import HeadlessReactRaw from '@/components/examples/framework-components/dialog/react/headless?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/dialog/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/dialog/svelte/default.svelte?raw';
+
+import AlertDialogSvelte from '@/components/examples/framework-components/dialog/svelte/alert-dialog.svelte';
+import AlertDialogSvelteRaw from '@/components/examples/framework-components/dialog/svelte/alert-dialog.svelte?raw';
+
+import InteractionSvelte from '@/components/examples/framework-components/dialog/svelte/interaction.svelte';
+import InteractionSvelteRaw from '@/components/examples/framework-components/dialog/svelte/interaction.svelte?raw';
+
+import DrawerSvelte from '@/components/examples/framework-components/dialog/svelte/drawer.svelte';
+import DrawerSvelteRaw from '@/components/examples/framework-components/dialog/svelte/drawer.svelte?raw';
+
+import ZIndexSvelte from '@/components/examples/framework-components/dialog/svelte/z-index.svelte';
+import ZIndexSvelteRaw from '@/components/examples/framework-components/dialog/svelte/z-index.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/dialog/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/dialog/svelte/dir.svelte?raw';
+
+import HeadlessSvelte from '@/components/examples/framework-components/dialog/svelte/headless.svelte';
+import HeadlessSvelteRaw from '@/components/examples/framework-components/dialog/svelte/headless.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Alert Dialog
+
+The [alertdialog](https://w3c.github.io/aria/#alertdialog) role enables assistive technologies and browsers to distinguish alert dialogs from other dialogs so they have the option of giving alert dialogs special treatment, such as playing a system alert sound.
+
+
+
+
+
+
+
+
+
+
+
+
+## Interaction
+
+If desired, you can disable click to close interactions for the backdrop. We recommend using this sparingly, as this traps the
+user in this experience.
+
+
+
+
+
+
+
+
+
+
+
+
+## Drawer
+
+This example repurposes the Dialog for use as a side-panel Drawer. It also introduces basic transition animations.
+
+
+
+
+
+
+
+
+
+
+
+
+## Z-Index
+
+By default we do not take an opinionated stance regarding z-index stacking. The result is the component can sometimes be occluded beneath other elements with a higher index. The Z-Index can controlled by applying a utility class to the `Positioner` component part.
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## Headless
+
+Unlike most components in Skeleton, this feature is provided "headless". This means no default styles are applied out of the box. This ensures you retain full control of all styling.
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/file-upload.mdx b/sites/skeleton.dev/src/content/docs/framework-components/file-upload.mdx
new file mode 100644
index 0000000000..f8c6031132
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/file-upload.mdx
@@ -0,0 +1,122 @@
+---
+title: File Upload
+description: File upload dropzone and input patterns for selecting files.
+---
+
+import DefaultReact from '@/components/examples/framework-components/file-upload/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/file-upload/react/default?raw';
+
+import CustomContentReact from '@/components/examples/framework-components/file-upload/react/custom-content';
+import CustomContentReactRaw from '@/components/examples/framework-components/file-upload/react/custom-content?raw';
+
+import DisabledReact from '@/components/examples/framework-components/file-upload/react/disabled';
+import DisabledReactRaw from '@/components/examples/framework-components/file-upload/react/disabled?raw';
+
+import ButtonReact from '@/components/examples/framework-components/file-upload/react/button';
+import ButtonReactRaw from '@/components/examples/framework-components/file-upload/react/button?raw';
+
+import ClearFilesReact from '@/components/examples/framework-components/file-upload/react/clear-files';
+import ClearFilesReactRaw from '@/components/examples/framework-components/file-upload/react/clear-files?raw';
+
+import DirReact from '@/components/examples/framework-components/file-upload/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/file-upload/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/file-upload/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/file-upload/svelte/default.svelte?raw';
+
+import CustomContentSvelte from '@/components/examples/framework-components/file-upload/svelte/custom-content.svelte';
+import CustomContentSvelteRaw from '@/components/examples/framework-components/file-upload/svelte/custom-content.svelte?raw';
+
+import DisabledSvelte from '@/components/examples/framework-components/file-upload/svelte/disabled.svelte';
+import DisabledSvelteRaw from '@/components/examples/framework-components/file-upload/svelte/disabled.svelte?raw';
+
+import ButtonSvelte from '@/components/examples/framework-components/file-upload/svelte/button.svelte';
+import ButtonSvelteRaw from '@/components/examples/framework-components/file-upload/svelte/button.svelte?raw';
+
+import ClearFilesSvelte from '@/components/examples/framework-components/file-upload/svelte/clear-files.svelte';
+import ClearFilesSvelteRaw from '@/components/examples/framework-components/file-upload/svelte/clear-files.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/file-upload/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/file-upload/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Custom Content
+
+Supply your own text and icons within the dropzone.
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled
+
+
+
+
+
+
+
+
+
+
+
+
+## Button Only
+
+
+
+
+
+
+
+
+
+
+
+
+## Clear Files
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/listbox.mdx b/sites/skeleton.dev/src/content/docs/framework-components/listbox.mdx
new file mode 100644
index 0000000000..685492c7b4
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/listbox.mdx
@@ -0,0 +1,139 @@
+---
+title: Listbox
+description: Accessible listbox for single and multi selection.
+---
+
+import DefaultReact from '@/components/examples/framework-components/listbox/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/listbox/react/default?raw';
+
+import GroupReact from '@/components/examples/framework-components/listbox/react/group';
+import GroupReactRaw from '@/components/examples/framework-components/listbox/react/group?raw';
+
+import MultipleReact from '@/components/examples/framework-components/listbox/react/multiple';
+import MultipleReactRaw from '@/components/examples/framework-components/listbox/react/multiple?raw';
+
+import DisabledReact from '@/components/examples/framework-components/listbox/react/disabled';
+import DisabledReactRaw from '@/components/examples/framework-components/listbox/react/disabled?raw';
+
+import DisabledItemReact from '@/components/examples/framework-components/listbox/react/disabled-item';
+import DisabledItemReactRaw from '@/components/examples/framework-components/listbox/react/disabled-item?raw';
+
+import SearchReact from '@/components/examples/framework-components/listbox/react/search';
+import SearchReactRaw from '@/components/examples/framework-components/listbox/react/search?raw';
+
+import DirReact from '@/components/examples/framework-components/listbox/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/listbox/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/listbox/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/listbox/svelte/default.svelte?raw';
+
+import GroupSvelte from '@/components/examples/framework-components/listbox/svelte/group.svelte';
+import GroupSvelteRaw from '@/components/examples/framework-components/listbox/svelte/group.svelte?raw';
+
+import MultipleSvelte from '@/components/examples/framework-components/listbox/svelte/multiple.svelte';
+import MultipleSvelteRaw from '@/components/examples/framework-components/listbox/svelte/multiple.svelte?raw';
+
+import DisabledSvelte from '@/components/examples/framework-components/listbox/svelte/disabled.svelte';
+import DisabledSvelteRaw from '@/components/examples/framework-components/listbox/svelte/disabled.svelte?raw';
+
+import DisabledItemSvelte from '@/components/examples/framework-components/listbox/svelte/disabled-item.svelte';
+import DisabledItemSvelteRaw from '@/components/examples/framework-components/listbox/svelte/disabled-item.svelte?raw';
+
+import SearchSvelte from '@/components/examples/framework-components/listbox/svelte/search.svelte';
+import SearchSvelteRaw from '@/components/examples/framework-components/listbox/svelte/search.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/listbox/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/listbox/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Groups
+
+
+
+
+
+
+
+
+
+
+
+
+## Multiple
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled Item
+
+
+
+
+
+
+
+
+
+
+
+
+## Search
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/navigation.mdx b/sites/skeleton.dev/src/content/docs/framework-components/navigation.mdx
new file mode 100644
index 0000000000..3e33f73d8a
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/navigation.mdx
@@ -0,0 +1,104 @@
+---
+title: Navigation
+description: Navigation patterns for apps (bar, rail, sidebar, toggle).
+---
+
+import DefaultReact from '@/components/examples/framework-components/navigation/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/navigation/react/default.tsx?raw';
+
+import RailReact from '@/components/examples/framework-components/navigation/react/rail';
+import RailReactRaw from '@/components/examples/framework-components/navigation/react/rail.tsx?raw';
+
+import SidebarReact from '@/components/examples/framework-components/navigation/react/sidebar';
+import SidebarReactRaw from '@/components/examples/framework-components/navigation/react/sidebar.tsx?raw';
+
+import ToggleReact from '@/components/examples/framework-components/navigation/react/toggle';
+import ToggleReactRaw from '@/components/examples/framework-components/navigation/react/toggle.tsx?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/navigation/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/navigation/svelte/default.svelte?raw';
+
+import RailSvelte from '@/components/examples/framework-components/navigation/svelte/rail.svelte';
+import RailSvelteRaw from '@/components/examples/framework-components/navigation/svelte/rail.svelte?raw';
+
+import SidebarSvelte from '@/components/examples/framework-components/navigation/svelte/sidebar.svelte';
+import SidebarSvelteRaw from '@/components/examples/framework-components/navigation/svelte/sidebar.svelte?raw';
+
+import ToggleSvelte from '@/components/examples/framework-components/navigation/svelte/toggle.svelte';
+import ToggleSvelteRaw from '@/components/examples/framework-components/navigation/svelte/toggle.svelte?raw';
+
+## Bar
+
+- Recommended for small sized screens (ex: mobile).
+- Ideal for vertical screen layouts.
+- Should be fixed to the bottom of the viewport.
+- Supports 3-5 tiles based on contents and viewport width.
+- Consider progressive enhancement with the [Virtual Keyboard API](https://developer.mozilla.org/en-US/docs/Web/API/VirtualKeyboard_API).
+
+
+
+
+
+
+
+
+
+
+
+
+## Rail
+
+- Recommended for medium sized screens (ex: tablet).
+- Ideal for horizontal screen layouts.
+- Should be fixed to the left or right of the viewport.
+- Supports 3-7 tiles based on contents and viewport height.
+
+
+
+
+
+
+
+
+
+
+
+
+## Sidebar
+
+- Recommended for large sized screens (ex: desktop).
+- Ideal for horizontal screen layouts.
+- Should be fixed to the left or right of the viewport.
+- Supports multiple groups of links for deep navigation.
+- Supports a label field per each group.
+- Can scroll vertically if contents extend beyond the viewport height.
+
+
+
+
+
+
+
+
+
+
+
+
+## Toggle Layout
+
+Using reactive state we can dynamically switch between multiple layouts. Tap the double arrow icon to toggle.
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/pagination.mdx b/sites/skeleton.dev/src/content/docs/framework-components/pagination.mdx
new file mode 100644
index 0000000000..adc389539b
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/pagination.mdx
@@ -0,0 +1,82 @@
+---
+title: Pagination
+description: Client and server-side pagination controls.
+---
+
+import DefaultReact from '@/components/examples/framework-components/pagination/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/pagination/react/default?raw';
+
+import DynamicPageSizeReact from '@/components/examples/framework-components/pagination/react/dynamic-page-size';
+import DynamicPageSizeReactRaw from '@/components/examples/framework-components/pagination/react/dynamic-page-size?raw';
+
+import DirReact from '@/components/examples/framework-components/pagination/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/pagination/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/pagination/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/pagination/svelte/default.svelte?raw';
+
+import DynamicPageSizeSvelte from '@/components/examples/framework-components/pagination/svelte/dynamic-page-size.svelte';
+import DynamicPageSizeSvelteRaw from '@/components/examples/framework-components/pagination/svelte/dynamic-page-size.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/pagination/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/pagination/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Page Size
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## Total Count
+
+For server-side pagination, your data source may be truncated. Make sure to specify the total records using `count`.
+
+```ts
+const res = {
+ "results": [...],
+ "pagination": {
+ "page": 1,
+ "limit": 10,
+ "count": 500,
+ }
+}
+```
+
+```astro
+...
+```
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/popover.mdx b/sites/skeleton.dev/src/content/docs/framework-components/popover.mdx
new file mode 100644
index 0000000000..b183611688
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/popover.mdx
@@ -0,0 +1,126 @@
+---
+title: Popover
+description: Small overlay panels positioned relative to a trigger.
+---
+
+import DefaultReact from '@/components/examples/framework-components/popover/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/popover/react/default?raw';
+
+import ProgrammaticReact from '@/components/examples/framework-components/popover/react/programmatic';
+import ProgrammaticReactRaw from '@/components/examples/framework-components/popover/react/programmatic?raw';
+
+import ArrowReact from '@/components/examples/framework-components/popover/react/arrow';
+import ArrowReactRaw from '@/components/examples/framework-components/popover/react/arrow?raw';
+
+import ZIndexReact from '@/components/examples/framework-components/popover/react/z-index';
+import ZIndexReactRaw from '@/components/examples/framework-components/popover/react/z-index?raw';
+
+import DirReact from '@/components/examples/framework-components/popover/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/popover/react/dir?raw';
+
+import HeadlessReact from '@/components/examples/framework-components/popover/react/headless';
+import HeadlessReactRaw from '@/components/examples/framework-components/popover/react/headless?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/popover/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/popover/svelte/default.svelte?raw';
+
+import ProgrammaticSvelte from '@/components/examples/framework-components/popover/svelte/programmatic.svelte';
+import ProgrammaticSvelteRaw from '@/components/examples/framework-components/popover/svelte/programmatic.svelte?raw';
+
+import ArrowSvelte from '@/components/examples/framework-components/popover/svelte/arrow.svelte';
+import ArrowSvelteRaw from '@/components/examples/framework-components/popover/svelte/arrow.svelte?raw';
+
+import ZIndexSvelte from '@/components/examples/framework-components/popover/svelte/z-index.svelte';
+import ZIndexSvelteRaw from '@/components/examples/framework-components/popover/svelte/z-index.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/popover/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/popover/svelte/dir.svelte?raw';
+
+import HeadlessSvelte from '@/components/examples/framework-components/popover/svelte/headless.svelte';
+import HeadlessSvelteRaw from '@/components/examples/framework-components/popover/svelte/headless.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Arrow
+
+Visually connects the popover content to the trigger element. Will automatically align based on the selected side.
+
+
+
+
+
+
+
+
+
+
+
+
+## Z-Index
+
+This component is headless by default. If you find the popover content is being clipped, try increasing the z-index on the Positioner part. In some rare cases you may need to use `!important` to override library defaults.
+
+
+
+
+
+
+
+
+
+
+
+
+## Programmatic Control
+
+You can programmatically open and close the popover using the exposed API from the component. This is useful for custom interactions and keyboard handling strategies.
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## Headless
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/portal.mdx b/sites/skeleton.dev/src/content/docs/framework-components/portal.mdx
new file mode 100644
index 0000000000..84ca208b1b
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/portal.mdx
@@ -0,0 +1,31 @@
+---
+title: Portal
+description: Renders children into a DOM node that exists outside the DOM hierarchy.
+references:
+ zag: false
+---
+
+import DefaultReact from '@/components/examples/framework-components/portal/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/portal/react/default?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/portal/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/portal/svelte/default.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## How It Works
+
+When enabled, the content will move from the source to the target element.
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/progress-circular.mdx b/sites/skeleton.dev/src/content/docs/framework-components/progress-circular.mdx
new file mode 100644
index 0000000000..863abd0ac7
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/progress-circular.mdx
@@ -0,0 +1,157 @@
+---
+title: Progress (Circular)
+description: Circular progress indicators for showing task progress.
+references:
+ zag: https://zagjs.com/components/[FRAMEWORK]/circular-progress
+---
+
+import DefaultReact from '@/components/examples/framework-components/progress-circular/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/progress-circular/react/default?raw';
+
+import SizeReact from '@/components/examples/framework-components/progress-circular/react/size';
+import SizeReactRaw from '@/components/examples/framework-components/progress-circular/react/size?raw';
+
+import ColorReact from '@/components/examples/framework-components/progress-circular/react/color';
+import ColorReactRaw from '@/components/examples/framework-components/progress-circular/react/color?raw';
+
+import CenteredContentReact from '@/components/examples/framework-components/progress-circular/react/centered-content';
+import CenteredContentReactRaw from '@/components/examples/framework-components/progress-circular/react/centered-content?raw';
+
+import IndeterminateReact from '@/components/examples/framework-components/progress-circular/react/indeterminate';
+import IndeterminateReactRaw from '@/components/examples/framework-components/progress-circular/react/indeterminate?raw';
+
+import FormatReact from '@/components/examples/framework-components/progress-circular/react/format';
+import FormatReactRaw from '@/components/examples/framework-components/progress-circular/react/format?raw';
+
+import CustomValueTextReact from '@/components/examples/framework-components/progress-circular/react/custom-value-text';
+import CustomValueTextReactRaw from '@/components/examples/framework-components/progress-circular/react/custom-value-text?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/progress-circular/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/progress-circular/svelte/default.svelte?raw';
+
+import SizeSvelte from '@/components/examples/framework-components/progress-circular/svelte/size.svelte';
+import SizeSvelteRaw from '@/components/examples/framework-components/progress-circular/svelte/size.svelte?raw';
+
+import ColorSvelte from '@/components/examples/framework-components/progress-circular/svelte/color.svelte';
+import ColorSvelteRaw from '@/components/examples/framework-components/progress-circular/svelte/color.svelte?raw';
+
+import CenteredContentSvelte from '@/components/examples/framework-components/progress-circular/svelte/centered-content.svelte';
+import CenteredContentSvelteRaw from '@/components/examples/framework-components/progress-circular/svelte/centered-content.svelte?raw';
+
+import IndeterminateSvelte from '@/components/examples/framework-components/progress-circular/svelte/indeterminate.svelte';
+import IndeterminateSvelteRaw from '@/components/examples/framework-components/progress-circular/svelte/indeterminate.svelte?raw';
+
+import FormatSvelte from '@/components/examples/framework-components/progress-circular/svelte/format.svelte';
+import FormatSvelteRaw from '@/components/examples/framework-components/progress-circular/svelte/format.svelte?raw';
+
+import CustomValueTextSvelte from '@/components/examples/framework-components/progress-circular/svelte/custom-value-text.svelte';
+import CustomValueTextSvelteRaw from '@/components/examples/framework-components/progress-circular/svelte/custom-value-text.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Size
+
+Use different sizes for context-appropriate indicators.
+
+
+
+
+
+
+
+
+
+
+
+
+## Color
+
+Change the track and indicator colour using utility classes or custom CSS variables to match your design system.
+
+
+
+
+
+
+
+
+
+
+
+
+## Centered Content
+
+Place content in the center of the circular progress if needed (for example, a numeric value).
+
+
+
+
+
+
+
+
+
+
+
+
+## Indeterminate
+
+Use a `null` value to enable indeterminate mode.
+
+
+
+
+
+
+
+
+
+
+
+
+## Format
+
+Use the `format` prop to customize the output of the `ValueText` component. Options include:
+
+- `percentage` (default)
+- `decimal` (0.0 - 1.0)
+- Custom - via the [Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl).
+
+
+
+
+
+
+
+
+
+
+
+
+## Custom Value Text
+
+Provide a custom renderer for the `ValueText` if you need to show a different layout or label.
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/progress-linear.mdx b/sites/skeleton.dev/src/content/docs/framework-components/progress-linear.mdx
new file mode 100644
index 0000000000..b71fcae294
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/progress-linear.mdx
@@ -0,0 +1,160 @@
+---
+title: Progress (Linear)
+description: An indicator showing the progress or completion of a task.
+references:
+ zag: https://zagjs.com/components/[FRAMEWORK]/linear-progress
+---
+
+import DefaultReact from '@/components/examples/framework-components/progress-linear/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/progress-linear/react/default?raw';
+
+import ColorReact from '@/components/examples/framework-components/progress-linear/react/color';
+import ColorReactRaw from '@/components/examples/framework-components/progress-linear/react/color?raw';
+
+import HeightReact from '@/components/examples/framework-components/progress-linear/react/height';
+import HeightReactRaw from '@/components/examples/framework-components/progress-linear/react/height?raw';
+
+import OrientationReact from '@/components/examples/framework-components/progress-linear/react/orientation';
+import OrientationReactRaw from '@/components/examples/framework-components/progress-linear/react/orientation?raw';
+
+import IndeterminateReact from '@/components/examples/framework-components/progress-linear/react/indeterminate';
+import IndeterminateReactRaw from '@/components/examples/framework-components/progress-linear/react/indeterminate?raw';
+
+import CustomAnimationReact from '@/components/examples/framework-components/progress-linear/react/custom-animation';
+import CustomAnimationReactRaw from '@/components/examples/framework-components/progress-linear/react/custom-animation?raw';
+
+import NativeReact from '@/components/examples/framework-components/progress-linear/react/native';
+import NativeReactRaw from '@/components/examples/framework-components/progress-linear/react/native?raw';
+
+import DirReact from '@/components/examples/framework-components/progress-linear/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/progress-linear/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/progress-linear/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/default.svelte?raw';
+
+import ColorSvelte from '@/components/examples/framework-components/progress-linear/svelte/color.svelte';
+import ColorSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/color.svelte?raw';
+
+import HeightSvelte from '@/components/examples/framework-components/progress-linear/svelte/height.svelte';
+import HeightSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/height.svelte?raw';
+
+import OrientationSvelte from '@/components/examples/framework-components/progress-linear/svelte/orientation.svelte';
+import OrientationSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/orientation.svelte?raw';
+
+import IndeterminateSvelte from '@/components/examples/framework-components/progress-linear/svelte/indeterminate.svelte';
+import IndeterminateSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/indeterminate.svelte?raw';
+
+import CustomAnimationSvelte from '@/components/examples/framework-components/progress-linear/svelte/custom-animation.svelte';
+import CustomAnimationSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/custom-animation.svelte?raw';
+
+import NativeSvelte from '@/components/examples/framework-components/progress-linear/svelte/native.svelte';
+import NativeSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/native.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/progress-linear/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/progress-linear/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Color
+
+
+
+
+
+
+
+
+
+
+
+
+## Height
+
+
+
+
+
+
+
+
+
+
+
+
+## Orientation
+
+
+
+
+
+
+
+
+
+
+
+
+## Indeterminate
+
+
+
+
+
+
+
+
+
+
+
+
+## Custom Animation
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## Native Alternative
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/rating-group.mdx b/sites/skeleton.dev/src/content/docs/framework-components/rating-group.mdx
new file mode 100644
index 0000000000..87ba6e45ca
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/rating-group.mdx
@@ -0,0 +1,120 @@
+---
+title: Rating Group
+description: Rating Group allows users to rate something
+---
+
+import DefaultReact from '@/components/examples/framework-components/rating-group/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/rating-group/react/default?raw';
+
+import HalfReact from '@/components/examples/framework-components/rating-group/react/half';
+import HalfReactRaw from '@/components/examples/framework-components/rating-group/react/half?raw';
+
+import CustomIconsReact from '@/components/examples/framework-components/rating-group/react/custom-icons';
+import CustomIconsReactRaw from '@/components/examples/framework-components/rating-group/react/custom-icons?raw';
+
+import LabelReact from '@/components/examples/framework-components/rating-group/react/label';
+import LabelReactRaw from '@/components/examples/framework-components/rating-group/react/label?raw';
+
+import DisabledReact from '@/components/examples/framework-components/rating-group/react/disabled';
+import DisabledReactRaw from '@/components/examples/framework-components/rating-group/react/disabled?raw';
+
+import DirReact from '@/components/examples/framework-components/rating-group/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/rating-group/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/rating-group/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/rating-group/svelte/default.svelte?raw';
+
+import HalfSvelte from '@/components/examples/framework-components/rating-group/svelte/half.svelte';
+import HalfSvelteRaw from '@/components/examples/framework-components/rating-group/svelte/half.svelte?raw';
+
+import CustomIconsSvelte from '@/components/examples/framework-components/rating-group/svelte/custom-icons.svelte';
+import CustomIconsSvelteRaw from '@/components/examples/framework-components/rating-group/svelte/custom-icons.svelte?raw';
+
+import LabelSvelte from '@/components/examples/framework-components/rating-group/svelte/label.svelte';
+import LabelSvelteRaw from '@/components/examples/framework-components/rating-group/svelte/label.svelte?raw';
+
+import DisabledSvelte from '@/components/examples/framework-components/rating-group/svelte/disabled.svelte';
+import DisabledSvelteRaw from '@/components/examples/framework-components/rating-group/svelte/disabled.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/rating-group/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/rating-group/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Allow Half
+
+
+
+
+
+
+
+
+
+
+
+
+## Custom Icons
+
+
+
+
+
+
+
+
+
+
+
+
+## Label
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/segmented-control.mdx b/sites/skeleton.dev/src/content/docs/framework-components/segmented-control.mdx
new file mode 100644
index 0000000000..6cd29023bb
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/segmented-control.mdx
@@ -0,0 +1,106 @@
+---
+title: Segmented Control
+description: Capture input for a limited set of options.
+---
+
+import DefaultReact from '@/components/examples/framework-components/segmented-control/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/segmented-control/react/default?raw';
+
+import ControlledReact from '@/components/examples/framework-components/segmented-control/react/controlled';
+import ControlledReactRaw from '@/components/examples/framework-components/segmented-control/react/controlled?raw';
+
+import IconsReact from '@/components/examples/framework-components/segmented-control/react/icons';
+import IconsReactRaw from '@/components/examples/framework-components/segmented-control/react/icons?raw';
+
+import OrientationReact from '@/components/examples/framework-components/segmented-control/react/orientation';
+import OrientationReactRaw from '@/components/examples/framework-components/segmented-control/react/orientation?raw';
+
+import ReadOnlyReact from '@/components/examples/framework-components/segmented-control/react/read-only';
+import ReadOnlyReactRaw from '@/components/examples/framework-components/segmented-control/react/read-only?raw';
+
+import DisabledReact from '@/components/examples/framework-components/segmented-control/react/disabled';
+import DisabledReactRaw from '@/components/examples/framework-components/segmented-control/react/disabled?raw';
+
+import DisabledItemReact from '@/components/examples/framework-components/segmented-control/react/disabled-item';
+import DisabledItemReactRaw from '@/components/examples/framework-components/segmented-control/react/disabled-item?raw';
+
+import DirReact from '@/components/examples/framework-components/segmented-control/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/segmented-control/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/segmented-control/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/default.svelte?raw';
+
+import ControlledSvelte from '@/components/examples/framework-components/segmented-control/svelte/controlled.svelte';
+import ControlledSvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/controlled.svelte?raw';
+
+import IconsSvelte from '@/components/examples/framework-components/segmented-control/svelte/icons.svelte';
+import IconsSvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/icons.svelte?raw';
+
+import OrientationSvelte from '@/components/examples/framework-components/segmented-control/svelte/orientation.svelte';
+import OrientationSvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/orientation.svelte?raw';
+
+import ReadOnlySvelte from '@/components/examples/framework-components/segmented-control/svelte/read-only.svelte';
+import ReadOnlySvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/read-only.svelte?raw';
+
+import DisabledSvelte from '@/components/examples/framework-components/segmented-control/svelte/disabled.svelte';
+import DisabledSvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/disabled.svelte?raw';
+
+import DisabledItemSvelte from '@/components/examples/framework-components/segmented-control/svelte/disabled-item.svelte';
+import DisabledItemSvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/disabled-item.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/segmented-control/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/segmented-control/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Controlled
+
+
+
+
+
+
+
+
+
+
+
+
+## Icons
+
+
+
+
+
+
+
+
+
+
+
+
+## Orientation
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/slider.mdx b/sites/skeleton.dev/src/content/docs/framework-components/slider.mdx
new file mode 100644
index 0000000000..94ce4b4f1f
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/slider.mdx
@@ -0,0 +1,120 @@
+---
+title: Slider
+description: Capture input from a range of values.
+---
+
+import DefaultReact from '@/components/examples/framework-components/slider/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/slider/react/default?raw';
+
+import ColorReact from '@/components/examples/framework-components/slider/react/color';
+import ColorReactRaw from '@/components/examples/framework-components/slider/react/color?raw';
+
+import DisabledReact from '@/components/examples/framework-components/slider/react/disabled';
+import DisabledReactRaw from '@/components/examples/framework-components/slider/react/disabled?raw';
+
+import ReadonlyReact from '@/components/examples/framework-components/slider/react/readonly';
+import ReadonlyReactRaw from '@/components/examples/framework-components/slider/react/readonly?raw';
+
+import MultipleThumbsReact from '@/components/examples/framework-components/slider/react/multiple-thumbs';
+import MultipleThumbsReactRaw from '@/components/examples/framework-components/slider/react/multiple-thumbs?raw';
+
+import DirReact from '@/components/examples/framework-components/slider/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/slider/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/slider/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/slider/svelte/default.svelte?raw';
+
+import ColorSvelte from '@/components/examples/framework-components/slider/svelte/color.svelte';
+import ColorSvelteRaw from '@/components/examples/framework-components/slider/svelte/color.svelte?raw';
+
+import DisabledSvelte from '@/components/examples/framework-components/slider/svelte/disabled.svelte';
+import DisabledSvelteRaw from '@/components/examples/framework-components/slider/svelte/disabled.svelte?raw';
+
+import ReadonlySvelte from '@/components/examples/framework-components/slider/svelte/readonly.svelte';
+import ReadonlySvelteRaw from '@/components/examples/framework-components/slider/svelte/readonly.svelte?raw';
+
+import MultipleThumbsSvelte from '@/components/examples/framework-components/slider/svelte/multiple-thumbs.svelte';
+import MultipleThumbsSvelteRaw from '@/components/examples/framework-components/slider/svelte/multiple-thumbs.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/slider/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/slider/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Color
+
+
+
+
+
+
+
+
+
+
+
+
+## Disabled
+
+
+
+
+
+
+
+
+
+
+
+
+## Read-Only
+
+
+
+
+
+
+
+
+
+
+
+
+## Multiple Thumbs
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/switch.mdx b/sites/skeleton.dev/src/content/docs/framework-components/switch.mdx
new file mode 100644
index 0000000000..cd3fd81763
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/switch.mdx
@@ -0,0 +1,103 @@
+---
+title: Switch
+description: Toggle between two states, such as on/off.
+---
+
+import DefaultReact from '@/components/examples/framework-components/switch/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/switch/react/default?raw';
+
+import ColorsReact from '@/components/examples/framework-components/switch/react/colors';
+import ColorsReactRaw from '@/components/examples/framework-components/switch/react/colors?raw';
+
+import ListReact from '@/components/examples/framework-components/switch/react/list';
+import ListReactRaw from '@/components/examples/framework-components/switch/react/list?raw';
+
+import ThumbIconsReact from '@/components/examples/framework-components/switch/react/thumb-icons';
+import ThumbIconsReactRaw from '@/components/examples/framework-components/switch/react/thumb-icons?raw';
+
+import DirReact from '@/components/examples/framework-components/switch/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/switch/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/switch/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/switch/svelte/default.svelte?raw';
+
+import ColorsSvelte from '@/components/examples/framework-components/switch/svelte/colors.svelte';
+import ColorsSvelteRaw from '@/components/examples/framework-components/switch/svelte/colors.svelte?raw';
+
+import ListSvelte from '@/components/examples/framework-components/switch/svelte/list.svelte';
+import ListSvelteRaw from '@/components/examples/framework-components/switch/svelte/list.svelte?raw';
+
+import ThumbIconsSvelte from '@/components/examples/framework-components/switch/svelte/thumb-icons.svelte';
+import ThumbIconsSvelteRaw from '@/components/examples/framework-components/switch/svelte/thumb-icons.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/switch/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/switch/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Checked Color
+
+Use the [Tailwind data attribute syntax](https://tailwindcss.com/docs/hover-focus-and-other-states#data-attributes) to target the active state using `data-[state=checked]`
+
+
+
+
+
+
+
+
+
+
+
+
+## List
+
+
+
+
+
+
+
+
+
+
+
+
+## Icons
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/tabs.mdx b/sites/skeleton.dev/src/content/docs/framework-components/tabs.mdx
new file mode 100644
index 0000000000..0d29313b42
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/tabs.mdx
@@ -0,0 +1,82 @@
+---
+title: Tabs
+description: Use tabs to quickly switch between different views and pages.
+---
+
+import DefaultReact from '@/components/examples/framework-components/tabs/react/default.tsx';
+import DefaultReactRaw from '@/components/examples/framework-components/tabs/react/default.tsx?raw';
+
+import FluidReact from '@/components/examples/framework-components/tabs/react/fluid';
+import FluidReactRaw from '@/components/examples/framework-components/tabs/react/fluid.tsx?raw';
+
+import VerticalReact from '@/components/examples/framework-components/tabs/react/vertical';
+import VerticalReactRaw from '@/components/examples/framework-components/tabs/react/vertical.tsx?raw';
+
+import DirReact from '@/components/examples/framework-components/tabs/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/tabs/react/dir.tsx?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/tabs/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/tabs/svelte/default.svelte?raw';
+
+import FluidSvelte from '@/components/examples/framework-components/tabs/svelte/fluid.svelte';
+import FluidSvelteRaw from '@/components/examples/framework-components/tabs/svelte/fluid.svelte?raw';
+
+import VerticalSvelte from '@/components/examples/framework-components/tabs/svelte/vertical.svelte';
+import VerticalSvelteRaw from '@/components/examples/framework-components/tabs/svelte/vertical.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/tabs/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/tabs/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Fluid Width
+
+
+
+
+
+
+
+
+
+
+
+
+## Vertical
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/tags-input.mdx b/sites/skeleton.dev/src/content/docs/framework-components/tags-input.mdx
new file mode 100644
index 0000000000..60ec8b9a96
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/tags-input.mdx
@@ -0,0 +1,122 @@
+---
+title: Tags Input
+description: Allows input of multiple values.
+---
+
+import DefaultReact from '@/components/examples/framework-components/tags-input/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/tags-input/react/default?raw';
+
+import ControlledReact from '@/components/examples/framework-components/tags-input/react/default';
+import ControlledReactRaw from '@/components/examples/framework-components/tags-input/react/default?raw';
+
+import CustomIconReact from '@/components/examples/framework-components/tags-input/react/custom-icon';
+import CustomIconReactRaw from '@/components/examples/framework-components/tags-input/react/custom-icon?raw';
+
+import ColorReact from '@/components/examples/framework-components/tags-input/react/color';
+import ColorReactRaw from '@/components/examples/framework-components/tags-input/react/color?raw';
+
+import ProviderReact from '@/components/examples/framework-components/tags-input/react/provider';
+import ProviderReactRaw from '@/components/examples/framework-components/tags-input/react/provider?raw';
+
+import DirReact from '@/components/examples/framework-components/tags-input/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/tags-input/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/tags-input/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/tags-input/svelte/default.svelte?raw';
+
+import ControlledSvelte from '@/components/examples/framework-components/tags-input/svelte/default.svelte';
+import ControlledSvelteRaw from '@/components/examples/framework-components/tags-input/svelte/default.svelte?raw';
+
+import CustomIconSvelte from '@/components/examples/framework-components/tags-input/svelte/custom-icon.svelte';
+import CustomIconSvelteRaw from '@/components/examples/framework-components/tags-input/svelte/custom-icon.svelte?raw';
+
+import ColorSvelte from '@/components/examples/framework-components/tags-input/svelte/color.svelte';
+import ColorSvelteRaw from '@/components/examples/framework-components/tags-input/svelte/color.svelte?raw';
+
+import ProviderSvelte from '@/components/examples/framework-components/tags-input/svelte/provider.svelte';
+import ProviderSvelteRaw from '@/components/examples/framework-components/tags-input/svelte/provider.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/tags-input/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/tags-input/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Controlled
+
+
+
+
+
+
+
+
+
+
+
+
+## Custom Icon
+
+
+
+
+
+
+
+
+
+
+
+
+## Color
+
+
+
+
+
+
+
+
+
+
+
+
+## Provider Pattern
+
+Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the inner component APIs.
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/toast.mdx b/sites/skeleton.dev/src/content/docs/framework-components/toast.mdx
new file mode 100644
index 0000000000..f335a595ab
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/toast.mdx
@@ -0,0 +1,143 @@
+---
+title: Toast
+description: Display brief messages to users.
+---
+
+import DefaultReact from '@/components/examples/framework-components/toast/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/toast/react/default?raw';
+
+import PlacementReact from '@/components/examples/framework-components/toast/react/placement';
+import PlacementReactRaw from '@/components/examples/framework-components/toast/react/placement?raw';
+
+import ActionReact from '@/components/examples/framework-components/toast/react/action';
+import ActionReactRaw from '@/components/examples/framework-components/toast/react/action?raw';
+
+import ClosableReact from '@/components/examples/framework-components/toast/react/closable';
+import ClosableReactRaw from '@/components/examples/framework-components/toast/react/closable?raw';
+
+import MetaReact from '@/components/examples/framework-components/toast/react/meta';
+import MetaReactRaw from '@/components/examples/framework-components/toast/react/meta?raw';
+
+import PromiseReact from '@/components/examples/framework-components/toast/react/promise';
+import PromiseReactRaw from '@/components/examples/framework-components/toast/react/promise?raw';
+
+import TypeReact from '@/components/examples/framework-components/toast/react/type';
+import TypeReactRaw from '@/components/examples/framework-components/toast/react/type?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/toast/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/toast/svelte/default.svelte?raw';
+
+import PlacementSvelte from '@/components/examples/framework-components/toast/svelte/placement.svelte';
+import PlacementSvelteRaw from '@/components/examples/framework-components/toast/svelte/placement.svelte?raw';
+
+import ActionSvelte from '@/components/examples/framework-components/toast/svelte/action.svelte';
+import ActionSvelteRaw from '@/components/examples/framework-components/toast/svelte/action.svelte?raw';
+
+import ClosableSvelte from '@/components/examples/framework-components/toast/svelte/closable.svelte';
+import ClosableSvelteRaw from '@/components/examples/framework-components/toast/svelte/closable.svelte?raw';
+
+import MetaSvelte from '@/components/examples/framework-components/toast/svelte/meta.svelte';
+import MetaSvelteRaw from '@/components/examples/framework-components/toast/svelte/meta.svelte?raw';
+
+import PromiseSvelte from '@/components/examples/framework-components/toast/svelte/promise.svelte';
+import PromiseSvelteRaw from '@/components/examples/framework-components/toast/svelte/promise.svelte?raw';
+
+import TypeSvelte from '@/components/examples/framework-components/toast/svelte/type.svelte';
+import TypeSvelteRaw from '@/components/examples/framework-components/toast/svelte/type.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Usage
+
+This component acts as a Singleton - meaning you only implement a single instance (typically at the root scope of your app) and then reuse it over and over. To do this, implement the `` at the root scope of your app (the root layout), and use a shared `createToaster()` instance to trigger messages to that group from anywhere in your application.
+
+## Type
+
+
+
+
+
+
+
+
+
+
+
+
+## Placement
+
+
+
+
+
+
+
+
+
+
+
+
+## Action
+
+
+
+
+
+
+
+
+
+
+
+
+## Closable
+
+
+
+
+
+
+
+
+
+
+
+
+## Meta
+
+
+
+
+
+
+
+
+
+
+
+
+## Promise
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/toggle-group.mdx b/sites/skeleton.dev/src/content/docs/framework-components/toggle-group.mdx
new file mode 100644
index 0000000000..73d0910227
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/toggle-group.mdx
@@ -0,0 +1,86 @@
+---
+title: Toggle Group
+description: Grouped buttons for toggling option states.
+---
+
+import DefaultReact from '@/components/examples/framework-components/toggle-group/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/toggle-group/react/default?raw';
+
+import ControlledReact from '@/components/examples/framework-components/toggle-group/react/controlled';
+import ControlledReactRaw from '@/components/examples/framework-components/toggle-group/react/controlled?raw';
+
+import OrientationReact from '@/components/examples/framework-components/toggle-group/react/orientation';
+import OrientationReactRaw from '@/components/examples/framework-components/toggle-group/react/orientation?raw';
+
+import DirReact from '@/components/examples/framework-components/toggle-group/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/toggle-group/react/dir?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/toggle-group/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/toggle-group/svelte/default.svelte?raw';
+
+import ControlledSvelte from '@/components/examples/framework-components/toggle-group/svelte/controlled.svelte';
+import ControlledSvelteRaw from '@/components/examples/framework-components/toggle-group/svelte/controlled.svelte?raw';
+
+import OrientationSvelte from '@/components/examples/framework-components/toggle-group/svelte/orientation.svelte';
+import OrientationSvelteRaw from '@/components/examples/framework-components/toggle-group/svelte/orientation.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/toggle-group/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/toggle-group/svelte/dir.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Controlled
+
+
+
+
+
+
+
+
+
+
+
+
+## Orientation
+
+Use the `orientation` prop to change the layout direction of the Toggle Group.
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+Use the `dir` prop to change the text direction (LTR/RTL).
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/tooltip.mdx b/sites/skeleton.dev/src/content/docs/framework-components/tooltip.mdx
new file mode 100644
index 0000000000..5d53c183d8
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/tooltip.mdx
@@ -0,0 +1,124 @@
+---
+title: Tooltip
+description: A floating label that appears on hover or focus, providing additional context.
+---
+
+import DefaultReact from '@/components/examples/framework-components/tooltip/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/tooltip/react/default?raw';
+
+import ProgrammaticReact from '@/components/examples/framework-components/tooltip/react/programmatic';
+import ProgrammaticReactRaw from '@/components/examples/framework-components/tooltip/react/programmatic?raw';
+
+import ArrowReact from '@/components/examples/framework-components/tooltip/react/arrow';
+import ArrowReactRaw from '@/components/examples/framework-components/tooltip/react/arrow?raw';
+
+import ZIndexReact from '@/components/examples/framework-components/tooltip/react/z-index';
+import ZIndexReactRaw from '@/components/examples/framework-components/tooltip/react/z-index?raw';
+
+import DirReact from '@/components/examples/framework-components/tooltip/react/dir';
+import DirReactRaw from '@/components/examples/framework-components/tooltip/react/dir?raw';
+
+import HeadlessReact from '@/components/examples/framework-components/tooltip/react/headless';
+import HeadlessReactRaw from '@/components/examples/framework-components/tooltip/react/headless?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/tooltip/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/tooltip/svelte/default.svelte?raw';
+
+import ProgrammaticSvelte from '@/components/examples/framework-components/tooltip/svelte/programmatic.svelte';
+import ProgrammaticSvelteRaw from '@/components/examples/framework-components/tooltip/svelte/programmatic.svelte?raw';
+
+import ArrowSvelte from '@/components/examples/framework-components/tooltip/svelte/arrow.svelte';
+import ArrowSvelteRaw from '@/components/examples/framework-components/tooltip/svelte/arrow.svelte?raw';
+
+import ZIndexSvelte from '@/components/examples/framework-components/tooltip/svelte/z-index.svelte';
+import ZIndexSvelteRaw from '@/components/examples/framework-components/tooltip/svelte/z-index.svelte?raw';
+
+import DirSvelte from '@/components/examples/framework-components/tooltip/svelte/dir.svelte';
+import DirSvelteRaw from '@/components/examples/framework-components/tooltip/svelte/dir.svelte?raw';
+
+import HeadlessSvelte from '@/components/examples/framework-components/tooltip/svelte/headless.svelte';
+import HeadlessSvelteRaw from '@/components/examples/framework-components/tooltip/svelte/headless.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Arrow
+
+You may optionally enable arrows via the `Arrow` and `ArrowTip` component parts. Note that Zag.js opts to style these with CSS custom properties, which can be adjusted using a `style` attribute.
+
+
+
+
+
+
+
+
+
+
+
+
+## Z-Index
+
+
+
+
+
+
+
+
+
+
+
+
+## Headless
+
+
+
+
+
+
+
+
+
+
+
+
+## Programmatic Control
+
+This is made possible via the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern).
+
+
+
+
+
+
+
+
+
+
+
+
+## Direction
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/framework-components/tree-view.mdx b/sites/skeleton.dev/src/content/docs/framework-components/tree-view.mdx
new file mode 100644
index 0000000000..4b989afc48
--- /dev/null
+++ b/sites/skeleton.dev/src/content/docs/framework-components/tree-view.mdx
@@ -0,0 +1,106 @@
+---
+title: Tree View
+description: Used to display hierarchical data.
+---
+
+import DefaultReact from '@/components/examples/framework-components/tree-view/react/default';
+import DefaultReactRaw from '@/components/examples/framework-components/tree-view/react/default?raw';
+
+import ControlledReact from '@/components/examples/framework-components/tree-view/react/default';
+import ControlledReactRaw from '@/components/examples/framework-components/tree-view/react/default?raw';
+
+import MultipleSelectionReact from '@/components/examples/framework-components/tree-view/react/multiple-selection';
+import MultipleSelectionReactRaw from '@/components/examples/framework-components/tree-view/react/multiple-selection?raw';
+
+import CollapseExpandReact from '@/components/examples/framework-components/tree-view/react/collapse-expand';
+import CollapseExpandReactRaw from '@/components/examples/framework-components/tree-view/react/collapse-expand?raw';
+
+import LazyLoadingReact from '@/components/examples/framework-components/tree-view/react/lazy-loading';
+import LazyLoadingReactRaw from '@/components/examples/framework-components/tree-view/react/lazy-loading?raw';
+
+import DefaultSvelte from '@/components/examples/framework-components/tree-view/svelte/default.svelte';
+import DefaultSvelteRaw from '@/components/examples/framework-components/tree-view/svelte/default.svelte?raw';
+
+import ControlledSvelte from '@/components/examples/framework-components/tree-view/svelte/default.svelte';
+import ControlledSvelteRaw from '@/components/examples/framework-components/tree-view/svelte/default.svelte?raw';
+
+import MultipleSelectionSvelte from '@/components/examples/framework-components/tree-view/svelte/multiple-selection.svelte';
+import MultipleSelectionSvelteRaw from '@/components/examples/framework-components/tree-view/svelte/multiple-selection.svelte?raw';
+
+import CollapseExpandSvelte from '@/components/examples/framework-components/tree-view/svelte/collapse-expand.svelte';
+import CollapseExpandSvelteRaw from '@/components/examples/framework-components/tree-view/svelte/collapse-expand.svelte?raw';
+
+import LazyLoadingSvelte from '@/components/examples/framework-components/tree-view/svelte/lazy-loading.svelte';
+import LazyLoadingSvelteRaw from '@/components/examples/framework-components/tree-view/svelte/lazy-loading.svelte?raw';
+
+
+
+
+
+
+
+
+
+
+
+
+## Controlled
+
+
+
+
+
+
+
+
+
+
+
+
+## Multiple Selection
+
+- Windows: Hold Ctrl + left click with mouse.
+- MacOS: Hold ⌘ + left click with mouse.
+
+
+
+
+
+
+
+
+
+
+
+
+## Collapse and Expand
+
+Use the [Provider Pattern](/docs/get-started/fundamentals#provider-pattern) to gain access to the `collapse` and `expand` methods on the `TreeView` instance.
+
+
+
+
+
+
+
+
+
+
+
+
+## Lazy Loading
+
+
+
+
+
+
+
+
+
+
+
+
+## API Reference
+
+
diff --git a/sites/skeleton.dev/src/content/docs/get-started/core-api.mdx b/sites/skeleton.dev/src/content/docs/get-started/core-api.mdx
index 23f3da456e..04269fc6fa 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/core-api.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/core-api.mdx
@@ -1,23 +1,14 @@
---
title: Core API
description: Learn about the specific features Skeleton introduces to Tailwind.
-showDocsUrl: false
-srcCore: '/'
+summary: The heart of Skeleton is our framework agnostic core package. This adapts and extends Tailwind to introduce our global styles, color system, typography, and more. This section details all available Skeleton-provided utility classes and theme properties.
+references:
+ source: 'https://github.com/skeletonlabs/skeleton/blob/main/packages/skeleton/src'
order: 30
---
-import NavGrid from '@/components/ui/nav-grid.astro';
-
-{
-
-
- The heart of Skeleton is our framework agnostic core package. This adapts and extends Tailwind to introduce our global styles, color
- system, typography, and more. This section details all available Skeleton-provided utility classes and theme properties.
-
-
-}
-
----
+import NavigationGrid from '@/components/ui/navigation-grid.astro';
+import { getRelativeDocsUrl } from '@/modules/framework';
## @base
@@ -169,7 +160,7 @@ Sets the default width for border, divide, and ring width to match the active th
Allow you to style semantic HTML elements with utility classes.
-
+ doc.id.includes('tailwind/')} class="md:grid-cols-2" />
## @variant
@@ -196,7 +187,7 @@ Enables you to target and style elements for a particular theme.
Provides a canned set of styles for use with buttons, badges, cards, and more.
-
+
Browse Presets
@@ -206,7 +197,7 @@ Provides a canned set of styles for use with buttons, badges, cards, and more.
Provides a hand curated set of themes for Skeleton.
-
+
Browse Themes
diff --git a/sites/skeleton.dev/src/content/docs/get-started/fundamentals.mdx b/sites/skeleton.dev/src/content/docs/get-started/fundamentals.mdx
index da69467f31..ea2be99f2a 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/fundamentals.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/fundamentals.mdx
@@ -4,7 +4,7 @@ description: An introduction to the core concepts of Skeleton.
order: 20
---
-import NavGrid from '@/components/ui/nav-grid.astro';
+import NavigationGrid from '@/components/ui/navigation-grid.astro';
{
@@ -23,15 +23,11 @@ import NavGrid from '@/components/ui/nav-grid.astro';
A fully featured [Figma UI Kit](/figma) is available to designers, allowing them to quickly draft visual concept of your project.
-### Iconography
-
-Skeleton is icon agnostic, meaning you may bring your own iconography solution. However, we highly recommend [Lucide](https://lucide.dev/) and utilize it for all examples in our documentation. Refer to our integration guides for [React](/docs/integrations/iconography/react) and [Svelte](/docs/integrations/iconography/svelte).
-
### Core Features
The following features fall under the umbrella of our design system. Provided via the Skeleton core.
-
+ doc.id.includes('design/')} class="md:grid-cols-2" />
---
@@ -39,7 +35,7 @@ The following features fall under the umbrella of our design system. Provided vi
Tailwind components that act as primitives for creating complex interfaces. Provided via the Skeleton core.
-
+ doc.id.includes('tailwind/')} class="md:grid-cols-2" />
---
diff --git a/sites/skeleton.dev/src/content/docs/get-started/installation.mdx b/sites/skeleton.dev/src/content/docs/get-started/installation.mdx
index 9d13a8a425..9de7426f2c 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/installation.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/installation.mdx
@@ -4,11 +4,11 @@ description: Learn how to install and setup Skeleton for your project.
order: 10
---
-import NavGrid from '@/components/ui/nav-grid.astro';
+import NavigationGrid from '@/components/ui/navigation-grid.astro';
-{/* --- */}
+## Guides
-
+ doc.id.includes('installation/')} class="md:grid-cols-2" />
## Mixing UI Libraries
diff --git a/sites/skeleton.dev/src/content/docs/get-started/installation/astro.mdx b/sites/skeleton.dev/src/content/docs/get-started/installation/astro.mdx
index a293624cfd..25e24b3804 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/installation/astro.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/installation/astro.mdx
@@ -7,8 +7,6 @@ order: 1000
import ProcessStep from '@/components/ui/process-step.astro';
import Process from '@/components/ui/process.astro';
-{/* --- */}
-
## Requirements
| Tooling | Minimum Supported |
@@ -24,58 +22,86 @@ Learn how to install the Skeleton core into your Astro project. We'll cover usin
+
### Create a Project
+
Start by creating a new Astro project. We recommend selecting all default options.
- ```console
+
+ ```bash
npm create astro@latest --add tailwind my-skeleton-app
- cd my-skeleton-app
+ cd my-skeleton-app
```
+
+
### Install Skeleton
+
Install the Skeleton core package for the Tailwind plugin.
- ```console
+
+ ```bash
npm i -D @skeletonlabs/skeleton
```
+
### Configure Tailwind
- Create a global styleshseet in `/src/styles/global.css` and add import the following.
- ```css title="global.css"
+
+ Create a global stylesheet in `/src/styles/global.css` and add import the following.
+
+ ```css
@import 'tailwindcss';
- @import '@skeletonlabs/skeleton';
- @import '@skeletonlabs/skeleton/themes/cerberus';
+ @import '@skeletonlabs/skeleton'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton/themes/cerberus'; /* [!code ++] */
```
+
+
### Remove Default Content and Styles
+
We recommend you open `/src/components/welcome.astro` and remove all default HTML and CSS. Here's a simple starter layout.
+
```astro
- ---
+ ---
+ import '../styles/global.css';
+
const framework = 'Astro';
- import '../styles/global.css'
---
+
Hello {framework}
This page is working.
Example Button
```
+
+
### Set Active Theme
+
Open `/src/layouts/Layout.astro`, then set the `data-theme` attribute on the HTML tag to define the active theme.
- ```html title="layouts/Layout.astro" "data-theme="cerberus""
- ...
+
+ ```html
+
+
+
+
```
+
+
### Run the Project
+
Start the dev server using the following command.
- ```console
+
+ ```bash
npm run dev
```
+
@@ -91,78 +117,103 @@ While Astro can support [multiple Frontend frameworks](https://docs.astro.build/
### Astro Framework Packages
+
Install only the Astro framework(s) packages you intend to use.
- ```console
+
+ ```bash
npx astro add react
```
- https://docs.astro.build/en/guides/integrations-guide/react/
- ```console
- npx astro add svelte
+
+ https://docs.astro.build/en/guides/integrations-guide/react/
+
+ ```bash
+ npx astro add svelte
```
- https://docs.astro.build/en/guides/integrations-guide/svelte/
+
+ https://docs.astro.build/en/guides/integrations-guide/svelte/
+
-
+
+
### Skeleton Framework Packages
+
Install only the Skeleton framework(s) packages you intend to use.
- ```console
+
+ ```bash
@skeletonlabs/skeleton-react
```
- ```console
- @skeletonlabs/skeleton-svelte
+
+ ```bash
+ @skeletonlabs/skeleton-svelte
```
+
+
### Add Style Imports
-
+
Import the stylesheets for the framework(s) you intend to use in your global stylesheet created above.
- ```css title="global.css"
- @import '@skeletonlabs/skeleton-react';
- @import '@skeletonlabs/skeleton-svelte';
+
+ ```css
+ @import '@skeletonlabs/skeleton-react'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton-svelte'; /* [!code ++] */
```
+
### Using Wrapper Components
+
In most cases, frontend framework components may not be fully functional if used directly within `.astro` files. To overcome this, you may utilize a wrapper component of that framework. Here's a demo using the Skeleton Avatar component as an example.
- #### React
- ```tsx title="ReactAvatarWrapper.tsx"
- import React from 'react';
+
+ #### React
+
+ ```tsx
import { Avatar } from '@skeletonlabs/skeleton-react';
- export const ReactAvatarWrapper: React.FC = () => {
+ export function AvatarWrapper() {
const imgSrc = '...';
return ;
- };
+ }
```
- ```astro title="page.astro"
+
+ ```astro
---
- import { ReactAvatarWrapper } from '@/components/ReactAvatarWrapper';
+ import { AvatarWrapper } from '@/components/avatar-wrapper';
---
-
+
```
+
#### Svelte
- ```svelte title="SvelteAvatarWrapper.svelte"
+
+ ```svelte
```
- ```astro title="page.astro"
+
+ ```astro
---
- import { SvelteAvatarWrapper } from '@/components/SvelteAvatarWrapper';
+ import AvatarWrapper from '@/components/avatar-wrapper.svelte';
---
-
+
```
+
+
### Run the Project
+
Start the dev server using the following command.
- ```console
+
+ ```bash
npm run dev
```
+
diff --git a/sites/skeleton.dev/src/content/docs/get-started/installation/nextjs.mdx b/sites/skeleton.dev/src/content/docs/get-started/installation/nextjs.mdx
index 4e454dfc02..b21fba4540 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/installation/nextjs.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/installation/nextjs.mdx
@@ -7,8 +7,6 @@ order: 0
import ProcessStep from '@/components/ui/process-step.astro';
import Process from '@/components/ui/process.astro';
-{/* --- */}
-
## Requirements
| Tooling | Minimum Supported |
@@ -21,44 +19,67 @@ import Process from '@/components/ui/process.astro';
+
### Create a Project
+
Use the [Next.js CLI](https://nextjs.org/docs/app/getting-started/installation) to scaffold a new project.
- ```console
- npm create next-app@latest my-skeleton-app
+
+ ```bash
+ npm create next-app@latest my-skeleton-app
cd my-skeleton-app
```
+
+
### Install Skeleton
+
Install the Skeleton core and React component packages.
- ```console
+
+ ```bash
npm i -D @skeletonlabs/skeleton @skeletonlabs/skeleton-react
```
+
+
### Configure Tailwind
+
Open your global stylesheet in `/src/app/globals.css` and add the following imports:
- ```css title="globals.css" {3-7}
+
+ ```css
@import 'tailwindcss';
- @import '@skeletonlabs/skeleton';
- @import '@skeletonlabs/skeleton-react';
- @import '@skeletonlabs/skeleton/themes/cerberus';
+ @import '@skeletonlabs/skeleton'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton-react'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton/themes/cerberus'; /* [!code ++] */
```
+
+
### Set Active Theme
+
Open `/src/app/layout.tsx`, then set the `data-theme` attribute on the HTML tag to define the active theme.
- ```html title="layout.tsx" "data-theme="cerberus""
- ...
+
+ ```html
+
+
+
+
```
+
+
### Done
+
Start the dev server using the following command.
- ```console
+
+ ```bash
npm run dev
```
+
diff --git a/sites/skeleton.dev/src/content/docs/get-started/installation/other.mdx b/sites/skeleton.dev/src/content/docs/get-started/installation/other.mdx
index 8c6b3738c7..f3caa48990 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/installation/other.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/installation/other.mdx
@@ -7,8 +7,6 @@ order: 1000
import ProcessStep from '@/components/ui/process-step.astro';
import Process from '@/components/ui/process.astro';
-{/* --- */}
-
## Requirements
Skeleton's [Core Package](/docs/get-started/core-api) is framework agnostic, meaning many of the Design System and Tailwind-centric features can used on any number of frameworks. This includes everything _except_ components. In order to install Skeleton for additional framework, your app must be able to support the following:
@@ -24,42 +22,64 @@ The exact instructions for installing Skeleton will differ per framework, howeve
+
### Create a Project
+
Scaffold your web-based application using any framework (such as [Nuxt](https://nuxt.com/), [SolidStart](https://start.solidjs.com/), [Laravel](https://laravel.com/), etc.)
+
+
### Install Tailwind
- Refer to the [official instructions](https://tailwindcss.com/docs/installation/framework-guides) for installing Tailwind on your framework of choice.
+
+ Refer to the [official instructions](https://tailwindcss.com/docs/installation/framework-guides) for installing Tailwind on your framework of choice.
+
+
### Install Skeleton
+
Install the Skeleton core package to gain access to most features - excluding Components.
- ```console
+
+ ```bash
npm i -D @skeletonlabs/skeleton
```
+
+
### Configure Tailwind
+
Locate your global stylesheet and append the following at the top of the file.
- ```css {3-5}
+
+ ```css
@import 'tailwindcss';
- @import '@skeletonlabs/skeleton';
- @import '@skeletonlabs/skeleton/themes/cerberus';
+ @import '@skeletonlabs/skeleton'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton/themes/cerberus'; /* [!code ++] */
```
+
+
### Set Active Theme
+
Open the file containing the `` tag for your project and set the `data-theme` attribute as follows.
- ```html "data-theme="cerberus""
+
+ ```html
+
- ...
+
```
+
+
### Run the Project
+
Start the dev server for your framework of choice.
+
diff --git a/sites/skeleton.dev/src/content/docs/get-started/installation/sveltekit.mdx b/sites/skeleton.dev/src/content/docs/get-started/installation/sveltekit.mdx
index bb0df67fb3..3cb30dd047 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/installation/sveltekit.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/installation/sveltekit.mdx
@@ -7,8 +7,6 @@ order: 10
import ProcessStep from '@/components/ui/process-step.astro';
import Process from '@/components/ui/process.astro';
-{/* --- */}
-
## Requirements
| Tooling | Minimum Supported |
@@ -21,45 +19,69 @@ import Process from '@/components/ui/process.astro';
+
### Create a Project
+
Use the [Svelte CLI](https://svelte.dev/docs/kit/creating-a-project) to generate a new SvelteKit project.
- ```console
+
+ ```bash
npx sv create --types ts my-skeleton-app
- cd my-skeleton-app
+ cd my-skeleton-app
```
- > NOTE: If you did not select the options to add Tailwind, use `npx sv add tailwindcss` to add it retroactively.
+
+ > NOTE: If you did not select the options to add Tailwind, use `npx sv add tailwindcss` to add it retroactively.
+
+
### Install Skeleton
+
Install the Skeleton core and Svelte component packages.
- ```console
+
+ ```bash
npm i -D @skeletonlabs/skeleton @skeletonlabs/skeleton-svelte
```
+
- ### Configure Tailwind
+
+ ### Configure Tailwind
+
Open your global stylesheet in `/src/app.css` and add the following imports:
- ```css title="app.css" {3-7}
+
+ ```css
@import 'tailwindcss';
- @import '@skeletonlabs/skeleton';
- @import '@skeletonlabs/skeleton-svelte';
- @import '@skeletonlabs/skeleton/themes/cerberus';
+ @import '@skeletonlabs/skeleton'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton-svelte'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton/themes/cerberus'; /* [!code ++] */
```
+
+
### Set Active Theme
+
Open `/src/app.html`, then set the `data-theme` attribute on the HTML tag to define the active theme.
- ```html title="app.html" "data-theme="cerberus""
- ...
+
+ ```html
+
+
+
+
```
+
+
### Done
+
Start the dev server using the following command.
- ```console
+
+ ```bash
npm run dev
```
+
diff --git a/sites/skeleton.dev/src/content/docs/get-started/installation/vite-react.mdx b/sites/skeleton.dev/src/content/docs/get-started/installation/vite-react.mdx
index 3e548c3d09..8e9015bd90 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/installation/vite-react.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/installation/vite-react.mdx
@@ -7,8 +7,6 @@ order: 20
import ProcessStep from '@/components/ui/process-step.astro';
import Process from '@/components/ui/process.astro';
-{/* --- */}
-
## Requirements
| Tooling | Minimum Supported |
@@ -22,68 +20,94 @@ import Process from '@/components/ui/process.astro';
### Create a Project
+
Start by creating a new [Vite](https://vite.dev/guide/#scaffolding-your-first-vite-project) project. This will install React and Typescript.
- ```console
- npm create vite@latest
- - Set your project named as desired
- - Set React as the framework
- - Set Typescript as the variant
- cd {yourProjectName}
- npm install
+
+ ```bash
+ npm create vite@latest
+ - Set your project named as desired
+ - Set React as the framework
+ - Set Typescript as the variant
+ cd {yourProjectName}
+ npm install
```
+
+
### Install Skeleton
+
Install the Skeleton core and React component packages.
- ```console
+
+ ```bash
npm i -D @skeletonlabs/skeleton @skeletonlabs/skeleton-react
```
+
### Install Tailwind
+
Install Tailwind and and the Tailwind Vite plugin.
- ```console
+
+ ```bash
npm install tailwindcss @tailwindcss/vite
```
- Implement the plugin in `vite.config` in the root of your project.
- ```ts title="vite.config" {3} "tailwindcss()"
- import { defineConfig } from "vite";
- import react from "@vitejs/plugin-react";
- import tailwindcss from "@tailwindcss/vite";
+
+ Implement the plugin in `vite.config` in the root of your project.
+
+ ```ts
+ import { defineConfig } from "vite";
+ import react from "@vitejs/plugin-react";
+ import tailwindcss from "@tailwindcss/vite"; // [!code ++]
export default defineConfig({
plugins: [
- tailwindcss(),
+ tailwindcss(), // [!code ++]
react() // <-- Must come after Tailwind
],
});
```
+
+
### Configure Tailwind
- Open your global styleshset in `/src/index.css` and append the following at the top of the file.
- ```css title="index.css"
+
+ Open your global stylesheet in `/src/index.css` and append the following at the top of the file.
+
+ ```css
@import 'tailwindcss';
- @import '@skeletonlabs/skeleton';
- @import '@skeletonlabs/skeleton-react';
- @import '@skeletonlabs/skeleton/themes/cerberus';
+ @import '@skeletonlabs/skeleton'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton-react'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton/themes/cerberus'; /* [!code ++] */
```
+
+
### Set the Active Theme
+
Open `index.html`, then set the `data-theme` attribute on the HTML tag to define the active theme.
- ```html title="index.html" "data-theme="cerberus""
- ...
+ ```html
+
+
+
+
```
+
+
### Done
+
Start the dev server using the following command.
- ```console
+
+ ```bash
npm run dev
```
+
diff --git a/sites/skeleton.dev/src/content/docs/get-started/installation/vite-svelte.mdx b/sites/skeleton.dev/src/content/docs/get-started/installation/vite-svelte.mdx
index e570a71517..87b66695ee 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/installation/vite-svelte.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/installation/vite-svelte.mdx
@@ -7,8 +7,6 @@ order: 30
import ProcessStep from '@/components/ui/process-step.astro';
import Process from '@/components/ui/process.astro';
-{/* --- */}
-
## Requirements
| Tooling | Minimum Supported |
@@ -21,68 +19,97 @@ import Process from '@/components/ui/process.astro';
+
### Create a Project
+
Start by creating a new [Vite](https://vite.dev/guide/#scaffolding-your-first-vite-project) project. This will install Svelte and Typescript.
- ```console
+
+ ```bash
npm create vite@latest
- - Set your project named as desired
- - Set Svelte as the framework
- - Set Typescript as the variant
- cd {yourProjectName}
- npm install
+ - Set your project named as desired
+ - Set Svelte as the framework
+ - Set Typescript as the variant
+ cd {yourProjectName}
+ npm install
```
+
+
### Install Skeleton
+
Install the Skeleton core and Svelte component packages.
- ```console
+
+ ```bash
npm i -D @skeletonlabs/skeleton @skeletonlabs/skeleton-svelte
```
+
+
### Install Tailwind
+
Install Tailwind and and the Tailwind Vite plugin.
- ```console
+
+ ```bash
npm install tailwindcss @tailwindcss/vite
```
- Implement the plugin in `vite.config` in the root of your project.
- ```ts title="vite.config" {3} "tailwindcss()"
- import { defineConfig } from "vite";
- import svelte from "@vitejs/plugin-svelte";
- import tailwindcss from "@tailwindcss/vite";
+
+ Implement the plugin in `vite.config` in the root of your project.
+
+ ```ts
+ import { defineConfig } from "vite";
+ import svelte from "@vitejs/plugin-svelte";
+ import tailwindcss from "@tailwindcss/vite"; // [!code ++]
export default defineConfig({
plugins: [
- tailwindcss(),
+ tailwindcss(), // [!code ++]
svelte() // <-- Must come after Tailwind
],
});
```
+
+
### Configure Tailwind
- Open your global styleshset in `/src/app.css` and append the following at the top of the file.
- ```css title="app.css"
+
+ Open your global stylesheet in `/src/app.css` and append the following at the top of the file.
+
+ ```css
@import 'tailwindcss';
- @import '@skeletonlabs/skeleton';
- @import '@skeletonlabs/skeleton-svelte';
- @import '@skeletonlabs/skeleton/themes/cerberus';
+ @import '@skeletonlabs/skeleton'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton-svelte'; /* [!code ++] */
+ @import '@skeletonlabs/skeleton/themes/cerberus'; /* [!code ++] */
```
+
+
### Set the Active Theme
+
Open `index.html`, then set the `data-theme` attribute on the HTML tag to define the active theme.
- ```html title="index.html" "data-theme="cerberus""
- ...
+
+ ```html
+
+
+
+
```
+
+
### Done
+
Start the dev server using the following command.
- ```console
+
+ ```bash
npm run dev
```
+
diff --git a/sites/skeleton.dev/src/content/docs/get-started/introduction.mdx b/sites/skeleton.dev/src/content/docs/get-started/introduction.mdx
index d2d70a205c..ac7b8b2659 100644
--- a/sites/skeleton.dev/src/content/docs/get-started/introduction.mdx
+++ b/sites/skeleton.dev/src/content/docs/get-started/introduction.mdx
@@ -1,19 +1,49 @@
---
title: Introduction
-description: Skeleton integrates with Tailwind to provide an opinionated solution for generating adaptive design systems. Including easy to use components for your favorite web frameworks.
+description: Learn more about Skeleton and how it can serve you.
+summary: Skeleton provides a uniform design language and structured framework for controlling the look and feel of your product and user experience. It serves as an opinionated design system that aims to greatly reduce the amount of time spent managing design elements and patterns, allowing you to more quickly build and manage your frontend interfaces at scale.
order: 0
---
-## Our Philosophy
+import SkeletonBig from '@/assets/branding/skeleton-big.svg';
+
+
+
+
-Skeleton provides a uniform design language and structured framework for controlling the look and feel of your product and user experience. It serves as an opinionated design system that aims to greatly reduce the amount of time spent managing design elements and patterns, allowing you to more quickly build and manage your frontend interfaces at scale.
+## In a Nutshell
+
+{
+
+
+
+
Design System
+
+ This aims to augment Tailwind CSS. It provides themes, styled elements, and provides opinionated guardrails for integrating your fully
+ featured design system.
+
+
+
+
Components
+
+ Turnkey components built atop the foundation of{' '}
+
+ Zag.js
+
+ . These automatically adapt to the Skeleton design system out of the box. Currently available for Svelte and React.
+
+
+
+}
+
+## Our Philosophy
{