From c134d2f5937b5d32d73dc15a4880e5554c145f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Seidel?= Date: Thu, 1 Oct 2026 20:03:26 +0200 Subject: [PATCH 1/2] fix: replace style attributes and inline scripts the CSP would block - Shiki code blocks: a transformer turns the inline styles into classes (packages/styles/src/shiki.{mjs,css}). - Progress bars: width via data-width, applied from a bundled script in AppShell; DocsHero status dot: box-shadow moved to a class. - QuizToggle, Tabs, Hint, Quiz and ChatWidget: is:inline/define:vars scripts become bundled scripts (Astro does not hash body inline scripts); data moves to data attributes. The stored quiz visibility is applied by AppShell's head script, so it holds before first paint. --- apps/docs/src/components/DocsHero.astro | 7 +- packages/styles/package.json | 4 +- packages/styles/src/prose.css | 1 + packages/styles/src/shiki.css | 86 ++++++ packages/styles/src/shiki.d.mts | 5 + packages/styles/src/shiki.mjs | 31 ++ .../src/components/content/ChatWidget.astro | 290 +++++++++--------- packages/ui/src/components/content/Tabs.astro | 80 ++--- .../src/components/courses/CourseCard.astro | 2 +- packages/ui/src/components/courses/Hint.astro | 18 +- .../ui/src/components/courses/LessonNav.astro | 2 +- .../src/components/courses/ProgressBar.astro | 4 +- packages/ui/src/components/courses/Quiz.astro | 24 +- .../components/courses/TotalProgress.astro | 3 +- .../ui/src/components/layout/AppShell.astro | 15 + .../components/navigation/QuizToggle.astro | 90 ++---- .../ui/src/styles/components/lesson-nav.css | 1 + 17 files changed, 393 insertions(+), 270 deletions(-) create mode 100644 packages/styles/src/shiki.css create mode 100644 packages/styles/src/shiki.d.mts create mode 100644 packages/styles/src/shiki.mjs diff --git a/apps/docs/src/components/DocsHero.astro b/apps/docs/src/components/DocsHero.astro index 62d9e5c..07604e4 100644 --- a/apps/docs/src/components/DocsHero.astro +++ b/apps/docs/src/components/DocsHero.astro @@ -10,8 +10,7 @@ class="inline-flex items-center gap-2 rounded-full border border-slate-200 bg-slate-100 px-3.5 py-1.5 dark:border-slate-700 dark:bg-slate-900" >