halkyon/packages/halkyon_ui/lib/halkyon_ui.dart
Tizian 「ティツィアーン」 45fd6595e1
feat(ui,learn,todo,train,meditate): a wave in the app's colour over the navigation bar
The developer's choice of 7 Nov 2026 (the mockup's variant E): a tap on
another destination sends a radial glow in the app's colour over the bar
from that destination's centre, solid to 35 % of its radius and gone at
70 %, growing to cover the bar (cubic(.2, .7, .2, 1)) while it fades from
half its strength in dark mode and a third in light, over 1.2 s, behind
the destinations and clipped to the bar. None for the destination already
chosen, none with animations off, and none for a tab changed without a
tap (a link, back): the wave answers the finger. The destination chosen
takes the app's colour, its indicator tinted 22 % with it, without
Material's ripple or the indicator growing; the bar's top corners are
rounded, 20 dp, the screen showing through them.

Each app gives the frame its colour (NavigationFrame's accent, from
PaletteColor): Learn's purple, its icon's last colour, Todo's strawberry,
Train's carrot and Meditate's fern, their screens' wash.

For trying it on a phone, a debug build's Settings has a section
Navigation bar (debug), halkyon_ui's NavigationBarDebugSection, switching
live, in memory alone: the variant (A Material only, C the wave with
Material's fill, E without it, F without the indicator too), the wave's
time (0.7 to 2 s) and the corners (0 to 28 dp). Release builds never read
it and show shippingNavigationBarStyle, the debug section's start: to
remove it, delete the section from the four Settings screens and
debugNavigationBarStyle, and let effectiveNavigationBarStyle return the
shipping style.

Whats-New: Tapping a tab sends a soft wave in the app's colour across the navigation bar, now with rounded corners.
Whats-New-De: Ein Tipp auf einen Tab schickt eine sanfte Welle in der Farbe der App über die Navigationsleiste, jetzt mit abgerundeten Ecken.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-08 11:48:37 +01:00

51 lines
2.1 KiB
Dart

/// Halkyon's look, shared by its apps: the theme around cobalt and copper
/// (`appTheme`), the bundled Noto Sans (`appFontFamily`), Material 3's
/// window sizes (`WindowSize`), and the widgets every app's screens are
/// built of, with their texts in English and German
/// (`HalkyonUiLocalizations`, whose delegate an app adds to its own).
library;
export 'l10n/halkyon_ui_localizations.dart';
export 'src/layout/readable_width.dart';
export 'src/layout/window_size.dart';
export 'src/theme/app_fonts.dart';
export 'src/theme/app_theme.dart';
export 'src/theme/brand.dart';
export 'src/theme/palette_color.dart';
export 'src/theme/theme_extras.dart';
export 'src/widget/adaptive_sheet.dart';
export 'src/widget/app_loading_indicator.dart';
export 'src/widget/brand_wordmark.dart';
export 'src/widget/chevron_field.dart';
export 'src/widget/collapsing_row.dart';
export 'src/widget/confirm_dialog.dart';
export 'src/widget/count_badge.dart';
export 'src/widget/count_stepper.dart';
export 'src/widget/day_calendar_icon.dart';
export 'src/widget/empty_list_message.dart';
export 'src/widget/explained_title.dart';
export 'src/widget/field_label.dart';
export 'src/widget/flush_navigation_bar.dart';
export 'src/widget/folding_tabs.dart';
export 'src/widget/found_by_id.dart';
export 'src/widget/help_button.dart';
export 'src/widget/keyboard_back_on_resume.dart';
export 'src/widget/launch_screen.dart';
export 'src/widget/lift_while_dragged.dart';
export 'src/widget/more_info_sheet.dart';
export 'src/widget/navigation_bar_style.dart';
export 'src/widget/navigation_frame.dart';
export 'src/widget/palette_color_picker.dart';
export 'src/widget/reorder_grip.dart';
export 'src/widget/reorder_toggle.dart';
export 'src/widget/screen_tint.dart';
export 'src/widget/scroll_hiding_fab.dart';
export 'src/widget/section_card.dart';
export 'src/widget/skeleton.dart';
export 'src/widget/sliver_centered.dart';
export 'src/widget/tab_visibility.dart';
export 'src/widget/text_limits.dart';
export 'src/widget/tinted_frame.dart';
export 'src/widget/title_with_kicker.dart';
export 'src/widget/top_gradient.dart';
export 'src/widget/undo_snack_bar.dart';