@hashicorp/react-components 0.0.0 → 1.0.1

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 (586) hide show
  1. package/.eslintrc.js +4 -0
  2. package/.stylelintrc.js +3 -0
  3. package/.test/setup-vitest.js +1 -0
  4. package/README.md +2 -78
  5. package/global.d.ts +6 -0
  6. package/package.json +29 -29
  7. package/postcss.config.js +21 -0
  8. package/src/components/actions/index.tsx +107 -0
  9. package/src/components/actions/style.module.css +28 -0
  10. package/src/components/actions/types.ts +73 -0
  11. package/src/components/call-to-action/index.tsx +205 -0
  12. package/src/components/call-to-action/styles/variant-centered.module.css +93 -0
  13. package/src/components/call-to-action/styles/variant-compact-grid.module.css +88 -0
  14. package/src/components/call-to-action/styles/variant-compact.module.css +91 -0
  15. package/src/components/call-to-action/styles/variant-links.module.css +85 -0
  16. package/src/components/card/README.md +11 -0
  17. package/src/components/card/card.tsx +45 -0
  18. package/src/components/card/index.test.tsx +69 -0
  19. package/src/components/card/index.tsx +14 -0
  20. package/src/components/card/newsroom-card/index.test.tsx +39 -0
  21. package/src/components/card/newsroom-card/index.tsx +37 -0
  22. package/src/components/card/newsroom-card/style.module.css +12 -0
  23. package/src/components/card/partner-card/index.test.tsx +57 -0
  24. package/src/components/card/partner-card/index.tsx +69 -0
  25. package/src/components/card/partner-card/style.module.css +24 -0
  26. package/src/components/card/person-card/index.test.tsx +71 -0
  27. package/src/components/card/person-card/index.tsx +93 -0
  28. package/src/components/card/person-card/style.module.css +33 -0
  29. package/src/components/card/primitives.tsx +176 -0
  30. package/src/components/card/promo-card/index.tsx +51 -0
  31. package/src/components/card/resource-card/index.test.tsx +48 -0
  32. package/src/components/card/resource-card/index.tsx +37 -0
  33. package/src/components/card/style.module.css +145 -0
  34. package/src/components/card/types.ts +66 -0
  35. package/src/components/card/unified-card/index.tsx +64 -0
  36. package/{packages → src/components}/consent-manager/README.md +44 -1
  37. package/src/components/consent-manager/components/banner/banner.module.css +23 -0
  38. package/src/components/consent-manager/components/banner/banner.test.tsx +31 -0
  39. package/src/components/consent-manager/components/banner/banner.tsx +73 -0
  40. package/src/components/consent-manager/components/dialog/dialog.module.css +145 -0
  41. package/src/components/consent-manager/components/dialog/dialog.test.tsx +194 -0
  42. package/src/components/consent-manager/components/dialog/dialog.tsx +339 -0
  43. package/src/components/consent-manager/img/icn_close.tsx +19 -0
  44. package/src/components/consent-manager/index.test.tsx +334 -0
  45. package/src/components/consent-manager/index.tsx +186 -0
  46. package/src/components/consent-manager/loader/README.md +29 -0
  47. package/src/components/consent-manager/loader/categories.ts +22 -0
  48. package/src/components/consent-manager/loader/index.tsx +94 -0
  49. package/src/components/consent-manager/loader/presets/enterprise.ts +12 -0
  50. package/src/components/consent-manager/loader/presets/oss.ts +10 -0
  51. package/src/components/consent-manager/loader/services.ts +45 -0
  52. package/src/components/consent-manager/scripts/custom.tsx +59 -0
  53. package/src/components/consent-manager/scripts/segment.tsx +87 -0
  54. package/src/components/consent-manager/style.module.css +9 -0
  55. package/src/components/consent-manager/types.ts +55 -0
  56. package/src/components/consent-manager/util/cookies.test.ts +75 -0
  57. package/src/components/consent-manager/util/cookies.ts +70 -0
  58. package/src/components/consent-manager/util/integrations.test.ts +115 -0
  59. package/src/components/consent-manager/util/integrations.ts +110 -0
  60. package/src/components/intro/index.tsx +82 -0
  61. package/src/components/intro/style.module.css +67 -0
  62. package/src/components/intro/types.ts +44 -0
  63. package/src/components/marketo-form/CHANGELOG.md +122 -0
  64. package/src/components/marketo-form/README.md +1 -0
  65. package/src/components/marketo-form/contexts/FormMetadata.ts +11 -0
  66. package/src/components/marketo-form/docs.mdx +197 -0
  67. package/src/components/marketo-form/fixtures/index.ts +185 -0
  68. package/src/components/marketo-form/form/index.tsx +369 -0
  69. package/src/components/marketo-form/index.test.tsx +320 -0
  70. package/src/components/marketo-form/index.ts +11 -0
  71. package/src/components/marketo-form/package.original.json +30 -0
  72. package/src/components/marketo-form/partials/error-message/index.tsx +12 -0
  73. package/src/components/marketo-form/partials/error-message/style.module.css +13 -0
  74. package/src/components/marketo-form/partials/field/index.tsx +90 -0
  75. package/src/components/marketo-form/partials/field-wrapper/index.tsx +26 -0
  76. package/src/components/marketo-form/partials/fields/checkbox-field/index.tsx +32 -0
  77. package/src/components/marketo-form/partials/fields/email-field/index.tsx +35 -0
  78. package/src/components/marketo-form/partials/fields/form-page-url-field/index.tsx +21 -0
  79. package/src/components/marketo-form/partials/fields/hidden-field/index.tsx +37 -0
  80. package/src/components/marketo-form/partials/fields/htmltext-field/index.tsx +21 -0
  81. package/src/components/marketo-form/partials/fields/htmltext-field/style.module.css +18 -0
  82. package/src/components/marketo-form/partials/fields/name-field/index.tsx +19 -0
  83. package/src/components/marketo-form/partials/fields/name-field/style.module.css +13 -0
  84. package/src/components/marketo-form/partials/fields/radio-buttons-field/index.tsx +48 -0
  85. package/src/components/marketo-form/partials/fields/select-field/index.tsx +39 -0
  86. package/src/components/marketo-form/partials/fields/select-field/style.module.css +5 -0
  87. package/src/components/marketo-form/partials/fields/telephone-field/index.tsx +30 -0
  88. package/src/components/marketo-form/partials/fields/text-field/index.tsx +30 -0
  89. package/src/components/marketo-form/partials/fields/textarea-field/index.tsx +29 -0
  90. package/src/components/marketo-form/partials/label/index.tsx +24 -0
  91. package/src/components/marketo-form/partials/label/style.module.css +12 -0
  92. package/src/components/marketo-form/partials/visibility-rule/index.tsx +84 -0
  93. package/src/components/marketo-form/props.js +66 -0
  94. package/src/components/marketo-form/server/api-routes.ts +109 -0
  95. package/src/components/marketo-form/server/client.ts +98 -0
  96. package/src/components/marketo-form/server/index.ts +8 -0
  97. package/src/components/marketo-form/types.ts +268 -0
  98. package/src/components/marketo-form/utils.test.tsx +103 -0
  99. package/src/components/marketo-form/utils.ts +445 -0
  100. package/src/components/nav-panel/components/link-list/index.tsx +88 -0
  101. package/src/components/nav-panel/components/link-list/style.module.css +57 -0
  102. package/src/components/nav-panel/components/panel/column/index.tsx +9 -0
  103. package/src/components/nav-panel/components/panel/column/style.module.css +14 -0
  104. package/src/components/nav-panel/components/panel/index.tsx +4 -0
  105. package/src/components/nav-panel/components/panel/root/index.tsx +9 -0
  106. package/src/components/nav-panel/components/panel/root/style.module.css +15 -0
  107. package/src/components/nav-panel/components/promo/index.tsx +79 -0
  108. package/src/components/nav-panel/components/promo/style.module.css +92 -0
  109. package/src/components/nav-panel/index.tsx +6 -0
  110. package/src/components/nav-panel/product-panel/index.tsx +88 -0
  111. package/src/components/nav-panel/product-panel/style.module.css +100 -0
  112. package/src/components/nav-panel/standard-panel/index.tsx +44 -0
  113. package/src/components/nav-panel/standard-panel/style.module.css +11 -0
  114. package/src/components/next-steps/index.tsx +137 -0
  115. package/src/components/next-steps/style.module.css +270 -0
  116. package/src/components/next-steps/types.ts +63 -0
  117. package/src/components/product-badge/index.test.tsx +11 -0
  118. package/src/components/product-badge/index.tsx +42 -0
  119. package/src/components/product-badge/style.module.css +76 -0
  120. package/src/components/products-used/index.tsx +84 -0
  121. package/src/components/products-used/style.module.css +87 -0
  122. package/src/components/products-used/types.ts +31 -0
  123. package/src/components/related-content/index.test.tsx +74 -0
  124. package/src/components/related-content/index.tsx +56 -0
  125. package/src/components/related-content/style.module.css +89 -0
  126. package/src/components/related-content/types.ts +21 -0
  127. package/src/components/subnav/helpers/areBasePathsMatching.ts +13 -0
  128. package/src/components/subnav/helpers/traverse/index.ts +42 -0
  129. package/src/components/subnav/helpers/useHeightRef.ts +42 -0
  130. package/src/components/subnav/helpers/useNavRef.ts +30 -0
  131. package/src/components/subnav/helpers/useOverflowRef.ts +85 -0
  132. package/src/components/subnav/helpers/useStuckRef.ts +51 -0
  133. package/src/components/subnav/index.tsx +199 -0
  134. package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.test.ts +26 -0
  135. package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.ts +22 -0
  136. package/src/components/subnav/partials/CtaLinks/github-stars-link/index.tsx +87 -0
  137. package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.test.ts +29 -0
  138. package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.ts +32 -0
  139. package/src/components/subnav/partials/CtaLinks/github-stars-link/style.module.css +85 -0
  140. package/src/components/subnav/partials/CtaLinks/icons/github-logo.js +20 -0
  141. package/{packages → src/components}/subnav/partials/CtaLinks/icons/github.svg.js +5 -0
  142. package/src/components/subnav/partials/CtaLinks/icons/star.js +20 -0
  143. package/src/components/subnav/partials/CtaLinks/index.tsx +130 -0
  144. package/src/components/subnav/partials/CtaLinks/style.module.css +45 -0
  145. package/src/components/subnav/partials/DropdownTrigger/index.tsx +35 -0
  146. package/src/components/subnav/partials/DropdownTrigger/style.module.css +36 -0
  147. package/src/components/subnav/partials/MenuItemsDefault/index.tsx +151 -0
  148. package/src/components/subnav/partials/MenuItemsDefault/style.module.css +91 -0
  149. package/src/components/subnav/partials/MenuItemsOverflow/index.tsx +139 -0
  150. package/src/components/subnav/partials/MenuItemsOverflow/style.module.css +82 -0
  151. package/src/components/subnav/partials/TitleLink/index.tsx +113 -0
  152. package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-dark.ts +9 -0
  153. package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-light.ts +9 -0
  154. package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-dark.ts +23 -0
  155. package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-light.ts +23 -0
  156. package/src/components/subnav/partials/TitleLink/style.module.css +43 -0
  157. package/src/components/subnav/partials/nav-item-text/index.tsx +37 -0
  158. package/src/components/subnav/partials/nav-item-text/style.module.css +15 -0
  159. package/src/components/subnav/style.module.css +68 -0
  160. package/src/components/subnav/subnav-consts.ts +1 -0
  161. package/src/components/subnav/theme.module.css +50 -0
  162. package/tsconfig.json +14 -0
  163. package/vitest.config.mts +12 -0
  164. package/.circleci/config.yml +0 -8
  165. package/.github/pull_request_template.md +0 -36
  166. package/.github/workflows/publish.yml +0 -181
  167. package/__test-helpers/expect-throw.js +0 -6
  168. package/__test-helpers/extend-expect.js +0 -1
  169. package/__test-helpers/mocks/css-module-mock.js +0 -1
  170. package/__test-helpers/mocks/graphql-fragment-mock.js +0 -1
  171. package/__test-helpers/mocks/svg-mock.js +0 -1
  172. package/babel.config.js +0 -5
  173. package/jest.config.js +0 -13
  174. package/lerna.json +0 -16
  175. package/next.config.js +0 -14
  176. package/packages/accordion/LICENSE +0 -373
  177. package/packages/accordion/README.md +0 -5
  178. package/packages/accordion/index.js +0 -21
  179. package/packages/accordion/package-lock.json +0 -13
  180. package/packages/accordion/package.json +0 -20
  181. package/packages/accordion/partials/AccordionItems/fixtures/default.json +0 -12
  182. package/packages/accordion/partials/AccordionItems/icons/arrow-down.svg +0 -1
  183. package/packages/accordion/partials/AccordionItems/index.js +0 -64
  184. package/packages/accordion/partials/AccordionItems/style.css +0 -2
  185. package/packages/accordion/partials/AccordionItems/styles/content.css +0 -47
  186. package/packages/accordion/partials/AccordionItems/styles/index.css +0 -72
  187. package/packages/accordion/partials/Collapsible/index.js +0 -87
  188. package/packages/accordion/partials/Collapsible/style.css +0 -10
  189. package/packages/accordion/style.css +0 -3
  190. package/packages/accordion/styles/index.css +0 -14
  191. package/packages/alert/LICENSE +0 -373
  192. package/packages/alert/README.md +0 -9
  193. package/packages/alert/fragment.graphql +0 -8
  194. package/packages/alert/index.js +0 -44
  195. package/packages/alert/package.json +0 -22
  196. package/packages/alert/style.css +0 -138
  197. package/packages/alert-banner/LICENSE +0 -373
  198. package/packages/alert-banner/README.md +0 -3
  199. package/packages/alert-banner/close-icon.js +0 -35
  200. package/packages/alert-banner/fragment.graphql +0 -8
  201. package/packages/alert-banner/index.jsx +0 -97
  202. package/packages/alert-banner/package-lock.json +0 -18
  203. package/packages/alert-banner/package.json +0 -26
  204. package/packages/alert-banner/style.css +0 -151
  205. package/packages/button/LICENSE +0 -373
  206. package/packages/button/README.md +0 -19
  207. package/packages/button/fragment.graphql +0 -6
  208. package/packages/button/helpers/normalizeButtonTheme.js +0 -49
  209. package/packages/button/icons/arrow-right.svg.js +0 -1
  210. package/packages/button/icons/chevron-down.svg.js +0 -1
  211. package/packages/button/icons/download.svg.js +0 -1
  212. package/packages/button/icons/external-link.svg.js +0 -1
  213. package/packages/button/index.js +0 -86
  214. package/packages/button/package-lock.json +0 -18
  215. package/packages/button/package.json +0 -21
  216. package/packages/button/styles/index.css +0 -122
  217. package/packages/button/styles/variant-primary.css +0 -232
  218. package/packages/button/styles/variant-secondary.css +0 -179
  219. package/packages/button/styles/variant-tertiary-neutral.css +0 -65
  220. package/packages/button/styles/variant-tertiary.css +0 -182
  221. package/packages/call-to-action/LICENSE +0 -373
  222. package/packages/call-to-action/README.md +0 -3
  223. package/packages/call-to-action/index.js +0 -67
  224. package/packages/call-to-action/package-lock.json +0 -27
  225. package/packages/call-to-action/package.json +0 -21
  226. package/packages/call-to-action/style.css +0 -1
  227. package/packages/call-to-action/styles/_temp-spacing-tokens.css +0 -33
  228. package/packages/call-to-action/styles/common.css +0 -27
  229. package/packages/call-to-action/styles/index.css +0 -4
  230. package/packages/call-to-action/styles/variant-centered.css +0 -44
  231. package/packages/call-to-action/styles/variant-compact.css +0 -46
  232. package/packages/call-to-action/styles/variant-links.css +0 -32
  233. package/packages/callouts/LICENSE +0 -373
  234. package/packages/callouts/README.md +0 -8
  235. package/packages/callouts/index.js +0 -67
  236. package/packages/callouts/package-lock.json +0 -33
  237. package/packages/callouts/package.json +0 -20
  238. package/packages/callouts/partials/callout-item/fixtures/default.json +0 -9
  239. package/packages/callouts/partials/callout-item/index.js +0 -71
  240. package/packages/callouts/partials/callout-item/style.css +0 -76
  241. package/packages/callouts/style.css +0 -1
  242. package/packages/callouts/styles/_temp-reset.css +0 -11
  243. package/packages/callouts/styles/_temp-spacing-tokens.css +0 -41
  244. package/packages/callouts/styles/index.css +0 -124
  245. package/packages/case-study-slider/LICENSE +0 -373
  246. package/packages/case-study-slider/Logo.js +0 -6
  247. package/packages/case-study-slider/StatusBar.js +0 -14
  248. package/packages/case-study-slider/StatusBar.test.js +0 -32
  249. package/packages/case-study-slider/docs.mdx +0 -144
  250. package/packages/case-study-slider/fragment.graphql +0 -33
  251. package/packages/case-study-slider/index.js +0 -229
  252. package/packages/case-study-slider/index.test.js +0 -279
  253. package/packages/case-study-slider/package-lock.json +0 -72
  254. package/packages/case-study-slider/package.json +0 -20
  255. package/packages/case-study-slider/props.js +0 -182
  256. package/packages/case-study-slider/readme.md +0 -7
  257. package/packages/case-study-slider/style.css +0 -176
  258. package/packages/checkbox-input/LICENSE +0 -373
  259. package/packages/checkbox-input/index.js +0 -55
  260. package/packages/checkbox-input/package-lock.json +0 -13
  261. package/packages/checkbox-input/package.json +0 -20
  262. package/packages/checkbox-input/readme.md +0 -19
  263. package/packages/checkbox-input/style.css +0 -110
  264. package/packages/code-block/LICENSE +0 -373
  265. package/packages/code-block/README.md +0 -9
  266. package/packages/code-block/fragment.graphql +0 -10
  267. package/packages/code-block/img/clipboard.svg +0 -1
  268. package/packages/code-block/index.js +0 -85
  269. package/packages/code-block/languages/sentinel.js +0 -71
  270. package/packages/code-block/package-lock.json +0 -68
  271. package/packages/code-block/package.json +0 -22
  272. package/packages/code-block/style.css +0 -162
  273. package/packages/consent-manager/LICENSE +0 -373
  274. package/packages/consent-manager/banner.js +0 -39
  275. package/packages/consent-manager/cookies.js +0 -53
  276. package/packages/consent-manager/dialog.js +0 -286
  277. package/packages/consent-manager/icn_close.js +0 -19
  278. package/packages/consent-manager/index.js +0 -119
  279. package/packages/consent-manager/integrations.js +0 -92
  280. package/packages/consent-manager/load.js +0 -139
  281. package/packages/consent-manager/package-lock.json +0 -45
  282. package/packages/consent-manager/package.json +0 -24
  283. package/packages/consent-manager/style.css +0 -209
  284. package/packages/content/LICENSE +0 -373
  285. package/packages/content/README.md +0 -8
  286. package/packages/content/index.js +0 -9
  287. package/packages/content/package.json +0 -17
  288. package/packages/content/style.css +0 -322
  289. package/packages/content-cta/LICENSE +0 -373
  290. package/packages/content-cta/README.md +0 -3
  291. package/packages/content-cta/docs.mdx +0 -25
  292. package/packages/content-cta/index.js +0 -49
  293. package/packages/content-cta/index.test.js +0 -78
  294. package/packages/content-cta/package-lock.json +0 -27
  295. package/packages/content-cta/package.json +0 -20
  296. package/packages/content-cta/props.js +0 -41
  297. package/packages/content-cta/stories/docs.mdx +0 -0
  298. package/packages/content-cta/stories/examples.stories.js +0 -51
  299. package/packages/content-cta/stories/with-knobs.stories.js +0 -58
  300. package/packages/content-cta/style.css +0 -80
  301. package/packages/docs-page/LICENSE +0 -373
  302. package/packages/docs-page/README.md +0 -51
  303. package/packages/docs-page/components.js +0 -11
  304. package/packages/docs-page/docs.mdx +0 -71
  305. package/packages/docs-page/img/github-logo.svg +0 -1
  306. package/packages/docs-page/index.js +0 -75
  307. package/packages/docs-page/index.test.js +0 -18
  308. package/packages/docs-page/package-lock.json +0 -138
  309. package/packages/docs-page/package.json +0 -28
  310. package/packages/docs-page/props.js +0 -59
  311. package/packages/docs-page/server.js +0 -137
  312. package/packages/docs-page/style.css +0 -120
  313. package/packages/docs-page/temporary_jump-to-section.js +0 -64
  314. package/packages/docs-sidenav/LICENSE +0 -373
  315. package/packages/docs-sidenav/README.md +0 -7
  316. package/packages/docs-sidenav/chevron-icon.js +0 -18
  317. package/packages/docs-sidenav/img/external.svg +0 -7
  318. package/packages/docs-sidenav/index.js +0 -457
  319. package/packages/docs-sidenav/menu-icon.js +0 -14
  320. package/packages/docs-sidenav/package-lock.json +0 -26
  321. package/packages/docs-sidenav/package.json +0 -21
  322. package/packages/docs-sidenav/style.css +0 -302
  323. package/packages/enterprise-alert/LICENSE +0 -373
  324. package/packages/enterprise-alert/README.md +0 -9
  325. package/packages/enterprise-alert/index.js +0 -28
  326. package/packages/enterprise-alert/package-lock.json +0 -13
  327. package/packages/enterprise-alert/package.json +0 -23
  328. package/packages/enterprise-alert/style.css +0 -91
  329. package/packages/featured-slider/LICENSE +0 -373
  330. package/packages/featured-slider/README.md +0 -3
  331. package/packages/featured-slider/StatusBar.js +0 -14
  332. package/packages/featured-slider/docs.mdx +0 -60
  333. package/packages/featured-slider/index.js +0 -231
  334. package/packages/featured-slider/index.test.js +0 -59
  335. package/packages/featured-slider/package-lock.json +0 -66
  336. package/packages/featured-slider/package.json +0 -22
  337. package/packages/featured-slider/props.js +0 -82
  338. package/packages/featured-slider/style.css +0 -204
  339. package/packages/hashi-stack-menu/LICENSE +0 -373
  340. package/packages/hashi-stack-menu/README.md +0 -3
  341. package/packages/hashi-stack-menu/assets/icon-dropdown.svg +0 -1
  342. package/packages/hashi-stack-menu/assets/logo.svg +0 -1
  343. package/packages/hashi-stack-menu/assets/product-icons/boundary-icon-color.svg +0 -1
  344. package/packages/hashi-stack-menu/assets/product-icons/consul-icon-color.svg +0 -1
  345. package/packages/hashi-stack-menu/assets/product-icons/nomad-icon-color.svg +0 -1
  346. package/packages/hashi-stack-menu/assets/product-icons/packer-icon-color.svg +0 -1
  347. package/packages/hashi-stack-menu/assets/product-icons/terraform-icon-color.svg +0 -1
  348. package/packages/hashi-stack-menu/assets/product-icons/vagrant-icon-color.svg +0 -1
  349. package/packages/hashi-stack-menu/assets/product-icons/vault-icon-color.svg +0 -1
  350. package/packages/hashi-stack-menu/assets/product-icons/waypoint-icon-color.svg +0 -1
  351. package/packages/hashi-stack-menu/browse-panel/browse-panel.module.css +0 -33
  352. package/packages/hashi-stack-menu/browse-panel/index.jsx +0 -9
  353. package/packages/hashi-stack-menu/data/index.js +0 -125
  354. package/packages/hashi-stack-menu/hashi-stack-menu.module.css +0 -41
  355. package/packages/hashi-stack-menu/index.jsx +0 -51
  356. package/packages/hashi-stack-menu/nav-item/index.jsx +0 -100
  357. package/packages/hashi-stack-menu/nav-item/nav-item.module.css +0 -64
  358. package/packages/hashi-stack-menu/package-lock.json +0 -18
  359. package/packages/hashi-stack-menu/package.json +0 -17
  360. package/packages/hashi-stack-menu/stack-group/index.jsx +0 -16
  361. package/packages/hashi-stack-menu/stack-group/stack-group.module.css +0 -29
  362. package/packages/hashi-stack-menu/stack-item/index.jsx +0 -35
  363. package/packages/hashi-stack-menu/stack-item/stack-item.module.css +0 -58
  364. package/packages/hashi-stack-menu/stack-menu-section/index.jsx +0 -18
  365. package/packages/hashi-stack-menu/stack-menu-section/stack-menu-section.module.css +0 -26
  366. package/packages/hashi-stack-menu/use-on-click-outside-dropdown.js +0 -22
  367. package/packages/head/LICENSE +0 -373
  368. package/packages/head/README.md +0 -236
  369. package/packages/head/index.d.ts +0 -107
  370. package/packages/head/index.js +0 -66
  371. package/packages/head/package.json +0 -17
  372. package/packages/hero/LICENSE +0 -373
  373. package/packages/hero/README.md +0 -31
  374. package/packages/hero/arrow-icon.js +0 -24
  375. package/packages/hero/carousel.js +0 -153
  376. package/packages/hero/fragment.graphql +0 -55
  377. package/packages/hero/heroLeadForm.js +0 -107
  378. package/packages/hero/index.js +0 -129
  379. package/packages/hero/package-lock.json +0 -273
  380. package/packages/hero/package.json +0 -28
  381. package/packages/hero/style.css +0 -501
  382. package/packages/image/LICENSE +0 -373
  383. package/packages/image/fragment.graphql +0 -5
  384. package/packages/image/index.js +0 -81
  385. package/packages/image/package-lock.json +0 -33
  386. package/packages/image/package.json +0 -21
  387. package/packages/image/readme.md +0 -27
  388. package/packages/inline-svg/LICENSE +0 -373
  389. package/packages/inline-svg/README.md +0 -9
  390. package/packages/inline-svg/docs.mdx +0 -15
  391. package/packages/inline-svg/index.js +0 -23
  392. package/packages/inline-svg/index.test.js +0 -50
  393. package/packages/inline-svg/package.json +0 -30
  394. package/packages/inline-svg/props.js +0 -10
  395. package/packages/learn-callout/LICENSE +0 -373
  396. package/packages/learn-callout/README.md +0 -9
  397. package/packages/learn-callout/docs.mdx +0 -31
  398. package/packages/learn-callout/index.js +0 -57
  399. package/packages/learn-callout/index.test.js +0 -49
  400. package/packages/learn-callout/props.js +0 -47
  401. package/packages/learn-callout/style.css +0 -207
  402. package/packages/link-wrap/LICENSE +0 -373
  403. package/packages/link-wrap/README.md +0 -44
  404. package/packages/link-wrap/index.js +0 -40
  405. package/packages/link-wrap/package-lock.json +0 -5
  406. package/packages/link-wrap/package.json +0 -17
  407. package/packages/logo-grid/LICENSE +0 -373
  408. package/packages/logo-grid/README.md +0 -26
  409. package/packages/logo-grid/fragment.graphql +0 -17
  410. package/packages/logo-grid/index.js +0 -157
  411. package/packages/logo-grid/package-lock.json +0 -111
  412. package/packages/logo-grid/package.json +0 -21
  413. package/packages/logo-grid/style.css +0 -148
  414. package/packages/product-downloader/LICENSE +0 -373
  415. package/packages/product-downloader/README.md +0 -9
  416. package/packages/product-downloader/index.js +0 -102
  417. package/packages/product-downloader/package-lock.json +0 -103
  418. package/packages/product-downloader/package.json +0 -18
  419. package/packages/product-downloader/partials/download-cards/index.jsx +0 -125
  420. package/packages/product-downloader/partials/download-cards/style.module.css +0 -152
  421. package/packages/product-downloader/partials/dropdown/index.jsx +0 -58
  422. package/packages/product-downloader/partials/dropdown/style.module.css +0 -28
  423. package/packages/product-downloader/partials/logos/fastly.svg +0 -7
  424. package/packages/product-downloader/partials/release-information/index.jsx +0 -148
  425. package/packages/product-downloader/partials/release-information/style.module.css +0 -101
  426. package/packages/product-downloader/style.module.css +0 -100
  427. package/packages/product-downloader/utils/downloader.js +0 -136
  428. package/packages/product-features-list/LICENSE +0 -373
  429. package/packages/product-features-list/README.md +0 -3
  430. package/packages/product-features-list/index.js +0 -30
  431. package/packages/product-features-list/package-lock.json +0 -42
  432. package/packages/product-features-list/package.json +0 -20
  433. package/packages/product-features-list/style.css +0 -90
  434. package/packages/search/LICENSE +0 -373
  435. package/packages/search/README.md +0 -188
  436. package/packages/search/hits.js +0 -196
  437. package/packages/search/img/return.svg.js +0 -1
  438. package/packages/search/img/search-legend-enter.svg.js +0 -1
  439. package/packages/search/img/search-legend-escape.svg.js +0 -1
  440. package/packages/search/img/search-legend-page.svg.js +0 -1
  441. package/packages/search/img/search-x.svg.js +0 -1
  442. package/packages/search/img/search.svg.js +0 -1
  443. package/packages/search/img/slash-search-toggle.js +0 -17
  444. package/packages/search/index.js +0 -60
  445. package/packages/search/legend.js +0 -32
  446. package/packages/search/package-lock.json +0 -931
  447. package/packages/search/package.json +0 -29
  448. package/packages/search/provider.js +0 -81
  449. package/packages/search/search-box.js +0 -139
  450. package/packages/search/style.css +0 -366
  451. package/packages/search/tools.js +0 -166
  452. package/packages/section-header/LICENSE +0 -373
  453. package/packages/section-header/README.md +0 -13
  454. package/packages/section-header/fragment.graphql +0 -5
  455. package/packages/section-header/index.js +0 -42
  456. package/packages/section-header/package-lock.json +0 -18
  457. package/packages/section-header/package.json +0 -20
  458. package/packages/section-header/style.css +0 -18
  459. package/packages/select-input/LICENSE +0 -373
  460. package/packages/select-input/README.md +0 -1
  461. package/packages/select-input/img/dropdown-arrow.svg +0 -1
  462. package/packages/select-input/index.js +0 -80
  463. package/packages/select-input/package-lock.json +0 -70
  464. package/packages/select-input/package.json +0 -19
  465. package/packages/select-input/style.css +0 -88
  466. package/packages/subnav/LICENSE +0 -373
  467. package/packages/subnav/README.md +0 -85
  468. package/packages/subnav/helpers/globalThis.js +0 -9
  469. package/packages/subnav/helpers/traverse/index.js +0 -34
  470. package/packages/subnav/helpers/useNavRef.js +0 -16
  471. package/packages/subnav/helpers/useOverflowRef.js +0 -76
  472. package/packages/subnav/helpers/useStuckRef.js +0 -43
  473. package/packages/subnav/icons/boundary-logo-color.svgr.js +0 -32
  474. package/packages/subnav/icons/chevron-down.svg.js +0 -3
  475. package/packages/subnav/icons/consul-logo-color.svgr.js +0 -44
  476. package/packages/subnav/icons/hcp-logo-black-white.svgr.js +0 -29
  477. package/packages/subnav/icons/nomad-logo-color.svgr.js +0 -50
  478. package/packages/subnav/icons/packer-logo-color.svgr.js +0 -40
  479. package/packages/subnav/icons/terraform-logo-color.svgr.js +0 -44
  480. package/packages/subnav/icons/vagrant-logo-color.svgr.js +0 -38
  481. package/packages/subnav/icons/vault-logo-color.svgr.js +0 -32
  482. package/packages/subnav/icons/waypoint-logo-color.svgr.js +0 -28
  483. package/packages/subnav/index.js +0 -107
  484. package/packages/subnav/package-lock.json +0 -56
  485. package/packages/subnav/package.json +0 -25
  486. package/packages/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.js +0 -17
  487. package/packages/subnav/partials/CtaLinks/github-stars-link/index.js +0 -71
  488. package/packages/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.js +0 -25
  489. package/packages/subnav/partials/CtaLinks/github-stars-link/style.css +0 -78
  490. package/packages/subnav/partials/CtaLinks/icons/github-logo.js +0 -14
  491. package/packages/subnav/partials/CtaLinks/icons/star.js +0 -14
  492. package/packages/subnav/partials/CtaLinks/index.js +0 -48
  493. package/packages/subnav/partials/CtaLinks/style.css +0 -32
  494. package/packages/subnav/partials/DropdownTrigger/index.js +0 -20
  495. package/packages/subnav/partials/DropdownTrigger/style.css +0 -27
  496. package/packages/subnav/partials/MenuItemsDefault/index.js +0 -131
  497. package/packages/subnav/partials/MenuItemsDefault/style.css +0 -63
  498. package/packages/subnav/partials/MenuItemsOverflow/index.js +0 -117
  499. package/packages/subnav/partials/MenuItemsOverflow/style.css +0 -38
  500. package/packages/subnav/partials/TitleLink/index.js +0 -40
  501. package/packages/subnav/partials/TitleLink/style.css +0 -21
  502. package/packages/subnav/style.css +0 -6
  503. package/packages/subnav/styles/_temp-g-svg.css +0 -22
  504. package/packages/subnav/styles/_temp-resets.css +0 -15
  505. package/packages/subnav/styles/index.css +0 -103
  506. package/packages/tabbed-accordion/LICENSE +0 -373
  507. package/packages/tabbed-accordion/README.md +0 -3
  508. package/packages/tabbed-accordion/fixtures/base.json +0 -44
  509. package/packages/tabbed-accordion/index.js +0 -27
  510. package/packages/tabbed-accordion/package-lock.json +0 -27
  511. package/packages/tabbed-accordion/package.json +0 -19
  512. package/packages/tabbed-accordion/style/_temp-spacing-tokens.css +0 -36
  513. package/packages/tabbed-accordion/style/index.css +0 -22
  514. package/packages/tabbed-accordion/style.css +0 -1
  515. package/packages/tabs/LICENSE +0 -373
  516. package/packages/tabs/README.md +0 -31
  517. package/packages/tabs/index.js +0 -41
  518. package/packages/tabs/package-lock.json +0 -73
  519. package/packages/tabs/package.json +0 -18
  520. package/packages/tabs/partials/TabTriggers/helpers/smoothScroll.js +0 -77
  521. package/packages/tabs/partials/TabTriggers/icons/chevron-right_black.svg.js +0 -1
  522. package/packages/tabs/partials/TabTriggers/index.js +0 -143
  523. package/packages/tabs/partials/TabTriggers/partials/TabTrigger/icons/tooltip.svg.js +0 -1
  524. package/packages/tabs/partials/TabTriggers/partials/TabTrigger/index.js +0 -37
  525. package/packages/tabs/partials/TabTriggers/partials/TabTrigger/style.css +0 -75
  526. package/packages/tabs/partials/TabTriggers/style.css +0 -152
  527. package/packages/tabs/style.css +0 -67
  528. package/packages/terminal/LICENSE +0 -373
  529. package/packages/terminal/README.md +0 -9
  530. package/packages/terminal/Terminal.module.css +0 -146
  531. package/packages/terminal/index.jsx +0 -46
  532. package/packages/terminal/package.json +0 -17
  533. package/packages/text-input/LICENSE +0 -373
  534. package/packages/text-input/README.md +0 -24
  535. package/packages/text-input/index.js +0 -42
  536. package/packages/text-input/package-lock.json +0 -13
  537. package/packages/text-input/package.json +0 -19
  538. package/packages/text-input/style.css +0 -68
  539. package/packages/text-split/LICENSE +0 -373
  540. package/packages/text-split/README.md +0 -3
  541. package/packages/text-split/index.js +0 -66
  542. package/packages/text-split/package-lock.json +0 -35
  543. package/packages/text-split/package.json +0 -20
  544. package/packages/text-split/partials/button-group/index.js +0 -40
  545. package/packages/text-split/partials/button-group/style.css +0 -28
  546. package/packages/text-split/partials/checkbox-list/icons/check-circle.svg.jsx +0 -39
  547. package/packages/text-split/partials/checkbox-list/index.js +0 -28
  548. package/packages/text-split/partials/checkbox-list/style.css +0 -59
  549. package/packages/text-split/style.css +0 -1
  550. package/packages/text-split/styles/_temp-spacing-tokens.css +0 -37
  551. package/packages/text-split/styles/index.css +0 -86
  552. package/packages/text-split-with-code/LICENSE +0 -373
  553. package/packages/text-split-with-code/README.md +0 -13
  554. package/packages/text-split-with-code/index.js +0 -29
  555. package/packages/text-split-with-code/package-lock.json +0 -117
  556. package/packages/text-split-with-code/package.json +0 -21
  557. package/packages/text-split-with-code/style.css +0 -42
  558. package/packages/text-split-with-image/LICENSE +0 -373
  559. package/packages/text-split-with-image/README.md +0 -12
  560. package/packages/text-split-with-image/index.js +0 -11
  561. package/packages/text-split-with-image/package-lock.json +0 -75
  562. package/packages/text-split-with-image/package.json +0 -17
  563. package/packages/text-split-with-logo-grid/LICENSE +0 -373
  564. package/packages/text-split-with-logo-grid/README.md +0 -8
  565. package/packages/text-split-with-logo-grid/index.js +0 -63
  566. package/packages/text-split-with-logo-grid/package-lock.json +0 -90
  567. package/packages/text-split-with-logo-grid/package.json +0 -18
  568. package/packages/text-split-with-logo-grid/style.css +0 -88
  569. package/packages/toggle/LICENSE +0 -373
  570. package/packages/toggle/index.js +0 -22
  571. package/packages/toggle/package-lock.json +0 -5
  572. package/packages/toggle/package.json +0 -17
  573. package/packages/toggle/readme.md +0 -7
  574. package/packages/toggle/style.css +0 -35
  575. package/packages/vertical-text-block-list/LICENSE +0 -373
  576. package/packages/vertical-text-block-list/README.md +0 -15
  577. package/packages/vertical-text-block-list/index.js +0 -54
  578. package/packages/vertical-text-block-list/package-lock.json +0 -60
  579. package/packages/vertical-text-block-list/package.json +0 -22
  580. package/packages/vertical-text-block-list/style.css +0 -104
  581. package/pages/_app.jsx +0 -5
  582. package/pages/global.css +0 -43
  583. package/pages/index.jsx +0 -16
  584. package/prettier.config.js +0 -4
  585. package/scripts/release-check-branch.sh +0 -15
  586. package/scripts/release-check-npm-auth.sh +0 -39
