feat(app): the library's studyset card

A studyset in the library: a bar in its colour, its title with the secondary
title as a kicker, what it holds, and beside the title the action it
invites inside a ring its mature cards fill, with a badge counting the due
cards (at most "99+", growing inwards so it never passes the card's edge).
The action is a review when reviews are due, studying when only new cards
are, and adding content otherwise, which opens the studyset: the card only
invites a session that has something to study. A long press stars it, as
does the star, which a hovering pointer reveals and which stays while
starred; the options edit, archive or unarchive, and delete it. An archived
studyset rests: dimmed, neutral, paused. Until its progress is known, a
muted bar stands in for "No content yet", which it might not be.

A starred star is amber, dark enough in the light theme to stand out from
the cards as a graphic must (3:1), a colour the theme extras now hold. It is
Material's filled star: Lucide has no filled one, and the fill is what says
the star is on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-01 00:40:52 +02:00
commit 6dc1e863ea
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -148,6 +148,84 @@ abstract class AppLocalizations {
/// **'Library'**
String get libraryTitle;
/// No description provided for @studysetCountFlashcards.
///
/// In en, this message translates to:
/// **'{count, plural, =1{1 flashcard} other{{count} flashcards}}'**
String studysetCountFlashcards(int count);
/// No description provided for @studysetNoContent.
///
/// In en, this message translates to:
/// **'No content yet'**
String get studysetNoContent;
/// No description provided for @studysetActionReview.
///
/// In en, this message translates to:
/// **'Review'**
String get studysetActionReview;
/// No description provided for @studysetActionStudy.
///
/// In en, this message translates to:
/// **'Study'**
String get studysetActionStudy;
/// No description provided for @studysetActionAdd.
///
/// In en, this message translates to:
/// **'Add content'**
String get studysetActionAdd;
/// No description provided for @studysetArchived.
///
/// In en, this message translates to:
/// **'Archived'**
String get studysetArchived;
/// No description provided for @studysetStar.
///
/// In en, this message translates to:
/// **'Star'**
String get studysetStar;
/// No description provided for @studysetUnstar.
///
/// In en, this message translates to:
/// **'Unstar'**
String get studysetUnstar;
/// No description provided for @studysetOptions.
///
/// In en, this message translates to:
/// **'Options'**
String get studysetOptions;
/// No description provided for @studysetMenuEdit.
///
/// In en, this message translates to:
/// **'Edit'**
String get studysetMenuEdit;
/// No description provided for @studysetMenuArchive.
///
/// In en, this message translates to:
/// **'Archive'**
String get studysetMenuArchive;
/// No description provided for @studysetMenuUnarchive.
///
/// In en, this message translates to:
/// **'Unarchive'**
String get studysetMenuUnarchive;
/// No description provided for @studysetMenuDelete.
///
/// In en, this message translates to:
/// **'Delete'**
String get studysetMenuDelete;
/// No description provided for @exploreTitle.
///
/// In en, this message translates to: