@cnamts/synapse 0.0.3-alpha → 0.0.4-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 (185) hide show
  1. package/dist/design-system-v3.d.ts +712 -27
  2. package/dist/design-system-v3.js +2715 -1485
  3. package/dist/design-system-v3.umd.cjs +10 -1
  4. package/dist/style.css +1 -1
  5. package/package.json +5 -2
  6. package/src/components/Alert/Alert.mdx +1 -1
  7. package/src/components/Alert/Alert.stories.ts +91 -1
  8. package/src/components/BackBtn/BackBtn.mdx +1 -1
  9. package/src/components/BackBtn/BackBtn.stories.ts +84 -1
  10. package/src/components/BackToTopBtn/BackToTopBtn.mdx +3 -3
  11. package/src/components/BackToTopBtn/BackToTopBtn.stories.ts +172 -11
  12. package/src/components/CollapsibleList/CollapsibleList.mdx +2 -2
  13. package/src/components/CollapsibleList/CollapsibleList.stories.ts +37 -1
  14. package/src/components/CopyBtn/CopyBtn.mdx +1 -1
  15. package/src/components/CopyBtn/CopyBtn.stories.ts +120 -1
  16. package/src/components/CopyBtn/CopyBtn.vue +1 -1
  17. package/src/components/Customs/CustomInputSelect/CustomInputSelect.mdx +6 -8
  18. package/src/components/Customs/CustomInputSelect/CustomInputSelect.stories.ts +270 -4
  19. package/src/components/Customs/CustomInputSelect/CustomInputSelect.vue +80 -53
  20. package/src/components/Customs/CustomInputSelect/config.ts +10 -0
  21. package/src/components/Customs/CustomSelect/CustomSelect.mdx +3 -3
  22. package/src/components/Customs/CustomSelect/CustomSelect.stories.ts +158 -2
  23. package/src/components/Customs/CustomSelect/CustomSelect.vue +25 -6
  24. package/src/components/Customs/CustomTextField/CustomTextField.mdx +44 -0
  25. package/src/components/Customs/CustomTextField/CustomTextField.stories.ts +403 -0
  26. package/src/components/Customs/CustomTextField/CustomTextField.vue +110 -0
  27. package/src/components/Customs/CustomTextField/tests/CustomTextField.spec.ts +93 -0
  28. package/src/components/Customs/CustomTextField/tests/__snapshots__/CustomTextField.spec.ts.snap +59 -0
  29. package/src/components/Customs/CustomTextField/types.d.ts +3 -0
  30. package/src/components/DataList/DataList.mdx +77 -0
  31. package/src/components/DataList/DataList.stories.ts +960 -0
  32. package/src/components/DataList/DataList.vue +140 -0
  33. package/src/components/DataList/DataListLoading/DataListLoading.vue +56 -0
  34. package/src/components/DataList/DataListLoading/tests/DataListLoading.spec.ts +23 -0
  35. package/src/components/DataList/locales.ts +3 -0
  36. package/src/components/DataList/tests/DataList.spec.ts +194 -0
  37. package/src/components/DataList/types.d.ts +23 -0
  38. package/src/components/DataListGroup/DataListGroup.mdx +77 -0
  39. package/src/components/DataListGroup/DataListGroup.stories.ts +987 -0
  40. package/src/components/DataListGroup/DataListGroup.vue +59 -0
  41. package/src/components/DataListGroup/tests/DataListGroup.spec.ts +54 -0
  42. package/src/components/DataListGroup/tests/data/dataListGroupItems.ts +41 -0
  43. package/src/components/DataListGroup/types.d.ts +15 -0
  44. package/src/components/DataListItem/DataListItem.vue +135 -0
  45. package/src/components/DataListItem/config.ts +17 -0
  46. package/src/components/DataListItem/locales.ts +3 -0
  47. package/src/components/DataListItem/tests/DataListItem.spec.ts +156 -0
  48. package/src/components/DataListItem/types.d.ts +23 -0
  49. package/src/components/DownloadBtn/Accessibilite.mdx +14 -0
  50. package/src/components/DownloadBtn/Accessibilite.stories.ts +166 -0
  51. package/src/components/DownloadBtn/AccessibiliteItems.ts +129 -0
  52. package/src/components/DownloadBtn/DownloadBtn.mdx +5 -6
  53. package/src/components/DownloadBtn/DownloadBtn.stories.ts +207 -2
  54. package/src/components/DownloadBtn/constants/ExpertiseLevelEnum.ts +4 -0
  55. package/src/components/FooterBar/FooterBar.mdx +2 -2
  56. package/src/components/FooterBar/FooterBar.stories.ts +1 -1
  57. package/src/components/FranceConnectBtn/FranceConnectBtn.mdx +1 -1
  58. package/src/components/FranceConnectBtn/FranceConnectBtn.stories.ts +58 -1
  59. package/src/components/HeaderBar/HeaderBar.mdx +164 -45
  60. package/src/components/HeaderBar/HeaderBar.stories.ts +559 -15
  61. package/src/components/HeaderBar/HeaderBar.vue +60 -22
  62. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.mdx +433 -0
  63. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.stories.ts +1089 -0
  64. package/src/components/HeaderBar/{HeaderComplexMenu/HeaderComplexMenu.vue → HeaderBurgerMenu/HeaderBurgerMenu.vue} +74 -45
  65. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.mdx +38 -0
  66. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.stories.ts +89 -0
  67. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuItem/tests/__snapshots__/HeaderMenuItem.spec.ts.snap +1 -1
  68. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.mdx +17 -0
  69. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.stories.ts +121 -0
  70. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuSection/HeaderMenuSection.vue +2 -2
  71. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuSection/tests/HeaderMenuSection.spec.ts +1 -3
  72. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.mdx +43 -0
  73. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.stories.ts +261 -0
  74. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderSubMenu/HeaderSubMenu.vue +17 -3
  75. package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderSubMenu/tests/HeaderSubMenu.spec.ts +1 -1
  76. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.spec.ts +180 -0
  77. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderBurgerMenu.spec.ts.snap +13 -0
  78. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderComplexMenu.spec.ts.snap +13 -0
  79. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +62 -25
  80. package/src/components/HeaderBar/HeaderLogo/tests/HeaderLogo.spec.ts +49 -1
  81. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +19 -23
  82. package/src/components/HeaderBar/HeaderMenuBtn/tests/HeaderMenuBtn.spec.ts +70 -0
  83. package/src/components/HeaderBar/Usages.mdx +85 -0
  84. package/src/components/HeaderBar/consts.scss +0 -1
  85. package/src/components/HeaderBar/tests/HeaderBar.spec.ts +8 -2
  86. package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +5 -10
  87. package/src/components/HeaderLoading/HeaderLoading.mdx +28 -0
  88. package/src/components/HeaderLoading/HeaderLoading.stories.ts +62 -0
  89. package/src/components/HeaderLoading/HeaderLoading.vue +45 -0
  90. package/src/components/HeaderLoading/tests/HeaderLoading.spec.ts +22 -0
  91. package/src/components/HeaderNavigationBar/HeaderNavigationBar.mdx +128 -0
  92. package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +784 -0
  93. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +194 -0
  94. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +74 -0
  95. package/src/components/HeaderNavigationBar/HorizontalNavbar/config.ts +18 -0
  96. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +127 -0
  97. package/src/components/HeaderNavigationBar/types.ts +7 -0
  98. package/src/components/HeaderToolbar/HeaderToolbar.mdx +31 -0
  99. package/src/components/HeaderToolbar/HeaderToolbar.stories.ts +343 -0
  100. package/src/components/HeaderToolbar/HeaderToolbar.vue +487 -0
  101. package/src/components/HeaderToolbar/tests/HeaderToolbar.spec.ts +196 -0
  102. package/src/components/HeaderToolbar/types.d.ts +20 -0
  103. package/src/components/LangBtn/LangBtn.mdx +1 -1
  104. package/src/components/LangBtn/LangBtn.stories.ts +125 -8
  105. package/src/components/Logo/Logo.mdx +2 -2
  106. package/src/components/Logo/Logo.stories.ts +147 -1
  107. package/src/components/LogoBrandSection/LogoBrandSection.mdx +14 -0
  108. package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +158 -0
  109. package/src/components/LogoBrandSection/LogoBrandSection.vue +312 -0
  110. package/src/components/LogoBrandSection/assets/ameli-pro.svg +1 -0
  111. package/src/components/LogoBrandSection/assets/ameli.svg +1 -0
  112. package/src/components/LogoBrandSection/assets/cnam.svg +1 -0
  113. package/src/components/LogoBrandSection/assets/compte-ameli.svg +1 -0
  114. package/src/components/LogoBrandSection/dividerDimensionsMapping.ts +14 -0
  115. package/src/components/LogoBrandSection/locales.ts +14 -0
  116. package/src/components/LogoBrandSection/secondaryLogoMapping.ts +24 -0
  117. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +365 -0
  118. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +14 -0
  119. package/src/components/LogoBrandSection/types.ts +8 -0
  120. package/src/components/NotificationBar/NotificationBar.mdx +6 -6
  121. package/src/components/NotificationBar/NotificationBar.stories.ts +1 -1
  122. package/src/components/NotificationBar/NotificationBar.vue +2 -2
  123. package/src/components/NotificationBar/tests/NotificationBar.spec.ts +1 -1
  124. package/src/components/PageContainer/PageContainer.mdx +1 -1
  125. package/src/components/PageContainer/PageContainer.stories.ts +86 -1
  126. package/src/components/PhoneField/PhoneField.mdx +49 -0
  127. package/src/components/PhoneField/PhoneField.stories.ts +869 -0
  128. package/src/components/PhoneField/PhoneField.vue +230 -0
  129. package/src/components/PhoneField/indicatifs.ts +104 -0
  130. package/src/components/PhoneField/locales.ts +4 -0
  131. package/src/components/PhoneField/tests/PhoneField.spec.ts +179 -0
  132. package/src/components/SkipLink/SkipLink.stories.ts +50 -1
  133. package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +28 -1
  134. package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +37 -1
  135. package/src/components/SubHeader/SubHeader.mdx +31 -0
  136. package/src/components/SubHeader/SubHeader.stories.ts +1032 -0
  137. package/src/components/SubHeader/SubHeader.vue +185 -0
  138. package/src/components/SubHeader/config.ts +12 -0
  139. package/src/components/SubHeader/locales.ts +3 -0
  140. package/src/components/SubHeader/tests/SubHeader.spec.ts +144 -0
  141. package/src/components/index.ts +24 -7
  142. package/src/composables/widthable/index.ts +29 -0
  143. package/src/composables/widthable/tests/widthable.spec.ts +52 -0
  144. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +2 -2
  145. package/src/main.ts +1 -0
  146. package/src/modules.d.ts +4 -0
  147. package/src/services/index.ts +1 -0
  148. package/src/stories/Demarrer/Accueil.mdx +10 -0
  149. package/src/stories/Demarrer/Accueil.stories.ts +76 -0
  150. package/src/stories/Demarrer/PolitiqueDeConfidentialite.mdx +9 -0
  151. package/src/stories/Demarrer/PolitiqueDeConfidentialite.stories.ts +20 -0
  152. package/src/stories/Fondamentaux/Accessibilite/Accessibilite.mdx +1 -2
  153. package/src/stories/Fondamentaux/Accessibilite/Accessibilite.stories.ts +1 -1
  154. package/src/stories/Fondamentaux/EcoConception/Econception.stories.ts +1 -1
  155. package/src/stories/GuideDuDev/moduleDeNotification.mdx +52 -48
  156. package/src/stories/GuideDuDev/vuetifyOptions.mdx +31 -28
  157. package/src/stories/Guidelines/CustomisationEtThemes.mdx +1 -1
  158. package/src/utils/functions/throttleDisplayFn/tests/throttleDisplayFn.spec.ts +47 -0
  159. package/src/utils/functions/throttleDisplayFn/throttleDisplayFn.ts +26 -0
  160. package/src/utils/rules/exactLength/index.ts +33 -0
  161. package/src/utils/rules/exactLength/locales.ts +6 -0
  162. package/src/utils/rules/required/index.ts +25 -0
  163. package/src/utils/rules/required/locales.ts +5 -0
  164. package/src/utils/rules/required/ruleMessageHelper.ts +14 -0
  165. package/src/utils/rules/required/tests/index.spec.ts +47 -0
  166. package/src/utils/rules/required/tests/rulesMessageHelper.spec.ts +22 -0
  167. package/src/utils/rules/types.d.ts +15 -0
  168. package/src/components/Beta/beta.mdx +0 -5
  169. package/src/components/Deprecated/deprecated.mdx +0 -5
  170. package/src/components/HeaderBar/HeaderComplexMenu/HeaderComplexMenu.stories.ts +0 -272
  171. package/src/components/HeaderBar/HeaderComplexMenu/HeaderMenuItem/HeaderMenuItem.stories.ts +0 -49
  172. package/src/components/HeaderBar/HeaderComplexMenu/HeaderMenuSection/HeaderMenuSection.stories.ts +0 -56
  173. package/src/components/HeaderBar/HeaderComplexMenu/HeaderSubMenu/HeaderSubMenu.stories.ts +0 -137
  174. package/src/components/HeaderBar/HeaderComplexMenu/tests/HeaderComplexMenu.spec.ts +0 -129
  175. package/src/components/HeaderBar/HeaderComplexMenu/tests/__snapshots__/HeaderComplexMenu.spec.ts.snap +0 -18
  176. package/src/stories/Home/Accueil.mdx +0 -7
  177. package/src/stories/Home/PolitiqueDeConfidentialite.mdx +0 -4
  178. package/src/stories/Home/synapse.webp +0 -0
  179. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuItem/HeaderMenuItem.vue +0 -0
  180. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/HeaderMenuItem/tests/HeaderMenuItem.spec.ts +0 -0
  181. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/conts.ts +0 -0
  182. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/locals.ts +0 -0
  183. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/tests/useHandleSubMenus.spec.ts +0 -0
  184. /package/src/components/HeaderBar/{HeaderComplexMenu → HeaderBurgerMenu}/useHandleSubMenus.ts +0 -0
  185. /package/src/components/Logo/{types.d.ts → types.ts} +0 -0
