@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.
Files changed (82) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +968 -525
  3. package/dist/components/Avaliacao/Avaliacao.d.ts +1 -1
  4. package/dist/components/Avatar/GrupoAvatares.d.ts +16 -0
  5. package/dist/components/BlocoCodigo/BlocoCodigo.d.ts +15 -0
  6. package/dist/components/BotaoFechar/BotaoFechar.d.ts +1 -1
  7. package/dist/components/Busca/Busca.d.ts +1 -1
  8. package/dist/components/Calendario/Calendario.d.ts +100 -0
  9. package/dist/components/Calendario/MiniCalendario.d.ts +27 -0
  10. package/dist/components/Calendario/datasCalendario.d.ts +27 -0
  11. package/dist/components/Calendario/repetirEvento.d.ts +26 -0
  12. package/dist/components/Campo/Campo.d.ts +1 -0
  13. package/dist/components/CampoBusca/CampoBusca.d.ts +1 -1
  14. package/dist/components/CampoBusca/CampoCidade.d.ts +1 -1
  15. package/dist/components/CampoMensagem/CampoMensagem.d.ts +20 -1
  16. package/dist/components/Carregando/Carregando.d.ts +1 -1
  17. package/dist/components/ChatFlutuante/ChatFlutuante.d.ts +31 -0
  18. package/dist/components/Conversa/Conversa.d.ts +1 -1
  19. package/dist/components/Estrutura/Estrutura.d.ts +13 -2
  20. package/dist/components/Form/Form.d.ts +1 -1
  21. package/dist/components/Girador/Girador.d.ts +1 -1
  22. package/dist/components/Grafico/GraficoRosca.d.ts +31 -0
  23. package/dist/components/Grafico/MolduraGrafico.d.ts +36 -1
  24. package/dist/components/Grafico/escalas.d.ts +3 -0
  25. package/dist/components/InicioConversa/InicioConversa.d.ts +29 -0
  26. package/dist/components/Kanban/CartaoKanban.d.ts +35 -0
  27. package/dist/components/Kanban/Kanban.d.ts +62 -0
  28. package/dist/components/Kanban/Pecas.d.ts +30 -0
  29. package/dist/components/Kanban/tipos.d.ts +35 -0
  30. package/dist/components/ListaCards/ListaCards.d.ts +1 -1
  31. package/dist/components/ListaConversas/ListaConversas.d.ts +40 -0
  32. package/dist/components/ListaTarefas/ListaTarefas.d.ts +52 -0
  33. package/dist/components/Mensagem/Mensagem.d.ts +1 -1
  34. package/dist/components/NavegadorPeriodo/NavegadorPeriodo.d.ts +28 -0
  35. package/dist/components/Picklist/Picklist.d.ts +1 -1
  36. package/dist/components/Preferencias/Preferencias.d.ts +25 -2
  37. package/dist/components/QuadroArrastavel/QuadroArrastavel.d.ts +59 -6
  38. package/dist/components/Referencias/Referencias.d.ts +1 -1
  39. package/dist/components/SeletorContexto/SeletorContexto.d.ts +32 -0
  40. package/dist/components/SeletorIdioma/Bandeira.d.ts +10 -0
  41. package/dist/components/SeletorIdioma/SeletorIdioma.d.ts +23 -0
  42. package/dist/components/Site/CabecalhoSecao.d.ts +18 -0
  43. package/dist/components/Site/CampoPesquisa.d.ts +15 -0
  44. package/dist/components/Site/CardConteudo.d.ts +28 -0
  45. package/dist/components/Site/CardDepoimento.d.ts +14 -0
  46. package/dist/components/Site/CardPlano.d.ts +22 -0
  47. package/dist/components/Site/CardRecurso.d.ts +22 -0
  48. package/dist/components/Site/ConteudoArtigo.d.ts +12 -0
  49. package/dist/components/Site/DestaqueSite.d.ts +27 -0
  50. package/dist/components/Site/EstruturaSite.d.ts +60 -0
  51. package/dist/components/Site/FaixaChamada.d.ts +14 -0
  52. package/dist/components/Site/FaixaNumeros.d.ts +20 -0
  53. package/dist/components/Site/FiltroPilulas.d.ts +17 -0
  54. package/dist/components/Site/ListaNumerada.d.ts +21 -0
  55. package/dist/components/Site/Newsletter.d.ts +16 -0
  56. package/dist/components/Site/SecaoSite.d.ts +15 -0
  57. package/dist/components/Site/SumarioPagina.d.ts +17 -0
  58. package/dist/components/Site/linkSite.d.ts +18 -0
  59. package/dist/components/Tabela/Tabela.d.ts +1 -1
  60. package/dist/components/TelaLogin/TelaLogin.d.ts +1 -1
  61. package/dist/components/Valor/Valor.d.ts +53 -0
  62. package/dist/estilos.css +1 -1
  63. package/dist/i18n/contexto.d.ts +15 -0
  64. package/dist/i18n/en.d.ts +3 -0
  65. package/dist/i18n/es.d.ts +3 -0
  66. package/dist/i18n/idiomas.d.ts +41 -0
  67. package/dist/i18n/pt-BR.d.ts +545 -0
  68. package/dist/i18n/textos.d.ts +17 -0
  69. package/dist/index.d.ts +46 -2
  70. package/dist/index.js +9325 -3670
  71. package/dist/index.js.map +1 -1
  72. package/dist/tailwind.css +96 -82
  73. package/dist/tokens.css +489 -461
  74. package/dist/utils/dinheiro.d.ts +49 -0
  75. package/dist/utils/entidade.d.ts +3 -2
  76. package/dist/utils/periodo.d.ts +36 -0
  77. package/dist/utils/senha.d.ts +2 -1
  78. package/dist/utils/tempo.d.ts +32 -0
  79. package/dist/utils/texto.d.ts +12 -5
  80. package/dist/utils/tiposCampo.d.ts +3 -1
  81. package/dist/utils/validadores.d.ts +4 -2
  82. package/package.json +93 -91
