@celke/kole-react 0.0.0-stage → 0.2.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 +370 -3
- 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 +43 -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 +6938 -0
- package/dist/index.js.map +1 -0
- package/dist/tailwind.css +82 -0
- package/dist/tokens.css +407 -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 +91 -6
|
@@ -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;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export type TamanhoDialogo = 'pequeno' | 'medio' | 'grande' | 'extragrande' | 'full';
|
|
4
|
+
/** Efeito de entrada do diálogo central. */
|
|
5
|
+
export type AnimacaoDialogo = 'padrao' | 'escala' | 'deslizar-direita' | 'deslizar-baixo' | 'jornal' | 'queda' | 'girar-horizontal' | 'girar-vertical' | 'super-escala' | 'placa' | 'girar-baixo' | 'girar-esquerda';
|
|
6
|
+
export interface DialogoProps {
|
|
7
|
+
aberto: boolean;
|
|
8
|
+
aoFechar: () => void;
|
|
9
|
+
titulo: string;
|
|
10
|
+
subtitulo?: string;
|
|
11
|
+
icone?: IconeProp;
|
|
12
|
+
tamanho?: TamanhoDialogo;
|
|
13
|
+
/** Tela cheia só abaixo desta largura (`sm` 36rem · `md` 48rem · `lg` 64rem · `xl` 75rem · `xxl` 87.5rem). */
|
|
14
|
+
telaCheiaAbaixo?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
|
|
15
|
+
/**
|
|
16
|
+
* `central` (padrão) · `lateral` = painel encostado à direita, altura
|
|
17
|
+
* total (gaveta). No lateral, `full` cai para `grande`.
|
|
18
|
+
*/
|
|
19
|
+
aparencia?: 'central' | 'lateral';
|
|
20
|
+
/** Onde o diálogo central fica: `centro` (padrão) ou `topo`. */
|
|
21
|
+
posicao?: 'centro' | 'topo';
|
|
22
|
+
/**
|
|
23
|
+
* Conteúdo longo: `corpo` (padrão) rola só o miolo, com cabeçalho e rodapé
|
|
24
|
+
* fixos · `pagina` deixa o diálogo crescer e rola a máscara inteira.
|
|
25
|
+
*/
|
|
26
|
+
rolagem?: 'corpo' | 'pagina';
|
|
27
|
+
animacao?: AnimacaoDialogo;
|
|
28
|
+
/** `escuro` = cabeçalho na cor da marca. */
|
|
29
|
+
tom?: 'claro' | 'escuro';
|
|
30
|
+
/** Esc / clique fora fecham (padrão: sim). */
|
|
31
|
+
dispensavel?: boolean;
|
|
32
|
+
/** Botões do rodapé. */
|
|
33
|
+
rodape?: ReactNode;
|
|
34
|
+
children?: ReactNode;
|
|
35
|
+
className?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function Dialogo({ aberto, aoFechar, titulo, subtitulo, icone, tamanho, telaCheiaAbaixo, aparencia, posicao, rolagem, animacao, tom, dispensavel, rodape, children, className, }: DialogoProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface SobreposicaoProps {
|
|
3
|
+
aoDispensar?: () => void;
|
|
4
|
+
/** Esc e clique na máscara fecham. */
|
|
5
|
+
dispensavel?: boolean;
|
|
6
|
+
rotuloId?: string;
|
|
7
|
+
descricaoId?: string;
|
|
8
|
+
/** Elemento que recebe o foco ao abrir (seletor CSS dentro do painel). */
|
|
9
|
+
focoInicial?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Classe extra na máscara (ex.: alinhamento do painel lateral). */
|
|
12
|
+
classeMascara?: string;
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Máscara + painel modal: portal no <body>, trava o scroll, prende o foco
|
|
17
|
+
* (Tab circula dentro) e devolve o foco a quem abriu ao fechar.
|
|
18
|
+
*/
|
|
19
|
+
export declare function Sobreposicao({ aoDispensar, dispensavel, rotuloId, descricaoId, focoInicial, className, classeMascara, children, }: SobreposicaoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export type PosicaoDica = 'cima' | 'direita' | 'baixo' | 'esquerda';
|
|
3
|
+
export type CorDica = 'padrao' | 'pri' | 'secundario' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'claro';
|
|
4
|
+
export interface DicaProps {
|
|
5
|
+
/** Texto do balão (aceita conteúdo formatado). Vazio = sem dica (o filho é renderizado puro). */
|
|
6
|
+
texto?: ReactNode;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
/** Atraso para abrir no hover, em ms. */
|
|
9
|
+
atraso?: number;
|
|
10
|
+
/** Lado preferido; vira para o oposto se não couber. Padrão: `cima`. */
|
|
11
|
+
posicao?: PosicaoDica;
|
|
12
|
+
cor?: CorDica;
|
|
13
|
+
}
|
|
14
|
+
/** Balão de dica (tooltip) no hover/foco do elemento envolvido. */
|
|
15
|
+
export declare function Dica({ texto, children, atraso, posicao, cor }: DicaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Opcao } from '../../utils/tipos.js';
|
|
2
|
+
import { type CampoBaseProps } from '../Campo/Campo.js';
|
|
3
|
+
export interface EscolhaProps<V = string> extends Omit<CampoBaseProps, 'variante' | 'aviso'> {
|
|
4
|
+
opcoes: Opcao<V>[];
|
|
5
|
+
valor?: V | null;
|
|
6
|
+
aoMudar?: (valor: V) => void;
|
|
7
|
+
/** `segmentado` = botões colados · `radio` = lista de bolinhas. */
|
|
8
|
+
aparencia?: 'segmentado' | 'radio';
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
ariaLabel?: string;
|
|
11
|
+
id?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Escolha única entre poucas opções (radiogroup). */
|
|
14
|
+
export declare function Escolha<V = string>({ rotulo, dica, erro, obrigatorio, className, opcoes, valor, aoMudar, aparencia, disabled, ariaLabel, id: idExterno, }: EscolhaProps<V>): import("react").JSX.Element;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { type MouseEvent, type ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
import { type ModeloTrilha } from '../Trilha/Trilha.js';
|
|
4
|
+
export interface ItemNav {
|
|
5
|
+
rotulo: string;
|
|
6
|
+
icone?: IconeProp;
|
|
7
|
+
/** Folha: destino. Grupo: omita e use `filhos`. */
|
|
8
|
+
rota?: string;
|
|
9
|
+
filhos?: ItemNav[];
|
|
10
|
+
desabilitado?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface SecaoNav {
|
|
13
|
+
/** Rótulo do grupo (linha em caixa alta). */
|
|
14
|
+
rotulo?: string;
|
|
15
|
+
itens: ItemNav[];
|
|
16
|
+
}
|
|
17
|
+
export interface Marca {
|
|
18
|
+
nome: string;
|
|
19
|
+
subtitulo?: string;
|
|
20
|
+
/** URL da imagem do logo (sem ela, mostra um escudo). */
|
|
21
|
+
logo?: string;
|
|
22
|
+
href?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface UsuarioEstrutura {
|
|
25
|
+
nome: string;
|
|
26
|
+
cargo?: string;
|
|
27
|
+
foto?: string;
|
|
28
|
+
iniciais?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface ItemMenu {
|
|
31
|
+
id: string;
|
|
32
|
+
rotulo: string;
|
|
33
|
+
icone?: string;
|
|
34
|
+
destrutivo?: boolean;
|
|
35
|
+
divisorAntes?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface Notificacao {
|
|
38
|
+
id: string;
|
|
39
|
+
titulo: string;
|
|
40
|
+
descricao?: string;
|
|
41
|
+
tempo?: string;
|
|
42
|
+
icone?: string;
|
|
43
|
+
naoLida?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/** Props entregues a `renderLink` (para usar o <Link> do seu roteador). */
|
|
46
|
+
export interface PropsLink {
|
|
47
|
+
href: string;
|
|
48
|
+
className: string;
|
|
49
|
+
children: ReactNode;
|
|
50
|
+
onClick: (e: MouseEvent<HTMLAnchorElement>) => void;
|
|
51
|
+
'aria-current'?: 'page';
|
|
52
|
+
'aria-disabled'?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface EstruturaProps {
|
|
55
|
+
marca: Marca;
|
|
56
|
+
nav: SecaoNav[];
|
|
57
|
+
/** Rota atual — marca o item ativo (ex.: `location.pathname`). */
|
|
58
|
+
rotaAtual?: string;
|
|
59
|
+
/** Navegação SPA: recebe a rota e evita o reload. */
|
|
60
|
+
aoNavegar?: (rota: string) => void;
|
|
61
|
+
/** Renderiza os links com o componente do seu roteador. */
|
|
62
|
+
renderLink?: (props: PropsLink, item: ItemNav) => ReactNode;
|
|
63
|
+
usuario?: UsuarioEstrutura;
|
|
64
|
+
menuUsuario?: ItemMenu[];
|
|
65
|
+
aoEscolherMenuUsuario?: (id: string) => void;
|
|
66
|
+
/** Lista de notificações. Sem a prop, o sino não aparece. */
|
|
67
|
+
notificacoes?: Notificacao[];
|
|
68
|
+
aoEscolherNotificacao?: (id: string) => void;
|
|
69
|
+
/** Menu de ferramentas de desenvolvimento (não passe em produção). */
|
|
70
|
+
menuDesenvolvimento?: ItemMenu[];
|
|
71
|
+
aoEscolherMenuDesenvolvimento?: (id: string) => void;
|
|
72
|
+
/** Tarja de ambiente no topo da sidebar (Homologação, Treinamento…). */
|
|
73
|
+
ambiente?: {
|
|
74
|
+
rotulo: string;
|
|
75
|
+
severidade?: 'warn' | 'err' | 'info' | 'neutral';
|
|
76
|
+
/** Texto curto para a sidebar recolhida (padrão: 3 primeiras letras, ex.: "HOM"). */
|
|
77
|
+
sigla?: string;
|
|
78
|
+
};
|
|
79
|
+
versao?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Como os grupos do menu abrem com a sidebar expandida: `abaixo` (padrão,
|
|
82
|
+
* sanfona dentro da própria sidebar) ou `lateral` (painel ao lado). Com a
|
|
83
|
+
* sidebar recolhida, sempre abre o painel lateral.
|
|
84
|
+
*/
|
|
85
|
+
submenu?: 'abaixo' | 'lateral';
|
|
86
|
+
/** Modelo padrão das trilhas de navegação do sistema (separador, ícones, aparência). */
|
|
87
|
+
modeloTrilha?: ModeloTrilha;
|
|
88
|
+
/** Conteúdo do rodapé da sidebar (marca do ecossistema, links…). */
|
|
89
|
+
rodapeSidebar?: ReactNode;
|
|
90
|
+
/** Rodapé da área de conteúdo, sempre visível no pé da tela (autoria, direitos, links…). */
|
|
91
|
+
rodape?: ReactNode;
|
|
92
|
+
/** Substitui a busca padrão (filtro do menu). `false` remove. */
|
|
93
|
+
busca?: ReactNode | false;
|
|
94
|
+
placeholderBusca?: string;
|
|
95
|
+
aoBuscar?: (termo: string) => void;
|
|
96
|
+
/** Controles extras à direita da topbar. */
|
|
97
|
+
complementosTopbar?: ReactNode;
|
|
98
|
+
children?: ReactNode;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Moldura do app autenticado: sidebar recolhível (com submenu em painel
|
|
102
|
+
* lateral), topbar com busca, densidade, tema, notificações e perfil.
|
|
103
|
+
* Responsiva: abaixo de 64rem a sidebar vira sobreposição; abaixo de 48rem,
|
|
104
|
+
* gaveta com hambúrguer.
|
|
105
|
+
*/
|
|
106
|
+
export declare function Estrutura({ marca, nav, rotaAtual, aoNavegar, renderLink, usuario, menuUsuario, aoEscolherMenuUsuario, notificacoes, aoEscolherNotificacao, menuDesenvolvimento, aoEscolherMenuDesenvolvimento, ambiente, versao, rodapeSidebar, rodape, modeloTrilha, submenu, busca, placeholderBusca, aoBuscar, complementosTopbar, children, }: EstruturaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface FiltroAplicado {
|
|
3
|
+
campo: string;
|
|
4
|
+
rotulo: string;
|
|
5
|
+
aoRemover?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export interface FiltrosProps {
|
|
8
|
+
/** Campos de filtro — de preferência com `variante="inline"`. */
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
aoConsultar: () => void;
|
|
11
|
+
aoLimpar?: () => void;
|
|
12
|
+
/** Chips dos filtros já aplicados. */
|
|
13
|
+
aplicados?: FiltroAplicado[];
|
|
14
|
+
/** Há mudanças ainda não consultadas (ponto âmbar + aviso). */
|
|
15
|
+
alterado?: boolean;
|
|
16
|
+
consultando?: boolean;
|
|
17
|
+
/** `barra` = linha única em card · `secao` = moldura com legenda "Filtros". */
|
|
18
|
+
aparencia?: 'barra' | 'secao';
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Barra de filtros de listagem: campos + Consultar + Limpar + chips. */
|
|
22
|
+
export declare function Filtros({ children, aoConsultar, aoLimpar, aplicados, alterado, consultando, aparencia, className, }: FiltrosProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type MouseEvent, type ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
import { type Entidade, type Modo } from '../../utils/entidade.js';
|
|
4
|
+
import { type ItemTrilha } from '../Trilha/Trilha.js';
|
|
5
|
+
import { type TamanhoDialogo } from '../Dialogo/Dialogo.js';
|
|
6
|
+
/** Item do menu lateral: cada um leva a um formulário do mesmo cadastro. */
|
|
7
|
+
export interface ItemMenuForm {
|
|
8
|
+
id: string;
|
|
9
|
+
rotulo: string;
|
|
10
|
+
icone?: IconeProp;
|
|
11
|
+
/** Com `href` o item vira link (ex.: `#/pedidos/novo/itens`). */
|
|
12
|
+
href?: string;
|
|
13
|
+
/** Chip de pendências ao lado do rótulo. */
|
|
14
|
+
pendencias?: number;
|
|
15
|
+
desabilitado?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface FormProps {
|
|
18
|
+
/** `pagina` = tela cheia com menu lateral opcional · `modal` = dentro de diálogo. */
|
|
19
|
+
arranjo?: 'pagina' | 'modal';
|
|
20
|
+
/**
|
|
21
|
+
* Título do cabeçalho. Com `entidade`, pode ser omitido: vira
|
|
22
|
+
* "Cadastrar/Editar/Visualizar <entidade>" conforme o `modo`.
|
|
23
|
+
*/
|
|
24
|
+
titulo?: string;
|
|
25
|
+
/** Entidade do cadastro (`'veículo'` ou `{ nome, novo: 'Firmar contrato' }`). */
|
|
26
|
+
entidade?: string | Entidade;
|
|
27
|
+
/** Fase do registro na tela (padrão: `novo`). Em `leitura` some o Salvar. */
|
|
28
|
+
modo?: Modo;
|
|
29
|
+
/**
|
|
30
|
+
* Página: trilha de navegação abaixo do título. `true` = caminho automático
|
|
31
|
+
* do menu; lista = automático + estes passos no fim.
|
|
32
|
+
*/
|
|
33
|
+
trilha?: boolean | ItemTrilha[];
|
|
34
|
+
/** Identificação do registro (ex.: "Protocolo 2026/0012"). */
|
|
35
|
+
identidade?: string;
|
|
36
|
+
icone?: IconeProp;
|
|
37
|
+
/** Modal: controla a abertura. */
|
|
38
|
+
aberto?: boolean;
|
|
39
|
+
tamanho?: TamanhoDialogo;
|
|
40
|
+
aoSalvar?: () => void;
|
|
41
|
+
aoCancelar?: () => void;
|
|
42
|
+
salvando?: boolean;
|
|
43
|
+
/** Quantos campos faltam corrigir — mostrado no rodapé. */
|
|
44
|
+
pendencias?: number;
|
|
45
|
+
/** Página: menu lateral com os formulários do cadastro. */
|
|
46
|
+
menu?: ItemMenuForm[];
|
|
47
|
+
/** Título do card do menu (padrão: "Formulários"). */
|
|
48
|
+
menuTitulo?: string;
|
|
49
|
+
/** `id` do item do menu que corresponde a este formulário. */
|
|
50
|
+
menuAtivo?: string;
|
|
51
|
+
/** Clique num item do menu; num item com `href`, chame `preventDefault` para navegar por conta própria. */
|
|
52
|
+
aoEscolherMenu?: (id: string, evento: MouseEvent) => void;
|
|
53
|
+
/** Botões extras no rodapé, antes de Cancelar/Salvar. */
|
|
54
|
+
acoes?: ReactNode;
|
|
55
|
+
/** Cancelar + Salvar no rodapé (padrão: sim). */
|
|
56
|
+
acoesPadrao?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Página: onde ficam os botões. `secao` (padrão) = card logo abaixo das
|
|
59
|
+
* seções · `fixo` = barra presa ao pé da tela.
|
|
60
|
+
*/
|
|
61
|
+
posicaoAcoes?: 'secao' | 'fixo';
|
|
62
|
+
rotuloSalvar?: string;
|
|
63
|
+
children: ReactNode;
|
|
64
|
+
className?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Formulário de cadastro. Agrupe os campos em `<FormSecao>`; a grade de
|
|
68
|
+
* colunas, o menu lateral e o rodapé com Salvar/Cancelar vêm prontos.
|
|
69
|
+
*/
|
|
70
|
+
export declare function Form({ arranjo, titulo: tituloProp, entidade, modo, trilha, identidade, icone, aberto, tamanho, aoSalvar, aoCancelar, salvando, pendencias, menu, menuTitulo, menuAtivo, aoEscolherMenu, acoes, acoesPadrao, posicaoAcoes, rotuloSalvar, children, className, }: FormProps): import("react").JSX.Element | null;
|
|
71
|
+
export interface FormSecaoProps {
|
|
72
|
+
legenda: string;
|
|
73
|
+
icone?: IconeProp;
|
|
74
|
+
/** Botões no cabeçalho da seção. */
|
|
75
|
+
acoes?: ReactNode;
|
|
76
|
+
/** Colunas da grade (padrão: 4 na página, 3 no modal). */
|
|
77
|
+
colunas?: number;
|
|
78
|
+
children: ReactNode;
|
|
79
|
+
className?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Seção de formulário: card com título e grade de campos.
|
|
83
|
+
* Larguras: `className="lp-col-2"`, `lp-col-3` ou `lp-col-full` no campo.
|
|
84
|
+
*/
|
|
85
|
+
export declare function FormSecao({ legenda, icone, acoes, colunas, children, className }: FormSecaoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** `atual` = cor do texto em volta (para usar dentro de botões). */
|
|
2
|
+
export type CorGirador = 'pri' | 'secundario' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'escuro' | 'atual';
|
|
3
|
+
export interface GiradorProps {
|
|
4
|
+
/** `anel` = gira · `pulso` = cresce e some · `pontos` = três pontos piscando. */
|
|
5
|
+
tipo?: 'anel' | 'pulso' | 'pontos';
|
|
6
|
+
cor?: CorGirador;
|
|
7
|
+
/** Escala pronta, ou qualquer medida CSS (ex.: `'3rem'`). */
|
|
8
|
+
tamanho?: 'pequeno' | 'medio' | 'grande' | (string & {});
|
|
9
|
+
/** Texto para leitor de tela (e visível com `mostrarRotulo`). */
|
|
10
|
+
rotulo?: string;
|
|
11
|
+
mostrarRotulo?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Indicador de atividade em linha (spinner). Para espera de seção inteira, use `Carregando`. */
|
|
15
|
+
export declare function Girador({ tipo, cor, tamanho, rotulo, mostrarRotulo, className }: GiradorProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from 'react';
|
|
2
|
+
import type { IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
import { type BotaoProps, type PadroesBotao } from '../Botao/Botao.js';
|
|
4
|
+
export interface GrupoBotoesProps extends PadroesBotao {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
orientacao?: 'horizontal' | 'vertical';
|
|
7
|
+
/** Nome do grupo para leitor de tela (ex.: "Controles do player"). */
|
|
8
|
+
rotulo?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Botões colados num bloco só. `severidade`, `aparencia`, `formato` e
|
|
13
|
+
* `tamanho` viram o padrão dos botões de dentro (cada um pode sobrescrever).
|
|
14
|
+
*/
|
|
15
|
+
export declare function GrupoBotoes({ children, orientacao, rotulo, className, ...padroes }: GrupoBotoesProps): JSX.Element;
|
|
16
|
+
export interface OpcaoAlternancia<V> {
|
|
17
|
+
valor: V;
|
|
18
|
+
rotulo?: string;
|
|
19
|
+
icone?: IconeProp;
|
|
20
|
+
/** Obrigatória quando a opção é só ícone. */
|
|
21
|
+
dica?: string;
|
|
22
|
+
desabilitada?: boolean;
|
|
23
|
+
}
|
|
24
|
+
interface BaseAlternancia<V> extends Omit<GrupoBotoesProps, 'children'> {
|
|
25
|
+
opcoes: OpcaoAlternancia<V>[];
|
|
26
|
+
/** Aparência das opções desmarcadas (as marcadas ficam sólidas). Padrão: `contorno`. */
|
|
27
|
+
aparencia?: BotaoProps['aparencia'];
|
|
28
|
+
}
|
|
29
|
+
export interface GrupoAlternanciaUnicoProps<V> extends BaseAlternancia<V> {
|
|
30
|
+
multiplo?: false;
|
|
31
|
+
valor?: V | null;
|
|
32
|
+
aoMudar?: (valor: V) => void;
|
|
33
|
+
}
|
|
34
|
+
export interface GrupoAlternanciaMultiploProps<V> extends BaseAlternancia<V> {
|
|
35
|
+
multiplo: true;
|
|
36
|
+
valor?: V[];
|
|
37
|
+
aoMudar?: (valor: V[]) => void;
|
|
38
|
+
}
|
|
39
|
+
export type GrupoAlternanciaProps<V> = GrupoAlternanciaUnicoProps<V> | GrupoAlternanciaMultiploProps<V>;
|
|
40
|
+
/**
|
|
41
|
+
* Grupo de botões de seleção: única (como rádio) ou múltipla (como caixas de
|
|
42
|
+
* marcação). Cada opção é um botão de alternância (`aria-pressed`).
|
|
43
|
+
*/
|
|
44
|
+
export declare function GrupoAlternancia<V = string>(props: GrupoAlternanciaMultiploProps<V>): JSX.Element;
|
|
45
|
+
export declare function GrupoAlternancia<V = string>(props: GrupoAlternanciaUnicoProps<V>): JSX.Element;
|
|
46
|
+
export interface BarraBotoesProps {
|
|
47
|
+
children: ReactNode;
|
|
48
|
+
/** Nome da barra para leitor de tela. */
|
|
49
|
+
rotulo?: string;
|
|
50
|
+
/** `inicio` (padrão) · `entre` = espalha os grupos de ponta a ponta. */
|
|
51
|
+
distribuicao?: 'inicio' | 'entre';
|
|
52
|
+
className?: string;
|
|
53
|
+
}
|
|
54
|
+
/** Barra de ferramentas: vários grupos (e campos) lado a lado. */
|
|
55
|
+
export declare function BarraBotoes({ children, rotulo, distribuicao, className }: BarraBotoesProps): JSX.Element;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CSSProperties, ImgHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/** `reto` · `arredondado` = cantos do card · `circulo` = pílula/círculo. */
|
|
3
|
+
export type CantosImagem = 'reto' | 'arredondado' | 'circulo';
|
|
4
|
+
/** `esquerda`/`direita` = flutua com o texto em volta · `centro` = bloco centralizado. */
|
|
5
|
+
export type AlinhamentoImagem = 'esquerda' | 'centro' | 'direita';
|
|
6
|
+
export interface ImagemProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'alt' | 'width'> {
|
|
7
|
+
src: string;
|
|
8
|
+
/** Texto alternativo. Use `''` só para imagem decorativa. */
|
|
9
|
+
alt: string;
|
|
10
|
+
/** Encolhe para caber no container (largura máx. 100%). Padrão: true. */
|
|
11
|
+
responsiva?: boolean;
|
|
12
|
+
cantos?: CantosImagem;
|
|
13
|
+
/** Moldura de miniatura: borda fina e respiro em volta. */
|
|
14
|
+
miniatura?: boolean;
|
|
15
|
+
alinhamento?: AlinhamentoImagem;
|
|
16
|
+
/** Recorta na proporção dada (ex.: `'1 / 1'`, `'16 / 9'`) sem distorcer. */
|
|
17
|
+
proporcao?: string;
|
|
18
|
+
/** Largura (ex.: `'12rem'`, `'50%'`). */
|
|
19
|
+
largura?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Imagem responsiva com cantos, miniatura, recorte e alinhamento. */
|
|
22
|
+
export declare function Imagem({ responsiva, cantos, miniatura, alinhamento, proporcao, largura, loading, className, style, ...resto }: ImagemProps): import("react").JSX.Element;
|
|
23
|
+
export interface FiguraProps {
|
|
24
|
+
src: string;
|
|
25
|
+
alt: string;
|
|
26
|
+
/** Legenda abaixo da imagem. */
|
|
27
|
+
legenda?: ReactNode;
|
|
28
|
+
alinhamentoLegenda?: 'inicio' | 'centro' | 'fim';
|
|
29
|
+
cantos?: CantosImagem;
|
|
30
|
+
miniatura?: boolean;
|
|
31
|
+
proporcao?: string;
|
|
32
|
+
/** Posição da figura inteira (imagem + legenda). */
|
|
33
|
+
alinhamento?: AlinhamentoImagem;
|
|
34
|
+
/** Largura da figura (ex.: `'14rem'`). */
|
|
35
|
+
largura?: string;
|
|
36
|
+
className?: string;
|
|
37
|
+
style?: CSSProperties;
|
|
38
|
+
}
|
|
39
|
+
/** Imagem com legenda (`<figure>` + `<figcaption>`). */
|
|
40
|
+
export declare function Figura({ src, alt, legenda, alinhamentoLegenda, cantos, miniatura, proporcao, alinhamento, largura, className, style, }: FiguraProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export interface IndicadorProps {
|
|
4
|
+
rotulo: string;
|
|
5
|
+
valor: number | string;
|
|
6
|
+
icone?: IconeProp;
|
|
7
|
+
/** Cor de destaque (qualquer cor CSS, de preferência um token: `var(--ok-solid)`). */
|
|
8
|
+
cor?: string;
|
|
9
|
+
/** Torna o card um link. */
|
|
10
|
+
href?: string;
|
|
11
|
+
aoClicar?: () => void;
|
|
12
|
+
carregando?: boolean;
|
|
13
|
+
/** Variação em % (ex.: `1.31` ou `-9.26`): seta e cor ao lado do valor. */
|
|
14
|
+
variacao?: number;
|
|
15
|
+
/** Qual direção é boa (verde). Padrão: `alta`; use `baixa` para despesas, rejeições… */
|
|
16
|
+
variacaoBoa?: 'alta' | 'baixa';
|
|
17
|
+
/** Linha miúda abaixo do valor (ex.: "há 6 min"). */
|
|
18
|
+
descricao?: ReactNode;
|
|
19
|
+
/** Rodapé (variação, comparação…). */
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Card de KPI para dashboards. */
|
|
24
|
+
export declare function Indicador({ rotulo, valor, icone, cor, href, aoClicar, carregando, variacao, variacaoBoa, descricao, children, className }: IndicadorProps): import("react").JSX.Element;
|
|
25
|
+
/** Grade responsiva de indicadores. */
|
|
26
|
+
export declare function Indicadores({ children, className }: {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
className?: string;
|
|
29
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { MouseEvent, ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export type CorItemLista = 'pri' | 'secundario' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'escuro';
|
|
4
|
+
export interface ListaProps {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
/** `padrao` = caixa com borda · `sem-borda` = encostada no container (dentro de card). */
|
|
7
|
+
variante?: 'padrao' | 'sem-borda';
|
|
8
|
+
/** Numera os itens (1, 2, 3…). */
|
|
9
|
+
numerada?: boolean;
|
|
10
|
+
/** Itens lado a lado; com breakpoint, só a partir dele (`sm` 36rem · `md` 48rem · `lg` 64rem · `xl` 75rem). */
|
|
11
|
+
horizontal?: boolean | 'sm' | 'md' | 'lg' | 'xl';
|
|
12
|
+
/** Nome da lista para leitor de tela. */
|
|
13
|
+
rotulo?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Grupo de itens empilhados (list group): lista simples, de links, de seleção… */
|
|
17
|
+
export declare function Lista({ children, variante, numerada, horizontal, rotulo, className }: ListaProps): import("react").JSX.Element;
|
|
18
|
+
export interface ItemListaProps {
|
|
19
|
+
/** Conteúdo principal (ou a descrição, quando há `titulo`). */
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
/** Linha em negrito acima do conteúdo. */
|
|
22
|
+
titulo?: ReactNode;
|
|
23
|
+
/** Ícone à esquerda (atalho para `inicio`). */
|
|
24
|
+
icone?: IconeProp;
|
|
25
|
+
/** Conteúdo à esquerda: avatar, ícone em caixa… */
|
|
26
|
+
inicio?: ReactNode;
|
|
27
|
+
/** Conteúdo à direita: badge, contagem, data… */
|
|
28
|
+
fim?: ReactNode;
|
|
29
|
+
ativo?: boolean;
|
|
30
|
+
desabilitado?: boolean;
|
|
31
|
+
/** Tom do item: fundo claro da cor, ou sólido com `solido`. */
|
|
32
|
+
cor?: CorItemLista;
|
|
33
|
+
solido?: boolean;
|
|
34
|
+
/** Vira link. */
|
|
35
|
+
href?: string;
|
|
36
|
+
/** Vira botão. */
|
|
37
|
+
onClick?: (e: MouseEvent<HTMLElement>) => void;
|
|
38
|
+
/** Vira item de seleção: caixa de marcação ou rádio. */
|
|
39
|
+
marcacao?: 'caixa' | 'radio';
|
|
40
|
+
marcado?: boolean;
|
|
41
|
+
aoMarcar?: (marcado: boolean) => void;
|
|
42
|
+
/** Nome do grupo de rádios. */
|
|
43
|
+
nome?: string;
|
|
44
|
+
className?: string;
|
|
45
|
+
}
|
|
46
|
+
/** Item de `Lista`. Estático, link (`href`), botão (`onClick`) ou seleção (`marcacao`). */
|
|
47
|
+
export declare function ItemLista({ children, titulo, icone, inicio, fim, ativo, desabilitado, cor, solido, href, onClick, marcacao, marcado, aoMarcar, nome, className, }: ItemListaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Key, ReactNode } from 'react';
|
|
2
|
+
import { type PaginacaoProps } from '../Paginacao/Paginacao.js';
|
|
3
|
+
export interface ListaCardsProps<T> {
|
|
4
|
+
itens: T[];
|
|
5
|
+
/** Monta o card de cada item (normalmente um `<Card>` composto pelo módulo). */
|
|
6
|
+
card: (item: T, indice: number) => ReactNode;
|
|
7
|
+
chave?: (item: T, indice: number) => Key;
|
|
8
|
+
/** Largura mínima de cada célula (padrão: 16rem) — define quantas colunas cabem. */
|
|
9
|
+
larguraMin?: string;
|
|
10
|
+
/** Altura das silhuetas: calibre pela altura do SEU card (padrão: 8.5rem). */
|
|
11
|
+
alturaCard?: string;
|
|
12
|
+
/** Nome acessível da grade. */
|
|
13
|
+
rotulo?: string;
|
|
14
|
+
/** Primeira carga: silhuetas no lugar dos cards. */
|
|
15
|
+
carregando?: boolean;
|
|
16
|
+
/** Recarga: mantém a grade esmaecida. */
|
|
17
|
+
atualizando?: boolean;
|
|
18
|
+
erro?: string | boolean;
|
|
19
|
+
aoRecarregar?: () => void;
|
|
20
|
+
vazioTitulo?: string;
|
|
21
|
+
vazioDescricao?: string;
|
|
22
|
+
vazioIcone?: string;
|
|
23
|
+
vazioAcoes?: ReactNode;
|
|
24
|
+
paginacao?: Omit<PaginacaoProps, 'embutida' | 'className'>;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/** Listagem em grade de cards, irmã da `Tabela` (a ordenação fica na barra de filtros). */
|
|
28
|
+
export declare function ListaCards<T>({ itens, card, chave, larguraMin, alturaCard, rotulo, carregando, atualizando, erro, aoRecarregar, vazioTitulo, vazioDescricao, vazioIcone, vazioAcoes, paginacao, className, }: ListaCardsProps<T>): import("react").JSX.Element;
|