@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,457 +0,0 @@
1
- import React, { useState, useMemo } from 'react'
2
- import LinkWrap from '@hashicorp/react-link-wrap'
3
- import MenuIcon from './menu-icon'
4
- import ChevronIcon from './chevron-icon'
5
- import fuzzysearch from 'fuzzysearch'
6
-
7
- export default function DocsSidenav({
8
- data,
9
- order,
10
- currentPage,
11
- category,
12
- Link,
13
- product,
14
- disableFilter = false
15
- }) {
16
- const [open, setOpen] = useState(false)
17
- const [filterInput, setFilterInput] = useState('')
18
-
19
- // we memoize here as the page matching is a pure, expensive calculation that
20
- // does not need to re-run every render
21
- const allContent = useMemo(
22
- () => matchOrderToData(currentPage, order, calculatePath(data, category)),
23
- [order, data, category, currentPage]
24
- )
25
- const [content, setContent] = useState(allContent)
26
-
27
- // remove leading slash and base level "docs"/"api"/etc
28
- const current = currentPage.split('/').slice(1 + category.split('/').length)
29
-
30
- return (
31
- <div
32
- className={`g-docs-sidenav${open ? ' open' : ''}${
33
- product ? ` theme-${product}` : ''
34
- }`}
35
- data-testid='root'
36
- >
37
- <div
38
- className='toggle'
39
- onClick={() => setOpen(!open)}
40
- data-testid='mobile-menu'
41
- >
42
- <span>
43
- <MenuIcon /> Documentation Menu
44
- </span>
45
- </div>
46
- <ul className='nav docs-nav'>
47
- <div className='mobile-close' onClick={() => setOpen(!open)}>
48
- &times;
49
- </div>
50
- {!disableFilter && (
51
- <input
52
- className='filter'
53
- placeholder='Filter...'
54
- onChange={filterInputChange.bind(
55
- null,
56
- setFilterInput,
57
- JSON.parse(JSON.stringify(allContent)), // deep clone
58
- setContent
59
- )}
60
- value={filterInput}
61
- />
62
- )}
63
- {renderNavTree(category, content, current, filterInput, Link)}
64
- </ul>
65
- </div>
66
- )
67
- }
68
-
69
- // Filter nav items
70
- function filterInputChange(setFilterInput, allContent, setContent, e) {
71
- setFilterInput(e.target.value)
72
- setContent(findContent(allContent, e.target.value.toLowerCase()))
73
- }
74
-
75
- function findContent(content, value) {
76
- // if there's no search value we short-circuit and return everything
77
- if (!value) return content
78
-
79
- return content.reduce((acc, item) => {
80
- // recurse on content, depth-first
81
- if (item.content) item.content = findContent(item.content, value)
82
-
83
- // here we check for conditions on a branch node
84
- // first, if a branch has children, that means at least one of the leaf nodes has
85
- // matched, so we push the branch so that the leaf is displayed
86
- const hasContent = item.content && item.content.length
87
- // second, we check to see if a branch's title matches against the query, if so we
88
- // push the branch because it matched directly
89
- const categoryTitleMatches =
90
- item.indexData &&
91
- fuzzysearch(value, item.indexData.page_title.toLowerCase())
92
- if (hasContent || categoryTitleMatches) {
93
- if (categoryTitleMatches) {
94
- item.matchedFilter = true
95
- }
96
- acc.push(item)
97
- }
98
-
99
- // now we check against content on leaf nodes
100
- if (item.page_title && fuzzysearch(value, item.page_title.toLowerCase())) {
101
- item.matchedFilter = true
102
- acc.push(item)
103
- }
104
-
105
- // and that's all!
106
- return acc
107
- }, [])
108
- }
109
-
110
- // Given a set of front matter data, adds a `path` variable formatted for correct links
111
- function calculatePath(pageData, category) {
112
- return pageData.map(p => {
113
- p.path = p.__resourcePath
114
- .split('/')
115
- .slice(category.split('/').length)
116
- .join('/')
117
- .replace(/\.mdx$/, '')
118
- return p
119
- })
120
- }
121
-
122
- // Matches up user-defined navigation hierarcy with front matter from the correct pages.
123
- //
124
- // For context, the user-defined nav hierarchy is called "content" in this function, and
125
- // the shape of its data is as such:
126
- // [{
127
- // category: 'foo',
128
- // content: ['bar', 'baz']
129
- // },
130
- // '--------------',
131
- // {
132
- // category: 'quux'
133
- // }]
134
- //
135
- // The front matter data is structured as such:
136
- // {
137
- // __resourcePath: '/docs/foo/bar.mdx',
138
- // path: 'foo/bar',
139
- // ...frontMatterObject
140
- // }
141
- function matchOrderToData(currentPage, order, pageData, stack = []) {
142
- // go through each item in the user-established order
143
- return order.map(item => {
144
- if (typeof item === 'string') {
145
- // if a string like '-----' is given, we render a divider
146
- if (item.match(/^-+$/)) return item
147
-
148
- // if we have a string, that's a terminal page. we match it with
149
- // the provided page data and return the enhanced object
150
- const itemData = pageData.filter(page => {
151
- // break down the full path and strip the html extension
152
- const pageDataPath = page.path.split('/')
153
- // copy the stack and push the item as the file path
154
- const contentPath = [...stack, item]
155
- // match them up!
156
- return pageDataPath.join('/') === contentPath.join('/')
157
- })[0]
158
-
159
- // If we don't have a match here, the user has defined a page that doesn't exist, so let's give them
160
- // a very clear error message on how to resolve this situation.
161
- if (!itemData) {
162
- const pageCategory = currentPage.split('/')[1]
163
- const missingPath = `${pageCategory}/${stack.join('/')}/${item}.mdx`
164
- const cat = `${stack.join('/')}`
165
- throw new Error(
166
- `The page "${item}" was not found within the category "${cat}". Please double-check to ensure that "${missingPath}" exists. If this page was never intended to exist, remove the key "${item}" from the category "${cat}" in "data/${pageCategory}-navigation.js"`
167
- )
168
- }
169
-
170
- return itemData
171
- } else if (item.title && item.href) {
172
- // this is the syntax for direct links, we can return them directly
173
- return item
174
- } else {
175
- // catch errors where direct links are formatted incorrectly
176
- if (item.title || item.href) {
177
- throw new Error(
178
- `Malformed direct sidebar link:\n\n ${JSON.stringify(
179
- item
180
- )}\n\nDirect links must have a "href" and a "title" property.`
181
- )
182
- }
183
-
184
- // this method mutates the object, which causes an error on subsequent renders,
185
- // so we clone it first.
186
- const _item = Object.assign({}, item)
187
-
188
- // keep track of all parent categories
189
- _item.stack = stack.concat(_item.category)
190
-
191
- // using a category without content is not allowed
192
- if (_item.category && !_item.content) {
193
- const topLevelCategory = currentPage.split('/')[1]
194
- throw new Error(
195
- `The item "${_item.stack.join(
196
- '/'
197
- )}" within "data/${topLevelCategory}-navigation.js" has a category but no content, indicating that there is a folder that contains only an "index.mdx" file, which is not allowed. To fix this, move and rename "pages/${topLevelCategory}/${_item.stack.join(
198
- '/'
199
- ) + '/index.mdx'}" to "pages/${topLevelCategory}/${_item.stack.join(
200
- '/'
201
- ) + '.mdx'}", then change the value from "{ category: '${
202
- _item.category
203
- }' }" to just "${item.category}"`
204
- )
205
- }
206
-
207
- // grab the index page, as it can contain data about the top level link
208
- pageData.some(page => {
209
- const pageDataPath = page.path.split('/')
210
-
211
- const depthLevelsMatch = _item.stack.length === pageDataPath.length - 1
212
- const pathItemsMatch = _item.stack.every(
213
- (s, i) => s === pageDataPath[i]
214
- )
215
- const isIndexFile = pageDataPath[pageDataPath.length - 1] === 'index'
216
-
217
- if (depthLevelsMatch && pathItemsMatch && isIndexFile) {
218
- _item.indexData = page
219
- // now that we know its an index page, we can remove it from the path, as
220
- // its not necessary for links
221
- _item.indexData.path = _item.indexData.path.replace(/\/index$/, '')
222
- return true
223
- }
224
- })
225
-
226
- // error handling for nav nesting mistakes
227
- if (!_item.indexData && !_item.name) {
228
- throw new Error(
229
- `An index page or "name" property is required for all categories.\nIf you would like an index page for this category, please add an index file at the path "${_item.stack.join(
230
- '/'
231
- )}/index.mdx".\nIf you do not want an index page for this category, please add a "name" property to the category object to specify the category's human-readable title.\n\nItem:\n${JSON.stringify(
232
- _item,
233
- null,
234
- 2
235
- )}`
236
- )
237
- }
238
-
239
- // using "name" and manually adding an "overview" page is silly. let's prevent that.
240
- if (_item.name && _item.content.includes('overview')) {
241
- throw new Error(`The category "${_item.stack.join(
242
- '/'
243
- )}" is using a "name" property to indicate that it has no index, but also has a manually added "overview" page. This can be fixed with the following steps:
244
-
245
- - Change the "overview.mdx" page to be "index.mdx"
246
- - Remove the "name" property from the "${
247
- _item.category
248
- }" data, instead indicate the category's name using the frontmatter on the new "index.mdx" page`)
249
- }
250
-
251
- // otherwise, it's a nested category. if the category has content, we
252
- // recurse, passing in that category's content, and the matching
253
- // subsection of page data from middleman
254
- if (_item.content) {
255
- _item.content = matchOrderToData(
256
- currentPage,
257
- _item.content,
258
- filterData(pageData, _item.category),
259
- _item.stack
260
- )
261
- }
262
-
263
- return _item
264
- }
265
- })
266
- }
267
-
268
- // Recursively renders the markup for the nested navigation
269
- function renderNavTree(category, content, currentPath, filterInput, Link) {
270
- return content.map((item, idx) => {
271
- // dividers are the only items left as strings
272
- // This array is stable, so we can use index as key
273
- // eslint-disable-next-line react/no-array-index-key
274
- if (typeof item === 'string') return <hr key={idx} />
275
-
276
- // if the link property has been set to true, we're rendering a direct link
277
- // rather than a link to a docs page
278
- if (item.title && item.href) {
279
- return (
280
- <li
281
- // This array is stable, so we can use index as key
282
- // eslint-disable-next-line react/no-array-index-key
283
- key={idx}
284
- data-testid={item.href}
285
- className={item.href.match(/^http[s]*:\/\//) ? 'external' : ''}
286
- >
287
- <LinkWrap
288
- Link={Link}
289
- href={item.href}
290
- dangerouslySetInnerHTML={{ __html: item.title }}
291
- />
292
- </li>
293
- )
294
- }
295
-
296
- if (item.path) {
297
- // if the item has a path, it's a leaf node so we render a link to the page
298
- let className = ''
299
- if (
300
- fileMatch(
301
- item.path.split('/').filter(x => x),
302
- currentPath.filter(x => x)
303
- )
304
- )
305
- className += 'active '
306
- if (item.matchedFilter) className += 'matched'
307
-
308
- return (
309
- <li
310
- // This array is stable, so we can use index as key
311
- // eslint-disable-next-line react/no-array-index-key
312
- key={idx}
313
- className={className}
314
- data-testid={`/${category}/${item.path}`}
315
- >
316
- <LinkWrap
317
- Link={Link}
318
- href={`/${category}/${item.path}`}
319
- dangerouslySetInnerHTML={{
320
- __html: item.sidebar_title || item.page_title
321
- }}
322
- />
323
- </li>
324
- )
325
- } else {
326
- // if not, its an index page in a folder, so we render it as an expandable category
327
- // alternately its a folder with no index page, in which case we skip the "overview" link
328
-
329
- // here we search for the sidebar title. if the category has an index page, we look on this
330
- // first, preferring sidebar_title and falling back to page_title. next we look for name, which
331
- // is the standard for categories without index files, and all else failing, we use the raw
332
- // folder name itself
333
- const title = item.indexData
334
- ? item.indexData.sidebar_title || item.indexData.page_title
335
- : item.name || item.category
336
-
337
- // we need to know the path of the category/folder itself, which we can get from the stack
338
- const folderPath = item.stack.join('/')
339
-
340
- // now we test whether the current url is a match for the category and the page
341
- const categoryMatches = categoryMatch(folderPath.split('/'), currentPath)
342
- const fileMatches = fileMatch(
343
- folderPath.split('/').filter(x => x),
344
- currentPath.filter(x => x)
345
- )
346
- ? 'active'
347
- : ''
348
- const containsFilterMatches = findFilterMatches(item)
349
-
350
- let className = ''
351
- if (item.content) className += 'dir '
352
- if (categoryMatches) className += 'open active '
353
- if (containsFilterMatches) className += 'open '
354
- if (item.matchedFilter && !item.content) className += 'matched'
355
-
356
- // and finally, we can render the folder
357
- return (
358
- <li
359
- className={className}
360
- data-testid={`/${category}/${folderPath}`}
361
- // This array is stable, so we can use index as key
362
- // eslint-disable-next-line react/no-array-index-key
363
- key={idx}
364
- >
365
- <span>
366
- {/* Note: this is rendered as a link, but with no href. We should test to see if */}
367
- {/* a button element would be more semantically appropriate for a11y. */}
368
- <a
369
- onClick={item.content && toggleNav}
370
- data-testid={`/${category}/${folderPath} - link`}
371
- >
372
- {item.content ? (
373
- <>
374
- <ChevronIcon />{' '}
375
- {
376
- <span
377
- dangerouslySetInnerHTML={{
378
- __html: title
379
- }}
380
- ></span>
381
- }
382
- </>
383
- ) : (
384
- <span
385
- dangerouslySetInnerHTML={{
386
- __html: title
387
- }}
388
- ></span>
389
- )}
390
- </a>
391
- </span>
392
-
393
- {/* if the item has content, we need to recurse */}
394
- {item.content && (
395
- <ul className='nav' key={folderPath}>
396
- {!item.name && (!filterInput || item.matchedFilter) && (
397
- <li
398
- className={`${fileMatches ? 'active ' : ''}${
399
- item.matchedFilter ? 'matched' : ''
400
- }`}
401
- data-testid={`/${category}/${folderPath}/index`}
402
- >
403
- {/* hide "overview" links if there's no overview (aka there is a name), or while searching */}
404
-
405
- <LinkWrap Link={Link} href={`/${category}/${folderPath}`}>
406
- Overview
407
- </LinkWrap>
408
- </li>
409
- )}
410
- {renderNavTree(
411
- category,
412
- item.content,
413
- currentPath,
414
- filterInput,
415
- Link
416
- )}
417
- </ul>
418
- )}
419
- </li>
420
- )
421
- }
422
- })
423
- }
424
-
425
- // Given a single item, returns whether it or any of its children have the
426
- // `matchedFilter` property.
427
- function findFilterMatches(item) {
428
- if (item.matchedFilter) return true
429
- return (
430
- item.content &&
431
- item.content.map(child => findFilterMatches(child)).some(x => x)
432
- )
433
- }
434
-
435
- // Given an array of pages, returns only pages whose paths contain the given category.
436
- function filterData(data, category) {
437
- return data.filter(d => d.path.split('/').indexOf(category) > -1)
438
- }
439
-
440
- // If the nav item category is entirely contained by the current page's path,
441
- // this means we're inside that category and should mark it as open.
442
- function categoryMatch(navItemPath, currentPath) {
443
- return navItemPath.every((item, i) => item === currentPath[i])
444
- }
445
-
446
- // If the current page's path exactly matches the passed in nav item's path,
447
- // we have a match and can highlight the currently active page.
448
- function fileMatch(navItemPath, currentPath) {
449
- if (currentPath.length !== navItemPath.length) return false
450
- return currentPath.every((item, i) => item === navItemPath[i])
451
- }
452
-
453
- // Opens and closes a given nav category, the easy way
454
- function toggleNav(e) {
455
- e.preventDefault()
456
- e.currentTarget.parentElement.parentElement.classList.toggle('open')
457
- }
@@ -1,14 +0,0 @@
1
- import React from 'react'
2
-
3
- export default function MenuIcon() {
4
- return (
5
- <svg width="20" height="20" fill="none" viewBox="0 0 20 20">
6
- <path
7
- fill="black"
8
- fillRule="evenodd"
9
- d="M3.08268 14.4112C3.00768 14.3362 2.91602 14.2695 2.81602 14.2278C2.66602 14.1695 2.49935 14.1528 2.33268 14.1862C2.28268 14.1945 2.22435 14.2112 2.17435 14.2278C2.12435 14.2528 2.08268 14.2778 2.03268 14.3112C1.99018 14.3362 1.94935 14.3695 1.90768 14.4112C1.83268 14.4862 1.77435 14.5778 1.72435 14.6778C1.68268 14.7862 1.66602 14.8862 1.66602 15.0028C1.66602 15.0528 1.66602 15.1112 1.68268 15.1612C1.69102 15.2195 1.70768 15.2695 1.72435 15.3195C1.74852 15.3695 1.77435 15.4195 1.80768 15.4612C1.83268 15.5112 1.87435 15.5528 1.90768 15.5862C1.94935 15.6278 1.99018 15.6612 2.03268 15.6945C2.08268 15.7195 2.12435 15.7528 2.17435 15.7695C2.22435 15.7862 2.28268 15.8028 2.33268 15.8195C2.39102 15.8278 2.44018 15.8362 2.49935 15.8362C2.60768 15.8362 2.71602 15.8112 2.81602 15.7695C2.91602 15.7278 3.00768 15.6695 3.08268 15.5862C3.12435 15.5528 3.15768 15.5112 3.19102 15.4612C3.21602 15.4195 3.24935 15.3695 3.26602 15.3195C3.29102 15.2695 3.30768 15.2195 3.31602 15.1612C3.32435 15.1112 3.33268 15.0528 3.33268 15.0028C3.33268 14.8862 3.30768 14.7862 3.26602 14.6778C3.22435 14.5778 3.16602 14.4862 3.08268 14.4112ZM3.08268 9.41118C3.00768 9.33618 2.91602 9.26951 2.81602 9.22785C2.66602 9.16951 2.49935 9.15284 2.33268 9.18618C2.28268 9.19451 2.22435 9.21118 2.17435 9.22785C2.12435 9.25284 2.08268 9.27784 2.03268 9.31118C1.99018 9.33618 1.94935 9.36951 1.90768 9.41118C1.74852 9.56951 1.66602 9.77784 1.66602 10.0028C1.66602 10.1112 1.68268 10.2195 1.72435 10.3195C1.77435 10.4195 1.83268 10.5112 1.90768 10.5862C1.94935 10.6278 1.99018 10.6612 2.03268 10.6945C2.08268 10.7195 2.12435 10.7445 2.17435 10.7695C2.22435 10.7862 2.28268 10.8028 2.33268 10.8195C2.39102 10.8278 2.44018 10.8362 2.49935 10.8362C2.60768 10.8362 2.71602 10.8112 2.81602 10.7695C2.91602 10.7278 3.00768 10.6695 3.08268 10.5862C3.16602 10.5112 3.22435 10.4195 3.26602 10.3195C3.30768 10.2195 3.33268 10.1112 3.33268 10.0028C3.33268 9.88618 3.30768 9.78618 3.26602 9.67785C3.22435 9.57785 3.16602 9.48618 3.08268 9.41118ZM3.08268 4.41128C3.00768 4.33628 2.91602 4.26961 2.81602 4.22795C2.66602 4.16128 2.49935 4.15295 2.33268 4.18628C2.28268 4.19461 2.22435 4.21128 2.17435 4.22795C2.12435 4.25295 2.08268 4.27795 2.03268 4.31128C1.99018 4.33628 1.94935 4.36961 1.90768 4.41128C1.74852 4.56961 1.66602 4.78628 1.66602 5.00295C1.66602 5.11128 1.68268 5.21961 1.72435 5.31961C1.77435 5.41961 1.83268 5.51128 1.90768 5.58628C1.94935 5.62795 1.99018 5.66128 2.03268 5.69461C2.08268 5.71961 2.12435 5.74461 2.17435 5.76961C2.22435 5.78628 2.28268 5.80295 2.33268 5.81961C2.39102 5.82795 2.44018 5.83628 2.49935 5.83628C2.60768 5.83628 2.71602 5.81128 2.81602 5.76961C2.91602 5.72795 3.00768 5.66961 3.08268 5.58628C3.16602 5.51128 3.22435 5.41961 3.26602 5.31961C3.30768 5.21961 3.33268 5.11128 3.33268 5.00295C3.33268 4.89461 3.30768 4.78628 3.26602 4.67795C3.22435 4.57795 3.16602 4.48628 3.08268 4.41128ZM17.4967 14.167H6.66341C6.20258 14.167 5.83008 14.5395 5.83008 15.0003C5.83008 15.4603 6.20258 15.8337 6.66341 15.8337H17.4967C17.9576 15.8337 18.3301 15.4603 18.3301 15.0003C18.3301 14.5395 17.9576 14.167 17.4967 14.167ZM17.4967 9.16699H6.66341C6.20258 9.16699 5.83008 9.53949 5.83008 10.0003C5.83008 10.4603 6.20258 10.8337 6.66341 10.8337H17.4967C17.9576 10.8337 18.3301 10.4603 18.3301 10.0003C18.3301 9.53949 17.9576 9.16699 17.4967 9.16699ZM18.3301 5.00033C18.3301 5.46033 17.9576 5.83366 17.4967 5.83366H6.66341C6.20258 5.83366 5.83008 5.46033 5.83008 5.00033C5.83008 4.53949 6.20258 4.16699 6.66341 4.16699H17.4967C17.9576 4.16699 18.3301 4.53949 18.3301 5.00033Z"
10
- clipRule="evenodd"
11
- />
12
- </svg>
13
- )
14
- }
@@ -1,26 +0,0 @@
1
- {
2
- "name": "@hashicorp/react-docs-sidenav",
3
- "version": "6.0.0",
4
- "lockfileVersion": 1,
5
- "requires": true,
6
- "dependencies": {
7
- "@hashicorp/react-link-wrap": {
8
- "version": "0.0.3",
9
- "resolved": "https://registry.npmjs.org/@hashicorp/react-link-wrap/-/react-link-wrap-0.0.3.tgz",
10
- "integrity": "sha512-BLH7SLMJZee8md+YU7seiOh0zpa7y8sEhEATYpK2ieFanXAQEgU58lNSC/V3ZdkSXrfyplftYuOj0E3APtE1pg==",
11
- "requires": {
12
- "is-absolute-url": "^3.0.3"
13
- }
14
- },
15
- "fuzzysearch": {
16
- "version": "1.0.3",
17
- "resolved": "https://registry.npmjs.org/fuzzysearch/-/fuzzysearch-1.0.3.tgz",
18
- "integrity": "sha1-3/yA9tawQiPyImqnndGUIxCW0Ag="
19
- },
20
- "is-absolute-url": {
21
- "version": "3.0.3",
22
- "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
23
- "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q=="
24
- }
25
- }
26
- }
@@ -1,21 +0,0 @@
1
- {
2
- "name": "@hashicorp/react-docs-sidenav",
3
- "description": "Sidebar used for navigation HashiCorp docs",
4
- "version": "6.0.0",
5
- "author": "HashiCorp",
6
- "contributors": [
7
- "Jeff Escalante"
8
- ],
9
- "dependencies": {
10
- "@hashicorp/react-link-wrap": "^0.0.3",
11
- "fuzzysearch": "1.0.3"
12
- },
13
- "license": "MPL-2.0",
14
- "peerDependencies": {
15
- "react": "^16.9.0"
16
- },
17
- "publishConfig": {
18
- "access": "public"
19
- },
20
- "gitHead": "c47c50a8419f6278073505ebbe25c9fbe4faab07"
21
- }