@cnamts/synapse 1.0.24 → 1.0.26

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 (493) hide show
  1. package/README.md +27 -5
  2. package/dist/{AutocompleteFilter-BWLR3U7W.js → AutocompleteFilter-BPR-a55G.js} +1 -1
  3. package/dist/{DateFilter-BpwFexzi.js → DateFilter-CknrJWs2.js} +2 -2
  4. package/dist/{NumberFilter-Bz_NTdX9.js → NumberFilter-DJ-yNlzv.js} +1 -1
  5. package/dist/{PeriodFilter-DX_wy9g-.js → PeriodFilter-CiB5Oa9Z.js} +1 -1
  6. package/dist/{SelectFilter-xqiPtPgX.js → SelectFilter-EiafX97M.js} +2 -2
  7. package/dist/{TextFilter-BBl3JFqK.js → TextFilter-BzOmpdxj.js} +1 -1
  8. package/dist/{apLightTheme-D1P4jcD0.js → apLightTheme-DS0Uy44H.js} +446 -723
  9. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +14 -8
  10. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +60 -289
  11. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +1 -0
  12. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +4 -0
  13. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +1 -0
  14. package/dist/components/Customs/SyTabs/SyTabs.d.ts +13 -11
  15. package/dist/components/Customs/SyTextField/SyTextField.d.ts +0 -2
  16. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +54 -73
  17. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +31 -40
  18. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +9 -14
  19. package/dist/components/DatePicker/composables/useDatePickerState.d.ts +4 -3
  20. package/dist/components/DatePicker/composables/useDateTextField.d.ts +2 -2
  21. package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +2 -2
  22. package/dist/components/DatePicker/types.d.ts +1 -2
  23. package/dist/components/FileList/FileList.d.ts +6 -0
  24. package/dist/components/FilterSideBar/FilterSideBar.d.ts +2 -0
  25. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +13 -13
  26. package/dist/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +3 -3
  27. package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +1 -0
  28. package/dist/components/MonthPicker/MonthPicker.d.ts +2 -7
  29. package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +2 -7
  30. package/dist/components/NirField/NirField.d.ts +12 -20
  31. package/dist/components/NirField/useNirValidation.d.ts +6 -2
  32. package/dist/components/PeriodField/PeriodField.d.ts +110 -150
  33. package/dist/components/PhoneField/PhoneField.d.ts +12 -7
  34. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +0 -3
  35. package/dist/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +3 -1
  36. package/dist/components/RatingPicker/NumberPicker/NumberPicker.d.ts +4 -3
  37. package/dist/components/RatingPicker/RatingPicker.d.ts +18 -5
  38. package/dist/components/RatingPicker/StarsPicker/StarsPicker.d.ts +3 -1
  39. package/dist/components/RatingPicker/tests/RatingPicker.a11y.spect.d.ts +1 -0
  40. package/dist/components/RatingPicker/useRatingFocus.d.ts +18 -0
  41. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -4
  42. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -4
  43. package/dist/components/Tables/common/SyTablePagination.d.ts +154 -364
  44. package/dist/components/Tables/common/TableHeader.d.ts +6 -1
  45. package/dist/components/Tables/common/filters/DateFilter.d.ts +4 -4
  46. package/dist/components/Tables/common/locales.d.ts +3 -0
  47. package/dist/components/Tables/common/types.d.ts +2 -0
  48. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +1 -0
  49. package/dist/composables/date/useDateInitializationDayjs.d.ts +3 -1
  50. package/dist/composables/unifyValidation/documentationValidationProps.d.ts +230 -0
  51. package/dist/composables/unifyValidation/useCustomValidation.d.ts +3 -1
  52. package/dist/composables/unifyValidation/useValidation.d.ts +12 -6
  53. package/dist/composables/unifyValidation/useVuetifyValidation.d.ts +1 -1
  54. package/dist/composables/validation/useValidation.d.ts +6 -1
  55. package/dist/design-system-v3.js +2 -2
  56. package/dist/designTokens/tokens/amelipro/apColors.d.ts +10 -10
  57. package/dist/designTokens/tokens/amelipro/apColors2026.d.ts +1 -2
  58. package/dist/designTokens/tokens/amelipro/apContextual.d.ts +44 -0
  59. package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +2 -0
  60. package/dist/designTokens/tokens/amelipro/apSemantic.d.ts +1 -1
  61. package/dist/designTokens/tokens/baseColors.d.ts +127 -0
  62. package/dist/designTokens/tokens/baseContextualTokens.d.ts +50 -0
  63. package/dist/designTokens/tokens/cnam/cnamColors.d.ts +10 -10
  64. package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +2 -0
  65. package/dist/designTokens/tokens/cnam/cnamSemantic.d.ts +1 -1
  66. package/dist/designTokens/tokens/pa/paColors.d.ts +1 -166
  67. package/dist/designTokens/tokens/pa/paSemantic.d.ts +1 -1
  68. package/dist/designTokens/utils/buildColorClassMap.d.ts +12 -0
  69. package/dist/designTokens/utils/createFlattenTheme.d.ts +1 -3
  70. package/dist/designTokens/utils/index.d.ts +2 -2
  71. package/dist/{main-BtTqyn4z.js → main-BsJ9ec3i.js} +16021 -15715
  72. package/dist/synapse.css +1 -1
  73. package/dist/utils/functions/classToHex.d.ts +1 -1
  74. package/dist/utils/functions/createHexResolver.d.ts +16 -0
  75. package/dist/vuetifyConfig.js +113 -152
  76. package/package.json +35 -23
  77. package/src/assets/amelipro/apTokens2026.scss +5 -5
  78. package/src/assets/overrides/_breakpoints.scss +25 -0
  79. package/src/assets/overrides/_btns.scss +0 -2
  80. package/src/assets/overrides/_forms.scss +1 -3
  81. package/src/assets/overrides/_icons.scss +5 -22
  82. package/src/assets/overrides/_otp.scss +40 -0
  83. package/src/assets/overrides/_tables.scss +11 -20
  84. package/src/assets/overrides/_tooltips.scss +17 -7
  85. package/src/assets/overrides/_typography.scss +35 -37
  86. package/src/assets/overrides/_utilities.scss +43 -47
  87. package/src/assets/themes.scss +1 -0
  88. package/src/components/Accordion/Accordion.vue +2 -0
  89. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +20 -20
  90. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +12 -14
  91. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +4 -6
  92. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.vue +5 -5
  93. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +4 -6
  94. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.vue +4 -6
  95. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.vue +4 -6
  96. package/src/components/Amelipro/AmeliproBreadcrumb/AmeliproBreadcrumb.vue +1 -3
  97. package/src/components/Amelipro/AmeliproBtn/AmeliproBtn.vue +4 -6
  98. package/src/components/Amelipro/AmeliproCallback/AmeliproCallback.vue +2 -2
  99. package/src/components/Amelipro/AmeliproCard/AmeliproCard.vue +31 -31
  100. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.vue +5 -7
  101. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.vue +13 -15
  102. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +23 -23
  103. package/src/components/Amelipro/AmeliproChips/AmeliproChips.vue +1 -3
  104. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +17 -12
  105. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +2 -2
  106. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.vue +4 -6
  107. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +13 -13
  108. package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.vue +4 -2
  109. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +4 -4
  110. package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.vue +5 -7
  111. package/src/components/Amelipro/AmeliproDisclosure/AmeliproDisclosure.vue +1 -3
  112. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +2 -4
  113. package/src/components/Amelipro/AmeliproFilePreview/AmeliproFilePreview.vue +4 -6
  114. package/src/components/Amelipro/AmeliproFilters/AmeliproFilters.vue +13 -13
  115. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +3 -5
  116. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +1 -3
  117. package/src/components/Amelipro/AmeliproHeader/AmeliproHeader.vue +2 -4
  118. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.vue +1 -3
  119. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.vue +20 -16
  120. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +1 -1
  121. package/src/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.vue +2 -4
  122. package/src/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.vue +5 -7
  123. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.vue +6 -8
  124. package/src/components/Amelipro/AmeliproMailTile/AmeliproMailTile.vue +14 -14
  125. package/src/components/Amelipro/AmeliproMenu/AmeliproMenu.vue +11 -13
  126. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenu.vue +2 -4
  127. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingLayout.vue +8 -8
  128. package/src/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.vue +40 -40
  129. package/src/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.vue +27 -27
  130. package/src/components/Amelipro/AmeliproOnboarding/AmeliproOnboarding.vue +3 -5
  131. package/src/components/Amelipro/AmeliproPageLayout/AmeliproPageLayout.vue +2 -4
  132. package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.vue +2 -4
  133. package/src/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.vue +3 -5
  134. package/src/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.vue +1 -3
  135. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +2 -4
  136. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.vue +4 -4
  137. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +1 -3
  138. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +3 -5
  139. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +3 -5
  140. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +23 -23
  141. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +4 -6
  142. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.vue +12 -22
  143. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.vue +10 -12
  144. package/src/components/Amelipro/AmeliproStepper/AmeliproStepper.vue +17 -17
  145. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +8 -10
  146. package/src/components/Amelipro/AmeliproTabs/AmeliproTabBtn/AmeliproTabBtn.vue +6 -8
  147. package/src/components/Amelipro/AmeliproTabs/AmeliproTabs.vue +4 -4
  148. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.vue +4 -6
  149. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.vue +7 -9
  150. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.vue +3 -5
  151. package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.vue +0 -2
  152. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.vue +6 -6
  153. package/src/components/Amelipro/ServiceMenu/ServiceMenu.vue +2 -2
  154. package/src/components/Amelipro/StructureMenu/StructureBtn/StructureBtn.vue +4 -4
  155. package/src/components/Amelipro/StructureMenu/StructureItem/StructureItem.vue +4 -6
  156. package/src/components/Amelipro/StructureMenu/StructureMenu.vue +2 -2
  157. package/src/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.vue +2 -2
  158. package/src/components/Amelipro/UserMenu/UserMenu.vue +1 -3
  159. package/src/components/BackBtn/tests/BackBtn.visual.cy.ts +43 -0
  160. package/src/components/BackBtn/tests/__snapshots__/back-btn-custom-bg.snap.png +0 -0
  161. package/src/components/BackBtn/tests/__snapshots__/back-btn-dark-mode.snap.png +0 -0
  162. package/src/components/BackBtn/tests/__snapshots__/back-btn-default.snap.png +0 -0
  163. package/src/components/BackBtn/tests/__snapshots__/back-btn-no-icon.snap.png +0 -0
  164. package/src/components/Captcha/Captcha.vue +1 -3
  165. package/src/components/ChipList/ChipList.vue +14 -16
  166. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -3
  167. package/src/components/CookiesSelection/CookiesSelection.vue +2 -1
  168. package/src/components/CopyBtn/CopyBtn.vue +10 -3
  169. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +17 -17
  170. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +31 -0
  171. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +66 -0
  172. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +8 -4
  173. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +18 -0
  174. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +66 -0
  175. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.vue +4 -6
  176. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +414 -135
  177. package/src/components/Customs/Selects/SySelect/SySelect.vue +502 -257
  178. package/src/components/Customs/Selects/SySelect/accessibilite/Accessibility.mdx +199 -269
  179. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +278 -4
  180. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +3 -3
  181. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +5 -0
  182. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +52 -2
  183. package/src/components/Customs/SyCheckbox/accessibilite/Accessibility.mdx +18 -3
  184. package/src/components/Customs/SyPagination/SyPagination.vue +0 -2
  185. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +23 -5
  186. package/src/components/Customs/SyTabs/SyTabs.mdx +0 -58
  187. package/src/components/Customs/SyTabs/SyTabs.stories.ts +34 -35
  188. package/src/components/Customs/SyTabs/SyTabs.vue +87 -67
  189. package/src/components/Customs/SyTabs/accessibilite/Accessibility.mdx +83 -23
  190. package/src/components/Customs/SyTabs/config.ts +3 -3
  191. package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +88 -0
  192. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +46 -1
  193. package/src/components/Customs/SyTextField/SyTextField.stories.ts +21 -41
  194. package/src/components/Customs/SyTextField/SyTextField.vue +34 -9
  195. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +1 -1
  196. package/src/components/DatePicker/CalendarMode/DatePicker.vue +29 -28
  197. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1 -1
  198. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +28 -23
  199. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +24 -1
  200. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +1 -1
  201. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +65 -33
  202. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +1 -1
  203. package/src/components/DatePicker/composables/tests/useDatePickerState.spec.ts +53 -0
  204. package/src/components/DatePicker/composables/useDatePickerState.ts +56 -13
  205. package/src/components/DatePicker/composables/useDateRangeInput.ts +2 -1
  206. package/src/components/DatePicker/composables/useDateSelection.ts +2 -1
  207. package/src/components/DatePicker/composables/useDateTextField.ts +2 -3
  208. package/src/components/DatePicker/composables/useInputBlurHandler.ts +2 -2
  209. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +9 -8
  210. package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +1 -1
  211. package/src/components/DatePicker/types.ts +1 -2
  212. package/src/components/DialogBox/DialogBox.stories.ts +8 -8
  213. package/src/components/DialogBox/DialogBox.vue +3 -5
  214. package/src/components/DialogBox/accessibilite/Accessibility.mdx +86 -22
  215. package/src/components/DialogBox/tests/DialogBox.visual.cy.ts +76 -0
  216. package/src/components/DialogBox/tests/__snapshots__/dialog-box-custom-texts.snap.png +0 -0
  217. package/src/components/DialogBox/tests/__snapshots__/dialog-box-default.snap.png +0 -0
  218. package/src/components/DialogBox/tests/__snapshots__/dialog-box-no-actions.snap.png +0 -0
  219. package/src/components/FileList/FileList.vue +9 -2
  220. package/src/components/FileList/UploadItem/UploadItem.vue +11 -13
  221. package/src/components/FileList/tests/FileList.spec.ts +47 -0
  222. package/src/components/FileUpload/FileUpload.vue +3 -5
  223. package/src/components/FileUpload/FileUploadContent.vue +3 -5
  224. package/src/components/FilterInline/FilterInline.vue +1 -3
  225. package/src/components/FilterSideBar/FilterSideBar.mdx +44 -1
  226. package/src/components/FilterSideBar/FilterSideBar.stories.ts +105 -1
  227. package/src/components/FilterSideBar/FilterSideBar.vue +9 -1
  228. package/src/components/FilterSideBar/tests/FilterSideBar.a11y.spec.ts +54 -1
  229. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +42 -0
  230. package/src/components/FooterBar/FooterBar.vue +9 -13
  231. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +1 -1
  232. package/src/components/HeaderBar/HeaderBar.vue +2 -3
  233. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +2 -3
  234. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +2 -3
  235. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.vue +0 -1
  236. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +8 -9
  237. package/src/components/HeaderBar/HeaderBurgerMenu/menu.scss +0 -8
  238. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.visual.cy.ts +196 -0
  239. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated-submenu-open.snap.png +0 -0
  240. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated.snap.png +0 -0
  241. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +0 -1
  242. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +6 -7
  243. package/src/components/HeaderBar/tests/HeaderBar.visual.cy.ts +81 -0
  244. package/src/components/HeaderBar/tests/__snapshots__/header-bar-custom-width.snap.png +0 -0
  245. package/src/components/HeaderBar/tests/__snapshots__/header-bar-default.snap.png +0 -0
  246. package/src/components/HeaderBar/tests/__snapshots__/header-bar-no-sticky.snap.png +0 -0
  247. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-prepend.snap.png +0 -0
  248. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-side.snap.png +0 -0
  249. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-subtitle.snap.png +0 -0
  250. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +12 -3
  251. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +15 -8
  252. package/src/components/HeaderToolbar/HeaderToolbar.vue +6 -7
  253. package/src/components/LangBtn/LangBtn.vue +4 -5
  254. package/src/components/Logo/tests/Logo.visual.cy.ts +57 -0
  255. package/src/components/Logo/tests/__snapshots__/logo-avatar.snap.png +0 -0
  256. package/src/components/Logo/tests/__snapshots__/logo-dark.snap.png +0 -0
  257. package/src/components/Logo/tests/__snapshots__/logo-default.snap.png +0 -0
  258. package/src/components/Logo/tests/__snapshots__/logo-no-organism.snap.png +0 -0
  259. package/src/components/Logo/tests/__snapshots__/logo-no-signature.snap.png +0 -0
  260. package/src/components/Logo/tests/__snapshots__/logo-risque-pro.snap.png +0 -0
  261. package/src/components/LogoBrandSection/LogoBrandSection.vue +2 -2
  262. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +1 -1
  263. package/src/components/NirField/NirField.stories.ts +2 -2
  264. package/src/components/NirField/NirField.vue +3 -5
  265. package/src/components/NirField/accessibilite/Accessibility.mdx +100 -5
  266. package/src/components/NirField/tests/NirField.spec.ts +118 -0
  267. package/src/components/NirField/tests/useNirValidation.spec.ts +449 -0
  268. package/src/components/NirField/useNirValidation.ts +38 -32
  269. package/src/components/NotificationBar/Notification/Notification.vue +7 -9
  270. package/src/components/NotificationBar/NotificationBar.vue +1 -3
  271. package/src/components/PaginatedTable/PaginatedTable.vue +3 -4
  272. package/src/components/PaginatedTable/Pagination.vue +4 -6
  273. package/src/components/PasswordField/PasswordField.vue +15 -13
  274. package/src/components/PhoneField/PhoneField.vue +7 -5
  275. package/src/components/RangeField/RangeSlider/RangeSlider.vue +11 -20
  276. package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -1
  277. package/src/components/RangeField/tests/RangeField.visual.cy.ts +65 -0
  278. package/src/components/RangeField/tests/__snapshots__/range-field-custom-bg.snap.png +0 -0
  279. package/src/components/RangeField/tests/__snapshots__/range-field-custom-range.snap.png +0 -0
  280. package/src/components/RangeField/tests/__snapshots__/range-field-default.snap.png +0 -0
  281. package/src/components/RangeField/tests/__snapshots__/range-field-step.snap.png +0 -0
  282. package/src/components/RangeField/tests/__snapshots__/range-field-with-label.snap.png +0 -0
  283. package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +38 -56
  284. package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +5 -0
  285. package/src/components/RatingPicker/NumberPicker/NumberPicker.vue +48 -53
  286. package/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.ts +2 -1
  287. package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +40 -13
  288. package/src/components/RatingPicker/RatingPicker.stories.ts +65 -88
  289. package/src/components/RatingPicker/RatingPicker.vue +71 -15
  290. package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +31 -42
  291. package/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.ts +1 -1
  292. package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +5 -0
  293. package/src/components/RatingPicker/accessibilite/Accessibility.mdx +137 -9
  294. package/src/components/RatingPicker/tests/RatingPicker.a11y.spect.ts +123 -0
  295. package/src/components/RatingPicker/tests/RatingPicker.spec.ts +3 -2
  296. package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +40 -11
  297. package/src/components/RatingPicker/useRatingFocus.ts +97 -0
  298. package/src/components/SearchListField/SearchListField.vue +0 -2
  299. package/src/components/SkipLink/SkipLink.vue +2 -4
  300. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +6 -6
  301. package/src/components/SubHeader/SubHeader.vue +1 -1
  302. package/src/components/SyAlert/SyAlert.vue +7 -9
  303. package/src/components/SyAlert/tests/SyAlert.visual.cy.ts +46 -0
  304. package/src/components/SyAlert/tests/__snapshots__/sy-alert-closable.snap.png +0 -0
  305. package/src/components/SyAlert/tests/__snapshots__/sy-alert-error.snap.png +0 -0
  306. package/src/components/SyAlert/tests/__snapshots__/sy-alert-info.snap.png +0 -0
  307. package/src/components/SyAlert/tests/__snapshots__/sy-alert-success.snap.png +0 -0
  308. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-outlined.snap.png +0 -0
  309. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-tonal.snap.png +0 -0
  310. package/src/components/SyAlert/tests/__snapshots__/sy-alert-warning.snap.png +0 -0
  311. package/src/components/SyBtnMenu/SyBtnMenu.vue +2 -4
  312. package/src/components/SyTextArea/SyTextArea.vue +32 -1
  313. package/src/components/TableToolbar/TableToolbar.vue +6 -8
  314. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +166 -0
  315. package/src/components/Tables/SyServerTable/SyServerTable.vue +10 -8
  316. package/src/components/Tables/SyServerTable/tests/SyServerTable.a11y.spec.ts +23 -0
  317. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +268 -0
  318. package/src/components/Tables/SyTable/SyTable.stories.ts +104 -0
  319. package/src/components/Tables/SyTable/SyTable.vue +10 -8
  320. package/src/components/Tables/SyTable/tests/SyTable.a11y.spec.ts +22 -0
  321. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +274 -0
  322. package/src/components/Tables/common/SyTableFilter.vue +31 -6
  323. package/src/components/Tables/common/SyTablePagination.vue +143 -19
  324. package/src/components/Tables/common/TableHeader.vue +41 -4
  325. package/src/components/Tables/common/filters/DateFilter.vue +2 -2
  326. package/src/components/Tables/common/filters/SelectFilter.vue +1 -1
  327. package/src/components/Tables/common/locales.ts +3 -0
  328. package/src/components/Tables/common/tableStyles.scss +16 -19
  329. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +18 -0
  330. package/src/components/Tables/common/tests/TableHeader.spec.ts +39 -0
  331. package/src/components/Tables/common/types.ts +2 -0
  332. package/src/components/Tables/common/useTableHeaders.ts +49 -27
  333. package/src/components/UploadWorkflow/UploadWorkflow.vue +1 -0
  334. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +23 -0
  335. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +66 -0
  336. package/src/components/UploadWorkflow/useFileList.ts +3 -0
  337. package/src/components/UserMenuBtn/UserMenuBtn.vue +1 -3
  338. package/src/composables/date/tests/useDateFormatDayjs.spec.ts +81 -0
  339. package/src/composables/date/tests/{useDateInitialization.spec.ts → useDateInitializationDayjs.spec.ts} +39 -3
  340. package/src/composables/date/useDateInitializationDayjs.ts +4 -1
  341. package/src/composables/unifyValidation/documentationValidationProps.ts +235 -0
  342. package/src/composables/unifyValidation/tests/useCustomValidation.spec.ts +2 -1
  343. package/src/composables/unifyValidation/tests/useValidation.spec.ts +22 -0
  344. package/src/composables/unifyValidation/useCustomValidation.ts +16 -4
  345. package/src/composables/unifyValidation/useValidation.ts +46 -15
  346. package/src/composables/unifyValidation/useVuetifyValidation.ts +2 -2
  347. package/src/composables/useFormFieldErrorHandling.ts +4 -1
  348. package/src/composables/validation/tests/useValidation.spec.ts +2 -2
  349. package/src/composables/validation/useValidation.ts +32 -4
  350. package/src/composantsVuetify/VBreadcrumbs/VBreadcrumbs.mdx +28 -0
  351. package/src/composantsVuetify/VBreadcrumbs/v-breadcrumbs.stories.ts +108 -0
  352. package/src/composantsVuetify/VCard/VCard.mdx +59 -0
  353. package/src/composantsVuetify/VCard/v-card.stories.ts +279 -0
  354. package/src/composantsVuetify/VOtpInput/VOtpInput.mdx +39 -0
  355. package/src/composantsVuetify/VOtpInput/v-otp-input.stories.ts +56 -0
  356. package/src/composantsVuetify/VSkeletonLoader/VSkeletonLoader.mdx +42 -0
  357. package/src/composantsVuetify/VSkeletonLoader/v-skeleton-loader.stories.ts +77 -0
  358. package/src/composantsVuetify/VSwitch/VSwitch.mdx +47 -0
  359. package/src/composantsVuetify/VSwitch/v-switch.stories.ts +166 -0
  360. package/src/designTokens/tests/buildColorClassMap.spec.ts +31 -0
  361. package/src/designTokens/tests/generateScssTokens.spec.ts +12 -0
  362. package/src/designTokens/tests/themeUtils.spec.ts +53 -0
  363. package/src/designTokens/tokens/amelipro/apColors.ts +8 -130
  364. package/src/designTokens/tokens/amelipro/apColors2026.ts +3 -15
  365. package/src/designTokens/tokens/amelipro/apContextual.ts +55 -47
  366. package/src/designTokens/tokens/amelipro/apLightTheme.ts +4 -1
  367. package/src/designTokens/tokens/amelipro/apSemantic.ts +1 -1
  368. package/src/designTokens/tokens/baseColors.ts +129 -0
  369. package/src/designTokens/tokens/baseContextualTokens.ts +52 -0
  370. package/src/designTokens/tokens/cnam/cnamColors.ts +3 -125
  371. package/src/designTokens/tokens/cnam/cnamContextual.ts +4 -48
  372. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +4 -1
  373. package/src/designTokens/tokens/cnam/cnamSemantic.ts +1 -1
  374. package/src/designTokens/tokens/pa/paColors.ts +2 -166
  375. package/src/designTokens/tokens/pa/paContextual.ts +3 -48
  376. package/src/designTokens/tokens/pa/paLightTheme.ts +1 -1
  377. package/src/designTokens/tokens/pa/paSemantic.ts +2 -2
  378. package/src/designTokens/utils/buildColorClassMap.ts +34 -0
  379. package/src/designTokens/utils/convertSemanticsToken.ts +8 -11
  380. package/src/designTokens/utils/createFlattenTheme.ts +15 -7
  381. package/src/designTokens/utils/index.ts +2 -2
  382. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +61 -91
  383. package/src/stories/Accessibilite/AuditDesignSystem.mdx +5 -19
  384. package/src/stories/Accessibilite/AuditEtContreAudit/Exemptions-derogations.mdx +1 -1
  385. package/src/stories/Accessibilite/AuditEtContreAudit/Introduction.mdx +11 -8
  386. package/src/stories/Accessibilite/AuditEtContreAudit/RGAA.mdx +6 -7
  387. package/src/stories/Accessibilite/DesignSystem/Avancement.mdx +433 -0
  388. package/src/stories/Accessibilite/DesignSystem/a11y-status.json +692 -0
  389. package/src/stories/Accessibilite/Introduction.mdx +30 -30
  390. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +176 -79
  391. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +67 -19
  392. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +78 -50
  393. package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +23 -49
  394. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.stories.ts +6 -0
  395. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/Utilisation.mdx +7 -19
  396. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +55 -67
  397. package/src/stories/Components/Components.stories.ts +92 -4
  398. package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +4 -9
  399. package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +28 -0
  400. package/src/stories/Demarrer/Releases.stories.ts +48 -5
  401. package/src/stories/DesignTokens/ColorDisplay.vue +6 -5
  402. package/src/stories/DesignTokens/ColorIntegrationExample.vue +2 -4
  403. package/src/stories/DesignTokens/colors.stories.ts +5 -6
  404. package/src/stories/GuideDuDev/CreateVuetifyInstance.mdx +95 -0
  405. package/src/stories/GuideDuDev/Theme.mdx +36 -26
  406. package/src/stories/GuideDuDev/moduleDeNotification.mdx +3 -2
  407. package/src/stories/styles/accessibility-guide.css +3 -3
  408. package/src/utils/functions/classToHex.ts +6 -34
  409. package/src/utils/functions/createHexResolver.ts +45 -0
  410. package/src/utils/functions/tests/classToHex.spec.ts +36 -0
  411. package/src/utils/functions/tests/convertToHex.spec.ts +31 -0
  412. package/src/utils/functions/tests/createHexResolver.spec.ts +66 -0
  413. package/src/utils/functions/tests/isCssColor.spec.ts +48 -0
  414. package/dist/AutocompleteFilter-D9jzRzAL.cjs +0 -1
  415. package/dist/DateFilter-DTUl8hb1.cjs +0 -1
  416. package/dist/NumberFilter-MAEojdk0.cjs +0 -1
  417. package/dist/PeriodFilter-CC4WgIhl.cjs +0 -1
  418. package/dist/SelectFilter-BR3fvl-a.cjs +0 -1
  419. package/dist/TextFilter-CCfYFl5F.cjs +0 -1
  420. package/dist/apLightTheme-CFSRrjv2.cjs +0 -1
  421. package/dist/composables/date/useDateFormat.d.ts +0 -26
  422. package/dist/composables/date/useDateInitialization.d.ts +0 -18
  423. package/dist/design-system-v3.umd.cjs +0 -1
  424. package/dist/designTokens/utils/convertGaps.d.ts +0 -5
  425. package/dist/main-C1e3eoxd.cjs +0 -1067
  426. package/dist/tooth-11-D3sLWv2n.cjs +0 -1
  427. package/dist/tooth-12-CXrLuH03.cjs +0 -1
  428. package/dist/tooth-13-BSfo5fpT.cjs +0 -1
  429. package/dist/tooth-14-DMzulx0h.cjs +0 -1
  430. package/dist/tooth-15-BKRFVi-9.cjs +0 -1
  431. package/dist/tooth-16-CpuxAbuM.cjs +0 -1
  432. package/dist/tooth-17-BPoahUdg.cjs +0 -1
  433. package/dist/tooth-18-DhHJz8sy.cjs +0 -1
  434. package/dist/tooth-21-Dgd5hn_X.cjs +0 -1
  435. package/dist/tooth-22-C2Tn19sB.cjs +0 -1
  436. package/dist/tooth-23-C9uaaSGb.cjs +0 -1
  437. package/dist/tooth-24-BrK9UGpf.cjs +0 -1
  438. package/dist/tooth-25-CE_EfGNp.cjs +0 -1
  439. package/dist/tooth-26-Ctv4i9Fy.cjs +0 -1
  440. package/dist/tooth-27-C5J7JkWM.cjs +0 -1
  441. package/dist/tooth-28-Z9oWqjo0.cjs +0 -1
  442. package/dist/tooth-31-BrYqmkTi.cjs +0 -1
  443. package/dist/tooth-32-BNNR0oCZ.cjs +0 -1
  444. package/dist/tooth-33-DuxvqO2J.cjs +0 -1
  445. package/dist/tooth-34-BCSCXMB6.cjs +0 -1
  446. package/dist/tooth-35-BLUXkX88.cjs +0 -1
  447. package/dist/tooth-36-IrKHYqlA.cjs +0 -1
  448. package/dist/tooth-37-BYqpdMwo.cjs +0 -1
  449. package/dist/tooth-38-B_eNXXdu.cjs +0 -1
  450. package/dist/tooth-41-Ddva4Ot8.cjs +0 -1
  451. package/dist/tooth-42-szcDqlM0.cjs +0 -1
  452. package/dist/tooth-43-B3ka6rQm.cjs +0 -1
  453. package/dist/tooth-44-CazyQucj.cjs +0 -1
  454. package/dist/tooth-45-B4HQtc8n.cjs +0 -1
  455. package/dist/tooth-46-BPM40gbG.cjs +0 -1
  456. package/dist/tooth-47-Dvr20dlh.cjs +0 -1
  457. package/dist/tooth-48-Bd8ljGsF.cjs +0 -1
  458. package/dist/tooth-51-OBpwCOF3.cjs +0 -1
  459. package/dist/tooth-52-aKxyHcmq.cjs +0 -1
  460. package/dist/tooth-53-vCwJjTOc.cjs +0 -1
  461. package/dist/tooth-54-DsWu2iFy.cjs +0 -1
  462. package/dist/tooth-55-BxC1X2Dn.cjs +0 -1
  463. package/dist/tooth-61-BbLvxMQi.cjs +0 -1
  464. package/dist/tooth-62-CmTkWczP.cjs +0 -1
  465. package/dist/tooth-63-DI7l_2qI.cjs +0 -1
  466. package/dist/tooth-64-B21sOsJh.cjs +0 -1
  467. package/dist/tooth-65-D2ZC2VEr.cjs +0 -1
  468. package/dist/tooth-71-D473PPO5.cjs +0 -1
  469. package/dist/tooth-72-Drh1wnNu.cjs +0 -1
  470. package/dist/tooth-73-DzlwYI23.cjs +0 -1
  471. package/dist/tooth-74-8aGvcZPg.cjs +0 -1
  472. package/dist/tooth-75-BFK7At_r.cjs +0 -1
  473. package/dist/tooth-81-BZmR-I0M.cjs +0 -1
  474. package/dist/tooth-82-euVfUUZV.cjs +0 -1
  475. package/dist/tooth-83-KV010j64.cjs +0 -1
  476. package/dist/tooth-84-BBg1RjhZ.cjs +0 -1
  477. package/dist/tooth-85-Cr-kc1wM.cjs +0 -1
  478. package/dist/vuetifyConfig.umd.cjs +0 -1
  479. package/src/assets/apTokens.scss +0 -343
  480. package/src/assets/overrides/_container.scss +0 -36
  481. package/src/assets/tokens.scss +0 -388
  482. package/src/composables/date/tests/useDateFormat.spec.ts +0 -67
  483. package/src/composables/date/useDateFormat.ts +0 -110
  484. package/src/composables/date/useDateInitialization.ts +0 -92
  485. package/src/designTokens/apColors.md +0 -66
  486. package/src/designTokens/cnamColors.md +0 -193
  487. package/src/designTokens/paColors.md +0 -66
  488. package/src/designTokens/tokens/json/contextual-tokens.json +0 -156
  489. package/src/designTokens/tokens/json/primitives.json +0 -209
  490. package/src/designTokens/tokens/json/semantic.json +0 -120
  491. package/src/designTokens/utils/convertGaps.ts +0 -11
  492. package/src/stories/Accessibilite/Avancement/Avancement.mdx +0 -533
  493. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +0 -306
