@salesforcedevs/dx-components 0.17.0 → 0.17.1-review-diff1

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 (611) hide show
  1. package/lwc.config.json +85 -26
  2. package/package.json +34 -19
  3. package/src/assets/icons/brand-sprite/svg/symbols.svg +23 -5
  4. package/src/assets/icons/salesforcebrand-sprite/svg/symbols.svg +909 -107
  5. package/src/assets/icons/utility-sprite/svg/symbols.svg +2 -1
  6. package/src/modules/dx/agenda/agenda.css +97 -0
  7. package/src/modules/dx/agenda/agenda.html +32 -0
  8. package/src/modules/dx/agenda/agenda.ts +26 -0
  9. package/src/modules/dx/alert/alert.css +103 -0
  10. package/src/modules/dx/alert/alert.html +37 -0
  11. package/src/modules/dx/alert/alert.ts +137 -0
  12. package/src/modules/dx/audio/audio.css +276 -0
  13. package/src/modules/dx/audio/audio.html +158 -0
  14. package/src/modules/dx/audio/audio.ts +484 -0
  15. package/src/modules/dx/banner/banner.css +3 -3
  16. package/src/modules/dx/banner/banner.ts +3 -5
  17. package/src/modules/dx/brandThemeProvider/brandThemeProvider.ts +1 -1
  18. package/src/modules/dx/breadcrumbs/breadcrumbs.css +4 -4
  19. package/src/modules/dx/breadcrumbs/breadcrumbs.html +1 -1
  20. package/src/modules/dx/breadcrumbs/breadcrumbs.ts +28 -27
  21. package/src/modules/dx/button/button.css +79 -25
  22. package/src/modules/dx/button/button.html +4 -2
  23. package/src/modules/dx/button/button.ts +41 -14
  24. package/src/modules/dx/buttonToggle/buttonToggle.css +50 -0
  25. package/src/modules/dx/buttonToggle/buttonToggle.html +17 -0
  26. package/src/modules/dx/buttonToggle/buttonToggle.ts +75 -0
  27. package/src/modules/dx/cardBlogPost/cardBlogPost.css +2 -2
  28. package/src/modules/dx/cardBlogPost/cardBlogPost.html +5 -4
  29. package/src/modules/dx/cardBlogPost/cardBlogPost.ts +27 -4
  30. package/src/modules/dx/cardCallout/cardCallout.css +5 -5
  31. package/src/modules/dx/cardCallout/cardCallout.html +1 -1
  32. package/src/modules/dx/cardCallout/cardCallout.ts +14 -10
  33. package/src/modules/dx/cardClickthrough/cardClickthrough.css +105 -0
  34. package/src/modules/dx/cardClickthrough/cardClickthrough.html +42 -0
  35. package/src/modules/dx/cardClickthrough/cardClickthrough.ts +139 -0
  36. package/src/modules/dx/cardContent/cardContent.css +21 -9
  37. package/src/modules/dx/cardContent/cardContent.html +33 -14
  38. package/src/modules/dx/cardContent/cardContent.ts +80 -15
  39. package/src/modules/dx/cardDemo/cardDemo.css +1 -1
  40. package/src/modules/dx/cardDemo/cardDemo.html +1 -1
  41. package/src/modules/dx/cardDemo/cardDemo.ts +1 -1
  42. package/src/modules/dx/cardDocs/cardDocs.css +8 -8
  43. package/src/modules/dx/cardDocs/cardDocs.html +25 -5
  44. package/src/modules/dx/cardDocs/cardDocs.ts +51 -2
  45. package/src/modules/dx/cardEvent/cardEvent.css +31 -17
  46. package/src/modules/dx/cardEvent/cardEvent.html +17 -18
  47. package/src/modules/dx/cardEvent/cardEvent.ts +11 -3
  48. package/src/modules/dx/cardExpanded/cardExpanded.css +60 -0
  49. package/src/modules/dx/cardExpanded/cardExpanded.html +35 -0
  50. package/src/modules/dx/cardExpanded/cardExpanded.ts +63 -0
  51. package/src/modules/dx/cardGrid/cardGrid.css +1 -85
  52. package/src/modules/dx/cardGrid/cardGrid.html +16 -44
  53. package/src/modules/dx/cardGrid/cardGrid.ts +32 -139
  54. package/src/modules/dx/cardGridDocs/cardGridDocs.css +73 -0
  55. package/src/modules/dx/cardGridDocs/cardGridDocs.html +67 -0
  56. package/src/modules/dx/cardGridDocs/cardGridDocs.ts +86 -0
  57. package/src/modules/dx/cardMinimal/cardMinimal.css +31 -0
  58. package/src/modules/dx/cardMinimal/cardMinimal.html +8 -0
  59. package/src/modules/dx/cardMinimal/cardMinimal.ts +3 -0
  60. package/src/modules/dx/cardNews/cardNews.css +34 -15
  61. package/src/modules/dx/cardNews/cardNews.html +8 -1
  62. package/src/modules/dx/cardNews/cardNews.ts +23 -5
  63. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.css +3 -3
  64. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.html +2 -1
  65. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.ts +1 -1
  66. package/src/modules/dx/cardSmall/cardSmall.css +3 -7
  67. package/src/modules/dx/cardSmall/cardSmall.html +2 -2
  68. package/src/modules/dx/cardSmall/cardSmall.ts +2 -2
  69. package/src/modules/dx/cardStep/cardStep.css +128 -0
  70. package/src/modules/dx/cardStep/cardStep.html +31 -0
  71. package/src/modules/dx/cardStep/cardStep.ts +55 -0
  72. package/src/modules/dx/cardStep/mockProps.ts +59 -0
  73. package/src/modules/dx/cardTestimonial/cardTestimonial.css +24 -0
  74. package/src/modules/dx/cardTestimonial/cardTestimonial.html +15 -0
  75. package/src/modules/dx/cardTestimonial/cardTestimonial.ts +18 -0
  76. package/src/modules/dx/cardTitle/cardTitle.css +6 -4
  77. package/src/modules/dx/cardTitle/cardTitle.html +1 -1
  78. package/src/modules/dx/cardTitle/cardTitle.ts +4 -4
  79. package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.css +2 -2
  80. package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.html +2 -2
  81. package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.ts +2 -1
  82. package/src/modules/dx/cardTrial/cardTrial.css +134 -0
  83. package/src/modules/dx/cardTrial/cardTrial.html +207 -0
  84. package/src/modules/dx/cardTrial/cardTrial.ts +147 -0
  85. package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.css +159 -0
  86. package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.html +91 -0
  87. package/src/modules/dx/cardTrialExpanded/cardTrialExpanded.ts +84 -0
  88. package/src/modules/dx/cardVideoPreview/cardVideoPreview.css +2 -2
  89. package/src/modules/dx/cardVideoPreview/cardVideoPreview.html +3 -2
  90. package/src/modules/dx/cardVideoPreview/cardVideoPreview.ts +2 -2
  91. package/src/modules/dx/checkbox/checkbox.css +9 -4
  92. package/src/modules/dx/checkbox/checkbox.ts +27 -2
  93. package/src/modules/dx/checkboxGroup/checkboxGroup.css +1 -1
  94. package/src/modules/dx/checkboxGroup/checkboxGroup.ts +1 -1
  95. package/src/modules/dx/checkboxNative/checkboxNative.css +18 -0
  96. package/src/modules/dx/checkboxNative/checkboxNative.html +14 -0
  97. package/src/modules/dx/checkboxNative/checkboxNative.ts +39 -0
  98. package/src/modules/dx/codeBlock/codeBlock.css +22 -15
  99. package/src/modules/dx/codeBlock/codeBlock.html +3 -3
  100. package/src/modules/dx/codeBlock/codeBlock.ts +149 -61
  101. package/src/modules/dx/codeBlock/customLanguages.js +48 -0
  102. package/src/modules/dx/codeBlock/darkAndLightThemes.css +177 -0
  103. package/src/modules/dx/coveoRecommendations/coveoRecommendations.css +8 -0
  104. package/src/modules/dx/coveoRecommendations/coveoRecommendations.html +27 -0
  105. package/src/modules/dx/coveoRecommendations/coveoRecommendations.ts +171 -0
  106. package/src/modules/dx/darkModeManager/darkModeManager.ts +86 -0
  107. package/src/modules/dx/dropdown/dropdown.css +3 -5
  108. package/src/modules/dx/dropdown/dropdown.html +5 -1
  109. package/src/modules/dx/dropdown/dropdown.ts +18 -11
  110. package/src/modules/dx/dropdownOption/dropdownOption.css +125 -5
  111. package/src/modules/dx/dropdownOption/dropdownOption.html +7 -2
  112. package/src/modules/dx/dropdownOption/dropdownOption.ts +27 -9
  113. package/src/modules/dx/embeddedVideo/embeddedVideo.css +35 -0
  114. package/src/modules/dx/embeddedVideo/embeddedVideo.html +56 -0
  115. package/src/modules/dx/embeddedVideo/embeddedVideo.ts +40 -0
  116. package/src/modules/dx/emptyState/emptyState.css +76 -4
  117. package/src/modules/dx/emptyState/emptyState.html +16 -4
  118. package/src/modules/dx/emptyState/emptyState.ts +57 -7
  119. package/src/modules/dx/errorFallback/errorFallback.css +27 -0
  120. package/src/modules/dx/errorFallback/errorFallback.html +11 -0
  121. package/src/modules/dx/errorFallback/errorFallback.ts +7 -0
  122. package/src/modules/dx/eyebrow/eyebrow.css +44 -0
  123. package/src/modules/dx/eyebrow/eyebrow.html +16 -0
  124. package/src/modules/dx/eyebrow/eyebrow.ts +32 -0
  125. package/src/modules/dx/faq/faq.css +58 -0
  126. package/src/modules/dx/faq/faq.html +36 -0
  127. package/src/modules/dx/faq/faq.ts +16 -0
  128. package/src/modules/dx/feature/feature.css +16 -6
  129. package/src/modules/dx/feature/feature.html +9 -7
  130. package/src/modules/dx/feature/feature.ts +17 -4
  131. package/src/modules/dx/featureFlag/featureFlag.css +3 -0
  132. package/src/modules/dx/featureFlag/featureFlag.html +3 -0
  133. package/src/modules/dx/featureFlag/featureFlag.ts +41 -0
  134. package/src/modules/dx/featuredContentHeader/featuredContentHeader.css +182 -146
  135. package/src/modules/dx/featuredContentHeader/featuredContentHeader.html +123 -87
  136. package/src/modules/dx/featuredContentHeader/featuredContentHeader.ts +179 -30
  137. package/src/modules/dx/featuredContentHeader/svgs.ts +5 -4
  138. package/src/modules/dx/featuresList/featuresList.css +5 -5
  139. package/src/modules/dx/featuresList/featuresList.html +2 -2
  140. package/src/modules/dx/featuresList/featuresList.ts +2 -3
  141. package/src/modules/dx/featuresListHeader/featuresListHeader.css +144 -0
  142. package/src/modules/dx/featuresListHeader/featuresListHeader.html +58 -0
  143. package/src/modules/dx/featuresListHeader/featuresListHeader.ts +103 -0
  144. package/src/modules/dx/filterMenu/filterMenu.css +134 -0
  145. package/src/modules/dx/filterMenu/filterMenu.html +111 -0
  146. package/src/modules/dx/filterMenu/filterMenu.ts +119 -0
  147. package/src/modules/dx/footer/footer.css +72 -41
  148. package/src/modules/dx/footer/footer.html +65 -65
  149. package/src/modules/dx/footer/footer.ts +66 -43
  150. package/src/modules/dx/footer/links.ts +142 -54
  151. package/src/modules/dx/footerOption/footerOption.css +10 -3
  152. package/src/modules/dx/footerOption/footerOption.html +1 -10
  153. package/src/modules/dx/footerOption/footerOption.ts +21 -7
  154. package/src/modules/dx/formattedDateTime/formattedDateTime.ts +22 -14
  155. package/src/modules/dx/formattedRichText/formattedRichText.css +32 -0
  156. package/src/modules/dx/formattedRichText/formattedRichText.html +3 -0
  157. package/src/modules/dx/formattedRichText/formattedRichText.ts +17 -0
  158. package/src/modules/dx/grid/grid.css +7 -2
  159. package/src/modules/dx/grid/grid.html +15 -0
  160. package/src/modules/dx/grid/grid.ts +78 -2
  161. package/src/modules/dx/groupText/groupText.css +5 -9
  162. package/src/modules/dx/groupText/groupText.html +8 -3
  163. package/src/modules/dx/groupText/groupText.ts +21 -14
  164. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.css +3 -2
  165. package/src/modules/dx/headerMobileNavMenu/headerMobileNavMenu.ts +5 -5
  166. package/src/modules/dx/headerMobileNavMenuOption/headerMobileNavMenuOption.ts +10 -2
  167. package/src/modules/dx/headerNav/headerNav.css +9 -1
  168. package/src/modules/dx/headerNav/headerNav.html +1 -0
  169. package/src/modules/dx/headerNav/headerNav.ts +10 -6
  170. package/src/modules/dx/helmet/helmet.css +3 -3
  171. package/src/modules/dx/helmet/helmet.html +2 -2
  172. package/src/modules/dx/helmet/helmet.ts +2 -2
  173. package/src/modules/dx/hr/hr.css +10 -10
  174. package/src/modules/dx/hr/hr.ts +7 -1
  175. package/src/modules/dx/icon/icon.css +2 -2
  176. package/src/modules/dx/icon/icon.html +20 -9
  177. package/src/modules/dx/icon/icon.ts +6 -1
  178. package/src/modules/dx/iconBadge/iconBadge.css +13 -1
  179. package/src/modules/dx/iconBadge/iconBadge.html +3 -3
  180. package/src/modules/dx/iconBadge/iconBadge.ts +23 -7
  181. package/src/modules/dx/imageAndLabel/imageAndLabel.css +4 -8
  182. package/src/modules/dx/imageAndLabel/imageAndLabel.html +18 -2
  183. package/src/modules/dx/input/input.css +24 -6
  184. package/src/modules/dx/input/input.html +6 -1
  185. package/src/modules/dx/input/input.ts +76 -10
  186. package/src/modules/dx/interactiveImage/interactiveImage.css +2 -2
  187. package/src/modules/dx/interactiveImage/interactiveImage.html +2 -2
  188. package/src/modules/dx/interactiveImage/interactiveImage.ts +2 -2
  189. package/src/modules/dx/logo/logo.css +2 -3
  190. package/src/modules/dx/logo/logo.html +1 -1
  191. package/src/modules/dx/logo/logo.ts +3 -2
  192. package/src/modules/dx/mainContentHeader/mainContentHeader.css +197 -0
  193. package/src/modules/dx/mainContentHeader/mainContentHeader.html +75 -0
  194. package/src/modules/dx/mainContentHeader/mainContentHeader.ts +98 -0
  195. package/src/modules/dx/metadataBadge/metadataBadge.css +41 -0
  196. package/src/modules/dx/metadataBadge/metadataBadge.html +5 -0
  197. package/src/modules/dx/metadataBadge/metadataBadge.ts +24 -0
  198. package/src/modules/dx/modal/modal.css +7 -0
  199. package/src/modules/dx/modal/modal.html +13 -0
  200. package/src/modules/dx/modal/modal.ts +98 -0
  201. package/src/modules/dx/modalDrawer/modalDrawer.css +41 -0
  202. package/src/modules/dx/modalDrawer/modalDrawer.html +11 -0
  203. package/src/modules/dx/modalDrawer/modalDrawer.ts +33 -0
  204. package/src/modules/dx/pagination/pagination.css +2 -3
  205. package/src/modules/dx/pagination/pagination.ts +45 -8
  206. package/src/modules/dx/podcastHost/podcastHost.css +11 -4
  207. package/src/modules/dx/podcastHost/podcastHost.html +8 -9
  208. package/src/modules/dx/popover/popover.css +31 -6
  209. package/src/modules/dx/popover/popover.html +1 -1
  210. package/src/modules/dx/popover/popover.ts +112 -47
  211. package/src/modules/dx/radioGroup/radioGroup.css +1 -1
  212. package/src/modules/dx/radioGroup/radioGroup.ts +1 -1
  213. package/src/modules/dx/redirectChecker/redirectChecker.html +1 -0
  214. package/src/modules/dx/redirectChecker/redirectChecker.ts +10 -0
  215. package/src/modules/dx/relativeDateTime/relativeDateTime.ts +23 -94
  216. package/src/modules/dx/scrollManager/scrollManager.html +1 -0
  217. package/src/modules/dx/scrollManager/scrollManager.ts +212 -0
  218. package/src/modules/dx/searchResults/coveo.css +2138 -3126
  219. package/src/modules/dx/searchResults/resultsTemplate.js +141 -0
  220. package/src/modules/dx/searchResults/searchResults.css +136 -19
  221. package/src/modules/dx/searchResults/searchResults.html +7 -4
  222. package/src/modules/dx/searchResults/searchResults.ts +378 -37
  223. package/src/modules/dx/section/section.css +40 -7
  224. package/src/modules/dx/section/section.html +37 -7
  225. package/src/modules/dx/section/section.ts +45 -13
  226. package/src/modules/dx/sectionBanner/sectionBanner.css +145 -0
  227. package/src/modules/dx/sectionBanner/sectionBanner.html +41 -0
  228. package/src/modules/dx/sectionBanner/sectionBanner.ts +128 -0
  229. package/src/modules/dx/sectionSignup/sectionSignup.ts +2 -2
  230. package/src/modules/dx/select/select.css +173 -10
  231. package/src/modules/dx/select/select.html +54 -53
  232. package/src/modules/dx/select/select.ts +153 -10
  233. package/src/modules/dx/sidebar/sidebar.css +44 -130
  234. package/src/modules/dx/sidebar/sidebar.html +114 -50
  235. package/src/modules/dx/sidebar/sidebar.ts +159 -116
  236. package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.css +49 -0
  237. package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.html +55 -0
  238. package/src/modules/dx/sidebarFooterNav/sidebarFooterNav.ts +106 -0
  239. package/src/modules/dx/sidebarOld/sidebarOld.css +33 -0
  240. package/src/modules/dx/sidebarOld/sidebarOld.html +111 -0
  241. package/src/modules/dx/sidebarOld/sidebarOld.ts +170 -0
  242. package/src/modules/dx/sidebarSearch/sidebarSearch.css +3 -0
  243. package/src/modules/dx/sidebarSearch/sidebarSearch.html +25 -0
  244. package/src/modules/dx/sidebarSearch/sidebarSearch.ts +493 -0
  245. package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.css +67 -0
  246. package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.html +20 -0
  247. package/src/modules/dx/sidebarSearchResult/sidebarSearchResult.ts +78 -0
  248. package/src/modules/dx/skipNavLink/skipNavLink.css +21 -0
  249. package/src/modules/dx/skipNavLink/skipNavLink.html +3 -0
  250. package/src/modules/dx/skipNavLink/skipNavLink.ts +3 -0
  251. package/src/modules/dx/socials/socials.css +4 -3
  252. package/src/modules/dx/socials/socials.ts +1 -6
  253. package/src/modules/dx/spinner/spinner.css +28 -232
  254. package/src/modules/dx/stepSequence/stepSequence.css +42 -0
  255. package/src/modules/dx/stepSequence/stepSequence.html +10 -0
  256. package/src/modules/dx/stepSequence/stepSequence.ts +334 -0
  257. package/src/modules/dx/stepSequenceStep/stepSequenceStep.html +3 -0
  258. package/src/modules/dx/stepSequenceStep/stepSequenceStep.ts +60 -0
  259. package/src/modules/dx/tab/tab.css +49 -24
  260. package/src/modules/dx/tab/tab.ts +16 -5
  261. package/src/modules/dx/tabPanel/tabPanel.css +20 -0
  262. package/src/modules/dx/tabPanel/tabPanel.html +13 -0
  263. package/src/modules/dx/tabPanel/tabPanel.ts +27 -0
  264. package/src/modules/dx/tabPanelItem/tabPanelItem.css +54 -0
  265. package/src/modules/dx/tabPanelItem/tabPanelItem.html +26 -0
  266. package/src/modules/dx/tabPanelItem/tabPanelItem.ts +45 -0
  267. package/src/modules/dx/tabPanelList/tabPanelList.css +37 -0
  268. package/src/modules/dx/tabPanelList/tabPanelList.html +56 -0
  269. package/src/modules/dx/tabPanelList/tabPanelList.ts +178 -0
  270. package/src/modules/dx/tabPanelList/uniqueId.ts +6 -0
  271. package/src/modules/dx/tabbedCodeBlock/tabbedCodeBlock.css +8 -0
  272. package/src/modules/dx/tabbedCodeBlock/tabbedCodeBlock.html +16 -0
  273. package/src/modules/dx/tabbedCodeBlock/tabbedCodeBlock.ts +44 -0
  274. package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.css +33 -0
  275. package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.html +53 -0
  276. package/src/modules/dx/tbidAvatarButton/tbidAvatarButton.ts +450 -0
  277. package/src/modules/dx/toast/toast.css +78 -0
  278. package/src/modules/dx/toast/toast.html +20 -0
  279. package/src/modules/dx/toast/toast.ts +41 -0
  280. package/src/modules/dx/toc/toc.css +18 -46
  281. package/src/modules/dx/toc/toc.html +5 -11
  282. package/src/modules/dx/toc/toc.ts +20 -31
  283. package/src/modules/dx/tooltip/tooltip.css +1 -0
  284. package/src/modules/dx/topics/topics.css +26 -0
  285. package/src/modules/dx/topics/topics.html +12 -0
  286. package/src/modules/dx/topics/topics.ts +25 -0
  287. package/src/modules/dx/trafficLabeler/trafficLabeler.html +1 -0
  288. package/src/modules/dx/trafficLabeler/trafficLabeler.ts +58 -0
  289. package/src/modules/dx/tree/tree.css +1 -1
  290. package/src/modules/dx/tree/tree.ts +9 -1
  291. package/src/modules/dx/tree/treeHandler.ts +5 -1
  292. package/src/modules/dx/treeItem/treeItem.css +12 -1
  293. package/src/modules/dx/treeItem/treeItem.html +10 -2
  294. package/src/modules/dx/treeItem/treeItem.ts +103 -15
  295. package/src/modules/dx/treeTile/treeTile.css +77 -64
  296. package/src/modules/dx/treeTile/treeTile.html +24 -10
  297. package/src/modules/dx/treeTile/treeTile.ts +31 -6
  298. package/src/modules/dx/typeBadge/typeBadge.css +2 -59
  299. package/src/modules/dx/typeBadge/typeBadge.html +7 -1
  300. package/src/modules/dx/typeBadge/typeBadge.ts +97 -8
  301. package/src/modules/dx/vimeoPlayer/vimeoPlayer.css +1 -0
  302. package/src/modules/dx/vimeoPlayer/vimeoPlayer.html +3 -0
  303. package/src/modules/dx/vimeoPlayer/vimeoPlayer.ts +31 -0
  304. package/src/modules/dxBaseElements/archiveCard/archiveCard.ts +31 -0
  305. package/src/modules/{utils → dxBaseElements}/headerBase/headerBase.ts +33 -17
  306. package/src/modules/dxBaseElements/lightningElementWithState/lightningElementWithState.ts +93 -0
  307. package/src/modules/dxBaseElements/matchMediaElement/matchMediaElement.ts +63 -0
  308. package/src/modules/dxBaseElements/sidebarBase/sidebarBase.ts +176 -0
  309. package/src/modules/dxConstants/brands/brands.ts +18 -0
  310. package/src/modules/dxConstants/colors/colors.ts +14 -0
  311. package/src/modules/dxConstants/contentTypes/contentTypes.ts +72 -0
  312. package/src/modules/{helpers → dxHelpers}/animations/animations.css +1 -1
  313. package/src/modules/dxHelpers/button/button.css +4 -0
  314. package/src/modules/{helpers → dxHelpers}/card/card.css +33 -32
  315. package/src/modules/{helpers → dxHelpers}/code/code.css +5 -13
  316. package/src/modules/{helpers → dxHelpers}/commonHeader/commonHeader.css +13 -11
  317. package/src/modules/dxHelpers/commonSidebar/commonSidebar.css +179 -0
  318. package/src/modules/dxHelpers/commonTreeItem/commonTreeItem.css +44 -0
  319. package/src/modules/{helpers → dxHelpers}/reset/reset.css +6 -13
  320. package/src/modules/dxHelpers/scrollbar/scrollbar.css +31 -0
  321. package/src/modules/{helpers → dxHelpers}/table/table.css +2 -6
  322. package/src/modules/{helpers → dxHelpers}/text/text.css +71 -32
  323. package/src/modules/dxHelpers/typeBadge/typeBadge.css +32 -0
  324. package/src/modules/dxUtils/analytics/analytics.ts +24 -0
  325. package/src/modules/dxUtils/async/async.ts +45 -0
  326. package/src/modules/dxUtils/browser/browser.ts +17 -0
  327. package/src/modules/dxUtils/constants/breakpoints.ts +9 -0
  328. package/src/modules/dxUtils/constants/constants.ts +1 -0
  329. package/src/modules/dxUtils/contentTypes/contentTypes.ts +30 -0
  330. package/src/modules/dxUtils/coveo/coveo.ts +70 -0
  331. package/src/modules/dxUtils/css/css.ts +58 -0
  332. package/src/modules/dxUtils/dates/dates.ts +72 -0
  333. package/src/modules/{utils → dxUtils}/highlight/highlight.ts +3 -2
  334. package/src/modules/dxUtils/language/language.ts +21 -0
  335. package/src/modules/dxUtils/list/list.ts +11 -0
  336. package/src/modules/dxUtils/lwc/lwc.ts +24 -0
  337. package/src/modules/dxUtils/normalizers/normalizers.ts +112 -0
  338. package/src/modules/{utils → dxUtils}/options/options.ts +13 -9
  339. package/src/modules/dxUtils/prismjs/prismjs.ts +4183 -0
  340. package/src/modules/dxUtils/queryCoordinator/queryCoordinator.ts +43 -0
  341. package/src/modules/dxUtils/recentSearches/recentSearches.ts +57 -0
  342. package/src/modules/dxUtils/sanitizeHtml/sanitizeHtml.ts +8 -0
  343. package/src/modules/dxUtils/urlWatcher/urlWatcher.ts +79 -0
  344. package/src/modules/dxUtils/withTypedRefs/withTypedRefs.ts +26 -0
  345. package/src/modules/{utils → dxUtils}/wordpress/wordpress.ts +14 -0
  346. package/LICENSE +0 -12
  347. package/src/assets/svg/card-news-learn-moar.svg +0 -415
  348. package/src/assets/svg/cloud-1.svg +0 -24
  349. package/src/assets/svg/cloud-2.svg +0 -18
  350. package/src/assets/svg/codey.svg +0 -93
  351. package/src/assets/svg/command.svg +0 -9
  352. package/src/assets/svg/control.svg +0 -10
  353. package/src/assets/svg/docs-empty-state-small.svg +0 -72
  354. package/src/assets/svg/docs-empty-state.svg +0 -86
  355. package/src/assets/svg/dsc-home-news-bear.svg +0 -3
  356. package/src/assets/svg/dsc-home-news-community.png +0 -0
  357. package/src/assets/svg/dsc-home-news-goatbear.svg +0 -257
  358. package/src/assets/svg/dsc-home-news-samplegallery.svg +0 -76
  359. package/src/assets/svg/empty-state-assistant.svg +0 -1
  360. package/src/assets/svg/fch-blog-cloud-1.png +0 -0
  361. package/src/assets/svg/fch-blog-cloud-2.png +0 -0
  362. package/src/assets/svg/fch-blog-planet.png +0 -0
  363. package/src/assets/svg/feature-backdrop1.svg +0 -10
  364. package/src/assets/svg/feature-backdrop2.svg +0 -10
  365. package/src/assets/svg/featured-demo-art-blank.svg +0 -76
  366. package/src/assets/svg/featured-demo-art-eBikes.svg +0 -77
  367. package/src/assets/svg/footer-graphic-large.svg +0 -207
  368. package/src/assets/svg/footer-graphic-mountains-small.svg +0 -17
  369. package/src/assets/svg/footer-graphic-mountains.svg +0 -21
  370. package/src/assets/svg/footer-graphic-trees-small.svg +0 -33
  371. package/src/assets/svg/footer-graphic-trees.svg +0 -62
  372. package/src/assets/svg/lake-mountain.svg +0 -79
  373. package/src/assets/svg/podcast-subscription-clouds-small.svg +0 -49
  374. package/src/assets/svg/podcast-subscription-clouds.svg +0 -57
  375. package/src/assets/svg/podcasts-subscription-apple.svg +0 -164
  376. package/src/assets/svg/podcasts-subscription-google.svg +0 -29
  377. package/src/assets/svg/podcasts-subscription-spotify.svg +0 -11
  378. package/src/assets/svg/salesforce-cloud.svg +0 -7
  379. package/src/assets/svg/salesforce-logo-corporate.svg +0 -21
  380. package/src/assets/svg/salesforce-logo.svg +0 -14
  381. package/src/assets/svg/trees.svg +0 -42
  382. package/src/modules/dx/banner/__tests__/banner.test.ts +0 -31
  383. package/src/modules/dx/brandThemeProvider/__tests__/brandThemeProvider.test.ts +0 -49
  384. package/src/modules/dx/brandThemeProvider/brandThemeProvider.stories.ts +0 -321
  385. package/src/modules/dx/breadcrumbs/__tests__/breadcrumbs.test.ts +0 -143
  386. package/src/modules/dx/breadcrumbs/__tests__/mockProps.ts +0 -28
  387. package/src/modules/dx/breadcrumbs/breadcrumbs.stories.ts +0 -39
  388. package/src/modules/dx/button/__tests__/button.test.ts +0 -107
  389. package/src/modules/dx/button/button.stories.ts +0 -150
  390. package/src/modules/dx/cardBlogPost/__tests__/cardBlogPost.test.ts +0 -27
  391. package/src/modules/dx/cardBlogPost/__tests__/mockProps.ts +0 -12
  392. package/src/modules/dx/cardBlogPost/cardBlogPost.stories.ts +0 -164
  393. package/src/modules/dx/cardBlogPostProvider/__tests__/cardBlogPostProvider.test.ts +0 -34
  394. package/src/modules/dx/cardBlogPostProvider/__tests__/mockWordpressPosts.ts +0 -44
  395. package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.css +0 -3
  396. package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.html +0 -16
  397. package/src/modules/dx/cardBlogPostProvider/cardBlogPostProvider.ts +0 -29
  398. package/src/modules/dx/cardCallout/__tests__/cardCallout.test.ts +0 -23
  399. package/src/modules/dx/cardCallout/__tests__/mockProps.ts +0 -7
  400. package/src/modules/dx/cardCallout/cardCallout.stories.ts +0 -33
  401. package/src/modules/dx/cardContent/__tests__/cardContent.test.ts +0 -112
  402. package/src/modules/dx/cardContent/__tests__/mockProps.ts +0 -13
  403. package/src/modules/dx/cardContent/cardContent.stories.ts +0 -127
  404. package/src/modules/dx/cardDemo/cardDemo.stories.ts +0 -115
  405. package/src/modules/dx/cardDocs/__tests__/cardDocs.test.ts +0 -48
  406. package/src/modules/dx/cardDocs/__tests__/mockProps.ts +0 -9
  407. package/src/modules/dx/cardDocs/cardDocs.stories.ts +0 -299
  408. package/src/modules/dx/cardEvent/__tests__/cardEvent.test.ts +0 -99
  409. package/src/modules/dx/cardEvent/__tests__/mockProps.ts +0 -10
  410. package/src/modules/dx/cardEvent/cardEvent.stories.ts +0 -152
  411. package/src/modules/dx/cardGrid/__tests__/cardMockProps.ts +0 -431
  412. package/src/modules/dx/cardGrid/__tests__/mockProps.ts +0 -15
  413. package/src/modules/dx/cardGrid/cardGrid.stories.ts +0 -111
  414. package/src/modules/dx/cardNews/__tests__/cardNews.test.ts +0 -59
  415. package/src/modules/dx/cardNews/__tests__/mockProps.ts +0 -7
  416. package/src/modules/dx/cardNews/cardNews.stories.ts +0 -115
  417. package/src/modules/dx/cardPodcastEpisode/__tests__/cardPodcastEpisode.test.ts +0 -70
  418. package/src/modules/dx/cardPodcastEpisode/cardPodcastEpisode.stories.ts +0 -31
  419. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/cardPodcastEpisodeProvider.test.ts +0 -36
  420. package/src/modules/dx/cardPodcastEpisodeProvider/__tests__/mockWordpressEpisodes.ts +0 -50
  421. package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.css +0 -3
  422. package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.html +0 -12
  423. package/src/modules/dx/cardPodcastEpisodeProvider/cardPodcastEpisodeProvider.ts +0 -29
  424. package/src/modules/dx/cardSmall/__tests__/cardSmall.test.ts +0 -70
  425. package/src/modules/dx/cardSmall/__tests__/mockProps.ts +0 -8
  426. package/src/modules/dx/cardSmall/cardSmall.stories.ts +0 -166
  427. package/src/modules/dx/cardTitle/__tests__/cardTitle.test.ts +0 -46
  428. package/src/modules/dx/cardTrailheadModule/__tests__/cardTrailheadModule.test.ts +0 -18
  429. package/src/modules/dx/cardTrailheadModule/__tests__/mockProps.ts +0 -11
  430. package/src/modules/dx/cardTrailheadModule/cardTrailheadModule.stories.ts +0 -122
  431. package/src/modules/dx/cardVideoPreview/__tests__/cardVideoPreview.test.ts +0 -22
  432. package/src/modules/dx/cardVideoPreview/__tests__/mockProps.ts +0 -11
  433. package/src/modules/dx/cardVideoPreview/cardVideoPreview.stories.ts +0 -147
  434. package/src/modules/dx/checkbox/__tests__/checkbox.test.ts +0 -86
  435. package/src/modules/dx/checkbox/__tests__/mockProps.ts +0 -5
  436. package/src/modules/dx/checkbox/checkbox.stories.ts +0 -38
  437. package/src/modules/dx/checkboxGroup/__tests__/checkboxGroup.test.ts +0 -80
  438. package/src/modules/dx/checkboxGroup/__tests__/mockProps.ts +0 -14
  439. package/src/modules/dx/checkboxGroup/checkboxGroup.stories.ts +0 -33
  440. package/src/modules/dx/codeBlock/__tests__/codeBlock.test.ts +0 -242
  441. package/src/modules/dx/codeBlock/__tests__/mockProps.ts +0 -160
  442. package/src/modules/dx/codeBlock/codeBlock.stories.ts +0 -143
  443. package/src/modules/dx/codeBlock/darkTheme.css +0 -88
  444. package/src/modules/dx/codeBlock/lightTheme.css +0 -72
  445. package/src/modules/dx/dropdown/__tests__/dropdown.test.ts +0 -172
  446. package/src/modules/dx/dropdown/__tests__/mockNestedOptions.ts +0 -96
  447. package/src/modules/dx/dropdown/__tests__/mockOptions.ts +0 -10
  448. package/src/modules/dx/dropdown/__tests__/mockProps.ts +0 -6
  449. package/src/modules/dx/dropdown/dropdown.stories.ts +0 -89
  450. package/src/modules/dx/dropdownOption/__tests__/dropdownOption.test.ts +0 -112
  451. package/src/modules/dx/dropdownOption/__tests__/mockProps.ts +0 -20
  452. package/src/modules/dx/emptyState/__tests__/emptyState.test.ts +0 -52
  453. package/src/modules/dx/emptyState/__tests__/mockProps.ts +0 -4
  454. package/src/modules/dx/emptyState/emptyState.stories.ts +0 -45
  455. package/src/modules/dx/feature/__tests__/feature.test.ts +0 -50
  456. package/src/modules/dx/feature/__tests__/mockProps.ts +0 -8
  457. package/src/modules/dx/featureGrid/__tests__/featureGrid.test.ts +0 -21
  458. package/src/modules/dx/featureGrid/featureGrid.stories.ts +0 -120
  459. package/src/modules/dx/featuredContentHeader/__tests__/featuredContentHeader.test.ts +0 -191
  460. package/src/modules/dx/featuredContentHeader/__tests__/mockProps.ts +0 -73
  461. package/src/modules/dx/featuredContentHeader/featuredContentHeader.stories.ts +0 -153
  462. package/src/modules/dx/featuresList/__tests__/featuresList.test.ts +0 -47
  463. package/src/modules/dx/featuresList/__tests__/mockProps.ts +0 -17
  464. package/src/modules/dx/featuresList/featuresList.stories.ts +0 -30
  465. package/src/modules/dx/footer/__tests__/footer.test.ts +0 -147
  466. package/src/modules/dx/footer/__tests__/mockLocales.ts +0 -7
  467. package/src/modules/dx/footer/footer.stories.ts +0 -88
  468. package/src/modules/dx/footerOption/__tests__/footerOption.test.ts +0 -34
  469. package/src/modules/dx/footerOption/__tests__/mockProps.ts +0 -7
  470. package/src/modules/dx/formattedDateTime/__tests__/formattedDateTime.test.ts +0 -25
  471. package/src/modules/dx/formattedDateTime/__tests__/mockProps.ts +0 -13
  472. package/src/modules/dx/formattedDateTime/formattedDateTime.stories.ts +0 -103
  473. package/src/modules/dx/grid/__tests__/grid.test.ts +0 -37
  474. package/src/modules/dx/grid/grid.stories.ts +0 -134
  475. package/src/modules/dx/groupBio/__tests__/groupBio.test.ts +0 -82
  476. package/src/modules/dx/groupBio/__tests__/mockProps.ts +0 -15
  477. package/src/modules/dx/groupBio/groupBio.css +0 -49
  478. package/src/modules/dx/groupBio/groupBio.html +0 -29
  479. package/src/modules/dx/groupBio/groupBio.stories.ts +0 -66
  480. package/src/modules/dx/groupBio/groupBio.ts +0 -41
  481. package/src/modules/dx/groupText/__tests__/groupText.test.ts +0 -73
  482. package/src/modules/dx/groupText/__tests__/mockProps.ts +0 -35
  483. package/src/modules/dx/groupText/groupText.stories.ts +0 -81
  484. package/src/modules/dx/headTags/headTags.html +0 -3
  485. package/src/modules/dx/headTags/headTags.ts +0 -39
  486. package/src/modules/dx/header/__benchmarks__/header.benchmark.js +0 -45
  487. package/src/modules/dx/header/__tests__/header.test.ts +0 -236
  488. package/src/modules/dx/header/__tests__/mockNavArchitects.ts +0 -169
  489. package/src/modules/dx/header/__tests__/mockNavDevelopers.ts +0 -419
  490. package/src/modules/dx/header/__tests__/mockNavs.ts +0 -115
  491. package/src/modules/dx/header/__tests__/mockProps.ts +0 -164
  492. package/src/modules/dx/header/header.css +0 -109
  493. package/src/modules/dx/header/header.html +0 -128
  494. package/src/modules/dx/header/header.stories.ts +0 -172
  495. package/src/modules/dx/header/header.ts +0 -27
  496. package/src/modules/dx/headerMobileNavMenu/__tests__/headerMobileNavMenu.test.ts +0 -123
  497. package/src/modules/dx/headerMobileNavMenuOption/__tests__/headerMobileNavMenuOption.test.ts +0 -38
  498. package/src/modules/dx/headerNav/__tests__/headerNav.test.ts +0 -49
  499. package/src/modules/dx/headerSearch/__tests__/headerSearch.test.ts +0 -198
  500. package/src/modules/dx/headerSearch/__tests__/mockData.ts +0 -11
  501. package/src/modules/dx/headerSearch/__tests__/mockProps.ts +0 -11
  502. package/src/modules/dx/headerSearch/headerSearch.css +0 -62
  503. package/src/modules/dx/headerSearch/headerSearch.html +0 -65
  504. package/src/modules/dx/headerSearch/headerSearch.ts +0 -161
  505. package/src/modules/dx/helmet/__tests__/helmet.test.ts +0 -53
  506. package/src/modules/dx/helmet/helmet.stories.ts +0 -53
  507. package/src/modules/dx/hr/__tests__/hr.test.ts +0 -53
  508. package/src/modules/dx/hr/__tests__/mockProps.ts +0 -16
  509. package/src/modules/dx/hr/hr.stories.ts +0 -50
  510. package/src/modules/dx/icon/__tests__/icon.test.ts +0 -54
  511. package/src/modules/dx/icon/icon.stories.ts +0 -100
  512. package/src/modules/dx/iconBadge/__tests__/iconBadge.test.ts +0 -17
  513. package/src/modules/dx/iconBadge/iconBadge.stories.ts +0 -32
  514. package/src/modules/dx/imageAndLabel/__tests__/imageAndLabel.test.ts +0 -39
  515. package/src/modules/dx/imageAndLabel/__tests__/mockProps.ts +0 -6
  516. package/src/modules/dx/imageAndLabel/imageAndLabel.stories.ts +0 -48
  517. package/src/modules/dx/input/__tests__/input.test.ts +0 -368
  518. package/src/modules/dx/input/input.stories.ts +0 -102
  519. package/src/modules/dx/instrumentation/__tests__/instrumentation.test.ts +0 -86
  520. package/src/modules/dx/instrumentation/instrumentation.ts +0 -116
  521. package/src/modules/dx/interactiveImage/__tests__/interactiveImage.test.ts +0 -86
  522. package/src/modules/dx/interactiveImage/__tests__/mockProps.ts +0 -39
  523. package/src/modules/dx/interactiveImage/interactiveImage.stories.ts +0 -31
  524. package/src/modules/dx/lazy/__tests__/lazy.test.ts +0 -43
  525. package/src/modules/dx/lazy/lazy.html +0 -5
  526. package/src/modules/dx/lazy/lazy.stories.ts +0 -132
  527. package/src/modules/dx/lazy/lazy.ts +0 -170
  528. package/src/modules/dx/newsletterForm/newsletterForm.css +0 -73
  529. package/src/modules/dx/newsletterForm/newsletterForm.html +0 -73
  530. package/src/modules/dx/newsletterForm/newsletterForm.ts +0 -238
  531. package/src/modules/dx/pagination/__tests__/pagination.test.ts +0 -121
  532. package/src/modules/dx/pagination/pagination.stories.ts +0 -88
  533. package/src/modules/dx/podcastHost/__tests__/mockProps.ts +0 -8
  534. package/src/modules/dx/podcastHost/__tests__/podcastHost.test.ts +0 -21
  535. package/src/modules/dx/podcastHost/podcastHost.stories.ts +0 -17
  536. package/src/modules/dx/podcastPlayer/__tests__/podcastPlayer.test.ts +0 -20
  537. package/src/modules/dx/podcastPlayer/podcastPlayer.stories.ts +0 -13
  538. package/src/modules/dx/podcastSubscription/__tests__/podcastSubscription.test.ts +0 -16
  539. package/src/modules/dx/podcastSubscription/podcastSubscription.css +0 -92
  540. package/src/modules/dx/podcastSubscription/podcastSubscription.html +0 -24
  541. package/src/modules/dx/podcastSubscription/podcastSubscription.stories.ts +0 -23
  542. package/src/modules/dx/podcastSubscription/podcastSubscription.ts +0 -58
  543. package/src/modules/dx/popover/__tests__/mockProps.ts +0 -8
  544. package/src/modules/dx/popover/__tests__/popover.test.ts +0 -321
  545. package/src/modules/dx/popover/popover.stories.ts +0 -82
  546. package/src/modules/dx/radioGroup/__tests__/mockProps.ts +0 -12
  547. package/src/modules/dx/radioGroup/__tests__/radioGroup.test.ts +0 -42
  548. package/src/modules/dx/radioGroup/radioGroup.stories.ts +0 -25
  549. package/src/modules/dx/relativeDateTime/__tests__/mockProps.ts +0 -55
  550. package/src/modules/dx/relativeDateTime/__tests__/relativeDateTime.test.ts +0 -52
  551. package/src/modules/dx/relativeDateTime/relativeDateTime.stories.ts +0 -83
  552. package/src/modules/dx/searchResults/searchResults.stories.ts +0 -36
  553. package/src/modules/dx/section/__tests__/section.test.ts +0 -17
  554. package/src/modules/dx/section/section.stories.ts +0 -381
  555. package/src/modules/dx/sectionSignup/__tests__/sectionSignup.test.ts +0 -66
  556. package/src/modules/dx/sectionSignup/sectionSignup.stories.ts +0 -49
  557. package/src/modules/dx/select/select.stories.ts +0 -59
  558. package/src/modules/dx/sidebar/__tests__/mockProps.ts +0 -181
  559. package/src/modules/dx/sidebar/__tests__/sidebar.test.ts +0 -609
  560. package/src/modules/dx/sidebar/sidebar.stories.ts +0 -139
  561. package/src/modules/dx/socials/__tests__/socials.test.ts +0 -124
  562. package/src/modules/dx/socials/socials.stories.ts +0 -24
  563. package/src/modules/dx/spinner/__tests__/spinner.test.ts +0 -37
  564. package/src/modules/dx/spinner/spinner.stories.ts +0 -69
  565. package/src/modules/dx/tab/__tests__/tab.test.ts +0 -129
  566. package/src/modules/dx/tab/tab.stories.ts +0 -57
  567. package/src/modules/dx/toc/__tests__/mockProps.ts +0 -22
  568. package/src/modules/dx/toc/__tests__/toc.test.ts +0 -115
  569. package/src/modules/dx/toc/toc.stories.ts +0 -26
  570. package/src/modules/dx/tooltip/__tests__/tooltip.test.ts +0 -23
  571. package/src/modules/dx/tooltip/tooltip.stories.ts +0 -46
  572. package/src/modules/dx/tree/__tests__/mockProps.ts +0 -215
  573. package/src/modules/dx/tree/__tests__/tree.test.ts +0 -357
  574. package/src/modules/dx/tree/__tests__/treeHandler.test.ts +0 -194
  575. package/src/modules/dx/tree/tree.stories.ts +0 -65
  576. package/src/modules/dx/treeItem/__tests__/mockProps.ts +0 -46
  577. package/src/modules/dx/treeItem/__tests__/treeItem.test.ts +0 -400
  578. package/src/modules/dx/treeTile/__tests__/mockProps.ts +0 -16
  579. package/src/modules/dx/treeTile/__tests__/treeTile.test.ts +0 -179
  580. package/src/modules/dx/typeBadge/__tests__/typeBadge.test.ts +0 -63
  581. package/src/modules/dx/typeBadge/typeBadge.stories.ts +0 -79
  582. package/src/modules/dx/typeBadgeGroup/__tests__/mockProps.ts +0 -11
  583. package/src/modules/dx/typeBadgeGroup/__tests__/typeBadgeGroup.test.ts +0 -76
  584. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.css +0 -12
  585. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.html +0 -11
  586. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.stories.ts +0 -19
  587. package/src/modules/dx/typeBadgeGroup/typeBadgeGroup.ts +0 -18
  588. package/src/modules/helpers/button/button.css +0 -4
  589. package/src/modules/helpers/slds/slds.css +0 -191
  590. package/src/modules/tests/buttonTest/buttonTest.html +0 -3
  591. package/src/modules/tests/buttonTest/buttonTest.ts +0 -3
  592. package/src/modules/tests/codeBlockTest/codeBlockTest.js +0 -4
  593. package/src/modules/tests/featureGridTest/featureGridTest.html +0 -7
  594. package/src/modules/tests/featureGridTest/featureGridTest.ts +0 -5
  595. package/src/modules/tests/instrumentationTest/instrumentationTest.html +0 -4
  596. package/src/modules/tests/instrumentationTest/instrumentationTest.ts +0 -8
  597. package/src/modules/tests/popoverTest/popoverTest.html +0 -6
  598. package/src/modules/tests/popoverTest/popoverTest.ts +0 -5
  599. package/src/modules/utils/css/css.ts +0 -2
  600. package/src/modules/utils/jest/jest.ts +0 -23
  601. package/src/modules/utils/normalizers/normalizers.ts +0 -91
  602. package/src/modules/utils/prismjs/prismjs.ts +0 -3225
  603. package/src/modules/utils/storybook/storybook.ts +0 -33
  604. package/src/modules/utils/tests/tests.ts +0 -31
  605. package/src/modules/utils/wordpress/__tests__/wordpress.test.ts +0 -15
  606. /package/src/modules/dx/{instrumentation/instrumentation.html → darkModeManager/darkModeManager.html} +0 -0
  607. /package/src/modules/{utils → dxUtils}/devices/devices.ts +0 -0
  608. /package/src/modules/{utils → dxUtils}/prismjs/prismjs.html +0 -0
  609. /package/src/modules/{utils → dxUtils}/regexps/regexps.ts +0 -0
  610. /package/src/modules/{utils → dxUtils}/seo/seo.ts +0 -0
  611. /package/src/modules/{utils → dxUtils}/slot/slot.ts +0 -0
