@cnamts/synapse 1.0.23 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. package/README.md +27 -5
  2. package/dist/AutocompleteFilter-D7qBuCAP.js +114 -0
  3. package/dist/AutocompleteFilter-Df9i5mAl.cjs +1 -0
  4. package/dist/DateFilter-BJD6FMev.cjs +1 -0
  5. package/dist/{DateFilter-Dc-gSGwk.js → DateFilter-BitMWrMU.js} +1 -1
  6. package/dist/{NumberFilter-vP38Wp6j.js → NumberFilter-BTLUxw0a.js} +3 -3
  7. package/dist/NumberFilter-DGCzCXzI.cjs +1 -0
  8. package/dist/{PeriodFilter-Ba1uYUnT.js → PeriodFilter-B5rUIPAC.js} +1 -1
  9. package/dist/PeriodFilter-DO_ecTZW.cjs +1 -0
  10. package/dist/SelectFilter-CGwcKWLm.cjs +1 -0
  11. package/dist/SelectFilter-l4QnRcuk.js +135 -0
  12. package/dist/TextFilter-B8nf7xoK.cjs +1 -0
  13. package/dist/{TextFilter-B84dpnoq.js → TextFilter-C9hj6Qrp.js} +7 -7
  14. package/dist/apLightTheme-CEK4iY3f.cjs +1 -0
  15. package/dist/apLightTheme-DnIM24Lv.js +950 -0
  16. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +7022 -9616
  17. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +2 -2
  18. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +2 -2
  19. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +40 -40
  20. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +60 -60
  21. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +7168 -9762
  22. package/dist/components/Amelipro/AmeliproStepper/AmeliproStepper.d.ts +2 -2
  23. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +7501 -10095
  24. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +21 -21
  25. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +41 -41
  26. package/dist/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.d.ts +2 -2
  27. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +20 -498
  28. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +117 -151
  29. package/dist/components/Customs/Selects/SyInputSelect/SyInputSelect.d.ts +5 -5
  30. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +12 -16
  31. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +8 -8
  32. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +31 -506
  33. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +28 -506
  34. package/dist/components/Customs/SyTabs/SyTabs.d.ts +13 -11
  35. package/dist/components/Customs/SyTextField/SyTextField.d.ts +69 -89
  36. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +627 -791
  37. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +315 -412
  38. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +112 -160
  39. package/dist/components/DatePicker/composables/index.d.ts +1 -0
  40. package/dist/components/DatePicker/composables/useDatePickerFocusTrap.d.ts +11 -0
  41. package/dist/components/DatePicker/composables/useDatePickerState.d.ts +1 -0
  42. package/dist/components/DatePicker/composables/useDateTextField.d.ts +4 -4
  43. package/dist/components/DatePicker/composables/useDateValidation.d.ts +3 -3
  44. package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +2 -2
  45. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +2 -2
  46. package/dist/components/FileList/FileList.d.ts +6 -0
  47. package/dist/components/FilterSideBar/FilterSideBar.d.ts +2 -0
  48. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +17 -17
  49. package/dist/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +3 -3
  50. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +20 -28
  51. package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +3 -3
  52. package/dist/components/MonthPicker/MonthPicker.d.ts +86 -127
  53. package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +85 -126
  54. package/dist/components/NirField/NirField.d.ts +202 -278
  55. package/dist/components/NirField/locales.d.ts +10 -10
  56. package/dist/components/NirField/useNirValidation.d.ts +64 -0
  57. package/dist/components/PasswordField/PasswordField.d.ts +8 -9
  58. package/dist/components/PeriodField/PeriodField.d.ts +1352 -1680
  59. package/dist/components/PhoneField/PhoneField.d.ts +88 -129
  60. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +12 -12
  61. package/dist/components/SyTextArea/SyTextArea.d.ts +34 -14
  62. package/dist/components/SyTextArea/useDefaultValidationRules.d.ts +11 -0
  63. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +10 -6
  64. package/dist/components/Tables/SyTable/SyTable.d.ts +10 -6
  65. package/dist/components/Tables/common/SyTableFilter.d.ts +2 -3
  66. package/dist/components/Tables/common/SyTablePagination.d.ts +19 -19
  67. package/dist/components/Tables/common/TableHeader.d.ts +5 -0
  68. package/dist/components/Tables/common/filters/AutocompleteFilter.d.ts +120 -0
  69. package/dist/components/Tables/common/filters/locales.d.ts +0 -1
  70. package/dist/components/Tables/common/locales.d.ts +3 -0
  71. package/dist/components/Tables/common/types.d.ts +21 -3
  72. package/dist/components/Tables/common/useClickableTableRow.d.ts +17 -0
  73. package/dist/components/Tables/common/usePagination.d.ts +3 -1
  74. package/dist/components/Tables/common/usePinnedColumns.d.ts +31 -0
  75. package/dist/components/Tables/common/useTableHeaders.d.ts +2 -0
  76. package/dist/components/Tables/common/useTableRowCheckboxAccessibility.d.ts +5 -0
  77. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +7 -6
  78. package/dist/composables/date/useDatePickerAccessibility.d.ts +1 -1
  79. package/dist/composables/rules/useFieldValidation.d.ts +4 -4
  80. package/dist/composables/unifyValidation/documentationValidationProps.d.ts +230 -0
  81. package/dist/composables/unifyValidation/useCustomValidation.d.ts +8 -0
  82. package/dist/composables/unifyValidation/useValidation.d.ts +102 -0
  83. package/dist/composables/unifyValidation/useVuetifyValidation.d.ts +18 -0
  84. package/dist/composables/useFormFieldErrorHandling.d.ts +2 -2
  85. package/dist/composables/validation/useFormValidation.d.ts +11 -2
  86. package/dist/composables/validation/useValidation.d.ts +19 -9
  87. package/dist/design-system-v3.d.ts +2 -0
  88. package/dist/design-system-v3.js +186 -187
  89. package/dist/design-system-v3.umd.cjs +1 -1066
  90. package/dist/designTokens/tokens/amelipro/apColors.d.ts +10 -10
  91. package/dist/designTokens/tokens/amelipro/apColors2026.d.ts +1 -2
  92. package/dist/designTokens/tokens/amelipro/apContextual.d.ts +44 -0
  93. package/dist/designTokens/tokens/amelipro/apSemantic.d.ts +1 -1
  94. package/dist/designTokens/tokens/baseColors.d.ts +127 -0
  95. package/dist/designTokens/tokens/baseContextualTokens.d.ts +50 -0
  96. package/dist/designTokens/tokens/cnam/cnamColors.d.ts +10 -10
  97. package/dist/designTokens/tokens/cnam/cnamSemantic.d.ts +1 -1
  98. package/dist/designTokens/tokens/pa/paColors.d.ts +1 -166
  99. package/dist/designTokens/tokens/pa/paSemantic.d.ts +1 -1
  100. package/dist/designTokens/utils/buildColorClassMap.d.ts +12 -0
  101. package/dist/designTokens/utils/createFlattenTheme.d.ts +1 -3
  102. package/dist/designTokens/utils/index.d.ts +2 -2
  103. package/dist/main-ByDPHpae.cjs +1067 -0
  104. package/dist/main-Cpx8Co6H.js +38869 -0
  105. package/dist/main.d.ts +0 -1
  106. package/dist/synapse.css +1 -0
  107. package/dist/tooth-11-D3sLWv2n.cjs +1 -0
  108. package/dist/tooth-12-CXrLuH03.cjs +1 -0
  109. package/dist/tooth-13-BSfo5fpT.cjs +1 -0
  110. package/dist/tooth-14-DMzulx0h.cjs +1 -0
  111. package/dist/tooth-15-BKRFVi-9.cjs +1 -0
  112. package/dist/tooth-16-CpuxAbuM.cjs +1 -0
  113. package/dist/tooth-17-BPoahUdg.cjs +1 -0
  114. package/dist/tooth-18-DhHJz8sy.cjs +1 -0
  115. package/dist/tooth-21-Dgd5hn_X.cjs +1 -0
  116. package/dist/tooth-22-C2Tn19sB.cjs +1 -0
  117. package/dist/tooth-23-C9uaaSGb.cjs +1 -0
  118. package/dist/tooth-24-BrK9UGpf.cjs +1 -0
  119. package/dist/tooth-25-CE_EfGNp.cjs +1 -0
  120. package/dist/tooth-26-Ctv4i9Fy.cjs +1 -0
  121. package/dist/tooth-27-C5J7JkWM.cjs +1 -0
  122. package/dist/tooth-28-Z9oWqjo0.cjs +1 -0
  123. package/dist/tooth-31-BrYqmkTi.cjs +1 -0
  124. package/dist/tooth-32-BNNR0oCZ.cjs +1 -0
  125. package/dist/tooth-33-DuxvqO2J.cjs +1 -0
  126. package/dist/tooth-34-BCSCXMB6.cjs +1 -0
  127. package/dist/tooth-35-BLUXkX88.cjs +1 -0
  128. package/dist/tooth-36-IrKHYqlA.cjs +1 -0
  129. package/dist/tooth-37-BYqpdMwo.cjs +1 -0
  130. package/dist/tooth-38-B_eNXXdu.cjs +1 -0
  131. package/dist/tooth-41-Ddva4Ot8.cjs +1 -0
  132. package/dist/tooth-42-szcDqlM0.cjs +1 -0
  133. package/dist/tooth-43-B3ka6rQm.cjs +1 -0
  134. package/dist/tooth-44-CazyQucj.cjs +1 -0
  135. package/dist/tooth-45-B4HQtc8n.cjs +1 -0
  136. package/dist/tooth-46-BPM40gbG.cjs +1 -0
  137. package/dist/tooth-47-Dvr20dlh.cjs +1 -0
  138. package/dist/tooth-48-Bd8ljGsF.cjs +1 -0
  139. package/dist/tooth-51-OBpwCOF3.cjs +1 -0
  140. package/dist/tooth-52-aKxyHcmq.cjs +1 -0
  141. package/dist/tooth-53-vCwJjTOc.cjs +1 -0
  142. package/dist/tooth-54-DsWu2iFy.cjs +1 -0
  143. package/dist/tooth-55-BxC1X2Dn.cjs +1 -0
  144. package/dist/tooth-61-BbLvxMQi.cjs +1 -0
  145. package/dist/tooth-62-CmTkWczP.cjs +1 -0
  146. package/dist/tooth-63-DI7l_2qI.cjs +1 -0
  147. package/dist/tooth-64-B21sOsJh.cjs +1 -0
  148. package/dist/tooth-65-D2ZC2VEr.cjs +1 -0
  149. package/dist/tooth-71-D473PPO5.cjs +1 -0
  150. package/dist/tooth-72-Drh1wnNu.cjs +1 -0
  151. package/dist/tooth-73-DzlwYI23.cjs +1 -0
  152. package/dist/tooth-74-8aGvcZPg.cjs +1 -0
  153. package/dist/tooth-75-BFK7At_r.cjs +1 -0
  154. package/dist/tooth-81-BZmR-I0M.cjs +1 -0
  155. package/dist/tooth-82-euVfUUZV.cjs +1 -0
  156. package/dist/tooth-83-KV010j64.cjs +1 -0
  157. package/dist/tooth-84-BBg1RjhZ.cjs +1 -0
  158. package/dist/tooth-85-Cr-kc1wM.cjs +1 -0
  159. package/dist/utils/functions/classToHex.d.ts +1 -1
  160. package/dist/utils/functions/createHexResolver.d.ts +16 -0
  161. package/dist/vuetifyConfig.js +522 -0
  162. package/dist/vuetifyConfig.umd.cjs +1 -0
  163. package/package.json +37 -20
  164. package/src/assets/amelipro/apTokens2026.scss +5 -5
  165. package/src/assets/overrides/_breakpoints.scss +25 -0
  166. package/src/assets/overrides/_btns.scss +0 -8
  167. package/src/assets/overrides/_forms.scss +1 -3
  168. package/src/assets/overrides/_icons.scss +14 -10
  169. package/src/assets/overrides/_otp.scss +41 -0
  170. package/src/assets/overrides/_tables.scss +11 -20
  171. package/src/assets/overrides/_tooltips.scss +17 -7
  172. package/src/assets/overrides/_typography.scss +35 -47
  173. package/src/assets/overrides/_utilities.scss +43 -47
  174. package/src/assets/themes.scss +1 -0
  175. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +20 -20
  176. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +12 -14
  177. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +4 -6
  178. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.vue +5 -5
  179. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +4 -6
  180. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.vue +4 -6
  181. package/src/components/Amelipro/AmeliproAutoCompleteField/__tests__/__snapshots__/AmeliproAutoCompleteField.spec.ts.snap +2 -2
  182. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.vue +4 -6
  183. package/src/components/Amelipro/AmeliproBreadcrumb/AmeliproBreadcrumb.vue +1 -3
  184. package/src/components/Amelipro/AmeliproBtn/AmeliproBtn.vue +4 -6
  185. package/src/components/Amelipro/AmeliproCallback/AmeliproCallback.vue +2 -2
  186. package/src/components/Amelipro/AmeliproCard/AmeliproCard.vue +31 -31
  187. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.vue +5 -7
  188. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.vue +13 -15
  189. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +23 -23
  190. package/src/components/Amelipro/AmeliproChips/AmeliproChips.vue +1 -3
  191. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +17 -12
  192. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +2 -2
  193. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.vue +4 -6
  194. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +13 -13
  195. package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.vue +4 -2
  196. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +4 -4
  197. package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.vue +5 -7
  198. package/src/components/Amelipro/AmeliproDisclosure/AmeliproDisclosure.vue +1 -3
  199. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +2 -4
  200. package/src/components/Amelipro/AmeliproFilePreview/AmeliproFilePreview.vue +4 -6
  201. package/src/components/Amelipro/AmeliproFilters/AmeliproFilters.vue +13 -13
  202. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +3 -5
  203. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +1 -3
  204. package/src/components/Amelipro/AmeliproHeader/AmeliproHeader.vue +2 -4
  205. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.vue +1 -3
  206. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.vue +20 -16
  207. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +2 -2
  208. package/src/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.vue +2 -4
  209. package/src/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.vue +5 -7
  210. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.vue +6 -8
  211. package/src/components/Amelipro/AmeliproMailTile/AmeliproMailTile.vue +14 -14
  212. package/src/components/Amelipro/AmeliproMenu/AmeliproMenu.vue +11 -13
  213. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenu.vue +2 -4
  214. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingLayout.vue +8 -8
  215. package/src/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.vue +40 -40
  216. package/src/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.vue +27 -27
  217. package/src/components/Amelipro/AmeliproOnboarding/AmeliproOnboarding.vue +3 -5
  218. package/src/components/Amelipro/AmeliproPageLayout/AmeliproPageLayout.vue +2 -4
  219. package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.vue +2 -4
  220. package/src/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.vue +3 -5
  221. package/src/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.vue +1 -3
  222. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +2 -4
  223. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.vue +4 -4
  224. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +1 -3
  225. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +3 -5
  226. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +3 -5
  227. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +23 -23
  228. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +4 -6
  229. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.vue +12 -22
  230. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.vue +10 -12
  231. package/src/components/Amelipro/AmeliproStepper/AmeliproStepper.vue +17 -17
  232. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +8 -10
  233. package/src/components/Amelipro/AmeliproTabs/AmeliproTabBtn/AmeliproTabBtn.vue +6 -8
  234. package/src/components/Amelipro/AmeliproTabs/AmeliproTabs.vue +4 -4
  235. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.vue +4 -6
  236. package/src/components/Amelipro/AmeliproTextArea/__tests__/__snapshots__/AmeliproTextArea.spec.ts.snap +2 -2
  237. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.vue +7 -9
  238. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.vue +3 -5
  239. package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.vue +0 -2
  240. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.vue +6 -6
  241. package/src/components/Amelipro/ServiceMenu/ServiceMenu.vue +2 -2
  242. package/src/components/Amelipro/StructureMenu/StructureBtn/StructureBtn.vue +4 -4
  243. package/src/components/Amelipro/StructureMenu/StructureItem/StructureItem.vue +4 -6
  244. package/src/components/Amelipro/StructureMenu/StructureMenu.vue +2 -2
  245. package/src/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.vue +2 -2
  246. package/src/components/Amelipro/UserMenu/UserMenu.vue +1 -3
  247. package/src/components/BackBtn/tests/BackBtn.visual.cy.ts +43 -0
  248. package/src/components/BackBtn/tests/__snapshots__/back-btn-custom-bg.snap.png +0 -0
  249. package/src/components/BackBtn/tests/__snapshots__/back-btn-dark-mode.snap.png +0 -0
  250. package/src/components/BackBtn/tests/__snapshots__/back-btn-default.snap.png +0 -0
  251. package/src/components/BackBtn/tests/__snapshots__/back-btn-no-icon.snap.png +0 -0
  252. package/src/components/Captcha/Captcha.vue +1 -3
  253. package/src/components/Captcha/accessibilite/Accessibility.mdx +86 -8
  254. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +12 -12
  255. package/src/components/ChipList/ChipList.stories.ts +0 -15
  256. package/src/components/ChipList/ChipList.vue +19 -17
  257. package/src/components/ChipList/accessibilite/Accessibility.mdx +83 -10
  258. package/src/components/ChipList/tests/ChipList.a11y.spec.ts +41 -0
  259. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +0 -2
  260. package/src/components/CopyBtn/CopyBtn.vue +1 -3
  261. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +17 -17
  262. package/src/components/Customs/Selects/SelectBtnField/accessibilite/Accessibility.mdx +0 -9
  263. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +31 -0
  264. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +66 -0
  265. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +28 -7
  266. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +18 -0
  267. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +209 -0
  268. package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +14 -10
  269. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.stories.ts +4 -4
  270. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.vue +12 -15
  271. package/src/components/Customs/Selects/SyInputSelect/tests/SyInputSelect.spec.ts +10 -10
  272. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +1 -39
  273. package/src/components/Customs/Selects/SySelect/SySelect.vue +274 -71
  274. package/src/components/Customs/Selects/SySelect/accessibilite/Accessibility.mdx +199 -269
  275. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +89 -0
  276. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +6 -9
  277. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +5 -0
  278. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +10 -16
  279. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +45 -11
  280. package/src/components/Customs/SyCheckbox/accessibilite/Accessibility.mdx +53 -3
  281. package/src/components/Customs/SyCheckbox/tests/SyCheckbox.a11y.spec.ts +134 -2
  282. package/src/components/Customs/SyForm/SyForm.stories.ts +31 -5
  283. package/src/components/Customs/SyPagination/SyPagination.vue +0 -2
  284. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +4 -7
  285. package/src/components/Customs/SyTabs/SyTabs.mdx +0 -58
  286. package/src/components/Customs/SyTabs/SyTabs.stories.ts +32 -33
  287. package/src/components/Customs/SyTabs/SyTabs.vue +87 -67
  288. package/src/components/Customs/SyTabs/accessibilite/Accessibility.mdx +83 -23
  289. package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +88 -0
  290. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +46 -1
  291. package/src/components/Customs/SyTextField/SyTextField.mdx +1 -1
  292. package/src/components/Customs/SyTextField/SyTextField.stories.ts +50 -68
  293. package/src/components/Customs/SyTextField/SyTextField.vue +156 -161
  294. package/src/components/Customs/SyTextField/tests/SyTextField.a11y.spec.ts +32 -0
  295. package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +120 -11
  296. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +62 -58
  297. package/src/components/DatePicker/CalendarMode/DatePicker.vue +342 -237
  298. package/src/components/DatePicker/CalendarMode/accessibilite/Accessibility.mdx +82 -0
  299. package/src/components/DatePicker/CalendarMode/tests/DatePicker.a11y.spec.ts +141 -0
  300. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +2 -56
  301. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +215 -175
  302. package/src/components/DatePicker/ComplexDatePicker/accessibilite/Accessibility.mdx +76 -0
  303. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +33 -10
  304. package/src/components/DatePicker/DatePickerValidationExample/CalendarMode.stories.ts +8 -8
  305. package/src/components/DatePicker/DatePickerValidationExample/ComplexDatePicker.stories.ts +106 -8
  306. package/src/components/DatePicker/DatePickerValidationExample/DateTextInput.stories.ts +12 -11
  307. package/src/components/DatePicker/DatePickerValidationExample/MultiMode.stories.ts +12 -12
  308. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +0 -12
  309. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +71 -67
  310. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +3 -0
  311. package/src/components/DatePicker/DateTextInput/accessibilite/Accessibility.mdx +66 -0
  312. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.spec.ts +52 -1
  313. package/src/components/DatePicker/composables/index.ts +1 -0
  314. package/src/components/DatePicker/composables/tests/useCalendarKeyboardNavigation.spec.ts +109 -65
  315. package/src/components/DatePicker/composables/tests/useDatePickerFocusTrap.spec.ts +138 -0
  316. package/src/components/DatePicker/composables/tests/useDatePickerState.spec.ts +53 -0
  317. package/src/components/DatePicker/composables/tests/useDateValidation.spec.ts +74 -18
  318. package/src/components/DatePicker/composables/tests/useInputBlurHandler.spec.ts +39 -0
  319. package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +91 -0
  320. package/src/components/DatePicker/composables/useCalendarKeyboardNavigation.ts +442 -36
  321. package/src/components/DatePicker/composables/useDatePickerFocusTrap.ts +92 -0
  322. package/src/components/DatePicker/composables/useDatePickerState.ts +24 -0
  323. package/src/components/DatePicker/composables/useDateTextField.ts +6 -6
  324. package/src/components/DatePicker/composables/useDateValidation.ts +36 -35
  325. package/src/components/DatePicker/composables/useInputBlurHandler.ts +3 -3
  326. package/src/components/DatePicker/composables/useManualDateValidation.ts +6 -2
  327. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +9 -8
  328. package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +1 -1
  329. package/src/components/DiacriticPicker/accessibilite/Accessibility.mdx +76 -8
  330. package/src/components/DialogBox/DialogBox.vue +3 -5
  331. package/src/components/DialogBox/tests/DialogBox.visual.cy.ts +76 -0
  332. package/src/components/DialogBox/tests/__snapshots__/dialog-box-custom-texts.snap.png +0 -0
  333. package/src/components/DialogBox/tests/__snapshots__/dialog-box-default.snap.png +0 -0
  334. package/src/components/DialogBox/tests/__snapshots__/dialog-box-no-actions.snap.png +0 -0
  335. package/src/components/FileList/FileList.vue +9 -2
  336. package/src/components/FileList/UploadItem/UploadItem.vue +11 -13
  337. package/src/components/FileList/tests/FileList.spec.ts +47 -0
  338. package/src/components/FileUpload/FileUpload.vue +3 -5
  339. package/src/components/FileUpload/FileUploadContent.vue +3 -5
  340. package/src/components/FilterInline/FilterInline.vue +1 -3
  341. package/src/components/FilterSideBar/FilterSideBar.mdx +44 -1
  342. package/src/components/FilterSideBar/FilterSideBar.stories.ts +105 -1
  343. package/src/components/FilterSideBar/FilterSideBar.vue +7 -0
  344. package/src/components/FilterSideBar/tests/FilterSideBar.a11y.spec.ts +54 -1
  345. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +42 -0
  346. package/src/components/FooterBar/FooterBar.vue +9 -13
  347. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +1 -1
  348. package/src/components/HeaderBar/HeaderBar.stories.ts +14 -2
  349. package/src/components/HeaderBar/HeaderBar.vue +2 -3
  350. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +2 -3
  351. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +2 -3
  352. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.vue +0 -1
  353. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +8 -9
  354. package/src/components/HeaderBar/HeaderBurgerMenu/menu.scss +0 -8
  355. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.visual.cy.ts +196 -0
  356. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated-submenu-open.snap.png +0 -0
  357. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated.snap.png +0 -0
  358. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +0 -1
  359. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +6 -7
  360. package/src/components/HeaderBar/tests/HeaderBar.visual.cy.ts +81 -0
  361. package/src/components/HeaderBar/tests/__snapshots__/header-bar-custom-width.snap.png +0 -0
  362. package/src/components/HeaderBar/tests/__snapshots__/header-bar-default.snap.png +0 -0
  363. package/src/components/HeaderBar/tests/__snapshots__/header-bar-no-sticky.snap.png +0 -0
  364. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-prepend.snap.png +0 -0
  365. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-side.snap.png +0 -0
  366. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-subtitle.snap.png +0 -0
  367. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +12 -3
  368. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +15 -8
  369. package/src/components/HeaderToolbar/HeaderToolbar.vue +6 -7
  370. package/src/components/LangBtn/LangBtn.vue +2 -4
  371. package/src/components/Logo/accessibilite/Accessibility.mdx +73 -11
  372. package/src/components/Logo/tests/Logo.visual.cy.ts +57 -0
  373. package/src/components/Logo/tests/__snapshots__/logo-avatar.snap.png +0 -0
  374. package/src/components/Logo/tests/__snapshots__/logo-dark.snap.png +0 -0
  375. package/src/components/Logo/tests/__snapshots__/logo-default.snap.png +0 -0
  376. package/src/components/Logo/tests/__snapshots__/logo-no-organism.snap.png +0 -0
  377. package/src/components/Logo/tests/__snapshots__/logo-no-signature.snap.png +0 -0
  378. package/src/components/Logo/tests/__snapshots__/logo-risque-pro.snap.png +0 -0
  379. package/src/components/LogoBrandSection/LogoBrandSection.vue +2 -2
  380. package/src/components/LogoBrandSection/accessibilite/Accessibility.mdx +85 -9
  381. package/src/components/LunarCalendar/tests/LunarCalendar.spec.ts +3 -1
  382. package/src/components/LunarCalendar/useLunarCalendarValidation.ts +4 -5
  383. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +1 -1
  384. package/src/components/MonthPicker/tests/MonthPicker.spec.ts +2 -1
  385. package/src/components/MonthPicker/tests/__snapshots__/MonthPicker.spec.ts.snap +7 -7
  386. package/src/components/NirField/NirField.stories.ts +6 -2
  387. package/src/components/NirField/NirField.vue +67 -265
  388. package/src/components/NirField/accessibilite/Accessibility.mdx +102 -7
  389. package/src/components/NirField/locales.ts +1 -1
  390. package/src/components/NirField/tests/NirField.spec.ts +124 -0
  391. package/src/components/NirField/tests/useNirValidation.spec.ts +449 -0
  392. package/src/components/NirField/useNirValidation.ts +277 -0
  393. package/src/components/NotificationBar/Notification/Notification.vue +5 -7
  394. package/src/components/NotificationBar/NotificationBar.vue +1 -3
  395. package/src/components/PaginatedTable/PaginatedTable.vue +2 -3
  396. package/src/components/PaginatedTable/Pagination.vue +3 -5
  397. package/src/components/PasswordField/PasswordField.stories.ts +4 -4
  398. package/src/components/PasswordField/PasswordField.vue +26 -34
  399. package/src/components/PasswordField/tests/PasswordField.spec.ts +6 -3
  400. package/src/components/PeriodField/PeriodField.stories.ts +4 -4
  401. package/src/components/PeriodField/PeriodField.vue +57 -57
  402. package/src/components/PeriodField/__tests__/PeriodField.async.spec.ts +32 -0
  403. package/src/components/PeriodField/accessibilite/Accessibility.mdx +68 -8
  404. package/src/components/PeriodField/tests/PeriodField.spec.ts +28 -2
  405. package/src/components/PhoneField/PhoneField.vue +8 -9
  406. package/src/components/PhoneField/tests/PhoneField.spec.ts +1 -0
  407. package/src/components/RangeField/RangeField.vue +6 -0
  408. package/src/components/RangeField/RangeSlider/RangeSlider.vue +0 -2
  409. package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -1
  410. package/src/components/RangeField/tests/RangeField.visual.cy.ts +65 -0
  411. package/src/components/RangeField/tests/__snapshots__/range-field-custom-bg.snap.png +0 -0
  412. package/src/components/RangeField/tests/__snapshots__/range-field-custom-range.snap.png +0 -0
  413. package/src/components/RangeField/tests/__snapshots__/range-field-default.snap.png +0 -0
  414. package/src/components/RangeField/tests/__snapshots__/range-field-step.snap.png +0 -0
  415. package/src/components/RangeField/tests/__snapshots__/range-field-with-label.snap.png +0 -0
  416. package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +6 -8
  417. package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +3 -5
  418. package/src/components/SearchListField/SearchListField.vue +0 -2
  419. package/src/components/SkipLink/SkipLink.vue +2 -4
  420. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +6 -6
  421. package/src/components/SubHeader/SubHeader.vue +1 -1
  422. package/src/components/SyAlert/SyAlert.vue +7 -9
  423. package/src/components/SyAlert/tests/SyAlert.visual.cy.ts +46 -0
  424. package/src/components/SyAlert/tests/__snapshots__/sy-alert-closable.snap.png +0 -0
  425. package/src/components/SyAlert/tests/__snapshots__/sy-alert-error.snap.png +0 -0
  426. package/src/components/SyAlert/tests/__snapshots__/sy-alert-info.snap.png +0 -0
  427. package/src/components/SyAlert/tests/__snapshots__/sy-alert-success.snap.png +0 -0
  428. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-outlined.snap.png +0 -0
  429. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-tonal.snap.png +0 -0
  430. package/src/components/SyAlert/tests/__snapshots__/sy-alert-warning.snap.png +0 -0
  431. package/src/components/SyBtnMenu/SyBtnMenu.vue +2 -4
  432. package/src/components/SyTextArea/SyTextArea.stories.ts +138 -2
  433. package/src/components/SyTextArea/SyTextArea.vue +53 -23
  434. package/src/components/SyTextArea/tests/SyTextArea.spec.ts +126 -3
  435. package/src/components/SyTextArea/useDefaultValidationRules.ts +74 -0
  436. package/src/components/TableToolbar/TableToolbar.vue +6 -8
  437. package/src/components/Tables/SyServerTable/SyServerTable.mdx +25 -0
  438. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +839 -1
  439. package/src/components/Tables/SyServerTable/SyServerTable.vue +154 -95
  440. package/src/components/Tables/SyServerTable/tests/SyServerTable.a11y.spec.ts +81 -0
  441. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +390 -0
  442. package/src/components/Tables/SyTable/SyTable.mdx +25 -0
  443. package/src/components/Tables/SyTable/SyTable.stories.ts +556 -1
  444. package/src/components/Tables/SyTable/SyTable.vue +136 -60
  445. package/src/components/Tables/SyTable/tests/SyTable.a11y.spec.ts +79 -0
  446. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +382 -0
  447. package/src/components/Tables/common/SyTableFilter.vue +49 -4
  448. package/src/components/Tables/common/SyTablePagination.vue +142 -19
  449. package/src/components/Tables/common/TableHeader.vue +45 -4
  450. package/src/components/Tables/common/filters/AutocompleteFilter.vue +160 -0
  451. package/src/components/Tables/common/filters/NumberFilter.vue +1 -1
  452. package/src/components/Tables/common/filters/SelectFilter.vue +11 -12
  453. package/src/components/Tables/common/filters/TextFilter.vue +1 -1
  454. package/src/components/Tables/common/filters/getFilterComponent.ts +8 -1
  455. package/src/components/Tables/common/filters/locales.ts +0 -1
  456. package/src/components/Tables/common/filters/tests/AutocompleteFilter.a11y.spec.ts +110 -0
  457. package/src/components/Tables/common/filters/tests/AutocompleteFilter.spec.ts +203 -0
  458. package/src/components/Tables/common/filters/tests/SelectFilter.a11y.spec.ts +104 -0
  459. package/src/components/Tables/common/filters/tests/SelectFilter.spec.ts +152 -16
  460. package/src/components/Tables/common/locales.ts +3 -0
  461. package/src/components/Tables/common/tableFilterUtils.ts +3 -0
  462. package/src/components/Tables/common/tableStyles.scss +60 -19
  463. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +18 -0
  464. package/src/components/Tables/common/tests/TableHeader.spec.ts +39 -0
  465. package/src/components/Tables/common/tests/filterByRange.spec.ts +2 -1
  466. package/src/components/Tables/common/types.ts +15 -4
  467. package/src/components/Tables/common/useClickableTableRow.ts +103 -0
  468. package/src/components/Tables/common/usePagination.ts +13 -0
  469. package/src/components/Tables/common/usePinnedColumns.ts +237 -0
  470. package/src/components/Tables/common/useTableHeaders.ts +52 -30
  471. package/src/components/Tables/common/useTableRowCheckboxAccessibility.ts +41 -0
  472. package/src/components/UploadWorkflow/UploadWorkflow.vue +1 -0
  473. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +23 -0
  474. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +66 -0
  475. package/src/components/UploadWorkflow/useFileList.ts +3 -0
  476. package/src/components/UserMenuBtn/UserMenuBtn.vue +1 -3
  477. package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +2 -6
  478. package/src/composables/date/useDatePickerAccessibility.ts +42 -207
  479. package/src/composables/rules/tests/useFieldValidation.spec.ts +120 -120
  480. package/src/composables/rules/useFieldValidation.ts +34 -17
  481. package/src/composables/unifyValidation/documentationValidationProps.ts +235 -0
  482. package/src/composables/unifyValidation/tests/useCustomValidation.spec.ts +601 -0
  483. package/src/composables/unifyValidation/tests/useValidation.spec.ts +2048 -0
  484. package/src/composables/unifyValidation/tests/useVuetifyValidation.spec.ts +184 -0
  485. package/src/composables/unifyValidation/useCustomValidation.ts +95 -0
  486. package/src/composables/unifyValidation/useValidation.ts +190 -0
  487. package/src/composables/unifyValidation/useVuetifyValidation.ts +54 -0
  488. package/src/composables/useFormFieldErrorHandling.ts +4 -7
  489. package/src/composables/validation/tests/useFormValidation.spec.ts +14 -0
  490. package/src/composables/validation/tests/useValidation.spec.ts +116 -21
  491. package/src/composables/validation/useFormValidation.ts +20 -13
  492. package/src/composables/validation/useValidatable.ts +8 -1
  493. package/src/composables/validation/useValidation.ts +151 -99
  494. package/src/composantsVuetify/Introduction.mdx +48 -0
  495. package/src/composantsVuetify/VBreadcrumbs/VBreadcrumbs.mdx +28 -0
  496. package/src/composantsVuetify/VBreadcrumbs/v-breadcrumbs.stories.ts +108 -0
  497. package/src/composantsVuetify/VBtn/VBtn.mdx +72 -0
  498. package/src/composantsVuetify/VBtn/v-btn.stories.ts +121 -0
  499. package/src/composantsVuetify/VOtpInput/VOtpInput.mdx +39 -0
  500. package/src/composantsVuetify/VOtpInput/v-otp-input.stories.ts +56 -0
  501. package/src/composantsVuetify/VSkeletonLoader/VSkeletonLoader.mdx +42 -0
  502. package/src/composantsVuetify/VSkeletonLoader/v-skeleton-loader.stories.ts +77 -0
  503. package/src/composantsVuetify/VSwitch/VSwitch.mdx +47 -0
  504. package/src/composantsVuetify/VSwitch/v-switch.stories.ts +166 -0
  505. package/src/composantsVuetify/VTooltip/VTooltip.mdx +32 -0
  506. package/src/composantsVuetify/VTooltip/v-tooltip.stories.ts +95 -0
  507. package/src/designTokens/tests/buildColorClassMap.spec.ts +31 -0
  508. package/src/designTokens/tests/generateScssTokens.spec.ts +12 -0
  509. package/src/designTokens/tests/themeUtils.spec.ts +53 -0
  510. package/src/designTokens/tokens/amelipro/apColors.ts +8 -130
  511. package/src/designTokens/tokens/amelipro/apColors2026.ts +3 -15
  512. package/src/designTokens/tokens/amelipro/apContextual.ts +55 -47
  513. package/src/designTokens/tokens/amelipro/apLightTheme.ts +1 -1
  514. package/src/designTokens/tokens/amelipro/apSemantic.ts +1 -1
  515. package/src/designTokens/tokens/baseColors.ts +129 -0
  516. package/src/designTokens/tokens/baseContextualTokens.ts +52 -0
  517. package/src/designTokens/tokens/cnam/cnamColors.ts +3 -125
  518. package/src/designTokens/tokens/cnam/cnamContextual.ts +4 -48
  519. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +1 -1
  520. package/src/designTokens/tokens/cnam/cnamSemantic.ts +3 -3
  521. package/src/designTokens/tokens/pa/paColors.ts +2 -166
  522. package/src/designTokens/tokens/pa/paContextual.ts +3 -48
  523. package/src/designTokens/tokens/pa/paLightTheme.ts +1 -1
  524. package/src/designTokens/tokens/pa/paSemantic.ts +2 -2
  525. package/src/designTokens/utils/buildColorClassMap.ts +34 -0
  526. package/src/designTokens/utils/convertSemanticsToken.ts +8 -11
  527. package/src/designTokens/utils/createFlattenTheme.ts +15 -7
  528. package/src/designTokens/utils/index.ts +2 -2
  529. package/src/main.ts +0 -2
  530. package/src/stories/Accessibilite/AuditDesignSystem.mdx +0 -11
  531. package/src/stories/Accessibilite/DesignSystem/Avancement.mdx +433 -0
  532. package/src/stories/Accessibilite/DesignSystem/a11y-status.json +692 -0
  533. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +8 -1
  534. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +51 -10
  535. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +16 -9
  536. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +48 -58
  537. package/src/stories/Components/Components.stories.ts +113 -9
  538. package/src/stories/Demarrer/Accueil.stories.ts +3 -3
  539. package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +4 -9
  540. package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +28 -0
  541. package/src/stories/Demarrer/Releases.stories.ts +48 -5
  542. package/src/stories/DesignTokens/ColorDisplay.vue +6 -5
  543. package/src/stories/DesignTokens/ColorIntegrationExample.vue +2 -4
  544. package/src/stories/DesignTokens/colors.stories.ts +5 -6
  545. package/src/stories/GuideDuDev/Amelipro.mdx +15 -0
  546. package/src/stories/GuideDuDev/Amelipro.stories.ts +209 -0
  547. package/src/stories/GuideDuDev/CreateVuetifyInstance.mdx +95 -0
  548. package/src/stories/GuideDuDev/Theme.mdx +36 -26
  549. package/src/stories/GuideDuDev/moduleDeNotification.mdx +3 -2
  550. package/src/stories/GuideDuDev/vuetifyOptions.mdx +3 -3
  551. package/src/stories/styles/accessibility-guide.css +3 -3
  552. package/src/utils/functions/classToHex.ts +6 -34
  553. package/src/utils/functions/createHexResolver.ts +45 -0
  554. package/src/utils/functions/tests/classToHex.spec.ts +36 -0
  555. package/src/utils/functions/tests/convertToHex.spec.ts +31 -0
  556. package/src/utils/functions/tests/createHexResolver.spec.ts +66 -0
  557. package/src/utils/functions/tests/isCssColor.spec.ts +48 -0
  558. package/dist/SelectFilter-BioGT6Nn.js +0 -136
  559. package/dist/designTokens/utils/convertGaps.d.ts +0 -5
  560. package/dist/main-aLKwdMi1.js +0 -37886
  561. package/dist/style.css +0 -1
  562. package/src/assets/apTokens.scss +0 -343
  563. package/src/assets/overrides/_container.scss +0 -36
  564. package/src/assets/tokens.scss +0 -388
  565. package/src/components/DatePicker/Accessibilite.mdx +0 -14
  566. package/src/designTokens/apColors.md +0 -66
  567. package/src/designTokens/cnamColors.md +0 -193
  568. package/src/designTokens/paColors.md +0 -66
  569. package/src/designTokens/tokens/json/contextual-tokens.json +0 -156
  570. package/src/designTokens/tokens/json/primitives.json +0 -209
  571. package/src/designTokens/tokens/json/semantic.json +0 -120
  572. package/src/designTokens/utils/convertGaps.ts +0 -11
  573. package/src/stories/Accessibilite/Avancement/Avancement.mdx +0 -533
  574. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +0 -306
