{"version":3,"file":"Spinner.cjs","names":[],"sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Spinner.module.css\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SpinnerProps {\n    size?: SpinnerSize;\n    className?: string;\n    /** Accessible label announced by screen readers. */\n    label?: string;\n    /**\n     * Visible caption rendered under the spinner. When set, the spinner and\n     * caption are wrapped in a centered column.\n     */\n    caption?: ReactNode;\n    /**\n     * Center the spinner inside a full-area overlay (fills the nearest\n     * positioned ancestor; pair with a relative container or a route fallback).\n     * Implies the wrapped layout.\n     */\n    overlay?: boolean;\n}\n\n/**\n * Loading spinner with preset sizes (xs..xl). Provide `label` for screen\n * readers, `caption` for a visible message, and `overlay` to center it inside a\n * full-area container (e.g. a Suspense / route fallback).\n *\n * @example\n * <Spinner />\n * <Spinner size=\"lg\" caption=\"Carregando…\" overlay />\n */\nexport function Spinner({\n    size = \"md\",\n    className,\n    label = \"Carregando\",\n    caption,\n    overlay = false,\n}: SpinnerProps) {\n    const dot = <span aria-hidden className={cn(styles.spinner, styles[size])} />;\n\n    if (!overlay && caption === undefined) {\n        return (\n            <span\n                role=\"status\"\n                aria-label={label}\n                className={cn(styles.spinner, styles[size], className)}\n            />\n        );\n    }\n\n    return (\n        <div\n            role=\"status\"\n            aria-label={label}\n            aria-live=\"polite\"\n            className={cn(styles.wrap, overlay && styles.overlay, className)}\n        >\n            {dot}\n            {caption !== undefined && <span className={styles.caption}>{caption}</span>}\n        </div>\n    );\n}\n"],"mappings":"2GAiCA,SAAgB,EAAQ,CACpB,OAAO,KACP,YACA,QAAQ,aACR,UACA,UAAU,IACG,CACb,IAAM,GAAM,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,cAAA,GAAY,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,EAAA,QAAO,EAAK,CAAI,CAAA,EAY5E,MAVI,CAAC,GAAW,IAAY,IAAA,IAEpB,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,KAAK,SACL,aAAY,EACZ,UAAW,EAAA,GAAG,EAAA,QAAO,QAAS,EAAA,QAAO,GAAO,CAAS,CACxD,CAAA,GAKL,EAAA,EAAA,KAAA,CAAC,MAAD,CACI,KAAK,SACL,aAAY,EACZ,YAAU,SACV,UAAW,EAAA,GAAG,EAAA,QAAO,KAAM,GAAW,EAAA,QAAO,QAAS,CAAS,EAJnE,SAAA,CAMK,EACA,IAAY,IAAA,KAAa,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,QAAU,SAAA,CAAc,CAAA,CACzE,GAEb"}