import { TemplateResult } from 'lit'; import { BahtChartBase, ChartGroup, ChartMarker, ChartSeries } from './charts.js'; export declare class BahtBarChart extends BahtChartBase { /** Original API: `{ label, count }[]`, one bar each. */ groups: ChartGroup[]; /** Series API: one entry per series, one value per category. */ series: ChartSeries[]; /** Category names, one per value index. */ categories: string[]; /** Bars across (default) or columns up. */ orientation: 'horizontal' | 'vertical'; /** Stack the series inside one band instead of grouping them side by side. */ stacked: boolean; /** Previous-period values, drawn as a muted bar under each current bar. */ compare: number[]; /** Names the muted `compare` bar in the key and the table twin. */ compareLabel: string; /** Budget / target lines drawn over the bars. */ markers: ChartMarker[]; /** `ends` prints the value at the bar tip; `none` leaves it to the tooltip. */ labelValues: 'ends' | 'none'; /** Index of the series (2+ series) or category (one series) to highlight. */ emphasis: number | null; /** Single color for every bar; per-series palette otherwise. */ color: string; /** Accessible summary used by the vertical (graphics-only) rendering. */ label: string; /** * Measured px per category for the vertical rendering; `0` until the host has * been measured, where the CSS flex fallback (`flex: 1 1 0; min-width: 0`) * already keeps the columns inside the host. Measuring lets the element also * thin the x labels and shrink the bars below the 24px cap, so 31 days fit a * 400px card instead of spilling out of it. */ private band; private resizeObserver; connectedCallback(): void; disconnectedCallback(): void; protected firstUpdated(): void; /** Host width → px per category. Never runs on the server (`hasDom` guard). */ private measure; private get columnCount(); /** The series actually drawn — `groups` is normalised into one series. */ private get model(); private colorFor; protected render(): TemplateResult; /** Largest value a bar can reach: the raw max for `groups`, a clean tick otherwise. */ private domainMax; private tableTwin; /** Markers with no `category` span the chart; the rest ride their own row. */ private markersFor; /** Markers that apply to every row / column. */ private get chartMarkers(); /** Markers pinned to one category — they ride that row / column, not the chart. */ private categoryMarkers; /** What a marker reads as: its own label, else its formatted value. */ private markerText; /** * Marker lines, positioned along the value axis. The label is drawn separately * (`markerLabels`) as real text — a `title` attribute alone never reaches AT. */ private markerOverlay; /** * Marker labels, sorted along the axis and thinned so neighbours never collide: * a dropped label keeps its line, and its value still reads in the table twin. * Thinning is scoped to the list it is given — chart-wide markers compete with * each other, a row's own markers only with that row's. */ private place; /** Chart-wide marker labels — the strip above the rows / the end of the line. */ private placedMarkers; /** A row's own marker labels, drawn beside their line inside that row. */ private rowMarkerLabels; /** Legend rows: one per series, plus the muted `compare` key when it is set. */ private legendEntries; private renderHorizontal; private renderVertical; }