@@ -0,0 +1,209 @@
1
+ import {
2
+ VDivider,
3
+ VExpansionPanel,
4
+ VExpansionPanels,
5
+ VExpansionPanelText,
6
+ VExpansionPanelTitle,
7
+ } from 'vuetify/components'
8
+ import type { StoryObj } from '@storybook/vue3'
9
+
10
+ export default {
11
+ title: 'Guide Du Dev/Correspondance composants Amelipro',
12
+ }
13
+
14
+ export const ApComponents: StoryObj = {
15
+ render: () => {
16
+ return {
17
+ components: {
18
+ VExpansionPanels,
19
+ VExpansionPanel,
20
+ VExpansionPanelTitle,
21
+ VExpansionPanelText,
22
+ VDivider,
23
+ },
24
+ setup() {
25
+ return {}
26
+ },
27
+ template: `
28
+ <VExpansionPanels>
29
+
30
+ <VExpansionPanel>
31
+ <VExpansionPanelTitle class="font-weight-bold">
32
+ FooterBar
33
+ </VExpansionPanelTitle>
34
+ <VExpansionPanelText>
35
+ <p>
36
+ Le composant <span class="component-name">AmeliproFooter</span> est remplacé par le composant
37
+ <span class="component-name">FooterBar</span> de Synapse.
38
+ <br>
39
+ <a href="https://cnam-design-system.netlify.app/?path=/docs/composants-structure-footerbar--docs"
40
+ target="_blank" rel="noopener noreferrer"
41
+ >
42
+ Documentation du composant Synapse FooterBar
43
+ </a>
44
+ </p>
45
+ <p class="mt-4">
46
+ <VDivider class="pb-2"/>
47
+ <a href="https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-footer">
48
+ Documentation du composant AmeliproFooter correspondant
49
+ </a>
50
+ </p>
51
+ </VExpansionPanelText>
52
+ </VExpansionPanel>
53
+
54
+ <VExpansionPanel>
55
+ <VExpansionPanelTitle class="font-weight-bold">
56
+ HeaderBar
57
+ </VExpansionPanelTitle>
58
+ <VExpansionPanelText>
59
+ <p>
60
+ Le composant <span class="component-name">AmeliproHeader</span> est remplacé par le composant
61
+ <span class="component-name">HeaderBar</span> de Synapse.
62
+ <br>
63
+ <a href="https://cnam-design-system.netlify.app/?path=/docs/composants-structure-headerbar--docs"
64
+ target="_blank" rel="noopener noreferrer"
65
+ >
66
+ Documentation du composant Synapse HeaderBar
67
+ </a>
68
+ </p>
69
+ <p class="mt-4">
70
+ <VDivider class="pb-2"/>
71
+ <a href="https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-header">
72
+ Documentation du composant AmeliproHeader correspondant
73
+ </a>
74
+ </p>
75
+ </VExpansionPanelText>
76
+ </VExpansionPanel>
77
+
78
+ <VExpansionPanel>
79
+ <VExpansionPanelTitle class="font-weight-bold">
80
+ Boutons
81
+ </VExpansionPanelTitle>
82
+ <VExpansionPanelText>
83
+ <p>
84
+ Les boutons de bases peuvent êtres crées en utilisant le composant <span class="component-name">VBtn</span>
85
+ de Vuetify.
86
+ <br>
87
+ <a href="https://vuetifyjs.com/api/v-btn" target="_blank" rel="noopener noreferrer">
88
+ Documentation du composant Vuetify Vbtn
89
+ </a>
90
+ </p>
91
+
92
+ <div class="mt-4">
93
+ <pre>
94
+ &lt;VBtn color=&quot;primary&quot;&gt;
95
+ Bouton d’action primaire
96
+ &lt;/VBtn&gt;
97
+ &lt;VBtn&gt;
98
+ Bouton d’action par d&#233;faut
99
+ &lt;/VBtn&gt;
100
+ </pre>
101
+ </div>
102
+
103
+ <p class="mt-4">
104
+ Les boutons case à cocher ou radio peuvent êtres crées avec le composant Vuetify <span
105
+ class="component-name"
106
+ >VBtnToggle</span>.
107
+ <a href="https://vuetifyjs.com/components/button-groups" target="_blank"
108
+ rel="noopener noreferrer"
109
+ >
110
+ Documentation du composant Vuetify VBtnToggle
111
+ </a>
112
+ </p>
113
+ <p class="mt-6">
114
+ <VDivider class="pb-2"/>
115
+ <a href="https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-btn">
116
+ Documentation du composant AmeliproBtn correspondant
117
+ </a>
118
+ </p>
119
+ </VExpansionPanelText>
120
+ </VExpansionPanel>
121
+
122
+ <VExpansionPanel>
123
+ <VExpansionPanelTitle class="font-weight-bold">
124
+ Tooltips
125
+ </VExpansionPanelTitle>
126
+ <VExpansionPanelText>
127
+ <p>
128
+ Les tooltips de bases peuvent êtres crées en utilisant le composant <span class="component-name">Vtooltip</span>
129
+ de Vuetify.
130
+ <br>
131
+ <a href="https://vuetifyjs.com/en/api/v-tooltip" target="_blank" rel="noopener noreferrer">
132
+ Documentation du composant Vuetify Vtooltip
133
+ </a>
134
+ </p>
135
+
136
+ <div class="mt-4">
137
+ <pre>
138
+ &lt;v-tooltip text=&quot;Tooltip&quot;&gt;
139
+ &lt;template v-slot:activator=&quot;{ props }&quot;&gt;
140
+ &lt;v-btn v-bind=&quot;props&quot;&gt;
141
+ Hover Over Me
142
+ &lt;/v-btn&gt;
143
+ &lt;/template&gt;
144
+ &lt;/v-tooltip&gt;
145
+ </pre>
146
+ </div>
147
+
148
+ <p class="mt-6">
149
+ <VDivider class="pb-2"/>
150
+ <a href="https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-tooltips">
151
+ Documentation du composant AmeliproTooltips correspondant
152
+ </a>
153
+ </p>
154
+ </VExpansionPanelText>
155
+ </VExpansionPanel>
156
+ <VExpansionPanel>
157
+ <VExpansionPanelTitle class="font-weight-bold">
158
+ Layout
159
+ </VExpansionPanelTitle>
160
+ <VExpansionPanelText>
161
+ <p>
162
+ Le composant <span class="component-name">AmeliproContentLayout</span> est remplacé par le
163
+ composant
164
+ <span class="component-name">PageContainer</span> de Synapse.
165
+ <br>
166
+ <a href="https://cnam-design-system.netlify.app/?path=/docs/composants-layout-pagecontainer--docs"
167
+ target="_blank" rel="noopener noreferrer"
168
+ >
169
+ Documentation du composant Synapse PageContainer
170
+ </a>
171
+ </p>
172
+ <p class="mt-4">
173
+ <VDivider class="pb-2"/>
174
+ <a href="https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-content-layout">
175
+ Documentation du composant AmeliproContentLayout correspondant
176
+ </a>
177
+ </p>
178
+ </VExpansionPanelText>
179
+ </VExpansionPanel>
180
+ <VExpansionPanel>
181
+ <VExpansionPanelTitle class="font-weight-bold">
182
+ Pagination
183
+ </VExpansionPanelTitle>
184
+ <VExpansionPanelText>
185
+ <p>
186
+ Le composant <span class="component-name">AmeliproPagination</span> est remplacé par le
187
+ composant
188
+ <span class="component-name">SyPagination</span> de Synapse.
189
+ <br>
190
+ <a href="https://cnam-design-system.netlify.app/?path=/docs/composants-navigation-sypagination--docs"
191
+ target="_blank" rel="noopener noreferrer"
192
+ >
193
+ Documentation du composant Synapse SyPagination
194
+ </a>
195
+ </p>
196
+ <p class="mt-4">
197
+ <VDivider class="pb-2"/>
198
+ <a href="https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-pagination">
199
+ Documentation du composant AmeliproPagination correspondant
200
+ </a>
201
+ </p>
202
+ </VExpansionPanelText>
203
+ </VExpansionPanel>
204
+ </VExpansionPanels>
205
+ `,
206
+ }
207
+ },
208
+ tags: ['!dev'],
209
+ }
@@ -0,0 +1,95 @@
1
+ import { Meta, Source } from '@storybook/addon-docs/blocks';
2
+ import '../styles/shared.css';
3
+
4
+ <Meta title="Guide Du Dev/createVuetifyInstance" />
5
+
6
+ <div className="header">
7
+ <h1>createVuetifyInstance</h1>
8
+ </div>
9
+
10
+ `createVuetifyInstance` est une fonction exportée par le design system qui retourne une instance Vuetify pré-configurée avec l'ensemble des thèmes, icônes et options propres à l'écosystème CNAM/PA/Amelipro.
11
+
12
+ Elle remplace l'appel manuel à `createVuetify` et garantit une configuration cohérente entre tous les projets.
13
+
14
+ ## Importation
15
+
16
+ <Source dark code={`import { createVuetifyInstance } from '@cnamts/synapse/vuetifyConfig'`} />
17
+
18
+ > **Note** : il s'agit d'un point d'entrée dédié (`/vuetifyConfig`), distinct de l'import principal `@cnamts/synapse`.
19
+
20
+ ## Utilisation dans `main.ts`
21
+
22
+ <Source dark code={`
23
+ import 'vuetify/styles'
24
+ import { createApp } from 'vue'
25
+ import App from './App.vue'
26
+ import { createVuetifyInstance } from '@cnamts/synapse/vuetifyConfig'
27
+
28
+ const vuetify = createVuetifyInstance()
29
+
30
+ createApp(App)
31
+ .use(vuetify)
32
+ .mount('#app')
33
+ `} />
34
+
35
+ ## Thèmes disponibles
36
+
37
+ L'instance inclut les thèmes suivants, utilisables via la prop `theme` sur un composant ou via `defaultTheme` :
38
+
39
+ <table>
40
+ <thead>
41
+ <tr>
42
+ <th>Identifiant</th>
43
+ <th>Application</th>
44
+ </tr>
45
+ </thead>
46
+ <tbody>
47
+ <tr>
48
+ <td><code>cnam</code></td>
49
+ <td>CNAM (défaut)</td>
50
+ </tr>
51
+ <tr>
52
+ <td><code>pa</code></td>
53
+ <td>Portail Agent</td>
54
+ </tr>
55
+ <tr>
56
+ <td><code>ap</code></td>
57
+ <td>Amelipro</td>
58
+ </tr>
59
+ </tbody>
60
+ </table>
61
+
62
+ ## Changer le thème par défaut
63
+
64
+ Pour appliquer un thème différent de `cnam`, passez l'identifiant souhaité à la prop `theme` du composant racine ou via la configuration Vuetify.
65
+
66
+ ### Via le composant racine (recommandé)
67
+
68
+ <Source dark code={`
69
+ <template>
70
+ <VApp theme="pa">
71
+ <!-- votre application -->
72
+ </VApp>
73
+ </template>
74
+ `} />
75
+
76
+ ### Via la configuration Vuetify (alternative)
77
+
78
+ Si vous devez forcer le thème globalement sans modifier le composant racine, vous pouvez accéder à l'instance Vuetify après création :
79
+
80
+ <Source dark code={`
81
+ import { createVuetifyInstance } from '@cnamts/synapse/vuetifyConfig'
82
+
83
+ const vuetify = createVuetifyInstance()
84
+ vuetify.theme.global.name.value = 'pa'
85
+ `} />
86
+
87
+ ## Ce que la fonction configure
88
+
89
+ `createVuetifyInstance` encapsule les éléments suivants :
90
+
91
+ - **Tous les composants et directives Vuetify** (`vuetify/components`, `vuetify/directives`)
92
+ - **Icônes MDI** via `mdi-svg`
93
+ - **Locale française** (`fr`)
94
+ - **Tokens de design** : couleurs, typographie et variables CSS injectées pour chaque thème
95
+ - **Trois thèmes complets** : `cnam`, `pa`, `ap`
@@ -10,39 +10,49 @@ import '../styles/shared.css';
10
10
  </div>
