ui-soxo-bootstrap-core 2.4.24

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 (429) hide show
  1. package/.babelrc +9 -0
  2. package/.github/workflows/npm-publish.yml +33 -0
  3. package/.husky/pre-commit +12 -0
  4. package/.prettierrc.json +11 -0
  5. package/babel.config.js +3 -0
  6. package/core/assets/images/vector.png +0 -0
  7. package/core/components/component-loader/component-loader.js +125 -0
  8. package/core/components/component-wrapper/component-wrapper.js +122 -0
  9. package/core/components/extra-info/extra-info-details.js +172 -0
  10. package/core/components/extra-info/extra-info-details.scss +27 -0
  11. package/core/components/extra-info/extra-info.js +134 -0
  12. package/core/components/index.js +18 -0
  13. package/core/components/landing-api/landing-api.js +492 -0
  14. package/core/components/landing-api/landing-api.scss +19 -0
  15. package/core/components/menu-template-api/menu-template-api.js +321 -0
  16. package/core/components/root-application-api/root-application-api.js +174 -0
  17. package/core/components/root-application-api/root-application.api.scss +0 -0
  18. package/core/index.js +14 -0
  19. package/core/lib/Store.js +363 -0
  20. package/core/lib/assets/Tick-icon.png +0 -0
  21. package/core/lib/assets/blue-slate-theme.png +0 -0
  22. package/core/lib/assets/dark-theme.png +0 -0
  23. package/core/lib/assets/deep-purple-theme.png +0 -0
  24. package/core/lib/assets/light-theme.png +0 -0
  25. package/core/lib/assets/nura-theme.png +0 -0
  26. package/core/lib/assets/plant.png +0 -0
  27. package/core/lib/assets/welcome-image.png +0 -0
  28. package/core/lib/assets/white-haze-theme.png +0 -0
  29. package/core/lib/components/application-bootstrap/application-bootstrap.js +115 -0
  30. package/core/lib/components/application-bootstrap/application-bootstrap.scss +0 -0
  31. package/core/lib/components/approval-form/approval-form.js +280 -0
  32. package/core/lib/components/approval-form/approval-form.scss +184 -0
  33. package/core/lib/components/approval-list/approval-list.js +143 -0
  34. package/core/lib/components/approval-list/approval-list.scss +3 -0
  35. package/core/lib/components/approval-list/components/request-card/request-card.js +43 -0
  36. package/core/lib/components/approval-list/components/request-card/request-card.scss +31 -0
  37. package/core/lib/components/camera/camera.js +231 -0
  38. package/core/lib/components/camera/camera.scss +86 -0
  39. package/core/lib/components/comment-block/comment-block.js +139 -0
  40. package/core/lib/components/comment-block/comment-block.scss +3 -0
  41. package/core/lib/components/confirm-modal/confirm-modal.js +82 -0
  42. package/core/lib/components/confirm-modal/confirm-modal.scss +3 -0
  43. package/core/lib/components/consent/consent.js +67 -0
  44. package/core/lib/components/consent/consent.scss +0 -0
  45. package/core/lib/components/consent/pdf-signature.js +299 -0
  46. package/core/lib/components/consent/signature-pad.js +90 -0
  47. package/core/lib/components/consent/signature-pad.scss +14 -0
  48. package/core/lib/components/file-upload/file-upload.js +133 -0
  49. package/core/lib/components/finger-print-reader/finger-print-reader.js +296 -0
  50. package/core/lib/components/finger-print-reader/finger-print-reader.scss +47 -0
  51. package/core/lib/components/finger-print-search/finger-print-search.js +200 -0
  52. package/core/lib/components/finger-print-search/finger-print-search.scss +47 -0
  53. package/core/lib/components/global-header/animations.js +18 -0
  54. package/core/lib/components/global-header/global-header.js +413 -0
  55. package/core/lib/components/global-header/global-header.scss +369 -0
  56. package/core/lib/components/header/generic-header.js +76 -0
  57. package/core/lib/components/header/generic-header.scss +99 -0
  58. package/core/lib/components/image-preview/image-preview.js +33 -0
  59. package/core/lib/components/image-wrapper/image-wrapper.js +108 -0
  60. package/core/lib/components/image-wrapper/image-wrapper.scss +13 -0
  61. package/core/lib/components/index.js +203 -0
  62. package/core/lib/components/landing/landing.js +404 -0
  63. package/core/lib/components/landing/landing.scss +0 -0
  64. package/core/lib/components/language-switcher/language-switcher.js +50 -0
  65. package/core/lib/components/menu-context/menu-context.js +70 -0
  66. package/core/lib/components/menu-template/menu-template.js +250 -0
  67. package/core/lib/components/menu-template/menu-template.scss +9 -0
  68. package/core/lib/components/modal-search/modal-search.js +153 -0
  69. package/core/lib/components/modal-search/modal-search.scss +79 -0
  70. package/core/lib/components/modal-wrapper/modal-manager.js +16 -0
  71. package/core/lib/components/modal-wrapper/modal-wrapper.js +108 -0
  72. package/core/lib/components/modal-wrapper/modal-wrapper.scss +14 -0
  73. package/core/lib/components/notice-board/notice-board.js +132 -0
  74. package/core/lib/components/notice-board/notice-board.scss +65 -0
  75. package/core/lib/components/page-container/page-container.js +55 -0
  76. package/core/lib/components/page-container/page-container.scss +8 -0
  77. package/core/lib/components/page-header/page-header.js +23 -0
  78. package/core/lib/components/page-header/page-header.scss +18 -0
  79. package/core/lib/components/pdf-viewer/pdf-viewer.js +56 -0
  80. package/core/lib/components/portlet-table/components/table-actions/table-actions.js +58 -0
  81. package/core/lib/components/portlet-table/components/table-actions/table-actions.scss +1 -0
  82. package/core/lib/components/portlet-table/components/table-data/table-data.js +107 -0
  83. package/core/lib/components/portlet-table/components/table-data/table-data.scss +0 -0
  84. package/core/lib/components/portlet-table/portlet-table.js +63 -0
  85. package/core/lib/components/portlet-table/portlet-table.scss +90 -0
  86. package/core/lib/components/progress-bar/progress-bar.js +58 -0
  87. package/core/lib/components/progress-bar/progress-bar.scss +15 -0
  88. package/core/lib/components/request-form/request-form.js +110 -0
  89. package/core/lib/components/request-form/request-form.scss +0 -0
  90. package/core/lib/components/root-application/root-application.js +70 -0
  91. package/core/lib/components/rupee/rupee.js +14 -0
  92. package/core/lib/components/script-input/script-input.js +169 -0
  93. package/core/lib/components/script-input/script-input.scss +8 -0
  94. package/core/lib/components/sidemenu/animations.js +52 -0
  95. package/core/lib/components/sidemenu/sidemenu.js +617 -0
  96. package/core/lib/components/sidemenu/sidemenu.scss +264 -0
  97. package/core/lib/components/spotlight-search/spotlight-search.component.js +636 -0
  98. package/core/lib/components/spotlight-search/spotlight-search.component.scss +78 -0
  99. package/core/lib/components/table-wrapper/table-wrapper.js +136 -0
  100. package/core/lib/components/table-wrapper/table-wrapper.scss +72 -0
  101. package/core/lib/components/ui_elements/Loader.js +13 -0
  102. package/core/lib/components/ui_elements/Notify.js +13 -0
  103. package/core/lib/components/ui_elements/PlaceHolder.js +34 -0
  104. package/core/lib/components/web-camera/web-camera.js +162 -0
  105. package/core/lib/components/web-camera/web-camera.scss +28 -0
  106. package/core/lib/core.md +9 -0
  107. package/core/lib/elements/Elements.md +3 -0
  108. package/core/lib/elements/basic/LoggedUserRedirect.js +21 -0
  109. package/core/lib/elements/basic/PrivateRoute.js +16 -0
  110. package/core/lib/elements/basic/button/Button.md +43 -0
  111. package/core/lib/elements/basic/button/button.js +170 -0
  112. package/core/lib/elements/basic/button/button.scss +0 -0
  113. package/core/lib/elements/basic/card/Card.md +15 -0
  114. package/core/lib/elements/basic/card/card.js +40 -0
  115. package/core/lib/elements/basic/card/card.scss +14 -0
  116. package/core/lib/elements/basic/checkbox/checkbox.js +23 -0
  117. package/core/lib/elements/basic/col/col.js +16 -0
  118. package/core/lib/elements/basic/copy-to-clipboard/Readme.md +40 -0
  119. package/core/lib/elements/basic/copy-to-clipboard/copy-to-clipboard.js +62 -0
  120. package/core/lib/elements/basic/country-phone-input/Readme.md +98 -0
  121. package/core/lib/elements/basic/country-phone-input/country-phone-input.js +107 -0
  122. package/core/lib/elements/basic/country-phone-input/phone-input.scss +62 -0
  123. package/core/lib/elements/basic/datepicker/datepicker.js +33 -0
  124. package/core/lib/elements/basic/dragabble-wrapper/draggable-wrapper.js +61 -0
  125. package/core/lib/elements/basic/empty/empty.js +15 -0
  126. package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.js +118 -0
  127. package/core/lib/elements/basic/fingerprint-protrected/fingerprint-protected.scss +10 -0
  128. package/core/lib/elements/basic/form/Readme.md +0 -0
  129. package/core/lib/elements/basic/form/form.js +70 -0
  130. package/core/lib/elements/basic/form/form.scss +4 -0
  131. package/core/lib/elements/basic/image/image.js +45 -0
  132. package/core/lib/elements/basic/image/image.scss +17 -0
  133. package/core/lib/elements/basic/image/readme.md +26 -0
  134. package/core/lib/elements/basic/image-viewer/image-viewer.js +109 -0
  135. package/core/lib/elements/basic/image-viewer/image-viewer.scss +8 -0
  136. package/core/lib/elements/basic/input/input.js +81 -0
  137. package/core/lib/elements/basic/input/readme.md +77 -0
  138. package/core/lib/elements/basic/json-input/json-input.js +51 -0
  139. package/core/lib/elements/basic/menu-dashboard/menu-dashboard.js +216 -0
  140. package/core/lib/elements/basic/menu-dashboard/menu-dashboard.scss +28 -0
  141. package/core/lib/elements/basic/modal/modal.js +64 -0
  142. package/core/lib/elements/basic/modal/readme.md +62 -0
  143. package/core/lib/elements/basic/popconfirm/popconfirm.js +18 -0
  144. package/core/lib/elements/basic/popover/popover.js +13 -0
  145. package/core/lib/elements/basic/radio/radio.js +18 -0
  146. package/core/lib/elements/basic/rangepicker/rangepicker.js +51 -0
  147. package/core/lib/elements/basic/rangepicker/rangepicker.scss +18 -0
  148. package/core/lib/elements/basic/rangepicker/readme.md +82 -0
  149. package/core/lib/elements/basic/reference-select/readme.md +19 -0
  150. package/core/lib/elements/basic/reference-select/reference-select.js +337 -0
  151. package/core/lib/elements/basic/row/row.js +16 -0
  152. package/core/lib/elements/basic/select/select.js +47 -0
  153. package/core/lib/elements/basic/select-box/readme.md +53 -0
  154. package/core/lib/elements/basic/select-box/select-box.js +63 -0
  155. package/core/lib/elements/basic/skeleton/readme.md +35 -0
  156. package/core/lib/elements/basic/skeleton/skeleton.js +36 -0
  157. package/core/lib/elements/basic/skeleton/skeleton.scss +53 -0
  158. package/core/lib/elements/basic/space/space.js +13 -0
  159. package/core/lib/elements/basic/switch/readme.md +29 -0
  160. package/core/lib/elements/basic/switch/switch.js +58 -0
  161. package/core/lib/elements/basic/tab/tab.js +15 -0
  162. package/core/lib/elements/basic/table/readme.md +9 -0
  163. package/core/lib/elements/basic/table/table.js +100 -0
  164. package/core/lib/elements/basic/table/table.scss +0 -0
  165. package/core/lib/elements/basic/tag/tag.js +63 -0
  166. package/core/lib/elements/basic/tag/tag.scss +3 -0
  167. package/core/lib/elements/basic/timeline/timeline.js +14 -0
  168. package/core/lib/elements/basic/title/readme.md +20 -0
  169. package/core/lib/elements/basic/title/title.js +38 -0
  170. package/core/lib/elements/basic/title/title.scss +0 -0
  171. package/core/lib/elements/basic/user-search/user-search.js +192 -0
  172. package/core/lib/elements/complex/barcode/barcode.js +27 -0
  173. package/core/lib/elements/complex/bargraph/bar-graph.js +262 -0
  174. package/core/lib/elements/complex/basic-table/basic-table.js +111 -0
  175. package/core/lib/elements/complex/basic-table/basic-table.scss +4 -0
  176. package/core/lib/elements/complex/date-display/date-display.js +37 -0
  177. package/core/lib/elements/complex/error-boundary/error-boundary.js +29 -0
  178. package/core/lib/elements/complex/google-location-input/map-container-library-load.js +93 -0
  179. package/core/lib/elements/complex/google-map/google-map.js +230 -0
  180. package/core/lib/elements/complex/google-map/google-map.scss +13 -0
  181. package/core/lib/elements/complex/line-graph/line-graph.js +108 -0
  182. package/core/lib/elements/complex/location-search-input/location-search-input.js +100 -0
  183. package/core/lib/elements/complex/maps/maps.js +0 -0
  184. package/core/lib/elements/complex/pie-chart/pie-chart.js +203 -0
  185. package/core/lib/elements/complex/qr-code/qr-code.js +27 -0
  186. package/core/lib/elements/complex/qrscanner/qrscanner.js +57 -0
  187. package/core/lib/elements/complex/search-debounce/search-debounce.js +37 -0
  188. package/core/lib/elements/complex/statistic-card/dashboard-statistic-card.js +76 -0
  189. package/core/lib/elements/complex/statistic-card/statistic-card.js +28 -0
  190. package/core/lib/elements/index.js +226 -0
  191. package/core/lib/hooks/device-detect.js +26 -0
  192. package/core/lib/hooks/index.js +19 -0
  193. package/core/lib/hooks/use-location.js +33 -0
  194. package/core/lib/hooks/use-window-size.js +34 -0
  195. package/core/lib/i18n.js +70 -0
  196. package/core/lib/index.js +106 -0
  197. package/core/lib/introduction.md +74 -0
  198. package/core/lib/js-styleguide.md +4112 -0
  199. package/core/lib/models/actions/actions.js +128 -0
  200. package/core/lib/models/actions/components/action-detail/action-detail.js +190 -0
  201. package/core/lib/models/actions/components/action-detail/action-detail.scss +0 -0
  202. package/core/lib/models/actions/components/custom-actions/custom-actions.js +186 -0
  203. package/core/lib/models/actions/components/custom-actions/custom-actions.scss +0 -0
  204. package/core/lib/models/attachments/attachments.js +231 -0
  205. package/core/lib/models/base-loader.js +99 -0
  206. package/core/lib/models/base.js +716 -0
  207. package/core/lib/models/branches/branches.js +125 -0
  208. package/core/lib/models/checklists/checklists.js +115 -0
  209. package/core/lib/models/columns/columns.js +169 -0
  210. package/core/lib/models/columns/components/columns-add/columns-add.js +172 -0
  211. package/core/lib/models/columns/components/columns-add/columns-add.scss +0 -0
  212. package/core/lib/models/comments/comments.js +213 -0
  213. package/core/lib/models/departments/departments.js +107 -0
  214. package/core/lib/models/financial-years/financial_years.js +127 -0
  215. package/core/lib/models/forms/components/form-creator/form-creator.js +624 -0
  216. package/core/lib/models/forms/components/form-creator/form-creator.scss +30 -0
  217. package/core/lib/models/forms/components/form-detail/form-detail.js +224 -0
  218. package/core/lib/models/forms/components/form-detail/form-detail.scss +0 -0
  219. package/core/lib/models/forms/forms.js +122 -0
  220. package/core/lib/models/index.js +203 -0
  221. package/core/lib/models/invoice-numbers/invoice_numbers.js +204 -0
  222. package/core/lib/models/lookup-types/components/lookup-detail/lookup-detail.js +145 -0
  223. package/core/lib/models/lookup-types/components/lookup-detail/lookup-detail.scss +0 -0
  224. package/core/lib/models/lookup-types/lookup-types.js +113 -0
  225. package/core/lib/models/lookup-values/components/lookup-values-add/lookup-values-add.js +126 -0
  226. package/core/lib/models/lookup-values/components/lookup-values-add/lookup-values-add.scss +0 -0
  227. package/core/lib/models/lookup-values/lookup-values.js +107 -0
  228. package/core/lib/models/menu-roles/menu-roles.js +127 -0
  229. package/core/lib/models/menus/components/menu-add/menu-add.js +228 -0
  230. package/core/lib/models/menus/components/menu-add/menu-add.scss +0 -0
  231. package/core/lib/models/menus/components/menu-detail/menu-detail.js +170 -0
  232. package/core/lib/models/menus/components/menu-detail/menu-detail.scss +0 -0
  233. package/core/lib/models/menus/components/menu-list/menu-list.js +593 -0
  234. package/core/lib/models/menus/components/menu-list/menu-list.scss +6 -0
  235. package/core/lib/models/menus/components/menu-roles-add/menu-roles-add.js +183 -0
  236. package/core/lib/models/menus/components/menu-roles-add/menu-roles-add.scss +0 -0
  237. package/core/lib/models/menus/menus.js +499 -0
  238. package/core/lib/models/models/components/model-detail/model-detail.js +137 -0
  239. package/core/lib/models/models/components/model-detail/model-detail.scss +0 -0
  240. package/core/lib/models/models/components/models.js +128 -0
  241. package/core/lib/models/modules/modules.js +204 -0
  242. package/core/lib/models/outbox/outbox.js +73 -0
  243. package/core/lib/models/pages/pages.js +107 -0
  244. package/core/lib/models/permissions/permissions.js +71 -0
  245. package/core/lib/models/process/components/process-add/process-add.js +181 -0
  246. package/core/lib/models/process/components/process-add/process-add.scss +0 -0
  247. package/core/lib/models/process/components/process-dashboard/process-dashboard.js +602 -0
  248. package/core/lib/models/process/components/process-dashboard/process-dashboard.scss +62 -0
  249. package/core/lib/models/process/components/process-detail/process-detail.js +140 -0
  250. package/core/lib/models/process/components/process-detail/process-detail.scss +0 -0
  251. package/core/lib/models/process/components/process-timeline/process-timeline.js +140 -0
  252. package/core/lib/models/process/components/task-detail/task-detail.js +240 -0
  253. package/core/lib/models/process/components/task-detail/task-detail.scss +27 -0
  254. package/core/lib/models/process/components/task-form/task-form.js +529 -0
  255. package/core/lib/models/process/components/task-form/task-form.scss +7 -0
  256. package/core/lib/models/process/components/task-list/task-list.js +221 -0
  257. package/core/lib/models/process/components/task-list/task-list.scss +14 -0
  258. package/core/lib/models/process/components/task-overview/task-overview.js +300 -0
  259. package/core/lib/models/process/components/task-overview/task-overview.scss +0 -0
  260. package/core/lib/models/process/components/task-overview-legacy/task-overview-legacy.js +192 -0
  261. package/core/lib/models/process/components/task-overview-legacy/task-overview.scss +0 -0
  262. package/core/lib/models/process/components/task-routes/task-routes.js +45 -0
  263. package/core/lib/models/process/components/task-status/task-status.js +176 -0
  264. package/core/lib/models/process/components/task-status/task-status.scss +11 -0
  265. package/core/lib/models/process/process.js +781 -0
  266. package/core/lib/models/process-transactions/process-transactions.js +124 -0
  267. package/core/lib/models/roles/roles.js +106 -0
  268. package/core/lib/models/scripts/scripts.js +111 -0
  269. package/core/lib/models/step-transactions/step-transcations.js +148 -0
  270. package/core/lib/models/steps/components/step-add/step-add.js +261 -0
  271. package/core/lib/models/steps/components/step-add/step-add.scss +0 -0
  272. package/core/lib/models/steps/components/step-detail/step-detail.js +157 -0
  273. package/core/lib/models/steps/components/step-detail/step-detail.scss +0 -0
  274. package/core/lib/models/steps/steps.js +357 -0
  275. package/core/lib/models/user-preferences/user-preferences.js +83 -0
  276. package/core/lib/models/users/components/user-add/user-add.js +226 -0
  277. package/core/lib/models/users/components/user-add/user-add.scss +0 -0
  278. package/core/lib/models/users/users.js +120 -0
  279. package/core/lib/modules/business/launch-page/launch-page.js +29 -0
  280. package/core/lib/modules/business/launch-page/launch-page.scss +6 -0
  281. package/core/lib/modules/business/slots/slots.js +231 -0
  282. package/core/lib/modules/business/slots/slots.scss +108 -0
  283. package/core/lib/modules/forms/components/field-customizer/field-customizer.js +139 -0
  284. package/core/lib/modules/forms/components/field-customizer/field-customizer.scss +0 -0
  285. package/core/lib/modules/forms/components/field-selector/field-selector.js +157 -0
  286. package/core/lib/modules/forms/components/field-selector/field-selector.scss +25 -0
  287. package/core/lib/modules/forms/components/form-display/form-display.js +203 -0
  288. package/core/lib/modules/forms/components/form-display/form-display.scss +9 -0
  289. package/core/lib/modules/forms/components/tab-customizer/tab-customizer.js +125 -0
  290. package/core/lib/modules/forms/components/tab-customizer/tab-customizer.scss +0 -0
  291. package/core/lib/modules/generic/generic-add/generic-add.js +213 -0
  292. package/core/lib/modules/generic/generic-add/generic-add.scss +0 -0
  293. package/core/lib/modules/generic/generic-detail/generic-detail.js +199 -0
  294. package/core/lib/modules/generic/generic-detail/generic-detail.scss +0 -0
  295. package/core/lib/modules/generic/generic-edit/generic-edit.js +120 -0
  296. package/core/lib/modules/generic/generic-edit/generic-edit.scss +0 -0
  297. package/core/lib/modules/generic/generic-list/ExportReactCSV.js +62 -0
  298. package/core/lib/modules/generic/generic-list/generic-list.js +705 -0
  299. package/core/lib/modules/generic/generic-list/generic-list.scss +34 -0
  300. package/core/lib/modules/generic/generic-upload/generic-upload.js +484 -0
  301. package/core/lib/modules/generic/generic-upload/generic-upload.scss +0 -0
  302. package/core/lib/modules/generic/table-settings/table-settings.js +226 -0
  303. package/core/lib/modules/generic/table-settings/table-settings.scss +37 -0
  304. package/core/lib/modules/index.js +52 -0
  305. package/core/lib/modules/modules-routes/module-routes.js +35 -0
  306. package/core/lib/modules/modules-routes/module-routes.scss +0 -0
  307. package/core/lib/pages/change-password/change-password.js +211 -0
  308. package/core/lib/pages/change-password/change-password.scss +76 -0
  309. package/core/lib/pages/homepage/homepage.js +53 -0
  310. package/core/lib/pages/index.js +20 -0
  311. package/core/lib/pages/login/login.js +617 -0
  312. package/core/lib/pages/login/login.scss +346 -0
  313. package/core/lib/pages/manage-users/manage-users.js +429 -0
  314. package/core/lib/pages/manage-users/manage-users.scss +26 -0
  315. package/core/lib/pages/profile/profile.js +247 -0
  316. package/core/lib/pages/profile/profile.scss +107 -0
  317. package/core/lib/pages/profile/theme-config.js +18 -0
  318. package/core/lib/pages/profile/themes-backup.json +311 -0
  319. package/core/lib/pages/profile/themes.json +254 -0
  320. package/core/lib/pages/register/register.js +177 -0
  321. package/core/lib/pages/register/register.scss +128 -0
  322. package/core/lib/react-styleguide.md +757 -0
  323. package/core/lib/utils/api/api.utils.js +188 -0
  324. package/core/lib/utils/api/readme.md +426 -0
  325. package/core/lib/utils/async.js +36 -0
  326. package/core/lib/utils/common/common.utils.js +123 -0
  327. package/core/lib/utils/common/readme.md +30 -0
  328. package/core/lib/utils/date/date.utils.js +295 -0
  329. package/core/lib/utils/date/readme.md +2 -0
  330. package/core/lib/utils/firebase.support.utils.js +99 -0
  331. package/core/lib/utils/firebase.utils.js +808 -0
  332. package/core/lib/utils/form/Form.md +0 -0
  333. package/core/lib/utils/form/form.utils.js +256 -0
  334. package/core/lib/utils/generic/generic.utils.js +69 -0
  335. package/core/lib/utils/http/auth.helper.js +95 -0
  336. package/core/lib/utils/http/http.utils.js +157 -0
  337. package/core/lib/utils/http/readme.md +14 -0
  338. package/core/lib/utils/index.js +46 -0
  339. package/core/lib/utils/location/location.utils.js +137 -0
  340. package/core/lib/utils/location/readme.md +18 -0
  341. package/core/lib/utils/modal.utils.js +16 -0
  342. package/core/lib/utils/notification.utils.js +35 -0
  343. package/core/lib/utils/pwa/pwa.utils.js +88 -0
  344. package/core/lib/utils/script.utils.js +235 -0
  345. package/core/lib/utils/setting.utils.js +69 -0
  346. package/core/lib/utils/upload.utils.js +30 -0
  347. package/core/models/Preference/Preferences.js +46 -0
  348. package/core/models/base/base.js +399 -0
  349. package/core/models/base-clone-loader.js +107 -0
  350. package/core/models/base-clone.js +187 -0
  351. package/core/models/base-loader.js +97 -0
  352. package/core/models/core-scripts/core-scripts.js +150 -0
  353. package/core/models/dashboard/dashboard.js +187 -0
  354. package/core/models/detail-loader.js +88 -0
  355. package/core/models/groups.js +82 -0
  356. package/core/models/index.js +94 -0
  357. package/core/models/lookup-types/components/lookup-detail/lookup-detail.js +129 -0
  358. package/core/models/lookup-types/lookup-types.js +96 -0
  359. package/core/models/lookup-values/components/lookup-values-modal/lookup-values-modal.js +95 -0
  360. package/core/models/lookup-values/components/lookup-values-modal/lookup-values-modal.scss +0 -0
  361. package/core/models/lookup-values/lookup-values.js +92 -0
  362. package/core/models/menu-roles/components/menu-roles-add/menu-roles-add.js +153 -0
  363. package/core/models/menu-roles/components/menu-roles-add/menu-roles-add.scss +0 -0
  364. package/core/models/menu-roles/menu-roles.js +158 -0
  365. package/core/models/menus/components/menu-add/menu-add.js +325 -0
  366. package/core/models/menus/components/menu-add/menu-add.scss +31 -0
  367. package/core/models/menus/components/menu-detail/menu-detail.js +263 -0
  368. package/core/models/menus/components/menu-list/menu-list.js +392 -0
  369. package/core/models/menus/components/menu-lists/menu-lists.js +429 -0
  370. package/core/models/menus/components/menu-lists/menu-lists.scss +41 -0
  371. package/core/models/menus/menus.js +291 -0
  372. package/core/models/model-columns.js +121 -0
  373. package/core/models/models/components/model-detail/model-add.js +120 -0
  374. package/core/models/models/components/model-detail/model-detail.js +133 -0
  375. package/core/models/models/components/model-detail/model-detail.scss +0 -0
  376. package/core/models/models/models.js +154 -0
  377. package/core/models/pages/components/page-add/page-add.js +163 -0
  378. package/core/models/pages/components/page-add/page-add.scss +31 -0
  379. package/core/models/pages/components/page-details/page-details.js +210 -0
  380. package/core/models/pages/components/page-list/page-list.js +248 -0
  381. package/core/models/pages/pages.js +142 -0
  382. package/core/models/pages/pages.scss +0 -0
  383. package/core/models/pages.js +142 -0
  384. package/core/models/roles/components/role-add/role-add.js +248 -0
  385. package/core/models/roles/components/role-list/role-list.js +408 -0
  386. package/core/models/roles/roles.js +188 -0
  387. package/core/models/user-roles/components/user-roles-add/user-roles-add.js +149 -0
  388. package/core/models/user-roles/components/user-roles-add/user-roles-add.scss +0 -0
  389. package/core/models/user-roles/user-roles.js +99 -0
  390. package/core/models/users/components/user-add/user-add.js +458 -0
  391. package/core/models/users/components/user-detail/user-detail.js +236 -0
  392. package/core/models/users/components/user-detail/user-detail.scss +0 -0
  393. package/core/models/users/components/user-list/user-list.js +397 -0
  394. package/core/models/users/users.js +185 -0
  395. package/core/modules/Informations/change-info/change-info.js +618 -0
  396. package/core/modules/Informations/change-info/change-info.scss +135 -0
  397. package/core/modules/dashboard/components/dashboard-card/animations.js +65 -0
  398. package/core/modules/dashboard/components/dashboard-card/dashboard-card.js +197 -0
  399. package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.js +430 -0
  400. package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.scss +60 -0
  401. package/core/modules/dashboard/components/pop-query-dashboard/pop-query-dashboard.js +66 -0
  402. package/core/modules/generic/components/generic-add/generic-add.js +121 -0
  403. package/core/modules/generic/components/generic-add/generic-add.scss +13 -0
  404. package/core/modules/generic/components/generic-add-modal/generic-add-modal.js +125 -0
  405. package/core/modules/generic/components/generic-add-modal/generic-add-modal.scss +13 -0
  406. package/core/modules/generic/components/generic-detail/generic-detail.js +184 -0
  407. package/core/modules/generic/components/generic-detail/generic-detail.scss +25 -0
  408. package/core/modules/generic/components/generic-edit/generic-edit.js +123 -0
  409. package/core/modules/generic/components/generic-edit/generic-edit.scss +0 -0
  410. package/core/modules/generic/components/generic-list/generic-list.js +335 -0
  411. package/core/modules/generic/components/generic-list/generic-list.scss +35 -0
  412. package/core/modules/index.js +54 -0
  413. package/core/modules/module-routes/module-routes.js +37 -0
  414. package/core/modules/module-routes/module-routes.scss +0 -0
  415. package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +1101 -0
  416. package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.scss +171 -0
  417. package/core/pages/homepage-api/homepage-api.js +106 -0
  418. package/core/pages/homepage-api/homepage-api.scss +234 -0
  419. package/core/pages/homepage-api/menu-dashboard.js +169 -0
  420. package/core/pages/homepage-api/menu-dashboard.scss +12 -0
  421. package/core/translation.json +54 -0
  422. package/core/translations.json +20 -0
  423. package/core/utils/script.utils.js +130 -0
  424. package/core/utils/settings.utils.js +26 -0
  425. package/eslint.config.mjs +79 -0
  426. package/index.js +36 -0
  427. package/package.json +118 -0
  428. package/tsconfig.json +27 -0
  429. package/webpack.config.js +174 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @file QrScanner
