feat(app): the home dashboard: streak, goal, week, activity
Home opens on a study dashboard. The streak's flame sits in the app bar and opens a sheet of how it stands this week. Below: the study goal (a ring of the day's or week's progress, set and removed in its sheet), the week (each day studied, rested, missed or to come with the cards falling due; days to go back and on; today or a day to come made a rest day), and a year of activity as a heatmap, its weekdays staying in view while the weeks scroll. A long press arranges the dashboard: drag a widget elsewhere, hide or show it; the arrangement is synced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
d846ee4582
commit
111532435f
1 changed files with 1747 additions and 63 deletions
|
|
@ -130,18 +130,6 @@ abstract class AppLocalizations {
|
|||
/// **'Home'**
|
||||
String get homeTitle;
|
||||
|
||||
/// No description provided for @homeLibraryIntro.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your studysets and cards are in your library.'**
|
||||
String get homeLibraryIntro;
|
||||
|
||||
/// No description provided for @homeOpenLibrary.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Open library'**
|
||||
String get homeOpenLibrary;
|
||||
|
||||
/// No description provided for @libraryTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
@ -1720,6 +1708,276 @@ abstract class AppLocalizations {
|
|||
/// **'Answer'**
|
||||
String get composerLabelRegion;
|
||||
|
||||
/// No description provided for @homeStreakTooltip.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Study streak'**
|
||||
String get homeStreakTooltip;
|
||||
|
||||
/// No description provided for @homeArrange.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Arrange widgets'**
|
||||
String get homeArrange;
|
||||
|
||||
/// No description provided for @homeDone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Done'**
|
||||
String get homeDone;
|
||||
|
||||
/// No description provided for @homeDragToReorder.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Drag to reorder'**
|
||||
String get homeDragToReorder;
|
||||
|
||||
/// No description provided for @homeShowWidget.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show {label}'**
|
||||
String homeShowWidget(String label);
|
||||
|
||||
/// No description provided for @homeHideWidget.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hide {label}'**
|
||||
String homeHideWidget(String label);
|
||||
|
||||
/// No description provided for @homeAllHidden.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'All widgets are hidden'**
|
||||
String get homeAllHidden;
|
||||
|
||||
/// No description provided for @homeAllHiddenHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Long-press here to bring some back.'**
|
||||
String get homeAllHiddenHint;
|
||||
|
||||
/// No description provided for @homeWidgetGoal.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Study goal'**
|
||||
String get homeWidgetGoal;
|
||||
|
||||
/// No description provided for @homeWidgetWeek.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Week overview'**
|
||||
String get homeWidgetWeek;
|
||||
|
||||
/// No description provided for @homeWidgetActivity.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Activity heatmap'**
|
||||
String get homeWidgetActivity;
|
||||
|
||||
/// No description provided for @homeActivityTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your activity'**
|
||||
String get homeActivityTitle;
|
||||
|
||||
/// No description provided for @streakDays.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 day streak} other{{count} day streak}}'**
|
||||
String streakDays(num count);
|
||||
|
||||
/// No description provided for @streakStart.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Study today to start your streak.'**
|
||||
String get streakStart;
|
||||
|
||||
/// No description provided for @streakGrow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Keep it going: study at least once a day to grow your streak.'**
|
||||
String get streakGrow;
|
||||
|
||||
/// No description provided for @streakFirstDay.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Review some cards today to light the first day.'**
|
||||
String get streakFirstDay;
|
||||
|
||||
/// No description provided for @streakComeBack.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Come back tomorrow to keep your streak.'**
|
||||
String get streakComeBack;
|
||||
|
||||
/// No description provided for @streakKeepAlive.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Study today to keep your streak alive.'**
|
||||
String get streakKeepAlive;
|
||||
|
||||
/// No description provided for @goalEditTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Edit study goal'**
|
||||
String get goalEditTitle;
|
||||
|
||||
/// No description provided for @goalSetTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Set a study goal'**
|
||||
String get goalSetTitle;
|
||||
|
||||
/// No description provided for @goalDescriptionDaily.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Review a number of flashcards each day. Every card you rate counts.'**
|
||||
String get goalDescriptionDaily;
|
||||
|
||||
/// No description provided for @goalDescriptionWeekly.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Review a number of flashcards each week, from Monday. Every card you rate counts.'**
|
||||
String get goalDescriptionWeekly;
|
||||
|
||||
/// No description provided for @goalPeriod.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Period'**
|
||||
String get goalPeriod;
|
||||
|
||||
/// No description provided for @goalPerDay.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Per day'**
|
||||
String get goalPerDay;
|
||||
|
||||
/// No description provided for @goalPerWeek.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Per week'**
|
||||
String get goalPerWeek;
|
||||
|
||||
/// No description provided for @goalCardsPerDay.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Cards per day'**
|
||||
String get goalCardsPerDay;
|
||||
|
||||
/// No description provided for @goalCardsPerWeek.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Cards per week'**
|
||||
String get goalCardsPerWeek;
|
||||
|
||||
/// No description provided for @goalSave.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Save goal'**
|
||||
String get goalSave;
|
||||
|
||||
/// No description provided for @goalRemove.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove goal'**
|
||||
String get goalRemove;
|
||||
|
||||
/// No description provided for @goalEmptySubtitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Review a set number of cards each day or week.'**
|
||||
String get goalEmptySubtitle;
|
||||
|
||||
/// No description provided for @goalDailyHeadline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Daily goal'**
|
||||
String get goalDailyHeadline;
|
||||
|
||||
/// No description provided for @goalWeeklyHeadline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Weekly goal'**
|
||||
String get goalWeeklyHeadline;
|
||||
|
||||
/// No description provided for @goalProgressToday.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{reviewed} of {target} cards today'**
|
||||
String goalProgressToday(int reviewed, int target);
|
||||
|
||||
/// No description provided for @goalProgressThisWeek.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{reviewed} of {target} cards this week'**
|
||||
String goalProgressThisWeek(int reviewed, int target);
|
||||
|
||||
/// No description provided for @goalMet.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Goal met: nice work!'**
|
||||
String get goalMet;
|
||||
|
||||
/// No description provided for @goalRemaining.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count} to go'**
|
||||
String goalRemaining(int count);
|
||||
|
||||
/// No description provided for @weekToday.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Today'**
|
||||
String get weekToday;
|
||||
|
||||
/// No description provided for @weekPreviousDay.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Previous day'**
|
||||
String get weekPreviousDay;
|
||||
|
||||
/// No description provided for @weekNextDay.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Next day'**
|
||||
String get weekNextDay;
|
||||
|
||||
/// No description provided for @weekRestDay.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Rest day'**
|
||||
String get weekRestDay;
|
||||
|
||||
/// No description provided for @weekDueCount.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 card due} other{{count} cards due}}'**
|
||||
String weekDueCount(int count);
|
||||
|
||||
/// No description provided for @heatmapLess.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Less'**
|
||||
String get heatmapLess;
|
||||
|
||||
/// No description provided for @heatmapMore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'More'**
|
||||
String get heatmapMore;
|
||||
|
||||
/// No description provided for @heatmapTotal.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 activity in the last year} other{{count} activities in the last year}}'**
|
||||
String heatmapTotal(int count);
|
||||
|
||||
/// No description provided for @heatmapDay.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =0{Nothing} =1{1 activity} other{{count} activities}} · {date}'**
|
||||
String heatmapDay(int count, String date);
|
||||
|
||||
/// No description provided for @commonCancel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
Loading…
Reference in a new issue