@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.
Files changed (102) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +254 -2
  3. package/dist/components/Abas/Abas.d.ts +55 -0
  4. package/dist/components/AcaoLinha/AcaoLinha.d.ts +12 -0
  5. package/dist/components/Acordeao/Acordeao.d.ts +42 -0
  6. package/dist/components/Alerta/Alerta.d.ts +39 -0
  7. package/dist/components/Arquivo/CampoAnexo.d.ts +27 -0
  8. package/dist/components/Arquivo/DialogoArquivo.d.ts +11 -0
  9. package/dist/components/Arquivo/Foto.d.ts +29 -0
  10. package/dist/components/Arquivo/VisualizadorArquivo.d.ts +12 -0
  11. package/dist/components/Avaliacao/Avaliacao.d.ts +30 -0
  12. package/dist/components/Avatar/Avatar.d.ts +12 -0
  13. package/dist/components/Badge/Badge.d.ts +43 -0
  14. package/dist/components/Balao/Balao.d.ts +30 -0
  15. package/dist/components/BoasVindas/BoasVindas.d.ts +19 -0
  16. package/dist/components/Botao/Botao.d.ts +40 -0
  17. package/dist/components/BotaoFechar/BotaoFechar.d.ts +10 -0
  18. package/dist/components/Busca/Busca.d.ts +27 -0
  19. package/dist/components/CabecalhoPagina/CabecalhoPagina.d.ts +21 -0
  20. package/dist/components/Campo/Campo.d.ts +63 -0
  21. package/dist/components/CampoBusca/CampoBusca.d.ts +28 -0
  22. package/dist/components/CampoBusca/CampoCidade.d.ts +25 -0
  23. package/dist/components/CampoDominio/CampoDominio.d.ts +17 -0
  24. package/dist/components/CampoMarcacao/CampoMarcacao.d.ts +13 -0
  25. package/dist/components/CampoMensagem/CampoMensagem.d.ts +31 -0
  26. package/dist/components/CampoSelect/CampoSelect.d.ts +25 -0
  27. package/dist/components/CampoSenha/CampoSenha.d.ts +16 -0
  28. package/dist/components/CampoTextarea/CampoTextarea.d.ts +11 -0
  29. package/dist/components/CampoTexto/CampoTexto.d.ts +63 -0
  30. package/dist/components/Card/Card.d.ts +51 -0
  31. package/dist/components/Carregando/Carregando.d.ts +10 -0
  32. package/dist/components/Carrossel/Carrossel.d.ts +33 -0
  33. package/dist/components/Chip/Chip.d.ts +11 -0
  34. package/dist/components/Citacao/Citacao.d.ts +20 -0
  35. package/dist/components/Confirmacao/Confirmacao.d.ts +35 -0
  36. package/dist/components/Conversa/Conversa.d.ts +21 -0
  37. package/dist/components/Detalhes/Detalhes.d.ts +12 -0
  38. package/dist/components/Dialogo/Dialogo.d.ts +37 -0
  39. package/dist/components/Dialogo/Sobreposicao.d.ts +19 -0
  40. package/dist/components/Dica/Dica.d.ts +15 -0
  41. package/dist/components/Escolha/Escolha.d.ts +14 -0
  42. package/dist/components/Estrutura/Estrutura.d.ts +106 -0
  43. package/dist/components/Filtros/Filtros.d.ts +22 -0
  44. package/dist/components/Form/Form.d.ts +85 -0
  45. package/dist/components/Girador/Girador.d.ts +15 -0
  46. package/dist/components/GrupoBotoes/GrupoBotoes.d.ts +56 -0
  47. package/dist/components/Imagem/Imagem.d.ts +40 -0
  48. package/dist/components/Indicador/Indicador.d.ts +29 -0
  49. package/dist/components/Lista/Lista.d.ts +47 -0
  50. package/dist/components/ListaCards/ListaCards.d.ts +28 -0
  51. package/dist/components/Mensagem/Mensagem.d.ts +40 -0
  52. package/dist/components/MenuSuspenso/MenuSuspenso.d.ts +79 -0
  53. package/dist/components/Paginacao/Paginacao.d.ts +13 -0
  54. package/dist/components/Picklist/Picklist.d.ts +28 -0
  55. package/dist/components/Placa/Placa.d.ts +9 -0
  56. package/dist/components/Preferencias/Preferencias.d.ts +26 -0
  57. package/dist/components/Progresso/Progresso.d.ts +42 -0
  58. package/dist/components/QuadroArrastavel/QuadroArrastavel.d.ts +27 -0
  59. package/dist/components/Recolhivel/Recolhivel.d.ts +14 -0
  60. package/dist/components/Referencias/Referencias.d.ts +24 -0
  61. package/dist/components/Skeleton/Skeleton.d.ts +8 -0
  62. package/dist/components/Status/Status.d.ts +10 -0
  63. package/dist/components/Tabela/Tabela.d.ts +57 -0
  64. package/dist/components/TelaErro/TelaErro.d.ts +25 -0
  65. package/dist/components/TelaLogin/TelaLogin.d.ts +66 -0
  66. package/dist/components/Toast/Toast.d.ts +62 -0
  67. package/dist/components/Trilha/Trilha.d.ts +60 -0
  68. package/dist/components/Vazio/Vazio.d.ts +12 -0
  69. package/dist/css.d.ts +1 -0
  70. package/dist/estilos.css +72 -0
  71. package/dist/fonts/LICENSE +93 -0
  72. package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  73. package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  74. package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  75. package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
  76. package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  77. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  78. package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  79. package/dist/index.d.ts +81 -0
  80. package/dist/index.js +6915 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/tokens.css +325 -0
  83. package/dist/utils/Icone.d.ts +22 -0
  84. package/dist/utils/anexos.d.ts +20 -0
  85. package/dist/utils/constantes.d.ts +14 -0
  86. package/dist/utils/cx.d.ts +2 -0
  87. package/dist/utils/datas.d.ts +17 -0
  88. package/dist/utils/entidade.d.ts +19 -0
  89. package/dist/utils/jwt.d.ts +11 -0
  90. package/dist/utils/mascara.d.ts +19 -0
  91. package/dist/utils/picklist.d.ts +15 -0
  92. package/dist/utils/portal.d.ts +8 -0
  93. package/dist/utils/senha.d.ts +21 -0
  94. package/dist/utils/severidade.d.ts +7 -0
  95. package/dist/utils/texto.d.ts +28 -0
  96. package/dist/utils/tipos.d.ts +8 -0
  97. package/dist/utils/tiposCampo.d.ts +12 -0
  98. package/dist/utils/useBuscaAssincrona.d.ts +22 -0
  99. package/dist/utils/useCliqueFora.d.ts +3 -0
  100. package/dist/utils/usePosicaoFlutuante.d.ts +13 -0
  101. package/dist/utils/validadores.d.ts +42 -0
  102. package/package.json +81 -4