@@ -0,0 +1,60 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { Marca, PropsLink } from '../Estrutura/Estrutura.js';
3
+ export interface ItemSite {
4
+ rotulo: string;
5
+ rota: string;
6
+ }
7
+ export interface EstruturaSiteProps {
8
+ marca: Marca;
9
+ /** Itens do menu horizontal (no celular, vão para o painel do botão Menu). */
10
+ nav: ItemSite[];
11
+ /**
12
+ * Rota atual: marca o item ativo (`/blog` também vale para `/blog/post`; vence a rota mais
13
+ * longa). A página inicial (o `href` da marca) só é marcada nela mesma.
14
+ */
15
+ rotaAtual?: string;
16
+ /** Navegação do roteador do app. Ctrl+clique e o botão do meio continuam abrindo em nova aba. */
17
+ aoNavegar?: (rota: string) => void;
18
+ /** Link do roteador (ex.: o `Link` do React Router); recebe `href`, `className`, `onClick` e `children`. */
19
+ renderLink?: (props: PropsLink) => ReactNode;
20
+ /** À direita do menu (ex.: "Entrar" e "Criar conta"). No celular, também vão para o painel. */
21
+ acoes?: ReactNode;
22
+ /** Botão de tema claro/escuro (precisa do `ProvedorUi`). Padrão: `true`. */
23
+ alternarTema?: boolean;
24
+ /** Barra marinha fina acima do cabeçalho (novidade, telefone, e-mail). Some no celular a parte da direita. */
25
+ aviso?: ReactNode;
26
+ /** À direita da barra de aviso (ex.: telefone e e-mail). */
27
+ avisoLateral?: ReactNode;
28
+ /** Normalmente um `RodapeSite`. */
29
+ rodape?: ReactNode;
30
+ children: ReactNode;
31
+ className?: string;
32
+ }
33
+ /**
34
+ * Moldura de site público: cabeçalho fixo com marca, menu horizontal e ações,
35
+ * conteúdo e rodapé. Para sistemas internos, use a `Estrutura`.
36
+ */
37
+ export declare function EstruturaSite({ marca, nav, rotaAtual, aoNavegar, renderLink, acoes, alternarTema, aviso, avisoLateral, rodape, children, className }: EstruturaSiteProps): import("react").JSX.Element;
38
+ export interface LinkRodape {
39
+ rotulo: string;
40
+ rota: string;
41
+ }
42
+ export interface ColunaRodape {
43
+ titulo: string;
44
+ links: LinkRodape[];
45
+ }
46
+ export interface RodapeSiteProps {
47
+ /** Nome em destaque na primeira coluna. */
48
+ nome: string;
49
+ descricao?: ReactNode;
50
+ colunas?: ColunaRodape[];
51
+ /** Abaixo da descrição (ex.: um `Newsletter aparencia="linha"`). A coluna da marca fica mais larga. */
52
+ extra?: ReactNode;
53
+ /** Linha de baixo (ex.: "© 2026 Empresa"). */
54
+ copyright?: ReactNode;
55
+ /** À direita da linha de baixo (ex.: links das redes sociais). */
56
+ redes?: LinkRodape[];
57
+ className?: string;
58
+ }
59
+ /** Rodapé marinho do site: marca, colunas de links e a linha de direitos. */
60
+ export declare function RodapeSite({ nome, descricao, colunas, extra, copyright, redes, className }: RodapeSiteProps): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface FaixaChamadaProps {
3
+ titulo: string;
4
+ descricao?: ReactNode;
5
+ /** Botões à direita. */
6
+ acoes?: ReactNode;
7
+ /** `pri` = azul da marca (padrão) · `escuro` = marinho. */
8
+ cor?: 'pri' | 'escuro';
9
+ /** Nível do título. Padrão: `2`. */
10
+ nivel?: 2 | 3;
11
+ className?: string;
12
+ }
13
+ /** Faixa de chamada para ação ("Pronto para começar?"), com botões. */
14
+ export declare function FaixaChamada({ titulo, descricao, acoes, cor, nivel, className }: FaixaChamadaProps): import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ export interface NumeroSite {
2
+ /** O número já formatado (ex.: "1.200", "4,9/5"). */
3
+ valor: string;
4
+ /** Em laranja, logo depois (ex.: "+", "%", "h"). */
5
+ sufixo?: string;
6
+ rotulo: string;
7
+ }
8
+ export interface FaixaNumerosProps {
9
+ itens: NumeroSite[];
10
+ /**
11
+ * `faixa` = bloco marinho arredondado, números grandes · `cartoes` = um cartão claro por número ·
12
+ * `simples` = só os números, para ficar sobre a faixa de abertura.
13
+ */
14
+ aparencia?: 'faixa' | 'cartoes' | 'simples';
15
+ /** Nome da lista para leitor de tela (ex.: "Números da empresa"). */
16
+ rotulo?: string;
17
+ className?: string;
18
+ }
19
+ /** Números de destaque (clientes, satisfação, anos de mercado). */
20
+ export declare function FaixaNumeros({ itens, aparencia, rotulo, className }: FaixaNumerosProps): import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ export interface OpcaoFiltroPilulas<V extends string = string> {
2
+ valor: V;
3
+ rotulo: string;
4
+ }
5
+ export interface FiltroPilulasProps<V extends string = string> {
6
+ opcoes: OpcaoFiltroPilulas<V>[];
7
+ valor: V;
8
+ aoMudar: (valor: V) => void;
9
+ /** Nome do filtro para leitor de tela (ex.: "Categoria"). */
10
+ rotulo: string;
11
+ /** `quebrar` = várias linhas (padrão) · `rolar` = uma linha só, rolando para o lado. */
12
+ disposicao?: 'quebrar' | 'rolar';
13
+ alinhamento?: 'inicio' | 'centro';
14
+ className?: string;
15
+ }
16
+ /** Filtro de uma escolha só em pílulas (categorias, regiões, UFs). A escolhida fica escura. */
17
+ export declare function FiltroPilulas<V extends string = string>({ opcoes, valor, aoMudar, rotulo, disposicao, alinhamento, className }: FiltroPilulasProps<V>): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface ItemListaNumerada {
3
+ /** Chave do item (padrão: o título). */
4
+ id?: string;
5
+ titulo: string;
6
+ /** Linha miúda abaixo (ex.: data, quantidade). */
7
+ detalhe?: ReactNode;
8
+ /** Texto abaixo do título, em tamanho de leitura (ex.: passos de "Como funciona"). */
9
+ descricao?: ReactNode;
10
+ href?: string;
11
+ }
12
+ export interface ListaNumeradaProps {
13
+ itens: ItemListaNumerada[];
14
+ /** `padrao` = números grandes (ranking da semana) · `compacto` = para colunas laterais. */
15
+ tamanho?: 'padrao' | 'compacto';
16
+ /** Nome da lista para leitor de tela. */
17
+ rotulo?: string;
18
+ className?: string;
19
+ }
20
+ /** Lista numerada (01, 02…) com os números em laranja: mais lidos, ranking, passos de um processo. */
21
+ export declare function ListaNumerada({ itens, tamanho, rotulo, className }: ListaNumeradaProps): import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ export interface NewsletterProps {
2
+ /** Recebe o e-mail já conferido. Pode devolver uma Promise (o botão espera). */
3
+ aoInscrever: (email: string) => void | Promise<void>;
4
+ /** Com `aparencia="cartao"`: título do cartão. */
5
+ titulo?: string;
6
+ descricao?: string;
7
+ placeholder?: string;
8
+ rotuloBotao?: string;
9
+ /** Mensagem depois de inscrever. */
10
+ mensagemSucesso?: string;
11
+ /** `cartao` = bloco marinho com título (coluna lateral) · `linha` = campo e botão numa pílula (rodapé). */
12
+ aparencia?: 'cartao' | 'linha';
13
+ className?: string;
14
+ }
15
+ /** Inscrição por e-mail (newsletter), para fundo marinho: rodapé ou coluna lateral. */
16
+ export declare function Newsletter({ aoInscrever, titulo: tituloProp, descricao, placeholder: placeholderProp, rotuloBotao: rotuloBotaoProp, mensagemSucesso: mensagemSucessoProp, aparencia, className, }: NewsletterProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface SecaoSiteProps {
3
+ children: ReactNode;
4
+ /** `padrao` = fundo da página · `superficie` = faixa branca com linha embaixo · `escuro` = faixa marinha. */
5
+ fundo?: 'padrao' | 'superficie' | 'escuro';
6
+ /** `estreita` = 55rem, para FAQ, texto e formulários centralizados. Padrão: `padrao` (largura do site). */
7
+ largura?: 'padrao' | 'estreita';
8
+ /** Espaço acima e abaixo. Padrão: `medio`. */
9
+ espaco?: 'compacto' | 'medio' | 'amplo';
10
+ /** Nome da região para leitor de tela (vira um `<section>` com `aria-label`). */
11
+ rotulo?: string;
12
+ className?: string;
13
+ }
14
+ /** Faixa do site com o conteúdo centralizado na largura `--site-largura`. */
15
+ export declare function SecaoSite({ children, fundo, largura, espaco, rotulo, className }: SecaoSiteProps): import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ export interface ItemSumario {
2
+ /** `id` do título da seção na página. */
3
+ id: string;
4
+ rotulo: string;
5
+ }
6
+ export interface SumarioPaginaProps {
7
+ itens: ItemSumario[];
8
+ /** Padrão: "Nesta página". */
9
+ titulo?: string;
10
+ className?: string;
11
+ }
12
+ /**
13
+ * Sumário de página longa (termos, política, documentação): links para as
14
+ * seções, com a seção em leitura marcada. Rola até a seção sem trocar o
15
+ * endereço, então funciona também em app com rotas no `#hash`.
16
+ */
17
+ export declare function SumarioPagina({ itens, titulo: tituloProp, className }: SumarioPaginaProps): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { PropsLink } from '../Estrutura/Estrutura.js';
3
+ export interface ContextoLinkSite {
4
+ aoNavegar?: (rota: string) => void;
5
+ renderLink?: (props: PropsLink) => ReactNode;
6
+ /** Chamado depois de cada navegação (a `EstruturaSite` fecha o menu do celular). */
7
+ aoNavegou?: () => void;
8
+ }
9
+ export declare const ProvedorLinkSite: import("react").Provider<ContextoLinkSite>;
10
+ /**
11
+ * Link de verdade (`<a href>`) que, dentro da `EstruturaSite`, navega pelo roteador
12
+ * do app (`aoNavegar` ou `renderLink`). Fora dela, é um link comum.
13
+ */
14
+ export declare function useLinkSite(): (href: string, conteudo: ReactNode, className: string, extra?: {
15
+ atual?: boolean;
16
+ aoClicar?: () => void;
17
+ rotulo?: string;
18
+ }) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
@@ -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 {};