@cnamts/synapse 1.0.24 → 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 (367) hide show
  1. package/README.md +27 -5
  2. package/dist/{AutocompleteFilter-BWLR3U7W.js → AutocompleteFilter-D7qBuCAP.js} +1 -1
  3. package/dist/{AutocompleteFilter-D9jzRzAL.cjs → AutocompleteFilter-Df9i5mAl.cjs} +1 -1
  4. package/dist/{DateFilter-DTUl8hb1.cjs → DateFilter-BJD6FMev.cjs} +1 -1
  5. package/dist/{DateFilter-BpwFexzi.js → DateFilter-BitMWrMU.js} +1 -1
  6. package/dist/{NumberFilter-Bz_NTdX9.js → NumberFilter-BTLUxw0a.js} +1 -1
  7. package/dist/{NumberFilter-MAEojdk0.cjs → NumberFilter-DGCzCXzI.cjs} +1 -1
  8. package/dist/{PeriodFilter-DX_wy9g-.js → PeriodFilter-B5rUIPAC.js} +1 -1
  9. package/dist/{PeriodFilter-CC4WgIhl.cjs → PeriodFilter-DO_ecTZW.cjs} +1 -1
  10. package/dist/{SelectFilter-BR3fvl-a.cjs → SelectFilter-CGwcKWLm.cjs} +1 -1
  11. package/dist/{SelectFilter-xqiPtPgX.js → SelectFilter-l4QnRcuk.js} +2 -2
  12. package/dist/{TextFilter-CCfYFl5F.cjs → TextFilter-B8nf7xoK.cjs} +1 -1
  13. package/dist/{TextFilter-BBl3JFqK.js → TextFilter-C9hj6Qrp.js} +1 -1
  14. package/dist/apLightTheme-CEK4iY3f.cjs +1 -0
  15. package/dist/{apLightTheme-D1P4jcD0.js → apLightTheme-DnIM24Lv.js} +441 -722
  16. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +10 -6
  17. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +3 -0
  18. package/dist/components/Customs/SyTabs/SyTabs.d.ts +13 -11
  19. package/dist/components/Customs/SyTextField/SyTextField.d.ts +4 -4
  20. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +4 -24
  21. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +2 -12
  22. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +1 -6
  23. package/dist/components/DatePicker/composables/useDatePickerState.d.ts +1 -0
  24. package/dist/components/FileList/FileList.d.ts +6 -0
  25. package/dist/components/FilterSideBar/FilterSideBar.d.ts +2 -0
  26. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +13 -13
  27. package/dist/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +3 -3
  28. package/dist/components/MonthPicker/MonthPicker.d.ts +1 -6
  29. package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +1 -6
  30. package/dist/components/NirField/NirField.d.ts +4 -16
  31. package/dist/components/PeriodField/PeriodField.d.ts +8 -48
  32. package/dist/components/PhoneField/PhoneField.d.ts +1 -6
  33. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +1 -0
  34. package/dist/components/Tables/SyTable/SyTable.d.ts +1 -0
  35. package/dist/components/Tables/common/SyTablePagination.d.ts +2 -0
  36. package/dist/components/Tables/common/TableHeader.d.ts +5 -0
  37. package/dist/components/Tables/common/locales.d.ts +3 -0
  38. package/dist/components/Tables/common/types.d.ts +2 -0
  39. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +1 -0
  40. package/dist/composables/unifyValidation/documentationValidationProps.d.ts +230 -0
  41. package/dist/composables/validation/useValidation.d.ts +5 -1
  42. package/dist/design-system-v3.js +2 -2
  43. package/dist/design-system-v3.umd.cjs +1 -1
  44. package/dist/designTokens/tokens/amelipro/apColors.d.ts +10 -10
  45. package/dist/designTokens/tokens/amelipro/apColors2026.d.ts +1 -2
  46. package/dist/designTokens/tokens/amelipro/apContextual.d.ts +44 -0
  47. package/dist/designTokens/tokens/amelipro/apSemantic.d.ts +1 -1
  48. package/dist/designTokens/tokens/baseColors.d.ts +127 -0
  49. package/dist/designTokens/tokens/baseContextualTokens.d.ts +50 -0
  50. package/dist/designTokens/tokens/cnam/cnamColors.d.ts +10 -10
  51. package/dist/designTokens/tokens/cnam/cnamSemantic.d.ts +1 -1
  52. package/dist/designTokens/tokens/pa/paColors.d.ts +1 -166
  53. package/dist/designTokens/tokens/pa/paSemantic.d.ts +1 -1
  54. package/dist/designTokens/utils/buildColorClassMap.d.ts +12 -0
  55. package/dist/designTokens/utils/createFlattenTheme.d.ts +1 -3
  56. package/dist/designTokens/utils/index.d.ts +2 -2
  57. package/dist/main-ByDPHpae.cjs +1067 -0
  58. package/dist/main-Cpx8Co6H.js +38869 -0
  59. package/dist/synapse.css +1 -1
  60. package/dist/utils/functions/classToHex.d.ts +1 -1
  61. package/dist/utils/functions/createHexResolver.d.ts +16 -0
  62. package/dist/vuetifyConfig.js +113 -152
  63. package/dist/vuetifyConfig.umd.cjs +1 -1
  64. package/package.json +29 -18
  65. package/src/assets/amelipro/apTokens2026.scss +5 -5
  66. package/src/assets/overrides/_breakpoints.scss +25 -0
  67. package/src/assets/overrides/_btns.scss +0 -2
  68. package/src/assets/overrides/_forms.scss +1 -3
  69. package/src/assets/overrides/_icons.scss +7 -11
  70. package/src/assets/overrides/_otp.scss +41 -0
  71. package/src/assets/overrides/_tables.scss +11 -20
  72. package/src/assets/overrides/_tooltips.scss +17 -7
  73. package/src/assets/overrides/_typography.scss +35 -37
  74. package/src/assets/overrides/_utilities.scss +43 -47
  75. package/src/assets/themes.scss +1 -0
  76. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +20 -20
  77. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +12 -14
  78. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +4 -6
  79. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.vue +5 -5
  80. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +4 -6
  81. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.vue +4 -6
  82. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.vue +4 -6
  83. package/src/components/Amelipro/AmeliproBreadcrumb/AmeliproBreadcrumb.vue +1 -3
  84. package/src/components/Amelipro/AmeliproBtn/AmeliproBtn.vue +4 -6
  85. package/src/components/Amelipro/AmeliproCallback/AmeliproCallback.vue +2 -2
  86. package/src/components/Amelipro/AmeliproCard/AmeliproCard.vue +31 -31
  87. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.vue +5 -7
  88. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.vue +13 -15
  89. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +23 -23
  90. package/src/components/Amelipro/AmeliproChips/AmeliproChips.vue +1 -3
  91. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +17 -12
  92. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +2 -2
  93. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.vue +4 -6
  94. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +13 -13
  95. package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.vue +4 -2
  96. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +4 -4
  97. package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.vue +5 -7
  98. package/src/components/Amelipro/AmeliproDisclosure/AmeliproDisclosure.vue +1 -3
  99. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +2 -4
  100. package/src/components/Amelipro/AmeliproFilePreview/AmeliproFilePreview.vue +4 -6
  101. package/src/components/Amelipro/AmeliproFilters/AmeliproFilters.vue +13 -13
  102. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +3 -5
  103. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +1 -3
  104. package/src/components/Amelipro/AmeliproHeader/AmeliproHeader.vue +2 -4
  105. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.vue +1 -3
  106. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.vue +20 -16
  107. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +1 -1
  108. package/src/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.vue +2 -4
  109. package/src/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.vue +5 -7
  110. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.vue +6 -8
  111. package/src/components/Amelipro/AmeliproMailTile/AmeliproMailTile.vue +14 -14
  112. package/src/components/Amelipro/AmeliproMenu/AmeliproMenu.vue +11 -13
  113. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenu.vue +2 -4
  114. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingLayout.vue +8 -8
  115. package/src/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.vue +40 -40
  116. package/src/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.vue +27 -27
  117. package/src/components/Amelipro/AmeliproOnboarding/AmeliproOnboarding.vue +3 -5
  118. package/src/components/Amelipro/AmeliproPageLayout/AmeliproPageLayout.vue +2 -4
  119. package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.vue +2 -4
  120. package/src/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.vue +3 -5
  121. package/src/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.vue +1 -3
  122. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +2 -4
  123. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.vue +4 -4
  124. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +1 -3
  125. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +3 -5
  126. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +3 -5
  127. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +23 -23
  128. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +4 -6
  129. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.vue +12 -22
  130. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.vue +10 -12
  131. package/src/components/Amelipro/AmeliproStepper/AmeliproStepper.vue +17 -17
  132. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +8 -10
  133. package/src/components/Amelipro/AmeliproTabs/AmeliproTabBtn/AmeliproTabBtn.vue +6 -8
  134. package/src/components/Amelipro/AmeliproTabs/AmeliproTabs.vue +4 -4
  135. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.vue +4 -6
  136. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.vue +7 -9
  137. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.vue +3 -5
  138. package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.vue +0 -2
  139. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.vue +6 -6
  140. package/src/components/Amelipro/ServiceMenu/ServiceMenu.vue +2 -2
  141. package/src/components/Amelipro/StructureMenu/StructureBtn/StructureBtn.vue +4 -4
  142. package/src/components/Amelipro/StructureMenu/StructureItem/StructureItem.vue +4 -6
  143. package/src/components/Amelipro/StructureMenu/StructureMenu.vue +2 -2
  144. package/src/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.vue +2 -2
  145. package/src/components/Amelipro/UserMenu/UserMenu.vue +1 -3
  146. package/src/components/BackBtn/tests/BackBtn.visual.cy.ts +43 -0
  147. package/src/components/BackBtn/tests/__snapshots__/back-btn-custom-bg.snap.png +0 -0
  148. package/src/components/BackBtn/tests/__snapshots__/back-btn-dark-mode.snap.png +0 -0
  149. package/src/components/BackBtn/tests/__snapshots__/back-btn-default.snap.png +0 -0
  150. package/src/components/BackBtn/tests/__snapshots__/back-btn-no-icon.snap.png +0 -0
  151. package/src/components/Captcha/Captcha.vue +1 -3
  152. package/src/components/ChipList/ChipList.vue +14 -16
  153. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +0 -2
  154. package/src/components/CopyBtn/CopyBtn.vue +1 -3
  155. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +17 -17
  156. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +31 -0
  157. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +66 -0
  158. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +7 -3
  159. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +18 -0
  160. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +66 -0
  161. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.vue +4 -6
  162. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +1 -39
  163. package/src/components/Customs/Selects/SySelect/SySelect.vue +263 -63
  164. package/src/components/Customs/Selects/SySelect/accessibilite/Accessibility.mdx +199 -269
  165. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +35 -0
  166. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +5 -0
  167. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +29 -0
  168. package/src/components/Customs/SyCheckbox/accessibilite/Accessibility.mdx +18 -3
  169. package/src/components/Customs/SyPagination/SyPagination.vue +0 -2
  170. package/src/components/Customs/SyTabs/SyTabs.mdx +0 -58
  171. package/src/components/Customs/SyTabs/SyTabs.stories.ts +32 -33
  172. package/src/components/Customs/SyTabs/SyTabs.vue +87 -67
  173. package/src/components/Customs/SyTabs/accessibilite/Accessibility.mdx +83 -23
  174. package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +88 -0
  175. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +46 -1
  176. package/src/components/Customs/SyTextField/SyTextField.stories.ts +21 -41
  177. package/src/components/Customs/SyTextField/SyTextField.vue +4 -6
  178. package/src/components/DatePicker/CalendarMode/DatePicker.vue +12 -14
  179. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +20 -16
  180. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +23 -0
  181. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +8 -10
  182. package/src/components/DatePicker/composables/tests/useDatePickerState.spec.ts +53 -0
  183. package/src/components/DatePicker/composables/useDatePickerState.ts +24 -0
  184. package/src/components/DatePicker/composables/useDateTextField.ts +0 -1
  185. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +9 -8
  186. package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +1 -1
  187. package/src/components/DialogBox/DialogBox.vue +3 -5
  188. package/src/components/DialogBox/tests/DialogBox.visual.cy.ts +76 -0
  189. package/src/components/DialogBox/tests/__snapshots__/dialog-box-custom-texts.snap.png +0 -0
  190. package/src/components/DialogBox/tests/__snapshots__/dialog-box-default.snap.png +0 -0
  191. package/src/components/DialogBox/tests/__snapshots__/dialog-box-no-actions.snap.png +0 -0
  192. package/src/components/FileList/FileList.vue +9 -2
  193. package/src/components/FileList/UploadItem/UploadItem.vue +11 -13
  194. package/src/components/FileList/tests/FileList.spec.ts +47 -0
  195. package/src/components/FileUpload/FileUpload.vue +3 -5
  196. package/src/components/FileUpload/FileUploadContent.vue +3 -5
  197. package/src/components/FilterInline/FilterInline.vue +1 -3
  198. package/src/components/FilterSideBar/FilterSideBar.mdx +44 -1
  199. package/src/components/FilterSideBar/FilterSideBar.stories.ts +105 -1
  200. package/src/components/FilterSideBar/FilterSideBar.vue +7 -0
  201. package/src/components/FilterSideBar/tests/FilterSideBar.a11y.spec.ts +54 -1
  202. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +42 -0
  203. package/src/components/FooterBar/FooterBar.vue +9 -13
  204. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +1 -1
  205. package/src/components/HeaderBar/HeaderBar.vue +2 -3
  206. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +2 -3
  207. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +2 -3
  208. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.vue +0 -1
  209. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +8 -9
  210. package/src/components/HeaderBar/HeaderBurgerMenu/menu.scss +0 -8
  211. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.visual.cy.ts +196 -0
  212. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated-submenu-open.snap.png +0 -0
  213. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated.snap.png +0 -0
  214. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +0 -1
  215. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +6 -7
  216. package/src/components/HeaderBar/tests/HeaderBar.visual.cy.ts +81 -0
  217. package/src/components/HeaderBar/tests/__snapshots__/header-bar-custom-width.snap.png +0 -0
  218. package/src/components/HeaderBar/tests/__snapshots__/header-bar-default.snap.png +0 -0
  219. package/src/components/HeaderBar/tests/__snapshots__/header-bar-no-sticky.snap.png +0 -0
  220. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-prepend.snap.png +0 -0
  221. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-side.snap.png +0 -0
  222. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-subtitle.snap.png +0 -0
  223. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +12 -3
  224. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +15 -8
  225. package/src/components/HeaderToolbar/HeaderToolbar.vue +6 -7
  226. package/src/components/LangBtn/LangBtn.vue +2 -4
  227. package/src/components/Logo/tests/Logo.visual.cy.ts +57 -0
  228. package/src/components/Logo/tests/__snapshots__/logo-avatar.snap.png +0 -0
  229. package/src/components/Logo/tests/__snapshots__/logo-dark.snap.png +0 -0
  230. package/src/components/Logo/tests/__snapshots__/logo-default.snap.png +0 -0
  231. package/src/components/Logo/tests/__snapshots__/logo-no-organism.snap.png +0 -0
  232. package/src/components/Logo/tests/__snapshots__/logo-no-signature.snap.png +0 -0
  233. package/src/components/Logo/tests/__snapshots__/logo-risque-pro.snap.png +0 -0
  234. package/src/components/LogoBrandSection/LogoBrandSection.vue +2 -2
  235. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +1 -1
  236. package/src/components/NirField/NirField.stories.ts +2 -2
  237. package/src/components/NirField/NirField.vue +3 -5
  238. package/src/components/NirField/accessibilite/Accessibility.mdx +100 -5
  239. package/src/components/NirField/tests/NirField.spec.ts +118 -0
  240. package/src/components/NirField/tests/useNirValidation.spec.ts +449 -0
  241. package/src/components/NirField/useNirValidation.ts +38 -32
  242. package/src/components/NotificationBar/Notification/Notification.vue +5 -7
  243. package/src/components/NotificationBar/NotificationBar.vue +1 -3
  244. package/src/components/PaginatedTable/PaginatedTable.vue +2 -3
  245. package/src/components/PaginatedTable/Pagination.vue +3 -5
  246. package/src/components/PasswordField/PasswordField.vue +8 -10
  247. package/src/components/PhoneField/PhoneField.vue +3 -3
  248. package/src/components/RangeField/RangeSlider/RangeSlider.vue +0 -2
  249. package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -1
  250. package/src/components/RangeField/tests/RangeField.visual.cy.ts +65 -0
  251. package/src/components/RangeField/tests/__snapshots__/range-field-custom-bg.snap.png +0 -0
  252. package/src/components/RangeField/tests/__snapshots__/range-field-custom-range.snap.png +0 -0
  253. package/src/components/RangeField/tests/__snapshots__/range-field-default.snap.png +0 -0
  254. package/src/components/RangeField/tests/__snapshots__/range-field-step.snap.png +0 -0
  255. package/src/components/RangeField/tests/__snapshots__/range-field-with-label.snap.png +0 -0
  256. package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +6 -8
  257. package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +3 -5
  258. package/src/components/SearchListField/SearchListField.vue +0 -2
  259. package/src/components/SkipLink/SkipLink.vue +2 -4
  260. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +6 -6
  261. package/src/components/SubHeader/SubHeader.vue +1 -1
  262. package/src/components/SyAlert/SyAlert.vue +7 -9
  263. package/src/components/SyAlert/tests/SyAlert.visual.cy.ts +46 -0
  264. package/src/components/SyAlert/tests/__snapshots__/sy-alert-closable.snap.png +0 -0
  265. package/src/components/SyAlert/tests/__snapshots__/sy-alert-error.snap.png +0 -0
  266. package/src/components/SyAlert/tests/__snapshots__/sy-alert-info.snap.png +0 -0
  267. package/src/components/SyAlert/tests/__snapshots__/sy-alert-success.snap.png +0 -0
  268. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-outlined.snap.png +0 -0
  269. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-tonal.snap.png +0 -0
  270. package/src/components/SyAlert/tests/__snapshots__/sy-alert-warning.snap.png +0 -0
  271. package/src/components/SyBtnMenu/SyBtnMenu.vue +2 -4
  272. package/src/components/TableToolbar/TableToolbar.vue +6 -8
  273. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +166 -0
  274. package/src/components/Tables/SyServerTable/SyServerTable.vue +9 -7
  275. package/src/components/Tables/SyServerTable/tests/SyServerTable.a11y.spec.ts +23 -0
  276. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +268 -0
  277. package/src/components/Tables/SyTable/SyTable.stories.ts +104 -0
  278. package/src/components/Tables/SyTable/SyTable.vue +9 -7
  279. package/src/components/Tables/SyTable/tests/SyTable.a11y.spec.ts +22 -0
  280. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +274 -0
  281. package/src/components/Tables/common/SyTableFilter.vue +27 -2
  282. package/src/components/Tables/common/SyTablePagination.vue +142 -19
  283. package/src/components/Tables/common/TableHeader.vue +40 -3
  284. package/src/components/Tables/common/filters/SelectFilter.vue +1 -1
  285. package/src/components/Tables/common/locales.ts +3 -0
  286. package/src/components/Tables/common/tableStyles.scss +16 -19
  287. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +18 -0
  288. package/src/components/Tables/common/tests/TableHeader.spec.ts +39 -0
  289. package/src/components/Tables/common/types.ts +2 -0
  290. package/src/components/Tables/common/useTableHeaders.ts +49 -27
  291. package/src/components/UploadWorkflow/UploadWorkflow.vue +1 -0
  292. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +23 -0
  293. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +66 -0
  294. package/src/components/UploadWorkflow/useFileList.ts +3 -0
  295. package/src/components/UserMenuBtn/UserMenuBtn.vue +1 -3
  296. package/src/composables/unifyValidation/documentationValidationProps.ts +235 -0
  297. package/src/composables/validation/useValidation.ts +17 -1
  298. package/src/composantsVuetify/VBreadcrumbs/VBreadcrumbs.mdx +28 -0
  299. package/src/composantsVuetify/VBreadcrumbs/v-breadcrumbs.stories.ts +108 -0
  300. package/src/composantsVuetify/VOtpInput/VOtpInput.mdx +39 -0
  301. package/src/composantsVuetify/VOtpInput/v-otp-input.stories.ts +56 -0
  302. package/src/composantsVuetify/VSkeletonLoader/VSkeletonLoader.mdx +42 -0
  303. package/src/composantsVuetify/VSkeletonLoader/v-skeleton-loader.stories.ts +77 -0
  304. package/src/composantsVuetify/VSwitch/VSwitch.mdx +47 -0
  305. package/src/composantsVuetify/VSwitch/v-switch.stories.ts +166 -0
  306. package/src/designTokens/tests/buildColorClassMap.spec.ts +31 -0
  307. package/src/designTokens/tests/generateScssTokens.spec.ts +12 -0
  308. package/src/designTokens/tests/themeUtils.spec.ts +53 -0
  309. package/src/designTokens/tokens/amelipro/apColors.ts +8 -130
  310. package/src/designTokens/tokens/amelipro/apColors2026.ts +3 -15
  311. package/src/designTokens/tokens/amelipro/apContextual.ts +55 -47
  312. package/src/designTokens/tokens/amelipro/apLightTheme.ts +1 -1
  313. package/src/designTokens/tokens/amelipro/apSemantic.ts +1 -1
  314. package/src/designTokens/tokens/baseColors.ts +129 -0
  315. package/src/designTokens/tokens/baseContextualTokens.ts +52 -0
  316. package/src/designTokens/tokens/cnam/cnamColors.ts +3 -125
  317. package/src/designTokens/tokens/cnam/cnamContextual.ts +4 -48
  318. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +1 -1
  319. package/src/designTokens/tokens/cnam/cnamSemantic.ts +1 -1
  320. package/src/designTokens/tokens/pa/paColors.ts +2 -166
  321. package/src/designTokens/tokens/pa/paContextual.ts +3 -48
  322. package/src/designTokens/tokens/pa/paLightTheme.ts +1 -1
  323. package/src/designTokens/tokens/pa/paSemantic.ts +2 -2
  324. package/src/designTokens/utils/buildColorClassMap.ts +34 -0
  325. package/src/designTokens/utils/convertSemanticsToken.ts +8 -11
  326. package/src/designTokens/utils/createFlattenTheme.ts +15 -7
  327. package/src/designTokens/utils/index.ts +2 -2
  328. package/src/stories/Accessibilite/AuditDesignSystem.mdx +0 -11
  329. package/src/stories/Accessibilite/DesignSystem/Avancement.mdx +433 -0
  330. package/src/stories/Accessibilite/DesignSystem/a11y-status.json +692 -0
  331. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +8 -1
  332. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +51 -10
  333. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +16 -9
  334. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +48 -58
  335. package/src/stories/Components/Components.stories.ts +40 -1
  336. package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +4 -9
  337. package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +28 -0
  338. package/src/stories/Demarrer/Releases.stories.ts +48 -5
  339. package/src/stories/DesignTokens/ColorDisplay.vue +6 -5
  340. package/src/stories/DesignTokens/ColorIntegrationExample.vue +2 -4
  341. package/src/stories/DesignTokens/colors.stories.ts +5 -6
  342. package/src/stories/GuideDuDev/CreateVuetifyInstance.mdx +95 -0
  343. package/src/stories/GuideDuDev/Theme.mdx +36 -26
  344. package/src/stories/GuideDuDev/moduleDeNotification.mdx +3 -2
  345. package/src/stories/styles/accessibility-guide.css +3 -3
  346. package/src/utils/functions/classToHex.ts +6 -34
  347. package/src/utils/functions/createHexResolver.ts +45 -0
  348. package/src/utils/functions/tests/classToHex.spec.ts +36 -0
  349. package/src/utils/functions/tests/convertToHex.spec.ts +31 -0
  350. package/src/utils/functions/tests/createHexResolver.spec.ts +66 -0
  351. package/src/utils/functions/tests/isCssColor.spec.ts +48 -0
  352. package/dist/apLightTheme-CFSRrjv2.cjs +0 -1
  353. package/dist/designTokens/utils/convertGaps.d.ts +0 -5
  354. package/dist/main-BtTqyn4z.js +0 -38648
  355. package/dist/main-C1e3eoxd.cjs +0 -1067
  356. package/src/assets/apTokens.scss +0 -343
  357. package/src/assets/overrides/_container.scss +0 -36
  358. package/src/assets/tokens.scss +0 -388
  359. package/src/designTokens/apColors.md +0 -66
  360. package/src/designTokens/cnamColors.md +0 -193
  361. package/src/designTokens/paColors.md +0 -66
  362. package/src/designTokens/tokens/json/contextual-tokens.json +0 -156
  363. package/src/designTokens/tokens/json/primitives.json +0 -209
  364. package/src/designTokens/tokens/json/semantic.json +0 -120
  365. package/src/designTokens/utils/convertGaps.ts +0 -11
  366. package/src/stories/Accessibilite/Avancement/Avancement.mdx +0 -533
  367. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +0 -306
