@cnamts/synapse 1.0.26 → 1.0.27

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 (253) hide show
  1. package/dist/{AutocompleteFilter-BPR-a55G.js → AutocompleteFilter-C9eLKyW8.js} +3 -3
  2. package/dist/{DateFilter-CknrJWs2.js → DateFilter-y-GLkAkn.js} +8 -8
  3. package/dist/{NumberFilter-DJ-yNlzv.js → NumberFilter-DN6hIBS7.js} +1 -1
  4. package/dist/{PeriodFilter-CiB5Oa9Z.js → PeriodFilter-MoUUp9qS.js} +1 -1
  5. package/dist/{SelectFilter-EiafX97M.js → SelectFilter-bCbrdLmu.js} +1 -1
  6. package/dist/{TextFilter-BzOmpdxj.js → TextFilter-CvjgEaoM.js} +4 -4
  7. package/dist/apLightTheme2026-ug4Y23ns.js +611 -0
  8. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +2369 -353
  9. package/dist/components/Customs/Selects/SyAutocomplete/composables/useSyAutocompleteValidation.d.ts +18 -0
  10. package/dist/components/Customs/Selects/SyAutocomplete/utils/ariaManager.d.ts +1 -1
  11. package/dist/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.d.ts +3 -1
  12. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +9 -10
  13. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +1 -0
  14. package/dist/components/Customs/Selects/SySelect/composables/useSySelectValidation.d.ts +15 -0
  15. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +3 -3
  16. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +3 -3
  17. package/dist/components/Customs/SyIconButton/SyIconButton.d.ts +18 -0
  18. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +20 -38
  19. package/dist/components/Customs/SyRadioGroup/composables/useSyRadioGroupValidation.d.ts +50 -0
  20. package/dist/components/Customs/SyTextField/SyTextField.d.ts +6 -6
  21. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +147 -136
  22. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +62 -54
  23. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +27 -24
  24. package/dist/components/DatePicker/composables/index.d.ts +1 -0
  25. package/dist/components/DatePicker/composables/useDatePickerValidationBridge.d.ts +51 -0
  26. package/dist/components/MonthPicker/MonthPicker.d.ts +23 -23
  27. package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +23 -23
  28. package/dist/components/NirField/NirField.d.ts +56 -56
  29. package/dist/components/PasswordField/PasswordField.d.ts +3 -3
  30. package/dist/components/PeriodField/PeriodField.d.ts +236 -212
  31. package/dist/components/PhoneField/PhoneField.d.ts +23 -23
  32. package/dist/components/SyTextArea/SyTextArea.d.ts +25 -15
  33. package/dist/components/SyTextArea/composables/useSyTextAreaValidation.d.ts +20 -0
  34. package/dist/components/SyTextArea/locales.d.ts +1 -0
  35. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +1 -0
  36. package/dist/components/Tables/SyTable/SyTable.d.ts +1 -0
  37. package/dist/components/Tables/common/SyTablePagination.d.ts +25 -25
  38. package/dist/components/Tables/common/types.d.ts +2 -0
  39. package/dist/components/index.d.ts +1 -0
  40. package/dist/composables/unifyValidation/documentationValidationProps.d.ts +160 -160
  41. package/dist/composables/unifyValidation/useValidation.d.ts +16 -14
  42. package/dist/design-system-v3.js +81 -80
  43. package/dist/designTokens/tokens/amelipro/apContextual.d.ts +6 -6
  44. package/dist/designTokens/tokens/amelipro/apDarkTheme.d.ts +3 -1
  45. package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +53 -100
  46. package/dist/designTokens/tokens/baseContextualTokens.d.ts +0 -6
  47. package/dist/designTokens/tokens/baseTokens.d.ts +232 -0
  48. package/dist/designTokens/tokens/cnam/cnamContextual.d.ts +6 -6
  49. package/dist/designTokens/tokens/cnam/cnamDarkTheme.d.ts +1 -1
  50. package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +57 -101
  51. package/dist/designTokens/tokens/pa/paContextual.d.ts +0 -6
  52. package/dist/designTokens/tokens/pa/paDarkTheme.d.ts +1 -1
  53. package/dist/designTokens/tokens/pa/paLightTheme.d.ts +53 -97
  54. package/dist/designTokens/tokens/pa/paSemantic.d.ts +1 -0
  55. package/dist/designTokens/tokens/semanticTokens.d.ts +112 -0
  56. package/dist/main-CI6Q9nmO.js +39234 -0
  57. package/dist/synapse.css +1 -1
  58. package/dist/vuetifyConfig.js +208 -72
  59. package/package.json +4 -2
  60. package/src/assets/overrides/_icons.scss +5 -4
  61. package/src/assets/overrides/_otp.scss +4 -4
  62. package/src/assets/overrides/_typography.scss +2 -1
  63. package/src/assets/overrides/_utilities.scss +1 -42
  64. package/src/components/ChipList/ChipList.vue +30 -18
  65. package/src/components/ChipList/tests/chipList.spec.ts +4 -4
  66. package/src/components/CopyBtn/CopyBtn.vue +2 -2
  67. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.stories.ts +4 -0
  68. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +7 -6
  69. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +223 -0
  70. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +283 -351
  71. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +182 -218
  72. package/src/components/Customs/Selects/SyAutocomplete/composables/useSyAutocompleteValidation.ts +101 -0
  73. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +761 -1
  74. package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +3 -1
  75. package/src/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.ts +79 -5
  76. package/src/components/Customs/Selects/SyAutocomplete/validation/Validation.stories.ts +1029 -0
  77. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +9 -491
  78. package/src/components/Customs/Selects/SySelect/SySelect.vue +46 -79
  79. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +3 -0
  80. package/src/components/Customs/Selects/SySelect/composables/useSySelectValidation.ts +64 -0
  81. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +196 -0
  82. package/src/components/Customs/Selects/SySelect/validation/Validation.stories.ts +1026 -0
  83. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.stories.ts +18 -7
  84. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +2 -2
  85. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +8 -8
  86. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +8 -8
  87. package/src/components/Customs/SyCheckbox/tests/SyCheckbox.spec.ts +1 -1
  88. package/src/components/Customs/SyIcon/accessibilite/Accessibility.mdx +0 -6
  89. package/src/components/Customs/SyIcon/utils/tests/iconUtils.spec.ts +107 -0
  90. package/src/components/Customs/SyRadioGroup/SyRadioGroup.mdx +2 -2
  91. package/src/components/Customs/SyRadioGroup/SyRadioGroup.stories.ts +395 -200
  92. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +82 -127
  93. package/src/components/Customs/SyRadioGroup/composables/useSyRadioGroupValidation.ts +127 -0
  94. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.a11y.spec.ts +93 -1
  95. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.spec.ts +146 -9
  96. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.visual.cy.ts +165 -0
  97. package/src/components/Customs/SyRadioGroup/validation/Validation.stories.ts +773 -0
  98. package/src/components/Customs/SyTabs/config.ts +3 -3
  99. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +265 -0
  100. package/src/components/Customs/SyTabs/tests/useTabTransition.spec.ts +188 -0
  101. package/src/components/Customs/SyTextField/SyTextField.stories.ts +10 -29
  102. package/src/components/Customs/SyTextField/SyTextField.vue +23 -15
  103. package/src/components/DataList/DataList.stories.ts +1 -1
  104. package/src/components/DataListItem/tests/DataListItem.spec.ts +3 -1
  105. package/src/components/DatePicker/CalendarMode/DatePicker.vue +37 -142
  106. package/src/components/DatePicker/CalendarMode/tests/DatePicker.coverage.spec.ts +156 -0
  107. package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +495 -4
  108. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +47 -66
  109. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +206 -0
  110. package/src/components/DatePicker/ComplexDatePicker/tests/bridge-integration.regression.spec.ts +210 -0
  111. package/src/components/DatePicker/ComplexDatePicker/tests/calendar-navigation.regression.spec.ts +214 -0
  112. package/src/components/DatePicker/ComplexDatePicker/tests/validation-cross.regression.spec.ts +194 -0
  113. package/src/components/DatePicker/ComplexDatePicker/tests/validation-success-messages.regression.spec.ts +83 -0
  114. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +129 -54
  115. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.spec.ts +320 -0
  116. package/src/components/DatePicker/composables/index.ts +1 -0
  117. package/src/components/DatePicker/composables/tests/useCalendarKeyboardNavigation.spec.ts +360 -0
  118. package/src/components/DatePicker/composables/tests/useDatePickerValidationBridge.spec.ts +129 -0
  119. package/src/components/DatePicker/composables/useDatePickerValidationBridge.ts +205 -0
  120. package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +1 -1
  121. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +1 -1
  122. package/src/components/DatePicker/tests/exposed-methods.coverage.spec.ts +75 -0
  123. package/src/components/DialogBox/DialogBox.vue +1 -1
  124. package/src/components/FileList/UploadItem/UploadItem.vue +4 -4
  125. package/src/components/FileUpload/FileUpload.vue +2 -2
  126. package/src/components/FileUpload/FileUploadContent.vue +1 -1
  127. package/src/components/FilterInline/FilterInline.mdx +2 -2
  128. package/src/components/FilterSideBar/FilterSideBar.stories.ts +1 -1
  129. package/src/components/FilterSideBar/FilterSideBar.vue +2 -2
  130. package/src/components/FooterBar/FooterBar.vue +7 -7
  131. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +1 -1
  132. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +2 -2
  133. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +7 -7
  134. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +2 -2
  135. package/src/components/HeaderLoading/tests/HeaderLoading.spec.ts +87 -8
  136. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +3 -3
  137. package/src/components/HeaderNavigationBar/HorizontalNavbar/tests/HorizontalNavbar.spec.ts +589 -0
  138. package/src/components/HeaderToolbar/tests/HeaderToolBar.spec.ts +153 -1
  139. package/src/components/HeaderToolbar/tests/useMobileRightMenu.spec.ts +258 -0
  140. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +2 -2
  141. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +1 -1
  142. package/src/components/LunarCalendar/tests/useLunarCalendarRules.spec.ts +184 -0
  143. package/src/components/MonthPicker/MonthPickerVisual/MonthSelector.vue +3 -3
  144. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerFooter.vue +1 -1
  145. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +2 -2
  146. package/src/components/MonthPicker/MonthPickerVisual/YearSelector.vue +1 -1
  147. package/src/components/NirField/NirField.vue +3 -3
  148. package/src/components/NotificationBar/Notification/Notification.vue +12 -12
  149. package/src/components/NotificationBar/NotificationBar.stories.ts +8 -8
  150. package/src/components/PaginatedTable/Pagination.vue +2 -2
  151. package/src/components/PasswordField/PasswordField.vue +8 -8
  152. package/src/components/PasswordField/tests/PasswordField.spec.ts +3 -3
  153. package/src/components/RangeField/RangeSlider/RangeSlider.vue +2 -2
  154. package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -1
  155. package/src/components/StatusPage/tests/StatusPage.spec.ts +149 -0
  156. package/src/components/SubHeader/SubHeader.vue +1 -1
  157. package/src/components/SyAlert/SyAlert.vue +23 -23
  158. package/src/components/SyTextArea/SyTextArea.stories.ts +177 -131
  159. package/src/components/SyTextArea/SyTextArea.vue +235 -83
  160. package/src/components/SyTextArea/composables/useSyTextAreaValidation.ts +81 -0
  161. package/src/components/SyTextArea/locales.ts +1 -0
  162. package/src/components/SyTextArea/tests/SyTextArea.spec.ts +449 -1
  163. package/src/components/SyTextArea/useDefaultValidationRules.ts +2 -7
  164. package/src/components/SyTextArea/validation/Validation.stories.ts +856 -0
  165. package/src/components/TableToolbar/TableToolbar.vue +6 -6
  166. package/src/components/TableToolbar/accessibilite/Accessibility.mdx +81 -7
  167. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +163 -0
  168. package/src/components/Tables/SyServerTable/SyServerTable.vue +2 -1
  169. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
  170. package/src/components/Tables/SyTable/SyTable.stories.ts +94 -0
  171. package/src/components/Tables/SyTable/SyTable.vue +2 -1
  172. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +64 -0
  173. package/src/components/Tables/common/TableHeader.vue +2 -2
  174. package/src/components/Tables/common/filters/logics/tests/NumberFilterLogic.spec.ts +176 -0
  175. package/src/components/Tables/common/filters/logics/tests/SelectFilterLogic.spec.ts +111 -0
  176. package/src/components/Tables/common/tableStyles.scss +6 -6
  177. package/src/components/Tables/common/types.ts +2 -0
  178. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +2 -0
  179. package/src/components/index.ts +1 -0
  180. package/src/composables/date/tests/useDateFormatDayjs.spec.ts +31 -0
  181. package/src/composables/date/tests/useHolidayDay.spec.ts +109 -0
  182. package/src/composables/rules/tests/useFieldValidation.spec.ts +374 -0
  183. package/src/composables/tests/useError.spec.ts +30 -0
  184. package/src/composables/tests/useFormFieldErrorHandling.spec.ts +234 -0
  185. package/src/composables/unifyValidation/documentationValidationProps.ts +5 -5
  186. package/src/composables/unifyValidation/tests/documentationValidationProps.spec.ts +177 -0
  187. package/src/composables/unifyValidation/tests/useCustomValidation.spec.ts +30 -0
  188. package/src/composables/unifyValidation/tests/useValidation.spec.ts +6 -2
  189. package/src/composables/unifyValidation/useCustomValidation.ts +19 -9
  190. package/src/composables/unifyValidation/useValidation.ts +18 -21
  191. package/src/composables/useFilterable/useFilterable.spec.ts +42 -0
  192. package/src/composables/useFilterable/useFilterable.ts +11 -7
  193. package/src/composables/useFormFieldErrorHandling.ts +2 -2
  194. package/src/composantsVuetify/VBtn/VBtn.mdx +9 -39
  195. package/src/composantsVuetify/VBtn/v-btn.stories.ts +26 -86
  196. package/src/designTokens/tokens/amelipro/apContextual.ts +6 -0
  197. package/src/designTokens/tokens/amelipro/apDarkTheme.ts +2 -2
  198. package/src/designTokens/tokens/amelipro/apLightTheme.ts +72 -103
  199. package/src/designTokens/tokens/amelipro/apSemantic.ts +1 -1
  200. package/src/designTokens/tokens/baseContextualTokens.ts +1 -6
  201. package/src/designTokens/tokens/baseTokens.ts +232 -0
  202. package/src/designTokens/tokens/cnam/cnamContextual.ts +6 -0
  203. package/src/designTokens/tokens/cnam/cnamDarkTheme.ts +2 -2
  204. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +76 -104
  205. package/src/designTokens/tokens/pa/paDarkTheme.ts +2 -2
  206. package/src/designTokens/tokens/pa/paLightTheme.ts +73 -99
  207. package/src/designTokens/tokens/pa/paSemantic.ts +2 -0
  208. package/src/designTokens/tokens/semanticTokens.ts +114 -0
  209. package/src/stories/Components/Components.stories.ts +7 -3
  210. package/src/stories/DesignTokens/ColorIntegrationExample.vue +2 -3
  211. package/src/stories/DesignTokens/Colors.mdx +6 -8
  212. package/src/stories/DesignTokens/colors.stories.ts +244 -1081
  213. package/src/utils/amelipro/toKebabCase/tests/toKebabCase.spec.ts +52 -0
  214. package/src/utils/formatNir/tests/formatNir.spec.ts +34 -0
  215. package/src/utils/tests/insertAt.spec.ts +44 -0
  216. package/dist/apLightTheme-DS0Uy44H.js +0 -954
  217. package/dist/components/RatingPicker/tests/RatingPicker.a11y.spect.d.ts +0 -1
  218. package/dist/main-BsJ9ec3i.js +0 -38954
  219. package/src/components/BackBtn/tests/__snapshots__/back-btn-custom-bg.snap.png +0 -0
  220. package/src/components/BackBtn/tests/__snapshots__/back-btn-dark-mode.snap.png +0 -0
  221. package/src/components/BackBtn/tests/__snapshots__/back-btn-default.snap.png +0 -0
  222. package/src/components/BackBtn/tests/__snapshots__/back-btn-no-icon.snap.png +0 -0
  223. package/src/components/DatePicker/CalendarMode/tests/DatePicker.events.spec.ts +0 -178
  224. package/src/components/DialogBox/tests/__snapshots__/dialog-box-custom-texts.snap.png +0 -0
  225. package/src/components/DialogBox/tests/__snapshots__/dialog-box-default.snap.png +0 -0
  226. package/src/components/DialogBox/tests/__snapshots__/dialog-box-no-actions.snap.png +0 -0
  227. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated-submenu-open.snap.png +0 -0
  228. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated.snap.png +0 -0
  229. package/src/components/HeaderBar/tests/__snapshots__/header-bar-custom-width.snap.png +0 -0
  230. package/src/components/HeaderBar/tests/__snapshots__/header-bar-default.snap.png +0 -0
  231. package/src/components/HeaderBar/tests/__snapshots__/header-bar-no-sticky.snap.png +0 -0
  232. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-prepend.snap.png +0 -0
  233. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-side.snap.png +0 -0
  234. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-subtitle.snap.png +0 -0
  235. package/src/components/Logo/tests/__snapshots__/logo-avatar.snap.png +0 -0
  236. package/src/components/Logo/tests/__snapshots__/logo-dark.snap.png +0 -0
  237. package/src/components/Logo/tests/__snapshots__/logo-default.snap.png +0 -0
  238. package/src/components/Logo/tests/__snapshots__/logo-no-organism.snap.png +0 -0
  239. package/src/components/Logo/tests/__snapshots__/logo-no-signature.snap.png +0 -0
  240. package/src/components/Logo/tests/__snapshots__/logo-risque-pro.snap.png +0 -0
  241. package/src/components/RangeField/tests/__snapshots__/range-field-custom-bg.snap.png +0 -0
  242. package/src/components/RangeField/tests/__snapshots__/range-field-custom-range.snap.png +0 -0
  243. package/src/components/RangeField/tests/__snapshots__/range-field-default.snap.png +0 -0
  244. package/src/components/RangeField/tests/__snapshots__/range-field-step.snap.png +0 -0
  245. package/src/components/RangeField/tests/__snapshots__/range-field-with-label.snap.png +0 -0
  246. package/src/components/SyAlert/tests/__snapshots__/sy-alert-closable.snap.png +0 -0
  247. package/src/components/SyAlert/tests/__snapshots__/sy-alert-error.snap.png +0 -0
  248. package/src/components/SyAlert/tests/__snapshots__/sy-alert-info.snap.png +0 -0
  249. package/src/components/SyAlert/tests/__snapshots__/sy-alert-success.snap.png +0 -0
  250. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-outlined.snap.png +0 -0
  251. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-tonal.snap.png +0 -0
  252. package/src/components/SyAlert/tests/__snapshots__/sy-alert-warning.snap.png +0 -0
  253. /package/src/components/RatingPicker/tests/{RatingPicker.a11y.spect.ts → RatingPicker.a11y.spec.ts} +0 -0
