import { ComputedRef, MaybeRefOrGetter } from '../../node_modules/vue'; import { BrandMode } from '../enums'; import { BrandExpansionStyle } from '../types'; /** * Reactive options for {@link useBrandExpansion}. They mirror the * `BrandExpansion` component props that drive its geometry. */ export interface UseBrandExpansionOptions { /** * Logo height, as a number of pixels or a CSS-like string (e.g. `"70px"`). */ size: MaybeRefOrGetter; /** * Which logo variation is displayed, selecting the matching intrinsic width. */ mode: MaybeRefOrGetter; /** * Monochromatic logo color, applied through a CSS custom property. */ color: MaybeRefOrGetter; /** * Logo background color. */ background: MaybeRefOrGetter; /** * When true, the logo shrinks to fit a viewport narrower than its intrinsic * width; otherwise it keeps its computed pixel width. */ responsive: MaybeRefOrGetter; } /** * Reactive API returned by {@link useBrandExpansion}. */ export interface UseBrandExpansion { width: ComputedRef; height: ComputedRef; style: ComputedRef; } /** * Derives the geometry and inline style for the `BrandExpansion` logo: scales * the mode-specific SVG width to the requested height, falls back to a fluid * width when responsive mode meets a viewport narrower than the logo, and * exposes the color/background custom properties. * * @param options - Reactive geometry options (see {@link UseBrandExpansionOptions}). * @returns The {@link UseBrandExpansion} API: `width` and `height` CSS values * for the SVG, plus the `style` binding for the host element. * @example * import { toRef } from 'vue' * import { useBrandExpansion } from '@/composables/useBrandExpansion' * * const { width, height, style } = useBrandExpansion({ * size: toRef(props, 'size'), * mode: toRef(props, 'mode'), * color: toRef(props, 'color'), * background: toRef(props, 'background'), * responsive: toRef(props, 'responsive') * }) */ export declare function useBrandExpansion(options: UseBrandExpansionOptions): UseBrandExpansion; export default useBrandExpansion;