11
11
 
12
12
  Le thème par défaut du Starter kit est celui de la Cnam par défaut.
13
- Si votre projet dépend du Portail Agent, il vous faudra modifier la configuration pour appliquer le thème spécifique à votre ligne de fabrication.
14
-
15
- ## Étapes pour changer le thème du Design System
16
-
17
- ### 1. Modification du fichier main.ts
18
-
19
- 1. Ouvrez le fichier `src/main.ts` dans votre éditeur de code.
20
- 2. Remplacez la valeur de `defaultTheme` par le thème qui correspond à votre projet :
21
- - `cnam` : CNAM
22
- - `pa` : Portail Agent
23
- - `ap2026` : Amelipro
13
+ Si votre projet dépend du Portail Agent ou d'Amelipro, appliquez le thème correspondant à votre ligne de fabrication.
14
+
15
+ Pour configurer Vuetify et changer le thème, utilisez `createVuetifyInstance` — consultez la page [createVuetifyInstance](/docs/guide-du-dev-createvuetifyinstance--docs) pour le détail complet.
16
+
17
+ ## Résumé des thèmes disponibles
18
+
19
+ <table>
20
+ <thead>
21
+ <tr>
22
+ <th>Identifiant</th>
23
+ <th>Application</th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
27
+ <tr>
28
+ <td><code>cnam</code></td>
29
+ <td>CNAM (défaut)</td>
30
+ </tr>
31
+ <tr>
32
+ <td><code>pa</code></td>
33
+ <td>Portail Agent</td>
34
+ </tr>
35
+ <tr>
36
+ <td><code>ap</code></td>
37
+ <td>Amelipro</td>
38
+ </tr>
39
+ </tbody>
40
+ </table>
41
+
42
+ ## Appliquer le thème dans le composant racine
24
43
 