@@ -538,7 +538,7 @@ export const CustomColors: Story = {
538
538
  />
539
539
  <SyCheckBoxGroup
540
540
  v-model="value3"
541
- color="success"
541
+ color="onSuccessVariant"
542
542
  label="Couleur succès"
543
543
  :options="options"
544
544
  :show-success-messages="false"
@@ -552,7 +552,7 @@ export const CustomColors: Story = {
552
552
  />
553
553
  <SyCheckBoxGroup
554
554
  v-model="value5"
555
- color="warning"
555
+ color="onWarningVariant"
556
556
  label="Couleur avertissement"
557
557
  :options="options"
558
558
  :show-success-messages="false"
@@ -604,11 +604,22 @@ Le composant SyCheckBoxGroup peut être personnalisé avec différentes couleurs
604
604
  },
605
605
  template: `
606
606
  <div>
607
- <SyCheckBoxGroup v-model="value1" color="primary" label="Couleur primaire (par défaut)" :options="options" :show-success-messages="false" />
608
- <SyCheckBoxGroup v-model="value2" color="secondary" label="Couleur secondaire" :options="options" :show-success-messages="false" />
609
- <SyCheckBoxGroup v-model="value3" color="success" label="Couleur succès" :options="options" :show-success-messages="false" />
610
- <SyCheckBoxGroup v-model="value4" color="error" label="Couleur erreur" :options="options" :show-success-messages="false" />
611
- <SyCheckBoxGroup v-model="value5" color="warning" label="Couleur avertissement" :options="options" :show-success-messages="false" />
607
+ <SyCheckBoxGroup v-model="value1" color="primary" label="Couleur primaire (par défaut)"
608
+ :options="options" :show-success-messages="false"
609
+ />
610
+ <SyCheckBoxGroup v-model="value2" color="secondary" label="Couleur secondaire" :options="options"
611
+ :show-success-messages="false"
612
+ />
613
+ <SyCheckBoxGroup v-model="value3" color="onSuccessVariant" label="Couleur succès" :options="options"
614
+ :show-success-messages="false"
615
+ />
616
+ <SyCheckBoxGroup v-model="value4" color="error" label="Couleur erreur" :options="options"
617
+ :show-success-messages="false"
618
+ />
619
+ <SyCheckBoxGroup v-model="value5" color="onWarningVariant" label="Couleur avertissement"
620
+ :options="options"
621
+ :show-success-messages="false"
622
+ />
612
623
  </div>
613
624
  `,
614
625
  }),
