2026-10-18 21:46:55 +02:00
|
|
|
/// 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';
|
feat(ui,learn): the navigation bar in the colour of the screen in view
The developer's review of 8 Nov 2026: the bar follows the screen in view
rather than one colour per app, so a Todo project of its own colour gives
the bar that colour while it shows. The wave, the chosen destination's
icon and label and its indicator take ScreenTint.color, the colour the
screen in view claims through its TopGradient; the frame's accent, the
app's colour, stays only for the moment before any screen claims one,
since ScreenTint itself starts at cobalt, which would be wrong for Todo,
Train and Meditate. Learn's tabs claim cobalt, their wash, so its bar is
cobalt there now, not purple.
A colour changing on the same tab (a project opening) passes into the
next over 300 ms, at once with animations off. A wave paints in that
colour as it goes: it starts in the colour of the screen being left, as
the arriving one claims its own only once it shows, a frame later, and
passes into it with the rest of the bar.
A person's colours may be light, so the chosen destination's colour is
made legible (readableTone, halkyon_ui): a palette colour starts from its
own text tone as Todo's dates take it (its outline in light mode, its
fill in dark), any other colour from itself, then darkens towards black
in light mode and lightens towards white in dark, only until it reads at
4.5:1 on the bar and on its indicator. Every palette colour is tested in
both themes, on the neutral and the tinted surface. This also lifts
Learn's label, which read at about 3:1.
The debug section gains Bar surface, neutral or tinted: tinted mixes 6 %
of the screen's colour into the bar's own surface in light mode and 8 %
in dark, changing with it. Neutral by default, and in the shipping style.
Whats-New: The navigation bar takes the colour of the screen you're on, such as a project's own.
Whats-New-De: Die Navigationsleiste nimmt die Farbe des Bildschirms an, auf dem du bist, etwa die eines Projekts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-08 01:12:08 +01:00
|
|
|
export 'src/theme/readable_tone.dart';
|
2026-10-18 21:46:55 +02:00
|
|
|
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';
|
fix(todo,ui): Today's day centred in its calendar, and the way back to today shows it
Today's tab drew its day centred at 16 of the calendar's 24 units, where
Lucide's SVG has its body's middle; its font draws the calendar a unit
higher (the top bar's stroke from 8 to 10, the foot's from 20 to 22,
measured with the real fonts), so the digits sat a unit and a half low.
halkyon_ui's new DayCalendarIcon centres them at 15, in Noto Sans set
explicitly, and its tests draw it with the real fonts at 16 to 32 pixels:
the digits centred in the body within half a unit, and 10, 20, 28 and 31
clear of the sides. Todo's TodayIcon keeps the midnight redraw around it.
The agenda's, the 3-day grid's and the month's way back to today showed
Lucide's calendar-1; it shows today's day in the same calendar now, as
Todoist's.
Whats-New: Today's date sits centred in its calendar icon, and the button back to today shows it too.
Whats-New-De: Das heutige Datum steht mittig in seinem Kalendersymbol, und der Knopf zurück zu heute zeigt es auch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-07 22:57:44 +01:00
|
|
|
export 'src/widget/day_calendar_icon.dart';
|
2026-10-18 21:46:55 +02:00
|
|
|
export 'src/widget/empty_list_message.dart';
|
feat(learn,app): explanations wait behind a question mark beside their title
What explains a setting or a section, rather than what is the person's
own, moves behind halkyon_ui's HelpButton, beside its title through the
new ExplainedTitle (the developer's review of 3 Nov 2026): in Learn's
settings (citations, the Pomodoro timer, grammar, the web search,
Jellyfin, the device's dictionaries, counting one's learning), the study
settings, export's progress, the Jellyfin tags and the study button's
back first; in halkyon_app, setting up a password, adding SimpleLogin,
own keys not allowed, the profile page's link back and the operator's
grant sheet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 22:24:39 +01:00
|
|
|
export 'src/widget/explained_title.dart';
|
2026-10-18 21:46:55 +02:00
|
|
|
export 'src/widget/field_label.dart';
|
feat(learn,todo,train,meditate,ui): the navigation bar flush with the foot, a fade above it
Below medium windows the frame's bar is Material 3 Expressive's again,
flush with the window's foot (decided 7 Nov 2026 by the developer): the
theme's NavigationBar across the whole width, 64 dp in its own colour,
running on beneath the system's bar as Material's does. Right above it a
fade 32 dp high, from the background of the screen in view (the
ScreenTint's, the theme's surface before a screen claims one) made
see-through to that background, so what scrolls on beneath the bar fades
out rather than being cut off; taps pass through it. The rail of wider
windows stays as it was.
halkyon_ui's FloatingNavigationBar becomes FlushNavigationBar, its side
margin, lift and rounded card gone. Its coverOf is now the whole room
content leaves at its end, the system's bar included (the body's bottom
padding: bar, fade and system's bar inside the frame, the system's bar
alone outside it), and floating buttons rise by buttonLiftOf, the same
without the system's bar, which a Scaffold keeps them clear of itself.
Lists, Todo's hour grid and the Plan's sheet keep using coverOf; the
Profile's list no longer adds the system's bar a second time.
Whats-New: The navigation bar sits at the bottom edge again, with a soft fade above it.
Whats-New-De: Die Navigationsleiste sitzt wieder am unteren Rand, mit einem sanften Übergang darüber.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-08 00:04:18 +01:00
|
|
|
export 'src/widget/flush_navigation_bar.dart';
|
feat(ui): tabs folding into the title, in Learn's and Train's Profile (ADR 0030, D60)
halkyon_ui's FoldingTabs: the tab row under the app bar's title at the
top, scrolling away with the content, the chosen tab's name then small
under the title, which, tapped, scrolls back up to the row, as Strava's.
Learn's Profile (Profile, Statistics) is built on it, and Train's
Profile in tabs: Progress (your body, the last 12 weeks, this year),
Days, and Plans where the device doesn't record.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-31 19:12:11 +01:00
|
|
|
export 'src/widget/folding_tabs.dart';
|
2026-10-18 21:46:55 +02:00
|
|
|
export 'src/widget/found_by_id.dart';
|
2026-11-03 21:27:16 +01:00
|
|
|
export 'src/widget/help_button.dart';
|
2026-10-18 21:46:55 +02:00
|
|
|
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';
|
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 00:29:14 +01:00
|
|
|
export 'src/widget/navigation_bar_style.dart';
|
2026-10-30 23:52:39 +01:00
|
|
|
export 'src/widget/navigation_frame.dart';
|
2026-10-18 21:46:55 +02:00
|
|
|
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';
|
feat(learn): Explore by what a licence allows, a skeleton while the library loads, and an assistant's agreement per provider (ADR 0005, rule 12; ADR 0021, D66)
- Explore filters by what a studyset's licence lets a learner do: adapt
it (no NoDerivatives) and use it commercially (no NonCommercial),
which the instance reads from the release's licence
(ExploreQuery.adaptable, commercial) and the app the same way
(LicenseUse). An instance from before ignores both.
- While the studysets are read, the Library shows shimmering skeletons
of their cards rather than a spinner: halkyon_ui's new Shimmer and
SkeletonBox, still where the system asks for no animations.
- The scope's "Include private studysets" is offered only while the
person has a private studyset.
- An agreement to what goes where is per provider (protocol and host):
agreeing to one assistant agrees to every assistant of that provider,
those granted later too, and the agreement sheet says so. No
migration: it is written on every grant of the provider, so taking
one back keeps it for the others, and read per provider from any of
them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-02 01:09:04 +01:00
|
|
|
export 'src/widget/skeleton.dart';
|
2026-10-18 21:46:55 +02:00
|
|
|
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';
|