import { CSSProperties, SVGAttributes } from 'react'; import { SlotClassNames, SlotStyles, DataProps } from '../types/slots.types.js'; import { ColorValue } from '../themeProvider/color.types.js'; export type AnimatedLogoSlots = 'path'; /** * The root here is an ``, not an HTML element, so the native attributes come from * `SVGAttributes` rather than `HtmlProps` — `data-*` still has to be added separately. * * `color`, `scale`, `path` and `fill` are omitted from that set: all four are real SVG * presentation attributes, and all four are used here with a different meaning or type * (`fill` is a boolean toggle, `path` is the `d` data, `scale` is an animation flag). */ export interface AnimatedLogoProps extends DataProps, Omit, 'color' | 'scale' | 'path' | 'fill'> { /** SVG path `d` data to draw and fill. Defaults to the AhroweUI mark. */ path?: string; /** `viewBox` matching the coordinate space of `path`. Defaults to the AhroweUI mark's viewBox. */ viewBox?: string; /** Width/height of the SVG (any valid CSS size). Defaults to `96`. */ size?: number | string; /** The stroke and fill: a `ThemeColor` or any CSS colour. Defaults to `--primary-color`. */ color?: ColorValue; /** Length of one draw-fill cycle, in seconds. Defaults to `4.2`. */ duration?: number; /** Repeats the draw-fill-retract cycle forever. When `false`, plays once and holds filled. Defaults to `true`. */ loop?: boolean; /** Fills the interior once the outline is drawn. When `false`, only the stroke draws (and, with `loop`, retracts) — the interior is never filled. Defaults to `true`. */ fill?: boolean; /** Spins the mark from 180° to 0° while the outline draws, then fills afterward. Defaults to `false`. */ spin?: boolean; /** Scales the mark from 0 to 1 while the outline draws, then fills afterward. Defaults to `false`. */ scale?: boolean; className?: string; style?: CSSProperties; classNames?: SlotClassNames; styles?: SlotStyles; }