cja-phoenix 0.6.0 → 0.6.2

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 (283) hide show
  1. package/dist/cja-phoenix.es.js +3816 -4306
  2. package/dist/style.css +1 -0
  3. package/dist/types/components/composite/CheckoutCrossSell.vue.d.ts +29 -0
  4. package/dist/types/components/composite/CheckoutLayout.vue.d.ts +23 -0
  5. package/dist/types/components/composite/CheckoutMilestones.vue.d.ts +16 -0
  6. package/dist/types/components/composite/CjaFooter.vue.d.ts +34 -0
  7. package/dist/types/components/composite/CjaMenuBar.vue.d.ts +52 -0
  8. package/dist/types/components/composite/FunnelLayout.vue.d.ts +35 -0
  9. package/dist/types/components/composite/FunnelSubmit.vue.d.ts +26 -0
  10. package/dist/types/components/composite/FunnelSummary.vue.d.ts +77 -0
  11. package/dist/types/components/composite/FunnelTitle.vue.d.ts +19 -0
  12. package/dist/types/components/composite/InfoShowcase.vue.d.ts +25 -0
  13. package/dist/types/components/composite/JourneyMacroSteps.vue.d.ts +16 -0
  14. package/dist/types/components/composite/ResultsSidebar.vue.d.ts +9 -0
  15. package/dist/types/components/forms/CheckboxInput.vue.d.ts +41 -0
  16. package/dist/types/components/forms/CurrencyInput.vue.d.ts +65 -0
  17. package/dist/types/components/forms/FileInput.vue.d.ts +89 -0
  18. package/dist/types/components/forms/NumberInput.vue.d.ts +58 -0
  19. package/dist/types/components/forms/PhoneInput.vue.d.ts +69 -0
  20. package/dist/types/components/forms/RadioInput.vue.d.ts +43 -0
  21. package/dist/types/components/forms/RadioInputList.vue.d.ts +65 -0
  22. package/dist/types/components/forms/SelectInput.vue.d.ts +80 -0
  23. package/dist/types/components/forms/SelectionTiles.vue.d.ts +51 -0
  24. package/dist/types/components/forms/TextInput.vue.d.ts +76 -0
  25. package/dist/types/components/forms/TileCheckboxInput.vue.d.ts +23 -0
  26. package/dist/types/components/forms/ToggleInput.vue.d.ts +51 -0
  27. package/dist/types/components/forms/structure/InputContainer.vue.d.ts +22 -0
  28. package/dist/types/components/forms/structure/InputError.vue.d.ts +15 -0
  29. package/dist/types/components/forms/structure/InputTitle.vue.d.ts +21 -0
  30. package/dist/types/components/structural/CjaButton.vue.d.ts +59 -0
  31. package/dist/types/components/structural/CollapseContainer.vue.d.ts +51 -0
  32. package/dist/{components → types/components}/structural/ContentTabs.vue.d.ts +17 -20
  33. package/dist/types/components/structural/FixedContainer.vue.d.ts +68 -0
  34. package/dist/types/components/structural/GridContainer.vue.d.ts +36 -0
  35. package/dist/types/components/structural/GridItem.vue.d.ts +26 -0
  36. package/dist/types/components/structural/InfoMessage.vue.d.ts +30 -0
  37. package/dist/types/components/structural/LoadingSpinner.vue.d.ts +17 -0
  38. package/dist/types/components/structural/Modal.vue.d.ts +65 -0
  39. package/dist/types/components/structural/Scaffold.vue.d.ts +9 -0
  40. package/dist/types/index.d.ts +16 -7
  41. package/dist/types/stories/CjaButton.story.vue.d.ts +2 -0
  42. package/dist/types/stories/ContentTabs.story.vue.d.ts +2 -0
  43. package/dist/types/stories/Modal.story.vue.d.ts +2 -0
  44. package/dist/types/stories/RadioInputList.story.vue.d.ts +2 -0
  45. package/dist/types/{Router.d.ts → types/Router.d.ts} +1 -0
  46. package/dist/types/types/index.d.ts +7 -0
  47. package/dist/{utils → types/utils}/formValidations.d.ts +3 -0
  48. package/package.json +21 -30
  49. package/src/assets/backdrop.scss +10 -0
  50. package/src/assets/breakpoints.scss +12 -0
  51. package/src/assets/fonts.scss +1 -0
  52. package/src/assets/forms.scss +97 -0
  53. package/src/assets/grid.scss +14 -0
  54. package/src/assets/iconia/Read Me.txt +7 -0
  55. package/src/assets/iconia/demo-files/demo.css +155 -0
  56. package/src/assets/iconia/demo-files/demo.js +30 -0
  57. package/src/assets/iconia/demo.html +7055 -0
  58. package/src/assets/iconia/fonts/CGG-icomoon.eot +0 -0
  59. package/src/assets/iconia/fonts/CGG-icomoon.svg +513 -0
  60. package/src/assets/iconia/fonts/CGG-icomoon.ttf +0 -0
  61. package/src/assets/iconia/fonts/CGG-icomoon.woff +0 -0
  62. package/src/assets/iconia/selection.json +1 -0
  63. package/src/assets/iconia/style.css +1547 -0
  64. package/src/assets/iconia/style.scss +2556 -0
  65. package/src/assets/iconia/variables.scss +507 -0
  66. package/src/assets/main.scss +30 -0
  67. package/src/assets/radioOld.scss +52 -0
  68. package/src/assets/shadows.scss +3 -0
  69. package/src/assets/tippy.scss +45 -0
  70. package/src/assets/vars/development.scss +4 -0
  71. package/src/assets/vars/production.scss +4 -0
  72. package/src/components/composite/CheckoutCrossSell.vue +478 -0
  73. package/src/components/composite/CheckoutLayout.vue +59 -0
  74. package/src/components/composite/CheckoutMilestones.vue +161 -0
  75. package/src/components/composite/CjaFooter.vue +223 -0
  76. package/src/components/composite/CjaMenuBar.vue +543 -0
  77. package/src/components/composite/FunnelLayout.vue +197 -0
  78. package/src/components/composite/FunnelSubmit.vue +53 -0
  79. package/src/components/composite/FunnelSummary.vue +198 -0
  80. package/src/components/composite/FunnelTitle.vue +59 -0
  81. package/src/components/composite/InfoShowcase.vue +87 -0
  82. package/src/components/composite/JourneyMacroSteps.vue +104 -0
  83. package/src/components/composite/ProductDetails.vue +149 -0
  84. package/src/components/composite/ResultsLayout.vue +156 -0
  85. package/src/components/composite/ResultsSidebar.vue +74 -0
  86. package/src/components/forms/CheckboxInput.vue +103 -0
  87. package/src/components/forms/CurrencyInput.vue +126 -0
  88. package/src/components/forms/FileInput.vue +250 -0
  89. package/src/components/forms/NumberInput.vue +165 -0
  90. package/src/components/forms/PhoneInput.vue +122 -0
  91. package/src/components/forms/RadioInput.vue +98 -0
  92. package/src/components/forms/RadioInputList.vue +156 -0
  93. package/src/components/forms/SelectInput.vue +392 -0
  94. package/src/components/forms/SelectionTiles.vue +196 -0
  95. package/src/components/forms/TextInput.vue +144 -0
  96. package/src/components/forms/TileCheckboxInput.vue +96 -0
  97. package/src/components/forms/ToggleInput.vue +88 -0
  98. package/src/components/forms/structure/InputContainer.vue +28 -0
  99. package/src/components/forms/structure/InputError.vue +26 -0
  100. package/src/components/forms/structure/InputTitle.vue +52 -0
  101. package/src/components/index.ts +73 -0
  102. package/src/components/structural/CjaButton.vue +332 -0
  103. package/src/components/structural/CollapseContainer.vue +141 -0
  104. package/src/components/structural/ContentTabs.vue +105 -0
  105. package/src/components/structural/FixedContainer.vue +107 -0
  106. package/src/components/structural/GridContainer.vue +70 -0
  107. package/src/components/structural/GridItem.vue +47 -0
  108. package/src/components/structural/InfoMessage.vue +105 -0
  109. package/src/components/structural/LoadingSpinner.vue +39 -0
  110. package/src/components/structural/Modal.vue +209 -0
  111. package/src/components/structural/Scaffold.vue +3 -0
  112. package/src/constants/MyConstants.ts +1 -0
  113. package/src/constants/index.ts +5 -0
  114. package/src/env.d.ts +11 -0
  115. package/src/index.ts +31 -0
  116. package/src/stories/CjaButton.story.vue +192 -0
  117. package/src/stories/ContentTabs.story.vue +59 -0
  118. package/src/stories/Modal.story.vue +127 -0
  119. package/src/stories/RadioInputList.story.vue +61 -0
  120. package/src/types/CheckoutMilestone.ts +5 -0
  121. package/src/types/Footer.ts +17 -0
  122. package/src/types/Menu.ts +19 -0
  123. package/src/types/RadioOption.ts +7 -0
  124. package/src/types/Router.ts +19 -0
  125. package/src/types/SelectOption.ts +6 -0
  126. package/src/types/StoreDataValue.ts +12 -0
  127. package/src/types/Storyblok.ts +10 -0
  128. package/src/types/TileOption.ts +8 -0
  129. package/src/types/index.ts +19 -0
  130. package/src/utils/cjaRouter.ts +74 -0
  131. package/src/utils/cjaStore.ts +43 -0
  132. package/src/utils/findScrollAncestor.ts +16 -0
  133. package/src/utils/formValidations.ts +192 -0
  134. package/src/utils/generateRoutes.ts +36 -0
  135. package/src/utils/getFromUrl.ts +25 -0
  136. package/src/utils/getMessages.ts +23 -0
  137. package/src/utils/gtm.ts +158 -0
  138. package/src/utils/index.ts +31 -0
  139. package/src/utils/jsonReviver.ts +20 -0
  140. package/src/utils/storyblokLink.ts +4 -0
  141. package/src/utils/updateForm.ts +40 -0
  142. package/src/utils/uploadFile.ts +25 -0
  143. package/src/utils/useGlobalProperties.ts +11 -0
  144. package/src/utils/useViewportDetector.ts +35 -0
  145. package/dist/cja-phoenix.cjs.js +0 -44
  146. package/dist/cja-phoenix.d.ts +0 -3
  147. package/dist/cja-phoenix.umd.js +0 -45
  148. package/dist/components/composite/CheckoutCrossSell.vue.d.ts +0 -36
  149. package/dist/components/composite/CheckoutLayout.vue.d.ts +0 -20
  150. package/dist/components/composite/CheckoutMilestones.vue.d.ts +0 -13
  151. package/dist/components/composite/CjaFooter.vue.d.ts +0 -29
  152. package/dist/components/composite/CjaMenuBar.vue.d.ts +0 -53
  153. package/dist/components/composite/FunnelLayout.vue.d.ts +0 -38
  154. package/dist/components/composite/FunnelSubmit.vue.d.ts +0 -25
  155. package/dist/components/composite/FunnelSummary.vue.d.ts +0 -76
  156. package/dist/components/composite/FunnelTitle.vue.d.ts +0 -24
  157. package/dist/components/composite/InfoShowcase.vue.d.ts +0 -28
  158. package/dist/components/composite/JourneyMacroSteps.vue.d.ts +0 -13
  159. package/dist/components/forms/CheckboxInput.vue.d.ts +0 -38
  160. package/dist/components/forms/CurrencyInput.vue.d.ts +0 -92
  161. package/dist/components/forms/FileInput.vue.d.ts +0 -118
  162. package/dist/components/forms/NumberInput.vue.d.ts +0 -73
  163. package/dist/components/forms/PhoneInput.vue.d.ts +0 -104
  164. package/dist/components/forms/RadioInputList.vue.d.ts +0 -96
  165. package/dist/components/forms/SelectInput.vue.d.ts +0 -121
  166. package/dist/components/forms/SelectionTiles.vue.d.ts +0 -64
  167. package/dist/components/forms/TextInput.vue.d.ts +0 -127
  168. package/dist/components/forms/TileCheckboxInput.vue.d.ts +0 -34
  169. package/dist/components/forms/ToggleInput.vue.d.ts +0 -70
  170. package/dist/components/forms/structure/InputContainer.vue.d.ts +0 -17
  171. package/dist/components/forms/structure/InputError.vue.d.ts +0 -12
  172. package/dist/components/forms/structure/InputTitle.vue.d.ts +0 -30
  173. package/dist/components/structural/CjaButton.vue.d.ts +0 -66
  174. package/dist/components/structural/CollapseContainer.vue.d.ts +0 -40
  175. package/dist/components/structural/FixedContainer.vue.d.ts +0 -69
  176. package/dist/components/structural/GridContainer.vue.d.ts +0 -21
  177. package/dist/components/structural/GridItem.vue.d.ts +0 -29
  178. package/dist/components/structural/InfoMessage.vue.d.ts +0 -39
  179. package/dist/components/structural/LoadingSpinner.vue.d.ts +0 -16
  180. package/dist/components/structural/Modal.vue.d.ts +0 -50
  181. package/dist/components/structural/Scaffold.vue.d.ts +0 -3
  182. package/dist/components/structural/Scaffold.vue.d.ts.map +0 -1
  183. package/dist/index.d.ts +0 -14
  184. package/dist/src/components/composite/CheckoutCrossSell.vue.d.ts +0 -5
  185. package/dist/src/components/composite/CheckoutCrossSell.vue.d.ts.map +0 -1
  186. package/dist/src/components/composite/CheckoutLayout.vue.d.ts +0 -5
  187. package/dist/src/components/composite/CheckoutLayout.vue.d.ts.map +0 -1
  188. package/dist/src/components/composite/CheckoutMilestones.vue.d.ts +0 -5
  189. package/dist/src/components/composite/CheckoutMilestones.vue.d.ts.map +0 -1
  190. package/dist/src/components/composite/CjaFooter.vue.d.ts +0 -5
  191. package/dist/src/components/composite/CjaFooter.vue.d.ts.map +0 -1
  192. package/dist/src/components/composite/CjaMenuBar.vue.d.ts +0 -5
  193. package/dist/src/components/composite/CjaMenuBar.vue.d.ts.map +0 -1
  194. package/dist/src/components/composite/FunnelLayout.vue.d.ts +0 -5
  195. package/dist/src/components/composite/FunnelLayout.vue.d.ts.map +0 -1
  196. package/dist/src/components/composite/FunnelSubmit.vue.d.ts +0 -5
  197. package/dist/src/components/composite/FunnelSubmit.vue.d.ts.map +0 -1
  198. package/dist/src/components/composite/FunnelSummary.vue.d.ts +0 -5
  199. package/dist/src/components/composite/FunnelSummary.vue.d.ts.map +0 -1
  200. package/dist/src/components/composite/FunnelTitle.vue.d.ts +0 -5
  201. package/dist/src/components/composite/FunnelTitle.vue.d.ts.map +0 -1
  202. package/dist/src/components/composite/InfoShowcase.vue.d.ts +0 -5
  203. package/dist/src/components/composite/InfoShowcase.vue.d.ts.map +0 -1
  204. package/dist/src/components/composite/JourneyMacroSteps.vue.d.ts +0 -5
  205. package/dist/src/components/composite/JourneyMacroSteps.vue.d.ts.map +0 -1
  206. package/dist/src/components/composite/ProductDetails.vue.d.ts +0 -5
  207. package/dist/src/components/composite/ProductDetails.vue.d.ts.map +0 -1
  208. package/dist/src/components/composite/ResultsLayout.vue.d.ts +0 -5
  209. package/dist/src/components/composite/ResultsLayout.vue.d.ts.map +0 -1
  210. package/dist/src/components/forms/CheckboxInput.vue.d.ts +0 -5
  211. package/dist/src/components/forms/CheckboxInput.vue.d.ts.map +0 -1
  212. package/dist/src/components/forms/CurrencyInput.vue.d.ts +0 -5
  213. package/dist/src/components/forms/CurrencyInput.vue.d.ts.map +0 -1
  214. package/dist/src/components/forms/FileInput.vue.d.ts +0 -5
  215. package/dist/src/components/forms/FileInput.vue.d.ts.map +0 -1
  216. package/dist/src/components/forms/NumberInput.vue.d.ts +0 -5
  217. package/dist/src/components/forms/NumberInput.vue.d.ts.map +0 -1
  218. package/dist/src/components/forms/PhoneInput.vue.d.ts +0 -5
  219. package/dist/src/components/forms/PhoneInput.vue.d.ts.map +0 -1
  220. package/dist/src/components/forms/RadioInputList.vue.d.ts +0 -5
  221. package/dist/src/components/forms/RadioInputList.vue.d.ts.map +0 -1
  222. package/dist/src/components/forms/SelectInput.vue.d.ts +0 -5
  223. package/dist/src/components/forms/SelectInput.vue.d.ts.map +0 -1
  224. package/dist/src/components/forms/SelectionTiles.vue.d.ts +0 -5
  225. package/dist/src/components/forms/SelectionTiles.vue.d.ts.map +0 -1
  226. package/dist/src/components/forms/TextInput.vue.d.ts +0 -5
  227. package/dist/src/components/forms/TextInput.vue.d.ts.map +0 -1
  228. package/dist/src/components/forms/TileCheckboxInput.vue.d.ts +0 -5
  229. package/dist/src/components/forms/TileCheckboxInput.vue.d.ts.map +0 -1
  230. package/dist/src/components/forms/ToggleInput.vue.d.ts +0 -5
  231. package/dist/src/components/forms/ToggleInput.vue.d.ts.map +0 -1
  232. package/dist/src/components/forms/structure/InputContainer.vue.d.ts +0 -5
  233. package/dist/src/components/forms/structure/InputContainer.vue.d.ts.map +0 -1
  234. package/dist/src/components/forms/structure/InputError.vue.d.ts +0 -5
  235. package/dist/src/components/forms/structure/InputError.vue.d.ts.map +0 -1
  236. package/dist/src/components/forms/structure/InputTitle.vue.d.ts +0 -5
  237. package/dist/src/components/forms/structure/InputTitle.vue.d.ts.map +0 -1
  238. package/dist/src/components/structural/CjaButton.vue.d.ts +0 -5
  239. package/dist/src/components/structural/CjaButton.vue.d.ts.map +0 -1
  240. package/dist/src/components/structural/CollapseContainer.vue.d.ts +0 -5
  241. package/dist/src/components/structural/CollapseContainer.vue.d.ts.map +0 -1
  242. package/dist/src/components/structural/ContentTabs.vue.d.ts +0 -5
  243. package/dist/src/components/structural/ContentTabs.vue.d.ts.map +0 -1
  244. package/dist/src/components/structural/FixedContainer.vue.d.ts +0 -5
  245. package/dist/src/components/structural/FixedContainer.vue.d.ts.map +0 -1
  246. package/dist/src/components/structural/GridContainer.vue.d.ts +0 -5
  247. package/dist/src/components/structural/GridContainer.vue.d.ts.map +0 -1
  248. package/dist/src/components/structural/GridItem.vue.d.ts +0 -5
  249. package/dist/src/components/structural/GridItem.vue.d.ts.map +0 -1
  250. package/dist/src/components/structural/InfoMessage.vue.d.ts +0 -5
  251. package/dist/src/components/structural/InfoMessage.vue.d.ts.map +0 -1
  252. package/dist/src/components/structural/LoadingSpinner.vue.d.ts +0 -5
  253. package/dist/src/components/structural/LoadingSpinner.vue.d.ts.map +0 -1
  254. package/dist/src/components/structural/Modal.vue.d.ts +0 -5
  255. package/dist/src/components/structural/Modal.vue.d.ts.map +0 -1
  256. package/dist/styles.css +0 -1
  257. /package/dist/{components → types/components}/composite/ProductDetails.vue.d.ts +0 -0
  258. /package/dist/{components → types/components}/composite/ResultsLayout.vue.d.ts +0 -0
  259. /package/dist/{components → types/components}/index.d.ts +0 -0
  260. /package/dist/{constants → types/constants}/MyConstants.d.ts +0 -0
  261. /package/dist/{constants → types/constants}/index.d.ts +0 -0
  262. /package/dist/types/{CheckoutMilestone.d.ts → types/CheckoutMilestone.d.ts} +0 -0
  263. /package/dist/types/{Footer.d.ts → types/Footer.d.ts} +0 -0
  264. /package/dist/types/{Menu.d.ts → types/Menu.d.ts} +0 -0
  265. /package/dist/types/{RadioOption.d.ts → types/RadioOption.d.ts} +0 -0
  266. /package/dist/types/{SelectOption.d.ts → types/SelectOption.d.ts} +0 -0
  267. /package/dist/types/{StoreDataValue.d.ts → types/StoreDataValue.d.ts} +0 -0
  268. /package/dist/types/{Storyblok.d.ts → types/Storyblok.d.ts} +0 -0
  269. /package/dist/types/{TileOption.d.ts → types/TileOption.d.ts} +0 -0
  270. /package/dist/{utils → types/utils}/cjaRouter.d.ts +0 -0
  271. /package/dist/{utils → types/utils}/cjaStore.d.ts +0 -0
  272. /package/dist/{utils → types/utils}/findScrollAncestor.d.ts +0 -0
  273. /package/dist/{utils → types/utils}/generateRoutes.d.ts +0 -0
  274. /package/dist/{utils → types/utils}/getFromUrl.d.ts +0 -0
  275. /package/dist/{utils → types/utils}/getMessages.d.ts +0 -0
  276. /package/dist/{utils → types/utils}/gtm.d.ts +0 -0
  277. /package/dist/{utils → types/utils}/index.d.ts +0 -0
  278. /package/dist/{utils → types/utils}/jsonReviver.d.ts +0 -0
  279. /package/dist/{utils → types/utils}/storyblokLink.d.ts +0 -0
  280. /package/dist/{utils → types/utils}/updateForm.d.ts +0 -0
  281. /package/dist/{utils → types/utils}/uploadFile.d.ts +0 -0
  282. /package/dist/{utils → types/utils}/useGlobalProperties.d.ts +0 -0
  283. /package/dist/{utils → types/utils}/useViewportDetector.d.ts +0 -0
