diff --git a/packages/svelte-standard-site/package.json b/packages/svelte-standard-site/package.json index 064bd62..cc9d8f0 100644 --- a/packages/svelte-standard-site/package.json +++ b/packages/svelte-standard-site/package.json @@ -1,137 +1,137 @@ { - "name": "@ewanc26/svelte-standard-site", - "version": "0.2.4", - "description": "SvelteKit library for reading and writing AT Protocol longform content via site.standard.* records — with a complete design system, federated comments, publishing tools, and content verification.", - "author": "Ewan Croft", - "license": "AGPL-3.0-only", - "type": "module", - "keywords": [ - "svelte", - "sveltekit", - "atproto", - "at-protocol", - "bluesky", - "site-standard", - "blog", - "cms", - "design-system", - "components", - "dark-mode", - "light-mode", - "theme", - "publishing", - "federation", - "comments" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/ewanc26/pkgs.git", - "directory": "packages/svelte-standard-site" - }, - "homepage": "https://github.com/ewanc26/pkgs/tree/main/packages/svelte-standard-site", - "bugs": { - "url": "https://github.com/ewanc26/pkgs/issues" - }, - "publishConfig": { - "access": "public" - }, - "files": [ - "dist", - "src/lib", - "README.md" - ], - "sideEffects": [ - "**/*.css" - ], - "svelte": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "svelte": "./dist/index.js", - "default": "./dist/index.js" - }, - "./publisher": { - "types": "./dist/publisher.d.ts", - "default": "./dist/publisher.js" - }, - "./content": { - "types": "./dist/utils/content.d.ts", - "default": "./dist/utils/content.js" - }, - "./comments": { - "types": "./dist/utils/native-comments.d.ts", - "default": "./dist/utils/native-comments.js" - }, - "./verification": { - "types": "./dist/utils/verification.d.ts", - "default": "./dist/utils/verification.js" - }, - "./schemas": { - "types": "./dist/schemas.d.ts", - "default": "./dist/schemas.js" - }, - "./config/env": { - "types": "./dist/config/env.d.ts", - "default": "./dist/config/env.js" - }, - "./styles/base.css": { - "default": "./dist/styles/base.css" - }, - "./styles/themes.css": { - "default": "./dist/styles/themes.css" - } - }, - "scripts": { - "build": "svelte-kit sync && svelte-package -i src/lib -o dist && publint", - "dev": "svelte-kit sync && svelte-package -i src/lib -o dist --watch", - "dev:app": "vite dev", - "preview": "vite preview", - "prepare": "svelte-kit sync && svelte-package -i src/lib -o dist || echo ''", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test": "vitest run", - "test:watch": "vitest", - "format": "prettier --write .", - "lint": "prettier --check ." - }, - "dependencies": { - "@atproto/api": "^0.19.3", - "@ewanc26/atproto": "workspace:*", - "@ewanc26/tid": "workspace:*", - "@ewanc26/utils": "workspace:*", - "@lucide/svelte": "^0.577.0", - "katex": "^0.16.38", - "rehype-slug": "^6.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "shiki": "^3.21.0", - "unified": "^11.0.5", - "zod": "^3.24.0" - }, - "peerDependencies": { - "@sveltejs/kit": "^2.0.0", - "svelte": "^5.0.0" - }, - "devDependencies": { - "@sveltejs/adapter-auto": "^7.0.1", - "@sveltejs/kit": "^2.55.0", - "@sveltejs/package": "^2.5.7", - "@sveltejs/vite-plugin-svelte": "^6.2.1", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.2.1", - "@types/node": "^25.5.0", - "prettier": "^3.7.4", - "prettier-plugin-svelte": "^3.5.1", - "prettier-plugin-tailwindcss": "^0.7.2", - "publint": "^0.3.18", - "svelte": "^5.53.11", - "svelte-check": "^4.4.5", - "tailwindcss": "^4.2.1", - "typescript": "^5.9.3", - "vite": "^7.2.6", - "vitest": "^4.1.0" - } + "name": "@ewanc26/svelte-standard-site", + "version": "0.2.4", + "description": "SvelteKit library for reading and writing AT Protocol longform content via site.standard.* records — with a complete design system, federated comments, publishing tools, and content verification.", + "author": "Ewan Croft", + "license": "AGPL-3.0-only", + "type": "module", + "keywords": [ + "svelte", + "sveltekit", + "atproto", + "at-protocol", + "bluesky", + "site-standard", + "blog", + "cms", + "design-system", + "components", + "dark-mode", + "light-mode", + "theme", + "publishing", + "federation", + "comments" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/ewanc26/pkgs.git", + "directory": "packages/svelte-standard-site" + }, + "homepage": "https://github.com/ewanc26/pkgs/tree/main/packages/svelte-standard-site", + "bugs": { + "url": "https://github.com/ewanc26/pkgs/issues" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "dist", + "src/lib", + "README.md" + ], + "sideEffects": [ + "**/*.css" + ], + "svelte": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js", + "default": "./dist/index.js" + }, + "./publisher": { + "types": "./dist/publisher.d.ts", + "default": "./dist/publisher.js" + }, + "./content": { + "types": "./dist/utils/content.d.ts", + "default": "./dist/utils/content.js" + }, + "./comments": { + "types": "./dist/utils/native-comments.d.ts", + "default": "./dist/utils/native-comments.js" + }, + "./verification": { + "types": "./dist/utils/verification.d.ts", + "default": "./dist/utils/verification.js" + }, + "./schemas": { + "types": "./dist/schemas.d.ts", + "default": "./dist/schemas.js" + }, + "./config/env": { + "types": "./dist/config/env.d.ts", + "default": "./dist/config/env.js" + }, + "./styles/base.css": { + "default": "./dist/styles/base.css" + }, + "./styles/themes.css": { + "default": "./dist/styles/themes.css" + } + }, + "scripts": { + "build": "svelte-kit sync && svelte-package -i src/lib -o dist && publint", + "dev": "svelte-kit sync && svelte-package -i src/lib -o dist --watch", + "dev:app": "vite dev", + "preview": "vite preview", + "prepare": "svelte-kit sync && svelte-package -i src/lib -o dist || echo ''", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test": "vitest run", + "test:watch": "vitest", + "format": "prettier --write .", + "lint": "prettier --check ." + }, + "dependencies": { + "@atproto/api": "^0.19.3", + "@ewanc26/atproto": "workspace:*", + "@ewanc26/tid": "workspace:*", + "@ewanc26/utils": "workspace:*", + "@lucide/svelte": "^0.577.0", + "katex": "^0.16.38", + "rehype-slug": "^6.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "shiki": "^4.3.0", + "unified": "^11.0.5", + "zod": "^3.24.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.0.0", + "svelte": "^5.0.0" + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^7.0.1", + "@sveltejs/kit": "^2.55.0", + "@sveltejs/package": "^2.5.7", + "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@tailwindcss/typography": "^0.5.19", + "@tailwindcss/vite": "^4.2.1", + "@types/node": "^25.5.0", + "prettier": "^3.7.4", + "prettier-plugin-svelte": "^3.5.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "publint": "^0.3.18", + "svelte": "^5.53.11", + "svelte-check": "^4.4.5", + "tailwindcss": "^4.2.1", + "typescript": "^5.9.3", + "vite": "^7.2.6", + "vitest": "^4.1.0" + } } diff --git a/packages/svelte-standard-site/src/lib/components/document/blocks/CodeBlock.svelte b/packages/svelte-standard-site/src/lib/components/document/blocks/CodeBlock.svelte index f76f24b..06493f5 100644 --- a/packages/svelte-standard-site/src/lib/components/document/blocks/CodeBlock.svelte +++ b/packages/svelte-standard-site/src/lib/components/document/blocks/CodeBlock.svelte @@ -23,13 +23,13 @@ } try { - const { codeToHtml, bundledLanguagesInfo, bundledThemesInfo } = await import('shiki'); + const { codeToHtml, bundledLanguages, bundledThemes } = await import('shiki'); - const lang = - bundledLanguagesInfo.find((l: any) => l.id === block.language)?.id || 'plaintext'; - const theme = - bundledThemesInfo.find((t: any) => t.id === block.syntaxHighlightingTheme)?.id || - 'github-light'; + // shiki 4: bundledLanguages is string[], bundledThemes is Record + const lang = bundledLanguages.includes(block.language ?? '') ? block.language! : 'plaintext'; + const theme = block.syntaxHighlightingTheme && block.syntaxHighlightingTheme in bundledThemes + ? block.syntaxHighlightingTheme + : 'github-light'; html = await codeToHtml(block.plaintext, { lang, theme }); } catch (error) {