/** * Consumer theme curation API. * * `createThemeCatalog()` provides a single, composable surface for selecting a * subset of themes. It composes with the existing `flavors` (tokens) and * `VENDOR_GROUPS` (metadata) so consumers no longer need to hand-slice arrays. * * Filter precedence: * all themes -> vendors/appearances -> include -> exclude * * Invalid IDs supplied to `include`/`exclude` warn in development (never * throw), so a typo cannot silently drop or duplicate a theme. */ import type { ThemeFlavor } from '../themes/types.js'; import type { ThemeId } from '../themes/theme-ids.js'; import { type VendorGroup } from '../themes/metadata.js'; /** Options controlling which themes a {@link ThemeCatalog} contains. */ export interface ThemeCatalogOptions { /** * Restrict to these vendors (e.g. `['catppuccin', 'dracula']`). When * omitted, all vendors are eligible; an explicit empty array selects none, * which is useful for building an include-only catalog. */ vendors?: readonly string[]; /** * Restrict to these appearances. When omitted, both appearances are * eligible; an explicit empty array selects none. */ appearances?: readonly ('light' | 'dark')[]; /** Theme IDs to add after vendor/appearance filtering. */ include?: readonly string[]; /** Theme IDs to remove after `include` has been applied. */ exclude?: readonly string[]; } /** A curated view over the theme catalog. */ export interface ThemeCatalog { /** Selected theme IDs, in canonical catalog order. */ readonly themeIds: readonly ThemeId[]; /** Full flavor objects for the selected themes, in canonical order. */ readonly flavors: readonly ThemeFlavor[]; /** Vendor groups (for dropdown UIs) restricted to the selected themes. */ readonly vendorGroups: readonly VendorGroup[]; } /** * Build a curated {@link ThemeCatalog} from the full theme set. * * @param options - Vendor/appearance filters plus explicit include/exclude IDs. * @returns A catalog exposing `themeIds`, `flavors`, and `vendorGroups`. */ export declare function createThemeCatalog(options?: ThemeCatalogOptions): ThemeCatalog; //# sourceMappingURL=create.d.ts.map