@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
|
@@ -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;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface CabecalhoSecaoProps {
|
|
3
|
+
titulo: string;
|
|
4
|
+
/** Texto curto acima do título, em maiúsculas e laranja (ex.: "Novidades"). */
|
|
5
|
+
sobretitulo?: string;
|
|
6
|
+
descricao?: ReactNode;
|
|
7
|
+
/** À direita (ex.: um link "Ver todos →"). */
|
|
8
|
+
acao?: ReactNode;
|
|
9
|
+
/** Nível do título. Padrão: `2`. */
|
|
10
|
+
nivel?: 1 | 2 | 3;
|
|
11
|
+
/** `titulo` de página (maior) ou de `secao` (padrão). */
|
|
12
|
+
tamanho?: 'pagina' | 'secao';
|
|
13
|
+
/** `centro` para seções centralizadas (FAQ, planos). */
|
|
14
|
+
alinhamento?: 'inicio' | 'centro';
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Título de seção ou de página do site, com sobretítulo e ação. */
|
|
18
|
+
export declare function CabecalhoSecao({ titulo, sobretitulo, descricao, acao, nivel, tamanho, alinhamento, className }: CabecalhoSecaoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface CampoPesquisaProps {
|
|
2
|
+
valor: string;
|
|
3
|
+
aoMudar: (valor: string) => void;
|
|
4
|
+
/** Enter ou o botão. Recebe o termo sem espaços nas pontas. */
|
|
5
|
+
aoPesquisar?: (termo: string) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
/** Nome do campo para leitor de tela. Padrão: o `placeholder`. */
|
|
8
|
+
rotulo?: string;
|
|
9
|
+
rotuloBotao?: string;
|
|
10
|
+
/** `padrao` = pílula clara · `destaque` = pílula branca grande com botão laranja, para a faixa marinha. */
|
|
11
|
+
aparencia?: 'padrao' | 'destaque';
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
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: placeholderProp, rotulo, rotuloBotao: rotuloBotaoProp, aparencia, className }: CampoPesquisaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface CardConteudoProps {
|
|
3
|
+
titulo: string;
|
|
4
|
+
/**
|
|
5
|
+
* `vertical` = mídia 16:9 no topo (grade de posts) · `destaque` = mídia no topo e título grande ·
|
|
6
|
+
* `horizontal` = mídia à esquerda (post em destaque) · `compacto` = miniatura quadrada à esquerda ·
|
|
7
|
+
* `linha` = item de listagem, com um quadro à direita (`lateral`).
|
|
8
|
+
*/
|
|
9
|
+
formato?: 'vertical' | 'destaque' | 'horizontal' | 'compacto' | 'linha';
|
|
10
|
+
resumo?: ReactNode;
|
|
11
|
+
/** Linha acima do título: `Badge`s, categoria, data. */
|
|
12
|
+
etiquetas?: ReactNode;
|
|
13
|
+
/** Imagem (ou qualquer nó) do cartão. */
|
|
14
|
+
midia?: ReactNode;
|
|
15
|
+
/** Linha miúda no fim (ex.: "Autor · 05/11/2026 · 6 min de leitura"). */
|
|
16
|
+
rodape?: ReactNode;
|
|
17
|
+
/** `linha`: quadro à direita (ex.: preço, quantidade). */
|
|
18
|
+
lateral?: ReactNode;
|
|
19
|
+
/** O cartão inteiro vira um link (o do título, esticado: o leitor de tela lê só o título). */
|
|
20
|
+
href?: string;
|
|
21
|
+
/** Sem `href`: o cartão inteiro vira um botão. */
|
|
22
|
+
aoClicar?: () => void;
|
|
23
|
+
/** Nível do título. Padrão: `3`. */
|
|
24
|
+
nivel?: 2 | 3 | 4;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/** Cartão de post, notícia, produto ou pessoa do site, em cinco formatos. */
|
|
28
|
+
export declare function CardConteudo({ titulo, formato, resumo, etiquetas, midia, rodape, lateral, href, aoClicar, nivel, className }: CardConteudoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface CardDepoimentoProps {
|
|
2
|
+
/** O depoimento, sem aspas (o cartão põe). */
|
|
3
|
+
texto: string;
|
|
4
|
+
nome: string;
|
|
5
|
+
/** Linha abaixo do nome (ex.: "Cargo · Empresa"). */
|
|
6
|
+
cargo?: string;
|
|
7
|
+
/** URL da foto. Sem ela, as iniciais do `nome`. */
|
|
8
|
+
foto?: string;
|
|
9
|
+
/** De 0 a 5 estrelas. Padrão: `5`; `0` esconde. */
|
|
10
|
+
nota?: number;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Depoimento de cliente: estrelas, citação e quem disse. */
|
|
14
|
+
export declare function CardDepoimento({ texto, nome, cargo, foto, nota, className }: CardDepoimentoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface CardPlanoProps {
|
|
3
|
+
nome: string;
|
|
4
|
+
descricao?: string;
|
|
5
|
+
/** Preço já formatado, sem a moeda (ex.: "99"). */
|
|
6
|
+
preco: string;
|
|
7
|
+
/** Padrão: "R$". */
|
|
8
|
+
moeda?: string;
|
|
9
|
+
/** Depois do preço (ex.: "/mês"). */
|
|
10
|
+
periodo?: string;
|
|
11
|
+
/** O que o plano inclui. */
|
|
12
|
+
itens: string[];
|
|
13
|
+
/** Plano recomendado: cartão marinho e selo no alto. */
|
|
14
|
+
destaque?: boolean;
|
|
15
|
+
/** Texto do selo do `destaque`. Padrão: "Mais escolhido". */
|
|
16
|
+
rotuloDestaque?: string;
|
|
17
|
+
/** Botão no pé do cartão (ex.: `<Botao bloco …>`). */
|
|
18
|
+
acao?: ReactNode;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
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: rotuloDestaqueProp, acao, className }: CardPlanoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type IconeProp } from '../../utils/Icone.js';
|
|
3
|
+
export interface CardRecursoProps {
|
|
4
|
+
titulo: ReactNode;
|
|
5
|
+
/** Texto de apoio. */
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
/** Ícone num quadrado azul-claro. */
|
|
8
|
+
icone?: IconeProp;
|
|
9
|
+
/** No lugar do ícone, um número em laranja (ex.: "01" nos valores da empresa). */
|
|
10
|
+
numero?: string;
|
|
11
|
+
/** Texto miúdo acima do título (ex.: "Telefone" no cartão de contato). */
|
|
12
|
+
sobretitulo?: string;
|
|
13
|
+
/** Abaixo do texto (ex.: um link "Saiba mais →"). */
|
|
14
|
+
acao?: ReactNode;
|
|
15
|
+
/** `vertical` = ícone em cima · `horizontal` = ícone à esquerda. */
|
|
16
|
+
formato?: 'vertical' | 'horizontal';
|
|
17
|
+
/** Nível do título. Padrão: `3`. */
|
|
18
|
+
nivel?: 2 | 3 | 4;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Cartão de diferencial, serviço, valor ou canal de contato: ícone (ou número), título e texto. */
|
|
22
|
+
export declare function CardRecurso({ titulo, children, icone, numero, sobretitulo, acao, formato, nivel, className }: CardRecursoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface ConteudoArtigoProps {
|
|
3
|
+
/** HTML comum do texto: `p`, `h2`, `h3`, `ul`, `ol`, `blockquote`, `a`, `img`, `figure`. */
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Área de leitura de posts e páginas de texto (termos, privacidade): largura de
|
|
9
|
+
* cerca de 70 caracteres e o estilo dos elementos comuns. Markdown convertido em
|
|
10
|
+
* HTML pelo app deve chegar já sanitizado.
|
|
11
|
+
*/
|
|
12
|
+
export declare function ConteudoArtigo({ children, className }: ConteudoArtigoProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface DestaqueSiteProps {
|
|
3
|
+
/** Título principal (vira o `<h1>` da página). */
|
|
4
|
+
titulo: string;
|
|
5
|
+
/** Trecho do título pintado em laranja (ex.: "melhor preço"). */
|
|
6
|
+
realce?: string;
|
|
7
|
+
/** Acima de tudo (ex.: uma `Trilha` nas páginas internas). */
|
|
8
|
+
topo?: ReactNode;
|
|
9
|
+
/** Selo acima do título (ex.: "Atualizado hoje"). */
|
|
10
|
+
selo?: ReactNode;
|
|
11
|
+
/** Texto curto acima do título, em maiúsculas (alternativa ao selo). */
|
|
12
|
+
sobretitulo?: string;
|
|
13
|
+
descricao?: ReactNode;
|
|
14
|
+
/** Abaixo do texto: normalmente um `CampoPesquisa aparencia="destaque"` ou botões. */
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
/** `escuro` (padrão) = faixa marinha com coluna à direita · `claro` = fundo claro, texto centralizado e `midia` embaixo. */
|
|
17
|
+
aparencia?: 'escuro' | 'claro';
|
|
18
|
+
/** Coluna da direita, no `escuro` (ex.: imagem do produto). */
|
|
19
|
+
lateral?: ReactNode;
|
|
20
|
+
/** Imagem larga abaixo do texto, no `claro` (cantos de cima arredondados, encostada na borda de baixo). */
|
|
21
|
+
midia?: ReactNode;
|
|
22
|
+
/** Nível do título. Padrão: `1`. */
|
|
23
|
+
nivel?: 1 | 2;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Faixa marinha de abertura (hero): selo, título com realce, texto, busca e uma coluna livre. */
|
|
27
|
+
export declare function DestaqueSite({ topo, titulo, realce, selo, sobretitulo, descricao, children, aparencia, lateral, midia, nivel, className }: DestaqueSiteProps): import("react").JSX.Element;
|