@cnamts/synapse 1.0.19 → 1.0.21

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 (378) hide show
  1. package/dist/{DateFilter-CeVuSfJ9.js → DateFilter-uN8OURoP.js} +1 -1
  2. package/dist/{NumberFilter-C8PAu_sw.js → NumberFilter-sm1dQNQi.js} +1 -1
  3. package/dist/{PeriodFilter-UMUaxx3d.js → PeriodFilter-Cklsxnh9.js} +1 -1
  4. package/dist/{SelectFilter-CqZl8CYt.js → SelectFilter-CWefj27Z.js} +1 -1
  5. package/dist/{TextFilter-D_RhhNOh.js → TextFilter-Ddyj885L.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +4 -4
  7. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +17 -7
  8. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +4 -4
  9. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +4 -4
  10. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +2416 -0
  11. package/dist/components/Customs/Selects/SyAutocomplete/types.d.ts +5 -0
  12. package/dist/components/Customs/Selects/SyAutocomplete/utils/ariaManager.d.ts +14 -0
  13. package/dist/components/Customs/Selects/SyAutocomplete/utils/useItemUtils.d.ts +16 -0
  14. package/dist/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.d.ts +28 -0
  15. package/dist/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.d.ts +12 -0
  16. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +2 -0
  17. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +160 -0
  18. package/dist/components/Customs/SyCheckBoxGroup/locales.d.ts +3 -0
  19. package/dist/components/Customs/SyCheckBoxGroup/types.d.ts +10 -0
  20. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +1545 -2
  21. package/dist/components/Customs/SyIcon/SyIcon.d.ts +2 -1
  22. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +1495 -2
  23. package/dist/components/DatePicker/composables/useDateSelection.d.ts +1 -0
  24. package/dist/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.d.ts +60 -0
  25. package/dist/components/ErrorPage/ErrorPage.d.ts +1 -12
  26. package/dist/components/ErrorPage/locales.d.ts +18 -3
  27. package/dist/components/FileUpload/FileUpload.d.ts +2 -0
  28. package/dist/components/MaintenancePage/locales.d.ts +18 -2
  29. package/dist/components/NotFoundPage/locales.d.ts +20 -4
  30. package/dist/components/PaginatedTable/PaginatedTable.d.ts +1 -1
  31. package/dist/components/PaginatedTable/Pagination.d.ts +17 -0
  32. package/dist/components/StatusPage/StatusPage.d.ts +39 -0
  33. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -5
  34. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -5
  35. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +13 -3
  36. package/dist/components/index.d.ts +4 -0
  37. package/dist/components/types.d.ts +15 -0
  38. package/dist/composables/useFormFieldErrorHandling.d.ts +31 -0
  39. package/dist/design-system-v3.js +126 -122
  40. package/dist/design-system-v3.umd.cjs +325 -314
  41. package/dist/{main-B39UVv5p.js → main-CWniLr0s.js} +15837 -14587
  42. package/dist/modules.d.ts +6 -0
  43. package/dist/style.css +1 -1
  44. package/dist/utils/theme/index.d.ts +6 -0
  45. package/package.json +12 -10
  46. package/src/assets/amelipro/icons.ts +166 -153
  47. package/src/components/Accordion/Accordion.mdx +4 -1
  48. package/src/components/Accordion/{Accessibilite/AccessibilityGuide.mdx → accessibilite/Accessibility.mdx} +2 -2
  49. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +73 -14
  50. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +119 -27
  51. package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.a11y.spec.ts +304 -0
  52. package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.spec.ts +435 -9
  53. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +60 -0
  54. package/src/components/Amelipro/AmeliproIcon/__tests__/AmeliproIcon.spec.ts +1 -1
  55. package/src/components/Amelipro/AmeliproIcon/iconList.ts +2 -0
  56. package/src/components/BackBtn/BackBtn.vue +5 -4
  57. package/src/components/BackBtn/accessibilite/Accessibility.mdx +15 -0
  58. package/src/components/BackToTopBtn/BackToTopBtn.vue +6 -3
  59. package/src/components/BackToTopBtn/accessibilite/Accessibility.mdx +15 -0
  60. package/src/components/Captcha/Captcha.vue +5 -1
  61. package/src/components/Captcha/CaptchaAlert.vue +9 -7
  62. package/src/components/Captcha/accessibilite/Accessibility.mdx +10 -0
  63. package/src/components/ChipList/accessibilite/Accessibility.mdx +15 -0
  64. package/src/components/CollapsibleList/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +8 -6
  65. package/src/components/Common/IconSlot/IconSlot.vue +1 -1
  66. package/src/components/ContextualMenu/ContextualMenu.stories.ts +0 -3
  67. package/src/components/ContextualMenu/accessibilite/Accessibility.mdx +71 -0
  68. package/src/components/CookieBanner/CookieBanner.stories.ts +11 -20
  69. package/src/components/CookieBanner/CookieBanner.vue +20 -5
  70. package/src/components/CookieBanner/accessibilite/Accessibility.mdx +71 -0
  71. package/src/components/CookieBanner/tests/CookieBanner.spec.ts +48 -4
  72. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +5 -4
  73. package/src/components/CopyBtn/CopyBtn.vue +6 -3
  74. package/src/components/CopyBtn/accessibilite/Accessibility.mdx +15 -0
  75. package/src/components/Customs/Selects/SelectBtnField/accessibilite/Accessibility.mdx +15 -0
  76. package/src/components/Customs/Selects/SelectOverview.mdx +112 -1
  77. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.mdx +52 -0
  78. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +979 -0
  79. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +653 -0
  80. package/src/components/Customs/Selects/{SySelect → SyAutocomplete/accessibilite}/Accessibilite.stories.ts +7 -38
  81. package/src/components/Customs/Selects/{SySelect/Accessibilite.mdx → SyAutocomplete/accessibilite/Accessibility.mdx} +15 -20
  82. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +72 -0
  83. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +345 -0
  84. package/src/components/Customs/Selects/SyAutocomplete/types.ts +7 -0
  85. package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +180 -0
  86. package/src/components/Customs/Selects/SyAutocomplete/utils/useItemUtils.ts +46 -0
  87. package/src/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.ts +107 -0
  88. package/src/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.ts +74 -0
  89. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.vue +13 -9
  90. package/src/components/Customs/Selects/SyInputSelect/accessibilite/Accessibility.mdx +12 -0
  91. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +43 -34
  92. package/src/components/Customs/Selects/SySelect/SySelect.vue +19 -2
  93. package/src/components/Customs/Selects/SySelect/accessibilite/Accessibility.mdx +274 -0
  94. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +21 -16
  95. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.mdx +32 -0
  96. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.stories.ts +856 -0
  97. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +334 -0
  98. package/src/components/Customs/SyCheckBoxGroup/accessibilite/Accessibility.mdx +243 -0
  99. package/src/components/Customs/SyCheckBoxGroup/locales.ts +3 -0
  100. package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.a11y.spec.ts +30 -0
  101. package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.spec.ts +152 -0
  102. package/src/components/Customs/SyCheckBoxGroup/types.ts +10 -0
  103. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +16 -27
  104. package/src/components/Customs/SyCheckbox/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +3 -3
  105. package/src/components/Customs/SyForm/SyForm.a11y.spec.ts +1 -1
  106. package/src/components/Customs/SyForm/accessibilite/Accessibility.mdx +10 -0
  107. package/src/components/Customs/SyIcon/SyIcon.mdx +4 -1
  108. package/src/components/Customs/SyIcon/SyIcon.vue +4 -3
  109. package/src/components/Customs/SyIcon/{Accessibilite.stories.ts → accessibilite/Accessibilite.stories.ts} +3 -3
  110. package/src/components/Customs/SyIcon/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
  111. package/src/components/Customs/SyPagination/SyPagination.mdx +4 -2
  112. package/src/components/Customs/SyPagination/accessibilite/Accessibility.mdx +10 -0
  113. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +16 -43
  114. package/src/components/Customs/SyRadioGroup/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
  115. package/src/components/Customs/SyTabs/SyTabs.mdx +4 -2
  116. package/src/components/Customs/SyTabs/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
  117. package/src/components/Customs/SyTextField/SyTextField.mdx +1 -2
  118. package/src/components/Customs/SyTextField/SyTextField.vue +13 -0
  119. package/src/components/Customs/SyTextField/accessibilite/Accessibility.mdx +15 -0
  120. package/src/components/DataList/accessibilite/Accessibility.mdx +15 -0
  121. package/src/components/DataListGroup/accessibilite/Accessibility.mdx +14 -0
  122. package/src/components/DatePicker/Accessibilite.mdx +1 -1
  123. package/src/components/DatePicker/Accessibilite.stories.ts +1 -1
  124. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +7 -4
  125. package/src/components/DatePicker/CalendarMode/DatePicker.vue +49 -13
  126. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +43 -2
  127. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +297 -0
  128. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +48 -21
  129. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +98 -0
  130. package/src/components/DatePicker/composables/useDateSelection.ts +5 -0
  131. package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +273 -0
  132. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
  133. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +10 -0
  134. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.mdx +83 -0
  135. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.stories.ts +502 -0
  136. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.vue +428 -0
  137. package/src/components/DeclarationAccessibilityPage/accessibilite/Accessibility.mdx +75 -0
  138. package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.a11y.spec.ts +53 -0
  139. package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.spec.ts +59 -0
  140. package/src/components/DiacriticPicker/DiacriticPicker.vue +20 -1
  141. package/src/components/DiacriticPicker/accessibilite/Accessibility.mdx +10 -0
  142. package/src/components/DialogBox/accessibilite/Accessibility.mdx +15 -0
  143. package/src/components/DownloadBtn/DownloadBtn.vue +5 -4
  144. package/src/components/DownloadBtn/accessibilite/Accessibility.mdx +15 -0
  145. package/src/components/ErrorPage/ErrorPage.mdx +6 -16
  146. package/src/components/ErrorPage/ErrorPage.stories.ts +16 -87
  147. package/src/components/ErrorPage/ErrorPage.vue +38 -125
  148. package/src/components/ErrorPage/accessibilite/Accessibility.mdx +77 -0
  149. package/src/components/ErrorPage/assets/error-ap.svg +1774 -0
  150. package/src/components/ErrorPage/locales.ts +21 -3
  151. package/src/components/ErrorPage/tests/ErrorPage.a11y.spec.ts +5 -13
  152. package/src/components/ErrorPage/tests/ErrorPage.spec.ts +2 -41
  153. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +8 -266
  154. package/src/components/ExternalLinks/accessibilite/Accessibility.mdx +15 -0
  155. package/src/components/FileList/UploadItem/UploadItem.vue +25 -20
  156. package/src/components/FileList/accessibilite/Accessibility.mdx +12 -0
  157. package/src/components/FilePreview/accessibilite/Accessibility.mdx +12 -0
  158. package/src/components/FileUpload/FileUpload.vue +5 -0
  159. package/src/components/FileUpload/FileUploadContent.vue +5 -4
  160. package/src/components/FileUpload/accessibilite/Accessibility.mdx +12 -0
  161. package/src/components/FilterInline/FilterInline.vue +5 -4
  162. package/src/components/FilterInline/accessibilite/Accessibility.mdx +12 -0
  163. package/src/components/FilterSideBar/accessibilite/Accessibility.mdx +15 -0
  164. package/src/components/FooterBar/FooterBar.stories.ts +18 -14
  165. package/src/components/FooterBar/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +3 -4
  166. package/src/components/FooterBar/defaultSocialMediaLinks.ts +6 -4
  167. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +6 -5
  168. package/src/components/FranceConnectBtn/accessibilite/Accessibility.mdx +15 -0
  169. package/src/components/FranceConnectBtn/tests/__snapshots__/FranceConnectBtn.spec.ts.snap +3 -0
  170. package/src/components/HeaderBar/HeaderBurgerMenu/accessibilite/Accessibility.mdx +15 -0
  171. package/src/components/HeaderBar/accessibilite/Accessibility.mdx +15 -0
  172. package/src/components/HeaderBar/{Usages.mdx → usages/Usages.mdx} +2 -2
  173. package/src/components/HeaderLoading/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +9 -5
  174. package/src/components/HeaderToolbar/accessibilite/Accessibility.mdx +15 -0
  175. package/src/components/LangBtn/LangBtn.vue +5 -4
  176. package/src/components/LangBtn/accessibilite/Accessibility.mdx +15 -0
  177. package/src/components/Logo/accessibilite/Accessibility.mdx +17 -0
  178. package/src/components/LogoBrandSection/accessibilite/Accessibility.mdx +12 -0
  179. package/src/components/LunarCalendar/accessibilite/Accessibility.mdx +10 -0
  180. package/src/components/MaintenancePage/MaintenancePage.mdx +1 -1
  181. package/src/components/MaintenancePage/MaintenancePage.vue +15 -7
  182. package/src/components/MaintenancePage/accessibilite/Accessibility.mdx +70 -0
  183. package/src/components/MaintenancePage/assets/maintenance-ap.svg +1718 -0
  184. package/src/components/MaintenancePage/locales.ts +24 -3
  185. package/src/components/MaintenancePage/tests/MaintenancePage.a11y.spec.ts +75 -3
  186. package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +42 -2
  187. package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +3 -2
  188. package/src/components/NirField/accessibilite/Accessibility.mdx +15 -0
  189. package/src/components/NotFoundPage/NotFoundPage.mdx +1 -1
  190. package/src/components/NotFoundPage/NotFoundPage.stories.ts +3 -3
  191. package/src/components/NotFoundPage/NotFoundPage.vue +16 -11
  192. package/src/components/NotFoundPage/accessibilite/Accessibility.mdx +87 -0
  193. package/src/components/NotFoundPage/assets/not-found-ap.svg +2061 -0
  194. package/src/components/NotFoundPage/locales.ts +24 -4
  195. package/src/components/NotFoundPage/tests/NotFoundPage.a11y.spec.ts +168 -4
  196. package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +100 -12
  197. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +2 -2
  198. package/src/components/NotificationBar/Notification/Notification.vue +1 -1
  199. package/src/components/NotificationBar/NotificationBar.mdx +2 -2
  200. package/src/components/NotificationBar/accessibilite/Accessibility.mdx +75 -0
  201. package/src/components/PageContainer/{AccessibilityGuide.mdx → accessibilite/Accessibility.mdx} +7 -4
  202. package/src/components/PageContainer/tests/PageContainer.a11y.spec.ts +14 -7
  203. package/src/components/PaginatedTable/PaginatedTable.vue +27 -47
  204. package/src/components/PaginatedTable/Pagination.vue +93 -0
  205. package/src/components/PaginatedTable/accessibilite/Accessibility.mdx +12 -0
  206. package/src/components/PasswordField/PasswordField.vue +2 -1
  207. package/src/components/PasswordField/accessibilite/Accessibility.mdx +108 -0
  208. package/src/components/PeriodField/accessibilite/Accessibility.mdx +12 -0
  209. package/src/components/PhoneField/PhoneField.stories.ts +46 -38
  210. package/src/components/PhoneField/accessibilite/Accessibility.mdx +15 -0
  211. package/src/components/RangeField/accessibilite/Accessibility.mdx +15 -0
  212. package/src/components/RatingPicker/accessibilite/Accessibility.mdx +15 -0
  213. package/src/components/SearchListField/SearchListField.vue +6 -3
  214. package/src/components/SearchListField/accessibilite/Accessibility.mdx +15 -0
  215. package/src/components/SkipLink/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +7 -4
  216. package/src/components/SocialMediaLinks/DefaultSocialMediaLinks.ts +6 -4
  217. package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +7 -5
  218. package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +17 -13
  219. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +9 -1
  220. package/src/components/SocialMediaLinks/accessibilite/Accessibility.mdx +67 -0
  221. package/src/components/SocialMediaLinks/tests/DefaultSocialMediaLinks.spec.ts +5 -5
  222. package/src/components/SocialMediaLinks/tests/SocialMediaLinks.a11y.spec.ts +59 -0
  223. package/src/components/SocialMediaLinks/tests/SocialMediaLinks.spec.ts +9 -7
  224. package/src/components/StatusPage/StatusPage.mdx +22 -0
  225. package/src/components/StatusPage/StatusPage.stories.ts +193 -0
  226. package/src/components/StatusPage/StatusPage.vue +145 -0
  227. package/src/components/StatusPage/accessibilite/Accessibility.mdx +81 -0
  228. package/src/components/StatusPage/tests/StatusPage.a11y.spec.ts +29 -0
  229. package/src/components/StatusPage/tests/StatusPage.spec.ts +50 -0
  230. package/src/components/StatusPage/tests/__snapshots__/StatusPage.spec.ts.snap +270 -0
  231. package/src/components/SubHeader/accessibilite/Accessibility.mdx +15 -0
  232. package/src/components/SyAlert/SyAlert.vue +6 -6
  233. package/src/components/SyAlert/accessibilite/Accessibility.mdx +12 -0
  234. package/src/components/SyTextArea/accessibilite/Accessibility.mdx +10 -0
  235. package/src/components/TableToolbar/TableToolbar.stories.ts +6 -6
  236. package/src/components/TableToolbar/TableToolbar.vue +7 -4
  237. package/src/components/TableToolbar/accessibilite/Accessibility.mdx +12 -0
  238. package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +0 -5
  239. package/src/components/Tables/SyServerTable/SyServerTable.mdx +4 -1
  240. package/src/components/Tables/SyServerTable/accessibilite/Accessibility.mdx +10 -0
  241. package/src/components/Tables/SyTable/SyTable.mdx +4 -1
  242. package/src/components/Tables/SyTable/accessibilite/Accessibility.mdx +10 -0
  243. package/src/components/Tables/common/TableHeader.vue +3 -1
  244. package/src/components/Tables/common/organizeColumns/OrganizeColumns.vue +18 -14
  245. package/src/components/ToolbarContainer/ToolbarContainer.mdx +2 -1
  246. package/src/components/ToolbarContainer/ToolbarContainer.stories.ts +563 -420
  247. package/src/components/ToolbarContainer/accessibilite/Accessibility.mdx +69 -0
  248. package/src/components/UploadWorkflow/UploadWorkflow.mdx +11 -1
  249. package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +107 -3
  250. package/src/components/UploadWorkflow/UploadWorkflow.vue +35 -24
  251. package/src/components/UploadWorkflow/accessibilite/Accessibility.mdx +12 -0
  252. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +48 -0
  253. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +9 -5
  254. package/src/components/UploadWorkflow/useFileList.ts +7 -0
  255. package/src/components/Usages/Usages.vue +3 -2
  256. package/src/components/UserMenuBtn/UserMenuBtn.vue +7 -5
  257. package/src/components/UserMenuBtn/accessibilite/Accessibility.mdx +12 -0
  258. package/src/components/index.ts +5 -0
  259. package/src/components/types.ts +10 -0
  260. package/src/composables/rules/tests/useFieldValidation.spec.ts +39 -3
  261. package/src/composables/rules/useFieldValidation.ts +31 -9
  262. package/src/composables/useFormFieldErrorHandling.ts +141 -0
  263. package/src/modules.d.ts +6 -0
  264. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +7 -0
  265. package/src/utils/theme/index.ts +19 -0
  266. package/src/utils/theme/tests/useThemeLocales.spec.ts +245 -0
  267. package/dist/components/MaintenancePage/index.d.ts +0 -2
  268. package/src/components/BackBtn/Accessibilite.mdx +0 -14
  269. package/src/components/BackBtn/Accessibilite.stories.ts +0 -30
  270. package/src/components/BackToTopBtn/Accessibilite.mdx +0 -14
  271. package/src/components/BackToTopBtn/Accessibilite.stories.ts +0 -31
  272. package/src/components/ChipList/Accessibilite.mdx +0 -14
  273. package/src/components/ChipList/Accessibilite.stories.ts +0 -31
  274. package/src/components/CollapsibleList/Accessibilite.stories.ts +0 -29
  275. package/src/components/ContextualMenu/Accessibilite.mdx +0 -13
  276. package/src/components/ContextualMenu/Accessibilite.stories.ts +0 -29
  277. package/src/components/CookieBanner/Accessibilite.mdx +0 -13
  278. package/src/components/CookieBanner/Accessibilite.stories.ts +0 -30
  279. package/src/components/CopyBtn/Accessibilite.mdx +0 -13
  280. package/src/components/CopyBtn/Accessibilite.stories.ts +0 -29
  281. package/src/components/Customs/Selects/SelectBtnField/Accessibilite.mdx +0 -14
  282. package/src/components/Customs/Selects/SelectBtnField/Accessibilite.stories.ts +0 -29
  283. package/src/components/Customs/Selects/SyInputSelect/Accessibilite.mdx +0 -13
  284. package/src/components/Customs/Selects/SyInputSelect/Accessibilite.stories.ts +0 -25
  285. package/src/components/Customs/SyPagination/tests/SyPagination.a11y.spec.ts +0 -27
  286. package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +0 -51
  287. package/src/components/Customs/SyTextField/Accessibilite.mdx +0 -14
  288. package/src/components/Customs/SyTextField/Accessibilite.stories.ts +0 -34
  289. package/src/components/DataList/Accessibilite.mdx +0 -13
  290. package/src/components/DataList/Accessibilite.stories.ts +0 -29
  291. package/src/components/DataListGroup/Accessibilite.mdx +0 -13
  292. package/src/components/DataListGroup/Accessibilite.stories.ts +0 -29
  293. package/src/components/DataListItem/tests/DataListItem.a11y.spec.ts +0 -31
  294. package/src/components/DatePicker/CalendarMode/tests/DatePicker.a11y.spec.ts +0 -27
  295. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.a11y.spec.ts +0 -26
  296. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.a11y.spec.ts +0 -27
  297. package/src/components/DialogBox/Accessibilite.mdx +0 -14
  298. package/src/components/DialogBox/Accessibilite.stories.ts +0 -29
  299. package/src/components/DownloadBtn/Accessibilite.mdx +0 -14
  300. package/src/components/DownloadBtn/Accessibilite.stories.ts +0 -29
  301. package/src/components/DownloadBtn/tests/DownloadBtn.a11y.spec.ts +0 -26
  302. package/src/components/ErrorPage/Accessibilite.mdx +0 -13
  303. package/src/components/ErrorPage/Accessibilite.stories.ts +0 -36
  304. package/src/components/ExternalLinks/Accessibilite.mdx +0 -18
  305. package/src/components/ExternalLinks/Accessibilite.stories.ts +0 -62
  306. package/src/components/ExternalLinks/tests/ExternalLinks.a11y.spec.ts +0 -39
  307. package/src/components/FileList/Accessibilite.mdx +0 -13
  308. package/src/components/FileList/Accessibilite.stories.ts +0 -26
  309. package/src/components/FilePreview/Accessibilite.mdx +0 -14
  310. package/src/components/FilePreview/Accessibilite.stories.ts +0 -26
  311. package/src/components/FileUpload/Accessibilite.mdx +0 -13
  312. package/src/components/FileUpload/Accessibilite.stories.ts +0 -26
  313. package/src/components/FilterInline/Accessibilite.mdx +0 -15
  314. package/src/components/FilterInline/Accessibilite.stories.ts +0 -26
  315. package/src/components/FilterSideBar/Accessibilite.mdx +0 -13
  316. package/src/components/FilterSideBar/Accessibilite.stories.ts +0 -30
  317. package/src/components/FooterBar/Accessibilite.stories.ts +0 -26
  318. package/src/components/FranceConnectBtn/Accessibilite.mdx +0 -13
  319. package/src/components/FranceConnectBtn/Accessibilite.stories.ts +0 -30
  320. package/src/components/HeaderBar/Accessibilite.mdx +0 -13
  321. package/src/components/HeaderBar/Accessibilite.stories.ts +0 -31
  322. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.mdx +0 -13
  323. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +0 -30
  324. package/src/components/HeaderLoading/Accessibilite.stories.ts +0 -31
  325. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.a11y.spec.ts +0 -45
  326. package/src/components/HeaderToolbar/Accessibilite.mdx +0 -13
  327. package/src/components/HeaderToolbar/Accessibilite.stories.ts +0 -36
  328. package/src/components/HeaderToolbar/tests/HeaderToolbar.a11y.spec.ts +0 -25
  329. package/src/components/LangBtn/Accessibilite.mdx +0 -13
  330. package/src/components/LangBtn/Accessibilite.stories.ts +0 -32
  331. package/src/components/Logo/Accessibilite.mdx +0 -13
  332. package/src/components/Logo/Accessibilite.stories.ts +0 -30
  333. package/src/components/LogoBrandSection/Accessibilite.mdx +0 -13
  334. package/src/components/LogoBrandSection/Accessibilite.stories.ts +0 -26
  335. package/src/components/LunarCalendar/tests/LunarCalendar.a11y.spec.ts +0 -31
  336. package/src/components/MaintenancePage/Accessibilite.mdx +0 -13
  337. package/src/components/MaintenancePage/Accessibilite.stories.ts +0 -36
  338. package/src/components/MaintenancePage/index.ts +0 -3
  339. package/src/components/NirField/Accessibilite.mdx +0 -13
  340. package/src/components/NirField/Accessibilite.stories.ts +0 -31
  341. package/src/components/NotFoundPage/Accessibilite.mdx +0 -13
  342. package/src/components/NotFoundPage/Accessibilite.stories.ts +0 -36
  343. package/src/components/NotificationBar/Accessibilite.mdx +0 -13
  344. package/src/components/NotificationBar/Accessibilite.stories.ts +0 -30
  345. package/src/components/PageContainer/Accessibilite.mdx +0 -13
  346. package/src/components/PageContainer/Accessibilite.stories.ts +0 -30
  347. package/src/components/PaginatedTable/Accessibilite.mdx +0 -13
  348. package/src/components/PaginatedTable/Accessibilite.stories.ts +0 -26
  349. package/src/components/PaginatedTable/tests/PaginatedTable.a11y.spec.ts +0 -43
  350. package/src/components/PasswordField/Accessibilite.mdx +0 -13
  351. package/src/components/PasswordField/Accessibilite.stories.ts +0 -121
  352. package/src/components/PeriodField/Accessibilite.mdx +0 -13
  353. package/src/components/PeriodField/Accessibilite.stories.ts +0 -27
  354. package/src/components/PhoneField/Accessibilite.mdx +0 -13
  355. package/src/components/PhoneField/Accessibilite.stories.ts +0 -32
  356. package/src/components/PhoneField/tests/PhoneField.a11y.spec.ts +0 -34
  357. package/src/components/RangeField/Accessibilite.mdx +0 -13
  358. package/src/components/RangeField/Accessibilite.stories.ts +0 -32
  359. package/src/components/RatingPicker/Accessibilite.mdx +0 -13
  360. package/src/components/RatingPicker/Accessibilite.stories.ts +0 -30
  361. package/src/components/SearchListField/Accessibilite.mdx +0 -13
  362. package/src/components/SearchListField/Accessibilite.stories.ts +0 -30
  363. package/src/components/SkipLink/Accessibilite.stories.ts +0 -36
  364. package/src/components/SocialMediaLinks/Accessibilite.mdx +0 -13
  365. package/src/components/SocialMediaLinks/Accessibilite.stories.ts +0 -36
  366. package/src/components/SubHeader/Accessibilite.mdx +0 -13
  367. package/src/components/SubHeader/Accessibilite.stories.ts +0 -36
  368. package/src/components/SyAlert/Accessibilite.mdx +0 -13
  369. package/src/components/SyAlert/Accessibilite.stories.ts +0 -30
  370. package/src/components/TableToolbar/Accessibilite.mdx +0 -13
  371. package/src/components/TableToolbar/Accessibilite.stories.ts +0 -26
  372. package/src/components/UploadWorkflow/Accessibilite.mdx +0 -13
  373. package/src/components/UploadWorkflow/Accessibilite.stories.ts +0 -26
  374. package/src/components/UserMenuBtn/Accessibilite.mdx +0 -13
  375. package/src/components/UserMenuBtn/Accessibilite.stories.ts +0 -25
  376. /package/src/components/HeaderBar/{Usages.stories.ts → usages/Usages.stories.ts} +0 -0
  377. /package/src/components/NotFoundPage/assets/{not-found.svg → not-found-cnam.svg} +0 -0
  378. /package/src/components/SyBtnMenu/accessibilite/{AccessibilityGuide.mdx → Accessibility.mdx} +0 -0
@@ -0,0 +1,15 @@
1
+ import { Meta, Story } from '@storybook/addon-docs';
2
+ import * as Stories from '../ChipList.stories.ts';
3
+ import '@/stories/styles/shared.css';
4
+
5
+ <Meta of={Stories} />
6
+
7
+ <div className="header">
8
+ <h1>Accessibilité</h1>
9
+ </div>
10
+
11
+
12
+ <div class="mt-2">
13
+ <p>Rapport d’audit manuel : <a href="/audits/ChipList.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
14
+ <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/814" target="_blank" style={{color:'#0C41BD'}}>issue #814</a>)</p>
15
+ </div>
@@ -1,6 +1,5 @@
1
1
  import { Meta, Story } from '@storybook/blocks';
2
- import * as AccessStories from './Accessibilite.stories.ts';
3
- import * as CollapsibleListStories from './CollapsibleList.stories';
2
+ import * as CollapsibleListStories from '../CollapsibleList.stories';
4
3
  import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
5
4
  import {
6
5
  AccessibilityGuideLayout,
@@ -10,9 +9,9 @@ import {
10
9
  BestPracticesSection,
11
10
  ResourcesSection,
12
11
  AuditSection,
13
- } from '../../stories/accessibility/AccessibilityGuideLayout.mdx';
12
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
14
13
 
15
- <Meta of={AccessStories} />
14
+ <Meta of={CollapsibleListStories} />
16
15
 
17
16
  <AccessibilityGuideLayout
18
17
  componentName="CollapsibleList"
@@ -68,7 +67,10 @@ import {
68
67
  </ResourcesSection>
69
68
 
70
69
  <AuditSection>
71
- <p>Rapport d'audit manuel : <a href="/audits/CollapsibleList.xlsx" style={{color: '#0C41BD'}}>Voir le rapport</a></p>
72
- <p style={{color: 'grey', fontSize: '14px'}}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/pull/792" target="_blank" style={{color: '#0C41BD'}}>issue #792</a>)</p>
70
+ <div class="mt-2">
71
+ <p>Rapport d’audit manuel : <a href="/audits/CollapsibleList.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
72
+ <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/792" target="_blank" style={{color:'#0C41BD'}}>issue #792</a>)</p>
73
+ </div>
74
+
73
75
  </AuditSection>
74
76
  </AccessibilityGuideLayout>
@@ -25,7 +25,7 @@
25
25
  const slots = useSlots()
26
26
 
27
27
  const hasDefaultSlotContent = computed(() => {
28
- const vnodes = slots.default?.() ?? []
28
+ const vnodes = slots.default?.({}) ?? []
29
29
  return vnodes.some((vnode) => {
30
30
  if (vnode.type === Comment) return false
31
31
  if (vnode.type === Text) {
@@ -223,9 +223,6 @@ export const WithAnchors: Story = {
223
223
  }
224
224
  },
225
225
  parameters: {
226
- a11y: {
227
- disable: true,
228
- },
229
226
  sourceCode: [
230
227
  {
231
228
  name: 'Template',
@@ -0,0 +1,71 @@
1
+ import { Meta, Primary } from '@storybook/blocks';
2
+ import * as ContextualMenuStories from '../ContextualMenu.stories.ts';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
4
+ import {
5
+ AccessibilityGuideLayout,
6
+ CriteriaSection,
7
+ CriteriaCard,
8
+ DemoSection,
9
+ BestPracticesSection,
10
+ ResourcesSection,
11
+ AuditSection,
12
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
13
+
14
+ <Meta of={ContextualMenuStories} />
15
+
16
+ <AccessibilityGuideLayout
17
+ componentName="ContextualMenu"
18
+ iconSrc={AccessibilityIcon}
19
+ >
20
+ <AuditSection>
21
+ <p>Rapport d’audit manuel : <a href="/audits/ContextualMenu.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
22
+ <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/658" target="_blank" style={{color:'#0C41BD'}}>issue #658</a>)</p>
23
+ </AuditSection>
24
+
25
+ <CriteriaSection>
26
+ <CriteriaCard icon="🏷️" title="Structure sémantique claire">
27
+ <ul>
28
+ <li>Landmark <code>&lt;nav&gt;</code> avec <code>aria-label</code> obligatoire pour annoncer la zone.</li>
29
+ <li>Hiérarchie native <code>ul &gt; li &gt; a</code> pour les niveaux imbriqués, sans rôles ARIA détournés.</li>
30
+ <li>Utilisation de <code>aria-current</code> sur le lien actif pour signaler la section courante.</li>
31
+ </ul>
32
+ </CriteriaCard>
33
+
34
+ <CriteriaCard icon="⌨️" title="Navigation clavier native">
35
+ <ul>
36
+ <li>Parcours par <kbd>Tab</kbd>/<kbd>Maj+Tab</kbd> sur des liens standards, activation par <kbd>Entrée</kbd>.</li>
37
+ <li>Styles de focus visibles fournis par la feuille de style partagée et conservés sur tous les niveaux.</li>
38
+ <li>Activation via clic clavier ou souris met à jour le hash et synchronise l'état actif.</li>
39
+ </ul>
40
+ </CriteriaCard>
41
+
42
+ <CriteriaCard icon="🧭" title="Repères et correspondance contenu">
43
+ <ul>
44
+ <li>Chaque élément pointe vers une ancre <code>hash</code>; les sections ciblées doivent avoir des <code>id</code> uniques et, idéalement, <code>tabindex="-1"</code> pour recevoir le focus programmatique.</li>
45
+ <li>Gestion du hash : changement d'URL et état contrôlé via <code>v-model</code> pour refléter l'élément actif.</li>
46
+ <li>Support multi-niveaux via la propriété optionnelle <code>level</code> (1 à 6) générant des listes imbriquées.</li>
47
+ </ul>
48
+ </CriteriaCard>
49
+ </CriteriaSection>
50
+
51
+ <DemoSection componentName="ContextualMenu">
52
+ <Primary />
53
+ </DemoSection>
54
+
55
+ <BestPracticesSection>
56
+ <ul>
57
+ <li>Fournissez systématiquement un <code>ariaLabel</code> descriptif (ex. « Plan de page »).</li>
58
+ <li>Assurez-vous que chaque <code>hash</code> correspond à un <code>id</code> existant dans la page, avec un titre associé via <code>aria-labelledby</code>.</li>
59
+ <li>Respectez l'ordre logique du contenu et les niveaux <code>level</code> pour refléter la structure réelle du document.</li>
60
+ <li>Évitez de placer des éléments interactifs non liens à l'intérieur des entrées du menu.</li>
61
+ </ul>
62
+ </BestPracticesSection>
63
+
64
+ <ResourcesSection>
65
+ <ul>
66
+ <li><a href="https://www.w3.org/TR/WCAG22/#navigation-mechanisms" target="_blank" rel="noopener noreferrer">WCAG – Mécanismes de navigation</a></li>
67
+ <li><a href="https://www.w3.org/TR/WCAG22/#link-purpose-in-context" target="_blank" rel="noopener noreferrer">WCAG – Objet du lien</a></li>
68
+ <li><a href="https://www.w3.org/WAI/tutorials/page-structure/sections/" target="_blank" rel="noopener noreferrer">WAI – Structuration des pages et sections</a></li>
69
+ </ul>
70
+ </ResourcesSection>
71
+ </AccessibilityGuideLayout>
@@ -49,7 +49,7 @@ const meta = {
49
49
  description: 'Événement émis lors de l\'acceptation des cookies',
50
50
  table: {
51
51
  category: 'Events',
52
- type: { summary: '' },
52
+ type: { summary: 'Partial<{ functional: boolean; analytics: boolean }>' },
53
53
  },
54
54
  },
55
55
  'onReject': {
@@ -57,7 +57,7 @@ const meta = {
57
57
  description: 'Événement émis lors du refus des cookies',
58
58
  table: {
59
59
  category: 'Events',
60
- type: { summary: '' },
60
+ type: { summary: 'Partial<{ functional: boolean; analytics: boolean }>' },
61
61
  },
62
62
  },
63
63
  'onCustomize': {
@@ -68,6 +68,14 @@ const meta = {
68
68
  type: { summary: '' },
69
69
  },
70
70
  },
71
+ 'onSubmit': {
72
+ action: 'submit',
73
+ description: 'Événement émis lors de la sauvegarde des préférences personnalisées',
74
+ table: {
75
+ category: 'Events',
76
+ type: { summary: 'Partial<Preferences>' },
77
+ },
78
+ },
71
79
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
72
80
  // @ts-ignore- Object literal may only specify known properties
73
81
  'onUpdate:modelValue': {
@@ -226,12 +234,10 @@ export const Default: Story = {
226
234
  onAccept: { action: 'accept' },
227
235
  onReject: { action: 'reject' },
228
236
  onCustomize: { action: 'customize' },
237
+ onSubmit: { action: 'submit' },
229
238
  },
230
239
  args: {
231
240
  items,
232
- onAccept: fn(),
233
- onReject: fn(),
234
- onCustomize: fn(),
235
241
  },
236
242
 
237
243
  render: (args) => {
@@ -258,9 +264,6 @@ export const Default: Story = {
258
264
  },
259
265
 
260
266
  parameters: {
261
- a11y: {
262
- disable: true,
263
- },
264
267
  sourceCode: [
265
268
  {
266
269
  name: 'Template',
@@ -356,9 +359,6 @@ export const WithoutCookiesItems: Story = {
356
359
  }
357
360
  },
358
361
  parameters: {
359
- a11y: {
360
- disable: true,
361
- },
362
362
  sourceCode: [
363
363
  {
364
364
  name: 'Template',
@@ -411,9 +411,6 @@ export const BannerDescriptionSlot: Story = {
411
411
  }
412
412
  },
413
413
  parameters: {
414
- a11y: {
415
- disable: true,
416
- },
417
414
  sourceCode: [
418
415
  {
419
416
  name: 'Template',
@@ -520,9 +517,6 @@ export const CookiesDescriptionSlots: Story = {
520
517
  }
521
518
  },
522
519
  parameters: {
523
- a11y: {
524
- disable: true,
525
- },
526
520
  sourceCode: [
527
521
  {
528
522
  name: 'Template',
@@ -619,9 +613,6 @@ export const Customization: Story = {
619
613
  }
620
614
  },
621
615
  parameters: {
622
- a11y: {
623
- disable: true,
624
- },
625
616
  sourceCode: [
626
617
  {
627
618
  name: 'Template',
@@ -34,14 +34,29 @@
34
34
  return display.smAndDown.value ? '100%' : 'auto'
35
35
  })
36
36
 
37
+ const itemKeys = computed(() => Object.keys(props.items ?? {}) as (keyof CookiesItems)[])
38
+
39
+ type ConsentPayload = Partial<Record<keyof CookiesItems, boolean>>
40
+
41
+ function buildConsentPayload(value: boolean): ConsentPayload {
42
+ if (!props.items) {
43
+ return {}
44
+ }
45
+
46
+ return itemKeys.value.reduce<ConsentPayload>((payload, key) => {
47
+ payload[key] = value
48
+ return payload
49
+ }, {})
50
+ }
51
+
37
52
  function reject(): void {
38
53
  active.value = false
39
- emits('reject')
54
+ emits('reject', buildConsentPayload(false))
40
55
  }
41
56
 
42
57
  function accept(): void {
43
58
  active.value = false
44
- emits('accept')
59
+ emits('accept', buildConsentPayload(true))
45
60
  }
46
61
 
47
62
  function customize(): void {
@@ -51,7 +66,7 @@
51
66
  emits('customize')
52
67
  }
53
68
 
54
- function personalizeCookies(e: Record<string, unknown>) {
69
+ function personalizeCookies(e: ConsentPayload) {
55
70
  emits('submit', e)
56
71
  showCookiesSelection.value = false
57
72
  active.value = false
@@ -167,13 +182,13 @@
167
182
  <VSheet
168
183
  ref="vsheetRef"
169
184
  v-bind="options.banner"
170
- :aria-label="locales.label"
171
185
  class="vd-cookie-banner"
172
186
  >
173
187
  <div
174
188
  ref="bannerRef"
175
189
  class="vd-cookie-banner__inner"
176
190
  role="dialog"
191
+ :aria-label="locales.label"
177
192
  >
178
193
  <div class="d-flex align-start flex-nowrap pa-0 mb-6">
179
194
  <h2
@@ -214,7 +229,7 @@
214
229
  <Transition name="height">
215
230
  <div v-if="showCookiesSelection && items">
216
231
  <CookiesSelection
217
- :items
232
+ :items="items"
218
233
  @submit="personalizeCookies"
219
234
  >
220
235
  <template
@@ -0,0 +1,71 @@
1
+ import { Meta, Primary } from '@storybook/blocks';
2
+ import * as CookieBannerStories from '../CookieBanner.stories.ts';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
4
+ import {
5
+ AccessibilityGuideLayout,
6
+ CriteriaSection,
7
+ CriteriaCard,
8
+ DemoSection,
9
+ BestPracticesSection,
10
+ ResourcesSection,
11
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
12
+
13
+ <Meta of={CookieBannerStories}/>
14
+
15
+ <AccessibilityGuideLayout
16
+ componentName="CookieBanner"
17
+ iconSrc={AccessibilityIcon}
18
+ apgHref="https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/"
19
+ >
20
+ <div class="mt-6">
21
+ <p>Rapport d’audit manuel : <a href="/audits/Cookies.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
22
+ <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/806" target="_blank" style={{color:'#0C41BD'}}>issue #806</a>)</p>
23
+ </div>
24
+ <CriteriaSection>
25
+ <CriteriaCard icon="🧭" title="Structure et nom accessible">
26
+ <ul>
27
+ <li><strong>Rôle</strong> : <code>role="dialog"</code> sur le conteneur principal de la bannière.</li>
28
+ <li><strong>Nom accessible</strong> : <code>aria-label="Gestion des cookies"</code> (ou <code>aria-labelledby</code> pointant vers le titre).</li>
29
+ <li><strong>Hiérarchie</strong> : le titre est exposé (<code>h2</code>) et peut être référencé par <code>aria-labelledby</code> si besoin.</li>
30
+ </ul>
31
+ </CriteriaCard>
32
+
33
+ <CriteriaCard icon="⌨️" title="Navigation clavier">
34
+ <ul>
35
+ <li>Gestion de la touche <kbd>Tab</kbd> pour boucler le focus dans la bannière.</li>
36
+ <li>Échappe (<kbd>Esc</kbd>) ferme la bannière ou revient depuis la personnalisation.</li>
37
+ <li>Focus initial sur le bouton de fermeture à l’ouverture.</li>
38
+ </ul>
39
+ </CriteriaCard>
40
+
41
+ <CriteriaCard icon="🦻" title="Événements et consentement">
42
+ <ul>
43
+ <li><strong>accept/reject</strong> : émettent les catégories configurables (via les items) et toujours <code>essentials: true</code> si fournis.</li>
44
+ <li><strong>submit</strong> : renvoie les préférences personnalisées + <code>essentials: true</code> le cas échéant.</li>
45
+ <li>Pas de chargement de cookies non essentiels avant l’<code>accept</code> ou <code>submit</code>.</li>
46
+ </ul>
47
+ </CriteriaCard>
48
+ </CriteriaSection>
49
+
50
+ <DemoSection componentName="CookieBanner">
51
+ <Primary />
52
+ </DemoSection>
53
+
54
+ <BestPracticesSection>
55
+ <ul>
56
+ <li>Ne surchargez pas la description : un paragraphe clair et concis.</li>
57
+ <li>Assurez un contraste suffisant des boutons et du fond de bannière.</li>
58
+ <li>Proposez un lien « En savoir plus » vers votre politique cookies.</li>
59
+ <li>Chargez les cookies non essentiels uniquement après <code>accept</code> ou <code>submit</code>.</li>
60
+ <li>Conservez la possibilité de rouvrir la bannière ou de modifier le choix ailleurs dans l’interface.</li>
61
+ </ul>
62
+ </BestPracticesSection>
63
+
64
+ <ResourcesSection>
65
+ <ul>
66
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/" target="_blank" rel="noopener noreferrer">APG : Alert dialog</a></li>
67
+ <li><a href="https://www.cnil.fr/fr/cookies-traceurs-que-dit-la-loi" target="_blank" rel="noopener noreferrer">CNIL : Cookies et traceurs</a></li>
68
+ <li><a href="https://www.w3.org/WAI/WCAG21/quickref/" target="_blank" rel="noopener noreferrer">Référence rapide WCAG 2.1</a></li>
69
+ </ul>
70
+ </ResourcesSection>
71
+ </AccessibilityGuideLayout>
@@ -24,8 +24,14 @@ describe('CookieBanner', () => {
24
24
  expect(wrapper.find('[data-test-id="customize"]').attributes('style')).toContain('100%')
25
25
  })
26
26
 
27
- it('emit a reject event when the reject btn is clicked', async () => {
27
+ it('emit a reject event with payload built from provided items', async () => {
28
28
  const wrapper = mount(CookieBanner, {
29
+ props: {
30
+ items: {
31
+ enessentials: [],
32
+ functional: [],
33
+ },
34
+ },
29
35
  global: {
30
36
  stubs: {
31
37
  Teleport: true,
@@ -35,11 +41,20 @@ describe('CookieBanner', () => {
35
41
 
36
42
  await wrapper.find('[data-test-id="reject"]').trigger('click')
37
43
 
38
- expect(wrapper.emitted()).toHaveProperty('reject')
44
+ expect(wrapper.emitted('reject')?.[0]?.[0]).toEqual({
45
+ enessentials: false,
46
+ functional: false,
47
+ })
39
48
  })
40
49
 
41
- it('emit a accept event when the accept btn is clicked', async () => {
50
+ it('emit an accept event with payload built from provided items', async () => {
42
51
  const wrapper = mount(CookieBanner, {
52
+ props: {
53
+ items: {
54
+ functional: [],
55
+ analytics: [],
56
+ },
57
+ },
43
58
  global: {
44
59
  stubs: {
45
60
  Teleport: true,
@@ -49,7 +64,10 @@ describe('CookieBanner', () => {
49
64
 
50
65
  await wrapper.find('[data-test-id="accept"]').trigger('click')
51
66
 
52
- expect(wrapper.emitted()).toHaveProperty('accept')
67
+ expect(wrapper.emitted('accept')?.[0]?.[0]).toEqual({
68
+ functional: true,
69
+ analytics: true,
70
+ })
53
71
  })
54
72
 
55
73
  it('does not close the dialog when the customize button is clicked and do not show the cookie form', async () => {
@@ -116,4 +134,30 @@ describe('CookieBanner', () => {
116
134
  expect(wrapper.find('.vd-cookies-card').html()).toMatchSnapshot()
117
135
  expect(wrapper.emitted()).toHaveProperty('customize')
118
136
  })
137
+
138
+ it('emits submit payload coming from CookiesSelection without altering categories', async () => {
139
+ const wrapper = mount(CookieBanner, {
140
+ props: {
141
+ items: {
142
+ functional: [],
143
+ analytics: [],
144
+ },
145
+ },
146
+ global: {
147
+ stubs: {
148
+ Teleport: true,
149
+ },
150
+ },
151
+ })
152
+
153
+ await wrapper.find('[data-test-id="customize"]').trigger('click')
154
+ await wrapper.vm.$nextTick()
155
+
156
+ const selection = wrapper.findComponent({ name: 'CookiesSelection' })
157
+ selection.vm.$emit('submit', { functional: true })
158
+
159
+ expect(wrapper.emitted('submit')?.[0]?.[0]).toEqual({
160
+ functional: true,
161
+ })
162
+ })
119
163
  })
@@ -6,6 +6,7 @@
6
6
  import CookiesTable from '../CookiesTable/CookiesTable.vue'
7
7
  import type { CookieTypes, Cookie } from '../types'
8
8
  import { locales } from './locales'
9
+ import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
9
10
 
10
11
  defineProps<{
11
12
  type: CookieTypes
@@ -104,12 +105,12 @@
104
105
  <summary class="mb-1">
105
106
  {{ open ? locales.hideInformation : locales.showInformation }}
106
107
 
107
- <VIcon
108
+ <SyIcon
109
+ :icon="open ? mdiChevronUp : mdiChevronDown"
108
110
  class="mr-2"
109
111
  data-test="chevron"
110
- >
111
- {{ open ? mdiChevronUp : mdiChevronDown }}
112
- </VIcon>
112
+ decorative
113
+ />
113
114
  </summary>
114
115
 
115
116
  <CookiesTable
@@ -7,6 +7,7 @@
7
7
 
8
8
  import { locales } from './locales'
9
9
  import { config } from './config'
10
+ import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
10
11
 
11
12
  const props = withDefaults(defineProps<CustomizableOptions & {
12
13
  ariaLabel?: string
@@ -106,9 +107,11 @@
106
107
  @click="copy"
107
108
  >
108
109
  <slot name="icon">
109
- <VIcon v-bind="options.icon">
110
- {{ copyIcon }}
111
- </VIcon>
110
+ <SyIcon
111
+ v-bind="options.icon"
112
+ :icon="copyIcon"
113
+ decorative
114
+ />
112
115
  </slot>
113
116
  </VBtn>
114
117
  </template>
@@ -0,0 +1,15 @@
1
+ import { Meta, Story } from '@storybook/addon-docs';
2
+ import * as Stories from '../CopyBtn.stories.ts';
3
+ import '@/stories/styles/shared.css';
4
+
5
+ <Meta of={Stories} />
6
+
7
+ <div className="header">
8
+ <h1>Accessibilité</h1>
9
+ </div>
10
+
11
+
12
+ <div class="mt-2">
13
+ <p>Rapport d’audit manuel : <a href="/audits/CopyBtn.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
14
+ <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/4008" target="_blank" style={{color:'#0C41BD'}}>issue #4008</a>)</p>
15
+ </div>
@@ -0,0 +1,15 @@
1
+ import { Meta, Story } from '@storybook/addon-docs';
2
+ import * as Stories from '../SelectBtnField.stories.ts';
3
+ import '@/stories/styles/shared.css';
4
+
5
+ <Meta of={Stories} />
6
+
7
+ <div className="header">
8
+ <h1>Accessibilité</h1>
9
+ </div>
10
+
11
+
12
+ <div class="mt-2">
13
+ <p>Rapport d’audit manuel : <a href="/audits/SelectBtnField.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
14
+ <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/916" target="_blank" style={{color:'#0C41BD'}}>issue #916</a>)</p>
15
+ </div>