@cnamts/synapse 1.0.23 → 1.0.25

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 (574) hide show
  1. package/README.md +27 -5
  2. package/dist/AutocompleteFilter-D7qBuCAP.js +114 -0
  3. package/dist/AutocompleteFilter-Df9i5mAl.cjs +1 -0
  4. package/dist/DateFilter-BJD6FMev.cjs +1 -0
  5. package/dist/{DateFilter-Dc-gSGwk.js → DateFilter-BitMWrMU.js} +1 -1
  6. package/dist/{NumberFilter-vP38Wp6j.js → NumberFilter-BTLUxw0a.js} +3 -3
  7. package/dist/NumberFilter-DGCzCXzI.cjs +1 -0
  8. package/dist/{PeriodFilter-Ba1uYUnT.js → PeriodFilter-B5rUIPAC.js} +1 -1
  9. package/dist/PeriodFilter-DO_ecTZW.cjs +1 -0
  10. package/dist/SelectFilter-CGwcKWLm.cjs +1 -0
  11. package/dist/SelectFilter-l4QnRcuk.js +135 -0
  12. package/dist/TextFilter-B8nf7xoK.cjs +1 -0
  13. package/dist/{TextFilter-B84dpnoq.js → TextFilter-C9hj6Qrp.js} +7 -7
  14. package/dist/apLightTheme-CEK4iY3f.cjs +1 -0
  15. package/dist/apLightTheme-DnIM24Lv.js +950 -0
  16. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +7022 -9616
  17. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +2 -2
  18. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +2 -2
  19. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +40 -40
  20. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +60 -60
  21. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +7168 -9762
  22. package/dist/components/Amelipro/AmeliproStepper/AmeliproStepper.d.ts +2 -2
  23. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +7501 -10095
  24. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +21 -21
  25. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +41 -41
  26. package/dist/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.d.ts +2 -2
  27. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +20 -498
  28. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +117 -151
  29. package/dist/components/Customs/Selects/SyInputSelect/SyInputSelect.d.ts +5 -5
  30. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +12 -16
  31. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +8 -8
  32. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +31 -506
  33. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +28 -506
  34. package/dist/components/Customs/SyTabs/SyTabs.d.ts +13 -11
  35. package/dist/components/Customs/SyTextField/SyTextField.d.ts +69 -89
  36. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +627 -791
  37. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +315 -412
  38. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +112 -160
  39. package/dist/components/DatePicker/composables/index.d.ts +1 -0
  40. package/dist/components/DatePicker/composables/useDatePickerFocusTrap.d.ts +11 -0
  41. package/dist/components/DatePicker/composables/useDatePickerState.d.ts +1 -0
  42. package/dist/components/DatePicker/composables/useDateTextField.d.ts +4 -4
  43. package/dist/components/DatePicker/composables/useDateValidation.d.ts +3 -3
  44. package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +2 -2
  45. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +2 -2
  46. package/dist/components/FileList/FileList.d.ts +6 -0
  47. package/dist/components/FilterSideBar/FilterSideBar.d.ts +2 -0
  48. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +17 -17
  49. package/dist/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +3 -3
  50. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +20 -28
  51. package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +3 -3
  52. package/dist/components/MonthPicker/MonthPicker.d.ts +86 -127
  53. package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +85 -126
  54. package/dist/components/NirField/NirField.d.ts +202 -278
  55. package/dist/components/NirField/locales.d.ts +10 -10
  56. package/dist/components/NirField/useNirValidation.d.ts +64 -0
  57. package/dist/components/PasswordField/PasswordField.d.ts +8 -9
  58. package/dist/components/PeriodField/PeriodField.d.ts +1352 -1680
  59. package/dist/components/PhoneField/PhoneField.d.ts +88 -129
  60. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +12 -12
  61. package/dist/components/SyTextArea/SyTextArea.d.ts +34 -14
  62. package/dist/components/SyTextArea/useDefaultValidationRules.d.ts +11 -0
  63. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +10 -6
  64. package/dist/components/Tables/SyTable/SyTable.d.ts +10 -6
  65. package/dist/components/Tables/common/SyTableFilter.d.ts +2 -3
  66. package/dist/components/Tables/common/SyTablePagination.d.ts +19 -19
  67. package/dist/components/Tables/common/TableHeader.d.ts +5 -0
  68. package/dist/components/Tables/common/filters/AutocompleteFilter.d.ts +120 -0
  69. package/dist/components/Tables/common/filters/locales.d.ts +0 -1
  70. package/dist/components/Tables/common/locales.d.ts +3 -0
  71. package/dist/components/Tables/common/types.d.ts +21 -3
  72. package/dist/components/Tables/common/useClickableTableRow.d.ts +17 -0
  73. package/dist/components/Tables/common/usePagination.d.ts +3 -1
  74. package/dist/components/Tables/common/usePinnedColumns.d.ts +31 -0
  75. package/dist/components/Tables/common/useTableHeaders.d.ts +2 -0
  76. package/dist/components/Tables/common/useTableRowCheckboxAccessibility.d.ts +5 -0
  77. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +7 -6
  78. package/dist/composables/date/useDatePickerAccessibility.d.ts +1 -1
  79. package/dist/composables/rules/useFieldValidation.d.ts +4 -4
  80. package/dist/composables/unifyValidation/documentationValidationProps.d.ts +230 -0
  81. package/dist/composables/unifyValidation/useCustomValidation.d.ts +8 -0
  82. package/dist/composables/unifyValidation/useValidation.d.ts +102 -0
  83. package/dist/composables/unifyValidation/useVuetifyValidation.d.ts +18 -0
  84. package/dist/composables/useFormFieldErrorHandling.d.ts +2 -2
  85. package/dist/composables/validation/useFormValidation.d.ts +11 -2
  86. package/dist/composables/validation/useValidation.d.ts +19 -9
  87. package/dist/design-system-v3.d.ts +2 -0
  88. package/dist/design-system-v3.js +186 -187
  89. package/dist/design-system-v3.umd.cjs +1 -1066
  90. package/dist/designTokens/tokens/amelipro/apColors.d.ts +10 -10
  91. package/dist/designTokens/tokens/amelipro/apColors2026.d.ts +1 -2
  92. package/dist/designTokens/tokens/amelipro/apContextual.d.ts +44 -0
  93. package/dist/designTokens/tokens/amelipro/apSemantic.d.ts +1 -1
  94. package/dist/designTokens/tokens/baseColors.d.ts +127 -0
  95. package/dist/designTokens/tokens/baseContextualTokens.d.ts +50 -0
  96. package/dist/designTokens/tokens/cnam/cnamColors.d.ts +10 -10
  97. package/dist/designTokens/tokens/cnam/cnamSemantic.d.ts +1 -1
  98. package/dist/designTokens/tokens/pa/paColors.d.ts +1 -166
  99. package/dist/designTokens/tokens/pa/paSemantic.d.ts +1 -1
  100. package/dist/designTokens/utils/buildColorClassMap.d.ts +12 -0
  101. package/dist/designTokens/utils/createFlattenTheme.d.ts +1 -3
  102. package/dist/designTokens/utils/index.d.ts +2 -2
  103. package/dist/main-ByDPHpae.cjs +1067 -0
  104. package/dist/main-Cpx8Co6H.js +38869 -0
  105. package/dist/main.d.ts +0 -1
  106. package/dist/synapse.css +1 -0
  107. package/dist/tooth-11-D3sLWv2n.cjs +1 -0
  108. package/dist/tooth-12-CXrLuH03.cjs +1 -0
  109. package/dist/tooth-13-BSfo5fpT.cjs +1 -0
  110. package/dist/tooth-14-DMzulx0h.cjs +1 -0
  111. package/dist/tooth-15-BKRFVi-9.cjs +1 -0
  112. package/dist/tooth-16-CpuxAbuM.cjs +1 -0
  113. package/dist/tooth-17-BPoahUdg.cjs +1 -0
  114. package/dist/tooth-18-DhHJz8sy.cjs +1 -0
  115. package/dist/tooth-21-Dgd5hn_X.cjs +1 -0
  116. package/dist/tooth-22-C2Tn19sB.cjs +1 -0
  117. package/dist/tooth-23-C9uaaSGb.cjs +1 -0
  118. package/dist/tooth-24-BrK9UGpf.cjs +1 -0
  119. package/dist/tooth-25-CE_EfGNp.cjs +1 -0
  120. package/dist/tooth-26-Ctv4i9Fy.cjs +1 -0
  121. package/dist/tooth-27-C5J7JkWM.cjs +1 -0
  122. package/dist/tooth-28-Z9oWqjo0.cjs +1 -0
  123. package/dist/tooth-31-BrYqmkTi.cjs +1 -0
  124. package/dist/tooth-32-BNNR0oCZ.cjs +1 -0
  125. package/dist/tooth-33-DuxvqO2J.cjs +1 -0
  126. package/dist/tooth-34-BCSCXMB6.cjs +1 -0
  127. package/dist/tooth-35-BLUXkX88.cjs +1 -0
  128. package/dist/tooth-36-IrKHYqlA.cjs +1 -0
  129. package/dist/tooth-37-BYqpdMwo.cjs +1 -0
  130. package/dist/tooth-38-B_eNXXdu.cjs +1 -0
  131. package/dist/tooth-41-Ddva4Ot8.cjs +1 -0
  132. package/dist/tooth-42-szcDqlM0.cjs +1 -0
  133. package/dist/tooth-43-B3ka6rQm.cjs +1 -0
  134. package/dist/tooth-44-CazyQucj.cjs +1 -0
  135. package/dist/tooth-45-B4HQtc8n.cjs +1 -0
  136. package/dist/tooth-46-BPM40gbG.cjs +1 -0
  137. package/dist/tooth-47-Dvr20dlh.cjs +1 -0
  138. package/dist/tooth-48-Bd8ljGsF.cjs +1 -0
  139. package/dist/tooth-51-OBpwCOF3.cjs +1 -0
  140. package/dist/tooth-52-aKxyHcmq.cjs +1 -0
  141. package/dist/tooth-53-vCwJjTOc.cjs +1 -0
  142. package/dist/tooth-54-DsWu2iFy.cjs +1 -0
  143. package/dist/tooth-55-BxC1X2Dn.cjs +1 -0
  144. package/dist/tooth-61-BbLvxMQi.cjs +1 -0
  145. package/dist/tooth-62-CmTkWczP.cjs +1 -0
  146. package/dist/tooth-63-DI7l_2qI.cjs +1 -0
  147. package/dist/tooth-64-B21sOsJh.cjs +1 -0
  148. package/dist/tooth-65-D2ZC2VEr.cjs +1 -0
  149. package/dist/tooth-71-D473PPO5.cjs +1 -0
  150. package/dist/tooth-72-Drh1wnNu.cjs +1 -0
  151. package/dist/tooth-73-DzlwYI23.cjs +1 -0
  152. package/dist/tooth-74-8aGvcZPg.cjs +1 -0
  153. package/dist/tooth-75-BFK7At_r.cjs +1 -0
  154. package/dist/tooth-81-BZmR-I0M.cjs +1 -0
  155. package/dist/tooth-82-euVfUUZV.cjs +1 -0
  156. package/dist/tooth-83-KV010j64.cjs +1 -0
  157. package/dist/tooth-84-BBg1RjhZ.cjs +1 -0
  158. package/dist/tooth-85-Cr-kc1wM.cjs +1 -0
  159. package/dist/utils/functions/classToHex.d.ts +1 -1
  160. package/dist/utils/functions/createHexResolver.d.ts +16 -0
  161. package/dist/vuetifyConfig.js +522 -0
  162. package/dist/vuetifyConfig.umd.cjs +1 -0
  163. package/package.json +37 -20
  164. package/src/assets/amelipro/apTokens2026.scss +5 -5
  165. package/src/assets/overrides/_breakpoints.scss +25 -0
  166. package/src/assets/overrides/_btns.scss +0 -8
  167. package/src/assets/overrides/_forms.scss +1 -3
  168. package/src/assets/overrides/_icons.scss +14 -10
  169. package/src/assets/overrides/_otp.scss +41 -0
  170. package/src/assets/overrides/_tables.scss +11 -20
  171. package/src/assets/overrides/_tooltips.scss +17 -7
  172. package/src/assets/overrides/_typography.scss +35 -47
  173. package/src/assets/overrides/_utilities.scss +43 -47
  174. package/src/assets/themes.scss +1 -0
  175. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +20 -20
  176. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +12 -14
  177. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +4 -6
  178. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.vue +5 -5
  179. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +4 -6
  180. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.vue +4 -6
  181. package/src/components/Amelipro/AmeliproAutoCompleteField/__tests__/__snapshots__/AmeliproAutoCompleteField.spec.ts.snap +2 -2
  182. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.vue +4 -6
  183. package/src/components/Amelipro/AmeliproBreadcrumb/AmeliproBreadcrumb.vue +1 -3
  184. package/src/components/Amelipro/AmeliproBtn/AmeliproBtn.vue +4 -6
  185. package/src/components/Amelipro/AmeliproCallback/AmeliproCallback.vue +2 -2
  186. package/src/components/Amelipro/AmeliproCard/AmeliproCard.vue +31 -31
  187. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.vue +5 -7
  188. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.vue +13 -15
  189. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +23 -23
  190. package/src/components/Amelipro/AmeliproChips/AmeliproChips.vue +1 -3
  191. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +17 -12
  192. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +2 -2
  193. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.vue +4 -6
  194. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +13 -13
  195. package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.vue +4 -2
  196. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +4 -4
  197. package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.vue +5 -7
  198. package/src/components/Amelipro/AmeliproDisclosure/AmeliproDisclosure.vue +1 -3
  199. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +2 -4
  200. package/src/components/Amelipro/AmeliproFilePreview/AmeliproFilePreview.vue +4 -6
  201. package/src/components/Amelipro/AmeliproFilters/AmeliproFilters.vue +13 -13
  202. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +3 -5
  203. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +1 -3
  204. package/src/components/Amelipro/AmeliproHeader/AmeliproHeader.vue +2 -4
  205. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.vue +1 -3
  206. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.vue +20 -16
  207. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +2 -2
  208. package/src/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.vue +2 -4
  209. package/src/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.vue +5 -7
  210. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.vue +6 -8
  211. package/src/components/Amelipro/AmeliproMailTile/AmeliproMailTile.vue +14 -14
  212. package/src/components/Amelipro/AmeliproMenu/AmeliproMenu.vue +11 -13
  213. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenu.vue +2 -4
  214. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingLayout.vue +8 -8
  215. package/src/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.vue +40 -40
  216. package/src/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.vue +27 -27
  217. package/src/components/Amelipro/AmeliproOnboarding/AmeliproOnboarding.vue +3 -5
  218. package/src/components/Amelipro/AmeliproPageLayout/AmeliproPageLayout.vue +2 -4
  219. package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.vue +2 -4
  220. package/src/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.vue +3 -5
  221. package/src/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.vue +1 -3
  222. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +2 -4
  223. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.vue +4 -4
  224. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +1 -3
  225. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +3 -5
  226. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +3 -5
  227. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +23 -23
  228. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +4 -6
  229. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.vue +12 -22
  230. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.vue +10 -12
  231. package/src/components/Amelipro/AmeliproStepper/AmeliproStepper.vue +17 -17
  232. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +8 -10
  233. package/src/components/Amelipro/AmeliproTabs/AmeliproTabBtn/AmeliproTabBtn.vue +6 -8
  234. package/src/components/Amelipro/AmeliproTabs/AmeliproTabs.vue +4 -4
  235. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.vue +4 -6
  236. package/src/components/Amelipro/AmeliproTextArea/__tests__/__snapshots__/AmeliproTextArea.spec.ts.snap +2 -2
  237. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.vue +7 -9
  238. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.vue +3 -5
  239. package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.vue +0 -2
  240. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.vue +6 -6
  241. package/src/components/Amelipro/ServiceMenu/ServiceMenu.vue +2 -2
  242. package/src/components/Amelipro/StructureMenu/StructureBtn/StructureBtn.vue +4 -4
  243. package/src/components/Amelipro/StructureMenu/StructureItem/StructureItem.vue +4 -6
  244. package/src/components/Amelipro/StructureMenu/StructureMenu.vue +2 -2
  245. package/src/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.vue +2 -2
  246. package/src/components/Amelipro/UserMenu/UserMenu.vue +1 -3
  247. package/src/components/BackBtn/tests/BackBtn.visual.cy.ts +43 -0
  248. package/src/components/BackBtn/tests/__snapshots__/back-btn-custom-bg.snap.png +0 -0
  249. package/src/components/BackBtn/tests/__snapshots__/back-btn-dark-mode.snap.png +0 -0
  250. package/src/components/BackBtn/tests/__snapshots__/back-btn-default.snap.png +0 -0
  251. package/src/components/BackBtn/tests/__snapshots__/back-btn-no-icon.snap.png +0 -0
  252. package/src/components/Captcha/Captcha.vue +1 -3
  253. package/src/components/Captcha/accessibilite/Accessibility.mdx +86 -8
  254. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +12 -12
  255. package/src/components/ChipList/ChipList.stories.ts +0 -15
  256. package/src/components/ChipList/ChipList.vue +19 -17
  257. package/src/components/ChipList/accessibilite/Accessibility.mdx +83 -10
  258. package/src/components/ChipList/tests/ChipList.a11y.spec.ts +41 -0
  259. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +0 -2
  260. package/src/components/CopyBtn/CopyBtn.vue +1 -3
  261. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +17 -17
  262. package/src/components/Customs/Selects/SelectBtnField/accessibilite/Accessibility.mdx +0 -9
  263. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +31 -0
  264. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +66 -0
  265. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +28 -7
  266. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +18 -0
  267. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +209 -0
  268. package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +14 -10
  269. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.stories.ts +4 -4
  270. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.vue +12 -15
  271. package/src/components/Customs/Selects/SyInputSelect/tests/SyInputSelect.spec.ts +10 -10
  272. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +1 -39
  273. package/src/components/Customs/Selects/SySelect/SySelect.vue +274 -71
  274. package/src/components/Customs/Selects/SySelect/accessibilite/Accessibility.mdx +199 -269
  275. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +89 -0
  276. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +6 -9
  277. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +5 -0
  278. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +10 -16
  279. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +45 -11
  280. package/src/components/Customs/SyCheckbox/accessibilite/Accessibility.mdx +53 -3
  281. package/src/components/Customs/SyCheckbox/tests/SyCheckbox.a11y.spec.ts +134 -2
  282. package/src/components/Customs/SyForm/SyForm.stories.ts +31 -5
  283. package/src/components/Customs/SyPagination/SyPagination.vue +0 -2
  284. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +4 -7
  285. package/src/components/Customs/SyTabs/SyTabs.mdx +0 -58
  286. package/src/components/Customs/SyTabs/SyTabs.stories.ts +32 -33
  287. package/src/components/Customs/SyTabs/SyTabs.vue +87 -67
  288. package/src/components/Customs/SyTabs/accessibilite/Accessibility.mdx +83 -23
  289. package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +88 -0
  290. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +46 -1
  291. package/src/components/Customs/SyTextField/SyTextField.mdx +1 -1
  292. package/src/components/Customs/SyTextField/SyTextField.stories.ts +50 -68
  293. package/src/components/Customs/SyTextField/SyTextField.vue +156 -161
  294. package/src/components/Customs/SyTextField/tests/SyTextField.a11y.spec.ts +32 -0
  295. package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +120 -11
  296. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +62 -58
  297. package/src/components/DatePicker/CalendarMode/DatePicker.vue +342 -237
  298. package/src/components/DatePicker/CalendarMode/accessibilite/Accessibility.mdx +82 -0
  299. package/src/components/DatePicker/CalendarMode/tests/DatePicker.a11y.spec.ts +141 -0
  300. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +2 -56
  301. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +215 -175
  302. package/src/components/DatePicker/ComplexDatePicker/accessibilite/Accessibility.mdx +76 -0
  303. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +33 -10
  304. package/src/components/DatePicker/DatePickerValidationExample/CalendarMode.stories.ts +8 -8
  305. package/src/components/DatePicker/DatePickerValidationExample/ComplexDatePicker.stories.ts +106 -8
  306. package/src/components/DatePicker/DatePickerValidationExample/DateTextInput.stories.ts +12 -11
  307. package/src/components/DatePicker/DatePickerValidationExample/MultiMode.stories.ts +12 -12
  308. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +0 -12
  309. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +71 -67
  310. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +3 -0
  311. package/src/components/DatePicker/DateTextInput/accessibilite/Accessibility.mdx +66 -0
  312. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.spec.ts +52 -1
  313. package/src/components/DatePicker/composables/index.ts +1 -0
  314. package/src/components/DatePicker/composables/tests/useCalendarKeyboardNavigation.spec.ts +109 -65
  315. package/src/components/DatePicker/composables/tests/useDatePickerFocusTrap.spec.ts +138 -0
  316. package/src/components/DatePicker/composables/tests/useDatePickerState.spec.ts +53 -0
  317. package/src/components/DatePicker/composables/tests/useDateValidation.spec.ts +74 -18
  318. package/src/components/DatePicker/composables/tests/useInputBlurHandler.spec.ts +39 -0
  319. package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +91 -0
  320. package/src/components/DatePicker/composables/useCalendarKeyboardNavigation.ts +442 -36
  321. package/src/components/DatePicker/composables/useDatePickerFocusTrap.ts +92 -0
  322. package/src/components/DatePicker/composables/useDatePickerState.ts +24 -0
  323. package/src/components/DatePicker/composables/useDateTextField.ts +6 -6
  324. package/src/components/DatePicker/composables/useDateValidation.ts +36 -35
  325. package/src/components/DatePicker/composables/useInputBlurHandler.ts +3 -3
  326. package/src/components/DatePicker/composables/useManualDateValidation.ts +6 -2
  327. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +9 -8
  328. package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +1 -1
  329. package/src/components/DiacriticPicker/accessibilite/Accessibility.mdx +76 -8
  330. package/src/components/DialogBox/DialogBox.vue +3 -5
  331. package/src/components/DialogBox/tests/DialogBox.visual.cy.ts +76 -0
  332. package/src/components/DialogBox/tests/__snapshots__/dialog-box-custom-texts.snap.png +0 -0
  333. package/src/components/DialogBox/tests/__snapshots__/dialog-box-default.snap.png +0 -0
  334. package/src/components/DialogBox/tests/__snapshots__/dialog-box-no-actions.snap.png +0 -0
  335. package/src/components/FileList/FileList.vue +9 -2
  336. package/src/components/FileList/UploadItem/UploadItem.vue +11 -13
  337. package/src/components/FileList/tests/FileList.spec.ts +47 -0
  338. package/src/components/FileUpload/FileUpload.vue +3 -5
  339. package/src/components/FileUpload/FileUploadContent.vue +3 -5
  340. package/src/components/FilterInline/FilterInline.vue +1 -3
  341. package/src/components/FilterSideBar/FilterSideBar.mdx +44 -1
  342. package/src/components/FilterSideBar/FilterSideBar.stories.ts +105 -1
  343. package/src/components/FilterSideBar/FilterSideBar.vue +7 -0
  344. package/src/components/FilterSideBar/tests/FilterSideBar.a11y.spec.ts +54 -1
  345. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +42 -0
  346. package/src/components/FooterBar/FooterBar.vue +9 -13
  347. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +1 -1
  348. package/src/components/HeaderBar/HeaderBar.stories.ts +14 -2
  349. package/src/components/HeaderBar/HeaderBar.vue +2 -3
  350. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +2 -3
  351. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +2 -3
  352. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.vue +0 -1
  353. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +8 -9
  354. package/src/components/HeaderBar/HeaderBurgerMenu/menu.scss +0 -8
  355. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.visual.cy.ts +196 -0
  356. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated-submenu-open.snap.png +0 -0
  357. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated.snap.png +0 -0
  358. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +0 -1
  359. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +6 -7
  360. package/src/components/HeaderBar/tests/HeaderBar.visual.cy.ts +81 -0
  361. package/src/components/HeaderBar/tests/__snapshots__/header-bar-custom-width.snap.png +0 -0
  362. package/src/components/HeaderBar/tests/__snapshots__/header-bar-default.snap.png +0 -0
  363. package/src/components/HeaderBar/tests/__snapshots__/header-bar-no-sticky.snap.png +0 -0
  364. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-prepend.snap.png +0 -0
  365. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-side.snap.png +0 -0
  366. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-subtitle.snap.png +0 -0
  367. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +12 -3
  368. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +15 -8
  369. package/src/components/HeaderToolbar/HeaderToolbar.vue +6 -7
  370. package/src/components/LangBtn/LangBtn.vue +2 -4
  371. package/src/components/Logo/accessibilite/Accessibility.mdx +73 -11
  372. package/src/components/Logo/tests/Logo.visual.cy.ts +57 -0
  373. package/src/components/Logo/tests/__snapshots__/logo-avatar.snap.png +0 -0
  374. package/src/components/Logo/tests/__snapshots__/logo-dark.snap.png +0 -0
  375. package/src/components/Logo/tests/__snapshots__/logo-default.snap.png +0 -0
  376. package/src/components/Logo/tests/__snapshots__/logo-no-organism.snap.png +0 -0
  377. package/src/components/Logo/tests/__snapshots__/logo-no-signature.snap.png +0 -0
  378. package/src/components/Logo/tests/__snapshots__/logo-risque-pro.snap.png +0 -0
  379. package/src/components/LogoBrandSection/LogoBrandSection.vue +2 -2
  380. package/src/components/LogoBrandSection/accessibilite/Accessibility.mdx +85 -9
  381. package/src/components/LunarCalendar/tests/LunarCalendar.spec.ts +3 -1
  382. package/src/components/LunarCalendar/useLunarCalendarValidation.ts +4 -5
  383. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +1 -1
  384. package/src/components/MonthPicker/tests/MonthPicker.spec.ts +2 -1
  385. package/src/components/MonthPicker/tests/__snapshots__/MonthPicker.spec.ts.snap +7 -7
  386. package/src/components/NirField/NirField.stories.ts +6 -2
  387. package/src/components/NirField/NirField.vue +67 -265
  388. package/src/components/NirField/accessibilite/Accessibility.mdx +102 -7
  389. package/src/components/NirField/locales.ts +1 -1
  390. package/src/components/NirField/tests/NirField.spec.ts +124 -0
  391. package/src/components/NirField/tests/useNirValidation.spec.ts +449 -0
  392. package/src/components/NirField/useNirValidation.ts +277 -0
  393. package/src/components/NotificationBar/Notification/Notification.vue +5 -7
  394. package/src/components/NotificationBar/NotificationBar.vue +1 -3
  395. package/src/components/PaginatedTable/PaginatedTable.vue +2 -3
  396. package/src/components/PaginatedTable/Pagination.vue +3 -5
  397. package/src/components/PasswordField/PasswordField.stories.ts +4 -4
  398. package/src/components/PasswordField/PasswordField.vue +26 -34
  399. package/src/components/PasswordField/tests/PasswordField.spec.ts +6 -3
  400. package/src/components/PeriodField/PeriodField.stories.ts +4 -4
  401. package/src/components/PeriodField/PeriodField.vue +57 -57
  402. package/src/components/PeriodField/__tests__/PeriodField.async.spec.ts +32 -0
  403. package/src/components/PeriodField/accessibilite/Accessibility.mdx +68 -8
  404. package/src/components/PeriodField/tests/PeriodField.spec.ts +28 -2
  405. package/src/components/PhoneField/PhoneField.vue +8 -9
  406. package/src/components/PhoneField/tests/PhoneField.spec.ts +1 -0
  407. package/src/components/RangeField/RangeField.vue +6 -0
  408. package/src/components/RangeField/RangeSlider/RangeSlider.vue +0 -2
  409. package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -1
  410. package/src/components/RangeField/tests/RangeField.visual.cy.ts +65 -0
  411. package/src/components/RangeField/tests/__snapshots__/range-field-custom-bg.snap.png +0 -0
  412. package/src/components/RangeField/tests/__snapshots__/range-field-custom-range.snap.png +0 -0
  413. package/src/components/RangeField/tests/__snapshots__/range-field-default.snap.png +0 -0
  414. package/src/components/RangeField/tests/__snapshots__/range-field-step.snap.png +0 -0
  415. package/src/components/RangeField/tests/__snapshots__/range-field-with-label.snap.png +0 -0
  416. package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +6 -8
  417. package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +3 -5
  418. package/src/components/SearchListField/SearchListField.vue +0 -2
  419. package/src/components/SkipLink/SkipLink.vue +2 -4
  420. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +6 -6
  421. package/src/components/SubHeader/SubHeader.vue +1 -1
  422. package/src/components/SyAlert/SyAlert.vue +7 -9
  423. package/src/components/SyAlert/tests/SyAlert.visual.cy.ts +46 -0
  424. package/src/components/SyAlert/tests/__snapshots__/sy-alert-closable.snap.png +0 -0
  425. package/src/components/SyAlert/tests/__snapshots__/sy-alert-error.snap.png +0 -0
  426. package/src/components/SyAlert/tests/__snapshots__/sy-alert-info.snap.png +0 -0
  427. package/src/components/SyAlert/tests/__snapshots__/sy-alert-success.snap.png +0 -0
  428. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-outlined.snap.png +0 -0
  429. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-tonal.snap.png +0 -0
  430. package/src/components/SyAlert/tests/__snapshots__/sy-alert-warning.snap.png +0 -0
  431. package/src/components/SyBtnMenu/SyBtnMenu.vue +2 -4
  432. package/src/components/SyTextArea/SyTextArea.stories.ts +138 -2
  433. package/src/components/SyTextArea/SyTextArea.vue +53 -23
  434. package/src/components/SyTextArea/tests/SyTextArea.spec.ts +126 -3
  435. package/src/components/SyTextArea/useDefaultValidationRules.ts +74 -0
  436. package/src/components/TableToolbar/TableToolbar.vue +6 -8
  437. package/src/components/Tables/SyServerTable/SyServerTable.mdx +25 -0
  438. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +839 -1
  439. package/src/components/Tables/SyServerTable/SyServerTable.vue +154 -95
  440. package/src/components/Tables/SyServerTable/tests/SyServerTable.a11y.spec.ts +81 -0
  441. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +390 -0
  442. package/src/components/Tables/SyTable/SyTable.mdx +25 -0
  443. package/src/components/Tables/SyTable/SyTable.stories.ts +556 -1
  444. package/src/components/Tables/SyTable/SyTable.vue +136 -60
  445. package/src/components/Tables/SyTable/tests/SyTable.a11y.spec.ts +79 -0
  446. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +382 -0
  447. package/src/components/Tables/common/SyTableFilter.vue +49 -4
  448. package/src/components/Tables/common/SyTablePagination.vue +142 -19
  449. package/src/components/Tables/common/TableHeader.vue +45 -4
  450. package/src/components/Tables/common/filters/AutocompleteFilter.vue +160 -0
  451. package/src/components/Tables/common/filters/NumberFilter.vue +1 -1
  452. package/src/components/Tables/common/filters/SelectFilter.vue +11 -12
  453. package/src/components/Tables/common/filters/TextFilter.vue +1 -1
  454. package/src/components/Tables/common/filters/getFilterComponent.ts +8 -1
  455. package/src/components/Tables/common/filters/locales.ts +0 -1
  456. package/src/components/Tables/common/filters/tests/AutocompleteFilter.a11y.spec.ts +110 -0
  457. package/src/components/Tables/common/filters/tests/AutocompleteFilter.spec.ts +203 -0
  458. package/src/components/Tables/common/filters/tests/SelectFilter.a11y.spec.ts +104 -0
  459. package/src/components/Tables/common/filters/tests/SelectFilter.spec.ts +152 -16
  460. package/src/components/Tables/common/locales.ts +3 -0
  461. package/src/components/Tables/common/tableFilterUtils.ts +3 -0
  462. package/src/components/Tables/common/tableStyles.scss +60 -19
  463. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +18 -0
  464. package/src/components/Tables/common/tests/TableHeader.spec.ts +39 -0
  465. package/src/components/Tables/common/tests/filterByRange.spec.ts +2 -1
  466. package/src/components/Tables/common/types.ts +15 -4
  467. package/src/components/Tables/common/useClickableTableRow.ts +103 -0
  468. package/src/components/Tables/common/usePagination.ts +13 -0
  469. package/src/components/Tables/common/usePinnedColumns.ts +237 -0
  470. package/src/components/Tables/common/useTableHeaders.ts +52 -30
  471. package/src/components/Tables/common/useTableRowCheckboxAccessibility.ts +41 -0
  472. package/src/components/UploadWorkflow/UploadWorkflow.vue +1 -0
  473. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +23 -0
  474. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +66 -0
  475. package/src/components/UploadWorkflow/useFileList.ts +3 -0
  476. package/src/components/UserMenuBtn/UserMenuBtn.vue +1 -3
  477. package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +2 -6
  478. package/src/composables/date/useDatePickerAccessibility.ts +42 -207
  479. package/src/composables/rules/tests/useFieldValidation.spec.ts +120 -120
  480. package/src/composables/rules/useFieldValidation.ts +34 -17
  481. package/src/composables/unifyValidation/documentationValidationProps.ts +235 -0
  482. package/src/composables/unifyValidation/tests/useCustomValidation.spec.ts +601 -0
  483. package/src/composables/unifyValidation/tests/useValidation.spec.ts +2048 -0
  484. package/src/composables/unifyValidation/tests/useVuetifyValidation.spec.ts +184 -0
  485. package/src/composables/unifyValidation/useCustomValidation.ts +95 -0
  486. package/src/composables/unifyValidation/useValidation.ts +190 -0
  487. package/src/composables/unifyValidation/useVuetifyValidation.ts +54 -0
  488. package/src/composables/useFormFieldErrorHandling.ts +4 -7
  489. package/src/composables/validation/tests/useFormValidation.spec.ts +14 -0
  490. package/src/composables/validation/tests/useValidation.spec.ts +116 -21
  491. package/src/composables/validation/useFormValidation.ts +20 -13
  492. package/src/composables/validation/useValidatable.ts +8 -1
  493. package/src/composables/validation/useValidation.ts +151 -99
  494. package/src/composantsVuetify/Introduction.mdx +48 -0
  495. package/src/composantsVuetify/VBreadcrumbs/VBreadcrumbs.mdx +28 -0
  496. package/src/composantsVuetify/VBreadcrumbs/v-breadcrumbs.stories.ts +108 -0
  497. package/src/composantsVuetify/VBtn/VBtn.mdx +72 -0
  498. package/src/composantsVuetify/VBtn/v-btn.stories.ts +121 -0
  499. package/src/composantsVuetify/VOtpInput/VOtpInput.mdx +39 -0
  500. package/src/composantsVuetify/VOtpInput/v-otp-input.stories.ts +56 -0
  501. package/src/composantsVuetify/VSkeletonLoader/VSkeletonLoader.mdx +42 -0
  502. package/src/composantsVuetify/VSkeletonLoader/v-skeleton-loader.stories.ts +77 -0
  503. package/src/composantsVuetify/VSwitch/VSwitch.mdx +47 -0
  504. package/src/composantsVuetify/VSwitch/v-switch.stories.ts +166 -0
  505. package/src/composantsVuetify/VTooltip/VTooltip.mdx +32 -0
  506. package/src/composantsVuetify/VTooltip/v-tooltip.stories.ts +95 -0
  507. package/src/designTokens/tests/buildColorClassMap.spec.ts +31 -0
  508. package/src/designTokens/tests/generateScssTokens.spec.ts +12 -0
  509. package/src/designTokens/tests/themeUtils.spec.ts +53 -0
  510. package/src/designTokens/tokens/amelipro/apColors.ts +8 -130
  511. package/src/designTokens/tokens/amelipro/apColors2026.ts +3 -15
  512. package/src/designTokens/tokens/amelipro/apContextual.ts +55 -47
  513. package/src/designTokens/tokens/amelipro/apLightTheme.ts +1 -1
  514. package/src/designTokens/tokens/amelipro/apSemantic.ts +1 -1
  515. package/src/designTokens/tokens/baseColors.ts +129 -0
  516. package/src/designTokens/tokens/baseContextualTokens.ts +52 -0
  517. package/src/designTokens/tokens/cnam/cnamColors.ts +3 -125
  518. package/src/designTokens/tokens/cnam/cnamContextual.ts +4 -48
  519. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +1 -1
  520. package/src/designTokens/tokens/cnam/cnamSemantic.ts +3 -3
  521. package/src/designTokens/tokens/pa/paColors.ts +2 -166
  522. package/src/designTokens/tokens/pa/paContextual.ts +3 -48
  523. package/src/designTokens/tokens/pa/paLightTheme.ts +1 -1
  524. package/src/designTokens/tokens/pa/paSemantic.ts +2 -2
  525. package/src/designTokens/utils/buildColorClassMap.ts +34 -0
  526. package/src/designTokens/utils/convertSemanticsToken.ts +8 -11
  527. package/src/designTokens/utils/createFlattenTheme.ts +15 -7
  528. package/src/designTokens/utils/index.ts +2 -2
  529. package/src/main.ts +0 -2
  530. package/src/stories/Accessibilite/AuditDesignSystem.mdx +0 -11
  531. package/src/stories/Accessibilite/DesignSystem/Avancement.mdx +433 -0
  532. package/src/stories/Accessibilite/DesignSystem/a11y-status.json +692 -0
  533. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +8 -1
  534. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +51 -10
  535. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +16 -9
  536. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +48 -58
  537. package/src/stories/Components/Components.stories.ts +113 -9
  538. package/src/stories/Demarrer/Accueil.stories.ts +3 -3
  539. package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +4 -9
  540. package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +28 -0
  541. package/src/stories/Demarrer/Releases.stories.ts +48 -5
  542. package/src/stories/DesignTokens/ColorDisplay.vue +6 -5
  543. package/src/stories/DesignTokens/ColorIntegrationExample.vue +2 -4
  544. package/src/stories/DesignTokens/colors.stories.ts +5 -6
  545. package/src/stories/GuideDuDev/Amelipro.mdx +15 -0
  546. package/src/stories/GuideDuDev/Amelipro.stories.ts +209 -0
  547. package/src/stories/GuideDuDev/CreateVuetifyInstance.mdx +95 -0
  548. package/src/stories/GuideDuDev/Theme.mdx +36 -26
  549. package/src/stories/GuideDuDev/moduleDeNotification.mdx +3 -2
  550. package/src/stories/GuideDuDev/vuetifyOptions.mdx +3 -3
  551. package/src/stories/styles/accessibility-guide.css +3 -3
  552. package/src/utils/functions/classToHex.ts +6 -34
  553. package/src/utils/functions/createHexResolver.ts +45 -0
  554. package/src/utils/functions/tests/classToHex.spec.ts +36 -0
  555. package/src/utils/functions/tests/convertToHex.spec.ts +31 -0
  556. package/src/utils/functions/tests/createHexResolver.spec.ts +66 -0
  557. package/src/utils/functions/tests/isCssColor.spec.ts +48 -0
  558. package/dist/SelectFilter-BioGT6Nn.js +0 -136
  559. package/dist/designTokens/utils/convertGaps.d.ts +0 -5
  560. package/dist/main-aLKwdMi1.js +0 -37886
  561. package/dist/style.css +0 -1
  562. package/src/assets/apTokens.scss +0 -343
  563. package/src/assets/overrides/_container.scss +0 -36
  564. package/src/assets/tokens.scss +0 -388
  565. package/src/components/DatePicker/Accessibilite.mdx +0 -14
  566. package/src/designTokens/apColors.md +0 -66
  567. package/src/designTokens/cnamColors.md +0 -193
  568. package/src/designTokens/paColors.md +0 -66
  569. package/src/designTokens/tokens/json/contextual-tokens.json +0 -156
  570. package/src/designTokens/tokens/json/primitives.json +0 -209
  571. package/src/designTokens/tokens/json/semantic.json +0 -120
  572. package/src/designTokens/utils/convertGaps.ts +0 -11
  573. package/src/stories/Accessibilite/Avancement/Avancement.mdx +0 -533
  574. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +0 -306
