@celke/kole-react 0.4.1 → 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 -525
- 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/CabecalhoSecao.d.ts +18 -0
- package/dist/components/Site/CampoPesquisa.d.ts +15 -0
- package/dist/components/Site/CardConteudo.d.ts +28 -0
- package/dist/components/Site/CardDepoimento.d.ts +14 -0
- package/dist/components/Site/CardPlano.d.ts +22 -0
- package/dist/components/Site/CardRecurso.d.ts +22 -0
- package/dist/components/Site/ConteudoArtigo.d.ts +12 -0
- package/dist/components/Site/DestaqueSite.d.ts +27 -0
- package/dist/components/Site/EstruturaSite.d.ts +60 -0
- package/dist/components/Site/FaixaChamada.d.ts +14 -0
- package/dist/components/Site/FaixaNumeros.d.ts +20 -0
- package/dist/components/Site/FiltroPilulas.d.ts +17 -0
- package/dist/components/Site/ListaNumerada.d.ts +21 -0
- package/dist/components/Site/Newsletter.d.ts +16 -0
- package/dist/components/Site/SecaoSite.d.ts +15 -0
- package/dist/components/Site/SumarioPagina.d.ts +17 -0
- package/dist/components/Site/linkSite.d.ts +18 -0
- 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 +46 -2
- package/dist/index.js +9325 -3670
- package/dist/index.js.map +1 -1
- package/dist/tailwind.css +96 -82
- package/dist/tokens.css +489 -461
- 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
|
@@ -27,4 +27,4 @@ export interface AvaliacaoProps {
|
|
|
27
27
|
className?: string;
|
|
28
28
|
}
|
|
29
29
|
/** Avaliação por estrelas (ou corações): editável, com meias estrelas, ou só leitura. */
|
|
30
|
-
export declare function Avaliacao({ valor, aoMudar, max, passo, somenteLeitura, rotulo, icone, tamanho, mensagens, aoPassar, limpavel, textoOcupado, className, }: AvaliacaoProps): import("react").JSX.Element;
|
|
30
|
+
export declare function Avaliacao({ valor, aoMudar, max, passo, somenteLeitura, rotulo, icone, tamanho, mensagens, aoPassar, limpavel, textoOcupado: textoOcupadoProp, className, }: AvaliacaoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface PessoaAvatar {
|
|
2
|
+
nome: string;
|
|
3
|
+
foto?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface GrupoAvataresProps {
|
|
6
|
+
pessoas: PessoaAvatar[];
|
|
7
|
+
/** Quantos aparecem; o resto vira "+N" (padrão: 3). */
|
|
8
|
+
max?: number;
|
|
9
|
+
/** Tamanho CSS de cada avatar (padrão: `1.75rem`). */
|
|
10
|
+
tamanho?: string;
|
|
11
|
+
/** Começo do nome acessível (padrão: "Responsáveis"), seguido dos nomes. */
|
|
12
|
+
rotulo?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Avatares sobrepostos com "+N" no fim (responsáveis, membros, participantes). */
|
|
16
|
+
export declare function GrupoAvatares({ pessoas, max, tamanho, rotulo: rotuloProp, className }: GrupoAvataresProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface BlocoCodigoProps {
|
|
2
|
+
codigo: string;
|
|
3
|
+
/** Nome no topo (ex.: `sql`, `tsx`). Vai também em `data-linguagem` e na classe `language-*`, para um realce do app. */
|
|
4
|
+
linguagem?: string;
|
|
5
|
+
/** Botão de copiar. Padrão: `true`. */
|
|
6
|
+
copiavel?: boolean;
|
|
7
|
+
/** Quebra as linhas longas em vez de rolar para o lado. */
|
|
8
|
+
quebrarLinhas?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Bloco de código com a linguagem e o botão de copiar. Sem realce de sintaxe (o app pode
|
|
13
|
+
* aplicar o dele). Serve de componente `code`/`pre` para um renderizador de Markdown.
|
|
14
|
+
*/
|
|
15
|
+
export declare function BlocoCodigo({ codigo, linguagem, copiavel, quebrarLinhas, className }: BlocoCodigoProps): import("react").JSX.Element;
|
|
@@ -7,4 +7,4 @@ export interface BotaoFecharProps extends Omit<ButtonHTMLAttributes<HTMLButtonEl
|
|
|
7
7
|
rotulo?: string;
|
|
8
8
|
}
|
|
9
9
|
/** O × de fechar (avisos, diálogos, painéis), com o nome acessível. */
|
|
10
|
-
export declare function BotaoFechar({ variante, tamanho, rotulo, className, type, ...resto }: BotaoFecharProps): import("react").JSX.Element;
|
|
10
|
+
export declare function BotaoFechar({ variante, tamanho, rotulo: rotuloProp, className, type, ...resto }: BotaoFecharProps): import("react").JSX.Element;
|
|
@@ -26,4 +26,4 @@ export interface BuscaProps {
|
|
|
26
26
|
className?: string;
|
|
27
27
|
}
|
|
28
28
|
/** Busca global da topbar: filtra o menu e hospeda resultados do app. */
|
|
29
|
-
export declare function Busca({ placeholder, ocupado, itensMenu, aoNavegar, aoBuscar, aoMudarTermo, atalho, children, className, }: BuscaProps): import("react").JSX.Element;
|
|
29
|
+
export declare function Busca({ placeholder: placeholderProp, ocupado, itensMenu, aoNavegar, aoBuscar, aoMudarTermo, atalho, children, className, }: BuscaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/** `pri`, `ok`, `warn`, `err`, `info`, `destaque` ou uma série dos gráficos (`graf-1` a `graf-6`). */
|
|
2
|
+
export type CorEvento = 'pri' | 'ok' | 'warn' | 'err' | 'info' | 'destaque' | 'graf-1' | 'graf-2' | 'graf-3' | 'graf-4' | 'graf-5' | 'graf-6';
|
|
3
|
+
export interface EventoCalendario {
|
|
4
|
+
id: string | number;
|
|
5
|
+
titulo: string;
|
|
6
|
+
inicio: Date;
|
|
7
|
+
/** Sem `fim`, o evento ocupa só o horário (ou o dia) de início. */
|
|
8
|
+
fim?: Date;
|
|
9
|
+
/** Evento sem horário (aparece primeiro no dia, sem hora). */
|
|
10
|
+
diaInteiro?: boolean;
|
|
11
|
+
/** Padrão: `pri`. */
|
|
12
|
+
cor?: CorEvento;
|
|
13
|
+
/** Texto miúdo na visão lista (ex.: "Entrega", "Reunião"). */
|
|
14
|
+
categoria?: string;
|
|
15
|
+
/** Mostra o ícone de repetição (o `repetirEvento` já marca). */
|
|
16
|
+
repete?: boolean;
|
|
17
|
+
/** Id do evento base de uma série (o `repetirEvento` preenche): o app sabe qual série mudar. */
|
|
18
|
+
serie?: string | number;
|
|
19
|
+
/** Com `aoAlterarEvento`, este evento não pode ser arrastado nem esticado. */
|
|
20
|
+
fixo?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** Evento provisório, desenhado tracejado (ex.: o do formulário de novo evento aberto). */
|
|
23
|
+
export interface RascunhoCalendario {
|
|
24
|
+
inicio: Date;
|
|
25
|
+
fim?: Date;
|
|
26
|
+
/** Padrão: "(sem título)". */
|
|
27
|
+
titulo?: string;
|
|
28
|
+
cor?: CorEvento;
|
|
29
|
+
diaInteiro?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** Intervalo escolhido na faixa de horários (fim exclusivo). */
|
|
32
|
+
export interface IntervaloHorario {
|
|
33
|
+
inicio: Date;
|
|
34
|
+
fim: Date;
|
|
35
|
+
}
|
|
36
|
+
/** Novo horário de um evento arrastado ou esticado. */
|
|
37
|
+
export interface MudancaEvento {
|
|
38
|
+
inicio: Date;
|
|
39
|
+
fim?: Date;
|
|
40
|
+
/** `mover`: mudou de dia ou de horário, com a mesma duração; `esticar`: mudou só o fim. */
|
|
41
|
+
tipo: 'mover' | 'esticar';
|
|
42
|
+
}
|
|
43
|
+
export type VisaoCalendario = 'mes' | 'semana' | 'dia' | 'lista';
|
|
44
|
+
export interface PeriodoCalendario {
|
|
45
|
+
inicio: Date;
|
|
46
|
+
/** Exclusivo: o primeiro dia depois do período. */
|
|
47
|
+
fim: Date;
|
|
48
|
+
visao: VisaoCalendario;
|
|
49
|
+
}
|
|
50
|
+
export interface CalendarioProps {
|
|
51
|
+
eventos: EventoCalendario[];
|
|
52
|
+
/** Mês mostrado no começo. Padrão: hoje. */
|
|
53
|
+
dataInicial?: Date;
|
|
54
|
+
/** Padrão: `mes`. */
|
|
55
|
+
visaoInicial?: VisaoCalendario;
|
|
56
|
+
/** Visões oferecidas na barra. Padrão: mês, semana, dia e lista. */
|
|
57
|
+
visoes?: VisaoCalendario[];
|
|
58
|
+
/** Primeiro dia da semana: `0` = domingo (padrão), `1` = segunda. */
|
|
59
|
+
inicioSemana?: 0 | 1;
|
|
60
|
+
/** Eventos por dia na visão mês antes do "+N mais". Padrão: `3`. */
|
|
61
|
+
maxPorDia?: number;
|
|
62
|
+
/** O período visível mudou: o app busca os eventos dele. Chamado também ao montar. */
|
|
63
|
+
aoMudarPeriodo?: (periodo: PeriodoCalendario) => void;
|
|
64
|
+
aoClicarDia?: (dia: Date) => void;
|
|
65
|
+
aoClicarEvento?: (evento: EventoCalendario) => void;
|
|
66
|
+
carregando?: boolean;
|
|
67
|
+
/** Visão lista sem eventos no mês. */
|
|
68
|
+
textoVazio?: string;
|
|
69
|
+
/** Nome do calendário para leitor de tela. */
|
|
70
|
+
rotulo?: string;
|
|
71
|
+
/** "Hoje" do calendário (para testes). Padrão: a data atual. */
|
|
72
|
+
hoje?: Date;
|
|
73
|
+
/** Semana e dia: primeira e última hora da faixa de horários. Padrão: 7 e 21. */
|
|
74
|
+
horaInicio?: number;
|
|
75
|
+
horaFim?: number;
|
|
76
|
+
/** Semana e dia: clique num horário vazio, arredondado para a meia hora (ex.: criar evento ali). */
|
|
77
|
+
aoClicarHorario?: (dataHora: Date) => void;
|
|
78
|
+
/** Hora da linha do "agora" (para testes). Padrão: a hora atual, atualizada a cada minuto. */
|
|
79
|
+
agora?: Date;
|
|
80
|
+
/**
|
|
81
|
+
* Liga o arrastar: o evento vai para outro dia (mês) ou horário (semana e dia, de 15 em 15
|
|
82
|
+
* minutos), e a borda de baixo do bloco estica a duração. No toque, segure o evento antes de
|
|
83
|
+
* arrastar. Pelo teclado: Alt+setas movem e Alt+Shift+↑↓ esticam. O app grava a mudança e
|
|
84
|
+
* devolve o evento novo em `eventos`; até lá o calendário mostra o evento onde estava.
|
|
85
|
+
*/
|
|
86
|
+
aoAlterarEvento?: (evento: EventoCalendario, mudanca: MudancaEvento) => void;
|
|
87
|
+
/**
|
|
88
|
+
* Semana e dia: arrastar sobre horários vazios escolhe um intervalo (de 15 em 15 minutos), e um
|
|
89
|
+
* clique escolhe a meia hora. Pelo teclado, Shift+↑↓ no cursor aumentam o intervalo e Enter
|
|
90
|
+
* confirma. Com ele, clique e Enter na faixa de horários chamam este, e não o `aoClicarHorario`.
|
|
91
|
+
*/
|
|
92
|
+
aoSelecionarHorario?: (intervalo: IntervaloHorario) => void;
|
|
93
|
+
/** Evento provisório, tracejado, em qualquer visão (ex.: enquanto o formulário de novo evento está aberto). */
|
|
94
|
+
rascunho?: RascunhoCalendario | null;
|
|
95
|
+
/** Dia mostrado. Mudar a prop leva o calendário até ele (ex.: o dia escolhido num `MiniCalendario`). */
|
|
96
|
+
data?: Date;
|
|
97
|
+
className?: string;
|
|
98
|
+
}
|
|
99
|
+
/** Calendário de eventos com visão mês, semana, dia e lista, em pt-BR. Os eventos vêm do app; o componente só mostra e avisa os cliques. */
|
|
100
|
+
export declare function Calendario({ eventos, dataInicial, visaoInicial, visoes, inicioSemana, maxPorDia, aoMudarPeriodo, aoClicarDia, aoClicarEvento, carregando, textoVazio: textoVazioProp, rotulo: rotuloProp, hoje: hojeProp, horaInicio, horaFim, aoClicarHorario, agora: agoraProp, aoAlterarEvento, aoSelecionarHorario, rascunho, data, className, }: CalendarioProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface MiniCalendarioProps {
|
|
2
|
+
/** Dia escolhido (destacado). */
|
|
3
|
+
valor?: Date | null;
|
|
4
|
+
aoEscolher?: (dia: Date) => void;
|
|
5
|
+
/** Dias com bolinha (ex.: os que têm evento). */
|
|
6
|
+
marcados?: Date[];
|
|
7
|
+
/** Faixa destacada, com `fim` exclusivo (ex.: o `PeriodoCalendario` da semana visível no `Calendario`). */
|
|
8
|
+
destaque?: {
|
|
9
|
+
inicio: Date;
|
|
10
|
+
fim: Date;
|
|
11
|
+
} | null;
|
|
12
|
+
/** Primeiro dia da semana: `0` = domingo (padrão), `1` = segunda. */
|
|
13
|
+
inicioSemana?: 0 | 1;
|
|
14
|
+
/** O mês mostrado mudou (setas ou teclado): o app pode buscar os `marcados` dele. */
|
|
15
|
+
aoMudarMes?: (mes: Date) => void;
|
|
16
|
+
/** "Hoje" do calendário (para testes). Padrão: a data atual. */
|
|
17
|
+
hoje?: Date;
|
|
18
|
+
/** Nome para leitor de tela. Padrão: "Escolher dia". */
|
|
19
|
+
rotulo?: string;
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Calendário pequeno de um mês, para a coluna lateral de uma agenda: escolhe o dia
|
|
24
|
+
* (setas, Home/End, Page Up/Down e Enter também valem) e mostra os dias com evento.
|
|
25
|
+
* Vai sozinho para o mês do `valor` quando ele muda.
|
|
26
|
+
*/
|
|
27
|
+
export declare function MiniCalendario({ valor, aoEscolher, marcados, destaque, inicioSemana, aoMudarMes, hoje: hojeProp, rotulo: rotuloProp, className, }: MiniCalendarioProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Idioma } from '../../i18n/idiomas.js';
|
|
2
|
+
import type { Textos } from '../../i18n/pt-BR.js';
|
|
3
|
+
export declare let NOMES_DIA: string[];
|
|
4
|
+
export declare let CURTOS_DIA: string[];
|
|
5
|
+
export declare let MES: Intl.DateTimeFormat;
|
|
6
|
+
export declare let DIA_LONGO: Intl.DateTimeFormat;
|
|
7
|
+
export declare let HORA: Intl.DateTimeFormat;
|
|
8
|
+
export declare let SEMANA_TITULO: Intl.DateTimeFormat;
|
|
9
|
+
export declare let DIA_TITULO: Intl.DateTimeFormat;
|
|
10
|
+
export declare let TXT: Textos['calendario'];
|
|
11
|
+
/** Interno: troca formatadores e textos para o idioma ativo. */
|
|
12
|
+
export declare function usarIdiomaCalendario(idioma: Idioma): void;
|
|
13
|
+
export declare const meiaNoite: (d: Date) => Date;
|
|
14
|
+
export declare const somaDias: (d: Date, n: number) => Date;
|
|
15
|
+
/** Mesmo horário, `n` dias depois (pelo calendário, não por 24 h). */
|
|
16
|
+
export declare const somaDiasHora: (d: Date, n: number, minutos?: number) => Date;
|
|
17
|
+
export declare const mesmoDia: (a: Date, b: Date) => boolean;
|
|
18
|
+
/** Dias de calendário de `a` até `b`. */
|
|
19
|
+
export declare const difDias: (b: Date, a: Date) => number;
|
|
20
|
+
export declare const chave: (d: Date) => string;
|
|
21
|
+
export declare const deChave: (k: string) => Date;
|
|
22
|
+
export declare const primeiraMaiuscula: (s: string) => string;
|
|
23
|
+
export declare const inicioDaSemana: (d: Date, inicioSemana: 0 | 1) => Date;
|
|
24
|
+
/** As 6 semanas (42 dias) que mostram o mês de `ref`, começando no `inicioSemana`. */
|
|
25
|
+
export declare function gradeDoMes(ref: Date, inicioSemana: 0 | 1): Date[];
|
|
26
|
+
/** Dia que as teclas de uma grade de mês levam (setas, Home/End, Page Up/Down), ou `null` para outra tecla. */
|
|
27
|
+
export declare function diaPelaTecla(tecla: string, dia: Date, inicioSemana: 0 | 1): Date | null;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { EventoCalendario } from './Calendario.js';
|
|
2
|
+
export interface RegraRepeticao {
|
|
3
|
+
frequencia: 'diaria' | 'semanal' | 'mensal' | 'anual';
|
|
4
|
+
/** A cada quantos dias, semanas, meses ou anos. Padrão: `1`. */
|
|
5
|
+
intervalo?: number;
|
|
6
|
+
/** Semanal: dias da semana (`0` = domingo … `6` = sábado). Padrão: o dia do `inicio`. */
|
|
7
|
+
diasSemana?: number[];
|
|
8
|
+
/** Último dia possível (inclusive). */
|
|
9
|
+
ate?: Date;
|
|
10
|
+
/** Número de ocorrências, contadas desde o início da série (as `excecoes` também contam). */
|
|
11
|
+
vezes?: number;
|
|
12
|
+
/** Dias que a série pula (ex.: a ocorrência foi apagada ou movida sozinha). */
|
|
13
|
+
excecoes?: Date[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Ocorrências de um evento que se repete dentro do período (fim exclusivo), prontas
|
|
17
|
+
* para o `Calendario`. Cada uma ganha `id` `"<id>@aaaa-mm-dd"`, `repete: true` e
|
|
18
|
+
* `serie` com o `id` do evento base; o horário e a duração são os do evento base.
|
|
19
|
+
*
|
|
20
|
+
* Mensal no dia 31 (ou anual em 29 de fevereiro) pula os meses (anos) sem esse dia.
|
|
21
|
+
* Use com o `aoMudarPeriodo` do calendário: calcule só o período visível.
|
|
22
|
+
*/
|
|
23
|
+
export declare function repetirEvento(base: EventoCalendario, regra: RegraRepeticao, periodo: {
|
|
24
|
+
inicio: Date;
|
|
25
|
+
fim: Date;
|
|
26
|
+
}): EventoCalendario[];
|
|
@@ -24,6 +24,7 @@ export interface CampoProps extends CampoBaseProps {
|
|
|
24
24
|
* mesmo sem ter sido tocado.
|
|
25
25
|
*/
|
|
26
26
|
export declare const RevelarCamposCtx: import("react").Context<number>;
|
|
27
|
+
/** O texto padrão em pt-BR (os campos usam o do idioma ativo). */
|
|
27
28
|
export declare const MSG_OBRIGATORIO = "Campo obrigat\u00F3rio";
|
|
28
29
|
interface OpcoesValidacao {
|
|
29
30
|
valor: string;
|
|
@@ -25,4 +25,4 @@ export interface CampoBuscaProps<T> extends CampoBaseProps {
|
|
|
25
25
|
* Autocompletar com busca no servidor: o jeito canônico de buscar e vincular
|
|
26
26
|
* uma entidade (pessoa, servidor, fornecedor…) grande demais para carregar inteira.
|
|
27
27
|
*/
|
|
28
|
-
export declare function CampoBusca<T>({ rotulo, dica, erro, aviso, obrigatorio, variante, className, id: idExterno, buscar, paraRotulo, paraDetalhe, chave, valor, aoMudar, minimo, atraso, placeholder, disabled, vazioTexto, }: CampoBuscaProps<T>): import("react").JSX.Element;
|
|
28
|
+
export declare function CampoBusca<T>({ rotulo, dica, erro, aviso, obrigatorio, variante, className, id: idExterno, buscar, paraRotulo, paraDetalhe, chave, valor, aoMudar, minimo, atraso, placeholder: placeholderProp, disabled, vazioTexto: vazioTextoProp, }: CampoBuscaProps<T>): import("react").JSX.Element;
|
|
@@ -22,4 +22,4 @@ export interface CampoCidadeProps extends CampoBaseProps {
|
|
|
22
22
|
* Município filtrado pela UF, com a cascata UF → cidade embutida: quando a
|
|
23
23
|
* UF muda, a cidade da UF anterior é limpa pelo próprio campo.
|
|
24
24
|
*/
|
|
25
|
-
export declare function CampoCidade({ uf, buscarPorUf, valor, aoMudar, placeholder, disabled, ...p }: CampoCidadeProps): import("react").JSX.Element;
|
|
25
|
+
export declare function CampoCidade({ uf, buscarPorUf, valor, aoMudar, placeholder: placeholderProp, disabled, ...p }: CampoCidadeProps): import("react").JSX.Element;
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
+
/** Arquivo anexado à mensagem, mostrado em chip acima do texto. */
|
|
3
|
+
export interface AnexoMensagem {
|
|
4
|
+
id: string | number;
|
|
5
|
+
nome: string;
|
|
6
|
+
/** Em bytes. */
|
|
7
|
+
tamanho?: number;
|
|
8
|
+
/** Tipo MIME (define o ícone). */
|
|
9
|
+
tipo?: string;
|
|
10
|
+
/** Envio em andamento, de 0 a 100: a barra aparece e o Enviar espera. */
|
|
11
|
+
progresso?: number;
|
|
12
|
+
/** O envio falhou: o chip fica vermelho com este texto. */
|
|
13
|
+
erro?: string;
|
|
14
|
+
}
|
|
2
15
|
export interface CampoMensagemProps {
|
|
3
16
|
valor: string;
|
|
4
17
|
aoMudar: (valor: string) => void;
|
|
5
|
-
/** Recebe o texto sem espaços nas pontas;
|
|
18
|
+
/** Recebe o texto sem espaços nas pontas; só vem vazio quando há anexos. */
|
|
6
19
|
aoEnviar: (texto: string) => void;
|
|
7
20
|
/** Uma resposta está chegando: o Enviar vira Parar. */
|
|
8
21
|
gerando?: boolean;
|
|
@@ -17,6 +30,12 @@ export interface CampoMensagemProps {
|
|
|
17
30
|
autoFocus?: boolean;
|
|
18
31
|
/** Botões próprios do app à esquerda do Enviar (anexar, escolher documentos…). */
|
|
19
32
|
acoesExtras?: ReactNode;
|
|
33
|
+
/** Chips dos arquivos anexados, acima do texto. Com anexos, dá para enviar sem texto. */
|
|
34
|
+
anexos?: AnexoMensagem[];
|
|
35
|
+
/** Mostra o "×" em cada chip. */
|
|
36
|
+
aoRemoverAnexo?: (id: AnexoMensagem['id']) => void;
|
|
37
|
+
/** Arquivos soltos sobre o campo ou colados nele (Ctrl+V de uma imagem): o app valida e envia. */
|
|
38
|
+
aoAdicionarArquivos?: (arquivos: File[]) => void;
|
|
20
39
|
/** Rótulo do campo para leitores de tela. */
|
|
21
40
|
rotulo?: string;
|
|
22
41
|
rotuloEnviar?: string;
|
|
@@ -7,4 +7,4 @@ export interface CarregandoProps {
|
|
|
7
7
|
className?: string;
|
|
8
8
|
}
|
|
9
9
|
/** Indicador de espera de seção/página. Para listas, prefira Skeleton. */
|
|
10
|
-
export declare function Carregando({ mensagem, logo, bloqueante, className }: CarregandoProps): import("react").JSX.Element;
|
|
10
|
+
export declare function Carregando({ mensagem: mensagemProp, logo, bloqueante, className }: CarregandoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export interface ChatFlutuanteProps {
|
|
4
|
+
/** Normalmente uma `Conversa` (com o `CampoMensagem` no `campo`). Ocupa a altura do painel. */
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
/** Título do painel. Padrão: "Fale com a gente". */
|
|
7
|
+
titulo?: string;
|
|
8
|
+
/** Abaixo do título (ex.: "Respondemos em poucos minutos"). */
|
|
9
|
+
subtitulo?: ReactNode;
|
|
10
|
+
/** Foto (URL) ou nó (ícone, `Avatar`) ao lado do título. Padrão: o ícone do botão. */
|
|
11
|
+
avatar?: ReactNode;
|
|
12
|
+
/** Texto do botão. No celular, só o ícone aparece. Padrão: o `titulo`. */
|
|
13
|
+
rotuloBotao?: string;
|
|
14
|
+
icone?: IconeProp;
|
|
15
|
+
/** Bolinha com a contagem sobre o botão (mensagens não lidas). */
|
|
16
|
+
naoLidas?: number;
|
|
17
|
+
/** Controlado: o app abre e fecha. */
|
|
18
|
+
aberto?: boolean;
|
|
19
|
+
aoMudarAberto?: (aberto: boolean) => void;
|
|
20
|
+
abertoInicial?: boolean;
|
|
21
|
+
/** Canto da tela. Padrão: `direita`. */
|
|
22
|
+
lado?: 'direita' | 'esquerda';
|
|
23
|
+
/** Ações no topo do painel, antes do fechar (ex.: "Nova conversa"). */
|
|
24
|
+
acoes?: ReactNode;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Chat de atendimento para site: botão fixo no canto que abre um painel com a conversa.
|
|
29
|
+
* Esc fecha e o foco volta ao botão; no celular o painel ocupa a tela.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ChatFlutuante({ children, titulo: tituloProp, subtitulo, avatar, rotuloBotao, icone, naoLidas, aberto: abertoProp, aoMudarAberto, abertoInicial, lado, acoes, className, }: ChatFlutuanteProps): import("react").JSX.Element;
|
|
@@ -18,4 +18,4 @@ export interface ConversaProps {
|
|
|
18
18
|
* última cresce (streaming); se a pessoa rolar para cima, para de puxar e
|
|
19
19
|
* mostra "Ir para o fim". Ocupa a altura do contêiner pai.
|
|
20
20
|
*/
|
|
21
|
-
export declare function Conversa({ children, vazio, campo, larguraMaxima, rotulo, rotuloIrParaFim, className, }: ConversaProps): import("react").JSX.Element;
|
|
21
|
+
export declare function Conversa({ children, vazio, campo, larguraMaxima, rotulo: rotuloProp, rotuloIrParaFim: rotuloIrParaFimProp, className, }: ConversaProps): import("react").JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type MouseEvent, type ReactNode } from 'react';
|
|
2
2
|
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
3
|
import { type ModeloTrilha } from '../Trilha/Trilha.js';
|
|
4
|
+
import { type Idioma } from '../../i18n/idiomas.js';
|
|
4
5
|
export interface ItemNav {
|
|
5
6
|
rotulo: string;
|
|
6
7
|
icone?: IconeProp;
|
|
@@ -100,8 +101,18 @@ export interface EstruturaProps {
|
|
|
100
101
|
busca?: ReactNode | false;
|
|
101
102
|
placeholderBusca?: string;
|
|
102
103
|
aoBuscar?: (termo: string) => void;
|
|
103
|
-
/** Controles extras à direita da topbar. */
|
|
104
|
+
/** Controles extras à direita da topbar (somem no celular). */
|
|
104
105
|
complementosTopbar?: ReactNode;
|
|
106
|
+
/**
|
|
107
|
+
* Seletor do contexto do sistema (ex.: `SeletorContexto` com Pessoal ×
|
|
108
|
+
* Empresa, ou a filial), à esquerda da topbar. Fica visível também no celular.
|
|
109
|
+
*/
|
|
110
|
+
contexto?: ReactNode;
|
|
111
|
+
/**
|
|
112
|
+
* Idiomas do seletor na topbar, ao lado do tema (ex.: `['pt-BR', 'en', 'es']`).
|
|
113
|
+
* Sem a prop, o seletor não aparece. A troca vai para o `ProvedorPreferencias`.
|
|
114
|
+
*/
|
|
115
|
+
idiomas?: Idioma[];
|
|
105
116
|
children?: ReactNode;
|
|
106
117
|
}
|
|
107
118
|
/**
|
|
@@ -110,4 +121,4 @@ export interface EstruturaProps {
|
|
|
110
121
|
* Responsiva: abaixo de 64rem a sidebar vira sobreposição; abaixo de 48rem,
|
|
111
122
|
* gaveta com hambúrguer.
|
|
112
123
|
*/
|
|
113
|
-
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;
|
|
124
|
+
export declare function Estrutura({ marca, nav, rotaAtual, aoNavegar, renderLink, usuario, menuUsuario, aoEscolherMenuUsuario, notificacoes, aoEscolherNotificacao, menuDesenvolvimento, aoEscolherMenuDesenvolvimento, ambiente, versao, rodapeSidebar, rodape, modeloTrilha, submenu, busca, placeholderBusca: placeholderBuscaProp, aoBuscar, complementosTopbar, contexto, idiomas, children, }: EstruturaProps): import("react").JSX.Element;
|
|
@@ -67,7 +67,7 @@ export interface FormProps {
|
|
|
67
67
|
* Formulário de cadastro. Agrupe os campos em `<FormSecao>`; a grade de
|
|
68
68
|
* colunas, o menu lateral e o rodapé com Salvar/Cancelar vêm prontos.
|
|
69
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;
|
|
70
|
+
export declare function Form({ arranjo, titulo: tituloProp, entidade, modo, trilha, identidade, icone, aberto, tamanho, aoSalvar, aoCancelar, salvando, pendencias, menu, menuTitulo: menuTituloProp, menuAtivo, aoEscolherMenu, acoes, acoesPadrao, posicaoAcoes, rotuloSalvar: rotuloSalvarProp, children, className, }: FormProps): import("react").JSX.Element | null;
|
|
71
71
|
export interface FormSecaoProps {
|
|
72
72
|
legenda: string;
|
|
73
73
|
icone?: IconeProp;
|
|
@@ -12,4 +12,4 @@ export interface GiradorProps {
|
|
|
12
12
|
className?: string;
|
|
13
13
|
}
|
|
14
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;
|
|
15
|
+
export declare function Girador({ tipo, cor, tamanho, rotulo: rotuloProp, mostrarRotulo, className }: GiradorProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DadoGrafico, GraficoBaseProps } from './tipos.js';
|
|
2
|
+
export interface GraficoRoscaProps extends GraficoBaseProps {
|
|
3
|
+
/** Cada item é uma fatia. Valores zero, negativos ou sem dado ficam de fora. */
|
|
4
|
+
dados: DadoGrafico[];
|
|
5
|
+
/** Campo com o nome da fatia (ex.: a categoria). */
|
|
6
|
+
chaveRotulo: string;
|
|
7
|
+
chaveValor: string;
|
|
8
|
+
/** Campo com a cor de cada fatia (padrão: `--graf-1`, `--graf-2`… na ordem). */
|
|
9
|
+
chaveCor?: string;
|
|
10
|
+
/** Formata os valores (padrão: número pt-BR). Ex.: `(v) => formatarMoeda(v)`. */
|
|
11
|
+
formatar?: (valor: number) => string;
|
|
12
|
+
/** Texto do meio quando nenhuma fatia está ativa. Padrão: "Total" e a soma das visíveis. */
|
|
13
|
+
centro?: {
|
|
14
|
+
rotulo?: string;
|
|
15
|
+
valor?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Junta as menores numa fatia "Outros" a partir desta quantidade (ex.: `6`
|
|
19
|
+
* mostra as 5 maiores e "Outros"). Sem ela, mostra todas.
|
|
20
|
+
*/
|
|
21
|
+
maxFatias?: number;
|
|
22
|
+
rotuloOutros?: string;
|
|
23
|
+
/** Espessura do anel, em fração do raio (0,1 a 0,9). Padrão `0.32`. */
|
|
24
|
+
espessura?: number;
|
|
25
|
+
/** Legenda ao lado (`lado`, se couber) ou `abaixo`. Padrão `lado`. */
|
|
26
|
+
posicaoLegenda?: 'lado' | 'abaixo';
|
|
27
|
+
/** Clique numa fatia (ex.: filtrar os lançamentos da categoria). */
|
|
28
|
+
aoEscolher?: (item: DadoGrafico, indice: number) => void;
|
|
29
|
+
}
|
|
30
|
+
/** Participação de cada parte num todo (despesas por categoria, carteira, canais de venda). */
|
|
31
|
+
export declare function GraficoRosca(props: GraficoRoscaProps): import("react").JSX.Element;
|
|
@@ -33,8 +33,43 @@ export declare function Amostra({ cor, forma, tracejada }: {
|
|
|
33
33
|
forma: FormaLegenda;
|
|
34
34
|
tracejada?: boolean;
|
|
35
35
|
}): import("react").JSX.Element;
|
|
36
|
+
/**
|
|
37
|
+
* Interno: os textos dos gráficos no idioma ativo. Também registra o idioma
|
|
38
|
+
* para as funções puras de `escalas.ts` (números e datas dos eixos).
|
|
39
|
+
*/
|
|
40
|
+
export declare function useTextosGrafico(): {
|
|
41
|
+
categoria: string;
|
|
42
|
+
data: string;
|
|
43
|
+
valor: string;
|
|
44
|
+
semDados: string;
|
|
45
|
+
verGrafico: string;
|
|
46
|
+
verDados: string;
|
|
47
|
+
series: string;
|
|
48
|
+
esconderSerie: string;
|
|
49
|
+
mostrarSerie: string;
|
|
50
|
+
eixo: string;
|
|
51
|
+
eixoEsquerdo: string;
|
|
52
|
+
eixoDireito: string;
|
|
53
|
+
semDado: string;
|
|
54
|
+
pontos: string;
|
|
55
|
+
destaque: string;
|
|
56
|
+
tendencia: string;
|
|
57
|
+
ponto: string;
|
|
58
|
+
pontoN: string;
|
|
59
|
+
linha: string;
|
|
60
|
+
outros: string;
|
|
61
|
+
item: string;
|
|
62
|
+
participacao: string;
|
|
63
|
+
total: string;
|
|
64
|
+
totalDe: string;
|
|
65
|
+
fatias: string;
|
|
66
|
+
esconderFatia: string;
|
|
67
|
+
mostrarFatia: string;
|
|
68
|
+
alta: string;
|
|
69
|
+
queda: string;
|
|
70
|
+
};
|
|
36
71
|
/** Esqueleto comum dos gráficos: título, legenda, ver dados, carregando e vazio. */
|
|
37
|
-
export declare function MolduraGrafico({ titulo, altura, legenda, carregando, textoVazio, verDados, animacao, className, semDados, itensLegenda, aoAlternarSerie, tabela, nota, children, }: MolduraGraficoProps): import("react").JSX.Element;
|
|
72
|
+
export declare function MolduraGrafico({ titulo, altura, legenda, carregando, textoVazio: textoVazioProp, verDados, animacao, className, semDados, itensLegenda, aoAlternarSerie, tabela, nota, children, }: MolduraGraficoProps): import("react").JSX.Element;
|
|
38
73
|
/** Legenda: esconde/mostra uma série, mas nunca a última visível (o gráfico ficaria em branco). */
|
|
39
74
|
export declare function useSeriesOcultas(): readonly [ReadonlySet<string>, (chave: string, total: number) => void];
|
|
40
75
|
/** Ponto ativo da caixa de detalhes: mouse, toque e setas do teclado andam pelos itens. */
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { type Idioma } from '../../i18n/idiomas.js';
|
|
1
2
|
import type { EixoGrafico, EixoXGrafico, ValorGrafico } from './tipos.js';
|
|
3
|
+
/** Interno: o gráfico registra o idioma ativo antes de desenhar. */
|
|
4
|
+
export declare function usarIdiomaGrafico(i: Idioma): void;
|
|
2
5
|
/** Valor da caixa de detalhes e da tabela: `1.234,5 mm`. */
|
|
3
6
|
export declare function formatarValor(valor: ValorGrafico | undefined, eixo?: EixoGrafico): string;
|
|
4
7
|
/** Rótulo do eixo: compacto a partir de 10 mil (`12,4 mil`). */
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export interface SugestaoConversa {
|
|
4
|
+
id?: string;
|
|
5
|
+
/** Texto do cartão (e, sem `texto`, o que vai para o campo). */
|
|
6
|
+
titulo: string;
|
|
7
|
+
/** Linha miúda abaixo do título. */
|
|
8
|
+
descricao?: string;
|
|
9
|
+
icone?: IconeProp;
|
|
10
|
+
/** O que mandar ao escolher, se for diferente do título. */
|
|
11
|
+
texto?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface InicioConversaProps {
|
|
14
|
+
/** Saudação (ex.: "Boa tarde, Ana. Como posso ajudar?"). */
|
|
15
|
+
titulo: ReactNode;
|
|
16
|
+
descricao?: ReactNode;
|
|
17
|
+
/** Ícone ou imagem acima da saudação. */
|
|
18
|
+
icone?: IconeProp;
|
|
19
|
+
sugestoes?: SugestaoConversa[];
|
|
20
|
+
/** A pessoa escolheu uma sugestão: o app envia ou coloca o texto no campo. */
|
|
21
|
+
aoEscolher?: (sugestao: SugestaoConversa) => void;
|
|
22
|
+
/** `cartoes` (padrão): grade de cartões · `pilulas`: botões em linha, para painéis estreitos (ex.: `ChatFlutuante`). */
|
|
23
|
+
aparencia?: 'cartoes' | 'pilulas';
|
|
24
|
+
/** Abaixo das sugestões (ex.: um aviso sobre o uso dos dados). */
|
|
25
|
+
children?: ReactNode;
|
|
26
|
+
className?: string;
|
|
27
|
+
}
|
|
28
|
+
/** Tela inicial de uma conversa: saudação e sugestões clicáveis. Vai no `vazio` da `Conversa`. */
|
|
29
|
+
export declare function InicioConversa({ titulo, descricao, icone, sugestoes, aoEscolher, aparencia, children, className }: InicioConversaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type PessoaAvatar } from '../Avatar/GrupoAvatares.js';
|
|
3
|
+
import type { ContagemSubtarefas, CorKanban, EtiquetaKanban, Prioridade } from './tipos.js';
|
|
4
|
+
export interface CartaoKanbanProps {
|
|
5
|
+
titulo: string;
|
|
6
|
+
/** Resumo em até duas linhas. */
|
|
7
|
+
descricao?: string;
|
|
8
|
+
/** Imagem do topo: URL ou um elemento pronto. */
|
|
9
|
+
capa?: string | ReactNode;
|
|
10
|
+
etiquetas?: EtiquetaKanban[];
|
|
11
|
+
prioridade?: Prioridade;
|
|
12
|
+
/** Data de vencimento (`Date` ou `AAAA-MM-DD`). */
|
|
13
|
+
vencimento?: Date | string;
|
|
14
|
+
/** Concluído: o prazo fica verde, sem "Atrasado". */
|
|
15
|
+
concluido?: boolean;
|
|
16
|
+
subtarefas?: ContagemSubtarefas;
|
|
17
|
+
anexos?: number;
|
|
18
|
+
comentarios?: number;
|
|
19
|
+
responsaveis?: PessoaAvatar[];
|
|
20
|
+
/** Faixa colorida na borda esquerda. */
|
|
21
|
+
cor?: CorKanban;
|
|
22
|
+
/** Espaço livre abaixo do título (ex.: valor e empresa de um negócio no CRM). */
|
|
23
|
+
extra?: ReactNode;
|
|
24
|
+
/** Botão de arrastar, recebido do `Kanban`/`QuadroArrastavel`. */
|
|
25
|
+
alca?: ReactNode;
|
|
26
|
+
/** Botões no canto superior (ex.: um `MenuSuspenso` de ações). */
|
|
27
|
+
acoes?: ReactNode;
|
|
28
|
+
/** Clicar no cartão (ou Enter no título) abre o detalhe. */
|
|
29
|
+
aoAbrir?: () => void;
|
|
30
|
+
/** Referência de "hoje" para o prazo (padrão: agora). */
|
|
31
|
+
agora?: Date;
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
/** Cartão de kanban: capa, etiquetas, título, prioridade, prazo, subtarefas, contadores e responsáveis. */
|
|
35
|
+
export declare function CartaoKanban({ titulo, descricao, capa, etiquetas, prioridade, vencimento, concluido, subtarefas, anexos, comentarios, responsaveis, cor, extra, alca, acoes, aoAbrir, agora, className, }: CartaoKanbanProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type ItemMenuSuspenso } from '../MenuSuspenso/MenuSuspenso.js';
|
|
3
|
+
import { type ColunaArrastavel, type PosicaoQuadro, type SoltarColuna, type SoltarItem } from '../QuadroArrastavel/QuadroArrastavel.js';
|
|
4
|
+
import type { CorKanban } from './tipos.js';
|
|
5
|
+
export interface ColunaKanban<T> extends ColunaArrastavel<T> {
|
|
6
|
+
titulo: string;
|
|
7
|
+
/** Faixa no topo e ponto ao lado do título. */
|
|
8
|
+
cor?: CorKanban;
|
|
9
|
+
/** Máximo de cartões (WIP): a coluna cheia não aceita mais nenhum e a contagem fica laranja. */
|
|
10
|
+
limite?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface KanbanProps<T extends {
|
|
13
|
+
id: string;
|
|
14
|
+
}, C extends ColunaKanban<T> = ColunaKanban<T>> {
|
|
15
|
+
/** Colunas com os cartões; campos a mais voltam em `aoMudar`. */
|
|
16
|
+
colunas: (ColunaKanban<T> & C)[];
|
|
17
|
+
/** As colunas na ordem nova (ao soltar um cartão ou uma coluna). */
|
|
18
|
+
aoMudar: (colunas: C[]) => void;
|
|
19
|
+
/** De onde para onde o cartão foi: grave no servidor aqui. */
|
|
20
|
+
aoSoltar?: (evento: SoltarItem<T, C>) => void;
|
|
21
|
+
/** Liga o arraste das colunas pela alça do cabeçalho e avisa a ordem nova. */
|
|
22
|
+
aoSoltarColuna?: (evento: SoltarColuna<C>) => void;
|
|
23
|
+
/** Regra extra de destino (o `limite` das colunas já é respeitado). */
|
|
24
|
+
podeSoltar?: (item: T, para: PosicaoQuadro, de: PosicaoQuadro) => boolean;
|
|
25
|
+
/** Desenha o cartão (em geral um `CartaoKanban`); ponha a `alca` nele. */
|
|
26
|
+
renderCartao: (item: T, alca: ReactNode) => ReactNode;
|
|
27
|
+
/** Nome do cartão para leitor de tela. */
|
|
28
|
+
nomeItem: (item: T) => string;
|
|
29
|
+
/** Busca e filtros: os cartões com `false` somem, e o arraste dos outros continua valendo. */
|
|
30
|
+
filtro?: (item: T) => boolean;
|
|
31
|
+
/** Mostra "Adicionar cartão" no pé de cada coluna; recebe o título digitado. */
|
|
32
|
+
aoAdicionarCartao?: (colunaId: string, titulo: string) => void;
|
|
33
|
+
/** Mostra "Adicionar coluna" no fim do quadro. */
|
|
34
|
+
aoAdicionarColuna?: (titulo: string) => void;
|
|
35
|
+
/** Liga "Renomear" no menu da coluna (o título vira um campo). */
|
|
36
|
+
aoRenomearColuna?: (colunaId: string, titulo: string) => void;
|
|
37
|
+
/** Liga "Recolher" no menu e o botão de expandir na coluna recolhida. */
|
|
38
|
+
aoRecolherColuna?: (colunaId: string, recolhida: boolean) => void;
|
|
39
|
+
/** Liga "Excluir coluna" no menu. Peça confirmação no app, se quiser (`useConfirmacao`). */
|
|
40
|
+
aoExcluirColuna?: (colunaId: string) => void;
|
|
41
|
+
/** Itens a mais no menu de cada coluna. */
|
|
42
|
+
acoesColuna?: (coluna: C) => ItemMenuSuspenso[];
|
|
43
|
+
aoEscolherAcaoColuna?: (acao: string, coluna: C) => void;
|
|
44
|
+
/** Largura de cada coluna (padrão: `18rem`). */
|
|
45
|
+
larguraColuna?: string;
|
|
46
|
+
/** Altura fixa do quadro (ex.: `calc(100dvh - 14rem)`): cada coluna rola por dentro. */
|
|
47
|
+
altura?: string;
|
|
48
|
+
vazioTitulo?: string;
|
|
49
|
+
vazioDescricao?: string;
|
|
50
|
+
/** Nome acessível do quadro (padrão: "Quadro"). */
|
|
51
|
+
rotulo?: string;
|
|
52
|
+
className?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Quadro kanban: colunas com cabeçalho (cor, contagem, limite, menu de
|
|
56
|
+
* renomear, recolher e excluir), cartões que se arrastam entre colunas,
|
|
57
|
+
* "Adicionar cartão", "Adicionar coluna" e rolagem horizontal. Montado
|
|
58
|
+
* sobre o `QuadroArrastavel`: mouse, toque e teclado.
|
|
59
|
+
*/
|
|
60
|
+
export declare function Kanban<T extends {
|
|
61
|
+
id: string;
|
|
62
|
+
}, C extends ColunaKanban<T> = ColunaKanban<T>>({ colunas, aoMudar, aoSoltar, aoSoltarColuna, podeSoltar, renderCartao, nomeItem, filtro, aoAdicionarCartao, aoAdicionarColuna, aoRenomearColuna, aoRecolherColuna, aoExcluirColuna, acoesColuna, aoEscolherAcaoColuna, larguraColuna, altura, vazioTitulo: vazioTituloProp, vazioDescricao: vazioDescricaoProp, rotulo: rotuloProp, className, }: KanbanProps<T, C>): import("react").JSX.Element;
|