25
44
  <Source dark code={`
26
- import { createApp } from '
27
- import '../styles/shared.css';vue';
28
- ...
29
-
30
- const vuetify = createVuetify({
31
- theme: {
32
- defaultTheme: 'pa',
33
- ...
34
-
45
+ <template>
46
+ <VApp theme="pa">
47
+ <!-- votre application -->
48
+ </VApp>
49
+ </template>
35
50
  `}
36
51
  />
37
52
 
38
- ### 2. Relancer le projet
53
+ Après avoir modifié le thème, relancez le serveur de développement :
39
54
 
40
- Après avoir effectué les modifications dans le fichier de configuration, relancez le serveur de développement pour appliquer les changements :
41
55
  <Source dark code={`
42
56
  pnpm dev
43
57
  `}
44
58
  />
45
-
46
- ### 3. Vérification
47
-
48
- Une fois le projet redémarré, vérifiez que la charte PA est bien appliquée.
@@ -13,12 +13,13 @@ import '../styles/shared.css';
13
13
  ## Importation et utilisation
14
14
 
15
15
  <Source dark code={`
16
- import { useNotificationService } from '
17
- import '../styles/shared.css';@cnamts/synapse'
16
+ import { useNotificationService } from '@cnamts/synapse/modules/notification'
18
17
 
19
18
  const { notificationQueue, addNotification, removeNotification, clearQueue } = useNotificationService()
20
19
  `} />
