pixelize-design-library 2.1.7 → 2.1.9
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/bundle-analysis.html +4950 -0
- package/dist/index.cjs.js +271 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +271 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/types/Assets/defaultLogo.d.ts +2 -0
- package/dist/{Components → types/Components}/Accordion/Accordion.d.ts +1 -2
- package/dist/{Components → types/Components}/AlertDialog/AlertDialog.d.ts +1 -2
- package/dist/{Components → types/Components}/Apexcharts/ApexBarChart/ApexBarChart.d.ts +1 -2
- package/dist/{Components → types/Components}/Apexcharts/ApexPieChart/ApexPieChart.d.ts +1 -2
- package/dist/{Components → types/Components}/Breadcrumbs/Breadcrumbs.d.ts +1 -2
- package/dist/{Components → types/Components}/Button/Button.d.ts +1 -1
- package/dist/{Components → types/Components}/ButtonGroupIcon/ButtonGroupIcon.d.ts +1 -2
- package/dist/{Components → types/Components}/Buttons/Buttons.d.ts +1 -2
- package/dist/{Components → types/Components}/Card/Card.d.ts +1 -2
- package/dist/{Components → types/Components}/Checkbox/Checkbox.d.ts +1 -2
- package/dist/{Components → types/Components}/Common/ErrorComponent.d.ts +1 -2
- package/dist/{Components → types/Components}/Common/ErrorMessage.d.ts +1 -2
- package/dist/{Components → types/Components}/Common/FormLabel.d.ts +1 -2
- package/dist/{Components → types/Components}/Common/HelperText.d.ts +1 -2
- package/dist/{Components → types/Components}/Common/Label.d.ts +1 -2
- package/dist/{Components → types/Components}/ContactForm/ContactForm.d.ts +1 -2
- package/dist/{Components → types/Components}/DatePicker/DatePicker.d.ts +1 -2
- package/dist/types/Components/Divider/Divider.d.ts +2 -0
- package/dist/{Components → types/Components}/Drawer/Drawer.d.ts +1 -1
- package/dist/{Components → types/Components}/Editor/Editor.d.ts +1 -2
- package/dist/{Components → types/Components}/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts +1 -2
- package/dist/{Components → types/Components}/Form/FormWrapper.d.ts +1 -1
- package/dist/{Components → types/Components}/Header/HeaderActions.d.ts +1 -2
- package/dist/{Components → types/Components}/Header/components/desktopMenu.d.ts +1 -2
- package/dist/{Components → types/Components}/Header/components/mobileMenu.d.ts +1 -2
- package/dist/{Components → types/Components}/Input/Input/Input.d.ts +1 -1
- package/dist/{Components → types/Components}/InputTextArea/InputTextArea.d.ts +1 -2
- package/dist/{Components → types/Components}/KanbanBoard/AccountCard.d.ts +1 -2
- package/dist/{Components → types/Components}/KanbanBoard/AccountRow.d.ts +1 -2
- package/dist/{Components → types/Components}/KanbanBoard/KanbanActions/KanbanActions.d.ts +1 -2
- package/dist/{Components → types/Components}/KanbanBoard/KanbanBoard.d.ts +1 -2
- package/dist/{Components → types/Components}/Loading/Loading.d.ts +1 -2
- package/dist/{Components → types/Components}/Modal/Modal.d.ts +1 -1
- package/dist/{Components → types/Components}/MultiSelect/MultiSelect.d.ts +1 -2
- package/dist/{Components → types/Components}/NavigationBar/NavigationBar.d.ts +1 -2
- package/dist/{Components → types/Components}/NoteTextArea/NoteTextArea.d.ts +1 -2
- package/dist/{Components → types/Components}/NumberInput/NumberInput.d.ts +1 -2
- package/dist/{Components → types/Components}/PinInput/PinInput.d.ts +1 -2
- package/dist/{Components → types/Components}/PinInputs/PinInputs.d.ts +1 -2
- package/dist/{Components → types/Components}/ProductCard/ProductCard.d.ts +1 -2
- package/dist/{Components → types/Components}/ProductCard/ProductLabel.d.ts +1 -2
- package/dist/{Components → types/Components}/ProductCard/ProductPrice.d.ts +1 -2
- package/dist/{Components → types/Components}/ProductCard/ProductReview.d.ts +1 -2
- package/dist/{Components → types/Components}/ProductCard/ProductTags.d.ts +1 -2
- package/dist/{Components → types/Components}/ProfileCard/ProfileCard.d.ts +1 -1
- package/dist/{Components → types/Components}/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +1 -2
- package/dist/{Components → types/Components}/ProgressBar/ProgressBar.d.ts +1 -2
- package/dist/{Components → types/Components}/RadioButton/RadioButton.d.ts +2 -3
- package/dist/{Components → types/Components}/Search/Search.d.ts +1 -2
- package/dist/{Components → types/Components}/SearchSelect/SearchSelect.d.ts +1 -2
- package/dist/{Components → types/Components}/SearchSelect/SelectTruncatedLabel.d.ts +1 -2
- package/dist/{Components → types/Components}/Select/Select.d.ts +1 -2
- package/dist/{Components → types/Components}/SelectSearch/SelectSearch.d.ts +1 -2
- package/dist/{Components → types/Components}/SideBar/SideBar.d.ts +1 -2
- package/dist/{Components → types/Components}/Skeletons/Skeletons.d.ts +1 -2
- package/dist/{Components → types/Components}/Switch/Switch.d.ts +1 -2
- package/dist/{Components → types/Components}/Table/Components/HeaderActions.d.ts +1 -2
- package/dist/{Components → types/Components}/Table/Components/Pagination.d.ts +1 -1
- package/dist/types/Components/Table/Components/TableActions.d.ts +2 -0
- package/dist/{Components → types/Components}/Table/Components/TableBody.d.ts +1 -2
- package/dist/{Components → types/Components}/Table/Components/TableFilters.d.ts +1 -1
- package/dist/{Components → types/Components}/Table/Components/TableHeader.d.ts +1 -1
- package/dist/{Components → types/Components}/Table/Components/TableLoading.d.ts +2 -3
- package/dist/{Components → types/Components}/Table/Table.d.ts +1 -2
- package/dist/{Components → types/Components}/Table/TableSettings/ManageColumns.d.ts +1 -1
- package/dist/{Components → types/Components}/Table/TableSettings/TableSettings.d.ts +1 -2
- package/dist/types/Components/Table/TableToDo.d.ts +1 -0
- package/dist/types/Components/Timeline/Timeline.d.ts +3 -0
- package/dist/{Components → types/Components}/Toaster/Toaster.d.ts +1 -2
- package/dist/{Components → types/Components}/ToolTip/ToolTip.d.ts +1 -2
- package/dist/types/Components/Trail/TrailWorks.d.ts +2 -0
- package/dist/types/Layout.d.ts +2 -0
- package/dist/types/Pages/TInput.d.ts +2 -0
- package/dist/types/Pages/accordion.d.ts +2 -0
- package/dist/types/Pages/alertdialog.d.ts +2 -0
- package/dist/types/Pages/button.d.ts +2 -0
- package/dist/types/Pages/card.d.ts +2 -0
- package/dist/types/Pages/chart.d.ts +2 -0
- package/dist/types/Pages/checkbox.d.ts +2 -0
- package/dist/types/Pages/contactForm.d.ts +2 -0
- package/dist/types/Pages/datePick.d.ts +2 -0
- package/dist/types/Pages/drawer.d.ts +2 -0
- package/dist/types/Pages/dropdown.d.ts +2 -0
- package/dist/types/Pages/editor.d.ts +2 -0
- package/dist/types/Pages/fileUpload.d.ts +1 -0
- package/dist/types/Pages/input.d.ts +2 -0
- package/dist/types/Pages/kanbanboard.d.ts +2 -0
- package/dist/types/Pages/modal.d.ts +2 -0
- package/dist/types/Pages/multiSelect.d.ts +2 -0
- package/dist/types/Pages/noteArea.d.ts +2 -0
- package/dist/types/Pages/numberInput.d.ts +2 -0
- package/dist/types/Pages/pinInputs.d.ts +2 -0
- package/dist/types/Pages/productCaard.d.ts +2 -0
- package/dist/types/Pages/progressbar.d.ts +2 -0
- package/dist/types/Pages/radioButton.d.ts +2 -0
- package/dist/types/Pages/search.d.ts +2 -0
- package/dist/types/Pages/searchSelect.d.ts +2 -0
- package/dist/types/Pages/select.d.ts +2 -0
- package/dist/types/Pages/selectSearch.d.ts +2 -0
- package/dist/types/Pages/skeleton.d.ts +2 -0
- package/dist/types/Pages/switch.d.ts +2 -0
- package/dist/types/Pages/table.d.ts +1 -0
- package/dist/types/Pages/textArea.d.ts +2 -0
- package/dist/types/Pages/timeline.d.ts +2 -0
- package/dist/types/Pages/tooltip.d.ts +2 -0
- package/dist/types/Pages/toster.d.ts +2 -0
- package/dist/types/Pages/verifyEmail.d.ts +2 -0
- package/dist/{withTheme.d.ts → types/withTheme.d.ts} +1 -1
- package/package.json +19 -10
- package/dist/App.d.ts +0 -4
- package/dist/App.js +0 -128
- package/dist/Assets/defaultLogo.d.ts +0 -3
- package/dist/Assets/defaultLogo.js +0 -15
- package/dist/Assets/defaultLogo.tsx +0 -31
- package/dist/Components/Accordion/Accordion.js +0 -40
- package/dist/Components/Accordion/AccordionProps.js +0 -2
- package/dist/Components/AlertDialog/AlertDialog.js +0 -20
- package/dist/Components/AlertDialog/AlertDialogProps.js +0 -2
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.js +0 -64
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.stories.js +0 -6
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChartProps.js +0 -2
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +0 -29
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.stories.js +0 -6
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChartProps.js +0 -2
- package/dist/Components/Breadcrumbs/Breadcrumbs.js +0 -17
- package/dist/Components/Breadcrumbs/Breadcrumbs.stories.js +0 -6
- package/dist/Components/Breadcrumbs/BreadcrumbsProps.js +0 -2
- package/dist/Components/Button/Button.js +0 -32
- package/dist/Components/Button/Button.stories.js +0 -6
- package/dist/Components/Button/Button.styles.js +0 -112
- package/dist/Components/Button/ButtonProps.js +0 -2
- package/dist/Components/ButtonGroupIcon/ButtonGoupIconProps.js +0 -2
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +0 -86
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.stories.js +0 -6
- package/dist/Components/Buttons/Buttons.js +0 -11
- package/dist/Components/Buttons/ButtonsProps.js +0 -2
- package/dist/Components/Card/Card.js +0 -12
- package/dist/Components/Card/CardProps.js +0 -2
- package/dist/Components/Checkbox/Checkbox.js +0 -20
- package/dist/Components/Checkbox/Checkbox.stories.js +0 -7
- package/dist/Components/Checkbox/Checkbox.styles.js +0 -54
- package/dist/Components/Checkbox/CheckboxProps.js +0 -2
- package/dist/Components/Common/ErrorComponent.js +0 -16
- package/dist/Components/Common/ErrorMessage.js +0 -17
- package/dist/Components/Common/FormLabel.js +0 -22
- package/dist/Components/Common/HelperText.js +0 -14
- package/dist/Components/Common/Label.js +0 -13
- package/dist/Components/ContactForm/ContactForm.js +0 -215
- package/dist/Components/ContactForm/ContactFormProps.js +0 -2
- package/dist/Components/DatePicker/DatePicker.js +0 -235
- package/dist/Components/DatePicker/DatePickerProps.js +0 -2
- package/dist/Components/DatePicker/TimePicker.js +0 -101
- package/dist/Components/Divider/Divider.d.ts +0 -3
- package/dist/Components/Divider/Divider.js +0 -14
- package/dist/Components/Drawer/Drawer.js +0 -40
- package/dist/Components/Drawer/DrawerProps.js +0 -2
- package/dist/Components/Dropdown/DropDown.js +0 -97
- package/dist/Components/Dropdown/DropdownProps.js +0 -2
- package/dist/Components/Editor/Editor.js +0 -12
- package/dist/Components/Editor/EditorProps.js +0 -2
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +0 -44
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.js +0 -2
- package/dist/Components/FileUpload/FileUpload.js +0 -156
- package/dist/Components/FileUpload/FileUploadProps.js +0 -2
- package/dist/Components/FileUpload/constants.js +0 -28
- package/dist/Components/Form/FormWrapper.js +0 -19
- package/dist/Components/Header/Header.js +0 -57
- package/dist/Components/Header/HeaderActions.js +0 -37
- package/dist/Components/Header/HeaderProps.js +0 -2
- package/dist/Components/Header/components/desktopMenu.js +0 -33
- package/dist/Components/Header/components/mobileMenu.js +0 -32
- package/dist/Components/Input/Input/Input.js +0 -45
- package/dist/Components/Input/Input/InputProps.js +0 -2
- package/dist/Components/Input/TextInput.js +0 -68
- package/dist/Components/Input/TextInput.stories.js +0 -8
- package/dist/Components/Input/TextInput.styles.js +0 -84
- package/dist/Components/Input/TextInputProps.js +0 -2
- package/dist/Components/InputTextArea/InputTextArea.js +0 -16
- package/dist/Components/InputTextArea/InputTextArea.stories.js +0 -7
- package/dist/Components/InputTextArea/InputTextAreaProps.js +0 -2
- package/dist/Components/KanbanBoard/AccountCard.js +0 -74
- package/dist/Components/KanbanBoard/AccountRow.js +0 -20
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +0 -26
- package/dist/Components/KanbanBoard/KanbanBoard.js +0 -120
- package/dist/Components/KanbanBoard/KanbanBoardProps.js +0 -2
- package/dist/Components/Loading/Loading.js +0 -36
- package/dist/Components/Loading/Loading.stories.js +0 -7
- package/dist/Components/Loading/LoadingProps.js +0 -2
- package/dist/Components/Modal/Modal.js +0 -50
- package/dist/Components/Modal/Modal.stories.js +0 -7
- package/dist/Components/Modal/ModalProps.js +0 -2
- package/dist/Components/MultiSelect/MultiSelect.js +0 -115
- package/dist/Components/MultiSelect/MultiSelectProps.js +0 -2
- package/dist/Components/NavigationBar/NavBar.stories.js +0 -3
- package/dist/Components/NavigationBar/NavigationBar.js +0 -50
- package/dist/Components/NavigationBar/NavigationBarProps.js +0 -2
- package/dist/Components/NoteTextArea/NoteTextArea.js +0 -274
- package/dist/Components/NoteTextArea/NoteTextAreaProps.js +0 -2
- package/dist/Components/NumberInput/NumberInput.js +0 -16
- package/dist/Components/NumberInput/NumberInput.stories.js +0 -5
- package/dist/Components/NumberInput/NumberInputProps.js +0 -2
- package/dist/Components/PinInput/PinInput.js +0 -15
- package/dist/Components/PinInput/PinInput.stories.js +0 -6
- package/dist/Components/PinInput/PinInputProps.js +0 -2
- package/dist/Components/PinInputs/PinInputs.js +0 -71
- package/dist/Components/PinInputs/PinInputsProps.js +0 -2
- package/dist/Components/ProductCard/ProductCard.js +0 -51
- package/dist/Components/ProductCard/ProductCardProps.js +0 -2
- package/dist/Components/ProductCard/ProductLabel.js +0 -14
- package/dist/Components/ProductCard/ProductPrice.js +0 -88
- package/dist/Components/ProductCard/ProductReview.js +0 -23
- package/dist/Components/ProductCard/ProductTags.js +0 -30
- package/dist/Components/ProfileCard/ProfileCard.js +0 -57
- package/dist/Components/ProfileCard/ProfileCard.stories.js +0 -6
- package/dist/Components/ProfileCard/ProfileCardProps.js +0 -2
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +0 -94
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.stories.js +0 -6
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewerProps.js +0 -2
- package/dist/Components/ProgressBar/ProgressBar.js +0 -12
- package/dist/Components/ProgressBar/ProgressBar.stories.js +0 -7
- package/dist/Components/ProgressBar/ProgressBarProps.js +0 -2
- package/dist/Components/RadioButton/RadioButton.js +0 -31
- package/dist/Components/RadioButton/RadioButton.stories.js +0 -7
- package/dist/Components/RadioButton/RadioButtonProps.js +0 -2
- package/dist/Components/Reorder/Reorder.js +0 -50
- package/dist/Components/Reorder/ReorderProps.js +0 -2
- package/dist/Components/Search/Search.js +0 -66
- package/dist/Components/Search/SearchProps.js +0 -2
- package/dist/Components/SearchSelect/SearchSelect.js +0 -237
- package/dist/Components/SearchSelect/SearchSelectProps.js +0 -2
- package/dist/Components/SearchSelect/SelectTruncatedLabel.js +0 -45
- package/dist/Components/Select/Select.js +0 -54
- package/dist/Components/Select/Select.stories.js +0 -8
- package/dist/Components/Select/Select.styles.js +0 -98
- package/dist/Components/Select/SelectProps.js +0 -2
- package/dist/Components/SelectSearch/SelectSearch.js +0 -239
- package/dist/Components/SelectSearch/SelectSearchProps.js +0 -2
- package/dist/Components/SideBar/SideBar.js +0 -55
- package/dist/Components/SideBar/SideBarProps.js +0 -2
- package/dist/Components/SideBar/Sidebar.stories.js +0 -7
- package/dist/Components/SideBar/components/MenuItemBox.js +0 -116
- package/dist/Components/SideBar/components/MenuItems.js +0 -13
- package/dist/Components/SideBar/components/MenuPopoverContent.js +0 -37
- package/dist/Components/SideBar/components/TextTruncation.js +0 -77
- package/dist/Components/Skeletons/Skeleton.stories.js +0 -7
- package/dist/Components/Skeletons/SkeletonProps.js +0 -2
- package/dist/Components/Skeletons/Skeletons.js +0 -15
- package/dist/Components/Switch/Switch.js +0 -39
- package/dist/Components/Switch/SwitchProps.js +0 -2
- package/dist/Components/Table/Components/HeaderActions.js +0 -45
- package/dist/Components/Table/Components/Pagination.js +0 -32
- package/dist/Components/Table/Components/TableActions.d.ts +0 -3
- package/dist/Components/Table/Components/TableActions.js +0 -28
- package/dist/Components/Table/Components/TableBody.js +0 -140
- package/dist/Components/Table/Components/TableFilters.js +0 -59
- package/dist/Components/Table/Components/TableHeader.js +0 -147
- package/dist/Components/Table/Components/TableLoading.js +0 -41
- package/dist/Components/Table/Components/TableSearch.js +0 -60
- package/dist/Components/Table/Components/useDebounce.js +0 -28
- package/dist/Components/Table/Components/useTable.js +0 -168
- package/dist/Components/Table/Table.css +0 -16
- package/dist/Components/Table/Table.js +0 -129
- package/dist/Components/Table/Table.stories.js +0 -9
- package/dist/Components/Table/TableProps.js +0 -2
- package/dist/Components/Table/TableSettings/ManageColumns.js +0 -107
- package/dist/Components/Table/TableSettings/TableSettings.js +0 -73
- package/dist/Components/Table/TableToDo.d.ts +0 -2
- package/dist/Components/Table/TableToDo.js +0 -291
- package/dist/Components/Tag/Tag.js +0 -21
- package/dist/Components/Tag/Tag.styles.js +0 -63
- package/dist/Components/Timeline/Timeline.d.ts +0 -4
- package/dist/Components/Timeline/Timeline.js +0 -166
- package/dist/Components/Timeline/TimelineProps.js +0 -2
- package/dist/Components/Toaster/Toaster.js +0 -86
- package/dist/Components/Toaster/Toaster.stories.js +0 -8
- package/dist/Components/Toaster/ToasterProps.js +0 -2
- package/dist/Components/Toggle/TableToggle.js +0 -60
- package/dist/Components/Toggle/TableToggleProps.js +0 -2
- package/dist/Components/ToolTip/ToolTip.js +0 -12
- package/dist/Components/ToolTip/ToolTip.stories.js +0 -7
- package/dist/Components/ToolTip/ToolTipProps.js +0 -2
- package/dist/Components/Trail/EditableCell.js +0 -71
- package/dist/Components/Trail/SelectAllCheckbox.js +0 -13
- package/dist/Components/Trail/TrailWorks.d.ts +0 -3
- package/dist/Components/Trail/TrailWorks.js +0 -262
- package/dist/Components/Trail/data.js +0 -29
- package/dist/Constants/Sidebar.js +0 -42
- package/dist/Hooks/usePreferences.js +0 -73
- package/dist/Layout.d.ts +0 -3
- package/dist/Layout.js +0 -254
- package/dist/Pages/TInput.d.ts +0 -3
- package/dist/Pages/TInput.js +0 -46
- package/dist/Pages/accordion.d.ts +0 -3
- package/dist/Pages/accordion.js +0 -42
- package/dist/Pages/alertdialog.d.ts +0 -3
- package/dist/Pages/alertdialog.js +0 -44
- package/dist/Pages/button.d.ts +0 -3
- package/dist/Pages/button.js +0 -29
- package/dist/Pages/card.d.ts +0 -3
- package/dist/Pages/card.js +0 -48
- package/dist/Pages/chart.d.ts +0 -3
- package/dist/Pages/chart.js +0 -28
- package/dist/Pages/checkbox.d.ts +0 -3
- package/dist/Pages/checkbox.js +0 -12
- package/dist/Pages/contactForm.d.ts +0 -3
- package/dist/Pages/contactForm.js +0 -16
- package/dist/Pages/datePick.d.ts +0 -3
- package/dist/Pages/datePick.js +0 -70
- package/dist/Pages/drawer.d.ts +0 -3
- package/dist/Pages/drawer.js +0 -48
- package/dist/Pages/dropdown.d.ts +0 -3
- package/dist/Pages/dropdown.js +0 -24
- package/dist/Pages/editor.d.ts +0 -3
- package/dist/Pages/editor.js +0 -14
- package/dist/Pages/fileUpload.d.ts +0 -2
- package/dist/Pages/fileUpload.js +0 -65
- package/dist/Pages/input.d.ts +0 -3
- package/dist/Pages/input.js +0 -42
- package/dist/Pages/kanbanboard.d.ts +0 -3
- package/dist/Pages/kanbanboard.js +0 -115
- package/dist/Pages/modal.d.ts +0 -3
- package/dist/Pages/modal.js +0 -55
- package/dist/Pages/multiSelect.d.ts +0 -3
- package/dist/Pages/multiSelect.js +0 -45
- package/dist/Pages/noteArea.d.ts +0 -3
- package/dist/Pages/noteArea.js +0 -49
- package/dist/Pages/numberInput.d.ts +0 -3
- package/dist/Pages/numberInput.js +0 -39
- package/dist/Pages/photoViewer.d.ts +0 -3
- package/dist/Pages/photoViewer.js +0 -12
- package/dist/Pages/pinInputs.d.ts +0 -3
- package/dist/Pages/pinInputs.js +0 -12
- package/dist/Pages/productCaard.d.ts +0 -3
- package/dist/Pages/productCaard.js +0 -32
- package/dist/Pages/progressbar.d.ts +0 -3
- package/dist/Pages/progressbar.js +0 -12
- package/dist/Pages/radioButton.d.ts +0 -3
- package/dist/Pages/radioButton.js +0 -44
- package/dist/Pages/search.d.ts +0 -3
- package/dist/Pages/search.js +0 -44
- package/dist/Pages/searchSelect.d.ts +0 -3
- package/dist/Pages/searchSelect.js +0 -151
- package/dist/Pages/select.d.ts +0 -3
- package/dist/Pages/select.js +0 -43
- package/dist/Pages/selectSearch.d.ts +0 -3
- package/dist/Pages/selectSearch.js +0 -93
- package/dist/Pages/skeleton.d.ts +0 -3
- package/dist/Pages/skeleton.js +0 -22
- package/dist/Pages/switch.d.ts +0 -3
- package/dist/Pages/switch.js +0 -40
- package/dist/Pages/table.d.ts +0 -2
- package/dist/Pages/table.js +0 -144
- package/dist/Pages/textArea.d.ts +0 -3
- package/dist/Pages/textArea.js +0 -12
- package/dist/Pages/timeline.d.ts +0 -3
- package/dist/Pages/timeline.js +0 -74
- package/dist/Pages/tooltip.d.ts +0 -3
- package/dist/Pages/tooltip.js +0 -12
- package/dist/Pages/toster.d.ts +0 -3
- package/dist/Pages/toster.js +0 -63
- package/dist/Pages/verifyEmail.d.ts +0 -3
- package/dist/Pages/verifyEmail.js +0 -18
- package/dist/Theme/Dark/theme.js +0 -283
- package/dist/Theme/Default/palette.js +0 -372
- package/dist/Theme/Default/theme.js +0 -23
- package/dist/Theme/Meadow/palette.js +0 -356
- package/dist/Theme/Meadow/theme.js +0 -23
- package/dist/Theme/Radiant/palette.js +0 -356
- package/dist/Theme/Radiant/theme.js +0 -23
- package/dist/Theme/Skyline/palette.js +0 -356
- package/dist/Theme/Skyline/theme.js +0 -23
- package/dist/Theme/common.js +0 -101
- package/dist/Theme/componentStyles.js +0 -15
- package/dist/Theme/fonts.js +0 -41
- package/dist/Theme/index.js +0 -20
- package/dist/Theme/space.js +0 -35
- package/dist/Theme/theme.js +0 -9
- package/dist/Theme/themeProps.js +0 -3
- package/dist/Theme/useCustomTheme.js +0 -8
- package/dist/Utils/table.js +0 -168
- package/dist/bootstrap.d.ts +0 -1
- package/dist/bootstrap.js +0 -14
- package/dist/global.css +0 -225
- package/dist/index.css +0 -3
- package/dist/index.js +0 -146
- package/dist/withTheme.js +0 -28
- /package/dist/{Components → types/Components}/Accordion/AccordionProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/AlertDialog/AlertDialogProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Apexcharts/ApexBarChart/ApexBarChart.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Apexcharts/ApexBarChart/ApexBarChartProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Apexcharts/ApexPieChart/ApexPieChart.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Apexcharts/ApexPieChart/ApexPieChartProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Breadcrumbs/Breadcrumbs.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Breadcrumbs/BreadcrumbsProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Button/Button.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Button/Button.styles.d.ts +0 -0
- /package/dist/{Components → types/Components}/Button/ButtonProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ButtonGroupIcon/ButtonGoupIconProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ButtonGroupIcon/ButtonGroupIcon.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Buttons/ButtonsProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Card/CardProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Checkbox/Checkbox.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Checkbox/Checkbox.styles.d.ts +0 -0
- /package/dist/{Components → types/Components}/Checkbox/CheckboxProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ContactForm/ContactFormProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/DatePicker/DatePickerProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/DatePicker/TimePicker.d.ts +0 -0
- /package/dist/{Components → types/Components}/Drawer/DrawerProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Dropdown/DropDown.d.ts +0 -0
- /package/dist/{Components → types/Components}/Dropdown/DropdownProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Editor/EditorProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/FileUpload/FileUpload.d.ts +0 -0
- /package/dist/{Components → types/Components}/FileUpload/FileUploadProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/FileUpload/constants.d.ts +0 -0
- /package/dist/{Components → types/Components}/Header/Header.d.ts +0 -0
- /package/dist/{Components → types/Components}/Header/HeaderProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Input/Input/InputProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Input/TextInput.d.ts +0 -0
- /package/dist/{Components → types/Components}/Input/TextInput.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Input/TextInput.styles.d.ts +0 -0
- /package/dist/{Components → types/Components}/Input/TextInputProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/InputTextArea/InputTextArea.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/InputTextArea/InputTextAreaProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/KanbanBoard/KanbanBoardProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Loading/Loading.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Loading/LoadingProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Modal/Modal.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Modal/ModalProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/MultiSelect/MultiSelectProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/NavigationBar/NavBar.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/NavigationBar/NavigationBarProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/NoteTextArea/NoteTextAreaProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/NumberInput/NumberInput.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/NumberInput/NumberInputProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/PinInput/PinInput.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/PinInput/PinInputProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/PinInputs/PinInputsProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ProductCard/ProductCardProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ProfileCard/ProfileCard.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/ProfileCard/ProfileCardProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ProfilePhotoViewer/ProfilePhotoViewer.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/ProfilePhotoViewer/ProfilePhotoViewerProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ProgressBar/ProgressBar.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/ProgressBar/ProgressBarProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/RadioButton/RadioButton.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/RadioButton/RadioButtonProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Reorder/Reorder.d.ts +0 -0
- /package/dist/{Components → types/Components}/Reorder/ReorderProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Search/SearchProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/SearchSelect/SearchSelectProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Select/Select.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Select/Select.styles.d.ts +0 -0
- /package/dist/{Components → types/Components}/Select/SelectProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/SelectSearch/SelectSearchProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/SideBar/SideBarProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/SideBar/Sidebar.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/SideBar/components/MenuItemBox.d.ts +0 -0
- /package/dist/{Components → types/Components}/SideBar/components/MenuItems.d.ts +0 -0
- /package/dist/{Components → types/Components}/SideBar/components/MenuPopoverContent.d.ts +0 -0
- /package/dist/{Components → types/Components}/SideBar/components/TextTruncation.d.ts +0 -0
- /package/dist/{Components → types/Components}/Skeletons/Skeleton.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Skeletons/SkeletonProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Switch/SwitchProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Table/Components/TableSearch.d.ts +0 -0
- /package/dist/{Components → types/Components}/Table/Components/useDebounce.d.ts +0 -0
- /package/dist/{Components → types/Components}/Table/Components/useTable.d.ts +0 -0
- /package/dist/{Components → types/Components}/Table/Table.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Table/TableProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Tag/Tag.d.ts +0 -0
- /package/dist/{Components → types/Components}/Tag/Tag.styles.d.ts +0 -0
- /package/dist/{Components → types/Components}/Timeline/TimelineProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Toaster/Toaster.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/Toaster/ToasterProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Toggle/TableToggle.d.ts +0 -0
- /package/dist/{Components → types/Components}/Toggle/TableToggleProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/ToolTip/ToolTip.stories.d.ts +0 -0
- /package/dist/{Components → types/Components}/ToolTip/ToolTipProps.d.ts +0 -0
- /package/dist/{Components → types/Components}/Trail/EditableCell.d.ts +0 -0
- /package/dist/{Components → types/Components}/Trail/SelectAllCheckbox.d.ts +0 -0
- /package/dist/{Components → types/Components}/Trail/data.d.ts +0 -0
- /package/dist/{Constants → types/Constants}/Sidebar.d.ts +0 -0
- /package/dist/{Hooks → types/Hooks}/usePreferences.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Dark/theme.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Default/palette.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Default/theme.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Meadow/palette.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Meadow/theme.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Radiant/palette.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Radiant/theme.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Skyline/palette.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/Skyline/theme.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/common.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/componentStyles.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/fonts.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/index.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/space.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/theme.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/themeProps.d.ts +0 -0
- /package/dist/{Theme → types/Theme}/useCustomTheme.d.ts +0 -0
- /package/dist/{Utils → types/Utils}/table.d.ts +0 -0
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/Components/Accordion/Accordion.tsx","../src/Components/AlertDialog/AlertDialog.tsx","../src/Components/Apexcharts/ApexBarChart/ApexBarChart.tsx","../src/Components/Apexcharts/ApexPieChart/ApexPieChart.tsx","../src/Components/Breadcrumbs/Breadcrumbs.tsx","../src/Components/Button/Button.tsx","../src/Theme/useCustomTheme.ts","../src/Components/ButtonGroupIcon/ButtonGroupIcon.tsx","../src/Components/Card/Card.tsx","../src/Components/Common/FormLabel.tsx","../src/Components/Common/ErrorMessage.tsx","../src/Components/Common/HelperText.tsx","../src/Components/Checkbox/Checkbox.tsx","../src/Components/Input/TextInput.tsx","../src/Components/ContactForm/ContactForm.tsx","../node_modules/date-fns/toDate.mjs","../node_modules/date-fns/constructFrom.mjs","../node_modules/date-fns/addDays.mjs","../node_modules/date-fns/addMonths.mjs","../node_modules/date-fns/constants.mjs","../node_modules/date-fns/_lib/defaultOptions.mjs","../node_modules/date-fns/startOfWeek.mjs","../node_modules/date-fns/startOfISOWeek.mjs","../node_modules/date-fns/getISOWeekYear.mjs","../node_modules/date-fns/startOfDay.mjs","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../node_modules/date-fns/isSameDay.mjs","../node_modules/date-fns/isValid.mjs","../node_modules/date-fns/isDate.mjs","../node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../node_modules/date-fns/locale/en-US.mjs","../node_modules/date-fns/locale/en-US/_lib/localize.mjs","../node_modules/date-fns/locale/en-US/_lib/match.mjs","../node_modules/date-fns/getDayOfYear.mjs","../node_modules/date-fns/differenceInCalendarDays.mjs","../node_modules/date-fns/startOfYear.mjs","../node_modules/date-fns/getISOWeek.mjs","../node_modules/date-fns/startOfISOWeekYear.mjs","../node_modules/date-fns/getWeekYear.mjs","../node_modules/date-fns/getWeek.mjs","../node_modules/date-fns/startOfWeekYear.mjs","../node_modules/date-fns/_lib/addLeadingZeros.mjs","../node_modules/date-fns/_lib/format/lightFormatters.mjs","../node_modules/date-fns/_lib/format/formatters.mjs","../node_modules/date-fns/_lib/format/longFormatters.mjs","../node_modules/date-fns/_lib/protectedTokens.mjs","../node_modules/date-fns/format.mjs","../node_modules/date-fns/isAfter.mjs","../node_modules/date-fns/isBefore.mjs","../src/Components/DatePicker/TimePicker.tsx","../src/Components/DatePicker/DatePicker.tsx","../node_modules/date-fns/subMonths.mjs","../node_modules/date-fns/startOfMonth.mjs","../node_modules/date-fns/endOfMonth.mjs","../node_modules/date-fns/endOfWeek.mjs","../src/Components/Drawer/Drawer.tsx","../src/Components/Dropdown/DropDown.tsx","../src/Components/Editor/Editor.tsx","../src/Components/FileUpload/constants.ts","../src/Components/Modal/Modal.tsx","../src/Components/FileUpload/FileUpload.tsx","../src/Components/Form/FormWrapper.tsx","../src/Components/Header/components/desktopMenu.tsx","../src/Components/Header/components/mobileMenu.tsx","../src/Components/Header/Header.tsx","../src/Components/Select/Select.tsx","../src/Components/Divider/Divider.tsx","../src/Components/Header/HeaderActions.tsx","../src/Components/InputTextArea/InputTextArea.tsx","../src/Components/KanbanBoard/AccountRow.tsx","../src/Components/KanbanBoard/AccountCard.tsx","../src/Components/KanbanBoard/KanbanBoard.tsx","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/cache/dist/emotion-cache.esm.js","../node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-is/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@emotion/utils/dist/emotion-utils.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.esm.js","../node_modules/@emotion/react/dist/emotion-element-d59e098f.esm.js","../node_modules/@emotion/react/dist/emotion-react.esm.js","../src/Components/Loading/Loading.tsx","../src/Components/MultiSelect/MultiSelect.tsx","../src/Components/NavigationBar/NavigationBar.tsx","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.esm.js","../src/Components/NoteTextArea/NoteTextArea.tsx","../src/Components/NumberInput/NumberInput.tsx","../src/Components/PinInput/PinInput.tsx","../src/Components/ProfileCard/ProfileCard.tsx","../src/Components/ProfilePhotoViewer/ProfilePhotoViewer.tsx","../src/Components/ProgressBar/ProgressBar.tsx","../src/Components/RadioButton/RadioButton.tsx","../src/Components/Reorder/Reorder.tsx","../src/Components/Search/Search.tsx","../src/Components/Tag/Tag.tsx","../src/Components/ToolTip/ToolTip.tsx","../src/Components/SearchSelect/SelectTruncatedLabel.tsx","../src/Components/SearchSelect/SearchSelect.tsx","../src/Components/SelectSearch/SelectSearch.tsx","../src/Constants/Sidebar.ts","../src/Components/SideBar/components/TextTruncation.tsx","../src/Components/SideBar/components/MenuPopoverContent.tsx","../src/Components/SideBar/components/MenuItemBox.tsx","../src/Components/SideBar/components/MenuItems.tsx","../src/Assets/defaultLogo.tsx","../src/Components/SideBar/SideBar.tsx","../src/Components/Skeletons/Skeletons.tsx","../src/Components/Switch/Switch.tsx","../src/Utils/table.ts","../src/Components/Table/Components/Pagination.tsx","../src/Components/Table/Components/TableFilters.tsx","../src/Components/Table/Components/TableHeader.tsx","../src/Components/Table/Components/TableLoading.tsx","../src/Components/Table/Components/TableActions.tsx","../src/Components/Table/Components/TableBody.tsx","../src/Components/Table/Components/useTable.ts","../src/Hooks/usePreferences.ts","../src/Components/Table/TableSettings/ManageColumns.tsx","../src/Components/Table/TableSettings/TableSettings.tsx","../src/Components/Table/Components/HeaderActions.tsx","../src/Components/Table/Components/TableSearch.tsx","../src/Components/Table/Table.tsx","../src/Components/Timeline/Timeline.tsx","../src/Components/Toaster/Toaster.tsx","../src/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.tsx","../src/Components/Toggle/TableToggle.tsx","../src/Theme/Default/palette.ts","../src/Theme/space.ts","../src/Theme/common.ts","../src/Theme/fonts.ts","../src/Theme/componentStyles.ts","../src/Components/Checkbox/Checkbox.styles.ts","../src/Components/Input/TextInput.styles.ts","../src/Components/Button/Button.styles.ts","../src/Components/Select/Select.styles.ts","../src/Components/Tag/Tag.styles.tsx","../src/Theme/Default/theme.ts","../src/Theme/Meadow/palette.ts","../src/Theme/Meadow/theme.ts","../src/Theme/Radiant/palette.ts","../src/Theme/Radiant/theme.ts","../src/Theme/index.ts","../src/Theme/Skyline/theme.ts","../src/Theme/Skyline/palette.ts","../src/withTheme.tsx","../src/Components/ProductCard/ProductTags.tsx","../src/Components/ProductCard/ProductReview.tsx","../src/Components/ProductCard/ProductPrice.tsx","../src/Components/ProductCard/ProductLabel.tsx","../src/Components/ProductCard/ProductCard.tsx"],"sourcesContent":["import React from \"react\";\nimport { AccordionProps } from \"./AccordionProps\";\nimport {\n Accordion as ChakraAccordian,\n AccordionItem,\n AccordionButton,\n AccordionPanel,\n} from \"@chakra-ui/react\";\n\nconst Accordion = ({\n allowMultiple,\n allowToggle,\n index,\n onChange,\n reduceMotion,\n items,\n ...rest\n}: AccordionProps) => {\n return (\n <ChakraAccordian\n allowMultiple={allowMultiple}\n allowToggle={allowToggle}\n index={index}\n onChange={onChange}\n reduceMotion={reduceMotion}\n {...rest}\n >\n {items.map((item, idx) => (\n <AccordionItem\n key={idx}\n {...item.itemProps}\n sx={item.customStyles?.itemStyle}\n >\n <h2>\n <AccordionButton\n {...item.buttonProps}\n sx={{\n ...item.customStyles?.buttonStyle,\n '&:hover': {\n ...item.customStyles?.hoverbuttonStyle,\n },\n }}\n >\n {item.header}\n </AccordionButton>\n </h2>\n <AccordionPanel\n {...item.panelProps}\n sx={item.customStyles?.panelStyle}\n >\n {item.content}\n </AccordionPanel>\n </AccordionItem>\n ))}\n </ChakraAccordian>\n );\n};\n\nexport default Accordion;","import {\n AlertDialog as ChakraAlertDialog,\n AlertDialogBody,\n AlertDialogCloseButton,\n AlertDialogContent,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n Button,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { AlertDialogsProps } from \"./AlertDialogProps\";\n\nconst AlertDialog = ({\n isOpen,\n onClose,\n leastDestructiveRef,\n content,\n title,\n confirmButtonText = \"Yes\",\n cancelButtonText = \"No\",\n isConfirmLoading,\n onConfirm,\n ContentStyle,\n headerStyle,\n bodyStyle,\n footerStyle,\n closeButtonStyle,\n button1Style,\n button2Style,\n isCentered,\n confirmButtonColor = \"red\",\n key,\n}: AlertDialogsProps) => {\n return (\n <ChakraAlertDialog\n motionPreset=\"slideInBottom\"\n leastDestructiveRef={leastDestructiveRef}\n onClose={onClose}\n isOpen={isOpen}\n isCentered={isCentered}\n key={key}\n >\n <AlertDialogOverlay />\n <AlertDialogContent sx={ContentStyle}>\n <AlertDialogHeader sx={headerStyle}>{title}</AlertDialogHeader>\n <AlertDialogCloseButton sx={closeButtonStyle} />\n <AlertDialogBody sx={bodyStyle}>{content}</AlertDialogBody>\n <AlertDialogFooter sx={footerStyle}>\n <Button ref={null} onClick={onClose} size={\"sm\"} sx={button1Style}>\n {cancelButtonText}\n </Button>\n <Button\n colorScheme={confirmButtonColor}\n onClick={onConfirm}\n isLoading={isConfirmLoading}\n ml={3}\n size=\"sm\"\n sx={button2Style}\n >\n {confirmButtonText}\n </Button>\n </AlertDialogFooter>\n </AlertDialogContent>\n </ChakraAlertDialog>\n );\n};\n\nexport default AlertDialog;\n","import React from \"react\";\nimport ReactApexChart from \"react-apexcharts\";\nimport { ApexBarChartProps } from \"./ApexBarChartProps\";\nimport { ApexOptions } from \"../ApexPieChart/ApexPieChartProps\";\n\nexport default function ApexBarChart({\n data,\n labels,\n title,\n titlePosition,\n height = 400,\n width = 500,\n barColor = [\"#3182ce\"],\n xAxisStyle = {\n color: \"#ffffff\",\n },\n yAxisStyle = {\n color: \"#ffffff\",\n },\n titleStyle = {\n color: \"#3182ce\",\n fontSize: \"16px\",\n fontWeight: 600,\n fontFamily: \"Arial\",\n },\n}: ApexBarChartProps) {\n const options: ApexOptions = {\n chart: {\n type: \"bar\",\n height: 350,\n },\n plotOptions: {\n bar: {\n borderRadius: 4,\n horizontal: false,\n },\n },\n dataLabels: {\n enabled: false,\n style: {\n fontSize: \"12px\",\n colors: [\"#00E396\"], //data label color\n },\n },\n xaxis: {\n categories: labels,\n labels: {\n style: xAxisStyle,\n },\n },\n yaxis: {\n labels: {\n style: yAxisStyle,\n },\n },\n title: {\n text: title,\n align: titlePosition,\n style: titleStyle,\n },\n colors: barColor, //bar color\n };\n const series = [\n {\n name: \"Data\",\n data: data,\n },\n ];\n return (\n <div>\n <ReactApexChart\n options={options}\n series={series}\n type=\"bar\"\n height={height}\n width={width}\n />\n </div>\n );\n}\n","import React from \"react\";\nimport ReactApexChart from \"react-apexcharts\";\nimport { ApexOptions, ApexPieChartProps } from \"./ApexPieChartProps\";\n\nexport default function ApexPieChart({\n data,\n labels,\n title,\n titlePosition,\n height = 400,\n width = 500,\n chartColor,\n titleStyle = {\n color: \"#3182ce\",\n },\n}: ApexPieChartProps) {\n const options: ApexOptions = {\n chart: {\n type: \"pie\",\n height: 350,\n },\n labels: labels,\n title: {\n text: title,\n align: titlePosition,\n style: titleStyle,\n },\n colors: chartColor,\n };\n const series = data;\n return (\n <div>\n <ReactApexChart\n options={options}\n series={series}\n type=\"pie\"\n height={height}\n width={width}\n />\n </div>\n );\n}\n","import React from \"react\";\nimport { Breadcrumb, BreadcrumbItem, BreadcrumbLink, useTheme } from \"@chakra-ui/react\";\nimport { BreadcrumbsProps } from \"./BreadcrumbsProps\";\n\nexport default function Breadcrumbs({\n spacing,\n separator,\n fontWeight,\n fontSize,\n isCurrentPage,\n handleClick,\n items,\n}: BreadcrumbsProps) {\n const theme = useTheme();\n return (\n <Breadcrumb\n spacing={spacing}\n separator={separator}\n fontWeight={fontWeight}\n fontSize={fontSize}\n fontFamily={theme.fonts.body}\n >\n {items.map((item, index) => (\n <BreadcrumbItem\n key={index}\n isCurrentPage={isCurrentPage && index === items.length - 1}\n >\n <BreadcrumbLink\n href={item.path}\n sx={{ \"&:hover, &:active\": { textDecoration: \"none\" } }}\n onClick={(event) => {\n event.preventDefault();\n handleClick(item.path);\n }}\n >\n {item.label}\n </BreadcrumbLink>\n </BreadcrumbItem>\n ))}\n </Breadcrumb>\n );\n}\n","import React, { memo } from \"react\";\nimport { Button as ChakraButton } from \"@chakra-ui/react\";\nimport { ButtonProps } from \"./ButtonProps\";\n\nfunction Button({\n label,\n children,\n onClick,\n opacity,\n variant = \"solid\",\n leftIcon,\n rightIcon,\n size,\n isDisabled = false,\n isLoading = false,\n loadingText = \"Loading\",\n type,\n width,\n sx,\n colorScheme,\n ref,\n border,\n borderRadius,\n}: ButtonProps) {\n return (\n <ChakraButton\n type={type}\n onClick={onClick}\n width={width || \"fit-content\"}\n variant={variant}\n size={size}\n isLoading={isLoading}\n isDisabled={isDisabled}\n loadingText={loadingText}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n ref={ref}\n colorScheme={colorScheme}\n sx={sx}\n opacity={opacity}\n border={border}\n borderRadius={borderRadius}\n >\n {children ?? label}\n </ChakraButton>\n );\n}\n\nexport default memo(Button);\n","import { useTheme as useChakraTheme } from \"@chakra-ui/react\";\nimport { CustomThemeProps } from \"./themeProps\";\n\nexport const useCustomTheme = (): CustomThemeProps => {\n return useChakraTheme() as CustomThemeProps;\n};","import React, { useState } from \"react\";\nimport {\n Box,\n Button,\n ButtonGroup,\n IconButton,\n Menu,\n MenuButton,\n MenuItem,\n MenuList,\n} from \"@chakra-ui/react\";\nimport { ButtonGroupIconProps } from \"./ButtonGoupIconProps\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nexport default function ButtonGroupIcon({\n leftIcon,\n rightIcon,\n onLeftIconClick,\n onRightIconClick,\n buttonText,\n onButtonClick,\n onButtongroupClick,\n size,\n variant,\n color,\n buttonGroupStyle,\n buttonGroupLeftIconStyle,\n buttonGroupRightIconStyle,\n buttonStyle,\n onBlurLeftIcon,\n onBlurRightIcon,\n dropdownOptions, // New prop for dropdown options\n onDropdownOptionClick, // New prop to handle option clicks\n rightIconDropdown,\n menulistStyle,\n menuItemStyle,\n isLoading,\n divider = true,\n}: ButtonGroupIconProps) {\n const theme = useCustomTheme();\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const handleRightIconClick = () => {\n setIsDropdownOpen(!isDropdownOpen);\n if (onRightIconClick) {\n onRightIconClick();\n }\n };\n\n const handleMenuClick = (\n event: React.MouseEvent,\n option: { label: string; id: string | number }\n ) => {\n setIsDropdownOpen(false);\n // console.log(\"Option clicked:\", option,event)\n if (onDropdownOptionClick) {\n onDropdownOptionClick(event, option);\n }\n };\n\n return (\n <ButtonGroup\n size={size}\n isAttached\n variant={variant}\n onClick={onButtongroupClick}\n colorScheme={color}\n style={buttonGroupStyle}\n >\n {leftIcon && (\n <IconButton\n aria-label=\"Left icon button\"\n icon={leftIcon}\n onClick={onLeftIconClick}\n onBlur={onBlurLeftIcon}\n style={buttonGroupLeftIconStyle}\n sx={{\n backgroundColor: theme.colors.primary[500],\n \"&:hover\": {\n backgroundColor: theme.colors.primary[400],\n },\n }}\n />\n )}\n <Button\n onClick={onButtonClick}\n style={buttonStyle}\n isLoading={isLoading}\n sx={{\n backgroundColor: theme.colors.primary[500],\n \"&:hover\": {\n backgroundColor: theme.colors.primary[400],\n },\n }}\n borderLeft={`1px solid ${theme.colors?.gray[300]}`}\n borderRight={`1px solid ${theme.colors?.gray[300]}`}\n >\n {buttonText}\n </Button>\n\n {rightIcon && rightIconDropdown ? (\n <Menu isOpen={isDropdownOpen} onClose={() => setIsDropdownOpen(false)}>\n <MenuButton\n as={IconButton}\n aria-label=\"Right icon button\"\n icon={rightIcon}\n onClick={handleRightIconClick}\n onBlur={onBlurRightIcon}\n style={buttonGroupRightIconStyle}\n sx={{\n backgroundColor: theme.colors.primary[500],\n \"&:hover\": {\n backgroundColor: theme.colors.primary[400],\n },\n }}\n />\n <Box sx={{ zIndex: 99 }}>\n <MenuList style={menulistStyle}>\n {dropdownOptions?.map((option, index) => (\n <MenuItem\n key={index}\n onClick={(event) => handleMenuClick(event, option)}\n style={menuItemStyle}\n borderBottom={\n divider ? `1px solid ${theme.colors?.gray[300]}` : undefined\n }\n sx={{\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n }}\n >\n {option?.image}\n {option.label}\n </MenuItem>\n ))}\n </MenuList>\n </Box>\n </Menu>\n ) : (\n rightIcon && (\n <IconButton\n aria-label=\"Right icon button\"\n icon={rightIcon}\n onClick={onRightIconClick}\n onBlur={onBlurRightIcon}\n style={buttonGroupRightIconStyle}\n sx={{\n backgroundColor: theme.colors.primary[500],\n \"&:hover\": {\n backgroundColor: theme.colors.primary[400],\n },\n }}\n />\n )\n )}\n </ButtonGroup>\n );\n}\n","import React from \"react\";\nimport { Card as ChakraCard } from \"@chakra-ui/react\";\nimport { CardProps } from \"./CardProps\";\n\nexport default function Card({\n key,\n maxW,\n align,\n variant,\n direction,\n justify,\n children,\n size,\n color,\n overflow,\n sx,\n}: CardProps) {\n return (\n <ChakraCard\n key={key}\n maxW={maxW}\n align={align}\n variant={variant}\n direction={direction}\n justify={justify}\n size={size}\n overflow={overflow}\n colorScheme={color}\n p={4}\n sx={sx}\n >\n {children}\n </ChakraCard>\n );\n}\n","import React from \"react\";\nimport { FormLabel, Box, Tooltip, Icon } from \"@chakra-ui/react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { InfoIcon } from \"lucide-react\";\n\nexport const TextLabel = ({\n label,\n id,\n isRequired = false,\n isInformation = false,\n informationMessage = \"\",\n}: {\n label: string;\n id?: string;\n isInformation?: boolean;\n informationMessage?: string;\n isRequired?: boolean;\n}) => {\n const theme = useCustomTheme();\n\n return (\n <Box >\n <FormLabel\n htmlFor={id ?? label}\n color={theme.colors.gray[600]}\n fontWeight={400}\n fontSize=\"0.875rem\"\n >\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" gap=\"0.35rem\">\n {label}\n {isRequired && (<span style={{ color: theme.colors.semantic.error[500] }}>*</span>)}\n {isInformation && informationMessage && (\n <Tooltip\n label={informationMessage}\n hasArrow\n placement=\"top\"\n bg={theme.colors.gray[600]}\n color={theme.colors.white}\n fontSize=\"0.75rem\"\n >\n <Icon as={InfoIcon} color={theme.colors.gray[500]} boxSize={4} />\n </Tooltip>\n )}\n </Box>\n </FormLabel>\n </Box>\n );\n};\n","import React from \"react\";\nimport { Flex, Text, } from \"@chakra-ui/react\";\nimport { Info } from \"lucide-react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst ErrorMessage = ({ errorMessage }: { errorMessage?: string }) => {\n\n const theme = useCustomTheme();\n return (\n <Flex\n align=\"center\"\n color={theme.colors.red[500]}\n fontSize=\"0.875rem\"\n role=\"alert\"\n >\n <Info width={\"0.875rem\"} />\n <Text ml={\"0.188rem\"}>{errorMessage ?? \"Error\"}</Text>\n </Flex>\n );\n};\n\nexport default ErrorMessage;\n","import React from \"react\";\nimport { FormHelperText } from \"@chakra-ui/react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst HelperText = ({ helperText }: { helperText: string }) => {\n const theme = useCustomTheme();\n return (\n <FormHelperText mt={1} fontSize={14} color={theme.colors.gray[500]}>\n {helperText}\n </FormHelperText>\n );\n};\n\nexport default HelperText;\n","import React from \"react\";\nimport { Checkbox as ChakraCheckbox, FormControl } from \"@chakra-ui/react\";\nimport { CheckboxProps } from \"./CheckboxProps\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { TextLabel } from \"../Common/FormLabel\";\nimport ErrorMessage from \"../Common/ErrorMessage\";\nimport HelperText from \"../Common/HelperText\";\n\nexport default function CheckBox({\n label,\n spacing,\n isInvalid,\n color,\n iconColor,\n iconSize,\n isChecked,\n isIndeterminate,\n onChange,\n isDisabled,\n size,\n value,\n defaultChecked,\n sx,\n isRequired,\n error,\n errorMessage,\n isInformation,\n informationMessage,\n id,\n helperText,\n}: CheckboxProps) {\n const theme = useCustomTheme();\n return (\n <FormControl isInvalid={error}>\n <ChakraCheckbox\n spacing={spacing}\n isInvalid={isInvalid}\n isRequired={isRequired}\n colorScheme={color}\n iconColor={iconColor}\n iconSize={iconSize}\n isChecked={isChecked}\n isIndeterminate={isIndeterminate}\n onChange={onChange}\n isDisabled={isDisabled}\n size={size}\n value={value}\n defaultChecked={defaultChecked}\n borderColor={theme.colors.gray[500]}\n sx={sx}\n display={\"flex\"}\n alignItems={\"inherit\"}\n >\n {label && (\n <TextLabel\n label={label}\n id={id}\n isInformation={isInformation}\n informationMessage={informationMessage}\n isRequired={isRequired}\n />\n )}\n </ChakraCheckbox>\n {error && <ErrorMessage errorMessage={errorMessage} />}\n {helperText && !error && <HelperText helperText={helperText} />}\n </FormControl>\n );\n}\n","import React, { forwardRef } from \"react\";\nimport {\n FormControl,\n Input,\n InputGroup,\n InputLeftElement,\n InputRightElement,\n} from \"@chakra-ui/react\";\nimport { TextInputProps } from \"./TextInputProps\";\nimport { TextLabel } from \"../Common/FormLabel\";\nimport HelperText from \"../Common/HelperText\";\nimport ErrorMessage from \"../Common/ErrorMessage\";\n\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n type = \"text\",\n id,\n name,\n onChange,\n onBlur,\n onFocus,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n value,\n placeholder = \"Placeholder\",\n width = \"100%\",\n height = \"2.75rem\",\n error,\n errorMessage,\n helperText,\n onRightIconclick,\n inputRightIcon,\n inputLeftIcon,\n onLeftIconClick,\n inputGroupStyle,\n inputStyle,\n size = \"md\",\n isInformation = false,\n informationMessage,\n leftElementStyle,\n rightElementStyle,\n autoComplete,\n minW,\n maxW,\n ...props\n },\n ref\n ) => {\n return (\n <FormControl w={width} minW={minW} maxW={maxW}>\n {label && (\n <TextLabel\n label={label}\n id={id}\n isInformation={isInformation}\n informationMessage={informationMessage}\n isRequired={isRequired}\n />\n )}\n <InputGroup style={inputGroupStyle} height={height} >\n {inputLeftIcon && (\n <InputLeftElement\n onClick={onLeftIconClick}\n pointerEvents={onLeftIconClick ? \"auto\" : \"none\"}\n {...leftElementStyle}\n >\n {inputLeftIcon}\n </InputLeftElement>\n )}\n <Input\n type={type}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n value={value}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n id={id}\n name={name}\n size={size}\n height={height}\n isInvalid={error}\n ref={ref}\n autoComplete={autoComplete}\n {...inputStyle}\n {...props}\n\n />\n {inputRightIcon && (\n <InputRightElement\n onClick={onRightIconclick}\n pointerEvents={onRightIconclick ? \"auto\" : \"none\"}\n {...rightElementStyle}\n >\n {inputRightIcon}\n </InputRightElement>\n )}\n </InputGroup>\n {error && <ErrorMessage errorMessage={errorMessage} />}\n {helperText && !error && <HelperText helperText={helperText} />}\n </FormControl >\n );\n }\n);\n\nTextInput.displayName = \"TextInput\";\n\nexport default React.memo(TextInput);","import React, { useState } from \"react\";\nimport {\n Box,\n Button,\n Heading,\n Text,\n VStack,\n SimpleGrid,\n FormControl,\n FormErrorMessage,\n Textarea,\n Text as ChakraText,\n Alert,\n} from \"@chakra-ui/react\";\nimport TextInput from \"../Input/TextInput\";\nimport { ContactFormProps } from \"./ContactFormProps\";\nimport { CircleCheck, CircleX } from \"lucide-react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst ContactForm = ({\n apiKey,\n customFields,\n getCustomValues,\n isDisabled = false,\n organizationId,\n customerId,\n}: ContactFormProps) => {\n const { colors } = useCustomTheme();\n const [formData, setFormData] = useState<{\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n enquiry: string;\n }>({\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n phone: \"\",\n enquiry: \"\",\n });\n\n const [response, setResponse] = useState<{\n title: string;\n isSuccess: boolean;\n }>({\n title: \"\",\n isSuccess: false,\n });\n\n const [errors, setErrors] = useState<\n Partial<Record<keyof typeof formData, string>>\n >({});\n\n const handleChange = <T,>(field: keyof typeof formData, value: T) => {\n setFormData((prev) => ({ ...prev, [field]: value }));\n setErrors((prev) => ({ ...prev, [field]: \"\" }));\n };\n\n const validate = () => {\n const newErrors: typeof errors = {};\n\n if (!formData.firstName.trim())\n newErrors.firstName = \"First name is required\";\n\n // if (!formData.email.trim()) {\n // newErrors.email = \"Email is required\";\n // } else if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(formData.email)) {\n // newErrors.email = \"Invalid email format\";\n // }\n\n if (!formData.phone.trim()) {\n newErrors.phone = \"Phone is required\";\n } else if (!/^\\d{7,15}$/.test(formData.phone)) {\n newErrors.phone = \"Phone must be 7–15 digits\";\n }\n\n setErrors(newErrors);\n return Object.keys(newErrors).length === 0;\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n\n if (isDisabled) return;\n if (!validate()) return;\n\n if (!apiKey) {\n setResponse({\n title: \"API key missing\",\n isSuccess: false,\n });\n return;\n }\n\n const customValues = getCustomValues?.() ?? {};\n\n const payload = {\n name: formData?.firstName + \" \" + formData?.lastName,\n firstName: formData?.firstName,\n lastName: formData?.lastName,\n email: formData.email,\n phone: formData.phone,\n message: formData.enquiry,\n ...customValues,\n customerId,\n organizationId,\n };\n\n try {\n const response = await fetch(apiKey, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n });\n\n const result = await response.json();\n\n if (!response.ok) throw new Error(result.message || \"Submission failed\");\n\n // onSubmit(formData);\n setFormData({\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n phone: \"\",\n enquiry: \"\",\n });\n\n setResponse({\n title: \"Message Sent Successfully\",\n isSuccess: true,\n });\n } catch (error: any) {\n setResponse({\n title: \"Failed to send message\",\n isSuccess: false,\n });\n }\n };\n\n return (\n <Box\n maxW=\"lg\"\n mx=\"auto\"\n p={8}\n borderRadius=\"2xl\"\n boxShadow=\"lg\"\n bg={colors?.background?.[300]}\n >\n {response.title ? (\n <Alert\n status={response?.isSuccess ? \"success\" : \"error\"}\n fontWeight={\"bold\"}\n variant=\"solid\"\n mb={1}\n >\n {response?.isSuccess ? <CircleCheck /> : <CircleX />} {\" \"}\n {response.title}\n </Alert>\n ) : null}\n\n <Heading textAlign=\"center\" size=\"lg\" mb={2}>\n Contact Us\n </Heading>\n <Text textAlign=\"center\" mb={6} color=\"gray.500\">\n Fill in the form below to reach out to us.\n </Text>\n\n <Box as=\"form\" onSubmit={handleSubmit}>\n <VStack spacing={4}>\n <SimpleGrid columns={{ base: 1, md: 2 }} spacing={4} w=\"100%\">\n <FormControl isInvalid={!!errors.firstName} isRequired>\n <TextInput\n label=\"First Name\"\n placeholder=\"Enter first name\"\n value={formData.firstName}\n onChange={(e) => handleChange(\"firstName\", e.target.value)}\n isRequired\n />\n <FormErrorMessage>{errors.firstName}</FormErrorMessage>\n </FormControl>\n\n <FormControl>\n <TextInput\n label=\"Last Name\"\n placeholder=\"Enter last name\"\n value={formData.lastName}\n onChange={(e) => handleChange(\"lastName\", e.target.value)}\n />\n </FormControl>\n </SimpleGrid>\n\n <SimpleGrid columns={{ base: 1, md: 2 }} spacing={4} w=\"100%\">\n <FormControl isInvalid={!!errors.phone} isRequired>\n <TextInput\n label=\"Phone\"\n placeholder=\"Enter phone number\"\n value={formData.phone}\n onChange={(e) => handleChange(\"phone\", e.target.value)}\n isRequired\n />\n <FormErrorMessage>{errors.phone}</FormErrorMessage>\n </FormControl>\n <FormControl isInvalid={!!errors.email}>\n <TextInput\n label=\"Email\"\n placeholder=\"Enter email\"\n value={formData.email}\n onChange={(e) => handleChange(\"email\", e.target.value)}\n // isRequired\n />\n <FormErrorMessage>{errors.email}</FormErrorMessage>\n </FormControl>\n </SimpleGrid>\n\n {/* Custom fields from parent */}\n {customFields}\n\n {/* Enquiry */}\n <FormControl w=\"100%\">\n <ChakraText fontSize=\"sm\" mb={1}>\n Enquiry\n </ChakraText>\n <Textarea\n placeholder=\"Enter your enquiry\"\n rows={5}\n value={formData.enquiry}\n onChange={(e) => handleChange(\"enquiry\", e.target.value)}\n />\n </FormControl>\n\n <Button\n type=\"submit\"\n disabled={isDisabled}\n colorScheme=\"blue\"\n w=\"full\"\n mt={2}\n >\n Send Message\n </Button>\n </VStack>\n </Box>\n </Box>\n );\n};\n\nexport default ContactForm;\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n * return constructFrom(\n * date, // Use contrustor from the given date\n * date.getTime() // Use the date value to create a new date\n * )\n * }\n */\nexport function constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { startOfDay } from \"./startOfDay.mjs\";\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(dateLeft, dateRight) {\n const dateLeftStartOfDay = startOfDay(dateLeft);\n const dateRightStartOfDay = startOfDay(dateRight);\n\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return +_date < +_dateToCompare;\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","\nimport React, { useState, useEffect } from \"react\";\nimport { TimePickerProps } from \"./DatePickerProps\";\n\nconst TimePicker: React.FC<TimePickerProps> = ({ date, onChange, dateFormat }) => {\n const is12HourFormat = /(hh|h).*a/i.test(dateFormat);\n const [hour, setHour] = useState(date.getHours());\n const [minute, setMinute] = useState(date.getMinutes());\n const [ampm, setAmpm] = useState(is12HourFormat ? (date.getHours() >= 12 ? \"PM\" : \"AM\") : \"\");\n\n useEffect(() => {\n const newHour = date.getHours();\n setHour(newHour);\n setMinute(date.getMinutes());\n if (is12HourFormat) {\n setAmpm(newHour >= 12 ? \"PM\" : \"AM\");\n }\n }, [date, is12HourFormat]);\n\n const convertTo24Hour = (hr: number, meridiem: string) => {\n if (meridiem === \"AM\") return hr === 12 ? 0 : hr;\n return hr === 12 ? 12 : hr + 12;\n };\n\n const updateTime = (hrInput: number, min: number, meridiem?: string) => {\n const newHour = is12HourFormat ? convertTo24Hour(hrInput, meridiem || ampm) : hrInput;\n const newDate = new Date(date);\n newDate.setHours(newHour);\n newDate.setMinutes(min);\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n onChange(newDate);\n };\n\n const handleHourChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let hr = parseInt(e.target.value || \"1\", 10);\n if (is12HourFormat) {\n hr = Math.max(1, Math.min(12, hr));\n setHour(hr);\n updateTime(hr, minute, ampm);\n } else {\n hr = Math.max(0, Math.min(23, hr));\n setHour(hr);\n updateTime(hr, minute);\n }\n };\n\n const handleMinuteChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let min = parseInt(e.target.value || \"0\", 10);\n min = Math.max(0, Math.min(59, min));\n setMinute(min);\n updateTime(hour, min, ampm);\n };\n\n const handleAmpmToggle = () => {\n const newMeridiem = ampm === \"AM\" ? \"PM\" : \"AM\";\n const displayHr = hour % 12 === 0 ? 12 : hour % 12;\n const newHr = convertTo24Hour(displayHr, newMeridiem);\n setAmpm(newMeridiem);\n setHour(displayHr);\n updateTime(displayHr, minute, newMeridiem);\n };\n\n const displayHour = is12HourFormat ? (hour % 12 === 0 ? 12 : hour % 12) : hour;\n\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n fontSize: \"1.25rem\",\n marginTop: \"1rem\",\n }}\n >\n <input\n type=\"number\"\n value={displayHour}\n onChange={handleHourChange}\n min={is12HourFormat ? 1 : 0}\n max={is12HourFormat ? 12 : 23}\n style={{ width: \"3rem\", textAlign: \"center\" }}\n />\n :\n <input\n type=\"number\"\n value={minute.toString().padStart(2, \"0\")}\n onChange={handleMinuteChange}\n min={0}\n max={59}\n style={{ width: \"3rem\", textAlign: \"center\" }}\n />\n {is12HourFormat && (\n <button\n type=\"button\"\n onClick={handleAmpmToggle}\n style={{\n fontWeight: \"bold\",\n padding: \"0.25rem 0.5rem\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n }}\n >\n {ampm}\n </button>\n )}\n </div>\n );\n};\n\nexport default TimePicker;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport {\n Box,\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverBody,\n Grid,\n useDisclosure,\n} from \"@chakra-ui/react\";\nimport {\n format,\n isSameDay,\n isBefore,\n isAfter,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n endOfWeek,\n addDays,\n addMonths,\n subMonths,\n} from \"date-fns\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport Button from \"../Button/Button\";\nimport TextInput from \"../Input/TextInput\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { DatePickerProps, PickerType } from \"./DatePickerProps\";\nimport { TextLabel } from \"../Common/FormLabel\";\nimport TimePicker from \"./TimePicker\";\n\nconst inferPickerTypeFromFormat = (formatStr: string): PickerType => {\n const lower = formatStr.toLowerCase();\n const hasTime = lower.includes(\"hh\") || lower.includes(\"mm\") || lower.includes(\"ss\");\n const hasDate = lower.includes(\"d\") && lower.includes(\"m\") && lower.includes(\"y\");\n\n if (hasTime && hasDate) return \"datetime\";\n if (hasTime) return \"time\";\n return \"date\";\n};\n\nexport default function CustomDatePicker(props: DatePickerProps) {\n const {\n id,\n name,\n label,\n isRequired,\n isInformation,\n informationMessage,\n error,\n errorMessage,\n helperText,\n placeholderText = \"Select a date\",\n dateFormat = \"dd/MM/yyyy\",\n pickerType,\n minDate,\n maxDate,\n disableFutureDates,\n disablePastDates,\n isRange,\n autoComplete = \"off\",\n disabled,\n width = \"100%\",\n } = props;\n\n const theme = useCustomTheme();\n const { isOpen, onOpen, onClose } = useDisclosure();\n const resolvedPickerType = pickerType ?? inferPickerTypeFromFormat(dateFormat);\n const inputRef = useRef<HTMLInputElement>(null);\n const today = new Date();\n const showDate = resolvedPickerType === \"date\" || resolvedPickerType === \"datetime\";\n const showTime = resolvedPickerType === \"time\" || resolvedPickerType === \"datetime\";\n\n const selectedDate = !isRange ? (props as any).selectedDate as Date | null : null;\n const [currentMonth, setCurrentMonth] = useState<Date>(\n isRange ? new Date() : selectedDate ?? new Date()\n );\n const [rangeStart, setRangeStart] = useState<Date | null>(null);\n const [rangeEnd, setRangeEnd] = useState<Date | null>(null);\n const [selectingStart, setSelectingStart] = useState(true);\n const [tempDate, setTempDate] = useState<Date | null>(selectedDate ?? null);\n const [tempRangeStart, setTempRangeStart] = useState<Date | null>(rangeStart);\n const [tempRangeEnd, setTempRangeEnd] = useState<Date | null>(rangeEnd);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n const handleOpen = () => {\n if (!isRange && !selectedDate) {\n setTempDate(new Date());\n }\n onOpen();\n };\n\n useEffect(() => {\n if (!isRange) {\n if (selectedDate instanceof Date) {\n setTempDate(new Date(selectedDate));\n } else {\n setTempDate(null);\n }\n }\n }, [selectedDate, isRange]);\n\n const handleDaySelect = (day: Date) => {\n const updated = new Date(day);\n if (isRange) {\n if (selectingStart) {\n setTempRangeStart(updated);\n setTempRangeEnd(null);\n setSelectingStart(false);\n } else {\n const finalStart = tempRangeStart && updated < tempRangeStart ? updated : tempRangeStart;\n const finalEnd = tempRangeStart && updated < tempRangeStart ? tempRangeStart : updated;\n const safeStart = finalStart ?? updated;\n setTempRangeStart(safeStart);\n setTempRangeEnd(finalEnd);\n setSelectingStart(true);\n if (safeStart && finalEnd) {\n (props as any).onChange({ from: safeStart, to: finalEnd });\n }\n }\n } else {\n const updatedDate = tempDate\n ? new Date(\n updated.getFullYear(),\n updated.getMonth(),\n updated.getDate(),\n tempDate.getHours(),\n tempDate.getMinutes(),\n tempDate.getSeconds()\n )\n : updated;\n\n setTempDate(updatedDate);\n (props as any).onChange(updatedDate);\n }\n };\n\n const renderDays = () => {\n const monthStart = startOfMonth(currentMonth);\n const monthEnd = endOfMonth(currentMonth);\n const startDate = startOfWeek(monthStart);\n const endDate = endOfWeek(monthEnd);\n const rows = [];\n let day = startDate;\n\n while (day <= endDate) {\n const days = [];\n for (let i = 0; i < 7; i++) {\n const thisDay = day;\n const isInCurrentMonth = thisDay.getMonth() === currentMonth.getMonth();\n const isToday = isSameDay(thisDay, today);\n const isStart = isRange && tempRangeStart && isSameDay(thisDay, tempRangeStart);\n const isEnd = isRange && tempRangeEnd && isSameDay(thisDay, tempRangeEnd);\n const isInRange =\n isRange &&\n tempRangeStart &&\n tempRangeEnd &&\n isAfter(thisDay, tempRangeStart) &&\n isBefore(thisDay, tempRangeEnd);\n const isSelected = !isRange && tempDate && isSameDay(thisDay, tempDate);\n const disabled =\n !isInCurrentMonth ||\n (minDate && isBefore(thisDay, minDate)) ||\n (maxDate && isAfter(thisDay, maxDate)) ||\n (disablePastDates && isBefore(thisDay, today) && !isSameDay(thisDay, today)) ||\n (disableFutureDates && isAfter(thisDay, today) && !isSameDay(thisDay, today));\n\n days.push(\n <Button\n key={thisDay.toString()}\n size=\"sm\"\n variant={\n isStart || isEnd\n ? \"solid\"\n : isInRange\n ? \"outline\"\n : isSelected\n ? \"solid\"\n : \"ghost\"\n }\n colorScheme={\n isStart || isEnd || isInRange || isSelected ? \"primary\" : \"gray\"\n }\n opacity={isInCurrentMonth ? 1 : 0.4}\n onClick={() => !disabled && handleDaySelect(new Date(thisDay))}\n isDisabled={disabled}\n border={isToday ? `0.125rem solid ${theme.colors.primary[500]}` : undefined}\n borderRadius=\"md\"\n >\n {format(thisDay, \"d\")}\n </Button>\n );\n day = addDays(day, 1);\n }\n\n rows.push(\n <Grid key={day.toString()} templateColumns=\"repeat(7, 1fr)\" gap={1}>\n {days}\n </Grid>\n );\n }\n return rows;\n };\n\n const displayValue = isRange\n ? tempRangeStart && tempRangeEnd\n ? `${format(tempRangeStart, dateFormat)} - ${format(tempRangeEnd, dateFormat)}`\n : tempRangeStart\n ? `${format(tempRangeStart, dateFormat)} -`\n : \"\"\n : tempDate\n ? format(tempDate, dateFormat)\n : \"\";\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(event.target as Node) &&\n !inputRef.current?.contains(event.target as Node)\n ) {\n onClose();\n }\n };\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n } else {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen, onClose]);\n\n return (\n <Box width={width} position=\"relative\">\n {label && (\n <TextLabel\n label={label}\n isRequired={isRequired}\n isInformation={isInformation}\n informationMessage={informationMessage}\n />\n )}\n <Popover\n isLazy\n isOpen={isOpen}\n onClose={onClose}\n placement=\"bottom-start\"\n initialFocusRef={inputRef}\n closeOnBlur\n >\n <PopoverTrigger>\n <Box onClick={handleOpen}>\n <TextInput\n id={id}\n name={name}\n ref={inputRef}\n placeholder={placeholderText}\n value={displayValue}\n isReadOnly\n error={error}\n errorMessage={errorMessage}\n helperText={helperText}\n autoComplete={autoComplete}\n isDisabled={disabled}\n width={width}\n />\n </Box>\n </PopoverTrigger>\n <PopoverContent width=\"auto\" p={2} ref={popoverRef}>\n <PopoverBody>\n {showDate && (\n <>\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" mb={2}>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setCurrentMonth((prev) => subMonths(prev, 1))}>\n <ChevronLeftIcon />\n </Button>\n\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <select\n value={currentMonth.getMonth()}\n onChange={(e) => {\n const newMonth = parseInt(e.target.value, 10);\n setCurrentMonth((prev) => new Date(prev.getFullYear(), newMonth, 1));\n }}\n >\n {Array.from({ length: 12 }).map((_, i) => (\n <option key={i} value={i}>\n {format(new Date(2000, i, 1), \"MMMM\")}\n </option>\n ))}\n </select>\n\n <select\n value={currentMonth.getFullYear()}\n onChange={(e) => {\n const newYear = parseInt(e.target.value, 10);\n setCurrentMonth((prev) => new Date(newYear, prev.getMonth(), 1));\n }}\n >\n {Array.from({ length: 100 }).map((_, i) => {\n const year = new Date().getFullYear() - 50 + i;\n return (\n <option key={year} value={year}>\n {year}\n </option>\n );\n })}\n </select>\n </Box>\n\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setCurrentMonth((prev) => addMonths(prev, 1))}>\n <ChevronRightIcon />\n </Button>\n </Box>\n\n <Grid templateColumns=\"repeat(7, 1fr)\" gap={1} fontWeight=\"bold\" mb={1}>\n {[\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"].map((day) => (\n <Box textAlign=\"center\" key={day}>{day}</Box>\n ))}\n </Grid>\n\n {renderDays()}\n </>\n )}\n\n {!isRange && showTime && (\n <TimePicker\n date={tempDate ?? new Date()}\n dateFormat={dateFormat}\n onChange={(updatedDate) => {\n setTempDate(updatedDate);\n (props as any).onChange(updatedDate);\n }}\n />\n )}\n\n <Box display=\"flex\" justifyContent=\"space-between\" mt={3}>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n setTempDate(null);\n setTempRangeStart(null);\n setTempRangeEnd(null);\n setRangeStart(null);\n setRangeEnd(null);\n setSelectingStart(true);\n (props as any).onChange(null);\n onClose();\n }}\n >\n Clear\n </Button>\n <Button\n size=\"sm\"\n colorScheme=\"primary\"\n onClick={() => {\n if (isRange && tempRangeStart && tempRangeEnd) {\n setRangeStart(tempRangeStart);\n setRangeEnd(tempRangeEnd);\n (props as any).onChange({ from: tempRangeStart, to: tempRangeEnd });\n } else if (!isRange && tempDate) {\n (props as any).onChange(tempDate);\n }\n onClose();\n }}\n >\n OK\n </Button>\n </Box>\n </PopoverBody>\n </PopoverContent>\n </Popover>\n </Box>\n );\n}\n","import { addMonths } from \"./addMonths.mjs\";\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount) {\n return addMonths(date, -amount);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date) {\n const _date = toDate(date);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date) {\n const _date = toDate(date);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","import React, { ReactElement } from \"react\";\nimport { DrawerProps } from \"./DrawerProps\";\nimport {\n Drawer as ChakraDrawer,\n DrawerBody as ChakraDrawerBody,\n DrawerFooter as ChakraDrawerFooter,\n DrawerHeader as ChakraDrawerHeader,\n DrawerOverlay,\n DrawerContent,\n DrawerCloseButton,\n} from \"@chakra-ui/react\";\n\nexport const DrawerHeader: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <>{children}</>\n}\nexport const DrawerBody: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <>{children}</>\n}\nexport const DrawerFooter: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <>{children}</>\n}\n\nexport default function Drawer({\n isOpen,\n onClose,\n placement = \"right\",\n size = \"xl\",\n id,\n variant = \"solid\",\n children,\n}: DrawerProps) {\n\n const isReactElement = (child: React.ReactNode): child is ReactElement => {\n return child !== null && typeof child === \"object\" && \"type\" in child;\n };\n const header = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === DrawerHeader,\n );\n const body = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === DrawerBody,\n );\n const footer = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === DrawerFooter,\n );\n\n return (\n <ChakraDrawer\n isOpen={isOpen}\n placement={placement}\n onClose={onClose}\n size={size}\n variant={variant}\n id={id}\n >\n <DrawerOverlay />\n <DrawerContent>\n <DrawerCloseButton />\n {header && (\n <ChakraDrawerHeader borderBottomWidth=\"1px\">{header}</ChakraDrawerHeader>\n )}\n <ChakraDrawerBody>{body && body}</ChakraDrawerBody>\n {footer && <ChakraDrawerFooter borderTopWidth=\"1px\">{footer}</ChakraDrawerFooter>}\n </DrawerContent>\n </ChakraDrawer>\n );\n}\n","import React, { forwardRef, useEffect, useRef } from \"react\";\nimport {\n Box,\n Flex,\n Button,\n Icon,\n useDisclosure,\n List,\n ListItem,\n BoxProps,\n} from \"@chakra-ui/react\";\nimport { DropdownProps } from \"./DropdownProps\";\nimport { motion } from \"framer-motion\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { ChevronDown } from \"lucide-react\";\n\nconst MotionBox = motion(\n forwardRef<HTMLDivElement, BoxProps>((props, ref) => (\n <Box ref={ref} {...props} />\n ))\n);\n\nconst Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n dropDownButtonStyle,\n ButtonText,\n options,\n handleOptionSelect,\n dropdownType = \"button\",\n text,\n DropdownIcon,\n isVisibleIconShow = true,\n buttonProps,\n headStyle,\n ListStyle,\n ItemStyle,\n LabelStyle,\n ImageStyle,\n optionsSize = \"lg\",\n divider = false,\n },\n ref\n ) => {\n const theme = useCustomTheme();\n const { isOpen, onToggle, onClose } = useDisclosure();\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const handleListItemClick = (\n optionId: string | number,\n optionLabel: string\n ) => {\n onClose();\n handleOptionSelect(optionId, optionLabel);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n onClose();\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [dropdownRef, onClose]);\n\n const dropDownToggleOption = () => {\n const ButtonToggle = (\n <Button\n onClick={onToggle}\n style={{\n backgroundColor: theme.colors.primary[500],\n ...dropDownButtonStyle,\n }}\n rightIcon={\n isVisibleIconShow ? (\n <Icon\n as={ChevronDown}\n transform={isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\"}\n />\n ) : undefined\n }\n {...buttonProps}\n >\n {DropdownIcon} {ButtonText}\n </Button>\n );\n\n const TextToggle = (\n <Flex\n onClick={onToggle}\n align=\"center\"\n style={dropDownButtonStyle}\n cursor=\"pointer\"\n >\n {DropdownIcon} {text}\n {isVisibleIconShow && <Icon as={ChevronDown} />}\n </Flex>\n );\n\n return dropdownType === \"button\" ? ButtonToggle : TextToggle;\n };\n\n const DropdownContentRender = () => {\n return (\n <List\n bg={theme.colors?.backgroundColor?.light}\n border={`1px solid ${theme.colors?.gray[300]}`}\n borderRadius={theme.radii.md}\n shadow={theme.shadows.lg}\n py={2}\n mt={\"0.2rem\"}\n minWidth=\"200px\"\n style={ListStyle}\n >\n {options.map((option) => (\n <ListItem\n key={option.id}\n onClick={() => handleListItemClick(option.id, option.label)}\n p={optionsSize === \"sm\" ? 1 : 2}\n px={2}\n _hover={{\n bg: theme.colors.gray[100],\n color: theme.colors.blue[500],\n }}\n display=\"flex\"\n alignItems=\"center\"\n cursor=\"pointer\"\n style={ItemStyle}\n borderBottom={\n divider ? `1px solid ${theme.colors?.gray[300]}` : undefined\n }\n sx={{\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n }}\n >\n {option?.image && (\n <Icon\n as={option.image}\n boxSize={optionsSize === \"sm\" ? \"1.1rem\" : \"1.5rem\"}\n mr={2}\n style={ImageStyle}\n />\n )}\n <Box\n as=\"span\"\n fontSize={optionsSize === \"sm\" ? \"14px\" : \"16px\"}\n isTruncated\n style={LabelStyle}\n >\n {option.label}\n </Box>\n </ListItem>\n ))}\n </List>\n );\n };\n\n return (\n <Box ref={dropdownRef} position=\"relative\" display=\"inline-block\">\n {dropDownToggleOption()}\n {isOpen && (\n <MotionBox\n ref={ref}\n position=\"absolute\"\n zIndex={5}\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n style={headStyle}\n >\n {DropdownContentRender()}\n </MotionBox>\n )}\n </Box>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport default Dropdown;\n","import React from \"react\";\nimport JoditEditor from \"jodit-react\";\nimport { EditorProps } from \"./EditorProps\";\n\nexport default function Editor({\n value,\n config,\n editorRef,\n className,\n onChange,\n onBlur,\n}: EditorProps) {\n return (\n <JoditEditor\n config={config}\n value={value}\n ref={editorRef}\n className={className}\n onChange={onChange}\n onBlur={onBlur}\n />\n );\n}\n","import { MimeMap } from \"./FileUploadProps\";\n\nexport const mimeMap: MimeMap = {\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.png': 'image/png',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml',\n\n '.pdf': 'application/pdf',\n '.doc': 'application/msword',\n '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n '.xls': 'application/vnd.ms-excel',\n '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n '.ppt': 'application/vnd.ms-powerpoint',\n '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n '.txt': 'text/plain',\n\n '.mp4': 'video/mp4',\n '.mov': 'video/quicktime',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n\n '.zip': 'application/zip',\n '.rar': 'application/vnd.rar',\n '.7z': 'application/x-7z-compressed',\n};\n\nexport const toMB = (size: number) => `${(size / 1024).toFixed(2)} MB`;","import React, { ReactElement } from \"react\";\nimport {\n Modal as ChakraModal,\n ModalOverlay,\n ModalContent,\n ModalHeader as ChakraModalHeader,\n ModalCloseButton,\n ModalBody as ChakraModalBody,\n ModalFooter as ChakraModalFooter,\n Spinner,\n} from \"@chakra-ui/react\";\nimport { ChakraModelProps } from \"./ModalProps\";\n\nexport const ModalHeader: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <>{children}</>;\n};\nexport const ModalBody: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <>{children}</>;\n};\nexport const ModalFooter: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <>{children}</>;\n};\n\nexport default function Modal({\n size,\n isOpen = false,\n onClose,\n overlaybg = \"blackAlpha.300\",\n overlaybackdropFilter = \"blur(10px) hue-rotate(90deg)\",\n overlaybackdropInvert,\n overlaybackdropBlur,\n isCentered,\n finalFocusRef,\n blockScrollOnMount,\n initialFocusRef,\n closeOnOverlayClick,\n motionPreset,\n scrollBehavior,\n children,\n isLoading,\n}: ChakraModelProps) {\n if (!isOpen) return <></>;\n\n const isReactElement = (child: React.ReactNode): child is ReactElement => {\n return child !== null && typeof child === \"object\" && \"type\" in child;\n };\n const header = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === ModalHeader,\n );\n const body = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === ModalBody,\n );\n const footer = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === ModalFooter,\n );\n\n return (\n <ChakraModal\n isOpen={true}\n onClose={onClose}\n size={size}\n isCentered={isCentered}\n finalFocusRef={finalFocusRef}\n blockScrollOnMount={blockScrollOnMount}\n initialFocusRef={initialFocusRef}\n closeOnOverlayClick={closeOnOverlayClick}\n motionPreset={motionPreset}\n scrollBehavior={scrollBehavior}\n >\n <ModalOverlay\n bg={overlaybg}\n backdropFilter={overlaybackdropFilter}\n backdropInvert={overlaybackdropInvert}\n backdropBlur={overlaybackdropBlur}\n />\n <ModalContent>\n {isLoading ? (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100%\",\n width: \"100%\",\n padding: \"25%\",\n }}\n >\n <Spinner\n thickness=\"4px\"\n speed=\"0.65s\"\n emptyColor=\"gray.200\"\n color=\"blue.500\"\n size=\"xl\"\n />\n </div>\n ) : (\n <>\n {header && <ChakraModalHeader>{header}</ChakraModalHeader>}\n <ModalCloseButton />\n <ChakraModalBody>{body}</ChakraModalBody>\n {footer && <ChakraModalFooter>{footer}</ChakraModalFooter>}\n </>\n )}\n </ModalContent>\n </ChakraModal>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Box,\n Text,\n VStack,\n Icon,\n List,\n ListItem,\n ListIcon,\n CloseButton,\n HStack,\n Progress,\n useDisclosure,\n Image,\n} from \"@chakra-ui/react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Upload, FileText, Eye } from \"lucide-react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { mimeMap, toMB } from \"./constants\";\nimport { FileUploaderProps, MimeExtension } from \"./FileUploadProps\";\nimport Modal, { ModalBody, ModalHeader } from \"../Modal/Modal\";\n\nconst FileUpload: React.FC<FileUploaderProps> = ({\n onFilesUploaded,\n uploadedFiles,\n onRemoveFile,\n acceptTypes = [\".jpg\", \".png\"],\n maxSizeKB = 5,\n maxFiles = undefined,\n progress = {},\n}) => {\n const { colors } = useCustomTheme();\n\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const [previewUrl, setPreviewUrl] = React.useState<string | null>(null);\n const [previewTitle, setPreviewTitle] = React.useState<string | null>(null);\n\n const [errors, setErrors] = React.useState<string[]>([]);\n\n const bg = colors?.gray?.[50];\n const border = colors?.gray?.[300];\n\n const mappedAccept = acceptTypes.reduce(\n (acc, ext) => {\n const mime = mimeMap[ext as MimeExtension];\n if (mime) {\n acc[mime] = []; // File dropzone format\n }\n return acc;\n },\n {} as Record<string, string[]>\n );\n\n const onDrop = useCallback(\n (acceptedFiles: File[]) => {\n setErrors([]);\n\n const totalFiles = uploadedFiles.length + acceptedFiles.length;\n if (maxFiles && totalFiles > maxFiles) {\n setErrors([\n `Maximum ${maxFiles} files allowed. You already uploaded ${uploadedFiles.length}.`,\n ]);\n return;\n }\n\n onFilesUploaded(acceptedFiles);\n },\n [onFilesUploaded, uploadedFiles, maxFiles]\n );\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop,\n accept: mappedAccept,\n maxSize: maxSizeKB * 1024,\n maxFiles,\n onDropRejected: (rejectedFiles) => {\n const messages = rejectedFiles.flatMap((rejected) =>\n rejected.errors.map((err) => {\n if (err.code === \"file-too-large\") {\n return `File \"${rejected.file.name}\" is too large. Max size is ${toMB(maxSizeKB)}.`;\n } else if (err.code === \"file-invalid-type\") {\n return `File \"${rejected.file.name}\" is not an accepted file type.`;\n } else {\n return `File \"${rejected.file.name}\" was rejected: ${err.message}`;\n }\n })\n );\n setErrors(messages);\n },\n });\n\n return (\n <>\n <VStack spacing={4} align=\"stretch\">\n <Box\n {...getRootProps()}\n border=\"2px dashed\"\n borderColor={border}\n borderRadius=\"md\"\n p={10}\n textAlign=\"center\"\n bg={bg}\n cursor=\"pointer\"\n transition=\"all 0.2s\"\n _hover={{ bg: colors?.gray?.[100] }}\n position={\"relative\"}\n >\n <input {...getInputProps()} />\n <VStack spacing={2}>\n <Icon as={Upload} boxSize={6} />\n <Text fontWeight=\"medium\">Drag and drop files here</Text>\n <Text fontSize=\"sm\" color={colors?.gray?.[500]}>\n {acceptTypes.join(\", \")} up to {toMB(maxSizeKB)}{\" \"}\n {maxFiles ? `- ${maxFiles} file(s) max` : \"\"}\n </Text>\n </VStack>\n </Box>\n\n {errors.length > 0 && (\n <Box>\n {errors.map((err, idx) => (\n <Text key={idx} fontSize=\"sm\" color={colors?.red?.[600]}>\n {err}\n </Text>\n ))}\n </Box>\n )}\n\n {uploadedFiles.length > 0 && (\n <Box>\n <Box display={\"flex\"} alignItems={\"center\"} gap={2}>\n <Text\n fontFamily={\"open-sans, sans-serif\"}\n fontWeight={600}\n fontSize={14}\n lineHeight=\"100%\"\n letterSpacing=\"4%\"\n textTransform=\"uppercase\"\n py={4}\n >\n Uploaded Files\n </Text>\n </Box>\n <List spacing={2}>\n {uploadedFiles.map((file, index) => (\n <Box\n key={index}\n borderWidth=\"0.063rem\"\n borderRadius=\"md\"\n px={3}\n py={2}\n bg={colors?.white}\n >\n <ListItem\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n <HStack spacing={3} flex=\"1\">\n {/* Thumbnail if image */}\n {file.type.startsWith(\"image/\") ? (\n <Box\n boxSize=\"2.5rem\"\n cursor={\"pointer\"}\n position={\"relative\"}\n _hover={{\n \".hover-icon\": {\n opacity: 1,\n bg: colors?.secondary?.opacity?.[16],\n },\n }}\n onClick={() => {\n setPreviewUrl(URL.createObjectURL(file));\n setPreviewTitle(file.name);\n onOpen();\n }}\n >\n <img\n src={URL.createObjectURL(file)}\n alt={file.name}\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius: \"0.25rem\",\n }}\n />\n <Box\n className=\"hover-icon\"\n position=\"absolute\"\n top={\"0.5rem\"}\n left={\"0.5rem\"}\n opacity={0}\n >\n <Eye color={colors?.background?.[100]} />\n </Box>\n </Box>\n ) : (\n <ListIcon\n as={FileText}\n color={colors?.blue?.[500]}\n boxSize={8}\n />\n )}\n\n <VStack align=\"start\" spacing={0} flex=\"1\">\n <Text fontSize=\"sm\" noOfLines={1}>\n {file.name}\n </Text>\n <Text fontSize=\"xs\" color={colors?.gray?.[500]}>\n {toMB(file.size / 1024)} •{\" \"}\n {file.type || \"Unknown type\"}\n </Text>\n </VStack>\n </HStack>\n\n {onRemoveFile && (\n <CloseButton\n onClick={() => onRemoveFile(file)}\n size=\"sm\"\n color={colors?.red?.[600]}\n />\n )}\n </ListItem>\n {progress?.[file.name] !== undefined && (\n <Progress\n value={progress?.[file.name]}\n size=\"xs\"\n mt={1}\n hasStripe={progress?.[file.name] < 100}\n isAnimated={progress?.[file.name] < 100}\n colorScheme={\n progress?.[file.name] >= 100 ? \"green\" : \"blue\"\n }\n borderRadius={5}\n />\n )}\n </Box>\n ))}\n </List>\n </Box>\n )}\n </VStack>\n\n <Modal\n isOpen={isOpen}\n onClose={() => {\n onClose();\n setPreviewUrl(null);\n setPreviewTitle(null);\n }}\n size={\"xl\"}\n isCentered={true}\n >\n <ModalHeader>\n <Text\n fontFamily={\"open-sans, sans-serif\"}\n fontWeight={600}\n fontSize={16}\n textTransform=\"uppercase\"\n >\n {previewTitle}\n </Text>\n </ModalHeader>\n <ModalBody>\n {previewUrl && (\n <Image\n src={previewUrl}\n alt=\"Preview\"\n w=\"100%\"\n h=\"auto\"\n objectFit=\"contain\"\n />\n )}\n </ModalBody>\n </Modal>\n </>\n );\n};\n\nexport default FileUpload;\n","import { Box, Icon } from \"@chakra-ui/react\";\nimport React, { ElementType } from \"react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst FormWrapper = ({\n icon,\n text,\n children,\n}: {\n icon?: ElementType;\n text?: string;\n children: React.ReactNode;\n}) => {\n const { colors } = useCustomTheme();\n return (\n <Box>\n <Box display=\"flex\" alignItems=\"center\" gap={2} mb={2}>\n {icon && <Icon as={icon} size={\"1rem\"} color={colors?.header?.[500]} />}\n {text && (\n <Box\n fontFamily={\"open-sans, sans-serif\"}\n fontWeight={600}\n fontSize={12}\n lineHeight=\"100%\"\n letterSpacing=\"4%\"\n textTransform=\"uppercase\"\n color={colors?.header?.[500]}\n >\n {text}\n </Box>\n )}\n </Box>\n\n <Box\n borderRadius=\"0.25rem\"\n bg={colors?.white}\n border={`0.075rem solid ${colors?.border?.[500]}`}\n boxShadow={`0 0.063rem 0.125rem 0 ${colors?.boxShadow?.primary}`}\n p={\"1.5rem\"}\n >\n {children}\n </Box>\n </Box>\n );\n};\n\nexport default FormWrapper;\n","import {\n Box,\n HStack,\n Stack,\n Button,\n Badge,\n Text,\n VStack,\n Collapse,\n} from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport React from \"react\";\nimport { DesktopMenuProps, } from \"../HeaderProps\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\n\nconst DesktopMenu = ({\n menuItems,\n rightSlot,\n setHoveredMenu,\n isActive,\n activeBg,\n hoveredMenu,\n hoverBg,\n color,\n}: DesktopMenuProps) => {\n const { colors } = useCustomTheme();\n return (\n <HStack\n spacing={6}\n align=\"center\"\n display={{ base: \"none\", md: \"flex\" }}\n mx={rightSlot ? \"auto\" : 0}\n >\n {menuItems.map((item) => {\n const hasChildren = !!item.children;\n const isHovered = hoveredMenu === item.label;\n\n return (\n <Box\n key={item.label}\n position=\"relative\"\n onMouseEnter={() => hasChildren && setHoveredMenu(item.label)}\n onMouseLeave={() => hasChildren && setHoveredMenu(null)}\n >\n <Button\n variant=\"ghost\"\n onClick={item.onClick}\n rightIcon={hasChildren ? <ChevronDown size={14} /> : undefined}\n bg={isActive(item.href) ? activeBg : \"transparent\"}\n _hover={{ bg: hoverBg }}\n color={color}\n >\n <VStack spacing={0}>\n {item.badge && (\n <Badge\n colorScheme={item?.badge?.colorScheme ?? \"blue\"}\n fontSize=\"0.6em\"\n >\n {item.badge?.label}\n </Badge>\n )}\n <Text>{item.label}</Text>\n </VStack>\n </Button>\n\n {hasChildren && (\n <Collapse in={isHovered} animateOpacity>\n <Box\n position=\"absolute\"\n top=\"100%\"\n bg={colors?.white}\n color={colors?.black}\n rounded=\"md\"\n shadow=\"md\"\n minW=\"10rem\"\n zIndex={10}\n >\n <Stack spacing={1} p={2}>\n {item.children?.map((subItem) => (\n <Button\n key={subItem.label}\n onClick={subItem.onClick}\n variant=\"ghost\"\n justifyContent=\"flex-start\"\n w=\"full\"\n bg={isActive(subItem.href) ? activeBg : \"transparent\"}\n _hover={{ bg: hoverBg }}\n >\n <VStack spacing={0} align=\"start\">\n {subItem.badge && (\n <Badge\n colorScheme={\n subItem?.badge?.colorScheme ?? \"blue\"\n }\n fontSize=\"0.6em\"\n alignItems={\"end\"}\n >\n {subItem.badge?.label}\n </Badge>\n )}\n <Text>{subItem.label}</Text>\n </VStack>\n </Button>\n ))}\n </Stack>\n </Box>\n </Collapse>\n )}\n </Box>\n );\n })}\n </HStack>\n );\n};\n\nexport default DesktopMenu;","import {\n Box,\n Stack,\n Button,\n Badge,\n Text,\n VStack,\n Collapse,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { MobileMenuProps } from \"../HeaderProps\";\n\nconst MobileMenu = ({\n menuItems,\n isOpen,\n isActive,\n hoverBg,\n activeBg,\n color,\n rightSlot,\n}: MobileMenuProps) => {\n return (\n <Collapse in={isOpen} animateOpacity>\n <Box pb={4} display={{ md: \"none\" }}>\n <Stack spacing={4}>\n {menuItems.map((item) =>\n item.children ? (\n <Box key={item.label} px={2}>\n <VStack spacing={0} align=\"start\">\n {item.badge && (\n <Badge\n colorScheme={item?.badge?.colorScheme ?? \"blue\"}\n fontSize=\"0.6em\"\n >\n {item.badge.label}\n </Badge>\n )}\n <Text fontWeight=\"medium\">{item.label}</Text>\n </VStack>\n <Stack pl={4} mt={1}>\n {item.children.map((subItem) => (\n <Button\n key={subItem.label}\n onClick={subItem.onClick}\n variant=\"ghost\"\n w=\"full\"\n justifyContent=\"flex-start\"\n color={color}\n bg={isActive(subItem.href) ? activeBg : \"transparent\"}\n _hover={{ bg: hoverBg }}\n >\n <VStack spacing={0} align=\"start\">\n {subItem.badge && (\n <Badge\n colorScheme={subItem?.badge?.colorScheme ?? \"blue\"}\n fontSize=\"0.6em\"\n >\n {subItem.badge?.label}\n </Badge>\n )}\n <Text>{subItem.label}</Text>\n </VStack>\n </Button>\n ))}\n </Stack>\n </Box>\n ) : (\n <Button\n key={item.label}\n onClick={item.onClick}\n variant=\"ghost\"\n w=\"full\"\n justifyContent=\"flex-start\"\n color={color}\n bg={isActive(item.href) ? activeBg : \"transparent\"}\n _hover={{ bg: hoverBg }}\n >\n <VStack spacing={0} align=\"start\">\n {item.badge && (\n <Badge\n colorScheme={item?.badge?.colorScheme ?? \"blue\"}\n fontSize=\"0.6em\"\n >\n {item.badge?.label}\n </Badge>\n )}\n <Text>{item.label}</Text>\n </VStack>\n </Button>\n )\n )}\n {rightSlot && <Box mt={4}>{rightSlot}</Box>}\n </Stack>\n </Box>\n </Collapse>\n );\n};\n\nexport default MobileMenu;\n","import { Box, Flex, HStack, IconButton, useDisclosure } from \"@chakra-ui/react\";\nimport { MenuIcon, X } from \"lucide-react\";\nimport React, { FC, useState } from \"react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { HeaderProps } from \"./HeaderProps\";\nimport DesktopMenu from \"./components/desktopMenu\";\nimport MobileMenu from \"./components/mobileMenu\";\n\nconst Header: FC<HeaderProps> = ({\n logo,\n menuItems,\n rightSlot,\n active,\n colors,\n}) => {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const [hoveredMenu, setHoveredMenu] = useState<string | null>(null);\n const { colors: themeColor } = useCustomTheme();\n\n const bg = colors?.bg ?? themeColor?.gray?.[700];\n const color = colors?.color ?? themeColor?.background?.[100];\n const activeBg = colors?.active ?? themeColor?.primary?.[400];\n const hoverBg = colors?.hover ?? themeColor?.gray?.[500];\n\n const isActive = (href?: string) => href && active === href;\n\n return (\n <Box\n bg={bg}\n color={color}\n px={4}\n shadow=\"md\"\n // position=\"sticky\"\n // top=\"0\"\n zIndex={1000}\n >\n <Flex h={16} align=\"center\" mx=\"auto\">\n {/* Logo */}\n <Box cursor={\"pointer\"}>{logo}</Box>\n\n {/* Desktop Menu */}\n <DesktopMenu\n menuItems={menuItems}\n rightSlot={rightSlot}\n setHoveredMenu={setHoveredMenu}\n isActive={isActive}\n activeBg={activeBg}\n hoveredMenu={hoveredMenu}\n hoverBg={hoverBg}\n color={color}\n />\n\n {/* Right Slot */}\n <HStack spacing={4} display={{ base: \"none\", md: \"flex\" }}>\n {rightSlot}\n </HStack>\n\n {/* Mobile Toggle */}\n <IconButton\n variant=\"unstyled\"\n icon={\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n w=\"full\"\n h=\"full\"\n >\n {isOpen ? <X size={20} /> : <MenuIcon size={20} />}\n </Box>\n }\n aria-label=\"Toggle Menu\"\n display={{ md: \"none\" }}\n onClick={isOpen ? onClose : onOpen}\n />\n </Flex>\n\n {/* Mobile Menu */}\n <MobileMenu\n menuItems={menuItems}\n isOpen={isOpen}\n isActive={isActive}\n hoverBg={hoverBg}\n activeBg={activeBg}\n color={color}\n rightSlot={rightSlot}\n />\n </Box>\n );\n};\n\nexport default Header;","import React, { useCallback } from \"react\";\nimport { Select as ChakraSelect, FormControl } from \"@chakra-ui/react\";\nimport { OptionProp, chakraSelectProps } from \"./SelectProps\";\nimport { TextLabel } from \"../Common/FormLabel\";\nimport ErrorMessage from \"../Common/ErrorMessage\";\nimport HelperText from \"../Common/HelperText\";\n\nexport default function Select({\n placeholder = \"Select Option\",\n size = \"md\",\n variant = \"outline\",\n icon,\n onChange,\n onBlur,\n onFocus,\n errorBorderColor,\n isDisabled,\n isReadOnly,\n isRequired = false,\n value = \"\",\n colorScheme,\n label,\n error,\n errorMessage,\n helperText,\n options = [],\n width = 500,\n height = \"2.75rem\",\n formControlStyle,\n isInformation = false,\n informationMessage,\n selectStyle,\n}: chakraSelectProps) {\n const getOptionsList = useCallback(() => {\n if (!options.length) return <option value=\"\">No Options</option>;\n return options.map((option: OptionProp) => (\n <option key={option.id} value={option.id}>\n {option.label}\n </option>\n ));\n }, [options]);\n\n const handleOnChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selectedValue = event.target.value;\n const selectedOption = options.find(\n (option) => option.id.toString() === selectedValue.toString()\n );\n if (selectedOption && onChange) {\n onChange(selectedOption);\n }\n };\n\n return (\n <FormControl isInvalid={error} style={formControlStyle} width={width}>\n {label && (\n <TextLabel\n label={label}\n isRequired={isRequired}\n isInformation={isInformation}\n informationMessage={informationMessage}\n />\n )}\n\n <ChakraSelect\n placeholder={placeholder}\n size={size}\n variant={variant}\n icon={icon}\n isInvalid={error}\n value={value}\n onChange={handleOnChange}\n width={width}\n onBlur={onBlur}\n onFocus={onFocus}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n colorScheme={colorScheme}\n errorBorderColor={errorBorderColor}\n style={selectStyle}\n minH={height}\n >\n {getOptionsList()}\n </ChakraSelect>\n\n {error && <ErrorMessage errorMessage={errorMessage} />}\n {helperText && !error && <HelperText helperText={helperText} />}\n </FormControl>\n );\n}\n","import React from \"react\";\nimport { Divider as ChakraDivider } from \"@chakra-ui/react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst VeritcalDivider = () => {\n const { colors }: any = useCustomTheme();\n return (\n <ChakraDivider\n orientation=\"vertical\"\n height={5}\n borderWidth={1.2}\n borderColor={colors?.boxborder?.[500]}\n />\n );\n};\n\nexport default VeritcalDivider;\n","import { Box, Text } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { CirclePlus, SquarePen } from \"lucide-react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { OptionProp } from \"../Select/SelectProps\";\nimport Select from \"../Select/Select\";\nimport VeritcalDivider from \"../Divider/Divider\";\n\nconst HeaderActions = ({\n select,\n edit,\n create,\n}: {\n select?: {\n isSelect?: boolean;\n options?: OptionProp[];\n onSelectChange?: (option?: OptionProp) => void;\n selectPlaceholderText?: string;\n width?: string;\n value?: string;\n };\n edit?: {\n isEditable?: boolean;\n onEdit?: () => void;\n label?: string;\n };\n create?: {\n isCreatable?: boolean;\n onCreate?: () => void;\n label?: string;\n };\n}) => {\n const { colors } = useCustomTheme();\n\n const elements: React.ReactNode[] = [];\n\n if (select?.isSelect) {\n elements.push(\n <Select\n key=\"select\"\n options={select.options ?? []}\n placeholder={select.selectPlaceholderText}\n width={select.width ?? \"12.5rem\"}\n onChange={(option) => select.onSelectChange?.(option)}\n value={select.value}\n />\n );\n }\n\n if (edit?.isEditable) {\n elements.push(\n <Box\n key=\"edit\"\n display=\"flex\"\n alignItems=\"center\"\n gap=\"0.375rem\"\n cursor=\"pointer\"\n fontSize={14}\n onClick={() => edit.onEdit?.()}\n >\n <SquarePen size={20} color={colors?.text?.[500]} />\n <Text color={colors?.secondary?.[500]}>{edit.label ? edit.label : \"Edit Layout\"}</Text>\n </Box>\n );\n }\n\n if (create?.isCreatable) {\n elements.push(\n <Box\n key=\"create\"\n display=\"flex\"\n alignItems=\"center\"\n gap=\"0.375rem\"\n cursor=\"pointer\"\n fontSize={14}\n onClick={() => create.onCreate?.()}\n >\n <CirclePlus size={20} color={colors?.text?.[500]} />\n <Text color={colors?.secondary?.[500]}> {create.label ? create.label : \"Create New\"} </Text>\n </Box>\n );\n }\n\n return (\n <Box display=\"flex\" alignItems=\"center\" gap=\"0.625rem\">\n {elements.map((el, i) => (\n <React.Fragment key={i}>\n {i > 0 && <VeritcalDivider />}\n {el}\n </React.Fragment>\n ))}\n </Box>\n );\n};\n\nexport default HeaderActions;","import React from \"react\";\nimport {\n FormControl,\n FormErrorMessage,\n FormHelperText,\n FormLabel,\n Textarea,\n} from \"@chakra-ui/react\";\nimport { InputTextAreaProps } from \"./InputTextAreaProps\";\n\nexport default function InputTextArea({\n label,\n placeholder,\n value,\n onChange,\n size = \"md\",\n resize = \"both\",\n width = 500,\n isDisabled,\n errorBorderColor,\n focusBorderColor,\n isReadOnly,\n isRequired = false,\n error,\n errorMessage,\n helperText,\n rows,\n height,\n}: InputTextAreaProps) {\n return (\n <FormControl isRequired={isRequired} isInvalid={error}>\n {label && <FormLabel mb=\"0.25rem\">{label}</FormLabel>}\n <Textarea\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n size={size}\n resize={resize}\n isDisabled={isDisabled}\n errorBorderColor={errorBorderColor}\n focusBorderColor={focusBorderColor}\n isReadOnly={isReadOnly}\n isInvalid={error}\n width={width}\n rows={rows}\n height={height}\n />\n {error && <FormErrorMessage pl={4}>{errorMessage}</FormErrorMessage>}\n {helperText && !error && (\n <FormHelperText pl={4}>{helperText}</FormHelperText>\n )}\n </FormControl>\n );\n}\n","import React from \"react\";\nimport {\n Flex,\n Text,\n Tooltip,\n} from \"@chakra-ui/react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst AccountRow = ({ label, value }: { label: string; value: string }) => {\n const { colors } = useCustomTheme();\n return (\n <Flex w=\"full\">\n <Tooltip label={label} isDisabled={label.length <= 15} hasArrow>\n <Text color={colors?.text?.[700]} w=\"45%\" noOfLines={1}>\n {label}\n </Text>\n </Tooltip>\n <Text w=\"0.625rem\" textAlign=\"center\">\n :\n </Text>\n <Tooltip label={value} isDisabled={value.length <= 17} hasArrow>\n <Text\n fontWeight={600}\n color={colors?.text?.[800]}\n w=\"calc(55% - 0.625rem)\"\n noOfLines={1}\n >\n {value}\n </Text>\n </Tooltip>\n </Flex>\n );\n};\n\nexport default AccountRow;","import React, { useState } from \"react\";\nimport {\n Box,\n Flex,\n Text,\n Tooltip,\n HStack,\n VStack,\n Collapse,\n Spacer,\n} from \"@chakra-ui/react\";\nimport {\n Draggable,\n} from \"@hello-pangea/dnd\";\nimport { ChevronDown, ChevronUp, ExternalLink, Trash2 } from \"lucide-react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport AccountRow from \"./AccountRow\";\nimport { Account, KanbanBoardProps } from \"./KanbanBoardProps\";\n\nconst excludeKeys = [\"id\", \"details\"];\n\nconst AccountCard = ({\n account,\n index,\n onDelete,\n onOpen,\n}: {\n account: Account;\n index: number;\n onDelete: KanbanBoardProps['onDelete'],\n onOpen: KanbanBoardProps['onOpen']\n}) => {\n const { colors } = useCustomTheme();\n const [showMore, setShowMore] = useState(false);\n\n const keys = Object.keys(account).filter(\n (key) => typeof account[key] === \"string\" && !excludeKeys.includes(key)\n );\n const visibleKeys = showMore ? keys : keys.slice(0, 4);\n\n return (\n <Draggable draggableId={account.id.toString()} index={index}>\n {(provided) => (\n <Box\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n width=\"16.5rem\"\n borderRadius=\"0.25rem\"\n borderWidth=\"0.063rem\"\n background={colors?.background?.[500]}\n border={`0.1rem solid ${colors.gray?.[200]}`}\n p={2}\n mt={3}\n >\n <VStack\n align=\"start\"\n spacing={2}\n fontSize=\"0.875rem\"\n color={colors?.gray?.[700]}\n overflow={\"none\"}\n >\n {visibleKeys.map((key) => (\n <AccountRow\n key={key}\n label={key.replace(/\\b\\w/g, (c) => c.toUpperCase())}\n value={account[key] as string}\n />\n ))}\n <Collapse\n in={showMore && account.details !== undefined}\n animateOpacity\n >\n <Text pt={2}>{account.details}</Text>\n </Collapse>\n {keys.length > 4 && (\n <Flex justify=\"space-between\" w=\"full\" pt={2} alignItems=\"center\">\n <Text\n color={colors?.primary?.[500]}\n fontSize=\"sm\"\n fontWeight=\"medium\"\n cursor=\"pointer\"\n onClick={() => setShowMore(!showMore)}\n display={\"flex\"}\n alignItems={\"center\"}\n gap={2}\n >\n Show {showMore ? \"less\" : \"more\"}{\" \"}\n {showMore ? (\n <ChevronUp size={14} />\n ) : (\n <ChevronDown size={14} />\n )}\n </Text>\n <Spacer />\n <HStack spacing={2}>\n <Tooltip label=\"Delete\">\n <Trash2\n size={16}\n color={colors?.red?.[600]}\n onClick={() => onDelete?.(account)}\n />\n </Tooltip>\n <Tooltip label=\"Open\">\n <ExternalLink\n size={16}\n color={colors?.blue?.[600]}\n onClick={() => onOpen?.(account)}\n />\n </Tooltip>\n </HStack>\n </Flex>\n )}\n </VStack>\n </Box>\n )}\n </Draggable>\n );\n};\n\nexport default AccountCard;","import React, { useState } from \"react\";\nimport {\n Box,\n Flex,\n Text,\n Skeleton,\n SkeletonText,\n} from \"@chakra-ui/react\";\nimport {\n DragDropContext,\n Droppable,\n DropResult,\n} from \"@hello-pangea/dnd\";\nimport { Trash2 } from \"lucide-react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport AccountCard from \"./AccountCard\";\nimport { ColumnType, KanbanBoardProps } from \"./KanbanBoardProps\";\n\nconst KanbanBoard = ({\n data,\n onDrag,\n onDelete,\n onOpen,\n onColumnDelete,\n isLoading = false,\n}: KanbanBoardProps) => {\n const { colors } = useCustomTheme();\n const [columns, setColumns] = useState<Record<string, ColumnType>>(data);\n\n const onDragEnd = (result: DropResult) => {\n const { source, destination } = result;\n if (!destination) return;\n\n const sourceCol = columns[source.droppableId];\n const destCol = columns[destination.droppableId];\n const draggedItem = sourceCol.items[source.index];\n\n if (!draggedItem) return;\n\n if (source.droppableId === destination.droppableId) {\n const copiedItems = [...sourceCol.items];\n copiedItems.splice(source.index, 1);\n copiedItems.splice(destination.index, 0, draggedItem);\n const newCol = {\n ...columns,\n [source.droppableId]: {\n ...sourceCol,\n items: copiedItems,\n },\n };\n setColumns(newCol);\n } else {\n const sourceItems = [...sourceCol.items];\n const destItems = [...destCol.items];\n sourceItems.splice(source.index, 1);\n destItems.splice(destination.index, 0, draggedItem);\n\n const updatedCols = {\n ...columns,\n [source.droppableId]: { ...sourceCol, items: sourceItems },\n [destination.droppableId]: { ...destCol, items: destItems },\n };\n\n setColumns(updatedCols);\n onDrag?.({\n from: source.droppableId,\n to: destination.droppableId,\n item: draggedItem,\n });\n }\n };\n\n const handleColumnDelete = (colId: string) => {\n const columnIds = columns[colId]?.items?.map((item) => item.id) || [];\n onColumnDelete?.(columnIds);\n };\n\n return (\n <DragDropContext onDragEnd={onDragEnd}>\n <Flex\n gap={4}\n p={4}\n bg={colors?.gray?.[200]}\n minH=\"100vh\"\n overflowX=\"auto\"\n maxWidth=\"100vw\"\n >\n {isLoading ? (\n Array.from({ length: 5 })?.map((_, idx) => (\n <Box\n key={idx}\n width=\"17.5rem\"\n p={4}\n borderRadius=\"0.5rem\"\n bg={colors?.background?.[100]}\n border={`0.125rem solid ${colors?.gray?.[200]}`}\n flexShrink={0}\n >\n <Skeleton height=\"2.75rem\" mb={4} borderRadius=\"0.25rem\" />\n <SkeletonText mt=\"4\" noOfLines={5} spacing=\"4\" />\n </Box>\n ))\n ) : (\n Object.entries(columns)?.map(([colId, column]) => (\n <Droppable droppableId={colId.toString()} key={colId}>\n {(provided, snapshot) => (\n <Box\n ref={provided.innerRef}\n {...provided.droppableProps}\n width=\"17.5rem\"\n opacity={1}\n borderRadius=\"0.5rem\"\n borderWidth=\"0.063rem\"\n background={\n snapshot.isDraggingOver\n ? colors?.blue?.[50]\n : colors?.background?.[100]\n }\n border={`${snapshot.isDraggingOver\n ? \"0.5px dashed\" + colors?.blue?.[500]\n : \"0.125rem solid\" + colors.gray?.[200]\n }`}\n display=\"flex\"\n flexDirection=\"column\"\n flexShrink={0}\n >\n <Flex\n width=\"16.5rem\"\n height=\"2.75rem\"\n borderRadius=\"0.25rem\"\n borderLeft=\"0.188rem solid\"\n borderLeftColor={column.color ?? colors?.primary?.[500]}\n background={colors?.gray?.[100]}\n align=\"center\"\n px={2}\n mb={3}\n flexShrink={0}\n m={2}\n justifyContent=\"space-between\"\n >\n <Text\n fontWeight=\"600\"\n fontSize=\"1rem\"\n color={colors?.text?.[700]}\n >\n {column.title}\n </Text>\n <Box\n as={Trash2}\n size={16}\n cursor=\"pointer\"\n color={colors?.text?.[600]}\n _hover={{ color: colors?.red?.[600] }}\n onClick={() => handleColumnDelete(colId)}\n />\n </Flex>\n <Box\n px={2}\n pb={2}\n overflowY=\"auto\"\n maxHeight=\"calc(100vh - 7rem)\"\n overflowX=\"hidden\"\n >\n {column.items?.map((account, index) => (\n <AccountCard\n key={account.id}\n account={account}\n index={index}\n onDelete={onDelete}\n onOpen={onOpen}\n />\n ))}\n {provided.placeholder}\n </Box>\n </Box>\n )}\n </Droppable>\n ))\n )}\n </Flex>\n </DragDropContext>\n );\n};\n\nexport default KanbanBoard;\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport weakMemoize from '@emotion/weak-memoize';\nimport memoize from '@emotion/memoize';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar getServerStylisCache = isBrowser ? undefined : weakMemoize(function () {\n return memoize(function () {\n return {};\n });\n});\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (isBrowser && key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n if (isBrowser) {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (!getServerStylisCache) {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n } else {\n var _finalizingPlugins = [stringify];\n\n var _serializer = middleware(omnipresentPlugins.concat(stylisPlugins, _finalizingPlugins));\n\n var _stylis = function _stylis(styles) {\n return serialize(compile(styles), _serializer);\n };\n\n var serverStylisCache = getServerStylisCache(stylisPlugins)(key);\n\n var getRules = function getRules(selector, serialized) {\n var name = serialized.name;\n\n if (serverStylisCache[name] === undefined) {\n serverStylisCache[name] = _stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n }\n\n return serverStylisCache[name];\n };\n\n _insert = function _insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n var rules = getRules(selector, serialized);\n\n if (cache.compat === undefined) {\n // in regular mode, we don't set the styles on the inserted cache\n // since we don't need to and that would be wasting memory\n // we return them so that they are rendered in a style tag\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n\n return rules;\n } else {\n // in compat mode, we put the styles on the inserted cache so\n // that emotion-server can pull out the styles\n // except when we don't want to cache it which was in Global but now\n // is nowhere but we don't want to do a major right now\n // and just in case we're going to leave the case here\n // it's also not affecting client side bundle size\n // so it's really not a big deal\n if (shouldCache) {\n cache.inserted[name] = rules;\n } else {\n return rules;\n }\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","var weakMemoize = function weakMemoize(func) {\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // Use non-null assertion because we just checked that the cache `has` it\n // This allows us to remove `undefined` from the return value\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport { weakMemoize as default };\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var isBrowser = typeof document !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var stylesForSSR = '';\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n if (!isBrowser && maybeStyles !== undefined) {\n stylesForSSR += maybeStyles;\n }\n\n current = current.next;\n } while (current !== undefined);\n\n if (!isBrowser && stylesForSSR.length !== 0) {\n return stylesForSSR;\n }\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = !isBrowser ? syncFallback : useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n if (!isBrowser && rules !== undefined) {\n var _ref2;\n\n var serializedNames = serialized.name;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n next = next.next;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedNames, _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, isDevelopment as a, ThemeProvider as b, createEmotionProps as c, withTheme as d, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser, a as isDevelopment } from './emotion-element-d59e098f.esm.js';\nexport { C as CacheProvider, T as ThemeContext, b as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, d as withTheme } from './emotion-element-d59e098f.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n var JSX;\n\n (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nfunction keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n var rules = '';\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n\n if (!isBrowser && res !== undefined) {\n rules += res;\n }\n }\n\n if (!isBrowser) {\n return rules;\n }\n });\n\n if (!isBrowser && rules.length !== 0) {\n var _ref2;\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedArr.map(function (serialized) {\n return serialized.name;\n }).join(' '), _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import React from \"react\";\nimport { Box, Center, Spinner, Text } from \"@chakra-ui/react\";\nimport { LoadingProps } from \"./LoadingProps\";\nimport { css, keyframes } from \"@emotion/react\";\n\n// const blurAnimation = keyframes`\n// 0% {\n// filter: blur(0);\n// }\n// 50% {\n// filter: blur(2px);\n// }\n// 100% {\n// filter: blur(0);\n// }\n// `;\n\nconst colorTransition = keyframes`\n 0% {\n color: black;\n }\n 50% {\n color: gray;\n }\n 100% {\n color: black;\n }\n`;\n\nexport default function Loading({ text, isLoading, onlytext }: LoadingProps) {\n if (!isLoading) {\n return null;\n }\n return (\n <Box\n position=\"fixed\"\n top=\"0\"\n right=\"0\"\n bottom=\"0\"\n left=\"0\"\n backgroundColor=\"rgba(0, 0, 0, 0.4)\"\n backdropFilter=\"blur(60px)\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexDirection=\"column\"\n zIndex=\"9999\"\n >\n <Center height=\"100vh\">\n {!onlytext ? (\n <>\n <Spinner\n thickness=\"4px\"\n speed=\"0.65s\"\n emptyColor=\"gray.200\"\n color=\"blue.500\"\n size=\"xl\"\n />\n <Text mt=\"2\" ml={\"5\"}>\n {text}\n </Text>\n </>\n ) : (\n <Text\n mt=\"2\"\n ml={\"5\"}\n fontSize=\"50px\"\n textTransform={\"uppercase\"}\n fontWeight={500}\n css={css`\n animation: ${colorTransition} 2s infinite;\n `}\n >\n {text}\n </Text>\n )}\n </Center>\n </Box>\n );\n}\n","import React, {\n useState,\n KeyboardEvent,\n ChangeEvent,\n useRef,\n useEffect,\n} from \"react\";\nimport {\n Box,\n Flex,\n Tag,\n TagLabel,\n TagCloseButton,\n Input,\n Text,\n} from \"@chakra-ui/react\";\nimport { MultiSelctOPtions, MultiSelectProps } from \"./MultiSelectProps\";\nimport { TextLabel } from \"../Common/FormLabel\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst generateUniqueId = (() => {\n let counter = 0;\n return () => {\n counter += 1;\n return `${Date.now()}-${counter}`;\n };\n})();\n\nexport default function MultiSelect({\n value,\n onValueChange,\n width = \"100%\",\n label = \"label\",\n isRequired = true,\n isInformation = false,\n informationMessage = \"\",\n name,\n id,\n placeholderText = \"Type valid email and press enter\",\n isDisabled,\n isReadOnly,\n size,\n inputStyle,\n}: MultiSelectProps) {\n const theme = useCustomTheme();\n\n const getPadding = () => {\n return \"0.5rem\";\n };\n\n const [options, setOptions] = useState<MultiSelctOPtions[]>(value);\n const [inputValue, setInputValue] = useState<string>(\"\");\n const [error, setError] = useState<string>(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setOptions(value);\n }, [value]);\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n setError(\"\");\n };\n\n const validateEmail = (email: string) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && inputValue.trim() !== \"\") {\n if (!validateEmail(inputValue)) {\n setError(\"Invalid email address\");\n return;\n }\n const existingOption = options.find(\n (option) => option.label === inputValue\n );\n if (!existingOption) {\n const newOption = { id: generateUniqueId(), label: inputValue };\n const updatedOptions = [...options, newOption];\n setOptions(updatedOptions);\n onValueChange(updatedOptions);\n setInputValue(\"\");\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }\n } else if (e.key === \"Backspace\" && inputValue === \"\") {\n const updatedOptions = options.slice(0, -1); // Remove the last item\n setOptions(updatedOptions);\n onValueChange(updatedOptions);\n }\n };\n\n const handleRemove = (optionToRemove: MultiSelctOPtions) => {\n const updatedOptions = options.filter(\n (option) => option.id !== optionToRemove.id\n );\n setOptions(updatedOptions);\n onValueChange(updatedOptions);\n };\n\n return (\n <Box width={width} borderRadius=\"md\" backgroundColor=\"white\">\n {label && (\n <TextLabel\n label={label}\n isRequired={isRequired}\n isInformation={isInformation}\n informationMessage={informationMessage}\n />\n )}\n <Flex wrap=\"wrap\" gap={2}>\n {options.map((option) => (\n <Tag key={option.id} size=\"md\" variant=\"solid\" colorScheme=\"gray\">\n <TagLabel>{option.label}</TagLabel>\n <TagCloseButton onClick={() => handleRemove(option)} />\n </Tag>\n ))}\n </Flex>\n <Input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n id={id}\n name={name}\n size={size}\n style={{\n ...inputStyle,\n backgroundColor: theme.colors.backgroundColor.light,\n fontWeight: 600,\n color: theme.colors.gray[600],\n padding: getPadding(),\n fontSize: 15,\n letterSpacing: 0.7,\n borderRadius: \"0.125rem\",\n }}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholderText}\n marginTop={2}\n marginLeft={1}\n />\n {error && (\n <Text color=\"red.500\" marginTop={2} marginLeft={1}>\n {error}\n </Text>\n )}\n </Box>\n );\n}\n","import React from \"react\";\nimport {\n Avatar,\n Box,\n Button,\n Center,\n Flex,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n MenuList,\n Stack,\n Text,\n} from \"@chakra-ui/react\";\nimport { MenuProps, NavbarProps } from \"./NavigationBarProps\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { CircleArrowLeft, LogOut } from \"lucide-react\";\n\nexport default function NavBar({\n userAvathar,\n userName,\n navMenu,\n moreIcon,\n handleNavOnClick,\n handleLogout,\n logoutText,\n navigationBarText,\n}: NavbarProps) {\n const theme = useCustomTheme();\n return (\n <Box\n bg={theme.colors.backgroundColor.light}\n px={4}\n boxShadow={theme.shadows.sm}\n >\n <Flex h={16} alignItems={\"center\"} justifyContent={\"space-between\"}>\n <Box display={\"flex\"} gap={1.5} alignItems={\"center\"}>\n {navigationBarText?.onIconClick && (\n <Box\n width={\"1.5rem\"}\n height={\"1.5rem\"}\n display={\"flex\"}\n alignItems={\"center\"}\n justifyContent={\"center\"}\n cursor={\"pointer\"}\n onClick={() => navigationBarText?.onIconClick?.()}\n >\n <CircleArrowLeft\n size={\"1.25rem\"}\n color={theme?.colors?.text?.[500]}\n />\n </Box>\n )}\n {navigationBarText?.text && (\n <Text\n color={theme?.colors?.secondary?.[500]}\n fontSize={\"1.25rem\"}\n fontWeight={600}\n fontFamily={\"open-sans, sans-serif\"}\n letterSpacing={\"-0.013rem\"}\n >\n {navigationBarText?.text}\n </Text>\n )}\n </Box>\n <Flex>\n <Stack direction={\"row\"} alignItems={\"center\"} spacing={7}>\n <Menu>\n <Box cursor={\"pointer\"}>{moreIcon}</Box>\n <MenuButton\n as={Button}\n rounded={\"full\"}\n variant={\"link\"}\n cursor={\"pointer\"}\n minW={0}\n >\n <Avatar size={\"sm\"} name={userName} src={userAvathar} />\n </MenuButton>\n <MenuList alignItems={\"center\"} zIndex={5}>\n <Center py={4}>\n <Avatar size={\"xl\"} name={userName} src={userAvathar} />\n </Center>\n <Center>\n <Text fontWeight={500}>{userName}</Text>\n </Center>\n <MenuDivider />\n {navMenu?.map((menu: MenuProps) => (\n <MenuItem\n onClick={() => handleNavOnClick(menu.url)}\n key={menu.title}\n sx={{\n fontWeight: 500,\n gap: theme.space[\"2\"],\n }}\n _hover={{\n backgroundColor: theme.colors.primary[\"50\"],\n }}\n >\n {menu.icon && <Box>{menu?.icon}</Box>}\n <Box>{menu.title}</Box>\n </MenuItem>\n ))}\n <MenuDivider />\n <MenuItem\n onClick={handleLogout}\n sx={{\n fontWeight: 500,\n gap: theme.space[\"2\"],\n }}\n _hover={{\n backgroundColor: theme.colors.primary[\"50\"],\n }}\n >\n <Box>{<LogOut size={16} />}</Box>\n <Box>{logoutText}</Box>\n </MenuItem>\n </MenuList>\n </Menu>\n </Stack>\n </Flex>\n </Flex>\n </Box>\n );\n}\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n if (!isBrowser && rules !== undefined) {\n var _ref2;\n\n var serializedNames = serialized.name;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n next = next.next;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedNames, _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n // eslint-disable-next-line prefer-spread\n styles.push.apply(styles, args);\n } else {\n var templateStringsArr = args[0];\n\n styles.push(templateStringsArr[0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], templateStringsArr[i]);\n }\n }\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n }));\n return newStyled.apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar newStyled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { NoteTextAreaProps } from \"./NoteTextAreaProps\";\nimport styled from \"@emotion/styled\";\nimport { Spinner } from \"@chakra-ui/react\";\nimport { CustomThemeProps } from \"../../Theme/themeProps\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { Paperclip, X } from \"lucide-react\";\n\nconst Container = styled.div<{ isActive: boolean }>`\n border: ${({ isActive }) =>\n isActive ? \"1px solid #3182ce\" : \"1px solid #c0c6cc\"};\n border-radius: 5px;\n box-shadow: ${({ isActive }) =>\n isActive\n ? \"-1px 1px 8px 4px rgb(49 130 206 / 24%), 0px 2px 6px 0 rgb(49 130 206 / 19%)\"\n : \"none\"};\n`;\n\nconst TextAreaContainer = styled.div<{ isActive: boolean }>`\n width: 100%;\n cursor: text;\n padding: 12px 15px;\n display: ${({ isActive }) => (isActive ? \"block\" : \"none\")};\n`;\n\nconst PlaceholderText = styled.div<{ isActive: boolean }>`\n color: #c0c6cc;\n width: 100%;\n cursor: text;\n display: ${({ isActive }) => (isActive ? \"block\" : \"none\")};\n padding: 12px 15px;\n`;\n\nconst InputTitle = styled.input`\n width: 100%;\n height: auto;\n border: none;\n outline: none;\n background: none;\n color: black;\n fontsize: 1rem;\n fontweight: 500;\n marginbottom: 2px;\n`;\n\nconst NotesTextArea = styled.textarea<{ isActive: boolean; noteValue: string }>`\n color: ${({ isActive, noteValue }) =>\n isActive && noteValue ? \"#000000\" : \"#c0c6cc\"};\n width: 100%;\n height: auto;\n border: none;\n outline: none;\n background: none;\n fontweight: 300;\n`;\n\nconst FileUploadLabel = styled.label`\n cursor: pointer;\n`;\n\nconst AddTitleButton = styled.div`\n color: #616e88;\n cursor: pointer;\n fontsize: 0.8rem;\n`;\n\nconst Button = styled.button<{\n noteValue: string;\n isSaveButton: boolean;\n isLoading: boolean;\n theme: CustomThemeProps;\n disabled: boolean;\n}>`\n border: none;\n padding: 3px 15px;\n text-align: center;\n text-decoration: none;\n background: ${({ isSaveButton, noteValue, isLoading, theme }) =>\n isSaveButton\n ? noteValue && !isLoading\n ? theme.colors.primary[500]\n : theme.colors.primary[500]\n : \"white\"};\n color: ${({ isSaveButton, isLoading }) =>\n isSaveButton && !isLoading ? \"white\" : \"white\"};\n font-size: 1rem;\n margin-right: 5px;\n border-radius: 5px;\n opacity: ${({ isSaveButton, noteValue, isLoading, disabled }) =>\n isSaveButton && (!noteValue || isLoading || disabled) ? \"0.5\" : \"1\"};\n cursor: ${({ isSaveButton, noteValue, isLoading, disabled }) =>\n isSaveButton && (!noteValue || isLoading || disabled)\n ? \"initial\"\n : \"pointer\"};\n pointer-events: ${({ isLoading }) => (isLoading ? \"none\" : \"auto\")};\n`;\n\nconst CancelButton = styled.button`\n border: none;\n color: #5e5c5c;\n padding: 3px 15px;\n text-align: center;\n text-decoration: none;\n background: white;\n font-size: 1rem;\n margin-right: 5px;\n border-radius: 5px;\n`;\n\nconst FileViewer = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 300px;\n`;\n\nconst FileEdit = styled(X)`\n cursor: pointer;\n color: #ff0000;\n`;\n\nconst ErrorText = styled.div`\n color: #ff0000;\n font-size: 0.8rem;\n margin-top: 8px;\n`;\n\nconst countWords = (text: string) => {\n return text.trim().split(/\\s+/).length;\n};\n\nexport default function NoteTextArea({\n width = \"100%\",\n handleSubmit,\n handleCancel,\n value,\n title,\n file,\n isEditable = false,\n saveButtonLoading,\n maxFileSize = 1 * 1024 * 1024,\n maxFilesSizeError = \"Some files are too large. Maximum allowed size is\",\n maxNoteWordCount = 15,\n onChange,\n ref,\n}: NoteTextAreaProps) {\n const theme = useCustomTheme();\n const noteAreaRef = useRef<HTMLTextAreaElement>(null);\n const [isActive, setIsActive] = useState<boolean>(false);\n const [noteValue, setNoteValue] = useState<string>(\"\");\n const [titleValue, setTitleValue] = useState<string>(\"\");\n const [titleShow, setTitleShow] = useState<boolean>(false);\n const [files, setFiles] = useState<File[]>([]);\n const [fileError, setFileError] = useState<string>(\"\");\n const [isSaveDisabled, setIsSaveDisabled] = useState(false);\n useEffect(() => {\n const titleWordCount = countWords(titleValue);\n setIsSaveDisabled(titleWordCount > maxNoteWordCount);\n }, [titleValue, maxNoteWordCount]);\n\n useEffect(() => {\n const noteWordCount = countWords(noteValue);\n setIsSaveDisabled(noteWordCount > maxNoteWordCount);\n }, [noteValue, maxNoteWordCount]);\n\n useEffect(() => {\n if (isEditable) {\n setIsActive(true);\n if (value) {\n setNoteValue(value);\n }\n if (title) {\n setTitleValue(title);\n setTitleShow(true);\n }\n if (file) {\n setFiles(file);\n }\n }\n }, [value, title, file, isEditable]);\n\n useEffect(() => {\n if (!saveButtonLoading) {\n setIsActive(false);\n if (!isEditable) {\n setNoteValue(\"\");\n setTitleValue(\"\");\n setTitleShow(false);\n setFiles([]);\n }\n }\n if (isEditable) {\n setIsActive(true);\n }\n }, [saveButtonLoading, isEditable]);\n\n const handleTextArea = () => {\n setIsActive(true);\n if (!isEditable) {\n setNoteValue(\"\");\n setTitleValue(\"\");\n setTitleShow(false);\n setFiles([]);\n }\n };\n const handleCloseTextArea = () => {\n setIsActive(false);\n if (handleCancel) {\n handleCancel(!isActive);\n }\n if (!isEditable) {\n setNoteValue(\"\");\n setTitleValue(\"\");\n setTitleShow(false);\n setFiles([]);\n }\n setFileError(\"\");\n };\n\n const handleNoteChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n setNoteValue(event.target.value);\n onChange?.(event.target.value);\n adjustHeight();\n };\n\n useEffect(() => {\n if (isActive && noteAreaRef.current) {\n noteAreaRef.current.focus();\n }\n }, [isActive]);\n\n const adjustHeight = () => {\n const textarea = noteAreaRef.current;\n if (!textarea) return;\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n };\n\n const handleSetTitle = () => {\n setTitleShow(true);\n };\n\n const handleTitleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n event.target.value.length === 0 && setTitleShow(false);\n setTitleValue(event.target.value);\n };\n\n const formatBytes = (bytes: any, decimals = 2) => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n };\n\n const shortenFileName = (name: string, maxLength = 20) => {\n const extension = name.substring(name.lastIndexOf(\".\"));\n if (name.length <= maxLength) return name;\n const nameWithoutExtension = name.replace(extension, \"\");\n const start = nameWithoutExtension.substring(\n 0,\n maxLength - extension.length - 3\n );\n return `${start}...${extension} `;\n };\n\n return (\n <Container style={{ width }} isActive={isActive}>\n <PlaceholderText isActive={!isActive} onClick={handleTextArea}>\n <span>Add a note...</span>\n </PlaceholderText>\n <TextAreaContainer isActive={isActive}>\n {titleShow && (\n <InputTitle\n value={titleValue}\n onChange={handleTitleChange}\n placeholder=\"Add a title...\"\n ref={ref}\n />\n )}\n <NotesTextArea\n ref={noteAreaRef}\n isActive={isActive}\n noteValue={noteValue}\n value={noteValue}\n onChange={handleNoteChange}\n placeholder=\"Add a note...\"\n />\n </TextAreaContainer>\n {isActive && (\n <>\n <hr style={{ margin: 0 }} />\n <div style={{ padding: \"12px 15px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n <FileUploadLabel htmlFor=\"file-upload\">\n <Paperclip size={17} />\n <input\n id=\"file-upload\"\n type=\"file\"\n style={{ display: \"none\" }}\n onChange={(e) => {\n const newFiles = Array.from(e.target.files || []);\n const validFiles = newFiles.filter(\n (file) => file.size <= maxFileSize\n );\n const invalidFiles = newFiles.filter(\n (file) => file.size > maxFileSize\n );\n\n if (invalidFiles.length > 0) {\n setFileError(\n `${maxFilesSizeError} ${formatBytes(maxFileSize)}.`\n );\n } else {\n setFileError(\"\");\n }\n\n if (validFiles.length > 0) {\n setFiles((prevFiles) => [...prevFiles, ...validFiles]);\n }\n }}\n multiple\n // onChange={(event) => {\n // if (event.target.files && event.target.files.length > 0) {\n // const filesArray = Array.from(event.target.files);\n // const validFiles = filesArray.filter(\n // (file) => file.size <= maxFileSize\n // );\n // setFiles([...files, ...validFiles]);\n // }\n // }}\n />\n </FileUploadLabel>\n {!titleShow && (\n <>\n <div\n style={{\n height: \"15px\",\n width: \"1px\",\n backgroundColor: \"#c0c6cc\",\n marginRight: \"5px\",\n marginLeft: \"5px\",\n }}\n ></div>\n <AddTitleButton onClick={handleSetTitle}>\n Add a Title\n </AddTitleButton>\n </>\n )}\n <div style={{ marginLeft: \"auto\" }}>\n <CancelButton onClick={handleCloseTextArea}>\n Cancel\n </CancelButton>\n <Button\n isSaveButton={true}\n noteValue={noteValue}\n isLoading={saveButtonLoading}\n disabled={!noteValue || isSaveDisabled}\n theme={theme}\n onClick={() => {\n handleSubmit(noteValue, titleValue, files);\n // handleCloseTextArea();\n }}\n >\n {saveButtonLoading && (\n <span style={{ marginRight: \"6px\" }}>\n <Spinner\n thickness=\"2px\"\n speed=\"0.75s\"\n emptyColor=\"gray.200\"\n color=\"blue.500\"\n size=\"xs\"\n />\n </span>\n )}\n Save\n </Button>\n </div>\n </div>\n <div style={{ display: \"flex\", gap: \"10px\" }}>\n <div>Note:</div>\n <div>You can add up to {maxNoteWordCount} words only</div>\n </div>\n {fileError && <ErrorText>{fileError}</ErrorText>}{\" \"}\n {/* Display file error */}\n {files.length > 0 && (\n <div>\n {files.map((item, index) => (\n <FileViewer key={index}>\n <>\n <span>{shortenFileName(item.name)}</span>\n <span>{formatBytes(item.size)}</span>\n </>\n <FileEdit\n onClick={() =>\n setFiles(files.filter((fileItem) => fileItem !== item))\n }\n />\n </FileViewer>\n ))}\n </div>\n )}\n </div>\n </>\n )}\n </Container>\n );\n}\n","import React from \"react\";\nimport {\n NumberDecrementStepper,\n NumberIncrementStepper,\n NumberInput as ChakraNumberInput,\n NumberInputField,\n NumberInputStepper,\n} from \"@chakra-ui/react\";\nimport { NumberInputProps } from \"./NumberInputProps\";\n\nexport default function NumberInput({\n defaultValue,\n min,\n max,\n precision,\n step,\n clampValueOnBlur,\n keepWithinRange,\n value,\n onChange,\n size,\n maxW,\n allowMouseWheel,\n NumberIncrementStepperBg,\n NumberIncrementStepperActive,\n NumberIncrementStepperChildren,\n NumberDecrementStepperBg,\n NumberDecrementStepperChildren,\n NumberDecrementStepperActive,\n}: NumberInputProps) {\n return (\n <ChakraNumberInput\n defaultValue={defaultValue}\n min={min}\n max={max}\n step={step}\n precision={precision}\n clampValueOnBlur={clampValueOnBlur}\n keepWithinRange={keepWithinRange}\n value={value}\n onChange={onChange}\n size={size}\n maxW={maxW}\n allowMouseWheel={allowMouseWheel}\n >\n <NumberInputField />\n <NumberInputStepper>\n <NumberIncrementStepper\n bg={NumberIncrementStepperBg}\n _active={NumberIncrementStepperActive}\n >\n {NumberIncrementStepperChildren}\n </NumberIncrementStepper>\n <NumberDecrementStepper\n bg={NumberDecrementStepperBg}\n _active={NumberDecrementStepperActive}\n >\n {NumberDecrementStepperChildren}\n </NumberDecrementStepper>\n </NumberInputStepper>\n </ChakraNumberInput>\n );\n}\n","import React from \"react\";\nimport { HStack, PinInput, PinInputField, Text } from \"@chakra-ui/react\";\nimport { ChakraPinInputProps } from \"./PinInputProps\";\nexport default function PinInputs({\n otp,\n mask,\n defaultValue,\n placeholder,\n manageFocus,\n errorBorderColor,\n focusBorderColor,\n onChange,\n onComplete,\n type,\n color,\n variant,\n pins = 3,\n label,\n}: ChakraPinInputProps) {\n return (\n <>\n {label && (\n <Text fontWeight=\"bold\" marginBottom={\"8px\"}>\n {label}\n </Text>\n )}\n <HStack>\n <PinInput\n otp={otp}\n mask={mask}\n defaultValue={defaultValue}\n placeholder={placeholder}\n manageFocus={manageFocus}\n errorBorderColor={errorBorderColor}\n focusBorderColor={focusBorderColor}\n onChange={onChange}\n onComplete={onComplete}\n type={type}\n colorScheme={color}\n variant={variant}\n >\n {Array.from({ length: pins }).map((_, index) => (\n <PinInputField key={index} />\n ))}\n </PinInput>\n </HStack>\n </>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport {\n Card as ChakraCard,\n CardBody,\n CardFooter,\n CardHeader,\n Divider,\n} from \"@chakra-ui/react\";\nimport { ProfileCardProps } from \"./ProfileCardProps\";\n\nexport const ProfileCardHeader: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n return <>{children}</>;\n};\n\nexport const ProfileCardBody: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n return <>{children}</>;\n};\n\nexport const ProfileCardFooter: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n return <>{children}</>;\n};\n\nexport default function ProfileCard({\n maxW,\n align,\n variant,\n direction,\n justify,\n children,\n size,\n color,\n overflow,\n dividercolor = \"#d5cfcf\",\n dividersize = \"0.5px\",\n dividervariant = \"solid\",\n CardStyle,\n CardHeaderStyle,\n CardBodyStyle,\n borderTopColor,\n borderLeftColor,\n}: ProfileCardProps) {\n const isReactElement = (child: React.ReactNode): child is ReactElement => {\n return child !== null && typeof child === \"object\" && \"type\" in child;\n };\n\n const header = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === ProfileCardHeader\n );\n const body = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === ProfileCardBody\n );\n const footer = React.Children.toArray(children).find(\n (child) => isReactElement(child) && child.type === ProfileCardFooter\n );\n\n const StylesWithBorder = borderLeftColor\n ? { ...CardStyle, borderLeft: \"2px solid #3182CE\" }\n : borderTopColor\n ? { ...CardStyle, borderTop: \"2px solid #3182CE\" }\n : { ...CardStyle };\n return (\n <ChakraCard\n maxW={maxW}\n align={align}\n variant={variant}\n direction={direction}\n justify={justify}\n size={size}\n overflow={overflow}\n colorScheme={color}\n style={StylesWithBorder}\n >\n {header && (\n <>\n <CardHeader sx={{ ...CardHeaderStyle, fontWeight: \"bold\" }}>\n {header}\n </CardHeader>\n <Divider\n style={{\n borderColor: dividercolor,\n borderWidth: dividersize,\n borderStyle: dividervariant,\n }}\n />\n </>\n )}\n <CardBody sx={CardBodyStyle}>{body}</CardBody>\n {footer && <CardFooter>{footer}</CardFooter>}\n </ChakraCard>\n );\n}\n","import React, { ChangeEvent, useRef, useState } from \"react\";\nimport { Box, Image, IconButton, Input, Text, Tooltip } from \"@chakra-ui/react\";\nimport { ProfilePhotoViewerProps } from \"./ProfilePhotoViewerProps\";\nimport { Eye, FileText, SquarePen, User } from \"lucide-react\";\n\nexport default function ProfilePhotoViewer({\n photoUrl,\n onPhotoChange,\n imageWidth = \"100px\",\n imageAlt = \"Profile Photo\",\n imageObjectFit = \"cover\",\n imageBorderRadius = \"full\",\n editIconSize = \"sm\",\n editIconPositionRight = \"0px\",\n editIconPositionBottom = \"0px\",\n isRound = true,\n boxStyle,\n isEditable = false,\n isView = false,\n style,\n handleIsView,\n fallbackText,\n}: ProfilePhotoViewerProps) {\n const [photo, setPhoto] = useState<string>(photoUrl);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const handlePhotoChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (!isEditable) return;\n const file = event.target.files?.[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = () => {\n const photoUrl = reader.result as string;\n setPhoto(photoUrl);\n onPhotoChange(file);\n };\n reader.readAsDataURL(file);\n }\n };\n const handleClick = () => {\n if (!isEditable) return;\n fileInputRef.current?.click();\n };\n\n const isPdf = photo?.endsWith(\".pdf\");\n\n return (\n <Box\n position=\"relative\"\n display=\"inline-block\"\n style={boxStyle}\n sx={{\n \"&:hover .icon-button\": {\n opacity: 1,\n },\n }}\n >\n {photo ? (\n isPdf ? (\n <Box\n width={imageWidth}\n height={imageWidth}\n borderRadius={imageBorderRadius}\n bg=\"gray.200\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n overflow=\"hidden\"\n >\n <FileText size={\"50%\"} />\n </Box>\n ) : (\n <Image\n src={photo}\n alt={imageAlt}\n boxSize={imageWidth}\n objectFit={imageObjectFit}\n borderRadius={imageBorderRadius}\n />\n )\n ) : fallbackText ? (\n <Box\n boxSize={imageWidth}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n borderRadius={imageBorderRadius}\n bg=\"gray.200\"\n >\n <Text fontSize=\"2xl\" fontWeight=\"bold\">\n {fallbackText}\n </Text>\n </Box>\n ) : (\n <Box\n boxSize={imageWidth}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n borderRadius={imageBorderRadius}\n bg=\"gray.200\"\n >\n <User size=\"50%\" />\n </Box>\n )}\n\n {(isEditable || isView) && (\n <>\n <Box\n className=\"icon-button\"\n position=\"absolute\"\n right={editIconPositionRight}\n bottom={editIconPositionBottom}\n transform=\"translate(-25%, -25%)\"\n sx={{\n opacity: 0,\n transition: \"opacity 0.3s\",\n }}\n >\n {isEditable && (\n <Tooltip label=\"Edit\" aria-label=\"Edit\">\n <IconButton\n icon={<SquarePen size={14}/>}\n isRound={isRound}\n size={editIconSize}\n onClick={handleClick}\n aria-label=\"Edit photo\"\n style={{\n ...style,\n transition: \"transform 0.3s, box-shadow 0.3s\",\n boxShadow: \"0 4px 8px rgba(0, 0, 0, 0.2)\",\n marginRight: \"3px\",\n }}\n _hover={{\n transform: \"scale(1.1)\",\n color: \"blue.500\",\n boxShadow: \"0 8px 16px rgba(0, 0, 0, 0.3)\",\n }}\n />\n </Tooltip>\n )}\n {isView && (\n <Tooltip label=\"View\" aria-label=\"View\">\n <IconButton\n icon={<Eye size={14}/>}\n isRound={isRound}\n size={editIconSize}\n onClick={handleIsView}\n aria-label=\"View photo\"\n style={{\n ...style,\n transition: \"transform 0.3s, box-shadow 0.3s\",\n boxShadow: \"0 4px 8px rgba(0, 0, 0, 0.2)\",\n }}\n _hover={{\n transform: \"scale(1.1)\",\n color: \"blue.500\",\n boxShadow: \"0 8px 16px rgba(0, 0, 0, 0.3)\",\n }}\n />\n </Tooltip>\n )}\n </Box>\n {isEditable && (\n <Input\n type=\"file\"\n accept=\"image/*\"\n onChange={handlePhotoChange}\n hidden\n ref={fileInputRef}\n />\n )}\n </>\n )}\n </Box>\n );\n}\n","import React from \"react\";\nimport { Progress } from \"@chakra-ui/react\";\nimport { ProgressBarProps } from \"./ProgressBarProps\";\n\nexport default function ProgressBar({\n size,\n isIndeterminate,\n color,\n hasStripe,\n height,\n value,\n isAnimated,\n max,\n min,\n variant,\n}: ProgressBarProps) {\n return (\n <Progress\n size={size}\n isIndeterminate={isIndeterminate}\n colorScheme={color}\n hasStripe={hasStripe}\n height={height}\n value={value}\n isAnimated={isAnimated}\n max={max}\n min={min}\n variant={variant}\n />\n );\n}\n","import React from \"react\";\nimport {\n Radio as ChakraRadio,\n RadioGroup as ChakraRadioGroup,\n Box,\n Stack,\n} from \"@chakra-ui/react\";\nimport { ChakraRadioProps, ChakraRadioGroupProps } from \"./RadioButtonProps\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst RadioButton = ({\n label,\n colorScheme,\n isChecked,\n onChange,\n isDisabled,\n size,\n value,\n defaultChecked,\n}: ChakraRadioProps) => {\n const theme = useCustomTheme();\n return (\n <ChakraRadio\n colorScheme={colorScheme}\n isChecked={isChecked}\n onChange={onChange}\n isDisabled={isDisabled}\n size={size}\n value={value}\n defaultChecked={defaultChecked}\n sx={{\n \"&[data-checked]\": {\n backgroundColor: theme.colors.primary[500],\n borderColor: theme.colors.primary[500]\n },\n \"&[data-checked]:hover\": {\n backgroundColor: theme.colors.primary[300], // Change this to your desired hover color\n borderColor: theme.colors.primary[300], // Change this to your desired hover color\n },\n }}\n >\n <Box as=\"span\">{label}</Box>\n </ChakraRadio>\n );\n};\n\nconst RadioButtonGroup = ({\n options,\n onChange,\n value,\n defaultValue,\n isDisabled,\n size,\n colorScheme,\n}: ChakraRadioGroupProps) => {\n return (\n <ChakraRadioGroup\n onChange={onChange}\n value={value}\n defaultValue={defaultValue}\n >\n <Stack direction=\"row\" spacing={4}>\n {options.map((option) => (\n <RadioButton\n key={option.id}\n label={option.label}\n value={option.id}\n isDisabled={isDisabled}\n size={size}\n colorScheme={colorScheme}\n />\n ))}\n </Stack>\n </ChakraRadioGroup>\n );\n};\n\nexport { RadioButton, RadioButtonGroup };\n","import React from \"react\";\nimport {\n Badge,\n Box,\n Divider,\n HStack,\n IconButton,\n Image,\n Text,\n} from \"@chakra-ui/react\";\nimport {\n DragDropContext,\n Droppable,\n Draggable,\n DropResult,\n} from \"@hello-pangea/dnd\";\nimport { BetweenHorizonalStart, GripVertical } from \"lucide-react\";\nimport { ReorderItem, ReorderListProps } from \"./ReorderProps\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\n\nconst ReorderList = <T extends ReorderItem>({\n label = \"\",\n items,\n onReorder,\n}: ReorderListProps<T>): JSX.Element => {\n const { colors } = useCustomTheme();\n const handleDragEnd = (result: DropResult) => {\n if (!result.destination) return;\n\n const reordered = Array.from(items);\n const [moved] = reordered.splice(result.source.index, 1);\n reordered.splice(result.destination.index, 0, moved);\n onReorder(reordered);\n };\n\n return (\n <Box\n borderWidth=\"0.063rem\"\n borderRadius=\"md\"\n px={3}\n py={2}\n bg={colors?.white}\n >\n <Box display={\"flex\"} alignItems={\"center\"} gap={2}>\n <BetweenHorizonalStart />\n <Text\n fontFamily={\"open-sans, sans-serif\"}\n fontWeight={600}\n fontSize={14}\n lineHeight=\"100%\"\n letterSpacing=\"4%\"\n textTransform=\"uppercase\"\n py={4}\n >\n {label}\n </Text>\n </Box>\n <Divider />\n <br />\n <DragDropContext onDragEnd={handleDragEnd}>\n <Droppable droppableId=\"item-list\" direction=\"horizontal\">\n {(provided) => (\n <HStack\n ref={provided.innerRef}\n {...provided.droppableProps}\n spacing={4}\n overflowX=\"auto\"\n >\n {items.map((item, index) => (\n <Draggable key={item.id} draggableId={item.id} index={index}>\n {(provided) => (\n <Box\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n position=\"relative\"\n border=\"0.063rem solid\"\n borderColor={colors?.gray?.[300]}\n borderRadius=\"md\"\n overflow=\"hidden\"\n >\n <Image\n src={item.previewUrl}\n alt={item.name ?? `item-${index}`}\n boxSize=\"7.5rem\"\n objectFit=\"cover\"\n />\n <IconButton\n icon={\n <GripVertical size={16} color={colors?.gray?.[500]} />\n }\n aria-label=\"Drag\"\n size=\"sm\"\n position=\"absolute\"\n top={1}\n left={1}\n variant=\"ghost\"\n />\n <Badge\n position={\"absolute\"}\n colorScheme=\"gray\"\n variant=\"solid\"\n bottom={1}\n right={1}\n >\n {index + 1}\n </Badge>\n </Box>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </HStack>\n )}\n </Droppable>\n </DragDropContext>\n </Box>\n );\n};\n\nexport default ReorderList;\n","import React, { useEffect, useRef } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { SearchProps } from \"./SearchProps\";\nimport { Search as SearchIconComponent, X } from 'lucide-react';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n border-radius: 4px;\n padding: 0.5rem 0.7rem 0.5rem 0.7rem;\n width: 100%;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);\n border-radius: 20px;\n background: #fff;\n border: 1px solid #f1f1f1;\n`;\n\nconst Input = styled.input`\n flex: 1;\n border: none;\n outline: none;\n margin-left: 0.5rem;\n background: transparent;\n`;\n\nconst SearchIcon = styled(SearchIconComponent)`\n color: #888;\n`;\nconst CloseIcon = styled(X)`\n color: #888;\n font-size: 1.5rem;\n`;\n\nconst Shortcut = styled.span`\n margin-left: auto;\n padding-left: 0.5rem;\n color: #888;\n font-size: 0.9rem;\n`;\n\nexport default function Search({\n placeholder = \"Search...\",\n onSearch,\n onclose,\n shortcut = \"Ctrl+K\",\n query,\n}: SearchProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n shortcut &&\n event.ctrlKey &&\n event.key === shortcut.split(\"+\")[1].toLowerCase()\n ) {\n event.preventDefault();\n inputRef.current?.focus();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [shortcut]);\n\n return (\n <Container>\n <SearchIcon />\n <Input\n ref={inputRef}\n type=\"text\"\n value={query}\n onChange={onSearch}\n placeholder={placeholder}\n />\n {query && <CloseIcon onClick={onclose} />}\n {shortcut && <Shortcut>{shortcut}</Shortcut>}\n </Container>\n );\n}\n","import React, { ElementType } from \"react\";\nimport { Tag as ChakraTag, TagLabel, TagRightIcon } from \"@chakra-ui/react\";\n\ninterface ChipProps {\n label: string;\n onIconClick?: () => void;\n onTagClick?: () => void;\n icon?: ElementType;\n colorScheme?:\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"gray\"\n | \"red\"\n | \"orange\"\n | \"yellow\"\n | \"green\"\n | \"teal\"\n | \"blue\"\n | \"cyan\"\n | \"purple\"\n | \"pink\";\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"solid\" | \"outline\";\n}\n\nconst Tag: React.FC<ChipProps> = ({\n label,\n colorScheme = \"primary\",\n variant = \"solid\",\n size = \"md\",\n icon,\n onTagClick,\n onIconClick,\n}) => {\n return (\n <ChakraTag\n size={size}\n variant={variant}\n colorScheme={colorScheme}\n borderRadius=\"full\"\n cursor={\"pointer\"}\n onClick={() => onTagClick?.()}\n >\n <TagLabel>{label}</TagLabel>\n {icon && (\n <TagRightIcon\n as={icon}\n boxSize=\"1em\"\n ml={1.5}\n cursor={onIconClick ? \"pointer\" : \"default\"}\n onClick={(e) => {\n e.stopPropagation();\n onIconClick?.();\n }}\n transition=\"all 0.2s ease\"\n _hover={{\n opacity: 0.8,\n transform: \"scale(1.05)\",\n cursor: onIconClick ? \"pointer\" : \"default\",\n }}\n />\n )}\n </ChakraTag>\n );\n};\n\nexport default Tag;\n","import React from \"react\";\nimport { Tooltip as ChakraTooltip } from \"@chakra-ui/react\";\nimport { ToolTipProps } from \"./ToolTipProps\";\n\nexport default function ToolTip({\n placement,\n label,\n children,\n hasArrow,\n fontSize,\n bg,\n color,\n isDisabled,\n isOpen,\n defaultIsOpen,\n openDelay,\n closeDelay,\n arrowSize,\n closeOnClick,\n size,\n width,\n height,\n arrowPadding,\n arrowShadowColor,\n direction,\n gutter,\n onClose,\n modifiers,\n closeOnPointerDown,\n styles,\n}: ToolTipProps) {\n return (\n <ChakraTooltip\n label={label}\n placement={placement}\n hasArrow={hasArrow}\n fontSize={fontSize}\n bg={bg}\n color={color}\n isDisabled={isDisabled}\n isOpen={isOpen}\n defaultIsOpen={defaultIsOpen}\n openDelay={openDelay}\n closeDelay={closeDelay}\n arrowSize={arrowSize}\n closeOnClick={closeOnClick}\n size={size}\n width={width}\n height={height}\n arrowPadding={arrowPadding}\n arrowShadowColor={arrowShadowColor}\n direction={direction}\n gutter={gutter}\n onClose={onClose}\n modifiers={modifiers}\n closeOnPointerDown={closeOnPointerDown}\n style={styles}\n >\n {children}\n </ChakraTooltip>\n );\n}\n","import { Text } from '@chakra-ui/react';\nimport React, { useEffect, useRef, useState } from 'react'\nimport ToolTip from '../ToolTip/ToolTip';\n\nconst SelectTruncatedLabel = ({\n label,\n maxWidth = \"6rem\",\n}: {\n label: string;\n maxWidth?: string;\n}) => {\n const textRef = useRef<HTMLDivElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useEffect(() => {\n const el = textRef.current;\n if (el) {\n setIsOverflowing(el.scrollWidth > el.clientWidth);\n }\n }, [label, maxWidth]);\n\n const textElement = (\n <Text ref={textRef} maxW={maxWidth} isTruncated whiteSpace=\"nowrap\" fontWeight={500} fontSize={\"0.875rem\"} letterSpacing={\"0.044rem\"}>\n {label}\n </Text>\n );\n\n return isOverflowing ? <ToolTip label={label} placement=\"top\">{textElement}</ToolTip> : textElement;\n}\n\nexport default SelectTruncatedLabel;","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n Box,\n Input,\n InputGroup,\n Spinner,\n Text,\n IconButton,\n Checkbox,\n useOutsideClick,\n Portal,\n} from '@chakra-ui/react';\nimport { ChevronDown, ChevronUp, CircleX, Plus, X } from 'lucide-react';\nimport { SearchSelectProps, Options } from './SearchSelectProps';\nimport { TextLabel } from '../Common/FormLabel';\nimport Tag from '../Tag/Tag';\nimport { useCustomTheme } from '../../Theme/useCustomTheme';\nimport ErrorMessage from '../Common/ErrorMessage';\nimport HelperText from '../Common/HelperText';\nimport ToolTip from '../ToolTip/ToolTip';\nimport SelectTruncatedLabel from './SelectTruncatedLabel';\n\n\nconst normalizeSingleValue = (val: unknown): Options | undefined => {\n if (typeof val === 'object' && val !== null && 'id' in val && 'label' in val) {\n return val as Options;\n }\n return undefined;\n};\n\nconst normalizeMultiValue = (val: unknown): Options[] => {\n if (Array.isArray(val)) {\n return val.filter((v): v is Options => v && typeof v === 'object' && 'id' in v && 'label' in v);\n }\n return [];\n};\n\nconst SearchSelect = ({\n id,\n label,\n options,\n onSelect,\n onSearch,\n isOptionLoading = false,\n isLoading = false,\n loadingText = 'Loading...',\n placeholder = 'Select',\n value,\n searchQuery = '',\n isMultiple = false,\n isRequired = false,\n error = false,\n errorMessage,\n helperText,\n width = '100%',\n height = \"2.75rem\",\n size = 'md',\n chip,\n information,\n rightIcon,\n addNew,\n isSelectAll = false,\n pagination,\n insideSelect,\n isRemoveAllIcon\n}: SearchSelectProps) => {\n\n const [inputValue, setInputValue] = useState<string>(searchQuery);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [hasMore, setHasMore] = useState<boolean>(true);\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const [focused, setFocused] = useState(false);\n const [customSelectOpen, setCustomSelectOpen] = useState(false);\n const customSelectRef = useRef<HTMLDivElement>(null);\n const [customSelectPos, setCustomSelectPos] = useState({ top: 0, left: 0, width: 0 });\n\n\n const theme = useCustomTheme();\n\n useOutsideClick({\n ref: containerRef,\n handler: () => {\n setIsOpen(false);\n },\n });\n\n const selectedValues: Options[] = isMultiple\n ? normalizeMultiValue(value)\n : normalizeSingleValue(value)\n ? [normalizeSingleValue(value)!]\n : [];\n\n const filteredOptions = options.filter((option) =>\n option?.label?.toLowerCase()?.includes(inputValue?.toLowerCase())\n );\n\n useEffect(() => {\n const delayDebounce = setTimeout(() => {\n onSearch?.(inputValue);\n }, 1000);\n return () => clearTimeout(delayDebounce);\n }, [inputValue, onSearch]);\n\n useEffect(() => {\n if (pagination?.limit) {\n setHasMore(options.length % pagination.limit === 0);\n }\n }, [options.length, pagination?.limit]);\n\n const handleSelect = (option: Options) => {\n if (isMultiple) {\n const exists = selectedValues.find((v) => v.id === option.id);\n const updated = exists\n ? selectedValues.filter((v) => v.id !== option.id)\n : [...selectedValues, option];\n onSelect?.(updated);\n } else {\n onSelect?.(option);\n setIsOpen(false);\n }\n setInputValue('');\n };\n\n const handleRemove = (id: string | number) => {\n const updated = selectedValues.filter((v) => v.id !== id);\n onSelect?.(updated);\n };\n\n const handleClearAll = () => {\n onSelect?.(isMultiple ? [] : undefined);\n setInputValue('');\n };\n\n const handleSelectAll = () => {\n const allSelected = filteredOptions.every((opt) =>\n selectedValues.some((sel) => sel.id === opt.id)\n );\n if (allSelected) {\n const updated = selectedValues.filter(\n (sel) => !filteredOptions.some((opt) => opt.id === sel.id)\n );\n onSelect?.(updated);\n } else {\n const filteredNotSelected = filteredOptions.filter(\n (opt) => !selectedValues.some((sel) => sel.id === opt.id)\n );\n onSelect?.([...selectedValues, ...filteredNotSelected]);\n }\n setInputValue('');\n };\n\n const isSelected = (id: string | number) =>\n selectedValues.some((v) => v.id === id);\n\n const isValidIcon = (icon: unknown): icon is React.ReactElement =>\n React.isValidElement(icon);\n\n const allFilteredSelected =\n filteredOptions.length > 0 &&\n filteredOptions.every((opt) =>\n selectedValues.some((sel) => sel.id === opt.id)\n );\n\n const handleScroll = useCallback(\n (e: React.UIEvent<HTMLDivElement>) => {\n if (!pagination || !pagination.onScroll || pagination.scrollLoading || !hasMore) return;\n const target = e.currentTarget;\n const nearBottom =\n target.scrollTop + target.clientHeight >= target.scrollHeight - 5;\n if (nearBottom) {\n if (scrollTimeoutRef.current) clearTimeout(scrollTimeoutRef.current);\n scrollTimeoutRef.current = setTimeout(() => {\n const startIndex = options.length + 1;\n pagination.onScroll?.(startIndex, pagination.limit || 10, inputValue);\n }, 200);\n }\n },\n [pagination, options.length, inputValue, hasMore]\n );\n\n useOutsideClick({\n ref: customSelectRef,\n handler: (e: Event) => {\n const dropdown = document.getElementById('custom-select-portal');\n if (dropdown && dropdown.contains(e.target as Node)) return;\n setCustomSelectOpen(false);\n },\n });\n\n\n const handleCustomSelect = (item: any) => {\n if (typeof insideSelect?.onSelect === 'function') {\n insideSelect.onSelect(item);\n }\n setCustomSelectOpen(false);\n }\n\n useEffect(() => {\n if (customSelectOpen && customSelectRef.current) {\n const rect = customSelectRef.current.getBoundingClientRect();\n setCustomSelectPos({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width + 30,\n });\n }\n }, [customSelectOpen]);\n\n\n return (\n <Box ref={containerRef} width={width} position=\"relative\">\n {label && (\n <TextLabel\n label={label}\n id={id}\n isRequired={isRequired}\n isInformation={information?.isInformation}\n informationMessage={information?.informationMessage}\n />\n )}\n <InputGroup size={size}>\n <Box\n as=\"div\"\n w=\"100%\"\n minH=\"2.85rem\"\n px={3}\n display=\"flex\"\n alignItems=\"center\"\n flexWrap=\"wrap\"\n gap=\"0.375rem\"\n border=\"0.063rem solid\"\n borderColor={error ? theme.colors.semantic.error[500] : theme.colors.primary[500]}\n borderRadius=\"0.25rem\"\n bg=\"white\"\n boxShadow={focused ? error ? `0 0 0 0.125rem ${theme.colors.boxShadow?.error}` : `0 0 0 0.125rem ${theme.colors.boxShadow?.primary}` : 'none'}\n transition=\"box-shadow 0.2s, border-color 0.2s\"\n // onClick={() => inputRef.current?.focus()}\n >\n {insideSelect && (\n <Box\n position=\"relative\"\n ref={customSelectRef}\n backgroundColor={theme.colors.gray[200]}\n ml=\"-0.75rem\"\n h=\"-webkit-fill-available\"\n borderRadius=\"0.25rem 0 0 0.25rem\"\n onClick={() => setCustomSelectOpen((prev) => !prev)}\n >\n <Box\n minW=\"5rem\"\n cursor=\"pointer\"\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width={insideSelect.width}\n height={height}\n pl=\"0.5rem\"\n pr=\"0.5rem\"\n >\n <SelectTruncatedLabel\n label={insideSelect?.value?.label ?? \"\"}\n maxWidth={insideSelect?.width || \"6rem\"}\n />\n {customSelectOpen ? <ChevronUp size={16} /> : <ChevronDown size={16} />}\n </Box>\n\n {customSelectOpen && (\n <Portal>\n <Box\n id=\"custom-select-portal\"\n position=\"absolute\"\n top={`${customSelectPos.top}px`}\n left={`${customSelectPos.left}px`}\n zIndex={1400}\n bg={theme.colors.white}\n border=\"0.063rem solid\"\n borderColor={theme.colors.gray[300]}\n borderRadius=\"md\"\n boxShadow=\"md\"\n minW=\"10rem\"\n maxW=\"38rem\"\n >\n {insideSelect?.option?.map((item) => (\n <Box\n key={item.id}\n display=\"flex\"\n alignItems=\"center\"\n height=\"2.5rem\"\n px=\"0.75rem\"\n fontSize=\"sm\"\n _hover={{ bg: theme.colors.gray[100] }}\n cursor=\"pointer\"\n onClick={(e) => {\n e.stopPropagation();\n handleCustomSelect(item);\n }}\n >\n {item.label}\n </Box>\n ))}\n </Box>\n </Portal>\n )}\n </Box>\n )}\n\n {isMultiple\n ? selectedValues.slice(0, chip?.maxChips || selectedValues.length).map((item) => (\n <Tag\n key={item.id}\n label={\n chip?.maxText && item.label.length > chip.maxText\n ? item.label.slice(0, chip.maxText) + '…'\n : item.label\n }\n onIconClick={chip?.onClick ? () => handleRemove(item?.id) : undefined}\n icon={chip?.onClick ? CircleX : undefined}\n colorScheme=\"gray\"\n size=\"sm\"\n />\n ))\n : selectedValues.length === 1 &&\n inputValue === '' && (\n <Box\n as=\"button\"\n type=\"button\"\n onClick={() => setIsOpen(true)}\n fontSize=\"sm\"\n color={theme.colors.gray[800]}\n background=\"transparent\"\n border=\"none\"\n cursor=\"pointer\"\n p={0}\n >\n {selectedValues[0].label}\n </Box>\n )}\n\n {chip?.maxChips &&\n isMultiple &&\n selectedValues.length > chip.maxChips && (\n <Tag\n key=\"extra-count\"\n label={`+ ${selectedValues.length - chip.maxChips}`}\n colorScheme=\"gray\"\n size=\"sm\"\n />\n )}\n\n {(isMultiple || inputValue || !selectedValues.length || !isMultiple) && (\n <Input\n ref={inputRef}\n variant=\"unstyled\"\n flex=\"1\"\n minW=\"5rem\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onFocus={() => {\n setFocused(true);\n setIsOpen(true);\n }}\n onBlur={() => setFocused(false)}\n placeholder={placeholder}\n />\n )}\n\n <Box ml=\"auto\" display=\"flex\" alignItems=\"center\" gap={1}>\n {isRemoveAllIcon && selectedValues.length > 0 && (\n <ToolTip\n placement=\"top\"\n label=\"Remove All\"\n hasArrow\n bg={theme.colors.gray[600]}\n color={theme.colors.white}\n fontSize=\"0.75rem\"\n >\n <IconButton\n icon={<X size={12} color={theme.colors.black} />}\n aria-label=\"Clear all\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearAll}\n sx={{\n bg: 'transparent',\n _hover: { bg: 'transparent' },\n _active: { bg: 'transparent' },\n _focus: { boxShadow: 'none', bg: 'transparent' },\n }}\n />\n </ToolTip>\n )}\n\n {isLoading ? (\n <Spinner size=\"sm\" />\n ) : isValidIcon(rightIcon?.icon) ? (\n <IconButton\n icon={rightIcon?.icon}\n aria-label=\"right-icon\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={rightIcon?.onClick}\n />\n ) : (\n <Box\n as=\"button\"\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsOpen((prev) => !prev);\n }}\n aria-label=\"toggle-dropdown\"\n display=\"flex\"\n alignItems=\"center\"\n >\n {isOpen ? <ChevronUp size={16} /> : <ChevronDown size={16} />}\n </Box>\n )}\n </Box>\n </Box>\n </InputGroup>\n\n {isOpen && (\n <Box\n position=\"absolute\"\n zIndex={10}\n width=\"100%\"\n maxH=\"20rem\"\n borderWidth={1}\n borderRadius=\"sm\"\n bg=\"white\"\n boxShadow=\"md\"\n display=\"flex\"\n flexDirection=\"column\"\n >\n {isMultiple && isSelectAll && (\n <Box\n p={2}\n px={3}\n cursor=\"pointer\"\n onClick={handleSelectAll}\n display=\"flex\"\n alignItems=\"center\"\n gap={2}\n borderBottom={`0.063rem solid ${theme.colors.gray[100]}`}\n >\n <Checkbox isChecked={allFilteredSelected} pointerEvents=\"none\" />\n <Text fontSize=\"sm\">\n {allFilteredSelected ? 'Unselect All' : 'Select All'}\n </Text>\n </Box>\n )}\n\n <Box\n flex=\"1\"\n overflowY=\"auto\"\n onScroll={handleScroll}\n maxH=\"15rem\"\n borderBottom=\"0.063rem solid\"\n borderColor={theme.colors.gray[200]}\n >\n {isOptionLoading ? (\n <Box p={3} display=\"flex\" alignItems=\"center\" gap={2}>\n <Spinner size=\"sm\" />\n <Text fontSize=\"sm\">{loadingText}</Text>\n </Box>\n ) : filteredOptions.length === 0 ? (\n <Text p={3} fontSize=\"sm\" color={theme.colors.gray[500]}>\n No results found\n </Text>\n ) : (\n filteredOptions.map((option) => (\n <Box\n key={option.id}\n p={2}\n px={3}\n cursor=\"pointer\"\n bg={isSelected(option.id) ? theme.colors.gray[100] : 'transparent'}\n _hover={{ bg: theme.colors.gray[50] }}\n onClick={() => handleSelect(option)}\n display=\"flex\"\n alignItems=\"center\"\n gap={2}\n borderBottom={`0.063rem solid ${theme.colors.gray[100]}`}\n >\n {isMultiple && (\n <Checkbox\n isChecked={isSelected(option.id)}\n pointerEvents=\"none\"\n colorScheme=\"blue\"\n />\n )}\n {option.view ? <>{option.view}</> : <Text fontSize=\"sm\">{option.label}</Text>}\n </Box>\n ))\n )}\n </Box>\n\n {addNew?.enabled && (\n <Box\n p={2}\n borderTop=\"0.063rem solid\"\n borderColor={theme.colors.gray[200]}\n bg=\"white\"\n display=\"flex\"\n alignItems=\"center\"\n gap={2}\n cursor=\"pointer\"\n onClick={addNew.onClick}\n _hover={{ bg: theme.colors.gray[50] }}\n >\n {addNew.icon || <Plus size={16} />}\n <Text fontSize=\"sm\">{addNew.text || 'Add New'}</Text>\n </Box>\n )}\n </Box>\n )}\n {helperText && !error && <HelperText helperText={helperText} />}\n {error && <ErrorMessage errorMessage={errorMessage} />}\n </Box>\n );\n};\n\nexport default SearchSelect;","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n Box,\n Input,\n Spinner,\n VStack,\n Text,\n InputGroup,\n InputRightElement,\n HStack,\n Tag,\n TagLabel,\n TagCloseButton,\n Avatar,\n FormControl,\n} from \"@chakra-ui/react\";\nimport { selectOptions, SelectSearchProps } from \"./SelectSearchProps\";\nimport { TextLabel } from \"../Common/FormLabel\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { PlusIcon } from \"lucide-react\";\nimport ErrorMessage from \"../Common/ErrorMessage\";\n\nconst RenderOptions = ({\n isOptionLoading,\n filteredOptions,\n loadingText,\n handleOptionClick,\n isProfile,\n isColorOptions,\n}: {\n isOptionLoading: boolean | undefined;\n filteredOptions: selectOptions[];\n loadingText: string;\n isProfile: boolean | undefined;\n isColorOptions?: boolean | undefined;\n handleOptionClick: (option: selectOptions) => void;\n}) => {\n if (isOptionLoading) {\n return (\n <VStack py={2}>\n <Spinner size=\"sm\" color=\"blue.500\" />\n <Text color=\"blue.500\">{loadingText}</Text>\n </VStack>\n );\n }\n\n if (filteredOptions?.length) {\n return (\n <>\n {filteredOptions.map((option) => (\n <Box\n key={option.id}\n px={4}\n py={2}\n cursor=\"pointer\"\n _hover={{ backgroundColor: \"blue.50\" }}\n onClick={() => handleOptionClick(option)}\n display={\"flex\"}\n alignItems={\"center\"}\n gap={\"0.5rem\"}\n >\n {isProfile && (\n <Box>\n <Avatar\n size={\"sm\"}\n name={option.label.toLocaleUpperCase()}\n src={option.profileUrl ? option.profileUrl : undefined}\n />\n </Box>\n )}\n {isColorOptions && (\n <Box\n width={\"0.8rem\"}\n height={\"0.8rem\"}\n content=\"\"\n backgroundColor={option?.color}\n borderRadius={\"50%\"}\n ></Box>\n )}\n <Box>\n <Box>{option.label}</Box>\n {option.email && (\n <Box fontSize={12} color={\"gray.400\"}>\n {option.email}\n </Box>\n )}\n </Box>\n </Box>\n ))}\n </>\n );\n }\n\n return (\n <Text px={4} py={2} color=\"gray.500\">\n No options found\n </Text>\n );\n};\n\nexport default function SelectSearch({\n options,\n initialSelectedOption,\n onOptionSelect,\n inputOnchange,\n id,\n name,\n label,\n dropdownStyle,\n inputStyle,\n isOptionLoading,\n loadingText = \"loading\",\n boxStyle,\n placeholder = \"Select Option\",\n searchQuery = null,\n isInformation = false,\n informationMessage,\n rightIcon,\n rightElementStyle,\n isMultipleSelect = false,\n isRequired = false,\n onOptionMultiSelect,\n error = false,\n isProfile = false,\n isBottomIcon = false,\n errorMessage,\n\n // BottomIconStyle,\n BottomIcon = false,\n BottomText,\n handleBottomClick,\n BottomTextColor,\n isColorOptions,\n}: Readonly<SelectSearchProps>) {\n const theme = useCustomTheme();\n const [selectedOptions, setSelectedOptions] = useState<selectOptions[]>(\n initialSelectedOption ? [initialSelectedOption] : []\n );\n const [inputValue, setInputValue] = useState(searchQuery);\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState<\"above\" | \"below\">(\"below\");\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // const filteredOptions = useMemo(() => {\n // return options.filter((option) => {\n // const optionLabel = option.label || '';\n // const searchValue = inputValue || '';\n // return optionLabel.toLowerCase().includes(searchValue.toLowerCase());\n // });\n // }, [options, inputValue]);\n const filteredOptions = useMemo(() => {\n return options.filter((option) => {\n // First filter out already selected options\n // const isNotSelected = !selectedOptions.some(\n // (selected) => selected.id === option.id\n // );\n const isNotSelected = isMultipleSelect\n ? !selectedOptions.some((selected) => selected.id === option.id)\n : true;\n\n // Then apply the search filter\n const optionLabel = option.label || \"\";\n const searchValue = inputValue || \"\";\n\n return (\n isNotSelected &&\n optionLabel.toLowerCase().includes(searchValue.toLowerCase())\n );\n });\n }, [options, inputValue, isMultipleSelect, selectedOptions]);\n\n // const filteredOptions = useMemo(() => {\n // return options.filter((option) =>\n // option.label?.toLowerCase().includes((inputValue ?? \"\")?.toLowerCase())\n // );\n // }, [options, inputValue]);\n\n // const handleOptionClick = useCallback(\n // (option: selectOptions) => {\n // if (isMultipleSelect) {\n // setSelectedOptions((prev) => {\n // const isSelected = prev.some((selected) => selected.id === option.id);\n // const newSelected = isSelected\n // ? prev.filter((selected) => selected.id !== option.id)\n // : [...prev, option];\n\n // setInputValue(\"\");\n // if (onOptionMultiSelect) {\n // onOptionMultiSelect(newSelected);\n // }\n // return newSelected;\n // });\n // } else {\n // setInputValue(option.label);\n // setIsOpen(false);\n // if (onOptionSelect) {\n // onOptionSelect(option);\n // }\n // }\n // },\n // [isMultipleSelect, onOptionSelect, onOptionMultiSelect]\n // );\n const handleOptionClick = useCallback(\n (option: selectOptions) => {\n if (isMultipleSelect) {\n setSelectedOptions((prev) => {\n const isSelected = prev.some((selected) => selected.id === option.id);\n const newSelected = isSelected\n ? prev.filter((selected) => selected.id !== option.id)\n : [...prev, option];\n\n // Update the input value and notify the parent\n setInputValue(\"\");\n if (onOptionMultiSelect) {\n // Call the prop to update state in the parent component\n // Note: This should not directly set the state in SelectSearch\n setTimeout(() => onOptionMultiSelect(newSelected), 0);\n }\n return newSelected;\n });\n } else {\n setInputValue(option.label);\n setIsOpen(false);\n if (onOptionSelect) {\n onOptionSelect(option);\n }\n }\n },\n [isMultipleSelect, onOptionSelect, onOptionMultiSelect]\n );\n\n const handleRemoveOption = (option: selectOptions) => {\n setSelectedOptions((prev) =>\n prev.filter((selected) => selected.id !== option.id)\n );\n if (onOptionMultiSelect) {\n onOptionMultiSelect(\n selectedOptions.filter((selected) => selected.id !== option.id)\n );\n setInputValue(\"\");\n }\n };\n\n const handleInputChange = (value: any) => {\n setInputValue(value);\n inputOnchange(value);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n const matchingOption = options.find(\n (option) =>\n option.label?.toLowerCase() === (inputValue ?? \"\")?.toLowerCase()\n );\n if (matchingOption) {\n handleOptionClick(matchingOption);\n }\n }\n };\n\n const updateDropdownPosition = () => {\n if (inputRef.current && dropdownRef.current) {\n const inputRect = inputRef.current.getBoundingClientRect();\n const dropdownRect = dropdownRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - inputRect.bottom + window.scrollY;\n const spaceAbove = inputRect.top + window.scrollY;\n\n if (spaceBelow >= dropdownRect.height) {\n setPosition(\"below\");\n } else if (spaceAbove >= dropdownRect.height) {\n setPosition(\"above\");\n } else {\n setPosition(\"below\");\n }\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n updateDropdownPosition();\n }\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n inputRef.current &&\n dropdownRef.current &&\n !inputRef.current.contains(event.target as Node) &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n\n return (\n <>\n <FormControl isInvalid={error}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n position=\"relative\"\n sx={boxStyle}\n >\n {label && (\n <TextLabel\n label={label}\n id={id}\n isRequired={isRequired}\n isInformation={isInformation}\n informationMessage={informationMessage}\n />\n )}\n\n {/* Display selected options as chips */}\n {isMultipleSelect && selectedOptions.length > 0 && (\n <HStack spacing={2} mb={2}>\n {selectedOptions.map((option) => (\n <Tag\n size=\"md\"\n key={option.id}\n borderRadius=\"full\"\n variant=\"solid\"\n sx={{ backgroundColor: theme.colors.primary[500] }}\n >\n <TagLabel width={\"50px\"}>{option.label}</TagLabel>\n <TagCloseButton onClick={() => handleRemoveOption(option)} />\n </Tag>\n ))}\n </HStack>\n )}\n\n <InputGroup>\n <Input\n ref={inputRef}\n border={error ? \"2px solid #DC143C\" : \"2px solid #e2e8f0\"}\n variant=\"flushed\"\n value={inputValue ? inputValue : \"\"}\n onClick={() => setIsOpen(true)}\n onFocus={() => setIsOpen(true)}\n onChange={(e) => handleInputChange(e.target.value)}\n placeholder={placeholder}\n onKeyDown={handleKeyDown}\n id={id}\n name={name}\n cursor=\"pointer\"\n borderColor=\"gray.300\"\n _hover={{ borderColor: \"blue.500\" }}\n _focus={{ borderColor: error ? \"none\" : \"blue.500\" }}\n style={{\n ...inputStyle,\n backgroundColor: theme.colors.backgroundColor.main,\n fontWeight: 600,\n color: theme.colors.gray[700],\n padding: \"0 0.5rem\",\n fontSize: 15,\n letterSpacing: 0.7,\n border: error ? \"2px solid #DC143C\" : \"1px solid #e2e8f0\",\n }}\n />\n {rightIcon && (\n <InputRightElement\n pointerEvents=\"none\"\n children={rightIcon}\n style={{ ...rightElementStyle }}\n />\n )}\n </InputGroup>\n\n {isOpen && (\n <Box\n ref={dropdownRef}\n marginTop={\"5px\"}\n position=\"absolute\"\n top={position === \"below\" ? \"100%\" : \"auto\"}\n bottom={position === \"above\" ? \"100%\" : \"auto\"}\n left={0}\n right={0}\n border=\"1px solid\"\n borderColor=\"gray.300\"\n borderRadius=\"md\"\n bg=\"white\"\n maxHeight=\"150px\"\n overflowY=\"auto\"\n zIndex={10}\n >\n <RenderOptions\n isOptionLoading={isOptionLoading}\n filteredOptions={filteredOptions}\n loadingText={loadingText}\n handleOptionClick={handleOptionClick}\n isProfile={isProfile}\n isColorOptions={isColorOptions}\n />\n <hr></hr>\n {isBottomIcon && (\n <Box\n position={\"sticky\"}\n bottom={0}\n background={\"white\"}\n display={\"flex\"}\n alignItems={\"center\"}\n pl={\"1rem\"}\n cursor=\"pointer\"\n onClick={handleBottomClick}\n borderColor={\"gray.300\"}\n zIndex={1}\n borderTop={\"1px solid lightgray\"}\n >\n <Box>\n {BottomIcon ? BottomIcon : <PlusIcon size={\"1rem\"} />}\n </Box>\n <Box\n fontSize={\"0.875rem\"}\n color={\n BottomTextColor\n ? (BottomTextColor as string)\n : theme.colors.primary[500]\n }\n padding={\"8px 8px\"}\n >\n {BottomText || \"Add New\"}\n </Box>\n </Box>\n )}\n </Box>\n )}\n\n {error && <ErrorMessage errorMessage={errorMessage} />}\n </Box>\n </FormControl>\n </>\n );\n}\n","export const FlexCss = {\n \"&::-webkit-scrollbar\": {\n width: \"0.188rem\",\n },\n \"&::-webkit-scrollbar-track\": {\n background: \"transparent\",\n },\n \"&::-webkit-scrollbar-thumb\": {\n background: \"transparent\",\n transition: \"background 0.5s\",\n },\n \"&:hover::-webkit-scrollbar-thumb\": {\n background: \"#9A4FE5\",\n },\n};\n\nexport const cssForScrollBar = (theme: any) => ({\n \"&::-webkit-scrollbar\": {\n width: \"0.125rem\",\n },\n \"&::-webkit-scrollbar-track\": {\n background: theme.colors.sidebar.background[500],\n },\n \"&::-webkit-scrollbar-thumb\": {\n background: \"transparent\",\n borderRadius: \"0.5rem\",\n },\n \"&:hover::-webkit-scrollbar-thumb\": {\n background: theme.colors.primary[500],\n },\n \"&:hover::-webkit-scrollbar-thumb:hover\": {\n background: theme.colors.primary[700],\n },\n scrollbarWidth: \"none\",\n \"&:hover\": {\n scrollbarWidth: \"thin\",\n scrollbarColor: `${theme.colors.primary[500]} ${theme.colors.sidebar.background[500]}`,\n },\n});","import React, { useRef, useState, useEffect } from \"react\";\nimport { Tooltip, Text, TextProps, Box } from \"@chakra-ui/react\";\n\ninterface TruncatedTextWithTooltipProps extends TextProps {\n children: string;\n open?: boolean;\n}\n\nconst TruncatedTextWithTooltip: React.FC<TruncatedTextWithTooltipProps> = ({\n children,\n open = false,\n ...props\n}) => {\n const textRef = useRef<HTMLDivElement>(null);\n const shadowRef = useRef<HTMLDivElement>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n\n useEffect(() => {\n const checkTruncation = () => {\n const textEl = textRef.current;\n const shadowEl = shadowRef.current;\n\n if (textEl && shadowEl) {\n const visibleWidth = textEl.offsetWidth;\n const fullTextWidth = shadowEl.scrollWidth;\n\n setIsTruncated(fullTextWidth > visibleWidth);\n }\n };\n\n checkTruncation();\n\n const resizeObserver = new ResizeObserver(checkTruncation);\n if (textRef.current) {\n resizeObserver.observe(textRef.current);\n }\n\n return () => resizeObserver.disconnect();\n }, [children]);\n\n return (\n <>\n <Tooltip label={children} isDisabled={!isTruncated} hasArrow placement=\"right\">\n <Text\n ref={textRef}\n isTruncated\n whiteSpace=\"nowrap\"\n overflow=\"hidden\"\n textOverflow=\"ellipsis\"\n maxW=\"100%\"\n {...props}\n >\n {children}\n </Text>\n </Tooltip>\n\n <Box\n ref={shadowRef}\n position=\"absolute\"\n visibility=\"hidden\"\n whiteSpace=\"nowrap\"\n fontSize={props.fontSize}\n fontWeight={props.fontWeight}\n fontFamily={props.fontFamily}\n lineHeight={props.lineHeight}\n px={props.px}\n py={props.py}\n >\n {children}\n </Box>\n </>\n );\n};\n\nexport default TruncatedTextWithTooltip;\n\n","import React from \"react\";\nimport { Icon, Flex, Badge } from \"@chakra-ui/react\";\nimport { LockKeyhole } from \"lucide-react\";\nimport { MenuProps } from \"../SideBarProps\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport TruncatedTextWithTooltip from \"./TextTruncation\";\n\ninterface Props {\n menu: MenuProps;\n handleMenuClick?: (menu: MenuProps) => void;\n activeMenu?: string | number;\n}\n\nconst MenuPopoverContent: React.FC<Props> = ({\n menu,\n handleMenuClick,\n activeMenu,\n}) => {\n const theme = useCustomTheme();\n const { title, subMenu, badge, locked } = menu;\n\n const isAnySubActive = subMenu?.some((sub) => sub.id === activeMenu);\n return (\n <>\n {/* Header Title */}\n <Flex align=\"center\" gap=\"0.625rem\" mb={subMenu?.length ? \"0.5rem\" : 0}>\n <TruncatedTextWithTooltip fontWeight=\"medium\" fontSize=\"1rem\" flex=\"1\">\n {title}\n </TruncatedTextWithTooltip>\n\n {badge && (\n <Badge colorScheme=\"teal\" fontSize=\"0.625rem\" variant={\"subtle\"}>\n {badge}\n </Badge>\n )}\n\n {locked && <Icon as={LockKeyhole} fontSize=\"1rem\" />}\n </Flex>\n\n {/* Submenus */}\n {subMenu?.map((sub) => {\n const isSubActive = activeMenu === sub.id;\n\n return (\n <Flex\n key={sub.id || sub.title}\n onClick={() => !sub.disabled && handleMenuClick?.(sub)}\n px=\"1rem\"\n py=\"0.5rem\"\n align=\"center\"\n justify=\"space-between\"\n gap=\"0.75rem\"\n _hover={{\n bg: !sub.disabled ? theme.colors.primary[500] : \"transparent\",\n cursor: !sub.disabled ? \"pointer\" : \"not-allowed\",\n }}\n bg={\n isAnySubActive\n ? theme.colors.primary[500]\n : theme.colors.primary[700]\n }\n borderLeft={\n isSubActive\n ? `0.188rem solid ${theme.colors.background[300]}`\n : \"0.188rem solid transparent\"\n }\n color=\"white\"\n opacity={sub.disabled ? 0.5 : 1}\n pointerEvents={sub.disabled ? \"none\" : \"auto\"}\n >\n {/* Left: Icon + Title */}\n <Flex align=\"center\" gap=\"0.5rem\" overflow={\"auto\"}>\n <Icon as={sub.icon} fontSize=\"1rem\" />\n <TruncatedTextWithTooltip\n fontSize=\"0.875rem\"\n fontWeight=\"medium\"\n flex={1}\n >\n {sub.title}\n </TruncatedTextWithTooltip>\n </Flex>\n\n {/* Right: Badge or Lock */}\n {sub.locked ? (\n <Icon as={LockKeyhole} fontSize=\"1rem\" />\n ) : sub.badge ? (\n <Badge colorScheme=\"teal\" fontSize=\"0.625rem\" variant={\"subtle\"}>\n {sub.badge}\n </Badge>\n ) : null}\n </Flex>\n );\n })}\n </>\n );\n};\n\nexport default MenuPopoverContent;\n","import React, { useState } from \"react\";\nimport {\n Box,\n Flex,\n Icon,\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverBody,\n Badge,\n Collapse,\n Portal,\n} from \"@chakra-ui/react\";\nimport MenuPopoverContent from \"./MenuPopoverContent\";\nimport { MenuProps } from \"../SideBarProps\";\nimport { ChevronDown, ChevronRight, LockKeyhole } from \"lucide-react\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport TruncatedTextWithTooltip from \"./TextTruncation\";\n\ninterface Props {\n menu: MenuProps;\n activeMenu: string | number;\n toggle: boolean;\n handleClick?: (menu: MenuProps) => void;\n selectedSubMenu?: string | null;\n}\n\nconst MenuItemBox: React.FC<Props> = ({\n menu,\n activeMenu,\n toggle,\n handleClick,\n}) => {\n const theme = useCustomTheme();\n\n const { title, icon, disabled, locked, badge, subMenu } = menu;\n const hasSubMenu = !!subMenu?.length;\n const [isOpen, setIsOpen] = useState(false);\n\n const isChildActive = subMenu?.some((sub) => sub.id === activeMenu);\n const isParentActive = activeMenu === menu.id;\n const isAnyActive = isParentActive || isChildActive;\n\n const handleToggleSubMenu = () => {\n if (!disabled && hasSubMenu) {\n setIsOpen(!isOpen);\n } else if (!disabled) {\n handleClick?.(menu);\n }\n };\n\n const commonStyles = {\n w: \"100%\",\n px: \"1.5rem\",\n py: \"0.75rem\",\n fontWeight: \"medium\",\n backgroundColor: isAnyActive ? theme.colors.primary[500] : \"transparent\",\n color: disabled ? \"gray.400\" : theme.colors.white,\n _hover: disabled\n ? {}\n : {\n backgroundColor: theme.colors.primary[700],\n },\n pl: toggle ? \"1.6875rem\" : undefined,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n };\n\n const buttonContent = (\n <Flex align=\"center\" gap=\"0.625rem\" justify=\"space-between\">\n <Flex align=\"center\" gap=\"0.625rem\" overflow={\"auto\"}>\n <Icon\n as={icon}\n fontSize=\"1.25rem\"\n color={disabled ? theme.colors.gray[400] : theme.colors.white}\n />\n {!toggle && (\n <TruncatedTextWithTooltip open={isOpen} fontSize=\"1rem\" flex=\"1\">\n {title}\n </TruncatedTextWithTooltip>\n )}\n </Flex>\n {!toggle && (\n <Flex align=\"center\" gap=\"0.375rem\">\n {badge && (\n <Badge colorScheme=\"teal\" fontSize=\"0.625rem\" variant={\"subtle\"}>\n {badge}\n </Badge>\n )}\n {locked && <Icon as={LockKeyhole} fontSize=\"1rem\" />}\n {hasSubMenu && (\n <Icon\n as={isOpen ? ChevronDown : ChevronRight}\n fontSize=\"1rem\"\n onClick={(e) => {\n e.stopPropagation();\n handleToggleSubMenu();\n }}\n />\n )}\n </Flex>\n )}\n </Flex>\n );\n\n if (toggle) {\n // Collapsed sidebar: show Popover\n return (\n <Popover\n trigger=\"hover\"\n placement=\"right-start\"\n closeOnBlur={false}\n isLazy\n >\n <PopoverTrigger>\n <Box {...commonStyles} onClick={handleToggleSubMenu}>\n {buttonContent}\n </Box>\n </PopoverTrigger>\n <Portal>\n <PopoverContent\n borderRadius=\"0.063rem\"\n bg={theme.colors.primary[isAnyActive ? 500 : 700]}\n boxShadow=\"lg\"\n minW=\"10rem\"\n maxW=\"14rem\"\n py=\"0.125rem\"\n ml=\"-0.313rem\"\n cursor={disabled ? \"not-allowed\" : \"pointer\"}\n zIndex={1500}\n >\n <PopoverBody p=\"0.5rem\" color=\"white\">\n <MenuPopoverContent\n menu={menu}\n handleMenuClick={handleClick}\n activeMenu={activeMenu}\n />\n </PopoverBody>\n </PopoverContent>\n </Portal>\n </Popover>\n );\n }\n\n return (\n <>\n <Box {...commonStyles} onClick={handleToggleSubMenu}>\n {buttonContent}\n </Box>\n\n {hasSubMenu && (\n <Collapse in={isOpen} animateOpacity>\n <Box>\n {subMenu.map((sub) => {\n const isSubActive = activeMenu === sub.id;\n\n return (\n <Box\n key={sub.id || sub.title}\n py=\"0.5rem\"\n px=\"1.25rem\"\n pl=\"3.3rem\"\n fontSize=\"0.875rem\"\n backgroundColor={\n isAnyActive ? theme.colors.primary[500] : \"transparent\"\n }\n borderLeft={\n isSubActive\n ? `0.188rem solid ${theme.colors.background[300]}`\n : \"0.188rem solid transparent\"\n }\n _hover={{\n backgroundColor: theme.colors.primary[700],\n }}\n opacity={sub.disabled ? 0.6 : 1}\n cursor={sub.disabled ? \"not-allowed\" : \"pointer\"}\n pointerEvents={sub.disabled ? \"none\" : \"auto\"}\n onClick={() => !sub.disabled && handleClick?.(sub)}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap=\"0.5rem\"\n color={theme.colors.white}\n >\n <Flex align=\"center\" gap=\"0.5rem\" overflow={\"auto\"}>\n <Icon as={sub.icon} fontSize=\"1rem\" />\n <TruncatedTextWithTooltip\n fontSize=\"0.875rem\"\n fontWeight=\"medium\"\n open={isOpen}\n >\n {sub.title}\n </TruncatedTextWithTooltip>\n </Flex>\n\n {sub.locked ? (\n <Icon as={LockKeyhole} fontSize=\"1rem\" />\n ) : sub.badge ? (\n <Badge\n colorScheme=\"teal\"\n fontSize=\"0.625rem\"\n variant={\"subtle\"}\n >\n {sub.badge}\n </Badge>\n ) : null}\n </Box>\n );\n })}\n </Box>\n </Collapse>\n )}\n </>\n );\n};\n\nexport default MenuItemBox;\n","import React from \"react\";\nimport { Box } from \"@chakra-ui/react\";\nimport { RenderMenuType } from \"../SideBarProps\";\nimport MenuItemBox from \"./MenuItemBox\";\n\nconst MenuItems: React.FC<RenderMenuType> = ({\n menus,\n activeMenu,\n handleMenuClick,\n toggle,\n selectedSubMenu,\n}) => {\n return (\n <Box>\n {menus.map((menu) => (\n <MenuItemBox\n key={menu.title}\n menu={menu}\n activeMenu={activeMenu}\n toggle={toggle}\n handleClick={handleMenuClick}\n selectedSubMenu={selectedSubMenu}\n />\n ))}\n </Box>\n );\n};\n\nexport default MenuItems;\n","import React from 'react';\nimport { useCustomTheme } from \"../Theme/useCustomTheme\";\n\nconst DefaultLogo = () => {\n const theme = useCustomTheme();\n return (\n <svg\n width=\"12.09\"\n height=\"15.95\"\n viewBox=\"0 0 31 29\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M30.4999 6.26137V7.81058H15.9761H14.8787V22.8508V28.8862H12.5226C9.6824 28.8862 7.32632 26.4656 7.06812 23.3995C7.06812 23.2381 7.06812 23.0444 7.06812 22.8508V18.3323C7.06812 18.2677 7.06812 18.2032 7.06812 18.1063V15.5889V6.2291C7.06812 2.80793 9.84378 -5.72205e-06 13.2972 -5.72205e-06H24.8517C28.0147 0.355021 30.4676 3.00158 30.4676 6.2291L30.4999 6.26137Z\"\n fill={theme.colors.black}\n />\n <path\n d=\"M7.10053 23.3672H7.03598C5.16402 23.2381 3.48571 22.4635 2.25926 21.3338C0.871428 20.0428 0 18.2677 0 16.3312V15.6211H7.06825V18.1386C7.06825 18.2032 7.06825 18.2677 7.06825 18.3645V22.883C7.06825 23.0767 7.06825 23.2381 7.06825 23.4317L7.10053 23.3672Z\"\n fill={theme.colors.black}\n />\n <path\n d=\"M30.4678 12.0063V15.6211V17.1703C30.4678 20.6238 26.272 23.3994 21.0757 23.3994H14.8789V22.8508V15.6211H22.6572V7.81056C22.6895 7.81056 30.5001 7.81056 30.5001 7.81056V11.5868C30.5001 11.7159 30.5001 11.8772 30.5001 12.0063H30.4678Z\"\n fill={theme.colors.black}\n />\n </svg>\n\n )\n};\n\nexport default DefaultLogo;","import React from \"react\";\nimport { Flex, Text, Image, Box } from \"@chakra-ui/react\";\nimport { SidebarProps } from \"./SideBarProps\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { FlexCss } from \"../../Constants/Sidebar\";\nimport { ArrowLeftToLine, ArrowRightToLine, Plus } from \"lucide-react\";\nimport MenuItems from \"./components/MenuItems\";\nimport DefaultLogo from \"../../Assets/defaultLogo\";\n\nexport default function Sidebar({\n menus,\n activeMenu,\n handleMenuClick,\n toggle,\n changeToggle,\n logo,\n companyName,\n isDisableAddNew = false,\n onAddNewClick,\n selectedSubMenu,\n}: SidebarProps) {\n const theme = useCustomTheme();\n\n return (\n <Flex\n transition={\"all 0.5s\"}\n pos=\"sticky\"\n h=\"100vh\"\n boxShadow={theme.shadows.lg}\n w={toggle ? \"4.688rem\" : \"15.625rem\"}\n flexDir=\"column\"\n justifyContent=\"space-between\"\n background={theme.colors.sidebar.background[500]}\n >\n <Flex\n flexDir=\"column\"\n w=\"100%\"\n alignItems={toggle ? \"center\" : \"flex-start\"}\n as=\"nav\"\n h=\"100vh\"\n >\n {logo ? (\n <Flex\n my={3.5}\n alignItems=\"left\"\n gap={\"0.625rem\"}\n pl={toggle ? 0 : \"0.625rem\"}\n >\n <Image\n borderRadius=\"full\"\n boxSize={\"2rem\"}\n src={logo}\n alt=\"Company Logo\"\n />\n <Text\n display={toggle ? \"none\" : \"flex\"}\n fontSize={18}\n fontWeight={800}\n color={theme.colors.white}\n lineHeight={2}\n >\n {companyName}\n </Text>\n </Flex>\n ) : (\n <Flex\n my={3.5}\n alignItems=\"center\"\n gap={\"0.625rem\"}\n pl={toggle ? 0 : \"0.625rem\"}\n >\n <Box\n bg={theme.colors.white}\n color={theme.colors.black}\n borderRadius=\"full\"\n boxSize=\"2rem\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n fontWeight=\"bold\"\n fontSize={{ base: \"xl\", md: \"2xl\" }}\n >\n <DefaultLogo />\n </Box>\n <Text\n fontWeight={800}\n fontSize={\"1.3rem\"}\n textAlign={\"center\"}\n color={theme.colors.white}\n display={toggle ? \"none\" : \"flex\"}\n lineHeight={2}\n >\n {companyName}\n </Text>\n </Flex>\n )}\n <Box w=\"100%\" h=\"0.063rem\" bg={theme.colors.sidebar.background[200]} />\n\n <Flex\n // mt={5}\n flexDir=\"column\"\n w=\"100%\"\n alignItems={toggle ? \"center\" : \"flex-start\"}\n h=\"100vh\"\n overflow=\"auto\"\n css={FlexCss}\n overflowX=\"hidden\"\n >\n <Box\n width=\"100%\"\n flex=\"1\"\n overflowY=\"auto\"\n overflowX=\"hidden\"\n alignItems={toggle ? \"center\" : \"flex-start\"}\n css={{\n ...FlexCss,\n transition: 'all 0.3s ease',\n }}\n >\n <MenuItems\n activeMenu={activeMenu}\n menus={menus}\n handleMenuClick={handleMenuClick ?? (() => { })}\n toggle={toggle}\n selectedSubMenu={selectedSubMenu}\n />\n </Box>\n <Box\n w=\"100%\"\n h=\"0.063rem\"\n bg={theme.colors.sidebar.background[200]}\n mb=\"0.125rem\"\n />\n {!isDisableAddNew && (\n <Flex\n alignItems=\"center\"\n gap=\"0.5rem\"\n p=\"0.625rem\"\n // mt=\"1rem\"\n cursor=\"pointer\"\n _hover={{ backgroundColor: theme.colors.primary[500] }}\n w=\"100%\"\n justifyContent={toggle ? \"center\" : \"flex-start\"}\n onClick={onAddNewClick}\n >\n <Box\n w=\"1.625rem\"\n h=\"1.625rem\"\n bg={theme.colors.white}\n borderRadius=\"full\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Plus size={16} color={theme.colors.primary[500]} />\n </Box>\n <Text\n fontSize=\"0.875rem\"\n color={theme.colors.white}\n fontWeight=\"medium\"\n display={toggle ? \"none\" : \"block\"}\n >\n Add New\n </Text>\n </Flex>\n )}\n\n <Flex\n alignItems=\"center\"\n gap=\"0.5rem\"\n p=\"0.625rem\"\n cursor=\"pointer\"\n w=\"100%\"\n justifyContent={toggle ? \"center\" : \"flex-start\"}\n onClick={changeToggle}\n transition={\"all 0.5s\"}\n bg={theme.colors.gray[700]}\n >\n <Box\n w=\"1.625rem\"\n h=\"1.625rem\"\n borderRadius=\"full\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n {toggle ? (\n <ArrowRightToLine size={16} color={theme.colors?.white} />\n ) : (\n <ArrowLeftToLine size={16} color={theme.colors.white} />\n )}\n </Box>\n <Text\n fontSize=\"0.875rem\"\n color=\"white\"\n fontWeight=\"medium\"\n display={toggle ? \"none\" : \"block\"}\n >\n Collapse\n </Text>\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n","import React from \"react\";\nimport { Skeleton, SkeletonCircle, SkeletonText } from \"@chakra-ui/react\";\nimport { SkeletonProps } from \"./SkeletonProps\";\n\nexport default function Skeletons({\n startColor,\n endColor,\n height = \"20px\",\n isLoaded,\n bg,\n color,\n fadeDuration,\n children,\n type,\n speed,\n size,\n mt,\n noOfLines,\n spacing,\n skeletonHeight,\n width,\n}: SkeletonProps) {\n return (\n <>\n {type === \"skeleton\" && (\n <Skeleton\n height={height}\n isLoaded={isLoaded}\n bg={bg}\n color={color}\n fadeDuration={fadeDuration}\n startColor={startColor}\n endColor={endColor}\n speed={speed}\n width={width}\n >\n {children}\n </Skeleton>\n )}\n {type === \"circle\" && <SkeletonCircle size={size} speed={speed} />}\n {type === \"text\" && (\n <SkeletonText\n mt={mt}\n noOfLines={noOfLines}\n spacing={spacing}\n skeletonHeight={skeletonHeight}\n />\n )}\n </>\n );\n}\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { css } from \"@emotion/react\";\nimport { SwitchProps } from \"./SwitchProps\";\n\nconst SwitchContainer = styled.div`\n position: relative;\n width: 100%;\n height: auto;\n background-color: white;\n border-radius: 20px;\n overflow: hidden;\n`;\n\nconst Highlight = styled.div<{\n position: \"left\" | \"right\";\n //backgroundColor: string\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: 50%;\n background-color: #eff7ff;\n border-radius: 16px;\n border: 1px solid #88c9f3;\n transition: transform 0.3s ease;\n transform: ${({ position }) =>\n position === \"left\" ? \"translateX(0%)\" : \"translateX(100%)\"};\n`;\n// background-color: ${({ backgroundColor }) => backgroundColor};\nconst SwitchList = styled.ul`\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 1px;\n height: 100%;\n z-index: 1;\n`;\n\nconst SwitchOption = styled.li<{ isActive: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n width: 110px;\n height: 100%;\n color: black;\n transition: color 0.3s ease;\n font-weight: 400;\n padding: 2px;\n font-size: 14px;\n ${({ isActive }) =>\n isActive &&\n css`\n font-weight: 600;\n background-color: transparent;\n z-index: 1;\n `}\n`;\nconst SwitchContainerHeader = styled.div`\n background-color: white;\n height: auto;\n padding: 1px;\n width: 200px;\n border-radius: 20px;\n border: 1px solid #e2e7ee;\n`;\n\nexport default function Switch({\n leftText,\n rightText,\n leftIcon,\n rightIcon,\n onSwitchToggle,\n switchActive,\n //highlightColor = \"#3182ce\",\n}: SwitchProps) {\n return (\n <SwitchContainerHeader>\n <SwitchContainer>\n <Highlight\n position={switchActive}\n //backgroundColor={highlightColor}\n />\n <SwitchList>\n <SwitchOption\n isActive={switchActive === \"left\"}\n onClick={() => onSwitchToggle(\"left\")}\n >\n {leftIcon}\n {leftText}\n </SwitchOption>\n <SwitchOption\n isActive={switchActive === \"right\"}\n onClick={() => onSwitchToggle(\"right\")}\n >\n {rightIcon}\n {rightText}\n </SwitchOption>\n </SwitchList>\n </SwitchContainer>\n </SwitchContainerHeader>\n );\n}\n","import { useCallback, useEffect, useRef } from \"react\";\nimport { DataObject, TableHeaderProps } from \"../Components/Table/TableProps\";\nimport { useCustomTheme } from \"../Theme/useCustomTheme\";\n\nexport function SortMultiColumnData(\n data: Record<string, string | number>[],\n sortConfig: {\n column: string | number;\n direction: string;\n }[]\n) {\n if (!sortConfig.length) return data;\n return [...data].sort((a, b) => {\n for (const { column, direction } of sortConfig) {\n if (direction === \"none\") {\n continue;\n }\n const dirMultiplier = direction === \"asc\" ? 1 : -1;\n // Compare values for the current column\n if (a[column] < b[column]) return -1 * dirMultiplier;\n if (a[column] > b[column]) return 1 * dirMultiplier;\n\n // If values are equal, continue to the next sorting rule\n }\n return 0; // Return 0 if all sort conditions are equal\n });\n}\n\nexport const calculateLeftOffset = (\n columns: number[],\n index: number\n): number => {\n return columns.slice(0, index).reduce((sum, width) => sum + width, 0);\n};\n\nexport const searchAndSortData = (\n data: DataObject[],\n searchValues: Record<string, string>\n) => {\n const filteredData = data.filter((item) => {\n return Object.keys(searchValues).every((key) => {\n const searchValue = searchValues[key].toLowerCase();\n return item[key].toString().toLowerCase().includes(searchValue);\n });\n });\n\n return filteredData.sort((a, b) => {\n let aMatchCount = 0;\n let bMatchCount = 0;\n\n Object.keys(searchValues).forEach((key) => {\n const searchValue = searchValues[key].toLowerCase();\n\n if (a[key] && a[key].toString().toLowerCase() === searchValue) {\n aMatchCount++;\n }\n if (b[key] && b[key].toString().toLowerCase() === searchValue) {\n bMatchCount++;\n }\n\n if (a[key] && a[key].toString().toLowerCase().includes(searchValue)) {\n aMatchCount += 0.5;\n }\n if (b[key] && b[key].toString().toLowerCase().includes(searchValue)) {\n bMatchCount += 0.5;\n }\n });\n\n return bMatchCount - aMatchCount;\n });\n};\n\nexport function debounce<T extends (...args: any[]) => void>(\n func: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let timer: NodeJS.Timeout;\n return (...args: Parameters<T>) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func(...args);\n }, delay);\n };\n}\n\nexport function useDebounce<T extends (...args: any[]) => void>(\n callback: T,\n delay: number\n): (...args: Parameters<T>) => void {\n const callbackRef = useRef(callback);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const debouncedFn = useCallback(\n (...args: Parameters<T>) => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n\n timerRef.current = setTimeout(() => {\n callbackRef.current(...args);\n }, delay);\n },\n [delay]\n );\n\n return debouncedFn;\n}\n\nexport const pageSizeCalculation = (records: number) => {\n const pageSize = [5, 10];\n if (records > 100) {\n return [25, 50, 100];\n } else if (records > 50) {\n return [5, 10, 20];\n }\n return pageSize;\n};\n\ntype TableCellCalculationProps = {\n isFrozen?: boolean;\n columnWidths: number[];\n headerIndex: number;\n isCheckbox?: boolean;\n header: TableHeaderProps;\n row: DataObject;\n freezedBgColor?: string;\n index: number;\n};\n\nexport const TableCellCalculation = ({\n isFrozen,\n columnWidths,\n headerIndex,\n isCheckbox,\n header,\n row,\n freezedBgColor,\n index,\n}: TableCellCalculationProps) => {\n const theme = useCustomTheme();\n const leftOffset = isFrozen\n ? calculateLeftOffset(columnWidths, headerIndex) + (isCheckbox ? 50 : 0)\n : 0;\n let cellBgColor = undefined;\n let cellTextColor = undefined;\n if (row.cellStyle?.[header.id]) {\n cellBgColor =\n row.cellStyle?.[header.id]?.bg ?? theme.colors.backgroundColor.light;\n cellTextColor = row.cellStyle?.[header.id]?.color ?? undefined;\n } else if (isFrozen) {\n cellBgColor = freezedBgColor ?? undefined;\n cellTextColor = freezedBgColor ?? undefined;\n } else if (index % 2 === 1) {\n cellBgColor = theme.colors.backgroundColor.light;\n }\n\n let rowBgColor = undefined;\n let rowTextColor = undefined;\n if (row.rowStyle) {\n rowBgColor = row.rowStyle?.bg;\n rowTextColor = row.rowStyle?.color;\n }\n\n return { leftOffset, cellBgColor, rowBgColor, cellTextColor, rowTextColor };\n};\n\n/**\n * Filters array of objects by checking all property values against the search query.\n *\n * @param data - Array of objects\n * @param query - Search string\n * @returns Filtered data\n */\nexport function globalSearchFilter<T extends Record<string, any>>(\n data: T[],\n query: string\n): T[] {\n if (!query.trim()) return data;\n\n const lowerQuery = query.toLowerCase();\n\n return data.filter((item) =>\n Object.values(item).some((val) => {\n if (\n val === null ||\n val === undefined ||\n typeof val === \"object\" ||\n typeof val === \"function\"\n ) {\n return false;\n }\n\n return String(val).toLowerCase().includes(lowerQuery);\n })\n );\n}\n","import React from \"react\";\nimport { Flex, IconButton, Select, Text } from \"@chakra-ui/react\";\nimport { TableProps } from \"../TableProps\";\nimport { pageSizeCalculation } from \"../../../Utils/table\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\n\ntype PaginationProps = Pick<TableProps, \"isVisiblity\" | \"columns\"> & {\n paginationText: string;\n handlePageSizeChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;\n rowsPerPage: number;\n currentPage: number;\n pages: number;\n setCurrentPage: React.Dispatch<React.SetStateAction<number>>;\n dataLength: number;\n isServerPagination: boolean;\n};\n\nconst Pagination = ({\n paginationText,\n handlePageSizeChange,\n rowsPerPage,\n currentPage,\n pages,\n setCurrentPage,\n dataLength,\n isServerPagination,\n}: PaginationProps) => {\n const pageSizeOptions = pageSizeCalculation(dataLength);\n const isLeftDisabled = currentPage === 0;\n const isRightDisabled = currentPage >= pages - 1;\n return (\n <Flex justify=\"flex-end\" align=\"center\">\n {!isServerPagination && (\n <Select\n onChange={handlePageSizeChange}\n value={rowsPerPage}\n size={\"xs\"}\n borderRadius={3}\n width={20}\n >\n {dataLength < 100 ? <option value={0}></option> : null}\n {pageSizeOptions.map((size, index) => (\n <option key={index} value={size}>\n {size}\n </option>\n ))}\n </Select>\n )}\n <Flex>\n <IconButton\n aria-label=\"left-icon\"\n color={isLeftDisabled ? \"gray\" : \"black\"}\n rounded={\"full\"}\n variant={isLeftDisabled ? \"plain\" : \"ghost\"}\n onClick={() => setCurrentPage(0)}\n >\n <ChevronsLeft />\n </IconButton>\n <IconButton\n aria-label=\"left-icon\"\n color={isLeftDisabled ? \"gray\" : \"black\"}\n rounded={\"full\"}\n variant={isLeftDisabled ? \"plain\" : \"ghost\"}\n onClick={() => currentPage > 0 && setCurrentPage(currentPage - 1)}\n >\n <ChevronLeft />\n </IconButton>\n <Text mt={3} fontSize={12}>\n {paginationText}\n </Text>\n <IconButton\n aria-label=\"left-icon\"\n color={isRightDisabled ? \"gray\" : \"black\"}\n rounded={\"full\"}\n variant={isRightDisabled ? \"plain\" : \"ghost\"}\n onClick={() =>\n currentPage < pages - 1 && setCurrentPage(currentPage + 1)\n }\n >\n <ChevronRight />\n </IconButton>\n <IconButton\n aria-label=\"left-icon\"\n color={isRightDisabled ? \"gray\" : \"black\"}\n rounded={\"full\"}\n variant={isRightDisabled ? \"plain\" : \"ghost\"}\n onClick={() => setCurrentPage(pages - 1)}\n >\n <ChevronsRight />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nexport default Pagination;\n","import React, { memo, useEffect, useRef, useState } from \"react\";\nimport {\n IconButton,\n Input,\n InputGroup,\n InputLeftElement,\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Portal,\n} from \"@chakra-ui/react\";\nimport { TableFiltersProps } from \"../TableProps\";\nimport { debounce } from \"../../../Utils/table\";\nimport { EllipsisVertical, Search } from \"lucide-react\";\n\nconst TableFilters = memo(\n ({ header, setColumnsSearch, columnsSearch, onClose }: TableFiltersProps) => {\n const searchRef = useRef<HTMLInputElement>(null);\n\n const [refreshDataOnOpen, setRefreshDataOnOpen] = useState(false);\n\n const debounceRef = debounce((value: string) => {\n setColumnsSearch(value);\n }, 700);\n\n useEffect(() => {\n if (columnsSearch.length && searchRef.current) {\n searchRef.current.value = columnsSearch;\n }\n /* eslint-disable */\n }, [refreshDataOnOpen]);\n\n return (\n <Popover\n onClose={onClose}\n onOpen={() => {\n setRefreshDataOnOpen((prev) => !prev);\n }}\n >\n <PopoverTrigger>\n <IconButton\n aria-label=\"Search\"\n icon={<EllipsisVertical size={17} />}\n size=\"xs\"\n variant=\"ghost\"\n _hover={{ bg: \"none\" }}\n />\n </PopoverTrigger>\n <Portal>\n <PopoverContent width=\"200px\">\n <PopoverBody p={2}>\n <InputGroup flex=\"1\" size={\"xs\"}>\n <InputLeftElement pointerEvents=\"none\">\n <Search color=\"gray.300\" />\n </InputLeftElement>\n <Input\n autoFocus\n placeholder={`Search ${header.label}...`}\n size=\"xs\"\n ref={searchRef}\n onChange={(e) => {\n e.stopPropagation();\n debounceRef(e.target.value);\n }}\n onFocus={(e) => e.stopPropagation()}\n />\n </InputGroup>\n </PopoverBody>\n </PopoverContent>\n </Portal>\n </Popover>\n );\n }\n);\n\nexport default TableFilters;\n","import { Box, Th, Tr } from \"@chakra-ui/react\";\nimport React, { memo, useCallback, useState } from \"react\";\nimport { calculateLeftOffset } from \"../../../Utils/table\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport {\n ColumnHeaderProps,\n SortingProps,\n TableHeaderPageProps,\n} from \"../TableProps\";\nimport TableFilters from \"./TableFilters\";\nimport { ChevronDown, ChevronsUpDown, ChevronUp } from \"lucide-react\";\nimport CheckBox from \"../../Checkbox/Checkbox\";\n\nconst TableHeader = ({\n columns,\n isCheckbox,\n handleSort,\n headerRefs,\n columnWidths,\n columnsSort,\n headerBgColor,\n headerTextColor,\n freezedBgColor,\n freezedTextColor,\n noBorders,\n handleCheckbox,\n checked,\n isLoading,\n isContent,\n isLink,\n isActionFreeze,\n setColumnsSearch,\n columnsSearch,\n}: TableHeaderPageProps) => {\n const theme: any = useCustomTheme();\n\n const RenderCheckbox = useCallback(() => {\n return (\n <Th\n w={6}\n fontSize={14}\n fontWeight={600}\n color={freezedTextColor}\n textTransform={\"capitalize\"}\n backgroundColor={theme.colors?.table?.hover?.[600]}\n borderY={\n noBorders ? \"none\" : `0.063rem solid ${theme.colors?.gray[300]}`\n }\n position={\"sticky\"}\n className={`columns sticky-columns`}\n left={\"0px\"}\n zIndex={9}\n boxShadow={\"2px 0 5px rgba(0, 0, 0, 0.1)\"}\n >\n <CheckBox\n aria-label=\"Select all rows\"\n variant={\"outline\"}\n onChange={() => handleCheckbox(0)}\n isChecked={isLoading ? false : checked === true}\n isIndeterminate={checked === \"indeterminate\"}\n />\n </Th>\n );\n }, [\n checked,\n freezedTextColor,\n handleCheckbox,\n isLoading,\n noBorders,\n theme.colors,\n ]);\n\n const RenderConent = useCallback(() => {\n return (\n <Th\n w={6}\n minW={\"35px\"}\n p={0}\n backgroundColor={theme.colors?.table?.hover?.[600]}\n borderY={\n noBorders ? \"none\" : `0.063rem solid ${theme.colors?.gray[300]}`\n }\n position={\"sticky\"}\n className={`columns sticky-columns`}\n left={\"0px\"}\n zIndex={1}\n boxShadow={\"2px 0 5px rgba(0, 0, 0, 0.1)\"}\n ></Th>\n );\n }, [noBorders, theme.colors]);\n\n const RenderView = useCallback(() => {\n return (\n <Th\n w={2}\n p={0}\n minW={\"2.065rem\"}\n backgroundColor={theme.colors?.table?.hover?.[600]}\n borderY={\n noBorders ? \"none\" : `0.063rem solid ${theme.colors?.gray[300]}`\n }\n position={isActionFreeze ? \"sticky\" : \"relative\"}\n className={`columns sticky-columns`}\n right={\"0px\"}\n zIndex={1}\n boxShadow={\"2px 0 5px rgba(0, 0, 0, 0.1)\"}\n ></Th>\n );\n }, [noBorders, theme.colors, isActionFreeze]);\n\n return (\n <Tr pr={0}>\n {isContent && <RenderConent />}\n {isCheckbox && <RenderCheckbox />}\n {columns.map((header, index) => {\n if (header?.isHidden) return null;\n return (\n <ColumnHeader\n header={header}\n index={index}\n key={header.label}\n columnWidths={columnWidths}\n handleSort={handleSort}\n isCheckbox={isCheckbox}\n headerBgColor={headerBgColor}\n headerTextColor={headerTextColor}\n freezedBgColor={freezedBgColor}\n freezedTextColor={freezedTextColor}\n noBorders={noBorders}\n columnsSort={columnsSort}\n headerRefs={headerRefs}\n columnsSearch={columnsSearch}\n setColumnsSearch={setColumnsSearch}\n />\n );\n })}\n {isLink && <RenderView />}\n </Tr>\n );\n};\n\nexport default memo(TableHeader);\n\nconst SortingIcon = memo(\n ({\n sortState,\n handleSortClick,\n }: {\n sortState: string;\n handleSortClick: () => void;\n }) => {\n const theme = useCustomTheme();\n return (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n bg={theme.colors.white}\n borderRadius=\"full\"\n cursor=\"pointer\"\n w=\"24px\"\n h=\"24px\"\n ml={2}\n onClick={handleSortClick}\n transition=\"transform 0.2s ease-in-out\"\n _hover={{ transform: \"scale(1.1)\" }}\n >\n {sortState === \"none\" && <ChevronsUpDown color=\"black\" size={14} />}\n {sortState === \"asc\" && <ChevronUp color=\"black\" size={14} />}\n {sortState === \"desc\" && <ChevronDown color=\"black\" size={14} />}\n </Box>\n );\n }\n);\n\nconst ColumnHeader = memo(\n ({\n header,\n index,\n columnWidths,\n isCheckbox,\n headerTextColor,\n freezedTextColor,\n noBorders,\n columnsSort,\n headerRefs,\n columnsSearch,\n setColumnsSearch,\n handleSort,\n }: ColumnHeaderProps) => {\n const [isHovered, setIsHovered] = useState(false);\n const theme: any = useCustomTheme();\n\n const isFrozen = header.isFreeze;\n const leftOffset = isFrozen\n ? calculateLeftOffset(columnWidths, index) + (isCheckbox ? 50 : 0)\n : undefined;\n const isSorting = header.isSort\n ? columnsSort.find((o) => o.column === header.id)\n : undefined;\n\n // const TextColor = isFrozen ? freezedTextColor : headerTextColor;\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n const parentBox = (e.target as HTMLDivElement)\n .parentElement as HTMLDivElement;\n\n const th = parentBox.parentElement as HTMLTableCellElement;\n\n const startX = e.pageX;\n const startWidth = th.offsetWidth;\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n const newWidth = startWidth + (moveEvent.pageX - startX);\n th.style.width = `${newWidth}px`;\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n };\n\n const Sorting = useCallback(\n ({ isSorting, header }: SortingProps) => {\n return (\n <SortingIcon\n sortState={isSorting?.direction ?? \"none\"}\n handleSortClick={() => {\n let direction: \"asc\" | \"desc\" | \"none\" = \"asc\";\n if (isSorting?.direction === \"asc\") {\n direction = \"desc\";\n } else if (isSorting?.direction === \"desc\") {\n direction = \"none\";\n }\n handleSort(header.id, direction);\n }}\n />\n );\n },\n [handleSort]\n );\n\n const isFiltersEnabled =\n (isHovered && header.isSort) ||\n (isSorting?.direction && isSorting.direction !== \"none\");\n\n return (\n <Th\n key={index + 1}\n ref={(el) => (headerRefs.current[index] = el)} // Attach ref\n textTransform={\"capitalize\"}\n fontSize={16}\n fontWeight={600}\n position={isFrozen ? \"sticky\" : undefined}\n left={isFrozen ? leftOffset : undefined}\n minWidth={120}\n backgroundColor={theme.colors?.table?.hover?.[600]}\n maxWidth={500}\n zIndex={isFrozen ? 2 : 1}\n py={2}\n pr={0}\n borderY={\n noBorders ? \"none\" : `0.063rem solid ${theme.colors?.border[500]}`\n }\n className={`columns ${isFrozen ? \"sticky-columns\" : \"scrollable-columns\"}`}\n height={45}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <Box\n display={\"flex\"}\n color={theme.colors?.secondary?.[500]}\n lineHeight={\"1.25rem\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n position={\"relative\"}\n >\n <Box\n textOverflow={\"ellipsis\"}\n whiteSpace={\"nowrap\"}\n display={\"block\"}\n overflow={\"hidden\"}\n >\n {header.label}\n </Box>\n\n <Box display={\"flex\"} alignItems={\"center\"}>\n {isFiltersEnabled && (\n <Sorting isSorting={isSorting} header={header} />\n )}\n\n <TableFilters\n header={header}\n setColumnsSearch={(searchVal: string) =>\n setColumnsSearch((prev) => ({\n ...prev,\n [header.id]: searchVal,\n }))\n }\n columnsSearch={columnsSearch[header.id] || \"\"}\n onClose={() => setIsHovered(false)}\n />\n </Box>\n\n <div className=\"resize-handle\" onMouseDown={handleMouseDown}></div>\n </Box>\n </Th>\n );\n }\n);\n","import React from \"react\";\nimport {\n Box,\n Skeleton,\n SkeletonText,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@chakra-ui/react\";\n\nconst TableLoading = () => {\n return (\n <Box overflowX=\"auto\" p={4}>\n <Table variant=\"simple\" width=\"full\">\n <Thead>\n <Tr>\n <Th p={2}>\n <Skeleton height=\"20px\" />\n </Th>\n <Th p={2}>\n <Skeleton height=\"20px\" />\n </Th>\n <Th p={2}>\n <Skeleton height=\"20px\" />\n </Th>\n <Th p={2}>\n <Skeleton height=\"20px\" />\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {Array.from({ length: 5 }).map((_, rowIndex) => (\n <Tr key={rowIndex}>\n <Td p={2}>\n <SkeletonText noOfLines={1} skeletonHeight=\"2\" />\n </Td>\n <Td p={2}>\n <SkeletonText noOfLines={1} skeletonHeight=\"2\" />\n </Td>\n <Td p={2}>\n <SkeletonText noOfLines={1} skeletonHeight=\"2\" />\n </Td>\n <Td p={2}>\n <SkeletonText noOfLines={1} skeletonHeight=\"2\" />\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n </Box>\n );\n};\n\nexport default TableLoading;\n\nexport const TableBodyLoading = ({\n noOfColumns,\n borderColor,\n}: {\n noOfColumns: number;\n borderColor: string;\n}) => {\n return (\n <>\n {Array.from({ length: 5 }).map((_, index) => {\n return (\n <Tr key={index}>\n <Td\n colSpan={noOfColumns}\n textAlign=\"center\"\n border={`1px solid ${borderColor}`}\n >\n <Skeleton height=\"15px\" variant={\"shine\"} />\n </Td>\n </Tr>\n );\n })}\n </>\n );\n};\n","import React from \"react\";\nimport {\n Button,\n IconButton,\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Portal,\n VStack,\n} from \"@chakra-ui/react\";\nimport { EllipsisVertical, ExternalLink, Pencil, Trash2 } from \"lucide-react\";\n\nconst TableActions = ({ row }: any) => {\n return (\n <Popover placement=\"bottom-start\" closeOnBlur>\n <PopoverTrigger>\n <IconButton\n aria-label=\"Link\"\n color={\"black\"}\n icon={<EllipsisVertical size={17}/>}\n size=\"sm\"\n p={0}\n variant=\"ghost\"\n _hover={{ transform: \"scale(1.2)\" }}\n />\n </PopoverTrigger>\n <Portal>\n <PopoverContent w=\"auto\" minW=\"150px\" boxShadow=\"lg\" p={0} zIndex={999}>\n <PopoverBody>\n <VStack align=\"stretch\" spacing={1}>\n {row.onLink && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n justifyContent=\"flex-start\"\n gap={2}\n onClick={() => row?.onLink(row)}\n >\n <ExternalLink size={17}/> View\n </Button>\n )}\n {row.onEdit && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n justifyContent=\"flex-start\"\n gap={2}\n onClick={() => row?.onEdit?.(row)}\n >\n <Pencil size={17}/> Edit\n </Button>\n )}\n {row.onDelete && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n justifyContent=\"flex-start\"\n colorScheme=\"red\"\n gap={2}\n onClick={() => row?.onDelete?.(row)}\n >\n <Trash2 size={17} />\n Delete\n </Button>\n )}\n </VStack>\n </PopoverBody>\n </PopoverContent>\n </Portal>\n </Popover>\n );\n};\n\nexport default TableActions;\n","import { Box, IconButton, Td, Tr } from \"@chakra-ui/react\";\nimport React, { useCallback, useState } from \"react\";\nimport { TableCellCalculation } from \"../../../Utils/table\";\nimport { DataObject, TableBodyPageProps } from \"../TableProps\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport { TableBodyLoading } from \"./TableLoading\";\nimport TableActions from \"./TableActions\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport CheckBox from \"../../Checkbox/Checkbox\";\n\nconst TableBody = ({\n data,\n isCheckbox,\n columns,\n startRow,\n columnWidths,\n freezedBgColor,\n freezedTextColor,\n noBorders,\n handleCheckbox,\n selections,\n isLoading,\n onRowClick,\n isContent,\n isLink,\n isActionFreeze,\n}: TableBodyPageProps) => {\n const theme: any = useCustomTheme();\n const [expandedRows, setExpandedRows] = useState<Set<number>>(new Set());\n\n const toggleRowExpansion = (rowIndex: number) => {\n setExpandedRows((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(rowIndex)) {\n newSet.delete(rowIndex);\n } else {\n newSet.add(rowIndex);\n }\n return newSet;\n });\n };\n\n const handleRowClick = (\n row: DataObject,\n header: Record<string | number, string | number>\n ) => {\n onRowClick && onRowClick(row, header);\n };\n\n const RenderCheckbox = useCallback(\n ({ row, isChecked }: { row: DataObject; isChecked: boolean }) => {\n return (\n <Td\n w=\"6\"\n fontSize={14}\n fontWeight={600}\n color={theme.colors?.background?.[50]}\n textTransform={\"capitalize\"}\n backgroundColor={theme.colors?.background?.[50]}\n position={\"sticky\"}\n borderBottom={\n noBorders ? \"none\" : `0.063rem solid ${theme.colors?.border[500]}`\n }\n boxSizing=\"border-box\"\n left={0}\n zIndex={1}\n className={`columns sticky-columns`}\n >\n <CheckBox\n aria-label=\"Select all rows\"\n onChange={() => handleCheckbox(row.id)}\n isChecked={isChecked}\n />\n </Td>\n );\n },\n [handleCheckbox, noBorders, theme.colors]\n );\n\n const RenderContent = useCallback(\n ({\n isExpanded,\n rowIndex,\n isContent,\n }: {\n isExpanded: boolean;\n rowIndex: number;\n isContent: boolean;\n }) => {\n return (\n <Td\n w=\"6\"\n p={0}\n fontSize={14}\n backgroundColor={theme.colors?.background?.[50]}\n color={freezedTextColor}\n position={\"sticky\"}\n borderBottom={\n noBorders ? \"none\" : `0.063rem solid ${theme.colors?.border[500]}`\n }\n boxSizing=\"border-box\"\n left={0}\n zIndex={1}\n className={`columns sticky-columns`}\n >\n {isContent && (\n <IconButton\n aria-label={isExpanded ? \"Collapse row\" : \"Expand row\"}\n color={theme.colors?.gray[600]}\n icon={\n isExpanded ? (\n <ChevronDown fontSize={16} />\n ) : (\n <ChevronRight fontSize={16} />\n )\n }\n _hover={{ transform: \"scale(1.1)\" }}\n size=\"sm\"\n onClick={() => toggleRowExpansion(rowIndex)}\n variant=\"ghost\"\n />\n )}\n </Td>\n );\n },\n [freezedTextColor, noBorders, theme.colors]\n );\n\n const RenderView = useCallback(\n ({ row }: { row: DataObject }) => {\n return (\n <Td\n w={2}\n p={0}\n fontSize={14}\n backgroundColor={theme?.colors?.background?.[50]}\n color={freezedTextColor}\n position={isActionFreeze ? \"sticky\" : \"relative\"}\n borderBottom={\n noBorders ? \"none\" : `0.063rem solid ${theme.colors?.border[500]}`\n }\n boxSizing=\"border-box\"\n right={0}\n zIndex={1}\n className={`columns sticky-columns${isActionFreeze ? \"-right\" : \"\"}`}\n >\n {(row.onLink || row.onEdit || row.onDelete) && (\n <TableActions row={row} />\n )}\n </Td>\n );\n },\n [freezedTextColor, noBorders, theme.colors, isActionFreeze]\n );\n\n const totalVisibleColumns =\n Object.values(columns).filter((o) => !o.isHidden).length +\n (isCheckbox ? 1 : 0) +\n (isContent ? 1 : 0) +\n (isLink ? 1 : 0);\n if (isLoading) {\n return (\n <TableBodyLoading\n noOfColumns={totalVisibleColumns}\n borderColor={theme.colors.gray[300]}\n />\n );\n }\n\n if (data.length === 0) {\n return (\n <Tr backgroundColor={theme.colors.white}>\n <Td colSpan={totalVisibleColumns} textAlign=\"center\" py={4}>\n <Box textAlign=\"center\" fontSize={14}>\n <p>No data found</p>\n </Box>\n </Td>\n </Tr>\n );\n }\n\n return (\n <>\n {data.map((row, index) => {\n const rowIndex = startRow + index;\n const isExpanded = expandedRows.has(rowIndex);\n const isChecked = selections.includes(row.id);\n return (\n <React.Fragment key={rowIndex}>\n <Tr\n key={index + 1}\n sx={\n isChecked\n ? {\n \"& td\": {\n backgroundColor: theme.colors.disabled[100],\n },\n }\n : {}\n }\n >\n {isContent && (\n <RenderContent\n rowIndex={rowIndex}\n isExpanded={isExpanded}\n isContent={!!row?.content?.()}\n />\n )}\n {isCheckbox && <RenderCheckbox row={row} isChecked={isChecked} />}\n {columns.map((header, headerIndex) => {\n if (header.isHidden) return null;\n const isFrozen = header.isFreeze;\n const { leftOffset } = TableCellCalculation({\n isFrozen,\n columnWidths,\n headerIndex,\n isCheckbox,\n header,\n row,\n freezedBgColor,\n index,\n });\n\n return (\n <Td\n maxWidth={500}\n minWidth={120}\n height={45}\n key={headerIndex + 1}\n onClick={() =>\n !header.node\n ? handleRowClick(row, {\n label: header.label,\n id: header.id,\n })\n : null\n }\n fontSize={14}\n fontWeight={400}\n position={isFrozen ? \"sticky\" : undefined}\n left={isFrozen ? leftOffset : undefined}\n zIndex={isFrozen ? 1 : 0}\n backgroundColor={theme.colors.background?.[50]}\n textOverflow={\"ellipsis\"}\n borderBottom={\n noBorders\n ? \"none\"\n : `0.063rem solid ${theme.colors?.gray[isFrozen || isChecked ? 300 : 200]}`\n }\n className={`columns ${isFrozen ? \"sticky-columns\" : \"scrollable-columns\"}`}\n boxSizing=\"border-box\"\n color={theme.colors?.text?.[500]}\n _hover={\n row.cellStyle?.[header.id] || row.rowStyle\n ? {}\n : {\n backgroundColor:\n theme.colors.secondary?.opacity?.[4],\n }\n }\n >\n <Box\n display={\"block\"}\n overflow={\"hidden\"}\n whiteSpace={\"normal\"}\n overflowWrap={\"break-word\"}\n >\n {header.node ? header.node(row) : row[header.id]}\n </Box>\n </Td>\n );\n })}\n {isLink && <RenderView row={row} />}\n </Tr>\n {row.content && isExpanded && (\n <Tr>\n <Td\n colSpan={\n columns.length +\n (isCheckbox ? 1 : 0) +\n (isContent ? 1 : 0) +\n (isLink ? 1 : 0)\n }\n p={2}\n >\n <Box p={2} bg={theme.colors.white} borderRadius=\"md\">\n {row?.content(row)}\n </Box>\n </Td>\n </Tr>\n )}\n </React.Fragment>\n );\n })}\n </>\n );\n};\n\nexport default TableBody;\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport {\n ColumnSortingProps,\n DataObject,\n TableHeaderProps,\n} from \"../TableProps\";\nimport { globalSearchFilter, SortMultiColumnData } from \"../../../Utils/table\";\n\ntype UseTableProps = {\n tableBorderColor?: string;\n data: DataObject[];\n isPagination: boolean;\n selections?: (string | number)[];\n columns: TableHeaderProps[];\n onSelection?: (selected: (string | number)[]) => void;\n tablePreferences?: Record<string, any>;\n savePreferences?: (data: Record<string, any>) => void;\n noOfRowsPerPage?: number;\n isServerPagination: boolean;\n totalRecords: number;\n};\n\nconst defaultPageSize = 50;\n\nconst useTable = ({\n tableBorderColor,\n data,\n isPagination,\n selections,\n onSelection,\n tablePreferences,\n savePreferences,\n noOfRowsPerPage,\n isServerPagination,\n totalRecords,\n columns,\n}: UseTableProps) => {\n const theme = useCustomTheme();\n\n const headerRefs = useRef<(HTMLTableCellElement | null)[]>([]);\n\n const [columnWidths, setColumnWidths] = useState<number[]>([]);\n const [selection, setSelection] = useState<(string | number)[]>(\n selections ?? []\n );\n const [columnsSort, setColumnsSort] = useState<ColumnSortingProps[]>([]);\n const [currentPage, setCurrentPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(\n noOfRowsPerPage ?? defaultPageSize\n );\n\n const tableData = useMemo(() => data, [data]);\n const [filteredData, setFilteredData] = useState(tableData);\n const [columnsList, setColumnsList] = useState(columns);\n\n useEffect(() => {\n if (tablePreferences) {\n const columnPreference = tablePreferences.columns;\n if (columnPreference?.length) {\n setColumnsList(columnPreference);\n }\n }\n }, [tablePreferences]);\n\n useEffect(() => {\n setFilteredData(tableData);\n }, [tableData]);\n\n const tableContainerStyles = useMemo(\n () => ({\n borderRadius: \"10px 0 0 10px\",\n borderWidth: \"0px 0px 0px 5px\",\n borderColor: tableBorderColor ?? theme.colors?.gray[500],\n boxShadow: theme.shadows.lg,\n maxHeight: \"50vh\",\n overflowY: \"auto\",\n }),\n [tableBorderColor, theme]\n );\n\n const isContent = useMemo(\n () => tableData.some((o) => o.content),\n [tableData]\n );\n const isLink = useMemo(\n () => tableData.some((o) => o.onLink || o.onDelete || o.onEdit),\n [tableData]\n );\n\n useEffect(() => {\n const widths = headerRefs.current.map((ref) => ref?.offsetWidth || 0);\n setColumnWidths(widths);\n }, []);\n\n const pages = useMemo(() => {\n if (isServerPagination) {\n return Math.ceil(totalRecords / (noOfRowsPerPage ?? 1));\n }\n return isPagination ? Math.ceil(tableData.length / rowsPerPage) : 0;\n }, [\n isPagination,\n rowsPerPage,\n tableData.length,\n totalRecords,\n isServerPagination,\n noOfRowsPerPage,\n ]);\n const startRow = useMemo(\n () => (!isPagination ? 0 : currentPage * rowsPerPage),\n [currentPage, isPagination, rowsPerPage]\n );\n const endRow = useMemo(\n () => (!isPagination ? tableData.length : startRow + rowsPerPage),\n [isPagination, rowsPerPage, startRow, tableData.length]\n );\n\n useEffect(() => {\n if (isServerPagination) {\n return setFilteredData(tableData);\n }\n const sortedData = SortMultiColumnData(tableData, columnsSort);\n const data = sortedData.slice(startRow, endRow);\n return setFilteredData(data);\n }, [columnsSort, startRow, endRow, tableData, isServerPagination]);\n\n const handlePageSizeChange = (\n event: React.ChangeEvent<HTMLSelectElement>\n ) => {\n const value = Number(event.target.value);\n setRowsPerPage(value !== 0 ? value : defaultPageSize);\n setCurrentPage(0);\n };\n\n const handleSort = useCallback(\n (field: string | number, sort: \"asc\" | \"desc\" | \"none\") => {\n if (!sort) return;\n const newSortState = [...columnsSort];\n const existingIndex = newSortState.findIndex(\n (sort) => sort.column === field\n );\n\n if (existingIndex === -1) {\n newSortState.push({\n column: field,\n direction: \"asc\", // Default to ascending when adding a column\n });\n } else {\n const existingSort = newSortState[existingIndex];\n existingSort.direction = sort;\n }\n\n setColumnsSort(newSortState);\n },\n [columnsSort]\n );\n useEffect(() => {\n setSelection(selections ?? []);\n }, [selections]);\n\n const handleCheckbox = useCallback(\n (id: string | number) => {\n let selectedItems = [];\n if (id === 0) {\n if (selection.length === tableData.length) {\n selectedItems = [];\n } else {\n selectedItems = tableData.map((item) => item.id);\n }\n } else if (selection.includes(id)) {\n selectedItems = selection.filter((item) => item !== id);\n } else {\n selectedItems = [...selection, id];\n }\n setSelection(selectedItems);\n onSelection && onSelection(selectedItems);\n },\n [onSelection, selection, tableData]\n );\n\n const handleColumnPreferences = (columns: any) => {\n setColumnsList(columns);\n savePreferences &&\n savePreferences({\n ...tablePreferences,\n columns: columns,\n });\n };\n\n const handleGlobalSearch = (query: string) => {\n if (!query) setFilteredData(tableData);\n setFilteredData(globalSearchFilter(tableData, query));\n };\n\n return {\n tableData,\n tableContainerStyles,\n isContent,\n isLink,\n headerRefs,\n columnWidths,\n handleSort,\n handleCheckbox,\n filteredData,\n startRow,\n endRow,\n selection,\n columnsSort,\n handlePageSizeChange,\n pages,\n currentPage,\n rowsPerPage,\n setCurrentPage,\n columnsList,\n handleColumnPreferences,\n handleGlobalSearch,\n };\n};\n\nexport default useTable;\n","import { useEffect, useState } from \"react\";\n\ntype PreferencesProps = {\n baseUrl: string;\n key?: string;\n page?: string;\n name?: string;\n authToken?: string;\n};\n\ntype PreferencesResponseProps = {\n json: Record<string, any>;\n key: string;\n name: string;\n page: string;\n preference_id: string;\n};\n\nconst constructUrl = ({ baseUrl, key, page, name }: PreferencesProps) => {\n const params = new URLSearchParams();\n\n if (page) {\n params.append(\"page\", page);\n }\n if (key) {\n params.append(\"key\", key);\n }\n if (name) {\n params.append(\"name\", name);\n }\n\n const queryString = params.toString();\n return `${baseUrl}${queryString ? `?${queryString}` : \"\"}`;\n};\n\nconst useGetPreferences = ({\n baseUrl = \"\",\n key = \"\",\n page = \"\",\n name = \"\",\n authToken = \"\",\n}: PreferencesProps): {\n preferences: PreferencesResponseProps[];\n loading: boolean;\n} => {\n const [preferences, setPreferences] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (!baseUrl) {\n return;\n }\n setLoading(true);\n const url = constructUrl({ baseUrl, key, page, name });\n fetch(url, {\n headers: {\n Authorization: authToken,\n },\n })\n .then((response) => response.json())\n .then((data) => setPreferences(data))\n .catch((error) => console.error(error))\n .finally(() => setLoading(false));\n /* eslint-disable */\n }, [baseUrl]);\n\n return { preferences, loading };\n};\n\nconst useSavePreferences = ({\n baseUrl = \"\",\n key = \"\",\n page = \"\",\n name = \"\",\n authToken = \"\",\n}: PreferencesProps) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const savePreferences = (data: Record<string, any> = {}) => {\n if (!baseUrl) return;\n setLoading(true);\n fetch(baseUrl, {\n method: \"POST\",\n headers: {\n Authorization: authToken,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n key,\n page,\n name,\n json: data,\n }),\n })\n .then((response) => response.json())\n .then((data) => console.log(data))\n .catch((error) => setError(error))\n .finally(() => setLoading(false));\n };\n\n return { savePreferences, loading, error };\n};\n\nexport { useGetPreferences, useSavePreferences };\n","import React, { useImperativeHandle, useState } from \"react\";\nimport {\n Box,\n Flex,\n IconButton,\n Input,\n List,\n ListItem,\n Text,\n} from \"@chakra-ui/react\";\nimport Checkbox from \"../../Checkbox/Checkbox\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport { TableProps } from \"../TableProps\";\nimport { GripVertical } from \"lucide-react\";\n\ntype ManageColumnsMethods = {\n getManageColumnsData: () => TableProps[\"columns\"];\n};\n\nconst ManageColumns = ({\n columns,\n childInputMethodsRef,\n}: {\n columns: TableProps[\"columns\"];\n childInputMethodsRef: React.Ref<ManageColumnsMethods>;\n}) => {\n const theme = useCustomTheme();\n const [items, setItems] = useState(\n columns.map((o) => ({ ...o, isHidden: !o.isHidden }))\n );\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [draggedItemIndex, setDraggedItemIndex] = useState<number | null>(null);\n\n useImperativeHandle(childInputMethodsRef, () => {\n return {\n getManageColumnsData() {\n return items.map((o) => ({ ...o, isHidden: !o.isHidden }));\n },\n };\n }, [items]);\n\n const handleDragStart = (index: number) => {\n setDraggedItemIndex(index);\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLLIElement>, index: number) => {\n e.preventDefault();\n if (draggedItemIndex === null || draggedItemIndex === index) return;\n\n const newItems = [...items];\n const draggedItem = newItems[draggedItemIndex];\n\n newItems.splice(draggedItemIndex, 1);\n\n newItems.splice(index, 0, draggedItem);\n\n setDraggedItemIndex(index);\n setItems(newItems);\n };\n\n const handleDragEnd = () => {\n setDraggedItemIndex(null);\n };\n\n const toggleCheckbox = (index: number) => {\n const newItems = [...items];\n newItems[index].isHidden = !newItems[index].isHidden;\n setItems(newItems);\n };\n\n const filteredItems = items.filter((item) =>\n item.label.toString().toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n return (\n <Box mt=\"5\">\n <Input\n placeholder=\"Search\"\n mb=\"4\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n />\n {!searchTerm.length && (\n <Flex align=\"center\" mb=\"2\">\n <Checkbox\n isChecked={items.every((item) => item.isHidden)}\n onChange={() => {\n const allChecked = items.every((item) => item.isHidden);\n setItems(\n items.map((item) => ({ ...item, isHidden: !allChecked }))\n );\n }}\n />\n <Text ml=\"2\" fontSize={14}>\n Select all\n </Text>\n </Flex>\n )}\n\n <List spacing=\"2\">\n {filteredItems.length > 0 ? (\n filteredItems.map((item, index) => (\n <ListItem\n key={item.id}\n draggable\n onDragStart={() => handleDragStart(index)}\n onDragOver={(e) => handleDragOver(e, index)}\n onDragEnd={handleDragEnd}\n bg={theme.colors.gray[50]}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderRadius=\"md\"\n border=\"1px solid\"\n borderColor=\"gray.200\"\n cursor=\"grab\"\n position={\"relative\"}\n fontSize={14}\n >\n <IconButton\n aria-label=\"Drag\"\n icon={<GripVertical />}\n variant=\"ghost\"\n cursor=\"grab\"\n mr=\"1\"\n />\n\n <Checkbox\n isChecked={item.isHidden}\n onChange={() => toggleCheckbox(index)}\n sx={{\n marginRight: \"4\",\n }}\n />\n <Text flex=\"1\">{item.label}</Text>\n </ListItem>\n ))\n ) : (\n <Text color=\"gray.500\" textAlign=\"center\">\n No items found\n </Text>\n )}\n </List>\n </Box>\n );\n};\n\nexport default ManageColumns;\n","import {\n Box,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Tabs,\n TabList,\n TabPanels,\n Tab,\n TabPanel,\n Text,\n} from \"@chakra-ui/react\";\nimport React, { useRef, useState } from \"react\";\nimport ManageColumns from \"./ManageColumns\";\nimport Button from \"../../Button/Button\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport { TableProps } from \"../TableProps\";\nimport { Settings } from \"lucide-react\";\n\nconst TableSettings = ({\n columns,\n onSave,\n}: {\n columns: TableProps[\"columns\"];\n onSave: (updatedColumns: TableProps[\"columns\"]) => void;\n}) => {\n const theme: any = useCustomTheme();\n const childInputMethodsRef = useRef<{\n getManageColumnsData?: () => TableProps[\"columns\"];\n }>({});\n\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n return (\n <Box>\n <Box display={\"flex\"} justifyContent={\"flex-end\"} cursor={\"pointer\"}>\n <Settings\n onClick={() => setSettingsOpen(true)}\n size={\"1.25rem\"}\n color={theme?.colors?.text?.[500]}\n />\n </Box>\n\n <Modal\n isOpen={settingsOpen}\n onClose={() => setSettingsOpen(false)}\n size={\"md\"}\n >\n <ModalOverlay />\n <ModalContent minW=\"700px\" minH=\"600px\">\n <ModalHeader>Table Settings</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <Tabs\n index={selectedIndex}\n onChange={setSelectedIndex}\n orientation=\"vertical\"\n variant=\"unstyled\"\n >\n <TabList\n whiteSpace={\"nowrap\"}\n minWidth={160}\n height=\"fit-content\"\n >\n <Tab\n _selected={{\n borderLeft: `2px solid ${theme.colors.primary[600]}`,\n }}\n fontSize={\"14px\"}\n justifyContent=\"flex-start\"\n >\n Manage columns\n </Tab>\n\n {/* <Tab\n _selected={{\n borderLeft: \"2px solid blue\",\n }}\n justifyContent=\"flex-start\"\n >\n Font size\n </Tab>\n <Tab\n _selected={{\n borderLeft: \"2px solid blue\",\n }}\n justifyContent=\"flex-start\"\n >\n Density\n </Tab>\n <Tab\n _selected={{\n borderLeft: \"2px solid blue\",\n }}\n justifyContent=\"flex-start\"\n >\n Scrollbar\n </Tab> */}\n </TabList>\n <TabPanels>\n <TabPanel>\n <ManageColumns\n columns={columns}\n childInputMethodsRef={\n childInputMethodsRef as React.MutableRefObject<{\n getManageColumnsData: () => TableProps[\"columns\"];\n }>\n }\n />\n </TabPanel>\n <TabPanel>\n <Text>Font size settings</Text>\n </TabPanel>\n <TabPanel>\n <Text>Density settings</Text>\n </TabPanel>\n <TabPanel>\n <Text>Scrollbar settings</Text>\n </TabPanel>\n </TabPanels>\n </Tabs>\n </ModalBody>\n\n <ModalFooter>\n <Button\n label={\"Close\"}\n size=\"sm\"\n onClick={() => setSettingsOpen(false)}\n sx={{ marginRight: \"0.5rem\" }}\n />\n <Button\n label={\"Save\"}\n size={\"sm\"}\n onClick={() => {\n onSave(\n childInputMethodsRef.current?.getManageColumnsData?.() ?? []\n );\n setSettingsOpen(false);\n }}\n />\n </ModalFooter>\n </ModalContent>\n </Modal>\n </Box>\n );\n};\n\nexport default TableSettings;\n","import { Box } from \"@chakra-ui/react\";\nimport { SquarePen, Trash2 } from \"lucide-react\";\nimport React from \"react\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport { HeaderActionsProps } from \"../TableProps\";\n\nconst ListItem = ({\n icon,\n name,\n onClick,\n selections,\n}: {\n icon: React.ReactElement;\n name: string;\n onClick?: (selection: (string | number)[]) => void;\n selections: (string | number)[];\n}) => {\n const { colors }: any = useCustomTheme();\n\n const styledIcon = React.cloneElement(icon, {\n color: colors?.text?.[500],\n size: \"1.25rem\",\n });\n return (\n <Box\n display={\"flex\"}\n alignItems={\"center\"}\n gap={\"0.375rem\"}\n onClick={() => onClick && onClick(selections)}\n cursor={\"pointer\"}\n >\n {styledIcon} {name}\n </Box>\n );\n};\n\nconst HeaderActions = ({\n actions,\n selections,\n}: {\n actions?: HeaderActionsProps;\n selections: (string | number)[];\n}) => {\n const { colors }: any = useCustomTheme();\n\n return (\n <Box\n display={\"flex\"}\n gap={4}\n fontSize={\"0.875rem\"}\n fontWeight={400}\n color={colors?.secondary?.[500]}\n >\n {actions?.isDelete?.enabled && (\n <ListItem\n icon={<Trash2 />}\n name={\"Delete\"}\n onClick={actions?.isDelete?.onClick}\n selections={selections}\n />\n )}\n {actions?.isUpdate?.enabled && (\n <ListItem\n icon={<SquarePen />}\n name={\"Mass Update\"}\n onClick={actions?.isUpdate?.onClick}\n selections={selections}\n />\n )}\n {actions?.items?.length\n ? actions?.items?.map((item) => (\n <ListItem {...item} selections={selections} />\n ))\n : null}\n </Box>\n );\n};\n\nexport default HeaderActions;\n","import React, { useState } from \"react\";\nimport {\n Box,\n Icon,\n Input,\n InputGroup,\n InputRightElement,\n} from \"@chakra-ui/react\";\nimport { Search, X } from \"lucide-react\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport { useDebounce } from \"../../../Utils/table\";\n\ninterface TableSearchProps {\n onSearch?: (value: string) => void;\n}\n\nconst TableSearch: React.FC<TableSearchProps> = ({ onSearch }) => {\n const { colors }: any = useCustomTheme();\n const [showInput, setShowInput] = useState(false);\n const [query, setQuery] = useState(\"\");\n\n const handleSearchClick = () => {\n setShowInput((prev) => !prev);\n if (showInput) {\n setQuery(\"\");\n if (query) onSearch?.(\"\"); // clear search on close\n }\n };\n\n const handleDebounce = useDebounce((value: string) => {\n onSearch?.(value);\n }, 700);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setQuery(value);\n\n handleDebounce(value);\n };\n\n return (\n <Box display=\"flex\" alignItems=\"center\" gap=\"2\">\n {!showInput && (\n <Icon\n as={Search}\n transform=\"scaleX(-1)\"\n cursor=\"pointer\"\n boxSize={5}\n color={colors?.text?.[500]}\n onClick={handleSearchClick}\n />\n )}\n\n {showInput ? (\n <InputGroup maxW=\"12.5rem\" transition=\"all 0.3s ease\">\n <Input\n placeholder=\"Search...\"\n value={query}\n onChange={handleInputChange}\n size=\"sm\"\n borderRadius=\"md\"\n borderColor={colors?.border?.[500]}\n _focus={{ borderColor: colors?.primary?.[500] }}\n autoFocus\n />\n <InputRightElement\n display=\"flex\"\n alignItems=\"center\"\n height={\"2rem\"}\n >\n <Icon\n as={X}\n color={colors?.text?.[500]}\n cursor=\"pointer\"\n onClick={handleSearchClick}\n />\n </InputRightElement>\n </InputGroup>\n ) : null}\n </Box>\n );\n};\n\nexport default TableSearch;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Box, TableContainer } from \"@chakra-ui/react\";\nimport { Table as ChakraTable, Tbody, Thead } from \"@chakra-ui/react\";\n\nimport { TableProps } from \"./TableProps\";\nimport Pagination from \"./Components/Pagination\";\nimport TableHeader from \"./Components/TableHeader\";\nimport TableBody from \"./Components/TableBody\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport useTable from \"./Components/useTable\";\nimport { searchAndSortData } from \"../../Utils/table\";\nimport {\n useGetPreferences,\n useSavePreferences,\n} from \"../../Hooks/usePreferences\";\nimport TableSettings from \"./TableSettings/TableSettings\";\nimport HeaderActions from \"./Components/HeaderActions\";\nimport VeritcalDivider from \"../Divider/Divider\";\nimport TableSearch from \"./Components/TableSearch\";\n\nexport default function Table({\n data,\n columns,\n onSelection,\n isLoading,\n isCheckbox = false,\n headerBgColor,\n freezedBgColor,\n headerTextColor,\n freezedTextColor,\n tableBorderColor,\n noBorders = false,\n isPagination = true,\n onRowClick,\n selections,\n isActionFreeze = true,\n preferencesUrl = \"\",\n preferencesKey = \"\",\n preferencesName = \"\",\n preferencesPage = \"\",\n authToken = \"\",\n paginationMode = \"client\",\n noOfRowsPerPage = 50,\n totalRecords = 0,\n onPagination,\n isTableSettings = false,\n headerActions,\n}: TableProps) {\n const theme: any = useCustomTheme();\n const [columnsSearch, setColumnsSearch] = useState({});\n\n const isServerPagination = paginationMode === \"server\";\n\n const { preferences, loading } = useGetPreferences({\n baseUrl: preferencesUrl,\n page: preferencesPage,\n key: preferencesKey,\n name: preferencesName,\n authToken: authToken,\n });\n\n const { savePreferences } = useSavePreferences({\n baseUrl: preferencesUrl,\n page: preferencesPage,\n key: preferencesKey,\n name: preferencesName,\n authToken: authToken,\n });\n\n const isTableLoading = useMemo(() => {\n return loading || isLoading;\n }, [loading, isLoading]);\n\n const tablePreferences = useMemo(() => {\n if (preferences.length) {\n return preferences[0].json;\n }\n return {};\n }, [preferences]);\n\n const {\n tableData,\n isContent,\n isLink,\n headerRefs,\n columnWidths,\n handleSort,\n handleCheckbox,\n filteredData,\n startRow,\n endRow,\n selection,\n columnsSort,\n currentPage,\n pages,\n rowsPerPage,\n handlePageSizeChange,\n setCurrentPage,\n columnsList,\n handleColumnPreferences,\n handleGlobalSearch,\n } = useTable({\n tableBorderColor,\n data,\n isPagination,\n selections,\n columns,\n onSelection,\n tablePreferences,\n savePreferences,\n noOfRowsPerPage,\n totalRecords,\n isServerPagination,\n });\n\n const _filteredData = useMemo(() => {\n return searchAndSortData(filteredData, columnsSearch);\n }, [columnsSearch, filteredData]);\n\n useEffect(() => {\n if (onPagination) {\n onPagination(currentPage + 1, noOfRowsPerPage);\n }\n }, [currentPage, onPagination, noOfRowsPerPage]);\n\n const tablePaginationText = `${startRow + 1} - ${endRow > tableData.length ? tableData.length : endRow} of ${isServerPagination ? totalRecords : tableData.length}`;\n\n return (\n <Box\n bg={theme.colors?.background?.[50]}\n border={`0.063rem solid ${theme.colors.border?.[500]}`}\n borderRadius={3}\n >\n <Box\n display={\"flex\"}\n alignItems={\"center\"}\n justifyContent={\"space-between\"}\n px={3}\n py={0}\n height={45}\n gap={2}\n >\n <TableSearch onSearch={handleGlobalSearch} />\n {isTableSettings && (\n <>\n <VeritcalDivider />\n <TableSettings\n columns={columnsList}\n onSave={(cols: any) => handleColumnPreferences(cols)}\n />\n </>\n )}\n {selection.length ? (\n <>\n <VeritcalDivider />\n <HeaderActions actions={headerActions} selections={selection} />\n </>\n ) : null}\n {(isPagination || isServerPagination) && (\n <Box ml={\"auto\"}>\n <Pagination\n columns={columns}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n rowsPerPage={rowsPerPage}\n pages={pages}\n paginationText={tablePaginationText}\n handlePageSizeChange={handlePageSizeChange}\n dataLength={tableData.length}\n isServerPagination={isServerPagination}\n isVisiblity={true}\n />\n </Box>\n )}\n </Box>\n <TableContainer maxH={500} overflowY={\"auto\"}>\n <ChakraTable\n variant=\"simple\"\n size=\"sm\"\n overflowX=\"scroll\"\n minW=\"100%\"\n className=\"table_wrapper\"\n sx={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n \"th .resize-handle\": {\n position: \"absolute\",\n top: 0,\n right: 0,\n width: \"8px\",\n height: \"100%\",\n cursor: \"col-resize\",\n backgroundColor: \"transparent\",\n zIndex: 999,\n },\n }}\n >\n <Thead position=\"sticky\" top={-0.5} zIndex={2}>\n <TableHeader\n columns={columnsList}\n isCheckbox={isCheckbox}\n headerBgColor={\n headerBgColor ?? theme.colors.backgroundColor.muted\n }\n headerTextColor={headerTextColor ?? theme.colors?.gray[600]}\n freezedBgColor={\n freezedBgColor ?? theme.colors.backgroundColor.secondary\n }\n freezedTextColor={freezedTextColor ?? theme.colors?.gray[600]}\n handleSort={handleSort}\n headerRefs={headerRefs}\n columnWidths={columnWidths}\n columnsSort={columnsSort}\n noBorders={noBorders}\n handleCheckbox={handleCheckbox}\n isLoading={isTableLoading}\n checked={\n tableData.length !== 0 && selection.length === tableData.length\n ? true\n : selection.length === 0\n ? false\n : \"indeterminate\"\n }\n isContent={isContent}\n isLink={isLink}\n isActionFreeze={isActionFreeze}\n setColumnsSearch={setColumnsSearch}\n columnsSearch={columnsSearch}\n />\n </Thead>\n\n <Tbody>\n <TableBody\n data={_filteredData}\n columns={columnsList}\n startRow={startRow}\n endRow={endRow}\n isCheckbox={isCheckbox}\n columnWidths={columnWidths}\n noBorders={noBorders}\n freezedBgColor={\n freezedBgColor ?? theme.colors.backgroundColor.secondary\n }\n freezedTextColor={freezedTextColor ?? theme.colors?.gray[600]}\n handleCheckbox={handleCheckbox}\n selections={selection}\n isLoading={isTableLoading}\n onRowClick={onRowClick}\n isContent={isContent}\n isLink={isLink}\n isActionFreeze={isActionFreeze}\n />\n </Tbody>\n </ChakraTable>\n </TableContainer>\n </Box>\n );\n}\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { TimelineEvents, TimelineProps } from \"./TimelineProps\";\nimport { Tooltip } from \"@chakra-ui/react\";\nimport {FileText, IndianRupee, Info,Volleyball } from \"lucide-react\";\n\nconst TimelineContainer = styled.div`\n position: relative;\n padding: 0px 24px;\n margin: 0 auto;\n width: 100%;\n max-width: 800px;\n @media (max-width: 768px) {\n padding: 0px 16px;\n max-width: 100%;\n }\n`;\n\nconst Line = styled.div`\n position: absolute;\n left: 50%;\n top: 0;\n bottom: 0;\n width: 2px;\n background-color: #d2d9e0;\n transform: translateX(-50%);\n @media (max-width: 768px) {\n left: 25px; /* Move the line towards the left */\n }\n`;\n\nconst EventContainer = styled.div<{ isLeft: boolean }>`\n display: flex;\n justify-content: ${({ isLeft }) => (isLeft ? \"flex-end\" : \"flex-start\")};\n width: 100%;\n // padding: 1rem 0 1rem 0;\n box-sizing: border-box;\n position: relative;\n margin-bottom: 24px;\n align-items: center; /* Center alignment for dot and event content */\n text-align: ${({ isLeft }) => (isLeft ? \"left\" : \"right\")};\n @media (max-width: 768px) {\n flex-direction: column;\n text-align: left;\n align-items: flex-start;\n }\n`;\n\nconst Event = styled.div`\n // background: white;\n // padding: 16px;\n // border: 1px solid #007bff;\n // border-radius: 8px;\n // width: 40%;\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer; /* Indicates that the event is clickable */\n`;\n\nconst Dot = styled.div`\n position: absolute;\n left: 50%;\n width: 30px;\n height: 30px;\n background-color: #f4f7ff;\n border-radius: 50%;\n transform: translateX(-50%);\n padding: 6px;\n border: 1px solid #d2d9e0;\n @media (max-width: 768px) {\n left: 20px; /* Move dot closer to the left */\n transform: translateX(0); /* Remove horizontal centering */\n }\n`;\n\n// const Arrow = styled.div<{ isLeft: boolean }>`\n// position: absolute;\n// left: ${({ isLeft }) => (isLeft ? \"-10px \" : \"100%\")};\n// width: 0;\n// height: 0;\n// border-style: solid;\n// border-width: ${({ isLeft }) =>\n// isLeft ? \"10px 10px 10px 0\" : \"10px 10px 10px 10px\"};\n// border-color: transparent #007bff transparent transparent;\n// transform: translateX(-50%);\n// top: 50%;\n// transform: translateY(-50%);\n// transform: ${({ isLeft }) =>\n// isLeft ? \"translateY(-50%) \" : \"translateY(-50%) rotate(180deg)\"};\n// `;\n\nconst EventContent = styled.div`\n // margin-left: 24px;\n`;\n\nconst EventTitle = styled.h3`\n margin: 0;\n`;\n\n// const EventDescription = styled.p`\n// margin: 0;\n// `;\n\nconst EventDate = styled.span`\n display: block;\n margin-top: 8px;\n color: #6c757d;\n`;\n\nconst EventTime = styled.span<{ isLeft: boolean }>`\n left: ${({ isLeft }) => (isLeft ? \"38% \" : \"53%\")};\n position: absolute;\n color: #6c757d;\n @media (max-width: 768px) {\n position: relative;\n left: auto;\n margin-left: 40px;\n }\n`;\n\nconst EventGroupDate = styled.div`\n font-size: 1rem;\n font-weight: 400;\n color: #464f62;\n box-sizing: border-box;\n width: 180px;\n padding: 5px 25px;\n text-align: center;\n background-color: #f4f7ff;\n border: 1px solid #d2d9e0;\n border-radius: 5px;\n margin: 0 auto; /* Center horizontally */\n display: flex;\n align-items: center; /* Center vertically */\n justify-content: center; /* Center horizontally */\n @media (max-width: 768px) {\n width: auto;\n padding: 5px 10px;\n }\n`;\n\nconst EventGroupSeparator = styled.div`\n width: 100%;\n`;\n\nconst EventGroupHeader = styled.div`\n position: relative;\n margin-bottom: 24px;\n`;\n\n// const FlexContainer = styled.div`\n// display: flex;\n// align-items: center;\n// `;\n\nconst Timeline = ({ timelineEvents }: TimelineProps) => {\n const formatTimestamp = (timestamp: any, type: string) => {\n const parsedTimestamp = parseInt(timestamp, 10);\n const date = new Date(parsedTimestamp);\n if (isNaN(date.getTime())) {\n return \"Invalid Date\";\n }\n\n if (type === \"date\") {\n const monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n const month = monthNames[date.getMonth()];\n const day = date.getDate();\n const year = date.getFullYear();\n return `${month} ${day}, ${year}`;\n } else if (type === \"time\") {\n // Convert to IST (UTC+5:30)\n const istOffset = 5.5 * 60 * 60 * 1000; // 5 hours 30 minutes in milliseconds\n const istDate = new Date(date.getTime() + istOffset);\n\n let hours = istDate.getUTCHours();\n const minutes = istDate.getUTCMinutes();\n const ampm = hours >= 12 ? \"PM\" : \"AM\";\n\n // Convert hours to 12-hour format\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n\n // Pad minutes with leading zero if needed\n const minutesStr = minutes < 10 ? \"0\" + minutes : minutes;\n\n return `${hours}:${minutesStr} ${ampm}`;\n }\n return date.toLocaleString();\n };\n\n const getIcon = (event: any) => {\n switch (event.action_from) {\n case \"Accounts\":\n return <IndianRupee size={17} />;\n case \"Notes\":\n return <FileText size={17} />;\n default:\n return <Volleyball size={17} />;\n }\n };\n\n const groupEventsByDate = (events: TimelineEvents[]) => {\n return events.reduce(\n (groups: { [key: string]: TimelineEvents[] }, event) => {\n const date = formatTimestamp(event.created_at, \"date\");\n if (!groups[date]) {\n groups[date] = [];\n }\n groups[date].push(event);\n return groups;\n },\n {},\n );\n };\n\n const groupedEvents = groupEventsByDate(timelineEvents);\n\n const formatChanges = (changes: any) => {\n type ChangeRecord = {\n original?: string | null;\n updated: string;\n };\n if (changes === null) {\n return \"No Changes\";\n }\n const result = Object.entries(JSON.parse(changes))\n .map(([key, value]) => {\n const changeRecord = value as ChangeRecord;\n if (\n changeRecord.original === null ||\n changeRecord.original === undefined\n ) {\n return `${key} changed from null to ${changeRecord.updated}`;\n } else {\n return `${key} updated to ${changeRecord.updated}`;\n }\n })\n .join(\"\\n\");\n return result;\n };\n\n // console.log(\"groupedEvents\", groupedEvents);\n return (\n <TimelineContainer>\n <Line />\n {Object.keys(groupedEvents).map((date) => (\n <EventGroupSeparator key={date}>\n <EventGroupHeader>\n <EventGroupDate>{date}</EventGroupDate>\n </EventGroupHeader>\n {groupedEvents[date].map((event, index) => (\n <EventContainer key={index} isLeft={index % 2 === 0}>\n <Dot>{getIcon(event)}</Dot>\n <EventTime isLeft={index % 2 === 0}>\n {formatTimestamp(event.created_at, \"time\")}\n </EventTime>\n <Event>\n <EventContent>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent:\n index % 2 === 0 ? \"flex-start\" : \"flex-end\",\n }}\n >\n <EventTitle>\n {event.action_from + \" \" + event.title}\n </EventTitle>\n <Tooltip\n label={formatChanges(event.changes)}\n shouldWrapChildren\n placement=\"top\"\n hasArrow\n >\n <Info style={{ marginLeft: \"5px\" }} size={17} />\n </Tooltip>\n </div>\n {/* <EventDescription>{formatChanges(event.changes)}</EventDescription> */}\n <EventDate>\n {\" by \" +\n event.action_by +\n \" \" +\n formatTimestamp(event.created_at, \"date\")}\n </EventDate>\n </EventContent>\n </Event>\n </EventContainer>\n ))}\n </EventGroupSeparator>\n ))}\n </TimelineContainer>\n );\n};\n\nexport default Timeline;\n","import React, { createContext, useContext } from \"react\";\nimport {\n Box,\n CloseButton,\n Flex,\n Text,\n useToast,\n useTheme,\n} from \"@chakra-ui/react\";\nimport {\n ToasterChildren,\n ToasterContextType,\n} from \"./ToasterProps\";\n\nconst ToasterContext = createContext<ToasterContextType | undefined>(undefined);\n\nexport default function ToasterProvider({ children }: ToasterChildren) {\n const toast = useToast();\n const theme = useTheme();\n\n const showToast: ToasterContextType[\"showToast\"] = ({\n title,\n description,\n status = \"info\",\n duration = 5000,\n isClosable = true,\n position = \"top-right\",\n onClose,\n }) => {\n const statusColors: Record<string, { bg: string; border: string }> = {\n success: {\n bg: theme.colors.green?.[50],\n border: theme.colors.green?.[300],\n },\n error: {\n bg: theme.colors.red?.[50],\n border: theme.colors.red?.[300],\n },\n warning: {\n bg: theme.colors.yellow?.[50],\n border: theme.colors.yellow?.[300],\n },\n info: {\n bg: theme.colors.blue?.[50] ,\n border: theme.colors.blue?.[300] ,\n },\n loading: {\n bg: theme.colors.gray?.[50] ,\n border: theme.colors.gray?.[300] ,\n },\n };\n\n const colors = statusColors[status];\n\n toast({\n duration,\n isClosable,\n position,\n onCloseComplete: onClose,\n render: ({ onClose }) => (\n <Box\n bg={colors.bg}\n border=\"0.063rem solid\"\n borderColor={colors.border}\n boxShadow=\"md\"\n borderRadius=\"md\"\n p={4}\n minW=\"22.5rem\"\n >\n <Flex justify=\"space-between\" align=\"flex-start\">\n <Box>\n <Text fontWeight=\"semibold\" mb=\"0.25rem\">\n {title}\n </Text>\n <Text fontSize=\"sm\">{description}</Text>\n </Box>\n {isClosable && (\n <CloseButton onClick={onClose} size=\"sm\" mt={1} ml={4} />\n )}\n </Flex>\n </Box>\n ),\n });\n };\n\n return (\n <ToasterContext.Provider value={{ showToast }}>\n {children}\n </ToasterContext.Provider>\n );\n}\n\nexport const useToaster = () => {\n const context = useContext(ToasterContext);\n if (!context) {\n throw new Error(\"useToaster must be used within a ToasterProvider\");\n }\n return context;\n};\n","import React from \"react\";\nimport { VerifyEmailOtpProps } from \"./VerifyEmailOtpProps\";\nimport { HStack, PinInput, PinInputField } from \"@chakra-ui/react\";\nimport { useCustomTheme } from \"../../../Theme/useCustomTheme\";\nimport { MailCheck } from \"lucide-react\";\nexport default function VerifyEmailOtp({\n resendMail,\n onChange,\n onComplete,\n placeholder = \"\",\n pins = 5,\n description,\n title,\n isDisabled = false,\n isInvalid = false,\n styles,\n}: VerifyEmailOtpProps) {\n const theme = useCustomTheme();\n return (\n <div style={styles}>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"3%\",\n }}\n >\n <div style={{ padding: \"3%\" }}>\n <MailCheck size=\"100\" color={theme.colors.primary[500]} />\n </div>\n <h1\n style={{ fontSize: \"2rem\", fontWeight: \"bold\", marginBottom: \"2%\" }}\n >\n {title}\n </h1>\n <p style={{ textAlign: \"center\", marginBottom: \"2%\" }}>\n {description}\n <br />\n {\" your new Pixel Account\"}\n </p>\n <div style={{ marginBottom: \"2%\" }}>\n <HStack>\n <PinInput\n placeholder={placeholder}\n onChange={onChange}\n onComplete={onComplete}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n >\n {Array.from({ length: pins }).map((_, index) => (\n <PinInputField key={index} />\n ))}\n </PinInput>\n </HStack>\n </div>\n <p style={{ textAlign: \"center\", marginBottom: \"2%\" }}>\n Didn't receive the code?{\" \"}\n <button\n onClick={() => resendMail()}\n style={{\n background: \"none\",\n color: theme.colors.primary[700],\n border: \"none\",\n padding: \"0\",\n font: \"inherit\",\n cursor: \"pointer\",\n outline: \"inherit\",\n }}\n >\n Resend Code\n </button>\n </p>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { Box, IconButton } from \"@chakra-ui/react\";\nimport { Columns3, Table2 } from \"lucide-react\";\nimport { useCustomTheme } from \"../../Theme/useCustomTheme\";\nimport { ViewMode, ViewToggleProps } from \"./TableToggleProps\";\nimport ToolTip from \"../ToolTip/ToolTip\";\n\nconst TableToggle: React.FC<ViewToggleProps> = ({ value, onChange }) => {\n const theme: any = useCustomTheme();\n\n const styles = {\n container: {\n display: \"flex\",\n alignItems: \"center\",\n bg: theme.colors.background[600],\n p: \"0.125rem\",\n borderRadius: \"0.375rem\",\n height: \"2rem\",\n gap: \"0.125rem\",\n width: \"6.3rem\",\n },\n button: (mode: ViewMode) => ({\n bg: value === mode ? theme.colors.background[50] : \"transparent\",\n boxShadow: value === mode ? \"md\" : \"none\",\n color: value === mode ? theme.colors.black : theme.colors.background[800],\n borderRadius: \"0.313rem\",\n height: \"1.75rem\",\n border: \"0.031rem solid\",\n borderColor:\n value === mode ? theme.colors.background[400] : \"transparent\",\n padding: \"0.313rem 0.813rem\",\n _hover: {\n bg:\n value === mode\n ? theme.colors.background[50]\n : theme.colors.background[400],\n color:\n value === mode ? theme.colors.black : theme.colors.background[900],\n },\n transition: \"all 0.3s ease-in-out\",\n }),\n };\n\n return (\n <Box {...styles.container}>\n <ToolTip label=\"Table View\" placement=\"top\" fontSize={12} hasArrow>\n <IconButton\n aria-label=\"Grid View\"\n icon={<Table2 size=\"1.25rem\" />}\n variant=\"ghost\"\n onClick={() => onChange(\"grid\")}\n {...styles.button(\"grid\")}\n />\n </ToolTip>\n <ToolTip label=\"Kanban View\" placement=\"top\" fontSize={12} hasArrow>\n <IconButton\n aria-label=\"List View\"\n icon={<Columns3 size=\"1.25rem\" />}\n variant=\"ghost\"\n onClick={() => onChange(\"list\")}\n {...styles.button(\"list\")}\n />\n </ToolTip>\n </Box>\n );\n};\n\nexport default TableToggle;\n","const palette = {\n primary: {\n 50: \"#f5edfc\",\n 100: \"#e0c8f7\",\n 200: \"#d1aef3\",\n 300: \"#bb89ee\",\n 400: \"#ae72ea\",\n 500: \"#9A4FE5\", // primary shade\n 600: \"#8c48d0\",\n 700: \"#6d38a3\",\n 800: \"#552v7e\",\n 900: \"#412160\",\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n secondary: {\n 50: \"#e8e8e9\",\n 100: \"#b7b8bb\",\n 200: \"#94989b\",\n 300: \"#63666d\",\n 400: \"#454951\",\n 500: \"#161b25\", // secondary shade\n 600: \"#141922\",\n 700: \"#10131a\",\n 800: \"#0c0f14\",\n 900: \"#090b10\",\n opacity: {\n 4: \"#161b250a\",\n 8: \"#161b2514\",\n 16: \"#161b2529\",\n 24: \"#161b253d\",\n 32: \"#161b2552\",\n 40: \"#161b2566\",\n 48: \"#161b257a\",\n }\n },\n tertiary: {\n 50: \"#e8e8e9\",\n 100: \"#b7b8bb\",\n 200: \"#94989b\",\n 300: \"#63666d\",\n 400: \"#454951\",\n 500: \"#161b25\", // tertiary shade\n 600: \"#141922\",\n 700: \"#10131a\",\n 800: \"#0c0f14\",\n 900: \"#090b10\",\n opacity: {\n 4: \"#161b250a\",\n 8: \"#161b2514\",\n 16: \"#161b2529\",\n 24: \"#161b253d\",\n 32: \"#161b2552\",\n 40: \"#161b2566\",\n 48: \"#161b257a\",\n }\n },\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n semantic: {\n success: {\n 50: \"#e9f8ef\",\n 100: \"#bbe9cc\",\n 200: \"#9adeb4\",\n 300: \"#6ccf92\",\n 400: \"#4fc67d\",\n 500: \"#23b85c\", // Main success color\n 600: \"#20a754\",\n 700: \"#198341\",\n 800: \"#136533\",\n 900: \"#0f4d27\",\n },\n error: {\n 50: \"#feedeb\",\n 100: \"#fbc6c2\",\n 200: \"#f9aaa4\",\n 300: \"#f6837b\",\n 400: \"#f56b61\",\n 500: \"#f2463a\", // Main error color\n 600: \"#dc4035\",\n 700: \"#ac3229\",\n 800: \"#852720\",\n 900: \"#661d18\",\n },\n warning: {\n 50: \"#fff4ef\",\n 100: \"#ffddce\",\n 200: \"#ffccb7\",\n 300: \"#ffb596\",\n 400: \"#ffa781\",\n 500: \"#Ff9162\", // Main warning color\n 600: \"#e88459\",\n 700: \"#b56746\",\n 800: \"#8c5036\",\n 900: \"#6b3d29\",\n },\n info: {\n 50: \"#eff9fc\",\n 100: \"#cdedf5\",\n 200: \"#b5e4f0\",\n 300: \"#94d7e9\",\n 400: \"#7fd0e5\",\n 500: \"#5FC4de\", // Main info color\n 600: \"#56b2ea\",\n 700: \"#438b9e\",\n 800: \"#346c78\",\n 900: \"#28525d\",\n },\n },\n gray: {\n 50: \"#f7fafc\",\n 100: \"#edf2f7\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e0\",\n 400: \"#a0aec0\",\n 500: \"#718096\",\n 600: \"#4a5568\",\n 700: \"#2d3748\",\n 800: \"#1a202c\",\n 900: \"#171923\",\n },\n red: {\n 50: \"#feedeb\",\n 100: \"#fbc6c2\",\n 200: \"#f9aaa4\",\n 300: \"#f6837b\",\n 400: \"#f56b61\",\n 500: \"#f2463a\", // Main error color\n 600: \"#dc4035\",\n 700: \"#ac3229\",\n 800: \"#852720\",\n 900: \"#661d18\",\n },\n orange: {\n 50: \"#fff4ef\",\n 100: \"#ffddce\",\n 200: \"#ffccb7\",\n 300: \"#ffb596\",\n 400: \"#ffa781\",\n 500: \"#Ff9162\", // Main warning color\n 600: \"#e88459\",\n 700: \"#b56746\",\n 800: \"#8c5036\",\n 900: \"#6b3d29\",\n },\n yellow: {\n 50: \"#fefbec\",\n 100: \"#fdf1c5\",\n 200: \"#fbeba9\",\n 300: \"#fae281\",\n 400: \"#f9dc69\",\n 500: \"#f7d343\",\n 600: \"#e1c03d\",\n 700: \"#af9630\",\n 800: \"#887425\",\n 900: \"#68591c\",\n },\n green: {\n 50: \"#e9f8ef\",\n 100: \"#bbe9cc\",\n 200: \"#9adeb4\",\n 300: \"#6ccf92\",\n 400: \"#4fc67d\",\n 500: \"#23b85c\", // Main success color\n 600: \"#20a754\",\n 700: \"#198341\",\n 800: \"#136533\",\n 900: \"#0f4d27\",\n },\n teal: {\n 50: \"#eff9fc\",\n 100: \"#cdedf5\",\n 200: \"#b5e4f0\",\n 300: \"#94d7e9\",\n 400: \"#7fd0e5\",\n 500: \"#5FC4de\", // Main info color\n 600: \"#56b2ea\",\n 700: \"#438b9e\",\n 800: \"#346c78\",\n 900: \"#28525d\",\n },\n blue: {\n 50: \"#ebf8ff\",\n 100: \"#bee3f8\",\n 200: \"#90cdf4\",\n 300: \"#63b3ed\",\n 400: \"#4299e1\",\n 500: \"#3182ce\",\n 600: \"#2b6cb0\",\n 700: \"#2c5282\",\n 800: \"#2a4365\",\n 900: \"#1a365d\",\n },\n cyan: {\n 50: \"#edfdfd\",\n 100: \"#c4f1f9\",\n 200: \"#9decf9\",\n 300: \"#76e4f7\",\n 400: \"#0bc5ea\",\n 500: \"#00b5d8\",\n 600: \"#00a3c4\",\n 700: \"#0987a0\",\n 800: \"#086f83\",\n 900: \"#065666\",\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#e9d8fd\",\n 200: \"#d6bcfa\",\n 300: \"#b794f4\",\n 400: \"#9f7aea\",\n 500: \"#805ad5\",\n 600: \"#6b46c1\",\n 700: \"#553c9a\",\n 800: \"#44337a\",\n 900: \"#322659\",\n },\n pink: {\n 50: \"#fff5f7\",\n 100: \"#fed7e2\",\n 200: \"#fbb6ce\",\n 300: \"#f687b3\",\n 400: \"#ed64a6\",\n 500: \"#d53f8c\",\n 600: \"#b83280\",\n 700: \"#97266d\",\n 800: \"#702459\",\n 900: \"#521b41\",\n },\n background: {\n 50: \"#ffffff\",\n 100: \"#fefefe\",\n 200: \"#fdfdfd\",\n 300: \"#fcfcfc\",\n 400: \"#fcfcfc\",\n 500: \"#fbfbfb\",\n 600: \"#e4e4e4\",\n 700: \"#b2b2b2\",\n 800: \"#8a8a8a\",\n 900: \"#696969\",\n },\n backgroundColor: {\n main: \"#f8f9fa\",\n secondary: \"#f1f1f1\",\n tertiary: \"#ececec\",\n quaternary: \"#e2e6ea\",\n light: \"#fafafa\",\n medium: \"#eaeaea\",\n accent: \"#e5e5e5\",\n subtle: \"#f5f6f7\",\n muted: \"#dfe3e6\",\n neutral: \"#ebedef\",\n base: \"#FBFBFB\",\n tableHeader: \"#F6F6F6\",\n },\n text: {\n 50: \"#eeeff0\",\n 100: \"#cacccf\",\n 200: \"#b1b3b8\",\n 300: \"#8d9097\",\n 400: \"#777b83\",\n 500: \"#555a64\",\n 600: \"#4d525b\",\n 700: \"#3c4047\",\n 800: \"#2f3237\",\n 900: \"#24262a\",\n },\n header: {\n 50: \"#ecedec\",\n 100: \"#c5c6ca\",\n 200: \"#a9abb0\",\n 300: \"#81848c\",\n 400: \"#696b75\",\n 500: \"#434853\",\n 600: \"#3d424c\",\n 700: \"#30333b\",\n 800: \"#25282e\",\n 900: \"#1c1e23\",\n },\n placeholder: {\n 50: \"#f1f1f2\",\n 100: \"#d3d5d8\",\n 200: \"#bec0c5\",\n 300: \"#a0a3aa\",\n 400: \"#8d9199\",\n 500: \"#717680\",\n 600: \"#676b74\",\n 700: \"#50545b\",\n 800: \"#3e4146\",\n 900: \"#2f3236\",\n },\n boxShadow: {\n primary: \"#9A52E247\",\n error: \"#F2463A47\",\n default: \"\",\n },\n sidebar: {\n background: {\n 50: \"#e9eaf0\",\n 100: \"#d4d6e0\",\n\n 200: \"#212747\",\n 300: \"#7d84a2\",\n 400: \"#525b83\",\n 500: \"#161B32\",\n 600: \"#12162a\",\n 700: \"#0e1221\",\n 800: \"#0a0d19\",\n 900: \"#060911\",\n }\n\n },\n boxborder: {\n 50: \"#fbfbfb\",\n 100: \"#f2f3f4\",\n 200: \"#ecedee\",\n 300: \"#e4e5e7\",\n 400: \"#dee0e2\",\n 500: \"#d6d8db\",\n 600: \"#c3c5c7\",\n 700: \"#98999b\",\n 800: \"#767778\",\n 900: \"#5a5b5c\",\n },\n border: {\n 50: \"#fdfdfd\",\n 100: \"#f8f8f8\",\n 200: \"#f4f4f4\",\n 300: \"#f0f0f0\",\n 400: \"#ededed\",\n 500: \"#e8e8e8\",\n 600: \"#d3d3d3\",\n 700: \"#a5a5a5\",\n 800: \"#808080\",\n 900: \"#616161\",\n },\n table: {\n hover: {\n 50: \"#fefefe\",\n 100: \"#fcfcfc\",\n 200: \"#fbfbfb\",\n 300: \"#f9f9f9\",\n 400: \"#f8f8f8\",\n 500: \"#f6f6f6\",\n 600: \"#e0e0e0\",\n 700: \"#afafaf\",\n 800: \"#878787\",\n 900: \"#676767\",\n }\n },\n disabled: {\n 50: \"#fcfcfc\",\n 100: \"#f7f7f7\",\n 200: \"#f3f3f3\",\n 300: \"#ededed\",\n 400: \"#e9e9e9\",\n 500: \"#e4e4e4\",\n 600: \"#cfcfcf\",\n 700: \"#a2a2a2\",\n 800: \"#7d7d7d\",\n 900: \"#606060\",\n }\n};\n\nexport default palette;\n","const space = {\n px: \"1px\",\n 0: \"0\",\n 1: \"0.25rem\", // 4px\n 2: \"0.5rem\", // 8px\n 3: \"0.75rem\", // 12px\n 4: \"1rem\", // 16px\n 5: \"1.25rem\", // 20px\n 6: \"1.5rem\", // 24px\n 7: \"1.75rem\", // 28px\n 8: \"2rem\", // 32px\n 9: \"2.25rem\", // 36px\n 10: \"2.5rem\", // 40px\n 12: \"3rem\", // 48px\n 14: \"3.5rem\", // 56px\n 16: \"4rem\", // 64px\n 20: \"5rem\", // 80px\n 24: \"6rem\", // 96px\n 28: \"7rem\", // 112px\n 32: \"8rem\", // 128px\n 36: \"9rem\", // 144px\n 40: \"10rem\", // 160px\n 44: \"11rem\", // 176px\n 48: \"12rem\", // 192px\n 52: \"13rem\", // 208px\n 56: \"14rem\", // 224px\n 60: \"15rem\", // 240px\n 64: \"16rem\", // 256px\n 72: \"18rem\", // 288px\n 80: \"20rem\", // 320px\n 96: \"24rem\", // 384px\n};\n\nexport default space;","import space from \"./space\";\n\nconst common = {\n lineHeights: {\n normal: \"normal\",\n none: 1,\n shorter: 1.25,\n short: 1.375,\n base: 1.5,\n tall: 1.625,\n taller: \"2\",\n \"3\": \".75rem\",\n \"4\": \"1rem\",\n \"5\": \"1.25rem\",\n \"6\": \"1.5rem\",\n \"7\": \"1.75rem\",\n \"8\": \"2rem\",\n \"9\": \"2.25rem\",\n \"10\": \"2.5rem\",\n },\n letterSpacings: {\n tighter: \"-0.05em\",\n tight: \"-0.025em\",\n normal: \"0\",\n wide: \"0.025em\",\n wider: \"0.05em\",\n widest: \"0.1em\",\n },\n space: space,\n sizes: {\n ...space,\n full: \"100%\",\n screenW: \"100vw\",\n screenH: \"100vh\",\n max: 'max-content',\n min: 'min-content',\n '3xs': '14rem',\n '2xs': '16rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n '8xl': '90rem',\n container: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n },\n },\n breakpoints: {\n sm: \"30em\",\n md: \"48em\",\n lg: \"62em\",\n xl: \"80em\",\n \"2xl\": \"96em\",\n },\n shadows: {\n xs: \"0 0 0 1px rgba(0, 0, 0, 0.05)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n base: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n xl: \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"2xl\": \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n outline: \"0 0 0 3px rgba(66, 153, 225, 0.6)\",\n inner: \"inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)\",\n none: \"none\",\n darkLg: \"0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -2px rgba(0, 0, 0, 0.5)\",\n },\n radii: {\n none: \"0\",\n sm: \"0.125rem\",\n base: \"0.25rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.5rem\",\n full: \"9999px\",\n },\n zIndices: {\n hide: -1,\n auto: \"auto\",\n base: 0,\n docked: 10,\n dropdown: 1000,\n sticky: 1100,\n banner: 1200,\n overlay: 1300,\n modal: 1400,\n popover: 1500,\n skipLink: 1600,\n toast: 1700,\n tooltip: 1800,\n },\n config: {\n cssVarPrefix: 'ck',\n }\n};\n\nexport default common;","// Supports weights 100-900\n// import \"@fontsource-variable/inter\";\n\nconst fonts = {\n fonts: {\n body: \"Inter Variable, sans-serif\",\n heading: \"Inter Variable, sans-serif\",\n mono: \"Inter Variable, sans-serif\",\n // body: \"Ubuntu Sans, serif\",\n // heading: \"Ubuntu Sans, serif\",\n // mono: \"Ubuntu Sans, monospace\",\n },\n fontSizes: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n fontWeights: {\n hairline: 100,\n thin: 200,\n light: 300,\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n extrabold: 800,\n black: 900,\n },\n};\n\nexport default fonts;\n","import { Button } from \"../Components/Button/Button.styles\";\nimport { Checkbox } from \"../Components/Checkbox/Checkbox.styles\";\nimport { Input } from \"../Components/Input/TextInput.styles\";\nimport { Select } from \"../Components/Select/Select.styles\";\nimport { Tag } from \"../Components/Tag/Tag.styles\";\n\nexport const componentStyles = {\n Checkbox,\n Input,\n Button,\n Select,\n Tag,\n};\n","import { ComponentStyleConfig } from \"@chakra-ui/react\";\n\nexport const Checkbox: ComponentStyleConfig = {\n baseStyle: ({ theme }) => {\n return {\n control: {\n width: \"1.25rem\",\n height: \"1.25rem\",\n borderWidth: \"1.6px\",\n _disabled: {\n bg: theme.colors.background[50],\n borderColor: theme.colors.boxborder[500],\n cursor: \"not-allowed\",\n },\n _indeterminate: {\n bg: theme.colors.background[50],\n borderColor: theme.colors.primary[500],\n svg: {\n color: theme.colors.primary[500],\n },\n },\n\n _checked: {\n bg: theme.colors.primary[600],\n borderColor: theme.colors.primary[600],\n },\n\n _hover: {\n bg: theme.colors.background[100],\n borderColor: theme.colors.primary[400],\n _checked: {\n bg: theme.colors.primary[600],\n borderColor: theme.colors.primary[600],\n },\n _indeterminate: {\n bg: \"none\",\n borderColor: theme.colors.primary[600],\n },\n },\n\n _focus: {\n boxShadow: `0 0 0 2px ${theme.colors.primary[300]}`,\n borderColor: theme.colors.primary[500],\n },\n\n _active: {\n bg: theme.colors.primary[600],\n borderColor: theme.colors.primary[600],\n },\n },\n icon: {\n color: theme.colors.background[50],\n },\n };\n },\n};\n","\nimport { ComponentStyleConfig } from \"@chakra-ui/react\";\n\nexport const Input: ComponentStyleConfig = {\n baseStyle: {\n field: {\n\n fontWeight: 500,\n fontSize: \"0.875rem\",\n letterSpacing: \"0.044rem\",\n pt: \"0.813rem\",\n pb: \"0.813rem\",\n borderRadius: \"0.25rem\",\n _placeholder: {\n fontStyle: \"italic\",\n },\n },\n },\n sizes: {\n md: {\n field: {\n h: \"2.75rem\",\n fontSize: \"0.875rem\",\n },\n },\n },\n variants: {\n outline: (props) => {\n const { theme } = props;\n const errorColor = theme.colors.semantic?.error?.[500] ?? \"red.500\";\n const borderColor = theme.colors.boxborder?.[500] ?? \"gray.300\";\n const shadowPrimary = theme.colors.boxShadow?.primary ?? \"blue.100\";\n const shadowError = theme.colors.boxShadow?.error ?? \"red.100\";\n const primary = theme.colors.primary?.[500] ?? \"blue.500\";\n\n return {\n field: {\n bg: theme.colors.gray?.[50] ?? \"gray.50\",\n border: \"0.063rem solid\",\n borderColor,\n _hover: {\n borderColor: primary,\n // boxShadow: `0 0 0 0.125rem ${shadowPrimary}`,\n outline: \"0\"\n },\n _focus: {\n borderColor: primary,\n boxShadow: `0 0 0 0.125rem ${shadowPrimary}`,\n outline: \"0\"\n },\n _invalid: {\n borderColor: errorColor,\n boxShadow: `0 0 0 0.125rem ${shadowError}`,\n _hover: {\n borderColor: errorColor,\n // boxShadow: `0 0 0 0.125rem ${shadowError}`,\n outline: \"0\"\n },\n _focus: {\n borderColor: errorColor,\n boxShadow: `0 0 0 0.125rem ${shadowError}`,\n outline: \"0\"\n },\n },\n _readOnly: {\n boxShadow: 'inherit',\n },\n _disabled: {\n bg: theme.colors.gray?.[100] ?? \"gray.100\",\n opacity: 1,\n cursor: \"not-allowed\",\n _hover: {\n border: \"0.063rem solid\",\n borderColor,\n },\n },\n },\n };\n },\n },\n defaultProps: {\n variant: \"outline\",\n size: \"md\",\n },\n};\n","import { ComponentStyleConfig } from \"@chakra-ui/react\";\n\nexport const Button: ComponentStyleConfig = {\n baseStyle: ({ theme }) => ({\n borderRadius: \"0.25rem\",\n fontWeight: 500,\n fontSize: \"1rem\",\n _disabled: {\n opacity: 0.6,\n cursor: \"not-allowed\",\n },\n }),\n\n variants: {\n solid: ({ theme, colorScheme = \"primary\" }) => ({\n bg: theme.colors[colorScheme][500],\n color: theme.colors.white,\n _hover: {\n bg: theme.colors[colorScheme][600],\n },\n _active: {\n bg: theme.colors[colorScheme][700],\n },\n }),\n\n outline: ({ theme, colorScheme = \"primary\" }) => ({\n border: \"0.1rem solid\",\n borderColor: theme.colors[colorScheme][500],\n color: theme.colors[colorScheme][500],\n bg: \"transparent\",\n _hover: {\n bg: theme.colors[colorScheme][500],\n borderColor: theme.colors[colorScheme][600],\n color: theme.colors.white,\n },\n _active: {\n bg: theme.colors[colorScheme][600],\n color: theme.colors.white,\n },\n }),\n\n ghost: ({ theme, colorScheme = \"primary\" }) => ({\n color: theme.colors[colorScheme][500],\n bg: \"transparent\",\n _hover: {\n bg: theme.colors.gray[200],\n },\n _active: {\n bg: theme.colors.gray[200],\n },\n }),\n\n link: ({ theme, colorScheme = \"primary\" }) => ({\n color: theme.colors[colorScheme][500],\n textDecoration: \"underline\",\n bg: \"transparent\",\n _hover: {\n color: theme.colors[colorScheme][600],\n textDecoration: \"none\",\n },\n _active: {\n color: theme.colors[colorScheme][600],\n },\n }),\n\n unstyled: () => ({\n bg: \"transparent\",\n color: \"inherit\",\n _hover: {\n bg: \"transparent\",\n },\n }),\n },\n\n sizes: {\n xs: {\n h: \"1.5rem\",\n fontSize: \"0.75rem\",\n px: \"0.5rem\",\n },\n sm: {\n h: \"2rem\",\n fontSize: \"0.875rem\",\n px: \"0.75rem\",\n },\n md: {\n h: \"2.5rem\",\n fontSize: \"1rem\",\n px: \"1rem\",\n },\n lg: {\n h: \"3rem\",\n fontSize: \"1.125rem\",\n px: \"1.5rem\",\n },\n\n },\n\n defaultProps: {\n size: \"md\",\n variant: \"solid\",\n colorScheme: \"primary\",\n },\n};\n","import { ComponentStyleConfig } from \"@chakra-ui/react\";\n\nexport const Select: ComponentStyleConfig = {\n baseStyle: {\n field: {\n fontWeight: 500,\n fontSize: \"0.875rem\",\n letterSpacing: \"0.044rem\",\n borderRadius: \"0.25rem\",\n minWidth: \"0\", // allow shrinking inside flex\n width: \"100%\", // full container width\n maxWidth: \"100%\",\n _placeholder: {\n fontStyle: \"italic\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n },\n icon: {\n width: \"1.25rem\",\n height: \"1.25rem\",\n },\n },\n sizes: {\n sm: {\n field: {\n h: \"2.125rem\",\n fontSize: \"0.8125rem\",\n px: \"0.5rem\",\n py: \"0.5rem\",\n },\n },\n md: {\n field: {\n h: \"2.375rem\",\n fontSize: \"0.875rem\",\n px: \"0.75rem\",\n py: \"0.5rem\",\n },\n },\n lg: {\n field: {\n h: \"2.75rem\",\n fontSize: \"0.9375rem\",\n px: \"1rem\",\n py: \"0.5rem\",\n },\n },\n },\n variants: {\n outline: (props) => {\n const { theme } = props;\n const errorColor = theme.colors.semantic?.error?.[500] ?? \"red.500\";\n const borderColor = theme.colors.boxborder?.[500] ?? \"gray.300\";\n const shadowPrimary = theme.colors.boxShadow?.primary ?? \"blue.100\";\n const shadowError = theme.colors.boxShadow?.error ?? \"red.100\";\n const primary = theme.colors.primary?.[500] ?? \"blue.500\";\n\n return {\n field: {\n bg: theme.colors.gray?.[50] ?? \"gray.50\",\n border: \"0.063rem solid\",\n borderColor,\n _hover: {\n borderColor: primary,\n boxShadow: `0 0 0 0.125rem ${shadowPrimary}`,\n },\n _focus: {\n borderColor: primary,\n boxShadow: `0 0 0 0.125rem ${shadowPrimary}`,\n },\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n },\n _invalid: {\n borderColor: errorColor,\n boxShadow: `0 0 0 0.125rem ${shadowError}`,\n _hover: {\n borderColor: errorColor,\n boxShadow: `0 0 0 0.125rem ${shadowError}`,\n },\n _focus: {\n borderColor: errorColor,\n boxShadow: `0 0 0 0.125rem ${shadowError}`,\n },\n },\n },\n };\n },\n },\n defaultProps: {\n variant: \"outline\",\n size: \"md\",\n },\n};\n","import { ComponentStyleConfig } from \"@chakra-ui/react\";\n\nexport const Tag: ComponentStyleConfig = {\n baseStyle: {\n borderRadius: \"full\",\n fontWeight: \"bold\",\n px: 3,\n py: 1,\n },\n sizes: {\n sm: {\n fontSize: \"0.75rem\",\n px: 2,\n py: 1,\n },\n md: {\n fontSize: \"0.875rem\",\n px: 3,\n py: 1.5,\n },\n lg: {\n fontSize: \"1rem\",\n px: 4,\n py: 2,\n },\n },\n variants: {\n solid: ({ theme, colorScheme = \"primary\" }) => ({\n bg: theme.colors[colorScheme][500],\n color: theme.colors.white,\n _hover: {\n bg: theme.colors[colorScheme][600],\n },\n _active: {\n bg: theme.colors[colorScheme][700],\n },\n }),\n outline: ({ theme, colorScheme = \"primary\" }) => ({\n border: \"0.125rem solid\",\n borderColor: theme.colors[colorScheme][500],\n color: theme.colors[colorScheme][500],\n bg: \"transparent\",\n _hover: {\n bg: theme.colors[colorScheme][50],\n },\n _active: {\n bg: theme.colors[colorScheme][100],\n },\n }),\n },\n defaultProps: {\n size: \"md\",\n variant: \"solid\",\n colorScheme: \"primary\",\n },\n};\n","import { extendTheme } from \"@chakra-ui/react\";\nimport palette from \"./palette\";\nimport { CustomThemeProps } from \"../themeProps\";\nimport common from \"../common\";\nimport fonts from \"../fonts\";\nimport { componentStyles } from \"../componentStyles\";\n\nconst lavender: CustomThemeProps = {\n colors: palette,\n ...fonts,\n ...common,\n};\nexport default extendTheme({\n ...lavender,\n components: componentStyles,\n});\n","import defaultPalette from \"../Default/palette\";\n\nconst palette = {\n ...defaultPalette,\n primary: {\n 50: \"#e3f9e5\", // Lightest green\n 100: \"#c1f0c0\", // Lighter green\n 200: \"#9ee4a1\", // Light green\n 300: \"#72d785\", // Main green (primary color)\n 400: \"#48c15d\", // Darker green (hover)\n 500: \"#2caa3d\", // Custom primary color (default)\n 600: \"#239c31\", // Darker primary color\n 700: \"#1d8626\", // Even darker green\n 800: \"#16631c\", // Very dark green\n 900: \"#0d4b13\", // Darkest green\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n secondary: {\n 50: \"#e3f9e5\", // Lightest green\n 100: \"#c1f0c0\", // Lighter green\n 200: \"#9ee4a1\", // Light green\n 300: \"#72d785\", // Main green (primary color)\n 400: \"#48c15d\", // Darker green (hover)\n 500: \"#2caa3d\", // Custom primary color (default)\n 600: \"#239c31\", // Darker primary color\n 700: \"#1d8626\", // Even darker green\n 800: \"#16631c\", // Very dark green\n 900: \"#0d4b13\", // Darkest green\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n tertiary: {\n 50: \"#e3f9e5\", // Lightest green\n 100: \"#c1f0c0\", // Lighter green\n 200: \"#9ee4a1\", // Light green\n 300: \"#72d785\", // Main green (primary color)\n 400: \"#48c15d\", // Darker green (hover)\n 500: \"#2caa3d\", // Custom primary color (default)\n 600: \"#239c31\", // Darker primary color\n 700: \"#1d8626\", // Even darker green\n 800: \"#16631c\", // Very dark green\n 900: \"#0d4b13\", // Darkest green\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n semantic: {\n success: {\n 50: \"#e6f9f0\",\n 100: \"#c0f0d8\",\n 200: \"#8be6bb\",\n 300: \"#5bdb9e\",\n 400: \"#33d181\",\n 500: \"#00b768\", // Main success color\n 600: \"#00a05a\",\n 700: \"#00854b\",\n 800: \"#006b3c\",\n 900: \"#004c28\",\n },\n error: {\n 50: \"#ffe6e6\",\n 100: \"#fbbcbc\",\n 200: \"#f28f8f\",\n 300: \"#e66060\",\n 400: \"#db3a3a\",\n 500: \"#c21e1e\", // Main error color\n 600: \"#a01919\",\n 700: \"#7e1313\",\n 800: \"#5c0d0d\",\n 900: \"#3d0909\",\n },\n warning: {\n 50: \"#fff4e6\",\n 100: \"#ffe1b8\",\n 200: \"#ffcc85\",\n 300: \"#ffb653\",\n 400: \"#ffa31a\",\n 500: \"#ff8a00\", // Main warning color\n 600: \"#db7000\",\n 700: \"#b75800\",\n 800: \"#934300\",\n 900: \"#702f00\",\n },\n info: {\n 50: \"#e3f5ff\",\n 100: \"#b8e4ff\",\n 200: \"#85d1ff\",\n 300: \"#52bdff\",\n 400: \"#1fa9ff\",\n 500: \"#008df5\", // Main info color\n 600: \"#0077db\",\n 700: \"#005cb3\",\n 800: \"#004489\",\n 900: \"#002d5c\",\n },\n },\n gray: {\n 50: \"#f7fafc\",\n 100: \"#edf2f7\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e0\",\n 400: \"#a0aec0\",\n 500: \"#718096\",\n 600: \"#4a5568\",\n 700: \"#2d3748\",\n 800: \"#1a202c\",\n 900: \"#171923\",\n },\n red: {\n 50: \"#fff5f5\",\n 100: \"#fed7d7\",\n 200: \"#feb2b2\",\n 300: \"#fc8181\",\n 400: \"#f56565\",\n 500: \"#e53e3e\",\n 600: \"#c53030\",\n 700: \"#9b2c2c\",\n 800: \"#822727\",\n 900: \"#63171b\",\n },\n orange: {\n 50: \"#fffaf0\",\n 100: \"#feebc8\",\n 200: \"#fbd38d\",\n 300: \"#f6ad55\",\n 400: \"#ed8936\",\n 500: \"#dd6b20\",\n 600: \"#c05621\",\n 700: \"#9c4221\",\n 800: \"#7b341e\",\n 900: \"#652b19\",\n },\n yellow: {\n 50: \"#fffff0\",\n 100: \"#fefcbf\",\n 200: \"#faf089\",\n 300: \"#f6e05e\",\n 400: \"#ecc94b\",\n 500: \"#d69e2e\",\n 600: \"#b7791f\",\n 700: \"#975a16\",\n 800: \"#744210\",\n 900: \"#5f370e\",\n },\n green: {\n 50: \"#f0fff4\",\n 100: \"#c6f6d5\",\n 200: \"#9ae6b4\",\n 300: \"#68d391\",\n 400: \"#48bb78\",\n 500: \"#38a169\",\n 600: \"#2f855a\",\n 700: \"#276749\",\n 800: \"#22543d\",\n 900: \"#1c4532\",\n },\n teal: {\n 50: \"#e6fffa\",\n 100: \"#b2f5ea\",\n 200: \"#81e6d9\",\n 300: \"#4fd1c5\",\n 400: \"#38b2ac\",\n 500: \"#319795\",\n 600: \"#2c7a7b\",\n 700: \"#285e61\",\n 800: \"#234e52\",\n 900: \"#1d4044\",\n },\n blue: {\n 50: \"#ebf8ff\",\n 100: \"#bee3f8\",\n 200: \"#90cdf4\",\n 300: \"#63b3ed\",\n 400: \"#4299e1\",\n 500: \"#3182ce\",\n 600: \"#2b6cb0\",\n 700: \"#2c5282\",\n 800: \"#2a4365\",\n 900: \"#1a365d\",\n },\n cyan: {\n 50: \"#edfdfd\",\n 100: \"#c4f1f9\",\n 200: \"#9decf9\",\n 300: \"#76e4f7\",\n 400: \"#0bc5ea\",\n 500: \"#00b5d8\",\n 600: \"#00a3c4\",\n 700: \"#0987a0\",\n 800: \"#086f83\",\n 900: \"#065666\",\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#e9d8fd\",\n 200: \"#d6bcfa\",\n 300: \"#b794f4\",\n 400: \"#9f7aea\",\n 500: \"#805ad5\",\n 600: \"#6b46c1\",\n 700: \"#553c9a\",\n 800: \"#44337a\",\n 900: \"#322659\",\n },\n pink: {\n 50: \"#fff5f7\",\n 100: \"#fed7e2\",\n 200: \"#fbb6ce\",\n 300: \"#f687b3\",\n 400: \"#ed64a6\",\n 500: \"#d53f8c\",\n 600: \"#b83280\",\n 700: \"#97266d\",\n 800: \"#702459\",\n 900: \"#521b41\",\n },\n background: {\n 50: \"#ffffff\",\n 100: \"#fefefe\",\n 200: \"#fdfdfd\",\n 300: \"#fcfcfc\",\n 400: \"#fcfcfc\",\n 500: \"#fbfbfb\",\n 600: \"#e4e4e4\",\n 700: \"#b2b2b2\",\n 800: \"#8a8a8a\",\n 900: \"#696969\",\n },\n backgroundColor: {\n main: \"#f8f9fa\", // Light greyish white\n secondary: \"#f1f1f1\", // Very light grey\n tertiary: \"#ececec\", // Soft grey\n quaternary: \"#e2e6ea\", // Pale blueish-grey\n light: \"#fafafa\", // Almost pure white\n medium: \"#eaeaea\", // Medium light grey\n accent: \"#e5e5e5\", // A slightly deeper grey\n subtle: \"#f5f6f7\", // Slightly off-white with a cooler tone\n muted: \"#dfe3e6\", // Light muted blue-grey\n neutral: \"#ebedef\", // Neutral grey with a balanced tone\n },\n text: {\n 50: \"#eeeff0\",\n 100: \"#cacccf\",\n 200: \"#b1b3b8\",\n 300: \"#8d9097\",\n 400: \"#777b83\",\n 500: \"#555a64\",\n 600: \"#4d525b\",\n 700: \"#3c4047\",\n 800: \"#2f3237\",\n 900: \"#24262a\",\n },\n header: {\n 50: \"#ecedec\",\n 100: \"#c5c6ca\",\n 200: \"#a9abb0\",\n 300: \"#81848c\",\n 400: \"#696b75\",\n 500: \"#434853\",\n 600: \"#3d424c\",\n 700: \"#30333b\",\n 800: \"#25282e\",\n 900: \"#1c1e23\",\n },\n placeholder: {\n 50: \"#f1f1f2\",\n 100: \"#d3d5d8\",\n 200: \"#bec0c5\",\n 300: \"#a0a3aa\",\n 400: \"#8d9199\",\n 500: \"#717680\",\n 600: \"#676b74\",\n 700: \"#50545b\",\n 800: \"#3e4146\",\n 900: \"#2f3236\",\n },\n boxShadow: {\n primary: \"#9A52E247\",\n error: \"#F2463A47\",\n default: \"\",\n },\n sidebar: {\n background: {\n 50: \"#f1f1f2\",\n 100: \"#d3d5d8\",\n 200: \"#bec0c5\",\n 300: \"#a0a3aa\",\n 400: \"#8d9199\",\n 500: \"#161B32\",\n 600: \"#676b74\",\n 700: \"#50545b\",\n 800: \"#3e4146\",\n 900: \"#2f3236\",\n }\n },\n boxborder: {\n 50: \"#fbfbfb\",\n 100: \"#f2f3f4\",\n 200: \"#ecedee\",\n 300: \"#e4e5e7\",\n 400: \"#dee0e2\",\n 500: \"#d6d8db\",\n 600: \"#c3c5c7\",\n 700: \"#98999b\",\n 800: \"#767778\",\n 900: \"#5a5b5c\",\n },\n border: {\n 50: \"#fdfdfd\",\n 100: \"#f8f8f8\",\n 200: \"#f4f4f4\",\n 300: \"#f0f0f0\",\n 400: \"#ededed\",\n 500: \"#e8e8e8\",\n 600: \"#d3d3d3\",\n 700: \"#a5a5a5\",\n 800: \"#808080\",\n 900: \"#616161\",\n },\n table: {\n hover: {\n 50: \"#fefefe\",\n 100: \"#fcfcfc\",\n 200: \"#fbfbfb\",\n 300: \"#f9f9f9\",\n 400: \"#f8f8f8\",\n 500: \"#f6f6f6\",\n 600: \"#e0e0e0\",\n 700: \"#afafaf\",\n 800: \"#878787\",\n 900: \"#676767\",\n }\n },\n disabled: {\n 50: \"#fcfcfc\",\n 100: \"#f7f7f7\",\n 200: \"#f3f3f3\",\n 300: \"#ededed\",\n 400: \"#e9e9e9\",\n 500: \"#e4e4e4\",\n 600: \"#cfcfcf\",\n 700: \"#a2a2a2\",\n 800: \"#7d7d7d\",\n 900: \"#606060\",\n }\n};\n\nexport default palette;\n","import { extendTheme } from \"@chakra-ui/react\";\nimport palette from \"./palette\";\nimport fonts from \"../fonts\";\nimport { CustomThemeProps } from \"../themeProps\";\nimport common from \"../common\";\nimport { componentStyles } from \"../componentStyles\";\n\nconst meadow: CustomThemeProps = {\n ...fonts,\n colors: palette,\n ...common,\n};\n\nexport default extendTheme({\n ...meadow,\n components: componentStyles,\n});\n","import defaultPalette from \"../Default/palette\";\n\nconst palette = {\n ...defaultPalette,\n primary: {\n 50: \"#ffe0b2\", // Lightest orange\n 100: \"#ffcc80\", // Lighter orange\n 200: \"#ffb74d\", // Light orange\n 300: \"#ffa726\", // Main orange (primary color)\n 400: \"#ff9800\", // Darker orange (hover)\n 500: \"#fb8c00\", // Custom primary orange (default)\n 600: \"#f57c00\", // Darker primary orange\n 700: \"#ef6c00\", // Even darker orange\n 800: \"#e65100\", // Very dark orange\n 900: \"#bf360c\", // Darkest orange\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n secondary: {\n 50: \"#ffe0b2\", // Lightest orange\n 100: \"#ffcc80\", // Lighter orange\n 200: \"#ffb74d\", // Light orange\n 300: \"#ffa726\", // Main orange (primary color)\n 400: \"#ff9800\", // Darker orange (hover)\n 500: \"#fb8c00\", // Custom primary orange (default)\n 600: \"#f57c00\", // Darker primary orange\n 700: \"#ef6c00\", // Even darker orange\n 800: \"#e65100\", // Very dark orange\n 900: \"#bf360c\", // Darkest orange\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n tertiary: {\n 50: \"#ffe0b2\", // Lightest orange\n 100: \"#ffcc80\", // Lighter orange\n 200: \"#ffb74d\", // Light orange\n 300: \"#ffa726\", // Main orange (primary color)\n 400: \"#ff9800\", // Darker orange (hover)\n 500: \"#fb8c00\", // Custom primary orange (default)\n 600: \"#f57c00\", // Darker primary orange\n 700: \"#ef6c00\", // Even darker orange\n 800: \"#e65100\", // Very dark orange\n 900: \"#bf360c\", // Darkest orange\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n semantic: {\n success: {\n 50: \"#e6f9f0\",\n 100: \"#c0f0d8\",\n 200: \"#8be6bb\",\n 300: \"#5bdb9e\",\n 400: \"#33d181\",\n 500: \"#00b768\", // Main success color\n 600: \"#00a05a\",\n 700: \"#00854b\",\n 800: \"#006b3c\",\n 900: \"#004c28\",\n },\n error: {\n 50: \"#ffe6e6\",\n 100: \"#fbbcbc\",\n 200: \"#f28f8f\",\n 300: \"#e66060\",\n 400: \"#db3a3a\",\n 500: \"#c21e1e\", // Main error color\n 600: \"#a01919\",\n 700: \"#7e1313\",\n 800: \"#5c0d0d\",\n 900: \"#3d0909\",\n },\n warning: {\n 50: \"#fff4e6\",\n 100: \"#ffe1b8\",\n 200: \"#ffcc85\",\n 300: \"#ffb653\",\n 400: \"#ffa31a\",\n 500: \"#ff8a00\", // Main warning color\n 600: \"#db7000\",\n 700: \"#b75800\",\n 800: \"#934300\",\n 900: \"#702f00\",\n },\n info: {\n 50: \"#e3f5ff\",\n 100: \"#b8e4ff\",\n 200: \"#85d1ff\",\n 300: \"#52bdff\",\n 400: \"#1fa9ff\",\n 500: \"#008df5\", // Main info color\n 600: \"#0077db\",\n 700: \"#005cb3\",\n 800: \"#004489\",\n 900: \"#002d5c\",\n },\n },\n gray: {\n 50: \"#f7fafc\",\n 100: \"#edf2f7\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e0\",\n 400: \"#a0aec0\",\n 500: \"#718096\",\n 600: \"#4a5568\",\n 700: \"#2d3748\",\n 800: \"#1a202c\",\n 900: \"#171923\",\n },\n red: {\n 50: \"#fff5f5\",\n 100: \"#fed7d7\",\n 200: \"#feb2b2\",\n 300: \"#fc8181\",\n 400: \"#f56565\",\n 500: \"#e53e3e\",\n 600: \"#c53030\",\n 700: \"#9b2c2c\",\n 800: \"#822727\",\n 900: \"#63171b\",\n },\n orange: {\n 50: \"#fffaf0\",\n 100: \"#feebc8\",\n 200: \"#fbd38d\",\n 300: \"#f6ad55\",\n 400: \"#ed8936\",\n 500: \"#dd6b20\",\n 600: \"#c05621\",\n 700: \"#9c4221\",\n 800: \"#7b341e\",\n 900: \"#652b19\",\n },\n yellow: {\n 50: \"#fffff0\",\n 100: \"#fefcbf\",\n 200: \"#faf089\",\n 300: \"#f6e05e\",\n 400: \"#ecc94b\",\n 500: \"#d69e2e\",\n 600: \"#b7791f\",\n 700: \"#975a16\",\n 800: \"#744210\",\n 900: \"#5f370e\",\n },\n green: {\n 50: \"#f0fff4\",\n 100: \"#c6f6d5\",\n 200: \"#9ae6b4\",\n 300: \"#68d391\",\n 400: \"#48bb78\",\n 500: \"#38a169\",\n 600: \"#2f855a\",\n 700: \"#276749\",\n 800: \"#22543d\",\n 900: \"#1c4532\",\n },\n teal: {\n 50: \"#e6fffa\",\n 100: \"#b2f5ea\",\n 200: \"#81e6d9\",\n 300: \"#4fd1c5\",\n 400: \"#38b2ac\",\n 500: \"#319795\",\n 600: \"#2c7a7b\",\n 700: \"#285e61\",\n 800: \"#234e52\",\n 900: \"#1d4044\",\n },\n blue: {\n 50: \"#ebf8ff\",\n 100: \"#bee3f8\",\n 200: \"#90cdf4\",\n 300: \"#63b3ed\",\n 400: \"#4299e1\",\n 500: \"#3182ce\",\n 600: \"#2b6cb0\",\n 700: \"#2c5282\",\n 800: \"#2a4365\",\n 900: \"#1a365d\",\n },\n cyan: {\n 50: \"#edfdfd\",\n 100: \"#c4f1f9\",\n 200: \"#9decf9\",\n 300: \"#76e4f7\",\n 400: \"#0bc5ea\",\n 500: \"#00b5d8\",\n 600: \"#00a3c4\",\n 700: \"#0987a0\",\n 800: \"#086f83\",\n 900: \"#065666\",\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#e9d8fd\",\n 200: \"#d6bcfa\",\n 300: \"#b794f4\",\n 400: \"#9f7aea\",\n 500: \"#805ad5\",\n 600: \"#6b46c1\",\n 700: \"#553c9a\",\n 800: \"#44337a\",\n 900: \"#322659\",\n },\n pink: {\n 50: \"#fff5f7\",\n 100: \"#fed7e2\",\n 200: \"#fbb6ce\",\n 300: \"#f687b3\",\n 400: \"#ed64a6\",\n 500: \"#d53f8c\",\n 600: \"#b83280\",\n 700: \"#97266d\",\n 800: \"#702459\",\n 900: \"#521b41\",\n },\n background: {\n 50: \"#ffffff\",\n 100: \"#fefefe\",\n 200: \"#fdfdfd\",\n 300: \"#fcfcfc\",\n 400: \"#fcfcfc\",\n 500: \"#fbfbfb\",\n 600: \"#e4e4e4\",\n 700: \"#b2b2b2\",\n 800: \"#8a8a8a\",\n 900: \"#696969\",\n },\n backgroundColor: {\n main: \"#f8f9fa\", // Light greyish white\n secondary: \"#f1f1f1\", // Very light grey\n tertiary: \"#ececec\", // Soft grey\n quaternary: \"#e2e6ea\", // Pale blueish-grey\n light: \"#fafafa\", // Almost pure white\n medium: \"#eaeaea\", // Medium light grey\n accent: \"#e5e5e5\", // A slightly deeper grey\n subtle: \"#f5f6f7\", // Slightly off-white with a cooler tone\n muted: \"#dfe3e6\", // Light muted blue-grey\n neutral: \"#ebedef\", // Neutral grey with a balanced tone\n },\n text: {\n 50: \"#eeeff0\",\n 100: \"#cacccf\",\n 200: \"#b1b3b8\",\n 300: \"#8d9097\",\n 400: \"#777b83\",\n 500: \"#555a64\",\n 600: \"#4d525b\",\n 700: \"#3c4047\",\n 800: \"#2f3237\",\n 900: \"#24262a\",\n },\n header: {\n 50: \"#ecedec\",\n 100: \"#c5c6ca\",\n 200: \"#a9abb0\",\n 300: \"#81848c\",\n 400: \"#696b75\",\n 500: \"#434853\",\n 600: \"#3d424c\",\n 700: \"#30333b\",\n 800: \"#25282e\",\n 900: \"#1c1e23\",\n },\n placeholder: {\n 50: \"#f1f1f2\",\n 100: \"#d3d5d8\",\n 200: \"#bec0c5\",\n 300: \"#a0a3aa\",\n 400: \"#8d9199\",\n 500: \"#717680\",\n 600: \"#676b74\",\n 700: \"#50545b\",\n 800: \"#3e4146\",\n 900: \"#2f3236\",\n },\n boxShadow: {\n primary: \"#9A52E247\",\n error: \"#F2463A47\",\n default: \"\",\n },\n sidebar: {\n background: {\n 50: \"#f1f1f2\",\n 100: \"#d3d5d8\",\n 200: \"#bec0c5\",\n 300: \"#a0a3aa\",\n 400: \"#8d9199\",\n 500: \"#161B32\",\n 600: \"#676b74\",\n 700: \"#50545b\",\n 800: \"#3e4146\",\n 900: \"#2f3236\",\n }\n },\n boxborder: {\n 50: \"#fbfbfb\",\n 100: \"#f2f3f4\",\n 200: \"#ecedee\",\n 300: \"#e4e5e7\",\n 400: \"#dee0e2\",\n 500: \"#d6d8db\",\n 600: \"#c3c5c7\",\n 700: \"#98999b\",\n 800: \"#767778\",\n 900: \"#5a5b5c\",\n },\n border: {\n 50: \"#fdfdfd\",\n 100: \"#f8f8f8\",\n 200: \"#f4f4f4\",\n 300: \"#f0f0f0\",\n 400: \"#ededed\",\n 500: \"#e8e8e8\",\n 600: \"#d3d3d3\",\n 700: \"#a5a5a5\",\n 800: \"#808080\",\n 900: \"#616161\",\n },\n table: {\n hover: {\n 50: \"#fefefe\",\n 100: \"#fcfcfc\",\n 200: \"#fbfbfb\",\n 300: \"#f9f9f9\",\n 400: \"#f8f8f8\",\n 500: \"#f6f6f6\",\n 600: \"#e0e0e0\",\n 700: \"#afafaf\",\n 800: \"#878787\",\n 900: \"#676767\",\n }\n },\n disabled: {\n 50: \"#fcfcfc\",\n 100: \"#f7f7f7\",\n 200: \"#f3f3f3\",\n 300: \"#ededed\",\n 400: \"#e9e9e9\",\n 500: \"#e4e4e4\",\n 600: \"#cfcfcf\",\n 700: \"#a2a2a2\",\n 800: \"#7d7d7d\",\n 900: \"#606060\",\n }\n};\n\nexport default palette;\n","import { extendTheme } from \"@chakra-ui/react\";\nimport palette from \"./palette\";\nimport fonts from \"../fonts\";\nimport { CustomThemeProps } from \"../themeProps\";\nimport common from \"../common\";\nimport { componentStyles } from \"../componentStyles\";\n\nconst radiant: CustomThemeProps = {\n ...fonts,\n colors: palette,\n ...common,\n};\n\nexport default extendTheme({\n ...radiant,\n components: componentStyles,\n});\n","import lavender from \"./Default/theme\";\nimport meadow from \"./Meadow/theme\";\nimport radiant from \"./Radiant/theme\";\nimport skyline from \"./Skyline/theme\";\n\nexport { skyline, meadow, radiant, lavender };\n\nexport const ThemesList = {\n skyline: skyline,\n meadow: meadow,\n radiant: radiant,\n lavender: lavender,\n}\n","import { extendTheme } from \"@chakra-ui/react\";\nimport palette from \"./palette\";\nimport { CustomThemeProps } from \"../themeProps\";\nimport common from \"../common\";\nimport fonts from \"../fonts\";\nimport { componentStyles } from \"../componentStyles\";\n\nconst skyline: CustomThemeProps = {\n colors: palette,\n ...fonts,\n ...common,\n};\n\nexport default extendTheme({\n ...skyline,\n components: componentStyles,\n});\n","import defaultPalette from \"../Default/palette\";\n\nconst palette = {\n ...defaultPalette,\n primary: {\n 50: \"#e3f2f9\",\n 100: \"#c5e4f3\",\n 200: \"#a2d4ec\",\n 300: \"#7ac1e4\",\n 400: \"#47a9da\",\n 500: \"#0088cc\", // primary shade\n 600: \"#007ab8\",\n 700: \"#006ba1\",\n 800: \"#005885\",\n 900: \"#003f5e\",\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n secondary: {\n 50: \"#e3f2f9\",\n 100: \"#c5e4f3\",\n 200: \"#a2d4ec\",\n 300: \"#7ac1e4\",\n 400: \"#47a9da\",\n 500: \"#0088cc\", // primary shade\n 600: \"#007ab8\",\n 700: \"#006ba1\",\n 800: \"#005885\",\n 900: \"#003f5e\",\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n tertiary: {\n 50: \"#e3f2f9\",\n 100: \"#c5e4f3\",\n 200: \"#a2d4ec\",\n 300: \"#7ac1e4\",\n 400: \"#47a9da\",\n 500: \"#0088cc\", // primary shade\n 600: \"#007ab8\",\n 700: \"#006ba1\",\n 800: \"#005885\",\n 900: \"#003f5e\",\n opacity: {\n 4: \"#9A4FE50a\",\n 8: \"#9A4FE514\",\n 16: \"#9A4FE529\",\n 24: \"#9A4FE53d\",\n 32: \"#9A4FE552\",\n 40: \"#9A4FE566\",\n 48: \"#9A4FE57a\",\n }\n },\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n semantic: {\n success: {\n 50: \"#e6f9f0\",\n 100: \"#c0f0d8\",\n 200: \"#8be6bb\",\n 300: \"#5bdb9e\",\n 400: \"#33d181\",\n 500: \"#00b768\", // Main success color\n 600: \"#00a05a\",\n 700: \"#00854b\",\n 800: \"#006b3c\",\n 900: \"#004c28\",\n },\n error: {\n 50: \"#ffe6e6\",\n 100: \"#fbbcbc\",\n 200: \"#f28f8f\",\n 300: \"#e66060\",\n 400: \"#db3a3a\",\n 500: \"#c21e1e\", // Main error color\n 600: \"#a01919\",\n 700: \"#7e1313\",\n 800: \"#5c0d0d\",\n 900: \"#3d0909\",\n },\n warning: {\n 50: \"#fff4e6\",\n 100: \"#ffe1b8\",\n 200: \"#ffcc85\",\n 300: \"#ffb653\",\n 400: \"#ffa31a\",\n 500: \"#ff8a00\", // Main warning color\n 600: \"#db7000\",\n 700: \"#b75800\",\n 800: \"#934300\",\n 900: \"#702f00\",\n },\n info: {\n 50: \"#e3f5ff\",\n 100: \"#b8e4ff\",\n 200: \"#85d1ff\",\n 300: \"#52bdff\",\n 400: \"#1fa9ff\",\n 500: \"#008df5\", // Main info color\n 600: \"#0077db\",\n 700: \"#005cb3\",\n 800: \"#004489\",\n 900: \"#002d5c\",\n },\n },\n gray: {\n 50: \"#f7fafc\",\n 100: \"#edf2f7\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e0\",\n 400: \"#a0aec0\",\n 500: \"#718096\",\n 600: \"#4a5568\",\n 700: \"#2d3748\",\n 800: \"#1a202c\",\n 900: \"#171923\",\n },\n red: {\n 50: \"#fff5f5\",\n 100: \"#fed7d7\",\n 200: \"#feb2b2\",\n 300: \"#fc8181\",\n 400: \"#f56565\",\n 500: \"#e53e3e\",\n 600: \"#c53030\",\n 700: \"#9b2c2c\",\n 800: \"#822727\",\n 900: \"#63171b\",\n },\n orange: {\n 50: \"#fffaf0\",\n 100: \"#feebc8\",\n 200: \"#fbd38d\",\n 300: \"#f6ad55\",\n 400: \"#ed8936\",\n 500: \"#dd6b20\",\n 600: \"#c05621\",\n 700: \"#9c4221\",\n 800: \"#7b341e\",\n 900: \"#652b19\",\n },\n yellow: {\n 50: \"#fffff0\",\n 100: \"#fefcbf\",\n 200: \"#faf089\",\n 300: \"#f6e05e\",\n 400: \"#ecc94b\",\n 500: \"#d69e2e\",\n 600: \"#b7791f\",\n 700: \"#975a16\",\n 800: \"#744210\",\n 900: \"#5f370e\",\n },\n green: {\n 50: \"#f0fff4\",\n 100: \"#c6f6d5\",\n 200: \"#9ae6b4\",\n 300: \"#68d391\",\n 400: \"#48bb78\",\n 500: \"#38a169\",\n 600: \"#2f855a\",\n 700: \"#276749\",\n 800: \"#22543d\",\n 900: \"#1c4532\",\n },\n teal: {\n 50: \"#e6fffa\",\n 100: \"#b2f5ea\",\n 200: \"#81e6d9\",\n 300: \"#4fd1c5\",\n 400: \"#38b2ac\",\n 500: \"#319795\",\n 600: \"#2c7a7b\",\n 700: \"#285e61\",\n 800: \"#234e52\",\n 900: \"#1d4044\",\n },\n blue: {\n 50: \"#ebf8ff\",\n 100: \"#bee3f8\",\n 200: \"#90cdf4\",\n 300: \"#63b3ed\",\n 400: \"#4299e1\",\n 500: \"#3182ce\",\n 600: \"#2b6cb0\",\n 700: \"#2c5282\",\n 800: \"#2a4365\",\n 900: \"#1a365d\",\n },\n cyan: {\n 50: \"#edfdfd\",\n 100: \"#c4f1f9\",\n 200: \"#9decf9\",\n 300: \"#76e4f7\",\n 400: \"#0bc5ea\",\n 500: \"#00b5d8\",\n 600: \"#00a3c4\",\n 700: \"#0987a0\",\n 800: \"#086f83\",\n 900: \"#065666\",\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#e9d8fd\",\n 200: \"#d6bcfa\",\n 300: \"#b794f4\",\n 400: \"#9f7aea\",\n 500: \"#805ad5\",\n 600: \"#6b46c1\",\n 700: \"#553c9a\",\n 800: \"#44337a\",\n 900: \"#322659\",\n },\n pink: {\n 50: \"#fff5f7\",\n 100: \"#fed7e2\",\n 200: \"#fbb6ce\",\n 300: \"#f687b3\",\n 400: \"#ed64a6\",\n 500: \"#d53f8c\",\n 600: \"#b83280\",\n 700: \"#97266d\",\n 800: \"#702459\",\n 900: \"#521b41\",\n },\n background: {\n 50: \"#ffffff\",\n 100: \"#fefefe\",\n 200: \"#fdfdfd\",\n 300: \"#fcfcfc\",\n 400: \"#fcfcfc\",\n 500: \"#fbfbfb\",\n 600: \"#e4e4e4\",\n 700: \"#b2b2b2\",\n 800: \"#8a8a8a\",\n 900: \"#696969\",\n },\n backgroundColor: {\n main: \"#f8f9fa\", // Light greyish white\n secondary: \"#f1f1f1\", // Very light grey\n tertiary: \"#ececec\", // Soft grey\n quaternary: \"#e2e6ea\", // Pale blueish-grey\n light: \"#fafafa\", // Almost pure white\n medium: \"#eaeaea\", // Medium light grey\n accent: \"#e5e5e5\", // A slightly deeper grey\n subtle: \"#f5f6f7\", // Slightly off-white with a cooler tone\n muted: \"#dfe3e6\", // Light muted blue-grey\n neutral: \"#ebedef\", // Neutral grey with a balanced tone\n },\n text: {\n 50: \"#eeeff0\",\n 100: \"#cacccf\",\n 200: \"#b1b3b8\",\n 300: \"#8d9097\",\n 400: \"#777b83\",\n 500: \"#555a64\",\n 600: \"#4d525b\",\n 700: \"#3c4047\",\n 800: \"#2f3237\",\n 900: \"#24262a\",\n },\n header: {\n 50: \"#ecedec\",\n 100: \"#c5c6ca\",\n 200: \"#a9abb0\",\n 300: \"#81848c\",\n 400: \"#696b75\",\n 500: \"#434853\",\n 600: \"#3d424c\",\n 700: \"#30333b\",\n 800: \"#25282e\",\n 900: \"#1c1e23\",\n },\n placeholder: {\n 50: \"#f1f1f2\",\n 100: \"#d3d5d8\",\n 200: \"#bec0c5\",\n 300: \"#a0a3aa\",\n 400: \"#8d9199\",\n 500: \"#717680\",\n 600: \"#676b74\",\n 700: \"#50545b\",\n 800: \"#3e4146\",\n 900: \"#2f3236\",\n },\n boxShadow: {\n primary: \"#9A52E247\",\n error: \"#F2463A47\",\n default: \"\",\n },\n sidebar: {\n background: {\n 50: \"#f1f1f2\",\n 100: \"#d3d5d8\",\n 200: \"#bec0c5\",\n 300: \"#a0a3aa\",\n 400: \"#8d9199\",\n 500: \"#161B32\",\n 600: \"#676b74\",\n 700: \"#50545b\",\n 800: \"#3e4146\",\n 900: \"#2f3236\",\n }\n },\n boxborder: {\n 50: \"#fbfbfb\",\n 100: \"#f2f3f4\",\n 200: \"#ecedee\",\n 300: \"#e4e5e7\",\n 400: \"#dee0e2\",\n 500: \"#d6d8db\",\n 600: \"#c3c5c7\",\n 700: \"#98999b\",\n 800: \"#767778\",\n 900: \"#5a5b5c\",\n },\n border: {\n 50: \"#fdfdfd\",\n 100: \"#f8f8f8\",\n 200: \"#f4f4f4\",\n 300: \"#f0f0f0\",\n 400: \"#ededed\",\n 500: \"#e8e8e8\",\n 600: \"#d3d3d3\",\n 700: \"#a5a5a5\",\n 800: \"#808080\",\n 900: \"#616161\",\n },\n table: {\n hover: {\n 50: \"#fefefe\",\n 100: \"#fcfcfc\",\n 200: \"#fbfbfb\",\n 300: \"#f9f9f9\",\n 400: \"#f8f8f8\",\n 500: \"#f6f6f6\",\n 600: \"#e0e0e0\",\n 700: \"#afafaf\",\n 800: \"#878787\",\n 900: \"#676767\",\n }\n },\n disabled: {\n 50: \"#fcfcfc\",\n 100: \"#f7f7f7\",\n 200: \"#f3f3f3\",\n 300: \"#ededed\",\n 400: \"#e9e9e9\",\n 500: \"#e4e4e4\",\n 600: \"#cfcfcf\",\n 700: \"#a2a2a2\",\n 800: \"#7d7d7d\",\n 900: \"#606060\",\n }\n};\n\nexport default palette;\n","import React from \"react\";\nimport { ChakraProvider, ColorModeScript } from \"@chakra-ui/react\";\nimport { lavender } from \"./Theme\"; // Import your custom theme\nimport ToasterProvider from \"./Components/Toaster/Toaster\";\n\nconst withTheme = (Component: React.ComponentType, theme?: any) => {\n const customTheme = theme ?? lavender;\n return (props: any) => (\n <ChakraProvider theme={customTheme}>\n <ToasterProvider>\n <ColorModeScript\n initialColorMode={customTheme.config.initialColorMode}\n />\n <Component {...props} />\n </ToasterProvider>\n </ChakraProvider>\n );\n};\n\nexport default withTheme;\n","import React from 'react';\nimport { Box, Flex } from '@chakra-ui/react';\n\ntype ProductTagsProps = {\n tags: string[];\n className?: string;\n}\n\nconst ProductTags = ({ tags, className }: ProductTagsProps) => {\n\n const getRows = (tags: string[]): string[][] => {\n const count = tags.length;\n if (count === 1) return [tags];\n if (count === 2) return [tags];\n if (count === 3) return [[tags[0]], tags.slice(1)];\n if (count === 4) return [tags.slice(0, 2), tags.slice(2, 4)];\n return [];\n };\n\n return (\n <Flex direction=\"column\" gap=\"1\" className={className} w=\"full\">\n {getRows(tags).map((row, rowIndex) => (\n <Flex key={rowIndex} gap=\"1\">\n {row.map((tag, tagIndex) => (\n // <></>\n <Tag key={tagIndex} fullWidth={row.length === 1}>\n {tag}\n </Tag>\n ))}\n </Flex>\n ))}\n </Flex>\n );\n};\n\nconst Tag = ({\n children,\n fullWidth = false,\n}: { children: React.ReactNode; fullWidth?: boolean }) => (\n <Box\n flex={fullWidth ? '1' : '1'}\n border=\"0.063rem solid #f89f24\"\n color=\"black\"\n fontSize=\"0.625rem\"\n fontWeight=\"semibold\"\n borderRadius=\"full\"\n px=\"0.5rem\"\n py=\"0.125rem\"\n textAlign=\"center\"\n whiteSpace=\"nowrap\"\n backgroundColor={\"orange.100\"}\n >\n {children}\n </Box>\n);\n\nexport default ProductTags;\n","import React from 'react';\nimport { Box, Flex, Text, Icon } from '@chakra-ui/react';\nimport { BookCheck, Star } from 'lucide-react';\n\ntype ProductReviewProps = {\n rating: string | number;\n reviewCount: string | number;\n}\n\nconst ProductReview = ({ rating, reviewCount }: ProductReviewProps) => {\n return (\n <Flex align=\"center\" gap={2}>\n <Flex\n align=\"center\"\n gap=\"1\"\n bg=\"teal.900\"\n color=\"white\"\n px={2}\n borderRadius=\"md\"\n fontSize=\"sm\"\n fontWeight=\"bold\"\n >\n <Icon as={Star} boxSize={3.5} />\n <Text>{rating}</Text>\n </Flex>\n\n <Box h=\"4\" w=\"0.063rem\" bg=\"gray.400\" />\n\n <Flex align=\"center\" gap=\"1\">\n <Icon as={BookCheck} boxSize={3.5} />\n <Text fontSize=\"sm\" color=\"gray.600\">({reviewCount})</Text>\n </Flex>\n </Flex>\n );\n};\n\nexport default ProductReview;\n","import React, { useRef, useState, useEffect } from 'react';\nimport {\n Box,\n Text,\n Portal,\n useOutsideClick,\n} from '@chakra-ui/react';\nimport { options } from './ProductCardProps';\n\ntype ProductPriceProps = {\n options: options[];\n}\n\nconst ProductPrice = ({ options }: ProductPriceProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [selected, setSelected] = useState(options[0]);\n const [dropdownPosition, setDropdownPosition] = useState({ top: 0, left: 0, width: 0 });\n const buttonRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const isSingleOption = options.length === 1;\n\n useOutsideClick({\n ref: dropdownRef,\n handler: () => setIsOpen(false),\n });\n\n const getDiscountedPrice = (option: options) =>\n Math.round(option.price - (option.price * option.offer) / 100);\n\n useEffect(() => {\n if (isOpen && buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n setDropdownPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n return (\n <>\n {/* Toggle Button or Static Box for single option */}\n {isSingleOption ? (\n <Box\n border=\"0.063rem solid\"\n borderColor=\"orange.300\"\n bg=\"#FFFCF5\"\n px={3}\n py={1}\n rounded=\"md\"\n display=\"inline-block\"\n w=\"100%\"\n >\n <Text fontSize=\"sm\" fontWeight=\"medium\">{options[0].label}</Text>\n </Box>\n ) : (\n <Box\n ref={buttonRef}\n onClick={() => setIsOpen(!isOpen)}\n border=\"0.063rem solid\"\n borderColor=\"orange.300\"\n bg=\"#FFFCF5\"\n px={3}\n py={1}\n rounded=\"md\"\n cursor=\"pointer\"\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n w=\"100%\"\n >\n <Text fontSize=\"sm\" fontWeight=\"medium\">{selected.label}</Text>\n <Text\n fontSize=\"xs\"\n color=\"orange.400\"\n transform={isOpen ? 'rotate(180deg)' : 'rotate(0deg)'}\n transition=\"transform 0.2s\"\n >\n ▾\n </Text>\n </Box>\n )}\n\n {/* Dropdown (only if multiple options) */}\n {!isSingleOption && isOpen && (\n <Portal>\n <Box\n ref={dropdownRef}\n position=\"absolute\"\n top={`${dropdownPosition.top}px`}\n left={`${dropdownPosition.left}px`}\n width={`${dropdownPosition.width}px`}\n bg=\"white\"\n border=\"0.063rem solid\"\n borderColor=\"orange.300\"\n shadow=\"md\"\n zIndex={9999}\n >\n {options.map((option) => {\n const discounted = getDiscountedPrice(option);\n const isSelected = selected.weight === option.weight;\n\n return (\n <Box\n key={option.weight}\n px={4}\n h=\"2.5rem\"\n cursor=\"pointer\"\n bg={isSelected ? 'orange.50' : 'white'}\n _hover={{ bg: 'orange.100' }}\n onClick={() => {\n setSelected(option);\n setIsOpen(false);\n }}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {/* Left: Label and offer */}\n <Box>\n <Text fontSize=\"sm\" fontWeight=\"medium\">{option.label}</Text>\n {option.offer > 0 && (\n <Text fontSize=\"xs\" color=\"green.600\" fontWeight=\"semibold\">\n {option.offer}% OFF\n </Text>\n )}\n </Box>\n\n {/* Right: Price and strikethrough */}\n <Box textAlign=\"right\">\n <Text fontSize=\"sm\" fontWeight=\"semibold\" color=\"orange.500\">\n ₹{discounted}\n </Text>\n {option.offer > 0 && (\n <Text fontSize=\"xs\" color=\"gray.400\" textDecoration=\"line-through\">\n ₹{option.price}\n </Text>\n )}\n </Box>\n\n {/* Radio Circle */}\n <Box\n ml={4}\n w=\"1rem\"\n h=\"1rem\"\n minW=\"1rem\"\n borderRadius=\"full\"\n border=\"0.125rem solid\"\n borderColor={isSelected ? 'orange.400' : 'gray.300'}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n {isSelected && (\n <Box w=\"0.5rem\" h=\"0.5rem\" bg=\"orange.400\" borderRadius=\"full\" />\n )}\n </Box>\n </Box>\n );\n })}\n </Box>\n </Portal>\n )}\n\n {/* Final Price Display */}\n <Box mt={2} display=\"flex\" alignItems=\"center\" fontSize=\"sm\" gap={2}>\n {selected.offer > 0 && (\n <Text color=\"gray.400\" textDecoration=\"line-through\">₹{selected.price}</Text>\n )}\n <Text color=\"orange.500\" fontWeight=\"semibold\">₹{getDiscountedPrice(selected)}</Text>\n </Box>\n </>\n );\n};\n\nexport default ProductPrice;\n","import { Box, Text } from '@chakra-ui/react'\nimport React from 'react'\n\nconst ProductLabel = ({ label, description }: { label: string, description?: string }) => {\n return (\n <Box>\n <Text fontWeight=\"bold\">{label}</Text>\n {description && <Text fontSize=\"xs\" fontStyle={\"italic\"}>{description}</Text>}\n </Box>\n )\n}\n\nexport default ProductLabel","import React, { useState } from 'react';\nimport {\n Box,\n Image,\n Badge,\n VStack,\n} from '@chakra-ui/react';\nimport ProductTags from './ProductTags';\nimport ProductReview from './ProductReview';\nimport ProductPrice from './ProductPrice';\nimport Button from '../Button/Button';\nimport ProductLabel from './ProductLabel';\nimport { ProductCardProps } from './ProductCardProps';\n\nconst ProductCard = ({\n label,\n productImage,\n rating,\n reviews,\n tags,\n options,\n onAddToCart,\n bag,\n description,\n}: ProductCardProps) => {\n\n const [hover, setHover] = useState(false);\n\n return (\n <Box\n borderWidth=\"0.063 rem\"\n borderRadius=\"lg\"\n overflow=\"hidden\"\n p={3}\n w=\"16.25rem\"\n position=\"relative\"\n bg={\"white\"}\n boxShadow={\"lg\"}\n >\n <Box\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n h=\"11.25rem\"\n w=\"full\"\n overflow=\"hidden\"\n >\n <Image\n src={hover && productImage.hover ? productImage.hover : productImage.visibile}\n alt={label}\n w=\"full\"\n h=\"full\"\n objectFit=\"cover\"\n />\n {bag && (\n <Badge colorScheme={bag.color || \"red\"} position=\"absolute\" top={2} right={2}>\n {bag.label}\n </Badge>\n )}\n </Box>\n\n <VStack spacing={2} align=\"start\" mt={3}>\n <ProductLabel label={label} description={description} />\n {tags && <ProductTags tags={tags} />}\n {rating && reviews &&\n <ProductReview rating={rating} reviewCount={reviews} />}\n\n {options && <ProductPrice options={options} />}\n\n {onAddToCart && <Button colorScheme=\"orange\" size=\"sm\" width={\"100%\"} onClick={onAddToCart}>\n Add to Cart\n </Button>}\n </VStack>\n </Box>\n );\n};\n\nexport default ProductCard;"],"names":["Accordion","allowMultiple","allowToggle","index","onChange","reduceMotion","items","rest","_jsx","ChakraAccordian","children","map","item","idx","_jsxs","AccordionItem","itemProps","sx","customStyles","itemStyle","AccordionButton","buttonProps","buttonStyle","hoverbuttonStyle","header","AccordionPanel","panelProps","panelStyle","content","AlertDialog","isOpen","onClose","leastDestructiveRef","title","confirmButtonText","cancelButtonText","isConfirmLoading","onConfirm","ContentStyle","headerStyle","bodyStyle","footerStyle","closeButtonStyle","button1Style","button2Style","isCentered","confirmButtonColor","key","ChakraAlertDialog","motionPreset","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogCloseButton","AlertDialogBody","AlertDialogFooter","Button","ref","onClick","size","colorScheme","isLoading","ml","ApexBarChart","data","labels","titlePosition","height","width","barColor","xAxisStyle","color","yAxisStyle","titleStyle","fontSize","fontWeight","fontFamily","ReactApexChart","options","chart","type","plotOptions","bar","borderRadius","horizontal","dataLabels","enabled","style","colors","xaxis","categories","yaxis","text","align","series","name","ApexPieChart","chartColor","Breadcrumbs","spacing","separator","isCurrentPage","handleClick","theme","useTheme","Breadcrumb","fonts","body","BreadcrumbItem","length","BreadcrumbLink","href","path","textDecoration","event","preventDefault","label","Button$3","memo","opacity","variant","leftIcon","rightIcon","isDisabled","loadingText","border","ChakraButton","useCustomTheme","useChakraTheme","ButtonGroupIcon","onLeftIconClick","onRightIconClick","buttonText","onButtonClick","onButtongroupClick","buttonGroupStyle","buttonGroupLeftIconStyle","buttonGroupRightIconStyle","onBlurLeftIcon","onBlurRightIcon","dropdownOptions","onDropdownOptionClick","rightIconDropdown","menulistStyle","menuItemStyle","divider","isDropdownOpen","setIsDropdownOpen","useState","ButtonGroup","isAttached","IconButton","icon","onBlur","backgroundColor","primary","borderLeft","gray","borderRight","Menu","MenuButton","as","Box","zIndex","MenuList","option","MenuItem","handleMenuClick","borderBottom","undefined","image","Card","maxW","direction","justify","overflow","ChakraCard","p","TextLabel","id","isRequired","isInformation","informationMessage","FormLabel","htmlFor","display","alignItems","gap","semantic","error","Tooltip","hasArrow","placement","bg","white","Icon","InfoIcon","boxSize","ErrorMessage","errorMessage","Flex","red","role","Info","Text","HelperText","helperText","FormHelperText","mt","CheckBox","isInvalid","iconColor","iconSize","isChecked","isIndeterminate","value","defaultChecked","FormControl","ChakraCheckbox","borderColor","TextInput","forwardRef","onFocus","isReadOnly","placeholder","onRightIconclick","inputRightIcon","inputLeftIcon","inputGroupStyle","inputStyle","leftElementStyle","rightElementStyle","autoComplete","minW","props","w","InputGroup","InputLeftElement","pointerEvents","Input","InputRightElement","displayName","TextInput$1","React","ContactForm","apiKey","customFields","getCustomValues","organizationId","customerId","formData","setFormData","firstName","lastName","email","phone","enquiry","response","setResponse","isSuccess","errors","setErrors","handleChange","field","prev","mx","boxShadow","background","Alert","status","mb","CircleCheck","CircleX","Heading","textAlign","onSubmit","async","e","newErrors","trim","test","Object","keys","validate","customValues","payload","message","fetch","method","headers","JSON","stringify","result","json","ok","Error","VStack","SimpleGrid","columns","base","md","target","FormErrorMessage","ChakraText","Textarea","rows","disabled","toDate","argument","argStr","prototype","toString","call","Date","constructor","NaN","constructFrom","date","addDays","amount","_date","isNaN","setDate","getDate","addMonths","dayOfMonth","endOfDesiredMonth","getTime","setMonth","getMonth","setFullYear","getFullYear","millisecondsInWeek","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","locale","day","getDay","diff","setHours","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfDay","getTimezoneOffsetInMilliseconds","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","isSameDay","dateLeft","dateRight","isValid","Number","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","args","String","defaultWidth","formats","formatLong","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","valuesArray","context","formattingValues","defaultFormattingWidth","values","argumentCallback","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","Array","isArray","array","predicate","findIndex","pattern","object","hasOwnProperty","findKey","valueCallback","slice","enUS","code","formatDistance","token","count","tokenValue","replace","addSuffix","comparison","formatRelative","_baseDate","_options","localize","ordinalNumber","dirtyNumber","number","rem100","era","narrow","abbreviated","wide","quarter","month","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseInt","parseResult","any","firstWeekContainsDate","getDayOfYear","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","Math","round","differenceInCalendarDays","cleanDate","startOfYear","getISOWeek","fourthOfJanuary","startOfISOWeekYear","getWeekYear","firstWeekOfNextYear","firstWeekOfThisYear","getWeek","firstWeek","startOfWeekYear","addLeadingZeros","targetLength","abs","padStart","lightFormatters","y","signedYear","M","d","a","dayPeriodEnumValue","toUpperCase","h","H","m","s","S","numberOfDigits","milliseconds","trunc","pow","dayPeriodEnum","formatters","G","unit","Y","signedWeekYear","weekYear","R","u","Q","ceil","q","L","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","c","i","isoDayOfWeek","toLowerCase","b","hours","B","K","k","X","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","T","offset","delimiter","sign","absOffset","minutes","dateLongFormatter","timeLongFormatter","longFormatters","P","datePattern","timePattern","dateTimeFormat","dayOfYearTokenRE","weekYearTokenRE","throwTokens","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","format","formatStr","defaultLocale","originalDate","RangeError","parts","substring","firstCharacter","longFormatter","join","isToken","cleanEscapedString","preprocessor","formatterOptions","part","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","input","_message","subject","console","warn","includes","warnOrThrowProtectedError","formatter","matched","isAfter","dateToCompare","_dateToCompare","isBefore","TimePicker","dateFormat","is12HourFormat","hour","setHour","minute","setMinute","ampm","setAmpm","useEffect","newHour","updateTime","hrInput","min","meridiem","hr","convertTo24Hour","newDate","setMinutes","setSeconds","setMilliseconds","marginTop","max","newMeridiem","displayHr","padding","cursor","CustomDatePicker","placeholderText","pickerType","minDate","maxDate","disableFutureDates","disablePastDates","isRange","onOpen","useDisclosure","resolvedPickerType","lower","hasTime","hasDate","inferPickerTypeFromFormat","inputRef","useRef","showDate","showTime","selectedDate","currentMonth","setCurrentMonth","rangeStart","setRangeStart","rangeEnd","setRangeEnd","selectingStart","setSelectingStart","tempDate","setTempDate","tempRangeStart","setTempRangeStart","tempRangeEnd","setTempRangeEnd","popoverRef","handleDaySelect","updated","finalEnd","safeStart","from","to","updatedDate","displayValue","handleClickOutside","current","contains","document","addEventListener","removeEventListener","position","Popover","isLazy","initialFocusRef","closeOnBlur","PopoverTrigger","PopoverContent","PopoverBody","_Fragment","justifyContent","ChevronLeftIcon","newMonth","_","newYear","ChevronRightIcon","Grid","templateColumns","monthStart","startOfMonth","monthEnd","endOfMonth","startDate","endDate","endOfWeek","days","thisDay","isInCurrentMonth","isToday","isStart","isEnd","isInRange","isSelected","push","renderDays","DrawerHeader","DrawerBody","DrawerFooter","Drawer","isReactElement","child","Children","toArray","find","footer","ChakraDrawer","DrawerOverlay","DrawerContent","DrawerCloseButton","ChakraDrawerHeader","borderBottomWidth","ChakraDrawerBody","ChakraDrawerFooter","borderTopWidth","MotionBox","motion","Dropdown","dropDownButtonStyle","ButtonText","handleOptionSelect","dropdownType","DropdownIcon","isVisibleIconShow","headStyle","ListStyle","ItemStyle","LabelStyle","ImageStyle","optionsSize","onToggle","dropdownRef","ButtonToggle","ChevronDown","transform","TextToggle","dropDownToggleOption","initial","animate","exit","List","light","radii","shadow","shadows","lg","py","minWidth","ListItem","handleListItemClick","optionId","optionLabel","px","_hover","blue","mr","isTruncated","Editor","config","editorRef","className","JoditEditor","mimeMap","toMB","toFixed","ModalHeader","ModalBody","ModalFooter","Modal","overlaybg","overlaybackdropFilter","overlaybackdropInvert","overlaybackdropBlur","finalFocusRef","blockScrollOnMount","closeOnOverlayClick","scrollBehavior","ChakraModal","ModalOverlay","backdropFilter","backdropInvert","backdropBlur","ModalContent","Spinner","thickness","speed","emptyColor","ChakraModalHeader","ModalCloseButton","ChakraModalBody","ChakraModalFooter","FileUpload","onFilesUploaded","uploadedFiles","onRemoveFile","acceptTypes","maxSizeKB","maxFiles","progress","previewUrl","setPreviewUrl","previewTitle","setPreviewTitle","mappedAccept","reduce","acc","ext","mime","onDrop","useCallback","acceptedFiles","totalFiles","getRootProps","getInputProps","useDropzone","accept","maxSize","onDropRejected","rejectedFiles","messages","flatMap","rejected","err","file","transition","Upload","lineHeight","letterSpacing","textTransform","borderWidth","HStack","flex","startsWith","secondary","URL","createObjectURL","src","alt","objectFit","top","left","Eye","ListIcon","FileText","noOfLines","CloseButton","Progress","hasStripe","isAnimated","Image","FormWrapper","DesktopMenu","menuItems","rightSlot","setHoveredMenu","isActive","activeBg","hoveredMenu","hoverBg","hasChildren","isHovered","onMouseEnter","onMouseLeave","badge","Badge","Collapse","in","animateOpacity","black","rounded","Stack","subItem","MobileMenu","pb","pl","Header","logo","active","themeColor","hover","MenuIcon","Select","errorBorderColor","formControlStyle","selectStyle","getOptionsList","ChakraSelect","selectedValue","selectedOption","minH","VeritcalDivider","ChakraDivider","orientation","boxborder","HeaderActions","select","edit","create","elements","isSelect","selectPlaceholderText","onSelectChange","isEditable","onEdit","SquarePen","isCreatable","onCreate","CirclePlus","el","Fragment","InputTextArea","resize","focusBorderColor","AccountRow","excludeKeys","AccountCard","account","onDelete","showMore","setShowMore","filter","visibleKeys","Draggable","draggableId","provided","innerRef","draggableProps","dragHandleProps","details","pt","ChevronUp","Spacer","Trash2","ExternalLink","KanbanBoard","onDrag","onColumnDelete","setColumns","DragDropContext","onDragEnd","source","destination","sourceCol","droppableId","destCol","draggedItem","copiedItems","splice","newCol","sourceItems","destItems","updatedCols","overflowX","maxWidth","flexShrink","Skeleton","SkeletonText","entries","colId","column","Droppable","snapshot","droppableProps","isDraggingOver","flexDirection","borderLeftColor","columnIds","handleColumnDelete","overflowY","maxHeight","StyleSheet","_this","this","_insertTag","tag","before","tags","insertionPoint","nextSibling","prepend","container","firstChild","insertBefore","isSpeedy","speedy","ctr","nonce","_proto","hydrate","nodes","forEach","insert","rule","createElement","setAttribute","appendChild","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","flush","_tag$parentNode","parentNode","removeChild","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","KEYFRAMES","fromCharCode","assign","replacement","indexof","search","indexOf","charat","charCodeAt","substr","begin","end","strlen","sizeof","append","line","character","characters","node","root","parent","return","copy","next","peek","caret","alloc","dealloc","delimit","whitespace","escaping","commenter","identifier","compile","parse","rules","rulesets","pseudo","points","declarations","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","j","serialize","callback","output","element","middleware","collection","memoize","fn","cache","arg","isBrowser","identifierWithPointTracking","getRules","parsed","toRules","fixedElements","WeakMap","compat","isImplicitRule","get","set","parentRules","removeLabel","prefix","hash","func","getServerStylisCache","has","ret","defaultStylisPlugins","combine","exec","createCache","ssrStyles","querySelectorAll","getAttribute","head","_insert","stylisPlugins","inserted","nodesToHydrate","attrib","split","omnipresentPlugins","_finalizingPlugins","_serializer","concat","serverStylisCache","selector","serialized","styles","shouldCache","currentSheet","finalizingPlugins","serializer","registered","_extends","bind","n","arguments","r","apply","process","env","NODE_ENV","reactIsModule","exports","Symbol","for","f","g","l","v","$$typeof","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextConsumer","Element","ForwardRef","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","require$$0","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","$$typeofType","ContextProvider","Memo","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","isPortal","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","render","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics_cjs","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","getRegisteredStyles","registeredStyles","classNames","rawClassName","registerStyles","isStringTag","insertStyles","stylesForSSR","maybeStyles","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexGrow","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","order","orphans","scale","tabSize","widows","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","unitless","handleInterpolation","mergedProps","interpolation","componentSelector","__emotion_styles","keyframes","anim","serializedStyles","obj","asString","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","strings","raw","lastIndex","identifierName","str","len","hashString","syncFallback","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","createContext","HTMLElement","Provider","withEmotionCache","useContext","JSX","ThemeContext","hasOwn","typePropName","Insertion","_ref","_ref2","serializedNames","dangerouslySetInnerHTML","__html","Emotion","cssProp","css","WrappedComponent","newProps","_key2","Emotion$1","jsx","argsLength","createElementArgArray","_key","createEmotionProps","_len","colorTransition","insertable","Loading","onlytext","right","bottom","Center","generateUniqueId","counter","now","MultiSelect","onValueChange","setOptions","inputValue","setInputValue","setError","wrap","Tag","TagLabel","TagCloseButton","optionToRemove","updatedOptions","handleRemove","onKeyDown","newOption","focus","marginLeft","NavBar","userAvathar","userName","navMenu","moreIcon","handleNavOnClick","handleLogout","logoutText","navigationBarText","sm","onIconClick","CircleArrowLeft","Avatar","MenuDivider","menu","url","space","LogOut","reactPropsRegex","testOmitPropsOnStringTag","prop","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","shouldForwardProp","optionsShouldForwardProp","__emotion_forwardProp","propName","newStyled","createStyled","targetClassName","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","templateStringsArr","Styled","FinalTag","classInterpolations","finalShouldForwardProp","withComponent","nextTag","nextOptions","tagName","Container","styled","div","TextAreaContainer","PlaceholderText","InputTitle","NotesTextArea","textarea","noteValue","FileUploadLabel","AddTitleButton","button","isSaveButton","CancelButton","FileViewer","FileEdit","ErrorText","countWords","NoteTextArea","handleSubmit","handleCancel","saveButtonLoading","maxFileSize","maxFilesSizeError","maxNoteWordCount","noteAreaRef","setIsActive","setNoteValue","titleValue","setTitleValue","titleShow","setTitleShow","files","setFiles","fileError","setFileError","isSaveDisabled","setIsSaveDisabled","titleWordCount","noteWordCount","adjustHeight","scrollHeight","formatBytes","bytes","decimals","dm","floor","log","parseFloat","shortenFileName","maxLength","extension","lastIndexOf","margin","Paperclip","newFiles","validFiles","invalidFiles","prevFiles","multiple","marginRight","fileItem","NumberInput","defaultValue","precision","step","clampValueOnBlur","keepWithinRange","allowMouseWheel","NumberIncrementStepperBg","NumberIncrementStepperActive","NumberIncrementStepperChildren","NumberDecrementStepperBg","NumberDecrementStepperChildren","NumberDecrementStepperActive","ChakraNumberInput","NumberInputField","NumberInputStepper","NumberIncrementStepper","_active","NumberDecrementStepper","PinInputs","otp","mask","manageFocus","onComplete","pins","marginBottom","PinInput","PinInputField","ProfileCardHeader","ProfileCardBody","ProfileCardFooter","ProfileCard","dividercolor","dividersize","dividervariant","CardStyle","CardHeaderStyle","CardBodyStyle","borderTopColor","StylesWithBorder","borderTop","CardHeader","Divider","borderStyle","CardBody","CardFooter","ProfilePhotoViewer","photoUrl","onPhotoChange","imageWidth","imageAlt","imageObjectFit","imageBorderRadius","editIconSize","editIconPositionRight","editIconPositionBottom","isRound","boxStyle","isView","handleIsView","fallbackText","photo","setPhoto","fileInputRef","isPdf","endsWith","User","click","reader","FileReader","onload","readAsDataURL","hidden","ProgressBar","RadioButton","ChakraRadio","RadioButtonGroup","ChakraRadioGroup","ReorderList","onReorder","BetweenHorizonalStart","reordered","moved","GripVertical","SearchIcon","SearchIconComponent","CloseIcon","Shortcut","span","Search","onSearch","onclose","shortcut","query","handleKeyDown","ctrlKey","window","onTagClick","ChakraTag","TagRightIcon","stopPropagation","ToolTip","defaultIsOpen","openDelay","closeDelay","arrowSize","closeOnClick","arrowPadding","arrowShadowColor","gutter","modifiers","closeOnPointerDown","ChakraTooltip","SelectTruncatedLabel","textRef","isOverflowing","setIsOverflowing","scrollWidth","clientWidth","textElement","whiteSpace","normalizeSingleValue","val","SearchSelect","onSelect","isOptionLoading","searchQuery","isMultiple","chip","information","addNew","isSelectAll","pagination","insideSelect","isRemoveAllIcon","setIsOpen","hasMore","setHasMore","containerRef","scrollTimeoutRef","focused","setFocused","customSelectOpen","setCustomSelectOpen","customSelectRef","customSelectPos","setCustomSelectPos","useOutsideClick","handler","selectedValues","filteredOptions","delayDebounce","setTimeout","clearTimeout","limit","some","allFilteredSelected","every","opt","sel","handleScroll","onScroll","scrollLoading","currentTarget","scrollTop","clientHeight","startIndex","dropdown","getElementById","rect","getBoundingClientRect","scrollY","scrollX","flexWrap","pr","handleCustomSelect","maxChips","maxText","_focus","isValidElement","maxH","filteredNotSelected","Checkbox","handleSelect","view","Plus","RenderOptions","handleOptionClick","isProfile","isColorOptions","toLocaleUpperCase","profileUrl","SelectSearch","initialSelectedOption","onOptionSelect","inputOnchange","dropdownStyle","isMultipleSelect","onOptionMultiSelect","isBottomIcon","BottomIcon","BottomText","handleBottomClick","BottomTextColor","selectedOptions","setSelectedOptions","setPosition","useMemo","isNotSelected","selected","searchValue","newSelected","inputRect","dropdownRect","spaceBelow","innerHeight","spaceAbove","updateDropdownPosition","handleRemoveOption","handleInputChange","matchingOption","main","PlusIcon","FlexCss","TruncatedTextWithTooltip","open","shadowRef","setIsTruncated","checkTruncation","textEl","shadowEl","visibleWidth","offsetWidth","fullTextWidth","resizeObserver","ResizeObserver","observe","disconnect","textOverflow","visibility","MenuPopoverContent","activeMenu","subMenu","locked","isAnySubActive","sub","LockKeyhole","isSubActive","MenuItemBox","toggle","hasSubMenu","isChildActive","isAnyActive","handleToggleSubMenu","commonStyles","buttonContent","ChevronRight","trigger","MenuItems","menus","selectedSubMenu","DefaultLogo","viewBox","fill","xmlns","Sidebar","changeToggle","companyName","isDisableAddNew","onAddNewClick","pos","flexDir","sidebar","my","ArrowRightToLine","ArrowLeftToLine","Skeletons","startColor","endColor","isLoaded","fadeDuration","skeletonHeight","SkeletonCircle","SwitchContainer","Highlight","SwitchList","ul","SwitchOption","li","SwitchContainerHeader","Switch","leftText","rightText","onSwitchToggle","switchActive","calculateLeftOffset","sum","debounce","delay","timer","Pagination","paginationText","handlePageSizeChange","rowsPerPage","currentPage","pages","setCurrentPage","dataLength","isServerPagination","pageSizeOptions","records","isLeftDisabled","isRightDisabled","ChevronsLeft","ChevronLeft","ChevronsRight","TableFilters","setColumnsSearch","columnsSearch","searchRef","refreshDataOnOpen","setRefreshDataOnOpen","debounceRef","EllipsisVertical","autoFocus","TableHeader$1","isCheckbox","handleSort","headerRefs","columnWidths","columnsSort","headerBgColor","headerTextColor","freezedBgColor","freezedTextColor","noBorders","handleCheckbox","checked","isContent","isLink","isActionFreeze","RenderCheckbox","Th","table","borderY","RenderConent","RenderView","Tr","isHidden","ColumnHeader","SortingIcon","sortState","handleSortClick","ChevronsUpDown","setIsHovered","isFrozen","isFreeze","leftOffset","isSorting","isSort","o","Sorting","isFiltersEnabled","searchVal","onMouseDown","th","parentElement","startX","pageX","startWidth","onMouseMove","moveEvent","newWidth","onMouseUp","TableBodyLoading","noOfColumns","Td","colSpan","TableActions","row","onLink","Pencil","TableBody","startRow","selections","onRowClick","expandedRows","setExpandedRows","Set","boxSizing","RenderContent","isExpanded","rowIndex","newSet","delete","add","toggleRowExpansion","totalVisibleColumns","headerIndex","cellBgColor","cellTextColor","rowBgColor","rowTextColor","cellStyle","rowStyle","TableCellCalculation","handleRowClick","overflowWrap","useTable","tableBorderColor","isPagination","onSelection","tablePreferences","savePreferences","noOfRowsPerPage","totalRecords","setColumnWidths","selection","setSelection","setColumnsSort","setRowsPerPage","tableData","filteredData","setFilteredData","columnsList","setColumnsList","columnPreference","tableContainerStyles","widths","endRow","sortedData","sortConfig","sort","dirMultiplier","SortMultiColumnData","newSortState","existingIndex","selectedItems","handleColumnPreferences","handleGlobalSearch","lowerQuery","globalSearchFilter","useGetPreferences","baseUrl","page","authToken","preferences","setPreferences","loading","setLoading","params","URLSearchParams","queryString","constructUrl","Authorization","then","catch","finally","ManageColumns","childInputMethodsRef","setItems","searchTerm","setSearchTerm","draggedItemIndex","setDraggedItemIndex","useImperativeHandle","getManageColumnsData","handleDragEnd","filteredItems","allChecked","draggable","onDragStart","handleDragStart","onDragOver","newItems","handleDragOver","toggleCheckbox","TableSettings","onSave","settingsOpen","setSettingsOpen","selectedIndex","setSelectedIndex","Settings","Tabs","TabList","Tab","_selected","TabPanels","TabPanel","styledIcon","cloneElement","actions","isDelete","isUpdate","TableSearch","showInput","setShowInput","setQuery","handleSearchClick","handleDebounce","callbackRef","timerRef","debouncedFn","useDebounce","Table","preferencesUrl","preferencesKey","preferencesName","preferencesPage","paginationMode","onPagination","isTableSettings","headerActions","useSavePreferences","isTableLoading","_filteredData","searchValues","aMatchCount","bMatchCount","searchAndSortData","tablePaginationText","cols","isVisiblity","TableContainer","ChakraTable","borderCollapse","Thead","TableHeader","muted","Tbody","TimelineContainer","Line","EventContainer","isLeft","Event","Dot","EventContent","EventTitle","h3","EventDate","EventTime","EventGroupDate","EventGroupSeparator","EventGroupHeader","Timeline","timelineEvents","formatTimestamp","timestamp","parsedTimestamp","istOffset","istDate","getUTCHours","getUTCMinutes","toLocaleString","getIcon","action_from","IndianRupee","Volleyball","groupedEvents","groups","created_at","formatChanges","changes","changeRecord","original","shouldWrapChildren","action_by","ToasterContext","ToasterProvider","toast","useToast","showToast","description","duration","isClosable","success","green","warning","yellow","info","onCloseComplete","useToaster","VerifyEmailOtp","resendMail","MailCheck","font","outline","TableToggle","mode","Table2","Columns3","palette","tertiary","transparent","orange","teal","cyan","purple","pink","quaternary","accent","subtle","neutral","tableHeader","default","common","lineHeights","normal","none","shorter","tall","taller","letterSpacings","tighter","tight","wider","widest","sizes","screenW","screenH","xs","xl","breakpoints","inner","darkLg","zIndices","hide","auto","docked","sticky","banner","overlay","modal","popover","skipLink","tooltip","cssVarPrefix","heading","mono","fontSizes","fontWeights","hairline","thin","semibold","bold","extrabold","componentStyles","baseStyle","control","_disabled","_indeterminate","svg","_checked","_placeholder","fontStyle","variants","errorColor","shadowPrimary","shadowError","_invalid","_readOnly","solid","ghost","link","unstyled","lavender$1","extendTheme","components","defaultPalette","meadow$1","radiant$1","ThemesList","skyline","meadow","radiant","lavender","withTheme","Component","customTheme","ChakraProvider","ColorModeScript","initialColorMode","ProductTags","getRows","tagIndex","fullWidth","ProductReview","rating","reviewCount","Star","BookCheck","ProductPrice","setSelected","dropdownPosition","setDropdownPosition","buttonRef","isSingleOption","getDiscountedPrice","price","offer","discounted","weight","ProductLabel","ProductCard","productImage","reviews","onAddToCart","bag","setHover","visibile"],"mappings":"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"}
|