@celke/kole-react 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +254 -2
- package/dist/components/Abas/Abas.d.ts +55 -0
- package/dist/components/AcaoLinha/AcaoLinha.d.ts +12 -0
- package/dist/components/Acordeao/Acordeao.d.ts +42 -0
- package/dist/components/Alerta/Alerta.d.ts +39 -0
- package/dist/components/Arquivo/CampoAnexo.d.ts +27 -0
- package/dist/components/Arquivo/DialogoArquivo.d.ts +11 -0
- package/dist/components/Arquivo/Foto.d.ts +29 -0
- package/dist/components/Arquivo/VisualizadorArquivo.d.ts +12 -0
- package/dist/components/Avaliacao/Avaliacao.d.ts +30 -0
- package/dist/components/Avatar/Avatar.d.ts +12 -0
- package/dist/components/Badge/Badge.d.ts +43 -0
- package/dist/components/Balao/Balao.d.ts +30 -0
- package/dist/components/BoasVindas/BoasVindas.d.ts +19 -0
- package/dist/components/Botao/Botao.d.ts +40 -0
- package/dist/components/BotaoFechar/BotaoFechar.d.ts +10 -0
- package/dist/components/Busca/Busca.d.ts +27 -0
- package/dist/components/CabecalhoPagina/CabecalhoPagina.d.ts +21 -0
- package/dist/components/Campo/Campo.d.ts +63 -0
- package/dist/components/CampoBusca/CampoBusca.d.ts +28 -0
- package/dist/components/CampoBusca/CampoCidade.d.ts +25 -0
- package/dist/components/CampoDominio/CampoDominio.d.ts +17 -0
- package/dist/components/CampoMarcacao/CampoMarcacao.d.ts +13 -0
- package/dist/components/CampoMensagem/CampoMensagem.d.ts +31 -0
- package/dist/components/CampoSelect/CampoSelect.d.ts +25 -0
- package/dist/components/CampoSenha/CampoSenha.d.ts +16 -0
- package/dist/components/CampoTextarea/CampoTextarea.d.ts +11 -0
- package/dist/components/CampoTexto/CampoTexto.d.ts +63 -0
- package/dist/components/Card/Card.d.ts +51 -0
- package/dist/components/Carregando/Carregando.d.ts +10 -0
- package/dist/components/Carrossel/Carrossel.d.ts +33 -0
- package/dist/components/Chip/Chip.d.ts +11 -0
- package/dist/components/Citacao/Citacao.d.ts +20 -0
- package/dist/components/Confirmacao/Confirmacao.d.ts +35 -0
- package/dist/components/Conversa/Conversa.d.ts +21 -0
- package/dist/components/Detalhes/Detalhes.d.ts +12 -0
- package/dist/components/Dialogo/Dialogo.d.ts +37 -0
- package/dist/components/Dialogo/Sobreposicao.d.ts +19 -0
- package/dist/components/Dica/Dica.d.ts +15 -0
- package/dist/components/Escolha/Escolha.d.ts +14 -0
- package/dist/components/Estrutura/Estrutura.d.ts +106 -0
- package/dist/components/Filtros/Filtros.d.ts +22 -0
- package/dist/components/Form/Form.d.ts +85 -0
- package/dist/components/Girador/Girador.d.ts +15 -0
- package/dist/components/GrupoBotoes/GrupoBotoes.d.ts +56 -0
- package/dist/components/Imagem/Imagem.d.ts +40 -0
- package/dist/components/Indicador/Indicador.d.ts +29 -0
- package/dist/components/Lista/Lista.d.ts +47 -0
- package/dist/components/ListaCards/ListaCards.d.ts +28 -0
- package/dist/components/Mensagem/Mensagem.d.ts +40 -0
- package/dist/components/MenuSuspenso/MenuSuspenso.d.ts +79 -0
- package/dist/components/Paginacao/Paginacao.d.ts +13 -0
- package/dist/components/Picklist/Picklist.d.ts +28 -0
- package/dist/components/Placa/Placa.d.ts +9 -0
- package/dist/components/Preferencias/Preferencias.d.ts +26 -0
- package/dist/components/Progresso/Progresso.d.ts +42 -0
- package/dist/components/QuadroArrastavel/QuadroArrastavel.d.ts +27 -0
- package/dist/components/Recolhivel/Recolhivel.d.ts +14 -0
- package/dist/components/Referencias/Referencias.d.ts +24 -0
- package/dist/components/Skeleton/Skeleton.d.ts +8 -0
- package/dist/components/Status/Status.d.ts +10 -0
- package/dist/components/Tabela/Tabela.d.ts +57 -0
- package/dist/components/TelaErro/TelaErro.d.ts +25 -0
- package/dist/components/TelaLogin/TelaLogin.d.ts +66 -0
- package/dist/components/Toast/Toast.d.ts +62 -0
- package/dist/components/Trilha/Trilha.d.ts +60 -0
- package/dist/components/Vazio/Vazio.d.ts +12 -0
- package/dist/css.d.ts +1 -0
- package/dist/estilos.css +72 -0
- package/dist/fonts/LICENSE +93 -0
- package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
- package/dist/index.d.ts +81 -0
- package/dist/index.js +6915 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens.css +325 -0
- package/dist/utils/Icone.d.ts +22 -0
- package/dist/utils/anexos.d.ts +20 -0
- package/dist/utils/constantes.d.ts +14 -0
- package/dist/utils/cx.d.ts +2 -0
- package/dist/utils/datas.d.ts +17 -0
- package/dist/utils/entidade.d.ts +19 -0
- package/dist/utils/jwt.d.ts +11 -0
- package/dist/utils/mascara.d.ts +19 -0
- package/dist/utils/picklist.d.ts +15 -0
- package/dist/utils/portal.d.ts +8 -0
- package/dist/utils/senha.d.ts +21 -0
- package/dist/utils/severidade.d.ts +7 -0
- package/dist/utils/texto.d.ts +28 -0
- package/dist/utils/tipos.d.ts +8 -0
- package/dist/utils/tiposCampo.d.ts +12 -0
- package/dist/utils/useBuscaAssincrona.d.ts +22 -0
- package/dist/utils/useCliqueFora.d.ts +3 -0
- package/dist/utils/usePosicaoFlutuante.d.ts +13 -0
- package/dist/utils/validadores.d.ts +42 -0
- package/package.json +81 -4
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export type SeveridadeBotao = 'pri' | 'secundario' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'escuro';
|
|
4
|
+
/**
|
|
5
|
+
* `solido` · `contorno` · `texto` · `suave` = fundo claro da cor · `gradiente`
|
|
6
|
+
* · `fantasma` = contorno discreto que se preenche no hover.
|
|
7
|
+
*/
|
|
8
|
+
export type AparenciaBotao = 'solido' | 'contorno' | 'texto' | 'suave' | 'gradiente' | 'fantasma';
|
|
9
|
+
/** Padrões que um grupo (`GrupoBotoes`) repassa aos botões de dentro. */
|
|
10
|
+
export interface PadroesBotao {
|
|
11
|
+
severidade?: SeveridadeBotao;
|
|
12
|
+
aparencia?: AparenciaBotao;
|
|
13
|
+
formato?: 'pilula' | 'retangulo';
|
|
14
|
+
tamanho?: 'pequeno' | 'medio' | 'grande';
|
|
15
|
+
}
|
|
16
|
+
export declare const PadroesBotaoCtx: import("react").Context<PadroesBotao>;
|
|
17
|
+
export interface BotaoProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
18
|
+
rotulo?: string;
|
|
19
|
+
icone?: IconeProp;
|
|
20
|
+
posicaoIcone?: 'esquerda' | 'direita';
|
|
21
|
+
severidade?: SeveridadeBotao;
|
|
22
|
+
aparencia?: AparenciaBotao;
|
|
23
|
+
/** Mostra spinner e recusa o clique (o botão segue focável). */
|
|
24
|
+
carregando?: boolean;
|
|
25
|
+
/** Ocupa 100% da largura. */
|
|
26
|
+
bloco?: boolean;
|
|
27
|
+
/** `pilula` (padrão) · `retangulo` = cantos levemente arredondados. */
|
|
28
|
+
formato?: 'pilula' | 'retangulo';
|
|
29
|
+
tamanho?: 'pequeno' | 'medio' | 'grande';
|
|
30
|
+
/** Sombra fixa, ou `elevado` (sombra da cor que sobe no hover). */
|
|
31
|
+
sombra?: 'pequena' | 'media' | 'grande' | 'elevado';
|
|
32
|
+
/** Ícone num segmento mais escuro, colado à borda ("botão com rótulo"). */
|
|
33
|
+
iconeDestacado?: boolean;
|
|
34
|
+
/** Botão de alternância: liga/desliga (vira `aria-pressed`). */
|
|
35
|
+
pressionado?: boolean;
|
|
36
|
+
/** Balão de dica — use em botões só com ícone. */
|
|
37
|
+
dica?: string;
|
|
38
|
+
children?: ReactNode;
|
|
39
|
+
}
|
|
40
|
+
export declare const Botao: import("react").ForwardRefExoticComponent<BotaoProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
export interface BotaoFecharProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
3
|
+
/** `claro` = para fundos escuros. */
|
|
4
|
+
variante?: 'padrao' | 'claro';
|
|
5
|
+
tamanho?: 'pequeno' | 'medio';
|
|
6
|
+
/** Nome para leitor de tela (padrão: "Fechar"). */
|
|
7
|
+
rotulo?: string;
|
|
8
|
+
}
|
|
9
|
+
/** O × de fechar (avisos, diálogos, painéis), com o nome acessível. */
|
|
10
|
+
export declare function BotaoFechar({ variante, tamanho, rotulo, className, type, ...resto }: BotaoFecharProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export interface ItemBusca {
|
|
4
|
+
rotulo: string;
|
|
5
|
+
rota: string;
|
|
6
|
+
icone?: IconeProp;
|
|
7
|
+
/** Caminho no menu (ex.: "Cadastros › Pessoas"). */
|
|
8
|
+
trilha?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface BuscaProps {
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
/** Mostra spinner no lugar da lupa. */
|
|
13
|
+
ocupado?: boolean;
|
|
14
|
+
/** Itens de menu filtrados pelo termo (seção "Menu" do painel). */
|
|
15
|
+
itensMenu?: ItemBusca[];
|
|
16
|
+
aoNavegar?: (rota: string) => void;
|
|
17
|
+
/** Enter sem item de menu ativo. */
|
|
18
|
+
aoBuscar?: (termo: string) => void;
|
|
19
|
+
aoMudarTermo?: (termo: string) => void;
|
|
20
|
+
/** Ctrl+K / ⌘K foca a busca (padrão: sim). */
|
|
21
|
+
atalho?: boolean;
|
|
22
|
+
/** Resultados do app no painel; marque opções navegáveis com `data-busca-opcao`. */
|
|
23
|
+
children?: ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Busca global da topbar: filtra o menu e hospeda resultados do app. */
|
|
27
|
+
export declare function Busca({ placeholder, ocupado, itensMenu, aoNavegar, aoBuscar, aoMudarTermo, atalho, children, className, }: BuscaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
import { type ItemTrilha } from '../Trilha/Trilha.js';
|
|
4
|
+
export interface CabecalhoPaginaProps {
|
|
5
|
+
titulo: string;
|
|
6
|
+
icone?: IconeProp;
|
|
7
|
+
/** Linha pequena em caixa alta acima do título. */
|
|
8
|
+
categoria?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Trilha de navegação logo abaixo do título. `true` = caminho automático do
|
|
11
|
+
* menu (via `Estrutura`); lista = automático + estes passos no fim (ex.: o
|
|
12
|
+
* registro aberto).
|
|
13
|
+
*/
|
|
14
|
+
trilha?: boolean | ItemTrilha[];
|
|
15
|
+
/** Botões à direita do título. */
|
|
16
|
+
acoes?: ReactNode;
|
|
17
|
+
/** Texto descritivo abaixo. */
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function CabecalhoPagina({ titulo, icone, categoria, trilha, acoes, children, className }: CabecalhoPaginaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** Props comuns a todo campo de formulário. */
|
|
3
|
+
export interface CampoBaseProps {
|
|
4
|
+
rotulo?: string;
|
|
5
|
+
/** Texto de ajuda abaixo do campo. */
|
|
6
|
+
dica?: string;
|
|
7
|
+
/** Mensagem de erro (pinta o campo de vermelho). */
|
|
8
|
+
erro?: string;
|
|
9
|
+
/** Aviso não-bloqueante (âmbar). */
|
|
10
|
+
aviso?: string;
|
|
11
|
+
obrigatorio?: boolean;
|
|
12
|
+
/** `campo` = rótulo em cima · `inline` = pílula com rótulo dentro (barras de filtro). */
|
|
13
|
+
variante?: 'campo' | 'inline';
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CampoProps extends CampoBaseProps {
|
|
17
|
+
htmlFor?: string;
|
|
18
|
+
msgId?: string;
|
|
19
|
+
children: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Contador de "tentativas de salvar" do formulário em volta. O `Form` o
|
|
23
|
+
* incrementa a cada envio; acima de zero, todo campo revela sua pendência
|
|
24
|
+
* mesmo sem ter sido tocado.
|
|
25
|
+
*/
|
|
26
|
+
export declare const RevelarCamposCtx: import("react").Context<number>;
|
|
27
|
+
export declare const MSG_OBRIGATORIO = "Campo obrigat\u00F3rio";
|
|
28
|
+
interface OpcoesValidacao {
|
|
29
|
+
valor: string;
|
|
30
|
+
/** Regra de formato do campo: mensagem, ou `''` se válido. */
|
|
31
|
+
validar?: (valor: string) => string;
|
|
32
|
+
obrigatorio?: boolean;
|
|
33
|
+
/** Erro vindo do app — sempre vence. */
|
|
34
|
+
erro?: string;
|
|
35
|
+
aviso?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Regra de exibição de pendência:
|
|
39
|
+
* - o erro só aparece ao SAIR do campo depois de o usuário mexer nele, ou
|
|
40
|
+
* quando o formulário tenta salvar;
|
|
41
|
+
* - um valor recebido de fora (carga de registro) que não atende ao formato
|
|
42
|
+
* NÃO é reformatado nem recusado: vira aviso âmbar não bloqueante.
|
|
43
|
+
*/
|
|
44
|
+
export declare function useValidacaoCampo({ valor, validar, obrigatorio, erro, aviso }: OpcoesValidacao): {
|
|
45
|
+
erro: string | undefined;
|
|
46
|
+
aviso: string | undefined;
|
|
47
|
+
/** Chame no evento de digitação/gesto real do usuário. */
|
|
48
|
+
aoInteragir: () => void;
|
|
49
|
+
/** Chame no blur do controle. */
|
|
50
|
+
aoSair: () => false | void;
|
|
51
|
+
};
|
|
52
|
+
/** Ids estáveis do campo e da mensagem associada (aria-describedby). */
|
|
53
|
+
export declare function useCampoIds(idExterno?: string): {
|
|
54
|
+
id: string;
|
|
55
|
+
msgId: string;
|
|
56
|
+
};
|
|
57
|
+
export declare function descricaoDe(p: Pick<CampoBaseProps, 'erro' | 'aviso' | 'dica'>, msgId: string): string | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Moldura de campo: rótulo, asterisco de obrigatório, erro/aviso/dica.
|
|
60
|
+
* Envolve qualquer controle — os campos da biblioteca já a usam por dentro.
|
|
61
|
+
*/
|
|
62
|
+
export declare function Campo({ rotulo, dica, erro, aviso, obrigatorio, variante, className, htmlFor, msgId, children, }: CampoProps): import("react").JSX.Element;
|
|
63
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Key } from 'react';
|
|
2
|
+
import { type CampoBaseProps } from '../Campo/Campo.js';
|
|
3
|
+
export interface CampoBuscaProps<T> extends CampoBaseProps {
|
|
4
|
+
/** A busca do módulo: termo → registros. */
|
|
5
|
+
buscar: (termo: string) => Promise<T[]>;
|
|
6
|
+
/** Texto do registro (no campo e em cada linha do painel). */
|
|
7
|
+
paraRotulo: (item: T) => string;
|
|
8
|
+
/** Linha secundária opcional no painel (ex.: CPF, lotação). */
|
|
9
|
+
paraDetalhe?: (item: T) => string | undefined;
|
|
10
|
+
/** Chave de cada resultado (padrão: `item.id` ou o rótulo). */
|
|
11
|
+
chave?: (item: T) => Key;
|
|
12
|
+
/** O REGISTRO escolhido — texto digitado sem escolha não é valor. */
|
|
13
|
+
valor?: T | null;
|
|
14
|
+
aoMudar?: (valor: T | null) => void;
|
|
15
|
+
/** Mínimo de caracteres para buscar (padrão: 1). */
|
|
16
|
+
minimo?: number;
|
|
17
|
+
atraso?: number;
|
|
18
|
+
placeholder?: string;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
id?: string;
|
|
21
|
+
/** Mensagem quando a busca não acha nada. */
|
|
22
|
+
vazioTexto?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Autocompletar com busca no servidor: o jeito canônico de buscar e vincular
|
|
26
|
+
* uma entidade (pessoa, servidor, fornecedor…) grande demais para carregar inteira.
|
|
27
|
+
*/
|
|
28
|
+
export declare function CampoBusca<T>({ rotulo, dica, erro, aviso, obrigatorio, variante, className, id: idExterno, buscar, paraRotulo, paraDetalhe, chave, valor, aoMudar, minimo, atraso, placeholder, disabled, vazioTexto, }: CampoBuscaProps<T>): import("react").JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CampoBaseProps } from '../Campo/Campo.js';
|
|
2
|
+
export interface Municipio {
|
|
3
|
+
id: string | number;
|
|
4
|
+
nome: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CampoCidadeProps extends CampoBaseProps {
|
|
7
|
+
/** UF que filtra os municípios (`''` = nenhuma). Trocar de UF limpa a cidade. */
|
|
8
|
+
uf: string;
|
|
9
|
+
/**
|
|
10
|
+
* Municípios da UF. Sem esta função o campo vira texto livre
|
|
11
|
+
* (continua utilizável, só não sugere).
|
|
12
|
+
*/
|
|
13
|
+
buscarPorUf?: (uf: string) => Promise<Municipio[]>;
|
|
14
|
+
/** O município escolhido — ou o texto digitado, no modo texto livre. */
|
|
15
|
+
valor?: Municipio | string | null;
|
|
16
|
+
aoMudar?: (valor: Municipio | string | null) => void;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
id?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Município filtrado pela UF, com a cascata UF → cidade embutida: quando a
|
|
23
|
+
* UF muda, a cidade da UF anterior é limpa pelo próprio campo.
|
|
24
|
+
*/
|
|
25
|
+
export declare function CampoCidade({ uf, buscarPorUf, valor, aoMudar, placeholder, disabled, ...p }: CampoCidadeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type CampoSelectMultiploProps, type CampoSelectProps } from '../CampoSelect/CampoSelect.js';
|
|
2
|
+
type SemOpcoes<P> = Omit<P, 'opcoes'>;
|
|
3
|
+
export interface CampoUfProps extends SemOpcoes<CampoSelectProps<string>> {
|
|
4
|
+
/** `sigla` = "PR" · `completo` = "PR — Paraná" (padrão). */
|
|
5
|
+
exibicao?: 'sigla' | 'completo';
|
|
6
|
+
}
|
|
7
|
+
/** UF (estado) a partir de `ESTADOS`; o valor é a sigla. */
|
|
8
|
+
export declare function CampoUf({ exibicao, comBusca, placeholder, ...p }: CampoUfProps): import("react").JSX.Element;
|
|
9
|
+
export interface CampoUfMultiploProps extends SemOpcoes<CampoSelectMultiploProps<string>> {
|
|
10
|
+
exibicao?: 'sigla' | 'completo';
|
|
11
|
+
}
|
|
12
|
+
/** Várias UFs; o valor é a lista de siglas. */
|
|
13
|
+
export declare function CampoUfMultiplo({ exibicao, comBusca, placeholder, ...p }: CampoUfMultiploProps): import("react").JSX.Element;
|
|
14
|
+
export type CampoTipoPessoaProps = SemOpcoes<CampoSelectProps<'F' | 'J'>>;
|
|
15
|
+
/** Pessoa física (`F`) ou jurídica (`J`). */
|
|
16
|
+
export declare function CampoTipoPessoa({ placeholder, ...p }: CampoTipoPessoaProps): import("react").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { InputHTMLAttributes } from 'react';
|
|
2
|
+
export interface CampoMarcacaoProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'defaultChecked' | 'className' | 'value'> {
|
|
3
|
+
rotulo?: string;
|
|
4
|
+
valor?: boolean;
|
|
5
|
+
aoMudar?: (valor: boolean) => void;
|
|
6
|
+
/** `caixa` = checkbox · `chave` = interruptor (switch). */
|
|
7
|
+
aparencia?: 'caixa' | 'chave';
|
|
8
|
+
dica?: string;
|
|
9
|
+
erro?: string;
|
|
10
|
+
obrigatorio?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function CampoMarcacao({ rotulo, valor, aoMudar, aparencia, dica, erro, obrigatorio, className, id: idExterno, onChange, ...resto }: CampoMarcacaoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface CampoMensagemProps {
|
|
3
|
+
valor: string;
|
|
4
|
+
aoMudar: (valor: string) => void;
|
|
5
|
+
/** Recebe o texto sem espaços nas pontas; nunca é chamado com texto vazio. */
|
|
6
|
+
aoEnviar: (texto: string) => void;
|
|
7
|
+
/** Uma resposta está chegando: o Enviar vira Parar. */
|
|
8
|
+
gerando?: boolean;
|
|
9
|
+
/** Chamado pelo botão Parar (sem ele, o Parar fica desabilitado). */
|
|
10
|
+
aoParar?: () => void;
|
|
11
|
+
desabilitado?: boolean;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
/** Limite de caracteres; o contador aparece perto do limite. */
|
|
14
|
+
maxCaracteres?: number;
|
|
15
|
+
/** Até quantas linhas o campo cresce antes de rolar. */
|
|
16
|
+
linhasMaximas?: number;
|
|
17
|
+
autoFocus?: boolean;
|
|
18
|
+
/** Botões próprios do app à esquerda do Enviar (anexar, escolher documentos…). */
|
|
19
|
+
acoesExtras?: ReactNode;
|
|
20
|
+
/** Rótulo do campo para leitores de tela. */
|
|
21
|
+
rotulo?: string;
|
|
22
|
+
rotuloEnviar?: string;
|
|
23
|
+
rotuloParar?: string;
|
|
24
|
+
id?: string;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Campo de envio de mensagem: Enter envia, Shift+Enter quebra a linha. Cresce
|
|
29
|
+
* com o texto até `linhasMaximas` e depois rola.
|
|
30
|
+
*/
|
|
31
|
+
export declare const CampoMensagem: import("react").ForwardRefExoticComponent<CampoMensagemProps & import("react").RefAttributes<HTMLTextAreaElement>>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Opcao } from '../../utils/tipos.js';
|
|
2
|
+
import { type CampoBaseProps } from '../Campo/Campo.js';
|
|
3
|
+
interface BaseSelectProps<V> extends CampoBaseProps {
|
|
4
|
+
opcoes: Opcao<V>[];
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
/** Digitar filtra as opções. */
|
|
7
|
+
comBusca?: boolean;
|
|
8
|
+
/** Mostra o "×" para limpar quando há valor. */
|
|
9
|
+
botaoLimpar?: boolean;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
id?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CampoSelectProps<V = string> extends BaseSelectProps<V> {
|
|
14
|
+
valor?: V | null;
|
|
15
|
+
aoMudar?: (valor: V | null) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface CampoSelectMultiploProps<V = string> extends BaseSelectProps<V> {
|
|
18
|
+
valor?: V[];
|
|
19
|
+
aoMudar?: (valor: V[]) => void;
|
|
20
|
+
}
|
|
21
|
+
/** Select de opção única. */
|
|
22
|
+
export declare function CampoSelect<V = string>({ valor, aoMudar, ...p }: CampoSelectProps<V>): import("react").JSX.Element;
|
|
23
|
+
/** Select de várias opções (com caixas de marcação). */
|
|
24
|
+
export declare function CampoSelectMultiplo<V = string>({ valor, aoMudar, ...p }: CampoSelectMultiploProps<V>): import("react").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type PoliticaSenha } from '../../utils/senha.js';
|
|
2
|
+
import { type CampoTextoProps } from '../CampoTexto/CampoTexto.js';
|
|
3
|
+
export interface CampoSenhaProps extends Omit<CampoTextoProps, 'type' | 'mascara' | 'maiuscula' | 'prefixo' | 'sufixo'> {
|
|
4
|
+
/** Botão de olho para mostrar/ocultar (padrão: sim). */
|
|
5
|
+
revelavel?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Liga o medidor de força E a validação pela `politica`. Desligado no
|
|
8
|
+
* login — não se cobra política de uma senha que já existe.
|
|
9
|
+
*/
|
|
10
|
+
forca?: boolean;
|
|
11
|
+
politica?: PoliticaSenha;
|
|
12
|
+
/** `new-password` em cadastro/troca de senha (padrão: `current-password`). */
|
|
13
|
+
autoComplete?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Senha com olho, aviso de Caps Lock e medidor de força opcional. */
|
|
16
|
+
export declare function CampoSenha({ revelavel, forca, politica, autoComplete, className, valor, validar, aviso, onKeyDown, onKeyUp, disabled, ...p }: CampoSenhaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type TextareaHTMLAttributes } from 'react';
|
|
2
|
+
import { type CampoBaseProps } from '../Campo/Campo.js';
|
|
3
|
+
type TextareaNativo = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'className'>;
|
|
4
|
+
export interface CampoTextareaProps extends Omit<CampoBaseProps, 'variante'>, TextareaNativo {
|
|
5
|
+
valor?: string;
|
|
6
|
+
aoMudar?: (valor: string) => void;
|
|
7
|
+
/** Com `maxLength`, mostra o contador `n/máx` no canto. */
|
|
8
|
+
contador?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const CampoTextarea: import("react").ForwardRefExoticComponent<CampoTextareaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
import { type Mascara } from '../../utils/mascara.js';
|
|
4
|
+
import { type CampoBaseProps } from '../Campo/Campo.js';
|
|
5
|
+
type InputNativo = Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'className'>;
|
|
6
|
+
export interface CampoTextoProps extends CampoBaseProps, InputNativo {
|
|
7
|
+
valor?: string;
|
|
8
|
+
aoMudar?: (valor: string) => void;
|
|
9
|
+
/** Ícone à esquerda, dentro do campo. */
|
|
10
|
+
icone?: IconeProp;
|
|
11
|
+
/** Máscara de digitação (`0` dígito, `A` letra, `S` alfanumérico). */
|
|
12
|
+
mascara?: Mascara;
|
|
13
|
+
/** Converte o texto para CAIXA ALTA enquanto digita. */
|
|
14
|
+
maiuscula?: boolean;
|
|
15
|
+
/** Texto fixo antes do valor (ex.: "R$"). */
|
|
16
|
+
prefixo?: ReactNode;
|
|
17
|
+
/** Conteúdo após o valor (ex.: botão de lupa). */
|
|
18
|
+
sufixo?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* Regra de formato: devolve a mensagem, ou `''` se válido. O erro aparece
|
|
21
|
+
* ao sair do campo depois de digitar (ou ao salvar o `Form`).
|
|
22
|
+
*/
|
|
23
|
+
validar?: (valor: string) => string;
|
|
24
|
+
}
|
|
25
|
+
export declare const CampoTexto: import("react").ForwardRefExoticComponent<CampoTextoProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
26
|
+
type Preset = Omit<CampoTextoProps, 'mascara'>;
|
|
27
|
+
export declare const CampoCpf: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
28
|
+
export declare const CampoCnpj: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
29
|
+
/** CPF ou CNPJ: a máscara muda pelo número de dígitos. */
|
|
30
|
+
export declare const CampoCpfCnpj: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
31
|
+
export declare const CampoCep: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
32
|
+
export declare const CampoPlaca: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
33
|
+
export declare const CampoEmail: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
34
|
+
/** RENAVAM: 9 a 11 dígitos. */
|
|
35
|
+
export declare const CampoRenavam: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
36
|
+
/** Chassi (VIN): 17 caracteres, sem I, O e Q. */
|
|
37
|
+
export declare const CampoChassi: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
38
|
+
/** CNH com dígitos verificadores do DENATRAN. */
|
|
39
|
+
export declare const CampoCnh: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
40
|
+
/** IMEI com verificação de Luhn. */
|
|
41
|
+
export declare const CampoImei: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
42
|
+
export interface CampoTelefoneProps extends Preset {
|
|
43
|
+
/** Restringe a fixo (10 dígitos) ou celular (11). Sem `tipo`, aceita os dois. */
|
|
44
|
+
tipo?: 'fixo' | 'celular';
|
|
45
|
+
}
|
|
46
|
+
export declare const CampoTelefone: import("react").ForwardRefExoticComponent<CampoTelefoneProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
47
|
+
/** Data no formato ISO (`AAAA-MM-DD`), com o seletor nativo do navegador. */
|
|
48
|
+
export declare const CampoData: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
49
|
+
/** Hora `HH:MM`. */
|
|
50
|
+
export declare const CampoHora: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
51
|
+
/** Data e hora `AAAA-MM-DDTHH:MM`. */
|
|
52
|
+
export declare const CampoDataHora: import("react").ForwardRefExoticComponent<Preset & import("react").RefAttributes<HTMLInputElement>>;
|
|
53
|
+
/** Valor em reais: digita-se da direita (centavos primeiro), como no caixa. */
|
|
54
|
+
export declare const CampoMoeda: import("react").ForwardRefExoticComponent<Omit<CampoTextoProps, "valor" | "aoMudar" | "mascara"> & {
|
|
55
|
+
valor?: number | null;
|
|
56
|
+
aoMudar?: (valor: number | null) => void;
|
|
57
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
58
|
+
/** Número inteiro (só dígitos). */
|
|
59
|
+
export declare const CampoInteiro: import("react").ForwardRefExoticComponent<Omit<CampoTextoProps, "valor" | "aoMudar" | "mascara"> & {
|
|
60
|
+
valor?: number | null;
|
|
61
|
+
aoMudar?: (valor: number | null) => void;
|
|
62
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
63
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import type { Severidade } from '../../utils/tipos.js';
|
|
3
|
+
/** Mesmas cores do `Alerta`/`Badge`. */
|
|
4
|
+
export type CorCard = Severidade | 'pri' | 'destaque';
|
|
5
|
+
export interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onClick' | 'title'> {
|
|
6
|
+
/** Capa que sangra até a borda (imagem, mapa…). */
|
|
7
|
+
midia?: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Onde fica a mídia: `topo` (padrão) · `base` · `esquerda`/`direita`
|
|
10
|
+
* (card horizontal) · `fundo` (texto sobre a imagem, com véu escuro).
|
|
11
|
+
*/
|
|
12
|
+
posicaoMidia?: 'topo' | 'base' | 'esquerda' | 'direita' | 'fundo';
|
|
13
|
+
/** Título do cabeçalho (com linha embaixo). */
|
|
14
|
+
titulo?: ReactNode;
|
|
15
|
+
subtitulo?: ReactNode;
|
|
16
|
+
/** Conteúdo à direita do título (botões, badge). */
|
|
17
|
+
ferramentas?: ReactNode;
|
|
18
|
+
/** Botão de recolher/expandir o corpo no cabeçalho. */
|
|
19
|
+
recolhivel?: boolean;
|
|
20
|
+
/** Começa recolhido (com `recolhivel`). */
|
|
21
|
+
recolhidoInicial?: boolean;
|
|
22
|
+
/** Botão de fechar no cabeçalho: o card sai da tela. */
|
|
23
|
+
dispensavel?: boolean;
|
|
24
|
+
aoFechar?: () => void;
|
|
25
|
+
/** Botão que abre o card em tela cheia (Esc volta). */
|
|
26
|
+
telaCheia?: boolean;
|
|
27
|
+
/** Ações flutuantes no canto superior direito (aparecem no hover). */
|
|
28
|
+
acoes?: ReactNode;
|
|
29
|
+
rodape?: ReactNode;
|
|
30
|
+
/** Fundo na cor (texto claro/escuro conforme o contraste). */
|
|
31
|
+
cor?: CorCard;
|
|
32
|
+
/** Borda na cor, fundo normal. */
|
|
33
|
+
borda?: CorCard;
|
|
34
|
+
alinhamento?: 'esquerda' | 'centro' | 'direita';
|
|
35
|
+
/** Corpo sem espaçamento interno (listas, tabelas, imagem inteira). */
|
|
36
|
+
corpoSemEspaco?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Painel de leitura que COBRE o card ao passar o mouse ou focar (ex.: algumas
|
|
39
|
+
* linhas de `<Detalhes>`). Enriquecimento rápido, não substitui a ficha.
|
|
40
|
+
*/
|
|
41
|
+
detalhes?: ReactNode;
|
|
42
|
+
/** Torna o card inteiro clicável (role=button + Enter/Espaço). */
|
|
43
|
+
aoClicar?: () => void;
|
|
44
|
+
children?: ReactNode;
|
|
45
|
+
}
|
|
46
|
+
export declare function Card({ midia, posicaoMidia, titulo, subtitulo, ferramentas, recolhivel, recolhidoInicial, dispensavel, aoFechar, telaCheia, acoes, rodape, cor, borda, alinhamento, corpoSemEspaco, detalhes, aoClicar, children, className, ...resto }: CardProps): import("react").JSX.Element | null;
|
|
47
|
+
/** Cards colados lado a lado, com a mesma altura (vira coluna em tela estreita). */
|
|
48
|
+
export declare function GrupoCards({ children, className }: {
|
|
49
|
+
children: ReactNode;
|
|
50
|
+
className?: string;
|
|
51
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface CarregandoProps {
|
|
2
|
+
mensagem?: string;
|
|
3
|
+
/** Imagem da marca (ex.: logo) no lugar do anel. */
|
|
4
|
+
logo?: string;
|
|
5
|
+
/** Cobre a página inteira com máscara e bloqueia interação. */
|
|
6
|
+
bloqueante?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Indicador de espera de seção/página. Para listas, prefira Skeleton. */
|
|
10
|
+
export declare function Carregando({ mensagem, logo, bloqueante, className }: CarregandoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface SlideCarrossel {
|
|
3
|
+
imagem: string;
|
|
4
|
+
alt: string;
|
|
5
|
+
titulo?: ReactNode;
|
|
6
|
+
descricao?: ReactNode;
|
|
7
|
+
/** Tempo deste slide, em ms (sobrepõe o `intervalo` do carrossel). */
|
|
8
|
+
intervalo?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface CarrosselProps {
|
|
11
|
+
slides: SlideCarrossel[];
|
|
12
|
+
/** Nome do carrossel para leitor de tela. */
|
|
13
|
+
rotulo: string;
|
|
14
|
+
/** Avança sozinho. Desligado para quem prefere menos movimento. */
|
|
15
|
+
automatico?: boolean;
|
|
16
|
+
/** Tempo de cada slide, em ms. */
|
|
17
|
+
intervalo?: number;
|
|
18
|
+
/** Setas de anterior/próximo. */
|
|
19
|
+
controles?: boolean;
|
|
20
|
+
/** Tracinhos que levam a cada slide. */
|
|
21
|
+
indicadores?: boolean;
|
|
22
|
+
/** `deslizar` (padrão) ou `esmaecer`. */
|
|
23
|
+
transicao?: 'deslizar' | 'esmaecer';
|
|
24
|
+
/** Controles e legendas escuros, para imagens claras. */
|
|
25
|
+
escuro?: boolean;
|
|
26
|
+
/** Arrastar para os lados no toque/mouse troca o slide. */
|
|
27
|
+
arrastar?: boolean;
|
|
28
|
+
/** Proporção da área (ex.: `'16 / 9'`). */
|
|
29
|
+
proporcao?: string;
|
|
30
|
+
className?: string;
|
|
31
|
+
}
|
|
32
|
+
/** Carrossel de imagens com legendas, setas, indicadores e avanço automático. */
|
|
33
|
+
export declare function Carrossel({ slides, rotulo, automatico, intervalo, controles, indicadores, transicao, escuro, arrastar, proporcao, className, }: CarrosselProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ChipProps {
|
|
2
|
+
rotulo: string;
|
|
3
|
+
/** Nome do que está etiquetado (ex.: "Protocolo" → PROTOCOLO: 123). */
|
|
4
|
+
campo?: string;
|
|
5
|
+
/** Mostra o "×" e dispara `aoRemover`. */
|
|
6
|
+
aoRemover?: () => void;
|
|
7
|
+
/** `false` tira o "×" da ordem do Tab (chips dentro de controles compostos). */
|
|
8
|
+
focavel?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function Chip({ rotulo, campo, aoRemover, focavel, className }: ChipProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export type CorCitacao = 'pri' | 'secundario' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'escuro';
|
|
4
|
+
export interface CitacaoProps {
|
|
5
|
+
/** O texto citado. */
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
/** Quem disse. */
|
|
8
|
+
autor?: ReactNode;
|
|
9
|
+
/** De onde veio (livro, discurso…), em itálico depois do autor. */
|
|
10
|
+
fonte?: ReactNode;
|
|
11
|
+
cor?: CorCitacao;
|
|
12
|
+
/** `simples` = filete na lateral · `cartao` = fundo claro da cor, ícone e aspas. */
|
|
13
|
+
aparencia?: 'simples' | 'cartao';
|
|
14
|
+
alinhamento?: 'inicio' | 'centro' | 'fim';
|
|
15
|
+
/** Ícone no canto do cartão (só na aparência `cartao`). */
|
|
16
|
+
icone?: IconeProp;
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Citação (blockquote) com autor e fonte. */
|
|
20
|
+
export declare function Citacao({ children, autor, fonte, cor, aparencia, alinhamento, icone, className }: CitacaoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type SeveridadeBotao } from '../Botao/Botao.js';
|
|
3
|
+
export interface OpcoesConfirmacao {
|
|
4
|
+
titulo: string;
|
|
5
|
+
mensagem?: ReactNode;
|
|
6
|
+
severidade?: Exclude<SeveridadeBotao, 'secundario'>;
|
|
7
|
+
icone?: string;
|
|
8
|
+
rotuloAceitar?: string;
|
|
9
|
+
rotuloRecusar?: string;
|
|
10
|
+
iconeAceitar?: string;
|
|
11
|
+
/** Só o botão de OK (aviso). */
|
|
12
|
+
somenteOk?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Remoção: sempre vermelha e com lixeira (não dá para trocar). */
|
|
15
|
+
export type OpcoesRemocao = Omit<Partial<OpcoesConfirmacao>, 'severidade' | 'iconeAceitar' | 'somenteOk'>;
|
|
16
|
+
/** Aviso: um botão só, para ciência. */
|
|
17
|
+
export type OpcoesAviso = Omit<OpcoesConfirmacao, 'somenteOk' | 'rotuloRecusar'>;
|
|
18
|
+
export interface Confirmar {
|
|
19
|
+
(opcoes: OpcoesConfirmacao): Promise<boolean>;
|
|
20
|
+
/** Atalho institucional de exclusão de dado salvo (irreversível). */
|
|
21
|
+
remover: (opcoes?: OpcoesRemocao) => Promise<boolean>;
|
|
22
|
+
/** Só ciência — "alertar" é `avisar({ severidade: 'err' })`. */
|
|
23
|
+
avisar: (opcoes: OpcoesAviso) => Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/** Fornece `useConfirmacao()` para a árvore. Já incluso no `ProvedorUi`. */
|
|
26
|
+
export declare function ProvedorConfirmacao({ children }: {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
}): import("react").JSX.Element;
|
|
29
|
+
/**
|
|
30
|
+
* `const confirmar = useConfirmacao();`
|
|
31
|
+
* `if (await confirmar({ titulo: 'Excluir?', severidade: 'err' })) …`
|
|
32
|
+
* `if (await confirmar.remover({ mensagem: '"TJ-PR 2026" será removido.' })) …`
|
|
33
|
+
* `await confirmar.avisar({ titulo: 'Prazo encerrado', severidade: 'warn' })`
|
|
34
|
+
*/
|
|
35
|
+
export declare function useConfirmacao(): Confirmar;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface ConversaProps {
|
|
3
|
+
/** As mensagens (`Mensagem`), da mais antiga para a mais nova. */
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
/** Mostrado quando não há mensagens. Padrão: um `Vazio`. */
|
|
6
|
+
vazio?: ReactNode;
|
|
7
|
+
/** Campo de envio fixo abaixo da rolagem (normalmente um `CampoMensagem`). */
|
|
8
|
+
campo?: ReactNode;
|
|
9
|
+
/** Largura máxima das mensagens e do campo, centralizados (ex.: `48rem` numa página inteira). */
|
|
10
|
+
larguraMaxima?: string;
|
|
11
|
+
/** Nome da conversa para leitores de tela. */
|
|
12
|
+
rotulo?: string;
|
|
13
|
+
rotuloIrParaFim?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Área rolável de uma conversa. Acompanha o fim quando chegam mensagens ou a
|
|
18
|
+
* última cresce (streaming); se a pessoa rolar para cima, para de puxar e
|
|
19
|
+
* mostra "Ir para o fim". Ocupa a altura do contêiner pai.
|
|
20
|
+
*/
|
|
21
|
+
export declare function Conversa({ children, vazio, campo, larguraMaxima, rotulo, rotuloIrParaFim, className, }: ConversaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface DetalhesProps {
|
|
3
|
+
rotulo: string;
|
|
4
|
+
/** Valor em texto; `children` substitui. Vazio mostra travessão. */
|
|
5
|
+
valor?: ReactNode;
|
|
6
|
+
/** `coluna` = rótulo em cima · `linha` = rótulo à esquerda, valor à direita. */
|
|
7
|
+
disposicao?: 'coluna' | 'linha';
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Par rótulo/valor para telas de visualização. */
|
|
12
|
+
export declare function Detalhes({ rotulo, valor, disposicao, children, className }: DetalhesProps): import("react").JSX.Element;
|