From da825d256af96f0891b99d7fea68effc453ee3e0 Mon Sep 17 00:00:00 2001 From: RhenCloud Date: Mon, 5 Oct 2026 21:41:53 +0800 Subject: [PATCH 01/17] feat(code-block): lazy loading, line numbers, a11y Consolidate language metadata into a single registry with grammar loaders, load shiki grammars on demand with retryable failures, and keep the initial bundle free of grammar code. Add an accessible scroll region with live copy announcements, gutter-based line numbers, collapse animation with reduced-motion support, and a scroll-aware fade for max-height limits. Replace the removed languageIcons module with languages.ts and cover the registry and component contracts with vitest. --- .changeset/lazy-code-blocks-improve.md | 5 + .../src/components/code-block/CodeBlock.vue | 147 +++++------ .../components/code-block/codeBlock.test.ts | 52 ++++ .../src/components/code-block/highlighter.ts | 63 +++++ .../ui/src/components/code-block/index.ts | 7 +- .../code-block/languageIcons.test.ts | 52 ---- .../components/code-block/languageIcons.ts | 126 ---------- .../components/code-block/languages.test.ts | 130 ++++++++++ .../ui/src/components/code-block/languages.ts | 231 ++++++++++++++++++ packages/ui/src/locale/messages.ts | 9 + 10 files changed, 570 insertions(+), 252 deletions(-) create mode 100644 .changeset/lazy-code-blocks-improve.md create mode 100644 packages/ui/src/components/code-block/codeBlock.test.ts create mode 100644 packages/ui/src/components/code-block/highlighter.ts delete mode 100644 packages/ui/src/components/code-block/languageIcons.test.ts delete mode 100644 packages/ui/src/components/code-block/languageIcons.ts create mode 100644 packages/ui/src/components/code-block/languages.test.ts create mode 100644 packages/ui/src/components/code-block/languages.ts diff --git a/.changeset/lazy-code-blocks-improve.md b/.changeset/lazy-code-blocks-improve.md new file mode 100644 index 0000000..62531bf --- /dev/null +++ b/.changeset/lazy-code-blocks-improve.md @@ -0,0 +1,5 @@ +--- +"@recloudstudio/ui": minor +--- + +Expand CodeBlock language support with on-demand syntax loading, resilient retries, accessible scrolling, adaptive line numbers, and smoother collapsed and height-limited states. diff --git a/packages/ui/src/components/code-block/CodeBlock.vue b/packages/ui/src/components/code-block/CodeBlock.vue index 4fe5658..941b378 100644 --- a/packages/ui/src/components/code-block/CodeBlock.vue +++ b/packages/ui/src/components/code-block/CodeBlock.vue @@ -11,7 +11,7 @@