@armtek/data 0.1.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 (77) hide show
  1. package/dist/dataTableStoreFactory-BTH4XExR.cjs +1 -0
  2. package/dist/dataTableStoreFactory-CTIqHKTT.js +1505 -0
  3. package/dist/dataTableStoreFactory.css +1 -0
  4. package/dist/dictionary.cjs +1 -0
  5. package/dist/dictionary.d.ts +2 -0
  6. package/dist/dictionary.js +6 -0
  7. package/dist/index.cjs +1 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.js +15 -0
  10. package/dist/search.cjs +1 -0
  11. package/dist/search.d.ts +2 -0
  12. package/dist/search.js +4 -0
  13. package/dist/src/config/tests/changeDateField.d.ts +2 -0
  14. package/dist/src/config/tests/changeSelectField.d.ts +1 -0
  15. package/dist/src/config/tests/changeTextField.d.ts +1 -0
  16. package/dist/src/config/tests/clickBackdropOverlay.d.ts +1 -0
  17. package/dist/src/config/tests/createWrapper.d.ts +6 -0
  18. package/dist/src/index.d.ts +3 -0
  19. package/dist/src/modules/dictionary/config/types.d.ts +1 -0
  20. package/dist/src/modules/dictionary/index.d.ts +3 -0
  21. package/dist/src/modules/dictionary/lib/useDictionary.d.ts +7 -0
  22. package/dist/src/modules/dictionary/lib/useDictionaryFetching.d.ts +1 -0
  23. package/dist/src/modules/dictionary/lib/useDictionaryItems.d.ts +1 -0
  24. package/dist/src/modules/dictionary/lib/useDictionaryRequested.d.ts +1 -0
  25. package/dist/src/modules/dictionary/model/dictionaryStore.d.ts +19 -0
  26. package/dist/src/modules/dictionary/ui/DictInput.d.ts +10 -0
  27. package/dist/src/modules/search/Search.d.ts +21 -0
  28. package/dist/src/modules/search/index.d.ts +1 -0
  29. package/dist/src/modules/table/index.d.ts +11 -0
  30. package/dist/src/modules/table/lib/GetDefaultFilters.d.ts +2 -0
  31. package/dist/src/modules/table/lib/const.d.ts +1 -0
  32. package/dist/src/modules/table/lib/deleteUrlParamByName.d.ts +1 -0
  33. package/dist/src/modules/table/lib/formatDate.d.ts +3 -0
  34. package/dist/src/modules/table/lib/getFilterDisplayValue.d.ts +3 -0
  35. package/dist/src/modules/table/lib/local_storage.d.ts +6 -0
  36. package/dist/src/modules/table/lib/makePaginatedFilterParams.d.ts +12 -0
  37. package/dist/src/modules/table/lib/sortByField.d.ts +3 -0
  38. package/dist/src/modules/table/lib/uuid.d.ts +1 -0
  39. package/dist/src/modules/table/model/dataTableContext.d.ts +36 -0
  40. package/dist/src/modules/table/model/dataTableStoreFactory.d.ts +97 -0
  41. package/dist/src/modules/table/model/types.d.ts +22 -0
  42. package/dist/src/modules/table/model/useDataTable.d.ts +2 -0
  43. package/dist/src/modules/table/ui/ActionList/ActionList.d.ts +13 -0
  44. package/dist/src/modules/table/ui/DataTable.d.ts +54 -0
  45. package/dist/src/modules/table/ui/DataTable.skeleton.d.ts +12 -0
  46. package/dist/src/modules/table/ui/DataTableActions/DataTableActions.d.ts +6 -0
  47. package/dist/src/modules/table/ui/FilterBar/FilterBar.d.ts +71 -0
  48. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterForm.d.ts +9 -0
  49. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormCheckbox.d.ts +24 -0
  50. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormDate.d.ts +16 -0
  51. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormField.d.ts +10 -0
  52. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormInput.d.ts +19 -0
  53. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormInterval.d.ts +19 -0
  54. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormPeriod.d.ts +24 -0
  55. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormSearch.d.ts +21 -0
  56. package/dist/src/modules/table/ui/FilterBar/FilterForm/FilterFormSelect.d.ts +31 -0
  57. package/dist/src/modules/table/ui/FilterBar/FilterSearch/FilterSearch.d.ts +7 -0
  58. package/dist/src/modules/table/ui/FilterBar/FilterSelector.d.ts +7 -0
  59. package/dist/src/modules/table/ui/FilterBar/TableFilterBar.d.ts +2 -0
  60. package/dist/src/modules/table/ui/Menu/ContextMenu.d.ts +9 -0
  61. package/dist/src/modules/table/ui/Menu/ContextMenuBtn.d.ts +13 -0
  62. package/dist/src/modules/table/ui/Table/Table.d.ts +20 -0
  63. package/dist/src/modules/table/ui/Table/TableBody.d.ts +19 -0
  64. package/dist/src/modules/table/ui/Table/TableHead.d.ts +20 -0
  65. package/dist/src/modules/table/ui/TableActionBar/DataTableActionBar.d.ts +6 -0
  66. package/dist/src/modules/table/ui/TableActionBar/TableActionBar.d.ts +11 -0
  67. package/dist/src/modules/table/ui/TableActionBar/TableRowSelect.d.ts +10 -0
  68. package/dist/src/modules/table/ui/TableActionCol.d.ts +9 -0
  69. package/dist/src/modules/table/ui/TableCell.d.ts +11 -0
  70. package/dist/src/modules/table/ui/TableContextMenu.d.ts +16 -0
  71. package/dist/src/modules/table/ui/TablePagination.d.ts +2 -0
  72. package/dist/src/modules/table/ui/TableSort.d.ts +10 -0
  73. package/dist/table.cjs +1 -0
  74. package/dist/table.d.ts +2 -0
  75. package/dist/table.js +11 -0
  76. package/dist/vite.config.d.ts +2 -0
  77. package/package.json +70 -0
