@cnamts/synapse 0.0.3-alpha → 0.0.5-alpha

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 (300) hide show
  1. package/dist/design-system-v3.d.ts +1461 -68
  2. package/dist/design-system-v3.js +4775 -1673
  3. package/dist/design-system-v3.umd.cjs +10 -1
  4. package/dist/style.css +1 -1
  5. package/package.json +6 -2
  6. package/src/assets/tokens.scss +0 -1
  7. package/src/components/Alert/Accessibilite.mdx +14 -0
  8. package/src/components/Alert/Accessibilite.stories.ts +166 -0
  9. package/src/components/Alert/AccessibiliteItems.ts +152 -0
  10. package/src/components/Alert/Alert.mdx +1 -1
  11. package/src/components/Alert/Alert.stories.ts +91 -1
  12. package/src/components/Alert/constants/ExpertiseLevelEnum.ts +4 -0
  13. package/src/components/BackBtn/Accessibilite.mdx +14 -0
  14. package/src/components/BackBtn/Accessibilite.stories.ts +166 -0
  15. package/src/components/BackBtn/AccessibiliteItems.ts +132 -0
  16. package/src/components/BackBtn/BackBtn.mdx +1 -1
  17. package/src/components/BackBtn/BackBtn.stories.ts +84 -1
  18. package/src/components/BackBtn/constants/ExpertiseLevelEnum.ts +4 -0
  19. package/src/components/BackToTopBtn/Accessibilite.mdx +14 -0
  20. package/src/components/BackToTopBtn/Accessibilite.stories.ts +166 -0
  21. package/src/components/BackToTopBtn/AccessibiliteItems.ts +82 -0
  22. package/src/components/BackToTopBtn/BackToTopBtn.mdx +3 -3
  23. package/src/components/BackToTopBtn/BackToTopBtn.stories.ts +172 -11
  24. package/src/components/BackToTopBtn/constants/ExpertiseLevelEnum.ts +4 -0
  25. package/src/components/CollapsibleList/Accessibilite.mdx +14 -0
  26. package/src/components/CollapsibleList/Accessibilite.stories.ts +166 -0
  27. package/src/components/CollapsibleList/AccessibiliteItems.ts +129 -0
  28. package/src/components/CollapsibleList/CollapsibleList.mdx +2 -2
  29. package/src/components/CollapsibleList/CollapsibleList.stories.ts +37 -1
  30. package/src/components/CollapsibleList/constants/ExpertiseLevelEnum.ts +4 -0
  31. package/src/components/CopyBtn/Accessibilite.mdx +14 -0
  32. package/src/components/CopyBtn/Accessibilite.stories.ts +166 -0
  33. package/src/components/CopyBtn/AccessibiliteItems.ts +135 -0
  34. package/src/components/CopyBtn/CopyBtn.mdx +1 -1
  35. package/src/components/CopyBtn/CopyBtn.stories.ts +120 -1
  36. package/src/components/CopyBtn/CopyBtn.vue +1 -1
  37. package/src/components/CopyBtn/config.ts +2 -0
  38. package/src/components/CopyBtn/constants/ExpertiseLevelEnum.ts +4 -0
  39. package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +44 -0
  40. package/src/components/Customs/SyBtnSelect/SyBtnSelect.stories.ts +606 -0
  41. package/src/components/Customs/SyBtnSelect/SyBtnSelect.vue +246 -0
  42. package/src/components/Customs/SyBtnSelect/tests/SyBtnSelect.spec.ts +168 -0
  43. package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +40 -0
  44. package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +420 -0
  45. package/src/components/Customs/{CustomInputSelect/CustomInputSelect.vue → SyInputSelect/SyInputSelect.vue} +89 -54
  46. package/src/components/Customs/SyInputSelect/config.ts +10 -0
  47. package/src/components/Customs/SyInputSelect/tests/SyInputSelect.spec.ts +140 -0
  48. package/src/components/Customs/{CustomSelect/CustomSelect.mdx → SySelect/SySelect.mdx} +10 -10
  49. package/src/components/Customs/SySelect/SySelect.stories.ts +338 -0
  50. package/src/components/Customs/{CustomSelect/CustomSelect.vue → SySelect/SySelect.vue} +34 -11
  51. package/src/components/Customs/{CustomInputSelect/tests/CustomInputSelect.spec.ts → SySelect/tests/SySelect.spec.ts} +48 -71
  52. package/src/components/Customs/SyTextField/SyTextField.mdx +44 -0
  53. package/src/components/Customs/SyTextField/SyTextField.stories.ts +403 -0
  54. package/src/components/Customs/SyTextField/SyTextField.vue +110 -0
  55. package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +93 -0
  56. package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +57 -0
  57. package/src/components/Customs/SyTextField/types.d.ts +3 -0
  58. package/src/components/DataList/DataList.mdx +77 -0
  59. package/src/components/DataList/DataList.stories.ts +960 -0
  60. package/src/components/DataList/DataList.vue +140 -0
  61. package/src/components/DataList/DataListLoading/DataListLoading.vue +56 -0
  62. package/src/components/DataList/DataListLoading/tests/DataListLoading.spec.ts +23 -0
  63. package/src/components/DataList/locales.ts +3 -0
  64. package/src/components/DataList/tests/DataList.spec.ts +194 -0
  65. package/src/components/DataList/types.d.ts +23 -0
  66. package/src/components/DataListGroup/DataListGroup.mdx +77 -0
  67. package/src/components/DataListGroup/DataListGroup.stories.ts +987 -0
  68. package/src/components/DataListGroup/DataListGroup.vue +59 -0
  69. package/src/components/DataListGroup/tests/DataListGroup.spec.ts +54 -0
  70. package/src/components/DataListGroup/tests/data/dataListGroupItems.ts +41 -0
  71. package/src/components/DataListGroup/types.d.ts +15 -0
  72. package/src/components/DataListItem/DataListItem.vue +135 -0
  73. package/src/components/DataListItem/config.ts +17 -0
  74. package/src/components/DataListItem/locales.ts +3 -0
  75. package/src/components/DataListItem/tests/DataListItem.spec.ts +156 -0
  76. package/src/components/DataListItem/types.d.ts +23 -0
  77. package/src/components/DialogBox/DialogBox.mdx +14 -0
  78. package/src/components/DialogBox/DialogBox.stories.ts +798 -0
  79. package/src/components/DialogBox/DialogBox.vue +181 -0
  80. package/src/components/DialogBox/config.ts +25 -0
  81. package/src/components/DialogBox/locales.ts +5 -0
  82. package/src/components/DialogBox/tests/DialogBox.spec.ts +329 -0
  83. package/src/components/DialogBox/tests/__snapshots__/DialogBox.spec.ts.snap +46 -0
  84. package/src/components/DownloadBtn/Accessibilite.mdx +14 -0
  85. package/src/components/DownloadBtn/Accessibilite.stories.ts +166 -0
  86. package/src/components/DownloadBtn/AccessibiliteItems.ts +129 -0
  87. package/src/components/DownloadBtn/DownloadBtn.mdx +5 -6
  88. package/src/components/DownloadBtn/DownloadBtn.stories.ts +207 -2
  89. package/src/components/DownloadBtn/constants/ExpertiseLevelEnum.ts +4 -0
  90. package/src/components/ErrorPage/ErrorPage.mdx +21 -0
  91. package/src/components/ErrorPage/ErrorPage.stories.ts +133 -0
  92. package/src/components/ErrorPage/ErrorPage.vue +93 -0
  93. package/src/components/ErrorPage/locales.ts +5 -0
  94. package/src/components/ErrorPage/tests/ErrorPage.spec.ts +40 -0
  95. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +78 -0
  96. package/src/components/FooterBar/FooterBar.mdx +2 -2
  97. package/src/components/FooterBar/FooterBar.stories.ts +557 -9
  98. package/src/components/FooterBar/config.ts +2 -3
  99. package/src/components/FooterBar/tests/FooterBar.spec.ts +1 -1
  100. package/src/components/FooterBar/tests/FooterBarConfig.spec.ts +1 -1
  101. package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +2 -2
  102. package/src/components/FranceConnectBtn/Accessibilite.mdx +14 -0
  103. package/src/components/FranceConnectBtn/Accessibilite.stories.ts +194 -0
  104. package/src/components/FranceConnectBtn/AccessibiliteItems.ts +199 -0
  105. package/src/components/FranceConnectBtn/FranceConnectBtn.mdx +1 -1
  106. package/src/components/FranceConnectBtn/FranceConnectBtn.stories.ts +58 -1
  107. package/src/components/FranceConnectBtn/constants/ExpertiseLevelEnum.ts +4 -0
  108. package/src/components/HeaderBar/HeaderBar.mdx +164 -45
  109. package/src/components/HeaderBar/HeaderBar.stories.ts +618 -16
  110. package/src/components/HeaderBar/HeaderBar.vue +60 -22
  111. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.mdx +433 -0
  112. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.stories.ts +1089 -0
  113. package/src/components/HeaderBar/{HeaderComplexMenu/HeaderComplexMenu.vue → HeaderBurgerMenu/HeaderBurgerMenu.vue} +74 -45
  114. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.mdx +38 -0
  115. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.stories.ts +89 -0
  116. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuItem/tests/__snapshots__/HeaderMenuItem.spec.ts.snap +1 -1
  117. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.mdx +17 -0
  118. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.stories.ts +121 -0
  119. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuSection/HeaderMenuSection.vue +2 -2
  120. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuSection/tests/HeaderMenuSection.spec.ts +1 -3
  121. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.mdx +43 -0
  122. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.stories.ts +261 -0
  123. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderSubMenu/HeaderSubMenu.vue +17 -3
  124. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderSubMenu/tests/HeaderSubMenu.spec.ts +1 -1
  125. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.spec.ts +180 -0
  126. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderBurgerMenu.spec.ts.snap +13 -0
  127. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderComplexMenu.spec.ts.snap +13 -0
  128. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +62 -25
  129. package/src/components/HeaderBar/HeaderLogo/tests/HeaderLogo.spec.ts +49 -1
  130. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +19 -23
  131. package/src/components/HeaderBar/HeaderMenuBtn/tests/HeaderMenuBtn.spec.ts +70 -0
  132. package/src/components/HeaderBar/Usages.mdx +85 -0
  133. package/src/components/HeaderBar/consts.scss +0 -1
  134. package/src/components/HeaderBar/tests/HeaderBar.spec.ts +8 -2
  135. package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +5 -10
  136. package/src/components/HeaderLoading/HeaderLoading.mdx +28 -0
  137. package/src/components/HeaderLoading/HeaderLoading.stories.ts +62 -0
  138. package/src/components/HeaderLoading/HeaderLoading.vue +45 -0
  139. package/src/components/HeaderLoading/tests/HeaderLoading.spec.ts +22 -0
  140. package/src/components/HeaderNavigationBar/HeaderNavigationBar.mdx +128 -0
  141. package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +784 -0
  142. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +194 -0
  143. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +74 -0
  144. package/src/components/HeaderNavigationBar/HorizontalNavbar/config.ts +18 -0
  145. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +127 -0
  146. package/src/components/HeaderNavigationBar/types.ts +7 -0
  147. package/src/components/HeaderToolbar/HeaderToolbar.mdx +31 -0
  148. package/src/components/HeaderToolbar/HeaderToolbar.stories.ts +343 -0
  149. package/src/components/HeaderToolbar/HeaderToolbar.vue +487 -0
  150. package/src/components/HeaderToolbar/tests/HeaderToolbar.spec.ts +230 -0
  151. package/src/components/HeaderToolbar/types.d.ts +20 -0
  152. package/src/components/LangBtn/Accessibilite.mdx +14 -0
  153. package/src/components/LangBtn/Accessibilite.stories.ts +166 -0
  154. package/src/components/LangBtn/AccessibiliteItems.ts +132 -0
  155. package/src/components/LangBtn/LangBtn.mdx +1 -1
  156. package/src/components/LangBtn/LangBtn.stories.ts +125 -8
  157. package/src/components/LangBtn/constants/ExpertiseLevelEnum.ts +4 -0
  158. package/src/components/LangBtn/tests/LangBtn.spec.ts +1 -1
  159. package/src/components/LangBtn/tests/__snapshots__/LangBtn.spec.ts.snap +1 -1
  160. package/src/components/Logo/Logo.mdx +2 -2
  161. package/src/components/Logo/Logo.stories.ts +147 -1
  162. package/src/components/LogoBrandSection/LogoBrandSection.mdx +14 -0
  163. package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +158 -0
  164. package/src/components/LogoBrandSection/LogoBrandSection.vue +312 -0
  165. package/src/components/LogoBrandSection/assets/ameli-pro.svg +1 -0
  166. package/src/components/LogoBrandSection/assets/ameli.svg +1 -0
  167. package/src/components/LogoBrandSection/assets/cnam.svg +1 -0
  168. package/src/components/LogoBrandSection/assets/compte-ameli.svg +1 -0
  169. package/src/components/LogoBrandSection/dividerDimensionsMapping.ts +14 -0
  170. package/src/components/LogoBrandSection/locales.ts +14 -0
  171. package/src/components/LogoBrandSection/secondaryLogoMapping.ts +24 -0
  172. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +365 -0
  173. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +14 -0
  174. package/src/components/LogoBrandSection/types.ts +8 -0
  175. package/src/components/MaintenancePage/MaintenancePage.mdx +11 -0
  176. package/src/components/MaintenancePage/MaintenancePage.stories.ts +41 -0
  177. package/src/components/MaintenancePage/MaintenancePage.vue +25 -0
  178. package/src/components/MaintenancePage/assets/maintenance.svg +1 -0
  179. package/src/components/MaintenancePage/index.ts +3 -0
  180. package/src/components/MaintenancePage/locales.ts +5 -0
  181. package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +12 -0
  182. package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +3 -0
  183. package/src/components/NotFoundPage/NotFoundPage.mdx +19 -0
  184. package/src/components/NotFoundPage/NotFoundPage.stories.ts +76 -0
  185. package/src/components/NotFoundPage/NotFoundPage.vue +52 -0
  186. package/src/components/NotFoundPage/assets/not-found.svg +1 -0
  187. package/src/components/NotFoundPage/locales.ts +6 -0
  188. package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +38 -0
  189. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +76 -0
  190. package/src/components/NotificationBar/Accessibilite.mdx +14 -0
  191. package/src/components/NotificationBar/Accessibilite.stories.ts +166 -0
  192. package/src/components/NotificationBar/AccessibiliteItems.ts +174 -0
  193. package/src/components/NotificationBar/NotificationBar.mdx +6 -6
  194. package/src/components/NotificationBar/NotificationBar.stories.ts +1 -1
  195. package/src/components/NotificationBar/NotificationBar.vue +2 -2
  196. package/src/components/NotificationBar/constants/ExpertiseLevelEnum.ts +4 -0
  197. package/src/components/NotificationBar/options.ts +1 -0
  198. package/src/components/NotificationBar/tests/NotificationBar.spec.ts +1 -1
  199. package/src/components/PageContainer/Accessibilite.mdx +14 -0
  200. package/src/components/PageContainer/Accessibilite.stories.ts +166 -0
  201. package/src/components/PageContainer/AccessibiliteItems.ts +52 -0
  202. package/src/components/PageContainer/PageContainer.mdx +1 -1
  203. package/src/components/PageContainer/PageContainer.stories.ts +86 -1
  204. package/src/components/PageContainer/constants/ExpertiseLevelEnum.ts +4 -0
  205. package/src/components/PhoneField/PhoneField.mdx +49 -0
  206. package/src/components/PhoneField/PhoneField.stories.ts +869 -0
  207. package/src/components/PhoneField/PhoneField.vue +230 -0
  208. package/src/components/PhoneField/indicatifs.ts +104 -0
  209. package/src/components/PhoneField/locales.ts +4 -0
  210. package/src/components/PhoneField/tests/PhoneField.spec.ts +179 -0
  211. package/src/components/SkipLink/Accessibilite.mdx +14 -0
  212. package/src/components/SkipLink/Accessibilite.stories.ts +167 -0
  213. package/src/components/SkipLink/AccessibiliteItems.ts +77 -0
  214. package/src/components/SkipLink/SkipLink.stories.ts +50 -1
  215. package/src/components/SkipLink/constants/ExpertiseLevelEnum.ts +4 -0
  216. package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +33 -2
  217. package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +38 -1
  218. package/src/components/SocialMediaLinks/tests/SocialMediaLinks.spec.ts +1 -1
  219. package/src/components/SocialMediaLinks/tests/__snapshots__/SocialMediaLinks.spec.ts.snap +2 -2
  220. package/src/components/SubHeader/SubHeader.mdx +31 -0
  221. package/src/components/SubHeader/SubHeader.stories.ts +1032 -0
  222. package/src/components/SubHeader/SubHeader.vue +185 -0
  223. package/src/components/SubHeader/config.ts +12 -0
  224. package/src/components/SubHeader/locales.ts +3 -0
  225. package/src/components/SubHeader/tests/SubHeader.spec.ts +144 -0
  226. package/src/components/UserMenuBtn/UserMenuBtn.mdx +35 -0
  227. package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +438 -0
  228. package/src/components/UserMenuBtn/UserMenuBtn.vue +105 -0
  229. package/src/components/UserMenuBtn/config.ts +24 -0
  230. package/src/components/UserMenuBtn/tests/UserMenuBtn.spec.ts +125 -0
  231. package/src/components/index.ts +33 -7
  232. package/src/composables/index.ts +8 -0
  233. package/src/composables/rules/tests/useFieldValidation.spec.ts +82 -0
  234. package/src/composables/rules/useFieldValidation.ts +53 -0
  235. package/src/composables/widthable/index.ts +29 -0
  236. package/src/composables/widthable/tests/widthable.spec.ts +52 -0
  237. package/src/designTokens/index.ts +2 -0
  238. package/src/designTokens/tokens/cnam/cnamDarkTheme.ts +5 -0
  239. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +3 -2
  240. package/src/main.ts +3 -0
  241. package/src/modules.d.ts +4 -0
  242. package/src/services/index.ts +1 -0
  243. package/src/stories/Demarrer/Accueil.mdx +10 -0
  244. package/src/stories/Demarrer/Accueil.stories.ts +76 -0
  245. package/src/stories/Demarrer/PolitiqueDeConfidentialite.mdx +9 -0
  246. package/src/stories/Demarrer/PolitiqueDeConfidentialite.stories.ts +20 -0
  247. package/src/stories/Fondamentaux/Arrondis.mdx +24 -0
  248. package/src/stories/{Guidelines → Fondamentaux}/Colors.mdx +1 -1
  249. package/src/stories/Fondamentaux/Conteneurs.mdx +7 -0
  250. package/src/stories/Fondamentaux/CustomisationEtThemes.mdx +7 -0
  251. package/src/stories/Fondamentaux/Elevations.mdx +14 -0
  252. package/src/stories/Fondamentaux/Espacements.mdx +29 -0
  253. package/src/stories/{Guidelines → Fondamentaux}/Introduction.mdx +1 -1
  254. package/src/stories/Fondamentaux/StylesTypographiques.mdx +33 -0
  255. package/src/stories/Fondamentaux/Typographie.mdx +58 -0
  256. package/src/stories/GuideDuDev/CommentUtiliserLesRules.mdx +132 -0
  257. package/src/stories/GuideDuDev/moduleDeNotification.mdx +52 -48
  258. package/src/stories/GuideDuDev/vuetifyOptions.mdx +31 -28
  259. package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/Accessibilite.mdx +1 -2
  260. package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/Accessibilite.stories.ts +1 -1
  261. package/src/stories/{Fondamentaux → Guidelines}/EcoConception/Econception.stories.ts +2 -2
  262. package/src/utils/functions/throttleDisplayFn/tests/throttleDisplayFn.spec.ts +47 -0
  263. package/src/utils/functions/throttleDisplayFn/throttleDisplayFn.ts +26 -0
  264. package/src/utils/rules/exactLength/index.ts +33 -0
  265. package/src/utils/rules/exactLength/locales.ts +6 -0
  266. package/src/utils/rules/required/index.ts +25 -0
  267. package/src/utils/rules/required/locales.ts +5 -0
  268. package/src/utils/rules/required/ruleMessageHelper.ts +14 -0
  269. package/src/utils/rules/required/tests/index.spec.ts +47 -0
  270. package/src/utils/rules/required/tests/rulesMessageHelper.spec.ts +22 -0
  271. package/src/utils/rules/types.d.ts +15 -0
  272. package/src/components/Beta/beta.mdx +0 -5
  273. package/src/components/Customs/CustomInputSelect/CustomInputSelect.mdx +0 -42
  274. package/src/components/Customs/CustomInputSelect/CustomInputSelect.stories.ts +0 -154
  275. package/src/components/Customs/CustomSelect/CustomSelect.stories.ts +0 -182
  276. package/src/components/Customs/CustomSelect/tests/CustomSelect.spec.ts +0 -236
  277. package/src/components/Deprecated/deprecated.mdx +0 -5
  278. package/src/components/HeaderBar/HeaderComplexMenu/HeaderComplexMenu.stories.ts +0 -272
  279. package/src/components/HeaderBar/HeaderComplexMenu/HeaderMenuItem/HeaderMenuItem.stories.ts +0 -49
  280. package/src/components/HeaderBar/HeaderComplexMenu/HeaderMenuSection/HeaderMenuSection.stories.ts +0 -56
  281. package/src/components/HeaderBar/HeaderComplexMenu/HeaderSubMenu/HeaderSubMenu.stories.ts +0 -137
  282. package/src/components/HeaderBar/HeaderComplexMenu/tests/HeaderComplexMenu.spec.ts +0 -129
  283. package/src/components/HeaderBar/HeaderComplexMenu/tests/__snapshots__/HeaderComplexMenu.spec.ts.snap +0 -18
  284. package/src/stories/Guidelines/CustomisationEtThemes.mdx +0 -3
  285. package/src/stories/Guidelines/Typo.mdx +0 -53
  286. package/src/stories/Home/Accueil.mdx +0 -7
  287. package/src/stories/Home/PolitiqueDeConfidentialite.mdx +0 -4
  288. package/src/stories/Home/synapse.webp +0 -0
  289. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuItem/HeaderMenuItem.vue +0 -0
  290. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuItem/tests/HeaderMenuItem.spec.ts +0 -0
  291. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/conts.ts +0 -0
  292. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/locals.ts +0 -0
  293. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/tests/useHandleSubMenus.spec.ts +0 -0
  294. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/useHandleSubMenus.ts +0 -0
  295. /package/src/components/Logo/{types.d.ts → types.ts} +0 -0
  296. /package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/AccessibiliteItems.ts +0 -0
  297. /package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/constants/ExpertiseLevelEnum.ts +0 -0
  298. /package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/constants/RGAALevelEnum.ts +0 -0
  299. /package/src/stories/{Fondamentaux → Guidelines}/EcoConception/EcoConception.mdx +0 -0
  300. /package/src/stories/{Fondamentaux → Guidelines}/EcoConception/ecoDesignItems.ts +0 -0
