import { G as GlossaryTerm } from './schemas-CKipJ5Ie.js'; /** * flashcards.ts — PURE deck-manifest bridge between the `glossary` collection * and the Flashcards island (#116). * * Same architecture as exam-manifest.ts: card backs are MDX definitions * (server-rendered — not serializable into island props), so the island * receives only this manifest (id + front text) and controls the * server-rendered cards by id. Question/objective-derived cards are a * deliberate later increment; v1 decks are glossary-only. * * No astro:content import — node-tested straight from dist/ * (tests/flashcards.test.mjs). */ /** One deck entry: the stable card id + the front (the display term). */ interface FlashcardRef { id: string; front: string; } /** The entry shape accepted — a CollectionEntry-like wrapper (glossary * entries carry the file-derived `id` at the top level, not in data). */ type GlossaryLike = { id: string; data: Pick; }; /** * Build the deck manifest: published (non-draft) terms, alphabetical by * display term (locale-aware — same order as /glossary, so the static list * fallback and the deck agree). Draft filtering is defensive; the shipped * caller passes getCollection('glossary', e => !e.data.draft) output. */ declare function buildFlashcardDeck(entries: readonly GlossaryLike[]): FlashcardRef[]; export { type FlashcardRef as F, buildFlashcardDeck as b };