@@ -298,7 +298,7 @@
298
298
  }
299
299
 
300
300
  .warning-field :deep(.v-messages__message) {
301
- color: rgb(var(--v-theme-warning)) !important;
301
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
302
302
  }
303
303
 
304
304
  .error-field :deep(.v-messages__message) {
@@ -310,7 +310,7 @@
310
310
  }
311
311
 
312
312
  .success-field :deep(.v-messages__message) {
313
- color: rgb(var(--v-theme-success)) !important;
313
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
314
314
  }
315
315
 
316
316
  :deep(.v-messages__message) {
@@ -605,9 +605,9 @@ export const CustomColors: Story = {
605
605
  code: `
606
606
  <div>
607
607
  <SyCheckbox v-model="checked1" label="Couleur primaire (par défaut)" />
608
- <SyCheckbox v-model="checked3" label="Couleur succès" color="success" />
608
+ <SyCheckbox v-model="checked3" label="Couleur succès" color="onSuccessVariant" />
609
609
  <SyCheckbox v-model="checked4" label="Couleur erreur" color="error" />
610
- <SyCheckbox v-model="checked5" label="Couleur avertissement" color="warning" />
610
+ <SyCheckbox v-model="checked5" label="Couleur avertissement" color="onWarningVariant" />
611
611
  </div>`,
612
612
  },
613
613
  ],
