@codezee/sixtify-brahma 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/.github/workflows/deploy-storybook.yml +40 -0
  2. package/.husky/commit-msg +4 -0
  3. package/.husky/pre-commit +4 -0
  4. package/.husky/pre-push +4 -0
  5. package/.lintstagedrc +5 -0
  6. package/.prettierignore +11 -0
  7. package/.prettierrc +22 -0
  8. package/.vscode/extensions.json +22 -0
  9. package/.vscode/settings.json +17 -0
  10. package/README.md +81 -0
  11. package/apps/docs/.eslintrc.cjs +4 -0
  12. package/apps/docs/.eslintrc.js +9 -0
  13. package/apps/docs/.storybook/main.ts +23 -0
  14. package/apps/docs/.storybook/preview.tsx +27 -0
  15. package/apps/docs/next-env.d.ts +5 -0
  16. package/apps/docs/next.config.mjs +4 -0
  17. package/apps/docs/package.json +38 -0
  18. package/apps/docs/public/globals.css +25 -0
  19. package/apps/docs/stories/AgGrid/AgGrid.stories.tsx +69 -0
  20. package/apps/docs/stories/AppBar/AppBar.stories.tsx +39 -0
  21. package/apps/docs/stories/Breadcrumbs/Breadcrumbs.stories.tsx +37 -0
  22. package/apps/docs/stories/Button/ButtonGroup.stories.tsx +99 -0
  23. package/apps/docs/stories/Button/button.stories.tsx +99 -0
  24. package/apps/docs/stories/Card/AttendanceCard.stories.tsx +37 -0
  25. package/apps/docs/stories/Card/Card.stories.tsx +39 -0
  26. package/apps/docs/stories/Charts/PieChart.stories.tsx +264 -0
  27. package/apps/docs/stories/Chips/Chip.stories.tsx +141 -0
  28. package/apps/docs/stories/Chips/ChipWithBorder.stories.tsx +18 -0
  29. package/apps/docs/stories/Chips/FilterPill.stories.tsx +24 -0
  30. package/apps/docs/stories/Color/Color.stories.tsx +14 -0
  31. package/apps/docs/stories/Dialog/ButtomDialog.stories.tsx +47 -0
  32. package/apps/docs/stories/Dialog/DeleteDialog.stories.tsx +31 -0
  33. package/apps/docs/stories/Dialog/Dialog.stories.tsx +47 -0
  34. package/apps/docs/stories/Drawer/Drawer.stories.tsx +94 -0
  35. package/apps/docs/stories/FilterList/FilterList.stories.tsx +88 -0
  36. package/apps/docs/stories/FilterList/FilterListV2.stories.tsx +92 -0
  37. package/apps/docs/stories/FormFields/AutoComplete.stories.tsx +87 -0
  38. package/apps/docs/stories/FormFields/CheckBox.stories.tsx +61 -0
  39. package/apps/docs/stories/FormFields/DatePicker.stories.tsx +98 -0
  40. package/apps/docs/stories/FormFields/DateRangePicker.stories.tsx +37 -0
  41. package/apps/docs/stories/FormFields/FileUpload.stories.tsx +83 -0
  42. package/apps/docs/stories/FormFields/ImageUpload.stories.tsx +69 -0
  43. package/apps/docs/stories/FormFields/ListItemButton.stories.tsx +59 -0
  44. package/apps/docs/stories/FormFields/RadioGroupField.stories.tsx +170 -0
  45. package/apps/docs/stories/FormFields/SearchField.stories.tsx +72 -0
  46. package/apps/docs/stories/FormFields/TextField.stories.tsx +111 -0
  47. package/apps/docs/stories/FormFields/TimeField.stories.tsx +82 -0
  48. package/apps/docs/stories/FormFields/TimePicker.stories.tsx +82 -0
  49. package/apps/docs/stories/Indicator/Indicator.stories.tsx +33 -0
  50. package/apps/docs/stories/Indicator/SeverityIndicator.stories.tsx +27 -0
  51. package/apps/docs/stories/Layouts/FormRow.stories.tsx +45 -0
  52. package/apps/docs/stories/PadBox/PadBox.stories.tsx +49 -0
  53. package/apps/docs/stories/Stepper/Stepper.stories.tsx +75 -0
  54. package/apps/docs/stories/Stepper/StepperV2.stories.tsx +44 -0
  55. package/apps/docs/stories/Timeline/AttendanceStatus.stories.tsx +29 -0
  56. package/apps/docs/stories/Timeline/Timeline.stories.tsx +38 -0
  57. package/apps/docs/stories/Tooltip/Tooltip.stories.tsx +30 -0
  58. package/apps/docs/stories/UserProfileMenu/UserProfileMenu.stories.tsx +112 -0
  59. package/apps/docs/tsconfig.json +19 -0
  60. package/commitlint.config.cjs +6 -0
  61. package/index.ts +1 -0
  62. package/package.json +74 -0
  63. package/packages/eslint-config/README.md +3 -0
  64. package/packages/eslint-config/library.js +88 -0
  65. package/packages/eslint-config/next.js +85 -0
  66. package/packages/eslint-config/package.json +19 -0
  67. package/packages/eslint-config/react-internal.js +89 -0
  68. package/packages/shared-components/.eslintrc.js +10 -0
  69. package/packages/shared-components/package.json +22 -0
  70. package/packages/shared-components/src/Actions/AddAction.tsx +13 -0
  71. package/packages/shared-components/src/Actions/CalendarAction.tsx +13 -0
  72. package/packages/shared-components/src/Actions/DeleteAction.tsx +13 -0
  73. package/packages/shared-components/src/Actions/DownloadAction.tsx +13 -0
  74. package/packages/shared-components/src/Actions/EditAction.tsx +13 -0
  75. package/packages/shared-components/src/Actions/HistoryAction.tsx +13 -0
  76. package/packages/shared-components/src/Actions/index.ts +6 -0
  77. package/packages/shared-components/src/AgGrid/ActionCell/ActionCell.tsx +55 -0
  78. package/packages/shared-components/src/AgGrid/ActionCell/Popover.tsx +32 -0
  79. package/packages/shared-components/src/AgGrid/AgGrid.tsx +87 -0
  80. package/packages/shared-components/src/AgGrid/LoadingCell.tsx +5 -0
  81. package/packages/shared-components/src/AgGrid/index.ts +3 -0
  82. package/packages/shared-components/src/AppBar/AppBar.styled.tsx +25 -0
  83. package/packages/shared-components/src/AppBar/AppBar.tsx +20 -0
  84. package/packages/shared-components/src/AppBar/index.ts +1 -0
  85. package/packages/shared-components/src/Breadcrumbs/Breadcrumbs.tsx +76 -0
  86. package/packages/shared-components/src/Breadcrumbs/index.ts +1 -0
  87. package/packages/shared-components/src/Button/ActionButton.tsx +38 -0
  88. package/packages/shared-components/src/Button/Button.tsx +19 -0
  89. package/packages/shared-components/src/Button/ButtonGroup.tsx +37 -0
  90. package/packages/shared-components/src/Button/index.ts +3 -0
  91. package/packages/shared-components/src/Card/AttendanceCard.tsx +51 -0
  92. package/packages/shared-components/src/Card/Card.tsx +34 -0
  93. package/packages/shared-components/src/Card/CardItem/CardItem.tsx +33 -0
  94. package/packages/shared-components/src/Card/CardItem/CardItemValue.tsx +98 -0
  95. package/packages/shared-components/src/Card/CardItem/index.ts +2 -0
  96. package/packages/shared-components/src/Card/ProfileCard/ProfileCard.tsx +40 -0
  97. package/packages/shared-components/src/Card/ProfileCard/ProfileCardItem/ProfileCardBody.tsx +53 -0
  98. package/packages/shared-components/src/Card/ProfileCard/ProfileCardItem/ProfileCardHeader.tsx +96 -0
  99. package/packages/shared-components/src/Card/index.ts +6 -0
  100. package/packages/shared-components/src/Charts/PieChart.tsx +69 -0
  101. package/packages/shared-components/src/Charts/index.ts +1 -0
  102. package/packages/shared-components/src/Chips/Chip.tsx +26 -0
  103. package/packages/shared-components/src/Chips/ChipWithBorder.tsx +39 -0
  104. package/packages/shared-components/src/Chips/FilterPill.tsx +47 -0
  105. package/packages/shared-components/src/Chips/index.ts +3 -0
  106. package/packages/shared-components/src/Dialog/BottomDialog.styled.tsx +28 -0
  107. package/packages/shared-components/src/Dialog/BottomDialog.tsx +37 -0
  108. package/packages/shared-components/src/Dialog/DeleteDialog.tsx +48 -0
  109. package/packages/shared-components/src/Dialog/Dialog.tsx +61 -0
  110. package/packages/shared-components/src/Dialog/index.ts +3 -0
  111. package/packages/shared-components/src/Drawer/Bullet.tsx +12 -0
  112. package/packages/shared-components/src/Drawer/CloseDrawer/CloseDrawerMenuItem.tsx +50 -0
  113. package/packages/shared-components/src/Drawer/CloseDrawer/CloseDrawerMenuItemList.tsx +105 -0
  114. package/packages/shared-components/src/Drawer/CloseDrawer/CloseDrawerSubMenuItemList.tsx +125 -0
  115. package/packages/shared-components/src/Drawer/CloseDrawer/MenuItem.tsx +0 -0
  116. package/packages/shared-components/src/Drawer/CloseDrawer/Popover.tsx +45 -0
  117. package/packages/shared-components/src/Drawer/CloseDrawer/Popper.tsx +43 -0
  118. package/packages/shared-components/src/Drawer/Drawer.styled.tsx +51 -0
  119. package/packages/shared-components/src/Drawer/Drawer.tsx +55 -0
  120. package/packages/shared-components/src/Drawer/MenuItem.tsx +69 -0
  121. package/packages/shared-components/src/Drawer/OpenDrawer/OpenDrawerCollapse.tsx +13 -0
  122. package/packages/shared-components/src/Drawer/OpenDrawer/OpenDrawerMenuItem.tsx +46 -0
  123. package/packages/shared-components/src/Drawer/OpenDrawer/OpenDrawerMenuItemList.tsx +249 -0
  124. package/packages/shared-components/src/Drawer/index.ts +1 -0
  125. package/packages/shared-components/src/FilterList/FilterList.tsx +172 -0
  126. package/packages/shared-components/src/FilterList/FilterListV2.tsx +504 -0
  127. package/packages/shared-components/src/FilterList/FilterPopup.tsx +148 -0
  128. package/packages/shared-components/src/FilterList/FilterPopupWrapper.tsx +113 -0
  129. package/packages/shared-components/src/FilterList/FilterTypeWrapper.tsx +58 -0
  130. package/packages/shared-components/src/FilterList/getFormData.ts +29 -0
  131. package/packages/shared-components/src/FilterList/index.ts +3 -0
  132. package/packages/shared-components/src/FormFields/Autocomplete/Autocomplete.tsx +428 -0
  133. package/packages/shared-components/src/FormFields/Autocomplete/Skeleton.tsx +26 -0
  134. package/packages/shared-components/src/FormFields/Autocomplete/index.ts +1 -0
  135. package/packages/shared-components/src/FormFields/CheckBox/CheckBox.styled.tsx +67 -0
  136. package/packages/shared-components/src/FormFields/CheckBox/CheckBox.tsx +44 -0
  137. package/packages/shared-components/src/FormFields/CheckBox/Skeleton.tsx +12 -0
  138. package/packages/shared-components/src/FormFields/CheckBox/index.ts +1 -0
  139. package/packages/shared-components/src/FormFields/DatePicker/DatePicker.tsx +206 -0
  140. package/packages/shared-components/src/FormFields/DatePicker/Skeleton.tsx +21 -0
  141. package/packages/shared-components/src/FormFields/DatePicker/index.ts +1 -0
  142. package/packages/shared-components/src/FormFields/DateRangePicker/DateRangePicker.tsx +96 -0
  143. package/packages/shared-components/src/FormFields/DateRangePicker/Skeleton.tsx +38 -0
  144. package/packages/shared-components/src/FormFields/DateRangePicker/index.ts +1 -0
  145. package/packages/shared-components/src/FormFields/DateTimePicker/DateTimePicker.tsx +245 -0
  146. package/packages/shared-components/src/FormFields/DateTimePicker/Skeleton.tsx +24 -0
  147. package/packages/shared-components/src/FormFields/DateTimePicker/index.ts +1 -0
  148. package/packages/shared-components/src/FormFields/FileUpload/FileUpload.styled.tsx +22 -0
  149. package/packages/shared-components/src/FormFields/FileUpload/FileUpload.tsx +197 -0
  150. package/packages/shared-components/src/FormFields/FileUpload/Skeleton.tsx +21 -0
  151. package/packages/shared-components/src/FormFields/FileUpload/UploadedFileName.tsx +27 -0
  152. package/packages/shared-components/src/FormFields/FileUpload/index.ts +1 -0
  153. package/packages/shared-components/src/FormFields/ImageUpload/ImageUpload.styled.tsx +16 -0
  154. package/packages/shared-components/src/FormFields/ImageUpload/ImageUpload.tsx +181 -0
  155. package/packages/shared-components/src/FormFields/ImageUpload/ImageUploadView.tsx +65 -0
  156. package/packages/shared-components/src/FormFields/ImageUpload/PhotoCaptureDialog.tsx +74 -0
  157. package/packages/shared-components/src/FormFields/ImageUpload/Skeleton.tsx +31 -0
  158. package/packages/shared-components/src/FormFields/ImageUpload/index.ts +2 -0
  159. package/packages/shared-components/src/FormFields/ListItemButton/ListItemButton.styled.tsx +22 -0
  160. package/packages/shared-components/src/FormFields/ListItemButton/ListItemButton.tsx +37 -0
  161. package/packages/shared-components/src/FormFields/ListItemButton/index.ts +1 -0
  162. package/packages/shared-components/src/FormFields/PasswordField/PasswordField.tsx +50 -0
  163. package/packages/shared-components/src/FormFields/PasswordField/index.ts +1 -0
  164. package/packages/shared-components/src/FormFields/RadioGroupField/RadioGroupField.tsx +105 -0
  165. package/packages/shared-components/src/FormFields/RadioGroupField/Skeleton.tsx +26 -0
  166. package/packages/shared-components/src/FormFields/RadioGroupField/index.ts +1 -0
  167. package/packages/shared-components/src/FormFields/SearchField/SearchField.tsx +21 -0
  168. package/packages/shared-components/src/FormFields/SearchField/index.ts +1 -0
  169. package/packages/shared-components/src/FormFields/Switch/Skeleton.tsx +12 -0
  170. package/packages/shared-components/src/FormFields/Switch/Switch.tsx +33 -0
  171. package/packages/shared-components/src/FormFields/Switch/index.ts +1 -0
  172. package/packages/shared-components/src/FormFields/TextField/Skeleton.tsx +26 -0
  173. package/packages/shared-components/src/FormFields/TextField/TextField.tsx +92 -0
  174. package/packages/shared-components/src/FormFields/TextField/index.ts +1 -0
  175. package/packages/shared-components/src/FormFields/TimeField/Skeleton.tsx +24 -0
  176. package/packages/shared-components/src/FormFields/TimeField/TimeField.tsx +120 -0
  177. package/packages/shared-components/src/FormFields/TimeField/index.ts +1 -0
  178. package/packages/shared-components/src/FormFields/TimePicker/Skeleton.tsx +24 -0
  179. package/packages/shared-components/src/FormFields/TimePicker/TimePicker.tsx +162 -0
  180. package/packages/shared-components/src/FormFields/TimePicker/index.ts +1 -0
  181. package/packages/shared-components/src/FormFields/index.ts +13 -0
  182. package/packages/shared-components/src/Indicator/Indicator.tsx +17 -0
  183. package/packages/shared-components/src/Indicator/SeverityIndicator.tsx +34 -0
  184. package/packages/shared-components/src/Indicator/index.ts +2 -0
  185. package/packages/shared-components/src/Layouts/FormContainer.tsx +6 -0
  186. package/packages/shared-components/src/Layouts/FormRow/FormRow.styled.tsx +39 -0
  187. package/packages/shared-components/src/Layouts/FormRow/FormRow.tsx +20 -0
  188. package/packages/shared-components/src/Layouts/FormRow/index.ts +1 -0
  189. package/packages/shared-components/src/Layouts/FormSection.tsx +22 -0
  190. package/packages/shared-components/src/Layouts/index.ts +3 -0
  191. package/packages/shared-components/src/Loader/FacebookCircularProgress.tsx +41 -0
  192. package/packages/shared-components/src/Loader/index.ts +1 -0
  193. package/packages/shared-components/src/PadBox/PadBox.tsx +21 -0
  194. package/packages/shared-components/src/PadBox/index.ts +1 -0
  195. package/packages/shared-components/src/Stepper/Stepper.tsx +54 -0
  196. package/packages/shared-components/src/Stepper/StepperV2.tsx +115 -0
  197. package/packages/shared-components/src/Stepper/StepperV3.tsx +72 -0
  198. package/packages/shared-components/src/Stepper/index.ts +3 -0
  199. package/packages/shared-components/src/Svgs/AppLogo/AppLogoMedium.tsx +65 -0
  200. package/packages/shared-components/src/Svgs/AppLogo/AppLogoSmall.tsx +48 -0
  201. package/packages/shared-components/src/Svgs/ArrowUp.tsx +11 -0
  202. package/packages/shared-components/src/Svgs/Company/CompanyBanner.tsx +480 -0
  203. package/packages/shared-components/src/Svgs/Company/index.ts +1 -0
  204. package/packages/shared-components/src/Svgs/Drawer/SettingIcon.tsx +51 -0
  205. package/packages/shared-components/src/Svgs/Drawer/SvgsEmployees.tsx +25 -0
  206. package/packages/shared-components/src/Svgs/Drawer/SvgsOrganization.tsx +36 -0
  207. package/packages/shared-components/src/Svgs/Drawer/SvgsTransaction.tsx +79 -0
  208. package/packages/shared-components/src/Svgs/Drawer/index.ts +4 -0
  209. package/packages/shared-components/src/Svgs/FormAction.tsx +118 -0
  210. package/packages/shared-components/src/Svgs/LogoIcon.tsx +74 -0
  211. package/packages/shared-components/src/Svgs/SvgAdd.tsx +28 -0
  212. package/packages/shared-components/src/Svgs/SvgCalendar.tsx +89 -0
  213. package/packages/shared-components/src/Svgs/SvgDelete.tsx +55 -0
  214. package/packages/shared-components/src/Svgs/SvgDownload.tsx +20 -0
  215. package/packages/shared-components/src/Svgs/SvgFilterList.tsx +19 -0
  216. package/packages/shared-components/src/Svgs/SvgNoLogo.tsx +66 -0
  217. package/packages/shared-components/src/Svgs/SvgNoSign.tsx +28 -0
  218. package/packages/shared-components/src/Svgs/SvgsDrop.tsx +44 -0
  219. package/packages/shared-components/src/Svgs/SvgsEdit.tsx +42 -0
  220. package/packages/shared-components/src/Svgs/SvgsHistory.tsx +40 -0
  221. package/packages/shared-components/src/Svgs/SvgsHome.tsx +16 -0
  222. package/packages/shared-components/src/Svgs/SvgsIndicator.tsx +20 -0
  223. package/packages/shared-components/src/Svgs/index.ts +12 -0
  224. package/packages/shared-components/src/Tab/Skeleton.tsx +15 -0
  225. package/packages/shared-components/src/Tab/Tabs.tsx +64 -0
  226. package/packages/shared-components/src/Tab/index.ts +1 -0
  227. package/packages/shared-components/src/Timeline/AttendanceStatus.tsx +56 -0
  228. package/packages/shared-components/src/Timeline/Timeline.tsx +171 -0
  229. package/packages/shared-components/src/Timeline/TimelineTrackSegments.tsx +121 -0
  230. package/packages/shared-components/src/Timeline/index.ts +2 -0
  231. package/packages/shared-components/src/Toast/Toast.tsx +59 -0
  232. package/packages/shared-components/src/Toast/ToastBody.tsx +26 -0
  233. package/packages/shared-components/src/Toast/ToastFooterLink.tsx +19 -0
  234. package/packages/shared-components/src/Toast/Toaster.styled.tsx +76 -0
  235. package/packages/shared-components/src/Toast/Toaster.tsx +21 -0
  236. package/packages/shared-components/src/Toast/index.ts +3 -0
  237. package/packages/shared-components/src/Toast/toasts.tsx +28 -0
  238. package/packages/shared-components/src/Toast/types.ts +13 -0
  239. package/packages/shared-components/src/Tooltip/Tooltip.tsx +36 -0
  240. package/packages/shared-components/src/Tooltip/index.ts +1 -0
  241. package/packages/shared-components/src/UserProfileMenu/UserProfileMenu.styled.tsx +37 -0
  242. package/packages/shared-components/src/UserProfileMenu/UserProfileMenu.tsx +107 -0
  243. package/packages/shared-components/src/UserProfileMenu/index.ts +1 -0
  244. package/packages/shared-components/src/index.ts +24 -0
  245. package/packages/shared-components/src/utils/colorVariant.ts +142 -0
  246. package/packages/shared-components/src/utils/date.ts +11 -0
  247. package/packages/shared-components/src/utils/file.ts +20 -0
  248. package/packages/shared-components/src/utils/fileSizeValidate.ts +5 -0
  249. package/packages/shared-components/src/utils/index.ts +5 -0
  250. package/packages/shared-components/src/utils/theme/colorPalette.ts +110 -0
  251. package/packages/shared-components/src/utils/theme/colorPaletteUI.tsx +44 -0
  252. package/packages/shared-components/src/utils/theme/paletteDark.ts +10 -0
  253. package/packages/shared-components/src/utils/theme/paletteLight.ts +31 -0
  254. package/packages/shared-components/src/utils/theme/theme.ts +289 -0
  255. package/packages/shared-components/src/utils/theme/types.ts +18 -0
  256. package/packages/shared-components/src/utils/theme/typography.ts +52 -0
  257. package/packages/shared-components/src/utils/urlToNestedObject.ts +9 -0
  258. package/packages/shared-components/tsconfig.json +8 -0
  259. package/packages/shared-components/tsconfig.lint.json +8 -0
  260. package/packages/shared-components/turbo/generators/config.ts +33 -0
  261. package/packages/shared-components/turbo/generators/templates/component.hbs +8 -0
  262. package/packages/typescript-config/base.json +20 -0
  263. package/packages/typescript-config/nextjs.json +13 -0
  264. package/packages/typescript-config/package.json +9 -0
  265. package/packages/typescript-config/react-library.json +8 -0
  266. package/pnpm-workspace.yaml +3 -0
  267. package/turbo.json +44 -0
