import type { LogoSettings, LogoOptions } from './types.js';
export declare const LOGO_SETTINGS: LogoSettings;
/** Color SVG logo (white ▼ on transparent) */
export declare function getColorSVG(): string;
/** Monochrome SVG logo (outline ▼) */
export declare function getMonoSVG(): string;
/** Tightly cropped color SVG */
export declare function getColorSVGCropped(): string;
/** White SVG logo (for dark backgrounds) */
export declare function getWhiteSVG(): string;
/** Menu bar SVG (uses currentColor for OS theme) */
export declare function getMenuBarSVG(): string;
/**
* Favicon SVG — the ▼ solid, taking its tone from the tab. No container.
*
* A favicon does not get to choose what is behind it: browsers paint the active
* tab white in light mode and near-black in dark, so a mark fixed at one tone is
* invisible on half of them. An SVG can ask which it landed on, and that is the
* whole mechanism — near-black ink on a light tab, white on a dark one, one file
* for both. The same `ADAPTIVE` sheet the wordmarks use.
*
* Solid, because the answer to "will it read at 16px" is area. This was shipped
* for a while as a one-device-pixel outline, on the theory that a hairline is
* crisp at every size. It is crisp and it is not there: at 16px that outline
* paints 9% of the ink the solid does, and — the number that decides it — no
* pixel of it ever reaches full opacity. Its darkest is 23% of the way to the
* ink colour, so what the tab shows is a faint grey wireframe of a triangle,
* whichever scheme resolved.
*
* It used to sit on a black rounded rect, which solved the tone problem by
* giving the mark its own ground. The mark is a triangle; a box around it is a
* second shape to recognise, and at tab size the box is most of what you see.
*
* TRIANGLE, not a second copy of it. This function carried its own path on a
* 64-box — so the one place the geometry was supposed to live had a rival, and
* moving the mark would have moved everything except the favicon.
*/
export declare function getFaviconSVG(): string;
/**
* The ▼ in white, keyed in near-black — the favicon for slots that cannot ask.
*
* Every raster is one of those. A .png and a .ico carry no media query, so the
* scheme is decided when they are written and the tab they land on is not known
* then. White fill with a dark rim is what survives both: on a light tab the rim
* draws the shape, on a dark one the fill does.
*
* This is the fallback and not the primary. White-fill-plus-rim on a light
* ground is a thin dark outline around a white shape the ground already
* supplies — legible, but greyer than ink, which is why favicon.svg resolves
* its own tone rather than leaning on the rim.
*
* `stroke-linejoin="round"`, because a mitred join on a sharp vertex shoots a
* spike well past the mark. Measured on this triangle at this stroke width: the
* bottom point reaches 12.900 units past the vertex mitred against 6.500
* rounded, and the mitred ink lands at y=97.90 in a 100 box — 2.1 units of
* clearance, a third of a device pixel at 16px. All three vertices are near 60°,
* so all three spike; the mitre limit does not save it, since the limit clips at
* a ratio of 4 and these joins ask for 2.
*
* Stroke under fill, as two paths rather than `paint-order`: favicons are
* rasterised by more than browsers (ico pipelines, resvg, librsvg), and a
* property one of them ignores would silently paint the keyline over the mark.
*/
export declare function getFaviconKeyedSVG(): string;
/** Get logo as data URL */
export declare function getLogoDataUrl(options?: LogoOptions): string;
/** Get logo as base64 string */
export declare function getLogoBase64(options?: LogoOptions): string;
/** Get logo in requested format */
export declare function getLogo(options?: LogoOptions): string;
/** The wordmark's own proportions. 63:17 ≈ 3.7:1 — it is a stripe, not a square. */
export declare const WORDMARK_BOX: {
width: number;
height: number;
};
/** LUX wordmark SVG — the letters as paths, white for dark grounds */
export declare function getWordmarkSVG(): string;
/** LUX wordmark that follows the ground it lands on — dark ink on light, white on dark. */
export declare function getWordmarkAdaptiveSVG(): string;
/**
* LUX wordmark centred in a square, for icon slots.
*
* Legible from about 32px up. Below that the letterforms close; a tab icon at
* 16px wants two letters, which is what LX is for.
*/
export declare function getWordmarkSquareSVG(options?: {
fill?: string;
background?: string;
inset?: number;
}): string;
/** LUX wordmark with metal gradient */
export declare function getWordmarkGradientSVG(): string;
/** LX's own proportions. 43:17 ≈ 2.5:1 — squarer than the word, which is why it fits a tab. */
export declare const LX_BOX: {
width: number;
height: number;
};
/**
* LX, taking its colour from whatever draws it.
*
* `currentColor` rather than a fixed white, because the exchange puts this in a
* header where the ink is already decided. Inline it into the DOM for that to
* work — through an ``, or as a file on disk, there is no colour to take
* and it paints black. Those want getLXAdaptiveSVG.
*/
export declare function getLXSVG(): string;
/** LX that follows the ground it lands on — dark ink on light, white on dark. */
export declare function getLXAdaptiveSVG(): string;
/**
* LX centred in a square, for icon slots.
*
* Two letters at 2.5:1 clear a 16px tab where the four-letter stripe does not.
*/
export declare function getLXSquareSVG(options?: {
fill?: string;
background?: string;
inset?: number;
}): string;
export declare const logo: string;
export declare const logoMono: string;
export declare const logoWhite: string;
export declare const wordmark: string;
export declare const wordmarkGradient: string;
export declare const favicon: string;
export declare const faviconKeyed: string;
export declare const lx: string;
export declare const logoDataUrl: string;
export declare const logoMonoDataUrl: string;
export declare const logoWhiteDataUrl: string;
export declare const luxLogo: string;
export declare const luxLogoMono: string;
export declare const luxLogoWhite: string;
export declare const luxWordmark: string;
export declare const luxWordmarkGradient: string;
export declare const luxFavicon: string;
export declare const luxFaviconKeyed: string;
export declare const luxLogoDataUrl: string;
export declare const luxLogoMonoDataUrl: string;
export declare const luxLogoWhiteDataUrl: string;
/**
* Interactive animated mark — load (assemble) → hover (one graceful turn,
* returns to rest) → press (squash). Pure CSS, no JS. Inline this SVG into
* the DOM (not ) for the hover/press interactions to fire.
*/
export declare function getAnimatedSVG(): string;
/** Animated mark as a data: URL (load animation runs even in ). */
export declare function getAnimatedDataUrl(): string;
export declare const luxLogoAnimated = "";
export declare const luxLogoAnimatedDataUrl: string;
/**
* Favicon in one fixed tone, for the .ico and .png fallbacks a raster
* cannot carry a media query into. #7a7f85 is the tone that clears 3:1
* against both a light and a dark tab strip; white would vanish on one,
* near-black on the other.
*/
export declare function getFaviconRasterSVG(): string;
//# sourceMappingURL=logos.d.ts.map