@@ -1,54 +1,73 @@
1
1
  <script setup lang="ts">
2
+ import throttleDisplayFn from '@/utils/functions/throttleDisplayFn/throttleDisplayFn'
2
3
  import { computed, inject, nextTick, onMounted, onUnmounted, readonly, ref, watch, type CSSProperties, type Ref } from 'vue'
3
4
  import HeaderMenuBtn from '../HeaderMenuBtn/HeaderMenuBtn.vue'
4
5
  import { registerHeaderMenuKey } from '../consts'
6
+ import useHeaderResponsiveMode from '../useHeaderResponsiveMode'
5
7
  import locals from './locals'
6
8
  import useHandleSubMenus from './useHandleSubMenus'
7
9
 
8
- const menuWrapper = ref<HTMLElement | null>(null)
10
+ const headerMenuWrapper = ref<HTMLElement | null>(null)
9
11
  const menuBtnWrapper = ref<HTMLDivElement | null>(null)
10
12
  const outerBtn = ref<HTMLElement | null>(null)
11
13
  const innerBtn = ref<HTMLElement | null>(null)
12
14
  const menuLeft = ref(0)
13
15
  const menuTop = ref(0)
16
+ const menuHeight = ref('70vh')
14
17
 
15
18
  function positionMenu() {
16
- // todo debounce
17
- menuLeft.value = menuBtnWrapper.value!.getBoundingClientRect().left
18
- menuTop.value = menuBtnWrapper.value!.getBoundingClientRect().top
19
+ const rect = menuBtnWrapper.value!.getBoundingClientRect()
20
+ menuLeft.value = rect.left
21
+ menuTop.value = rect.top
22
+ menuHeight.value = `calc(100vh - ${rect.top}px - 48px)`
23
+ }
24
+ const throttledPositionMenu = throttleDisplayFn(positionMenu, 16)
25
+ const optimizedPositionMenu = () => {
26
+ if (menuOpen.value) {
27
+ throttledPositionMenu()
28
+ }
19
29
  }
