@giro-ds/react 3.0.5 → 3.0.6
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/dist/components/Avatar/Avatar.d.ts +1 -1
- package/dist/components/Avatar/Avatar.types.d.ts +21 -5
- package/dist/components/Badge/Badge.types.d.ts +25 -7
- package/dist/components/Button/Button.types.d.ts +41 -8
- package/dist/components/Calendar/Calendar.d.ts +2 -1
- package/dist/components/Calendar/Calendar.types.d.ts +56 -12
- package/dist/components/Callout/Callout.types.d.ts +28 -11
- package/dist/components/Checkbox/Checkbox.types.d.ts +28 -4
- package/dist/components/Chips/Chips.types.d.ts +28 -11
- package/dist/components/Container/Container.types.d.ts +11 -0
- package/dist/components/DatePicker/DatePicker.types.d.ts +36 -18
- package/dist/components/DatePicker/DateUtils.d.ts +1 -1
- package/dist/components/DatePicker/index.d.ts +1 -1
- package/dist/components/Dialog/Dialog.types.d.ts +35 -11
- package/dist/components/Drawer/Drawer.types.d.ts +58 -27
- package/dist/components/Dropdown/Dropdown.types.d.ts +47 -20
- package/dist/components/Filter/Filter.types.d.ts +47 -28
- package/dist/components/ListItem/ListItem.d.ts +0 -5
- package/dist/components/ListItem/ListItem.types.d.ts +35 -17
- package/dist/components/Menu/Menu.d.ts +1 -1
- package/dist/components/Menu/Menu.types.d.ts +60 -2
- package/dist/components/Quantity/Quantity.types.d.ts +31 -13
- package/dist/components/Radio/Radio.types.d.ts +39 -2
- package/dist/components/Search/Search.types.d.ts +34 -5
- package/dist/components/Select/Select.types.d.ts +117 -8
- package/dist/components/Switch/Switch.types.d.ts +26 -2
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Table/Table.types.d.ts +2 -3
- package/dist/components/Table/TableHeader.d.ts +1 -1
- package/dist/components/Table/TablePagination.d.ts +1 -9
- package/dist/components/TextField/TextField.types.d.ts +49 -11
- package/dist/components/Toast/Toast.types.d.ts +37 -0
- package/dist/components/Tooltip/Tooltip.types.d.ts +32 -4
- package/dist/components/VerificationCode/VerificationCode.types.d.ts +29 -9
- package/dist/components/index.d.ts +1 -1
- package/dist/index.cjs +141 -169
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +860 -250
- package/dist/index.esm.js +134 -180
- package/dist/index.esm.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/common.types.d.ts +12 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,50 +1,77 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { BaseProps } from '../../types/common.types';
|
|
3
|
+
/**
|
|
4
|
+
* Representa um item individual do dropdown
|
|
5
|
+
*/
|
|
2
6
|
export interface DropdownItem {
|
|
3
|
-
/** ID único do item (
|
|
7
|
+
/** ID único do item (será gerado automaticamente se não fornecido) */
|
|
4
8
|
id?: string;
|
|
5
9
|
/** Texto principal do item */
|
|
6
10
|
text: string;
|
|
7
11
|
/** Texto secundário/descrição do item */
|
|
8
12
|
subText?: string;
|
|
9
|
-
/** Ícone do item
|
|
13
|
+
/** Ícone do item */
|
|
10
14
|
icon?: React.ReactNode;
|
|
11
15
|
/** Define se o item está desabilitado */
|
|
12
16
|
disabled?: boolean;
|
|
13
17
|
}
|
|
18
|
+
/** Tipos de dropdown disponíveis */
|
|
14
19
|
export type DropdownType = 'text' | 'checkbox' | 'icon';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Props do componente Dropdown
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <Dropdown
|
|
25
|
+
* items={[
|
|
26
|
+
* { text: 'Opção 1', icon: <Icon1 /> },
|
|
27
|
+
* { text: 'Opção 2', icon: <Icon2 /> }
|
|
28
|
+
* ]}
|
|
29
|
+
* type="text"
|
|
30
|
+
* placeholder="Selecione uma opção"
|
|
31
|
+
* />
|
|
32
|
+
* ```
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <Dropdown
|
|
36
|
+
* items={items}
|
|
37
|
+
* type="checkbox"
|
|
38
|
+
* applySearch={true}
|
|
39
|
+
* onSelectionChange={(ids) => console.log(ids)}
|
|
40
|
+
* defaultSelectedIds={['1', '2']}
|
|
41
|
+
* maxHeight="300px"
|
|
42
|
+
* />
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export interface DropdownProps extends BaseProps {
|
|
46
|
+
/** Força posição do dropdown: 'top' abre para cima, 'bottom' para baixo (detecção automática se não especificado) */
|
|
19
47
|
position?: 'top' | 'bottom';
|
|
20
|
-
/** Array de itens para o dropdown
|
|
48
|
+
/** Array de itens para o dropdown */
|
|
21
49
|
items: DropdownItem[];
|
|
22
|
-
/** ID único do componente */
|
|
23
|
-
id?: string;
|
|
24
50
|
/** Tipo do dropdown */
|
|
25
51
|
type?: DropdownType;
|
|
26
52
|
/** Habilita campo de busca */
|
|
27
53
|
applySearch?: boolean;
|
|
28
54
|
/** Placeholder do campo de busca */
|
|
29
55
|
placeholder?: string;
|
|
30
|
-
/** Callback
|
|
56
|
+
/** Callback executado quando a seleção muda: (selectedIds) => void */
|
|
31
57
|
onSelectionChange?: (selectedIds: string[]) => void;
|
|
32
|
-
/** Controla exibição do subtexto */
|
|
58
|
+
/** Controla exibição do subtexto dos itens */
|
|
33
59
|
showSubText?: boolean;
|
|
34
60
|
/** IDs dos itens selecionados por padrão */
|
|
35
61
|
defaultSelectedIds?: string[];
|
|
36
|
-
/** Estado inicial dos itens selecionados (objeto
|
|
62
|
+
/** Estado inicial dos itens selecionados (objeto chave-valor) */
|
|
37
63
|
initialItemsSelected?: Record<string, boolean>;
|
|
64
|
+
/** Largura do dropdown */
|
|
38
65
|
width?: string | number;
|
|
66
|
+
/** Largura máxima do dropdown */
|
|
39
67
|
maxWidth?: string | number;
|
|
68
|
+
/** Largura mínima do dropdown */
|
|
40
69
|
minWidth?: string | number;
|
|
41
70
|
/** Altura máxima do dropdown */
|
|
42
71
|
maxHeight?: string | number;
|
|
43
|
-
/** Define se o componente
|
|
72
|
+
/** Define se o componente está sendo usado para filtro */
|
|
44
73
|
filter?: boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Configurações para paginação infinita
|
|
47
|
-
*/
|
|
74
|
+
/** Configurações para paginação infinita */
|
|
48
75
|
infiniteScroll?: {
|
|
49
76
|
/** Status atual do carregamento */
|
|
50
77
|
status: 'idle' | 'loading' | 'succeeded' | 'failed';
|
|
@@ -52,13 +79,13 @@ export interface DropdownProps {
|
|
|
52
79
|
page: number;
|
|
53
80
|
/** Última página disponível */
|
|
54
81
|
lastPage: number;
|
|
55
|
-
/** Callback para carregar próxima página */
|
|
82
|
+
/** Callback executado para carregar próxima página: () => void */
|
|
56
83
|
onLoadMore: () => void;
|
|
57
|
-
/** Threshold para trigger (0-1) */
|
|
84
|
+
/** Threshold para trigger do scroll infinito (0-1) */
|
|
58
85
|
threshold?: number;
|
|
59
|
-
/** Margem para trigger */
|
|
86
|
+
/** Margem para trigger do scroll infinito */
|
|
60
87
|
rootMargin?: string;
|
|
61
|
-
/**
|
|
88
|
+
/** Modo de debug */
|
|
62
89
|
debug?: boolean;
|
|
63
90
|
};
|
|
64
91
|
}
|
|
@@ -1,46 +1,65 @@
|
|
|
1
1
|
import { ReactNode, ReactElement } from 'react';
|
|
2
|
+
import { Variant, BaseProps, Locale, Position } from '../../types/common.types';
|
|
2
3
|
import { DropdownItem, DropdownType } from '../Dropdown/Dropdown.types';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Props do componente Filter
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <Filter
|
|
9
|
+
* items={filterItems}
|
|
10
|
+
* type="checkbox"
|
|
11
|
+
* placeholder="Filtrar por categoria"
|
|
12
|
+
* onApplyFilter={(ids) => handleFilter(ids)}
|
|
13
|
+
* buttonText="Filtros"
|
|
14
|
+
* />
|
|
15
|
+
* ```
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <Filter
|
|
19
|
+
* type="calendar"
|
|
20
|
+
* selectedDate={selectedDate}
|
|
21
|
+
* onDateSelect={handleDateSelect}
|
|
22
|
+
* minDate={new Date('2024-01-01')}
|
|
23
|
+
* locale="pt-br"
|
|
24
|
+
* icon={<CalendarIcon />}
|
|
25
|
+
* />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface FilterProps extends BaseProps {
|
|
29
|
+
/** Array de itens para filtros do tipo dropdown */
|
|
6
30
|
items?: DropdownItem[];
|
|
7
|
-
/** Tipo do dropdown */
|
|
31
|
+
/** Tipo do filtro (dropdown ou calendário) */
|
|
8
32
|
type?: DropdownType | 'calendar';
|
|
9
|
-
/** IDs selecionados */
|
|
33
|
+
/** IDs dos itens selecionados */
|
|
10
34
|
selectedIds?: string[];
|
|
11
|
-
/** Callback
|
|
35
|
+
/** Callback executado ao aplicar filtro: (selectedIds) => void */
|
|
12
36
|
onApplyFilter?: (selectedIds: string[]) => void;
|
|
13
|
-
/** Placeholder do
|
|
37
|
+
/** Placeholder do campo de busca */
|
|
14
38
|
placeholder?: string;
|
|
15
|
-
/** Habilita busca no dropdown */
|
|
39
|
+
/** Habilita campo de busca no dropdown */
|
|
16
40
|
enableSearch?: boolean;
|
|
17
|
-
/** Texto do botão
|
|
41
|
+
/** Texto ou conteúdo do botão de filtro */
|
|
18
42
|
buttonText?: string | ReactNode;
|
|
19
|
-
/** Ícone do botão */
|
|
43
|
+
/** Ícone do botão de filtro */
|
|
20
44
|
icon?: ReactElement;
|
|
21
|
-
/** Variante do botão */
|
|
22
|
-
variant?:
|
|
23
|
-
/** Callback
|
|
45
|
+
/** Variante visual do botão */
|
|
46
|
+
variant?: Variant;
|
|
47
|
+
/** Callback executado ao abrir o filtro: () => void */
|
|
24
48
|
onOpen?: () => void;
|
|
25
|
-
/** Callback
|
|
49
|
+
/** Callback executado ao fechar o filtro: () => void */
|
|
26
50
|
onClose?: () => void;
|
|
27
|
-
/** Posição do dropdown */
|
|
28
|
-
position?:
|
|
29
|
-
/**
|
|
30
|
-
disabled?: boolean;
|
|
31
|
-
/** Classes CSS adicionais */
|
|
32
|
-
className?: string;
|
|
33
|
-
/** Data selecionada (quando type='calendar') */
|
|
51
|
+
/** Posição do dropdown em relação ao botão */
|
|
52
|
+
position?: Position;
|
|
53
|
+
/** Data selecionada (para tipo calendar) */
|
|
34
54
|
selectedDate?: Date | null;
|
|
35
|
-
/** Callback
|
|
55
|
+
/** Callback executado ao selecionar data: (date) => void */
|
|
36
56
|
onDateSelect?: (date: Date) => void;
|
|
37
|
-
/** Callback
|
|
57
|
+
/** Callback executado ao limpar data: () => void */
|
|
38
58
|
onClearDate?: () => void;
|
|
39
|
-
/** Data mínima
|
|
59
|
+
/** Data mínima selecionável (para tipo calendar) */
|
|
40
60
|
minDate?: Date;
|
|
41
|
-
/** Data máxima
|
|
61
|
+
/** Data máxima selecionável (para tipo calendar) */
|
|
42
62
|
maxDate?: Date;
|
|
43
|
-
/** Locale do
|
|
44
|
-
locale?:
|
|
63
|
+
/** Locale do calendário */
|
|
64
|
+
locale?: Locale;
|
|
45
65
|
}
|
|
46
|
-
export {};
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { ListItemProps } from './ListItem.types';
|
|
3
|
-
/**
|
|
4
|
-
* Componente ListItem do Zanthus Design System
|
|
5
|
-
* Implementa item de lista unificado com variações text, checkbox, radio e icon
|
|
6
|
-
* Segue padrões WCAG 2.1 AA para acessibilidade
|
|
7
|
-
*/
|
|
8
3
|
declare const ListItem: React.FC<ListItemProps>;
|
|
9
4
|
export default ListItem;
|
|
@@ -1,33 +1,51 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { BaseProps } from '../../types/common.types';
|
|
3
|
+
/** Variantes disponíveis para o ListItem */
|
|
2
4
|
export type ListItemVariant = 'text' | 'checkbox' | 'radio' | 'icon';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Props do componente ListItem
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* <ListItem
|
|
10
|
+
* variant="text"
|
|
11
|
+
* text="Item da lista"
|
|
12
|
+
* subText="Descrição do item"
|
|
13
|
+
* onClick={handleClick}
|
|
14
|
+
* />
|
|
15
|
+
* ```
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <ListItem
|
|
19
|
+
* variant="checkbox"
|
|
20
|
+
* text="Aceitar termos"
|
|
21
|
+
* checked={isChecked}
|
|
22
|
+
* onChange={setIsChecked}
|
|
23
|
+
* disabled={false}
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface ListItemProps extends BaseProps {
|
|
8
28
|
/** Variante do item da lista */
|
|
9
29
|
variant?: ListItemVariant;
|
|
10
30
|
/** Texto principal do item */
|
|
11
31
|
text?: string;
|
|
12
|
-
/** Nome do input (para checkbox/radio) */
|
|
32
|
+
/** Nome do input (para variantes checkbox/radio) */
|
|
13
33
|
name?: string;
|
|
14
|
-
/** Texto secundário/descrição */
|
|
34
|
+
/** Texto secundário/descrição do item */
|
|
15
35
|
subText?: string;
|
|
16
|
-
/**
|
|
17
|
-
disabled?: boolean;
|
|
18
|
-
/** Estado de checked (para checkbox/radio) */
|
|
36
|
+
/** Estado de checked (para variantes checkbox/radio) */
|
|
19
37
|
checked?: boolean;
|
|
20
|
-
/** Estado de selecionado (para text/icon) */
|
|
38
|
+
/** Estado de selecionado (para variantes text/icon) */
|
|
21
39
|
selected?: boolean;
|
|
22
|
-
/** Callback
|
|
40
|
+
/** Callback executado ao clicar no item: (event) => void */
|
|
23
41
|
onClick?: (event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>) => void;
|
|
24
|
-
/** Callback
|
|
42
|
+
/** Callback executado quando o estado muda: (checked) => void */
|
|
25
43
|
onChange?: (checked: boolean) => void;
|
|
26
|
-
/** Ícone do item (para
|
|
44
|
+
/** Ícone do item (para variante icon) */
|
|
27
45
|
icon?: React.ReactNode;
|
|
28
|
-
/** Valor do input (para checkbox/radio) */
|
|
46
|
+
/** Valor do input (para variantes checkbox/radio) */
|
|
29
47
|
value?: string;
|
|
30
|
-
/**
|
|
48
|
+
/** Define se deve mostrar o subtexto */
|
|
31
49
|
showSubText?: boolean;
|
|
32
50
|
/** Estado de hover */
|
|
33
51
|
hovered?: boolean;
|
|
@@ -1,32 +1,90 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
import { ReactElement } from 'react';
|
|
3
|
+
import { BaseProps } from '../../types/common.types';
|
|
4
|
+
/**
|
|
5
|
+
* Representa um item do menu (suporta subitens aninhados)
|
|
6
|
+
*/
|
|
2
7
|
export interface MenuItemProps {
|
|
8
|
+
/** ID único do item */
|
|
3
9
|
id?: string;
|
|
10
|
+
/** Texto principal do item */
|
|
4
11
|
text?: string;
|
|
12
|
+
/** Texto secundário/descrição do item */
|
|
5
13
|
subText?: string;
|
|
14
|
+
/** Estado desabilitado do item */
|
|
6
15
|
disabled?: boolean;
|
|
16
|
+
/** Ícone do item */
|
|
7
17
|
icon?: React.ReactNode;
|
|
18
|
+
/** Subitens do menu (para menus aninhados) */
|
|
8
19
|
children?: MenuItemProps[];
|
|
20
|
+
/** Valor do item */
|
|
9
21
|
value?: string;
|
|
10
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Props para renderização customizada de item do menu
|
|
25
|
+
*/
|
|
11
26
|
export interface DefaultMenuItemProps {
|
|
27
|
+
/** Dados do item */
|
|
12
28
|
item: MenuItemProps;
|
|
29
|
+
/** Define se o item está selecionado */
|
|
13
30
|
isSelected: boolean;
|
|
31
|
+
/** Callback executado ao selecionar o item: (item) => void */
|
|
14
32
|
onSelect: (item: MenuItemProps) => void;
|
|
15
33
|
}
|
|
16
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Props do componente Menu
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* <Menu
|
|
39
|
+
* items={[
|
|
40
|
+
* { id: '1', text: 'Perfil', icon: <UserIcon /> },
|
|
41
|
+
* { id: '2', text: 'Configurações', icon: <SettingsIcon /> }
|
|
42
|
+
* ]}
|
|
43
|
+
* onItemSelect={(item) => handleSelect(item)}
|
|
44
|
+
* >
|
|
45
|
+
* <Button>Menu</Button>
|
|
46
|
+
* </Menu>
|
|
47
|
+
* ```
|
|
48
|
+
* @example
|
|
49
|
+
* ```tsx
|
|
50
|
+
* <Menu
|
|
51
|
+
* items={menuItems}
|
|
52
|
+
* type="icon"
|
|
53
|
+
* search={true}
|
|
54
|
+
* enableInfiniteScroll={true}
|
|
55
|
+
* onScrollEnd={loadMore}
|
|
56
|
+
* maxHeight="400px"
|
|
57
|
+
* align="end"
|
|
58
|
+
* />
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export interface MenuProps extends BaseProps {
|
|
62
|
+
/** Array de itens do menu */
|
|
17
63
|
items: MenuItemProps[];
|
|
64
|
+
/** Elemento trigger customizado para abrir o menu */
|
|
18
65
|
children?: ReactElement;
|
|
66
|
+
/** Tipo de visualização do menu */
|
|
19
67
|
type?: 'text' | 'icon';
|
|
20
|
-
|
|
68
|
+
/** Callback executado quando um item é selecionado: (item) => void */
|
|
21
69
|
onItemSelect?: (items: MenuItemProps) => void;
|
|
70
|
+
/** Array de itens selecionados */
|
|
22
71
|
selectedItems?: MenuItemProps[];
|
|
72
|
+
/** Habilita campo de busca */
|
|
23
73
|
search?: boolean;
|
|
74
|
+
/** Alinhamento do menu */
|
|
24
75
|
align?: 'start' | 'end' | 'center';
|
|
76
|
+
/** Altura máxima do menu */
|
|
25
77
|
maxHeight?: number | string;
|
|
78
|
+
/** Habilita scroll infinito */
|
|
26
79
|
enableInfiniteScroll?: boolean;
|
|
80
|
+
/** Callback executado ao chegar ao final do scroll: () => void */
|
|
27
81
|
onScrollEnd?: () => void;
|
|
82
|
+
/** Estado de carregamento de mais itens */
|
|
28
83
|
isLoadingMore?: boolean;
|
|
84
|
+
/** Habilita busca via API */
|
|
29
85
|
enableApiSearch?: boolean;
|
|
86
|
+
/** Callback executado na busca via API: (searchTerm) => void */
|
|
30
87
|
onApiSearch?: (searchTerm: string) => void;
|
|
88
|
+
/** Callback executado quando o menu abre/fecha: (open) => void */
|
|
31
89
|
onOpenChange?: (open: boolean) => void;
|
|
32
90
|
}
|
|
@@ -1,20 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Size, BaseProps } from '../../types/common.types';
|
|
2
|
+
/**
|
|
3
|
+
* Props do componente Quantity
|
|
4
|
+
* @example
|
|
5
|
+
* ```tsx
|
|
6
|
+
* <Quantity
|
|
7
|
+
* value={quantity}
|
|
8
|
+
* onChange={setQuantity}
|
|
9
|
+
* size="lg"
|
|
10
|
+
* />
|
|
11
|
+
* ```
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <Quantity
|
|
15
|
+
* defaultValue={1}
|
|
16
|
+
* decimal={true}
|
|
17
|
+
* decimalPlaces={2}
|
|
18
|
+
* step={0.5}
|
|
19
|
+
* disabled={false}
|
|
20
|
+
* />
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export interface QuantityProps extends BaseProps {
|
|
24
|
+
/** Valor inicial (modo não controlado) */
|
|
3
25
|
defaultValue?: number;
|
|
4
|
-
/** Valor controlado
|
|
26
|
+
/** Valor atual (modo controlado) */
|
|
5
27
|
value?: number;
|
|
6
|
-
/** Callback
|
|
28
|
+
/** Callback executado quando o valor muda: (value) => void */
|
|
7
29
|
onChange?: (value: number) => void;
|
|
8
|
-
/**
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
/** Define se o valor do input será decimal ou inteiro */
|
|
30
|
+
/** Habilita entrada de valores decimais */
|
|
11
31
|
decimal?: boolean;
|
|
12
|
-
/**
|
|
13
|
-
size?:
|
|
14
|
-
/**
|
|
32
|
+
/** Tamanho do componente */
|
|
33
|
+
size?: Size;
|
|
34
|
+
/** Número de casas decimais permitidas */
|
|
15
35
|
decimalPlaces?: number;
|
|
36
|
+
/** Incremento/decremento ao clicar nos botões */
|
|
16
37
|
step?: number;
|
|
17
|
-
id?: string;
|
|
18
|
-
/** ClassName adicional para customização */
|
|
19
|
-
className?: string;
|
|
20
38
|
}
|
|
@@ -1,15 +1,52 @@
|
|
|
1
|
+
import { BaseProps } from '../../types/common.types';
|
|
2
|
+
/**
|
|
3
|
+
* Props de um item individual de rádio
|
|
4
|
+
*/
|
|
1
5
|
export interface RadioProps {
|
|
6
|
+
/** ID único do elemento */
|
|
2
7
|
id?: string | number;
|
|
8
|
+
/** Valor do radio button */
|
|
3
9
|
value: string;
|
|
10
|
+
/** Label exibida ao lado do radio button */
|
|
4
11
|
label: string;
|
|
12
|
+
/** Estado desabilitado do item */
|
|
5
13
|
disabled?: boolean;
|
|
6
14
|
}
|
|
7
|
-
|
|
8
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Props do componente RadioGroup
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <RadioGroup
|
|
20
|
+
* items={[
|
|
21
|
+
* { value: 'option1', label: 'Opção 1' },
|
|
22
|
+
* { value: 'option2', label: 'Opção 2' }
|
|
23
|
+
* ]}
|
|
24
|
+
* onValueChange={(value) => setSelected(value)}
|
|
25
|
+
* defaultValue="option1"
|
|
26
|
+
* />
|
|
27
|
+
* ```
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* <RadioGroup
|
|
31
|
+
* items={options}
|
|
32
|
+
* onValueChange={handleChange}
|
|
33
|
+
* name="preference"
|
|
34
|
+
* orientation="horizontal"
|
|
35
|
+
* ariaLabel="Selecione sua preferência"
|
|
36
|
+
* />
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export interface RadioGroupProps extends BaseProps {
|
|
40
|
+
/** Array de itens de rádio */
|
|
9
41
|
items: RadioProps[];
|
|
42
|
+
/** Callback executado quando o valor muda: (value) => void */
|
|
10
43
|
onValueChange?: (value: string) => void;
|
|
44
|
+
/** Valor inicial selecionado */
|
|
11
45
|
defaultValue?: string;
|
|
46
|
+
/** Nome do grupo de radio buttons */
|
|
12
47
|
name?: string;
|
|
48
|
+
/** Label acessível para leitores de tela */
|
|
13
49
|
ariaLabel?: string;
|
|
50
|
+
/** Orientação do layout dos radio buttons */
|
|
14
51
|
orientation?: "horizontal" | "vertical";
|
|
15
52
|
}
|
|
@@ -1,16 +1,45 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { BaseProps } from '../../types/common.types';
|
|
3
|
+
/**
|
|
4
|
+
* Props do componente Search
|
|
5
|
+
* @example
|
|
6
|
+
* ```tsx
|
|
7
|
+
* <Search
|
|
8
|
+
* placeholder="Buscar..."
|
|
9
|
+
* value={searchTerm}
|
|
10
|
+
* onChange={(e) => setSearchTerm(e.target.value)}
|
|
11
|
+
* onClear={() => setSearchTerm('')}
|
|
12
|
+
* />
|
|
13
|
+
* ```
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <Search
|
|
17
|
+
* placeholder="Pesquisar produtos"
|
|
18
|
+
* disabled={isLoading}
|
|
19
|
+
* onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
|
|
20
|
+
* onFocus={handleFocus}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export interface SearchProps extends BaseProps {
|
|
25
|
+
/** Placeholder do campo de busca */
|
|
3
26
|
placeholder?: string;
|
|
4
|
-
|
|
27
|
+
/** Valor controlado do campo */
|
|
5
28
|
value?: string;
|
|
29
|
+
/** Callback executado quando o valor muda: (e) => void */
|
|
6
30
|
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
31
|
+
/** Callback executado ao pressionar tecla: (e) => void */
|
|
7
32
|
onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
33
|
+
/** Callback executado ao focar no campo: (e) => void */
|
|
8
34
|
onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
35
|
+
/** Callback executado ao desfocar do campo: (e) => void */
|
|
9
36
|
onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
37
|
+
/** Callback executado ao limpar o campo: () => void */
|
|
10
38
|
onClear?: () => void;
|
|
39
|
+
/** Callback executado ao clicar no componente: (e) => void */
|
|
11
40
|
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
41
|
+
/** Callback executado ao pressionar mouse no componente: (e) => void */
|
|
12
42
|
onMouseDown?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
13
|
-
|
|
14
|
-
id?: string;
|
|
43
|
+
/** ID para testes automatizados */
|
|
15
44
|
'data-testid'?: string;
|
|
16
45
|
}
|