@@ -0,0 +1,450 @@
1
+ import { api, LightningElement } from "lwc";
2
+ import Cookies from "js-cookie";
3
+ import defaults from "lodash.defaults";
4
+ import { pollUntil } from "dxUtils/async";
5
+
6
+ declare global {
7
+ interface Window {
8
+ SFIDWidget?: {
9
+ isAlive({ callback }: { callback: (...args: any[]) => any }): void;
10
+ logout(): void;
11
+ login(): void;
12
+ openid_response: any;
13
+ disabled: boolean;
14
+ };
15
+ }
16
+ }
17
+
18
+ interface UserInfo {
19
+ avatarImgSrc?: string;
20
+ company?: string;
21
+ firstName?: string;
22
+ id?: string;
23
+ lastName?: string;
24
+ orgId?: string;
25
+ relationship?: string;
26
+ role?: string;
27
+ username?: string;
28
+ fullName?: string;
29
+ }
30
+
31
+ interface EventSourceEvent extends Event {
32
+ id: string;
33
+ retry?: number;
34
+ data: string;
35
+ event?: string;
36
+ }
37
+
38
+ const enum PlatformEventsType {
39
+ UserDataChange = "UserDataChange",
40
+ UserPhotoChange = "UserPhotoChange",
41
+ UserMerge = "UserMerge"
42
+ }
43
+
44
+ // TODO: We probably should rewrite the logic of this component once the new identity stuff is released,
45
+ // especially because SSO should work in all browsers at that point, and we won't need to do any weird
46
+ // checking for the presence of SFIDWidget (and all the associated pain from trying to "time" the triggering of login
47
+ // events due to logins coming via two distinct routes in Chrome).
48
+
49
+ // This component handles the core Salesforce OAuth 2.0 flow used by TBID for login, rendering a
50
+ // simple Login button or avatar icon depending on login status. It should be reusable in any case
51
+ // where TBID login is needed.
52
+ export default class TbidAvatarButton extends LightningElement {
53
+ @api tbidBaseUrl = "";
54
+ @api tbidApiBaseUrl = "";
55
+
56
+ @api login = (event: Event) => this.handleComponentLogin(event);
57
+ @api logout = (event: Event) => this.handleComponentLogout(event);
58
+
59
+ private userInfo: UserInfo = {};
60
+ private isLoading = false;
61
+ private eventSource?: EventSource;
62
+ private _isRequestingUserInfo = false;
63
+ private _didReceiveUserInfo = false;
64
+ private _didDispatchLoginSuccess = false;
65
+
66
+ // _didReceiveUserInfo is a proxy for "isLoggedIn" because we only want to show the UI corresponding
67
+ // to logged-in state when user info has been received (avoids flashes of weird content)
68
+ private get isLoggedIn() {
69
+ return this._didReceiveUserInfo;
70
+ }
71
+ private get tbidIframeUrl() {
72
+ return `${this.tbidBaseUrl}/secur/logout.jsp`;
73
+ }
74
+ private get tbidApiLogoutUrl() {
75
+ return `${this.tbidApiBaseUrl}/logout`;
76
+ }
77
+ private get tbidApiUserInfoUrl() {
78
+ return `${this.tbidApiBaseUrl}/userinfo`;
79
+ }
80
+ private get tbidApiTokenUrl() {
81
+ return `${this.tbidApiBaseUrl}/token`;
82
+ }
83
+ private get tbidApiPlatformEventsUrl() {
84
+ return `${this.tbidApiBaseUrl}/platform-events`;
85
+ }
86
+
87
+ async connectedCallback() {
88
+ // Backend API for TBID login sets this state cookie if successful login occurs.
89
+ const isLoginSuccessRedirect =
90
+ Cookies.get("tbidLoginSuccess") === "true";
91
+
92
+ // The SFIDWidget enables seamless SSO in Chrome, so we will defer to it for login in cases where it is present and enabled.
93
+ const isWidgetDisabled = window.SFIDWidget?.disabled;
94
+ const isWidgetLoggedIn = window.SFIDWidget?.openid_response;
95
+ const isWidgetMaybeLoading =
96
+ !isWidgetDisabled &&
97
+ !isWidgetLoggedIn &&
98
+ Boolean(
99
+ // eslint-disable-next-line @lwc/lwc/no-document-query
100
+ document.querySelector(
101
+ 'script[src*="authProviderEmbeddedLogin"]'
102
+ )
103
+ );
104
+
105
+ window.addEventListener("tbid-login", this.handleSsoLogin);
106
+ window.addEventListener("tbid-logout", this.handleSsoLogout);
107
+
108
+ this.isLoading = true;
109
+
110
+ if (!isLoginSuccessRedirect) {
111
+ // Not a login redirect, no further work to do right now except try to request userInfo (in case a session already exists)
112
+ await this.requestUserInfo();
113
+
114
+ if (
115
+ !this._didReceiveUserInfo &&
116
+ isWidgetMaybeLoading &&
117
+ !window.SFIDWidget?.openid_response &&
118
+ window.SFIDWidget?.isAlive
119
+ ) {
120
+ // The initial userinfo request failed, but SFIDWidget was maybe loading, and it
121
+ // still hasn't completed login, so we want to check whether it's alive and wait
122
+ // (up to a maximum of 1 second) for it to possibly finish logging in before we
123
+ // turn off the "loading" indicator (this prevents odd flashes of content).
124
+ await this.waitForSFIDWidget();
125
+ }
126
+
127
+ this.isLoading = false;
128
+ } else {
129
+ // We got here from a login success redirect
130
+ Cookies.remove("tbidLoginSuccess"); // first, cleanup
131
+
132
+ if (isWidgetMaybeLoading) {
133
+ // This is a successful login and we have an SFIDWidget present, so it *should*
134
+ // handle finishing up login itself. But it has a maximum of 1 second to do so.
135
+ const didWidgetLoad = await this.waitForSFIDWidget();
136
+ if (!didWidgetLoad) {
137
+ // SFIDWidget not responding in time; complete login ourselves.
138
+ await this.requestUserInfo();
139
+ this.dispatchLoginSuccess();
140
+ }
141
+ } else {
142
+ // No SFIDWidget loading, proceed immediately to completing normal initialization.
143
+ await this.requestUserInfo();
144
+ this.dispatchLoginSuccess();
145
+ }
146
+
147
+ this.isLoading = false;
148
+ }
149
+ }
150
+
151
+ disconnectedCallback() {
152
+ window.removeEventListener("tbid-login", this.handleSsoLogin);
153
+ window.removeEventListener("tbid-logout", this.handleSsoLogout);
154
+ this.teardownEventSource();
155
+ }
156
+
157
+ // The SFIDWidget requires third party cookies to function. In browsers with third party
158
+ // cookies disabled, the widget will load but never log in, resulting in delayed UI updates
159
+ // in some cases. To mitigate this, this method calls the widget's "isAlive" method, which
160
+ // should respond very quickly if third party cookies are enabled. If it does respond quickly,
161
+ // then this method waits a maximum of 1 second for the widget to finish logging in. If it does
162
+ // *not* respond quickly, the method resolves early so that we can stop waiting pointlessly.
163
+ private waitForSFIDWidget = async () => {
164
+ const millisecondsFor30fps = 33;
165
+ const widgetNotAlivePromise = new Promise<boolean>((resolve) => {
166
+ const timeoutId = setTimeout(
167
+ () => resolve(false),
168
+ 5 * millisecondsFor30fps // give SFIDWidget roughly 5 chances to load
169
+ );
170
+ window.SFIDWidget?.isAlive({
171
+ // If the widget responds as expected, this promise will fail to resolve and thus
172
+ // we will continue to wait on the other promise, below.
173
+ callback: () => clearTimeout(timeoutId)
174
+ });
175
+ });
176
+ const widgetLoggedInPromise = pollUntil(
177
+ () => Boolean(window.SFIDWidget?.openid_response),
178
+ millisecondsFor30fps,
179
+ 1000
180
+ );
181
+ const success = await Promise.race([
182
+ widgetNotAlivePromise,
183
+ widgetLoggedInPromise
184
+ ]);
185
+ return success;
186
+ };
187
+
188
+ private setupEventSource = () => {
189
+ // subscribe to platform events
190
+ this.eventSource = new EventSource(this.tbidApiPlatformEventsUrl);
191
+ this.eventSource.addEventListener(
192
+ PlatformEventsType.UserDataChange,
193
+ // eslint-disable-next-line no-undef
194
+ this.handleUserDataChange as EventListener
195
+ );
196
+ this.eventSource.addEventListener(
197
+ PlatformEventsType.UserMerge,
198
+ this.handleSsoLogout
199
+ );
200
+ };
201
+
202
+ private teardownEventSource = () => {
203
+ if (!this.eventSource) {
204
+ return;
205
+ }
206
+
207
+ this.eventSource.removeEventListener(
208
+ PlatformEventsType.UserDataChange,
209
+ // eslint-disable-next-line no-undef
210
+ this.handleUserDataChange as EventListener
211
+ );
212
+ this.eventSource.removeEventListener(
213
+ PlatformEventsType.UserMerge,
214
+ this.handleSsoLogout
215
+ );
216
+ this.eventSource.close();
217
+ this.eventSource = undefined;
218
+ };
219
+
220
+ private handleLogout = (isSsoLogout: boolean) => {
221
+ // Reset state
222
+ this._didReceiveUserInfo = false;
223
+ this.isLoading = false;
224
+ this.updateUserInfo({}); // clear old info
225
+ this.teardownEventSource();
226
+ this.dispatchLogoutSuccess();
227
+
228
+ if (!isSsoLogout && window.SFIDWidget?.openid_response) {
229
+ // If the SFIDWidget is around and has an access token, and if logout was not *already*
230
+ // triggered by SSO logout, defer to the SFIDWidget. This will ensure that the SSO
231
+ // session is logged out as well.
232
+ window.SFIDWidget.logout();
233
+ } else {
234
+ // Always clear the session token; if not SSO logout, this will also revoke the token with
235
+ // TBID; if SSO logout, that step is already taken care of. No need to await this.
236
+ fetch(`${this.tbidApiLogoutUrl}?isSsoLogout=${isSsoLogout}`, {
237
+ method: "DELETE",
238
+ credentials: "same-origin"
239
+ });
240
+
241
+ if (!isSsoLogout) {
242
+ // Dropping an iframe is required to fully get TBID to destroy the session; this is
243
+ // a TBID issue and they have requested that we do this for now.
244
+ const ifr = document.createElement("iframe");
245
+ ifr.setAttribute("src", this.tbidIframeUrl);
246
+ document.body.appendChild(ifr);
247
+ }
248
+ }
249
+ };
250
+
251
+ // This will only be called for "seamless SSO" login by the embedded login widget (SFIDWidget) on the website, if it exists.
252
+ private handleSsoLogout = this.handleLogout.bind(this, true);
253
+
254
+ // This handles logout from _within_ this component ("Logout" click), rather than from SSO via the SFIDWidget.
255
+ private handleComponentLogout = (event: Event) => {
256
+ event?.preventDefault();
257
+ this.handleLogout(false);
258
+ };
259
+
260
+ // This will only be called for "seamless SSO" login by the embedded login widget (SFIDWidget) on the website, if it exists.
261
+ private handleSsoLogin = async (event: Event) => {
262
+ const { userInfo } = (event as CustomEvent).detail;
263
+ const token = userInfo?.access_token;
264
+
265
+ // `token` should always be defined if an SSO login occurs, but we'll be extra safe.
266
+ if (!token) {
267
+ return;
268
+ }
269
+
270
+ // If an SSO login occurred and we have an SSO access token, we want to start using
271
+ // it rather than some other non-linked access token, for the "seamless SSO"
272
+ // experience. The `token` endpoint will invalidate any other existing token.
273
+ try {
274
+ const tokenResponse = await fetch(this.tbidApiTokenUrl, {
275
+ method: "POST",
276
+ headers: {
277
+ "Content-Type": "application/json"
278
+ },
279
+ body: JSON.stringify({
280
+ token
281
+ })
282
+ });
283
+
284
+ if (tokenResponse.ok) {
285
+ // With a new token, we want to re-establish the eventSource connection and treat as new login.
286
+ this.teardownEventSource();
287
+ this.setupEventSource();
288
+ // TODO: It sucks that we have to re-request user info here, since it should come with the token
289
+ // on SSO login. For some reason, the user info on SSO login lacks the user's photo URLs, so we
290
+ // have to re-request it. Maybe something to bring up with the TBID team.
291
+ await this.requestUserInfo();
292
+ this.dispatchLoginSuccess(true);
293
+ } else if (
294
+ tokenResponse.status === 409 &&
295
+ !this._didReceiveUserInfo &&
296
+ !this._isRequestingUserInfo // don't duplicate requests when we already have this token and a request is on-going
297
+ ) {
298
+ // Valid but duplicate token received, but we still need to grab userInfo. This could happen in certain edge cases
299
+ // involving "seamless SSO" (e.g., you might be sitting on our page in more than one tab, then log in
300
+ // on one of them; in that case, our back-end will receive the token from one tab, end up _rejecting_ it
301
+ // as a duplicate on other tabs where the login event occurs, and yet still need to request user info
302
+ // on those other tabs).
303
+ await this.requestUserInfo();
304
+ }
305
+ } catch (ex) {
306
+ console.error(`Attempt to update token failed: ${ex}`);
307
+ }
308
+ };
309
+
310
+ // This handles logout from _within_ this component ("Trailblazer.me" click), rather than from SSO via the SFIDWidget.
311
+ private handleComponentLogin = (event: Event) => {
312
+ if (window.SFIDWidget) {
313
+ // If the SFIDWidget is around, defer to it for login. This will ensure that the SSO
314
+ // session is used if possible.
315
+ event.preventDefault(); // don't navigate; the widget will handle that instead.
316
+ window.SFIDWidget.login();
317
+ }
318
+ };
319
+
320
+ private handleUserDataChange = ({ data }: EventSourceEvent) => {
321
+ let parsedEventData: any;
322
+
323
+ try {
324
+ parsedEventData = JSON.parse(data);
325
+ } catch (ex) {
326
+ console.error(
327
+ `Unparseable ${PlatformEventsType.UserDataChange} data received`
328
+ );
329
+ return;
330
+ }
331
+
332
+ this.updateUserInfo(parsedEventData);
333
+ this.dispatchUserInfo();
334
+ };
335
+
336
+ // This is the only method that should manipulate this.userInfo.
337
+ private updateUserInfo = (userInfo: any) => {
338
+ if (!userInfo) {
339
+ return;
340
+ }
341
+
342
+ if (Object.keys(userInfo).length === 0) {
343
+ // This is a "clear" call.
344
+ this.userInfo = {};
345
+ return;
346
+ }
347
+
348
+ const dirtyNextUserInfo: UserInfo = {
349
+ avatarImgSrc: userInfo.photos?.thumbnail,
350
+ firstName: userInfo.given_name,
351
+ lastName: userInfo.family_name,
352
+ username: userInfo.preferred_username,
353
+ id: userInfo.user_id,
354
+ orgId: userInfo.organization_id,
355
+ fullName:
356
+ userInfo.given_name && userInfo.family_name
357
+ ? `${userInfo.given_name} ${userInfo.family_name}`
358
+ : userInfo.given_name || userInfo.family_name || ""
359
+ };
360
+
361
+ if (userInfo.custom_attributes) {
362
+ // ProfilePictureUrl updates earlier than photos.thumbnail, so we prefer it if it's available here.
363
+ dirtyNextUserInfo.avatarImgSrc =
364
+ userInfo.custom_attributes.ProfilePictureUrl ||
365
+ dirtyNextUserInfo.avatarImgSrc;
366
+ dirtyNextUserInfo.company = userInfo.custom_attributes.CompanyName;
367
+ dirtyNextUserInfo.relationship =
368
+ userInfo.custom_attributes.RelationshipToSalesforce;
369
+ dirtyNextUserInfo.role = userInfo.custom_attributes.Role;
370
+ }
371
+
372
+ const cleanNextUserInfo: UserInfo = {};
373
+
374
+ Object.entries(dirtyNextUserInfo).forEach(([key, val]) => {
375
+ // uncleanUserInfo may have undefined values which we don't want in the final product
376
+ if (!val) {
377
+ return;
378
+ }
379
+
380
+ let cleanVal = val;
381
+
382
+ // Design requests that we not show the @trailblazer.me part of the username
383
+ if (key === "username" && typeof val === "string") {
384
+ const regExpMatch = val.match("(.*)@trailblazer.me$");
385
+ if (regExpMatch && regExpMatch[1]) {
386
+ cleanVal = regExpMatch[1];
387
+ }
388
+ }
389
+
390
+ cleanNextUserInfo[key as keyof UserInfo] = cleanVal;
391
+ });
392
+
393
+ // Keep the old info for any values _not_ defined on `cleanUserInfo`
394
+ this.userInfo = defaults(cleanNextUserInfo, this.userInfo);
395
+ };
396
+
397
+ private requestUserInfo = async () => {
398
+ this._isRequestingUserInfo = true;
399
+
400
+ try {
401
+ const userInfoRes = await fetch(this.tbidApiUserInfoUrl);
402
+
403
+ if (userInfoRes.ok) {
404
+ if (!this.eventSource) {
405
+ this.setupEventSource();
406
+ }
407
+ const userInfo = await userInfoRes.json();
408
+ this.updateUserInfo(userInfo);
409
+ this._didReceiveUserInfo = true;
410
+ this.dispatchUserInfo();
411
+ }
412
+ } catch (ex) {
413
+ // Something not directly related to auth went wrong. Unsure what to do here.
414
+ console.error(`Could not request user info: ${ex}`);
415
+ }
416
+
417
+ this._isRequestingUserInfo = false;
418
+ };
419
+
420
+ private dispatchUserInfo = () => {
421
+ this.dispatchEvent(
422
+ new CustomEvent("tbiduserinfo", {
423
+ bubbles: true,
424
+ detail: {
425
+ userInfo: this.userInfo
426
+ }
427
+ })
428
+ );
429
+ };
430
+
431
+ private dispatchLoginSuccess = (receivedNewToken = false) => {
432
+ // Receiving a new token should be treated as a new (SSO) login.
433
+ if (!this._didDispatchLoginSuccess || receivedNewToken) {
434
+ this._didDispatchLoginSuccess = true;
435
+ this.dispatchEvent(
436
+ new CustomEvent("tbidloginsuccess", {
437
+ bubbles: true
438
+ })
439
+ );
440
+ }
441
+ };
442
+
443
+ private dispatchLogoutSuccess = () => {
444
+ this.dispatchEvent(
445
+ new CustomEvent("tbidlogoutsuccess", {
446
+ bubbles: true
447
+ })
448
+ );
449
+ };
450
+ }
@@ -0,0 +1,78 @@
1
+ @import "dxHelpers/text";
2
+
3
+ :host {
4
+ --padding: var(--dx-g-spacing-md);
5
+ }
6
+
7
+ @keyframes slideup {
8
+ from {
9
+ bottom: 0;
10
+ opacity: 0;
11
+ }
12
+
13
+ to {
14
+ bottom: var(--padding);
15
+ opacity: 1;
16
+ }
17
+ }
18
+
19
+ .container {
20
+ display: none;
21
+ }
22
+
23
+ .container.open {
24
+ position: fixed;
25
+ bottom: 0;
26
+ left: var(--padding);
27
+ right: var(--padding);
28
+ display: flex;
29
+ justify-content: center;
30
+ align-items: center;
31
+ z-index: 100000000000;
32
+ opacity: 0;
33
+ animation: slideup 0.4s ease-in 0.3s 1 forwards;
34
+ }
35
+
36
+ .toast {
37
+ text-align: left;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ max-width: 926px;
42
+ background-color: rgb(22 50 92);
43
+ padding: var(--dx-g-spacing-mlg);
44
+ border-radius: 4px;
45
+ width: 100%;
46
+ }
47
+
48
+ .status-warning .toast {
49
+ background-color: var(--dx-g-red-natural-95);
50
+ }
51
+
52
+ .status-success .toast {
53
+ background-color: var(--dx-g-green-natural-95);
54
+ }
55
+
56
+ .status-error .toast {
57
+ background-color: var(--dx-g-red-natural-95);
58
+ }
59
+
60
+ .content {
61
+ flex-grow: 1;
62
+ margin: 0 var(--dx-g-spacing-lg);
63
+ color: white;
64
+ }
65
+
66
+ .content ::slotted(a) {
67
+ color: white !important;
68
+ text-decoration: underline !important;
69
+ }
70
+
71
+ dx-button {
72
+ --dx-c-button-primary-color: white;
73
+ --dx-c-button-inline-color-hover: gray;
74
+ }
75
+
76
+ dx-icon {
77
+ color: white;
78
+ }
@@ -0,0 +1,20 @@
1
+ <template>
2
+ <div class={className}>
3
+ <div class="toast" role="status">
4
+ <div class="type-icon">
5
+ <dx-icon size="large" symbol={iconSymbol}></dx-icon>
6
+ </div>
7
+ <div class="content dx-text-body-3">
8
+ <slot></slot>
9
+ </div>
10
+ <div class="close">
11
+ <dx-button
12
+ onclick={close}
13
+ icon-symbol="close"
14
+ variant="inline"
15
+ aria-label="Dismiss Toast"
16
+ ></dx-button>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </template>
@@ -0,0 +1,41 @@
1
+ import { api, LightningElement } from "lwc";
2
+ import cx from "classnames";
3
+
4
+ type ToastVariant = "info" | "error" | "success";
5
+
6
+ const icons = {
7
+ info: "info",
8
+ warning: "warning",
9
+ success: "success",
10
+ error: "error"
11
+ };
12
+
13
+ export default class extends LightningElement {
14
+ @api variant: ToastVariant = "info";
15
+ @api localStorageKey!: string;
16
+
17
+ private isOpen: boolean = false;
18
+
19
+ connectedCallback() {
20
+ this.isOpen =
21
+ window.localStorage.getItem(this.localStorageKey) !== "false";
22
+ }
23
+
24
+ private get iconSymbol() {
25
+ return icons[this.variant] || icons.info;
26
+ }
27
+
28
+ private get className() {
29
+ return cx(
30
+ "container",
31
+ `status-${this.variant}`,
32
+ this.isOpen ? "open" : "closed"
33
+ );
34
+ }
35
+
36
+ close() {
37
+ this.dispatchEvent(new CustomEvent("close"));
38
+ window.localStorage.setItem(this.localStorageKey, "false");
39
+ this.isOpen = false;
40
+ }
41
+ }
@@ -1,19 +1,12 @@
1
- @import "helpers/reset";
2
- @import "helpers/text";
3
-
4
- :host {
5
- --dx-c-toc-width: 284px;
6
- }
1
+ @import "dxHelpers/reset";
2
+ @import "dxHelpers/text";
7
3
 
