/** * Typed manifest of all Ionic 8 custom elements supported by nix-ionic. * This is the single source of truth for: * - the Vite plugin (auto-import scanning) * - direct subpath generation * - bundle composition * - diagnostics (unsupported tags, version drift) * * Each entry maps a kebab-case tag name to its Ionic Core import path and * metadata (category, dependencies, wrapper/controller if any). */ export type ComponentCategory = "layout" | "navigation" | "forms" | "lists" | "feedback" | "buttons" | "overlays" | "data" | "routing-legacy"; export interface ComponentManifestEntry { /** Custom element tag name, e.g. "ion-button". */ tag: string; /** Import specifier relative to @ionic/core, e.g. "ion-button.js". */ importPath: string; /** Category for bundle composition. */ category: ComponentCategory; /** Other components this one depends on (e.g. ion-card needs ion-card-content). */ dependencies?: string[]; /** Associated nix-ionic wrapper or controller, if any. */ wrapper?: string; /** Minimum Ionic Core major version. */ minIonicMajor: number; /** True if this is a legacy/deprecated component (ion-router, ion-route, etc.). */ legacy?: boolean; } export declare const COMPONENT_MANIFEST: readonly ComponentManifestEntry[]; /** Get a manifest entry by tag name. */ export declare function getComponentByTag(tag: string): ComponentManifestEntry | undefined; /** Get all entries in a category (excluding legacy). */ export declare function getComponentsByCategory(category: ComponentCategory): readonly ComponentManifestEntry[]; /** Get all non-legacy tags. */ export declare function getAllSupportedTags(): readonly string[]; /** Check if a tag is in the manifest (and not legacy). */ export declare function isSupportedTag(tag: string): boolean; /** Get the full dependency chain for a tag (recursive). */ export declare function getDependencyChain(tag: string): string[]; /** Convert a tag name to a subpath-safe name (e.g. "ion-button" → "button"). */ export declare function tagToSubpath(tag: string): string; /** Convert a tag name to a definer export name (e.g. "ion-button" → "defineIonButton"). */ export declare function tagToDefinerName(tag: string): string;