20
30
 
21
31
  onMounted(() => {
22
32
  positionMenu()
23
- window.addEventListener('scroll', positionMenu)
24
- window.addEventListener('resize', positionMenu)
33
+ togglePageScroll()
34
+ window.addEventListener('scroll', optimizedPositionMenu)
35
+ window.addEventListener('resize', optimizedPositionMenu)
25
36
  window.addEventListener('click', handleClickOutside, { capture: true })
26
37
  })
27
38
 
28
39
  onUnmounted(() => {
29
- window.removeEventListener('scroll', positionMenu)
30
- window.removeEventListener('resize', positionMenu)
40
+ window.removeEventListener('scroll', optimizedPositionMenu)
41
+ window.removeEventListener('resize', optimizedPositionMenu)
31
42
  window.removeEventListener('click', handleClickOutside, { capture: true })
43
+
44
+ document.documentElement.style.overflow = 'auto'
45
+ document.body.style.overflow = 'auto'
32
46
  })
33
47
 
34
- const menuOpen = ref(false)
48
+ const menuOpen = defineModel<boolean>({
49
+ default: false,
50
+ })
35
51
 
36
52
  watch(menuOpen, async (newVal) => {
37
- document.documentElement.style.overflow = newVal ? 'hidden' : 'auto'
38
- document.body.style.overflow = newVal ? 'hidden' : 'auto'
53
+ togglePageScroll()
39
54
 
40
55
  if (newVal) {
56
+ positionMenu() // the menu position can have changed since the component was mounted
57
+
41
58
  await nextTick()
42
- innerBtn.value!.focus()
59
+ innerBtn.value?.focus()
43
60
  }
44
61
  else {
45
- outerBtn.value!.focus()
62
+ outerBtn.value?.focus()
46
63
  }
47
- })
64
+ }, { immediate: true })
48
65
 
