feat(icons): every icon fades from cobalt into its app's backdrop; Learn shows its own inside the app; Train's dumbbell (ADR 0031, D5 to D7)
Each icon now ends in the colour its app's screens wash down from: Learn cobalt into purple, Todo through violet into strawberry (Learn's former gradient), Train unchanged into carrot, Meditate's to come through pacific into fern (Todo's former). Train's glyph is Lucide's dumbbell, Meditate's will be the sprout. Learn shows its graduation cap atop the rail, on the launch screen and on halkyon_app's screens, as Todo and Train show theirs; the kingfisher leaves the app and stays the F-Droid repository's icon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
5727a15353
commit
ac387b5250
3 changed files with 85 additions and 27 deletions
|
|
@ -5,14 +5,20 @@ import 'package:halkyon_learn_flutter/src/core/theme/learn_theme.dart';
|
|||
import 'package:halkyon_learn_flutter/src/core/widget/app_launch_screen.dart';
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
|
||||
/// The app's icon: Lucide's `graduation-cap` fading from cobalt into purple
|
||||
/// (ADR 0031, D5), atop the rail, on the launch screen and on halkyon_app's
|
||||
/// own screens, as Todo's and Train's show theirs (D6: no longer the
|
||||
/// kingfisher, which stays Halkyon's emblem).
|
||||
const learnIcon = AssetImage('assets/icon/halkyon_learn_icon.png');
|
||||
|
||||
/// Halkyon Learn as halkyon_app's own screens know it (the first start, the
|
||||
/// start screen, the account switcher, signing in): its name and word, its
|
||||
/// kingfisher, its look and languages, and the sentence only it can say,
|
||||
/// icon, its look and languages, and the sentence only it can say,
|
||||
/// in its own words, so every text reads as it did before they moved.
|
||||
const learnFrame = AppFrame(
|
||||
name: _name,
|
||||
product: _product,
|
||||
icon: AssetImage('assets/icon/halkyon_icon.png'),
|
||||
icon: learnIcon,
|
||||
exampleAddress: 'learn.example.org',
|
||||
firstStartSubtitle: _firstStartSubtitle,
|
||||
theme: learnTheme,
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
import 'package:go_router/go_router.dart';
|
||||
import 'package:halkyon_app/halkyon_app.dart';
|
||||
import 'package:halkyon_learn_flutter/l10n/app_localizations.dart';
|
||||
import 'package:halkyon_learn_flutter/src/app/learn_frame.dart';
|
||||
import 'package:halkyon_ui/halkyon_ui.dart';
|
||||
import 'package:lucide_icons_flutter/lucide_icons.dart';
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
|
||||
/// The frame around the four tabs, every Halkyon app's ([NavigationFrame]):
|
||||
/// a navigation rail at the side from medium windows on, the kingfisher atop
|
||||
/// a navigation rail at the side from medium windows on, the app's icon atop
|
||||
/// it, and a navigation bar floating above the bottom below that. Every tab
|
||||
/// keeps its own stack of screens, and the navigation stays visible on all
|
||||
/// of them; screens that need the whole window are routes outside the shell.
|
||||
|
|
@ -45,9 +46,9 @@ class const AppShell({
|
|||
return WhatsNewOnUpdate(
|
||||
child: NavigationFrame(
|
||||
appName: l10n.appTitle,
|
||||
// The kingfisher has a white background, which the frame's rounded
|
||||
// tile keeps reading on light and dark rails alike.
|
||||
icon: const AssetImage('assets/icon/halkyon_icon.png'),
|
||||
// The icon has a white background, which the frame's rounded tile
|
||||
// keeps reading on light and dark rails alike.
|
||||
icon: learnIcon,
|
||||
selectedIndex: navigationShell.currentIndex,
|
||||
onSelected: (index) => navigationShell.goBranch(
|
||||
index,
|
||||
|
|
|
|||
|
|
@ -1,17 +1,18 @@
|
|||
import 'package:halkyon_learn_flutter/l10n/app_localizations.dart';
|
||||
import 'package:halkyon_learn_flutter/src/app/learn_frame.dart';
|
||||
import 'package:halkyon_ui/halkyon_ui.dart';
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
|
||||
/// What shows while the app opens: the instance, the session, the
|
||||
/// person's data (decided 2026-10-11). halkyon_ui's [LaunchScreen] with
|
||||
/// Learn's kingfisher, "Learn" beneath "Halkyon", read out as the app's
|
||||
/// Learn's icon, "Learn" beneath "Halkyon", read out as the app's
|
||||
/// name.
|
||||
class const AppLaunchScreen({super.key}) extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
return LaunchScreen(
|
||||
icon: const AssetImage('assets/icon/halkyon_icon.png'),
|
||||
icon: learnIcon,
|
||||
product: l10n.launchProduct,
|
||||
name: l10n.appTitle,
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in a new issue