@ffid-br/tailor-ui 0.6.0 → 0.7.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.
@@ -0,0 +1,58 @@
1
+ import { default as React } from 'react';
2
+ /** Como o valor aparece e se alinha. `percent` recebe fração (0,123 = 12,3%). */
3
+ export type TailorColumnType = 'text' | 'number' | 'currency' | 'percent' | 'date' | 'id';
4
+ export type TailorTableColumn<T> = {
5
+ key: string;
6
+ header: React.ReactNode;
7
+ type?: TailorColumnType;
8
+ /** Valor para ordenar e formatar. Padrão: `row[key]`. */
9
+ value?: (row: T) => unknown;
10
+ /** Célula própria (badge, link). Sem ela, o valor formatado pelo `type`. */
11
+ cell?: (row: T) => React.ReactNode;
12
+ align?: 'left' | 'center' | 'right';
13
+ sortable?: boolean;
14
+ width?: string;
15
+ /** Linha de total: um valor pronto ou uma conta sobre as linhas (todas, não só a página). */
16
+ total?: React.ReactNode | ((rows: T[]) => unknown);
17
+ };
18
+ export type TailorTableSort = {
19
+ key: string;
20
+ direction: 'asc' | 'desc';
21
+ };
22
+ export type TailorTableProps<T> = {
23
+ columns: Array<TailorTableColumn<T>>;
24
+ rows: T[];
25
+ rowKey: (row: T, index: number) => string | number;
26
+ /** Título acessível da tabela (vira `<caption>`, só para leitor de tela). */
27
+ caption: string;
28
+ loading?: boolean;
29
+ /** O que aparece sem linhas. Padrão: o texto `empty` do idioma. */
30
+ empty?: React.ReactNode;
31
+ /** Ordem controlada (servidor). Sem `onSortChange`, a tabela ordena sozinha. */
32
+ sort?: TailorTableSort;
33
+ onSortChange?: (sort: TailorTableSort) => void;
34
+ defaultSort?: TailorTableSort;
35
+ /** Paginação no navegador. */
36
+ pageSize?: number;
37
+ /** Paginação no servidor: a tabela só mostra as `rows` que recebeu. */
38
+ pagination?: {
39
+ page: number;
40
+ totalPages: number;
41
+ onPageChange: (page: number) => void;
42
+ totalRows?: number;
43
+ };
44
+ onRowClick?: (row: T) => void;
45
+ /** Cabeçalho preso ao rolar a página. */
46
+ stickyHeader?: boolean;
47
+ className?: string;
48
+ };
49
+ /** Formata pelo tipo da coluna; vazio vira traço. */
50
+ export declare function formatValue(v: unknown, type?: TailorColumnType, locale?: string, currency?: string): React.ReactNode;
51
+ /**
52
+ * Tabela de relatório: cabeçalho em overline, números tabulares à direita, IDs
53
+ * em mono, ordenação, paginação (navegador ou servidor) e linha de total.
54
+ * Visual por variáveis `--tailor-brand-*` e `--tailor-table-*`, como o cabeçalho.
55
+ */
56
+ export declare function TailorTable<T>({ columns, rows, rowKey, caption, loading, empty, sort, onSortChange, defaultSort, pageSize, pagination, onRowClick, stickyHeader, className, }: TailorTableProps<T>): React.JSX.Element;
57
+ /** Soma de uma coluna, para usar em `total`. */
58
+ export declare const sumBy: <T>(value: (r: T) => number) => (rows: T[]) => number;
@@ -0,0 +1,19 @@
1
+ import { default as React } from 'react';
2
+ export type TailorToastType = 'success' | 'error' | 'info';
3
+ export type TailorToastOptions = {
4
+ description?: React.ReactNode; /** ms. Padrão: 4000; erro, 8000. */
5
+ duration?: number;
6
+ };
7
+ /** `toast.success('Saved')`. Precisa de um `<TailorToaster />` montado no app. Devolve o id, para `toast.dismiss`. */
8
+ export declare const toast: {
9
+ success: (title: React.ReactNode, options?: TailorToastOptions) => number;
10
+ error: (title: React.ReactNode, options?: TailorToastOptions) => number;
11
+ info: (title: React.ReactNode, options?: TailorToastOptions) => number;
12
+ dismiss: (id: number) => void;
13
+ };
14
+ /**
15
+ * Os avisos (toasts) da marca: caixa preta com a borda da cor do tipo; o ponto
16
+ * escreve o título e vira check (ou X); barra do tempo restante. Monte uma vez,
17
+ * perto da raiz do app.
18
+ */
19
+ export declare function TailorToaster(): React.JSX.Element;
@@ -0,0 +1,15 @@
1
+ export type TailorTypewriterProps = {
2
+ /** Frases em ciclo: escreve, espera, apaga, escreve a próxima. Uma frase só repete. */
3
+ texts: string[];
4
+ /** Escreve a primeira e para (o cursor some). Para títulos de aviso. */
5
+ once?: boolean;
6
+ /** Chamado quando `once` termina de escrever. */
7
+ onDone?: () => void;
8
+ className?: string;
9
+ };
10
+ /**
11
+ * O ponto da marca como cursor: escreve a frase, pisca, apaga e escreve a
12
+ * próxima. O leitor de tela recebe a frase inteira, não letra por letra; quem
13
+ * pediu menos movimento vê a frase pronta.
14
+ */
15
+ export declare function TailorTypewriter({ texts, once, onDone, className }: TailorTypewriterProps): import("react").JSX.Element;
@@ -0,0 +1,35 @@
1
+ import { default as React } from 'react';
2
+ /** Textos que os componentes mostram. Troque um por um em `messages`, ou o idioma inteiro em `locale`. */
3
+ export type TailorMessages = {
4
+ loading: string;
5
+ done: string;
6
+ empty: string;
7
+ total: string;
8
+ pagination: string;
9
+ page: (page: number, totalPages: number) => string;
10
+ rows: (count: string) => string;
11
+ previous: string;
12
+ next: string;
13
+ breadcrumb: string;
14
+ dismiss: string;
15
+ skip: string;
16
+ required: string;
17
+ };
18
+ export declare const TAILOR_MESSAGES: Record<string, TailorMessages>;
19
+ export type TailorLocale = {
20
+ /** BCP 47. Formata números e datas; escolhe os textos (`pt-BR` e `en` inclusos; outro idioma cai no `en`). */
21
+ locale: string;
22
+ /** ISO 4217 para colunas `currency`. */
23
+ currency: string;
24
+ messages: TailorMessages;
25
+ };
26
+ export type TailorLocaleProviderProps = {
27
+ locale?: string;
28
+ currency?: string;
29
+ /** Sobrescreve textos do idioma escolhido. */
30
+ messages?: Partial<TailorMessages>;
31
+ children: React.ReactNode;
32
+ };
33
+ /** Idioma, moeda e textos dos componentes. Sem provider: pt-BR e BRL. */
34
+ export declare function TailorLocaleProvider({ locale, currency, messages, children }: TailorLocaleProviderProps): React.JSX.Element;
35
+ export declare const useTailorLocale: () => TailorLocale;
@@ -18,5 +18,19 @@ export { EquipeDock } from './components/EquipeDock';
18
18
  export type { EquipeDockProps, AgenteDaEquipe } from './components/EquipeDock';