@@ -0,0 +1,76 @@
1
+ import { Box, styled, type CSSObject } from "@mui/material";
2
+ import { ToastContainer, type ToastContainerProps } from "react-toastify";
3
+
4
+ export const ToasterStyled = styled(ToastContainer)<ToastContainerProps>(({
5
+ theme: {
6
+ palette: {
7
+ app: { color },
8
+ },
9
+ },
10
+ }) => {
11
+ const toastBody: CSSObject = {
12
+ "& .Toastify__toast-container": {
13
+ padding: "0px",
14
+ },
15
+
16
+ "& .Toastify__toast": {
17
+ padding: "0px",
18
+ inlineSize: "400px",
19
+ marginLeft: "-80px",
20
+ borderRadius: "8px",
21
+ border: `2px solid ${color.iron[700]}`,
22
+ },
23
+
24
+ "& .Toastify__toast-body": {
25
+ padding: "0px",
26
+ },
27
+ };
28
+
29
+ const toastSuccess: CSSObject = {
30
+ "& .Toastify__toast-theme--light.Toastify__toast--success": {
31
+ "& .Toastify__toast-body": {
32
+ borderInlineStart: `6px solid ${color.darkMint[900]}`,
33
+ },
34
+ },
35
+ };
36
+
37
+ const toastError: CSSObject = {
38
+ "& .Toastify__toast-theme--light.Toastify__toast--error": {
39
+ "& .Toastify__toast-body": {
40
+ borderInlineStart: `6px solid ${color.red[900]}`,
41
+ },
42
+ },
43
+ };
44
+
45
+ const toastWarning: CSSObject = {
46
+ "& .Toastify__toast-theme--light.Toastify__toast--warning": {
47
+ "& .Toastify__toast-body": {
48
+ borderInlineStart: `6px solid ${color.darkOrange[900]}`,
49
+ },
50
+ },
51
+ };
52
+
53
+ const toastInfo: CSSObject = {
54
+ "& .Toastify__toast-theme--light.Toastify__toast--info": {
55
+ "& .Toastify__toast-body": {
56
+ borderInlineStart: `6px solid ${color.slate[900]}`,
57
+ },
58
+ },
59
+ };
60
+
61
+ return {
62
+ ...toastBody,
63
+ ...toastSuccess,
64
+ ...toastError,
65
+ ...toastWarning,
66
+ ...toastInfo,
67
+ };
68
+ });
69
+
70
+ export const HoverBox = styled(Box)(({ theme }) => ({
71
+ color: theme.palette.app.color.slate[900],
72
+
73
+ "&:hover": {
74
+ color: theme.palette.app.color.butterflyBlue[900],
75
+ },
76
+ }));
@@ -0,0 +1,21 @@
1
+ import { Slide } from "react-toastify";
2
+
3
+ import { ToasterStyled } from "./Toaster.styled";
4
+
5
+ export const Toaster = () => {
6
+ return (
7
+ <ToasterStyled
8
+ position="top-right"
9
+ autoClose={5000}
10
+ hideProgressBar
11
+ newestOnTop
12
+ closeButton={false}
13
+ closeOnClick={false}
14
+ rtl={false}
15
+ draggable
16
+ pauseOnHover
17
+ transition={Slide}
18
+ limit={5}
19
+ />
20
+ );
21
+ };
@@ -0,0 +1,3 @@
1
+ export { Toaster } from "./Toaster";
2
+
3
+ export { toasts } from "./toasts";
@@ -0,0 +1,28 @@
1
+ import { toast as reactToast, type ToastOptions } from "react-toastify";
2
+ import { Toast } from "./Toast";
3
+ import type { ToastArgs, ToastsTypeFunctions, ToastType } from "./types";
4
+
5
+ // eslint-disable-next-line sonarjs/function-return-type
6
+ function createToast(
7
+ { title, description, href, linkText }: ToastArgs,
8
+ type: ToastType,
9
+ options?: ToastOptions
10
+ ) {
11
+ return reactToast(
12
+ <Toast
13
+ title={title}
14
+ description={description}
15
+ href={href}
16
+ linkText={linkText}
17
+ type={type}
18
+ />,
19
+ { ...options, icon: false, type }
20
+ );
21
+ }
22
+
23
+ export const toasts: ToastsTypeFunctions = {
24
+ info: (toast, options?) => createToast(toast, "info", options),
25
+ success: (toast, options?) => createToast(toast, "success", options),
26
+ warning: (toast, options?) => createToast(toast, "warning", options),
27
+ error: (toast, options?) => createToast(toast, "error", options),
28
+ };
@@ -0,0 +1,13 @@
1
+ import type { ToastOptions, TypeOptions } from "react-toastify";
2
+
3
+ export type ToastType = Exclude<TypeOptions, "default">;
4
+ export type ToastBody = { title: string; description?: string };
5
+ export type ToastLink = { href?: string; linkText?: string };
6
+ export type ToastArgs = ToastBody & ToastLink;
7
+
8
+ export type ToastsTypeFunctions = {
9
+ [K in ToastType]: (
10
+ _toast: ToastArgs,
11
+ _options?: Omit<ToastOptions, "type">
12
+ ) => string | number;
13
+ };
@@ -0,0 +1,36 @@
1
+ import type { TooltipProps as MuiTooltipProps } from "@mui/material";
2
+ import { Box, Tooltip as MuiTooltip, Typography } from "@mui/material";
3
+ import { ReactNode, type PropsWithChildren } from "react";
4
+
5
+ type TooltipProps = PropsWithChildren<{
6
+ toolTipLabel: ReactNode;
7
+ placement?: MuiTooltipProps["placement"];
8
+ }>;
9
+
10
+ export const Tooltip = ({
11
+ toolTipLabel,
12
+ children,
13
+ placement = "top-start",
14
+ ...rest
15
+ }: TooltipProps) => {
16
+ return (
17
+ <MuiTooltip arrow placement={placement} title={toolTipLabel} {...rest}>
18
+ {typeof children === "string" ? (
19
+ <Typography
20
+ variant="body2"
21
+ fontWeight={500}
22
+ sx={{
23
+ maxWidth: "150px",
24
+ overflow: "hidden",
25
+ textOverflow: "ellipsis",
26
+ whiteSpace: "nowrap",
27
+ }}
28
+ >
29
+ {children}
30
+ </Typography>
31
+ ) : (
32
+ <Box>{children}</Box>
33
+ )}
34
+ </MuiTooltip>
35
+ );
36
+ };
@@ -0,0 +1 @@
1
+ export * from "./Tooltip";
@@ -0,0 +1,37 @@
1
+ import { IconButton, Menu, menuClasses, type CSSObject } from "@mui/material";
2
+ import { styled } from "@mui/material/styles";
3
+
4
+ export const MenuStyled = styled(Menu)(({ theme }) => {
5
+ const style: CSSObject = {
6
+ [`& .${menuClasses.paper}`]: {
7
+ boxShadow: theme.palette.app.paperBoxShadow,
8
+ minWidth: "29rem",
9
+ width: "auto",
10
+ margin: "0 0.5rem",
11
+ borderRadius: "8px",
12
+ overflow: "visible",
13
+ "& .MuiList-root": {
14
+ padding: "0",
15
+ overflow: "visible",
16
+ },
17
+ },
18
+ };
19
+
20
+ return style;
21
+ });
22
+
23
+ export const IconButtonStyled = styled(IconButton, {
24
+ shouldForwardProp: (prop) => prop !== "isOpened",
25
+ })<{ isOpened?: boolean }>(({ theme, isOpened }) => {
26
+ const { color } = theme.palette.app;
27
+
28
+ const style: CSSObject = {
29
+ paddingInline: "0.2rem 0.8rem",
30
+ paddingBlock: "0.2rem",
31
+ borderRadius: "20px",
32
+ background: isOpened ? color.butterflyBlue[500] : color.slate[800],
33
+ border: `1px solid ${isOpened ? color.butterflyBlue[900] : color.iron[700]}`,
34
+ };
35
+
36
+ return style;
37
+ });
@@ -0,0 +1,107 @@
1
+ import { KeyboardArrowDown, KeyboardArrowUp } from "@mui/icons-material";
2
+ import type { MenuProps } from "@mui/material";
3
+ import {
4
+ Avatar,
5
+ Box,
6
+ Divider,
7
+ Menu,
8
+ MenuItem,
9
+ Stack,
10
+ Typography,
11
+ } from "@mui/material";
12
+ import _isFunction from "lodash/isFunction";
13
+ import {
14
+ useState,
15
+ type CSSProperties,
16
+ type MouseEvent,
17
+ type ReactNode,
18
+ } from "react";
19
+ import { IconButtonStyled } from "./UserProfileMenu.styled";
20
+
21
+ export type UserProfileMenuProps = Omit<MenuProps, "open" | "closeMenu"> & {
22
+ userDetails: {
23
+ name: string;
24
+ email: string;
25
+ avatar: string;
26
+ };
27
+ menuItems: {
28
+ key: string;
29
+ label: string;
30
+ icon?: ReactNode;
31
+ divider?: boolean;
32
+ sx?: CSSProperties;
33
+ onClick?: () => void;
34
+ }[];
35
+ };
36
+
37
+ export function UserProfileMenu({
38
+ userDetails,
39
+ menuItems,
40
+ }: UserProfileMenuProps) {
41
+ const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
42
+
43
+ const open = Boolean(anchorEl);
44
+
45
+ const handleClick = (event: MouseEvent<HTMLElement>) => {
46
+ setAnchorEl(event.currentTarget);
47
+ };
48
+
49
+ const handleClose = () => {
50
+ setAnchorEl(null);
51
+ };
52
+
53
+ return (
54
+ <Stack alignItems="center">
55
+ <IconButtonStyled size="small" onClick={handleClick} isOpened={open}>
56
+ <Stack direction="row" alignItems="center" gap={1} color="black">
57
+ <Avatar src={userDetails.avatar} />
58
+ <Typography>{userDetails.name}</Typography>
59
+ {open ? <KeyboardArrowUp /> : <KeyboardArrowDown />}
60
+ </Stack>
61
+ </IconButtonStyled>
62
+
63
+ <Menu
64
+ anchorEl={anchorEl}
65
+ open={open}
66
+ onClose={handleClose}
67
+ sx={{
68
+ "& .MuiPaper-root": {
69
+ marginTop: "5px",
70
+ width: "290px",
71
+ },
72
+ }}
73
+ >
74
+ {menuItems.map(
75
+ ({ divider = false, onClick, icon, label, sx = {}, key }) => {
76
+ return (
77
+ <Box key={`${key}_container`}>
78
+ {divider && <Divider />}
79
+
80
+ <MenuItem
81
+ onClick={() => {
82
+ if (_isFunction(onClick)) {
83
+ onClick();
84
+ }
85
+ }}
86
+ >
87
+ {(icon || label) && (
88
+ <Stack
89
+ gap="1.2rem"
90
+ alignItems="center"
91
+ width="100%"
92
+ flexDirection="row"
93
+ sx={{ ...sx }}
94
+ >
95
+ {icon}
96
+ {label && <Typography>{label}</Typography>}
97
+ </Stack>
98
+ )}
99
+ </MenuItem>
100
+ </Box>
101
+ );
102
+ }
103
+ )}
104
+ </Menu>
105
+ </Stack>
106
+ );
107
+ }
@@ -0,0 +1 @@
1
+ export * from "./UserProfileMenu";
@@ -0,0 +1,24 @@
1
+ export * from "./Actions";
2
+ export * from "./AgGrid";
3
+ export * from "./AppBar";
4
+ export * from "./Breadcrumbs";
5
+ export * from "./Button";
6
+ export * from "./Card";
7
+ export * from "./Chips";
8
+ export * from "./Dialog";
9
+ export * from "./Drawer";
10
+ export * from "./FormFields";
11
+ export * from "./Layouts";
12
+ export * from "./Loader";
13
+ export * from "./PadBox";
14
+ export * from "./Svgs";
15
+ export * from "./Tab";
16
+ export * from "./Toast";
17
+ export * from "./Tooltip";
18
+ export * from "./UserProfileMenu";
19
+ export * from "./utils";
20
+ export * from "./Timeline";
21
+ export * from "./Indicator";
22
+ export * from "./FilterList";
23
+ export * from "./Charts";
24
+ export * from "./Stepper";
@@ -0,0 +1,142 @@
1
+ import { useTheme } from "@mui/material";
2
+
3
+ export type WorkDayType =
4
+ | "present"
5
+ | "holiday"
6
+ | "weekly_off"
7
+ | "working"
8
+ | "first_half_off"
9
+ | "second_half_off"
10
+ | "full_day_weekly_off"
11
+ | "first_half_weekly_off"
12
+ | "second_half_weekly_off"
13
+ | "paid_leave"
14
+ | "absent"
15
+ | "late_in_early_out"
16
+ | "unpaid_leave";
17
+
18
+ export type WorkDayTypeShort =
19
+ | "P"
20
+ | "H"
21
+ | "WO"
22
+ | "HO"
23
+ | "HWO"
24
+ | "PL"
25
+ | "A"
26
+ | "LIEO"
27
+ | "UPL";
28
+
29
+ export const serverityOptions: Record<WorkDayType, WorkDayTypeShort> = {
30
+ present: "P",
31
+ holiday: "H",
32
+ weekly_off: "WO",
33
+ working: "P",
34
+ first_half_off: "HO",
35
+ second_half_off: "HO",
36
+ full_day_weekly_off: "WO",
37
+ first_half_weekly_off: "HWO",
38
+ second_half_weekly_off: "HWO",
39
+ paid_leave: "PL",
40
+ absent: "A",
41
+ unpaid_leave: "UPL",
42
+ late_in_early_out: "LIEO",
43
+ };
44
+
45
+ export const getColorByVariant = (variant: WorkDayType, type = "dark") => {
46
+ const theme = useTheme();
47
+
48
+ const { darkMint, sapphireBlue, darkOrange, orchid, lipstickRed, deepAqua } =
49
+ theme.palette.app.color;
50
+
51
+ const index = type === "dark" ? 900 : 600;
52
+
53
+ switch (variant) {
54
+ case "present":
55
+ return darkMint[index];
56
+
57
+ case "working":
58
+ return darkMint[index];
59
+
60
+ case "holiday":
61
+ return sapphireBlue[index];
62
+
63
+ case "weekly_off":
64
+ return darkOrange[index];
65
+
66
+ case "full_day_weekly_off":
67
+ return darkOrange[index];
68
+
69
+ case "first_half_weekly_off":
70
+ return darkOrange[index];
71
+
72
+ case "second_half_weekly_off":
73
+ return darkOrange[index];
74
+
75
+ case "paid_leave":
76
+ return orchid[index];
77
+
78
+ case "absent":
79
+ return lipstickRed[index];
80
+
81
+ case "first_half_off":
82
+ return lipstickRed[index];
83
+
84
+ case "second_half_off":
85
+ return lipstickRed[index];
86
+
87
+ case "unpaid_leave":
88
+ return deepAqua[index];
89
+
90
+ case "late_in_early_out":
91
+ return lipstickRed[800];
92
+
93
+ default:
94
+ return lipstickRed[index];
95
+ }
96
+ };
97
+
98
+ export const getStatusLabel = (status: WorkDayType) => {
99
+ switch (status) {
100
+ case "present":
101
+ return "Present";
102
+
103
+ case "absent":
104
+ return "Absent";
105
+
106
+ case "weekly_off":
107
+ return "Weekly Off";
108
+
109
+ case "working":
110
+ return "Working";
111
+
112
+ case "holiday":
113
+ return "Holiday";
114
+
115
+ case "paid_leave":
116
+ return "Paid Leave";
117
+
118
+ case "unpaid_leave":
119
+ return "Unpaid Leave";
120
+
121
+ case "first_half_weekly_off":
122
+ return "First Half Weekly Off";
123
+
124
+ case "second_half_weekly_off":
125
+ return "Second Half Weekly Off";
126
+
127
+ case "first_half_off":
128
+ return "First Half Off";
129
+
130
+ case "second_half_off":
131
+ return "Second Half Off";
132
+
133
+ case "full_day_weekly_off":
134
+ return "Weekly Off";
135
+
136
+ case "late_in_early_out":
137
+ return "Late In/Early Out";
138
+
139
+ default:
140
+ return "Absent";
141
+ }
142
+ };
@@ -0,0 +1,11 @@
1
+ import { DateTime } from "luxon";
2
+
3
+ export const dateFormat = (date: Date) => {
4
+ return DateTime.fromJSDate(date).toFormat("dd-MM-yyyy");
5
+ };
6
+
7
+ export const getTimeInHHmm = (date: string, format: string = "HH:mm") => {
8
+ const dateTime = DateTime.fromISO(date).toFormat(format);
9
+
10
+ return dateTime;
11
+ };
@@ -0,0 +1,20 @@
1
+ const SUPPORTED_FILE_TYPES = [
2
+ "image/png",
3
+ "image/jpeg",
4
+ "image/jpg",
5
+ "application/pdf",
6
+ "application/msword",
7
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
8
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
9
+ "application/vnd.ms-excel",
10
+ ];
11
+
12
+ export const isFileSizeValid = (file: File, maxSizeMB: number) => {
13
+ const maxSizeInBytes = maxSizeMB * 1024 * 1024;
14
+
15
+ return file.size <= maxSizeInBytes;
16
+ };
17
+
18
+ export const isFileTypeValid = (file: File) => {
19
+ return SUPPORTED_FILE_TYPES.includes(file.type);
20
+ };
@@ -0,0 +1,5 @@
1
+ export const isFileSizeValid = (file: File, maxSizeMB: number) => {
2
+ const maxSizeInBytes = maxSizeMB * 1024 * 1024;
3
+
4
+ return file.size <= maxSizeInBytes;
5
+ };
@@ -0,0 +1,5 @@
1
+ export * from "./theme/theme";
2
+
3
+ export * from "./file";
4
+
5
+ export * from "./theme/colorPaletteUI";
@@ -0,0 +1,110 @@
1
+ import type { Color } from "@mui/material";
2
+
3
+ export type ColorShades = Partial<Color>;
4
+
5
+ export type ColorPalette = {
6
+ lightSlateBlue: ColorShades;
7
+ lipstickRed: ColorShades;
8
+ darkOrange: ColorShades;
9
+ deepAqua: ColorShades;
10
+ sapphireBlue: ColorShades;
11
+ darkMint: ColorShades;
12
+ butterflyBlue: ColorShades;
13
+ orchid: ColorShades;
14
+ mirage: ColorShades;
15
+ iron: ColorShades;
16
+ slate: ColorShades;
17
+ red: ColorShades;
18
+ lightBlue: ColorShades;
19
+ black: ColorShades;
20
+ };
21
+
22
+ export const colorPalette: ColorPalette = {
23
+ iron: {
24
+ 900: "hsla(0, 0%, 49%, 1)",
25
+ 800: "hsla(0, 0%, 67%, 1)", // disabled color
26
+ 700: "hsla(0, 0%, 85%, 1)",
27
+ 600: "hsla(0, 0%, 100%, 1)", // white
28
+ 500: "hsla(218, 15%, 59%, 1)",
29
+ 400: "hsla(0, 0%, 18%, 1)",
30
+ 300: "hsla(0, 0%, 0%, 0.35)", // shadow color
31
+ },
32
+ slate: {
33
+ 900: "hsla(212, 19%, 37%, 1)", // info
34
+ 800: "hsl(210, 20%, 96%)",
35
+ 700: "hsl(193, 22%, 92%)",
36
+ 600: " hsl(0, 0%, 98%)",
37
+ 500: "hsl(0, 0%, 49%)",
38
+ },
39
+ mirage: {
40
+ 900: "hsla(224, 35%, 12%, 1)", // primary
41
+ 800: "hsla(230, 90%, 3%, 0.08)",
42
+ 700: "hsla(226, 34%, 15%, 1)",
43
+ 600: "hsla(0, 0%, 22%, 0.7)",
44
+ },
45
+ lightSlateBlue: {
46
+ 900: "hsla(234, 99%, 68%, 1)",
47
+ 800: "hsla(234, 98%, 81%, 1)",
48
+ 700: "hsla(233, 100%, 94%, 1)",
49
+ 600: "hsla(236, 100%, 97%, 1)",
50
+ },
51
+ lipstickRed: {
52
+ 900: "hsla(349, 90%, 41%, 1)",
53
+ 800: "hsla(350, 63%, 64%, 1)",
54
+ 700: "hsla(349, 66%, 87%, 1)",
55
+ 600: "hsla(348, 100%, 95%, 1)",
56
+ },
57
+ darkOrange: {
58
+ 900: "hsla(32, 100%, 52%, 1)", //warning
59
+ 800: "hsla(32, 100%, 71%, 1)",
60
+ 700: "hsla(33, 100%, 90%, 1)",
61
+ 600: "hsla(33, 100%, 95%, 1)",
62
+ },
63
+ deepAqua: {
64
+ 900: "hsla(183, 87%, 27%, 1)",
65
+ 800: "hsla(184, 50%, 68%, 1)",
66
+ 700: "hsla(183, 68%, 79%, 1)",
67
+ 600: "hsla(183, 85%, 95%, 1)",
68
+ },
69
+ sapphireBlue: {
70
+ 900: "hsla(223, 59%, 49%, 1)",
71
+ 800: "hsla(223, 56%, 69%, 1)",
72
+ 700: "hsla(222, 58%, 90%, 1)",
73
+ 600: "hsla(223, 54%, 95%, 1)",
74
+ 500: "hsl(216, 100%, 91%)",
75
+ 400: " hsl(217, 100%, 95%)",
76
+ 300: " hsl(193, 22%, 92%)",
77
+ },
78
+ darkMint: {
79
+ 900: "hsla(136, 59%, 49%, 1)",
80
+ 800: "hsla(136, 56%, 69%, 1)",
81
+ 700: "hsla(136, 58%, 90%, 1)",
82
+ 600: "hsla(133, 54%, 95%, 1)",
83
+ },
84
+ butterflyBlue: {
85
+ 900: "hsla(203, 79%, 57%, 1)", //secondary
86
+ 800: "hsla(204, 79%, 74%, 1)",
87
+ 700: "hsl(204, 16%, 88%)",
88
+ 600: "hsla(209, 83%, 91%, 1)",
89
+ 500: "hsla(203, 82%, 96%, 1)",
90
+ 400: "hsla(208, 25%, 66%, 1)", //primary.light
91
+ 300: "hsla(207, 17%, 88%, 1)",
92
+ },
93
+ orchid: {
94
+ 900: "hsla(295, 60%, 66%, 1)",
95
+ 800: "hsla(295, 61%, 80%, 1)",
96
+ 700: "hsla(297, 60%, 93%, 1)",
97
+ 600: "hsla(295, 65%, 97%, 1)",
98
+ },
99
+ red: {
100
+ 900: "hsla(0, 90%, 47%, 1)", //error
101
+ 800: "hsla(0, 73%, 59%, 1)",
102
+ },
103
+ lightBlue: {
104
+ 100: "hsla(193, 4%, 92%)",
105
+ 50: "hsla(193, 0%, 100%)",
106
+ },
107
+ black: {
108
+ 900: "hsl(0, 0%, 0%)",
109
+ },
110
+ };