@@ -0,0 +1,19 @@
1
+ import { FilterType } from '../FilterBar';
2
+ import { TableRowType2 } from '../../DataTable';
3
+ import { TextFieldProps } from 'armtek-uikit-react/ui/Form/TextField';
4
+ export interface StringFilterType<T extends TableRowType2> extends FilterType<T> {
5
+ type: 'string';
6
+ value?: string;
7
+ search?: boolean;
8
+ getDisplayValue?: (item: StringFilterType<any>, value: string) => string;
9
+ getValue?: (value: string) => any;
10
+ fieldProps?: TextFieldProps;
11
+ }
12
+ type PropsType = {
13
+ item: StringFilterType<any>;
14
+ onChange: (value: string, displayValue: string) => void;
15
+ value: string;
16
+ fieldProps?: TextFieldProps;
17
+ };
18
+ declare const FilterFormInput: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
19
+ export default FilterFormInput;
@@ -0,0 +1,19 @@
1
+ import { FilterType } from '../FilterBar';
2
+ import { TableRowType2 } from '../../DataTable';
3
+ export interface IntervalFilterType<T extends TableRowType2> extends FilterType<T> {
4
+ type: 'interval';
5
+ min: number;
6
+ max: number;
7
+ value?: [number, number];
8
+ getDisplayValue?: (item: IntervalFilterType<any>, value: [number, number]) => string;
9
+ getValue?: (value: [number, number]) => any;
10
+ }
11
+ type PropsType = {
12
+ item: IntervalFilterType<any>;
13
+ onChange: (value: number | [number, number], displayValue: string) => void;
14
+ value: [number, number];
15
+ min: number;
16
+ max: number;
17
+ };
18
+ declare const FilterFormInterval: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
19
+ export default FilterFormInterval;
@@ -0,0 +1,24 @@
1
+ import { FilterType } from '../FilterBar';
2
+ import { TableRowType2 } from '../../DataTable';
3
+ type DatePeriodType = {
4
+ start: Date | null;
5
+ end: Date | null;
6
+ };
7
+ export interface PeriodFilterType<T extends TableRowType2> extends FilterType<T> {
8
+ type: 'period';
9
+ variant?: 'date' | 'datetime';
10
+ value?: DatePeriodType | null;
11
+ getDisplayValue?: (item: PeriodFilterType<any>, date: DatePeriodType) => string;
12
+ getValue?: (value: DatePeriodType) => any;
13
+ endFormat?: string;
14
+ startFormat?: string;
15
+ getEnd?: (date: Date) => string;
16
+ getStart?: (date: Date) => string;
17
+ }
18
+ type PropsType = {
19
+ item: PeriodFilterType<any>;
20
+ onChange: (value: DatePeriodType, displayValue: string) => void;
21
+ value: any;
22
+ };
23
+ declare const FilterFormPeriod: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
24
+ export default FilterFormPeriod;
@@ -0,0 +1,21 @@
1
+ import { FilterType } from '../FilterBar';
2
+ import { TableRowType2 } from '../../DataTable';
3
+ export interface SearchFilterType<T extends TableRowType2> extends FilterType<T> {
4
+ type: 'search';
5
+ value?: string;
6
+ getDisplayValue?: (item: SearchFilterType<any>, value: string) => string;
7
+ getValue?: (value: string) => any;
8
+ async: {
9
+ getData: () => Promise<any>;
10
+ endpoint: string | ((query: string) => string);
11
+ valueKey?: string;
12
+ labelKey?: string | ((item: any) => string);
13
+ };
14
+ }
15
+ type PropsType = {
16
+ item: SearchFilterType<any>;
17
+ onChange: (value: string, displayValue: string) => void;
18
+ value: string;
19
+ };
20
+ declare const FilterFormSearch: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
21
+ export default FilterFormSearch;
@@ -0,0 +1,31 @@
1
+ import { FilterType } from '../FilterBar';
2
+ import { TableRowType2 } from '../../DataTable';
3
+ import { OptionType } from 'armtek-uikit-react/ui/Form/Select';
4
+ export interface SelectFilterType<T extends TableRowType2> extends FilterType<T> {
5
+ type: 'select' | 'filter';
6
+ value?: string;
7
+ options: OptionType[];
8
+ getDisplayValue?: (item: SelectFilterType<any>, value: string | string[]) => string;
9
+ getValue?: (value: string) => any;
10
+ multiple?: boolean;
11
+ search?: boolean;
12
+ clear?: boolean;
13
+ async?: {
14
+ getData: () => Promise<any>;
15
+ valueKey?: string;
16
+ labelKey?: string;
17
+ };
18
+ }
19
+ type PropsType = {
20
+ item: SelectFilterType<any>;
21
+ onChange: (value: string | string[], displayValue: string) => void;
22
+ value: string | string[];
23
+ options: OptionType[];
24
+ type: SelectFilterType<any>['type'];
25
+ error?: string;
26
+ multiple?: boolean;
27
+ search?: boolean;
28
+ clear?: boolean;
29
+ };
30
+ declare const FilterFormContainer: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
31
+ export default FilterFormContainer;
@@ -0,0 +1,7 @@
1
+ type PropsType = {
2
+ onChange: (value: string) => void;
3
+ value: string;
4
+ delay?: number;
5
+ };
6
+ declare const FilterSearch: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
7
+ export default FilterSearch;
@@ -0,0 +1,7 @@
1
+ import { FilterItemType } from './FilterBar';
2
+ type PropsType = {
3
+ onSubmit: (item: FilterItemType<any>, value: any, displayValue: string) => void;
4
+ items: FilterItemType<any>[];
5
+ };
6
+ declare const FilterSelector: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
7
+ export default FilterSelector;
@@ -0,0 +1,2 @@
1
+ import { TableRowType2 } from '../DataTable';
2
+ export declare function DataTableFilter<T extends TableRowType2>(): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,9 @@
1
+ import { ActionListItemType } from '../ActionList/ActionList';
2
+ import { PopoverProps } from 'armtek-uikit-react/ui/Popover';
3
+ import { ReactNode } from 'react';
4
+ type PropsType = {
5
+ items?: ActionListItemType[];
6
+ children?: ReactNode;
7
+ } & Omit<PopoverProps, 'children'>;
8
+ declare const ContextMenu: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
9
+ export default ContextMenu;
@@ -0,0 +1,13 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ import { ActionListItemType } from '../ActionList/ActionList';
3
+ type Props = {
4
+ items: ActionListItemType[];
5
+ Button?: ComponentType<{
6
+ onClick: (e: any) => void;
7
+ }>;
8
+ children?: ReactNode;
9
+ disabled?: boolean;
10
+ 'data-testid'?: string;
11
+ };
12
+ export declare const ContextMenuBtn: (props: Props) => import("react/jsx-runtime").JSX.Element | null;
13
+ export {};
@@ -0,0 +1,20 @@
1
+ import { ComponentPropsWithoutRef, MouseEvent, ReactNode } from 'react';
2
+ import { TableRowType2 } from '../DataTable';
3
+ export type TableRowActionType<T extends TableRowType2> = {
4
+ icon?: string;
5
+ label: string;
6
+ onClick: (row: T) => void;
7
+ };
8
+ type TableContainerOwnProps<T extends TableRowType2> = {
9
+ emptyResult?: string | ReactNode;
10
+ getRowStyles?: (row: T) => {
11
+ [key: string]: any;
12
+ };
13
+ getIsRowActive?: (row: T) => boolean;
14
+ onRowClick?: (e: MouseEvent, row: T) => void;
15
+ onContextMenu?: (e: MouseEvent<HTMLTableRowElement>, row: T) => void;
16
+ rowClassName?: ((row: T) => string) | string;
17
+ };
18
+ export type TableContainerPropsType<T extends TableRowType2> = TableContainerOwnProps<T> & Omit<ComponentPropsWithoutRef<'table'>, keyof TableContainerOwnProps<T>>;
19
+ declare function TableContainer<T extends TableRowType2>(props: TableContainerPropsType<T>): import("react/jsx-runtime").JSX.Element;
20
+ export default TableContainer;
@@ -0,0 +1,19 @@
1
+ import { MouseEvent, ReactNode } from 'react';
2
+ import { TableRowType2 } from '../DataTable';
3
+ type PropsType<T extends TableRowType2> = {
4
+ emptyResult?: string | ReactNode;
5
+ getRowStyles?: (row: T) => {
6
+ [key: string]: any;
7
+ };
8
+ getIsRowActive?: (row: T) => boolean;
9
+ onRowClick?: (e: MouseEvent, row: T) => void;
10
+ onContextMenu?: (e: MouseEvent<HTMLTableRowElement>, row: T) => void;
11
+ rowClassName?: ((row: T) => string) | string;
12
+ };
13
+ type EmptyPropsType = {
14
+ children: string | ReactNode;
15
+ cols?: number;
16
+ };
17
+ export declare const DataTableEmptyResult: (props: EmptyPropsType) => import("react/jsx-runtime").JSX.Element;
18
+ declare function TableBdy<T extends TableRowType2>(props: PropsType<T>): import("react/jsx-runtime").JSX.Element;
19
+ export default TableBdy;
@@ -0,0 +1,20 @@
1
+ import { ChangeEvent, ComponentPropsWithoutRef } from 'react';
2
+ import { DataTableColType, TableRowType2 } from '../DataTable';
3
+ import { SortOrderType } from '../../model/types';
4
+ type TableHeadType<T extends TableRowType2> = {
5
+ structure: DataTableColType<T>[];
6
+ sort?: keyof T;
7
+ order?: SortOrderType;
8
+ onSort?: (code: string) => void;
9
+ onSelect?: (e: ChangeEvent<HTMLInputElement>) => void;
10
+ displayIndex?: boolean;
11
+ displayActionCol?: boolean;
12
+ selected?: boolean;
13
+ indeterminate?: boolean;
14
+ };
15
+ export declare function THead<T extends TableRowType2>(props: TableHeadType<T> & Omit<ComponentPropsWithoutRef<'td'>, keyof TableHeadType<T>>): import("react/jsx-runtime").JSX.Element;
16
+ type TableHeadPropsType<T extends TableRowType2> = {
17
+ getIsRowActive?: (row: T) => boolean;
18
+ };
19
+ declare function TableHead<T extends TableRowType2>(props: TableHeadPropsType<T>): import("react/jsx-runtime").JSX.Element;
20
+ export default TableHead;
@@ -0,0 +1,6 @@
1
+ import { TableRowType2 } from '../DataTable';
2
+ export type DataTableActionType<T> = {
3
+ label: string;
4
+ onClick: (rows: TableRowType2<T>[]) => void;
5
+ };
6
+ export declare function DataTableActionBar(): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,11 @@
1
+ import { TableRowType2 } from '../DataTable';
2
+ export type TableActionBarActionType = {
3
+ label: string;
4
+ };
5
+ export type TableActionBarPropsType<T extends TableRowType2 = TableRowType2> = {
6
+ actions: TableActionBarActionType[];
7
+ selected: T[];
8
+ onSelect: (index: number) => void;
9
+ };
10
+ export declare function TableActionBar<T extends TableRowType2 = TableRowType2>(props: TableActionBarPropsType<T>): import("react/jsx-runtime").JSX.Element;
11
+ export default TableActionBar;
@@ -0,0 +1,10 @@
1
+ import { ChangeEvent } from 'react';
2
+ type PropsType = {
3
+ onChange: (e: ChangeEvent<HTMLInputElement>) => void;
4
+ head?: boolean;
5
+ checked?: boolean;
6
+ disabled?: boolean;
7
+ indeterminate?: boolean;
8
+ };
9
+ declare const TableRowSelect: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
10
+ export default TableRowSelect;
@@ -0,0 +1,9 @@
1
+ import { TableRowActionType } from './Table/Table';
2
+ import { TableRowType2 } from './DataTable';
3
+ type PropsType<T extends TableRowType2> = {
4
+ row: T;
5
+ actions: TableRowActionType<T>[];
6
+ disabled?: boolean;
7
+ };
8
+ export declare function TableActionCol<T extends TableRowType2>(props: PropsType<T>): import("react/jsx-runtime").JSX.Element;
9
+ export default TableActionCol;
@@ -0,0 +1,11 @@
1
+ import { DataTableColType, TableRowType2 } from './DataTable';
2
+ import { TableContextActionType } from './TableContextMenu';
3
+ type PropsType<T extends TableRowType2 = TableRowType2> = {
4
+ col: DataTableColType<any>;
5
+ hovered: boolean;
6
+ actions?: TableContextActionType[];
7
+ row: T;
8
+ };
9
+ declare function TableTableCell<T extends TableRowType2 = TableRowType2>(props: PropsType<T>): import("react/jsx-runtime").JSX.Element;
10
+ declare const _default: import('react').MemoExoticComponent<typeof TableTableCell>;
11
+ export default _default;
@@ -0,0 +1,16 @@
1
+ export type TableContextActionType<T extends any = any> = {
2
+ label: string;
3
+ icon?: string;
4
+ active?: boolean | ((row: T) => void);
5
+ onClick: (row: T) => void;
6
+ };
7
+ type PropsType<T> = {
8
+ x: number;
9
+ y: number;
10
+ onContextClick?: () => void;
11
+ contextActions: TableContextActionType<T>[];
12
+ anchorEl?: HTMLTableRowElement | null;
13
+ row: T;
14
+ };
15
+ declare function TableContextMenu<T>(props: PropsType<T>): import("react/jsx-runtime").JSX.Element;
16
+ export default TableContextMenu;
@@ -0,0 +1,2 @@
1
+ export declare const PAGE_SIZE_LABEL = "\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0440\u043E\u043A";
2
+ export declare const DataTablePagination: () => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,10 @@
1
+ import { StackProps } from 'armtek-uikit-react/ui/Stack';
2
+ import { SortOrderType } from '../model/types';
3
+ type TableSortProps = {
4
+ order?: SortOrderType;
5
+ code: string;
6
+ active?: boolean;
7
+ onSort: (code: string) => void;
8
+ };
9
+ export declare const TableSort: (props: TableSortProps & StackProps) => import("react/jsx-runtime").JSX.Element;
10
+ export {};
package/dist/table.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./dataTableStoreFactory-BTH4XExR.cjs");exports.DataTable=e.DataTable;exports.DataTableSkeleton=e.DataTable_skeleton;exports.FilterBar=e.FilterBar;exports.FilterFormField=e.FilterFormField;exports.TableActionCol=e.TableActionCol;exports.createDataTable=e.createDataTable;exports.makePaginatedFilterParams=e.makePaginatedFilterParams;exports.sortByField=e.sortByField;
@@ -0,0 +1,2 @@
1
+ export * from './src/modules/table/index'
2
+ export {}
package/dist/table.js ADDED
@@ -0,0 +1,11 @@
1
+ import { D as t, a as l, F as s, c as r, T as i, d as o, m as F, s as m } from "./dataTableStoreFactory-CTIqHKTT.js";
2
+ export {
3
+ t as DataTable,
4
+ l as DataTableSkeleton,
5
+ s as FilterBar,
6
+ r as FilterFormField,
7
+ i as TableActionCol,
8
+ o as createDataTable,
9
+ F as makePaginatedFilterParams,
10
+ m as sortByField
11
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vite').UserConfig;
2
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@armtek/data",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./table": {
16
+ "types": "./dist/table.d.ts",
17
+ "import": "./dist/table.js",
18
+ "require": "./dist/table.cjs"
19
+ },
20
+ "./dictionary": {
21
+ "types": "./dist/dictionary.d.ts",
22
+ "import": "./dist/dictionary.js",
23
+ "require": "./dist/dictionary.cjs"
24
+ },
25
+ "./search": {
26
+ "types": "./dist/search.d.ts",
27
+ "import": "./dist/search.js",
28
+ "require": "./dist/search.cjs"
29
+ }
30
+ },
31
+ "files": [
32
+ "dist"
33
+ ],
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "scripts": {
38
+ "build": "vite build",
39
+ "build:watch": "vite build --watch",
40
+ "prepublishOnly": "npm run test:run && npm run build",
41
+ "test": "vitest",
42
+ "test:run": "vitest run",
43
+ "test:watch": "vitest --watch"
44
+ },
45
+ "peerDependencies": {
46
+ "@withease/factories": "*",
47
+ "armtek-uikit-react": "*",
48
+ "effector": "*",
49
+ "effector-react": "*",
50
+ "react": "18.2.0",
51
+ "react-dom": "18.2.0"
52
+ },
53
+ "dependencies": {
54
+ "classnames": "*"
55
+ },
56
+ "devDependencies": {
57
+ "@testing-library/react": "*",
58
+ "@testing-library/jest-dom": "*",
59
+ "@types/react": "*",
60
+ "@types/react-dom": "*",
61
+ "@types/node": "*",
62
+ "@vitejs/plugin-react": "*",
63
+ "jsdom": "*",
64
+ "sass": "*",
65
+ "typescript": "*",
66
+ "vite": "*",
67
+ "vite-plugin-dts": "*",
68
+ "vitest": "*"
69
+ }
70
+ }