19
19
  export { TailorPageHeader } from './components/TailorPageHeader';
20
20
  export type { TailorPageHeaderProps, TailorPageHeaderLink } from './components/TailorPageHeader';
21
- export { TailorMarca, temaParaVariaveis, temaDoWhitelabel, contraste } from './components/TailorMarca';
22
- export type { TailorMarcaProps, TailorTema, WhitelabelDoCliente } from './components/TailorMarca';
21
+ export { TailorBrand, themeToVars, themeFromWhitelabel, contrast } from './components/TailorBrand';
22
+ export type { TailorBrandProps, TailorTheme, TailorWhitelabel } from './components/TailorBrand';
23
+ export { TailorTable, formatValue, sumBy } from './components/TailorTable';
24
+ export type { TailorTableProps, TailorTableColumn, TailorTableSort, TailorColumnType } from './components/TailorTable';
25
+ export { TailorSkeleton } from './components/TailorSkeleton';
26
+ export type { TailorSkeletonProps } from './components/TailorSkeleton';
27
+ export { TailorToaster, toast } from './components/TailorToaster';
28
+ export type { TailorToastType, TailorToastOptions } from './components/TailorToaster';
29
+ export { TailorTypewriter } from './components/TailorTypewriter';
30
+ export type { TailorTypewriterProps } from './components/TailorTypewriter';
31
+ export { TailorResult } from './components/TailorResult';
32
+ export type { TailorResultProps } from './components/TailorResult';
33
+ export { TailorLocaleProvider, useTailorLocale, TAILOR_MESSAGES } from './i18n';
34
+ export type { TailorLocaleProviderProps, TailorLocale, TailorMessages } from './i18n';
35
+ export { TailorField } from './components/TailorField';
36
+ export type { TailorFieldProps } from './components/TailorField';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ffid-br/tailor-ui",
3
3
  "private": false,
4
- "version": "0.6.0",
4
+ "version": "0.7.0",
5
5
  "description": "Primitivos de marca Tailor.ia em React: loader, intro, transição de login, lockup e barra lateral.",
6
6
  "type": "module",
7
7
  "main": "dist/index.umd.js",