@portnet/ui 5.0.32 → 6.0.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 (1121) hide show
  1. package/CHANGELOG.md +524 -0
  2. package/README.md +101 -38
  3. package/dist/esm/index.js +196 -0
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/esm/v2/__tests__/FieldError.test.js +160 -0
  6. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
  7. package/dist/esm/v2/__tests__/FileCard.test.js +144 -0
  8. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
  9. package/dist/esm/v2/__tests__/MobileRowCard.test.js +333 -0
  10. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
  11. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
  12. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
  13. package/dist/esm/v2/__tests__/apiError.test.js +181 -0
  14. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
  15. package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
  16. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
  17. package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
  18. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
  19. package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
  20. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
  21. package/dist/esm/v2/__tests__/labels-merge.test.js +147 -0
  22. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
  23. package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
  24. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
  25. package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
  26. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
  27. package/dist/esm/v2/components/Accordion.js +230 -0
  28. package/dist/esm/v2/components/Accordion.js.map +1 -0
  29. package/dist/esm/v2/components/ActionStrip.js +146 -0
  30. package/dist/esm/v2/components/ActionStrip.js.map +1 -0
  31. package/dist/esm/v2/components/Banner.js +254 -0
  32. package/dist/esm/v2/components/Banner.js.map +1 -0
  33. package/dist/esm/v2/components/Busy.js +97 -0
  34. package/dist/esm/v2/components/Busy.js.map +1 -0
  35. package/dist/esm/v2/components/Button.js +114 -0
  36. package/dist/esm/v2/components/Button.js.map +1 -0
  37. package/dist/esm/v2/components/CategoryTag.js +81 -0
  38. package/dist/esm/v2/components/CategoryTag.js.map +1 -0
  39. package/dist/esm/v2/components/Checkbox.js +124 -0
  40. package/dist/esm/v2/components/Checkbox.js.map +1 -0
  41. package/dist/esm/v2/components/Chip.js +124 -0
  42. package/dist/esm/v2/components/Chip.js.map +1 -0
  43. package/dist/esm/v2/components/Combobox.js +394 -0
  44. package/dist/esm/v2/components/Combobox.js.map +1 -0
  45. package/dist/esm/v2/components/CommandPalette.js +660 -0
  46. package/dist/esm/v2/components/CommandPalette.js.map +1 -0
  47. package/dist/esm/v2/components/ConfirmDialog.js +144 -0
  48. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
  49. package/dist/esm/v2/components/DatePicker.js +200 -0
  50. package/dist/esm/v2/components/DatePicker.js.map +1 -0
  51. package/dist/esm/v2/components/DateRangePicker.js +289 -0
  52. package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
  53. package/dist/esm/v2/components/DateTimePicker.js +182 -0
  54. package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
  55. package/dist/esm/v2/components/Drawer.js +333 -0
  56. package/dist/esm/v2/components/Drawer.js.map +1 -0
  57. package/dist/esm/v2/components/Dropzone.js +540 -0
  58. package/dist/esm/v2/components/Dropzone.js.map +1 -0
  59. package/dist/esm/v2/components/EmptyState.js +102 -0
  60. package/dist/esm/v2/components/EmptyState.js.map +1 -0
  61. package/dist/esm/v2/components/FavoriteToggle.js +127 -0
  62. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
  63. package/dist/esm/v2/components/Field.js +197 -0
  64. package/dist/esm/v2/components/Field.js.map +1 -0
  65. package/dist/esm/v2/components/FieldError.js +124 -0
  66. package/dist/esm/v2/components/FieldError.js.map +1 -0
  67. package/dist/esm/v2/components/FieldHelp.js +202 -0
  68. package/dist/esm/v2/components/FieldHelp.js.map +1 -0
  69. package/dist/esm/v2/components/FileCard.js +162 -0
  70. package/dist/esm/v2/components/FileCard.js.map +1 -0
  71. package/dist/esm/v2/components/FilterTab.js +138 -0
  72. package/dist/esm/v2/components/FilterTab.js.map +1 -0
  73. package/dist/esm/v2/components/ForbiddenPage.js +74 -0
  74. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
  75. package/dist/esm/v2/components/FormGrid.js +179 -0
  76. package/dist/esm/v2/components/FormGrid.js.map +1 -0
  77. package/dist/esm/v2/components/FormikDisplay.js +118 -0
  78. package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
  79. package/dist/esm/v2/components/Input.js +107 -0
  80. package/dist/esm/v2/components/Input.js.map +1 -0
  81. package/dist/esm/v2/components/KPICard.js +237 -0
  82. package/dist/esm/v2/components/KPICard.js.map +1 -0
  83. package/dist/esm/v2/components/KPIStrip.js +84 -0
  84. package/dist/esm/v2/components/KPIStrip.js.map +1 -0
  85. package/dist/esm/v2/components/KV.js +75 -0
  86. package/dist/esm/v2/components/KV.js.map +1 -0
  87. package/dist/esm/v2/components/KVGrid.js +74 -0
  88. package/dist/esm/v2/components/KVGrid.js.map +1 -0
  89. package/dist/esm/v2/components/Layout.js +284 -0
  90. package/dist/esm/v2/components/Layout.js.map +1 -0
  91. package/dist/esm/v2/components/MobileRowCard.js +314 -0
  92. package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
  93. package/dist/esm/v2/components/Modal.js +276 -0
  94. package/dist/esm/v2/components/Modal.js.map +1 -0
  95. package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
  96. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
  97. package/dist/esm/v2/components/NotFoundPage.js +58 -0
  98. package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
  99. package/dist/esm/v2/components/NumberInput.js +309 -0
  100. package/dist/esm/v2/components/NumberInput.js.map +1 -0
  101. package/dist/esm/v2/components/OverflowMenu.js +184 -0
  102. package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
  103. package/dist/esm/v2/components/PdfViewer.js +122 -0
  104. package/dist/esm/v2/components/PdfViewer.js.map +1 -0
  105. package/dist/esm/v2/components/ProgressBar.js +202 -0
  106. package/dist/esm/v2/components/ProgressBar.js.map +1 -0
  107. package/dist/esm/v2/components/Radio.js +228 -0
  108. package/dist/esm/v2/components/Radio.js.map +1 -0
  109. package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
  110. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
  111. package/dist/esm/v2/components/SectionHeader.js +132 -0
  112. package/dist/esm/v2/components/SectionHeader.js.map +1 -0
  113. package/dist/esm/v2/components/Segmented.js +254 -0
  114. package/dist/esm/v2/components/Segmented.js.map +1 -0
  115. package/dist/esm/v2/components/Select.js +490 -0
  116. package/dist/esm/v2/components/Select.js.map +1 -0
  117. package/dist/esm/v2/components/ServerErrorPage.js +74 -0
  118. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
  119. package/dist/esm/v2/components/Skeleton.js +269 -0
  120. package/dist/esm/v2/components/Skeleton.js.map +1 -0
  121. package/dist/esm/v2/components/SkipLink.js +49 -0
  122. package/dist/esm/v2/components/SkipLink.js.map +1 -0
  123. package/dist/esm/v2/components/Spinner.js +69 -0
  124. package/dist/esm/v2/components/Spinner.js.map +1 -0
  125. package/dist/esm/v2/components/Status.js +64 -0
  126. package/dist/esm/v2/components/Status.js.map +1 -0
  127. package/dist/esm/v2/components/Stepper.js +432 -0
  128. package/dist/esm/v2/components/Stepper.js.map +1 -0
  129. package/dist/esm/v2/components/Surface.js +159 -0
  130. package/dist/esm/v2/components/Surface.js.map +1 -0
  131. package/dist/esm/v2/components/Switch.js +128 -0
  132. package/dist/esm/v2/components/Switch.js.map +1 -0
  133. package/dist/esm/v2/components/Tabs.js +150 -0
  134. package/dist/esm/v2/components/Tabs.js.map +1 -0
  135. package/dist/esm/v2/components/TelInput.js +274 -0
  136. package/dist/esm/v2/components/TelInput.js.map +1 -0
  137. package/dist/esm/v2/components/Textarea.js +72 -0
  138. package/dist/esm/v2/components/Textarea.js.map +1 -0
  139. package/dist/esm/v2/components/TimePicker.js +134 -0
  140. package/dist/esm/v2/components/TimePicker.js.map +1 -0
  141. package/dist/esm/v2/components/Toast.js +376 -0
  142. package/dist/esm/v2/components/Toast.js.map +1 -0
  143. package/dist/esm/v2/components/Tooltip.js +161 -0
  144. package/dist/esm/v2/components/Tooltip.js.map +1 -0
  145. package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
  146. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
  147. package/dist/esm/v2/components/_pickerShared.js +60 -0
  148. package/dist/esm/v2/components/_pickerShared.js.map +1 -0
  149. package/dist/esm/v2/components/index.js +244 -0
  150. package/dist/esm/v2/components/index.js.map +1 -0
  151. package/dist/esm/v2/hooks/index.js +10 -0
  152. package/dist/esm/v2/hooks/index.js.map +1 -0
  153. package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
  154. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
  155. package/dist/esm/v2/hooks/useDensity.js +119 -0
  156. package/dist/esm/v2/hooks/useDensity.js.map +1 -0
  157. package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
  158. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
  159. package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
  160. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
  161. package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
  162. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
  163. package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
  164. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
  165. package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
  166. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
  167. package/dist/esm/v2/hooks/useSortedRows.js +32 -0
  168. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
  169. package/dist/esm/v2/hooks/useTabLoading.js +79 -0
  170. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
  171. package/dist/esm/v2/index.js +121 -0
  172. package/dist/esm/v2/index.js.map +1 -0
  173. package/dist/esm/v2/modalContext.js +108 -0
  174. package/dist/esm/v2/modalContext.js.map +1 -0
  175. package/dist/esm/v2/models/favorite.js +2 -0
  176. package/dist/esm/v2/models/favorite.js.map +1 -0
  177. package/dist/esm/v2/models/index.js +12 -0
  178. package/dist/esm/v2/models/index.js.map +1 -0
  179. package/dist/esm/v2/models/personalization.js +2 -0
  180. package/dist/esm/v2/models/personalization.js.map +1 -0
  181. package/dist/esm/v2/models/referentiel.js +2 -0
  182. package/dist/esm/v2/models/referentiel.js.map +1 -0
  183. package/dist/esm/v2/models/savedFilter.js +2 -0
  184. package/dist/esm/v2/models/savedFilter.js.map +1 -0
  185. package/dist/esm/v2/patterns/ActionBar.js +603 -0
  186. package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
  187. package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
  188. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
  189. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
  190. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
  191. package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
  192. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
  193. package/dist/esm/v2/patterns/DataGrid.js +820 -0
  194. package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
  195. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
  196. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
  197. package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
  198. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
  199. package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
  200. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
  201. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
  202. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
  203. package/dist/esm/v2/patterns/FavoriteColumn.js +164 -0
  204. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
  205. package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
  206. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
  207. package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
  208. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
  209. package/dist/esm/v2/patterns/FormPageShell.js +126 -0
  210. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
  211. package/dist/esm/v2/patterns/FormSection.js +190 -0
  212. package/dist/esm/v2/patterns/FormSection.js.map +1 -0
  213. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
  214. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
  215. package/dist/esm/v2/patterns/FormikCombobox.js +115 -0
  216. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
  217. package/dist/esm/v2/patterns/FormikDatePicker.js +196 -0
  218. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
  219. package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
  220. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
  221. package/dist/esm/v2/patterns/FormikFile.js +148 -0
  222. package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
  223. package/dist/esm/v2/patterns/FormikInput.js +127 -0
  224. package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
  225. package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
  226. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
  227. package/dist/esm/v2/patterns/FormikSelect.js +159 -0
  228. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
  229. package/dist/esm/v2/patterns/FormikTextarea.js +76 -0
  230. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
  231. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +195 -0
  232. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
  233. package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
  234. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
  235. package/dist/esm/v2/patterns/PageContent.js +62 -0
  236. package/dist/esm/v2/patterns/PageContent.js.map +1 -0
  237. package/dist/esm/v2/patterns/ReferentielField.js +615 -0
  238. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
  239. package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
  240. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
  241. package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
  242. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
  243. package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
  244. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
  245. package/dist/esm/v2/patterns/SortableHeader.js +179 -0
  246. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
  247. package/dist/esm/v2/patterns/Tour.js +471 -0
  248. package/dist/esm/v2/patterns/Tour.js.map +1 -0
  249. package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
  250. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
  251. package/dist/esm/v2/patterns/_sort.js +112 -0
  252. package/dist/esm/v2/patterns/_sort.js.map +1 -0
  253. package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
  254. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
  255. package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
  256. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
  257. package/dist/esm/v2/patterns/index.js +95 -0
  258. package/dist/esm/v2/patterns/index.js.map +1 -0
  259. package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
  260. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
  261. package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
  262. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
  263. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
  264. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
  265. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
  266. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
  267. package/dist/esm/v2/personalization/adapters/index.js +11 -0
  268. package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
  269. package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
  270. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
  271. package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
  272. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
  273. package/dist/esm/v2/personalization/capabilities/index.js +17 -0
  274. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
  275. package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
  276. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
  277. package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
  278. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
  279. package/dist/esm/v2/personalization/index.js +46 -0
  280. package/dist/esm/v2/personalization/index.js.map +1 -0
  281. package/dist/esm/v2/personalization/personalizationContext.js +108 -0
  282. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
  283. package/dist/esm/v2/personalization/schema.js +92 -0
  284. package/dist/esm/v2/personalization/schema.js.map +1 -0
  285. package/dist/esm/v2/personalization/types.js +2 -0
  286. package/dist/esm/v2/personalization/types.js.map +1 -0
  287. package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
  288. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
  289. package/dist/esm/v2/referentiel/index.js +15 -0
  290. package/dist/esm/v2/referentiel/index.js.map +1 -0
  291. package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
  292. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
  293. package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
  294. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
  295. package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
  296. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
  297. package/dist/esm/v2/styles/base.css +425 -0
  298. package/dist/esm/v2/styles/css.d.ts +10 -0
  299. package/dist/esm/v2/styles/index.js +12 -0
  300. package/dist/esm/v2/styles/index.js.map +1 -0
  301. package/dist/esm/v2/theme/_brand.js +64 -0
  302. package/dist/esm/v2/theme/_brand.js.map +1 -0
  303. package/dist/esm/v2/theme/_brandSecondary.js +60 -0
  304. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
  305. package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
  306. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
  307. package/dist/esm/v2/theme/cssVariables.js +198 -0
  308. package/dist/esm/v2/theme/cssVariables.js.map +1 -0
  309. package/dist/esm/v2/theme/index.js +32 -0
  310. package/dist/esm/v2/theme/index.js.map +1 -0
  311. package/dist/esm/v2/tokens/breakpoints.js +106 -0
  312. package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
  313. package/dist/esm/v2/tokens/colors.js +219 -0
  314. package/dist/esm/v2/tokens/colors.js.map +1 -0
  315. package/dist/esm/v2/tokens/density.js +98 -0
  316. package/dist/esm/v2/tokens/density.js.map +1 -0
  317. package/dist/esm/v2/tokens/index.js +80 -0
  318. package/dist/esm/v2/tokens/index.js.map +1 -0
  319. package/dist/esm/v2/tokens/motion.js +88 -0
  320. package/dist/esm/v2/tokens/motion.js.map +1 -0
  321. package/dist/esm/v2/tokens/radius.js +22 -0
  322. package/dist/esm/v2/tokens/radius.js.map +1 -0
  323. package/dist/esm/v2/tokens/shadows.js +40 -0
  324. package/dist/esm/v2/tokens/shadows.js.map +1 -0
  325. package/dist/esm/v2/tokens/spacing.js +51 -0
  326. package/dist/esm/v2/tokens/spacing.js.map +1 -0
  327. package/dist/esm/v2/tokens/state.js +41 -0
  328. package/dist/esm/v2/tokens/state.js.map +1 -0
  329. package/dist/esm/v2/tokens/statusPalette.js +66 -0
  330. package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
  331. package/dist/esm/v2/tokens/tokens.json +153 -0
  332. package/dist/esm/v2/tokens/typography.js +149 -0
  333. package/dist/esm/v2/tokens/typography.js.map +1 -0
  334. package/dist/esm/v2/tokens/zIndex.js +44 -0
  335. package/dist/esm/v2/tokens/zIndex.js.map +1 -0
  336. package/dist/esm/v2/types/common.js +2 -0
  337. package/dist/esm/v2/types/common.js.map +1 -0
  338. package/dist/esm/v2/types/datagrid.js +2 -0
  339. package/dist/esm/v2/types/datagrid.js.map +1 -0
  340. package/dist/esm/v2/types/index.js +12 -0
  341. package/dist/esm/v2/types/index.js.map +1 -0
  342. package/dist/esm/v2/utils/apiError.js +281 -0
  343. package/dist/esm/v2/utils/apiError.js.map +1 -0
  344. package/dist/esm/v2/utils/contrast.js +157 -0
  345. package/dist/esm/v2/utils/contrast.js.map +1 -0
  346. package/dist/esm/v2/utils/cx.js +38 -0
  347. package/dist/esm/v2/utils/cx.js.map +1 -0
  348. package/dist/esm/v2/utils/fileDownload.js +226 -0
  349. package/dist/esm/v2/utils/fileDownload.js.map +1 -0
  350. package/dist/esm/v2/utils/fmtMoney.js +78 -0
  351. package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
  352. package/dist/esm/v2/utils/index.js +43 -0
  353. package/dist/esm/v2/utils/index.js.map +1 -0
  354. package/dist/esm/v2/utils/mergeLabels.js +86 -0
  355. package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
  356. package/dist/esm/v2/utils/networkStatus.js +114 -0
  357. package/dist/esm/v2/utils/networkStatus.js.map +1 -0
  358. package/dist/index.d.ts +60 -0
  359. package/dist/index.d.ts.map +1 -0
  360. package/dist/index.js +183 -191
  361. package/dist/index.js.map +1 -0
  362. package/dist/v2/__tests__/FieldError.test.js +164 -0
  363. package/dist/v2/__tests__/FieldError.test.js.map +1 -0
  364. package/dist/v2/__tests__/FileCard.test.js +148 -0
  365. package/dist/v2/__tests__/FileCard.test.js.map +1 -0
  366. package/dist/v2/__tests__/MobileRowCard.test.js +337 -0
  367. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -0
  368. package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
  369. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
  370. package/dist/v2/__tests__/apiError.test.js +182 -0
  371. package/dist/v2/__tests__/apiError.test.js.map +1 -0
  372. package/dist/v2/__tests__/banned-patterns.test.js +272 -0
  373. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -0
  374. package/dist/v2/__tests__/contrast-palette.test.js +225 -0
  375. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -0
  376. package/dist/v2/__tests__/cssVariables.test.js +158 -0
  377. package/dist/v2/__tests__/cssVariables.test.js.map +1 -0
  378. package/dist/v2/__tests__/labels-merge.test.js +153 -0
  379. package/dist/v2/__tests__/labels-merge.test.js.map +1 -0
  380. package/dist/v2/__tests__/locale-fallback.test.js +111 -0
  381. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -0
  382. package/dist/v2/__tests__/useFocusTrap.test.js +517 -0
  383. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -0
  384. package/dist/v2/components/Accordion.d.ts +56 -0
  385. package/dist/v2/components/Accordion.d.ts.map +1 -0
  386. package/dist/v2/components/Accordion.js +238 -0
  387. package/dist/v2/components/Accordion.js.map +1 -0
  388. package/dist/v2/components/ActionStrip.d.ts +67 -0
  389. package/dist/v2/components/ActionStrip.d.ts.map +1 -0
  390. package/dist/v2/components/ActionStrip.js +154 -0
  391. package/dist/v2/components/ActionStrip.js.map +1 -0
  392. package/dist/v2/components/Banner.d.ts +88 -0
  393. package/dist/v2/components/Banner.d.ts.map +1 -0
  394. package/dist/v2/components/Banner.js +264 -0
  395. package/dist/v2/components/Banner.js.map +1 -0
  396. package/dist/v2/components/Busy.d.ts +18 -0
  397. package/dist/v2/components/Busy.d.ts.map +1 -0
  398. package/dist/v2/components/Busy.js +104 -0
  399. package/dist/v2/components/Busy.js.map +1 -0
  400. package/dist/v2/components/Button.d.ts +36 -0
  401. package/dist/v2/components/Button.d.ts.map +1 -0
  402. package/dist/v2/components/Button.js +122 -0
  403. package/dist/v2/components/Button.js.map +1 -0
  404. package/dist/v2/components/CategoryTag.d.ts +45 -0
  405. package/dist/v2/components/CategoryTag.d.ts.map +1 -0
  406. package/dist/v2/components/CategoryTag.js +89 -0
  407. package/dist/v2/components/CategoryTag.js.map +1 -0
  408. package/dist/v2/components/Checkbox.d.ts +59 -0
  409. package/dist/v2/components/Checkbox.d.ts.map +1 -0
  410. package/dist/v2/components/Checkbox.js +134 -0
  411. package/dist/v2/components/Checkbox.js.map +1 -0
  412. package/dist/v2/components/Chip.d.ts +48 -0
  413. package/dist/v2/components/Chip.d.ts.map +1 -0
  414. package/dist/v2/components/Chip.js +132 -0
  415. package/dist/v2/components/Chip.js.map +1 -0
  416. package/dist/v2/components/Combobox.d.ts +134 -0
  417. package/dist/v2/components/Combobox.d.ts.map +1 -0
  418. package/dist/v2/components/Combobox.js +400 -0
  419. package/dist/v2/components/Combobox.js.map +1 -0
  420. package/dist/v2/components/CommandPalette.d.ts +36 -0
  421. package/dist/v2/components/CommandPalette.d.ts.map +1 -0
  422. package/dist/v2/components/CommandPalette.js +668 -0
  423. package/dist/v2/components/CommandPalette.js.map +1 -0
  424. package/dist/v2/components/ConfirmDialog.d.ts +23 -0
  425. package/dist/v2/components/ConfirmDialog.d.ts.map +1 -0
  426. package/dist/v2/components/ConfirmDialog.js +151 -0
  427. package/dist/v2/components/ConfirmDialog.js.map +1 -0
  428. package/dist/v2/components/DatePicker.d.ts +21 -0
  429. package/dist/v2/components/DatePicker.d.ts.map +1 -0
  430. package/dist/v2/components/DatePicker.js +207 -0
  431. package/dist/v2/components/DatePicker.js.map +1 -0
  432. package/dist/v2/components/DateRangePicker.d.ts +81 -0
  433. package/dist/v2/components/DateRangePicker.d.ts.map +1 -0
  434. package/dist/v2/components/DateRangePicker.js +296 -0
  435. package/dist/v2/components/DateRangePicker.js.map +1 -0
  436. package/dist/v2/components/DateTimePicker.d.ts +21 -0
  437. package/dist/v2/components/DateTimePicker.d.ts.map +1 -0
  438. package/dist/v2/components/DateTimePicker.js +189 -0
  439. package/dist/v2/components/DateTimePicker.js.map +1 -0
  440. package/dist/v2/components/Drawer.d.ts +34 -0
  441. package/dist/v2/components/Drawer.d.ts.map +1 -0
  442. package/dist/v2/components/Drawer.js +340 -0
  443. package/dist/v2/components/Drawer.js.map +1 -0
  444. package/dist/v2/components/Dropzone.d.ts +150 -0
  445. package/dist/v2/components/Dropzone.d.ts.map +1 -0
  446. package/dist/v2/components/Dropzone.js +547 -0
  447. package/dist/v2/components/Dropzone.js.map +1 -0
  448. package/dist/v2/components/EmptyState.d.ts +36 -0
  449. package/dist/v2/components/EmptyState.d.ts.map +1 -0
  450. package/dist/v2/components/EmptyState.js +112 -0
  451. package/dist/v2/components/EmptyState.js.map +1 -0
  452. package/dist/v2/components/FavoriteToggle.d.ts +22 -0
  453. package/dist/v2/components/FavoriteToggle.d.ts.map +1 -0
  454. package/dist/v2/components/FavoriteToggle.js +135 -0
  455. package/dist/v2/components/FavoriteToggle.js.map +1 -0
  456. package/dist/v2/components/Field.d.ts +63 -0
  457. package/dist/v2/components/Field.d.ts.map +1 -0
  458. package/dist/v2/components/Field.js +204 -0
  459. package/dist/v2/components/Field.js.map +1 -0
  460. package/dist/v2/components/FieldError.d.ts +78 -0
  461. package/dist/v2/components/FieldError.d.ts.map +1 -0
  462. package/dist/v2/components/FieldError.js +131 -0
  463. package/dist/v2/components/FieldError.js.map +1 -0
  464. package/dist/v2/components/FieldHelp.d.ts +54 -0
  465. package/dist/v2/components/FieldHelp.d.ts.map +1 -0
  466. package/dist/v2/components/FieldHelp.js +209 -0
  467. package/dist/v2/components/FieldHelp.js.map +1 -0
  468. package/dist/v2/components/FileCard.d.ts +75 -0
  469. package/dist/v2/components/FileCard.d.ts.map +1 -0
  470. package/dist/v2/components/FileCard.js +169 -0
  471. package/dist/v2/components/FileCard.js.map +1 -0
  472. package/dist/v2/components/FilterTab.d.ts +35 -0
  473. package/dist/v2/components/FilterTab.d.ts.map +1 -0
  474. package/dist/v2/components/FilterTab.js +145 -0
  475. package/dist/v2/components/FilterTab.js.map +1 -0
  476. package/dist/v2/components/ForbiddenPage.d.ts +40 -0
  477. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -0
  478. package/dist/v2/components/ForbiddenPage.js +81 -0
  479. package/dist/v2/components/ForbiddenPage.js.map +1 -0
  480. package/dist/v2/components/FormGrid.d.ts +81 -0
  481. package/dist/v2/components/FormGrid.d.ts.map +1 -0
  482. package/dist/v2/components/FormGrid.js +187 -0
  483. package/dist/v2/components/FormGrid.js.map +1 -0
  484. package/dist/v2/components/FormikDisplay.d.ts +38 -0
  485. package/dist/v2/components/FormikDisplay.d.ts.map +1 -0
  486. package/dist/v2/components/FormikDisplay.js +125 -0
  487. package/dist/v2/components/FormikDisplay.js.map +1 -0
  488. package/dist/v2/components/Input.d.ts +62 -0
  489. package/dist/v2/components/Input.d.ts.map +1 -0
  490. package/dist/v2/components/Input.js +115 -0
  491. package/dist/v2/components/Input.js.map +1 -0
  492. package/dist/v2/components/KPICard.d.ts +52 -0
  493. package/dist/v2/components/KPICard.d.ts.map +1 -0
  494. package/dist/v2/components/KPICard.js +244 -0
  495. package/dist/v2/components/KPICard.js.map +1 -0
  496. package/dist/v2/components/KPIStrip.d.ts +68 -0
  497. package/dist/v2/components/KPIStrip.d.ts.map +1 -0
  498. package/dist/v2/components/KPIStrip.js +92 -0
  499. package/dist/v2/components/KPIStrip.js.map +1 -0
  500. package/dist/v2/components/KV.d.ts +25 -0
  501. package/dist/v2/components/KV.d.ts.map +1 -0
  502. package/dist/v2/components/KV.js +82 -0
  503. package/dist/v2/components/KV.js.map +1 -0
  504. package/dist/v2/components/KVGrid.d.ts +44 -0
  505. package/dist/v2/components/KVGrid.d.ts.map +1 -0
  506. package/dist/v2/components/KVGrid.js +80 -0
  507. package/dist/v2/components/KVGrid.js.map +1 -0
  508. package/dist/v2/components/Layout.d.ts +78 -0
  509. package/dist/v2/components/Layout.d.ts.map +1 -0
  510. package/dist/v2/components/Layout.js +284 -0
  511. package/dist/v2/components/Layout.js.map +1 -0
  512. package/dist/v2/components/MobileRowCard.d.ts +63 -0
  513. package/dist/v2/components/MobileRowCard.d.ts.map +1 -0
  514. package/dist/v2/components/MobileRowCard.js +321 -0
  515. package/dist/v2/components/MobileRowCard.js.map +1 -0
  516. package/dist/v2/components/Modal.d.ts +21 -0
  517. package/dist/v2/components/Modal.d.ts.map +1 -0
  518. package/dist/v2/components/Modal.js +281 -0
  519. package/dist/v2/components/Modal.js.map +1 -0
  520. package/dist/v2/components/NetworkErrorPage.d.ts +11 -0
  521. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -0
  522. package/dist/v2/components/NetworkErrorPage.js +86 -0
  523. package/dist/v2/components/NetworkErrorPage.js.map +1 -0
  524. package/dist/v2/components/NotFoundPage.d.ts +9 -0
  525. package/dist/v2/components/NotFoundPage.d.ts.map +1 -0
  526. package/dist/v2/components/NotFoundPage.js +66 -0
  527. package/dist/v2/components/NotFoundPage.js.map +1 -0
  528. package/dist/v2/components/NumberInput.d.ts +83 -0
  529. package/dist/v2/components/NumberInput.d.ts.map +1 -0
  530. package/dist/v2/components/NumberInput.js +317 -0
  531. package/dist/v2/components/NumberInput.js.map +1 -0
  532. package/dist/v2/components/OverflowMenu.d.ts +55 -0
  533. package/dist/v2/components/OverflowMenu.d.ts.map +1 -0
  534. package/dist/v2/components/OverflowMenu.js +192 -0
  535. package/dist/v2/components/OverflowMenu.js.map +1 -0
  536. package/dist/v2/components/PdfViewer.d.ts +56 -0
  537. package/dist/v2/components/PdfViewer.d.ts.map +1 -0
  538. package/dist/v2/components/PdfViewer.js +132 -0
  539. package/dist/v2/components/PdfViewer.js.map +1 -0
  540. package/dist/v2/components/ProgressBar.d.ts +53 -0
  541. package/dist/v2/components/ProgressBar.d.ts.map +1 -0
  542. package/dist/v2/components/ProgressBar.js +209 -0
  543. package/dist/v2/components/ProgressBar.js.map +1 -0
  544. package/dist/v2/components/Radio.d.ts +78 -0
  545. package/dist/v2/components/Radio.d.ts.map +1 -0
  546. package/dist/v2/components/Radio.js +238 -0
  547. package/dist/v2/components/Radio.js.map +1 -0
  548. package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
  549. package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
  550. package/dist/v2/components/SectionErrorBoundary.js +221 -0
  551. package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
  552. package/dist/v2/components/SectionHeader.d.ts +53 -0
  553. package/dist/v2/components/SectionHeader.d.ts.map +1 -0
  554. package/dist/v2/components/SectionHeader.js +140 -0
  555. package/dist/v2/components/SectionHeader.js.map +1 -0
  556. package/dist/v2/components/Segmented.d.ts +61 -0
  557. package/dist/v2/components/Segmented.d.ts.map +1 -0
  558. package/dist/v2/components/Segmented.js +261 -0
  559. package/dist/v2/components/Segmented.js.map +1 -0
  560. package/dist/v2/components/Select.d.ts +90 -0
  561. package/dist/v2/components/Select.d.ts.map +1 -0
  562. package/dist/v2/components/Select.js +499 -0
  563. package/dist/v2/components/Select.js.map +1 -0
  564. package/dist/v2/components/ServerErrorPage.d.ts +11 -0
  565. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -0
  566. package/dist/v2/components/ServerErrorPage.js +82 -0
  567. package/dist/v2/components/ServerErrorPage.js.map +1 -0
  568. package/dist/v2/components/Skeleton.d.ts +56 -0
  569. package/dist/v2/components/Skeleton.d.ts.map +1 -0
  570. package/dist/v2/components/Skeleton.js +281 -0
  571. package/dist/v2/components/Skeleton.js.map +1 -0
  572. package/dist/v2/components/SkipLink.d.ts +30 -0
  573. package/dist/v2/components/SkipLink.d.ts.map +1 -0
  574. package/dist/v2/components/SkipLink.js +58 -0
  575. package/dist/v2/components/SkipLink.js.map +1 -0
  576. package/dist/v2/components/Spinner.d.ts +40 -0
  577. package/dist/v2/components/Spinner.d.ts.map +1 -0
  578. package/dist/v2/components/Spinner.js +76 -0
  579. package/dist/v2/components/Spinner.js.map +1 -0
  580. package/dist/v2/components/Status.d.ts +42 -0
  581. package/dist/v2/components/Status.d.ts.map +1 -0
  582. package/dist/v2/components/Status.js +71 -0
  583. package/dist/v2/components/Status.js.map +1 -0
  584. package/dist/v2/components/Stepper.d.ts +142 -0
  585. package/dist/v2/components/Stepper.d.ts.map +1 -0
  586. package/dist/v2/components/Stepper.js +441 -0
  587. package/dist/v2/components/Stepper.js.map +1 -0
  588. package/dist/v2/components/Surface.d.ts +94 -0
  589. package/dist/v2/components/Surface.d.ts.map +1 -0
  590. package/dist/v2/components/Surface.js +163 -0
  591. package/dist/v2/components/Surface.js.map +1 -0
  592. package/dist/v2/components/Switch.d.ts +30 -0
  593. package/dist/v2/components/Switch.d.ts.map +1 -0
  594. package/dist/v2/components/Switch.js +136 -0
  595. package/dist/v2/components/Switch.js.map +1 -0
  596. package/dist/v2/components/Tabs.d.ts +49 -0
  597. package/dist/v2/components/Tabs.d.ts.map +1 -0
  598. package/dist/v2/components/Tabs.js +160 -0
  599. package/dist/v2/components/Tabs.js.map +1 -0
  600. package/dist/v2/components/TelInput.d.ts +33 -0
  601. package/dist/v2/components/TelInput.d.ts.map +1 -0
  602. package/dist/v2/components/TelInput.js +282 -0
  603. package/dist/v2/components/TelInput.js.map +1 -0
  604. package/dist/v2/components/Textarea.d.ts +23 -0
  605. package/dist/v2/components/Textarea.d.ts.map +1 -0
  606. package/dist/v2/components/Textarea.js +80 -0
  607. package/dist/v2/components/Textarea.js.map +1 -0
  608. package/dist/v2/components/TimePicker.d.ts +21 -0
  609. package/dist/v2/components/TimePicker.d.ts.map +1 -0
  610. package/dist/v2/components/TimePicker.js +141 -0
  611. package/dist/v2/components/TimePicker.js.map +1 -0
  612. package/dist/v2/components/Toast.d.ts +32 -0
  613. package/dist/v2/components/Toast.d.ts.map +1 -0
  614. package/dist/v2/components/Toast.js +385 -0
  615. package/dist/v2/components/Toast.js.map +1 -0
  616. package/dist/v2/components/Tooltip.d.ts +9 -0
  617. package/dist/v2/components/Tooltip.d.ts.map +1 -0
  618. package/dist/v2/components/Tooltip.js +169 -0
  619. package/dist/v2/components/Tooltip.js.map +1 -0
  620. package/dist/v2/components/_ErrorPageBody.d.ts +48 -0
  621. package/dist/v2/components/_ErrorPageBody.d.ts.map +1 -0
  622. package/dist/v2/components/_ErrorPageBody.js +96 -0
  623. package/dist/v2/components/_ErrorPageBody.js.map +1 -0
  624. package/dist/v2/components/_pickerShared.d.ts +47 -0
  625. package/dist/v2/components/_pickerShared.d.ts.map +1 -0
  626. package/dist/v2/components/_pickerShared.js +68 -0
  627. package/dist/v2/components/_pickerShared.js.map +1 -0
  628. package/dist/v2/components/index.d.ts +226 -0
  629. package/dist/v2/components/index.d.ts.map +1 -0
  630. package/dist/v2/components/index.js +512 -0
  631. package/dist/v2/components/index.js.map +1 -0
  632. package/dist/v2/hooks/index.d.ts +11 -0
  633. package/dist/v2/hooks/index.d.ts.map +1 -0
  634. package/dist/v2/hooks/index.js +85 -0
  635. package/dist/v2/hooks/index.js.map +1 -0
  636. package/dist/v2/hooks/useDelayedFlag.d.ts +22 -0
  637. package/dist/v2/hooks/useDelayedFlag.d.ts.map +1 -0
  638. package/dist/v2/hooks/useDelayedFlag.js +60 -0
  639. package/dist/v2/hooks/useDelayedFlag.js.map +1 -0
  640. package/dist/v2/hooks/useDensity.d.ts +23 -0
  641. package/dist/v2/hooks/useDensity.d.ts.map +1 -0
  642. package/dist/v2/hooks/useDensity.js +124 -0
  643. package/dist/v2/hooks/useDensity.js.map +1 -0
  644. package/dist/v2/hooks/useFocusFirstError.d.ts +121 -0
  645. package/dist/v2/hooks/useFocusFirstError.d.ts.map +1 -0
  646. package/dist/v2/hooks/useFocusFirstError.js +203 -0
  647. package/dist/v2/hooks/useFocusFirstError.js.map +1 -0
  648. package/dist/v2/hooks/useFocusTrap.d.ts +3 -0
  649. package/dist/v2/hooks/useFocusTrap.d.ts.map +1 -0
  650. package/dist/v2/hooks/useFocusTrap.js +207 -0
  651. package/dist/v2/hooks/useFocusTrap.js.map +1 -0
  652. package/dist/v2/hooks/useFormAutoSave.d.ts +42 -0
  653. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -0
  654. package/dist/v2/hooks/useFormAutoSave.js +186 -0
  655. package/dist/v2/hooks/useFormAutoSave.js.map +1 -0
  656. package/dist/v2/hooks/useFormCompletionProgress.d.ts +52 -0
  657. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -0
  658. package/dist/v2/hooks/useFormCompletionProgress.js +136 -0
  659. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -0
  660. package/dist/v2/hooks/useResolvedDensity.d.ts +31 -0
  661. package/dist/v2/hooks/useResolvedDensity.d.ts.map +1 -0
  662. package/dist/v2/hooks/useResolvedDensity.js +50 -0
  663. package/dist/v2/hooks/useResolvedDensity.js.map +1 -0
  664. package/dist/v2/hooks/useSortedRows.d.ts +25 -0
  665. package/dist/v2/hooks/useSortedRows.d.ts.map +1 -0
  666. package/dist/v2/hooks/useSortedRows.js +38 -0
  667. package/dist/v2/hooks/useSortedRows.js.map +1 -0
  668. package/dist/v2/hooks/useTabLoading.d.ts +39 -0
  669. package/dist/v2/hooks/useTabLoading.d.ts.map +1 -0
  670. package/dist/v2/hooks/useTabLoading.js +85 -0
  671. package/dist/v2/hooks/useTabLoading.js.map +1 -0
  672. package/dist/v2/index.d.ts +115 -0
  673. package/dist/v2/index.d.ts.map +1 -0
  674. package/dist/v2/index.js +1127 -0
  675. package/dist/v2/index.js.map +1 -0
  676. package/dist/v2/modalContext.d.ts +96 -0
  677. package/dist/v2/modalContext.d.ts.map +1 -0
  678. package/dist/v2/modalContext.js +113 -0
  679. package/dist/v2/modalContext.js.map +1 -0
  680. package/dist/v2/models/favorite.d.ts +14 -0
  681. package/dist/v2/models/favorite.d.ts.map +1 -0
  682. package/dist/v2/models/favorite.js +6 -0
  683. package/dist/v2/models/favorite.js.map +1 -0
  684. package/dist/v2/models/index.d.ts +11 -0
  685. package/dist/v2/models/index.d.ts.map +1 -0
  686. package/dist/v2/models/index.js +50 -0
  687. package/dist/v2/models/index.js.map +1 -0
  688. package/dist/v2/models/personalization.d.ts +65 -0
  689. package/dist/v2/models/personalization.d.ts.map +1 -0
  690. package/dist/v2/models/personalization.js +6 -0
  691. package/dist/v2/models/personalization.js.map +1 -0
  692. package/dist/v2/models/referentiel.d.ts +67 -0
  693. package/dist/v2/models/referentiel.d.ts.map +1 -0
  694. package/dist/v2/models/referentiel.js +6 -0
  695. package/dist/v2/models/referentiel.js.map +1 -0
  696. package/dist/v2/models/savedFilter.d.ts +22 -0
  697. package/dist/v2/models/savedFilter.d.ts.map +1 -0
  698. package/dist/v2/models/savedFilter.js +6 -0
  699. package/dist/v2/models/savedFilter.js.map +1 -0
  700. package/dist/v2/patterns/ActionBar.d.ts +137 -0
  701. package/dist/v2/patterns/ActionBar.d.ts.map +1 -0
  702. package/dist/v2/patterns/ActionBar.js +602 -0
  703. package/dist/v2/patterns/ActionBar.js.map +1 -0
  704. package/dist/v2/patterns/BulkActionBar.d.ts +63 -0
  705. package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -0
  706. package/dist/v2/patterns/BulkActionBar.js +154 -0
  707. package/dist/v2/patterns/BulkActionBar.js.map +1 -0
  708. package/dist/v2/patterns/CollapsibleDataGrid.d.ts +62 -0
  709. package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -0
  710. package/dist/v2/patterns/CollapsibleDataGrid.js +306 -0
  711. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -0
  712. package/dist/v2/patterns/ColumnsToggle.d.ts +55 -0
  713. package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -0
  714. package/dist/v2/patterns/ColumnsToggle.js +310 -0
  715. package/dist/v2/patterns/ColumnsToggle.js.map +1 -0
  716. package/dist/v2/patterns/DataGrid.d.ts +7 -0
  717. package/dist/v2/patterns/DataGrid.d.ts.map +1 -0
  718. package/dist/v2/patterns/DataGrid.js +834 -0
  719. package/dist/v2/patterns/DataGrid.js.map +1 -0
  720. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +68 -0
  721. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -0
  722. package/dist/v2/patterns/DataGridSettingsMenu.js +382 -0
  723. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -0
  724. package/dist/v2/patterns/DataGridToolbar.d.ts +81 -0
  725. package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -0
  726. package/dist/v2/patterns/DataGridToolbar.js +256 -0
  727. package/dist/v2/patterns/DataGridToolbar.js.map +1 -0
  728. package/dist/v2/patterns/DataGridVirtualized.d.ts +76 -0
  729. package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -0
  730. package/dist/v2/patterns/DataGridVirtualized.js +528 -0
  731. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -0
  732. package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +46 -0
  733. package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -0
  734. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +77 -0
  735. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
  736. package/dist/v2/patterns/FavoriteColumn.d.ts +72 -0
  737. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -0
  738. package/dist/v2/patterns/FavoriteColumn.js +171 -0
  739. package/dist/v2/patterns/FavoriteColumn.js.map +1 -0
  740. package/dist/v2/patterns/FavoritesFilter.d.ts +51 -0
  741. package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -0
  742. package/dist/v2/patterns/FavoritesFilter.js +98 -0
  743. package/dist/v2/patterns/FavoritesFilter.js.map +1 -0
  744. package/dist/v2/patterns/FormErrorSummary.d.ts +39 -0
  745. package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -0
  746. package/dist/v2/patterns/FormErrorSummary.js +111 -0
  747. package/dist/v2/patterns/FormErrorSummary.js.map +1 -0
  748. package/dist/v2/patterns/FormPageShell.d.ts +55 -0
  749. package/dist/v2/patterns/FormPageShell.d.ts.map +1 -0
  750. package/dist/v2/patterns/FormPageShell.js +133 -0
  751. package/dist/v2/patterns/FormPageShell.js.map +1 -0
  752. package/dist/v2/patterns/FormSection.d.ts +64 -0
  753. package/dist/v2/patterns/FormSection.d.ts.map +1 -0
  754. package/dist/v2/patterns/FormSection.js +197 -0
  755. package/dist/v2/patterns/FormSection.js.map +1 -0
  756. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +51 -0
  757. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -0
  758. package/dist/v2/patterns/FormikCheckboxGroup.js +117 -0
  759. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -0
  760. package/dist/v2/patterns/FormikCombobox.d.ts +43 -0
  761. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -0
  762. package/dist/v2/patterns/FormikCombobox.js +121 -0
  763. package/dist/v2/patterns/FormikCombobox.js.map +1 -0
  764. package/dist/v2/patterns/FormikDatePicker.d.ts +115 -0
  765. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -0
  766. package/dist/v2/patterns/FormikDatePicker.js +203 -0
  767. package/dist/v2/patterns/FormikDatePicker.js.map +1 -0
  768. package/dist/v2/patterns/FormikErrorFocus.d.ts +59 -0
  769. package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -0
  770. package/dist/v2/patterns/FormikErrorFocus.js +83 -0
  771. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -0
  772. package/dist/v2/patterns/FormikFile.d.ts +43 -0
  773. package/dist/v2/patterns/FormikFile.d.ts.map +1 -0
  774. package/dist/v2/patterns/FormikFile.js +156 -0
  775. package/dist/v2/patterns/FormikFile.js.map +1 -0
  776. package/dist/v2/patterns/FormikInput.d.ts +72 -0
  777. package/dist/v2/patterns/FormikInput.d.ts.map +1 -0
  778. package/dist/v2/patterns/FormikInput.js +135 -0
  779. package/dist/v2/patterns/FormikInput.js.map +1 -0
  780. package/dist/v2/patterns/FormikReferentielField.d.ts +33 -0
  781. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -0
  782. package/dist/v2/patterns/FormikReferentielField.js +124 -0
  783. package/dist/v2/patterns/FormikReferentielField.js.map +1 -0
  784. package/dist/v2/patterns/FormikSelect.d.ts +61 -0
  785. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -0
  786. package/dist/v2/patterns/FormikSelect.js +165 -0
  787. package/dist/v2/patterns/FormikSelect.js.map +1 -0
  788. package/dist/v2/patterns/FormikTextarea.d.ts +31 -0
  789. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -0
  790. package/dist/v2/patterns/FormikTextarea.js +84 -0
  791. package/dist/v2/patterns/FormikTextarea.js.map +1 -0
  792. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +44 -0
  793. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -0
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +203 -0
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
  796. package/dist/v2/patterns/NetworkErrorBanner.d.ts +26 -0
  797. package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -0
  798. package/dist/v2/patterns/NetworkErrorBanner.js +82 -0
  799. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -0
  800. package/dist/v2/patterns/PageContent.d.ts +40 -0
  801. package/dist/v2/patterns/PageContent.d.ts.map +1 -0
  802. package/dist/v2/patterns/PageContent.js +69 -0
  803. package/dist/v2/patterns/PageContent.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +118 -0
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -0
  806. package/dist/v2/patterns/ReferentielField.js +618 -0
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -0
  808. package/dist/v2/patterns/SaveFilterDialog.d.ts +68 -0
  809. package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -0
  810. package/dist/v2/patterns/SaveFilterDialog.js +204 -0
  811. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -0
  812. package/dist/v2/patterns/SavedFiltersMenu.d.ts +74 -0
  813. package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -0
  814. package/dist/v2/patterns/SavedFiltersMenu.js +413 -0
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -0
  816. package/dist/v2/patterns/SkeletonPageShell.d.ts +76 -0
  817. package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -0
  818. package/dist/v2/patterns/SkeletonPageShell.js +347 -0
  819. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -0
  820. package/dist/v2/patterns/SortableHeader.d.ts +47 -0
  821. package/dist/v2/patterns/SortableHeader.d.ts.map +1 -0
  822. package/dist/v2/patterns/SortableHeader.js +193 -0
  823. package/dist/v2/patterns/SortableHeader.js.map +1 -0
  824. package/dist/v2/patterns/Tour.d.ts +55 -0
  825. package/dist/v2/patterns/Tour.d.ts.map +1 -0
  826. package/dist/v2/patterns/Tour.js +474 -0
  827. package/dist/v2/patterns/Tour.js.map +1 -0
  828. package/dist/v2/patterns/_dataGridShared.d.ts +144 -0
  829. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -0
  830. package/dist/v2/patterns/_dataGridShared.js +440 -0
  831. package/dist/v2/patterns/_dataGridShared.js.map +1 -0
  832. package/dist/v2/patterns/_sort.d.ts +22 -0
  833. package/dist/v2/patterns/_sort.d.ts.map +1 -0
  834. package/dist/v2/patterns/_sort.js +118 -0
  835. package/dist/v2/patterns/_sort.js.map +1 -0
  836. package/dist/v2/patterns/_useColumnReorder.d.ts +69 -0
  837. package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -0
  838. package/dist/v2/patterns/_useColumnReorder.js +264 -0
  839. package/dist/v2/patterns/_useColumnReorder.js.map +1 -0
  840. package/dist/v2/patterns/_useColumnResize.d.ts +49 -0
  841. package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -0
  842. package/dist/v2/patterns/_useColumnResize.js +198 -0
  843. package/dist/v2/patterns/_useColumnResize.js.map +1 -0
  844. package/dist/v2/patterns/index.d.ts +89 -0
  845. package/dist/v2/patterns/index.d.ts.map +1 -0
  846. package/dist/v2/patterns/index.js +246 -0
  847. package/dist/v2/patterns/index.js.map +1 -0
  848. package/dist/v2/personalization/PersonalizationProvider.d.ts +80 -0
  849. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -0
  850. package/dist/v2/personalization/PersonalizationProvider.js +177 -0
  851. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -0
  852. package/dist/v2/personalization/adapters/_storageKey.d.ts +35 -0
  853. package/dist/v2/personalization/adapters/_storageKey.d.ts.map +1 -0
  854. package/dist/v2/personalization/adapters/_storageKey.js +69 -0
  855. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -0
  856. package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +31 -0
  857. package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -0
  858. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +128 -0
  859. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
  860. package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +25 -0
  861. package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -0
  862. package/dist/v2/personalization/adapters/createMemoryAdapter.js +76 -0
  863. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
  864. package/dist/v2/personalization/adapters/index.d.ts +10 -0
  865. package/dist/v2/personalization/adapters/index.d.ts.map +1 -0
  866. package/dist/v2/personalization/adapters/index.js +21 -0
  867. package/dist/v2/personalization/adapters/index.js.map +1 -0
  868. package/dist/v2/personalization/capabilities/favorites.d.ts +53 -0
  869. package/dist/v2/personalization/capabilities/favorites.d.ts.map +1 -0
  870. package/dist/v2/personalization/capabilities/favorites.js +223 -0
  871. package/dist/v2/personalization/capabilities/favorites.js.map +1 -0
  872. package/dist/v2/personalization/capabilities/favoritesView.d.ts +58 -0
  873. package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -0
  874. package/dist/v2/personalization/capabilities/favoritesView.js +121 -0
  875. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -0
  876. package/dist/v2/personalization/capabilities/index.d.ts +16 -0
  877. package/dist/v2/personalization/capabilities/index.d.ts.map +1 -0
  878. package/dist/v2/personalization/capabilities/index.js +69 -0
  879. package/dist/v2/personalization/capabilities/index.js.map +1 -0
  880. package/dist/v2/personalization/capabilities/savedFilters.d.ts +61 -0
  881. package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -0
  882. package/dist/v2/personalization/capabilities/savedFilters.js +297 -0
  883. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -0
  884. package/dist/v2/personalization/createPersonalizationStore.d.ts +76 -0
  885. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -0
  886. package/dist/v2/personalization/createPersonalizationStore.js +475 -0
  887. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -0
  888. package/dist/v2/personalization/index.d.ts +33 -0
  889. package/dist/v2/personalization/index.d.ts.map +1 -0
  890. package/dist/v2/personalization/index.js +111 -0
  891. package/dist/v2/personalization/index.js.map +1 -0
  892. package/dist/v2/personalization/personalizationContext.d.ts +78 -0
  893. package/dist/v2/personalization/personalizationContext.d.ts.map +1 -0
  894. package/dist/v2/personalization/personalizationContext.js +121 -0
  895. package/dist/v2/personalization/personalizationContext.js.map +1 -0
  896. package/dist/v2/personalization/schema.d.ts +60 -0
  897. package/dist/v2/personalization/schema.d.ts.map +1 -0
  898. package/dist/v2/personalization/schema.js +102 -0
  899. package/dist/v2/personalization/schema.js.map +1 -0
  900. package/dist/v2/personalization/types.d.ts +81 -0
  901. package/dist/v2/personalization/types.d.ts.map +1 -0
  902. package/dist/v2/personalization/types.js +6 -0
  903. package/dist/v2/personalization/types.js.map +1 -0
  904. package/dist/v2/referentiel/ReferentielProvider.d.ts +53 -0
  905. package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -0
  906. package/dist/v2/referentiel/ReferentielProvider.js +94 -0
  907. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -0
  908. package/dist/v2/referentiel/index.d.ts +18 -0
  909. package/dist/v2/referentiel/index.d.ts.map +1 -0
  910. package/dist/v2/referentiel/index.js +44 -0
  911. package/dist/v2/referentiel/index.js.map +1 -0
  912. package/dist/v2/referentiel/useReferentielClient.d.ts +15 -0
  913. package/dist/v2/referentiel/useReferentielClient.d.ts.map +1 -0
  914. package/dist/v2/referentiel/useReferentielClient.js +46 -0
  915. package/dist/v2/referentiel/useReferentielClient.js.map +1 -0
  916. package/dist/v2/referentiel/useReferentielOptions.d.ts +40 -0
  917. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -0
  918. package/dist/v2/referentiel/useReferentielOptions.js +177 -0
  919. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -0
  920. package/dist/v2/referentiel/useReferentielSearch.d.ts +76 -0
  921. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -0
  922. package/dist/v2/referentiel/useReferentielSearch.js +140 -0
  923. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -0
  924. package/dist/v2/styles/base.css +425 -0
  925. package/dist/v2/styles/css.d.ts +10 -0
  926. package/dist/v2/styles/index.d.ts +12 -0
  927. package/dist/v2/styles/index.d.ts.map +1 -0
  928. package/dist/v2/styles/index.js +4 -0
  929. package/dist/v2/styles/index.js.map +1 -0
  930. package/dist/v2/theme/_brand.d.ts +29 -0
  931. package/dist/v2/theme/_brand.d.ts.map +1 -0
  932. package/dist/v2/theme/_brand.js +69 -0
  933. package/dist/v2/theme/_brand.js.map +1 -0
  934. package/dist/v2/theme/_brandSecondary.d.ts +26 -0
  935. package/dist/v2/theme/_brandSecondary.d.ts.map +1 -0
  936. package/dist/v2/theme/_brandSecondary.js +65 -0
  937. package/dist/v2/theme/_brandSecondary.js.map +1 -0
  938. package/dist/v2/theme/createPortnetTheme.d.ts +75 -0
  939. package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -0
  940. package/dist/v2/theme/createPortnetTheme.js +553 -0
  941. package/dist/v2/theme/createPortnetTheme.js.map +1 -0
  942. package/dist/v2/theme/cssVariables.d.ts +41 -0
  943. package/dist/v2/theme/cssVariables.d.ts.map +1 -0
  944. package/dist/v2/theme/cssVariables.js +205 -0
  945. package/dist/v2/theme/cssVariables.js.map +1 -0
  946. package/dist/v2/theme/index.d.ts +33 -0
  947. package/dist/v2/theme/index.d.ts.map +1 -0
  948. package/dist/v2/theme/index.js +60 -0
  949. package/dist/v2/theme/index.js.map +1 -0
  950. package/dist/v2/tokens/breakpoints.d.ts +74 -0
  951. package/dist/v2/tokens/breakpoints.d.ts.map +1 -0
  952. package/dist/v2/tokens/breakpoints.js +114 -0
  953. package/dist/v2/tokens/breakpoints.js.map +1 -0
  954. package/dist/v2/tokens/colors.d.ts +228 -0
  955. package/dist/v2/tokens/colors.d.ts.map +1 -0
  956. package/dist/v2/tokens/colors.js +225 -0
  957. package/dist/v2/tokens/colors.js.map +1 -0
  958. package/dist/v2/tokens/density.d.ts +142 -0
  959. package/dist/v2/tokens/density.d.ts.map +1 -0
  960. package/dist/v2/tokens/density.js +111 -0
  961. package/dist/v2/tokens/density.js.map +1 -0
  962. package/dist/v2/tokens/index.d.ts +556 -0
  963. package/dist/v2/tokens/index.d.ts.map +1 -0
  964. package/dist/v2/tokens/index.js +313 -0
  965. package/dist/v2/tokens/index.js.map +1 -0
  966. package/dist/v2/tokens/motion.d.ts +85 -0
  967. package/dist/v2/tokens/motion.d.ts.map +1 -0
  968. package/dist/v2/tokens/motion.js +94 -0
  969. package/dist/v2/tokens/motion.js.map +1 -0
  970. package/dist/v2/tokens/radius.d.ts +18 -0
  971. package/dist/v2/tokens/radius.d.ts.map +1 -0
  972. package/dist/v2/tokens/radius.js +28 -0
  973. package/dist/v2/tokens/radius.js.map +1 -0
  974. package/dist/v2/tokens/shadows.d.ts +25 -0
  975. package/dist/v2/tokens/shadows.d.ts.map +1 -0
  976. package/dist/v2/tokens/shadows.js +46 -0
  977. package/dist/v2/tokens/shadows.js.map +1 -0
  978. package/dist/v2/tokens/spacing.d.ts +38 -0
  979. package/dist/v2/tokens/spacing.d.ts.map +1 -0
  980. package/dist/v2/tokens/spacing.js +57 -0
  981. package/dist/v2/tokens/spacing.js.map +1 -0
  982. package/dist/v2/tokens/state.d.ts +40 -0
  983. package/dist/v2/tokens/state.d.ts.map +1 -0
  984. package/dist/v2/tokens/state.js +47 -0
  985. package/dist/v2/tokens/state.js.map +1 -0
  986. package/dist/v2/tokens/statusPalette.d.ts +54 -0
  987. package/dist/v2/tokens/statusPalette.d.ts.map +1 -0
  988. package/dist/v2/tokens/statusPalette.js +72 -0
  989. package/dist/v2/tokens/statusPalette.js.map +1 -0
  990. package/dist/v2/tokens/tokens.json +153 -0
  991. package/dist/v2/tokens/typography.d.ts +206 -0
  992. package/dist/v2/tokens/typography.d.ts.map +1 -0
  993. package/dist/v2/tokens/typography.js +155 -0
  994. package/dist/v2/tokens/typography.js.map +1 -0
  995. package/dist/v2/tokens/zIndex.d.ts +33 -0
  996. package/dist/v2/tokens/zIndex.d.ts.map +1 -0
  997. package/dist/v2/tokens/zIndex.js +50 -0
  998. package/dist/v2/tokens/zIndex.js.map +1 -0
  999. package/dist/v2/types/common.d.ts +24 -0
  1000. package/dist/v2/types/common.d.ts.map +1 -0
  1001. package/dist/v2/types/common.js +6 -0
  1002. package/dist/v2/types/common.js.map +1 -0
  1003. package/dist/v2/types/datagrid.d.ts +131 -0
  1004. package/dist/v2/types/datagrid.d.ts.map +1 -0
  1005. package/dist/v2/types/datagrid.js +6 -0
  1006. package/dist/v2/types/datagrid.js.map +1 -0
  1007. package/dist/v2/types/index.d.ts +11 -0
  1008. package/dist/v2/types/index.d.ts.map +1 -0
  1009. package/dist/v2/types/index.js +28 -0
  1010. package/dist/v2/types/index.js.map +1 -0
  1011. package/dist/v2/utils/apiError.d.ts +151 -0
  1012. package/dist/v2/utils/apiError.d.ts.map +1 -0
  1013. package/dist/v2/utils/apiError.js +290 -0
  1014. package/dist/v2/utils/apiError.js.map +1 -0
  1015. package/dist/v2/utils/contrast.d.ts +68 -0
  1016. package/dist/v2/utils/contrast.d.ts.map +1 -0
  1017. package/dist/v2/utils/contrast.js +167 -0
  1018. package/dist/v2/utils/contrast.js.map +1 -0
  1019. package/dist/v2/utils/cx.d.ts +9 -0
  1020. package/dist/v2/utils/cx.d.ts.map +1 -0
  1021. package/dist/v2/utils/cx.js +45 -0
  1022. package/dist/v2/utils/cx.js.map +1 -0
  1023. package/dist/v2/utils/fileDownload.d.ts +94 -0
  1024. package/dist/v2/utils/fileDownload.d.ts.map +1 -0
  1025. package/dist/v2/utils/fileDownload.js +236 -0
  1026. package/dist/v2/utils/fileDownload.js.map +1 -0
  1027. package/dist/v2/utils/fmtMoney.d.ts +28 -0
  1028. package/dist/v2/utils/fmtMoney.d.ts.map +1 -0
  1029. package/dist/v2/utils/fmtMoney.js +84 -0
  1030. package/dist/v2/utils/fmtMoney.js.map +1 -0
  1031. package/dist/v2/utils/index.d.ts +9 -0
  1032. package/dist/v2/utils/index.d.ts.map +1 -0
  1033. package/dist/v2/utils/index.js +97 -0
  1034. package/dist/v2/utils/index.js.map +1 -0
  1035. package/dist/v2/utils/mergeLabels.d.ts +59 -0
  1036. package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
  1037. package/dist/v2/utils/mergeLabels.js +93 -0
  1038. package/dist/v2/utils/mergeLabels.js.map +1 -0
  1039. package/dist/v2/utils/networkStatus.d.ts +88 -0
  1040. package/dist/v2/utils/networkStatus.d.ts.map +1 -0
  1041. package/dist/v2/utils/networkStatus.js +121 -0
  1042. package/dist/v2/utils/networkStatus.js.map +1 -0
  1043. package/package.json +198 -76
  1044. package/dist/api/guideApi.js +0 -12
  1045. package/dist/api/guideImageService.js +0 -119
  1046. package/dist/api/reclamationApi.js +0 -119
  1047. package/dist/assets/guides/FAQ.json +0 -118
  1048. package/dist/assets/guides/index.js +0 -11
  1049. package/dist/assets/images/tijariaLogo.ico +0 -0
  1050. package/dist/components/buttons/PuiButton.js +0 -217
  1051. package/dist/components/buttons/PuiIconButton.js +0 -98
  1052. package/dist/components/common/PuiAlertContext.js +0 -12
  1053. package/dist/components/common/PuiHelpWidgetContext.js +0 -17
  1054. package/dist/components/common/StyledMuiButton.js +0 -48
  1055. package/dist/components/common/StyledMuiTextField.js +0 -180
  1056. package/dist/components/inputs/PuiAutocomplete.js +0 -352
  1057. package/dist/components/inputs/PuiCheckbox.js +0 -308
  1058. package/dist/components/inputs/PuiCheckboxGroup.js +0 -215
  1059. package/dist/components/inputs/PuiCheckboxItem.js +0 -162
  1060. package/dist/components/inputs/PuiDateField.js +0 -280
  1061. package/dist/components/inputs/PuiDateTimeField.js +0 -276
  1062. package/dist/components/inputs/PuiFileField.js +0 -265
  1063. package/dist/components/inputs/PuiRadioGroup.js +0 -197
  1064. package/dist/components/inputs/PuiRadioItem.js +0 -100
  1065. package/dist/components/inputs/PuiSelect.js +0 -427
  1066. package/dist/components/inputs/PuiTextField.js +0 -263
  1067. package/dist/components/others/PuiBadge.js +0 -58
  1068. package/dist/components/others/PuiChip.js +0 -150
  1069. package/dist/components/others/PuiDialog.js +0 -102
  1070. package/dist/components/others/PuiFormikForm.js +0 -70
  1071. package/dist/components/others/PuiGrid.js +0 -23
  1072. package/dist/components/others/PuiIcon.js +0 -92
  1073. package/dist/components/others/PuiLoadingBackdrop.js +0 -32
  1074. package/dist/components/others/PuiMainContainer.js +0 -41
  1075. package/dist/components/others/PuiNavigation.js +0 -68
  1076. package/dist/components/others/PuiSection.js +0 -187
  1077. package/dist/components/others/PuiTooltip.js +0 -86
  1078. package/dist/components/providers/PuiAlertProvider.js +0 -134
  1079. package/dist/components/providers/PuiHelpWidgetProvider.js +0 -91
  1080. package/dist/components/providers/PuiLocalizationProvider.js +0 -34
  1081. package/dist/components/referentiel/common/ReferetielContext.js +0 -12
  1082. package/dist/components/referentiel/common/constants/specificReferentielsApis.js +0 -22
  1083. package/dist/components/referentiel/common/constants/specificReferentielsBaseColumns.js +0 -691
  1084. package/dist/components/referentiel/common/constants/specificReferentielsBaseFilters.js +0 -598
  1085. package/dist/components/referentiel/common/constants/specificReferentielsInitialValues.js +0 -80
  1086. package/dist/components/referentiel/common/constants/specificReferentielsKeys.js +0 -18
  1087. package/dist/components/referentiel/common/constants/specificReferentielsTitles.js +0 -22
  1088. package/dist/components/referentiel/common/constants/specificReferentielsValidationSchemas.js +0 -85
  1089. package/dist/components/referentiel/components/PuiBasePopupReferentielField.js +0 -356
  1090. package/dist/components/referentiel/components/PuiCustomPopupReferentielField.js +0 -181
  1091. package/dist/components/referentiel/components/PuiSimplePopupReferentielField.js +0 -325
  1092. package/dist/components/referentiel/components/PuiSimpleReferentielField.js +0 -203
  1093. package/dist/components/referentiel/components/PuiSpecificReferentielField.js +0 -352
  1094. package/dist/components/referentiel/providers/PuiReferentielProvider.js +0 -66
  1095. package/dist/components/tab/PuiTab.js +0 -25
  1096. package/dist/components/tab/PuiTabs.js +0 -148
  1097. package/dist/components/table/PuiTable.js +0 -643
  1098. package/dist/components/table/PuiTableAction.js +0 -75
  1099. package/dist/components/typography/PuiDefinition.js +0 -42
  1100. package/dist/components/typography/PuiIndication.js +0 -80
  1101. package/dist/components/typography/PuiMainTitle.js +0 -144
  1102. package/dist/components/ui/dialogs/PuiSearchDialog.js +0 -106
  1103. package/dist/components/ui/pages/errors/PuiErrorBasePage.js +0 -73
  1104. package/dist/components/ui/pages/errors/PuiForbiddenErrorPage.js +0 -36
  1105. package/dist/components/ui/pages/errors/PuiNetworkErrorPage.js +0 -36
  1106. package/dist/components/ui/pages/errors/PuiNotFoundErrorPage.js +0 -30
  1107. package/dist/components/ui/pages/errors/PuiServerErrorPage.js +0 -37
  1108. package/dist/components/ui/pages/general/PuiDefaultPage.js +0 -68
  1109. package/dist/components/ui/pages/general/PuiSearchPage.js +0 -203
  1110. package/dist/components/widgets/GuideImage.js +0 -251
  1111. package/dist/components/widgets/PuiHelpWidget.js +0 -4276
  1112. package/dist/config/apperance.js +0 -26
  1113. package/dist/config/mapping.js +0 -26
  1114. package/dist/config/referentiel.js +0 -10
  1115. package/dist/general/yupValidationErrors.js +0 -8
  1116. package/dist/hooks/useAlert.js +0 -19
  1117. package/dist/hooks/useAxios.js +0 -23
  1118. package/dist/hooks/useQuery.js +0 -21
  1119. package/dist/hooks/useReclamation.js +0 -116
  1120. package/dist/styles/ReclamationFormModal.css +0 -629
  1121. package/dist/styles/help-widget.css +0 -621