@@ -633,9 +633,9 @@ Le composant SyCheckbox peut être personnalisé avec différentes couleurs pour
633
633
  template: `
634
634
  <div>
635
635
  <SyCheckbox v-model="checked1" label="Couleur primaire (par défaut)" />
636
- <SyCheckbox v-model="checked3" label="Couleur succès" color="success" />
637
- <SyCheckbox v-model="checked4" label="Couleur erreur" color="error" />
638
- <SyCheckbox v-model="checked5" label="Couleur avertissement" color="warning" />
636
+ <SyCheckbox v-model="checked3" label="Couleur succès" color="onSuccessVariant"/>
637
+ <SyCheckbox v-model="checked4" label="Couleur erreur" color="error"/>
638
+ <SyCheckbox v-model="checked5" label="Couleur avertissement" color="onWarningVariant"/>
639
639
  </div>
640
640
  `,
641
641
  }),
@@ -784,9 +784,9 @@ Cette case à cocher utilise des règles de validation personnalisées et valide
784
784
  required
785
785
  display-asterisk
786
786
  />
787
- <VBtn
788
- type="submit"
789
- color="primary"
787
+ <VBtn
788
+ type="submit"
789
+ color="primary"
790
790
  class="mt-4"
791
791
  >
792
792
  Soumettre
