feat: lay our own pages out as interface rather than as articles

This commit is contained in:
randogoth 2026-10-11 14:03:44 +03:00
parent e7a8e91334
commit dfba1cfb16
8 changed files with 162 additions and 55 deletions

View file

@ -127,6 +127,7 @@ class _ThemedApp extends StatelessWidget {
_ => ThemeMode.system,
};
final settings = deps.settings;
final font = settings.font.value;
final page = deps.browser.currentPage.value;
final variant = settings.variant.value == 'site'
? (page?.variant ?? MewsVariant.plain)
@ -135,14 +136,18 @@ class _ThemedApp extends StatelessWidget {
return MaterialApp(
title: 'Mews',
themeMode: mode,
theme: _themeFor(paletteFor(pageVariant: variant, readerVariant: 'site', dark: false)),
darkTheme: _themeFor(paletteFor(pageVariant: variant, readerVariant: 'site', dark: true)),
theme: _themeFor(
paletteFor(pageVariant: variant, readerVariant: 'site', dark: false),
font),
darkTheme: _themeFor(
paletteFor(pageVariant: variant, readerVariant: 'site', dark: true),
font),
home: const ReaderScreen(),
);
});
}
ThemeData _themeFor(MewsPalette palette) {
ThemeData _themeFor(MewsPalette palette, String fontFamily) {
final dark = palette.background.computeLuminance() < 0.5;
final scheme = ColorScheme(
brightness: dark ? Brightness.dark : Brightness.light,
@ -163,6 +168,9 @@ class _ThemedApp extends StatelessWidget {
return ThemeData(
useMaterial3: true,
colorScheme: scheme,
// The chrome reads in the typeface the reader chose for pages, so the
// address bar and the page below it are not two different faces.
fontFamily: fontFamily,
scaffoldBackgroundColor: palette.background,
// Selection highlights and the caret follow the palette too.
textSelectionTheme: TextSelectionThemeData(