analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
82 lines (79 loc) • 2.8 kB
TypeScript
import * as react from 'react';
import { HTMLAttributes } from 'react';
import * as react_jsx_runtime from 'react/jsx-runtime';
/**
* Interface para definir uma alternativa
*/
interface Alternative {
value: string;
label: string;
status?: 'correct' | 'incorrect' | 'neutral';
disabled?: boolean;
description?: string;
}
/**
* Props do componente AlternativesList
*/
interface AlternativesListProps {
/** Lista de alternativas */
alternatives: Alternative[];
/** Nome do grupo de radio */
name?: string;
/** Valor selecionado por padrão */
defaultValue?: string;
/** Valor controlado */
value?: string;
/** Callback quando uma alternativa é selecionada */
onValueChange?: (value: string) => void;
/** Se o componente está desabilitado */
disabled?: boolean;
/** Layout das alternativas */
layout?: 'default' | 'compact' | 'detailed';
/** Classes CSS adicionais */
className?: string;
/** Modo de exibição: interativo (com radios funcionais) ou readonly (apenas visual) */
mode?: 'interactive' | 'readonly';
/** Valor selecionado pelo usuário (apenas para modo readonly) */
selectedValue?: string;
}
/**
* Componente reutilizável para exibir lista de alternativas com RadioGroup
*
* Suporta dois modos:
* - `interactive`: Permite interação com radios (padrão)
* - `readonly`: Apenas exibição visual dos estados
*
* @example
* ```tsx
* // Modo interativo (padrão)
* <AlternativesList
* mode="interactive"
* alternatives={[
* { value: "a", label: "Alternativa A", status: "correct" },
* { value: "b", label: "Alternativa B", status: "incorrect" },
* { value: "c", label: "Alternativa C" }
* ]}
* defaultValue="a"
* onValueChange={(value) => console.log(value)}
* />
*
* // Modo readonly - mostra seleção do usuário
* <AlternativesList
* mode="readonly"
* selectedValue="b" // O que o usuário selecionou
* alternatives={[
* { value: "a", label: "Resposta A", status: "correct" }, // Mostra como correta
* { value: "b", label: "Resposta B" }, // Mostra radio selecionado + badge incorreto
* { value: "c", label: "Resposta C" }
* ]}
* />
* ```
*/
declare const AlternativesList: ({ alternatives, name, defaultValue, value, onValueChange, disabled, layout, className, mode, selectedValue, }: AlternativesListProps) => react_jsx_runtime.JSX.Element;
interface HeaderAlternativeProps extends HTMLAttributes<HTMLDivElement> {
title: string;
subTitle: string;
content: string;
}
declare const HeaderAlternative: react.ForwardRefExoticComponent<HeaderAlternativeProps & react.RefAttributes<HTMLDivElement>>;
export { type Alternative, AlternativesList, type AlternativesListProps, HeaderAlternative };