/** * @fileoverview Base primitive for brand-logo Phosphor icons. * * Brand logos extend the standard four Phosphor weights with a fifth, * `"colorful"` — the canonical multi-color brand mark from Iconify's `logos:` * set. The colorful path can't reuse {@link IconBase} because brand SVGs * have non-square viewBoxes (Apple is 256×315, Discord is 256×199, …) and * use hardcoded brand colors instead of `currentColor`. * * BrandIconBase forks the render at the top: * - weight === "colorful" → emit own `` with the brand viewBox + content * - otherwise → delegate to {@link IconBase} * * @module @saasflare/ui/components/ui/phosphor/brand-icon-base */ import * as React from "react"; import { type IconWeight, type PhosphorIconProps } from "./icon-base"; /** Brand-logo weight set: standard Phosphor weights + the colored brand variant. */ export type BrandIconWeight = IconWeight | "colorful"; /** Public props accepted by every brand-logo icon. Mirrors {@link PhosphorIconProps}, widened to accept `"colorful"`. */ export interface BrandIconProps extends Omit { /** Visual weight. Defaults to "regular". */ weight?: BrandIconWeight; } /** The colorful payload — its own viewBox plus the colored SVG content. */ export interface BrandColorful { /** Native viewBox of the brand SVG (often non-square — keep it intact for correct proportions). */ viewBox: string; /** SVG children (paths, etc.) rendered inside the brand viewBox. */ content: React.ReactNode; } /** Internal props — adds the per-icon weights map and colorful payload. */ export interface BrandIconBaseProps extends BrandIconProps { weights: Record; colorful: BrandColorful; } export declare const BrandIconBase: React.ForwardRefExoticComponent>;