3
+ * @description
4
+ * This component handles real-time QR code scanning using the device camera.
5
+ * It uses the `html5-qrcode` library to initialize the camera and process QR code data.
6
+ * When a valid QR code is detected, the scanner stops automatically,
7
+ * and callback functions are invoked to handle the scanned result and close the scanner.
8
+ */
9
+
10
+ import React, { useEffect, useRef } from 'react';
11
+ import { Html5Qrcode } from 'html5-qrcode';
12
+
13
+ /**
14
+ * QrScanner Component
15
+ *
16
+ * @component
17
+ * @param {Function} onScanSuccess - Callback function to handle the scanned QR code value.
18
+ * @param {Function} onClose - Callback function triggered when the scanner is stopped (can be used for cleanup or redirection).
19
+ *
20
+ * @returns A div element where the camera stream and QR scanning UI will appear.
21
+ */
22
+
23
+ const QrScanner = ({ onScanSuccess, onClose }) => {
24
+ const scannerRef = useRef(null);
25
+ const isStopped = useRef(false);
26
+
27
+ useEffect(() => {
28
+ const scanner = new Html5Qrcode('qr-scanner-region');
29
+ scannerRef.current = scanner;
30
+
31
+ scanner
32
+ .start({ facingMode: 'environment' }, { fps: 10, qrbox: 250 }, async (decodedText) => {
33
+ if (!isStopped.current) {
34
+ isStopped.current = true;
35
+ await scanner.stop(); // Ensure it's stopped only once
36
+ onScanSuccess(decodedText);
37
+ onClose(); // Let parent control redirection
38
+ }
39
+ })
40
+ .catch((err) => {
41
+ console.error('QR Scan Error:', err);
42
+ });
43
+
44
+ return () => {
45
+ if (!isStopped.current) {
46
+ isStopped.current = true;
47
+ scanner.stop().catch((e) => {
48
+ // console.warn("Stop error (likely already stopped):", e.message);
49
+ });
50
+ }
51
+ };
52
+ }, [onScanSuccess, onClose]);
53
+
54
+ return <div id="qr-scanner-region" style={{ width: '100%', height: 300 }} />;
55
+ };
56
+
57
+ export default QrScanner;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @author Hasna
3
+ * Component to debounce api without debounce function
4
+ */
5
+ import React, { useState, useEffect } from 'react'
6
+
7
+ import { Input } from 'antd'
8
+
9
+ const { Search } = Input
10
+
11
+ export default function SearchDebounce({ value, onChange }) {
12
+ // To store query
13
+ const [query, setQuery] = useState(value)
14
+
15
+ /**
16
+ * To avoid repeated call of Api, function will be triggered whenever query changes
17
+ */
18
+ useEffect(() => {
19
+ const getData = setTimeout(() => {
20
+ // Api that has to be called at repeated intervals
21
+ onChange(query)
22
+ }, 900)
23
+
24
+ return () => clearTimeout(getData)
25
+ }, [query])
26
+
27
+ return (
28
+ // Component to search query
29
+ <Search
30
+ placeholder="Enter Search Value"
31
+ value={query}
32
+ onChange={(e) => {
33
+ setQuery(e.target.value)
34
+ }}
35
+ />
36
+ )
37
+ }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * DashboardStatisticCard
3
+ * Renders a title and a list of key–value stats.
4
+ * Values are formatted as currency using formatMoneyGlobal().
5
+ */
6
+ export default function DashboardStatisticCard({ result, title, ...props }) {
7
+ if (!result) return null;
8
+
9
+ // Extract stat labels
10
+ const keys = Object.keys(result);
11
+
12
+ return (
13
+ <div style={styles.container}>
14
+ {title && <span style={styles.title}>{title}</span>}
15
+
16
+ {keys.map((key,index) => (
17
+ <div
18
+ key={key}
19
+ style={{
20
+ ...styles.row,
21
+ borderBottom: index === keys.length - 1 ? 'none' : '1px solid #f0f0f0',
22
+ }}
23
+ >
24
+ <span style={styles.label}>{key}</span>
25
+ <span style={styles.value}>{formatMoneyGlobal(result[key])}</span>
26
+ </div>
27
+ ))}
28
+ </div>
29
+ );
30
+ }
31
+
32
+ /**
33
+ * formatMoneyGlobal
34
+ * Converts any numeric value to "1,234.56" format.
35
+ * Non-numeric values are returned unchanged.
36
+ */
37
+ export const formatMoneyGlobal = (value) => {
38
+ if (value == null || value === '') return '0.00';
39
+
40
+ const num = Number(value);
41
+ if (isNaN(num)) return value;
42
+
43
+ return num.toLocaleString('en-US', {
44
+ minimumFractionDigits: 2,
45
+ maximumFractionDigits: 2,
46
+ });
47
+ };
48
+
49
+ // Inline styles
50
+ const styles = {
51
+ container: {
52
+ display: 'flex',
53
+ flexDirection: 'column',
54
+ gap: '10px',
55
+ cursor: 'pointer',
56
+ width: '100%',
57
+ padding: '1px',
58
+ },
59
+ title: {
60
+ fontSize: '15px',
61
+ fontWeight: 600,
62
+ marginBottom: '4px',
63
+ },
64
+ row: {
65
+ display: 'flex',
66
+ justifyContent: 'space-between',
67
+ paddingBottom: '4px',
68
+ borderBottom: '1px solid #f0f0f0',
69
+ },
70
+ label: {
71
+ fontSize: '14px',
72
+ },
73
+ value: {
74
+ fontSize: '15px',
75
+ },
76
+ };
@@ -0,0 +1,28 @@
1
+
2
+
3
+
4
+ import React from "react";
5
+
6
+ import { Statistic } from "antd";
7
+
8
+
9
+
10
+ /**
11
+ * Basic Tabular
12
+ *
13
+ * @param {*} param0
14
+ * @returns
15
+ */
16
+ export default function StatisticCard({ result, ...props }) {
17
+ return (
18
+ <>
19
+ {Object.keys(result).map((key) => {
20
+ return (
21
+ <>
22
+ <Statistic title={key} value={result[key]} {...props} />
23
+ </>
24
+ );
25
+ })}
26
+ </>
27
+ );
28
+ }
@@ -0,0 +1,226 @@
1
+ /**
2
+ *
3
+ * All the basic elements of the core library
4
+ *
5
+ *
6
+ * We are creating wrappers for all existing components so that
7
+ * we can build a design system .
8
+ *
9
+ *
10
+ */
11
+
12
+ // Typography elements
13
+
14
+ import Title from './basic/title/title';
15
+
16
+ // Typography elements Ends
17
+
18
+ // Loaders
19
+
20
+ import Skeleton from './basic/skeleton/skeleton';
21
+
22
+ // Loaders Ends
23
+
24
+ // Buttons
25
+
26
+ // Buttons Ends
27
+
28
+ // Table
29
+
30
+ import BasicTable from './complex/basic-table/basic-table';
31
+
32
+ import Table from './basic/table/table';
33
+
34
+ import Modal from './basic/modal/modal';
35
+
36
+ import Select from './basic/select/select';
37
+
38
+ import Tag from './basic/tag/tag';
39
+
40
+ // Table Ends
41
+
42
+ // Card
43
+
44
+ import Card from './basic/card/card';
45
+
46
+ // Card Ends
47
+
48
+ // Image Starts
49
+ import Image from './basic/image/image';
50
+
51
+ import ImageWrapper from '../components/image-wrapper/image-wrapper';
52
+
53
+ // import { PdfViewer } from '../components';
54
+
55
+ // Image Ends
56
+
57
+ // Modal
58
+
59
+ // Modal Ends
60
+
61
+ // Form Elements
62
+
63
+ import Form from './basic/form/form';
64
+
65
+ import InputComponent from './basic/input/input';
66
+
67
+ import FileUpload from '../components/file-upload/file-upload';
68
+
69
+ import CountryPhoneInput from './basic/country-phone-input/country-phone-input';
70
+
71
+ // Select Box
72
+
73
+ import SelectBox from './basic/select-box/select-box';
74
+
75
+ import ReferenceSelect from './basic/reference-select/reference-select';
76
+
77
+ import DatePicker from './basic/datepicker/datepicker';
78
+
79
+ import DraggableWrapper from './basic/dragabble-wrapper/draggable-wrapper';
80
+ // import SelectBox from "./basic/select-box/select-box";
81
+
82
+ // import ReferenceSelect from "./basic/reference-select/reference-select";
83
+
84
+ // Select Box Ends
85
+
86
+ import Switch from './basic/switch/switch';
87
+
88
+ import Button from './basic/button/button';
89
+
90
+ import RangePicker from './basic/rangepicker/rangepicker';
91
+
92
+ import Checkbox from './basic/checkbox/checkbox';
93
+
94
+ import JSONInput from './basic/json-input/json-input';
95
+
96
+ // Form Elements Ends
97
+
98
+ // Graph Elements
99
+
100
+ import PieChart from './complex/pie-chart/pie-chart';
101
+
102
+ import LineGraph from './complex/line-graph/line-graph';
103
+
104
+ import BarGraph from './complex/bargraph/bar-graph';
105
+
106
+ import StatisticCard from './complex/statistic-card/statistic-card';
107
+
108
+ // Graph Elements Ends
109
+
110
+ // Maps
111
+
112
+ import GoogleMap from './complex/google-map/google-map';
113
+
114
+ // import MapContainer from './complex/google-location-input/map-container-library-load'
115
+
116
+ import LocationSearchInput from './complex/location-search-input/location-search-input';
117
+
118
+ // Maps Ends
119
+
120
+ // Interfaces
121
+
122
+ import CopyToClipBoard from './basic/copy-to-clipboard/copy-to-clipboard';
123
+
124
+ import QRcode from './complex/qr-code/qr-code';
125
+
126
+ import Barcode from './complex/barcode/barcode';
127
+
128
+
129
+ import QrScanner from './complex/qrscanner/qrscanner';
130
+ import Popconfirm from './basic/popconfirm/popconfirm';
131
+
132
+ // Interfaces Ends
133
+
134
+ //import GoogleApiWrapper from 'google-maps-react';
135
+ // import ImageViewer from './basic/image-viewer/image-viewer';
136
+ // import ScriptInput from '../components/script-input/script-input';
137
+ // import PopQueryDashboard from './complex/pop-query-dashboard';
138
+
139
+ import UserSearch from './basic/user-search/user-search';
140
+
141
+ import Radio from './basic/radio/radio';
142
+
143
+ import Popover from './basic/popover/popover';
144
+
145
+ import Tabs from './basic/tab/tab';
146
+
147
+ import Empty from './basic/empty/empty';
148
+
149
+ import Space from './basic/space/space';
150
+
151
+ import Row from './basic/row/row';
152
+
153
+ import Col from './basic/col/col';
154
+
155
+ import TimeLine from './basic/timeline/timeline';
156
+
157
+ import MenuDashBoardComponent from './basic/menu-dashboard/menu-dashboard';
158
+
159
+ // import message from './basic/message/message'
160
+ // import UserSearch from "./basic/user-search/user-search";
161
+
162
+ export {
163
+ // Typography Elements
164
+ Title,
165
+ // Typography Elements Ends
166
+ // Loaders
167
+ Skeleton,
168
+ TimeLine,
169
+ Row,
170
+ Col,
171
+ Tabs,
172
+ Empty,
173
+ Space,
174
+ // message,
175
+
176
+ // Loaders Ends
177
+
178
+ // Form Elements
179
+ Form,
180
+ DatePicker,
181
+ DraggableWrapper,
182
+ Tag,
183
+ Popconfirm,
184
+ Popover,
185
+
186
+ // Form Elements Ends
187
+ Select,
188
+ SelectBox,
189
+ ReferenceSelect,
190
+ Switch,
191
+ Modal,
192
+ Button,
193
+ Radio,
194
+ Card,
195
+ Table,
196
+ QRcode,
197
+ QrScanner,
198
+ Barcode,
199
+ RangePicker,
200
+ JSONInput,
201
+ BasicTable,
202
+ LineGraph,
203
+ BarGraph,
204
+ StatisticCard,
205
+ // SelectBox,
206
+ // PopQueryDashboard,
207
+ CopyToClipBoard,
208
+ LocationSearchInput,
209
+ //GoogleApiWrapper,
210
+ // MapContainer,
211
+ PieChart,
212
+ GoogleMap,
213
+ InputComponent,
214
+ CountryPhoneInput,
215
+ // PdfViewer,
216
+
217
+ // ImageViewer
218
+ Image,
219
+ FileUpload,
220
+ ImageWrapper,
221
+ UserSearch,
222
+ Checkbox,
223
+ MenuDashBoardComponent,
224
+
225
+ // ScriptInput
226
+ };
@@ -0,0 +1,26 @@
1
+ // utils/useDeviceDetect.js
2
+ import React, { useEffect, useState } from "react";
3
+
4
+ export default function useDeviceDetect() {
5
+ const [isMobile, setMobile] = useState(false);
6
+
7
+ useEffect(() => {
8
+
9
+ // const userAgent =
10
+ // typeof window.navigator === "undefined" ? "" : navigator.userAgent;
11
+
12
+ // const mobile = Boolean(
13
+ // userAgent.match(
14
+ // /Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i
15
+ // )
16
+ // );
17
+
18
+ let mobile = ((window.innerWidth <= 800))
19
+ // || (window.innerHeight <= 700))
20
+
21
+ setMobile(mobile);
22
+
23
+ }, []);
24
+
25
+ return { isMobile };
26
+ }
@@ -0,0 +1,19 @@
1
+
2
+
3
+
4
+ import useDeviceDetect from './device-detect';
5
+
6
+ import useWindowSize from './use-window-size';
7
+
8
+ import useFormUtils from './../utils/form/form.utils';
9
+ import useLocation from './use-location';
10
+
11
+
12
+ export {
13
+ useDeviceDetect,
14
+ useWindowSize,
15
+
16
+
17
+ useFormUtils,
18
+ useLocation
19
+ }
@@ -0,0 +1,33 @@
1
+
2
+ import React, { useEffect } from 'react';
3
+
4
+
5
+ /**
6
+ * Hook will listen to location change and trigger the listener
7
+ *
8
+ * @returns
9
+ */
10
+ export default function useLocation() {
11
+
12
+ const [path, setPath] = React.useState(window.location.pathname);
13
+
14
+ const listenToPopstate = () => {
15
+
16
+ const winPath = window.location.pathname;
17
+
18
+ setPath(winPath);
19
+ };
20
+
21
+ useEffect(() => {
22
+
23
+ window.addEventListener("popstate", listenToPopstate);
24
+
25
+ return () => {
26
+ window.removeEventListener("popstate", listenToPopstate);
27
+ };
28
+
29
+ }, []);
30
+
31
+ return path;
32
+
33
+ };
@@ -0,0 +1,34 @@
1
+
2
+
3
+ import React, { useState, useEffect, useRef } from 'react';
4
+
5
+
6
+ // Hook
7
+ export default function useWindowSize() {
8
+
9
+ // Initialize state with undefined width/height so server and client renders match
10
+ // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/
11
+ const [windowSize, setWindowSize] = useState({
12
+ width: undefined,
13
+ height: undefined,
14
+ });
15
+
16
+ useEffect(() => {
17
+ // Handler to call on window resize
18
+ function handleResize() {
19
+ // Set window width/height to state
20
+ setWindowSize({
21
+ width: window.innerWidth,
22
+ height: window.innerHeight,
23
+ });
24
+ }
25
+ // Add event listener
26
+ window.addEventListener("resize", handleResize);
27
+ // Call handler right away so state gets updated with initial window size
28
+ handleResize();
29
+ // Remove event listener on cleanup
30
+ return () => window.removeEventListener("resize", handleResize);
31
+ }, []); // Empty array ensures that effect is only run on mount
32
+ return windowSize;
33
+ }
34
+
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Component to initialize i18n
3
+ */
4
+
5
+ import i18n from 'i18next';
6
+ import { initReactI18next } from 'react-i18next';
7
+ import LanguageDetector from 'i18next-browser-languagedetector';
8
+
9
+
10
+ i18n
11
+ // detect user language
12
+ // learn more: https://github.com/i18next/i18next-browser-languageDetector
13
+ .use(LanguageDetector)
14
+ // pass the i18n instance to react-i18next.
15
+ .use(initReactI18next)
16
+ // init i18next
17
+ // for all options read: https://www.i18next.com/overview/configuration-options
18
+ .init({
19
+ debug: false,
20
+ useSuspense: true,
21
+ lng: localStorage.selectedLanguage || process.env.REACT_APP_LANGUAGE || 'en',
22
+ fallbackLng: 'en',
23
+ interpolation: {
24
+ escapeValue: false, // not needed for react as it escapes by default
25
+ },
26
+ resources: {
27
+ en: {
28
+ translation: {
29
+ description: {
30
+ part1: 'Edit <1>src/App.js</1> and save to reload.',
31
+ part2: 'Learn React',
32
+ part3: "Download",
33
+ part4: "New Appointment"
34
+ }
35
+ }
36
+ },
37
+ hi: {
38
+ translation: {
39
+ description: {
40
+ part1: 'Ändere <1>src/App.js</1> und speichere um neu zu laden.',
41
+ part2: 'Lerne React',
42
+ part3: "डाउनलोड करना",
43
+ part4: "नव नियुक्ति"
44
+ }
45
+ }
46
+ },
47
+ ja: {
48
+ translation: {
49
+ description: {
50
+ part1: 'ثثثثثثثثثثثث',
51
+ part2: 'ثثثثثثثثثثثث',
52
+ part3: "ダウンロード",
53
+ part4: "新しい予定"
54
+ }
55
+ }
56
+ },
57
+ ma: {
58
+ translation: {
59
+ description: {
60
+ part1: 'afspraken',
61
+ part2: 'ثثثثثثثثثثثث',
62
+ part3: "татаж авах",
63
+ part4: "Шинэ уулзалт"
64
+ }
65
+ }
66
+ }
67
+ }
68
+ });
69
+
70
+ export default i18n;