@@ -0,0 +1,784 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+
3
+ import HeaderNavbar from './HeaderNavigationBar.vue'
4
+ import { VBtn } from 'vuetify/components'
5
+ import BackBtn from '../BackBtn/BackBtn.vue'
6
+ import { fn } from '@storybook/test'
7
+
8
+ const meta = {
9
+ title: 'Composants/Structure/HeaderBar/HeaderNavigationBar',
10
+ component: HeaderNavbar,
11
+ parameters: {
12
+ layout: 'fullscreen',
13
+ },
14
+ argTypes: {
15
+ 'burgerMenu': {
16
+ table: {
17
+ category: 'props',
18
+ type: {
19
+ summary: 'boolean',
20
+ },
21
+ defaultValue: {
22
+ summary: 'false',
23
+ },
24
+ },
25
+ control: { type: 'boolean' },
26
+ description:
27
+ 'État du menu burger. Controllable avec `v-model:burger-menu`.',
28
+ },
29
+ 'onUpdate:burgerMenu': {
30
+ action: 'update:burgerMenu',
31
+ table: {
32
+ category: 'events',
33
+ type: {
34
+ summary: 'boolean',
35
+ },
36
+ },
37
+ description: 'Emit lors de l\'ouverture ou la fermeture du menu.',
38
+ },
39
+ 'items': {
40
+ control: { type: 'object' },
41
+ description: 'Liste des items de navigation.',
42
+ table: {
43
+ type: {
44
+ summary: 'Array<...>',
45
+ detail: 'Array<{ label: string, href?: string, to?: string }>',
46
+ },
47
+ },
48
+ },
49
+ 'homeAriaLabel': {
50
+ control: { type: 'text' },
51
+ description: 'Aria label du logo.',
52
+ table: {
53
+ type: {
54
+ summary: 'string',
55
+ },
56
+ },
57
+ },
58
+ 'serviceTitle': {
59
+ control: { type: 'text' },
60
+ description: 'Titre du service.',
61
+ table: {
62
+ type: {
63
+ summary: 'string',
64
+ },
65
+ },
66
+ },
67
+ 'serviceSubtitle': {
68
+ control: { type: 'text' },
69
+ description: 'Sous-titre du service.',
70
+ table: {
71
+ type: {
72
+ summary: 'string',
73
+ },
74
+ },
75
+ },
76
+ 'homeLink': {
77
+ control: { type: 'object' },
78
+ description:
79
+ 'Le lien de retour vers la home. Renseigner soit `href` soit `to` pour avoir un lien de type `<a>` ou `<router-link>`.',
80
+ table: {
81
+ type: {
82
+ summary: `{
83
+ href?: string,
84
+ to?: RouteLocationRaw,
85
+ ariaLabel?: string,
86
+ }`,
87
+ },
88
+ defaultValue: {
89
+ summary: `{ href: '/' }`,
90
+ },
91
+ },
92
+ },
93
+ 'sticky': {
94
+ control: { type: 'boolean' },
95
+ description: 'Activer le mode sticky.',
96
+ table: {
97
+ type: {
98
+ summary: 'boolean',
99
+ },
100
+ },
101
+ },
102
+ 'hideWhenDown': {
103
+ control: { type: 'text' },
104
+ description: 'Masquer le header quand on scroll vers le bas.',
105
+ table: {
106
+ type: {
107
+ summary: 'boolean',
108
+ },
109
+ },
110
+ },
111
+ 'maxHorizontalMenuItems': {
112
+ control: { type: 'number' },
113
+ description:
114
+ 'Nombre maximum d\'items dans le menu horizontal avant de basculer sur le menu burger.',
115
+ table: {
116
+ type: {
117
+ summary: 'number',
118
+ },
119
+ },
120
+ },
121
+ 'logo': {
122
+ control: { type: 'text' },
123
+ description: 'Remplacer le logo.',
124
+ table: {
125
+ type: {
126
+ summary: `{
127
+ menu-open: boolean,
128
+ home-aria-label: string,
129
+ service-title: string,
130
+ service-subtitle: string,
131
+ }`,
132
+ },
133
+ },
134
+ },
135
+ 'logo-brand-content': {
136
+ control: { type: 'text' },
137
+ description:
138
+ 'Le contenu a droite du logo de l\'assurance maladie. Peut être utilisé pour accoler un autre logo par exemple.',
139
+ table: {
140
+ type: {
141
+ summary: `{
142
+ menu-open: boolean,
143
+ home-aria-label: string,
144
+ service-title: string,
145
+ service-subtitle: string,
146
+ }`,
147
+ },
148
+ },
149
+ },
150
+ 'header-side': {
151
+ control: { type: 'text' },
152
+ description:
153
+ 'Contenu a droite du header. Utile pour ajouter un menu secondaire par exemple.',
154
+ table: {
155
+ type: {
156
+ summary: '{ menu-open: boolean }',
157
+ },
158
+ },
159
+ },
160
+ 'navigation-bar-prepend': {
161
+ control: { type: 'text' },
162
+ description: 'Contenu a gauche de la barre de navigation (desktop).',
163
+ table: {
164
+ type: {
165
+ summary: '{}',
166
+ },
167
+ },
168
+ },
169
+ 'navigation-bar-append': {
170
+ control: { type: 'text' },
171
+ description: 'Contenu a droite de la barre de navigation (desktop).',
172
+ table: {
173
+ type: {
174
+ summary: '{}',
175
+ },
176
+ },
177
+ },
178
+ 'navigation-bar-content': {
179
+ control: { type: 'text' },
180
+ description: 'Remplace le contenu de la barre de navigation (desktop).',
181
+ table: {
182
+ type: {
183
+ summary: '{}',
184
+ },
185
+ },
186
+ },
187
+ 'navigation-menu-prepend': {
188
+ control: { type: 'text' },
189
+ description: 'Contenu en haut du menu de navigation (mobile).',
190
+ table: {
191
+ type: {
192
+ summary: '{ menu-open: boolean }',
193
+ },
194
+ },
195
+ },
196
+ 'navigation-menu-append': {
197
+ control: { type: 'text' },
198
+ description: 'Contenu en bas du menu de navigation (mobile).',
199
+ table: {
200
+ type: {
201
+ summary: '{ menu-open: boolean }',
202
+ },
203
+ },
204
+ },
205
+ 'navigation-menu-content': {
206
+ control: { type: 'text' },
207
+ description:
208
+ 'Remplace le contenu du menu de navigation (mobile). Utiliser les composants `HeaderMenuSection` et `HeaderMenuItem`.',
209
+ table: {
210
+ type: {
211
+ summary: '{ menu-open: boolean }',
212
+ },
213
+ },
214
+ },
215
+ 'vuetifyOptions': {
216
+ control: { type: 'object' },
217
+ description:
218
+ 'Permet de personaliser les props des composants vuetify `VSheet`, `VTabs` et `VTab` utilisés en interne.',
219
+ table: {
220
+ category: 'props',
221
+ type: {
222
+ summary: 'object',
223
+ detail: `{
224
+ sheet: Record<string, any>,
225
+ tabs: Record<string, any>,
226
+ tab: Record<string, any>,
227
+ }`,
228
+ },
229
+ defaultValue: {
230
+ summary: 'object',
231
+ detail: `{
232
+ sheet: {
233
+ theme: 'dark',
234
+ dense: true,
235
+ color: '#07275c',
236
+ },
237
+ tabs: {
238
+ height: '53',
239
+ showArrows: true,
240
+ },
241
+ tab: {
242
+ baseColor: 'rgba(255, 255, 255, 0.7)',
243
+ sliderColor: '#fff',
244
+ ripple: false,
245
+ },
246
+ }`,
247
+ },
248
+ },
249
+ },
250
+ },
251
+ } satisfies Meta<typeof HeaderNavbar>
252
+
253
+ export default meta
254
+
255
+ type Story = StoryObj<typeof meta>
256
+
257
+ export const Default: Story = {
258
+ args: {
259
+ items: [
260
+ {
261
+ label: 'Home',
262
+ href: '',
263
+ },
264
+ {
265
+ label: 'About',
266
+ href: '',
267
+ },
268
+ ],
269
+ },
270
+ parameters: {
271
+ sourceCode: [
272
+ {
273
+ name: 'Template',
274
+ code: `
275
+ <HeaderNavbar
276
+ :items="[
277
+ { label: 'Home', href: '' },
278
+ { label: 'About', href: '' },
279
+ ]"
280
+ />
281
+ `,
282
+ },
283
+ ],
284
+ },
285
+ }
286
+
287
+ export const WithScroll: Story = {
288
+ args: {
289
+ items: [
290
+ {
291
+ label: 'Home',
292
+ href: '',
293
+ },
294
+ {
295
+ label: 'About',
296
+ href: '',
297
+ },
298
+ ],
299
+ },
300
+ decorators: [
301
+ () => ({
302
+ template: `
303
+ <div>
304
+ <story/>
305
+ <div
306
+ style="height: 200vh; background-color: #f5f5f5; margin: auto; margin-top: 2rem; max-width: 1200px; padding: 1em;"
307
+ >Contenu de la page</div>
308
+ </div>`,
309
+ }),
310
+ ],
311
+ parameters: {
312
+ sourceCode: [
313
+ {
314
+ name: 'Template',
315
+ code: `<template>
316
+ <HeaderNavbar
317
+ :items="[
318
+ { label: 'Home', href: '' },
319
+ { label: 'About', href: '' },
320
+ ]"
321
+ />
322
+ <div
323
+ style="height: 200vh; background-color: #f5f5f5; margin: auto; margin-top: 2rem; max-width: 1200px; padding: 1em;"
324
+ >Contenu de la page</div>
325
+ </template>
326
+ `,
327
+ },
328
+ ],
329
+ },
330
+ }
331
+
332
+ export const WithManyItems: Story = {
333
+ args: {
334
+ items: [
335
+ {
336
+ label: 'Home',
337
+ href: '',
338
+ },
339
+ {
340
+ label: 'About',
341
+ href: '',
342
+ },
343
+ {
344
+ label: 'Services',
345
+ href: '',
346
+ },
347
+ {
348
+ label: 'Contact',
349
+ href: '',
350
+ },
351
+ {
352
+ label: 'Blog',
353
+ href: '',
354
+ },
355
+ {
356
+ label: 'Portfolio',
357
+ href: '',
358
+ },
359
+ {
360
+ label: 'Team',
361
+ href: '',
362
+ },
363
+ {
364
+ label: 'Careers',
365
+ href: '',
366
+ },
367
+ ],
368
+ },
369
+ parameters: {
370
+ sourceCode: [
371
+ {
372
+ name: 'Template',
373
+ code: `
374
+ <HeaderNavbar
375
+ :items="[
376
+ {
377
+ label: 'Home',
378
+ href: '',
379
+ },
380
+ {
381
+ label: 'About',
382
+ href: '',
383
+ },
384
+ {
385
+ label: 'Services',
386
+ href: '',
387
+ },
388
+ {
389
+ label: 'Contact',
390
+ href: '',
391
+ },
392
+ {
393
+ label: 'Blog',
394
+ href: '',
395
+ },
396
+ {
397
+ label: 'Portfolio',
398
+ href: '',
399
+ },
400
+ {
401
+ label: 'Team',
402
+ href: '',
403
+ },
404
+ {
405
+ label: 'Careers',
406
+ href: '',
407
+ },
408
+ ]"
409
+ />
410
+ `,
411
+ },
412
+ ],
413
+ },
414
+ }
415
+
416
+ export const WithSlots: Story = {
417
+ args: {
418
+ ...Default.args,
419
+ },
420
+ render: (args) => {
421
+ return {
422
+ components: { HeaderNavbar, VBtn, BackBtn },
423
+ setup() {
424
+ return { args }
425
+ },
426
+ template: `
427
+ <HeaderNavbar v-bind="args">
428
+ <template #logo-brand-content>
429
+ <svg
430
+ width="22"
431
+ height="64"
432
+ fill="#0c419a"
433
+ role="img"
434
+ focusable="false"
435
+ aria-hidden="true"
436
+ xmlns="http://www.w3.org/2000/svg"
437
+ viewBox="0 0 22 64"
438
+ >
439
+ <path d="M14.3 49.3c-.2 0-.4-.2-.4-.4V14.2c0-.2.2-.4.4-.4.3 0 .5.2.5.4v34.7c0 .2-.2.4-.5.4Z" />
440
+ </svg>
441
+ <img
442
+ src="/logo-msa.svg"
443
+ alt="MSA : Santé, Famille, Retraite, Services"
444
+ width="115px"
445
+ height="52px"
446
+ />
447
+ </template>
448
+ <template #navigation-bar-prepend>
449
+ <BackBtn
450
+ :dark="true"
451
+ class="mr-4"
452
+ />
453
+ </template>
454
+ <template #navigation-bar-append>
455
+ <VBtn
456
+ variant="tonal"
457
+ color="white"
458
+ >
459
+ Besoin d’aide ?
460
+ </VBtn>
461
+ </template>
462
+ <template #navigation-menu-append>
463
+ <VBtn
464
+ variant="tonal"
465
+ color="primary"
466
+ class="my-12 mx-8"
467
+ >
468
+ Besoin d’aide ?
469
+ </VBtn>
470
+ </template>
471
+ </HeaderNavbar>
472
+ `,
473
+ }
474
+ },
475
+ parameters: {
476
+ sourceCode: [
477
+ {
478
+ name: 'Template',
479
+ code: `<template>
480
+ <HeaderNavbar>
481
+ <template #logo-brand-content>
482
+ <svg
483
+ width="22"
484
+ height="64"
485
+ fill="#0c419a"
486
+ role="img"
487
+ focusable="false"
488
+ aria-hidden="true"
489
+ xmlns="http://www.w3.org/2000/svg"
490
+ viewBox="0 0 22 64"
491
+ >
492
+ <path d="M14.3 49.3c-.2 0-.4-.2-.4-.4V14.2c0-.2.2-.4.4-.4.3 0 .5.2.5.4v34.7c0 .2-.2.4-.5.4Z" />
493
+ </svg>
494
+ <img
495
+ src="/logo-msa.svg"
496
+ alt="MSA : Santé, Famille, Retraite, Services"
497
+ width="115px"
498
+ height="52px"
499
+ />
500
+ </template>
501
+ <template #navigation-bar-prepend>
502
+ <BackBtn
503
+ :dark="true"
504
+ class="mr-4"
505
+ />
506
+ </template>
507
+ <template #navigation-bar-append>
508
+ <VBtn
509
+ variant="tonal"
510
+ color="white"
511
+ >
512
+ Besoin d’aide ?
513
+ </VBtn>
514
+ </template>
515
+ <template #navigation-menu-append>
516
+ <VBtn
517
+ variant="tonal"
518
+ color="primary"
519
+ class="my-12 mx-8"
520
+ >
521
+ Besoin d’aide ?
522
+ </VBtn>
523
+ </template>
524
+ </HeaderNavbar>
525
+ </template>
526
+ `,
527
+ },
528
+ ],
529
+ },
530
+ }
531
+
532
+ export const WithLogoSlot: Story = {
533
+ args: {
534
+ ...Default.args,
535
+ },
536
+ render: (args) => {
537
+ return {
538
+ components: { HeaderNavbar, VBtn, BackBtn },
539
+ setup() {
540
+ return { args }
541
+ },
542
+ template: `
543
+ <HeaderNavbar v-bind="args">
544
+ <template #logo-brand-content>
545
+ <svg
546
+ width="22"
547
+ height="64"
548
+ fill="#0c419a"
549
+ role="img"
550
+ focusable="false"
551
+ aria-hidden="true"
552
+ xmlns="http://www.w3.org/2000/svg"
553
+ viewBox="0 0 22 64"
554
+ >
555
+ <path d="M14.3 49.3c-.2 0-.4-.2-.4-.4V14.2c0-.2.2-.4.4-.4.3 0 .5.2.5.4v34.7c0 .2-.2.4-.5.4Z" />
556
+ </svg>
557
+ <img
558
+ src="/logo-msa.svg"
559
+ alt="MSA : Santé, Famille, Retraite, Services"
560
+ width="115px"
561
+ height="52px"
562
+ />
563
+ </template>
564
+ </HeaderNavbar>
565
+ `,
566
+ }
567
+ },
568
+ parameters: {
569
+ sourceCode: [
570
+ {
571
+ name: 'Template',
572
+ code: `
573
+ <HeaderNavbar>
574
+ <template #logo-brand-content>
575
+ <svg
576
+ width="22"
577
+ height="64"
578
+ fill="#0c419a"
579
+ role="img"
580
+ focusable="false"
581
+ aria-hidden="true"
582
+ xmlns="http://www.w3.org/2000/svg"
583
+ viewBox="0 0 22 64"
584
+ >
585
+ <path d="M14.3 49.3c-.2 0-.4-.2-.4-.4V14.2c0-.2.2-.4.4-.4.3 0 .5.2.5.4v34.7c0 .2-.2.4-.5.4Z" />
586
+ </svg>
587
+ <img
588
+ src="/logo-msa.svg"
589
+ alt="MSA : Santé, Famille, Retraite, Services"
590
+ width="115px"
591
+ height="52px"
592
+ />
593
+ </template>
594
+ </HeaderNavbar>
595
+ `,
596
+ },
597
+ ],
598
+ },
599
+ }
600
+
601
+ export const WithNavigationBarPrependSlot: Story = {
602
+ args: {
603
+ ...Default.args,
604
+ burgerMenu: false,
605
+ },
606
+ render: (args) => {
607
+ return {
608
+ components: { HeaderNavbar, VBtn, BackBtn },
609
+ setup() {
610
+ return { args }
611
+ },
612
+ template: `
613
+ <HeaderNavbar v-bind="args" v-model="args.burgerMenu">
614
+ <template #navigation-bar-prepend>
615
+ <BackBtn
616
+ :dark="true"
617
+ class="mr-4"
618
+ />
619
+ </template>
620
+ </HeaderNavbar>
621
+ `,
622
+ }
623
+ },
624
+ parameters: {
625
+ sourceCode: [
626
+ {
627
+ name: 'Template',
628
+ code: `
629
+ <HeaderNavbar>
630
+ <template #navigation-bar-prepend>
631
+ <BackBtn
632
+ :dark="true"
633
+ class="mr-4"
634
+ />
635
+ </template>
636
+ </HeaderNavbar>
637
+ `,
638
+ },
639
+ ],
640
+ },
641
+ }
642
+
643
+ export const WithNavigationBarAppendSlot: Story = {
644
+ args: {
645
+ ...Default.args,
646
+ },
647
+ render: (args) => {
648
+ return {
649
+ components: { HeaderNavbar, VBtn, BackBtn },
650
+ setup() {
651
+ return { args }
652
+ },
653
+ template: `
654
+ <HeaderNavbar v-bind="args">
655
+ <template #navigation-bar-append>
656
+ <VBtn
657
+ variant="tonal"
658
+ color="white"
659
+ >
660
+ Besoin d’aide ?
661
+ </VBtn>
662
+ </template>
663
+ </HeaderNavbar>
664
+ `,
665
+ }
666
+ },
667
+ parameters: {
668
+ sourceCode: [
669
+ {
670
+ name: 'Template',
671
+ code: `
672
+ <template>
673
+ <HeaderNavbar>
674
+ <template #navigation-bar-append>
675
+ <VBtn
676
+ variant="tonal"
677
+ color="white"
678
+ >
679
+ Besoin d’aide ?
680
+ </VBtn>
681
+ </template>
682
+ </HeaderNavbar>
683
+ </template>
684
+ `,
685
+ },
686
+ ],
687
+ },
688
+ }
689
+
690
+ export const WithNavigationMenuAppendSlot: Story = {
691
+ args: {
692
+ ...Default.args,
693
+ 'maxHorizontalMenuItems': 0,
694
+ 'onUpdate:burgerMenu': fn(),
695
+ },
696
+ render: (args) => {
697
+ return {
698
+ components: { HeaderNavbar, VBtn, BackBtn },
699
+ setup() {
700
+ return { args }
701
+ },
702
+ template: `
703
+ <HeaderNavbar
704
+ v-bind="args"
705
+ v-model="args.burgerMenu"
706
+ @update:burgerMenu="()=>{
707
+ args['onUpdate:burgerMenu']
708
+ args.burgerMenu = !args.burgerMenu
709
+ }"
710
+ >
711
+ <template #navigation-menu-append>
712
+ <VBtn
713
+ variant="tonal"
714
+ color="primary"
715
+ class="my-12 mx-8"
716
+ >
717
+ Besoin d’aide ?
718
+ </VBtn>
719
+ </template>
720
+ </HeaderNavbar>
721
+ <div style="height: 200px;"></div>
722
+ `,
723
+ }
724
+ },
725
+ parameters: {
726
+ sourceCode: [
727
+ {
728
+ name: 'Template',
729
+ code: `
730
+ <template>
731
+ <HeaderNavbar
732
+ maxHorizontalMenuItems="0"
733
+ :items="[
734
+ { label: 'Home', href: '' },
735
+ { label: 'About', href: '' },
736
+ ]"
737
+ >
738
+ <template #navigation-menu-append>
739
+ <VBtn
740
+ variant="tonal"
741
+ color="primary"
742
+ class="my-12 mx-8"
743
+ >
744
+ Besoin d’aide ?
745
+ </VBtn>
746
+ </template>
747
+ </HeaderNavbar>
748
+ </template>
749
+ `,
750
+ },
751
+ ],
752
+ },
753
+ }
754
+
755
+ export const WithVuetifyOptions: Story = {
756
+ args: {
757
+ ...Default.args,
758
+ vuetifyOptions: {
759
+ sheet: {
760
+ color: 'pink',
761
+ },
762
+ },
763
+ },
764
+ parameters: {
765
+ sourceCode: [
766
+ {
767
+ name: 'Template',
768
+ code: `
769
+ <HeaderNavbar
770
+ :items="[
771
+ { label: 'Home', href: '' },
772
+ { label: 'About', href: '' },
773
+ ]"
774
+ :vuetifyOptions="{
775
+ sheet: {
776
+ color: 'pink',
777
+ },
778
+ }"
779
+ />
780
+ `,
781
+ },
782
+ ],
783
+ },
784
+ }