// AUTO-GENERATED by scripts/gen-file-icons.mjs — do not edit by hand. // What each glyph draws, as opposed to the canvas it was authored on: the // bounding box of its ink, in its own viewBox units. Each glyph is emitted with // these as its viewBox, so its `width`/`height` are the drawn size — which is // what lets every file icon share one width and still keep its own height. /** A glyph's ink, in the units of the canvas it was authored on. */ export type FileGlyphInk = { x: number; y: number; width: number; height: number }; /** Ink bounds of the brand logos, measured off each source file with `getBBox`. */ export const FILE_BRAND_INK = { FilePdf: { x: 0, y: 0, width: 256, height: 256 }, FileWord: { x: 0, y: 0, width: 1881.25, height: 1750 }, FileExcel: { x: 0, y: 0, width: 2289.75, height: 2130 }, FilePowerPoint: { x: 0, y: 0, width: 1919.95, height: 1786 }, FileOneNote: { x: 0, y: 0, width: 2744.833, height: 2553.333 }, FileFlash: { x: 2, y: 2.328, width: 28, height: 27.344 }, FileAi: { x: 2, y: 2.35, width: 28, height: 27.3 }, FileVideo: { x: 2, y: 1, width: 20, height: 22 }, } satisfies Record; /** * Ink bounds of the paper the category badges sit on, in its own 128-square. * The blurred drop shadow counts as ink: the render layer clips to this box, so * anything left out of it would be cut off rather than merely uncounted. */ export const FILE_PAPER_INK: FileGlyphInk = { x: 16.375, y: 3.625, width: 95.25, height: 123.125 }; /** The opaque page alone — the paper's ink minus the shadow around it. */ export const FILE_PAPER_SHEET: FileGlyphInk = { x: 21, y: 6, width: 86, height: 114 }; /** * The same page on the retired 512-square raster template, which is the canvas * the category badges are still authored against. Mapping this box onto * `FILE_PAPER_SHEET` is what lands a badge on the vector page. */ export const FILE_BADGE_SHEET: FileGlyphInk = { x: 76, y: 8, width: 360, height: 472 }; /** * How low a badge draws on that template — the bottom edge of the lowest-drawing * glyph in the set, measured across all of them. Everything below it is page, so * it is the top of the band the extension label is printed in. */ export const FILE_BADGE_INK_BOTTOM = 356;