@@ -17,14 +17,14 @@ export interface UseDateTextFieldManualValidationOptions {
17
17
  isDateComplete: (value: string) => boolean
18
18
  parseDate: (dateStr: string, format: string) => Date | null
19
19
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- validateField: (value: unknown, rules?: any[], warningRules?: any[]) => ValidationResult
20
+ validateField: (value: unknown, rules?: any[], warningRules?: any[]) => Promise<ValidationResult>
21
21
  }
22
22
 
23
23
  export interface UseDateTextFieldSubmitOptions {
24
24
  isValidating: Ref<boolean>
25
25
  hasInteracted: Ref<boolean>
26
26
  inputValue: Ref<string>
27
- runRules: (value: string) => boolean
27
+ runRules: (value: string) => Promise<boolean>
28
28
  }
29
29
 
30
30
  export interface UseDateTextFieldResetOptions {
@@ -71,15 +71,15 @@ export const useDateTextField = (options: UseDateTextFieldOptions) => {
71
71
  isDateComplete: manualValidation.isDateComplete,
72
72
  parseDate: manualValidation.parseDate,
73
73
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
- validateField: manualValidation.validateField as (value: unknown, rules?: any[], warningRules?: any[]) => ValidationResult,
74
+ validateField: manualValidation.validateField as (value: unknown, rules?: any[], warningRules?: any[]) => Promise<ValidationResult>,
75
75
  })