8
4
  .toc {
9
5
  display: flex;
10
6
  flex-direction: row-reverse;
11
- width: var(--dx-c-toc-width);
12
- }
13
-
14
- .toc_collapsed {
15
- width: var(--dx-g-spacing-xl);
16
- margin-left: var(--dx-g-spacing-xl);
7
+ max-width: 240px;
8
+ min-width: 80px;
9
+ word-break: break-word;
17
10
  }
18
11
 
19
12
  .toc_content {
@@ -24,11 +17,6 @@
24
17
  padding-bottom: var(--dx-g-spacing-smd);
25
18
  }
26
19
 
27
- .state-hide-content {
28
- opacity: 0;
29
- pointer-events: none;
30
- }
31
-
32
20
  .toc_title {
33
21
  display: flex;
34
22
  flex-direction: row;
@@ -37,34 +25,11 @@
37
25
  margin-bottom: var(--dx-g-spacing-md);
38
26
  }
39
27
 
40
- .dx-text-heading-5 {
28
+ .dx-text-display-8 {
41
29
  padding-top: var(--dx-g-spacing-sm);
42
30
  transition: var(--dx-g-transition-hue-1x);
43
31
  }
44
32
 
45
- .toggle-button.collapsed {
46
- --dx-c-button-opacity: 1;
47
-
48
- transform: rotate(180deg);
49
- }
50
-
51
- .toggle-button {
52
- width: var(--dx-g-icon-size-xl);
53
- height: var(--dx-g-icon-size-xl);
54
-
55
- --dx-c-button-opacity: 0;
56
- --dx-c-button-custom-color: var(--dx-g-blue-vibrant-50);
57
- --dx-c-button-custom-background: white;
58
- --dx-c-button-custom-border: white;
59
- --dx-c-button-custom-color-hover: white;
60
- --dx-c-button-custom-background-hover: var(--dx-g-blue-vibrant-50);
61
- --dx-c-button-custom-border-hover: var(--dx-g-blue-vibrant-50);
62
- }
63
-
64
- .toggle-button:hover {
65
- --dx-c-button-opacity: 1;
66
- }
67
-
68
33
  .content-button {
69
34
  line-height: var(--dx-g-text-lg);
70
35
  color: var(--dx-g-blue-vibrant-20);
@@ -80,14 +45,21 @@
80
45
  .content-button.selected {
81
46
  border-color: var(--dx-g-blue-vibrant-50);
82
47
  color: var(--dx-g-blue-vibrant-50);
83
- font-weight: bold;
48
+ font-weight: var(--dx-g-font-bold);
49
+ }
50
+
51
+ .content-button::after {
52
+ content: attr(data-text);
53
+ display: block;
54
+ font-weight: var(--dx-g-font-bold);
55
+ height: 0;
56
+ overflow: hidden;
57
+ pointer-events: none;
58
+ user-select: none;
59
+ visibility: hidden;
84
60
  }
85
61
 
86
62
  .content-button:not(.selected):hover {
87
63
  color: var(--dx-g-blue-vibrant-40);
88
64
  border-color: var(--dx-g-blue-vibrant-40);
89
65
  }
90
-
91
- .toc:hover .toggle-button {
92
- --dx-c-button-opacity: 1;
93
- }