import { type ViewStyle, type TextStyle } from "react-native"; import { type ColorTokens } from "../../style/index.js"; import { type ChartSeries, type ChartSkin } from "./types.js"; export type Tone = "primary" | "success" | "destructive"; export declare function surface(tokens: ColorTokens, radius: number): ViewStyle; /** * The v4 hand-off's chart frame and furniture (`fr`, `grid`, `axes`, `leg` and the * marks in tools/v4/handoff/cv-kit-charts.js), in one table so the skins and the tests * read the same numbers. The hand-off draws its plots in a 360-wide viewBox scaled to the * frame's content box (about 388 px), so its 9-unit axis text paints at about 9.7 px: * the kit sets it at the 10 px source floor. */ export declare const CHART_LOOK: { /** The frame's inset and the gap between its title, plot and legend: 16 / 12, compact 12 / 8. */ readonly pad: { readonly default: 16; readonly compact: 12; }; readonly gap: { readonly default: 12; readonly compact: 8; }; /** The title: 500 14 px in the interface face. */ readonly titleSize: 14; readonly titleLine: 20; /** Axis labels: the mono face at the 10 px floor, in the subtle ink. */ readonly axisSize: 10; /** Authored SVG user-unit axes in the Charts page; preserve their viewBox scaling. */ readonly authoredAxisSize: 9; readonly axisLine: 14; /** Gridlines: a dotted `2 4` hairline, the baseline (the 0 line) solid. */ readonly gridDash: "2,4"; /** * The selection guide: a dashed `3 4` line in the third ink (the section cards' pinned * guides; the renderers draw no selection). */ readonly guideDash: "3,4"; /** A dashed series (a target or forecast line): the section cards' `5 4` dash, no caps. */ readonly seriesDash: "5,4"; /** The first series' line is 2.2 wide, every other 2. */ readonly leadStroke: 2.2; readonly stroke: 2; /** A marker dot: r 3, a 2 px ring of the series over the card fill. */ readonly dotRadius: 3; readonly dotStroke: 2; /** Area fills: the lead band at .28, the others at .3; the line fade from .35 to 0. */ readonly areaLead: 0.28; readonly area: 0.3; readonly fadeTop: 0.35; /** * Legend: 8 px squares at the data-cell corner, a 6 px swatch gap, 6 / 14 px row / column * gaps, the 400 12 px label on Instrument Sans's 15 px normal line (the renderer's `leg` * sets no ratio); a line mark's swatch is a 12 by 2 rule (dashed `4 2` for a dashed series); * a legend's trailing note is 11 px mono. */ readonly swatch: 8; readonly swatchGap: 6; readonly legendRowGap: 6; readonly legendColumnGap: 14; readonly legendSize: 12; readonly legendLine: 15; readonly legendCaptionSize: 11; readonly ruleSwatch: 12; readonly ruleDash: "4,2"; }; export declare const surfacePadCompact: ViewStyle; export declare const surfacePadDefault: ViewStyle; export declare function title(tokens: ColorTokens): TextStyle; export declare const titleCompact: TextStyle; export declare const titleDefault: TextStyle; /** An axis or category label: the mono face at the 10 px floor, in the subtle ink (the hand-off's tx3). */ export declare function axisLabel(tokens: ColorTokens): TextStyle; export declare function barFill(tokens: ColorTokens, tone: Tone): string; /** The fill for series `i` (0-based), from the theme's chart tokens. */ export declare function seriesFill(tokens: ColorTokens, i: number): string; /** * A series' own semantic tone, first match wins (the chart-level precedence: * success > destructive). Null when the series carries none, which is the * signal to fall through to the ramp. */ export declare function seriesTone(sr: ChartSeries): Tone | null; /** * The color for series `i`: the series' OWN semantic tone first (a series that * means success or failure is colored by that meaning), then the chart-level * tone when there is one (single-series charts), then the categorical ramp * position. Mirrors `rowFill`'s slot > tone > ramp resolution, and is the one * place the Chart family resolves a series color, so the plot, the value flag, * and the legend cannot drift apart. */ export declare function seriesColor(tokens: ColorTokens, sr: ChartSeries | undefined, i: number, tone?: Tone | null): string; export declare const horizontalRow: ViewStyle; export declare const horizontalTrack: ViewStyle; export declare function horizontalValue(tokens: ColorTokens): TextStyle; export declare const barRow: ViewStyle; export declare function rowLabel(tokens: ColorTokens): TextStyle; export declare function horizontalBar(fill: string, width: number, radius: number, height: number): ViewStyle; /** * The zoom control, laid OVER a zoomable chart's plot 8 px in from its bottom-right * corner, the corner every map puts its controls in. * * Absolutely positioned rather than stacked under the plot, for two reasons: it * takes no layout space, so the map keeps its full height, and it stays a SIBLING * of the plot rather than a child. A control inside the plot would end the * hit layer's run as the plot's last child and, worse, make a mouse press's * target-relative offsetX measure from the control instead of the plot (see the * note in chart-inspect.tsx). Yoga positions an absolute child inside the parent's * padding box, so zero insets land it on the plot's own corner. * * A kit-internal constant: the placement is the chart's decision, never a * call-site style. */ export declare const zoomBar: ViewStyle; /** * The zoom control's frame (the renderer's `geo-map` stack): the card fill inside the * field-border hairline at the zoom control's corner, clipping its buttons. */ export declare function zoomStack(tokens: ColorTokens): ViewStyle; /** The hairline between the zoom control's buttons. */ export declare function zoomRule(tokens: ColorTokens): ViewStyle; export declare const webSkin: ChartSkin; export declare const iosSkin: ChartSkin; export declare const androidSkin: ChartSkin; //# sourceMappingURL=charts.styles.d.ts.map