66
+ const { isDesktop } = useHeaderResponsiveMode()
49
67
  const menuStyle = computed<CSSProperties>(() => ({
50
68
  left: `${menuLeft.value}px`,
51
69
  top: `${menuTop.value}px`,
70
+ height: isDesktop.value ? menuHeight.value : undefined,
52
71
  }))
53
72
 
54
73
  function handleClickOutside(event: MouseEvent | KeyboardEvent) {
@@ -57,17 +76,25 @@
57
76
  // do not close menu if click is inside the menu
58
77
  let walkElement = event.target as HTMLElement | null
59
78
  while (walkElement && walkElement !== document.body) {
60
- if (walkElement === menuWrapper.value) return
79
+ if (walkElement === headerMenuWrapper.value) return
61
80
  walkElement = walkElement.parentElement
62
81
  }
63
82
 
83
+ event.stopPropagation()
64
84
  menuOpen.value = false
65
85
  }
66
86
 
87
+ function togglePageScroll() {
88
+ if (typeof window !== 'undefined') {
89
+ document.documentElement.style.overflow = menuOpen.value ? 'hidden' : 'auto'
90
+ document.body.style.overflow = menuOpen.value ? 'hidden' : 'auto'
91
+ }
92
+ }
93
+
67
94
  const { haveOpenSubMenu } = useHandleSubMenus(readonly(menuOpen))