@@ -1,7 +1,23 @@
1
1
  import { ref, computed } from 'vue'
2
2
  import { useFieldValidation, type RuleOptions, type ValidationResult as FieldValidationResult } from '../rules/useFieldValidation'
3
3
 
4
- export type BuiltInRuleType = 'required' | 'email' | 'minLength' | 'maxLength'
4
+ type builtInDateRuleType =
5
+ 'noWeekend'
6
+ | 'noBeforeToday'
7
+ | 'notAfterToday'
8
+ | 'notBeforeDate'
9
+ | 'notAfterDate'
10
+ | 'dateExact'
11
+ | 'isHolidayDay'
12
+
13
+ type BuiltInNumberRuleType = 'min' | 'max'
14
+ type BuiltInStringRuleType = 'minLength' | 'maxLength' | 'exactLength' | 'email' | 'matchPattern'
15
+ type BuiltInRuleGeneralType = 'required' | 'custom'
16
+ export type BuiltInRuleType =
17
+ | BuiltInRuleGeneralType
18
+ | BuiltInNumberRuleType
19
+ | BuiltInStringRuleType
20
+ | builtInDateRuleType
5
21
 
6
22
  interface CustomValidationRule {
7
23
  type: 'custom'
@@ -43,6 +59,7 @@ export function useValidation(options: ValidationOptions = { showSuccessMessages
43
59
  const errors = ref<string[]>([])
44
60
  const warnings = ref<string[]>([])
45
61
  const successes = ref<string[]>([])
62
+ const successState = ref(false)
46
63
 
47
64
  let currentValidationToken = 0
48
65
 
@@ -51,13 +68,17 @@ export function useValidation(options: ValidationOptions = { showSuccessMessages
51
68
  const hasError = computed(() => errors.value.length > 0)
52
69
  const hasWarning = computed(() => warnings.value.length > 0)
53
70
  const hasSuccess = computed(() =>
54
- successes.value.length > 0 && !hasError.value && !hasWarning.value,
71
+ successState.value && !hasError.value && !hasWarning.value,
72
+ )
73
+ const displaySuccesses = computed(() =>
74
+ options.showSuccessMessages !== false ? successes.value : [],
55
75
  )
56
76
 
57
77
  const clearValidation = () => {
58
78
  errors.value = []
59
79
  warnings.value = []
60
80
  successes.value = []
81
+ successState.value = false
61
82
  }
62
83
 
63
84
  /**
@@ -160,8 +181,12 @@ export function useValidation(options: ValidationOptions = { showSuccessMessages
160
181
  }
161
182
  }
162
183
 
163
- if (!hasValidationError && value && options.showSuccessMessages !== false && successRules.length === 0) {
164
- addDefaultSuccessMessage(rules)
184
+ const isValueFilled = Array.isArray(value) ? value.length > 0 : !!value
185
+ if (!hasValidationError && isValueFilled && successRules.length === 0) {
186
+ successState.value = true
187
+ if (options.showSuccessMessages !== false) {
188
+ addDefaultSuccessMessage(rules)
189
+ }
165
190
  }
166
191
 
167
192
  if (!hasValidationError && warningRules.length > 0) {
@@ -190,6 +215,8 @@ export function useValidation(options: ValidationOptions = { showSuccessMessages
190
215
  const successResolved = executeRules(successRules, value, { isSuccess: true })
191
216
 
192
217
  return thenOrSync(successResolved, token, (successResults) => {
218
+ successState.value = successResults.some(result => Boolean(result.success))
219
+
193
220
  for (const r of successResults) {
194
221
  if (r.success && options.showSuccessMessages !== false) {
195
222
  successes.value.push(r.success)
@@ -207,6 +234,7 @@ export function useValidation(options: ValidationOptions = { showSuccessMessages
207
234
  errors,
208
235
  warnings,
209
236
  successes,
237
+ displaySuccesses,
210
238
  hasError,
211
239
  hasWarning,
212
240
  hasSuccess,
@@ -0,0 +1,28 @@
1
+ import { Meta, Canvas } from '@storybook/blocks'
2
+ import * as VBreadcrumbsStories from './v-breadcrumbs.stories'
3
+
4
+ <Meta title="Composants/Composants Vuetify/VBreadcrumbs" />
5
+
6
+ <div className="header">
7
+ <h1>VBreadcrumbs</h1>
8
+ Ce composant utilise directement le composant natif `v-breadcrumbs` de Vuetify avec les couleurs du thème actif du design system.
9
+ Pour l'API complète du composant, consulter la [documentation Vuetify](https://vuetifyjs.com/en/api/v-breadcrumbs/#props).
10
+ </div>
11
+
12
+ ## Default
13
+
14
+ <div style={{ padding: '24px' }}>
15
+ <Canvas of={VBreadcrumbsStories.Default} />
16
+ </div>
17
+
18
+ ## Avec divider personnalisé
19
+
20
+ <div style={{ padding: '24px' }}>
21
+ <Canvas of={VBreadcrumbsStories.CustomDivider} />
22
+ </div>
23
+
24
+ ## Désactivé
25
+
26
+ <div style={{ padding: '24px' }}>
27
+ <Canvas of={VBreadcrumbsStories.Disabled} />
28
+ </div>
@@ -0,0 +1,108 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import { VBreadcrumbs } from 'vuetify/components'
3
+
4
+ const meta = {
5
+ title: 'Composants/Composants Vuetify/VBreadcrumbs',
6
+ component: VBreadcrumbs,
7
+ parameters: {
8
+ docs: {
9
+ source: {
10
+ transform: (src: string) =>
11
+ src.replace(/VBreadcrumbs/g, 'v-breadcrumbs'),
12
+ },
13
+ },
14
+ },
15
+ tags: ['!dev'],
16
+ argTypes: {
17
+ items: {
18
+ control: 'object',
19
+ description: 'Liste des éléments du fil d\'ariane',
20
+ },
21
+ divider: {
22
+ control: 'text',
23
+ description: 'Caractère de séparation entre les éléments',
24
+ },
25
+ disabled: {
26
+ control: 'boolean',
27
+ description: 'Désactive tous les liens',
28
+ },
29
+ color: {
30
+ control: 'text',
31
+ description: 'Couleur appliquée aux liens actifs (ex: primary, secondary, error...)',
32
+ },
33
+ },
34
+ } satisfies Meta<typeof VBreadcrumbs>
35
+
36
+ export default meta
37
+ type Story = StoryObj<typeof meta>
38
+
39
+ export const Default: Story = {
40
+ args: {
41
+ color: 'primary',
42
+ items: [
43
+ {
44
+ title: 'Accueil',
45
+ disabled: false,
46
+ href: 'javascript:void(0)',
47
+ },
48
+ {
49
+ title: 'Catégorie',
50
+ disabled: false,
51
+ href: 'javascript:void(0)',
52
+ },
53
+ {
54
+ title: 'Page actuelle',
55
+ disabled: true,
56
+ href: 'javascript:void(0)',
57
+ },
58
+ ],
59
+ },
60
+ }
61
+
62
+ export const CustomDivider: Story = {
63
+ args: {
64
+ divider: '›',
65
+ color: 'primary',
66
+ items: [
67
+ {
68
+ title: 'Accueil',
69
+ disabled: false,
70
+ href: 'javascript:void(0)',
71
+ },
72
+ {
73
+ title: 'Catégorie',
74
+ disabled: false,
75
+ href: 'javascript:void(0)',
76
+ },
77
+ {
78
+ title: 'Sous-catégorie',
79
+ disabled: false,
80
+ href: 'javascript:void(0)',
81
+ },
82
+ {
83
+ title: 'Page actuelle',
84
+ disabled: true,
85
+ },
86
+ ],
87
+ },
88
+ }
89
+
90
+ export const Disabled: Story = {
91
+ args: {
92
+ items: [
93
+ {
94
+ title: 'Accueil',
95
+ href: 'javascript:void(0)',
96
+ disabled: true,
97
+ },
98
+ {
99
+ title: 'Catégorie',
100
+ href: 'javascript:void(0)',
101
+ disabled: true,
102
+ },
103
+ {
104
+ title: 'Page actuelle',
105
+ },
106
+ ],
107
+ },
108
+ }
@@ -0,0 +1,59 @@
1
+ import { Meta, Canvas } from '@storybook/blocks'
2
+ import * as VCardStories from './v-card.stories'
3
+
4
+ <Meta title="Composants/Composants Vuetify/VCard" />
5
+
6
+ <div className="header">
7
+ <h1>VCard</h1>
8
+ Ce composant utilise directement le composant natif `v-card` de Vuetify avec les couleurs du thème actif du design system.
9
+ Pour l'API complète du composant, consulter la [documentation Vuetify](https://vuetifyjs.com/en/api/v-card/#props).
10
+ </div>
11
+
12
+ ### Composants associés
13
+
14
+ - `v-card-title` : Titre de la carte
15
+ - `v-card-subtitle` : Sous-titre de la carte
16
+ - `v-card-text` : Contenu textuel de la carte
17
+ - `v-card-actions` : Zone pour les boutons d'action
18
+
19
+ ## Variantes
20
+
21
+ Le composant `v-card` propose plusieurs variantes de style :
22
+
23
+ - **elevated** : Carte avec une ombre (par défaut)
24
+ - **flat** : Carte sans ombre
25
+ - **outlined** : Carte avec une bordure
26
+ - **tonal** : Carte avec un fond coloré léger
27
+ - **text** : Carte sans fond ni bordure
28
+ - **plain** : Carte sans style
29
+
30
+ ### Primary
31
+
32
+ <Canvas of={VCardStories.Primary} />
33
+
34
+ ### Primary - Elevated
35
+
36
+ <Canvas of={VCardStories.PrimaryElevated} />
37
+
38
+ ### Primary - Outlined
39
+
40
+ <Canvas of={VCardStories.PrimaryOutlined} />
41
+
42
+ ### Primary - Tonal
43
+
44
+ <Canvas of={VCardStories.PrimaryTonal} />
45
+
46
+ ### En chargement
47
+
48
+ <Canvas of={VCardStories.Loading} />
49
+
50
+ ### Désactivée
51
+
52
+ <Canvas of={VCardStories.Disabled} />
53
+
54
+ ## Accessibilité
55
+
56
+ - Utilisez des titres descriptifs pour les cartes
57
+ - Assurez-vous que les images ont un attribut `alt` approprié
58
+ - Les actions dans la carte doivent être accessibles au clavier
59
+ - Utilisez des couleurs avec un contraste suffisant
@@ -0,0 +1,279 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import { VCard, VCardTitle, VCardText, VCardActions } from 'vuetify/components'
3
+ import { VBtn } from 'vuetify/components'
4
+
5
+ const meta: Meta<typeof VCard> = {
6
+ title: 'Composants/Composants Vuetify/VCard',
7
+ tags: ['!dev'],
8
+ component: VCard,
9
+ parameters: {
10
+ docs: {
11
+ source: {
12
+ transform: (src: string) => {
13
+ // Extract only the template part
14
+ const templateMatch = src.match(/template:\s*`([\s\S]*?)`/)
15
+ if (templateMatch && templateMatch[1]) {
16
+ return templateMatch[1]
17
+ .trim()
18
+ .replace(/<VCard/g, '<v-card')
19
+ .replace(/<\/VCard>/g, '</v-card>')
20
+ .replace(/<VCardTitle/g, '<v-card-title')
21
+ .replace(/<\/VCardTitle>/g, '</v-card-title>')
22
+ .replace(/<VCardText/g, '<v-card-text')
23
+ .replace(/<\/VCardText>/g, '</v-card-text>')
24
+ .replace(/<VCardActions/g, '<v-card-actions')
25
+ .replace(/<\/VCardActions>/g, '</v-card-actions>')
26
+ .replace(/<VBtn/g, '<v-btn')
27
+ .replace(/<\/VBtn>/g, '</v-btn>')
28
+ }
29
+ return src
30
+ },
31
+ },
32
+ },
33
+ },
34
+ argTypes: {
35
+ color: {
36
+ control: { type: 'text' },
37
+ description: 'Couleur de la carte',
38
+ },
39
+ variant: {
40
+ control: { type: 'select' },
41
+ options: ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'],
42
+ description: 'Variante de style de la carte',
43
+ },
44
+ elevation: {
45
+ control: { type: 'number' },
46
+ description: 'Élévation de la carte (ombre)',
47
+ },
48
+ disabled: {
49
+ control: { type: 'boolean' },
50
+ description: 'Désactive la carte',
51
+ },
52
+ loading: {
53
+ control: { type: 'boolean' },
54
+ description: 'Affiche un état de chargement',
55
+ },
56
+ rounded: {
57
+ control: { type: 'select' },
58
+ options: ['0', 'sm', 'md', 'lg', 'xl', 'pill', 'circle'],
59
+ description: 'Arrondi des coins de la carte',
60
+ },
61
+ },
62
+ }
63
+
64
+ export default meta
65
+
66
+ type Story = StoryObj<typeof VCard>
67
+
68
+ export const Primary: Story = {
69
+ render: args => ({
70
+ components: { VCard, VCardTitle, VCardText },
71
+ setup() {
72
+ return { args }
73
+ },
74
+ template: `
75
+ <VCard v-bind="args" style="max-width: 400px;">
76
+ <VCardTitle>Carte Primary</VCardTitle>
77
+ <VCardText>
78
+ Cette carte utilise la couleur "primary".
79
+ </VCardText>
80
+ </VCard>
81
+ `,
82
+ }),
83
+ args: {
84
+ color: 'primary',
85
+ },
86
+ parameters: {
87
+ docs: {
88
+ source: {
89
+ code: `<v-card color="primary" style="max-width: 400px;">
90
+ <v-card-title>Carte Primary</v-card-title>
91
+ <v-card-text>
92
+ Cette carte utilise la couleur "primary".
93
+ </v-card-text>
94
+ </v-card>`,
95
+ },
96
+ },
97
+ },
98
+ }
99
+
100
+ export const PrimaryTonal: Story = {
101
+ render: args => ({
102
+ components: { VCard, VCardTitle, VCardText },
103
+ setup() {
104
+ return { args }
105
+ },
106
+ template: `
107
+ <VCard v-bind="args" style="max-width: 400px;">
108
+ <VCardTitle>Carte Primary Tonal</VCardTitle>
109
+ <VCardText>
110
+ Cette carte utilise la couleur "primary" et la variant "tonal".
111
+ </VCardText>
112
+ </VCard>
113
+ `,
114
+ }),
115
+ args: {
116
+ color: 'primary',
117
+ variant: 'tonal',
118
+ },
119
+ parameters: {
120
+ docs: {
121
+ source: {
122
+ code: `<v-card color="primary" variant="tonal" style="max-width: 400px;">
123
+ <v-card-title>Carte Primary Tonal</v-card-title>
124
+ <v-card-text>
125
+ Cette carte utilise la couleur "primary" et la variant "tonal".
126
+ </v-card-text>
127
+ </v-card>`,
128
+ },
129
+ },
130
+ },
131
+ }
132
+
133
+ export const PrimaryElevated: Story = {
134
+ render: args => ({
135
+ components: { VCard, VCardTitle, VCardText },
136
+ setup() {
137
+ return { args }
138
+ },
139
+ template: `
140
+ <VCard v-bind="args" style="max-width: 400px;">
141
+ <VCardTitle>Carte Primary Elevated</VCardTitle>
142
+ <VCardText>
143
+ Cette carte utilise la couleur "primary" et la variant "elevated".
144
+ </VCardText>
145
+ </VCard>
146
+ `,
147
+ }),
148
+ args: {
149
+ color: 'primary',
150
+ variant: 'elevated',
151
+ elevation: 4,
152
+ },
153
+ parameters: {
154
+ docs: {
155
+ source: {
156
+ code: `<v-card color="primary" variant="elevated" :elevation="4" style="max-width: 400px;">
157
+ <v-card-title>Carte Primary Elevated</v-card-title>
158
+ <v-card-text>
159
+ Cette carte utilise la couleur "primary" et la variant "elevated".
160
+ </v-card-text>
161
+ </v-card>`,
162
+ },
163
+ },
164
+ },
165
+ }
166
+
167
+ export const PrimaryOutlined: Story = {
168
+ render: args => ({
169
+ components: { VCard, VCardTitle, VCardText, VCardActions, VBtn },
170
+ setup() {
171
+ return { args }
172
+ },
173
+ template: `
174
+ <VCard v-bind="args" style="max-width: 400px;">
175
+ <VCardTitle>Carte Primary Outlined</VCardTitle>
176
+ <VCardText>
177
+ Cette carte utilise la couleur "primary" et la variant "outlined". Elle contient également des boutons d'action.
178
+ </VCardText>
179
+ <VCardActions class="justify-end">
180
+ <VBtn variant="text" color="primary">Annuler</VBtn>
181
+ <VBtn variant="tonal" color="primary">Confirmer</VBtn>
182
+ </VCardActions>
183
+ </VCard>
184
+ `,
185
+ }),
186
+ args: {
187
+ color: 'primary',
188
+ variant: 'outlined',
189
+ },
190
+ parameters: {
191
+ docs: {
192
+ source: {
193
+ code: `<v-card color="primary" variant="outlined" style="max-width: 400px;">
194
+ <v-card-title>Carte Primary Outlined</v-card-title>
195
+ <v-card-text>
196
+ Cette carte utilise la couleur "primary" et la variant "outlined". Elle contient également des boutons d'action.
197
+ </v-card-text>
198
+ <v-card-actions class="justify-end">
199
+ <v-btn variant="text" color="primary">Annuler</v-btn>
200
+ <v-btn variant="tonal" color="primary">Confirmer</v-btn>
201
+ </v-card-actions>
202
+ </v-card>`,
203
+ },
204
+ },
205
+ },
206
+ }
207
+
208
+ // États
209
+
210
+ export const Loading: Story = {
211
+ render: args => ({
212
+ components: { VCard, VCardTitle, VCardText },
213
+ setup() {
214
+ return { args }
215
+ },
216
+ template: `
217
+ <VCard v-bind="args" style="max-width: 400px;">
218
+ <VCardTitle>Carte Primary en chargement</VCardTitle>
219
+ <VCardText>
220
+ Cette carte utilise la couleur "primary" et affiche un état de chargement.
221
+ </VCardText>
222
+ </VCard>
223
+ `,
224
+ }),
225
+ args: {
226
+ loading: true,
227
+ color: 'primary',
228
+ },
229
+ parameters: {
230
+ docs: {
231
+ source: {
232
+ code: `<v-card :loading="true" color="primary" style="max-width: 400px;">
233
+ <v-card-title>Carte Primary en chargement</v-card-title>
234
+ <v-card-text>
235
+ Cette carte utilise la couleur "primary" et affiche un état de chargement.
236
+ </v-card-text>
237
+ </v-card>`,
238
+ },
239
+ },
240
+ },
241
+ }
242
+
243
+ export const Disabled: Story = {
244
+ render: args => ({
245
+ components: { VCard, VCardTitle, VCardText, VCardActions, VBtn },
246
+ setup() {
247
+ return { args }
248
+ },
249
+ template: `
250
+ <VCard v-bind="args" style="max-width: 400px;">
251
+ <VCardTitle>Carte désactivée</VCardTitle>
252
+ <VCardText>
253
+ Cette carte est désactivée.
254
+ </VCardText>
255
+ <VCardActions class="justify-end">
256
+ <VBtn>Action</VBtn>
257
+ </VCardActions>
258
+ </VCard>
259
+ `,
260
+ }),
261
+ args: {
262
+ disabled: true,
263
+ },
264
+ parameters: {
265
+ docs: {
266
+ source: {
267
+ code: `<v-card :disabled="true" style="max-width: 400px;">
268
+ <v-card-title>Carte désactivée</v-card-title>
269
+ <v-card-text>
270
+ Cette carte est désactivée.
271
+ </v-card-text>
272
+ <v-card-actions class="justify-end">
273
+ <v-btn>Action</v-btn>
274
+ </v-card-actions>
275
+ </v-card>`,
276
+ },
277
+ },
278
+ },
279
+ }
@@ -0,0 +1,39 @@
1
+ import { Meta, Canvas } from '@storybook/blocks'
2
+ import * as VOtpInputStories from './v-otp-input.stories'
3
+
4
+ <Meta title="Composants/Composants Vuetify/VOtpInput" />
5
+
6
+ <div className="header">
7
+ <h1>VOtpInput</h1>
8
+ Ce composant utilise directement le composant natif `v-otp-input` de Vuetify avec les couleurs du thème actif du design system.
9
+ Pour l'API complète du composant, consulter la [documentation Vuetify](https://vuetifyjs.com/en/api/v-otp-input/#props).
10
+ </div>
11
+
12
+ ## Variants
13
+
14
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '24px', padding: '24px' }}>
15
+ <Canvas of={VOtpInputStories.Default} />
16
+ <Canvas of={VOtpInputStories.Underlined} />
17
+ <Canvas of={VOtpInputStories.Filled} />
18
+ </div>
19
+
20
+ ## États
21
+
22
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '24px', padding: '24px' }}>
23
+ <Canvas of={VOtpInputStories.Disabled} />
24
+ <Canvas of={VOtpInputStories.Error} />
25
+ </div>
26
+
27
+ ## Longueur personnalisée
28
+
29
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '24px', padding: '24px' }}>
30
+ <Canvas of={VOtpInputStories.FourDigits} />
31
+ </div>
32
+
33
+ ## Variants disponibles
34
+
35
+ - `outlined` – Avec bordure (défaut)
36
+ - `underlined` – Souligné uniquement
37
+ - `filled` – Avec fond
38
+ - `solo` – Sans bordure avec élévation
39
+ - `plain` – Minimal sans style
@@ -0,0 +1,56 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+
3
+ const meta: Meta = {
4
+ title: 'Composants/Composants Vuetify/VOtpInput',
5
+ tags: ['!dev'],
6
+ render: args => ({
7
+ setup() {
8
+ return { args }
9
+ },
10
+ template: `
11
+ <v-otp-input
12
+ :length="args.length"
13
+ :disabled="args.disabled"
14
+ :error="args.error"
15
+ :variant="args.variant"
16
+ />
17
+ `,
18
+ }),
19
+ }
20
+
21
+ export default meta
22
+ type Story = StoryObj<typeof meta>
23
+
24
+ // --- Default ---
25
+ export const Default: Story = {
26
+ args: { length: 6, disabled: false, error: false, variant: 'outlined' },
27
+ parameters: { docs: { source: { code: `<v-otp-input :length="6" />` } } },
28
+ }
29
+
30
+ export const Underlined: Story = {
31
+ args: { length: 6, disabled: false, error: false, variant: 'underlined' },
32
+ parameters: { docs: { source: { code: `<v-otp-input :length="6" variant="underlined" />` } } },
33
+ }
34
+
35
+ export const Filled: Story = {
36
+ args: { length: 6, disabled: false, error: false, variant: 'filled' },
37
+ parameters: { docs: { source: { code: `<v-otp-input :length="6" variant="filled" />` } } },
38
+ }
39
+
40
+ // --- Disabled ---
41
+ export const Disabled: Story = {
42
+ args: { length: 6, disabled: true, error: false, variant: 'outlined' },
43
+ parameters: { docs: { source: { code: `<v-otp-input :length="6" disabled />` } } },
44
+ }
45
+
46
+ // --- Error ---
47
+ export const Error: Story = {
48
+ args: { length: 6, disabled: false, error: true, variant: 'outlined' },
49
+ parameters: { docs: { source: { code: `<v-otp-input :length="6" error />` } } },
50
+ }
51
+
52
+ // --- Different lengths ---
53
+ export const FourDigits: Story = {
54
+ args: { length: 4, disabled: false, error: false, variant: 'outlined' },
55
+ parameters: { docs: { source: { code: `<v-otp-input :length="4" />` } } },
56
+ }
@@ -0,0 +1,42 @@
1
+ import { Meta, Canvas } from '@storybook/blocks'
2
+ import * as VSkeletonLoaderStories from './v-skeleton-loader.stories'
3
+
4
+ <Meta title="Composants/Composants Vuetify/VSkeletonLoader" />
5
+
6
+ <div className="header">
7
+ <h1>VSkeletonLoader</h1>
8
+ Ce composant utilise directement le composant natif `v-skeleton-loader` de Vuetify.
9
+ Il est utilisé pour fournir une indication visuelle qu'un contenu est en cours de chargement.
10
+ Il améliore l'expérience utilisateur en montrant une structure de placeholder pendant le chargement des données.
11
+ Pour l'API complète du composant, consulter la [documentation Vuetify](https://vuetifyjs.com/en/api/v-skeleton-loader/#props).
12
+ </div>
13
+
14
+ ## Utilisation de base
15
+
16
+ <Canvas of={VSkeletonLoaderStories.Default} withToolbar={false} />
17
+
18
+ ## Types disponibles
19
+
20
+ Le composant offre plusieurs types prédéfinis pour différents cas d'usage :
21
+
22
+ ### Article
23
+ <Canvas of={VSkeletonLoaderStories.Article} withToolbar={false} />
24
+
25
+ ### Avatar
26
+ <Canvas of={VSkeletonLoaderStories.Avatar} withToolbar={false} />
27
+
28
+ ### Card
29
+ <Canvas of={VSkeletonLoaderStories.Card} withToolbar={false} />
30
+
31
+ ### List Item
32
+ <Canvas of={VSkeletonLoaderStories.ListItem} withToolbar={false} />
33
+
34
+ ### Boilerplate
35
+ Sans animation (statique) :
36
+ <Canvas of={VSkeletonLoaderStories.Boilerplate} withToolbar={false} />
37
+
38
+ ## Bonnes pratiques
39
+
40
+ - Utilisez des skeletons qui correspondent à la structure du contenu final
41
+ - Privilégiez l'utilisation de types prédéfinis pour une cohérence visuelle
42
+ - Désactivez l'animation (`boilerplate`) si vous avez de nombreux skeletons sur la page pour améliorer les performances