76
76
 
77
- const validateOnSubmit = () => {
77
+ const validateOnSubmit = async () => {
78
78
  if (!submit) return true
79
79
  const { isValidating, hasInteracted, inputValue, runRules } = submit
80
80
  isValidating.value = true
81
81
  hasInteracted.value = true
82
- const ok = runRules(inputValue.value)
82
+ const ok = await runRules(inputValue.value)
83
83
  isValidating.value = false
84
84
  return ok
85
85
  }
@@ -99,7 +99,7 @@ export const useDateTextField = (options: UseDateTextFieldOptions) => {
99
99
  const formattedStartDate = startDateValidation.clampedDate || ''
100
100
  const formattedEndDate = endDateValidation.clampedDate || ''
101
101
 
102
- return formattedEndDate ? `${formattedStartDate} - ${formattedEndDate}` : formattedStartDate
102
+ return formattedEndDate ? `${formattedStartDate} - ${formattedEndDate}` : `${formattedStartDate} - `
103
103
  }
104
104
 
105
105
  const dateValidationResult = autoClampDate(raw, displayFormat.value)
@@ -29,7 +29,7 @@ export const useDateValidation = (options: {
29
29
  // Fonctions de validation
30
30
  clearValidation: () => void
31
31
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Règles personnalisées
32
- validateField: (value: any, rules?: any[], warningRules?: any[]) => ValidationResult
32
+ validateField: (value: any, rules?: any[], warningRules?: any[]) => ValidationResult | Promise<ValidationResult>
33
33
 
34
34
  // Références aux messages
35
35
  errors: Ref<string[]>
@@ -60,7 +60,7 @@ export const useDateValidation = (options: {
60
60
  * @param forceValidation - Force la validation même si isUpdatingFromInternal est vrai
61
61
  * @returns Résultat de la validation
62
62
  */
63
- const validateDates = (forceValidation = false): ValidationResult => {
63
+ const validateDates = (forceValidation = false): ValidationResult | Promise<ValidationResult> => {
64
64
  const currentCustomRules = unref(customRules)
65
65
  const currentCustomWarningRules = unref(customWarningRules)
66
66
 
@@ -152,64 +152,65 @@ export const useDateValidation = (options: {
152
152
  ? selectedDates.value.filter(Boolean) // Filtrer les valeurs null
153
153
  : [selectedDates.value]
154
154
 
155
- let isValid = true
156
-
157
- // Valider chaque date
158
- if (shouldDisplayErrors) {
159
- datesToValidate.forEach((date) => {
160
- if (!date) return // Ignorer les dates null
161
-
162
- const result = validateField(
163
- date,
164
- currentCustomRules,
165
- currentCustomWarningRules,
166
- )
167
- if (result.hasError) {
168
- isValid = false
169
- }
170
- })
155
+ const finalizeValidation = (isValid: boolean): ValidationResult => {
156
+ let finalIsValid = isValid
171
157
 
172
158
  // Vérifier la validité de la plage de dates si en mode plage
173
159
  if (displayRange && Array.isArray(selectedDates.value) && selectedDates.value.length >= 2) {
174
- // Récupérer les dates de début et de fin
175
160
  const startDate = selectedDates.value[0]
176
161
  const endDate = selectedDates.value[selectedDates.value.length - 1]
177
162
 
178
- // Vérifier si les deux dates sont présentes et si la plage est valide
179
163
  if (startDate && endDate && startDate.getTime() > endDate.getTime()) {
180
- // La date de fin est antérieure à la date de début
181
164
  const rangeError = DATE_PICKER_MESSAGES.ERROR_END_BEFORE_START
182
165
  if (!errors.value.includes(rangeError)) {
183
166
  errors.value.push(rangeError)
184
- isValid = false
167
+ finalIsValid = false
185
168
  }
186
169
  }
187
- // Utiliser également la validation du composable useDateRangeValidation
188
170
  else if (!currentRangeIsValid.value) {
189
171
  const rangeError = getRangeValidationError.value
190
172
  if (rangeError && !errors.value.includes(rangeError)) {
191
173
  errors.value.push(rangeError)
192
- isValid = false
174
+ finalIsValid = false
193
175
  }
194
176
  }
195
177
  }
196
178
 
197
- // Dédoublonner les messages (au cas où plusieurs dates auraient les mêmes messages)
198
179
  errors.value = [...new Set(errors.value)]
199
180
  warnings.value = [...new Set(warnings.value)]
200
181
  successes.value = [...new Set(successes.value)]
182
+
183
+ return {
184
+ hasError: !finalIsValid,
185
+ hasWarning: warnings.value.length > 0,
186
+ hasSuccess: successes.value.length > 0 && finalIsValid && warnings.value.length === 0,
187
+ state: {
188
+ errors: errors.value,
189
+ warnings: warnings.value,
190
+ successes: successes.value,
191
+ },
192
+ }
201
193
  }
202
194
 
203
- return {
204
- hasError: !isValid,
205
- hasWarning: warnings.value.length > 0,
206
- hasSuccess: successes.value.length > 0 && isValid && warnings.value.length === 0,
207
- state: {
208
- errors: errors.value,
209
- warnings: warnings.value,
210
- successes: successes.value,
211
- },
195
+ if (!shouldDisplayErrors) {
196
+ return finalizeValidation(true)
212
197
  }
198
+
199
+ const validationResults = datesToValidate
200
+ .filter(Boolean)
201
+ .map(date => validateField(date, currentCustomRules, currentCustomWarningRules))
202
+
203
+ if (validationResults.some(result => result instanceof Promise)) {
204
+ return Promise
205
+ .all(validationResults.map(result => Promise.resolve(result)))
206
+ .then((resolvedResults) => {
207
+ const hasError = resolvedResults.some(result => result.hasError)
208
+ return finalizeValidation(!hasError)
209
+ })
210
+ }
211
+
212
+ const hasError = (validationResults as ValidationResult[]).some(result => result.hasError)
213
+ return finalizeValidation(!hasError)
213
214
  }
214
215
 
215
216
  /**
@@ -217,7 +218,7 @@ export const useDateValidation = (options: {
217
218
  *
218
219
  * @returns Résultat de la validation
219
220
  */
220
- const validateOnSubmit = (): ValidationResult => {
221
+ const validateOnSubmit = (): ValidationResult | Promise<ValidationResult> => {
221
222
  return validateDates(true)
222
223
  }
223
224
 
@@ -28,7 +28,7 @@ export const useInputBlurHandler = (options: {
28
28
  parseDate: (dateStr: string, format: string) => Date | null
29
29
  formatDate: (date: Date, format: string) => string
30
30
  updateModel: (value: DateValue) => void
31
- validateManualInput: (value: string) => boolean
31
+ validateManualInput: (value: string) => boolean | Promise<boolean>
32
32
 
33
33
  // Émetteurs d'événements
34
34
  emitBlur: () => void
@@ -54,7 +54,7 @@ export const useInputBlurHandler = (options: {
54
54
  /**
55
55
  * Gère la perte de focus du champ de saisie de date
56
56
  */
57
- const handleInputBlur = () => {
57
+ const handleInputBlur = async () => {
58
58
  // Émettre l'événement blur
59
59
  emitBlur()
60
60
 
@@ -155,7 +155,7 @@ export const useInputBlurHandler = (options: {
155
155
  // Note: La vérification du type string a déjà été faite plus haut
156
156
  // et on retourne si ce n'est pas une chaîne, donc ici displayFormattedDate.value est forcément une chaîne
157
157
  if (displayFormattedDate.value) {
158
- validateManualInput(displayFormattedDate.value || '')
158
+ await Promise.resolve(validateManualInput(displayFormattedDate.value || ''))
159
159
  }
160
160
  }
161
161
 
@@ -31,7 +31,7 @@ export const useManualDateValidation = (options: {
31
31
  validateDateFormat: (dateStr: string) => { isValid: boolean, message: string }
32
32
  isDateComplete: (value: string) => boolean
33
33
  parseDate: (dateStr: string, format: string) => Date | null
34
- validateField: (value: unknown, rules?: CustomRule[], warningRules?: CustomRule[]) => ValidationResult
34
+ validateField: (value: unknown, rules?: CustomRule[], warningRules?: CustomRule[]) => ValidationResult | Promise<ValidationResult>
35
35
  }) => {
36
36
  const {
37
37
  format,
@@ -57,7 +57,7 @@ export const useManualDateValidation = (options: {
57
57
  * @param value - Chaîne de date à valider
58
58
  * @returns Booléen indiquant si la saisie est valide
59
59
  */
60
- const validateManualInput = (value: string): boolean => {
60
+ const validateManualInput = (value: string): boolean | Promise<boolean> => {
61
61
  // Réinitialiser la validation
62
62
  clearValidation()
63
63
 
@@ -129,6 +129,10 @@ export const useManualDateValidation = (options: {
129
129
  safeWarningRules,
130
130
  )
131
131
 
132
+ if (result instanceof Promise) {
133
+ return result.then(resolvedResult => !resolvedResult.hasError)
134
+ }
135
+
132
136
  return !result.hasError
133
137
  }
134
138
 
@@ -14,6 +14,7 @@ export function useMonthButtonCustomization(
14
14
  const monthButtonText = ref('')
15
15
  const yearText = ref('')
16
16
  const monthButtonObservers: MutationObserver[] = []
17
+ const primaryThemeColor = 'rgb(var(--v-theme-primary, 12, 65, 154))'
17
18
 
18
19
  onBeforeUnmount(() => {
19
20
  monthButtonObservers.forEach(observer => observer.disconnect())
@@ -111,12 +112,12 @@ export function useMonthButtonCustomization(
111
112
  )
112
113
  monthBtnElement.setAttribute('data-ripple', 'false')
113
114
  monthBtnElement.setAttribute('aria-label', monthText)
114
- monthBtnElement.style.color = 'var(--v-theme-primary)'
115
+ monthBtnElement.style.color = primaryThemeColor
115
116
 
116
117
  const buttonContentHTML = `
117
- <div class="v-btn__content" data-no-activator="" style="color: var(--v-theme-primary);">
118
- <span style="color: var(--v-theme-primary);">${monthText}</span>
119
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" class="ms-1" style="fill: var(--v-theme-primary);" aria-hidden="true"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
118
+ <div class="v-btn__content" data-no-activator="" style="color: ${primaryThemeColor};">
119
+ <span style="color: ${primaryThemeColor};">${monthText}</span>
120
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" class="ms-1" style="fill: ${primaryThemeColor};" aria-hidden="true"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
120
121
  </div>
121
122
  `
122
123
 
@@ -167,12 +168,12 @@ export function useMonthButtonCustomization(
167
168
  )
168
169
  yearBtnElement.setAttribute('data-ripple', 'false')
169
170
  yearBtnElement.setAttribute('aria-label', displayedYear)
170
- yearBtnElement.style.color = 'var(--v-theme-primary)'
171
+ yearBtnElement.style.color = primaryThemeColor
171
172
 
172
173
  const yearButtonContentHTML = `
173
- <div class="v-btn__content" data-no-activator="" style="color: var(--v-theme-primary);">
174
- <span style="color: var(--v-theme-primary);">${displayedYear}</span>
175
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" class="ms-1" style="fill: var(--v-theme-primary);" aria-hidden="true"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
174
+ <div class="v-btn__content" data-no-activator="" style="color: ${primaryThemeColor};">
175
+ <span style="color: ${primaryThemeColor};">${displayedYear}</span>
176
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" class="ms-1" style="fill: ${primaryThemeColor};" aria-hidden="true"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
176
177
  </div>
177
178
  `
178
179
 
@@ -135,7 +135,7 @@
135
135
  .holiday-list {
136
136
  max-height: 200px;
137
137
  overflow-y: auto;
138
- background-color: #fff;
138
+ background-color: rgb(var(--v-theme-surface));
139
139
  padding: 10px;
140
140
  border-radius: 4px;
141
141
  border: 1px solid #e0e0e0;
@@ -1,10 +1,78 @@
1
- import { Meta, Story } from '@storybook/addon-docs';
2
- import * as DiacriticPicker from '../DiacriticPicker.stories';
3
- import '@/stories/styles/shared.css';
1
+ import { Meta, Story } from '@storybook/blocks';
2
+ import * as DiacriticPickerStories from '../DiacriticPicker.stories';
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';
4
13
 
5
- <Meta of={DiacriticPicker} />
14
+ <Meta of={DiacriticPickerStories} />
6
15
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- <p>Cette page sera bientôt disponible</p>
10
- </div>
16
+ <AccessibilityGuideLayout
17
+ componentName="DiacriticPicker"
18
+ iconSrc={AccessibilityIcon}
19
+ apgHref="https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/"
20
+ >
21
+ <CriteriaSection>
22
+ <CriteriaCard icon="🔍" title="Structure sémantique et rôles ARIA">
23
+ <ul>
24
+ <li><strong>Bouton déclencheur</strong> : Utilise <code>aria-controls</code> et <code>aria-haspopup="dialog"</code> pour indiquer la relation avec le dialogue.</li>
25
+ <li><strong>État du dialogue</strong> : <code>aria-expanded</code> reflète l'état d'ouverture/fermeture du dialogue.</li>
26
+ <li><strong>Rôle du dialogue</strong> : <code>role="dialog"</code> et <code>aria-modal="true"</code> sur le VDialog.</li>
27
+ <li><strong>Labellisation</strong> : <code>aria-labelledby</code> lie le dialogue au bouton déclencheur.</li>
28
+ <li><strong>Groupes de caractères</strong> : Utilisation de <code>role="group"</code> avec <code>aria-label</code> pour organiser les caractères minuscules et majuscules.</li>
29
+ </ul>
30
+ </CriteriaCard>
31
+
32
+ <CriteriaCard icon="⌨️" title="Navigation clavier et focus">
33
+ <ul>
34
+ <li><strong>Gestion du focus</strong> : Le focus retourne automatiquement au champ après insertion d'un caractère.</li>
35
+ <li><strong>Position du curseur</strong> : Maintien et restauration précise de la position du curseur après insertion.</li>
36
+ <li><strong>Focus trap</strong> : <code>retain-focus="false"</code> sur le VDialog.</li>
37
+ </ul>
38
+ </CriteriaCard>
39
+
40
+ <CriteriaCard icon="🎨" title="Styles et contrastes">
41
+ <ul>
42
+ <li><strong>Dialogue</strong> : Fond <code>grey-lighten-2</code> sur le VCard.</li>
43
+ <li><strong>Boutons du dialogue</strong> : Taille "small" avec classe <code>ma-1</code>.</li>
44
+ </ul>
45
+ </CriteriaCard>
46
+
47
+ <CriteriaCard icon="🔧" title="Accessibilité du champ associé">
48
+ <ul>
49
+ <li><strong>Labellisation automatique</strong> : Ajout de <code>aria-label</code> si le champ n'a ni <code>aria-label</code> ni <code>aria-labelledby</code>.</li>
50
+ <li><strong>Détection du champ</strong> : Recherche automatique des inputs/textarea dans le slot via <code>getNativeInput()</code>.</li>
51
+ <li><strong>Wrapper</strong> : Conteneur avec <code>role="textbox"</code> et <code>tabindex="0"</code>.</li>
52
+ </ul>
53
+ </CriteriaCard>
54
+ </CriteriaSection>
55
+
56
+ <DemoSection componentName="DiacriticPicker">
57
+ <Story of={DiacriticPickerStories.Default} />
58
+ </DemoSection>
59
+
60
+ <BestPracticesSection>
61
+ <ul>
62
+ <li>Fournissez un <code>inputAriaLabel</code> descriptif si le champ n'a pas de label visible.</li>
63
+ <li>Personnalisez <code>btnTitle</code> pour refléter les caractères utilisés.</li>
64
+ <li>Adaptez la liste des <code>diacritics</code> selon les besoins linguistiques.</li>
65
+ <li>Vérifiez que les caractères affichés dans <code>btnTitle</code> sont inclus dans la liste <code>diacritics</code>.</li>
66
+ </ul>
67
+ </BestPracticesSection>
68
+
69
+ <ResourcesSection>
70
+ <ul>
71
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/" target="_blank" rel="noopener noreferrer">Guide des pratiques WAI-ARIA : Dialogues modaux</a></li>
72
+ <li><a href="https://www.w3.org/WAI/WCAG21/Understanding/keyboard-operation.html" target="_blank" rel="noopener noreferrer">WCAG : Opération au clavier</a></li>
73
+ <li><a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#7.1" target="_blank" rel="noopener noreferrer">RGAA : Consultation par navigation clavier</a></li>
74
+ <li><a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#11.9" target="_blank" rel="noopener noreferrer">RGAA : Structuration de l'information</a></li>
75
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/button/" target="_blank" rel="noopener noreferrer">Guide des pratiques WAI-ARIA : Boutons</a></li>
76
+ </ul>
77
+ </ResourcesSection>
78
+ </AccessibilityGuideLayout>
@@ -244,8 +244,6 @@
244
244
  </template>
245
245
 
246
246
  <style lang="scss" scoped>
247
- @use '@/assets/tokens' as *;
248
-
249
247
  .sy-dialog-box-actions :deep(.v-btn) {
250
248
  box-shadow: none;
251
249
  }
@@ -255,7 +253,7 @@
255
253
  }
256
254
 
257
255
  .v-btn--icon {
258
- color: $colors-icon-base;
256
+ color: rgb(var(--v-theme-iconBase));
259
257
  position: absolute;
260
258
  right: 24px;
261
259
  }
@@ -285,7 +283,7 @@ h2 {
285
283
  display: flex;
286
284
  flex-direction: column;
287
285
  justify-content: stretch;
288
- gap: $spacing-small;
286
+ gap: 16px;
289
287
  }
290
288
 
291
289
  .sy-dialog-box-draggable .sy-dialog-box-title {
@@ -303,7 +301,7 @@ h2 {
303
301
  user-select: none;
304
302
  }
305
303
 
306
- @media screen and (min-width: $container-mobile-max-width) {
304
+ @media screen and (width >= 600px) {
307
305
  .sy-dialog-box-actions-ctn {
308
306
  flex-direction: row;
309
307
  }
@@ -0,0 +1,76 @@
1
+ import { h } from 'vue'
2
+ import DialogBox from '../DialogBox.vue'
3
+
4
+ const dialogTransitionOptions = {
5
+ global: {
6
+ stubs: {
7
+ 'transition': false,
8
+ 'transition-group': false,
9
+ },
10
+ },
11
+ } as const
12
+
13
+ function waitForDialogTransitionEnd() {
14
+ cy.get('.v-overlay__content')
15
+ .should('be.visible')
16
+ .and('not.have.class', 'dialog-transition-enter-active')
17
+ }
18
+
19
+ describe('DialogBox - Visual regression tests', () => {
20
+ it('displays the opened dialog box', () => {
21
+ cy.mountWithVuetify(DialogBox, {
22
+ ...dialogTransitionOptions,
23
+ props: {
24
+ 'modelValue': true,
25
+ 'title': 'Confirmer la suppression',
26
+ 'onUpdate:modelValue': () => {},
27
+ },
28
+ slots: {
29
+ default: () => h('p', 'Êtes-vous sûr de vouloir supprimer cet élément ?'),
30
+ },
31
+ })
32
+
33
+ cy.get('.v-dialog').should('be.visible')
34
+ waitForDialogTransitionEnd()
35
+ cy.matchImageSnapshot('dialog-box-default')
36
+ })
37
+
38
+ it('displays the dialog box without actions', () => {
39
+ cy.mountWithVuetify(DialogBox, {
40
+ ...dialogTransitionOptions,
41
+ props: {
42
+ 'modelValue': true,
43
+ 'title': 'Information',
44
+ 'hideActions': true,
45
+ 'onUpdate:modelValue': () => {},
46
+ },
47
+ slots: {
48
+ default: () => h('p', 'Ceci est un message informatif.'),
49
+ },
50
+ })
51
+
52
+ cy.get('.v-dialog').should('be.visible')
53
+ waitForDialogTransitionEnd()
54
+ cy.matchImageSnapshot('dialog-box-no-actions')
55
+ })
56
+
57
+ it('displays the dialog box with custom texts', () => {
58
+ cy.mountWithVuetify(DialogBox, {
59
+ ...dialogTransitionOptions,
60
+ props: {
61
+ 'modelValue': true,
62
+ 'title': 'Valider le formulaire',
63
+ 'cancelBtnText': 'Annuler',
64
+ 'confirmBtnText': 'Valider',
65
+ 'onUpdate:modelValue': () => {},
66
+ },
67
+ slots: {
68
+ default: () => h('p', 'Souhaitez-vous valider ce formulaire ?'),
69
+ },
70
+ })
71
+
72
+ cy.get('.v-dialog').should('be.visible')
73
+ waitForDialogTransitionEnd()
74
+ cy.matchImageSnapshot('dialog-box-custom-texts')
75
+ })
76
+ })
@@ -19,8 +19,14 @@
19
19
  const props = withDefaults(defineProps<{
20
20
  uploadList: Item[]
21
21
  locales?: typeof defaultLocales
22
+ seeLabel?: string
23
+ importLabel?: string
24
+ deleteLabel?: string
22
25
  } & Widthable>(), {
23
26
  locales: () => defaultLocales,
27
+ seeLabel: undefined,
28
+ importLabel: undefined,
29
+ deleteLabel: undefined,
24
30
  })
25
31
 
26
32
  const { widthStyles } = useWidthable(props)
@@ -51,6 +57,9 @@
51
57
  :show-delete-btn="item.showDeleteBtn"
52
58
  tag="li"
53
59
  :locales="locales"
60
+ :see-label="seeLabel"
61
+ :import-label="importLabel"
62
+ :delete-label="deleteLabel"
54
63
  @upload="() => $emit('upload', uploadList.find((i) => i.id === item.id) as Item)"
55
64
  @preview="() => $emit('preview', uploadList.find((i) => i.id === item.id) as Item)"
56
65
  @delete="() => $emit('delete', uploadList.find((i) => i.id === item.id) as Item)"
@@ -66,8 +75,6 @@
66
75
  </template>
67
76
 
68
77
  <style lang="scss" scoped>
69
- @use '@/assets/tokens';
70
-
71
78
  .upload-list {
72
79
  display: flex;
73
80
  flex-direction: column;
@@ -206,14 +206,12 @@
206
206
  </template>
207
207
 
208
208
  <style lang="scss" scoped>
209
- @use '@/assets/tokens';
210
-
211
209
  .file-item {
212
210
  display: flex;
213
211
  flex-direction: column;
214
- gap: tokens.$gap-3;
215
- padding-block: tokens.$padding-4;
216
- border-bottom: 1px solid tokens.$colors-border-subdued;
212
+ gap: var(--v-gap-3);
213
+ padding-block: var(--v-padding-4);
214
+ border-bottom: 1px solid rgb(var(--v-theme-borderSubdued));
217
215
 
218
216
  &:first-child:last-child {
219
217
  border-bottom: none;
@@ -221,12 +219,12 @@
221
219
  }
222
220
 
223
221
  .file-item__title {
224
- font-size: tokens.$font-size-body-text;
222
+ font-size: var(--v-fontSize-corpsDeTexte);
225
223
  }
226
224
 
227
225
  .file-item__name {
228
226
  font-size: 0.875rem;
229
- color: tokens.$colors-text-base;
227
+ color: rgb(var(--v-theme-textBase));
230
228
  }
231
229
 
232
230
  .file-item__description {
@@ -252,7 +250,7 @@
252
250
 
253
251
  .file-item__content {
254
252
  display: flex;
255
- gap: tokens.$gap-4;
253
+ gap: var(--v-gap-4);
256
254
  align-items: center;
257
255
  }
258
256
 
@@ -263,9 +261,9 @@
263
261
  justify-content: center;
264
262
  margin-left: auto;
265
263
  height: 100%;
266
- gap: tokens.$gap-1;
264
+ gap: var(--v-gap-1);
267
265
 
268
- @media screen and (min-width: tokens.$container-tablet-max-width) {
266
+ @media screen and (width >= 960px) {
269
267
  flex-direction: row;
270
268
  }
271
269
  }
@@ -280,18 +278,18 @@
280
278
 
281
279
  .file-item__message {
282
280
  font-size: 0.875rem;
283
- color: tokens.$colors-text-subdued;
281
+ color: rgb(var(--v-theme-textSubdued));
284
282
  }
285
283
 
286
284
  .file-item__message-success,
287
285
  .file-item__message-error {
288
- margin-top: tokens.$gap-3;
286
+ margin-top: var(--v-gap-3);
289
287
  }
290
288
 
291
289
  .file-item__message-error {
292
290
  display: flex;
293
291
  align-items: center;
294
- gap: tokens.$gap-4;
292
+ gap: var(--v-gap-4);
295
293
  }
296
294
 
297
295
  </style>
@@ -135,6 +135,53 @@ describe('FileList', () => {
135
135
  expect(wrapper.emitted('preview')?.[0]?.[0]).toEqual(fileItem2)
136
136
  })
137
137
 
138
+ it('forwards seeLabel, importLabel, deleteLabel to all items', () => {
139
+ const wrapper = mount(FileList, {
140
+ props: {
141
+ uploadList: [
142
+ { id: 'file1', title: 'file1', state: 'initial' },
143
+ { id: 'file2', title: 'file2', state: 'success', showDeleteBtn: true, showPreviewBtn: true },
144
+ ],
145
+ importLabel: 'Ajouter',
146
+ seeLabel: 'Consulter',
147
+ deleteLabel: 'Retirer',
148
+ },
149
+ })
150
+
151
+ const item1 = wrapper.findAll('.file-item').at(0)
152
+ expect(item1!.find('.file-item__action-upload').text()).toContain('Ajouter')
153
+
154
+ const item2 = wrapper.findAll('.file-item').at(1)
155
+ expect(item2!.find('.file-item__action-preview').text()).toContain('Consulter')
156
+ expect(item2!.find('.file-item__action-delete').text()).toContain('Retirer')
157
+ })
158
+
159
+ it('uses locales for button labels when individual label props are not passed', () => {
160
+ const customLocales = {
161
+ ...locales,
162
+ import: 'Déposer',
163
+ see: 'Afficher',
164
+ delete: 'Effacer',
165
+ }
166
+
167
+ const wrapper = mount(FileList, {
168
+ props: {
169
+ uploadList: [
170
+ { id: 'file1', title: 'file1', state: 'initial' },
171
+ { id: 'file2', title: 'file2', state: 'success', showDeleteBtn: true, showPreviewBtn: true },
172
+ ],
173
+ locales: customLocales,
174
+ },
175
+ })
176
+
177
+ const item1 = wrapper.findAll('.file-item').at(0)
178
+ expect(item1!.find('.file-item__action-upload').text()).toContain('Importer le fichier')
179
+
180
+ const item2 = wrapper.findAll('.file-item').at(1)
181
+ expect(item2!.find('.file-item__action-preview').text()).toContain('Voir le fichier')
182
+ expect(item2!.find('.file-item__action-delete').text()).toContain('Supprimer le fichier')
183
+ })
184
+
138
185
  it('shows when a file is optional', () => {
139
186
  const wrapper = mount(FileList, {
140
187
  props: {