@@ -1,286 +0,0 @@
1
- /*
2
- dialog.js
3
- Managing preferences dialog
4
- */
5
-
6
- import { Component } from 'react'
7
- import getIntegrations from './integrations'
8
- import Button from '@hashicorp/react-button'
9
- import Toggle from '@hashicorp/react-toggle'
10
- import CloseButton from './icn_close'
11
-
12
- export default class ConsentPreferences extends Component {
13
- constructor(props) {
14
- super(props)
15
-
16
- this.state = {
17
- version: props.version || 0,
18
- showConfirmationDialog: false,
19
- groupedIntegrations: {}, // Integrations object grouped by category
20
- consent: props.preferences, // Consent preferences object
21
- categories: props.categories.reduce((obj, category) => {
22
- obj[category.name] = category.description
23
- return obj
24
- }, {}), // Transform categories description array to object
25
- showCategories: {}, // Category toggle state object
26
- }
27
-
28
- this.handleFold = this.handleFold.bind(this)
29
- this.getCategoryToggle = this.getCategoryToggle.bind(this)
30
- }
31
-
32
- componentDidMount() {
33
- // Set up integrations
34
- getIntegrations(
35
- this.props.segmentServices,
36
- this.props.additionalServices,
37
- this.props.segmentWriteKey,
38
- this.props.utilServerRoot
39
- ).then((groupedIntegrations) => {
40
- this.setState({ groupedIntegrations })
41
- })
42
- }
43
-
44
- // Handler for when user toggles a category or individual integration
45
- handleToggle(integrationName, integrationOrigin, newValue) {
46
- let currentConsent = this.state.consent || {}
47
-
48
- // If user has { loadAll: true } and they toggle, make sure to preserve
49
- // the loadAll settings by setting everything to true first. This setting
50
- // gets reset at the end of the function.
51
- if (currentConsent.loadAll) {
52
- Object.keys(this.state.groupedIntegrations).forEach((category) => {
53
- this.state.groupedIntegrations[category].forEach((tool) => {
54
- currentConsent[tool.origin] = currentConsent[tool.origin] || {}
55
- currentConsent[tool.origin][tool.name] = true
56
- })
57
- })
58
- }
59
-
60
- if (integrationOrigin === 'categories') {
61
- // User toggled a category toggle
62
- // Go through list of groupedIntegrations
63
- this.state.groupedIntegrations[integrationName].forEach((tool) => {
64
- currentConsent[tool.origin] = currentConsent[tool.origin] || {}
65
- currentConsent[tool.origin][tool.name] = newValue
66
- })
67
- } else {
68
- // User toggled an individual tool toggle
69
- currentConsent[integrationOrigin] =
70
- currentConsent[integrationOrigin] || {}
71
- currentConsent[integrationOrigin][integrationName] = newValue
72
- }
73
-
74
- delete currentConsent.loadAll
75
-
76
- this.setState({ consent: currentConsent })
77
- }
78
-
79
- // Handler for folding categories
80
- handleFold(categoryName) {
81
- const categories = this.state.showCategories
82
- categories[categoryName] = !categories[categoryName]
83
- this.setState({ showCategories: categories })
84
- }
85
-
86
- // Calculate value of category toggle
87
- getCategoryToggle(category) {
88
- return this.state.groupedIntegrations[category].some((tool) => {
89
- return (
90
- this.state.consent &&
91
- this.state.consent.hasOwnProperty(tool.origin) &&
92
- this.state.consent[tool.origin].hasOwnProperty(tool.name) &&
93
- this.state.consent[tool.origin][tool.name]
94
- )
95
- })
96
- }
97
-
98
- // Build each individual category and integration row
99
- buildCategory(items, name) {
100
- const categoryItems = items.map((item) => {
101
- return (
102
- <div className="category-item flex-column" key={item.name}>
103
- <div className="item-title">{item.name}</div>
104
- <div className="flex-centered-row">
105
- <div className="item-description">{item.description}</div>
106
- <div className="consent-toggle">
107
- <Toggle
108
- onChange={this.handleToggle.bind(this, item.name, item.origin)}
109
- enabled={Boolean(
110
- this.state.consent.loadAll ||
111
- (this.state.consent &&
112
- this.state.consent[item.origin] &&
113
- this.state.consent[item.origin][item.name])
114
- )}
115
- />
116
- </div>
117
- </div>
118
- </div>
119
- )
120
- })
121
-
122
- return (
123
- <div className="category" key={name}>
124
- <div className="category-title">{name}</div>
125
- <div className="flex-centered-row">
126
- <div className="category-description">
127
- {this.state.categories[name]}
128
- </div>
129
- <div className="consent-toggle">
130
- {!this.state.showCategories[name] && (
131
- <Toggle
132
- onChange={this.handleToggle.bind(this, name, 'categories')}
133
- enabled={
134
- this.state.consent.loadAll || this.getCategoryToggle(name)
135
- }
136
- />
137
- )}
138
- </div>
139
- </div>
140
- <div className="category-fold">
141
- <a
142
- onClick={() => {
143
- this.handleFold(name)
144
- }}
145
- >
146
- {!this.state.showCategories[name] && 'See more'}
147
- {this.state.showCategories[name] && 'See less'}
148
- <svg
149
- width="14"
150
- height="8"
151
- xmlns="http://www.w3.org/2000/svg"
152
- className={!this.state.showCategories[name] ? 'down' : 'up'}
153
- >
154
- <path
155
- d="M12.293.293L7 5.586 1.707.293A1 1 0 1 0 .293 1.707l6 6a.997.997 0 0 0 1.414 0l6-6A1 1 0 0 0 12.293.293"
156
- fill="#1563FF"
157
- fillRule="evenodd"
158
- />
159
- </svg>
160
- </a>
161
- </div>
162
- {this.state.showCategories[name] && (
163
- <div className="category-items flex-column">{categoryItems}</div>
164
- )}
165
- </div>
166
- )
167
- }
168
-
169
- render() {
170
- let categories = Object.keys(this.state.groupedIntegrations)
171
- categories = categories.map((category) => {
172
- return this.buildCategory(
173
- this.state.groupedIntegrations[category],
174
- category
175
- )
176
- })
177
-
178
- return (
179
- <div className="g-consent-dialog" data-testid="consent-mgr-dialog">
180
- {/* Manage preferences dialog */}
181
- {!this.state.showConfirmationDialog && (
182
- <div className="g-consent-visible-dialog flex-column">
183
- <div className="dialog-title flex-centered-row">
184
- <span>Data Collection Preferences</span>
185
- <div
186
- className="clickable flex-centered-row"
187
- onClick={() => {
188
- this.setState({ showConfirmationDialog: true })
189
- }}
190
- >
191
- <CloseButton />
192
- </div>
193
- </div>
194
- <div className="dialog-body">
195
- <p>
196
- HashiCorp uses data collected by cookies and JavaScript
197
- libraries to improve your browsing experience, analyze site
198
- traffic, and increase the overall performance of our site. By
199
- using our website, you’re agreeing to our{' '}
200
- <a
201
- href={this.props.privacyPolicyLink}
202
- target="_blank"
203
- rel="noopener noreferrer"
204
- data-testid="privacy-policy-link"
205
- >
206
- Privacy Policy
207
- </a>
208
- .
209
- </p>
210
- <p>
211
- The categories below outline which companies and tools we use
212
- for collecting data. To opt out of a category of data
213
- collection, set the toggle to “Off” and save your preferences.
214
- </p>
215
- <div id="outline">{categories}</div>
216
- </div>
217
- <div className="dialog-footer">
218
- <Button
219
- title="Cancel"
220
- className="button-cancel"
221
- theme={{
222
- variant: 'secondary',
223
- brand: 'neutral',
224
- background: 'light',
225
- }}
226
- onClick={() => {
227
- this.setState({ showConfirmationDialog: true })
228
- }}
229
- />
230
- <Button
231
- className="button-save"
232
- title="Save Preferences"
233
- onClick={() => {
234
- this.props.saveAndLoadAnalytics(this.state.consent)
235
- }}
236
- />
237
- </div>
238
- </div>
239
- )}
240
- {/* Cancellation confirmation dialog */}
241
- {this.state.showConfirmationDialog && (
242
- <div className="g-consent-visible-dialog">
243
- <div className="dialog-title flex-centered-row">
244
- <span>Are you sure?</span>
245
- </div>
246
- <div className="dialog-body">
247
- <p>
248
- Your preferences have not been saved. To continue using our
249
- website, you must either set individual preferences or agree to{' '}
250
- <a
251
- href={this.props.privacyPolicyLink}
252
- target="_blank"
253
- rel="noopener noreferrer"
254
- >
255
- our privacy policy
256
- </a>
257
- .
258
- </p>
259
- </div>
260
- <div className="dialog-footer">
261
- <Button
262
- title="Back to Preferences"
263
- theme={{
264
- variant: 'secondary',
265
- brand: 'neutral',
266
- background: 'light',
267
- }}
268
- className="button-cancel"
269
- onClick={() => {
270
- this.setState({ showConfirmationDialog: false })
271
- }}
272
- />
273
- <Button
274
- title="Agree & Close"
275
- className="button-save"
276
- onClick={() => {
277
- this.props.saveAndLoadAnalytics({ loadAll: true })
278
- }}
279
- />
280
- </div>
281
- </div>
282
- )}
283
- </div>
284
- )
285
- }
286
- }
@@ -1,19 +0,0 @@
1
- export default function CloseIcon() {
2
- return (
3
- <svg
4
- width="16"
5
- height="16"
6
- viewBox="0 0 16 16"
7
- xmlns="http://www.w3.org/2000/svg"
8
- >
9
- <title>Close Button</title>
10
- <path
11
- d="M1.778 1.778l12.541 12.541m-.097-12.541L1.681 14.319"
12
- stroke="#FFF"
13
- strokeWidth="2"
14
- fill="none"
15
- strokeLinecap="square"
16
- />
17
- </svg>
18
- )
19
- }
@@ -1,119 +0,0 @@
1
- import { Component } from 'react'
2
- import { render } from 'react-dom'
3
- import EventEmitter from 'events'
4
- import inEU from '@segment/in-eu'
5
- import ConsentBanner from './banner'
6
- import ConsentPreferences from './dialog'
7
- import { loadPreferences, savePreferences } from './cookies'
8
- import loadAnalytics from './load'
9
-
10
- const emitter = new EventEmitter()
11
-
12
- // TODO: remove this
13
- export function init(props) {
14
- render(<ConsentManager {...props} />, document.querySelector(props.container))
15
- }
16
-
17
- export function open() {
18
- emitter.emit('openDialog')
19
- }
20
-
21
- export default class ConsentManager extends Component {
22
- constructor(props) {
23
- super(props)
24
-
25
- this.state = {
26
- showDialog: props.showDialog || false,
27
- showBanner: false,
28
- preferences: loadPreferences() || {},
29
- }
30
- this.saveAndLoadAnalytics = this.saveAndLoadAnalytics.bind(this)
31
- this.openDialog = this.openDialog.bind(this)
32
- }
33
-
34
- saveAndLoadAnalytics(preferences) {
35
- if (typeof preferences === 'undefined') {
36
- preferences = { All: false, 'Segment.io': false }
37
- }
38
- savePreferences(preferences, this.props.version)
39
-
40
- loadAnalytics(
41
- preferences,
42
- this.props.segmentWriteKey,
43
- this.props.additionalServices
44
- )
45
-
46
- // Close all dialogs
47
- document.body.classList.remove('g-noscroll')
48
- this.setState({
49
- showDialog: false,
50
- showBanner: false,
51
- preferences: loadPreferences(),
52
- })
53
- }
54
-
55
- shouldRequireConsent() {
56
- // 1. Check cookies
57
- if (
58
- this.state.preferences &&
59
- this.state.preferences.version === this.props.version
60
- ) {
61
- // Load segment and custom integrations
62
- loadAnalytics(
63
- this.state.preferences,
64
- this.props.segmentWriteKey,
65
- this.props.additionalServices
66
- )
67
- return false
68
- }
69
- // 2. Check inEU. If in-eu, show consent. If not, show nothing. Load all.
70
- if (inEU() || this.props.forceShow) {
71
- return true
72
- } else {
73
- // Load all analytics
74
- this.saveAndLoadAnalytics({ loadAll: true })
75
- return false
76
- }
77
- }
78
-
79
- componentDidMount() {
80
- this.setState({ showBanner: this.shouldRequireConsent() })
81
- emitter.on('openDialog', this.openDialog)
82
- }
83
-
84
- openDialog() {
85
- document.body.classList.add('g-noscroll')
86
- this.setState({ showDialog: true, showBanner: false })
87
- }
88
-
89
- render() {
90
- return (
91
- <div id="g-consent-manager">
92
- {/* Consent banner at the bottom */}
93
- {this.state.showBanner && (
94
- <ConsentBanner
95
- privacyPolicyLink={this.props.privacyPolicyLink}
96
- onManagePreferences={this.openDialog}
97
- onAccept={() => {
98
- this.saveAndLoadAnalytics({ loadAll: true })
99
- }}
100
- />
101
- )}
102
- {/* Consent manager preferences dialog */}
103
- {this.state.showDialog && (
104
- <ConsentPreferences
105
- version={this.props.version}
106
- segmentWriteKey={this.props.segmentWriteKey}
107
- utilServerRoot={this.props.utilServerRoot}
108
- segmentServices={this.props.segmentServices}
109
- additionalServices={this.props.additionalServices}
110
- preferences={this.state.preferences}
111
- categories={this.props.categories}
112
- privacyPolicyLink={this.props.privacyPolicyLink}
113
- saveAndLoadAnalytics={this.saveAndLoadAnalytics}
114
- />
115
- )}
116
- </div>
117
- )
118
- }
119
- }
@@ -1,92 +0,0 @@
1
- /*
2
- integrations.js
3
- Fetches integrations from Segment given write key and applies user-defined
4
- overrides. Combines with custom scripts to give a complete view into
5
- scripts that the site is trying to load. Finally, groups it all by category.
6
- */
7
-
8
- export default function getIntegrations(
9
- segmentServices,
10
- additionalServices,
11
- segmentWriteKey,
12
- utilServerRoot
13
- ) {
14
- return fetchIntegrationsFromSegment(segmentWriteKey, utilServerRoot)
15
- .then(zipIntegrations.bind(this, segmentServices, additionalServices))
16
- .then(groupByCategory)
17
- }
18
-
19
- // Get integrations from Segment by write key
20
- function fetchIntegrationsFromSegment(segmentWriteKey, utilServerRoot) {
21
- return fetch(`${utilServerRoot}/seg_integrations/${segmentWriteKey}`).then(
22
- (res) => {
23
- if (!res.ok) {
24
- throw new Error(
25
- `Failed to fetch integrations: HTTP ${res.status} ${res.statusText}`
26
- )
27
- }
28
-
29
- return res.json()
30
- }
31
- )
32
- }
33
-
34
- // Include developer overrides for fetched Segment integrations
35
- function zipIntegrations(
36
- segmentOverrides,
37
- additionalServices,
38
- segmentOriginated
39
- ) {
40
- // Create Segment integration object with name as key for quick retrieval
41
- let segmentObj = segmentOriginated.reduce((obj, segment) => {
42
- obj[segment.name] = segment
43
- obj[segment.name].origin = 'segment'
44
- return obj
45
- }, {})
46
-
47
- // Go through each developer-defined segment service and update
48
- // segmentObj with any overrides
49
- for (var i = 0; i < segmentOverrides.length; i++) {
50
- if (segmentObj.hasOwnProperty(segmentOverrides[i].name)) {
51
- segmentObj[segmentOverrides[i].name] = Object.assign(
52
- segmentObj[segmentOverrides[i].name],
53
- segmentOverrides[i]
54
- )
55
- } else {
56
- /* eslint-disable-next-line */
57
- console.warn(
58
- `Unmatched integration config for ${segmentOverrides[i].name}`
59
- )
60
- }
61
- }
62
-
63
- // Include additional (non-Segment) services
64
- let allIntegrations = additionalServices
65
- ? additionalServices.map((integration) => {
66
- integration.origin = 'custom'
67
- return integration
68
- })
69
- : []
70
-
71
- for (const key in segmentObj) {
72
- allIntegrations.push(segmentObj[key])
73
- }
74
-
75
- // Returns array with all integrations, with origin key (segment or custom)
76
- return allIntegrations
77
- }
78
-
79
- // Group by category for display purposes
80
- function groupByCategory(integrations) {
81
- let grouped = {}
82
-
83
- integrations.forEach((integration) => {
84
- if (grouped.hasOwnProperty(integration.category)) {
85
- grouped[integration.category].push(integration)
86
- } else {
87
- grouped[integration.category] = [integration]
88
- }
89
- })
90
-
91
- return grouped
92
- }
@@ -1,139 +0,0 @@
1
- /*
2
- load.js
3
- Responsible for loading scripts, whether they are Segment-originated or
4
- custom defined.
5
- */
6
-
7
- export default function loadAnalytics(
8
- preferences,
9
- segmentWriteKey,
10
- additionalServices
11
- ) {
12
- // If analytics have already been added to page, it's likely you're updating your preferences
13
- // We reload the page to re-initiate the script with the updated integrations
14
- // TODO: Investigate alternatives to full page reload approach
15
- if (window.analytics && window.analytics.initialized) {
16
- window.location.reload()
17
- return
18
- }
19
-
20
- if (preferences.loadAll) {
21
- loadSegment(segmentWriteKey, { All: true })
22
- loadCustom(additionalServices)
23
- return
24
- }
25
-
26
- if (preferences.segment) {
27
- loadSegment(segmentWriteKey, preferences.segment)
28
- }
29
-
30
- if (preferences.custom) {
31
- loadCustom(additionalServices, preferences.custom)
32
- }
33
- }
34
-
35
- function loadSegment(writeKey, userPreferences = {}) {
36
- const integrations = Object.assign(
37
- { All: false, 'Segment.io': true },
38
- userPreferences
39
- )
40
-
41
- // Exit early if Segment snippet is already present on page
42
- if (window.analytics) return
43
-
44
- // Otherwise, construct and append script to <body>
45
- insertScript({
46
- body: constructSegmentSnippet(writeKey, integrations),
47
- addToBody: true,
48
- })
49
- }
50
-
51
- function loadCustom(services, userPreferences) {
52
- if (!services || services.length === 0) return
53
-
54
- if (userPreferences) {
55
- // Load according to user preferences
56
- const integrationNames = Object.keys(userPreferences)
57
- let service
58
- integrationNames.forEach((name) => {
59
- service = services.find((service) => {
60
- return userPreferences[name] && service.name === name
61
- })
62
- if (service) {
63
- insertScript(service)
64
- }
65
- })
66
- } else {
67
- // Load everything
68
- services.forEach((service) => {
69
- insertScript(service)
70
- })
71
- }
72
- }
73
-
74
- function insertScript(script) {
75
- const scriptElement = document.createElement('script')
76
- scriptElement.type = 'text/javascript'
77
-
78
- if (script.async) {
79
- scriptElement.setAttribute('async', '')
80
- }
81
-
82
- if (script.dataAttrs) {
83
- script.dataAttrs.forEach((attr) => {
84
- scriptElement.dataset[attr.name] = attr.value
85
- })
86
- }
87
-
88
- if (script.body) {
89
- scriptElement.text = script.body
90
- } else if (script.url) {
91
- scriptElement.src = script.url
92
- }
93
-
94
- if (script.addToBody) {
95
- document.body.appendChild(scriptElement)
96
- } else {
97
- document.head.appendChild(scriptElement)
98
- }
99
- }
100
-
101
- function constructSegmentSnippet(writeKey, integrations) {
102
- // Define a function that's responsible for sending Segment-related properties to Heap
103
- // We pass this callback function to Segment's ready method (https://segment.com/docs/sources/website/analytics.js/#ready)
104
- const readyCb = function passSegmentKeysToHeap() {
105
- if (!window.heap) return
106
-
107
- // Send XID
108
- if (!localStorage.getItem('seg_heap_xid')) {
109
- const xId = localStorage.getItem('seg_xid')
110
-
111
- if (xId) {
112
- window.heap.addUserProperties({
113
- 'Segment Cross Origin ID': JSON.parse(xId),
114
- })
115
- localStorage.setItem('seg_heap_xid', Date.now())
116
- }
117
- }
118
-
119
- // Send Anonymous ID
120
- if (!localStorage.getItem('seg_heap_anonymous_id')) {
121
- const anonId = localStorage.getItem('ajs_anonymous_id')
122
-
123
- if (anonId) {
124
- window.heap.addUserProperties({
125
- 'Segment Dotcom Anonymous ID': JSON.parse(anonId),
126
- })
127
- localStorage.setItem('seg_heap_anonymous_id', Date.now())
128
- }
129
- }
130
- }
131
-
132
- return `!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
133
- analytics.load("${writeKey}", ${
134
- integrations ? JSON.stringify({ integrations }) : {}
135
- });
136
- analytics.page();
137
- analytics.ready(${readyCb});
138
- }}();`
139
- }
@@ -1,45 +0,0 @@
1
- {
2
- "name": "@hashicorp/react-consent-manager",
3
- "version": "3.0.1",
4
- "lockfileVersion": 1,
5
- "requires": true,
6
- "dependencies": {
7
- "@hashicorp/react-button": {
8
- "version": "2.3.0",
9
- "resolved": "https://registry.npmjs.org/@hashicorp/react-button/-/react-button-2.3.0.tgz",
10
- "integrity": "sha512-1C6V8OxadkdDAkwgItDfNxx7ns9EB6znK39V94RBiPvElmsNLCEG7zujcQX71V2n+HMSv1JPgDvXp4WLICzK+Q==",
11
- "requires": {
12
- "@hashicorp/react-inline-svg": "^1.0.0",
13
- "slugify": "^1.3.6"
14
- }
15
- },
16
- "@hashicorp/react-inline-svg": {
17
- "version": "1.0.2",
18
- "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz",
19
- "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw=="
20
- },
21
- "@segment/in-eu": {
22
- "version": "0.2.1",
23
- "resolved": "https://registry.npmjs.org/@segment/in-eu/-/in-eu-0.2.1.tgz",
24
- "integrity": "sha512-7JKBw/l3S9J0ldo/n6XPfd3sT89f300KOCvmZsd8sryVZOWlE4L2LMKT538I34bjRdaOd1aJ52TsOAZUOLqxiQ==",
25
- "requires": {
26
- "jstz": "^2.0.0"
27
- }
28
- },
29
- "js-cookie": {
30
- "version": "2.2.1",
31
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
32
- "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
33
- },
34
- "jstz": {
35
- "version": "2.1.1",
36
- "resolved": "https://registry.npmjs.org/jstz/-/jstz-2.1.1.tgz",
37
- "integrity": "sha512-8hfl5RD6P7rEeIbzStBz3h4f+BQHfq/ABtoU6gXKQv5OcZhnmrIpG7e1pYaZ8hS9e0mp+bxUj08fnDUbKctYyA=="
38
- },
39
- "slugify": {
40
- "version": "1.4.5",
41
- "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.5.tgz",
42
- "integrity": "sha512-WpECLAgYaxHoEAJ8Q1Lo8HOs1ngn7LN7QjXgOLbmmfkcWvosyk4ZTXkTzKyhngK640USTZUlgoQJfED1kz5fnQ=="
43
- }
44
- }
45
- }