@giro-ds/react 1.0.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/LICENCE +11 -0
- package/dist/components/Avatar/Avatar.d.ts +3 -0
- package/dist/components/Avatar/Avatar.types.d.ts +7 -0
- package/dist/components/Avatar/index.d.ts +1 -0
- package/dist/components/Badge/Badge.d.ts +4 -0
- package/dist/components/Badge/Badge.types.d.ts +19 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Button/Button.d.ts +4 -0
- package/dist/components/Button/Button.types.d.ts +43 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Calendar/Calendar.d.ts +6 -0
- package/dist/components/Calendar/Calendar.types.d.ts +42 -0
- package/dist/components/Calendar/i18n.d.ts +56 -0
- package/dist/components/Calendar/index.d.ts +1 -0
- package/dist/components/Callout/Callout.d.ts +4 -0
- package/dist/components/Callout/Callout.types.d.ts +17 -0
- package/dist/components/Callout/index.d.ts +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +4 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +25 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/CheckboxRadix/CheckboxRadix.d.ts +4 -0
- package/dist/components/CheckboxRadix/CheckboxRadix.types.d.ts +10 -0
- package/dist/components/CheckboxRadix/index.d.ts +2 -0
- package/dist/components/Chips/Chips.d.ts +4 -0
- package/dist/components/Chips/Chips.types.d.ts +17 -0
- package/dist/components/Chips/index.d.ts +1 -0
- package/dist/components/Container/Container.types.d.ts +4 -0
- package/dist/components/Container/index.d.ts +2 -0
- package/dist/components/DatePicker/DatePicker.d.ts +4 -0
- package/dist/components/DatePicker/DatePicker.types.d.ts +32 -0
- package/dist/components/DatePicker/DateUtils.d.ts +23 -0
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/Dialog/Dialog.d.ts +4 -0
- package/dist/components/Dialog/Dialog.types.d.ts +24 -0
- package/dist/components/Dialog/index.d.ts +2 -0
- package/dist/components/Dialog/utils/DialogUtils.d.ts +1 -0
- package/dist/components/Drawer/Drawer.d.ts +9 -0
- package/dist/components/Drawer/Drawer.types.d.ts +43 -0
- package/dist/components/Drawer/index.d.ts +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +4 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts +64 -0
- package/dist/components/Dropdown/DropdownUtils.d.ts +8 -0
- package/dist/components/Dropdown/index.d.ts +2 -0
- package/dist/components/Filter/Filter.d.ts +4 -0
- package/dist/components/Filter/Filter.types.d.ts +46 -0
- package/dist/components/Filter/index.d.ts +2 -0
- package/dist/components/ListItem/ListItem.d.ts +9 -0
- package/dist/components/ListItem/ListItem.types.d.ts +34 -0
- package/dist/components/ListItem/index.d.ts +2 -0
- package/dist/components/Menu/Menu.d.ts +4 -0
- package/dist/components/Menu/Menu.types.d.ts +41 -0
- package/dist/components/Menu/index.d.ts +2 -0
- package/dist/components/MenuRadix/MenuRadix.d.ts +4 -0
- package/dist/components/MenuRadix/MenuRadix.types.d.ts +27 -0
- package/dist/components/MenuRadix/components/MenuItem.d.ts +8 -0
- package/dist/components/MenuRadix/hooks/useMenuLogic.d.ts +15 -0
- package/dist/components/MenuRadix/hooks/useSearchLogic.d.ts +13 -0
- package/dist/components/MenuRadix/index.d.ts +2 -0
- package/dist/components/Quantity/Quantity.d.ts +4 -0
- package/dist/components/Quantity/Quantity.types.d.ts +20 -0
- package/dist/components/Quantity/index.d.ts +2 -0
- package/dist/components/Radio/Radio.d.ts +4 -0
- package/dist/components/Radio/Radio.types.d.ts +18 -0
- package/dist/components/Radio/index.d.ts +1 -0
- package/dist/components/RadioRadix/RadioRadix.d.ts +4 -0
- package/dist/components/RadioRadix/RadioRadix.types.d.ts +15 -0
- package/dist/components/RadioRadix/index.d.ts +2 -0
- package/dist/components/Search/Search.d.ts +4 -0
- package/dist/components/Search/Search.types.d.ts +15 -0
- package/dist/components/Search/index.d.ts +2 -0
- package/dist/components/Select/Select.d.ts +4 -0
- package/dist/components/Select/Select.types.d.ts +67 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/SelectField/SelectField.d.ts +4 -0
- package/dist/components/SelectField/SelectField.types.d.ts +35 -0
- package/dist/components/SelectRadix/SelectRadix.d.ts +4 -0
- package/dist/components/SelectRadix/SelectRadix.types.d.ts +112 -0
- package/dist/components/SelectRadix/components/CheckboxSelectItem.d.ts +4 -0
- package/dist/components/SelectRadix/components/SelectItem.d.ts +7 -0
- package/dist/components/SelectRadix/hooks/useSelectLogic.d.ts +3 -0
- package/dist/components/SelectRadix/index.d.ts +5 -0
- package/dist/components/Table/EmptyRows150Color.d.ts +8 -0
- package/dist/components/Table/LoaderList.d.ts +10 -0
- package/dist/components/Table/MultiLineText/MultiLineText.d.ts +14 -0
- package/dist/components/Table/MultiLineText/index.d.ts +2 -0
- package/dist/components/Table/Table.d.ts +4 -0
- package/dist/components/Table/Table.types.d.ts +35 -0
- package/dist/components/Table/TableHeader.d.ts +47 -0
- package/dist/components/Table/TablePagination.d.ts +21 -0
- package/dist/components/Table/index.d.ts +7 -0
- package/dist/components/Table/utils/tableActions.d.ts +21 -0
- package/dist/components/TextField/TextField.d.ts +4 -0
- package/dist/components/TextField/TextField.types.d.ts +22 -0
- package/dist/components/TextField/ValidationUtils.d.ts +8 -0
- package/dist/components/TextField/index.d.ts +2 -0
- package/dist/components/Toast/Toast.d.ts +13 -0
- package/dist/components/Toast/Toast.types.d.ts +22 -0
- package/dist/components/Toast/index.d.ts +2 -0
- package/dist/components/Tooltip/Tooltip.d.ts +4 -0
- package/dist/components/Tooltip/Tooltip.types.d.ts +7 -0
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/VerificationCode/VerificationCode.d.ts +20 -0
- package/dist/components/VerificationCode/VerificationCode.types.d.ts +19 -0
- package/dist/components/VerificationCode/index.d.ts +2 -0
- package/dist/components/index.d.ts +65 -0
- package/dist/hooks/ApiSimulation.d.ts +53 -0
- package/dist/hooks/InfiniteScroll.d.ts +41 -0
- package/dist/hooks/NormalizeText.d.ts +1 -0
- package/dist/index.cjs +7354 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1045 -0
- package/dist/index.esm.js +7299 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/shared/Label/index.d.ts +13 -0
- package/dist/shared/icons/CheckHalf.d.ts +10 -0
- package/dist/shared/icons/CheckSmall.d.ts +10 -0
- package/dist/shared/icons/index.d.ts +4 -0
- package/dist/styles.css +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DropdownItem } from '../Dropdown/Dropdown.types';
|
|
3
|
+
interface BaseFilterItem {
|
|
4
|
+
id?: string;
|
|
5
|
+
buttonText: string | React.ReactNode;
|
|
6
|
+
icon?: React.ReactElement;
|
|
7
|
+
position?: 'left' | 'right';
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
onToggle?: (isOpen: boolean) => void;
|
|
10
|
+
tooltip?: string;
|
|
11
|
+
}
|
|
12
|
+
interface CheckboxFilterItem extends BaseFilterItem {
|
|
13
|
+
type: 'checkbox' | 'text' | 'icon';
|
|
14
|
+
items: DropdownItem[];
|
|
15
|
+
selectedIds?: string[];
|
|
16
|
+
onSelectionChange?: (selectedIds: string[]) => void;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
enableSearch?: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface CalendarFilterItem extends BaseFilterItem {
|
|
21
|
+
type: 'calendar';
|
|
22
|
+
selectedDate?: Date | null;
|
|
23
|
+
onDateSelect?: (date: Date) => void;
|
|
24
|
+
minDate?: Date;
|
|
25
|
+
maxDate?: Date;
|
|
26
|
+
locale?: string;
|
|
27
|
+
placeholder?: string;
|
|
28
|
+
}
|
|
29
|
+
export type FilterItem = CheckboxFilterItem | CalendarFilterItem;
|
|
30
|
+
declare const isCalendarFilter: (filter: FilterItem) => filter is CalendarFilterItem;
|
|
31
|
+
declare const isCheckboxFilter: (filter: FilterItem) => filter is CheckboxFilterItem;
|
|
32
|
+
export interface TableHeaderProps {
|
|
33
|
+
searchValue?: string;
|
|
34
|
+
onSearchChange?: (value: string) => void;
|
|
35
|
+
searchPlaceholder?: string;
|
|
36
|
+
showSearch?: boolean;
|
|
37
|
+
showFilters?: boolean;
|
|
38
|
+
filters?: React.ReactNode;
|
|
39
|
+
filterItems?: FilterItem[];
|
|
40
|
+
className?: string;
|
|
41
|
+
onSearch?: (value: string) => void;
|
|
42
|
+
showClearSearch?: boolean;
|
|
43
|
+
}
|
|
44
|
+
declare const TableHeader: React.FC<TableHeaderProps>;
|
|
45
|
+
export type { CalendarFilterItem, CheckboxFilterItem };
|
|
46
|
+
export { isCalendarFilter, isCheckboxFilter };
|
|
47
|
+
export default TableHeader;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TablePaginationProps {
|
|
3
|
+
/** Página atual */
|
|
4
|
+
currentPage: number;
|
|
5
|
+
/** Total de itens */
|
|
6
|
+
totalItems: number;
|
|
7
|
+
/** Itens por página */
|
|
8
|
+
itemsPerPage: number;
|
|
9
|
+
/** Callback quando a página muda */
|
|
10
|
+
onPageChange: (page: number) => void;
|
|
11
|
+
/** Callback quando itens por página muda */
|
|
12
|
+
onItemsPerPageChange: (itemsPerPage: number) => void;
|
|
13
|
+
/** Opções disponíveis para itens por página */
|
|
14
|
+
pageSizeOptions?: number[];
|
|
15
|
+
/** Desabilita a paginação */
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** Classes CSS adicionais */
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
declare const TablePagination: React.FC<TablePaginationProps>;
|
|
21
|
+
export default TablePagination;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default } from './Table';
|
|
2
|
+
export { default as Table } from './Table';
|
|
3
|
+
export type { TableProps, TableColumn, TableRowData, } from './Table.types';
|
|
4
|
+
export { default as TableHeader } from './TableHeader';
|
|
5
|
+
export type { TableHeaderProps } from './TableHeader';
|
|
6
|
+
export { default as TablePagination } from './TablePagination';
|
|
7
|
+
export type { TablePaginationProps } from './TablePagination';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TableAction {
|
|
3
|
+
key: string;
|
|
4
|
+
label: string | ((row: any) => string);
|
|
5
|
+
icon?: React.ReactNode;
|
|
6
|
+
danger?: boolean;
|
|
7
|
+
disabled?: (row: any) => boolean;
|
|
8
|
+
onClick: (row: any) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const createActionsColumn: (actions: TableAction[]) => {
|
|
11
|
+
key: string;
|
|
12
|
+
label: string;
|
|
13
|
+
width: number;
|
|
14
|
+
align: "center";
|
|
15
|
+
render: (row: any) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
};
|
|
17
|
+
declare const TableActionsMenu: React.NamedExoticComponent<{
|
|
18
|
+
row: any;
|
|
19
|
+
actions: TableAction[];
|
|
20
|
+
}>;
|
|
21
|
+
export default TableActionsMenu;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TextFieldProps {
|
|
3
|
+
name?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
value?: string | number;
|
|
6
|
+
label?: string;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
type?: string;
|
|
9
|
+
onChange?: (value: string | number) => void;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
maxLength?: number;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
helper?: boolean;
|
|
14
|
+
helperText?: string;
|
|
15
|
+
tooltip?: boolean;
|
|
16
|
+
tooltipText?: string;
|
|
17
|
+
positionTooltip?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
|
|
18
|
+
errorMessage?: string;
|
|
19
|
+
trailingIcon?: boolean;
|
|
20
|
+
id?: string;
|
|
21
|
+
icon?: React.ReactNode;
|
|
22
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface ValidationParams {
|
|
2
|
+
value: string | number;
|
|
3
|
+
maxLength?: number;
|
|
4
|
+
type?: string;
|
|
5
|
+
errorMessage?: string;
|
|
6
|
+
required?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const validateInput: ({ value, maxLength, type, errorMessage, required }: ValidationParams) => string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import type { ToastType, ToastOptions, ToastContextType } from './Toast.types';
|
|
3
|
+
export interface ToastProviderProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
maxToasts?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const ToastProvider: React.FC<ToastProviderProps>;
|
|
8
|
+
export declare const useToast: () => ToastContextType;
|
|
9
|
+
export declare const Toast: {
|
|
10
|
+
show: (message: string, type?: ToastType, options?: ToastOptions) => string;
|
|
11
|
+
setContext: (context: ToastContextType) => void;
|
|
12
|
+
};
|
|
13
|
+
export default ToastProvider;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type ToastType = 'success' | 'alert' | 'info';
|
|
3
|
+
export interface ToastMessage {
|
|
4
|
+
id: string;
|
|
5
|
+
message: string;
|
|
6
|
+
type: ToastType;
|
|
7
|
+
persistent?: boolean;
|
|
8
|
+
duration?: number;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ToastOptions {
|
|
12
|
+
persistent?: boolean;
|
|
13
|
+
duration?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ToastContextType {
|
|
16
|
+
showToast: (message: string, type?: ToastType, options?: ToastOptions) => string;
|
|
17
|
+
hideToast: (id: string) => void;
|
|
18
|
+
hideAllToasts: () => void;
|
|
19
|
+
}
|
|
20
|
+
export interface ToastProviderProps {
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Tooltip';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { VerificationCodeProps } from './VerificationCode.types';
|
|
3
|
+
/**
|
|
4
|
+
* Componente VerificationCode para entrada de códigos de verificação
|
|
5
|
+
*
|
|
6
|
+
* @description Permite entrada de códigos com múltiplos dígitos,
|
|
7
|
+
* suportando diferentes tipos de caracteres e navegação por teclado.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <VerificationCode
|
|
12
|
+
* length={6}
|
|
13
|
+
* inputType="numeric"
|
|
14
|
+
* onComplete={(code) => console.log('Código:', code)}
|
|
15
|
+
* hasError={false}
|
|
16
|
+
* />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare const VerificationCode: React.FC<VerificationCodeProps>;
|
|
20
|
+
export default VerificationCode;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type InputType = 'numeric' | 'alpha' | 'alphanumeric';
|
|
2
|
+
export interface VerificationCodeProps {
|
|
3
|
+
/** Define o número de dígitos do código (padrão: 6) */
|
|
4
|
+
length?: number;
|
|
5
|
+
/** Define tipo de entrada: números, letras ou alfanumérico (padrão: "numeric") */
|
|
6
|
+
inputType?: InputType;
|
|
7
|
+
/** Callback chamado quando todos os campos são preenchidos */
|
|
8
|
+
onComplete?: (value: string) => void;
|
|
9
|
+
/** Indica se o campo está em estado de erro */
|
|
10
|
+
hasError?: boolean;
|
|
11
|
+
/** Mensagem de erro exibida abaixo do componente */
|
|
12
|
+
errorMessage?: string;
|
|
13
|
+
/** Define se o componente deve estar desabilitado */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Classe CSS adicional para estilização externa */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Props adicionais passadas para os inputs */
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export { default as Avatar } from './Avatar';
|
|
2
|
+
export { type AvatarProps } from './Avatar/Avatar.types';
|
|
3
|
+
export { default as Badge } from './Badge';
|
|
4
|
+
export { type BadgeProps } from './Badge/Badge.types';
|
|
5
|
+
export { default as Button } from './Button';
|
|
6
|
+
export { type ButtonProps } from './Button/Button.types';
|
|
7
|
+
export { default as Calendar } from './Calendar';
|
|
8
|
+
export { type CalendarProps, type Locale, type DateFormat, type DayItem, type EmptyItem, type CalendarItem, type YearItem } from './Calendar/Calendar.types';
|
|
9
|
+
export { default as Callout } from './Callout';
|
|
10
|
+
export { type CalloutProps } from './Callout/Callout.types';
|
|
11
|
+
export { default as Checkbox } from './Checkbox';
|
|
12
|
+
export { type CheckboxProps } from './Checkbox/Checkbox.types';
|
|
13
|
+
export { default as CheckboxRadix } from './CheckboxRadix';
|
|
14
|
+
export { type CheckboxRadixProps } from './CheckboxRadix/CheckboxRadix.types';
|
|
15
|
+
export { default as Chips } from './Chips';
|
|
16
|
+
export { type ChipsProps } from './Chips/Chips.types';
|
|
17
|
+
export { default as Container } from './Container';
|
|
18
|
+
export { type ContainerProps } from './Container/Container.types';
|
|
19
|
+
export { default as DatePicker } from './DatePicker';
|
|
20
|
+
export { type DatePickerProps } from './DatePicker/DatePicker.types';
|
|
21
|
+
export { default as Dialog } from './Dialog';
|
|
22
|
+
export { type DialogProps } from './Dialog/Dialog.types';
|
|
23
|
+
export { default as Drawer } from './Drawer';
|
|
24
|
+
export { type DrawerProps } from './Drawer/Drawer.types';
|
|
25
|
+
export { default as Dropdown } from './Dropdown';
|
|
26
|
+
export { type DropdownProps, type DropdownItem, type DropdownType } from './Dropdown/Dropdown.types';
|
|
27
|
+
export { default as Filter } from './Filter';
|
|
28
|
+
export { type FilterProps } from './Filter/Filter.types';
|
|
29
|
+
export { default as ListItem } from './ListItem';
|
|
30
|
+
export { type ListItemProps } from './ListItem/ListItem.types';
|
|
31
|
+
export { default as Menu } from './Menu';
|
|
32
|
+
export { type MenuProps, type MenuItem } from './Menu/Menu.types';
|
|
33
|
+
export { default as MenuRadix } from './MenuRadix';
|
|
34
|
+
export { type MenuRadixProps } from './MenuRadix/MenuRadix.types';
|
|
35
|
+
export { default as Quantity } from './Quantity';
|
|
36
|
+
export { type QuantityProps } from './Quantity/Quantity.types';
|
|
37
|
+
export { default as Radio } from './Radio';
|
|
38
|
+
export { type RadioProps } from './Radio/Radio.types';
|
|
39
|
+
export { default as RadioRadix } from './RadioRadix';
|
|
40
|
+
export { type RadioGroupProps as RadioRadixProps, type RadioProps as RadioRadixItemProps } from './RadioRadix/RadioRadix.types';
|
|
41
|
+
export { default as Search } from './Search';
|
|
42
|
+
export { type SearchProps } from './Search/Search.types';
|
|
43
|
+
export { default as Select } from './Select';
|
|
44
|
+
export { type SelectProps, type SelectOption } from './Select/Select.types';
|
|
45
|
+
export { default as SelectField } from './SelectField/SelectField';
|
|
46
|
+
export { type SelectFieldProps } from './SelectField/SelectField.types';
|
|
47
|
+
export { default as SelectRadix } from './SelectRadix';
|
|
48
|
+
export { type SelectRadixProps } from './SelectRadix/SelectRadix.types';
|
|
49
|
+
export { default as Table } from './Table';
|
|
50
|
+
export { default as TableHeader } from './Table/TableHeader';
|
|
51
|
+
export { default as TablePagination } from './Table/TablePagination';
|
|
52
|
+
export { type TableProps } from './Table/Table.types';
|
|
53
|
+
export { type TablePaginationProps } from './Table/TablePagination';
|
|
54
|
+
export { type TableHeaderProps, type FilterItem } from './Table/TableHeader';
|
|
55
|
+
export { default as TextField } from './TextField';
|
|
56
|
+
export { type TextFieldProps } from './TextField/TextField.types';
|
|
57
|
+
export { default as Toast, ToastProvider, useToast } from './Toast';
|
|
58
|
+
export { type ToastType, type ToastMessage, type ToastOptions, type ToastContextType } from './Toast/Toast.types';
|
|
59
|
+
export { default as Tooltip } from './Tooltip';
|
|
60
|
+
export { type TooltipProps } from './Tooltip/Tooltip.types';
|
|
61
|
+
export { default as VerificationCode } from './VerificationCode';
|
|
62
|
+
export { type VerificationCodeProps } from './VerificationCode/VerificationCode.types';
|
|
63
|
+
export { default as useApiSimulation } from '../hooks/ApiSimulation';
|
|
64
|
+
export { useInfiniteScroll } from '../hooks/InfiniteScroll';
|
|
65
|
+
export { normalizeText } from '../hooks/NormalizeText';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configurações para simulação de API
|
|
3
|
+
*/
|
|
4
|
+
export interface ApiSimulationConfig {
|
|
5
|
+
/** Items por página */
|
|
6
|
+
itemsPerPage?: number;
|
|
7
|
+
/** Total de items no dataset */
|
|
8
|
+
totalItems?: number;
|
|
9
|
+
/** Delay em ms para simular latência */
|
|
10
|
+
delay?: number;
|
|
11
|
+
/** Taxa de erro (0-1) para simular falhas */
|
|
12
|
+
errorRate?: number;
|
|
13
|
+
/** Função geradora de items customizada */
|
|
14
|
+
itemGenerator?: (index: number, searchQuery?: string) => any;
|
|
15
|
+
/** Debug mode */
|
|
16
|
+
debug?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Estado da simulação de API
|
|
20
|
+
*/
|
|
21
|
+
export interface ApiSimulationState<T> {
|
|
22
|
+
/** Items carregados */
|
|
23
|
+
items: T[];
|
|
24
|
+
/** Página atual */
|
|
25
|
+
currentPage: number;
|
|
26
|
+
/** Total de páginas */
|
|
27
|
+
totalPages: number;
|
|
28
|
+
/** Status do carregamento */
|
|
29
|
+
status: 'idle' | 'loading' | 'succeeded' | 'failed';
|
|
30
|
+
/** Erro atual (se houver) */
|
|
31
|
+
error: string | null;
|
|
32
|
+
/** Query de busca atual */
|
|
33
|
+
searchQuery: string;
|
|
34
|
+
/** Se há próxima página */
|
|
35
|
+
hasNextPage: boolean;
|
|
36
|
+
/** Se é a primeira página */
|
|
37
|
+
isFirstPage: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface ApiSimulationActions {
|
|
40
|
+
/** Carregar próxima página */
|
|
41
|
+
loadNextPage: () => Promise<void>;
|
|
42
|
+
/** Realizar nova busca */
|
|
43
|
+
search: (query: string) => Promise<void>;
|
|
44
|
+
/** Reset completo */
|
|
45
|
+
reset: () => void;
|
|
46
|
+
/** Retry da última operação */
|
|
47
|
+
retry: () => Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
export interface UseApiSimulationReturn<T> extends ApiSimulationState<T> {
|
|
50
|
+
actions: ApiSimulationActions;
|
|
51
|
+
}
|
|
52
|
+
export declare function useApiSimulation<T = any>(config?: ApiSimulationConfig): UseApiSimulationReturn<T>;
|
|
53
|
+
export default useApiSimulation;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Props para o hook useInfiniteScroll
|
|
3
|
+
*/
|
|
4
|
+
interface UseInfiniteScrollProps {
|
|
5
|
+
/** Status atual do carregamento */
|
|
6
|
+
status: 'idle' | 'loading' | 'succeeded' | 'failed';
|
|
7
|
+
/** Página atual */
|
|
8
|
+
page: number;
|
|
9
|
+
/** Última página disponível */
|
|
10
|
+
lastPage: number;
|
|
11
|
+
/** Callback para carregar próxima página */
|
|
12
|
+
onLoadMore: () => void;
|
|
13
|
+
/** Threshold para IntersectionObserver (0-1) */
|
|
14
|
+
threshold?: number;
|
|
15
|
+
/** Margem raiz para IntersectionObserver */
|
|
16
|
+
rootMargin?: string;
|
|
17
|
+
/** Habilita/desabilita o hook */
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
/** Debug mode - logs no console */
|
|
20
|
+
debug?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Retorno do hook useInfiniteScroll
|
|
24
|
+
*/
|
|
25
|
+
interface UseInfiniteScrollReturn {
|
|
26
|
+
/** Ref para o elemento observador */
|
|
27
|
+
observerRef: React.RefObject<HTMLDivElement | null>;
|
|
28
|
+
/** Se o elemento está visível */
|
|
29
|
+
isIntersecting: boolean;
|
|
30
|
+
/** Se há próxima página */
|
|
31
|
+
hasNextPage: boolean;
|
|
32
|
+
/** Se todas as páginas foram carregadas */
|
|
33
|
+
isCompleted: boolean;
|
|
34
|
+
/** Função para reset manual */
|
|
35
|
+
reset: () => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Hook otimizado para scroll infinito usando IntersectionObserver
|
|
39
|
+
*/
|
|
40
|
+
export declare function useInfiniteScroll({ status, page, lastPage, onLoadMore, threshold, rootMargin, enabled, debug }: UseInfiniteScrollProps): UseInfiniteScrollReturn;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const normalizeText: (text: React.ReactNode) => string;
|