@@ -1,4276 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- require("core-js/modules/es.symbol.description.js");
8
- require("core-js/modules/es.array.includes.js");
9
- require("core-js/modules/es.array-buffer.constructor.js");
10
- require("core-js/modules/es.array-buffer.slice.js");
11
- require("core-js/modules/es.promise.js");
12
- require("core-js/modules/es.regexp.exec.js");
13
- require("core-js/modules/es.regexp.test.js");
14
- require("core-js/modules/es.string.includes.js");
15
- require("core-js/modules/es.string.replace.js");
16
- require("core-js/modules/es.string.split.js");
17
- require("core-js/modules/es.string.trim.js");
18
- require("core-js/modules/es.typed-array.uint8-array.js");
19
- require("core-js/modules/es.typed-array.fill.js");
20
- require("core-js/modules/es.typed-array.set.js");
21
- require("core-js/modules/es.typed-array.sort.js");
22
- require("core-js/modules/es.typed-array.to-locale-string.js");
23
- require("core-js/modules/esnext.iterator.constructor.js");
24
- require("core-js/modules/esnext.iterator.filter.js");
25
- require("core-js/modules/esnext.iterator.for-each.js");
26
- require("core-js/modules/esnext.iterator.map.js");
27
- require("core-js/modules/web.dom-collections.iterator.js");
28
- require("core-js/modules/web.url.js");
29
- require("core-js/modules/web.url.to-json.js");
30
- require("core-js/modules/web.url-search-params.js");
31
- var _react = require("react");
32
- var _reactRedux = require("react-redux");
33
- var _reactQuery = require("react-query");
34
- var _reactFontawesome = require("@fortawesome/react-fontawesome");
35
- var _reactToastify = require("react-toastify");
36
- var _reactstrap = require("reactstrap");
37
- var _freeRegularSvgIcons = require("@fortawesome/free-regular-svg-icons");
38
- var _dompurify = _interopRequireDefault(require("dompurify"));
39
- var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
40
- var _iconsMaterial = require("@mui/icons-material");
41
- var _material = require("@mui/material");
42
- require("../../styles/help-widget.css");
43
- require("../../styles/ReclamationFormModal.css");
44
- var _useReclamation = require("../../hooks/useReclamation");
45
- var _guides = _interopRequireDefault(require("../../assets/guides"));
46
- var _PuiHelpWidgetContext = require("../common/PuiHelpWidgetContext");
47
- var _tijariaLogo = _interopRequireDefault(require("../../assets/images/tijariaLogo.ico"));
48
- var _GuideImage = require("./GuideImage");
49
- var _jsxRuntime = require("react/jsx-runtime");
50
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
51
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
52
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
53
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
54
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
55
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
56
- const WIDGET_FONT = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif";
57
- const PHONE_RE = /^(0|\+212|0212)[5-7]\d{8}$/;
58
- const ContentPanel = _ref => {
59
- let {
60
- isOpen,
61
- onClose,
62
- contentData,
63
- title = "Contenu",
64
- showDownloadButton = false,
65
- showExternalLinkLabel = false,
66
- onDownload = null,
67
- loadingDownload = false,
68
- projectCode = null,
69
- externalLinkUrl = null,
70
- guideBaseUrl
71
- } = _ref;
72
- const {
73
- guideImageService
74
- } = (0, _PuiHelpWidgetContext.useHelpWidget)();
75
- const [position, setPosition] = (0, _react.useState)({
76
- x: window.innerWidth - 380,
77
- y: 40
78
- });
79
- const [isDragging, setIsDragging] = (0, _react.useState)(false);
80
- const [dragStart, setDragStart] = (0, _react.useState)({
81
- x: 0,
82
- y: 0
83
- });
84
- const panelRef = (0, _react.useRef)(null);
85
- const firstFocusableRef = (0, _react.useRef)(null);
86
- const previousActiveElement = (0, _react.useRef)(null);
87
- const [currentView, setCurrentView] = (0, _react.useState)("list");
88
- const [selectedSection, setSelectedSection] = (0, _react.useState)(null);
89
- const [fullscreenImage, setFullscreenImage] = (0, _react.useState)(null);
90
- const PANEL_WIDTH = 340;
91
- const PANEL_MAX_HEIGHT = 550;
92
- const RESIZE_MARGIN = 40;
93
- const MIN_VISIBLE_WIDTH = 80;
94
- (0, _react.useEffect)(() => {
95
- if (contentData) {
96
- setCurrentView("list");
97
- setSelectedSection(null);
98
- }
99
- }, [contentData]);
100
- (0, _react.useEffect)(() => {
101
- return () => {
102
- guideImageService.clearImageCache();
103
- };
104
- }, []);
105
- const handleSectionClick = section => {
106
- setSelectedSection(section);
107
- setCurrentView("detail");
108
- };
109
- const handleBack = () => {
110
- setCurrentView("list");
111
- setSelectedSection(null);
112
- };
113
- const handleOpenInNewWindow = () => {
114
- if (!selectedSection || !projectCode || !guideBaseUrl) return;
115
- const url = "".concat(guideBaseUrl, "/#/guide/").concat(projectCode, "?section=").concat(selectedSection.id);
116
- window.open(url, "_blank");
117
- };
118
- const handleImageClick = imageSrc => {
119
- setFullscreenImage(imageSrc);
120
- };
121
- const handleCloseFullscreen = () => {
122
- setFullscreenImage(null);
123
- };
124
- const handleMouseDown = e => {
125
- if (e.target.closest(".drag-handle")) {
126
- setIsDragging(true);
127
- setDragStart({
128
- x: e.clientX - position.x,
129
- y: e.clientY - position.y
130
- });
131
- }
132
- };
133
- const handleMouseMove = e => {
134
- if (isDragging) {
135
- const newX = e.clientX - dragStart.x;
136
- const newY = e.clientY - dragStart.y;
137
- const constrainedX = Math.max(0, newX);
138
- const maxX = window.innerWidth - MIN_VISIBLE_WIDTH;
139
- const finalX = Math.min(constrainedX, maxX);
140
- const finalY = Math.max(0, newY);
141
- setPosition({
142
- x: finalX,
143
- y: finalY
144
- });
145
- }
146
- };
147
- const handleMouseUp = () => {
148
- setIsDragging(false);
149
- };
150
- (0, _react.useEffect)(() => {
151
- const handleResize = () => {
152
- setPosition(prev => {
153
- var _panelRef$current;
154
- const panelHeight = ((_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 ? void 0 : _panelRef$current.offsetHeight) || PANEL_MAX_HEIGHT;
155
- let newX = prev.x;
156
- let newY = prev.y;
157
- const maxX = window.innerWidth - PANEL_WIDTH - RESIZE_MARGIN;
158
- const maxY = window.innerHeight - panelHeight - RESIZE_MARGIN;
159
- if (prev.x + PANEL_WIDTH > window.innerWidth - RESIZE_MARGIN) {
160
- newX = Math.max(RESIZE_MARGIN, maxX);
161
- }
162
- if (prev.x < RESIZE_MARGIN) {
163
- newX = RESIZE_MARGIN;
164
- }
165
- if (prev.y + panelHeight > window.innerHeight - RESIZE_MARGIN) {
166
- newY = Math.max(RESIZE_MARGIN, maxY);
167
- }
168
- if (prev.y < RESIZE_MARGIN) {
169
- newY = RESIZE_MARGIN;
170
- }
171
- return {
172
- x: newX,
173
- y: newY
174
- };
175
- });
176
- };
177
- window.addEventListener("resize", handleResize);
178
- return () => window.removeEventListener("resize", handleResize);
179
- }, []);
180
- (0, _react.useEffect)(() => {
181
- if (isDragging) {
182
- document.addEventListener("mousemove", handleMouseMove);
183
- document.addEventListener("mouseup", handleMouseUp);
184
- return () => {
185
- document.removeEventListener("mousemove", handleMouseMove);
186
- document.removeEventListener("mouseup", handleMouseUp);
187
- };
188
- }
189
- }, [isDragging, dragStart]);
190
- (0, _react.useEffect)(() => {
191
- const handleEscape = e => {
192
- if (e.key === "Escape" && fullscreenImage) {
193
- handleCloseFullscreen();
194
- }
195
- };
196
- window.addEventListener("keydown", handleEscape);
197
- return () => window.removeEventListener("keydown", handleEscape);
198
- }, [fullscreenImage]);
199
- (0, _react.useEffect)(() => {
200
- if (isOpen) {
201
- previousActiveElement.current = document.activeElement;
202
- setTimeout(() => {
203
- var _firstFocusableRef$cu;
204
- (_firstFocusableRef$cu = firstFocusableRef.current) === null || _firstFocusableRef$cu === void 0 || _firstFocusableRef$cu.focus();
205
- }, 100);
206
- } else {
207
- if (previousActiveElement.current) {
208
- previousActiveElement.current.focus();
209
- }
210
- }
211
- }, [isOpen]);
212
- (0, _react.useEffect)(() => {
213
- if (!isOpen) return;
214
- const handleKeyDown = e => {
215
- if (e.key === "Escape") {
216
- if (fullscreenImage) {
217
- return;
218
- }
219
- onClose();
220
- return;
221
- }
222
- if (e.key === "Tab") {
223
- const panel = panelRef.current;
224
- if (!panel) return;
225
- const focusableElements = panel.querySelectorAll('button:not([disabled]), [href]:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled])');
226
- const focusableArray = Array.from(focusableElements);
227
- const firstElement = focusableArray[0];
228
- const lastElement = focusableArray[focusableArray.length - 1];
229
- if (focusableArray.length === 0) return;
230
- if (e.shiftKey) {
231
- if (document.activeElement === firstElement) {
232
- lastElement.focus();
233
- e.preventDefault();
234
- }
235
- } else {
236
- if (document.activeElement === lastElement) {
237
- firstElement.focus();
238
- e.preventDefault();
239
- }
240
- }
241
- }
242
- };
243
- document.addEventListener("keydown", handleKeyDown);
244
- return () => document.removeEventListener("keydown", handleKeyDown);
245
- }, [isOpen, onClose, fullscreenImage]);
246
- (0, _react.useEffect)(() => {
247
- if (isOpen) {
248
- document.body.style.overflow = "hidden";
249
- } else {
250
- document.body.style.overflow = "";
251
- }
252
- return () => {
253
- document.body.style.overflow = "";
254
- };
255
- }, [isOpen]);
256
- (0, _react.useEffect)(() => {
257
- if (currentView === "detail") {
258
- setTimeout(() => {
259
- const panel = panelRef.current;
260
- if (!panel) return;
261
- const focusableElements = panel.querySelectorAll('button:not([disabled]), [href]:not([disabled]), [role="button"]:not([disabled])[tabindex="0"]');
262
- if (focusableElements.length > 0) {
263
- focusableElements[0].focus();
264
- }
265
- }, 100);
266
- } else if (currentView === "list") {
267
- setTimeout(() => {
268
- var _firstFocusableRef$cu2;
269
- (_firstFocusableRef$cu2 = firstFocusableRef.current) === null || _firstFocusableRef$cu2 === void 0 || _firstFocusableRef$cu2.focus();
270
- }, 100);
271
- }
272
- }, [currentView]);
273
- if (!isOpen) return null;
274
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
275
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
276
- ref: panelRef,
277
- role: "dialog",
278
- "aria-modal": "true",
279
- "aria-labelledby": "panel-title",
280
- style: {
281
- position: "fixed",
282
- left: "".concat(position.x, "px"),
283
- top: "".concat(position.y, "px"),
284
- width: "360px",
285
- height: "auto",
286
- maxHeight: "550px",
287
- backgroundColor: "white",
288
- border: "0px solid #dadce0",
289
- borderRadius: "16px",
290
- boxShadow: "0px 1px 3px 0px rgba(60, 64, 67, 0.3)",
291
- zIndex: 10000000,
292
- display: "flex",
293
- flexDirection: "column",
294
- overflow: "hidden",
295
- fontFamily: "'Google Sans', Roboto, Arial, sans-serif"
296
- },
297
- onMouseDown: handleMouseDown,
298
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
299
- className: "drag-handle",
300
- style: {
301
- display: "flex",
302
- alignItems: "center",
303
- justifyContent: "center",
304
- marginTop: "10px",
305
- padding: "16px 20px",
306
- cursor: "move",
307
- userSelect: "none",
308
- backgroundColor: "white",
309
- position: "relative"
310
- },
311
- children: [currentView === "detail" && /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
312
- onClick: handleBack,
313
- "aria-label": "Retour \xE0 la liste",
314
- tabIndex: 0,
315
- style: {
316
- background: "none",
317
- border: "none",
318
- cursor: "pointer",
319
- padding: "8px",
320
- borderRadius: "50%",
321
- display: "flex",
322
- alignItems: "center",
323
- justifyContent: "center",
324
- transition: "background-color 0.2s",
325
- position: "absolute",
326
- left: "12px",
327
- order: 1
328
- },
329
- onMouseEnter: e => e.currentTarget.style.backgroundColor = "#f1f3f4",
330
- onMouseLeave: e => e.currentTarget.style.backgroundColor = "transparent",
331
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
332
- xmlns: "http://www.w3.org/2000/svg",
333
- width: "22",
334
- height: "22",
335
- viewBox: "0 0 24 24",
336
- fill: "none",
337
- stroke: "#5f6368",
338
- strokeWidth: "2",
339
- strokeLinecap: "round",
340
- strokeLinejoin: "round",
341
- "aria-hidden": "true",
342
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
343
- d: "M19 12H5M12 19l-7-7 7-7"
344
- })
345
- })
346
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
347
- id: "panel-title",
348
- style: {
349
- margin: 0,
350
- fontSize: "20px",
351
- fontWeight: "400",
352
- color: "#202124",
353
- letterSpacing: "0",
354
- order: 2
355
- },
356
- children: title
357
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
358
- ref: firstFocusableRef,
359
- onClick: onClose,
360
- "aria-label": "Fermer le panneau",
361
- tabIndex: 0,
362
- style: {
363
- background: "none",
364
- border: "none",
365
- cursor: "pointer",
366
- padding: "8px",
367
- borderRadius: "50%",
368
- display: "flex",
369
- alignItems: "center",
370
- justifyContent: "center",
371
- transition: "background-color 0.2s",
372
- position: "absolute",
373
- right: "12px",
374
- order: 3
375
- },
376
- onMouseEnter: e => e.currentTarget.style.backgroundColor = "#f1f3f4",
377
- onMouseLeave: e => e.currentTarget.style.backgroundColor = "transparent",
378
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
379
- xmlns: "http://www.w3.org/2000/svg",
380
- width: "22",
381
- height: "22",
382
- viewBox: "0 0 24 24",
383
- fill: "none",
384
- stroke: "#5f6368",
385
- strokeWidth: "2",
386
- strokeLinecap: "round",
387
- strokeLinejoin: "round",
388
- "aria-hidden": "true",
389
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
390
- x1: "18",
391
- y1: "6",
392
- x2: "6",
393
- y2: "18"
394
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
395
- x1: "6",
396
- y1: "6",
397
- x2: "18",
398
- y2: "18"
399
- })]
400
- })
401
- })]
402
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
403
- style: {
404
- padding: "10px 16px",
405
- marginBottom: "7px",
406
- overflowY: "auto",
407
- flex: 1
408
- },
409
- children: currentView === "list" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
410
- children: !contentData ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
411
- style: {
412
- textAlign: "center",
413
- padding: "20px",
414
- marginBottom: 9
415
- },
416
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
417
- size: 20,
418
- sx: {
419
- color: "#1967d2"
420
- }
421
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
422
- component: "div",
423
- sx: {
424
- fontSize: "14px",
425
- color: "#202124",
426
- marginTop: "10px",
427
- lineHeight: "normal"
428
- },
429
- children: "Chargement..."
430
- })]
431
- }) : contentData !== null && contentData !== void 0 && contentData.sections && contentData.sections.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
432
- children: [contentData.name && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
433
- style: {
434
- marginBottom: "7px"
435
- },
436
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
437
- style: {
438
- fontSize: "16px",
439
- color: "#202124",
440
- lineHeight: "24px",
441
- margin: 0,
442
- fontWeight: "400"
443
- },
444
- children: contentData.name
445
- })
446
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
447
- style: {
448
- display: "flex",
449
- flexDirection: "column",
450
- gap: "4px"
451
- },
452
- children: contentData.sections.map(section => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
453
- onClick: () => handleSectionClick(section),
454
- onKeyDown: e => {
455
- if (e.key === "Enter" || e.key === " ") {
456
- e.preventDefault();
457
- handleSectionClick(section);
458
- }
459
- },
460
- role: "button",
461
- tabIndex: 0,
462
- "aria-label": "Ouvrir ".concat(section.title),
463
- style: {
464
- display: "flex",
465
- alignItems: "center",
466
- padding: "12px 2.2px",
467
- cursor: "pointer",
468
- borderRadius: "8px",
469
- transition: "background-color 0.2s",
470
- backgroundColor: "transparent"
471
- },
472
- onMouseEnter: e => {
473
- e.currentTarget.style.backgroundColor = "#f1f3f4";
474
- },
475
- onMouseLeave: e => {
476
- e.currentTarget.style.backgroundColor = "transparent";
477
- },
478
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
479
- style: {
480
- minWidth: "34px",
481
- height: "34px",
482
- borderRadius: "50%",
483
- backgroundColor: "#e8f0fe",
484
- display: "flex",
485
- alignItems: "center",
486
- justifyContent: "center",
487
- marginRight: "12px",
488
- flexShrink: 0
489
- },
490
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
491
- xmlns: "http://www.w3.org/2000/svg",
492
- width: "16",
493
- height: "16",
494
- viewBox: "0 0 24 24",
495
- fill: "none",
496
- stroke: "#1967d2",
497
- strokeWidth: "2",
498
- strokeLinecap: "round",
499
- strokeLinejoin: "round",
500
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
501
- d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"
502
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("polyline", {
503
- points: "14 2 14 8 20 8"
504
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
505
- x1: "16",
506
- y1: "13",
507
- x2: "8",
508
- y2: "13"
509
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
510
- x1: "16",
511
- y1: "17",
512
- x2: "8",
513
- y2: "17"
514
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
515
- x1: "10",
516
- y1: "9",
517
- x2: "8",
518
- y2: "9"
519
- })]
520
- })
521
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
522
- style: {
523
- flex: 1
524
- },
525
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
526
- style: {
527
- fontSize: "16px",
528
- color: "#202124",
529
- fontWeight: "400",
530
- lineHeight: "20px"
531
- },
532
- children: section.title
533
- })
534
- })]
535
- }, section.id))
536
- }), showDownloadButton && onDownload && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
537
- style: {
538
- marginTop: "10px"
539
- },
540
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
541
- onClick: onDownload,
542
- onKeyDown: e => {
543
- if (e.key === "Enter" || e.key === " ") {
544
- e.preventDefault();
545
- onDownload();
546
- }
547
- },
548
- role: "button",
549
- tabIndex: 0,
550
- "aria-label": "T\xE9l\xE9charger le guide complet",
551
- style: {
552
- display: "flex",
553
- alignItems: "center",
554
- justifyContent: "center",
555
- gap: "6px",
556
- color: "#1967d2",
557
- fontSize: "14px",
558
- textDecoration: "none",
559
- padding: "8px",
560
- borderRadius: "4px",
561
- transition: "background-color 0.2s",
562
- cursor: loadingDownload ? "not-allowed" : "pointer",
563
- opacity: loadingDownload ? 0.6 : 1
564
- },
565
- onMouseEnter: e => !loadingDownload && (e.currentTarget.style.backgroundColor = "#f1f3f4"),
566
- onMouseLeave: e => e.currentTarget.style.backgroundColor = "transparent",
567
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
568
- children: "T\xE9l\xE9charger le guide complet"
569
- }), loadingDownload ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
570
- size: 16,
571
- sx: {
572
- color: "#1967d2"
573
- }
574
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
575
- xmlns: "http://www.w3.org/2000/svg",
576
- width: "16",
577
- height: "16",
578
- viewBox: "0 0 24 24",
579
- fill: "none",
580
- stroke: "currentColor",
581
- strokeWidth: "2",
582
- strokeLinecap: "round",
583
- strokeLinejoin: "round",
584
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
585
- d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"
586
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("polyline", {
587
- points: "7 10 12 15 17 10"
588
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
589
- x1: "12",
590
- y1: "15",
591
- x2: "12",
592
- y2: "3"
593
- })]
594
- })]
595
- })
596
- }), showExternalLinkLabel && externalLinkUrl && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
597
- style: {
598
- marginTop: "10px"
599
- },
600
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
601
- onClick: () => window.open(externalLinkUrl, "_blank"),
602
- onKeyDown: e => {
603
- if (e.key === "Enter" || e.key === " ") {
604
- e.preventDefault();
605
- window.open(externalLinkUrl, "_blank");
606
- }
607
- },
608
- role: "button",
609
- tabIndex: 0,
610
- "aria-label": "Voir plus de d\xE9tails (ouvre dans un nouvel onglet)",
611
- style: {
612
- display: "flex",
613
- alignItems: "center",
614
- justifyContent: "center",
615
- gap: "6px",
616
- color: "#1967d2",
617
- fontSize: "14px",
618
- textDecoration: "none",
619
- padding: "8px",
620
- borderRadius: "4px",
621
- transition: "background-color 0.2s",
622
- cursor: "pointer"
623
- },
624
- onMouseEnter: e => e.currentTarget.style.backgroundColor = "#f1f3f4",
625
- onMouseLeave: e => e.currentTarget.style.backgroundColor = "transparent",
626
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
627
- children: "Voir plus de d\xE9tails"
628
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
629
- xmlns: "http://www.w3.org/2000/svg",
630
- width: "16",
631
- height: "16",
632
- viewBox: "0 0 24 24",
633
- fill: "none",
634
- stroke: "currentColor",
635
- strokeWidth: "2",
636
- strokeLinecap: "round",
637
- strokeLinejoin: "round",
638
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
639
- d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
640
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("polyline", {
641
- points: "15 3 21 3 21 9"
642
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
643
- x1: "21",
644
- y1: "3",
645
- x2: "10",
646
- y2: "14"
647
- })]
648
- })]
649
- })
650
- })]
651
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
652
- style: {
653
- textAlign: "center",
654
- padding: "50px 20px",
655
- color: "#202124"
656
- },
657
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
658
- component: "div",
659
- sx: {
660
- fontSize: "14px",
661
- lineHeight: "normal",
662
- color: "#202124"
663
- },
664
- children: "Aucune section disponible."
665
- })
666
- })
667
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
668
- children: selectedSection && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
669
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
670
- style: {
671
- marginBottom: "14px",
672
- marginTop: "4px"
673
- },
674
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
675
- style: {
676
- fontSize: "28px",
677
- color: "#202124",
678
- fontWeight: "400",
679
- lineHeight: "32px",
680
- margin: 0
681
- },
682
- children: selectedSection.title
683
- })
684
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
685
- style: {
686
- marginBottom: "20px"
687
- },
688
- children: selectedSection.paragraphs && selectedSection.paragraphs.map((paragraph, index) => {
689
- const text = typeof paragraph === "string" ? paragraph : paragraph.text;
690
- const isQuestion = typeof paragraph === "object" && paragraph.isQuestion;
691
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
692
- style: {
693
- fontSize: "16px",
694
- color: "#202124",
695
- lineHeight: "22px",
696
- margin: index === 0 ? 0 : "12px 0 0 0",
697
- fontWeight: isQuestion ? "600" : "400"
698
- },
699
- children: text
700
- }, index);
701
- })
702
- }), selectedSection.images && selectedSection.images.length > 0 && projectCode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GuideImage.GuideImageGallery, {
703
- projectCode: projectCode,
704
- imageOrders: selectedSection.images,
705
- columns: 1,
706
- onImageClick: handleImageClick
707
- }), selectedSection.keywords && selectedSection.keywords.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
708
- style: {
709
- marginTop: "20px",
710
- marginBottom: "20px"
711
- },
712
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
713
- style: {
714
- fontSize: "13px",
715
- fontWeight: "500",
716
- color: "#202124",
717
- margin: "0 0 10px 0",
718
- letterSpacing: "0.5px"
719
- },
720
- children: "Mots-cl\xE9s"
721
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
722
- style: {
723
- display: "flex",
724
- flexWrap: "wrap",
725
- gap: "6px"
726
- },
727
- children: selectedSection.keywords.map((keyword, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
728
- style: {
729
- backgroundColor: "#e8f0fe",
730
- color: "#1967d2",
731
- padding: "4px 10px",
732
- borderRadius: "12px",
733
- fontSize: "12px",
734
- fontWeight: "500"
735
- },
736
- children: keyword
737
- }, index))
738
- })]
739
- }), projectCode && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
740
- style: {
741
- marginTop: "24px",
742
- paddingTop: "16px",
743
- borderTop: "1px solid #e8eaed"
744
- },
745
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
746
- onClick: handleOpenInNewWindow,
747
- onKeyDown: e => {
748
- if (e.key === "Enter" || e.key === " ") {
749
- e.preventDefault();
750
- handleOpenInNewWindow();
751
- }
752
- },
753
- role: "button",
754
- tabIndex: 0,
755
- "aria-label": "Ouvrir dans une nouvelle fen\xEAtre",
756
- style: {
757
- display: "flex",
758
- alignItems: "center",
759
- justifyContent: "center",
760
- gap: "6px",
761
- color: "#1967d2",
762
- fontSize: "14px",
763
- padding: "8px",
764
- borderRadius: "4px",
765
- cursor: "pointer",
766
- transition: "background-color 0.2s"
767
- },
768
- onMouseEnter: e => e.currentTarget.style.backgroundColor = "#f1f3f4",
769
- onMouseLeave: e => e.currentTarget.style.backgroundColor = "transparent",
770
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
771
- children: "Ouvrir dans une nouvelle fen\xEAtre"
772
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
773
- xmlns: "http://www.w3.org/2000/svg",
774
- width: "16",
775
- height: "16",
776
- viewBox: "0 0 24 24",
777
- fill: "none",
778
- stroke: "currentColor",
779
- strokeWidth: "2",
780
- strokeLinecap: "round",
781
- strokeLinejoin: "round",
782
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
783
- d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
784
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("polyline", {
785
- points: "15 3 21 3 21 9"
786
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
787
- x1: "10",
788
- y1: "14",
789
- x2: "21",
790
- y2: "3"
791
- })]
792
- })]
793
- })
794
- })]
795
- })
796
- })
797
- })]
798
- }), fullscreenImage && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
799
- onClick: handleCloseFullscreen,
800
- style: {
801
- position: "fixed",
802
- top: 0,
803
- left: 0,
804
- width: "100vw",
805
- height: "100vh",
806
- backgroundColor: "rgba(0, 0, 0, 0.78)",
807
- zIndex: 20000000,
808
- display: "flex",
809
- alignItems: "center",
810
- justifyContent: "center",
811
- cursor: "zoom-out",
812
- animation: "fadeIn 0.2s ease-in-out"
813
- },
814
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
815
- onClick: handleCloseFullscreen,
816
- style: {
817
- position: "absolute",
818
- top: "20px",
819
- right: "20px",
820
- background: "rgba(255, 255, 255, 0.1)",
821
- border: "none",
822
- borderRadius: "50%",
823
- width: "48px",
824
- height: "48px",
825
- cursor: "pointer",
826
- display: "flex",
827
- alignItems: "center",
828
- justifyContent: "center",
829
- transition: "background-color 0.2s",
830
- zIndex: 20000001
831
- },
832
- onMouseEnter: e => e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.2)",
833
- onMouseLeave: e => e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.1)",
834
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
835
- xmlns: "http://www.w3.org/2000/svg",
836
- width: "24",
837
- height: "24",
838
- viewBox: "0 0 24 24",
839
- fill: "none",
840
- stroke: "white",
841
- strokeWidth: "2",
842
- strokeLinecap: "round",
843
- strokeLinejoin: "round",
844
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
845
- x1: "18",
846
- y1: "6",
847
- x2: "6",
848
- y2: "18"
849
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
850
- x1: "6",
851
- y1: "6",
852
- x2: "18",
853
- y2: "18"
854
- })]
855
- })
856
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
857
- src: fullscreenImage,
858
- alt: "Full screen view",
859
- onClick: e => e.stopPropagation(),
860
- style: {
861
- maxWidth: "90vw",
862
- maxHeight: "90vh",
863
- objectFit: "contain",
864
- cursor: "default",
865
- boxShadow: "0 4px 20px rgba(0, 0, 0, 0.5)"
866
- }
867
- })]
868
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("style", {
869
- children: "\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n \n /* Focus indicators for ContentPanel */\n [role=\"dialog\"] button:focus-visible,\n [role=\"dialog\"] [role=\"button\"]:focus-visible,\n [role=\"dialog\"] a:focus-visible {\n outline: 3px solid #1967d2 !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 4px rgba(25, 103, 210, 0.1) !important;\n }\n \n [role=\"dialog\"] button:focus:not(:focus-visible),\n [role=\"dialog\"] a:focus:not(:focus-visible) {\n outline: none;\n }\n "
870
- })]
871
- });
872
- };
873
- const BottomContent = _ref2 => {
874
- let {
875
- showTijaria,
876
- viewingReclamations,
877
- viewingTijariaHistory,
878
- activeChat,
879
- infoMessages,
880
- incidentMessages,
881
- setViewingReclamations,
882
- setViewingTijariaHistory,
883
- setActiveChat,
884
- setInfoMessages,
885
- setIncidentMessages
886
- } = _ref2;
887
- const [selectedConversation, setSelectedConversation] = (0, _react.useState)(null);
888
- if (viewingReclamations) {
889
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(ReclamationsList, {
890
- onClose: () => setViewingReclamations(false)
891
- });
892
- }
893
- if (viewingTijariaHistory) {
894
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(TijariaHistory, {
895
- onClose: () => setViewingTijariaHistory(false),
896
- setSelectedConversation: setSelectedConversation
897
- });
898
- }
899
- if (activeChat) {
900
- const messages = activeChat === "info" ? infoMessages : incidentMessages;
901
- const setMessages = activeChat === "info" ? setInfoMessages : setIncidentMessages;
902
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(CustomChatInterface, {
903
- type: activeChat,
904
- onClose: () => setActiveChat(null),
905
- messages: messages,
906
- setMessages: setMessages
907
- });
908
- }
909
- if (!showTijaria) {
910
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
911
- style: {
912
- flex: 1
913
- }
914
- });
915
- }
916
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(TijariaChatbot, {
917
- selectedConversation: selectedConversation
918
- });
919
- };
920
- const CustomChatInterface = _ref3 => {
921
- let {
922
- type,
923
- onClose,
924
- messages,
925
- setMessages
926
- } = _ref3;
927
- const [inputMessage, setInputMessage] = (0, _react.useState)("");
928
- const [selectedFile, setSelectedFile] = (0, _react.useState)(null);
929
- const chatRef = (0, _react.useRef)(null);
930
- const fileInputRef = (0, _react.useRef)(null);
931
- const chatConfig = {
932
- info: {
933
- title: "Live Support",
934
- icon: _freeSolidSvgIcons.faHeadset,
935
- color: "#17a2b8",
936
- placeholder: "Posez votre question..."
937
- },
938
- incident: {
939
- title: "Signaler un incident",
940
- icon: _freeSolidSvgIcons.faWarning,
941
- color: "#E82930",
942
- placeholder: "Décrivez l'incident..."
943
- }
944
- };
945
- const config = chatConfig[type];
946
- (0, _react.useEffect)(() => {
947
- if (chatRef.current) {
948
- chatRef.current.scrollTop = chatRef.current.scrollHeight;
949
- }
950
- }, [messages]);
951
- const handleSendMessage = () => {
952
- if (!inputMessage.trim() && !selectedFile) return;
953
- const newMessage = {
954
- id: Date.now(),
955
- sender: "user",
956
- text: inputMessage,
957
- file: selectedFile,
958
- timestamp: new Date()
959
- };
960
- setMessages([...messages, newMessage]);
961
- setInputMessage("");
962
- setSelectedFile(null);
963
- setTimeout(() => {
964
- const responseMessage = {
965
- id: Date.now() + 1,
966
- sender: "agent",
967
- text: type === "info" ? "Merci pour votre question. Notre équipe reviendra vers vous dans les plus brefs délais." : "Votre incident a été enregistré. Nous vous contacterons bientôt pour le suivi.",
968
- timestamp: new Date()
969
- };
970
- setMessages(prev => [...prev, responseMessage]);
971
- }, 1000);
972
- };
973
- const handleFileSelect = e => {
974
- const file = e.target.files[0];
975
- if (file) {
976
- setSelectedFile(file);
977
- }
978
- };
979
- const handleKeyPress = e => {
980
- if (e.key === "Enter" && !e.shiftKey) {
981
- e.preventDefault();
982
- handleSendMessage();
983
- }
984
- };
985
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
986
- style: {
987
- flex: 1,
988
- display: "flex",
989
- flexDirection: "column",
990
- backgroundColor: "#f5f5f5"
991
- },
992
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
993
- style: {
994
- display: "flex",
995
- justifyContent: "space-between",
996
- alignItems: "center",
997
- padding: "12px 16px",
998
- backgroundColor: "white",
999
- borderBottom: "1px solid #e0e0e0"
1000
- },
1001
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1002
- style: {
1003
- display: "flex",
1004
- alignItems: "center",
1005
- gap: "12px",
1006
- paddingTop: 1,
1007
- paddingBottom: 2.5
1008
- }
1009
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1010
- onClick: onClose,
1011
- style: {
1012
- cursor: "pointer",
1013
- color: "#666",
1014
- padding: "4px",
1015
- display: "flex",
1016
- alignItems: "center"
1017
- },
1018
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
1019
- icon: _freeSolidSvgIcons.faTimes,
1020
- style: {
1021
- fontSize: "16px"
1022
- }
1023
- })
1024
- })]
1025
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1026
- style: {
1027
- display: "flex",
1028
- alignItems: "center",
1029
- gap: "12px",
1030
- padding: "16px",
1031
- backgroundColor: "white",
1032
- borderBottom: "1px solid #e0e0e0"
1033
- },
1034
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1035
- style: {
1036
- width: "40px",
1037
- height: "40px",
1038
- borderRadius: "8px",
1039
- backgroundColor: "#f5f5f5",
1040
- display: "flex",
1041
- alignItems: "center",
1042
- justifyContent: "center"
1043
- },
1044
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
1045
- icon: config.icon,
1046
- style: {
1047
- color: config.color,
1048
- fontSize: "20px"
1049
- }
1050
- })
1051
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1052
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1053
- style: {
1054
- fontWeight: "400",
1055
- color: "#333",
1056
- fontSize: "16px"
1057
- },
1058
- children: config.title
1059
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1060
- style: {
1061
- color: "#999",
1062
- fontSize: "12px"
1063
- },
1064
- children: "Support Agent"
1065
- })]
1066
- })]
1067
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1068
- ref: chatRef,
1069
- style: {
1070
- flex: 1,
1071
- overflowY: "auto",
1072
- padding: "16px",
1073
- backgroundColor: "#f5f5f5"
1074
- },
1075
- children: messages.map(message => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1076
- style: {
1077
- display: "flex",
1078
- flexDirection: "column",
1079
- alignItems: message.sender === "user" ? "flex-end" : "flex-start",
1080
- marginBottom: "16px"
1081
- },
1082
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1083
- style: {
1084
- display: "flex",
1085
- alignItems: "center",
1086
- gap: "6px",
1087
- marginBottom: "4px"
1088
- },
1089
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1090
- style: {
1091
- width: "6px",
1092
- height: "6px",
1093
- borderRadius: "50%",
1094
- backgroundColor: message.sender === "user" ? config.color : "#4CAF50"
1095
- }
1096
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
1097
- style: {
1098
- color: "#999",
1099
- fontSize: "11px"
1100
- },
1101
- children: [message.sender === "user" ? "Vous" : "Support", " ", message.timestamp.toLocaleTimeString("fr-FR", {
1102
- hour: "2-digit",
1103
- minute: "2-digit"
1104
- })]
1105
- })]
1106
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1107
- style: {
1108
- maxWidth: "75%",
1109
- padding: "12px 16px",
1110
- borderRadius: "8px",
1111
- backgroundColor: message.sender === "user" ? config.color : "white",
1112
- color: message.sender === "user" ? "white" : "#333",
1113
- boxShadow: message.sender !== "user" ? "0 1px 3px rgba(0,0,0,0.1)" : "none"
1114
- },
1115
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1116
- style: {
1117
- fontSize: "14px",
1118
- lineHeight: "1.5",
1119
- whiteSpace: "pre-wrap",
1120
- wordBreak: "break-word"
1121
- },
1122
- children: message.text
1123
- }), message.file && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1124
- style: {
1125
- marginTop: "8px",
1126
- padding: "8px",
1127
- backgroundColor: message.sender === "user" ? "rgba(255,255,255,0.2)" : "#f5f5f5",
1128
- borderRadius: "4px",
1129
- fontSize: "12px",
1130
- display: "flex",
1131
- alignItems: "center",
1132
- gap: "6px"
1133
- },
1134
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
1135
- icon: _freeSolidSvgIcons.faPaperclip
1136
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
1137
- children: message.file.name
1138
- })]
1139
- })]
1140
- }), message.sender === "user" && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
1141
- style: {
1142
- color: "#999",
1143
- fontSize: "10px",
1144
- marginTop: "4px"
1145
- },
1146
- children: "Lu"
1147
- })]
1148
- }, message.id))
1149
- }), selectedFile && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1150
- style: {
1151
- padding: "8px 16px",
1152
- backgroundColor: "#fff3cd",
1153
- borderTop: "1px solid #ffc107",
1154
- display: "flex",
1155
- alignItems: "center",
1156
- justifyContent: "space-between"
1157
- },
1158
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1159
- style: {
1160
- display: "flex",
1161
- alignItems: "center",
1162
- gap: "8px",
1163
- fontSize: "12px"
1164
- },
1165
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
1166
- icon: _freeSolidSvgIcons.faPaperclip,
1167
- style: {
1168
- color: "#856404"
1169
- }
1170
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
1171
- style: {
1172
- color: "#856404"
1173
- },
1174
- children: selectedFile.name
1175
- })]
1176
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
1177
- icon: _freeSolidSvgIcons.faTimes,
1178
- style: {
1179
- cursor: "pointer",
1180
- color: "#856404"
1181
- },
1182
- onClick: () => setSelectedFile(null)
1183
- })]
1184
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
1185
- style: {
1186
- display: "flex",
1187
- alignItems: "flex-end",
1188
- gap: "8px",
1189
- padding: "12px 16px",
1190
- backgroundColor: "white",
1191
- borderTop: "1px solid #e0e0e0"
1192
- },
1193
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactstrap.Input, {
1194
- type: "textarea",
1195
- rows: "1",
1196
- style: {
1197
- flex: 1,
1198
- border: "none",
1199
- resize: "none",
1200
- fontSize: "14px",
1201
- padding: "8px",
1202
- maxHeight: "100px",
1203
- overflowY: "auto",
1204
- outline: "none",
1205
- boxShadow: "none",
1206
- fontWeight: "400"
1207
- },
1208
- placeholder: config.placeholder,
1209
- value: inputMessage,
1210
- onChange: e => setInputMessage(e.target.value),
1211
- onKeyPress: handleKeyPress
1212
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
1213
- type: "file",
1214
- ref: fileInputRef,
1215
- style: {
1216
- display: "none"
1217
- },
1218
- onChange: handleFileSelect
1219
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1220
- onClick: () => {
1221
- var _fileInputRef$current;
1222
- return (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 ? void 0 : _fileInputRef$current.click();
1223
- },
1224
- style: {
1225
- cursor: "pointer",
1226
- color: "#999",
1227
- padding: "8px",
1228
- display: "flex",
1229
- alignItems: "center"
1230
- },
1231
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
1232
- icon: _freeSolidSvgIcons.faPaperclip,
1233
- style: {
1234
- fontSize: "18px"
1235
- }
1236
- })
1237
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
1238
- onClick: handleSendMessage,
1239
- style: {
1240
- cursor: inputMessage.trim() || selectedFile ? "pointer" : "not-allowed",
1241
- color: inputMessage.trim() || selectedFile ? config.color : "#ccc",
1242
- padding: "8px",
1243
- display: "flex",
1244
- alignItems: "center",
1245
- transition: "color 0.2s"
1246
- },
1247
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
1248
- icon: _freeSolidSvgIcons.faPaperPlane,
1249
- style: {
1250
- fontSize: "18px"
1251
- }
1252
- })
1253
- })]
1254
- })]
1255
- });
1256
- };
1257
- const ReclamationFormModal = _ref4 => {
1258
- var _formData$service;
1259
- let {
1260
- open,
1261
- onClose
1262
- } = _ref4;
1263
- const [activeStep, setActiveStep] = (0, _react.useState)(0);
1264
- const [formData, setFormData] = (0, _react.useState)({
1265
- type: "",
1266
- service: "",
1267
- nature: "",
1268
- objet: "",
1269
- sujet: "",
1270
- telephone: "",
1271
- files: []
1272
- });
1273
- const [submitted, setSubmitted] = (0, _react.useState)(false);
1274
- const [referenceNumber, setReferenceNumber] = (0, _react.useState)("");
1275
- const {
1276
- mutate: createReclamation,
1277
- isLoading
1278
- } = (0, _useReclamation.useCreateReclamation)();
1279
- const {
1280
- data: listServiceReclamation,
1281
- isFetching: isFetchingListServiceReclamation
1282
- } = (0, _useReclamation.useListServiceReclamation)();
1283
- const {
1284
- data: listNatureReclamation,
1285
- isFetching: isFetchingListNatureReclamation
1286
- } = (0, _useReclamation.useListNatureReclamation)((_formData$service = formData.service) === null || _formData$service === void 0 ? void 0 : _formData$service.codigo);
1287
- const [error, setError] = (0, _react.useState)(null);
1288
- const errorRef = (0, _react.useRef)(null);
1289
- const CustomPopper = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Popper, _objectSpread(_objectSpread({}, props), {}, {
1290
- placement: "bottom-start",
1291
- disablePortal: true
1292
- }));
1293
- const reclamationTypes = [{
1294
- codigo: "BESOIN_INFORMATIONS",
1295
- libelle: "Besoin d'informations"
1296
- }, {
1297
- codigo: "RECLAMATION",
1298
- libelle: "Réclamation"
1299
- }, {
1300
- codigo: "SIGNALER_INCIDENT_TECHNIQUE",
1301
- libelle: "Signaler un incident technique"
1302
- }];
1303
- const steps = ["Type de demande", "Service concerné", "Détails"];
1304
- const ALLOWED_FILE_TYPES = {
1305
- extensions: ".pdf,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif",
1306
- mimeTypes: ["application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "image/jpeg", "image/png", "image/gif"]
1307
- };
1308
- const dialogContentRef = (0, _react.useRef)(null);
1309
- (0, _react.useEffect)(() => {
1310
- if (dialogContentRef.current) {
1311
- dialogContentRef.current.scrollTop = 0;
1312
- }
1313
- }, [activeStep]);
1314
- (0, _react.useEffect)(() => {
1315
- if (!open) {
1316
- setTimeout(() => {
1317
- setActiveStep(0);
1318
- setFormData({
1319
- type: "",
1320
- service: "",
1321
- objet: "",
1322
- sujet: "",
1323
- files: []
1324
- });
1325
- setSubmitted(false);
1326
- setReferenceNumber("");
1327
- }, 300);
1328
- }
1329
- }, [open]);
1330
- (0, _react.useEffect)(() => {
1331
- setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1332
- nature: ""
1333
- }));
1334
- }, [formData.service]);
1335
- (0, _react.useEffect)(() => {
1336
- if (error && errorRef.current) {
1337
- errorRef.current.scrollIntoView({
1338
- behavior: "smooth",
1339
- block: "center"
1340
- });
1341
- }
1342
- }, [error]);
1343
- const handleNext = () => {
1344
- setActiveStep(prev => prev + 1);
1345
- };
1346
- const handleBack = () => {
1347
- setActiveStep(prev => prev - 1);
1348
- };
1349
- const handleTypeChange = value => {
1350
- setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1351
- type: value
1352
- }));
1353
- };
1354
- const handleServiceChange = (event, value) => {
1355
- setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1356
- service: value
1357
- }));
1358
- };
1359
- const handleFileSelect = event => {
1360
- const newFiles = Array.from(event.target.files);
1361
- const maxSize = 2 * 1024 * 1024;
1362
- let hasErrors = false;
1363
- let errorMessages = [];
1364
- setError(null);
1365
- const validFiles = newFiles.filter(file => {
1366
- if (!ALLOWED_FILE_TYPES.mimeTypes.includes(file.type)) {
1367
- const errorMsg = "".concat(file.name, ": Type de fichier non autoris\xE9.");
1368
- errorMessages.push(errorMsg);
1369
- hasErrors = true;
1370
- return false;
1371
- }
1372
- if (file.size > maxSize) {
1373
- const errorMsg = "".concat(file.name, ": Taille sup\xE9rieure \xE0 2 Mo.");
1374
- errorMessages.push(errorMsg);
1375
- hasErrors = true;
1376
- return false;
1377
- }
1378
- return true;
1379
- });
1380
- if (hasErrors) {
1381
- const fullError = errorMessages.join(" ");
1382
- setError(fullError);
1383
- _reactToastify.toast.error(fullError);
1384
- }
1385
- setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1386
- files: [...prev.files, ...validFiles]
1387
- }));
1388
- };
1389
- const removeFile = indexToRemove => {
1390
- setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1391
- files: prev.files.filter((_, index) => index !== indexToRemove)
1392
- }));
1393
- };
1394
- const handleSubmit = () => {
1395
- setError(null);
1396
- createReclamation(formData, {
1397
- onSuccess: res => {
1398
- setReferenceNumber(res === null || res === void 0 ? void 0 : res.reference);
1399
- setSubmitted(true);
1400
- setError(null);
1401
- },
1402
- onError: err => {
1403
- var _err$response$data$me, _err$response;
1404
- const errorMessage = (_err$response$data$me = (_err$response = err.response) === null || _err$response === void 0 || (_err$response = _err$response.data) === null || _err$response === void 0 ? void 0 : _err$response.message) !== null && _err$response$data$me !== void 0 ? _err$response$data$me : "Une erreur est survenue, veuillez réessayer plus tard.";
1405
- setError(errorMessage);
1406
- _reactToastify.toast.error(errorMessage);
1407
- }
1408
- });
1409
- };
1410
- const handleClose = () => {
1411
- setError(null);
1412
- onClose();
1413
- };
1414
- const canProceedStep1 = formData.type !== "";
1415
- const canProceedStep2 = formData.service !== "" && formData.nature !== "";
1416
- const canSubmit = formData.objet && formData.sujet && PHONE_RE.test(formData.telephone.replace(/[\s.-]/g, ""));
1417
- const renderStepContent = () => {
1418
- switch (activeStep) {
1419
- case 0:
1420
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Fade, {
1421
- in: true,
1422
- timeout: 500,
1423
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1424
- className: "step-content",
1425
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1426
- variant: "h5",
1427
- className: "step-title",
1428
- gutterBottom: true,
1429
- children: "Quel est le type de votre demande ?"
1430
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1431
- variant: "body2",
1432
- color: "text.secondary",
1433
- sx: {
1434
- mb: 4
1435
- },
1436
- children: "S\xE9lectionnez le type qui correspond le mieux \xE0 votre besoin"
1437
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.FormControl, {
1438
- fullWidth: true,
1439
- variant: "outlined",
1440
- className: "type-select",
1441
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.InputLabel, {
1442
- id: "type-label",
1443
- children: "Type de demande"
1444
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Select, {
1445
- labelId: "type-label",
1446
- value: formData.type,
1447
- onChange: e => handleTypeChange(e.target.value),
1448
- label: "Type de demande",
1449
- children: reclamationTypes.map(type => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
1450
- value: type.codigo,
1451
- children: type.libelle
1452
- }, type.codigo))
1453
- })]
1454
- })]
1455
- })
1456
- });
1457
- case 1:
1458
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Fade, {
1459
- in: true,
1460
- timeout: 500,
1461
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1462
- className: "step-content",
1463
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1464
- variant: "h5",
1465
- className: "step-title",
1466
- gutterBottom: true,
1467
- children: "Quel service est concern\xE9 ?"
1468
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1469
- variant: "body2",
1470
- color: "text.secondary",
1471
- sx: {
1472
- mb: formData.type === "Besoin d'informations" ? 3 : 4
1473
- },
1474
- children: "Recherchez et s\xE9lectionnez le service appropri\xE9"
1475
- }), formData.type === "Besoin d'informations" && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Alert, {
1476
- severity: "Besoin d'informations",
1477
- icon: false,
1478
- sx: {
1479
- mb: 3,
1480
- pt: 1,
1481
- pb: 1,
1482
- borderRadius: 2,
1483
- backgroundColor: "#f5f9ff",
1484
- border: "1px solid #90caf9",
1485
- display: "flex",
1486
- flexDirection: "column",
1487
- maxWidth: 400,
1488
- mx: "auto"
1489
- },
1490
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.AlertTitle, {
1491
- sx: {
1492
- fontWeight: 600
1493
- },
1494
- children: "Besoin d'aide imm\xE9diate ?"
1495
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Typography, {
1496
- variant: "body2",
1497
- sx: {
1498
- mt: 0.5,
1499
- textAlign: "center"
1500
- },
1501
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("strong", {
1502
- children: "Assistance t\xE9l\xE9phonique: "
1503
- }), " \uD83D\uDCDE +212 520 47 31 00"]
1504
- })]
1505
- }), formData.type === "Besoin d'informations" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
1506
- sx: {
1507
- mt: 3
1508
- }
1509
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1510
- sx: {
1511
- display: "flex",
1512
- flexDirection: "column",
1513
- gap: 3
1514
- },
1515
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Autocomplete, {
1516
- options: listServiceReclamation || [],
1517
- loading: isFetchingListServiceReclamation,
1518
- value: formData.service || "",
1519
- onChange: handleServiceChange,
1520
- getOptionLabel: option => (option === null || option === void 0 ? void 0 : option.libelle) || "",
1521
- renderInput: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, _objectSpread(_objectSpread({}, params), {}, {
1522
- label: "Rechercher un service",
1523
- placeholder: "Commencez \xE0 taper...",
1524
- variant: "outlined",
1525
- fullWidth: true
1526
- })),
1527
- renderOption: (props, option) => /*#__PURE__*/(0, _jsxRuntime.jsx)("li", _objectSpread(_objectSpread({}, props), {}, {
1528
- className: "service-option",
1529
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1530
- display: "flex",
1531
- alignItems: "center",
1532
- gap: 1,
1533
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
1534
- className: "service-bullet"
1535
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1536
- children: option === null || option === void 0 ? void 0 : option.libelle
1537
- })]
1538
- })
1539
- })),
1540
- PopperComponent: CustomPopper,
1541
- noOptionsText: "Aucun service trouv\xE9",
1542
- className: "service-autocomplete"
1543
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Autocomplete, {
1544
- options: listNatureReclamation || [],
1545
- loading: isFetchingListNatureReclamation,
1546
- value: formData.nature || "",
1547
- disabled: !formData.service,
1548
- onChange: (e, value) => setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1549
- nature: value
1550
- })),
1551
- getOptionLabel: option => (option === null || option === void 0 ? void 0 : option.libelle) || "",
1552
- renderInput: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, _objectSpread(_objectSpread({}, params), {}, {
1553
- label: "Nature de la demande",
1554
- placeholder: formData.service ? "Commencez à taper..." : "Sélectionnez d'abord un service",
1555
- variant: "outlined",
1556
- fullWidth: true
1557
- })),
1558
- renderOption: (props, option) => /*#__PURE__*/(0, _jsxRuntime.jsx)("li", _objectSpread(_objectSpread({}, props), {}, {
1559
- className: "service-option",
1560
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1561
- display: "flex",
1562
- alignItems: "center",
1563
- gap: 1,
1564
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
1565
- className: "service-bullet"
1566
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1567
- children: option === null || option === void 0 ? void 0 : option.libelle
1568
- })]
1569
- })
1570
- })),
1571
- PopperComponent: CustomPopper,
1572
- noOptionsText: "Aucune nature trouv\xE9e",
1573
- className: "service-autocomplete"
1574
- })]
1575
- })]
1576
- })
1577
- });
1578
- case 2:
1579
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Fade, {
1580
- in: true,
1581
- timeout: 500,
1582
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1583
- className: "step-content details-step",
1584
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1585
- variant: "h5",
1586
- className: "step-title",
1587
- gutterBottom: true,
1588
- children: "Compl\xE9tez votre demande"
1589
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1590
- variant: "body2",
1591
- color: "text.secondary",
1592
- sx: {
1593
- mb: 4
1594
- },
1595
- children: "Fournissez les d\xE9tails n\xE9cessaires pour traiter votre demande"
1596
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1597
- className: "form-fields",
1598
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, {
1599
- fullWidth: true,
1600
- required: true,
1601
- label: "T\xE9l\xE9phone",
1602
- value: formData.telephone,
1603
- onChange: e => setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1604
- telephone: e.target.value
1605
- })),
1606
- error: Boolean(formData.telephone) && !PHONE_RE.test(formData.telephone.replace(/[\s.-]/g, "")),
1607
- helperText: "Format : 06 61 00 00 00, +212 6 61 00 00 00 ou 0212 6 61 00 00 00.",
1608
- variant: "outlined",
1609
- className: "form-field"
1610
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, {
1611
- fullWidth: true,
1612
- required: true,
1613
- label: "Objet",
1614
- placeholder: "R\xE9sum\xE9 de votre demande",
1615
- value: formData.objet,
1616
- onChange: e => setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1617
- objet: e.target.value
1618
- })),
1619
- variant: "outlined",
1620
- className: "form-field"
1621
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, {
1622
- fullWidth: true,
1623
- required: true,
1624
- label: "Sujet",
1625
- placeholder: "D\xE9crivez en d\xE9tail votre demande...",
1626
- value: formData.sujet,
1627
- onChange: e => setFormData(prev => _objectSpread(_objectSpread({}, prev), {}, {
1628
- sujet: e.target.value
1629
- })),
1630
- variant: "outlined",
1631
- multiline: true,
1632
- rows: 6,
1633
- className: "form-field",
1634
- inputProps: {
1635
- maxLength: 500
1636
- }
1637
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1638
- className: "file-upload-section",
1639
- sx: {
1640
- mb: 3
1641
- },
1642
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
1643
- type: "file",
1644
- id: "file-upload",
1645
- accept: ALLOWED_FILE_TYPES.extensions,
1646
- hidden: true,
1647
- multiple: true,
1648
- onChange: handleFileSelect
1649
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
1650
- htmlFor: "file-upload",
1651
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
1652
- variant: "outlined",
1653
- component: "span",
1654
- startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.CloudUpload, {}),
1655
- className: "upload-button",
1656
- fullWidth: true,
1657
- children: "Joindre des fichiers (optionnel)"
1658
- })
1659
- }), error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Alert, {
1660
- ref: errorRef,
1661
- severity: "error",
1662
- onClose: () => setError(null),
1663
- style: {
1664
- marginTop: "12px"
1665
- },
1666
- children: error
1667
- }), formData.files.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
1668
- sx: {
1669
- mt: 2,
1670
- display: "flex",
1671
- flexWrap: "wrap",
1672
- gap: 1
1673
- },
1674
- children: formData.files.map((file, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Chip, {
1675
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.AttachFile, {}),
1676
- label: file.name,
1677
- onDelete: () => removeFile(index),
1678
- className: "file-chip",
1679
- color: "primary",
1680
- variant: "outlined"
1681
- }, index))
1682
- })]
1683
- })]
1684
- })]
1685
- })
1686
- });
1687
- default:
1688
- return null;
1689
- }
1690
- };
1691
- if (submitted) {
1692
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Dialog, {
1693
- open: open,
1694
- onClose: handleClose,
1695
- maxWidth: "sm",
1696
- fullWidth: true,
1697
- className: "reclamation-modal success-modal",
1698
- PaperProps: {
1699
- className: "modal-paper"
1700
- },
1701
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogContent, {
1702
- className: "success-content",
1703
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Zoom, {
1704
- in: true,
1705
- timeout: 500,
1706
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1707
- className: "success-container",
1708
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.CheckCircle, {
1709
- className: "success-icon"
1710
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1711
- variant: "h5",
1712
- className: "success-title",
1713
- gutterBottom: true,
1714
- children: "Demande enregistr\xE9e !"
1715
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1716
- variant: "body1",
1717
- color: "text.secondary",
1718
- sx: {
1719
- mb: 3
1720
- },
1721
- children: "Votre demande a \xE9t\xE9 prise en charge avec succ\xE8s"
1722
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Paper, {
1723
- elevation: 3,
1724
- className: "reference-box",
1725
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1726
- variant: "h5",
1727
- className: "reference-number",
1728
- children: referenceNumber
1729
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1730
- variant: "caption",
1731
- color: "text.secondary",
1732
- sx: {
1733
- mt: 1,
1734
- display: "block"
1735
- },
1736
- children: "Conservez ce num\xE9ro pour suivre votre demande"
1737
- })]
1738
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
1739
- variant: "contained",
1740
- onClick: handleClose,
1741
- size: "large",
1742
- className: "close-success-button",
1743
- fullWidth: true,
1744
- children: "Fermer"
1745
- })]
1746
- })
1747
- })
1748
- })
1749
- });
1750
- }
1751
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Dialog, {
1752
- open: open,
1753
- onClose: handleClose,
1754
- maxWidth: "md",
1755
- fullWidth: true,
1756
- scroll: "body",
1757
- className: "reclamation-modal",
1758
- PaperProps: {
1759
- className: "modal-paper"
1760
- },
1761
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1762
- className: "modal-header",
1763
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
1764
- display: "flex",
1765
- alignItems: "center",
1766
- gap: 2,
1767
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1768
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
1769
- variant: "h6",
1770
- className: "header-title",
1771
- children: "Nouvelle demande d'assistance"
1772
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Typography, {
1773
- variant: "caption",
1774
- color: "white",
1775
- children: ["Remplissez ce formulaire en ", steps.length, " \xE9tapes"]
1776
- })]
1777
- })
1778
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
1779
- onClick: handleClose,
1780
- className: "close-button",
1781
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Close, {})
1782
- })]
1783
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1784
- className: "progress-section",
1785
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.LinearProgress, {
1786
- variant: "determinate",
1787
- value: activeStep / (steps.length - 1) * 100,
1788
- className: "progress-bar"
1789
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Stepper, {
1790
- activeStep: activeStep,
1791
- className: "stepper",
1792
- children: steps.map(label => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Step, {
1793
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.StepLabel, {
1794
- children: label
1795
- })
1796
- }, label))
1797
- })]
1798
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogContent, {
1799
- ref: dialogContentRef,
1800
- className: "modal-content",
1801
- style: {
1802
- overflow: activeStep === 1 ? "visible" : "auto"
1803
- },
1804
- children: renderStepContent()
1805
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
1806
- className: "modal-footer",
1807
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
1808
- onClick: handleBack,
1809
- disabled: activeStep === 0,
1810
- startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.ArrowBack, {}),
1811
- className: "back-button",
1812
- children: "Retour"
1813
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
1814
- flex: 1
1815
- }), activeStep < steps.length - 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
1816
- variant: "contained",
1817
- onClick: handleNext,
1818
- endIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.ArrowForward, {}),
1819
- disabled: activeStep === 0 && !canProceedStep1 || activeStep === 1 && !canProceedStep2,
1820
- className: "next-button",
1821
- children: "Suivant"
1822
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
1823
- variant: "contained",
1824
- onClick: handleSubmit,
1825
- disabled: !canSubmit || isLoading,
1826
- className: "submit-button",
1827
- startIcon: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
1828
- size: 16,
1829
- sx: {
1830
- color: "var(--primary-color, #222f67)"
1831
- }
1832
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.CheckCircle, {}),
1833
- children: isLoading ? "Envoi en cours..." : "Soumettre"
1834
- })]
1835
- })]
1836
- });
1837
- };
1838
- const ReclamationsList = _ref5 => {
1839
- var _selectedReclamation$, _selectedReclamation$2, _selectedReclamation$3;
1840
- let {
1841
- onClose
1842
- } = _ref5;
1843
- const queryClient = (0, _reactQuery.useQueryClient)();
1844
- const [selectedReclamation, setSelectedReclamation] = (0, _react.useState)(null);
1845
- const [detailsDialogOpen, setDetailsDialogOpen] = (0, _react.useState)(false);
1846
- const [page, setPage] = (0, _react.useState)(1);
1847
- const [search, setSearch] = (0, _react.useState)();
1848
- const [searchKey, setSearchKey] = (0, _react.useState)("");
1849
- const STATUT_REPONDUE = "REPONDUE";
1850
- const STATUT_EN_ATTENTE_COMPLEMENT = "EN_ATTENTE_COMPLEMENT";
1851
- const STATUT_COLOR_MAP = {
1852
- EN_ATTENTE: "#2196F3",
1853
- EN_COURS: "#FF9800",
1854
- REPONDUE: "#9C27B0",
1855
- REOUVERTE: "#FF5722",
1856
- CLOTUREE: "#4CAF50",
1857
- TRAITE: "#4CAF50"
1858
- };
1859
- const STATUT_ICON_MAP = {
1860
- EN_ATTENTE: "🕐",
1861
- EN_COURS: "⚙️",
1862
- REPONDUE: "💬",
1863
- REOUVERTE: "🔄",
1864
- CLOTUREE: "🔒"
1865
- };
1866
- const getStatusColorByCode = code => STATUT_COLOR_MAP[(code || "").toUpperCase()] || "#757575";
1867
- const [reouvreDialogOpen, setReouvreDialogOpen] = (0, _react.useState)(false);
1868
- const [reouvreDescription, setReouvreDescription] = (0, _react.useState)("");
1869
- const [reouvreFiles, setReouvreFiles] = (0, _react.useState)([]);
1870
- const reouvreFileInputRef = (0, _react.useRef)(null);
1871
- const {
1872
- data: reclamations,
1873
- isFetching,
1874
- error
1875
- } = (0, _useReclamation.useListReclamation)(page, searchKey);
1876
- const {
1877
- mutate: downloadDocument,
1878
- isLoading: isDownloading,
1879
- error: errorDownloadDocument
1880
- } = (0, _useReclamation.useDownloadDocument)();
1881
- const {
1882
- mutate: clotureReclamation,
1883
- isLoading: isCloturing
1884
- } = (0, _useReclamation.useClotureReclamation)();
1885
- const {
1886
- mutate: reouvreReclamation,
1887
- isLoading: isReouvring
1888
- } = (0, _useReclamation.useReouvreReclamation)();
1889
- const getStatusColor = statut => {
1890
- switch ((statut || "").toLowerCase()) {
1891
- case "traité":
1892
- case "cloturee":
1893
- return "#4CAF50";
1894
- case "en cours":
1895
- return "#FF9800";
1896
- case "en attente":
1897
- return "#2196F3";
1898
- case "repondue":
1899
- return "#9C27B0";
1900
- case "reouverte":
1901
- return "#FF5722";
1902
- default:
1903
- return "#757575";
1904
- }
1905
- };
1906
- const URL_RE = /(https?:\/\/[^\s)]+)/g;
1907
- const renderTextWithLinks = text => {
1908
- if (!text) return null;
1909
- const parts = text.split(URL_RE);
1910
- return parts.map((part, i) => /^https?:\/\//.test(part) ? /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
1911
- href: part,
1912
- target: "_blank",
1913
- rel: "noopener noreferrer",
1914
- style: {
1915
- color: "var(--primary-color, #222f67)",
1916
- fontWeight: 600,
1917
- textDecoration: "underline",
1918
- wordBreak: "break-all"
1919
- },
1920
- children: part
1921
- }, i) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
1922
- children: part
1923
- }, i));
1924
- };
1925
- const isHtml = str => /<\/?[a-z][\s\S]*>/i.test(str);
1926
- const handleReclamationClick = reclamation => {
1927
- setSelectedReclamation(reclamation);
1928
- setDetailsDialogOpen(true);
1929
- };
1930
- const handleCloseDetails = () => {
1931
- setDetailsDialogOpen(false);
1932
- setSelectedReclamation(null);
1933
- };
1934
- const handleCloturer = () => {
1935
- if (!(selectedReclamation !== null && selectedReclamation !== void 0 && selectedReclamation.id)) return;
1936
- clotureReclamation(selectedReclamation.id, {
1937
- onSuccess: () => {
1938
- queryClient.invalidateQueries("reclamations");
1939
- handleCloseDetails();
1940
- _reactToastify.toast.success("Réclamation clôturée avec succès.");
1941
- },
1942
- onError: err => {
1943
- var _err$response$data$me2, _err$response2;
1944
- const msg = (_err$response$data$me2 = (_err$response2 = err.response) === null || _err$response2 === void 0 || (_err$response2 = _err$response2.data) === null || _err$response2 === void 0 ? void 0 : _err$response2.message) !== null && _err$response$data$me2 !== void 0 ? _err$response$data$me2 : "Une erreur est survenue lors de la clôture.";
1945
- _reactToastify.toast.error(msg);
1946
- }
1947
- });
1948
- };
1949
- const handleOpenReouvreDialog = () => {
1950
- setReouvreDescription("");
1951
- setReouvreFiles([]);
1952
- setReouvreDialogOpen(true);
1953
- };
1954
- const handleCloseReouvreDialog = () => {
1955
- setReouvreDialogOpen(false);
1956
- setReouvreDescription("");
1957
- setReouvreFiles([]);
1958
- };
1959
- const handleReouvreFileSelect = e => {
1960
- const selected = Array.from(e.target.files);
1961
- setReouvreFiles(prev => [...prev, ...selected]);
1962
- e.target.value = "";
1963
- };
1964
- const handleRemoveReouvreFile = index => {
1965
- setReouvreFiles(prev => prev.filter((_, i) => i !== index));
1966
- };
1967
- const handleSubmitReouvreture = () => {
1968
- if (!(selectedReclamation !== null && selectedReclamation !== void 0 && selectedReclamation.id) || !reouvreDescription.trim()) return;
1969
- const formData = new FormData();
1970
- formData.append("description", reouvreDescription.trim());
1971
- reouvreFiles.forEach(file => formData.append("files", file));
1972
- reouvreReclamation({
1973
- id: selectedReclamation.id,
1974
- formData
1975
- }, {
1976
- onSuccess: () => {
1977
- queryClient.invalidateQueries("reclamations");
1978
- handleCloseReouvreDialog();
1979
- handleCloseDetails();
1980
- _reactToastify.toast.success((selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_EN_ATTENTE_COMPLEMENT ? "Compléments ajoutés avec succès." : "Réclamation réouverte avec succès.");
1981
- },
1982
- onError: err => {
1983
- var _err$response$data$me3, _err$response3;
1984
- const msg = (_err$response$data$me3 = (_err$response3 = err.response) === null || _err$response3 === void 0 || (_err$response3 = _err$response3.data) === null || _err$response3 === void 0 ? void 0 : _err$response3.message) !== null && _err$response$data$me3 !== void 0 ? _err$response$data$me3 : (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_EN_ATTENTE_COMPLEMENT ? "Une erreur est survenue lors de l'ajout des compléments." : "Une erreur est survenue lors de la réouverture.";
1985
- _reactToastify.toast.error(msg);
1986
- }
1987
- });
1988
- };
1989
- const formatDate = dateString => {
1990
- const date = new Date(dateString);
1991
- return date.toLocaleDateString("fr-FR", {
1992
- day: "2-digit",
1993
- month: "2-digit",
1994
- year: "numeric",
1995
- hour: "2-digit",
1996
- minute: "2-digit"
1997
- });
1998
- };
1999
- const handleDownload = (documentGuid, documentName) => {
2000
- downloadDocument(documentGuid, {
2001
- onSuccess: res => {
2002
- if (!(res !== null && res !== void 0 && res.data) || !(res !== null && res !== void 0 && res.fileName)) {
2003
- console.error("No file data or filename received");
2004
- return;
2005
- }
2006
- const byteCharacters = atob(res.data);
2007
- const byteNumbers = new Array(byteCharacters.length);
2008
- for (let i = 0; i < byteCharacters.length; i++) {
2009
- byteNumbers[i] = byteCharacters.charCodeAt(i);
2010
- }
2011
- const byteArray = new Uint8Array(byteNumbers);
2012
- const blob = new Blob([byteArray], {
2013
- type: "application/octet-stream"
2014
- });
2015
- const link = document.createElement("a");
2016
- link.href = URL.createObjectURL(blob);
2017
- link.download = documentName;
2018
- document.body.appendChild(link);
2019
- link.click();
2020
- document.body.removeChild(link);
2021
- URL.revokeObjectURL(link.href);
2022
- },
2023
- onError: err => {
2024
- console.error("Error downloading document:", err);
2025
- }
2026
- });
2027
- };
2028
- const onSearch = () => {
2029
- setPage(1);
2030
- setSearchKey(search);
2031
- };
2032
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
2033
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2034
- style: {
2035
- flex: 1,
2036
- display: "flex",
2037
- flexDirection: "column",
2038
- backgroundColor: "#f5f5f5",
2039
- minHeight: 0
2040
- },
2041
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2042
- style: {
2043
- display: "flex",
2044
- justifyContent: "space-between",
2045
- alignItems: "center",
2046
- padding: "16px",
2047
- backgroundColor: "white",
2048
- borderBottom: "1px solid #e0e0e0"
2049
- },
2050
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2051
- style: {
2052
- display: "flex",
2053
- alignItems: "center",
2054
- gap: "12px"
2055
- },
2056
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2057
- icon: _freeSolidSvgIcons.faClipboardList,
2058
- style: {
2059
- color: "var(--primary-color, #222f67)",
2060
- fontSize: "20px"
2061
- }
2062
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2063
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2064
- component: "div",
2065
- sx: {
2066
- fontWeight: "600",
2067
- color: "#333",
2068
- fontSize: "16px",
2069
- fontFamily: WIDGET_FONT,
2070
- margin: 0,
2071
- lineHeight: "normal"
2072
- },
2073
- children: "Mes demandes d'assistance"
2074
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Typography, {
2075
- component: "div",
2076
- sx: {
2077
- color: "#999",
2078
- fontSize: "12px",
2079
- fontFamily: WIDGET_FONT,
2080
- margin: 0,
2081
- lineHeight: "normal"
2082
- },
2083
- children: [(reclamations === null || reclamations === void 0 ? void 0 : reclamations.totalElements) || 0, " r\xE9clamation(s)"]
2084
- })]
2085
- })]
2086
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2087
- onClick: onClose,
2088
- style: {
2089
- cursor: "pointer",
2090
- color: "#666",
2091
- padding: "4px",
2092
- display: "flex",
2093
- alignItems: "center"
2094
- },
2095
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2096
- icon: _freeSolidSvgIcons.faTimes,
2097
- style: {
2098
- fontSize: "16px"
2099
- }
2100
- })
2101
- })]
2102
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2103
- className: "search-fields",
2104
- style: {
2105
- display: "flex",
2106
- justifyContent: "center",
2107
- padding: "12px",
2108
- paddingBottom: "0px"
2109
- },
2110
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, {
2111
- placeholder: "R\xE9clamation / R\xE9f\xE9rence",
2112
- variant: "outlined",
2113
- size: "small",
2114
- value: search,
2115
- onChange: e => setSearch(e.target.value),
2116
- fullWidth: true,
2117
- InputLabelProps: {
2118
- style: {
2119
- fontSize: 12
2120
- }
2121
- },
2122
- sx: {
2123
- "& .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline": {
2124
- borderColor: "var(--primary-color, #222f67)"
2125
- }
2126
- }
2127
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
2128
- onClick: onSearch,
2129
- variant: "contained",
2130
- sx: {
2131
- minWidth: "48px",
2132
- width: "48px",
2133
- height: "40px",
2134
- borderRadius: "5px",
2135
- backgroundColor: "var(--primary-color, #222f67)",
2136
- "&:hover": {
2137
- backgroundColor: "var(--primary-color, #222f67)",
2138
- opacity: 0.9
2139
- },
2140
- flexShrink: 0,
2141
- marginLeft: "0px",
2142
- boxShadow: "none",
2143
- padding: 0
2144
- },
2145
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Search, {
2146
- sx: {
2147
- color: "white",
2148
- fontSize: "25px"
2149
- }
2150
- })
2151
- })]
2152
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2153
- style: {
2154
- flex: 1,
2155
- overflowY: "auto",
2156
- padding: "8px",
2157
- minHeight: 0
2158
- },
2159
- children: isFetching ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2160
- style: {
2161
- display: "flex",
2162
- justifyContent: "center",
2163
- padding: "24px"
2164
- },
2165
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
2166
- size: 32,
2167
- sx: {
2168
- color: "var(--primary-color, #222f67)"
2169
- }
2170
- })
2171
- }) : (reclamations === null || reclamations === void 0 ? void 0 : reclamations.totalElements) === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2172
- style: {
2173
- display: "flex",
2174
- flexDirection: "column",
2175
- alignItems: "center",
2176
- justifyContent: "center",
2177
- padding: "40px 20px",
2178
- color: "#999"
2179
- },
2180
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2181
- icon: _freeSolidSvgIcons.faClipboardList,
2182
- style: {
2183
- fontSize: "48px",
2184
- marginBottom: "32px"
2185
- }
2186
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2187
- component: "div",
2188
- sx: {
2189
- fontSize: "14px",
2190
- textAlign: "center",
2191
- fontFamily: WIDGET_FONT,
2192
- lineHeight: "normal",
2193
- color: "#999"
2194
- },
2195
- children: "Aucune r\xE9clamation trouv\xE9e"
2196
- })]
2197
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2198
- children: [((reclamations === null || reclamations === void 0 ? void 0 : reclamations.content) || []).map(reclamation => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2199
- onClick: () => handleReclamationClick(reclamation),
2200
- style: {
2201
- backgroundColor: "white",
2202
- borderRadius: "8px",
2203
- padding: "16px",
2204
- marginBottom: "5px",
2205
- cursor: "pointer",
2206
- boxShadow: "0 1px 3px rgba(0,0,0,0.1)",
2207
- transition: "all 0.2s ease",
2208
- border: "1px solid #e0e0e0"
2209
- },
2210
- onMouseEnter: e => {
2211
- e.currentTarget.style.boxShadow = "0 4px 8px rgba(0,0,0,0.15)";
2212
- e.currentTarget.style.transform = "translateY(-2px)";
2213
- },
2214
- onMouseLeave: e => {
2215
- e.currentTarget.style.boxShadow = "0 1px 3px rgba(0,0,0,0.1)";
2216
- e.currentTarget.style.transform = "translateY(0)";
2217
- },
2218
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2219
- style: {
2220
- display: "flex",
2221
- justifyContent: "space-between",
2222
- alignItems: "center",
2223
- marginBottom: "12px"
2224
- },
2225
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2226
- component: "div",
2227
- sx: {
2228
- fontWeight: "600",
2229
- color: "var(--primary-color, #222f67)",
2230
- fontSize: "14px",
2231
- fontFamily: WIDGET_FONT,
2232
- lineHeight: "normal"
2233
- },
2234
- children: reclamation === null || reclamation === void 0 ? void 0 : reclamation.reference
2235
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2236
- component: "div",
2237
- sx: {
2238
- padding: "4px 12px",
2239
- borderRadius: "12px",
2240
- backgroundColor: getStatusColor(reclamation === null || reclamation === void 0 ? void 0 : reclamation.statut) + "20",
2241
- color: getStatusColor(reclamation === null || reclamation === void 0 ? void 0 : reclamation.statut),
2242
- fontSize: "11px",
2243
- fontWeight: "600",
2244
- fontFamily: WIDGET_FONT,
2245
- lineHeight: "normal"
2246
- },
2247
- children: reclamation === null || reclamation === void 0 ? void 0 : reclamation.statut
2248
- })]
2249
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2250
- component: "div",
2251
- sx: {
2252
- fontWeight: "500",
2253
- color: "#333",
2254
- fontSize: "13px",
2255
- marginBottom: "8px",
2256
- fontFamily: WIDGET_FONT,
2257
- lineHeight: "normal"
2258
- },
2259
- children: reclamation === null || reclamation === void 0 ? void 0 : reclamation.objet
2260
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2261
- style: {
2262
- display: "flex",
2263
- justifyContent: "space-between",
2264
- alignItems: "center"
2265
- },
2266
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2267
- component: "div",
2268
- sx: {
2269
- color: "#999",
2270
- fontSize: "11px",
2271
- fontFamily: WIDGET_FONT,
2272
- lineHeight: "normal"
2273
- },
2274
- children: formatDate(reclamation === null || reclamation === void 0 ? void 0 : reclamation.dateCreation)
2275
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Typography, {
2276
- component: "div",
2277
- sx: {
2278
- display: "flex",
2279
- alignItems: "center",
2280
- gap: "4px",
2281
- color: "var(--primary-color, #222f67)",
2282
- fontSize: "11px",
2283
- fontWeight: "500",
2284
- fontFamily: WIDGET_FONT,
2285
- lineHeight: "normal"
2286
- },
2287
- children: ["Voir d\xE9tails", /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2288
- icon: _freeSolidSvgIcons.faEye
2289
- })]
2290
- })]
2291
- })]
2292
- }, reclamation === null || reclamation === void 0 ? void 0 : reclamation.id)), (reclamations === null || reclamations === void 0 ? void 0 : reclamations.totalPages) > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2293
- style: {
2294
- display: "flex",
2295
- justifyContent: "center",
2296
- marginTop: "8px",
2297
- marginBottom: "8px"
2298
- },
2299
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Pagination, {
2300
- size: "small",
2301
- variant: "outlined",
2302
- count: (reclamations === null || reclamations === void 0 ? void 0 : reclamations.totalPages) || 0,
2303
- page: page,
2304
- onChange: (event, value) => setPage(value)
2305
- })
2306
- })]
2307
- })
2308
- })]
2309
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Dialog, {
2310
- open: detailsDialogOpen,
2311
- onClose: handleCloseDetails,
2312
- maxWidth: "sm",
2313
- fullWidth: true,
2314
- PaperProps: {
2315
- sx: {
2316
- borderRadius: 3,
2317
- boxShadow: "0 8px 32px rgba(0,0,0,0.12)"
2318
- }
2319
- },
2320
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogTitle, {
2321
- sx: {
2322
- backgroundColor: "#f8f9fa",
2323
- borderBottom: "1px solid #e0e0e0",
2324
- display: "flex",
2325
- justifyContent: "space-between",
2326
- alignItems: "center",
2327
- padding: "20px 24px"
2328
- },
2329
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2330
- style: {
2331
- display: "flex",
2332
- alignItems: "center",
2333
- gap: "12px"
2334
- },
2335
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2336
- icon: _freeSolidSvgIcons.faInfoCircle,
2337
- style: {
2338
- color: "var(--primary-color, #222f67)",
2339
- fontSize: "20px"
2340
- }
2341
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2342
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2343
- component: "div",
2344
- sx: {
2345
- fontWeight: "700",
2346
- fontSize: "16px",
2347
- margin: 0
2348
- },
2349
- children: "D\xE9tails de la r\xE9clamation"
2350
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2351
- component: "div",
2352
- sx: {
2353
- color: "#666",
2354
- fontSize: "12px",
2355
- marginTop: "3px"
2356
- },
2357
- children: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.reference
2358
- })]
2359
- })]
2360
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Chip, {
2361
- label: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statut,
2362
- size: "small",
2363
- sx: {
2364
- backgroundColor: getStatusColor((selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statut) || "") + "20",
2365
- color: getStatusColor((selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statut) || ""),
2366
- fontWeight: 600,
2367
- fontSize: "11px"
2368
- }
2369
- })]
2370
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogContent, {
2371
- sx: {
2372
- padding: "24px"
2373
- },
2374
- children: selectedReclamation && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2375
- style: {
2376
- display: "flex",
2377
- flexDirection: "column",
2378
- gap: "20px"
2379
- },
2380
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2381
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2382
- component: "div",
2383
- sx: {
2384
- fontSize: "11px",
2385
- color: "#999",
2386
- fontWeight: "500",
2387
- marginBottom: "6px",
2388
- textTransform: "uppercase",
2389
- letterSpacing: "0.5px",
2390
- fontWeight: "500",
2391
- fontFamily: WIDGET_FONT
2392
- },
2393
- children: "Type de demande"
2394
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2395
- component: "div",
2396
- sx: {
2397
- fontSize: "14px",
2398
- color: "#333",
2399
- fontWeight: "500",
2400
- fontFamily: WIDGET_FONT
2401
- },
2402
- children: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.type
2403
- })]
2404
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2405
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2406
- component: "div",
2407
- sx: {
2408
- fontSize: "11px",
2409
- color: "#999",
2410
- fontWeight: "500",
2411
- marginBottom: "6px",
2412
- textTransform: "uppercase",
2413
- letterSpacing: "0.5px",
2414
- fontFamily: WIDGET_FONT
2415
- },
2416
- children: "Service concern\xE9"
2417
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2418
- component: "div",
2419
- sx: {
2420
- fontSize: "14px",
2421
- color: "#333",
2422
- fontWeight: "500",
2423
- fontFamily: WIDGET_FONT
2424
- },
2425
- children: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.service
2426
- })]
2427
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2428
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2429
- component: "div",
2430
- sx: {
2431
- fontSize: "11px",
2432
- color: "#999",
2433
- fontWeight: "500",
2434
- marginBottom: "6px",
2435
- textTransform: "uppercase",
2436
- letterSpacing: "0.5px",
2437
- fontFamily: WIDGET_FONT
2438
- },
2439
- children: "Nature de la demande"
2440
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2441
- component: "div",
2442
- sx: {
2443
- fontSize: "14px",
2444
- color: "#333",
2445
- fontWeight: "500",
2446
- fontFamily: WIDGET_FONT
2447
- },
2448
- children: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.nature
2449
- })]
2450
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2451
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2452
- component: "div",
2453
- sx: {
2454
- fontSize: "11px",
2455
- color: "#999",
2456
- fontWeight: "500",
2457
- marginBottom: "6px",
2458
- textTransform: "uppercase",
2459
- letterSpacing: "0.5px",
2460
- fontFamily: WIDGET_FONT
2461
- },
2462
- children: "R\xE9f\xE9rence"
2463
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2464
- component: "div",
2465
- sx: {
2466
- fontSize: "14px",
2467
- color: "#333",
2468
- fontWeight: "500",
2469
- fontFamily: WIDGET_FONT
2470
- },
2471
- children: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.reference
2472
- })]
2473
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2474
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2475
- component: "div",
2476
- sx: {
2477
- fontSize: "11px",
2478
- color: "#999",
2479
- fontWeight: "500",
2480
- marginBottom: "6px",
2481
- textTransform: "uppercase",
2482
- letterSpacing: "0.5px",
2483
- fontFamily: WIDGET_FONT
2484
- },
2485
- children: "Objet"
2486
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2487
- component: "div",
2488
- sx: {
2489
- fontSize: "14px",
2490
- color: "#333",
2491
- fontWeight: "500",
2492
- fontFamily: WIDGET_FONT
2493
- },
2494
- children: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.objet
2495
- })]
2496
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2497
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2498
- component: "div",
2499
- sx: {
2500
- fontSize: "11px",
2501
- color: "#999",
2502
- fontWeight: "500",
2503
- marginBottom: "6px",
2504
- textTransform: "uppercase",
2505
- letterSpacing: "0.5px",
2506
- fontFamily: WIDGET_FONT
2507
- },
2508
- children: "Description"
2509
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2510
- component: "div",
2511
- sx: {
2512
- fontSize: "14px",
2513
- color: "#333",
2514
- lineHeight: "1.6",
2515
- backgroundColor: "#f8f9fa",
2516
- padding: "12px",
2517
- borderRadius: "8px",
2518
- border: "1px solid #e0e0e0",
2519
- whiteSpace: "pre-line",
2520
- fontFamily: WIDGET_FONT
2521
- },
2522
- children: renderTextWithLinks(selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.description)
2523
- })]
2524
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2525
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2526
- component: "div",
2527
- sx: {
2528
- fontSize: "11px",
2529
- color: "#999",
2530
- fontWeight: "500",
2531
- marginBottom: "6px",
2532
- textTransform: "uppercase",
2533
- letterSpacing: "0.5px",
2534
- fontFamily: WIDGET_FONT
2535
- },
2536
- children: "Date de cr\xE9ation"
2537
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2538
- component: "div",
2539
- sx: {
2540
- fontSize: "14px",
2541
- color: "#333",
2542
- fontWeight: "500",
2543
- fontFamily: WIDGET_FONT
2544
- },
2545
- children: formatDate(selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.dateCreation)
2546
- })]
2547
- }), (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.documents) && (selectedReclamation === null || selectedReclamation === void 0 || (_selectedReclamation$ = selectedReclamation.documents) === null || _selectedReclamation$ === void 0 ? void 0 : _selectedReclamation$.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2548
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Typography, {
2549
- component: "div",
2550
- sx: {
2551
- fontSize: "11px",
2552
- color: "#999",
2553
- fontWeight: "500",
2554
- marginBottom: "12px",
2555
- textTransform: "uppercase",
2556
- letterSpacing: "0.5px",
2557
- fontFamily: WIDGET_FONT
2558
- },
2559
- children: ["Pi\xE8ces jointes (", selectedReclamation === null || selectedReclamation === void 0 || (_selectedReclamation$2 = selectedReclamation.documents) === null || _selectedReclamation$2 === void 0 ? void 0 : _selectedReclamation$2.length, ")"]
2560
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2561
- style: {
2562
- display: "flex",
2563
- flexDirection: "column",
2564
- gap: "8px"
2565
- },
2566
- children: selectedReclamation.documents.map((document, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2567
- style: {
2568
- display: "flex",
2569
- alignItems: "center",
2570
- gap: "12px",
2571
- padding: "12px",
2572
- backgroundColor: "#f8f9fa",
2573
- borderRadius: "8px",
2574
- border: "1px solid #e0e0e0",
2575
- cursor: isDownloading ? "not-allowed" : "pointer",
2576
- opacity: isDownloading ? 0.6 : 1,
2577
- transition: "all 0.2s ease"
2578
- },
2579
- onClick: () => !isDownloading && handleDownload(document.documentGuid, document.documentName),
2580
- onMouseEnter: e => {
2581
- if (!isDownloading) {
2582
- e.currentTarget.style.backgroundColor = "#e9ecef";
2583
- e.currentTarget.style.borderColor = "var(--primary-color, #222f67)";
2584
- }
2585
- },
2586
- onMouseLeave: e => {
2587
- if (!isDownloading) {
2588
- e.currentTarget.style.backgroundColor = "#f8f9fa";
2589
- e.currentTarget.style.borderColor = "#e0e0e0";
2590
- }
2591
- },
2592
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2593
- icon: _freeSolidSvgIcons.faPaperclip,
2594
- style: {
2595
- color: "var(--primary-color, #222f67)",
2596
- fontSize: "16px"
2597
- }
2598
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2599
- style: {
2600
- flex: 1
2601
- },
2602
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2603
- component: "div",
2604
- sx: {
2605
- fontSize: "13px",
2606
- color: "#333",
2607
- fontWeight: "500",
2608
- fontFamily: WIDGET_FONT
2609
- },
2610
- children: document.documentName
2611
- }), document.dateUpload && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Typography, {
2612
- component: "div",
2613
- sx: {
2614
- fontSize: "11px",
2615
- color: "#999",
2616
- marginTop: "2px",
2617
- fontFamily: WIDGET_FONT
2618
- },
2619
- children: ["Ajout\xE9 le ", formatDate(document.dateUpload)]
2620
- })]
2621
- }), isDownloading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
2622
- size: 16,
2623
- style: {
2624
- color: "var(--primary-color, #222f67)"
2625
- }
2626
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2627
- icon: _freeSolidSvgIcons.faDownload,
2628
- style: {
2629
- color: "var(--primary-color, #222f67)",
2630
- fontSize: "14px"
2631
- }
2632
- })]
2633
- }, document.id || index))
2634
- })]
2635
- }), (selectedReclamation === null || selectedReclamation === void 0 || (_selectedReclamation$3 = selectedReclamation.statusHistories) === null || _selectedReclamation$3 === void 0 ? void 0 : _selectedReclamation$3.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2636
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2637
- style: {
2638
- fontSize: "11px",
2639
- color: "#999",
2640
- fontWeight: "600",
2641
- marginBottom: "16px",
2642
- textTransform: "uppercase",
2643
- letterSpacing: "0.5px",
2644
- fontFamily: WIDGET_FONT
2645
- },
2646
- children: "Historique des statuts"
2647
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2648
- style: {
2649
- position: "relative",
2650
- paddingLeft: "24px"
2651
- },
2652
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2653
- style: {
2654
- position: "absolute",
2655
- left: "8px",
2656
- top: "6px",
2657
- bottom: "6px",
2658
- width: "2px",
2659
- backgroundColor: "#e0e0e0"
2660
- }
2661
- }), selectedReclamation.statusHistories.map((entry, index) => {
2662
- var _entry$documents;
2663
- const color = getStatusColorByCode(entry.statutApresCode);
2664
- const isLast = index === selectedReclamation.statusHistories.length - 1;
2665
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2666
- style: {
2667
- position: "relative",
2668
- marginBottom: isLast ? 0 : "20px"
2669
- },
2670
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2671
- style: {
2672
- position: "absolute",
2673
- left: "-20px",
2674
- top: "4px",
2675
- width: "12px",
2676
- height: "12px",
2677
- borderRadius: "50%",
2678
- backgroundColor: color,
2679
- border: "2px solid white",
2680
- boxShadow: "0 0 0 2px ".concat(color)
2681
- }
2682
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2683
- style: {
2684
- backgroundColor: "#f8f9fa",
2685
- borderRadius: "8px",
2686
- border: "1px solid ".concat(color, "22"),
2687
- padding: "12px"
2688
- },
2689
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2690
- style: {
2691
- display: "flex",
2692
- justifyContent: "space-between",
2693
- alignItems: "flex-start",
2694
- marginBottom: entry.commentaire ? "10px" : 0
2695
- },
2696
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2697
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2698
- style: {
2699
- display: "flex",
2700
- alignItems: "center",
2701
- gap: "6px",
2702
- marginBottom: "2px"
2703
- },
2704
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
2705
- style: {
2706
- fontSize: "11px"
2707
- },
2708
- children: STATUT_ICON_MAP[entry.statutApresCode] || "📋"
2709
- }), entry.statutAvantCode && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
2710
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
2711
- style: {
2712
- fontSize: "11px",
2713
- color: getStatusColorByCode(entry.statutAvantCode),
2714
- fontWeight: "600",
2715
- fontFamily: WIDGET_FONT
2716
- },
2717
- children: entry.statutAvantLibelle
2718
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
2719
- style: {
2720
- fontSize: "11px",
2721
- color: "#999"
2722
- },
2723
- children: "\u2192"
2724
- })]
2725
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
2726
- style: {
2727
- fontSize: "11px",
2728
- color,
2729
- fontWeight: "700",
2730
- fontFamily: WIDGET_FONT
2731
- },
2732
- children: entry.statutApresLibelle
2733
- })]
2734
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2735
- style: {
2736
- fontSize: "11px",
2737
- color: "#999",
2738
- fontFamily: WIDGET_FONT
2739
- },
2740
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
2741
- children: [entry.changedByNom ? entry.changedByNom : "Service Odoo", " ", "\xB7", " "]
2742
- }), formatDate(entry.dateChangement)]
2743
- })]
2744
- })
2745
- }), entry.commentaire && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2746
- style: {
2747
- fontSize: "13px",
2748
- color: "#333",
2749
- lineHeight: "1.5",
2750
- fontFamily: WIDGET_FONT,
2751
- backgroundColor: "white",
2752
- padding: "8px 10px",
2753
- borderRadius: "6px",
2754
- border: "1px solid #e0e0e0",
2755
- whiteSpace: "pre-line"
2756
- },
2757
- children: renderTextWithLinks(entry.commentaire)
2758
- }), entry.reponse && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2759
- style: {
2760
- marginTop: "8px",
2761
- fontSize: "13px",
2762
- color: "#333",
2763
- lineHeight: "1.5",
2764
- fontFamily: WIDGET_FONT,
2765
- backgroundColor: "#f0f4ff",
2766
- padding: "8px 10px",
2767
- borderRadius: "6px",
2768
- border: "1px solid #c5d0f0",
2769
- whiteSpace: "pre-line"
2770
- },
2771
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
2772
- style: {
2773
- fontSize: "11px",
2774
- fontWeight: "600",
2775
- color: "#555",
2776
- display: "block",
2777
- marginBottom: "4px"
2778
- },
2779
- children: "\uD83D\uDCAC R\xE9ponse"
2780
- }), isHtml(entry.reponse) ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2781
- style: {
2782
- whiteSpace: "normal"
2783
- },
2784
- dangerouslySetInnerHTML: {
2785
- __html: _dompurify.default.sanitize(entry.reponse)
2786
- }
2787
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2788
- style: {
2789
- whiteSpace: "pre-line"
2790
- },
2791
- children: renderTextWithLinks(entry.reponse)
2792
- })]
2793
- }), ((_entry$documents = entry.documents) === null || _entry$documents === void 0 ? void 0 : _entry$documents.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2794
- style: {
2795
- marginTop: "8px",
2796
- display: "flex",
2797
- flexDirection: "column",
2798
- gap: "6px"
2799
- },
2800
- children: entry.documents.map((doc, di) => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2801
- style: {
2802
- display: "flex",
2803
- alignItems: "center",
2804
- gap: "8px",
2805
- padding: "6px 10px",
2806
- backgroundColor: "white",
2807
- borderRadius: "6px",
2808
- border: "1px solid #e0e0e0",
2809
- cursor: isDownloading ? "not-allowed" : "pointer",
2810
- opacity: isDownloading ? 0.6 : 1
2811
- },
2812
- onClick: () => !isDownloading && handleDownload(doc.documentGuid, doc.documentName),
2813
- onMouseEnter: e => {
2814
- if (!isDownloading) e.currentTarget.style.backgroundColor = "#f0f0f0";
2815
- },
2816
- onMouseLeave: e => {
2817
- if (!isDownloading) e.currentTarget.style.backgroundColor = "white";
2818
- },
2819
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2820
- icon: _freeSolidSvgIcons.faPaperclip,
2821
- style: {
2822
- color: "var(--primary-color, #222f67)",
2823
- fontSize: "12px"
2824
- }
2825
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
2826
- style: {
2827
- flex: 1,
2828
- fontSize: "12px",
2829
- color: "#333",
2830
- fontFamily: WIDGET_FONT
2831
- },
2832
- children: doc.documentName
2833
- }), isDownloading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
2834
- size: 12,
2835
- style: {
2836
- color: "var(--primary-color, #222f67)"
2837
- }
2838
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2839
- icon: _freeSolidSvgIcons.faDownload,
2840
- style: {
2841
- color: "var(--primary-color, #222f67)",
2842
- fontSize: "12px"
2843
- }
2844
- })]
2845
- }, doc.id || di))
2846
- })]
2847
- })]
2848
- }, entry.id || index);
2849
- })]
2850
- })]
2851
- })]
2852
- })
2853
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogActions, {
2854
- sx: {
2855
- padding: "16px 24px",
2856
- borderTop: "1px solid #e0e0e0",
2857
- backgroundColor: "#f8f9fa",
2858
- gap: "8px"
2859
- },
2860
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
2861
- onClick: handleCloseDetails,
2862
- variant: "outlined",
2863
- sx: {
2864
- color: "var(--primary-color, #222f67)",
2865
- borderColor: "var(--primary-color, #222f67)",
2866
- padding: "5.5px 23px",
2867
- borderRadius: "6px",
2868
- fontWeight: "500",
2869
- fontSize: "14px",
2870
- textTransform: "none",
2871
- boxShadow: "none",
2872
- "&:hover": {
2873
- borderColor: "var(--primary-color, #222f67)",
2874
- backgroundColor: "rgba(34, 47, 103, 0.05)",
2875
- boxShadow: "none"
2876
- }
2877
- },
2878
- children: "Fermer"
2879
- }), (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_REPONDUE && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
2880
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
2881
- variant: "contained",
2882
- onClick: handleCloturer,
2883
- disabled: isCloturing,
2884
- sx: {
2885
- backgroundColor: "#e53935",
2886
- color: "white",
2887
- padding: "5.5px 23px",
2888
- borderRadius: "6px",
2889
- fontWeight: "500",
2890
- fontSize: "14px",
2891
- textTransform: "none",
2892
- boxShadow: "none",
2893
- "&:hover": {
2894
- backgroundColor: "#c62828",
2895
- boxShadow: "none"
2896
- },
2897
- "&:disabled": {
2898
- backgroundColor: "#ef9a9a",
2899
- boxShadow: "none"
2900
- }
2901
- },
2902
- children: isCloturing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
2903
- size: 16,
2904
- sx: {
2905
- color: "white"
2906
- }
2907
- }) : "Clôturer"
2908
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
2909
- variant: "contained",
2910
- onClick: handleOpenReouvreDialog,
2911
- sx: {
2912
- backgroundColor: "var(--primary-color, #222f67)",
2913
- color: "white",
2914
- padding: "5.5px 23px",
2915
- borderRadius: "6px",
2916
- fontWeight: "500",
2917
- fontSize: "14px",
2918
- textTransform: "none",
2919
- boxShadow: "none",
2920
- "&:hover": {
2921
- backgroundColor: "var(--secondary-color, #2d3d7f)",
2922
- boxShadow: "none"
2923
- }
2924
- },
2925
- children: "R\xE9ouverture"
2926
- })]
2927
- }), (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_EN_ATTENTE_COMPLEMENT && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
2928
- variant: "contained",
2929
- onClick: handleOpenReouvreDialog,
2930
- sx: {
2931
- backgroundColor: "var(--primary-color, #222f67)",
2932
- color: "white",
2933
- padding: "5.5px 23px",
2934
- borderRadius: "6px",
2935
- fontWeight: "500",
2936
- fontSize: "14px",
2937
- textTransform: "none",
2938
- boxShadow: "none",
2939
- "&:hover": {
2940
- backgroundColor: "var(--secondary-color, #2d3d7f)",
2941
- boxShadow: "none"
2942
- }
2943
- },
2944
- children: "Ajouter compl\xE9ments"
2945
- })]
2946
- })]
2947
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Dialog, {
2948
- open: reouvreDialogOpen,
2949
- onClose: handleCloseReouvreDialog,
2950
- maxWidth: "sm",
2951
- fullWidth: true,
2952
- PaperProps: {
2953
- sx: {
2954
- borderRadius: 3,
2955
- boxShadow: "0 8px 32px rgba(0,0,0,0.12)"
2956
- }
2957
- },
2958
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogTitle, {
2959
- sx: {
2960
- backgroundColor: "#f8f9fa",
2961
- borderBottom: "1px solid #e0e0e0",
2962
- display: "flex",
2963
- justifyContent: "space-between",
2964
- alignItems: "center",
2965
- padding: "20px 24px"
2966
- },
2967
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2968
- style: {
2969
- display: "flex",
2970
- alignItems: "center",
2971
- gap: "12px"
2972
- },
2973
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
2974
- icon: _freeSolidSvgIcons.faReply,
2975
- style: {
2976
- color: "var(--primary-color, #222f67)",
2977
- fontSize: "18px"
2978
- }
2979
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2980
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2981
- component: "div",
2982
- sx: {
2983
- fontWeight: "700",
2984
- fontSize: "16px",
2985
- margin: 0
2986
- },
2987
- children: (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_EN_ATTENTE_COMPLEMENT ? "Ajout de compléments" : "Réouverture de la réclamation"
2988
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
2989
- component: "div",
2990
- sx: {
2991
- color: "#666",
2992
- fontSize: "12px",
2993
- marginTop: "3px"
2994
- },
2995
- children: selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.reference
2996
- })]
2997
- })]
2998
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
2999
- onClick: handleCloseReouvreDialog,
3000
- size: "small",
3001
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Close, {
3002
- fontSize: "small"
3003
- })
3004
- })]
3005
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogContent, {
3006
- sx: {
3007
- padding: "24px",
3008
- display: "flex",
3009
- flexDirection: "column",
3010
- gap: "20px"
3011
- },
3012
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TextField, {
3013
- label: (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_EN_ATTENTE_COMPLEMENT ? "Compléments" : "Description",
3014
- placeholder: (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_EN_ATTENTE_COMPLEMENT ? "Saisissez les compléments..." : "Décrivez la raison de la réouverture...",
3015
- value: reouvreDescription,
3016
- onChange: e => setReouvreDescription(e.target.value),
3017
- multiline: true,
3018
- rows: 5,
3019
- fullWidth: true,
3020
- required: true,
3021
- variant: "outlined",
3022
- inputProps: {
3023
- maxLength: 500
3024
- },
3025
- sx: {
3026
- mt: 1,
3027
- "& .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline": {
3028
- borderColor: "var(--primary-color, #222f67)"
3029
- },
3030
- "& .MuiInputLabel-root.Mui-focused": {
3031
- color: "var(--primary-color, #222f67)"
3032
- }
3033
- }
3034
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3035
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
3036
- type: "file",
3037
- ref: reouvreFileInputRef,
3038
- style: {
3039
- display: "none"
3040
- },
3041
- onChange: handleReouvreFileSelect,
3042
- accept: ".pdf,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif",
3043
- multiple: true
3044
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
3045
- variant: "outlined",
3046
- startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.AttachFile, {}),
3047
- onClick: () => {
3048
- var _reouvreFileInputRef$;
3049
- return (_reouvreFileInputRef$ = reouvreFileInputRef.current) === null || _reouvreFileInputRef$ === void 0 ? void 0 : _reouvreFileInputRef$.click();
3050
- },
3051
- sx: {
3052
- borderRadius: "8px",
3053
- border: "2px dashed var(--primary-color, #222f67)",
3054
- color: "var(--primary-color, #222f67)",
3055
- fontWeight: "600",
3056
- textTransform: "none",
3057
- width: "100%",
3058
- "&:hover": {
3059
- backgroundColor: "rgba(34, 47, 103, 0.05)",
3060
- borderStyle: "solid"
3061
- }
3062
- },
3063
- children: "Pi\xE8ces jointes (optionnel)"
3064
- }), reouvreFiles.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
3065
- sx: {
3066
- mt: 1,
3067
- display: "flex",
3068
- flexWrap: "wrap",
3069
- gap: 1
3070
- },
3071
- children: reouvreFiles.map((file, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Chip, {
3072
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.AttachFile, {}),
3073
- label: file.name,
3074
- onDelete: () => handleRemoveReouvreFile(index),
3075
- sx: {
3076
- borderRadius: "8px"
3077
- },
3078
- color: "primary",
3079
- variant: "outlined"
3080
- }, index))
3081
- })]
3082
- })]
3083
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogActions, {
3084
- sx: {
3085
- padding: "16px 24px",
3086
- borderTop: "1px solid #e0e0e0",
3087
- backgroundColor: "#f8f9fa",
3088
- gap: "8px"
3089
- },
3090
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
3091
- onClick: handleCloseReouvreDialog,
3092
- variant: "outlined",
3093
- sx: {
3094
- color: "var(--primary-color, #222f67)",
3095
- borderColor: "var(--primary-color, #222f67)",
3096
- padding: "5.5px 23px",
3097
- borderRadius: "6px",
3098
- fontWeight: "500",
3099
- fontSize: "14px",
3100
- textTransform: "none",
3101
- boxShadow: "none",
3102
- "&:hover": {
3103
- borderColor: "var(--primary-color, #222f67)",
3104
- backgroundColor: "rgba(34, 47, 103, 0.05)",
3105
- boxShadow: "none"
3106
- }
3107
- },
3108
- children: "Annuler"
3109
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
3110
- variant: "contained",
3111
- onClick: handleSubmitReouvreture,
3112
- disabled: !reouvreDescription.trim() || isReouvring,
3113
- sx: {
3114
- backgroundColor: "var(--primary-color, #222f67)",
3115
- color: "white",
3116
- padding: "5.5px 23px",
3117
- borderRadius: "6px",
3118
- fontWeight: "500",
3119
- fontSize: "14px",
3120
- textTransform: "none",
3121
- boxShadow: "none",
3122
- "&:hover": {
3123
- backgroundColor: "var(--secondary-color, #2d3d7f)",
3124
- boxShadow: "none"
3125
- },
3126
- "&:disabled": {
3127
- backgroundColor: "rgba(34, 47, 103, 0.4)",
3128
- boxShadow: "none"
3129
- }
3130
- },
3131
- children: isReouvring ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
3132
- size: 16,
3133
- sx: {
3134
- color: "white"
3135
- }
3136
- }) : (selectedReclamation === null || selectedReclamation === void 0 ? void 0 : selectedReclamation.statutCode) === STATUT_EN_ATTENTE_COMPLEMENT ? "Confirmer" : "Confirmer la réouverture"
3137
- })]
3138
- })]
3139
- })]
3140
- });
3141
- };
3142
- const TijariaChatbot = selectedConversation => {
3143
- const {
3144
- tijariaUrl,
3145
- apiAuthUrl,
3146
- token
3147
- } = (0, _PuiHelpWidgetContext.useHelpWidget)();
3148
- const iframeRef = (0, _react.useRef)(null);
3149
- (0, _react.useEffect)(() => {
3150
- const handleMessage = event => {
3151
- if (event.origin !== tijariaUrl) {
3152
- console.warn("Message from unauthorized origin:", event.origin);
3153
- return;
3154
- }
3155
- if (event.data && event.data.type === "TOKEN_RECEIVED") {
3156
- console.log("Token delivery confirmed by iframe:", event.data);
3157
- sessionStorage.setItem("tijaria_token", event.data.token);
3158
- }
3159
- };
3160
- window.addEventListener("message", handleMessage);
3161
- return () => window.removeEventListener("message", handleMessage);
3162
- }, []);
3163
- (0, _react.useEffect)(() => {
3164
- const iframe = iframeRef.current;
3165
- const handleLoad = () => {
3166
- iframe.contentWindow.postMessage({
3167
- type: "SET_TOKEN",
3168
- token: token,
3169
- userInfoApi: "".concat(apiAuthUrl, "/auth/keycloak/user-profile")
3170
- }, tijariaUrl);
3171
- };
3172
- iframe.addEventListener("load", handleLoad);
3173
- return () => iframe.removeEventListener("load", handleLoad);
3174
- }, []);
3175
- (0, _react.useEffect)(() => {
3176
- // console.log("selectedConversation", selectedConversation);
3177
- const iframe = iframeRef.current;
3178
- const handleSelect = () => {
3179
- iframe.contentWindow.postMessage({
3180
- type: "CONVERSATION_SELECTED",
3181
- sessionId: selectedConversation.selectedConversation || null
3182
- }, tijariaUrl);
3183
- };
3184
- iframe.addEventListener("load", handleSelect);
3185
- return () => iframe.removeEventListener("load", handleSelect);
3186
- }, [selectedConversation]);
3187
- const isExpanded = true;
3188
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3189
- style: {
3190
- flex: 1,
3191
- overflow: "auto",
3192
- display: "flex",
3193
- flexDirection: "column"
3194
- },
3195
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3196
- style: {
3197
- flex: 1,
3198
- position: "relative"
3199
- },
3200
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("iframe", {
3201
- ref: iframeRef,
3202
- id: "chatbot-iframe",
3203
- title: "TijarIA",
3204
- src: "".concat(tijariaUrl, "/assistantBot?source=PGU&expanded=").concat(isExpanded),
3205
- allow: "microphone",
3206
- sandbox: "allow-popups allow-scripts allow-same-origin",
3207
- style: {
3208
- width: "100%",
3209
- height: "90%",
3210
- border: "none",
3211
- position: "absolute",
3212
- top: 0,
3213
- left: 0
3214
- }
3215
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3216
- onClick: () => {
3217
- const iframe = iframeRef.current;
3218
- if (iframe) {
3219
- iframe.contentWindow.postMessage({
3220
- type: "toggleSize",
3221
- isExpanded: true
3222
- }, tijariaUrl);
3223
- }
3224
- },
3225
- style: {
3226
- position: "absolute",
3227
- bottom: "20px",
3228
- left: "50%",
3229
- transform: "translateX(-50%)",
3230
- display: "flex",
3231
- flexDirection: "row",
3232
- alignItems: "center",
3233
- gap: "10px",
3234
- padding: "8px 16px",
3235
- border: "none",
3236
- backgroundColor: "transparent",
3237
- cursor: "pointer"
3238
- },
3239
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
3240
- src: _tijariaLogo.default,
3241
- alt: "Tijaria Logo",
3242
- style: {
3243
- width: "24px",
3244
- height: "24px",
3245
- objectFit: "contain",
3246
- flexShrink: 0
3247
- }
3248
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3249
- component: "div",
3250
- sx: {
3251
- fontSize: "16px",
3252
- fontWeight: "500",
3253
- fontFamily: WIDGET_FONT,
3254
- margin: 0,
3255
- lineHeight: "normal",
3256
- color: "#495057"
3257
- },
3258
- children: "TijarIA"
3259
- })]
3260
- })]
3261
- })
3262
- });
3263
- };
3264
- const TijariaHistory = _ref6 => {
3265
- let {
3266
- onClose,
3267
- setSelectedConversation
3268
- } = _ref6;
3269
- const [conversations, setConversations] = (0, _react.useState)([]);
3270
- const [loading, setLoading] = (0, _react.useState)(true);
3271
- const [error, setError] = (0, _react.useState)(null);
3272
- (0, _react.useEffect)(() => {
3273
- fetchUserHistory();
3274
- }, []);
3275
- const fetchUserHistory = async () => {
3276
- try {
3277
- setLoading(true);
3278
- const response = await fetch("https://chatbot-dev.portnet.ma/api/user/getUserHistory", {
3279
- method: "GET",
3280
- headers: {
3281
- Authorization: "Bearer ".concat(sessionStorage.getItem("tijaria_token")),
3282
- "Content-Type": "application/json"
3283
- }
3284
- });
3285
- if (!response.ok) {
3286
- throw new Error("Erreur lors de la récupération de l'historique");
3287
- }
3288
- const data = await response.json();
3289
- setConversations(data);
3290
- setError(null);
3291
- } catch (err) {
3292
- console.error("Error fetching history:", err);
3293
- setError(err.message);
3294
- setConversations([]);
3295
- } finally {
3296
- setLoading(false);
3297
- }
3298
- };
3299
- const handleConversationClick = conversation => {
3300
- console.log(" Conversation clicked:", conversation);
3301
- setSelectedConversation(conversation.sessionId);
3302
- onClose();
3303
- };
3304
- const formatDate = dateString => {
3305
- if (!dateString) return "N/A";
3306
- const date = new Date(dateString);
3307
- return date.toLocaleDateString("fr-FR", {
3308
- day: "2-digit",
3309
- month: "2-digit",
3310
- year: "numeric",
3311
- hour: "2-digit",
3312
- minute: "2-digit"
3313
- });
3314
- };
3315
- const truncateText = function truncateText(text) {
3316
- let maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 80;
3317
- if (!text) return "";
3318
- return text.length > maxLength ? text.substring(0, maxLength) + "..." : text;
3319
- };
3320
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3321
- style: {
3322
- flex: 1,
3323
- display: "flex",
3324
- flexDirection: "column",
3325
- backgroundColor: "#f5f5f5"
3326
- },
3327
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3328
- style: {
3329
- display: "flex",
3330
- justifyContent: "space-between",
3331
- alignItems: "center",
3332
- padding: "16px",
3333
- backgroundColor: "white",
3334
- borderBottom: "1px solid #e0e0e0"
3335
- },
3336
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3337
- style: {
3338
- display: "flex",
3339
- alignItems: "center",
3340
- gap: "12px"
3341
- },
3342
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
3343
- icon: _freeSolidSvgIcons.faComments,
3344
- style: {
3345
- color: "var(--primary-color, #222f67)",
3346
- fontSize: "20px"
3347
- }
3348
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3349
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3350
- component: "div",
3351
- sx: {
3352
- fontWeight: "600",
3353
- color: "#333",
3354
- fontSize: "16px",
3355
- fontFamily: WIDGET_FONT,
3356
- margin: 0,
3357
- lineHeight: "normal"
3358
- },
3359
- children: "Historique TijarIA"
3360
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3361
- component: "div",
3362
- sx: {
3363
- color: "#999",
3364
- fontSize: "12px",
3365
- fontFamily: WIDGET_FONT,
3366
- margin: 0,
3367
- lineHeight: "normal"
3368
- },
3369
- children: loading ? "Chargement..." : "".concat(conversations.length, " conversation(s)")
3370
- })]
3371
- })]
3372
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3373
- onClick: onClose,
3374
- style: {
3375
- cursor: "pointer",
3376
- color: "#666",
3377
- padding: "4px",
3378
- display: "flex",
3379
- alignItems: "center"
3380
- },
3381
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
3382
- icon: _freeSolidSvgIcons.faTimes,
3383
- style: {
3384
- fontSize: "16px"
3385
- }
3386
- })
3387
- })]
3388
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3389
- style: {
3390
- flex: 1,
3391
- overflowY: "auto",
3392
- padding: "12px"
3393
- },
3394
- children: loading ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3395
- style: {
3396
- display: "flex",
3397
- flexDirection: "column",
3398
- alignItems: "center",
3399
- justifyContent: "center",
3400
- padding: "40px 20px",
3401
- color: "#999"
3402
- },
3403
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3404
- style: {
3405
- width: "40px",
3406
- height: "40px",
3407
- border: "4px solid #f3f3f3",
3408
- borderTop: "4px solid var(--primary-color, #222f67)",
3409
- borderRadius: "50%",
3410
- animation: "spin 1s linear infinite"
3411
- }
3412
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("style", {
3413
- children: "\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n "
3414
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3415
- component: "div",
3416
- sx: {
3417
- fontSize: "14px",
3418
- marginTop: "32px",
3419
- fontFamily: WIDGET_FONT,
3420
- lineHeight: "normal",
3421
- color: "#999"
3422
- },
3423
- children: "Chargement de l'historique..."
3424
- })]
3425
- }) : error ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3426
- style: {
3427
- display: "flex",
3428
- flexDirection: "column",
3429
- alignItems: "center",
3430
- justifyContent: "center",
3431
- padding: "40px 20px",
3432
- color: "#dc3545"
3433
- },
3434
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
3435
- icon: _freeSolidSvgIcons.faWarning,
3436
- style: {
3437
- fontSize: "48px",
3438
- marginBottom: "16px"
3439
- }
3440
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3441
- component: "div",
3442
- sx: {
3443
- fontSize: "14px",
3444
- textAlign: "center",
3445
- fontFamily: WIDGET_FONT,
3446
- margin: 0,
3447
- lineHeight: "normal"
3448
- },
3449
- children: error
3450
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Button, {
3451
- onClick: fetchUserHistory,
3452
- variant: "contained",
3453
- sx: {
3454
- marginTop: "35px",
3455
- padding: "6px 20px",
3456
- backgroundColor: "var(--primary-color, #222f67)",
3457
- color: "white",
3458
- borderRadius: "6px",
3459
- fontSize: "14px",
3460
- fontWeight: "600",
3461
- fontFamily: WIDGET_FONT,
3462
- textTransform: "none",
3463
- boxShadow: "none",
3464
- "&:hover": {
3465
- backgroundColor: "var(--primary-color, #222f67)",
3466
- opacity: 0.9,
3467
- boxShadow: "none"
3468
- }
3469
- },
3470
- children: "R\xE9essayer"
3471
- })]
3472
- }) : conversations.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3473
- style: {
3474
- display: "flex",
3475
- flexDirection: "column",
3476
- alignItems: "center",
3477
- justifyContent: "center",
3478
- padding: "40px 20px",
3479
- color: "#999"
3480
- },
3481
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
3482
- icon: _freeSolidSvgIcons.faComments,
3483
- style: {
3484
- fontSize: "48px",
3485
- marginBottom: "32px"
3486
- }
3487
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3488
- component: "div",
3489
- sx: {
3490
- fontSize: "14px",
3491
- textAlign: "center",
3492
- fontFamily: WIDGET_FONT,
3493
- lineHeight: "normal",
3494
- color: "#999"
3495
- },
3496
- children: "Aucune conversation trouv\xE9e"
3497
- })]
3498
- }) : conversations.map((conversation, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3499
- onClick: () => handleConversationClick(conversation),
3500
- style: {
3501
- backgroundColor: "white",
3502
- borderRadius: "8px",
3503
- padding: "16px",
3504
- marginBottom: "12px",
3505
- cursor: "pointer",
3506
- boxShadow: "0 1px 3px rgba(0,0,0,0.1)",
3507
- transition: "all 0.2s ease",
3508
- border: "1px solid #e0e0e0"
3509
- },
3510
- onMouseEnter: e => {
3511
- e.currentTarget.style.boxShadow = "0 4px 8px rgba(0,0,0,0.15)";
3512
- e.currentTarget.style.transform = "translateY(-2px)";
3513
- },
3514
- onMouseLeave: e => {
3515
- e.currentTarget.style.boxShadow = "0 1px 3px rgba(0,0,0,0.1)";
3516
- e.currentTarget.style.transform = "translateY(0)";
3517
- },
3518
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3519
- style: {
3520
- display: "flex",
3521
- justifyContent: "space-between",
3522
- alignItems: "center",
3523
- marginBottom: "12px"
3524
- },
3525
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3526
- style: {
3527
- display: "flex",
3528
- alignItems: "center",
3529
- gap: "8px"
3530
- },
3531
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
3532
- icon: _freeSolidSvgIcons.faComments,
3533
- style: {
3534
- color: "var(--primary-color, #222f67)",
3535
- fontSize: "14px"
3536
- }
3537
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3538
- component: "div",
3539
- sx: {
3540
- fontWeight: "600",
3541
- color: "#333",
3542
- fontSize: "13px",
3543
- fontFamily: WIDGET_FONT,
3544
- margin: 0,
3545
- lineHeight: "normal"
3546
- },
3547
- children: truncateText(conversation.title || "Aucun titre disponible")
3548
- })]
3549
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3550
- style: {
3551
- color: "#999",
3552
- fontSize: "11px"
3553
- },
3554
- children: conversation.createdAt && formatDate(conversation.createdAt)
3555
- })]
3556
- })
3557
- }, conversation.id || index))
3558
- })]
3559
- });
3560
- };
3561
- const PuiHelpWidget = _ref7 => {
3562
- let {
3563
- showReclamation = true,
3564
- showGuides = false,
3565
- showTijaria = true,
3566
- currentProjectCode = null,
3567
- guideBaseUrl
3568
- } = _ref7;
3569
- const [dropdownOpen, setDropdownOpen] = (0, _react.useState)(false);
3570
- const [isTourActive, setIsTourActive] = (0, _react.useState)(false);
3571
- const {
3572
- guideApi
3573
- } = (0, _PuiHelpWidgetContext.useHelpWidget)();
3574
- const queryClient = (0, _reactQuery.useQueryClient)();
3575
- const toggle = () => {
3576
- setDropdownOpen(prev => !prev);
3577
- };
3578
- (0, _react.useEffect)(() => {
3579
- const openDropdown = () => {
3580
- setIsOpen(true);
3581
- setIsTourActive(true);
3582
- };
3583
- const closeDropdown = () => {
3584
- setIsOpen(false);
3585
- setIsTourActive(false);
3586
- };
3587
- window.addEventListener("open-aide-dropdown", openDropdown);
3588
- window.addEventListener("close-aide-dropdown", closeDropdown);
3589
- return () => {
3590
- window.removeEventListener("open-aide-dropdown", openDropdown);
3591
- window.removeEventListener("close-aide-dropdown", closeDropdown);
3592
- };
3593
- }, []);
3594
- const dispatch = (0, _reactRedux.useDispatch)();
3595
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
3596
- const sidebarRef = (0, _react.useRef)(null);
3597
- const triggerRef = (0, _react.useRef)(null);
3598
- const firstFocusableRef = (0, _react.useRef)(null);
3599
- const contactPopoverRef = (0, _react.useRef)(null);
3600
- const firstContactFocusableRef = (0, _react.useRef)(null);
3601
- const previousContactActiveElement = (0, _react.useRef)(null);
3602
- const previousActiveElement = (0, _react.useRef)(null);
3603
- const [hoveredIndex, setHoveredIndex] = (0, _react.useState)(null);
3604
- const [activeChat, setActiveChat] = (0, _react.useState)(null);
3605
- const [infoMessages, setInfoMessages] = (0, _react.useState)([]);
3606
- const [incidentMessages, setIncidentMessages] = (0, _react.useState)([]);
3607
- const [reclamationModalOpen, setReclamationModalOpen] = (0, _react.useState)(false);
3608
- const [viewingReclamations, setViewingReclamations] = (0, _react.useState)(false);
3609
- const [viewingTijariaHistory, setViewingTijariaHistory] = (0, _react.useState)(false);
3610
- const [contactUsMenuAnchor, setContactUsMenuAnchor] = (0, _react.useState)(null);
3611
- const contactUsMenuOpen = Boolean(contactUsMenuAnchor);
3612
- const [popupPosition, setPopupPosition] = (0, _react.useState)({
3613
- x: 0,
3614
- y: 0
3615
- });
3616
- const [isDragging, setIsDragging] = (0, _react.useState)(false);
3617
- const [dragStart, setDragStart] = (0, _react.useState)({
3618
- x: 0,
3619
- y: 0
3620
- });
3621
- const [guidesPanelOpen, setGuidesPanelOpen] = (0, _react.useState)(false);
3622
- const [faqPanelOpen, setFaqPanelOpen] = (0, _react.useState)(false);
3623
- const [guideData, setGuideData] = (0, _react.useState)(null);
3624
- const [faqData, setFaqData] = (0, _react.useState)(null);
3625
- const [loadingGuide, setLoadingGuide] = (0, _react.useState)(false);
3626
- (0, _react.useEffect)(() => {
3627
- const openNouvelleReclamation = () => {
3628
- setReclamationModalOpen(true);
3629
- };
3630
- window.addEventListener("open-nouvelle-reclamation", openNouvelleReclamation);
3631
- return () => {
3632
- window.removeEventListener("open-nouvelle-reclamation", openNouvelleReclamation);
3633
- };
3634
- }, []);
3635
- (0, _react.useEffect)(() => {
3636
- async function fetchGuideData() {
3637
- if (!showGuides || !currentProjectCode || !guidesPanelOpen) return;
3638
- try {
3639
- var _response$data;
3640
- const response = await guideApi.getGuideContent(currentProjectCode);
3641
- setGuideData(response === null || response === void 0 || (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.body);
3642
- } catch (error) {
3643
- console.error("Error loading guide data:", error);
3644
- setGuideData(null);
3645
- }
3646
- }
3647
- fetchGuideData();
3648
- }, [currentProjectCode, guidesPanelOpen, showGuides]);
3649
- (0, _react.useEffect)(() => {
3650
- async function fetchFaqData() {
3651
- if (!faqPanelOpen) return;
3652
- try {
3653
- const faqModule = await _guides.default["FAQ"];
3654
- const data = faqModule.default || faqModule;
3655
- setFaqData(data);
3656
- } catch (error) {
3657
- console.error("Error loading FAQ data:", error);
3658
- setFaqData(null);
3659
- }
3660
- }
3661
- fetchFaqData();
3662
- }, [faqPanelOpen]);
3663
- const handleGuideMenuClick = event => {
3664
- setIsOpen(false);
3665
- setGuidesPanelOpen(true);
3666
- };
3667
- const handleFaqClick = () => {
3668
- setIsOpen(false);
3669
- setFaqPanelOpen(true);
3670
- };
3671
- const handleContactUsClick = event => {
3672
- const rect = event.currentTarget.getBoundingClientRect();
3673
- setContactUsMenuAnchor(event.currentTarget);
3674
- setPopupPosition({
3675
- x: rect.left - 291,
3676
- y: rect.top
3677
- });
3678
- };
3679
- const handleContactUsMenuClose = () => {
3680
- setContactUsMenuAnchor(null);
3681
- };
3682
- const handleContactClick = () => {
3683
- window.location.href = "mailto:support@moroccotradenet.ma";
3684
- handleContactUsMenuClose();
3685
- };
3686
- const handlePdfGuideClick = async () => {
3687
- setLoadingGuide(true);
3688
- try {
3689
- var _response$data2;
3690
- const response = await guideApi.getGuideByProjectCode(currentProjectCode);
3691
- const guideData = response === null || response === void 0 || (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.body;
3692
- if (guideData !== null && guideData !== void 0 && guideData.urlFichier) {
3693
- const link = document.createElement("a");
3694
- link.href = guideData.urlFichier;
3695
- link.setAttribute("download", "");
3696
- document.body.appendChild(link);
3697
- link.click();
3698
- document.body.removeChild(link);
3699
- } else {
3700
- console.warn("No PDF guide found for project: ".concat(currentProjectCode));
3701
- }
3702
- } catch (error) {
3703
- console.error("Error fetching guide:", error);
3704
- } finally {
3705
- setLoadingGuide(false);
3706
- }
3707
- };
3708
- const handleMouseDown = e => {
3709
- if (e.target.classList.contains("draggable-handle")) {
3710
- setIsDragging(true);
3711
- setDragStart({
3712
- x: e.clientX - popupPosition.x,
3713
- y: e.clientY - popupPosition.y
3714
- });
3715
- }
3716
- };
3717
- const handleMouseMove = e => {
3718
- if (isDragging) {
3719
- setPopupPosition({
3720
- x: e.clientX - dragStart.x,
3721
- y: e.clientY - dragStart.y
3722
- });
3723
- }
3724
- };
3725
- const handleMouseUp = () => {
3726
- setIsDragging(false);
3727
- };
3728
- (0, _react.useEffect)(() => {
3729
- if (isDragging) {
3730
- document.addEventListener("mousemove", handleMouseMove);
3731
- document.addEventListener("mouseup", handleMouseUp);
3732
- return () => {
3733
- document.removeEventListener("mousemove", handleMouseMove);
3734
- document.removeEventListener("mouseup", handleMouseUp);
3735
- };
3736
- }
3737
- }, [isDragging, dragStart, popupPosition]);
3738
- (0, _react.useEffect)(() => {
3739
- if (isOpen) {
3740
- previousActiveElement.current = document.activeElement;
3741
- setTimeout(() => {
3742
- var _firstFocusableRef$cu3;
3743
- (_firstFocusableRef$cu3 = firstFocusableRef.current) === null || _firstFocusableRef$cu3 === void 0 || _firstFocusableRef$cu3.focus();
3744
- }, 100);
3745
- } else {
3746
- if (previousActiveElement.current) {
3747
- previousActiveElement.current.focus();
3748
- }
3749
- }
3750
- }, [isOpen]);
3751
- (0, _react.useEffect)(() => {
3752
- if (!isOpen) return;
3753
- const handleKeyDown = e => {
3754
- if (e.key === "Escape") {
3755
- setIsOpen(false);
3756
- return;
3757
- }
3758
- if (e.key === "Tab") {
3759
- const sidebar = sidebarRef.current;
3760
- if (!sidebar) return;
3761
- const focusableElements = sidebar.querySelectorAll('button:not([disabled]), [href]:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled])');
3762
- const focusableArray = Array.from(focusableElements);
3763
- const firstElement = focusableArray[0];
3764
- const lastElement = focusableArray[focusableArray.length - 1];
3765
- if (focusableArray.length === 0) return;
3766
- if (e.shiftKey) {
3767
- if (document.activeElement === firstElement) {
3768
- lastElement.focus();
3769
- e.preventDefault();
3770
- }
3771
- } else {
3772
- if (document.activeElement === lastElement) {
3773
- firstElement.focus();
3774
- e.preventDefault();
3775
- }
3776
- }
3777
- }
3778
- };
3779
- document.addEventListener("keydown", handleKeyDown);
3780
- return () => document.removeEventListener("keydown", handleKeyDown);
3781
- }, [isOpen]);
3782
- (0, _react.useEffect)(() => {
3783
- if (isOpen) {
3784
- document.body.style.overflow = "hidden";
3785
- } else {
3786
- document.body.style.overflow = "";
3787
- }
3788
- return () => {
3789
- document.body.style.overflow = "";
3790
- };
3791
- }, [isOpen]);
3792
- (0, _react.useEffect)(() => {
3793
- if (contactUsMenuOpen) {
3794
- previousContactActiveElement.current = document.activeElement;
3795
- setTimeout(() => {
3796
- const popover = contactPopoverRef.current;
3797
- if (popover) {
3798
- const firstMenuItem = popover.querySelector('[role="menuitem"]');
3799
- if (firstMenuItem) {
3800
- firstMenuItem.focus();
3801
- }
3802
- }
3803
- }, 100);
3804
- } else {
3805
- if (previousContactActiveElement.current) {
3806
- previousContactActiveElement.current.focus();
3807
- }
3808
- }
3809
- }, [contactUsMenuOpen]);
3810
- (0, _react.useEffect)(() => {
3811
- if (!contactUsMenuOpen) return;
3812
- const handleKeyDown = e => {
3813
- if (e.key === "Escape") {
3814
- handleContactUsMenuClose();
3815
- return;
3816
- }
3817
- if (e.key === "Tab") {
3818
- const popover = contactPopoverRef.current;
3819
- if (!popover) return;
3820
- const focusableElements = popover.querySelectorAll('button:not([disabled]), [role="menuitem"]:not([disabled]), [href]:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled])');
3821
- const focusableArray = Array.from(focusableElements);
3822
- const firstElement = focusableArray[0];
3823
- const lastElement = focusableArray[focusableArray.length - 1];
3824
- if (focusableArray.length === 0) return;
3825
- if (e.shiftKey) {
3826
- if (document.activeElement === firstElement) {
3827
- lastElement.focus();
3828
- e.preventDefault();
3829
- }
3830
- } else {
3831
- if (document.activeElement === lastElement) {
3832
- firstElement.focus();
3833
- e.preventDefault();
3834
- }
3835
- }
3836
- }
3837
- };
3838
- document.addEventListener("keydown", handleKeyDown);
3839
- return () => document.removeEventListener("keydown", handleKeyDown);
3840
- }, [contactUsMenuOpen]);
3841
- const navigationLinks = [...(showGuides && currentProjectCode ? [{
3842
- icon: _freeSolidSvgIcons.faBook,
3843
- title: "Guides utilisateurs",
3844
- action: handleGuideMenuClick
3845
- }] : []), {
3846
- icon: _freeSolidSvgIcons.faPen,
3847
- title: "Foires aux questions",
3848
- id: "foire-aux-questions",
3849
- action: handleFaqClick
3850
- }, ...(showReclamation ? [{
3851
- icon: _freeSolidSvgIcons.faClipboardList,
3852
- title: "Mes demandes d'assistance",
3853
- id: "mes-reclamations",
3854
- action: () => {
3855
- queryClient.invalidateQueries("get_list_reclamation");
3856
- setViewingReclamations(true);
3857
- }
3858
- }, {
3859
- icon: _freeSolidSvgIcons.faBullhorn,
3860
- title: "Nouvelle demande d'assistance",
3861
- id: "nouvelle-reclamation",
3862
- action: () => setReclamationModalOpen(true)
3863
- }] : []), {
3864
- icon: _freeSolidSvgIcons.faAddressBook,
3865
- title: "Contactez-nous",
3866
- id: "contactez-nous",
3867
- action: handleContactUsClick
3868
- },
3869
- /*{
3870
- icon: faComments,
3871
- title: "TijarIA",
3872
- action: () => {
3873
- setActiveChat(null);
3874
- setViewingReclamations(false);
3875
- },
3876
- },*/
3877
- ...(showTijaria ? [{
3878
- icon: _freeSolidSvgIcons.faCommentDots,
3879
- title: "TijarIA",
3880
- id: "tijaria",
3881
- action: () => {
3882
- setViewingTijariaHistory(false);
3883
- setViewingReclamations(false);
3884
- }
3885
- }, {
3886
- icon: _freeSolidSvgIcons.faComments,
3887
- title: "Historique TijarIA",
3888
- id: "mes-conversations",
3889
- action: () => {
3890
- setViewingTijariaHistory(true);
3891
- setViewingReclamations(false);
3892
- }
3893
- }] : [])];
3894
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
3895
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3896
- className: "help-widget-button ".concat(isOpen ? "open" : ""),
3897
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactstrap.Button, {
3898
- ref: triggerRef,
3899
- color: "light",
3900
- className: "help-trigger",
3901
- onClick: () => setIsOpen(!isOpen),
3902
- "aria-label": "Ouvrir le centre d'aide",
3903
- "aria-expanded": isOpen,
3904
- "aria-controls": "help-sidebar",
3905
- tabIndex: 0,
3906
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3907
- component: "div",
3908
- sx: {
3909
- fontWeight: "600",
3910
- fontSize: "14px",
3911
- color: "#282828",
3912
- fontFamily: WIDGET_FONT,
3913
- margin: 0,
3914
- padding: 0,
3915
- lineHeight: "normal"
3916
- },
3917
- children: "Besoin d'aide ?"
3918
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
3919
- icon: isOpen ? _freeSolidSvgIcons.faChevronLeft : _freeSolidSvgIcons.faChevronRight,
3920
- className: "arrow-icon",
3921
- "aria-hidden": "true"
3922
- })]
3923
- })
3924
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
3925
- id: "help-sidebar",
3926
- ref: sidebarRef,
3927
- className: "help-widget-sidebar ".concat(isOpen ? "open" : ""),
3928
- role: "dialog",
3929
- "aria-modal": "true",
3930
- "aria-labelledby": "help-title",
3931
- "aria-hidden": !isOpen,
3932
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactstrap.Card, {
3933
- className: "h-100 border-0 shadow-lg",
3934
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactstrap.CardBody, {
3935
- className: "p-0 d-flex flex-column",
3936
- style: {
3937
- flex: 1,
3938
- minHeight: 0
3939
- },
3940
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3941
- style: {
3942
- paddingTop: "12px",
3943
- paddingBottom: "20px",
3944
- paddingLeft: "17px",
3945
- paddingRight: "20px",
3946
- borderBottom: "1px solid #e9ecef",
3947
- backgroundColor: "white",
3948
- display: "flex",
3949
- alignItems: "center",
3950
- justifyContent: "space-between"
3951
- },
3952
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
3953
- style: {
3954
- display: "flex",
3955
- alignItems: "center"
3956
- },
3957
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
3958
- icon: _freeRegularSvgIcons.faQuestionCircle,
3959
- style: {
3960
- color: "var(--primary-color, #222f67)",
3961
- fontSize: "24px",
3962
- marginRight: "8px",
3963
- flexShrink: 0
3964
- },
3965
- "aria-hidden": "true"
3966
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
3967
- id: "help-title",
3968
- component: "div",
3969
- onClick: () => setIsOpen(false),
3970
- sx: {
3971
- margin: 0,
3972
- color: "#495057",
3973
- fontWeight: "600",
3974
- fontSize: "16px",
3975
- cursor: "pointer",
3976
- userSelect: "none",
3977
- flex: 1,
3978
- lineHeight: "normal",
3979
- fontFamily: WIDGET_FONT,
3980
- "&:hover": {
3981
- color: "var(--primary-color, #222f67)"
3982
- }
3983
- },
3984
- children: "Centre d'aide"
3985
- })]
3986
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
3987
- ref: firstFocusableRef,
3988
- onClick: () => setIsOpen(false),
3989
- "aria-label": "Fermer le centre d'aide",
3990
- tabIndex: 0,
3991
- style: {
3992
- background: "none",
3993
- border: "none",
3994
- fontSize: "20px",
3995
- cursor: "pointer",
3996
- padding: "4px 8px",
3997
- color: "#6c757d",
3998
- lineHeight: 1,
3999
- borderRadius: "4px"
4000
- },
4001
- onMouseEnter: e => {
4002
- e.currentTarget.style.backgroundColor = "#f0f0f0";
4003
- },
4004
- onMouseLeave: e => {
4005
- e.currentTarget.style.backgroundColor = "transparent";
4006
- },
4007
- children: "\u2715"
4008
- })]
4009
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
4010
- style: {
4011
- padding: "15px 15px",
4012
- borderBottom: "1px solid #e9ecef",
4013
- backgroundColor: "white"
4014
- },
4015
- children: navigationLinks.map((link, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
4016
- id: link.id,
4017
- onClick: link.action,
4018
- onKeyDown: e => {
4019
- if (e.key === "Enter" || e.key === " ") {
4020
- e.preventDefault();
4021
- link.action(e);
4022
- }
4023
- },
4024
- role: "button",
4025
- tabIndex: 0,
4026
- "aria-label": link.title,
4027
- style: {
4028
- display: "flex",
4029
- alignItems: "center",
4030
- padding: "8px 12px",
4031
- marginRight: "130px",
4032
- cursor: "pointer",
4033
- transition: "all 0.2s ease",
4034
- borderRadius: "4px",
4035
- backgroundColor: hoveredIndex === index ? "#f0f0ef" : "transparent"
4036
- },
4037
- onMouseEnter: () => setHoveredIndex(index),
4038
- onMouseLeave: () => setHoveredIndex(null),
4039
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
4040
- style: {
4041
- width: "20px",
4042
- display: "flex",
4043
- justifyContent: "center",
4044
- marginRight: "10px"
4045
- },
4046
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
4047
- icon: link.icon,
4048
- style: {
4049
- color: hoveredIndex === index ? "var(--primary-color, #222f67)" : "#6c757d",
4050
- fontSize: "14px",
4051
- transition: "color 0.2s ease"
4052
- },
4053
- "aria-hidden": "true"
4054
- })
4055
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
4056
- component: "div",
4057
- sx: {
4058
- color: hoveredIndex === index ? "var(--primary-color, #222f67)" : "#6c757d",
4059
- fontSize: "12.2px",
4060
- fontWeight: "500",
4061
- transition: "color 0.2s ease",
4062
- lineHeight: "normal",
4063
- fontFamily: WIDGET_FONT,
4064
- margin: 0,
4065
- padding: 0
4066
- },
4067
- children: link.title
4068
- })]
4069
- }, index))
4070
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(BottomContent, {
4071
- showTijaria: showTijaria,
4072
- viewingReclamations: viewingReclamations,
4073
- viewingTijariaHistory: viewingTijariaHistory,
4074
- activeChat: activeChat,
4075
- infoMessages: infoMessages,
4076
- incidentMessages: incidentMessages,
4077
- setViewingReclamations: setViewingReclamations,
4078
- setViewingTijariaHistory: setViewingTijariaHistory,
4079
- setActiveChat: setActiveChat,
4080
- setInfoMessages: setInfoMessages,
4081
- setIncidentMessages: setIncidentMessages
4082
- })]
4083
- })
4084
- })
4085
- }), showGuides && /*#__PURE__*/(0, _jsxRuntime.jsx)(ContentPanel, {
4086
- isOpen: guidesPanelOpen,
4087
- onClose: () => {
4088
- setGuidesPanelOpen(false);
4089
- setGuideData(null);
4090
- },
4091
- contentData: guideData,
4092
- title: "Guide utilisateurs",
4093
- showDownloadButton: true,
4094
- onDownload: handlePdfGuideClick,
4095
- loadingDownload: loadingGuide,
4096
- projectCode: currentProjectCode,
4097
- guideBaseUrl: guideBaseUrl
4098
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ContentPanel, {
4099
- isOpen: faqPanelOpen,
4100
- onClose: () => {
4101
- setFaqPanelOpen(false);
4102
- setFaqData(null);
4103
- },
4104
- contentData: faqData,
4105
- title: "Foire aux questions",
4106
- showDownloadButton: false,
4107
- showExternalLinkLabel: true,
4108
- externalLinkUrl: "https://www.portnet.ma/faq"
4109
- }), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
4110
- className: "help-widget-overlay",
4111
- onClick: () => setIsOpen(false),
4112
- style: {
4113
- position: "fixed",
4114
- top: 0,
4115
- left: 0,
4116
- width: "100vw",
4117
- height: "100vh",
4118
- backgroundColor: "rgba(0, 0, 0, 0.3)",
4119
- zIndex: 999
4120
- }
4121
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Popover, {
4122
- open: contactUsMenuOpen,
4123
- anchorEl: contactUsMenuAnchor,
4124
- onClose: handleContactUsMenuClose,
4125
- anchorReference: "anchorPosition",
4126
- anchorPosition: {
4127
- top: popupPosition.y,
4128
- left: popupPosition.x
4129
- },
4130
- PaperProps: {
4131
- ref: contactPopoverRef,
4132
- elevation: 8,
4133
- sx: {
4134
- minWidth: 280,
4135
- borderRadius: 3,
4136
- overflow: "visible",
4137
- boxShadow: "0 8px 32px rgba(0,0,0,0.12)"
4138
- },
4139
- role: "dialog",
4140
- "aria-modal": "true",
4141
- "aria-labelledby": "contact-title"
4142
- },
4143
- TransitionProps: {
4144
- timeout: 300
4145
- },
4146
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
4147
- className: "draggable-handle",
4148
- onMouseDown: handleMouseDown,
4149
- style: {
4150
- padding: "16px 20px",
4151
- borderBottom: "1px solid #e0e0e0",
4152
- cursor: "move",
4153
- userSelect: "none",
4154
- backgroundColor: "#f8f9fa",
4155
- borderTopLeftRadius: "12px",
4156
- borderTopRightRadius: "12px",
4157
- display: "flex",
4158
- justifyContent: "center",
4159
- alignItems: "center",
4160
- position: "relative"
4161
- },
4162
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
4163
- style: {
4164
- display: "flex",
4165
- alignItems: "center",
4166
- gap: "8px"
4167
- },
4168
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
4169
- component: "div",
4170
- id: "contact-title",
4171
- sx: {
4172
- fontWeight: "600",
4173
- fontSize: "15px",
4174
- color: "#333",
4175
- fontFamily: WIDGET_FONT,
4176
- margin: 0,
4177
- padding: 0,
4178
- lineHeight: "normal"
4179
- },
4180
- children: "Contactez-nous"
4181
- })
4182
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
4183
- onClick: handleContactUsMenuClose,
4184
- "aria-label": "Fermer",
4185
- tabIndex: 0,
4186
- style: {
4187
- cursor: "pointer",
4188
- padding: "4px",
4189
- borderRadius: "4px",
4190
- display: "flex",
4191
- alignItems: "center",
4192
- justifyContent: "center",
4193
- transition: "background-color 0.2s",
4194
- position: "absolute",
4195
- right: "16px",
4196
- background: "none",
4197
- border: "none"
4198
- },
4199
- onMouseEnter: e => e.currentTarget.style.backgroundColor = "#e0e0e0",
4200
- onMouseLeave: e => e.currentTarget.style.backgroundColor = "transparent",
4201
- onFocus: e => {
4202
- e.currentTarget.style.backgroundColor = "#e0e0e0";
4203
- e.currentTarget.style.outline = "2px solid var(--primary-color, #222f67)";
4204
- e.currentTarget.style.outlineOffset = "2px";
4205
- },
4206
- onBlur: e => {
4207
- e.currentTarget.style.backgroundColor = "transparent";
4208
- e.currentTarget.style.outline = "none";
4209
- },
4210
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
4211
- icon: _freeSolidSvgIcons.faTimes,
4212
- style: {
4213
- fontSize: "14px",
4214
- color: "#666"
4215
- },
4216
- "aria-hidden": "true"
4217
- })
4218
- })]
4219
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
4220
- style: {
4221
- padding: "8px"
4222
- },
4223
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.MenuItem, {
4224
- onClick: () => {
4225
- window.open("tel:+212520473100", "_self");
4226
- handleContactUsMenuClose();
4227
- },
4228
- onKeyDown: e => {
4229
- if (e.key === "Enter" || e.key === " ") {
4230
- e.preventDefault();
4231
- window.open("tel:+212520473100", "_self");
4232
- handleContactUsMenuClose();
4233
- }
4234
- },
4235
- tabIndex: 0,
4236
- sx: {
4237
- borderRadius: 1,
4238
- mb: 0.5,
4239
- py: 1.5,
4240
- "&:hover": {
4241
- backgroundColor: "var(--primary-alpha-8, rgba(34, 47, 103, 0.08))"
4242
- },
4243
- "&:focus": {
4244
- backgroundColor: "var(--primary-alpha-8, rgba(34, 47, 103, 0.08))",
4245
- outline: "2px solid var(--primary-color, #222f67)",
4246
- outlineOffset: "2px"
4247
- }
4248
- },
4249
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemIcon, {
4250
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.Phone, {
4251
- fontSize: "small",
4252
- sx: {
4253
- color: "var(--primary-color, #222f67)"
4254
- },
4255
- "aria-hidden": "true"
4256
- })
4257
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemText, {
4258
- primary: "Assistance t\xE9l\xE9phonique",
4259
- secondary: "+212 520 47 31 00",
4260
- primaryTypographyProps: {
4261
- fontSize: "14px",
4262
- fontWeight: "500"
4263
- },
4264
- secondaryTypographyProps: {
4265
- fontSize: "12px"
4266
- }
4267
- })]
4268
- })
4269
- })]
4270
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ReclamationFormModal, {
4271
- open: reclamationModalOpen,
4272
- onClose: () => setReclamationModalOpen(false)
4273
- })]
4274
- });
4275
- };
4276
- var _default = exports.default = PuiHelpWidget;