@@ -0,0 +1,235 @@
1
+ const RuleGeneralType = `'required' | 'custom'`
2
+ const StringRuleType = `'minLength' | 'maxLength' | 'exactLength' | 'email' | 'matchPattern'`
3
+ const NumberRuleType = `'min' | 'max'`
4
+ const DateRuleType = `'noWeekend' | 'noBeforeToday' | 'notAfterToday' | 'notBeforeDate' | 'notAfterDate' | 'dateExact' | 'isHolidayDay'`
5
+
6
+ function generateBuiltInRuleType(type: 'base' | 'date' | 'number' | 'string' | 'all' = 'all') {
7
+ switch (type) {
8
+ case 'base':
9
+ return RuleGeneralType
10
+ case 'date':
11
+ return `${RuleGeneralType} | ${DateRuleType}`
12
+ case 'number':
13
+ return `${RuleGeneralType} | ${NumberRuleType}`
14
+ case 'string':
15
+ return `${RuleGeneralType} | ${StringRuleType}`
16
+ case 'all':
17
+ return `${RuleGeneralType} | ${NumberRuleType} | ${StringRuleType} | ${DateRuleType}`
18
+ }
19
+ }
20
+
21
+ export function getValidationDocumentation(type: 'date' | 'number' | 'string' | 'all' = 'all') {
22
+ const builtInRuleType = generateBuiltInRuleType(type)
23
+
24
+ return {
25
+ readonly: {
26
+ description: 'Permet de rendre le champ en lecture seule, le champ deviens grisé.',
27
+ control: 'boolean',
28
+ table: {
29
+ type: { summary: 'boolean' },
30
+ defaultValue: { summary: 'false' },
31
+ category: 'props',
32
+ },
33
+ },
34
+ disabled: {
35
+ description: 'Désactive le champ sans changement visuel pour l\'utilisateur.',
36
+ control: 'boolean',
37
+ table: {
38
+ type: { summary: 'boolean' },
39
+ defaultValue: { summary: 'false' },
40
+ category: 'props',
41
+ },
42
+ },
43
+ required: {
44
+ description: 'Indique que le champ est requis.',
45
+ control: 'boolean',
46
+ table: {
47
+ type: { summary: 'boolean' },
48
+ defaultValue: { summary: 'false' },
49
+ category: 'props',
50
+ },
51
+ },
52
+ isValidateOnBlur: {
53
+ description: 'Détermine si la validation doit être déclenchée lors de la saisie ou du blur de l\'input.',
54
+ control: 'boolean',
55
+ table: {
56
+ type: { summary: 'boolean' },
57
+ defaultValue: { summary: 'true' },
58
+ category: 'props',
59
+ },
60
+ },
61
+ showSuccessMessages: {
62
+ description: 'Affiche les messages de succès lorsque la validation est réussie.',
63
+ control: 'boolean',
64
+ table: {
65
+ type: { summary: 'boolean' },
66
+ defaultValue: { summary: 'true' },
67
+ category: 'props',
68
+ },
69
+ },
70
+ disableErrorHandling: {
71
+ description: 'Désactive la gestion des erreurs, utile lorsque vous souhaitez gérer les erreurs manuellement.',
72
+ control: 'boolean',
73
+ table: {
74
+ type: { summary: 'boolean' },
75
+ defaultValue: { summary: 'false' },
76
+ category: 'props',
77
+ },
78
+ },
79
+ useVuetifyValidation: {
80
+ description: 'Indique si la validation doit être gérée par Vuetify (true) ou par Synapse (false).',
81
+ control: 'boolean',
82
+ table: {
83
+ type: { summary: 'boolean' },
84
+ defaultValue: { summary: 'false' },
85
+ category: 'props',
86
+ },
87
+ },
88
+ label: {
89
+ description: 'Le label du champ.',
90
+ control: 'text',
91
+ table: {
92
+ type: { summary: 'string' },
93
+ category: 'props',
94
+ },
95
+ },
96
+ rules: {
97
+ description: 'Les règles de validation Vuetify à appliquer au champ si useVuetifyValidation est true.',
98
+ control: 'object',
99
+ table: {
100
+ type: {
101
+ summary: 'array',
102
+ detail: `
103
+ (value: unknown) => boolean | string
104
+ `,
105
+ },
106
+ category: 'props',
107
+ },
108
+ },
109
+ customRules: {
110
+ description: 'Les règles de validation personnalisées à appliquer au champ.',
111
+ control: 'object',
112
+ table: {
113
+ type: {
114
+ summary: 'array',
115
+ detail: `
116
+ {
117
+ type: ${builtInRuleType},
118
+ options: {
119
+ validate: (value: unknown) => boolean | string,
120
+ message: string,
121
+ [key: string]: unknown
122
+ }
123
+ }
124
+ `,
125
+ },
126
+ category: 'props',
127
+ },
128
+ },
129
+ customWarningRules: {
130
+ description: 'Les règles de validation personnalisées pour les avertissements à appliquer au champ.',
131
+ control: 'object',
132
+ table: {
133
+ type: {
134
+ summary: 'array',
135
+ detail: `
136
+ {
137
+ type: ${builtInRuleType},
138
+ options: {
139
+ validate: (value: unknown) => boolean | string,
140
+ message: string,
141
+ [key: string]: unknown
142
+ }
143
+ }
144
+ `,
145
+ },
146
+ category: 'props',
147
+ },
148
+ },
149
+ customSuccessRules: {
150
+ description: 'Les règles de validation personnalisées pour les succès à appliquer au champ.',
151
+ control: 'object',
152
+ table: {
153
+ type: {
154
+ summary: 'array',
155
+ detail: `
156
+ {
157
+ type: ${builtInRuleType},
158
+ options: {
159
+ validate: (value: unknown) => boolean | string,
160
+ message: string,
161
+ [key: string]: unknown
162
+ }
163
+ }
164
+ `,
165
+ },
166
+ category: 'props',
167
+ },
168
+ },
169
+ errorMessages: {
170
+ description: 'Permet de forcer des messages d\'erreur spécifiques.',
171
+ control: 'object',
172
+ table: {
173
+ type: { summary: 'array<string>' },
174
+ category: 'props',
175
+ },
176
+ },
177
+ warningMessages: {
178
+ description: 'Permet de forcer des messages d\'avertissement spécifiques.',
179
+ control: 'object',
180
+ table: {
181
+ type: { summary: 'array<string>' },
182
+ category: 'props',
183
+ },
184
+ },
185
+ successMessages: {
186
+ description: 'Permet de forcer des messages de succès spécifiques.',
187
+ control: 'object',
188
+ table: {
189
+ type: { summary: 'array<string>' },
190
+ category: 'props',
191
+ },
192
+ },
193
+ hasError: {
194
+ description: 'Indique si le champ a une erreur, peut être utilisé pour forcer l\'état d\'erreur.',
195
+ control: 'boolean',
196
+ table: {
197
+ type: { summary: 'boolean' },
198
+ category: 'props',
199
+ },
200
+ },
201
+ hasWarning: {
202
+ description: 'Indique si le champ a un avertissement, peut être utilisé pour forcer l\'état d\'avertissement.',
203
+ control: 'boolean',
204
+ table: {
205
+ type: { summary: 'boolean' },
206
+ category: 'props',
207
+ },
208
+ },
209
+ hasSuccess: {
210
+ description: 'Indique si le champ a un succès, peut être utilisé pour forcer l\'état de succès.',
211
+ control: 'boolean',
212
+ table: {
213
+ type: { summary: 'boolean' },
214
+ category: 'props',
215
+ },
216
+ },
217
+ hideDetails: {
218
+ description: 'Masque la section des détails (messages d\'erreur, compteur)',
219
+ control: 'boolean',
220
+ table: {
221
+ type: { summary: 'boolean' },
222
+ defaultValue: { summary: 'false' },
223
+ category: 'props',
224
+ },
225
+ },
226
+ maxErrors: {
227
+ description: 'Le nombre maximum d\'erreurs à afficher, applicable uniquement si useVuetifyValidation est true.',
228
+ control: 'number',
229
+ table: {
230
+ type: { summary: 'number' },
231
+ category: 'props',
232
+ },
233
+ },
234
+ }
235
+ }
@@ -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'
@@ -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,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
@@ -0,0 +1,77 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import { VSkeletonLoader } from 'vuetify/components'
3
+
4
+ const meta: Meta<typeof VSkeletonLoader> = {
5
+ title: 'Composants/Composants Vuetify/VSkeletonLoader',
6
+ tags: ['!dev'],
7
+ component: VSkeletonLoader,
8
+ parameters: {
9
+ docs: {
10
+ source: {
11
+ transform: (src: string) =>
12
+ src.replace(/VSkeletonLoader/g, 'v-skeleton-loader'),
13
+ },
14
+ },
15
+ },
16
+ argTypes: {
17
+ type: {
18
+ control: { type: 'select' },
19
+ options: ['article', 'avatar', 'card', 'list-item-avatar'],
20
+ description: 'Type de skeleton loader',
21
+ },
22
+ loading: {
23
+ control: { type: 'boolean' },
24
+ description: 'Affiche le skeleton loader',
25
+ },
26
+ boilerplate: {
27
+ control: { type: 'boolean' },
28
+ description: 'Affiche une version simplifiée du skeleton loader',
29
+ },
30
+ },
31
+ }
32
+
33
+ export default meta
34
+
35
+ type Story = StoryObj<typeof VSkeletonLoader>
36
+
37
+ export const Default: Story = {
38
+ args: {
39
+ type: 'card',
40
+ loading: true,
41
+ },
42
+ }
43
+
44
+ export const Article: Story = {
45
+ args: {
46
+ type: 'article',
47
+ loading: true,
48
+ },
49
+ }
50
+
51
+ export const Avatar: Story = {
52
+ args: {
53
+ type: 'avatar',
54
+ loading: true,
55
+ },
56
+ }
57
+
58
+ export const Card: Story = {
59
+ args: {
60
+ type: 'card',
61
+ loading: true,
62
+ },
63
+ }
64
+
65
+ export const ListItem: Story = {
66
+ args: {
67
+ type: 'list-item-avatar',
68
+ loading: true,
69
+ },
70
+ }
71
+
72
+ export const Boilerplate: Story = {
73
+ args: {
74
+ type: 'card',
75
+ boilerplate: true,
76
+ },
77
+ }
@@ -0,0 +1,47 @@
1
+ import { Meta, Canvas } from '@storybook/blocks'
2
+ import * as VSwitchStories from './v-switch.stories'
3
+
4
+ <Meta title="Composants/Composants Vuetify/VSwitch" />
5
+
6
+ <div className="header">
7
+ <h1>VSwitch</h1>
8
+ Ce composant utilise directement le composant natif `v-switch` 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-switch/#props).
10
+ </div>
11
+
12
+ ## Primary
13
+
14
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: '12px', alignItems: 'center', padding: '24px' }}>
15
+ <Canvas of={VSwitchStories.PrimaryOn} />
16
+ <Canvas of={VSwitchStories.PrimaryOff} />
17
+ <Canvas of={VSwitchStories.PrimaryInsetOn} />
18
+ <Canvas of={VSwitchStories.PrimaryInsetOff} />
19
+ </div>
20
+
21
+ ## Primary – Désactivé
22
+
23
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: '12px', alignItems: 'center', padding: '24px' }}>
24
+ <Canvas of={VSwitchStories.PrimaryOnDisabled} />
25
+ <Canvas of={VSwitchStories.PrimaryOffDisabled} />
26
+ </div>
27
+
28
+ ## Secondary
29
+
30
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: '12px', alignItems: 'center', padding: '24px' }}>
31
+ <Canvas of={VSwitchStories.SecondaryOn} />
32
+ <Canvas of={VSwitchStories.SecondaryOff} />
33
+ <Canvas of={VSwitchStories.SecondaryInsetOn} />
34
+ <Canvas of={VSwitchStories.SecondaryInsetOff} />
35
+ </div>
36
+
37
+ ## Secondary – Désactivé
38
+
39
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: '12px', alignItems: 'center', padding: '24px' }}>
40
+ <Canvas of={VSwitchStories.SecondaryOnDisabled} />
41
+ <Canvas of={VSwitchStories.SecondaryOffDisabled} />
42
+ </div>
43
+
44
+ ## Variants disponibles
45
+
46
+ - `default` – Switch standard
47
+ - `inset` – Switch avec style inset (plus large)