{"version":3,"file":"Stat.cjs","names":[],"sources":["../../../src/components/Stat/Stat.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Stat.module.css\";\n\nexport type StatTrend = \"up\" | \"down\" | \"flat\";\n\nexport interface StatProps extends HTMLAttributes<HTMLDivElement> {\n    /** Metric label (e.g. \"Revenue\", \"Active users\"). */\n    label: ReactNode;\n    /** Metric value (e.g. \"R$ 12.345\", \"1.2k\"). */\n    value: ReactNode;\n    /** Optional comparison delta — when set, renders alongside the value. */\n    delta?: ReactNode;\n    /** Trend direction for the delta. Default inferred from delta string. */\n    trend?: StatTrend;\n    /** Optional supporting context line below the value. */\n    hint?: ReactNode;\n    /** Optional leading icon. */\n    icon?: ReactNode;\n}\n\nfunction inferTrend(delta: ReactNode | undefined): StatTrend | undefined {\n    if (typeof delta !== \"string\") return undefined;\n    const trimmed = delta.trim();\n    if (trimmed.startsWith(\"+\")) return \"up\";\n    if (trimmed.startsWith(\"-\") || trimmed.startsWith(\"−\")) return \"down\";\n    return undefined;\n}\n\n/**\n * KPI card. Dashboard widget showing a label + big value + optional\n * delta/trend and hint.\n *\n * @example\n * <Stat label=\"Receita\" value=\"R$ 12.345\" delta=\"+12,4%\" trend=\"up\" hint=\"vs. mês anterior\" />\n */\nexport function Stat({ label, value, delta, trend, hint, icon, className, ...props }: StatProps) {\n    const resolvedTrend: StatTrend | undefined = trend ?? inferTrend(delta);\n    return (\n        <div className={cn(styles.stat, className)} {...props}>\n            <div className={styles.header}>\n                {icon && <span className={styles.icon}>{icon}</span>}\n                <span className={styles.label}>{label}</span>\n            </div>\n            <div className={styles.row}>\n                <span className={styles.value}>{value}</span>\n                {delta !== undefined && (\n                    <span\n                        className={cn(\n                            styles.delta,\n                            resolvedTrend === \"up\" && styles.up,\n                            resolvedTrend === \"down\" && styles.down,\n                            resolvedTrend === \"flat\" && styles.flat,\n                        )}\n                    >\n                        {delta}\n                    </span>\n                )}\n            </div>\n            {hint && <p className={styles.hint}>{hint}</p>}\n        </div>\n    );\n}\n"],"mappings":"wGAqBA,SAAS,EAAW,EAAqD,CACrE,GAAI,OAAO,GAAU,SAAU,OAC/B,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,EAAQ,WAAW,GAAG,EAAG,MAAO,KACpC,GAAI,EAAQ,WAAW,GAAG,GAAK,EAAQ,WAAW,GAAG,EAAG,MAAO,MAEnE,CASA,SAAgB,EAAK,CAAE,QAAO,QAAO,QAAO,QAAO,OAAM,OAAM,YAAW,GAAG,GAAoB,CAC7F,IAAM,EAAuC,GAAS,EAAW,CAAK,EACtE,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,GAAG,EAAA,QAAO,KAAM,CAAS,EAAG,GAAI,EAAhD,SAAA,EACI,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,OAAvB,SAAA,CACK,IAAQ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAO,SAAA,CAAW,CAAA,GACnD,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,CAAY,CAAA,CAC3C,KACL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,IAAvB,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAQ,SAAA,CAAY,CAAA,EAC3C,IAAU,IAAA,KACP,EAAA,EAAA,IAAA,CAAC,OAAD,CACI,UAAW,EAAA,GACP,EAAA,QAAO,MACP,IAAkB,MAAQ,EAAA,QAAO,GACjC,IAAkB,QAAU,EAAA,QAAO,KACnC,IAAkB,QAAU,EAAA,QAAO,IACvC,EAEC,SAAA,CACC,CAAA,CAET,IACJ,IAAQ,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAA,QAAO,KAAO,SAAA,CAAQ,CAAA,CAC5C,GAEb"}