import type { GetBirthstonesResponse, GetCrystalsByChakraResponse, GetCrystalsByElementResponse, GetCrystalsByZodiacResponse, ListCrystalsResponse, SearchCrystalsResponse } from '../types/index.js'; import { RoxyDataElement } from '../utils/base-element.js'; /** * Any crystal list response that carries a `crystals` summary array. Every crystals endpoint that returns more than one stone shares the `{ name, id, imageUrl, colors }` item shape, so one grid renders them all. */ type CrystalGridData = ListCrystalsResponse | GetCrystalsByChakraResponse | GetCrystalsByElementResponse | GetCrystalsByZodiacResponse | GetBirthstonesResponse | SearchCrystalsResponse; /** * Crystal grid. Renders any crystals list response (/crystals, /crystals/chakra/{chakra}, /crystals/element/{element}, /crystals/zodiac/{sign}, /crystals/birthstone/{month}, /crystals/search) as a responsive gallery of crystal tiles with photo, name, and colour swatches. The heading is derived from the response filter (chakra, element, zodiac sign, or birth month) or set explicitly via the `heading` attribute. */ export declare class RoxyCrystalGrid extends RoxyDataElement { static styles: import("lit").CSSResult[]; /** * Override the auto-derived grid heading. Empty by default, in which case the heading comes from the response filter (chakra, element, zodiac, or birth month) or falls back to "Crystals". */ heading: string; protected renderEmpty(): import("lit").TemplateResult<1>; protected renderData(d: CrystalGridData): import("lit").TemplateResult<1>; private deriveHeading; } declare global { interface HTMLElementTagNameMap { 'roxy-crystal-grid': RoxyCrystalGrid; } } export {}; //# sourceMappingURL=crystal-grid.d.ts.map