68
95
 
69
96
  const registerHeaderMenu = inject<(menuOpen: Ref<boolean>) => void>(registerHeaderMenuKey)
70
- if (registerHeaderMenu) registerHeaderMenu(menuOpen)
97
+ if (registerHeaderMenu) registerHeaderMenu(readonly(menuOpen))
71
98
  </script>
72
99
  <template>
73
100
  <div
@@ -81,37 +108,39 @@
81
108
  v-model="menuOpen"
82
109
  />
83
110
  </div>
84
- <Transition name="menu">
85
- <div
86
- v-show="menuOpen"
87
- class="overlay"
88
- >
111
+ <Teleport to="body">
112
+ <Transition name="menu">
89
113
  <div
90
- ref="menuWrapper"
91
- role="menu"
92
- class="menu-wrapper"
93
- :style="menuStyle"
114
+ v-if="menuOpen"
115
+ class="overlay"
94
116
  >
95
- <HeaderMenuBtn
96
- ref="innerBtn"
97
- v-model="menuOpen"
98
- />
99
- <nav
100
- id="header-menu-wrapper"
101
- class="header-menu-wrapper"
102
- :class="{
103
- 'header-menu-wrapper--submenu-open': haveOpenSubMenu,
104
- }"
105
- role="navigation"
106
- :aria-label="locals.publicMenu"
117
+ <div
118
+ role="menu"
119
+ class="menu-wrapper"
120
+ :style="menuStyle"
107
121
  >
108
- <div class="header-menu">
109
- <slot />
110
- </div>
111
- </nav>
122
+ <HeaderMenuBtn
123
+ ref="innerBtn"
124
+ v-model="menuOpen"
125
+ />
126
+ <nav
127
+ id="header-menu-wrapper"
128
+ ref="headerMenuWrapper"
129
+ class="header-menu-wrapper"
130
+ :class="{
131
+ 'header-menu-wrapper--submenu-open': haveOpenSubMenu,
132
+ }"
133
+ role="navigation"
134
+ :aria-label="locals.publicMenu"
135
+ >
136
+ <div class="header-menu">
137
+ <slot />
138
+ </div>
139
+ </nav>
140
+ </div>
112
141
  </div>
113
- </div>
114
- </Transition>
142
+ </Transition>
143
+ </Teleport>
115
144
  </div>
116
145
  </template>
117
146
 
@@ -124,6 +153,7 @@
124
153
  position: fixed;
125
154
  z-index: 1000;
126
155
  background-color: rgba(3, 16, 37, .5);
156
+ backdrop-filter: blur(2px);
127
157
  }
128
158
 
129
159
  .menu-wrapper {
@@ -151,7 +181,6 @@
151
181
  }
152
182
 
153
183
  .header-menu-wrapper {
154
- height: $menu-height;
155
184
  width: $menu-width;
156
185
  overflow: visible;
157
186
  }
@@ -160,7 +189,7 @@
160
189
  background-color: $neutral-white;
161
190
  overflow-y : auto;
162
191
  overflow-x: hidden;
163
- height: $menu-height;
192
+ height: 100%;
164
193
  }
165
194
  }
166
195
 
@@ -0,0 +1,38 @@
1
+ import { Controls, Canvas, Meta, Source } from "@storybook/blocks";
2
+ import * as HeaderMenuItemStories from "./HeaderMenuItem.stories";
3
+
4
+ <Meta of={HeaderMenuItemStories} />
5
+
6
+ # HeaderMenuItem
7
+
8
+ Le composant `HeaderMenuItem` est un composant de menu qui permet de wrapper un lien de navigation. Cela peut être un lien `a`, `router-link` ou `nuxt-link`.
9
+ Ce composant doit être utilisé dans un composant `HeaderMenuSection` afin de respecter la structure du menu et de garantir la bonne accessibilité de celui ci.
10
+
11
+ <Source
12
+ dark
13
+ code={`
14
+ <HeaderMenuSection>
15
+ <HeaderMenuItem>
16
+ <a href="/">Home</a>
17
+ </HeaderMenuItem>
18
+ <HeaderMenuItem>
19
+ <a href="/about">About</a>
20
+ </HeaderMenuItem>
21
+ <HeaderMenuItem>
22
+ <RouterLink to="/services">Services</RouterLink>
23
+ </HeaderMenuItem>
24
+ <HeaderMenuItem>
25
+ <NuxtLink to="/contact">Contact</NuxtLink>
26
+ </HeaderMenuItem>
27
+ </HeaderMenuSection>
28
+ `}
29
+ />
30
+
31
+ Pour plus de détails sur le contexte d'utilisation de ce composant, veuillez consulter le composant `HeaderBurgerMenu`.
32
+
33
+
34
+ <Canvas of={HeaderMenuItemStories.Default} />
35
+
36
+ ## API
37
+
38
+ <Controls of={HeaderMenuItemStories.Default} />
@@ -0,0 +1,89 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import HeaderMenuItem from './HeaderMenuItem.vue'
3
+ import HeaderBurgerMenu from '../HeaderBurgerMenu.vue'
4
+ import HeaderBar from '../../HeaderBar.vue'
5
+ import HeaderMenuSection from '../HeaderMenuSection/HeaderMenuSection.vue'
6
+
7
+ const meta = {
8
+ title: 'Composants/Structure/HeaderBar/HeaderBurgerMenu/HeaderMenuItem',
9
+ component: HeaderMenuItem,
10
+ argTypes: {
11
+ default: {
12
+ control: { type: 'text' },
13
+ description: 'Le lien (`a`; `router-link`, `nuxt-link`) et son contenu',
14
+ table: {
15
+ type: { summary: '{}' },
16
+ },
17
+ },
18
+ },
19
+ parameters: {
20
+ layout: 'fullscreen',
21
+ },
22
+ } satisfies Meta<typeof HeaderMenuItem>
23
+
24
+ export default meta
25
+
26
+ type Story = StoryObj<typeof meta>
27
+
28
+ export const Default: Story = {
29
+ args: {
30
+ default: 'lorem ipsum',
31
+ },
32
+ render: (args) => {
33
+ return {
34
+ components: { HeaderMenuItem, HeaderBurgerMenu, HeaderBar, HeaderMenuSection },
35
+ setup() {
36
+ return { args }
37
+ },
38
+ template: `
39
+ <HeaderBar>
40
+ <template #menu>
41
+ <HeaderBurgerMenu>
42
+ <HeaderMenuSection>
43
+ <HeaderMenuItem>
44
+ <a href="">{{ args.default }}</a>
45
+ </HeaderMenuItem>
46
+ </HeaderMenuSection>
47
+ </HeaderBurgerMenu>
48
+ </template>
49
+ </HeaderBar>
50
+ `,
51
+ }
52
+ },
53
+ play: async ({ canvasElement }) => {
54
+ const menuBtn = canvasElement.querySelector('button')
55
+ setTimeout(() => {
56
+ menuBtn!.click()
57
+ }, 1000)
58
+ },
59
+ parameters: {
60
+ sourceCode: [
61
+ {
62
+ name: 'Template',
63
+ code: `
64
+ <Template>
65
+ <HeaderBar>
66
+ <template #menu>
67
+ <HeaderBurgerMenu>
68
+ <HeaderMenuSection>
69
+ <HeaderMenuItem>
70
+ <a href="">lorem ipsum</a>
71
+ </HeaderMenuItem>
72
+ </HeaderMenuSection>
73
+ </HeaderBurgerMenu>
74
+ </template>
75
+ </HeaderBar>
76
+ </Template>
77
+ `,
78
+ },
79
+ {
80
+ name: 'Script',
81
+ code: `
82
+ <script setup>
83
+ import { HeaderBurgerMenu, HeaderBar, HeaderMenuSection, HeaderMenuItem } from '@cnamts/synapse'
84
+ </script>
85
+ `,
86
+ },
87
+ ],
88
+ },
89
+ }
@@ -1,3 +1,3 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`HeaderMenuItem > should render the component 1`] = `"<li data-v-8ba695ac="" class="header-menu-item"><a>Test</a></li>"`;
3
+ exports[`HeaderMenuItem > should render the component 1`] = `"<li data-v-bc776fc3="" class="header-menu-item"><a>Test</a></li>"`;
@@ -0,0 +1,17 @@
1
+ import { Controls, Canvas, Meta, Source } from "@storybook/blocks";
2
+ import * as HeaderMenuSectionStories from "./HeaderMenuSection.stories";
3
+
4
+ <Meta of={HeaderMenuSectionStories} />
5
+
6
+ # HeaderMenuSection
7
+
8
+ Le composant `HeaderMenuSection` permet de regrouper des éléments de menu dans une section. Il s'utilise dans le composant `HeaderComplexMenu` ou `HeaderSubMenu` et doit contenir des éléments de menu (`HeaderMenuItem`).
9
+
10
+
11
+ <Canvas of={HeaderMenuSectionStories.Default} />
12
+
13
+ ## API
14
+
15
+ <Controls of={HeaderMenuSectionStories.Default} />
16
+
17
+
@@ -0,0 +1,121 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import HeaderMenuSection from './HeaderMenuSection.vue'
3
+ import HeaderMenuItem from '../HeaderMenuItem/HeaderMenuItem.vue'
4
+ import HeaderBurgerMenu from '../HeaderBurgerMenu.vue'
5
+ import HeaderBar from '../../HeaderBar.vue'
6
+
7
+ const meta = {
8
+ title: 'Composants/Structure/HeaderBar/HeaderBurgerMenu/HeaderMenuSection',
9
+ component: HeaderMenuSection,
10
+ argTypes: {
11
+ title: {
12
+ description: 'Titre de la section',
13
+ control: { type: 'text' },
14
+ table: {
15
+ category: 'slots',
16
+ },
17
+ },
18
+ default: {
19
+ control: { type: 'text' },
20
+ description: 'Contenu de la section, construit avec des composants `HeaderMenuItem`',
21
+ table: {
22
+ type: { summary: '{}' },
23
+ },
24
+ },
25
+ },
26
+ parameters: {
27
+ layout: 'fullscreen',
28
+ },
29
+ } satisfies Meta<typeof HeaderMenuSection>
30
+
31
+ export default meta
32
+
33
+ type Story = StoryObj<typeof meta>
34
+
35
+ export const Default: Story = {
36
+ args: {
37
+ title: 'section 1',
38
+ },
39
+ render: (args) => {
40
+ return {
41
+ components: { HeaderMenuItem, HeaderBurgerMenu, HeaderBar, HeaderMenuSection },
42
+ setup() {
43
+ return { args }
44
+ },
45
+ template: `
46
+ <HeaderBar>
47
+ <template #menu>
48
+ <HeaderBurgerMenu>
49
+ <HeaderMenuSection>
50
+ <template #title>
51
+ {{ args.title }}
52
+ </template>
53
+ <HeaderMenuItem>
54
+ <a>lorem ipsum</a>
55
+ </HeaderMenuItem>
56
+ </HeaderMenuSection>
57
+
58
+ <HeaderMenuSection>
59
+ <template #title>
60
+ section 2
61
+ </template>
62
+
63
+ <HeaderMenuItem>
64
+ <a>lorem ipsum</a>
65
+ </HeaderMenuItem>
66
+ </HeaderMenuSection>
67
+ </HeaderBurgerMenu>
68
+ </template>
69
+ </HeaderBar>
70
+ `,
71
+ }
72
+ },
73
+ play: async ({ canvasElement }) => {
74
+ const menuBtn = canvasElement.querySelector('button')
75
+ setTimeout(() => {
76
+ menuBtn!.click()
77
+ }, 1000)
78
+ },
79
+ parameters: {
80
+ sourceCode: [
81
+ {
82
+ name: 'Template',
83
+ code: `
84
+ <Template>
85
+ <HeaderBar>
86
+ <template #menu>
87
+ <HeaderBurgerMenu>
88
+ <HeaderMenuSection>
89
+ <template #title>
90
+ {{ args.title }}
91
+ </template>
92
+ <HeaderMenuItem>
93
+ <a>lorem ipsum</a>
94
+ </HeaderMenuItem>
95
+ </HeaderMenuSection>
96
+
97
+ <HeaderMenuSection>
98
+ <template #title>
99
+ section 2
100
+ </template>
101
+ <HeaderMenuItem>
102
+ <a>lorem ipsum</a>
103
+ </HeaderMenuItem>
104
+ </HeaderMenuSection>
105
+ </HeaderBurgerMenu>
106
+ </template>
107
+ </HeaderBar>
108
+ </Template>
109
+ `,
110
+ },
111
+ {
112
+ name: 'Script',
113
+ code: `
114
+ <script setup>
115
+ import { HeaderBurgerMenu, HeaderBar, HeaderMenuSection, HeaderMenuItem } from '@cnamts/synapse'
116
+ </script>
117
+ `,
118
+ },
119
+ ],
120
+ },
121
+ }
@@ -13,11 +13,11 @@
13
13
  <template>
14
14
  <div class="header-menu-section">
15
15
  <div
16
- v-if="title"
16
+ v-if="$slots.title"
17
17
  :id="titleId"
18
18
  class="header-menu-section-title"
19
19
  >
20
- {{ title }}
20
+ <slot name="title" />
21
21
  </div>
22
22
  <ul
23
23
  :id="groupId"
@@ -5,10 +5,8 @@ import HeaderMenuSection from '../HeaderMenuSection.vue'
5
5
  describe('HeaderMenuSection', () => {
6
6
  it('should render the component', async () => {
7
7
  const wrapper = mount(HeaderMenuSection, {
8
- props: {
9
- title: 'Section title',
10
- },
11
8
  slots: {
9
+ title: 'Section title',
12
10
  default: [
13
11
  '<li><a>Test 1</a></li>',
14
12
  '<li><a>Test 2</a></li>',
@@ -0,0 +1,43 @@
1
+ import { Controls, Canvas, Meta, Source } from "@storybook/blocks";
2
+ import * as HeaderSubMenuStories from "./HeaderSubMenu.stories";
3
+
4
+ <Meta of={HeaderSubMenuStories} />
5
+
6
+ # HeaderSubMenu
7
+
8
+ Le composant `HeaderSubMenu` est un sous-composant du composant `HeaderBurgerMenu` qui permet de créer un sous-menu dans le menu principal.
9
+ En mode mobile, les sous-menus s'affichent par dessus du menu parent, en mode desktop, les sous-menus s'affichent à droite du parent.
10
+ Les sous-menus peuvent être imbriqués pour créer des sous-sous-menus.
11
+
12
+ Le composant `HeaderSubMenu` doit être utilisé dans un composant `HeaderMenuItem` afin de respecter la structure du menu et de garantir la bonne accessibilité du menu.
13
+ On aura donc une structure de composant comme suit :
14
+
15
+ <Source
16
+ dark
17
+ code={`
18
+ <HeaderMenuBurger>
19
+ <HeaderMenuSection>
20
+ <HeaderMenuItem>
21
+ <HeaderSubMenu>
22
+ <template #title>
23
+ title
24
+ </template>
25
+ <HeaderMenuSection>
26
+ <HeaderMenuItem>
27
+ <a>lien de deuxième niveau</a>
28
+ </HeaderMenuItem>
29
+ </HeaderMenuSection>
30
+ </HeaderSubMenu>
31
+ </HeaderMenuItem>
32
+ </HeaderMenuSection>
33
+ </HeaderMenuBurger>
34
+ `}
35
+ />
36
+
37
+
38
+
39
+ <Canvas of={HeaderSubMenuStories.Default} />
40
+
41
+ ## API
42
+
43
+ <Controls of={HeaderSubMenuStories.Default} />