21
20
 
21
+ > L'entrée `@cnamts/synapse/modules/notification` est déclarée explicitement dans les exports du package.
22
+
22
23
  ## Propriétés et méthodes :
23
24
 
24
25
  <Source dark code={`
@@ -24,7 +24,7 @@ Prenons l'exemple d'un bouton (VBtn).
24
24
  Voici un exemple d'utilisation du composant :
25
25
 
26
26
  <Source dark code={`
27
- <MyButton
27
+ <VBtn
28
28
  :title="'Cliquez ici'"
29
29
  :vuetifyOptions="{ btn: { color: 'secondary', icon: true } }"
30
30
  />
@@ -47,7 +47,7 @@ Dans cet exemple :
47
47
  Voici un exemple plus complet :
48
48
 
49
49
  <Source dark code={`
50
- <MyButton
50
+ <VBtn
51
51
  :title="'Valider'"
52
52
  :vuetifyOptions="{ btn: { color: 'primary', outlined: false, icon: true } }"
53
53
  />
@@ -69,7 +69,7 @@ Exemple de bouton par défaut
69
69
  Sans fournir de vuetifyOptions, le bouton pourrait ressembler à ceci :
70
70
 
71
71
  <Source dark code={`
72
- <MyButton :title="'Par défaut'" />
72
+ <VBtn :title="'Par défaut'" />
73
73
  `} />
74
74
 
75
75
  Ce bouton utilisera les options par défaut définies dans le design system, telles que la couleur, le style de bordure ou les icônes.
@@ -76,7 +76,7 @@
76
76
  .criteria-header h3 {
77
77
  margin: 0;
78
78
  font-size: 1.4rem;
79
- color: #1976d2;
79
+ color: rgb(var(--v-theme-primary));
80
80
  margin-top: 0.5rem !important;
81
81
  margin-bottom: 0.5rem !important;
82
82
  }
@@ -131,14 +131,14 @@
131
131
  }
132
132
 
133
133
  .resources-section a {
134
- color: #1976d2;
134
+ color: rgb(var(--v-theme-primary));
135
135
  text-decoration: none;
136
136
  border-bottom: 1px dotted;
137
137
  transition: color 0.2s ease;
138
138
  }
139
139
 
140
140
  .resources-section a:hover {
141
- color: #0d47a1;
141
+ color: rgb(var(--v-theme-secondary));
142
142
  }
143
143
 
144
144
  @media (width <= 768px) {
@@ -1,38 +1,10 @@
1
1
  import { apLightTheme2026 } from '@/designTokens/tokens/amelipro/apLightTheme2026'
2
2
  import { apColorsTokens2026 } from '@/designTokens/tokens/amelipro/apColors2026'
3
3
  import { AmeliproColors } from './ameliproColors/ameliproColors'
4
+ import { createHexResolver } from './createHexResolver'
4
5
 
5
- const currentTheme = apLightTheme2026
6
- const ameliproColors = AmeliproColors
7
- const colors = apColorsTokens2026 as unknown as Record<string, Record<string, string>>
8
- export function classToHex(color: string): string | undefined {
9
- color = color.trim()
10
- color = color.replace(/-./, x => x[1]!.toUpperCase())
11
- color = color.replace('-', ' ')
12
- // eslint-disable-next-line prefer-const
13
- let [colorName, colorModifier] = color.split(' ', 2) as (string | undefined)[]
14
- colorModifier = colorModifier?.replace('-', '')
15
- let fullColorName = ''
16
- let hexColor: string | undefined = undefined
17
- if (colorName && colorName in colors) {
18
- if (colorModifier && colorModifier in colors[colorName]!) {
19
- hexColor = colors[colorName]![colorModifier]!
20
- }
21
- else if ('base' in colors[colorName]!) {
22
- hexColor = colors[colorName].base
23
- }
24
- }
25
- else if (colorName && colorName in currentTheme) {
26
- hexColor = currentTheme[colorName]
27
- }
28
- else if (color && colorName) {
29
- if (colorModifier === undefined) {
30
- fullColorName = colorName
31
- }
32
- else {
33
- fullColorName = colorName + colorModifier
34
- }
35
- hexColor = ameliproColors[fullColorName]?.hexColor
36
- }
37
- return hexColor
38
- }
6
+ export const classToHex = createHexResolver(
7
+ apLightTheme2026,
8
+ apColorsTokens2026 as unknown as Record<string, Record<string, string>>,
9
+ AmeliproColors,
10
+ )
@@ -0,0 +1,45 @@
1
+ type Theme = Record<string, string>
2
+ type ColorsMap = Record<string, Record<string, string>>
3
+ type LegacyColors = Record<string, { hexColor: string }>
4
+
5
+ /**
6
+ * Creates a resolver that converts a color class name (e.g. "ap-blue-lighten-1")
7
+ * into a hex value for the given theme and color palette.
8
+ *
9
+ * Lookup order:
10
+ * 1. colors map: colorName + optional modifier (e.g. apBlue.lighten1)
11
+ * 2. theme map: direct key lookup (e.g. primary, secondary)
12
+ * 3. legacyColors map: flat key lookup (e.g. apBluelighten1.hexColor)
13
+ */
14
+ export function createHexResolver(
15
+ theme: Theme,
16
+ colors: ColorsMap,
17
+ legacyColors?: LegacyColors,
18
+ ): (color: string) => string | undefined {
19
+ return function resolveHex(color: string): string | undefined {
20
+ color = color.trim()
21
+ color = color.replace(/-./, x => x[1]!.toUpperCase())
22
+ color = color.replace('-', ' ')
23
+
24
+ // eslint-disable-next-line prefer-const
25
+ let [colorName, colorModifier] = color.split(' ', 2) as (string | undefined)[]
26
+ colorModifier = colorModifier?.replace('-', '')
27
+
28
+ if (colorName && colorName in colors) {
29
+ if (colorModifier && colorModifier in colors[colorName]!)
30
+ return colors[colorName]![colorModifier]!
31
+ if ('base' in colors[colorName]!)
32
+ return colors[colorName].base
33
+ }
34
+
35
+ if (colorName && colorName in theme)
36
+ return theme[colorName]
37
+
38
+ if (legacyColors && colorName) {
39
+ const fullColorName = colorModifier === undefined ? colorName : colorName + colorModifier
40
+ return legacyColors[fullColorName]?.hexColor
41
+ }
42
+
43
+ return undefined
44
+ }
45
+ }
@@ -0,0 +1,36 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { classToHex } from '../classToHex'
3
+
4
+ describe('classToHex', () => {
5
+ it('resolves a camelCase color name to its base hex value', () => {
6
+ expect(classToHex('apBlue')).toBe('#0C419A')
7
+ })
8
+
9
+ it('resolves a kebab-case color name', () => {
10
+ expect(classToHex('ap-blue')).toBe('#0C419A')
11
+ })
12
+
13
+ it('resolves a color name with a modifier', () => {
14
+ expect(classToHex('ap-blue-darken-1')).toBe('#00749C')
15
+ })
16
+
17
+ it('falls back to base when modifier is not found', () => {
18
+ expect(classToHex('ap-blue-unknown')).toBe('#0C419A')
19
+ })
20
+
21
+ it('resolves theme keys like "primary"', () => {
22
+ expect(classToHex('primary')).toBe('#00749C')
23
+ })
24
+
25
+ it('resolves legacy color names via AmeliproColors', () => {
26
+ expect(classToHex('apBluelighten1')).toBe('#99DBF2')
27
+ })
28
+
29
+ it('returns undefined for completely unknown color', () => {
30
+ expect(classToHex('not-a-color')).toBeUndefined()
31
+ })
32
+
33
+ it('trims whitespace from input', () => {
34
+ expect(classToHex(' apBlue ')).toBe('#0C419A')
35
+ })
36
+ })
@@ -0,0 +1,31 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { convertToHex } from '../convertToHex'
3
+
4
+ describe('convertToHex', () => {
5
+ it('returns the color as-is when it is a valid CSS color', () => {
6
+ expect(convertToHex('#fff')).toBe('#fff')
7
+ expect(convertToHex('#0c419a')).toBe('#0c419a')
8
+ expect(convertToHex('rgb(0, 0, 0)')).toBe('rgb(0, 0, 0)')
9
+ expect(convertToHex('var(--color-primary)')).toBe('var(--color-primary)')
10
+ })
11
+
12
+ it('converts "white" to #FFF', () => {
13
+ expect(convertToHex('white')).toBe('#FFF')
14
+ })
15
+
16
+ it('converts "black" to #000', () => {
17
+ expect(convertToHex('black')).toBe('#000')
18
+ })
19
+
20
+ it('converts "transparent" to transparent', () => {
21
+ expect(convertToHex('transparent')).toBe('transparent')
22
+ })
23
+
24
+ it('returns #000 for undefined', () => {
25
+ expect(convertToHex(undefined)).toBe('#000')
26
+ })
27
+
28
+ it('returns #000 for unknown class names', () => {
29
+ expect(convertToHex('not-a-real-color-class')).toBe('#000')
30
+ })
31
+ })
@@ -0,0 +1,66 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { createHexResolver } from '../createHexResolver'
3
+
4
+ const colors = {
5
+ apBlue: { base: '#0c419a', darken1: '#00749c', lighten1: '#99dbf2' },
6
+ apRed: { base: '#b33f2e' },
7
+ }
8
+
9
+ const theme = {
10
+ primary: '#00749c',
11
+ secondary: '#00516d',
12
+ }
13
+
14
+ const legacy = {
15
+ apBluelighten1: { hexColor: '#99dbf2' },
16
+ apBlue: { hexColor: '#0c419a' },
17
+ }
18
+
19
+ describe('createHexResolver', () => {
20
+ it('resolves a color name to its base value', () => {
21
+ const resolve = createHexResolver(theme, colors)
22
+ expect(resolve('apBlue')).toBe('#0c419a')
23
+ })
24
+
25
+ it('resolves a color name with a modifier', () => {
26
+ const resolve = createHexResolver(theme, colors)
27
+ // "ap-blue-darken-1" → apBlue.darken1
28
+ expect(resolve('ap-blue-darken-1')).toBe('#00749c')
29
+ })
30
+
31
+ it('falls back to base when modifier is not found', () => {
32
+ const resolve = createHexResolver(theme, colors)
33
+ // "ap-blue-unknownmod": first -b→B gives "apBlue-unknownmod",
34
+ // then first -→space gives "apBlue unknownmod" → modifier not found → falls back to base
35
+ expect(resolve('ap-blue-unknownmod')).toBe('#0c419a')
36
+ })
37
+
38
+ it('falls back to theme map', () => {
39
+ const resolve = createHexResolver(theme, colors)
40
+ expect(resolve('primary')).toBe('#00749c')
41
+ expect(resolve('secondary')).toBe('#00516d')
42
+ })
43
+
44
+ it('falls back to legacyColors map', () => {
45
+ const resolve = createHexResolver(theme, colors, legacy)
46
+ expect(resolve('ap-blue-lighten-1')).toBe('#99dbf2')
47
+ })
48
+
49
+ it('returns undefined for unknown color', () => {
50
+ const resolve = createHexResolver(theme, colors)
51
+ expect(resolve('nonexistent-color')).toBeUndefined()
52
+ })
53
+
54
+ it('trims whitespace from input', () => {
55
+ const resolve = createHexResolver(theme, colors)
56
+ expect(resolve(' apBlue ')).toBe('#0c419a')
57
+ })
58
+
59
+ it('is independent — two resolvers with different themes return different values', () => {
60
+ const theme2 = { primary: '#ff0000' }
61
+ const resolveA = createHexResolver(theme, colors)
62
+ const resolveB = createHexResolver(theme2, colors)
63
+ expect(resolveA('primary')).toBe('#00749c')
64
+ expect(resolveB('primary')).toBe('#ff0000')
65
+ })
66
+ })