Repository navigation
Conversation
Drop the rules for 60 presentation classes that no component renders any more: the prototype sidebar, steps, experiment bar, style grid, legacy slide layouts and similar. They held most of the hard-coded colours in presentation.css, which the design-system pass that follows replaces. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ntation UI The studio was locked to light (color-scheme: light, #fff surfaces and hard-coded colours) while the mind map canvas inside it followed the app theme, so dark mode showed a dark canvas on a white page with dark text. - Surfaces, text, borders and focus rings use semantic tokens, so the studio follows dark mode. - Typography: the app font instead of Inter, Body_S (14/20) body text, Heading/H2 page titles and Caption_S captions and tags. - Action buttons follow Outline/Filled M, including the design-system disabled state; shared Buttons are no longer dimmed twice when disabled. - Text fields follow Textfield M with hover, focus and disabled states; the studio and mind map switches use Tab button styling; notices use the neutral Message Box; checkboxes use the theme fill. - The setup and preview window uses the Modal View radius over the shared overlay scrim. - Source-tab quotes, code, tables and properties use the editor's tokens. Slide content (slide canvases and document slides) keeps its theme fonts, colours, title and label styles and its 1.5 line height, because it is paginated and exported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reviewer's GuideThe PR refactors the AI presentation studio, mind map, source view, dialogs, and presenter controls onto AppFlowy’s semantic design system, fixing dark-mode inconsistencies while standardizing typography, component states, modal treatment, and removing obsolete CSS without changing exported slide content. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The AI presentation UI (the studio, mind map page, slide settings dialog and presenter controls) now follows the AppFlowy design system (Figma Design-System): semantic colour tokens, the app font and type scale, and the documented button, field, tab and message-box states.
The most visible fix is dark mode. The studio was locked to light (
color-scheme: lightand#fffbackgrounds) while the mind map canvas inside it followed the theme, so in dark mode a dark canvas sat on a white page with dark text.Changes
Body_S(14/20) instead of 13px. Page titles areHeading/H2(24/36 semibold, no negative letter-spacing) instead of 36px. Captions and tags areCaption_S(12/18) instead of 9–11px.Actionfollows Outline and Filled M: 32px,Body_SEnhanced,Fill/theme-thickinstead of the off-palette#398af4, and the design system's disabled state. Disabled sharedButtons inside the presentation were double-dimmed (their own disabled style plus 42% opacity); now they only use their own.Caption_Slabel.Fill/content-visible, radius 12,Body_S). The setup dialog's separate notice, field, checkbox and button overrides are gone, because the base styles now match them.Surface/overlayscrim, instead of radius 12 over a 12% black backdrop.The token audit (
ds_tokens.py audit) drops from 149 hard-coded colours inpresentation.cssto 3. All 3 are slide content.Intentionally unchanged
line-height: 1.5. The document-slide title and section label keep their slide styling. These are paginated and exported, so this PR leaves them alone.Deviations from Figma
Surface/primary, matching the shared Webdialog.tsx. Figma's Modal View usesSurface/layer-02; the two differ only in dark mode.Actionkeeps its own markup, because it has 44 call sites plus contextual overrides (presenter, map close, node popover). It now uses the same tokens ascomponents/ui/buttonwith Figma's M radius of 6px; the shared Button uses 8px.Fill/content-hover) and active (Fill/content-visible) have the same value, so the active tab is told apart by its primary text colour.light.variables.css/dark.variables.cssdefine--icon-secondary: #59647a, which collides with the semanticIcon/secondary(#6f748c/#b5bbd3). Icons here useIcon/tertiaryor text tokens instead.Before / after
These screenshots come from the presentation Playwright fixtures in light and dark mode. No fixture mounts the full studio, so the mind map page is painted with the studio's own background in each build. Inter isn't installed on the capture machine, so the font change itself isn't visible here; users who have Inter installed will see it.
Mind map page, dark mode: the page now follows the theme instead of staying white around a dark canvas.

Mind map page and node popover, light mode: H2 title, caption section label, 12px tag, Body_S buttons, and the design-system disabled state on Generate with AI.

Slide settings, dark and light: shared scrim, radius 16 and Textfield M geometry. This dialog was already mostly on tokens.


Document and deck presenters: a check that nothing regressed. The slides are unchanged; the controls only pick up the 12px caption and the tertiary disabled state on the previous-slide button.


Tests
TZ=UTC npx jest src/components/presentation: 60 suites, 485 tests pass.npx playwright test -c playwright.presentation.config.ts: 67 of 70 pass. The other 3 (mindmap-sources.spec.ts:35,mindmap.spec.ts:941andmindmap.spec.ts:1001) fail the same way onmain(885f86d).presentation.cssare all slide content.pnpm type-checkandeslintpass.🤖 Generated with Claude Code
Summary by Sourcery
Align the AI presentation interface with the AppFlowy design system while preserving the existing slide-content appearance.
Bug Fixes:
Enhancements: