@celke/kole-react 0.1.0 → 0.3.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.
@@ -6,6 +6,8 @@ export interface ItemBusca {
6
6
  icone?: IconeProp;
7
7
  /** Caminho no menu (ex.: "Cadastros › Pessoas"). */
8
8
  trilha?: string;
9
+ /** Página fora da navegação SPA (ex.: tela Blade num app Inertia): abre com recarga completa, sem `aoNavegar`. */
10
+ recarregar?: boolean;
9
11
  }
10
12
  export interface BuscaProps {
11
13
  placeholder?: string;
@@ -8,6 +8,11 @@ export interface ItemNav {
8
8
  rota?: string;
9
9
  filhos?: ItemNav[];
10
10
  desabilitado?: boolean;
11
+ /**
12
+ * Página fora da navegação SPA (ex.: tela Blade num app Inertia): o link vira
13
+ * um `<a>` comum, sem `renderLink` nem `aoNavegar`, e abre com recarga completa.
14
+ */
15
+ recarregar?: boolean;
11
16
  }
12
17
  export interface SecaoNav {
13
18
  /** Rótulo do grupo (linha em caixa alta). */
@@ -20,6 +25,8 @@ export interface Marca {
20
25
  /** URL da imagem do logo (sem ela, mostra um escudo). */
21
26
  logo?: string;
22
27
  href?: string;
28
+ /** O `href` da marca abre com recarga completa (ver `ItemNav.recarregar`). */
29
+ recarregar?: boolean;
23
30
  }
24
31
  export interface UsuarioEstrutura {
25
32
  nome: string;
@@ -1,22 +1,39 @@
1
1
  import { type ReactNode } from 'react';
2
- export type Tema = 'claro' | 'escuro';
2
+ /** `sistema` = segue o modo do sistema operacional, inclusive quando ele muda com a página aberta. */
3
+ export type Tema = 'claro' | 'escuro' | 'sistema';
3
4
  export type Densidade = 'compacta' | 'confortavel' | 'espacosa';
4
5
  export interface Preferencias {
5
6
  tema: Tema;
7
+ /** O tema que está na tela: com `sistema`, o do sistema operacional agora. */
6
8
  escuro: boolean;
7
9
  densidade: Densidade;
8
10
  definirTema: (t: Tema) => void;
9
11
  alternarTema: () => void;
10
12
  definirDensidade: (d: Densidade) => void;
11
13
  }
14
+ /**
15
+ * Script para o `<head>` que aplica tema e densidade ANTES da primeira pintura.
16
+ * Sem ele, o `ProvedorPreferencias` só aplica no primeiro efeito, e quem salvou
17
+ * o tema escuro vê a página clara piscar ao abrir. Lê a mesma chave do
18
+ * `localStorage`; passe o mesmo `temaInicial`/`densidadeInicial` do provedor.
19
+ *
20
+ * SSR: `<script dangerouslySetInnerHTML={{ __html: scriptTemaInicial() }} />`.
21
+ * Vite/HTML estático: o README traz o script pronto para colar no index.html.
22
+ */
23
+ export declare function scriptTemaInicial({ temaInicial, densidadeInicial }?: {
24
+ temaInicial?: Tema;
25
+ densidadeInicial?: Densidade;
26
+ }): string;
12
27
  export interface ProvedorPreferenciasProps {
13
28
  children: ReactNode;
29
+ /** Tema enquanto a pessoa não escolhe outro. Padrão: `sistema`. */
14
30
  temaInicial?: Tema;
15
31
  densidadeInicial?: Densidade;
16
32
  }
17
33
  /**
18
- * Tema (claro/escuro) e densidade, lembrados no navegador. Aplica
19
- * `data-theme` no <html> e a classe de densidade no <body>.
34
+ * Tema (claro/escuro/sistema) e densidade, lembrados no navegador. Aplica
35
+ * `data-theme` (`light`/`dark`/`system`) no <html> e a classe de densidade no
36
+ * <body>. Para não piscar ao abrir, use também o `scriptTemaInicial` no <head>.
20
37
  */
21
38
  export declare function ProvedorPreferencias({ children, temaInicial, densidadeInicial }: ProvedorPreferenciasProps): import("react").JSX.Element;
22
39
  export declare function usePreferencias(): Preferencias;