@celke/kole-react 0.5.0 → 0.6.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 -22
- package/README.md +968 -638
- package/dist/components/Avaliacao/Avaliacao.d.ts +1 -1
- package/dist/components/Avatar/GrupoAvatares.d.ts +16 -0
- package/dist/components/BlocoCodigo/BlocoCodigo.d.ts +15 -0
- package/dist/components/BotaoFechar/BotaoFechar.d.ts +1 -1
- package/dist/components/Busca/Busca.d.ts +1 -1
- package/dist/components/Calendario/Calendario.d.ts +100 -0
- package/dist/components/Calendario/MiniCalendario.d.ts +27 -0
- package/dist/components/Calendario/datasCalendario.d.ts +27 -0
- package/dist/components/Calendario/repetirEvento.d.ts +26 -0
- package/dist/components/Campo/Campo.d.ts +1 -0
- package/dist/components/CampoBusca/CampoBusca.d.ts +1 -1
- package/dist/components/CampoBusca/CampoCidade.d.ts +1 -1
- package/dist/components/CampoMensagem/CampoMensagem.d.ts +20 -1
- package/dist/components/Carregando/Carregando.d.ts +1 -1
- package/dist/components/ChatFlutuante/ChatFlutuante.d.ts +31 -0
- package/dist/components/Conversa/Conversa.d.ts +1 -1
- package/dist/components/Estrutura/Estrutura.d.ts +13 -2
- package/dist/components/Form/Form.d.ts +1 -1
- package/dist/components/Girador/Girador.d.ts +1 -1
- package/dist/components/Grafico/GraficoRosca.d.ts +31 -0
- package/dist/components/Grafico/MolduraGrafico.d.ts +36 -1
- package/dist/components/Grafico/escalas.d.ts +3 -0
- package/dist/components/InicioConversa/InicioConversa.d.ts +29 -0
- package/dist/components/Kanban/CartaoKanban.d.ts +35 -0
- package/dist/components/Kanban/Kanban.d.ts +62 -0
- package/dist/components/Kanban/Pecas.d.ts +30 -0
- package/dist/components/Kanban/tipos.d.ts +35 -0
- package/dist/components/ListaCards/ListaCards.d.ts +1 -1
- package/dist/components/ListaConversas/ListaConversas.d.ts +40 -0
- package/dist/components/ListaTarefas/ListaTarefas.d.ts +52 -0
- package/dist/components/Mensagem/Mensagem.d.ts +1 -1
- package/dist/components/NavegadorPeriodo/NavegadorPeriodo.d.ts +28 -0
- package/dist/components/Picklist/Picklist.d.ts +1 -1
- package/dist/components/Preferencias/Preferencias.d.ts +25 -2
- package/dist/components/QuadroArrastavel/QuadroArrastavel.d.ts +59 -6
- package/dist/components/Referencias/Referencias.d.ts +1 -1
- package/dist/components/SeletorContexto/SeletorContexto.d.ts +32 -0
- package/dist/components/SeletorIdioma/Bandeira.d.ts +10 -0
- package/dist/components/SeletorIdioma/SeletorIdioma.d.ts +23 -0
- package/dist/components/Site/CampoPesquisa.d.ts +1 -1
- package/dist/components/Site/CardPlano.d.ts +1 -1
- package/dist/components/Site/Newsletter.d.ts +1 -1
- package/dist/components/Site/SumarioPagina.d.ts +1 -1
- package/dist/components/Tabela/Tabela.d.ts +1 -1
- package/dist/components/TelaLogin/TelaLogin.d.ts +1 -1
- package/dist/components/Valor/Valor.d.ts +53 -0
- package/dist/estilos.css +1 -1
- package/dist/i18n/contexto.d.ts +15 -0
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/es.d.ts +3 -0
- package/dist/i18n/idiomas.d.ts +41 -0
- package/dist/i18n/pt-BR.d.ts +545 -0
- package/dist/i18n/textos.d.ts +17 -0
- package/dist/index.d.ts +30 -2
- package/dist/index.js +8861 -3938
- package/dist/index.js.map +1 -1
- package/dist/tailwind.css +96 -96
- package/dist/tokens.css +489 -489
- package/dist/utils/dinheiro.d.ts +49 -0
- package/dist/utils/entidade.d.ts +3 -2
- package/dist/utils/periodo.d.ts +36 -0
- package/dist/utils/senha.d.ts +2 -1
- package/dist/utils/tempo.d.ts +32 -0
- package/dist/utils/texto.d.ts +12 -5
- package/dist/utils/tiposCampo.d.ts +3 -1
- package/dist/utils/validadores.d.ts +4 -2
- package/package.json +93 -91
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type CorKanban, type Prioridade } from './tipos.js';
|
|
2
|
+
export interface SeloPrioridadeProps {
|
|
3
|
+
prioridade: Prioridade;
|
|
4
|
+
/** Só a bandeira colorida (o nome fica para o leitor de tela e a dica). */
|
|
5
|
+
compacto?: boolean;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Bandeira com o nível de prioridade: baixa, média, alta ou crítica. */
|
|
9
|
+
export declare function SeloPrioridade({ prioridade, compacto, className }: SeloPrioridadeProps): import("react").JSX.Element;
|
|
10
|
+
export interface SeloPrazoProps {
|
|
11
|
+
/** Data de vencimento (`Date` ou `AAAA-MM-DD`). */
|
|
12
|
+
vencimento: Date | string;
|
|
13
|
+
/** Concluído: mostra a data em verde, sem "Atrasado". */
|
|
14
|
+
concluido?: boolean;
|
|
15
|
+
/** Dias antes do vencimento em que vira "em breve" (padrão: 2). */
|
|
16
|
+
emBreve?: number;
|
|
17
|
+
/** Referência de "hoje" (padrão: agora). */
|
|
18
|
+
agora?: Date;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Vencimento com cor pela situação: atrasado, hoje, em breve ou no prazo. */
|
|
22
|
+
export declare function SeloPrazo({ vencimento, concluido, emBreve, agora, className }: SeloPrazoProps): import("react").JSX.Element;
|
|
23
|
+
export interface EtiquetaProps {
|
|
24
|
+
rotulo: string;
|
|
25
|
+
/** Cor do ponto e do fundo (padrão: `neutro`). */
|
|
26
|
+
cor?: CorKanban;
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
/** Etiqueta colorida de cartão e tarefa ("Design", "Urgente"…). */
|
|
30
|
+
export declare function Etiqueta({ rotulo, cor, className }: EtiquetaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { IconeProp } from '../../utils/Icone.js';
|
|
2
|
+
import type { Severidade } from '../../utils/tipos.js';
|
|
3
|
+
/** Cores de coluna e etiqueta: tokens de severidade, a marca e as séries de gráfico. */
|
|
4
|
+
export type CorKanban = 'pri' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'neutro' | 'graf-1' | 'graf-2' | 'graf-3' | 'graf-4' | 'graf-5' | 'graf-6';
|
|
5
|
+
/** Prioridade de cartão ou tarefa. Use só os níveis de que precisa (ex.: baixa, média e alta). */
|
|
6
|
+
export type Prioridade = 'baixa' | 'media' | 'alta' | 'critica';
|
|
7
|
+
/** Rótulos em pt-BR (os componentes usam o dicionário do idioma ativo: `textos.kanban`). */
|
|
8
|
+
export declare const PRIORIDADES: Record<Prioridade, {
|
|
9
|
+
rotulo: string;
|
|
10
|
+
severidade: Severidade;
|
|
11
|
+
}>;
|
|
12
|
+
export interface EtiquetaKanban {
|
|
13
|
+
rotulo: string;
|
|
14
|
+
cor?: CorKanban;
|
|
15
|
+
}
|
|
16
|
+
/** Situação de uma tarefa (a coluna do kanban, quando ele é agrupado por situação). */
|
|
17
|
+
export type SituacaoTarefa = 'aberta' | 'andamento' | 'bloqueada' | 'concluida';
|
|
18
|
+
/** Rótulos em pt-BR (os componentes usam o dicionário do idioma ativo: `textos.kanban`). */
|
|
19
|
+
export declare const SITUACOES_TAREFA: Record<SituacaoTarefa, {
|
|
20
|
+
rotulo: string;
|
|
21
|
+
severidade: Severidade;
|
|
22
|
+
icone: IconeProp;
|
|
23
|
+
}>;
|
|
24
|
+
/** Chave do texto de cada prioridade em `textos.kanban`. */
|
|
25
|
+
export declare const CHAVE_PRIORIDADE: {
|
|
26
|
+
readonly baixa: "prioridadeBaixa";
|
|
27
|
+
readonly media: "prioridadeMedia";
|
|
28
|
+
readonly alta: "prioridadeAlta";
|
|
29
|
+
readonly critica: "prioridadeCritica";
|
|
30
|
+
};
|
|
31
|
+
/** Subtarefas feitas e total (o cartão mostra a barra de progresso). */
|
|
32
|
+
export interface ContagemSubtarefas {
|
|
33
|
+
feitas: number;
|
|
34
|
+
total: number;
|
|
35
|
+
}
|
|
@@ -25,4 +25,4 @@ export interface ListaCardsProps<T> {
|
|
|
25
25
|
className?: string;
|
|
26
26
|
}
|
|
27
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;
|
|
28
|
+
export declare function ListaCards<T>({ itens, card, chave, larguraMin, alturaCard, rotulo, carregando, atualizando, erro, aoRecarregar, vazioTitulo: vazioTituloProp, vazioDescricao, vazioIcone, vazioAcoes, paginacao, className, }: ListaCardsProps<T>): import("react").JSX.Element;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface ItemConversa {
|
|
3
|
+
id: string | number;
|
|
4
|
+
titulo: string;
|
|
5
|
+
/** Última atividade: define o grupo (Hoje, Ontem, Últimos 7 dias…). */
|
|
6
|
+
data: Date;
|
|
7
|
+
/** Fica no grupo "Fixadas", no topo. */
|
|
8
|
+
fixada?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface ListaConversasProps {
|
|
11
|
+
itens: ItemConversa[];
|
|
12
|
+
/** Id da conversa aberta. */
|
|
13
|
+
ativa?: ItemConversa['id'] | null;
|
|
14
|
+
aoEscolher: (id: ItemConversa['id']) => void;
|
|
15
|
+
/** Mostra o botão "Nova conversa". */
|
|
16
|
+
aoNova?: () => void;
|
|
17
|
+
/** Liga o "Renomear" no menu do item (edição no próprio item: Enter salva, Esc cancela). */
|
|
18
|
+
aoRenomear?: (id: ItemConversa['id'], titulo: string) => void;
|
|
19
|
+
/** Liga o "Excluir" no menu do item. A confirmação, se houver, é do app. */
|
|
20
|
+
aoExcluir?: (id: ItemConversa['id']) => void;
|
|
21
|
+
/** Liga o "Fixar"/"Desafixar" no menu do item. */
|
|
22
|
+
aoFixar?: (id: ItemConversa['id'], fixada: boolean) => void;
|
|
23
|
+
/** Campo de busca pelo título (sem acento e sem diferença de maiúsculas). Padrão: `true`. */
|
|
24
|
+
busca?: boolean;
|
|
25
|
+
carregando?: boolean;
|
|
26
|
+
/** Sem conversas. */
|
|
27
|
+
textoVazio?: string;
|
|
28
|
+
/** Acima da lista, abaixo da busca (ex.: filtros). */
|
|
29
|
+
extra?: ReactNode;
|
|
30
|
+
rotulo?: string;
|
|
31
|
+
rotuloNova?: string;
|
|
32
|
+
/** "Hoje" dos grupos (para testes). Padrão: a data atual. */
|
|
33
|
+
hoje?: Date;
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Histórico de conversas de um assistente: "Nova conversa", busca e os itens agrupados por
|
|
38
|
+
* data, com renomear, fixar e excluir. O app guarda o histórico; a lista mostra e avisa.
|
|
39
|
+
*/
|
|
40
|
+
export declare function ListaConversas({ itens, ativa, aoEscolher, aoNova, aoRenomear, aoExcluir, aoFixar, busca, carregando, textoVazio: textoVazioProp, extra, rotulo: rotuloProp, rotuloNova: rotuloNovaProp, hoje: hojeProp, className, }: ListaConversasProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type PessoaAvatar } from '../Avatar/GrupoAvatares.js';
|
|
3
|
+
import { type ContagemSubtarefas, type EtiquetaKanban, type Prioridade, type SituacaoTarefa } from '../Kanban/tipos.js';
|
|
4
|
+
export interface TarefaLista {
|
|
5
|
+
id: string;
|
|
6
|
+
titulo: string;
|
|
7
|
+
/** Marcada como feita (sem isto, vale `situacao === 'concluida'`). */
|
|
8
|
+
concluida?: boolean;
|
|
9
|
+
/** Mostrada como selo quando é "Em andamento" ou "Bloqueada". */
|
|
10
|
+
situacao?: SituacaoTarefa;
|
|
11
|
+
prioridade?: Prioridade;
|
|
12
|
+
/** Data de vencimento (`Date` ou `AAAA-MM-DD`). */
|
|
13
|
+
vencimento?: Date | string;
|
|
14
|
+
etiquetas?: EtiquetaKanban[];
|
|
15
|
+
responsaveis?: PessoaAvatar[];
|
|
16
|
+
subtarefas?: ContagemSubtarefas;
|
|
17
|
+
}
|
|
18
|
+
/** O que `aoReordenar` recebe além da lista nova. */
|
|
19
|
+
export interface ReordenarTarefa<T> {
|
|
20
|
+
tarefa: T;
|
|
21
|
+
de: number;
|
|
22
|
+
para: number;
|
|
23
|
+
}
|
|
24
|
+
export interface ListaTarefasProps<T extends TarefaLista> {
|
|
25
|
+
tarefas: T[];
|
|
26
|
+
/** Marcar ou desmarcar como concluída. Sem isto, o círculo não aparece. */
|
|
27
|
+
aoConcluir?: (tarefa: T, concluida: boolean) => void;
|
|
28
|
+
/** Clicar na tarefa abre o detalhe (ex.: um `Dialogo` lateral). */
|
|
29
|
+
aoAbrir?: (tarefa: T) => void;
|
|
30
|
+
/** Liga o arraste para reordenar; recebe a lista na ordem nova, ao soltar. */
|
|
31
|
+
aoReordenar?: (tarefas: T[], evento: ReordenarTarefa<T>) => void;
|
|
32
|
+
/** Id da tarefa aberta no detalhe (fica destacada). */
|
|
33
|
+
selecionada?: string;
|
|
34
|
+
/** Visão e filtros: as tarefas com `false` somem, e a ordem das outras continua valendo ao arrastar. */
|
|
35
|
+
filtro?: (tarefa: T) => boolean;
|
|
36
|
+
/** Conteúdo a mais em cada linha, antes dos responsáveis. */
|
|
37
|
+
extra?: (tarefa: T) => ReactNode;
|
|
38
|
+
carregando?: boolean;
|
|
39
|
+
vazioTitulo?: string;
|
|
40
|
+
vazioDescricao?: string;
|
|
41
|
+
vazioAcoes?: ReactNode;
|
|
42
|
+
/** Referência de "hoje" para os prazos (padrão: agora). */
|
|
43
|
+
agora?: Date;
|
|
44
|
+
/** Nome acessível da lista (padrão: "Tarefas"). */
|
|
45
|
+
rotulo?: string;
|
|
46
|
+
className?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Lista de tarefas: marcar como feita, prioridade, prazo, etiquetas e
|
|
50
|
+
* responsáveis em cada linha; reordena arrastando (mouse, toque e teclado).
|
|
51
|
+
*/
|
|
52
|
+
export declare function ListaTarefas<T extends TarefaLista>({ tarefas, aoConcluir, aoAbrir, aoReordenar, selecionada, filtro, extra, carregando, vazioTitulo: vazioTituloProp, vazioDescricao, vazioAcoes, agora, rotulo: rotuloProp, className, }: ListaTarefasProps<T>): import("react").JSX.Element;
|
|
@@ -37,4 +37,4 @@ export interface MensagemProps {
|
|
|
37
37
|
className?: string;
|
|
38
38
|
}
|
|
39
39
|
/** Uma mensagem da `Conversa`: bolha com autor, hora, estado e ações. */
|
|
40
|
-
export declare function Mensagem({ autor, children, nome, avatar, hora, estado, erro, aoTentarNovamente, copiavel, textoCopia, acoes, rodape, rotuloTentarNovamente, rotuloCopiar, rotuloGerando, rotuloEnviando, className, }: MensagemProps): import("react").JSX.Element;
|
|
40
|
+
export declare function Mensagem({ autor, children, nome, avatar, hora, estado, erro, aoTentarNovamente, copiavel, textoCopia, acoes, rodape, rotuloTentarNovamente: rotuloTentarNovamenteProp, rotuloCopiar: rotuloCopiarProp, rotuloGerando: rotuloGerandoProp, rotuloEnviando: rotuloEnviandoProp, className, }: MensagemProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Periodo } from '../../utils/periodo.js';
|
|
2
|
+
import { type BotaoProps } from '../Botao/Botao.js';
|
|
3
|
+
export interface AtalhoPeriodo {
|
|
4
|
+
rotulo: string;
|
|
5
|
+
/** O período, ou uma função de "agora" (ex.: o mês passado). */
|
|
6
|
+
periodo: Periodo | ((agora: Date) => Periodo);
|
|
7
|
+
}
|
|
8
|
+
export interface NavegadorPeriodoProps {
|
|
9
|
+
valor: Periodo;
|
|
10
|
+
aoMudar: (periodo: Periodo) => void;
|
|
11
|
+
/** Atalhos do painel. Padrão: este mês, mês passado, este trimestre, este ano e ano passado. */
|
|
12
|
+
atalhos?: AtalhoPeriodo[];
|
|
13
|
+
/** Intervalo livre (de/até) no painel. Padrão `true`. */
|
|
14
|
+
personalizado?: boolean;
|
|
15
|
+
/** "Hoje" de referência (testes, fuso do servidor). */
|
|
16
|
+
agora?: Date;
|
|
17
|
+
/** Nome do grupo para leitor de tela. Padrão "Período". */
|
|
18
|
+
rotulo?: string;
|
|
19
|
+
tamanho?: BotaoProps['tamanho'];
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Atalhos padrão com os rótulos em pt-BR (sem `atalhos`, o componente usa os do idioma ativo). */
|
|
23
|
+
export declare const ATALHOS_PERIODO: AtalhoPeriodo[];
|
|
24
|
+
/**
|
|
25
|
+
* "‹ novembro de 2026 ›": anda de mês em mês (ou trimestre, ano, intervalo)
|
|
26
|
+
* pelas setas, e o rótulo abre os atalhos e o intervalo livre.
|
|
27
|
+
*/
|
|
28
|
+
export declare function NavegadorPeriodo({ valor, aoMudar, atalhos: atalhosProp, personalizado, agora, rotulo: rotuloProp, tamanho, className }: NavegadorPeriodoProps): import("react").JSX.Element;
|
|
@@ -25,4 +25,4 @@ export interface PicklistProps<T> extends Omit<CampoBaseProps, 'variante'> {
|
|
|
25
25
|
* setas movem o foco, Espaço marca, Enter transfere, Alt+setas reordena;
|
|
26
26
|
* duplo clique também transfere.
|
|
27
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;
|
|
28
|
+
export declare function Picklist<T>({ rotulo, dica, erro, aviso, obrigatorio, className, id: idExterno, valor: valorBruto, aoMudar, rotuloFonte: rotuloFonteProp, rotuloAlvo: rotuloAlvoProp, paraRotulo, renderItem, filtro, dragdrop, reordenar, alturaLista, disabled, }: PicklistProps<T>): import("react").JSX.Element;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
+
import { type TextosParciais } from '../../i18n/textos.js';
|
|
3
|
+
import type { Idioma } from '../../i18n/idiomas.js';
|
|
2
4
|
/** `sistema` = segue o modo do sistema operacional, inclusive quando ele muda com a página aberta. */
|
|
3
5
|
export type Tema = 'claro' | 'escuro' | 'sistema';
|
|
4
6
|
export type Densidade = 'compacta' | 'confortavel' | 'espacosa';
|
|
@@ -7,9 +9,13 @@ export interface Preferencias {
|
|
|
7
9
|
/** O tema que está na tela: com `sistema`, o do sistema operacional agora. */
|
|
8
10
|
escuro: boolean;
|
|
9
11
|
densidade: Densidade;
|
|
12
|
+
/** Idioma dos textos da biblioteca (padrão `pt-BR`). */
|
|
13
|
+
idioma: Idioma;
|
|
10
14
|
definirTema: (t: Tema) => void;
|
|
11
15
|
alternarTema: () => void;
|
|
12
16
|
definirDensidade: (d: Densidade) => void;
|
|
17
|
+
/** Troca o idioma: todos os componentes mudam na hora, e a escolha fica lembrada. */
|
|
18
|
+
definirIdioma: (i: Idioma) => void;
|
|
13
19
|
}
|
|
14
20
|
/**
|
|
15
21
|
* Script para o `<head>` que aplica tema e densidade ANTES da primeira pintura.
|
|
@@ -20,22 +26,39 @@ export interface Preferencias {
|
|
|
20
26
|
* SSR: `<script dangerouslySetInnerHTML={{ __html: scriptTemaInicial() }} />`.
|
|
21
27
|
* Vite/HTML estático: o README traz o script pronto para colar no index.html.
|
|
22
28
|
*/
|
|
23
|
-
export declare function scriptTemaInicial({ temaInicial, densidadeInicial }?: {
|
|
29
|
+
export declare function scriptTemaInicial({ temaInicial, densidadeInicial, idiomaInicial, }?: {
|
|
24
30
|
temaInicial?: Tema;
|
|
25
31
|
densidadeInicial?: Densidade;
|
|
32
|
+
idiomaInicial?: Idioma;
|
|
26
33
|
}): string;
|
|
27
34
|
export interface ProvedorPreferenciasProps {
|
|
28
35
|
children: ReactNode;
|
|
29
36
|
/** Tema enquanto a pessoa não escolhe outro. Padrão: `sistema`. */
|
|
30
37
|
temaInicial?: Tema;
|
|
31
38
|
densidadeInicial?: Densidade;
|
|
39
|
+
/**
|
|
40
|
+
* Idioma enquanto a pessoa não escolhe outro (ex.: o `users.locale` do
|
|
41
|
+
* servidor). Padrão: `pt-BR`. O navegador não é consultado.
|
|
42
|
+
*/
|
|
43
|
+
idiomaInicial?: Idioma;
|
|
44
|
+
/**
|
|
45
|
+
* Chamado ao montar e a cada troca de idioma: o lugar de sincronizar o i18n
|
|
46
|
+
* do sistema (ex.: `i18n.changeLanguage`) e de gravar a escolha no servidor.
|
|
47
|
+
*/
|
|
48
|
+
aoMudarIdioma?: (idioma: Idioma) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Textos por idioma, por cima dos da biblioteca: troca um texto
|
|
51
|
+
* (`{ 'pt-BR': { tabela: { rotulo: 'Lista' } } }`) ou acrescenta um idioma
|
|
52
|
+
* (`{ fr: { … } }`; o que faltar sai em pt-BR).
|
|
53
|
+
*/
|
|
54
|
+
textos?: Partial<Record<Idioma, TextosParciais>>;
|
|
32
55
|
}
|
|
33
56
|
/**
|
|
34
57
|
* Tema (claro/escuro/sistema) e densidade, lembrados no navegador. Aplica
|
|
35
58
|
* `data-theme` (`light`/`dark`/`system`) no <html> e a classe de densidade no
|
|
36
59
|
* <body>. Para não piscar ao abrir, use também o `scriptTemaInicial` no <head>.
|
|
37
60
|
*/
|
|
38
|
-
export declare function ProvedorPreferencias({ children, temaInicial, densidadeInicial }: ProvedorPreferenciasProps): import("react").JSX.Element;
|
|
61
|
+
export declare function ProvedorPreferencias({ children, temaInicial, densidadeInicial, idiomaInicial, aoMudarIdioma, textos }: ProvedorPreferenciasProps): import("react").JSX.Element;
|
|
39
62
|
export declare function usePreferencias(): Preferencias;
|
|
40
63
|
/** Tudo que a biblioteca precisa na raiz do app: preferências, toasts e confirmação. */
|
|
41
64
|
export declare function ProvedorUi({ children, ...prefs }: ProvedorPreferenciasProps): import("react").JSX.Element;
|
|
@@ -4,24 +4,77 @@ export interface ColunaArrastavel<T> {
|
|
|
4
4
|
/** Nome da coluna (anunciado ao mover pelo teclado). */
|
|
5
5
|
titulo?: string;
|
|
6
6
|
itens: T[];
|
|
7
|
+
/** Recolhida: os itens somem e soltar nela põe o item no fim. */
|
|
8
|
+
recolhida?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Lugar de um item: id da coluna e posição nela (contando sem o próprio item). */
|
|
11
|
+
export interface PosicaoQuadro {
|
|
12
|
+
coluna: string;
|
|
13
|
+
indice: number;
|
|
14
|
+
}
|
|
15
|
+
/** O que `aoSoltar` recebe quando um item muda de lugar. */
|
|
16
|
+
export interface SoltarItem<T, C = ColunaArrastavel<T>> {
|
|
17
|
+
item: T;
|
|
18
|
+
de: PosicaoQuadro;
|
|
19
|
+
para: PosicaoQuadro;
|
|
20
|
+
/** As colunas já com o item no lugar novo (as mesmas de `aoMudar`). */
|
|
21
|
+
colunas: C[];
|
|
22
|
+
}
|
|
23
|
+
/** O que `aoSoltarColuna` recebe quando uma coluna muda de lugar. */
|
|
24
|
+
export interface SoltarColuna<C> {
|
|
25
|
+
coluna: C;
|
|
26
|
+
de: number;
|
|
27
|
+
para: number;
|
|
28
|
+
colunas: C[];
|
|
7
29
|
}
|
|
8
30
|
export interface QuadroArrastavelProps<T extends {
|
|
9
31
|
id: string;
|
|
10
|
-
}> {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
32
|
+
}, C extends ColunaArrastavel<T> = ColunaArrastavel<T>> {
|
|
33
|
+
/** Colunas com os itens; podem ter campos a mais (cor, limite…), que voltam em `aoMudar`. */
|
|
34
|
+
colunas: (ColunaArrastavel<T> & C)[];
|
|
35
|
+
/** Recebe as colunas na ordem nova, uma vez, ao soltar (durante o arraste o quadro mostra uma prévia). */
|
|
36
|
+
aoMudar: (colunas: C[]) => void;
|
|
37
|
+
/** Avisa de onde para onde o item foi, ao soltar: é o que o servidor precisa para gravar. */
|
|
38
|
+
aoSoltar?: (evento: SoltarItem<T, C>) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Regra de destino: `false` impede soltar o item ali (ex.: coluna cheia).
|
|
41
|
+
* `de` é o lugar onde o arraste começou.
|
|
42
|
+
*/
|
|
43
|
+
podeSoltar?: (item: T, para: PosicaoQuadro, de: PosicaoQuadro) => boolean;
|
|
44
|
+
/** Filtro: os itens com `false` ficam escondidos, mas continuam no lugar ao arrastar os outros. */
|
|
45
|
+
visivel?: (item: T) => boolean;
|
|
14
46
|
/** Desenha o item; ponha a `alca` (botão de arrastar) onde quiser, ex.: no cabeçalho do card. */
|
|
15
47
|
renderItem: (item: T, alca: ReactNode) => ReactNode;
|
|
16
48
|
/** Nome de cada item para leitor de tela (ex.: o título do card). */
|
|
17
49
|
nomeItem: (item: T) => string;
|
|
50
|
+
/**
|
|
51
|
+
* `grade` (padrão) = as colunas dividem a largura e quebram linha ·
|
|
52
|
+
* `faixa` = colunas de largura fixa lado a lado, com rolagem horizontal (kanban).
|
|
53
|
+
*/
|
|
54
|
+
layout?: 'grade' | 'faixa';
|
|
55
|
+
/** Na `faixa`, a largura de cada coluna; na `grade`, a largura mínima (padrão: 18rem e 16rem). */
|
|
56
|
+
larguraColuna?: string;
|
|
57
|
+
/** Topo de cada coluna. `alca` é o botão de arrastar a coluna (com `colunasArrastaveis`). */
|
|
58
|
+
cabecalhoColuna?: (coluna: C, alca: ReactNode) => ReactNode;
|
|
59
|
+
/** Pé de cada coluna (ex.: "Adicionar cartão"). Some na coluna recolhida. */
|
|
60
|
+
rodapeColuna?: (coluna: C) => ReactNode;
|
|
61
|
+
/** As colunas também se reordenam, pela alça do cabeçalho. */
|
|
62
|
+
colunasArrastaveis?: boolean;
|
|
63
|
+
/** Avisa a coluna que mudou de lugar, ao soltar. */
|
|
64
|
+
aoSoltarColuna?: (evento: SoltarColuna<C>) => void;
|
|
65
|
+
/** Conteúdo depois da última coluna, na mesma fileira (ex.: "Adicionar coluna"). */
|
|
66
|
+
fim?: ReactNode;
|
|
67
|
+
/** Classe extra de cada coluna (vale também para a cópia que segue o ponteiro). */
|
|
68
|
+
classeColuna?: (coluna: C) => string | undefined;
|
|
69
|
+
/** Nome acessível do quadro. */
|
|
70
|
+
rotulo?: string;
|
|
18
71
|
className?: string;
|
|
19
72
|
}
|
|
20
73
|
/**
|
|
21
74
|
* Colunas de itens (cards) que se reordenam arrastando, entre colunas
|
|
22
75
|
* inclusive. Mouse, toque e teclado: na alça, Espaço pega/solta, setas movem,
|
|
23
|
-
* Esc devolve ao lugar de origem.
|
|
76
|
+
* Esc devolve ao lugar de origem. Perto da borda, a tela rola sozinha.
|
|
24
77
|
*/
|
|
25
78
|
export declare function QuadroArrastavel<T extends {
|
|
26
79
|
id: string;
|
|
27
|
-
}>({ colunas, aoMudar, renderItem, nomeItem, className }: QuadroArrastavelProps<T>): import("react").JSX.Element;
|
|
80
|
+
}, C extends ColunaArrastavel<T> = ColunaArrastavel<T>>({ colunas, aoMudar, aoSoltar, podeSoltar, visivel, renderItem, nomeItem, layout, larguraColuna, cabecalhoColuna, rodapeColuna, colunasArrastaveis, aoSoltarColuna, fim, classeColuna, rotulo, className, }: QuadroArrastavelProps<T, C>): import("react").JSX.Element;
|
|
@@ -21,4 +21,4 @@ export interface ReferenciasProps {
|
|
|
21
21
|
className?: string;
|
|
22
22
|
}
|
|
23
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;
|
|
24
|
+
export declare function Referencias({ itens, abertoInicial, rotulo: rotuloProp, rotuloMostrarMais: rotuloMostrarMaisProp, rotuloMostrarMenos: rotuloMostrarMenosProp, className, }: ReferenciasProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
2
|
+
import { type ItemMenuSuspenso } from '../MenuSuspenso/MenuSuspenso.js';
|
|
3
|
+
export interface OpcaoContexto {
|
|
4
|
+
id: string;
|
|
5
|
+
nome: string;
|
|
6
|
+
/** Linha miúda (ex.: "Pessoal", o CNPJ, a cidade da filial). */
|
|
7
|
+
descricao?: string;
|
|
8
|
+
/** Ícone no quadrado; sem ele, as iniciais do nome. */
|
|
9
|
+
icone?: IconeProp;
|
|
10
|
+
/** Cor do quadrado: `pri`, `ok`, `warn`, `err`, `info`, `graf-1` a `graf-6` ou qualquer cor CSS. */
|
|
11
|
+
cor?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SeletorContextoProps {
|
|
14
|
+
opcoes: OpcaoContexto[];
|
|
15
|
+
/** `id` da opção atual. */
|
|
16
|
+
valor: string;
|
|
17
|
+
aoMudar: (id: string) => void;
|
|
18
|
+
/** Título do menu e nome acessível. Padrão "Trocar de espaço". */
|
|
19
|
+
rotulo?: string;
|
|
20
|
+
/** Itens depois das opções (ex.: "Gerenciar espaços"), separados por um divisor. */
|
|
21
|
+
acoes?: ItemMenuSuspenso[];
|
|
22
|
+
aoEscolherAcao?: (id: string) => void;
|
|
23
|
+
/** Só o quadrado, sem o nome (topo estreito). Padrão: some sozinho abaixo de 40rem. */
|
|
24
|
+
compacto?: boolean;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Troca o contexto do sistema inteiro: Pessoal × Empresa, a empresa do grupo,
|
|
29
|
+
* a filial, a escola. Fica no topo (prop `contexto` da `Estrutura`) ou onde o
|
|
30
|
+
* app quiser.
|
|
31
|
+
*/
|
|
32
|
+
export declare function SeletorContexto({ opcoes, valor, aoMudar, rotulo: rotuloProp, acoes, aoEscolherAcao, compacto, className }: SeletorContextoProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Idioma } from '../../i18n/idiomas.js';
|
|
2
|
+
/**
|
|
3
|
+
* Bandeira do idioma em SVG próprio (emoji de bandeira não aparece no Windows).
|
|
4
|
+
* Desenho simplificado, para 1em; decorativa (o nome do idioma vai em texto).
|
|
5
|
+
* Idioma sem bandeira própria mostra o globo.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Bandeira({ idioma, className }: {
|
|
8
|
+
idioma: Idioma;
|
|
9
|
+
className?: string;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Idioma } from '../../i18n/idiomas.js';
|
|
2
|
+
import { type AlinhamentoMenu } from '../MenuSuspenso/MenuSuspenso.js';
|
|
3
|
+
export interface SeletorIdiomaProps {
|
|
4
|
+
/** Idiomas oferecidos, na ordem do menu. Padrão: pt-BR, inglês e espanhol. */
|
|
5
|
+
idiomas?: readonly Idioma[];
|
|
6
|
+
/** Idioma atual. Padrão: o do `ProvedorPreferencias`. */
|
|
7
|
+
valor?: Idioma;
|
|
8
|
+
/** Padrão: troca o idioma do `ProvedorPreferencias` (que avisa o sistema em `aoMudarIdioma`). */
|
|
9
|
+
aoMudar?: (idioma: Idioma) => void;
|
|
10
|
+
/**
|
|
11
|
+
* `icone` = só a bandeira, num botão redondo (topo da `Estrutura`) ·
|
|
12
|
+
* `botao` = bandeira e nome do idioma (tela de login, preferências).
|
|
13
|
+
*/
|
|
14
|
+
aparencia?: 'icone' | 'botao';
|
|
15
|
+
alinhamento?: AlinhamentoMenu;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Troca o idioma dos textos da biblioteca. Cada idioma aparece com o nome no
|
|
20
|
+
* próprio idioma ("Português", "English", "Español") e a bandeira; o atual
|
|
21
|
+
* fica marcado.
|
|
22
|
+
*/
|
|
23
|
+
export declare function SeletorIdioma({ idiomas, valor, aoMudar, aparencia, alinhamento, className }: SeletorIdiomaProps): import("react").JSX.Element;
|
|
@@ -12,4 +12,4 @@ export interface CampoPesquisaProps {
|
|
|
12
12
|
className?: string;
|
|
13
13
|
}
|
|
14
14
|
/** Busca em pílula com botão (`role="search"`), como nas faixas e listagens do site. */
|
|
15
|
-
export declare function CampoPesquisa({ valor, aoMudar, aoPesquisar, placeholder, rotulo, rotuloBotao, aparencia, className }: CampoPesquisaProps): import("react").JSX.Element;
|
|
15
|
+
export declare function CampoPesquisa({ valor, aoMudar, aoPesquisar, placeholder: placeholderProp, rotulo, rotuloBotao: rotuloBotaoProp, aparencia, className }: CampoPesquisaProps): import("react").JSX.Element;
|
|
@@ -19,4 +19,4 @@ export interface CardPlanoProps {
|
|
|
19
19
|
className?: string;
|
|
20
20
|
}
|
|
21
21
|
/** Cartão de plano ou preço: nome, valor, lista do que inclui e o botão de contratar. */
|
|
22
|
-
export declare function CardPlano({ nome, descricao, preco, moeda, periodo, itens, destaque, rotuloDestaque, acao, className }: CardPlanoProps): import("react").JSX.Element;
|
|
22
|
+
export declare function CardPlano({ nome, descricao, preco, moeda, periodo, itens, destaque, rotuloDestaque: rotuloDestaqueProp, acao, className }: CardPlanoProps): import("react").JSX.Element;
|
|
@@ -13,4 +13,4 @@ export interface NewsletterProps {
|
|
|
13
13
|
className?: string;
|
|
14
14
|
}
|
|
15
15
|
/** Inscrição por e-mail (newsletter), para fundo marinho: rodapé ou coluna lateral. */
|
|
16
|
-
export declare function Newsletter({ aoInscrever, titulo, descricao, placeholder, rotuloBotao, mensagemSucesso, aparencia, className, }: NewsletterProps): import("react").JSX.Element;
|
|
16
|
+
export declare function Newsletter({ aoInscrever, titulo: tituloProp, descricao, placeholder: placeholderProp, rotuloBotao: rotuloBotaoProp, mensagemSucesso: mensagemSucessoProp, aparencia, className, }: NewsletterProps): import("react").JSX.Element;
|
|
@@ -14,4 +14,4 @@ export interface SumarioPaginaProps {
|
|
|
14
14
|
* seções, com a seção em leitura marcada. Rola até a seção sem trocar o
|
|
15
15
|
* endereço, então funciona também em app com rotas no `#hash`.
|
|
16
16
|
*/
|
|
17
|
-
export declare function SumarioPagina({ itens, titulo, className }: SumarioPaginaProps): import("react").JSX.Element;
|
|
17
|
+
export declare function SumarioPagina({ itens, titulo: tituloProp, className }: SumarioPaginaProps): import("react").JSX.Element;
|
|
@@ -54,4 +54,4 @@ export interface TabelaProps<T> {
|
|
|
54
54
|
}
|
|
55
55
|
/** Mantido por compatibilidade: é o `lerCampo` dos utilitários. */
|
|
56
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;
|
|
57
|
+
export declare function Tabela<T>({ colunas, registros, chave, acoes, aparencia, rotulo: rotuloProp, carregando, atualizando, erro, aoRecarregar, vazioTitulo: vazioTituloProp, vazioDescricao, vazioIcone, vazioAcoes, ordenacao, aoOrdenar, selecao, selecionados, aoMudarSelecao, aoClicarLinha, paginacao, className, }: TabelaProps<T>): import("react").JSX.Element;
|
|
@@ -63,4 +63,4 @@ export interface TelaLoginProps {
|
|
|
63
63
|
className?: string;
|
|
64
64
|
}
|
|
65
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;
|
|
66
|
+
export declare function TelaLogin({ marca, modelo, apresentacao, ambiente, identificador, titulo: tituloProp, descricao: descricaoProp, aoEntrar, aoConfirmarCodigo, confiarDispositivo, instrucaoCodigo: instrucaoCodigoProp, linkSenha, acoes, rodape, className, }: TelaLoginProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type OpcoesMoeda } from '../../utils/dinheiro.js';
|
|
3
|
+
import { type BotaoProps } from '../Botao/Botao.js';
|
|
4
|
+
interface ContextoValores {
|
|
5
|
+
ocultos: boolean;
|
|
6
|
+
alternar: () => void;
|
|
7
|
+
definir: (ocultos: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface ProvedorValoresProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** Começa com os valores escondidos. Padrão `false`. */
|
|
12
|
+
ocultosInicial?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Chave no `localStorage` para lembrar a escolha entre visitas. Sem ela, vale
|
|
15
|
+
* só enquanto a página estiver aberta.
|
|
16
|
+
*/
|
|
17
|
+
chave?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Guarda o "ocultar valores" de uma área: todo `Valor` dentro dela obedece ao `BotaoOcultarValores`. */
|
|
20
|
+
export declare function ProvedorValores({ children, ocultosInicial, chave }: ProvedorValoresProps): import("react").JSX.Element;
|
|
21
|
+
/** `{ ocultos, alternar, definir }` do `ProvedorValores` mais próximo (fora dele, nada fica oculto). */
|
|
22
|
+
export declare function useValoresOcultos(): ContextoValores;
|
|
23
|
+
export type BotaoOcultarValoresProps = Omit<BotaoProps, 'onClick' | 'icone' | 'pressionado' | 'children'>;
|
|
24
|
+
/** Olho que esconde e mostra os valores do `ProvedorValores`. */
|
|
25
|
+
export declare function BotaoOcultarValores({ rotulo, aparencia, severidade, ...resto }: BotaoOcultarValoresProps): import("react").JSX.Element;
|
|
26
|
+
export interface ValorProps extends OpcoesMoeda {
|
|
27
|
+
valor: number;
|
|
28
|
+
/**
|
|
29
|
+
* Cor pelo sinal: verde no positivo, vermelho no negativo. Padrão: `true`
|
|
30
|
+
* com `tipo`, `false` sem ele.
|
|
31
|
+
*/
|
|
32
|
+
colorir?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Força o sentido, para valores guardados sempre positivos: `receita` = entrada (+) ·
|
|
35
|
+
* `despesa` = saída (−) · `neutro` = sem cor nem `+` (transferência).
|
|
36
|
+
*/
|
|
37
|
+
tipo?: 'receita' | 'despesa' | 'neutro';
|
|
38
|
+
/** Força oculto/visível; sem ele, segue o `ProvedorValores`. */
|
|
39
|
+
oculto?: boolean;
|
|
40
|
+
tamanho?: 'pequeno' | 'normal' | 'grande' | 'destaque';
|
|
41
|
+
/** Texto forte. */
|
|
42
|
+
forte?: boolean;
|
|
43
|
+
/** Riscado (ex.: lançamento cancelado). */
|
|
44
|
+
riscado?: boolean;
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Valor em dinheiro: `R$ 1.234,56`, com sinal e cor de entrada/saída e o
|
|
49
|
+
* "ocultar valores" dos apps de finanças. Os números têm largura fixa
|
|
50
|
+
* (alinham em coluna).
|
|
51
|
+
*/
|
|
52
|
+
export declare function Valor({ valor, colorir, tipo, oculto, tamanho, forte, riscado, className, sinal, ...opcoes }: ValorProps): import("react").JSX.Element;
|
|
53
|
+
export {};
|