/** * Sizing for the navigation spine's tick rail. * * The spine is fixed to the viewport's vertical center, so on a document with * hundreds of operations a tick per item would run off both ends of the screen. * These two functions cap it instead: `spineTickBudget` works out how many item * ticks fit, and `allocateSpineTicks` shares that budget out across sections. * * The px values below mirror the spine's Tailwind classes in Navigation.tsx and * have to move with them. */ /** * How many item ticks fit in the spine's share of the viewport, once each * section's own parent tick and the gaps between sections are paid for. * A zero `viewportHeight` means server-side rendering, where there's no * viewport to cap against. */ export declare function spineTickBudget(viewportHeight: number, sectionCount: number): number; /** * Hands out `budget` item ticks across sections holding `counts` items each. * * Under budget, every item keeps its own tick. Over it, each section is * guaranteed one tick and the rest is shared out in proportion to size, so a * section stays visibly bigger than its neighbours even once its ticks stand * for several items apiece. Rounding down can leave a few ticks of the budget * unspent, which only makes the spine slightly shorter than its cap. */ export declare function allocateSpineTicks(counts: number[], budget: number): number[];