pesona-ui 1.0.1 → 1.0.3
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/index.cjs.js +8485 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +8433 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/styles/pesona-ui.css +1 -1
- package/dist/types/components/Accordion/Accordion.d.ts +26 -0
- package/dist/types/components/Accordion/index.d.ts +1 -0
- package/dist/types/components/Alert/Alert.d.ts +8 -0
- package/dist/types/components/Alert/ConfirmationAlert.d.ts +8 -0
- package/dist/types/components/Alert/index.d.ts +2 -0
- package/dist/types/components/Callout/Callout.d.ts +9 -0
- package/dist/types/components/Callout/index.d.ts +1 -0
- package/dist/types/components/Form/Checkbox/Checkbox.d.ts +12 -0
- package/dist/types/components/Form/Checkbox/CheckboxAgreement.d.ts +12 -0
- package/dist/types/components/Form/Container/FormContainer.d.ts +14 -0
- package/dist/types/components/Form/DatePicker/DatePicker.d.ts +8 -0
- package/dist/types/components/Form/DatePicker/DropdownDatePicker.d.ts +13 -0
- package/dist/types/components/Form/Input/ClearInput.d.ts +5 -0
- package/dist/types/components/Form/Input/Input.d.ts +10 -0
- package/dist/types/components/Form/Input/InputDate.d.ts +10 -0
- package/dist/types/components/Form/Input/InputFile.d.ts +9 -0
- package/dist/types/components/Form/Input/InputImageSize.d.ts +3 -0
- package/dist/types/components/Form/Input/InputTextArea.d.ts +9 -0
- package/dist/types/components/Form/Input/InputWysiwyg.d.ts +13 -0
- package/dist/types/components/Form/Radio/Radio.d.ts +14 -0
- package/dist/types/components/Form/Radio/RadioButtonGroup.d.ts +17 -0
- package/dist/types/components/Form/Select/Select.d.ts +22 -0
- package/dist/types/components/Form/Select/SelectMultiple.d.ts +20 -0
- package/dist/types/components/Form/Select/SelectWithSearch.d.ts +24 -0
- package/dist/types/components/Form/Switch/Switch.d.ts +12 -0
- package/dist/types/components/Form/index.d.ts +18 -0
- package/dist/types/components/List/ListView.d.ts +12 -0
- package/dist/types/components/List/index.d.ts +1 -0
- package/dist/types/components/Loading/LoadingBar.d.ts +8 -0
- package/dist/types/components/Loading/index.d.ts +1 -0
- package/dist/types/components/Modal/Modal.d.ts +23 -0
- package/dist/types/components/Modal/index.d.ts +1 -0
- package/dist/types/components/Popover/Popover.d.ts +9 -0
- package/dist/types/components/Popover/index.d.ts +1 -0
- package/dist/types/components/Progress/CircularProgress.d.ts +9 -0
- package/dist/types/components/Progress/CircularProgressWithLabel.d.ts +11 -0
- package/dist/types/components/Progress/LinearProgress.d.ts +10 -0
- package/dist/types/components/Progress/index.d.ts +3 -0
- package/dist/types/components/Tab/Tabs.d.ts +19 -0
- package/dist/types/components/Tab/index.d.ts +1 -0
- package/dist/types/components/Table/DivTable.d.ts +31 -0
- package/dist/types/components/Table/Table.d.ts +24 -0
- package/dist/types/components/Table/TableDeleteSelectedItems.d.ts +7 -0
- package/dist/types/components/Table/TablePaginating.d.ts +14 -0
- package/dist/types/components/Table/TablePickSelectedItems.d.ts +8 -0
- package/dist/types/components/Table/index.d.ts +2 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +12 -0
- package/dist/types/components/Tooltip/index.d.ts +1 -0
- package/dist/types/components/index.d.ts +12 -0
- package/dist/types/hooks/useAutoPosition.d.ts +14 -0
- package/dist/types/hooks/useDatePicker.d.ts +16 -0
- package/dist/types/hooks/useDropdownPositionAndScroll.d.ts +12 -0
- package/dist/types/hooks/useFormValidation.d.ts +67 -0
- package/dist/types/utils/apiError.d.ts +3 -0
- package/dist/types/utils/avatar.d.ts +2 -0
- package/dist/types/utils/constants.d.ts +9 -0
- package/dist/types/utils/date.d.ts +25 -0
- package/dist/types/utils/handleApiError.d.ts +1 -0
- package/dist/types/utils/mask.d.ts +21 -0
- package/dist/types/utils/media.d.ts +4 -0
- package/dist/types/utils/notification.d.ts +3 -0
- package/dist/types/utils/number.d.ts +1 -0
- package/dist/types/utils/string.d.ts +3 -0
- package/dist/types/utils/stringFormater.d.ts +3 -0
- package/package.json +10 -2
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './CircularProgressWithLabel.scss';
|
|
3
|
+
interface CircularProgressWithLabelProps {
|
|
4
|
+
progress?: number;
|
|
5
|
+
size?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
strokeWidth?: number;
|
|
9
|
+
}
|
|
10
|
+
declare const CircularProgressWithLabel: React.FC<CircularProgressWithLabelProps>;
|
|
11
|
+
export { CircularProgressWithLabel };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './LinearProgress.scss';
|
|
3
|
+
interface LinearProgressProps {
|
|
4
|
+
showLabel?: boolean;
|
|
5
|
+
progress?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const LinearProgress: React.FC<LinearProgressProps>;
|
|
10
|
+
export { LinearProgress };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import './Tabs.scss';
|
|
3
|
+
interface TabProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
title: string;
|
|
6
|
+
icon?: ReactElement;
|
|
7
|
+
}
|
|
8
|
+
interface TabsProps {
|
|
9
|
+
className?: string;
|
|
10
|
+
navClassName?: string;
|
|
11
|
+
contentClassName?: string;
|
|
12
|
+
children: ReactElement<TabProps>[];
|
|
13
|
+
activeTab: number;
|
|
14
|
+
handleActiveTab: (index: number) => void;
|
|
15
|
+
customHeader?: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
declare const Tabs: React.FC<TabsProps>;
|
|
18
|
+
declare const Tab: React.FC<TabProps>;
|
|
19
|
+
export { Tabs, Tab };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Tabs, Tab } from './Tabs';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import './DivTable.scss';
|
|
3
|
+
interface DivTableProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
view?: 'grid' | 'list';
|
|
7
|
+
gridColumn?: number;
|
|
8
|
+
}
|
|
9
|
+
interface DivTableRowProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
className?: string;
|
|
12
|
+
isActive?: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface DivTableCellProps {
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
className?: string;
|
|
17
|
+
hideOnGrid?: boolean;
|
|
18
|
+
}
|
|
19
|
+
declare const DivTable: React.FC<DivTableProps>;
|
|
20
|
+
declare const DivTableHeader: React.FC<{
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
}>;
|
|
23
|
+
declare const DivTableBody: React.FC<{
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
}>;
|
|
26
|
+
declare const DivTableRow: React.FC<DivTableRowProps>;
|
|
27
|
+
declare const DivTableCell: React.FC<DivTableCellProps>;
|
|
28
|
+
declare const DivTableFooter: React.FC<{
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
}>;
|
|
31
|
+
export { DivTable, DivTableHeader, DivTableBody, DivTableRow, DivTableCell, DivTableFooter };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import './Table.scss';
|
|
3
|
+
interface TableProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const Table: React.FC<TableProps>;
|
|
12
|
+
declare const TableHeader: React.FC<TableProps>;
|
|
13
|
+
declare const TableBody: React.FC<TableProps>;
|
|
14
|
+
declare const TableRow: React.FC<TableRowProps>;
|
|
15
|
+
interface TableCellProps {
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
header?: boolean;
|
|
18
|
+
className?: string;
|
|
19
|
+
colSpan?: number;
|
|
20
|
+
style?: React.CSSProperties;
|
|
21
|
+
}
|
|
22
|
+
declare const TableCell: React.FC<TableCellProps>;
|
|
23
|
+
declare const TableFooter: React.FC<TableProps>;
|
|
24
|
+
export { Table, TableHeader, TableBody, TableRow, TableCell, TableFooter };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface TablePaginatingProps {
|
|
3
|
+
startIndex: number;
|
|
4
|
+
endIndex: number;
|
|
5
|
+
currentPage: number;
|
|
6
|
+
totalData: number;
|
|
7
|
+
itemsPerPage: number;
|
|
8
|
+
setItemsPerPage: (itemsPerPage: number) => void;
|
|
9
|
+
setCurrentPage: (currentPage: number) => void;
|
|
10
|
+
totalPages: number;
|
|
11
|
+
showPerPage?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare const TablePaginating: React.FC<TablePaginatingProps>;
|
|
14
|
+
export default TablePaginating;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface TablePickSelectedItemsProps {
|
|
3
|
+
count: number;
|
|
4
|
+
selectedItem: (selectedRows: string[]) => void;
|
|
5
|
+
selectedRows: string[];
|
|
6
|
+
}
|
|
7
|
+
declare const TablePickSelectedItems: React.FC<TablePickSelectedItemsProps>;
|
|
8
|
+
export default TablePickSelectedItems;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import './Tooltip.scss';
|
|
3
|
+
type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
4
|
+
interface TooltipProps {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
text: string;
|
|
7
|
+
position?: TooltipPosition;
|
|
8
|
+
className?: string;
|
|
9
|
+
offset?: number;
|
|
10
|
+
}
|
|
11
|
+
declare const Tooltip: React.FC<TooltipProps>;
|
|
12
|
+
export { Tooltip };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Tooltip } from './Tooltip';
|
|
@@ -3,3 +3,15 @@ export * from './Card';
|
|
|
3
3
|
export * from './Spinner';
|
|
4
4
|
export * from './Dropdown';
|
|
5
5
|
export * from './Badge';
|
|
6
|
+
export * from './Tab';
|
|
7
|
+
export * from './Alert';
|
|
8
|
+
export * from './Callout';
|
|
9
|
+
export * from './Tooltip';
|
|
10
|
+
export * from './Popover';
|
|
11
|
+
export * from './Modal';
|
|
12
|
+
export * from './Accordion';
|
|
13
|
+
export * from './Progress';
|
|
14
|
+
export * from './Form';
|
|
15
|
+
export * from './Loading';
|
|
16
|
+
export * from './List';
|
|
17
|
+
export * from './Table';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Hook untuk mengatur posisi dropdown agar muncul di atas jika dropdown terlalu bawah
|
|
4
|
+
* @param ref Ref object dari element dropdown
|
|
5
|
+
* @returns boolean
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const dropdownRef = useRef<HTMLDivElement>(null);
|
|
9
|
+
* const showAbove = useAutoPosition(dropdownRef);
|
|
10
|
+
*
|
|
11
|
+
* <div ref={dropdownRef} className={showAbove ? 'show-above' : ''}>
|
|
12
|
+
*/
|
|
13
|
+
declare const useAutoPosition: (ref: RefObject<HTMLElement>) => boolean;
|
|
14
|
+
export default useAutoPosition;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook untuk mengatur date picker
|
|
3
|
+
* @param initialDate Tanggal awal
|
|
4
|
+
* @returns Fungsi-fungsi untuk mengatur date picker
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const { selectedDate, handlePrevMonth, handleNextMonth, handleDateClick, isSelectedDate } = useDatePicker(new Date());
|
|
8
|
+
*/
|
|
9
|
+
declare const useDatePicker: (initialDate: Date) => {
|
|
10
|
+
selectedDate: Date;
|
|
11
|
+
handlePrevMonth: () => void;
|
|
12
|
+
handleNextMonth: () => void;
|
|
13
|
+
handleDateClick: (day: string, month: string, year: string, onSelect: (date: string) => void) => void;
|
|
14
|
+
isSelectedDate: (day: string, month: string, year: string) => boolean;
|
|
15
|
+
};
|
|
16
|
+
export default useDatePicker;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Hook untuk mengatur posisi dropdown dan scroll ke opsi yang dipilih
|
|
4
|
+
* @param isOpen Status dropdown terbuka atau tidak
|
|
5
|
+
* @param dropdownOptionsRef Ref dari elemen dropdown
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const dropdownOptionsRef = useRef<HTMLDivElement>(null);
|
|
9
|
+
* useDropdownPositionAndScroll(isOpen, dropdownOptionsRef);
|
|
10
|
+
*/
|
|
11
|
+
declare const useDropdownPositionAndScroll: (isOpen: boolean, dropdownOptionsRef: RefObject<HTMLElement>) => void;
|
|
12
|
+
export default useDropdownPositionAndScroll;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { FieldValues, Path, RegisterOptions, UseFormRegister } from 'react-hook-form';
|
|
2
|
+
/**
|
|
3
|
+
* Hook untuk validasi form menggunakan react-hook-form
|
|
4
|
+
* @param register Fungsi register dari react-hook-form
|
|
5
|
+
* @param fields Daftar field dan aturan validasi
|
|
6
|
+
* @returns Fungsi untuk mengatur input field
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const { register, handleSubmit } = useForm();
|
|
10
|
+
* const inputs = useFormValidation(register, {
|
|
11
|
+
* username: { required: true, minLength: 5 },
|
|
12
|
+
* password: { required: true },
|
|
13
|
+
* });
|
|
14
|
+
*/
|
|
15
|
+
type FieldRules<T extends FieldValues> = RegisterOptions & {
|
|
16
|
+
required?: boolean | {
|
|
17
|
+
value: boolean;
|
|
18
|
+
message: string;
|
|
19
|
+
};
|
|
20
|
+
minLength?: number | {
|
|
21
|
+
value: number;
|
|
22
|
+
message: string;
|
|
23
|
+
};
|
|
24
|
+
maxLength?: number | {
|
|
25
|
+
value: number;
|
|
26
|
+
message: string;
|
|
27
|
+
};
|
|
28
|
+
validEmail?: boolean | {
|
|
29
|
+
value: boolean;
|
|
30
|
+
message: string;
|
|
31
|
+
};
|
|
32
|
+
phoneNumber?: boolean | {
|
|
33
|
+
value: boolean;
|
|
34
|
+
message: string;
|
|
35
|
+
};
|
|
36
|
+
passwordMatch?: boolean | {
|
|
37
|
+
value: boolean;
|
|
38
|
+
message: string;
|
|
39
|
+
};
|
|
40
|
+
validDate?: boolean | {
|
|
41
|
+
value: boolean;
|
|
42
|
+
message: string;
|
|
43
|
+
};
|
|
44
|
+
beforeDate?: boolean | {
|
|
45
|
+
value: boolean;
|
|
46
|
+
message: string;
|
|
47
|
+
};
|
|
48
|
+
afterDate?: boolean | {
|
|
49
|
+
value: boolean;
|
|
50
|
+
message: string;
|
|
51
|
+
};
|
|
52
|
+
maxFileSize?: number | {
|
|
53
|
+
value: number;
|
|
54
|
+
message: string;
|
|
55
|
+
};
|
|
56
|
+
nameInput?: boolean | {
|
|
57
|
+
value: boolean;
|
|
58
|
+
message: string;
|
|
59
|
+
};
|
|
60
|
+
mask?: string;
|
|
61
|
+
trim?: boolean;
|
|
62
|
+
setValueAs?: (value: string) => T[keyof T];
|
|
63
|
+
};
|
|
64
|
+
declare const useFormValidation: <T extends FieldValues>(register: UseFormRegister<T>, fields: {
|
|
65
|
+
[key: string]: FieldRules<T>;
|
|
66
|
+
}) => (name: Path<T>) => import("react-hook-form").UseFormRegisterReturn<Path<T>>;
|
|
67
|
+
export default useFormValidation;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const BASE_URL: any;
|
|
2
|
+
export declare const API_BASE_URL: any;
|
|
3
|
+
export declare const SMART_URL: any;
|
|
4
|
+
export declare const IMAGE_URL: any;
|
|
5
|
+
export declare const MAX_FILE_SIZE: any;
|
|
6
|
+
export declare const isDevelopment: boolean;
|
|
7
|
+
export declare const isProduction: boolean;
|
|
8
|
+
export declare const GENERAL_SETTING = "general_setting";
|
|
9
|
+
export declare const IMAGE_SETTING = "image_setting";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
declare const formatTime: (timeString: string, format?: string, timeZone?: string) => string;
|
|
3
|
+
declare const dateToDb: (date: Date) => string;
|
|
4
|
+
declare const dbToDate: (date: string) => Date;
|
|
5
|
+
declare const dateToId: (date: unknown) => string;
|
|
6
|
+
interface DayOption {
|
|
7
|
+
value: string;
|
|
8
|
+
label: string;
|
|
9
|
+
}
|
|
10
|
+
declare const generateCalendarDayOptions: (month: number, year: number) => DayOption[];
|
|
11
|
+
declare const generateDayOptions: (month: number, year: number) => DayOption[];
|
|
12
|
+
interface MonthOption {
|
|
13
|
+
value: string;
|
|
14
|
+
label: string;
|
|
15
|
+
}
|
|
16
|
+
declare const generateMonthOptions: (locale?: string) => MonthOption[];
|
|
17
|
+
interface YearOption {
|
|
18
|
+
value: string;
|
|
19
|
+
label: string;
|
|
20
|
+
}
|
|
21
|
+
declare const generateYearOptions: () => YearOption[];
|
|
22
|
+
declare const isValidDate: (date: string) => boolean;
|
|
23
|
+
declare const dayNames: string[];
|
|
24
|
+
declare function timeElapsedString(timestamp: DateTime, full: boolean): string;
|
|
25
|
+
export { formatTime, dateToDb, dbToDate, dateToId, generateCalendarDayOptions, generateDayOptions, generateMonthOptions, generateYearOptions, dayNames, isValidDate, timeElapsedString, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const handleApiError: (error: unknown) => string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fungsi untuk menerapkan masking pada nilai input
|
|
3
|
+
* @param value Nilai asli dari input
|
|
4
|
+
* @param mask Pola masking, gunakan '9' untuk angka, 'X' untuk huruf/karakter bebas, dan simbol untuk karakter tetap
|
|
5
|
+
* @returns Nilai input yang telah dimask
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* applyMask("123456789", "999-999-999") // "123-456-789"
|
|
9
|
+
* applyMask("abcd1234", "XXXX-9999") // "abcd-1234"
|
|
10
|
+
* applyMask("12022023", "dd.mm.yyyy") // "12.02.2023"
|
|
11
|
+
*/
|
|
12
|
+
export declare const applyMask: (value: string, mask: string) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Fungsi untuk menghapus masking pada nilai input
|
|
15
|
+
* @param maskedValue Nilai input yang telah dimask
|
|
16
|
+
* @returns Nilai asli tanpa mask
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* removeMask("123-456-789") // "123456789"
|
|
20
|
+
*/
|
|
21
|
+
export declare const removeMask: (maskedValue: string) => string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const getPhotoThumb: (id: string, photo: string | undefined) => JSX.Element;
|
|
2
|
+
export declare const getFileThumb: (fileType: string, height?: number, width?: number, className?: string) => JSX.Element;
|
|
3
|
+
export declare const formatFileSize: (bytes: number) => string;
|
|
4
|
+
export declare const getFileMimeType: (fileName: string) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatNumber: (value: number, decimals?: number) => string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "pesona-ui",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"description": "PesonaUI - A reusable React component library built with TypeScript and SCSS",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"react",
|
|
@@ -52,6 +52,14 @@
|
|
|
52
52
|
},
|
|
53
53
|
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"
|
|
55
|
+
"@types/luxon": "^3.6.2",
|
|
56
|
+
"html-react-parser": "^5.2.3",
|
|
57
|
+
"luxon": "^3.6.1",
|
|
58
|
+
"react-hook-form": "^7.56.1",
|
|
59
|
+
"react-icons": "^5.5.0",
|
|
60
|
+
"react-toastify": "^11.0.5",
|
|
61
|
+
"rollup-plugin-sass": "^1.14.0",
|
|
62
|
+
"slugify": "^1.6.6",
|
|
63
|
+
"uuid": "^11.1.0"
|
|
56
64
|
}
|
|
57
65
|
}
|