@@ -216,10 +216,10 @@
216
216
  switch (props.color) {
217
217
  case 'error':
218
218
  return 'rgb(var(--v-theme-error))'
219
- case 'success':
220
- return 'rgb(var(--v-theme-success))'
221
- case 'warning':
222
- return 'rgb(var(--v-theme-warning))'
219
+ case 'onSuccessVariant':
220
+ return 'rgb(var(--v-theme-onSuccessVariant))'
221
+ case 'onWarningVariant':
222
+ return 'rgb(var(--v-theme-onWarningVariant))'
223
223
  case 'primary':
224
224
  return cnamSemanticTokens.colors.text.base
225
225
  default:
@@ -393,19 +393,19 @@
393
393
 
394
394
  <style scoped>
395
395
  .success-field :deep(.v-messages__message) {
396
- color: rgb(var(--v-theme-success)) !important;
396
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
397
397
  }
398
398
 
399
399
  .success-field :deep(.v-selection-control__input) {
400
- color: rgb(var(--v-theme-success));
400
+ color: rgb(var(--v-theme-onSuccessVariant));
401
401
  }
402
402
 
403
403
  .warning-field :deep(.v-messages__message) {
404
- color: rgb(var(--v-theme-borderWarning)) !important;
404
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
405
405
  }
406
406
 
407
407
  .warning-field :deep(.v-selection-control__input) {
408
- color: rgb(var(--v-theme-borderWarning));
408
+ color: rgb(var(--v-theme-onWarningVariant));
409
409
  }
410
410
 
411
411
  :deep(.v-input--dirty .v-selection-control__input) {
@@ -122,8 +122,8 @@ describe('SyCheckbox', () => {
122
122
  // Créer une règle de validation au format attendu par le composant
123
123
  const customRule = {
124
124
  type: 'custom',
125
- validator: (value: boolean) => value === true,
126
125
  options: {
126
+ validate: (value: boolean) => value === true,
127
127
  message: 'This checkbox must be checked',
128
128
  fieldIdentifier: 'Custom checkbox',
129
129
  },
@@ -65,12 +65,6 @@ Le composant `SyIcon` implémente automatiquement les bonnes pratiques d'accessi
65
65
  </div>
66
66
  </div>
67
67
 
68
- ## 🧪 Démonstration interactive
69
-
70
- La démonstration ci-dessous vous permet de voir comment les attributs d'accessibilité sont générés en fonction des propriétés du composant :
71
-
72
- <Canvas of={SyIconStoriesAccessibility.AccessibilityDemo} />
73
-
74
68
  ## ✅ Bonnes pratiques
75
69
 
76
70
  <div style={{ background: '#edf7ed', padding: '15px', borderRadius: '5px', borderLeft: '4px solid #4caf50', marginBottom: '20px' }}>
@@ -0,0 +1,107 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
2
+ import { createAccessibleIconAttributes, fixSvgAttributes } from '../iconUtils'
3
+
4
+ describe('createAccessibleIconAttributes', () => {
5
+ describe('icône décorative', () => {
6
+ it('retourne role="presentation" et aria-hidden="true"', () => {
7
+ const attrs = createAccessibleIconAttributes(true)
8
+ expect(attrs.role).toBe('presentation')
9
+ expect(attrs['aria-hidden']).toBe('true')
10
+ })
11
+
12
+ it('ignore le label quand décorative', () => {
13
+ const attrs = createAccessibleIconAttributes(true, 'Mon label')
14
+ expect(attrs.role).toBe('presentation')
15
+ expect(attrs['aria-hidden']).toBe('true')
16
+ })
17
+ })
18
+
19
+ describe('icône fonctionnelle', () => {
20
+ it('retourne role="img" et aria-hidden undefined', () => {
21
+ const attrs = createAccessibleIconAttributes(false)
22
+ expect(attrs.role).toBe('img')
23
+ expect(attrs['aria-hidden']).toBeUndefined()
24
+ })
25
+
26
+ it('retourne aria-label avec le label fourni', () => {
27
+ const attrs = createAccessibleIconAttributes(false, 'Fermer la modale')
28
+ expect(attrs['aria-label']).toBe('Fermer la modale')
29
+ })
30
+
31
+ it('retourne aria-label undefined si aucun label fourni', () => {
32
+ const attrs = createAccessibleIconAttributes(false)
33
+ expect(attrs['aria-label']).toBeUndefined()
34
+ })
35
+
36
+ it('retourne aria-label undefined si label est une chaîne vide', () => {
37
+ const attrs = createAccessibleIconAttributes(false, '')
38
+ expect(attrs['aria-label']).toBeUndefined()
39
+ })
40
+ })
41
+ })
42
+
43
+ describe('fixSvgAttributes', () => {
44
+ beforeEach(() => {
45
+ vi.useFakeTimers()
46
+ })
47
+
48
+ afterEach(() => {
49
+ vi.useRealTimers()
50
+ })
51
+
52
+ it('ne fait rien si element est null', () => {
53
+ expect(() => fixSvgAttributes(null, true)).not.toThrow()
54
+ vi.runAllTimers()
55
+ })
56
+
57
+ it('supprime l\'attribut role sur le SVG quand décorative', () => {
58
+ const container = document.createElement('div')
59
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
60
+ svg.setAttribute('role', 'img')
61
+ container.appendChild(svg)
62
+
63
+ fixSvgAttributes(container, true)
64
+ vi.runAllTimers()
65
+
66
+ expect(svg.hasAttribute('role')).toBe(false)
67
+ })
68
+
69
+ it('supprime aria-hidden sur le SVG quand fonctionnelle', () => {
70
+ const container = document.createElement('div')
71
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
72
+ svg.setAttribute('aria-hidden', 'true')
73
+ container.appendChild(svg)
74
+
75
+ fixSvgAttributes(container, false)
76
+ vi.runAllTimers()
77
+
78
+ expect(svg.hasAttribute('aria-hidden')).toBe(false)
79
+ })
80
+
81
+ it('ne fait rien si aucun SVG dans l\'élément', () => {
82
+ const container = document.createElement('div')
83
+ container.appendChild(document.createElement('span'))
84
+
85
+ expect(() => {
86
+ fixSvgAttributes(container, true)
87
+ vi.runAllTimers()
88
+ }).not.toThrow()
89
+ })
90
+
91
+ it('agit de manière asynchrone (setTimeout)', () => {
92
+ const container = document.createElement('div')
93
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
94
+ svg.setAttribute('role', 'img')
95
+ container.appendChild(svg)
96
+
97
+ fixSvgAttributes(container, true)
98
+
99
+ // Avant le tick : l'attribut est encore présent
100
+ expect(svg.hasAttribute('role')).toBe(true)
101
+
102
+ vi.runAllTimers()
103
+
104
+ // Après le tick : supprimé
105
+ expect(svg.hasAttribute('role')).toBe(false)
106
+ })
107
+ })
@@ -5,7 +5,7 @@ import * as SyRadioGroupStories from "./SyRadioGroup.stories";
5
5
 
6
6
  <div className="header">
7
7
  <h1>SyRadioGroup</h1>
8
- <p>Le composant `SyRadioGroup` est une case à cocher qui étend le composant `VRadio` de Vuetify, conforme au style du Design System et qui respecte les règles d'accessibilité <abbr title="Référentiel Général d'Amélioration de l'Accessibilité">RGAA</abbr>.</p>
8
+ <p>Le composant `SyRadioGroup` est un groupe de boutons radio qui étend le composant `VRadio` de Vuetify, conforme au style du Design System et qui respecte les règles d'accessibilité <abbr title="Référentiel Général d'Amélioration de l'Accessibilité">RGAA</abbr>.</p>
9
9
  </div>
10
10
 
11
11
  Il étend les fonctionnalités de base de Vuetify avec :
@@ -28,7 +28,7 @@ Le composant supporte trois types de validation :
28
28
 
29
29
  ### États visuels :
30
30
 
31
- La case à cocher adapte automatiquement son apparence selon son état :
31
+ Le groupe de boutons radio adapte automatiquement son apparence selon son état :
32
32
  - Rouge pour les erreurs
33
33
  - Orange pour les avertissements
34
34
  - Vert pour les succès