@@ -0,0 +1,13 @@
1
+ export interface PaginacaoProps {
2
+ total: number;
3
+ /** Página atual, começando em 1. */
4
+ pagina: number;
5
+ tamanho: number;
6
+ tamanhoOpcoes?: number[];
7
+ aoMudarPagina: (pagina: number) => void;
8
+ aoMudarTamanho?: (tamanho: number) => void;
9
+ /** Sem borda própria (dentro do card da tabela). */
10
+ embutida?: boolean;
11
+ className?: string;
12
+ }
13
+ export declare function Paginacao({ total, pagina, tamanho, tamanhoOpcoes, aoMudarPagina, aoMudarTamanho, embutida, className, }: PaginacaoProps): import("react").JSX.Element;
@@ -0,0 +1,28 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type PicklistValor } from '../../utils/picklist.js';
3
+ import { type CampoBaseProps } from '../Campo/Campo.js';
4
+ export interface PicklistProps<T> extends Omit<CampoBaseProps, 'variante'> {
5
+ valor?: PicklistValor<T>;
6
+ aoMudar?: (valor: PicklistValor<T>) => void;
7
+ rotuloFonte?: string;
8
+ rotuloAlvo?: string;
9
+ /** Texto do item (linha, filtro e anúncios). Obrigatório para objetos. */
10
+ paraRotulo?: (item: T) => string;
11
+ /** Linha customizada; padrão = `paraRotulo(item)`. */
12
+ renderItem?: (item: T) => ReactNode;
13
+ /** Campo de busca no topo de cada lista. */
14
+ filtro?: boolean;
15
+ /** Arrastar e soltar como caminho ADICIONAL (o teclado sempre funciona). */
16
+ dragdrop?: boolean;
17
+ /** Reordenar dentro da lista (Alt + setas, ou arrastando). */
18
+ reordenar?: boolean;
19
+ alturaLista?: string;
20
+ disabled?: boolean;
21
+ id?: string;
22
+ }
23
+ /**
24
+ * Transferência entre duas listas (disponíveis × selecionados). Teclado:
25
+ * setas movem o foco, Espaço marca, Enter transfere, Alt+setas reordena;
26
+ * duplo clique também transfere.
27
+ */
28
+ export declare function Picklist<T>({ rotulo, dica, erro, aviso, obrigatorio, className, id: idExterno, valor: valorBruto, aoMudar, rotuloFonte, rotuloAlvo, paraRotulo, renderItem, filtro, dragdrop, reordenar, alturaLista, disabled, }: PicklistProps<T>): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ export interface PlacaProps {
2
+ /** Número da placa (ex.: `QBX-7H42`) — sempre exibido em maiúsculas. */
3
+ numero: string;
4
+ /** UF da faixa superior (padrão: PR). */
5
+ uf?: string;
6
+ className?: string;
7
+ }
8
+ /** Arte da placa de veículo (faixa BRASIL/UF + número), só leitura. */
9
+ export declare function Placa({ numero, uf, className }: PlacaProps): import("react").JSX.Element;
@@ -0,0 +1,26 @@
1
+ import { type ReactNode } from 'react';
2
+ export type Tema = 'claro' | 'escuro';
3
+ export type Densidade = 'compacta' | 'confortavel' | 'espacosa';
4
+ export interface Preferencias {
5
+ tema: Tema;
6
+ escuro: boolean;
7
+ densidade: Densidade;
8
+ definirTema: (t: Tema) => void;
9
+ alternarTema: () => void;
10
+ definirDensidade: (d: Densidade) => void;
11
+ }
12
+ export interface ProvedorPreferenciasProps {
13
+ children: ReactNode;
14
+ temaInicial?: Tema;
15
+ densidadeInicial?: Densidade;
16
+ }
17
+ /**
18
+ * Tema (claro/escuro) e densidade, lembrados no navegador. Aplica
19
+ * `data-theme` no <html> e a classe de densidade no <body>.
20
+ */
21
+ export declare function ProvedorPreferencias({ children, temaInicial, densidadeInicial }: ProvedorPreferenciasProps): import("react").JSX.Element;
22
+ export declare function usePreferencias(): Preferencias;
23
+ /** Tudo que a biblioteca precisa na raiz do app: preferências, toasts e confirmação. */
24
+ export declare function ProvedorUi({ children, ...prefs }: ProvedorPreferenciasProps): import("react").JSX.Element;
25
+ /** Igual a `usePreferencias`, mas devolve `null` fora do provedor. */
26
+ export declare function usePreferenciasOpcional(): Preferencias | null;
@@ -0,0 +1,42 @@
1
+ export type CorProgresso = 'pri' | 'secundario' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'escuro';
2
+ export interface SegmentoProgresso {
3
+ valor: number;
4
+ cor?: CorProgresso;
5
+ /** Nome do segmento (leitor de tela e texto `dentro`). */
6
+ rotulo?: string;
7
+ }
8
+ export interface ProgressoProps {
9
+ /** Valor atual (0 a `max`). Ignorado quando há `segmentos`. */
10
+ valor?: number;
11
+ max?: number;
12
+ /** Várias barras empilhadas na mesma trilha. */
13
+ segmentos?: SegmentoProgresso[];
14
+ cor?: CorProgresso;
15
+ /** `listrado` = faixas diagonais · `gradiente` = clareia no começo. */
16
+ aparencia?: 'solido' | 'listrado' | 'gradiente';
17
+ /** Faixas em movimento (com `listrado`). */
18
+ animado?: boolean;
19
+ /** A barra cresce do zero ao aparecer. */
20
+ entrada?: boolean;
21
+ altura?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
22
+ /**
23
+ * Onde mostrar o valor: `dentro` da barra · no `fim` da linha · `balao`
24
+ * acima da ponta · `pilula` na ponta da barra.
25
+ */
26
+ mostrarValor?: 'nenhum' | 'dentro' | 'fim' | 'balao' | 'pilula';
27
+ /** Bolinha na ponta da barra. */
28
+ marcador?: boolean;
29
+ /** Pontos de marco ao longo da trilha (valores, ex.: `[25, 50, 75]`). */
30
+ marcos?: number[];
31
+ /** Trilha com o tom claro da cor. */
32
+ trilhaColorida?: boolean;
33
+ /** Selo colorido no começo da barra (ex.: "Celulares"). */
34
+ etiqueta?: string;
35
+ /** Nome acessível (ex.: "Envio do arquivo"). */
36
+ rotulo?: string;
37
+ /** Formata o valor exibido (padrão: porcentagem). */
38
+ formatar?: (valor: number, max: number) => string;
39
+ className?: string;
40
+ }
41
+ /** Barra de progresso: simples, listrada, em gradiente, com marcos, balão de valor ou várias barras. */
42
+ export declare function Progresso({ valor, max, segmentos, cor, aparencia, animado, entrada, altura, mostrarValor, marcador, marcos, trilhaColorida, etiqueta, rotulo, formatar, className, }: ProgressoProps): import("react").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface ColunaArrastavel<T> {
3
+ id: string;
4
+ /** Nome da coluna (anunciado ao mover pelo teclado). */
5
+ titulo?: string;
6
+ itens: T[];
7
+ }
8
+ export interface QuadroArrastavelProps<T extends {
9
+ id: string;
10
+ }> {
11
+ colunas: ColunaArrastavel<T>[];
12
+ /** Recebe as colunas já reordenadas. */
13
+ aoMudar: (colunas: ColunaArrastavel<T>[]) => void;
14
+ /** Desenha o item; ponha a `alca` (botão de arrastar) onde quiser, ex.: no cabeçalho do card. */
15
+ renderItem: (item: T, alca: ReactNode) => ReactNode;
16
+ /** Nome de cada item para leitor de tela (ex.: o título do card). */
17
+ nomeItem: (item: T) => string;
18
+ className?: string;
19
+ }
20
+ /**
21
+ * Colunas de itens (cards) que se reordenam arrastando, entre colunas
22
+ * inclusive. Mouse, toque e teclado: na alça, Espaço pega/solta, setas movem,
23
+ * Esc devolve ao lugar de origem.
24
+ */
25
+ export declare function QuadroArrastavel<T extends {
26
+ id: string;
27
+ }>({ colunas, aoMudar, renderItem, nomeItem, className }: QuadroArrastavelProps<T>): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface RecolhivelProps {
3
+ aberto: boolean;
4
+ children: ReactNode;
5
+ /** `vertical` (padrão) anima a altura; `horizontal`, a largura. */
6
+ orientacao?: 'vertical' | 'horizontal';
7
+ id?: string;
8
+ className?: string;
9
+ }
10
+ /**
11
+ * Mostra/esconde o conteúdo com animação. Fechado, o conteúdo sai da ordem de
12
+ * foco e do leitor de tela (`inert`).
13
+ */
14
+ export declare function Recolhivel({ aberto, children, orientacao, id, className }: RecolhivelProps): import("react").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface ItemReferencia {
3
+ id: string;
4
+ /** Nome da fonte (documento, página, artigo…). */
5
+ titulo: ReactNode;
6
+ /** Linha curta ao lado do título (ex.: "Página 3"). */
7
+ detalhe?: ReactNode;
8
+ /** Trecho citado; aparece truncado, com opção de expandir. */
9
+ trecho?: ReactNode;
10
+ /** Torna o título um link (abre em nova aba). */
11
+ href?: string;
12
+ }
13
+ export interface ReferenciasProps {
14
+ itens: ItemReferencia[];
15
+ /** Começa aberta. */
16
+ abertoInicial?: boolean;
17
+ /** Texto do botão que abre a lista. Padrão: "3 fontes". */
18
+ rotulo?: (quantidade: number) => ReactNode;
19
+ rotuloMostrarMais?: string;
20
+ rotuloMostrarMenos?: string;
21
+ className?: string;
22
+ }
23
+ /** Lista recolhível de fontes/citações de uma mensagem (vai no `rodape` da `Mensagem`). */
24
+ export declare function Referencias({ itens, abertoInicial, rotulo, rotuloMostrarMais, rotuloMostrarMenos, className, }: ReferenciasProps): import("react").JSX.Element | null;
@@ -0,0 +1,8 @@
1
+ export interface SkeletonProps {
2
+ largura?: string;
3
+ altura?: string;
4
+ formato?: 'retangulo' | 'circulo';
5
+ className?: string;
6
+ }
7
+ /** Silhueta de carregamento. */
8
+ export declare function Skeleton({ largura, altura, formato, className }: SkeletonProps): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { type IconeProp } from '../../utils/Icone.js';
2
+ import type { Severidade } from '../../utils/tipos.js';
3
+ export interface StatusProps {
4
+ rotulo: string;
5
+ severidade?: Severidade;
6
+ icone?: IconeProp;
7
+ className?: string;
8
+ }
9
+ /** Selo de situação (Ativo, Pendente, Cancelado…). */
10
+ export declare function Status({ rotulo, severidade, icone, className }: StatusProps): import("react").JSX.Element;
@@ -0,0 +1,57 @@
1
+ import { type Key, type ReactNode } from 'react';
2
+ import { lerCampo } from '../../utils/texto.js';
3
+ import type { Severidade } from '../../utils/tipos.js';
4
+ import { type PaginacaoProps } from '../Paginacao/Paginacao.js';
5
+ export interface Coluna<T> {
6
+ /** Chave do campo no registro (aceita caminho com ponto: `endereco.cidade`). */
7
+ campo: string;
8
+ rotulo: string;
9
+ ordenavel?: boolean;
10
+ alinhamento?: 'esquerda' | 'centro' | 'direita';
11
+ /** Texto forte (coluna principal). */
12
+ destaque?: boolean;
13
+ maiuscula?: boolean;
14
+ largura?: string;
15
+ /** Formata o valor cru da célula. */
16
+ formato?: (valor: unknown, linha: T) => ReactNode;
17
+ /** Renderiza a célula como selo de situação. */
18
+ severidade?: (linha: T) => Severidade;
19
+ /** Célula totalmente customizada. */
20
+ render?: (linha: T) => ReactNode;
21
+ }
22
+ export interface Ordenacao {
23
+ campo: string;
24
+ direcao: 'asc' | 'desc';
25
+ }
26
+ export interface TabelaProps<T> {
27
+ colunas: Coluna<T>[];
28
+ registros: T[];
29
+ /** Chave de cada linha (padrão: `linha.id` ou o índice). */
30
+ chave?: (linha: T, indice: number) => Key;
31
+ /** Botões de ação por linha (use `<AcaoLinha>`), na última coluna. */
32
+ acoes?: (linha: T) => ReactNode;
33
+ aparencia?: 'listrada' | 'grade';
34
+ rotulo?: string;
35
+ /** Primeira carga: silhuetas no lugar das linhas. */
36
+ carregando?: boolean;
37
+ /** Recarga (paginar/ordenar): mantém a tabela esmaecida. */
38
+ atualizando?: boolean;
39
+ erro?: string | boolean;
40
+ aoRecarregar?: () => void;
41
+ vazioTitulo?: string;
42
+ vazioDescricao?: string;
43
+ vazioIcone?: string;
44
+ vazioAcoes?: ReactNode;
45
+ ordenacao?: Ordenacao | null;
46
+ aoOrdenar?: (campo: string) => void;
47
+ selecao?: 'unica' | 'multipla';
48
+ selecionados?: Key[];
49
+ aoMudarSelecao?: (chaves: Key[]) => void;
50
+ aoClicarLinha?: (linha: T) => void;
51
+ /** Paginação controlada (servidor). */
52
+ paginacao?: Omit<PaginacaoProps, 'embutida' | 'className'>;
53
+ className?: string;
54
+ }
55
+ /** Mantido por compatibilidade: é o `lerCampo` dos utilitários. */
56
+ export declare const valorDoCampo: typeof lerCampo;
57
+ export declare function Tabela<T>({ colunas, registros, chave, acoes, aparencia, rotulo, carregando, atualizando, erro, aoRecarregar, vazioTitulo, vazioDescricao, vazioIcone, vazioAcoes, ordenacao, aoOrdenar, selecao, selecionados, aoMudarSelecao, aoClicarLinha, paginacao, className, }: TabelaProps<T>): import("react").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type IconeProp } from '../../utils/Icone.js';
3
+ import type { Marca } from '../Estrutura/Estrutura.js';
4
+ export interface TelaErroProps {
5
+ /** Código grande em destaque (ex.: 404). */
6
+ codigo: string | number;
7
+ /** Frase principal (vira o `h1` da página). */
8
+ titulo: string;
9
+ descricao?: ReactNode;
10
+ /** Ícone no selo acima do código. */
11
+ icone?: IconeProp;
12
+ /** Cor do código: `pri` (padrão) · `warn` · `err`. */
13
+ cor?: 'pri' | 'warn' | 'err';
14
+ /** Botões (voltar, tentar de novo, entrar…). */
15
+ acoes?: ReactNode;
16
+ /** Informação técnica miúda (ex.: código do incidente para o suporte). */
17
+ detalhe?: ReactNode;
18
+ /** Marca no topo, como na tela de login. */
19
+ marca?: Marca;
20
+ /** `cheia` (padrão) ocupa a janela; `contida` cabe dentro da moldura do sistema. */
21
+ tela?: 'cheia' | 'contida';
22
+ className?: string;
23
+ }
24
+ /** Página de erro (401, 404, 500…) com código em destaque e caminhos de saída. */
25
+ export declare function TelaErro({ codigo, titulo, descricao, icone, cor, acoes, detalhe, marca, tela, className }: TelaErroProps): import("react").JSX.Element;
@@ -0,0 +1,66 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type IconeProp } from '../../utils/Icone.js';
3
+ import type { Marca } from '../Estrutura/Estrutura.js';
4
+ export interface CredenciaisLogin {
5
+ usuario: string;
6
+ senha: string;
7
+ }
8
+ /**
9
+ * Resposta do `aoEntrar`: nada = entrou · `'codigo'` = pedir o código de
10
+ * verificação em duas etapas · `{ erro }` = mensagem para o usuário.
11
+ */
12
+ export type ResultadoLogin = void | 'codigo' | {
13
+ erro: string;
14
+ };
15
+ /** Painel institucional do modelo `conteudo`. */
16
+ export interface ApresentacaoLogin {
17
+ /** Chamada em caixa alta acima do título (ex.: "Plataforma comercial"). */
18
+ chamada?: string;
19
+ titulo: string;
20
+ descricao?: ReactNode;
21
+ /** Até 3–4 pontos fortes do sistema, cada um com ícone. */
22
+ destaques?: {
23
+ icone: IconeProp;
24
+ texto: string;
25
+ }[];
26
+ /** Conteúdo livre abaixo dos destaques (ilustração, gráfico, depoimento). */
27
+ extra?: ReactNode;
28
+ }
29
+ export interface TelaLoginProps {
30
+ marca: Marca;
31
+ /**
32
+ * `conteudo` (padrão) = apresentação do sistema à esquerda + cartão do
33
+ * formulário · `formulario` = só o cartão, centralizado.
34
+ */
35
+ modelo?: 'conteudo' | 'formulario';
36
+ /** Conteúdo da lateral esquerda no modelo `conteudo` (some em telas estreitas). */
37
+ apresentacao?: ApresentacaoLogin;
38
+ /** Selo de ambiente sob o subtítulo (Homologação, Treinamento…). Produção: omita. */
39
+ ambiente?: {
40
+ rotulo: string;
41
+ severidade?: 'warn' | 'err' | 'info' | 'neutral';
42
+ };
43
+ /** Como o usuário se identifica (padrão: CPF). */
44
+ identificador?: 'cpf' | 'email' | 'usuario';
45
+ titulo?: string;
46
+ descricao?: string;
47
+ aoEntrar: (credenciais: CredenciaisLogin) => Promise<ResultadoLogin> | ResultadoLogin;
48
+ /** Confirma o código de 6 dígitos; devolva `{ erro }` para manter o diálogo aberto. */
49
+ aoConfirmarCodigo?: (codigo: string, confiarDispositivo: boolean) => Promise<void | {
50
+ erro: string;
51
+ }> | void | {
52
+ erro: string;
53
+ };
54
+ /** Mostra "Confiar neste dispositivo" no diálogo do código (padrão: sim). */
55
+ confiarDispositivo?: boolean;
56
+ /** Onde o usuário encontra o código (ex.: "Abra o aplicativo autenticador no celular…"). */
57
+ instrucaoCodigo?: string;
58
+ /** Link sob a senha, alinhado à direita (ex.: "Esqueci minha senha"). */
59
+ linkSenha?: ReactNode;
60
+ /** Links ou botões abaixo do Entrar. */
61
+ acoes?: ReactNode;
62
+ rodape?: ReactNode;
63
+ className?: string;
64
+ }
65
+ /** Tela de login institucional: imagem + painel com identificação, senha e 2FA. */
66
+ export declare function TelaLogin({ marca, modelo, apresentacao, ambiente, identificador, titulo, descricao, aoEntrar, aoConfirmarCodigo, confiarDispositivo, instrucaoCodigo, linkSenha, acoes, rodape, className, }: TelaLoginProps): import("react").JSX.Element;
@@ -0,0 +1,62 @@
1
+ import { type IconeProp } from '../../utils/Icone.js';
2
+ import { type HTMLAttributes, type ReactNode } from 'react';
3
+ import type { Severidade } from '../../utils/tipos.js';
4
+ type SevToast = Exclude<Severidade, 'neutral'>;
5
+ export type CorToast = 'pri' | 'secundario' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'escuro';
6
+ /** `suave` (padrão) = fundo claro da cor · `padrao` = fundo neutro, ícone na cor · `solido` · `translucido` = vidro fosco. */
7
+ export type AparenciaToast = 'suave' | 'padrao' | 'solido' | 'translucido';
8
+ export type PosicaoToast = 'topo-esquerda' | 'topo-centro' | 'topo-direita' | 'meio-esquerda' | 'meio-centro' | 'meio-direita' | 'base-esquerda' | 'base-centro' | 'base-direita';
9
+ export interface ToastProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
10
+ /** Dá o ícone e a cor padrão. */
11
+ severidade?: SevToast;
12
+ /** Cor no lugar da que vem da severidade. */
13
+ cor?: CorToast;
14
+ aparencia?: AparenciaToast;
15
+ titulo?: ReactNode;
16
+ detalhe?: ReactNode;
17
+ /** Ícone no lugar do da severidade; `false` tira. */
18
+ icone?: IconeProp | false;
19
+ /** `cabecalho` = linha de cima com ícone, título, tempo e ×; o detalhe vai embaixo. */
20
+ modelo?: 'compacto' | 'cabecalho';
21
+ /** Quando aconteceu (ex.: "há 11 min"), no modelo com cabeçalho. */
22
+ tempo?: string;
23
+ /** Botões ou links abaixo do texto. */
24
+ acoes?: ReactNode;
25
+ /** Mostra o × e é chamado ao fechar. */
26
+ aoFechar?: () => void;
27
+ }
28
+ /**
29
+ * O cartão de aviso. Aparece sozinho via `useToast()`; use direto para um
30
+ * aviso fixo na página.
31
+ */
32
+ export declare function Toast({ severidade, cor, aparencia, titulo, detalhe, icone, modelo, tempo, acoes, aoFechar, children, className, ...resto }: ToastProps): import("react").JSX.Element;
33
+ export interface OpcoesToast {
34
+ severidade?: SevToast;
35
+ titulo: string;
36
+ detalhe?: string;
37
+ /** ms até sumir sozinho. 0 = só fecha no ×. */
38
+ duracao?: number;
39
+ /** Canto/lado da tela. Padrão: `topo-direita`. */
40
+ posicao?: PosicaoToast;
41
+ cor?: CorToast;
42
+ aparencia?: AparenciaToast;
43
+ /** Ícone no lugar do da severidade; `false` tira. */
44
+ icone?: IconeProp | false;
45
+ }
46
+ export interface ApiToast {
47
+ mostrar: (o: OpcoesToast) => number;
48
+ ok: (titulo: string, detalhe?: string) => number;
49
+ info: (titulo: string, detalhe?: string) => number;
50
+ warn: (titulo: string, detalhe?: string) => number;
51
+ err: (titulo: string, detalhe?: string) => number;
52
+ fechar: (id: number) => void;
53
+ }
54
+ /** Fornece `useToast()` e renderiza a pilha. Já incluso no `ProvedorUi`. */
55
+ export declare function ProvedorToast({ children }: {
56
+ children: ReactNode;
57
+ }): import("react").JSX.Element;
58
+ /** `const toast = useToast(); toast.ok('Salvo com sucesso');` */
59
+ export declare function useToast(): ApiToast;
60
+ /** Igual a `useToast`, mas devolve `null` fora do provedor. */
61
+ export declare function useToastOpcional(): ApiToast | null;
62
+ export {};
@@ -0,0 +1,60 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type IconeProp } from '../../utils/Icone.js';
3
+ /** Um passo da trilha. Sem `rota`, aparece como texto (grupo do menu). */
4
+ export interface ItemTrilha {
5
+ rotulo: string;
6
+ rota?: string;
7
+ icone?: IconeProp;
8
+ }
9
+ /** Separadores prontos, ou qualquer nó React (ex.: `'|'` ou um ícone). */
10
+ export type SeparadorTrilha = 'chevron' | 'barra' | 'duplo' | 'seta' | 'til' | 'ponto' | ReactNode;
11
+ /** Aparência da trilha — pode valer para o sistema todo (`Estrutura.modeloTrilha`). */
12
+ export interface ModeloTrilha {
13
+ /** Padrão: `chevron` (›). */
14
+ separador?: SeparadorTrilha;
15
+ /** Ícones: só no Início (padrão), em todos os passos que têm, ou nenhum. */
16
+ icones?: 'inicio' | 'todos' | 'nenhum';
17
+ /** `simples` (padrão) · `fundo` = faixa com fundo suave. */
18
+ aparencia?: 'simples' | 'fundo';
19
+ }
20
+ interface CtxTrilha {
21
+ /** Caminho da página atual, calculado do menu (já com "Início"). */
22
+ itens: ItemTrilha[];
23
+ /** Desenha um link pelo mesmo caminho dos links do menu (renderLink/aoNavegar). */
24
+ link: (rota: string, conteudo: ReactNode, className: string) => ReactNode;
25
+ /** Modelo padrão do sistema. */
26
+ modelo?: ModeloTrilha;
27
+ }
28
+ export declare const ProvedorTrilha: import("react").Provider<CtxTrilha | null>;
29
+ /** Caminho calculado pela `Estrutura` para a rota atual (vazio fora dela). */
30
+ export declare function useTrilha(): ItemTrilha[];
31
+ interface NoMenu {
32
+ rotulo: string;
33
+ rota?: string;
34
+ icone?: IconeProp;
35
+ filhos?: NoMenu[];
36
+ }
37
+ /**
38
+ * Caminho no menu até o item da rota atual: seção › grupo(s) › item. Vence o
39
+ * item de rota mais longa que casa (em `/pedidos/novo`, "Novo pedido" ganha
40
+ * de "Pedidos").
41
+ */
42
+ export declare function caminhoNoMenu(secoes: {
43
+ rotulo?: string;
44
+ itens: NoMenu[];
45
+ }[], ativo: (rota?: string) => boolean): ItemTrilha[];
46
+ export interface TrilhaProps extends ModeloTrilha {
47
+ /** Passos explícitos. Sem a prop, usa o caminho calculado pela `Estrutura`. */
48
+ itens?: ItemTrilha[];
49
+ /** Passos acrescentados ao final do caminho automático (ex.: o registro aberto). */
50
+ extras?: ItemTrilha[];
51
+ /** Mostra mesmo com um passo só (por padrão, some: o título já diz onde se está). */
52
+ mostrarUnico?: boolean;
53
+ className?: string;
54
+ }
55
+ /**
56
+ * Trilha de navegação (breadcrumb). O último passo é a página atual; os do
57
+ * meio com rota são links. Em tela estreita vira só "‹ nível de cima".
58
+ */
59
+ export declare function Trilha({ itens: explicitos, extras, mostrarUnico, separador, icones, aparencia, className }: TrilhaProps): import("react").JSX.Element | null;
60
+ export {};
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type IconeProp } from '../../utils/Icone.js';
3
+ export interface VazioProps {
4
+ titulo: string;
5
+ descricao?: string;
6
+ icone?: IconeProp;
7
+ /** Botões de ação abaixo do texto. */
8
+ children?: ReactNode;
9
+ className?: string;
10
+ }
11
+ /** Estado vazio (lista sem registros, busca sem resultado…). */
12
+ export declare function Vazio({ titulo, descricao, icone, children, className }: VazioProps): import("react").JSX.Element;
package/dist/css.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};