Added meta to layouts
This commit is contained in:
@@ -3,6 +3,7 @@ import prettier from 'eslint-config-prettier/flat'
|
|||||||
import astro from 'eslint-plugin-astro'
|
import astro from 'eslint-plugin-astro'
|
||||||
import reactHooks from 'eslint-plugin-react-hooks'
|
import reactHooks from 'eslint-plugin-react-hooks'
|
||||||
import unusedImports from 'eslint-plugin-unused-imports'
|
import unusedImports from 'eslint-plugin-unused-imports'
|
||||||
|
import globals from 'globals'
|
||||||
import tseslint from 'typescript-eslint'
|
import tseslint from 'typescript-eslint'
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
@@ -11,7 +12,10 @@ export default [
|
|||||||
js.configs.recommended,
|
js.configs.recommended,
|
||||||
...tseslint.configs.recommended,
|
...tseslint.configs.recommended,
|
||||||
...astro.configs.recommended,
|
...astro.configs.recommended,
|
||||||
|
{
|
||||||
|
name: 'dave-dmg/node',
|
||||||
|
languageOptions: { globals: globals.node },
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'dave-dmg/unused',
|
name: 'dave-dmg/unused',
|
||||||
files: ['**/*.{js,mjs,cjs,ts,tsx,astro}'],
|
files: ['**/*.{js,mjs,cjs,ts,tsx,astro}'],
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
"@csstools/postcss-global-data": "^4.0.0",
|
"@csstools/postcss-global-data": "^4.0.0",
|
||||||
"@eslint/js": "^10.0.1",
|
"@eslint/js": "^10.0.1",
|
||||||
"@ianvs/prettier-plugin-sort-imports": "^4.7.1",
|
"@ianvs/prettier-plugin-sort-imports": "^4.7.1",
|
||||||
|
"@types/node": "^22.20.4",
|
||||||
"@types/react": "^19.2.18",
|
"@types/react": "^19.2.18",
|
||||||
"@types/react-dom": "^19.2.4",
|
"@types/react-dom": "^19.2.4",
|
||||||
"eslint": "^10.11.0",
|
"eslint": "^10.11.0",
|
||||||
@@ -35,6 +36,7 @@
|
|||||||
"eslint-plugin-astro": "^3.2.1",
|
"eslint-plugin-astro": "^3.2.1",
|
||||||
"eslint-plugin-react-hooks": "^7.1.1",
|
"eslint-plugin-react-hooks": "^7.1.1",
|
||||||
"eslint-plugin-unused-imports": "^4.4.1",
|
"eslint-plugin-unused-imports": "^4.4.1",
|
||||||
|
"globals": "^17.12.0",
|
||||||
"postcss": "^8.5.28",
|
"postcss": "^8.5.28",
|
||||||
"postcss-custom-media": "^12.0.1",
|
"postcss-custom-media": "^12.0.1",
|
||||||
"postcss-mixins": "^12.1.2",
|
"postcss-mixins": "^12.1.2",
|
||||||
@@ -46,7 +48,8 @@
|
|||||||
"stylelint-config-html": "^2.0.0",
|
"stylelint-config-html": "^2.0.0",
|
||||||
"stylelint-config-standard": "^40.0.0",
|
"stylelint-config-standard": "^40.0.0",
|
||||||
"typescript": "~6.0.3",
|
"typescript": "~6.0.3",
|
||||||
"typescript-eslint": "^8.70.0"
|
"typescript-eslint": "^8.70.0",
|
||||||
|
"vite": "^8.3.0"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@10.15.0",
|
"packageManager": "pnpm@10.15.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
67
pnpm-lock.yaml
generated
67
pnpm-lock.yaml
generated
@@ -13,16 +13,16 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/node':
|
'@astrojs/node':
|
||||||
specifier: ^11.0.0
|
specifier: ^11.0.0
|
||||||
version: 11.1.6(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))
|
version: 11.1.6(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))
|
||||||
'@astrojs/react':
|
'@astrojs/react':
|
||||||
specifier: ^6.0.0
|
specifier: ^6.0.0
|
||||||
version: 6.0.6(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
version: 6.0.6(@types/node@22.20.4)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
'@keystar/ui':
|
'@keystar/ui':
|
||||||
specifier: ^0.10.0
|
specifier: ^0.10.0
|
||||||
version: 0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0)
|
version: 0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0)
|
||||||
'@keystatic/astro':
|
'@keystatic/astro':
|
||||||
specifier: ^6.0.0
|
specifier: ^6.0.0
|
||||||
version: 6.0.0(@keystatic/core@0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
|
version: 6.0.0(@keystatic/core@0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
|
||||||
'@keystatic/core':
|
'@keystatic/core':
|
||||||
specifier: ^0.6.7
|
specifier: ^0.6.7
|
||||||
version: 0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0)
|
version: 0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0)
|
||||||
@@ -31,7 +31,7 @@ importers:
|
|||||||
version: 0.4.0(@types/react@19.3.0)(react@19.3.0)
|
version: 0.4.0(@types/react@19.3.0)(react@19.3.0)
|
||||||
astro:
|
astro:
|
||||||
specifier: ^7.0.4
|
specifier: ^7.0.4
|
||||||
version: 7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
version: 7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.2.8
|
specifier: ^19.2.8
|
||||||
version: 19.3.0
|
version: 19.3.0
|
||||||
@@ -40,7 +40,7 @@ importers:
|
|||||||
version: 19.3.0(react@19.3.0)
|
version: 19.3.0(react@19.3.0)
|
||||||
sharp:
|
sharp:
|
||||||
specifier: ^0.35.4
|
specifier: ^0.35.4
|
||||||
version: 0.35.4
|
version: 0.35.4(@types/node@22.20.4)
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@astrojs/check':
|
'@astrojs/check':
|
||||||
specifier: ^0.9.10
|
specifier: ^0.9.10
|
||||||
@@ -54,6 +54,9 @@ importers:
|
|||||||
'@ianvs/prettier-plugin-sort-imports':
|
'@ianvs/prettier-plugin-sort-imports':
|
||||||
specifier: ^4.7.1
|
specifier: ^4.7.1
|
||||||
version: 4.7.1(prettier@3.9.8)
|
version: 4.7.1(prettier@3.9.8)
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^22.20.4
|
||||||
|
version: 22.20.4
|
||||||
'@types/react':
|
'@types/react':
|
||||||
specifier: ^19.2.18
|
specifier: ^19.2.18
|
||||||
version: 19.3.0
|
version: 19.3.0
|
||||||
@@ -75,6 +78,9 @@ importers:
|
|||||||
eslint-plugin-unused-imports:
|
eslint-plugin-unused-imports:
|
||||||
specifier: ^4.4.1
|
specifier: ^4.4.1
|
||||||
version: 4.4.1(@typescript-eslint/eslint-plugin@8.70.0(@typescript-eslint/parser@8.70.0(eslint@10.11.0)(typescript@6.0.3))(eslint@10.11.0)(typescript@6.0.3))(eslint@10.11.0)
|
version: 4.4.1(@typescript-eslint/eslint-plugin@8.70.0(@typescript-eslint/parser@8.70.0(eslint@10.11.0)(typescript@6.0.3))(eslint@10.11.0)(typescript@6.0.3))(eslint@10.11.0)
|
||||||
|
globals:
|
||||||
|
specifier: ^17.12.0
|
||||||
|
version: 17.12.0
|
||||||
postcss:
|
postcss:
|
||||||
specifier: ^8.5.28
|
specifier: ^8.5.28
|
||||||
version: 8.5.28
|
version: 8.5.28
|
||||||
@@ -111,6 +117,9 @@ importers:
|
|||||||
typescript-eslint:
|
typescript-eslint:
|
||||||
specifier: ^8.70.0
|
specifier: ^8.70.0
|
||||||
version: 8.70.0(eslint@10.11.0)(typescript@6.0.3)
|
version: 8.70.0(eslint@10.11.0)(typescript@6.0.3)
|
||||||
|
vite:
|
||||||
|
specifier: ^8.3.0
|
||||||
|
version: 8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -1247,6 +1256,9 @@ packages:
|
|||||||
'@types/nlcst@2.0.3':
|
'@types/nlcst@2.0.3':
|
||||||
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
|
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
|
||||||
|
|
||||||
|
'@types/node@22.20.4':
|
||||||
|
resolution: {integrity: sha512-zJRE40jpHtKqE/C4fgHrAKQLJuSpzEnP9ff9Y7YtoR3Wd2pwqzlekDeEuUQXjRd+QCYnVnNwuJYmhdk9XV8gvA==}
|
||||||
|
|
||||||
'@types/react-dom@19.3.0':
|
'@types/react-dom@19.3.0':
|
||||||
resolution: {integrity: sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==}
|
resolution: {integrity: sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -3118,6 +3130,9 @@ packages:
|
|||||||
uncrypto@0.1.3:
|
uncrypto@0.1.3:
|
||||||
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
|
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
|
||||||
|
|
||||||
|
undici-types@6.21.0:
|
||||||
|
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
||||||
|
|
||||||
undici@8.10.2:
|
undici@8.10.2:
|
||||||
resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==}
|
resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==}
|
||||||
engines: {node: '>=22.19.0'}
|
engines: {node: '>=22.19.0'}
|
||||||
@@ -3629,10 +3644,10 @@ snapshots:
|
|||||||
github-slugger: 2.0.0
|
github-slugger: 2.0.0
|
||||||
satteri: 0.10.5
|
satteri: 0.10.5
|
||||||
|
|
||||||
'@astrojs/node@11.1.6(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))':
|
'@astrojs/node@11.1.6(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/internal-helpers': 0.11.0
|
'@astrojs/internal-helpers': 0.11.0
|
||||||
astro: 7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
astro: 7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
send: 1.2.1
|
send: 1.2.1
|
||||||
server-destroy: 1.0.1
|
server-destroy: 1.0.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -3642,17 +3657,17 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
prismjs: 1.30.0
|
prismjs: 1.30.0
|
||||||
|
|
||||||
'@astrojs/react@6.0.6(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)':
|
'@astrojs/react@6.0.6(@types/node@22.20.4)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/internal-helpers': 0.11.0
|
'@astrojs/internal-helpers': 0.11.0
|
||||||
'@types/react': 19.3.0
|
'@types/react': 19.3.0
|
||||||
'@types/react-dom': 19.3.0(@types/react@19.3.0)
|
'@types/react-dom': 19.3.0(@types/react@19.3.0)
|
||||||
'@vitejs/plugin-react': 5.2.0(vite@8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))
|
'@vitejs/plugin-react': 5.2.0(vite@8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))
|
||||||
devalue: 5.9.4
|
devalue: 5.9.4
|
||||||
react: 19.3.0
|
react: 19.3.0
|
||||||
react-dom: 19.3.0(react@19.3.0)
|
react-dom: 19.3.0(react@19.3.0)
|
||||||
ultrahtml: 1.7.0
|
ultrahtml: 1.7.0
|
||||||
vite: 8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
vite: 8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- '@vitejs/devtools'
|
- '@vitejs/devtools'
|
||||||
@@ -4300,12 +4315,12 @@ snapshots:
|
|||||||
react-dom: 19.3.0(react@19.3.0)
|
react-dom: 19.3.0(react@19.3.0)
|
||||||
react-stately: 3.48.0(react@19.3.0)
|
react-stately: 3.48.0(react@19.3.0)
|
||||||
|
|
||||||
'@keystatic/astro@6.0.0(@keystatic/core@0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
|
'@keystatic/astro@6.0.0(@keystatic/core@0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.29.7
|
'@babel/runtime': 7.29.7
|
||||||
'@keystatic/core': 0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0)
|
'@keystatic/core': 0.6.9(@keystar/ui@0.10.0(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0))(react-aria@3.50.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(react-dom@19.3.0(react@19.3.0))(react-stately@3.48.0(react@19.3.0))(react@19.3.0)
|
||||||
'@types/react': 19.3.0
|
'@types/react': 19.3.0
|
||||||
astro: 7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
astro: 7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
react: 19.3.0
|
react: 19.3.0
|
||||||
react-dom: 19.3.0(react@19.3.0)
|
react-dom: 19.3.0(react@19.3.0)
|
||||||
|
|
||||||
@@ -4616,6 +4631,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
|
||||||
|
'@types/node@22.20.4':
|
||||||
|
dependencies:
|
||||||
|
undici-types: 6.21.0
|
||||||
|
|
||||||
'@types/react-dom@19.3.0(@types/react@19.3.0)':
|
'@types/react-dom@19.3.0(@types/react@19.3.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 19.3.0
|
'@types/react': 19.3.0
|
||||||
@@ -4746,7 +4765,7 @@ snapshots:
|
|||||||
'@urql/core': 5.2.0(graphql@16.14.2)
|
'@urql/core': 5.2.0(graphql@16.14.2)
|
||||||
wonka: 6.3.6
|
wonka: 6.3.6
|
||||||
|
|
||||||
'@vitejs/plugin-react@5.2.0(vite@8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))':
|
'@vitejs/plugin-react@5.2.0(vite@8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.29.7
|
'@babel/core': 7.29.7
|
||||||
'@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)
|
'@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)
|
||||||
@@ -4754,7 +4773,7 @@ snapshots:
|
|||||||
'@rolldown/pluginutils': 1.0.0-rc.3
|
'@rolldown/pluginutils': 1.0.0-rc.3
|
||||||
'@types/babel__core': 7.20.5
|
'@types/babel__core': 7.20.5
|
||||||
react-refresh: 0.18.0
|
react-refresh: 0.18.0
|
||||||
vite: 8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
vite: 8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@@ -4881,7 +4900,7 @@ snapshots:
|
|||||||
- '@emnapi/runtime'
|
- '@emnapi/runtime'
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1):
|
astro@7.3.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@22.20.4)(idb-keyval@6.3.0)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/compiler-rs': 0.4.1(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)
|
'@astrojs/compiler-rs': 0.4.1(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)
|
||||||
'@astrojs/internal-helpers': 0.11.0
|
'@astrojs/internal-helpers': 0.11.0
|
||||||
@@ -4931,13 +4950,13 @@ snapshots:
|
|||||||
unifont: 0.7.5
|
unifont: 0.7.5
|
||||||
unstorage: 1.17.5(idb-keyval@6.3.0)
|
unstorage: 1.17.5(idb-keyval@6.3.0)
|
||||||
verkit: 0.4.1
|
verkit: 0.4.1
|
||||||
vite: 8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
vite: 8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
vitefu: 1.1.3(vite@8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))
|
vitefu: 1.1.3(vite@8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1))
|
||||||
xxhash-wasm: 1.1.0
|
xxhash-wasm: 1.1.0
|
||||||
yargs-parser: 22.0.0
|
yargs-parser: 22.0.0
|
||||||
zod: 4.6.5
|
zod: 4.6.5
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
sharp: 0.35.4
|
sharp: 0.35.4(@types/node@22.20.4)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@azure/app-configuration'
|
- '@azure/app-configuration'
|
||||||
- '@azure/cosmos'
|
- '@azure/cosmos'
|
||||||
@@ -6546,7 +6565,7 @@ snapshots:
|
|||||||
|
|
||||||
setprototypeof@1.2.0: {}
|
setprototypeof@1.2.0: {}
|
||||||
|
|
||||||
sharp@0.35.4:
|
sharp@0.35.4(@types/node@22.20.4):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@img/colour': 1.1.0
|
'@img/colour': 1.1.0
|
||||||
detect-libc: 2.1.2
|
detect-libc: 2.1.2
|
||||||
@@ -6577,6 +6596,7 @@ snapshots:
|
|||||||
'@img/sharp-win32-arm64': 0.35.4
|
'@img/sharp-win32-arm64': 0.35.4
|
||||||
'@img/sharp-win32-ia32': 0.35.4
|
'@img/sharp-win32-ia32': 0.35.4
|
||||||
'@img/sharp-win32-x64': 0.35.4
|
'@img/sharp-win32-x64': 0.35.4
|
||||||
|
'@types/node': 22.20.4
|
||||||
|
|
||||||
shebang-command@2.0.0:
|
shebang-command@2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -6854,6 +6874,8 @@ snapshots:
|
|||||||
|
|
||||||
uncrypto@0.1.3: {}
|
uncrypto@0.1.3: {}
|
||||||
|
|
||||||
|
undici-types@6.21.0: {}
|
||||||
|
|
||||||
undici@8.10.2: {}
|
undici@8.10.2: {}
|
||||||
|
|
||||||
unicorn-magic@0.4.0: {}
|
unicorn-magic@0.4.0: {}
|
||||||
@@ -6948,7 +6970,7 @@ snapshots:
|
|||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
vfile-message: 4.0.3
|
vfile-message: 4.0.3
|
||||||
|
|
||||||
vite@8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1):
|
vite@8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
lightningcss: 1.33.0
|
lightningcss: 1.33.0
|
||||||
picomatch: 4.0.7
|
picomatch: 4.0.7
|
||||||
@@ -6956,14 +6978,15 @@ snapshots:
|
|||||||
rolldown: 1.2.9
|
rolldown: 1.2.9
|
||||||
tinyglobby: 0.2.17
|
tinyglobby: 0.2.17
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
'@types/node': 22.20.4
|
||||||
esbuild: 0.28.2
|
esbuild: 0.28.2
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
sugarss: 5.0.1(postcss@8.5.28)
|
sugarss: 5.0.1(postcss@8.5.28)
|
||||||
yaml: 2.9.1
|
yaml: 2.9.1
|
||||||
|
|
||||||
vitefu@1.1.3(vite@8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)):
|
vitefu@1.1.3(vite@8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 8.3.0(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
vite: 8.3.0(@types/node@22.20.4)(esbuild@0.28.2)(sugarss@5.0.1(postcss@8.5.28))(yaml@2.9.1)
|
||||||
|
|
||||||
volar-service-css@0.0.71(@volar/language-service@2.4.28):
|
volar-service-css@0.0.71(@volar/language-service@2.4.28):
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
@@ -3,12 +3,19 @@ import { Font } from 'astro:assets'
|
|||||||
|
|
||||||
import '@/styles/global.css'
|
import '@/styles/global.css'
|
||||||
|
|
||||||
|
import { resolveImage } from '@/lib/images/resolve'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
title: string
|
title: string
|
||||||
description?: string
|
description?: string
|
||||||
|
image?: string
|
||||||
|
noindex?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const { title, description } = Astro.props
|
const { title, description, image, noindex } = Astro.props
|
||||||
|
const canonical = new URL(Astro.url.pathname, Astro.site)
|
||||||
|
const preview = image ? resolveImage(image) : undefined
|
||||||
|
const previewUrl = preview ? new URL(preview.src, Astro.site) : undefined
|
||||||
---
|
---
|
||||||
|
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
@@ -20,6 +27,15 @@ const { title, description } = Astro.props
|
|||||||
|
|
||||||
<title>{title}</title>
|
<title>{title}</title>
|
||||||
{description && <meta name="description" content={description} />}
|
{description && <meta name="description" content={description} />}
|
||||||
|
{noindex && <meta name="robots" content="noindex" />}
|
||||||
|
<link rel="canonical" href={canonical} />
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:title" content={title} />
|
||||||
|
<meta property="og:url" content={canonical} />
|
||||||
|
{description && <meta property="og:description" content={description} />}
|
||||||
|
{previewUrl && <meta property="og:image" content={previewUrl} />}
|
||||||
|
<meta name="twitter:card" content={previewUrl ? 'summary_large_image' : 'summary'} />
|
||||||
|
|
||||||
<Font cssVariable="--font-geist" preload />
|
<Font cssVariable="--font-geist" preload />
|
||||||
<Font cssVariable="--font-geist-mono" preload />
|
<Font cssVariable="--font-geist-mono" preload />
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import Node from '@/components/markdoc/Node.astro'
|
|||||||
import Figure from '@/components/media/Figure.astro'
|
import Figure from '@/components/media/Figure.astro'
|
||||||
import BaseLayout from '@/layouts/BaseLayout.astro'
|
import BaseLayout from '@/layouts/BaseLayout.astro'
|
||||||
import type { Rendered } from '@/lib/markdoc/types'
|
import type { Rendered } from '@/lib/markdoc/types'
|
||||||
|
import { metaOf } from '@/lib/site/meta'
|
||||||
import type { Article } from '@/lib/site/types'
|
import type { Article } from '@/lib/site/types'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
@@ -14,9 +15,10 @@ type Props = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { article, rendered } = Astro.props
|
const { article, rendered } = Astro.props
|
||||||
|
const meta = metaOf(article)
|
||||||
---
|
---
|
||||||
|
|
||||||
<BaseLayout title={article.title} description={article.summary.excerpt || undefined}>
|
<BaseLayout {...meta}>
|
||||||
<DevBanner
|
<DevBanner
|
||||||
collection={article.collection}
|
collection={article.collection}
|
||||||
id={article.id}
|
id={article.id}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import DevBanner from '@/components/dev/DevBanner.astro'
|
|||||||
import Node from '@/components/markdoc/Node.astro'
|
import Node from '@/components/markdoc/Node.astro'
|
||||||
import BaseLayout from '@/layouts/BaseLayout.astro'
|
import BaseLayout from '@/layouts/BaseLayout.astro'
|
||||||
import type { Rendered } from '@/lib/markdoc/types'
|
import type { Rendered } from '@/lib/markdoc/types'
|
||||||
|
import { metaOf } from '@/lib/site/meta'
|
||||||
import type { Page } from '@/lib/site/types'
|
import type { Page } from '@/lib/site/types'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
@@ -11,9 +12,10 @@ type Props = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { page, rendered } = Astro.props
|
const { page, rendered } = Astro.props
|
||||||
|
const meta = metaOf(page)
|
||||||
---
|
---
|
||||||
|
|
||||||
<BaseLayout title={page.title} description={page.summary.excerpt || undefined}>
|
<BaseLayout {...meta}>
|
||||||
<DevBanner
|
<DevBanner
|
||||||
collection={page.collection}
|
collection={page.collection}
|
||||||
id={page.id}
|
id={page.id}
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
|
const DISPLAY = new Intl.DateTimeFormat('en-GB', {
|
||||||
|
timeZone: 'UTC',
|
||||||
|
day: 'numeric',
|
||||||
|
month: 'long',
|
||||||
|
year: 'numeric',
|
||||||
|
})
|
||||||
|
|
||||||
export function parseDate(value: string | null): Date | null {
|
export function parseDate(value: string | null): Date | null {
|
||||||
if (!value) return null
|
if (!value) return null
|
||||||
const date = new Date(/(z|[+-]\d\d:\d\d)$/i.test(value) ? value : `${value}Z`)
|
const date = new Date(/(z|[+-]\d\d:\d\d)$/i.test(value) ? value : `${value}Z`)
|
||||||
return Number.isNaN(date.getTime()) ? null : date
|
return Number.isNaN(date.getTime()) ? null : date
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const formatDate = (date: Date): string => DISPLAY.format(date)
|
||||||
|
|
||||||
|
export const isoDate = (date: Date): string => date.toISOString().slice(0, 10)
|
||||||
|
|||||||
18
src/lib/site/meta.ts
Normal file
18
src/lib/site/meta.ts
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import type { Article, Page, Routed } from './types'
|
||||||
|
|
||||||
|
export type Meta = {
|
||||||
|
title: string
|
||||||
|
description?: string
|
||||||
|
image?: string
|
||||||
|
noindex: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
const cover = (node: Routed) =>
|
||||||
|
node.collection === 'articles' ? (node as Article).summary.cover.image : null
|
||||||
|
|
||||||
|
export const metaOf = (node: Article | Page): Meta => ({
|
||||||
|
title: node.title,
|
||||||
|
description: node.summary.excerpt || undefined,
|
||||||
|
image: cover(node) ?? undefined,
|
||||||
|
noindex: node.noindex,
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user