@@ -0,0 +1,543 @@
1
+ <template>
2
+ <header
3
+ class="main-header-container"
4
+ :class="{
5
+ 'sidebar-active':
6
+ sidebarActive || (callModal?.active && activeViewport.md),
7
+ }"
8
+ id="page-header"
9
+ ref="headerEl"
10
+ >
11
+ <FixedContainer :active="activeViewport.lg" :size="{ width: '100%' }">
12
+ <div
13
+ class="main-header"
14
+ :class="{ 'has-categories': categories?.length }"
15
+ >
16
+ <div class="btn-sidebar-container" v-if="categories?.length">
17
+ <button
18
+ class="btn-sidebar m-cgg-icon--tlist"
19
+ @click="sidebarActive = !sidebarActive"
20
+ ></button>
21
+ </div>
22
+
23
+ <div class="logo-container">
24
+ <component
25
+ :is="homeNavigationEnabled ? 'a' : 'div'"
26
+ :href="homeNavigationEnabled ? '/' : ''"
27
+ class="logo-wrapper"
28
+ >
29
+ <img
30
+ height="26"
31
+ width="125"
32
+ :src="imageURL + 'CPJ-logo-header.svg'"
33
+ />
34
+ </component>
35
+ </div>
36
+
37
+ <div class="content-container">
38
+ <JourneyMacroSteps
39
+ :stepList="macroStepList"
40
+ v-if="activeViewport.lg && macroStepList"
41
+ />
42
+
43
+ <nav class="categories-container" v-else-if="categories?.length">
44
+ <div class="menu-category" v-for="category in categories">
45
+ <component
46
+ :is="category.link ? 'a' : 'div'"
47
+ class="category-label"
48
+ :href="category.link ? getStoryblokUrl(category.link) : ''"
49
+ >
50
+ {{ category.text }}
51
+ <span
52
+ v-if="category.subLinks"
53
+ class="m-cgg-icon--chevron-down"
54
+ ></span>
55
+ </component>
56
+ <Transition name="fade">
57
+ <div class="category-links-container" v-if="category.subLinks">
58
+ <ul>
59
+ <li v-for="menuLink in category.subLinks">
60
+ <a :href="getStoryblokUrl(menuLink.link)">
61
+ {{ menuLink.text }}
62
+ </a>
63
+ </li>
64
+ </ul>
65
+ </div>
66
+ </Transition>
67
+ </div>
68
+ </nav>
69
+
70
+ <slot name="content" v-else-if="$slots.content"></slot>
71
+ </div>
72
+
73
+ <div class="side-info" v-if="hasSideInfo">
74
+ <slot name="side"></slot>
75
+ <button
76
+ class="contact m-cgg-icon--phone"
77
+ v-if="hasContact"
78
+ @click="callModal.toggleModal()"
79
+ ></button>
80
+ </div>
81
+ </div>
82
+ <FixedContainer
83
+ v-if="!activeViewport.lg && macroStepList"
84
+ :size="{ width: '100%' }"
85
+ :position="{ left: '0', top: '0' }"
86
+ >
87
+ <JourneyMacroSteps :stepList="macroStepList" />
88
+ </FixedContainer>
89
+ </FixedContainer>
90
+ </header>
91
+
92
+ <Modal
93
+ ref="callModal"
94
+ v-if="hasContact"
95
+ :maxWidth="{ md: '470px', lg: '470px', xl: '470px' }"
96
+ >
97
+ <template #header>Precisa de ajuda?</template>
98
+ <template #body>
99
+ <div class="call-modal-body">
100
+ <div class="call-info">
101
+ <a class="phone-link" href="tel:211165765">
102
+ <span class="m-cgg-icon--phone"></span>
103
+ <span>211 165 765</span>
104
+ </a>
105
+ <div class="hours-wrapper">Seg - Sex: 10h às 19h</div>
106
+ </div>
107
+ <div class="call-cost">Custo de chamada para a rede fixa nacional</div>
108
+ <div class="btn-container">
109
+ <CjaButton :type="'secondary'" @click="callModal.closeModal()">
110
+ Voltar
111
+ </CjaButton>
112
+ <CjaButton @click="callContact">Ligar</CjaButton>
113
+ </div>
114
+ </div>
115
+ </template>
116
+ </Modal>
117
+
118
+ <Teleport to="body" v-if="categories?.length">
119
+ <Transition name="slide">
120
+ <nav class="categories-sidebar" v-if="sidebarActive">
121
+ <div class="menu-category" v-for="category in categories">
122
+ <CollapseContainer v-if="category.subLinks">
123
+ <template #header>
124
+ <div class="menu-category-link">
125
+ {{ category.text }}
126
+ </div>
127
+ </template>
128
+ <template #content>
129
+ <ul class="category-links-container" v-if="category.subLinks">
130
+ <li v-if="category.link">
131
+ <a class="menu-link" :href="getStoryblokUrl(category.link)">
132
+ {{ category.text }}
133
+ </a>
134
+ </li>
135
+ <li v-for="menuLink in category.subLinks">
136
+ <a class="menu-link" :href="getStoryblokUrl(menuLink.link)">
137
+ {{ menuLink.text }}
138
+ </a>
139
+ </li>
140
+ </ul>
141
+ </template>
142
+ </CollapseContainer>
143
+ <a
144
+ class="menu-category-link menu-link"
145
+ :href="getStoryblokUrl(category.link)"
146
+ v-else-if="category.link"
147
+ >
148
+ {{ category.text }}
149
+ </a>
150
+ </div>
151
+ </nav>
152
+ </Transition>
153
+ <Transition name="fade">
154
+ <div
155
+ class="categories-backdrop"
156
+ @click="sidebarActive = false"
157
+ v-if="sidebarActive"
158
+ ></div>
159
+ </Transition>
160
+ </Teleport>
161
+ </template>
162
+
163
+ <script lang="ts" setup>
164
+ import FixedContainer from "../structural/FixedContainer.vue";
165
+ import CollapseContainer from "../structural/CollapseContainer.vue";
166
+ import CjaButton from "../structural/CjaButton.vue";
167
+ import { MacroStep, MenuCategory } from "../../types";
168
+ import JourneyMacroSteps from "./JourneyMacroSteps.vue";
169
+ import Modal from "../structural/Modal.vue";
170
+ import { ref } from "vue";
171
+ import { getStoryblokUrl } from "../../utils";
172
+ import { watch } from "vue";
173
+ import { useViewportDetector, useGlobalProperties } from "../../utils";
174
+
175
+ withDefaults(
176
+ defineProps<{
177
+ homeNavigationEnabled?: boolean;
178
+ hasSideInfo?: boolean;
179
+ macroStepList?: MacroStep[];
180
+ categories?: MenuCategory[];
181
+ hasContact?: boolean;
182
+ }>(),
183
+ {
184
+ homeNavigationEnabled: true,
185
+ hasSideInfo: true,
186
+ hasContact: true,
187
+ }
188
+ );
189
+
190
+ const { activeViewport } = useViewportDetector();
191
+ const { imageURL } = useGlobalProperties();
192
+ const callModal = ref();
193
+ const sidebarActive = ref(false);
194
+
195
+ const callContact = () => {
196
+ window.open("tel:211165765", "_self");
197
+ };
198
+
199
+ watch(
200
+ () => sidebarActive.value,
201
+ (newVal) => {
202
+ if (newVal && callModal.value.active) {
203
+ callModal.value.closeModal();
204
+ }
205
+ }
206
+ );
207
+
208
+ watch(
209
+ () => callModal.value?.active,
210
+ (newVal) => {
211
+ if (callModal.value && newVal && sidebarActive.value) {
212
+ sidebarActive.value = false;
213
+ }
214
+ }
215
+ );
216
+ </script>
217
+
218
+ <style lang="scss" scoped>
219
+ @import "../../assets/shadows.scss";
220
+ @import "../../assets/breakpoints.scss";
221
+ @import "../../assets/backdrop.scss";
222
+
223
+ header.main-header-container {
224
+ position: relative;
225
+ z-index: 100;
226
+ transition: z-index 0s linear 0.4s;
227
+
228
+ &.sidebar-active {
229
+ z-index: 1002;
230
+ transition: z-index 0s linear;
231
+ }
232
+
233
+ .main-header {
234
+ position: relative;
235
+ z-index: 1;
236
+ display: grid;
237
+ grid-template-columns: auto 1fr auto;
238
+ align-items: center;
239
+ gap: 16px;
240
+ background-color: #fff;
241
+ height: 60px;
242
+ padding: 16px 24px;
243
+ box-shadow: $box-shadow-m;
244
+
245
+ @media screen and (min-width: $break-lg-min) {
246
+ padding: 24px;
247
+ height: 75px;
248
+ }
249
+
250
+ @media screen and (min-width: $break-xl-min) {
251
+ gap: 24px;
252
+ }
253
+
254
+ &.has-categories {
255
+ @media screen and (max-width: $break-md-max) {
256
+ grid-template-columns: auto auto 1fr auto;
257
+ }
258
+ }
259
+
260
+ .logo-container {
261
+ user-select: none;
262
+
263
+ a,
264
+ img {
265
+ display: block;
266
+ width: 125px;
267
+ }
268
+ }
269
+
270
+ .side-info {
271
+ display: flex;
272
+ align-items: center;
273
+ justify-content: flex-end;
274
+
275
+ .contact {
276
+ background: #076b9c;
277
+ width: 20px;
278
+ height: 20px;
279
+ border-radius: 50%;
280
+ padding: 0;
281
+ border: none;
282
+ outline: none;
283
+ gap: 8px;
284
+ font-weight: 700;
285
+ font-size: 10px;
286
+ color: #fff;
287
+ }
288
+ }
289
+ }
290
+ }
291
+
292
+ .call-modal-body {
293
+ max-width: 400px;
294
+ margin: 0 auto;
295
+ display: flex;
296
+ flex-direction: column;
297
+ align-items: center;
298
+ gap: 16px;
299
+ font-size: 14px;
300
+ line-height: 18px;
301
+
302
+ @media screen and (min-width: $break-sm-min) {
303
+ font-size: 16px;
304
+ line-height: 20px;
305
+ }
306
+
307
+ .call-info {
308
+ display: flex;
309
+ flex-direction: row;
310
+ align-items: center;
311
+ white-space: nowrap;
312
+
313
+ a {
314
+ display: flex;
315
+ flex-direction: row;
316
+ gap: 8px;
317
+ align-items: center;
318
+ color: inherit;
319
+
320
+ .m-cgg-icon--phone {
321
+ background-color: #076b9c;
322
+ height: 20px;
323
+ width: 20px;
324
+ display: flex;
325
+ flex-direction: row;
326
+ align-items: center;
327
+ justify-content: center;
328
+ color: #fff;
329
+ border-radius: 50%;
330
+ font-size: 9px;
331
+ }
332
+ }
333
+
334
+ .hours-wrapper {
335
+ padding-left: 10px;
336
+ margin-left: 10px;
337
+ border-left: 1px solid #dedede;
338
+
339
+ @media screen and (min-width: $break-sm-min) {
340
+ padding-left: 15px;
341
+ margin-left: 15px;
342
+ }
343
+ }
344
+ }
345
+
346
+ .call-cost {
347
+ text-align: center;
348
+ }
349
+
350
+ .btn-container {
351
+ display: flex;
352
+ flex-direction: row;
353
+ gap: 16px;
354
+
355
+ .btn-cancel {
356
+ @media screen and (max-width: $break-xs-max) {
357
+ display: none;
358
+ }
359
+ }
360
+ }
361
+ }
362
+
363
+ .categories-container {
364
+ display: none;
365
+
366
+ @media screen and (min-width: $break-lg-min) {
367
+ display: flex;
368
+ flex-direction: row;
369
+ justify-content: flex-end;
370
+ gap: 16px;
371
+ }
372
+
373
+ .menu-category {
374
+ position: relative;
375
+ padding-bottom: 28px;
376
+ margin-bottom: -28px;
377
+
378
+ .category-label {
379
+ display: flex;
380
+ flex-direction: row;
381
+ align-items: center;
382
+ gap: 5px;
383
+ font-size: 12px;
384
+ line-height: 18px;
385
+ font-weight: 700;
386
+
387
+ @media screen and (min-width: $break-xl-min) {
388
+ font-size: 16px;
389
+ }
390
+ }
391
+
392
+ a.category-label {
393
+ color: inherit;
394
+ text-decoration: none;
395
+ transition: all 0.3s ease-in-out;
396
+
397
+ &:hover {
398
+ color: #076b9c;
399
+ }
400
+ }
401
+
402
+ .category-links-container {
403
+ position: absolute;
404
+ opacity: 0;
405
+ transition: opacity 0.3s ease-in-out, transform 0s linear 0.3s;
406
+ top: 100%;
407
+ left: 50%;
408
+ transform: scale(0);
409
+ padding: 16px;
410
+ background: #fff;
411
+ box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1);
412
+ border-bottom-left-radius: 4px;
413
+ border-bottom-right-radius: 4px;
414
+
415
+ ul {
416
+ display: flex;
417
+ flex-direction: column;
418
+ gap: 16px;
419
+ list-style: none;
420
+ margin: 0;
421
+ padding: 0;
422
+
423
+ a {
424
+ font-size: 16px;
425
+ line-height: 18px;
426
+ font-weight: 700;
427
+ color: inherit;
428
+ text-decoration: none;
429
+ transition: all 0.3s ease-in-out;
430
+ white-space: nowrap;
431
+
432
+ &:hover {
433
+ color: #076b9c;
434
+ }
435
+ }
436
+ }
437
+ }
438
+
439
+ &:hover {
440
+ .category-links-container {
441
+ opacity: 1;
442
+ transform: translateX(-50%);
443
+ transition: opacity 0.3s ease-in-out, transform 0s linear;
444
+ }
445
+ }
446
+ }
447
+ }
448
+
449
+ .btn-sidebar-container {
450
+ @media screen and (min-width: $break-lg-min) {
451
+ display: none;
452
+ }
453
+
454
+ .btn-sidebar {
455
+ display: block;
456
+ background: none;
457
+ border: none;
458
+ padding: 0;
459
+ width: 25px;
460
+ height: 25px;
461
+ font-size: 25px;
462
+ line-height: 25px;
463
+ }
464
+ }
465
+
466
+ .categories-sidebar {
467
+ position: fixed;
468
+ left: 0;
469
+ bottom: 0;
470
+ height: calc(100% - 60px);
471
+ overflow-y: auto;
472
+ display: flex;
473
+ flex-direction: column;
474
+ gap: 16px;
475
+ width: 100%;
476
+ background: #fff;
477
+ z-index: 1001;
478
+ padding: 16px 24px;
479
+
480
+ @media screen and (min-width: $break-sm-min) {
481
+ width: 300px;
482
+ }
483
+
484
+ &.slide-enter-active,
485
+ &.slide-leave-active {
486
+ transition: all 0.4s ease-in-out;
487
+ }
488
+
489
+ &.slide-enter-from,
490
+ &.slide-leave-to {
491
+ transform: translateX(-100%);
492
+ }
493
+
494
+ &.slide-enter-to,
495
+ &.slide-leave-from {
496
+ transform: translateX(0);
497
+ }
498
+
499
+ .category-links-container {
500
+ display: flex;
501
+ flex-direction: column;
502
+ gap: 16px;
503
+ list-style: none;
504
+ margin: 0;
505
+ padding: 0 0 16px;
506
+ font-size: 16px;
507
+ line-height: 18px;
508
+ }
509
+
510
+ .menu-link {
511
+ color: inherit;
512
+
513
+ &:hover {
514
+ text-decoration: none;
515
+ }
516
+ }
517
+
518
+ .menu-category-link {
519
+ font-weight: 700;
520
+ font-size: 16px;
521
+ line-height: 18px;
522
+ }
523
+ }
524
+
525
+ .categories-backdrop {
526
+ @include backdrop;
527
+
528
+ &.fade-enter-active,
529
+ &.fade-leave-active {
530
+ transition: all 0.4s ease-in-out;
531
+ }
532
+
533
+ &.fade-enter-from,
534
+ &.fade-leave-to {
535
+ opacity: 0;
536
+ }
537
+
538
+ &.fade-enter-to,
539
+ &.fade-leave-from {
540
+ opacity: 1;
541
+ }
542
+ }
543
+ </style>