--- name: funnel_chart kind: component lang: ts domain: ui version: "1.0.0" purity: impure signature: "FunnelChart(props: FunnelChartProps): JSX.Element" description: "Visualiza un funnel de conversión con barras degradadas, valores formateados y tasa de conversión entre etapas como Badge semántico. Genérico — acepta cualquier array {stage,value}." tags: [funnel, conversion, dashboard, component, ui, chart, acquisition, analytics] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: ["@mantine/core", react] output: "Componente FunnelChart que renderiza un funnel vertical de conversión con porcentajes entre etapas." tested: false tests: [] test_file_path: "" file_path: "frontend/functions/ui/funnel_chart.tsx" props: - name: data type: "FunnelStage[]" required: true description: "Etapas del funnel. Cada etapa con { stage: string, value: number }." - name: valueFormatter type: "(value: number) => string" required: false description: "Formateador del valor absoluto. Default: compact (K/M/B)." - name: showConversion type: "boolean" required: false description: "Mostrar tasa de conversión entre etapas como Badge. Default true." - name: barHeight type: "number" required: false description: "Alto de cada barra en px. Default 28." - name: goodThreshold type: "number" required: false description: "Tasa de conversión (%) por encima de la cual el Badge es 'success'. Default 30." - name: warnThreshold type: "number" required: false description: "Tasa de conversión (%) por encima de la cual el Badge es 'info' (por debajo → 'warning'). Default 5." - name: barLabel type: "(stage: FunnelStage, pctOfMax: number) => string" required: false description: "Texto opcional dentro de cada barra." - name: barColor type: "string" required: false description: "Color o gradient CSS a aplicar a las barras. Default: gradient indigo→cyan." emits: [] has_state: false framework: react variant: [default] source_repo: "claude.ai/design" source_license: "" source_file: "sources/frontend_designs/Ads Analytics Dashboard _standalone_.html" --- ## Ejemplo ```tsx import { FunnelChart } from '@fn_library' const funnel = [ { stage: 'Impressions', value: 12_400_000 }, { stage: 'Clicks', value: 214_807 }, { stage: 'Sessions', value: 186_904 }, { stage: 'Add to cart', value: 24_113 }, { stage: 'Checkout', value: 9_642 }, { stage: 'Conversions', value: 4_812 }, ] // Básico — conversión automática entre etapas // Moneda + altura mayor '$' + n.toLocaleString()} barHeight={36} /> // Umbrales custom de conversión (ej. funnel de lead gen donde >10% ya es bueno) ``` ## Notas - La barra se dimensiona como porcentaje del valor máximo (primera etapa por defecto). - La tasa de conversión se calcula contra la **etapa anterior**, no contra el máximo. - Extraído de un export de Claude Design (Ads Analytics Dashboard). El `AdsFunnel` original estaba hardcodeado con gradient indigo→cyan; aquí se generaliza con `barColor` y `barLabel`. - Los tres colores semánticos del Badge (`success`/`info`/`warning`) son configurables vía `goodThreshold` y `warnThreshold`.