ENGLISH·COURSE API
    Preparing search index...
    • Tells the learner about a prize whose announcement the lesson page never got to make.

      Parameters

      • levels: { levels: readonly AchievementLevel[] }

        Every catalog course, for deciding where the prize stands

      Returns null

      Collecting a module's last ticket opens the waiting-prize dialog a few seconds later, once the ticket notification has left — and a learner who moves on to the next lesson in those seconds takes the page that owed them the dialog with them. The prize is recorded the instant it is won, so this makes the announcement wherever they landed instead.

      It renders nothing. Mount it once, above the pages, so the announcement survives navigation.

      The record is spent the moment it is acted on, so the dialog arrives exactly once: at the counter it is spent in silence, and a prize already claimed is dropped without a word. A prize that is neither ready nor claimed is left waiting — on the first render the device's tickets have not been read yet, and that is not the same as having none.

      It stays quiet while the page that won the prize is still on screen: that page plays the ticket first and opens the dialog itself, and this would otherwise talk over the moment it belongs to. The instant that page lets go — by making the announcement, or by the learner leaving — this one takes over.

      Browser-side only — do NOT render from a Server Component.

      <PendingPrizeAnnouncement levels={levels} />