import { TemplateResult } from 'lit'; import { BahtElement } from '../base.js'; import { ChartFormat } from './charts.js'; /** Fractions of `max` at which the fill changes severity. */ export interface MeterThresholds { warning: number; danger: number; } /** * Spent-against-budget meter. The fill carries severity (accent → warning → * danger) and the unfilled track is a lighter step of the same ramp, so state * reads across the whole bar. Severity is always paired with an icon and a * worded status, never color alone. * * */ export declare class BahtMeter extends BahtElement { /** Amount used so far. */ value: number; /** The budget / capacity the value is measured against. */ max: number; /** Sentence-case caption. */ label: string; /** How value and max read: number | currency | percent | compact. */ format: ChartFormat; /** ISO currency code for `format="currency"` (THB renders `฿`). */ currency: string; /** Fractions of `max` where the fill turns warning / danger. */ thresholds: MeterThresholds; /** Pace marker: where the value *should* be by now. `null` hides the tick. */ expected: number | null; /** Word shown after the numbers when the meter is over budget. */ overLabel: string; /** Word shown when the value has reached the budget exactly, but not passed it. */ atLabel: string; /** Word shown after the numbers when the meter is near its limit. */ nearLabel: string; private get fraction(); /** * `ok` | `warning` | `danger`, from the fraction and the thresholds. `danger` is * strictly **above** its threshold: spending exactly the budget is not * overspending, so it reads as the warning tone with an "At budget" status. * `warning` stays inclusive (`>=`). */ private get severity(); private get statusText(); protected render(): TemplateResult; }