@hashicorp/react-components 0.0.0

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 (427) hide show
  1. package/.circleci/config.yml +8 -0
  2. package/.github/pull_request_template.md +36 -0
  3. package/.github/workflows/publish.yml +181 -0
  4. package/README.md +79 -0
  5. package/__test-helpers/expect-throw.js +6 -0
  6. package/__test-helpers/extend-expect.js +1 -0
  7. package/__test-helpers/mocks/css-module-mock.js +1 -0
  8. package/__test-helpers/mocks/graphql-fragment-mock.js +1 -0
  9. package/__test-helpers/mocks/svg-mock.js +1 -0
  10. package/babel.config.js +5 -0
  11. package/jest.config.js +13 -0
  12. package/lerna.json +16 -0
  13. package/next.config.js +14 -0
  14. package/package.json +31 -0
  15. package/packages/accordion/LICENSE +373 -0
  16. package/packages/accordion/README.md +5 -0
  17. package/packages/accordion/index.js +21 -0
  18. package/packages/accordion/package-lock.json +13 -0
  19. package/packages/accordion/package.json +20 -0
  20. package/packages/accordion/partials/AccordionItems/fixtures/default.json +12 -0
  21. package/packages/accordion/partials/AccordionItems/icons/arrow-down.svg +1 -0
  22. package/packages/accordion/partials/AccordionItems/index.js +64 -0
  23. package/packages/accordion/partials/AccordionItems/style.css +2 -0
  24. package/packages/accordion/partials/AccordionItems/styles/content.css +47 -0
  25. package/packages/accordion/partials/AccordionItems/styles/index.css +72 -0
  26. package/packages/accordion/partials/Collapsible/index.js +87 -0
  27. package/packages/accordion/partials/Collapsible/style.css +10 -0
  28. package/packages/accordion/style.css +3 -0
  29. package/packages/accordion/styles/index.css +14 -0
  30. package/packages/alert/LICENSE +373 -0
  31. package/packages/alert/README.md +9 -0
  32. package/packages/alert/fragment.graphql +8 -0
  33. package/packages/alert/index.js +44 -0
  34. package/packages/alert/package.json +22 -0
  35. package/packages/alert/style.css +138 -0
  36. package/packages/alert-banner/LICENSE +373 -0
  37. package/packages/alert-banner/README.md +3 -0
  38. package/packages/alert-banner/close-icon.js +35 -0
  39. package/packages/alert-banner/fragment.graphql +8 -0
  40. package/packages/alert-banner/index.jsx +97 -0
  41. package/packages/alert-banner/package-lock.json +18 -0
  42. package/packages/alert-banner/package.json +26 -0
  43. package/packages/alert-banner/style.css +151 -0
  44. package/packages/button/LICENSE +373 -0
  45. package/packages/button/README.md +19 -0
  46. package/packages/button/fragment.graphql +6 -0
  47. package/packages/button/helpers/normalizeButtonTheme.js +49 -0
  48. package/packages/button/icons/arrow-right.svg.js +1 -0
  49. package/packages/button/icons/chevron-down.svg.js +1 -0
  50. package/packages/button/icons/download.svg.js +1 -0
  51. package/packages/button/icons/external-link.svg.js +1 -0
  52. package/packages/button/index.js +86 -0
  53. package/packages/button/package-lock.json +18 -0
  54. package/packages/button/package.json +21 -0
  55. package/packages/button/styles/index.css +122 -0
  56. package/packages/button/styles/variant-primary.css +232 -0
  57. package/packages/button/styles/variant-secondary.css +179 -0
  58. package/packages/button/styles/variant-tertiary-neutral.css +65 -0
  59. package/packages/button/styles/variant-tertiary.css +182 -0
  60. package/packages/call-to-action/LICENSE +373 -0
  61. package/packages/call-to-action/README.md +3 -0
  62. package/packages/call-to-action/index.js +67 -0
  63. package/packages/call-to-action/package-lock.json +27 -0
  64. package/packages/call-to-action/package.json +21 -0
  65. package/packages/call-to-action/style.css +1 -0
  66. package/packages/call-to-action/styles/_temp-spacing-tokens.css +33 -0
  67. package/packages/call-to-action/styles/common.css +27 -0
  68. package/packages/call-to-action/styles/index.css +4 -0
  69. package/packages/call-to-action/styles/variant-centered.css +44 -0
  70. package/packages/call-to-action/styles/variant-compact.css +46 -0
  71. package/packages/call-to-action/styles/variant-links.css +32 -0
  72. package/packages/callouts/LICENSE +373 -0
  73. package/packages/callouts/README.md +8 -0
  74. package/packages/callouts/index.js +67 -0
  75. package/packages/callouts/package-lock.json +33 -0
  76. package/packages/callouts/package.json +20 -0
  77. package/packages/callouts/partials/callout-item/fixtures/default.json +9 -0
  78. package/packages/callouts/partials/callout-item/index.js +71 -0
  79. package/packages/callouts/partials/callout-item/style.css +76 -0
  80. package/packages/callouts/style.css +1 -0
  81. package/packages/callouts/styles/_temp-reset.css +11 -0
  82. package/packages/callouts/styles/_temp-spacing-tokens.css +41 -0
  83. package/packages/callouts/styles/index.css +124 -0
  84. package/packages/case-study-slider/LICENSE +373 -0
  85. package/packages/case-study-slider/Logo.js +6 -0
  86. package/packages/case-study-slider/StatusBar.js +14 -0
  87. package/packages/case-study-slider/StatusBar.test.js +32 -0
  88. package/packages/case-study-slider/docs.mdx +144 -0
  89. package/packages/case-study-slider/fragment.graphql +33 -0
  90. package/packages/case-study-slider/index.js +229 -0
  91. package/packages/case-study-slider/index.test.js +279 -0
  92. package/packages/case-study-slider/package-lock.json +72 -0
  93. package/packages/case-study-slider/package.json +20 -0
  94. package/packages/case-study-slider/props.js +182 -0
  95. package/packages/case-study-slider/readme.md +7 -0
  96. package/packages/case-study-slider/style.css +176 -0
  97. package/packages/checkbox-input/LICENSE +373 -0
  98. package/packages/checkbox-input/index.js +55 -0
  99. package/packages/checkbox-input/package-lock.json +13 -0
  100. package/packages/checkbox-input/package.json +20 -0
  101. package/packages/checkbox-input/readme.md +19 -0
  102. package/packages/checkbox-input/style.css +110 -0
  103. package/packages/code-block/LICENSE +373 -0
  104. package/packages/code-block/README.md +9 -0
  105. package/packages/code-block/fragment.graphql +10 -0
  106. package/packages/code-block/img/clipboard.svg +1 -0
  107. package/packages/code-block/index.js +85 -0
  108. package/packages/code-block/languages/sentinel.js +71 -0
  109. package/packages/code-block/package-lock.json +68 -0
  110. package/packages/code-block/package.json +22 -0
  111. package/packages/code-block/style.css +162 -0
  112. package/packages/consent-manager/LICENSE +373 -0
  113. package/packages/consent-manager/README.md +30 -0
  114. package/packages/consent-manager/banner.js +39 -0
  115. package/packages/consent-manager/cookies.js +53 -0
  116. package/packages/consent-manager/dialog.js +286 -0
  117. package/packages/consent-manager/icn_close.js +19 -0
  118. package/packages/consent-manager/index.js +119 -0
  119. package/packages/consent-manager/integrations.js +92 -0
  120. package/packages/consent-manager/load.js +139 -0
  121. package/packages/consent-manager/package-lock.json +45 -0
  122. package/packages/consent-manager/package.json +24 -0
  123. package/packages/consent-manager/style.css +209 -0
  124. package/packages/content/LICENSE +373 -0
  125. package/packages/content/README.md +8 -0
  126. package/packages/content/index.js +9 -0
  127. package/packages/content/package.json +17 -0
  128. package/packages/content/style.css +322 -0
  129. package/packages/content-cta/LICENSE +373 -0
  130. package/packages/content-cta/README.md +3 -0
  131. package/packages/content-cta/docs.mdx +25 -0
  132. package/packages/content-cta/index.js +49 -0
  133. package/packages/content-cta/index.test.js +78 -0
  134. package/packages/content-cta/package-lock.json +27 -0
  135. package/packages/content-cta/package.json +20 -0
  136. package/packages/content-cta/props.js +41 -0
  137. package/packages/content-cta/stories/docs.mdx +0 -0
  138. package/packages/content-cta/stories/examples.stories.js +51 -0
  139. package/packages/content-cta/stories/with-knobs.stories.js +58 -0
  140. package/packages/content-cta/style.css +80 -0
  141. package/packages/docs-page/LICENSE +373 -0
  142. package/packages/docs-page/README.md +51 -0
  143. package/packages/docs-page/components.js +11 -0
  144. package/packages/docs-page/docs.mdx +71 -0
  145. package/packages/docs-page/img/github-logo.svg +1 -0
  146. package/packages/docs-page/index.js +75 -0
  147. package/packages/docs-page/index.test.js +18 -0
  148. package/packages/docs-page/package-lock.json +138 -0
  149. package/packages/docs-page/package.json +28 -0
  150. package/packages/docs-page/props.js +59 -0
  151. package/packages/docs-page/server.js +137 -0
  152. package/packages/docs-page/style.css +120 -0
  153. package/packages/docs-page/temporary_jump-to-section.js +64 -0
  154. package/packages/docs-sidenav/LICENSE +373 -0
  155. package/packages/docs-sidenav/README.md +7 -0
  156. package/packages/docs-sidenav/chevron-icon.js +18 -0
  157. package/packages/docs-sidenav/img/external.svg +7 -0
  158. package/packages/docs-sidenav/index.js +457 -0
  159. package/packages/docs-sidenav/menu-icon.js +14 -0
  160. package/packages/docs-sidenav/package-lock.json +26 -0
  161. package/packages/docs-sidenav/package.json +21 -0
  162. package/packages/docs-sidenav/style.css +302 -0
  163. package/packages/enterprise-alert/LICENSE +373 -0
  164. package/packages/enterprise-alert/README.md +9 -0
  165. package/packages/enterprise-alert/index.js +28 -0
  166. package/packages/enterprise-alert/package-lock.json +13 -0
  167. package/packages/enterprise-alert/package.json +23 -0
  168. package/packages/enterprise-alert/style.css +91 -0
  169. package/packages/featured-slider/LICENSE +373 -0
  170. package/packages/featured-slider/README.md +3 -0
  171. package/packages/featured-slider/StatusBar.js +14 -0
  172. package/packages/featured-slider/docs.mdx +60 -0
  173. package/packages/featured-slider/index.js +231 -0
  174. package/packages/featured-slider/index.test.js +59 -0
  175. package/packages/featured-slider/package-lock.json +66 -0
  176. package/packages/featured-slider/package.json +22 -0
  177. package/packages/featured-slider/props.js +82 -0
  178. package/packages/featured-slider/style.css +204 -0
  179. package/packages/hashi-stack-menu/LICENSE +373 -0
  180. package/packages/hashi-stack-menu/README.md +3 -0
  181. package/packages/hashi-stack-menu/assets/icon-dropdown.svg +1 -0
  182. package/packages/hashi-stack-menu/assets/logo.svg +1 -0
  183. package/packages/hashi-stack-menu/assets/product-icons/boundary-icon-color.svg +1 -0
  184. package/packages/hashi-stack-menu/assets/product-icons/consul-icon-color.svg +1 -0
  185. package/packages/hashi-stack-menu/assets/product-icons/nomad-icon-color.svg +1 -0
  186. package/packages/hashi-stack-menu/assets/product-icons/packer-icon-color.svg +1 -0
  187. package/packages/hashi-stack-menu/assets/product-icons/terraform-icon-color.svg +1 -0
  188. package/packages/hashi-stack-menu/assets/product-icons/vagrant-icon-color.svg +1 -0
  189. package/packages/hashi-stack-menu/assets/product-icons/vault-icon-color.svg +1 -0
  190. package/packages/hashi-stack-menu/assets/product-icons/waypoint-icon-color.svg +1 -0
  191. package/packages/hashi-stack-menu/browse-panel/browse-panel.module.css +33 -0
  192. package/packages/hashi-stack-menu/browse-panel/index.jsx +9 -0
  193. package/packages/hashi-stack-menu/data/index.js +125 -0
  194. package/packages/hashi-stack-menu/hashi-stack-menu.module.css +41 -0
  195. package/packages/hashi-stack-menu/index.jsx +51 -0
  196. package/packages/hashi-stack-menu/nav-item/index.jsx +100 -0
  197. package/packages/hashi-stack-menu/nav-item/nav-item.module.css +64 -0
  198. package/packages/hashi-stack-menu/package-lock.json +18 -0
  199. package/packages/hashi-stack-menu/package.json +17 -0
  200. package/packages/hashi-stack-menu/stack-group/index.jsx +16 -0
  201. package/packages/hashi-stack-menu/stack-group/stack-group.module.css +29 -0
  202. package/packages/hashi-stack-menu/stack-item/index.jsx +35 -0
  203. package/packages/hashi-stack-menu/stack-item/stack-item.module.css +58 -0
  204. package/packages/hashi-stack-menu/stack-menu-section/index.jsx +18 -0
  205. package/packages/hashi-stack-menu/stack-menu-section/stack-menu-section.module.css +26 -0
  206. package/packages/hashi-stack-menu/use-on-click-outside-dropdown.js +22 -0
  207. package/packages/head/LICENSE +373 -0
  208. package/packages/head/README.md +236 -0
  209. package/packages/head/index.d.ts +107 -0
  210. package/packages/head/index.js +66 -0
  211. package/packages/head/package.json +17 -0
  212. package/packages/hero/LICENSE +373 -0
  213. package/packages/hero/README.md +31 -0
  214. package/packages/hero/arrow-icon.js +24 -0
  215. package/packages/hero/carousel.js +153 -0
  216. package/packages/hero/fragment.graphql +55 -0
  217. package/packages/hero/heroLeadForm.js +107 -0
  218. package/packages/hero/index.js +129 -0
  219. package/packages/hero/package-lock.json +273 -0
  220. package/packages/hero/package.json +28 -0
  221. package/packages/hero/style.css +501 -0
  222. package/packages/image/LICENSE +373 -0
  223. package/packages/image/fragment.graphql +5 -0
  224. package/packages/image/index.js +81 -0
  225. package/packages/image/package-lock.json +33 -0
  226. package/packages/image/package.json +21 -0
  227. package/packages/image/readme.md +27 -0
  228. package/packages/inline-svg/LICENSE +373 -0
  229. package/packages/inline-svg/README.md +9 -0
  230. package/packages/inline-svg/docs.mdx +15 -0
  231. package/packages/inline-svg/index.js +23 -0
  232. package/packages/inline-svg/index.test.js +50 -0
  233. package/packages/inline-svg/package.json +30 -0
  234. package/packages/inline-svg/props.js +10 -0
  235. package/packages/learn-callout/LICENSE +373 -0
  236. package/packages/learn-callout/README.md +9 -0
  237. package/packages/learn-callout/docs.mdx +31 -0
  238. package/packages/learn-callout/index.js +57 -0
  239. package/packages/learn-callout/index.test.js +49 -0
  240. package/packages/learn-callout/props.js +47 -0
  241. package/packages/learn-callout/style.css +207 -0
  242. package/packages/link-wrap/LICENSE +373 -0
  243. package/packages/link-wrap/README.md +44 -0
  244. package/packages/link-wrap/index.js +40 -0
  245. package/packages/link-wrap/package-lock.json +5 -0
  246. package/packages/link-wrap/package.json +17 -0
  247. package/packages/logo-grid/LICENSE +373 -0
  248. package/packages/logo-grid/README.md +26 -0
  249. package/packages/logo-grid/fragment.graphql +17 -0
  250. package/packages/logo-grid/index.js +157 -0
  251. package/packages/logo-grid/package-lock.json +111 -0
  252. package/packages/logo-grid/package.json +21 -0
  253. package/packages/logo-grid/style.css +148 -0
  254. package/packages/product-downloader/LICENSE +373 -0
  255. package/packages/product-downloader/README.md +9 -0
  256. package/packages/product-downloader/index.js +102 -0
  257. package/packages/product-downloader/package-lock.json +103 -0
  258. package/packages/product-downloader/package.json +18 -0
  259. package/packages/product-downloader/partials/download-cards/index.jsx +125 -0
  260. package/packages/product-downloader/partials/download-cards/style.module.css +152 -0
  261. package/packages/product-downloader/partials/dropdown/index.jsx +58 -0
  262. package/packages/product-downloader/partials/dropdown/style.module.css +28 -0
  263. package/packages/product-downloader/partials/logos/fastly.svg +7 -0
  264. package/packages/product-downloader/partials/release-information/index.jsx +148 -0
  265. package/packages/product-downloader/partials/release-information/style.module.css +101 -0
  266. package/packages/product-downloader/style.module.css +100 -0
  267. package/packages/product-downloader/utils/downloader.js +136 -0
  268. package/packages/product-features-list/LICENSE +373 -0
  269. package/packages/product-features-list/README.md +3 -0
  270. package/packages/product-features-list/index.js +30 -0
  271. package/packages/product-features-list/package-lock.json +42 -0
  272. package/packages/product-features-list/package.json +20 -0
  273. package/packages/product-features-list/style.css +90 -0
  274. package/packages/search/LICENSE +373 -0
  275. package/packages/search/README.md +188 -0
  276. package/packages/search/hits.js +196 -0
  277. package/packages/search/img/return.svg.js +1 -0
  278. package/packages/search/img/search-legend-enter.svg.js +1 -0
  279. package/packages/search/img/search-legend-escape.svg.js +1 -0
  280. package/packages/search/img/search-legend-page.svg.js +1 -0
  281. package/packages/search/img/search-x.svg.js +1 -0
  282. package/packages/search/img/search.svg.js +1 -0
  283. package/packages/search/img/slash-search-toggle.js +17 -0
  284. package/packages/search/index.js +60 -0
  285. package/packages/search/legend.js +32 -0
  286. package/packages/search/package-lock.json +931 -0
  287. package/packages/search/package.json +29 -0
  288. package/packages/search/provider.js +81 -0
  289. package/packages/search/search-box.js +139 -0
  290. package/packages/search/style.css +366 -0
  291. package/packages/search/tools.js +166 -0
  292. package/packages/section-header/LICENSE +373 -0
  293. package/packages/section-header/README.md +13 -0
  294. package/packages/section-header/fragment.graphql +5 -0
  295. package/packages/section-header/index.js +42 -0
  296. package/packages/section-header/package-lock.json +18 -0
  297. package/packages/section-header/package.json +20 -0
  298. package/packages/section-header/style.css +18 -0
  299. package/packages/select-input/LICENSE +373 -0
  300. package/packages/select-input/README.md +1 -0
  301. package/packages/select-input/img/dropdown-arrow.svg +1 -0
  302. package/packages/select-input/index.js +80 -0
  303. package/packages/select-input/package-lock.json +70 -0
  304. package/packages/select-input/package.json +19 -0
  305. package/packages/select-input/style.css +88 -0
  306. package/packages/subnav/LICENSE +373 -0
  307. package/packages/subnav/README.md +85 -0
  308. package/packages/subnav/helpers/globalThis.js +9 -0
  309. package/packages/subnav/helpers/traverse/index.js +34 -0
  310. package/packages/subnav/helpers/useNavRef.js +16 -0
  311. package/packages/subnav/helpers/useOverflowRef.js +76 -0
  312. package/packages/subnav/helpers/useStuckRef.js +43 -0
  313. package/packages/subnav/icons/boundary-logo-color.svgr.js +32 -0
  314. package/packages/subnav/icons/chevron-down.svg.js +3 -0
  315. package/packages/subnav/icons/consul-logo-color.svgr.js +44 -0
  316. package/packages/subnav/icons/hcp-logo-black-white.svgr.js +29 -0
  317. package/packages/subnav/icons/nomad-logo-color.svgr.js +50 -0
  318. package/packages/subnav/icons/packer-logo-color.svgr.js +40 -0
  319. package/packages/subnav/icons/terraform-logo-color.svgr.js +44 -0
  320. package/packages/subnav/icons/vagrant-logo-color.svgr.js +38 -0
  321. package/packages/subnav/icons/vault-logo-color.svgr.js +32 -0
  322. package/packages/subnav/icons/waypoint-logo-color.svgr.js +28 -0
  323. package/packages/subnav/index.js +107 -0
  324. package/packages/subnav/package-lock.json +56 -0
  325. package/packages/subnav/package.json +25 -0
  326. package/packages/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.js +17 -0
  327. package/packages/subnav/partials/CtaLinks/github-stars-link/index.js +71 -0
  328. package/packages/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.js +25 -0
  329. package/packages/subnav/partials/CtaLinks/github-stars-link/style.css +78 -0
  330. package/packages/subnav/partials/CtaLinks/icons/github-logo.js +14 -0
  331. package/packages/subnav/partials/CtaLinks/icons/github.svg.js +2 -0
  332. package/packages/subnav/partials/CtaLinks/icons/star.js +14 -0
  333. package/packages/subnav/partials/CtaLinks/index.js +48 -0
  334. package/packages/subnav/partials/CtaLinks/style.css +32 -0
  335. package/packages/subnav/partials/DropdownTrigger/index.js +20 -0
  336. package/packages/subnav/partials/DropdownTrigger/style.css +27 -0
  337. package/packages/subnav/partials/MenuItemsDefault/index.js +131 -0
  338. package/packages/subnav/partials/MenuItemsDefault/style.css +63 -0
  339. package/packages/subnav/partials/MenuItemsOverflow/index.js +117 -0
  340. package/packages/subnav/partials/MenuItemsOverflow/style.css +38 -0
  341. package/packages/subnav/partials/TitleLink/index.js +40 -0
  342. package/packages/subnav/partials/TitleLink/style.css +21 -0
  343. package/packages/subnav/style.css +6 -0
  344. package/packages/subnav/styles/_temp-g-svg.css +22 -0
  345. package/packages/subnav/styles/_temp-resets.css +15 -0
  346. package/packages/subnav/styles/index.css +103 -0
  347. package/packages/tabbed-accordion/LICENSE +373 -0
  348. package/packages/tabbed-accordion/README.md +3 -0
  349. package/packages/tabbed-accordion/fixtures/base.json +44 -0
  350. package/packages/tabbed-accordion/index.js +27 -0
  351. package/packages/tabbed-accordion/package-lock.json +27 -0
  352. package/packages/tabbed-accordion/package.json +19 -0
  353. package/packages/tabbed-accordion/style/_temp-spacing-tokens.css +36 -0
  354. package/packages/tabbed-accordion/style/index.css +22 -0
  355. package/packages/tabbed-accordion/style.css +1 -0
  356. package/packages/tabs/LICENSE +373 -0
  357. package/packages/tabs/README.md +31 -0
  358. package/packages/tabs/index.js +41 -0
  359. package/packages/tabs/package-lock.json +73 -0
  360. package/packages/tabs/package.json +18 -0
  361. package/packages/tabs/partials/TabTriggers/helpers/smoothScroll.js +77 -0
  362. package/packages/tabs/partials/TabTriggers/icons/chevron-right_black.svg.js +1 -0
  363. package/packages/tabs/partials/TabTriggers/index.js +143 -0
  364. package/packages/tabs/partials/TabTriggers/partials/TabTrigger/icons/tooltip.svg.js +1 -0
  365. package/packages/tabs/partials/TabTriggers/partials/TabTrigger/index.js +37 -0
  366. package/packages/tabs/partials/TabTriggers/partials/TabTrigger/style.css +75 -0
  367. package/packages/tabs/partials/TabTriggers/style.css +152 -0
  368. package/packages/tabs/style.css +67 -0
  369. package/packages/terminal/LICENSE +373 -0
  370. package/packages/terminal/README.md +9 -0
  371. package/packages/terminal/Terminal.module.css +146 -0
  372. package/packages/terminal/index.jsx +46 -0
  373. package/packages/terminal/package.json +17 -0
  374. package/packages/text-input/LICENSE +373 -0
  375. package/packages/text-input/README.md +24 -0
  376. package/packages/text-input/index.js +42 -0
  377. package/packages/text-input/package-lock.json +13 -0
  378. package/packages/text-input/package.json +19 -0
  379. package/packages/text-input/style.css +68 -0
  380. package/packages/text-split/LICENSE +373 -0
  381. package/packages/text-split/README.md +3 -0
  382. package/packages/text-split/index.js +66 -0
  383. package/packages/text-split/package-lock.json +35 -0
  384. package/packages/text-split/package.json +20 -0
  385. package/packages/text-split/partials/button-group/index.js +40 -0
  386. package/packages/text-split/partials/button-group/style.css +28 -0
  387. package/packages/text-split/partials/checkbox-list/icons/check-circle.svg.jsx +39 -0
  388. package/packages/text-split/partials/checkbox-list/index.js +28 -0
  389. package/packages/text-split/partials/checkbox-list/style.css +59 -0
  390. package/packages/text-split/style.css +1 -0
  391. package/packages/text-split/styles/_temp-spacing-tokens.css +37 -0
  392. package/packages/text-split/styles/index.css +86 -0
  393. package/packages/text-split-with-code/LICENSE +373 -0
  394. package/packages/text-split-with-code/README.md +13 -0
  395. package/packages/text-split-with-code/index.js +29 -0
  396. package/packages/text-split-with-code/package-lock.json +117 -0
  397. package/packages/text-split-with-code/package.json +21 -0
  398. package/packages/text-split-with-code/style.css +42 -0
  399. package/packages/text-split-with-image/LICENSE +373 -0
  400. package/packages/text-split-with-image/README.md +12 -0
  401. package/packages/text-split-with-image/index.js +11 -0
  402. package/packages/text-split-with-image/package-lock.json +75 -0
  403. package/packages/text-split-with-image/package.json +17 -0
  404. package/packages/text-split-with-logo-grid/LICENSE +373 -0
  405. package/packages/text-split-with-logo-grid/README.md +8 -0
  406. package/packages/text-split-with-logo-grid/index.js +63 -0
  407. package/packages/text-split-with-logo-grid/package-lock.json +90 -0
  408. package/packages/text-split-with-logo-grid/package.json +18 -0
  409. package/packages/text-split-with-logo-grid/style.css +88 -0
  410. package/packages/toggle/LICENSE +373 -0
  411. package/packages/toggle/index.js +22 -0
  412. package/packages/toggle/package-lock.json +5 -0
  413. package/packages/toggle/package.json +17 -0
  414. package/packages/toggle/readme.md +7 -0
  415. package/packages/toggle/style.css +35 -0
  416. package/packages/vertical-text-block-list/LICENSE +373 -0
  417. package/packages/vertical-text-block-list/README.md +15 -0
  418. package/packages/vertical-text-block-list/index.js +54 -0
  419. package/packages/vertical-text-block-list/package-lock.json +60 -0
  420. package/packages/vertical-text-block-list/package.json +22 -0
  421. package/packages/vertical-text-block-list/style.css +104 -0
  422. package/pages/_app.jsx +5 -0
  423. package/pages/global.css +43 -0
  424. package/pages/index.jsx +16 -0
  425. package/prettier.config.js +4 -0
  426. package/scripts/release-check-branch.sh +15 -0
  427. package/scripts/release-check-npm-auth.sh +39 -0
@@ -0,0 +1,8 @@
1
+ version: 2.1
2
+ orbs:
3
+ node: circleci/node@3.0.0
4
+ workflows:
5
+ test:
6
+ jobs:
7
+ - node/test:
8
+ run-command: bootstrap && npm test
@@ -0,0 +1,36 @@
1
+ 🎟️ [Asana Task]()
2
+ 🔍 [Preview Link](https://react-components-git-{branch-slug}.hashicorp.vercel.app)
3
+
4
+ ---
5
+
6
+ ## Description
7
+
8
+ Describe this pull request: what is it aiming to achieve? What should someone reviewing this PR know? If this PR includes visual changes, consider including before / after screenshots, or an animated gif showing interactions.
9
+
10
+ ## Release Information
11
+
12
+ Please select one (**required**)
13
+
14
+ - [ ] **Major** (This PR introduces a breaking (incompatible API) change)
15
+ - [ ] **Minor** (This PR adds functionality but it backwards-compatible)
16
+ - [ ] **Patch** (This PR adds a backwards-compatible bug fix)
17
+
18
+ <details>
19
+ <summary>Release Notes (<strong>required</strong>)</summary>
20
+ <!-- This repo requires release notes on each PR in order to publish a package. Remove this comment and replace with release notes that will be reflected in the GitHub release notes. -->
21
+ </details>
22
+
23
+ ---
24
+
25
+ ### PR Checklist 🚀
26
+
27
+ Items in this checklist may not may not apply to your PR, but please consider each item carefully.
28
+
29
+ - [ ] Add Asana and Preview links above.
30
+ - [ ] Conduct thorough self-review.
31
+ - [ ] Add or update tests as appropriate.
32
+ - [ ] Write a useful description (above) to give reviewers appropriate context.
33
+ - [ ] Add release notes to the appropriate section (above).
34
+ - [ ] Conduct reasonable cross browser testing for both compatibility and responsive behavior (We have a [Cross Browser Testing](https://crossbrowsertesting.com) account for this, if you don't have access, just ask!).
35
+ - [ ] Conduct reasonable accessibility review (use the [WAS](https://accessible.org/Web-Accessibility-Standards-WAS-2.pdf) as a guide or an [axe browser plugin](https://www.deque.com/axe/) until we establish more formal checks).
36
+ - [ ] Identify (in the description above) and document (add Asana tasks on [this board](https://app.asana.com/0/1100423001970639/list)) any technical debt that you're aware of, but are not addressing as part of this PR.
@@ -0,0 +1,181 @@
1
+ name: HashiBot Package Publisher
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - master
7
+ types: [opened, synchronize, ready_for_review, edited, closed]
8
+
9
+ jobs:
10
+ scan_changed_packages:
11
+ name: Scan changed packages
12
+ runs-on: ubuntu-latest
13
+ outputs:
14
+ packageName: ${{ steps.parse_changed.outputs.package_name }}
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ with:
18
+ fetch-depth: 0
19
+ - name: Parse changed packages
20
+ id: parse_changed
21
+ run: |
22
+ echo "::set-output name=package_name::$( echo $(npx lerna changed --json || echo "{}") | jq -r 'if . | length == 1 then .[0].name | tostring else "N/A" end' )"
23
+
24
+ add_comment:
25
+ name: Add warning comment to PR author
26
+ runs-on: ubuntu-latest
27
+ needs: scan_changed_packages
28
+ if: ${{ needs.scan_changed_packages.outputs.packageName == 'N/A' }}
29
+ steps:
30
+ - name: Comment on PR
31
+ uses: actions/github-script@v2
32
+ with:
33
+ github-token: ${{ secrets.GITHUB_TOKEN }}
34
+ script: |
35
+ const { data: comments } = await github.issues.listComments({
36
+ owner: context.payload.repository.owner.login,
37
+ repo: context.payload.repository.name,
38
+ issue_number: context.payload.pull_request.number,
39
+ })
40
+ const body = "This pull request cannot be automatically published as we've detected multiple lerna packages have been affected. Please publish manually."
41
+ const dup = comments.find(c => c.body === body)
42
+ if (dup) {
43
+ core.warning('This comment already exists')
44
+ process.exit(0)
45
+ }
46
+ await github.issues.createComment({
47
+ owner: context.payload.repository.owner.login,
48
+ repo: context.payload.repository.name,
49
+ issue_number: context.payload.pull_request.number,
50
+ body
51
+ })
52
+
53
+ log_package:
54
+ name: Log package name
55
+ runs-on: ubuntu-latest
56
+ needs: scan_changed_packages
57
+ if: ${{ needs.scan_changed_packages.outputs.packageName != 'N/A' }}
58
+ steps:
59
+ - name: Log package name
60
+ env:
61
+ PACKAGE_NAME: ${{ needs.scan_changed_packages.outputs.packageName }}
62
+ run: |
63
+ echo "Change detected in package: $PACKAGE_NAME"
64
+
65
+ verify_description:
66
+ name: Verify description
67
+ runs-on: ubuntu-latest
68
+ needs: scan_changed_packages
69
+ outputs:
70
+ version: ${{ steps.version.outputs.version }}
71
+ releaseNotes: ${{ steps.release_notes.outputs.releaseNotes }}
72
+ if: ${{ needs.scan_changed_packages.outputs.packageName != 'N/A' }}
73
+ steps:
74
+ - name: Get semver keyword
75
+ id: version
76
+ uses: actions/github-script@v2
77
+ with:
78
+ github-token: ${{ secrets.GITHUB_TOKEN }}
79
+ script: |
80
+ // Get contents of PR description
81
+ const prBody = context.payload.pull_request.body
82
+ // Parse lines of description
83
+ const prBodyLines = prBody.split('\n').map(x => x.trim()).filter(Boolean)
84
+ // Ensure version has been selected
85
+ const selectedVersion = prBodyLines.filter(x => x.match(/^-\s\[x\].*(major|minor|patch).*$/i))
86
+ if (!selectedVersion.length) return core.setFailed('Failed to find required version information! Ensure a SemVer category is selected in the pull request description.')
87
+ const [version] = /(major|minor|patch)/i.exec(selectedVersion[0])
88
+ if (!version) return core.setFailed('There was an error parsing the version. Please ensure an appropriate version is checked in the pull request description.')
89
+ core.setOutput("version", version)
90
+ - name: Get release notes
91
+ id: release_notes
92
+ uses: actions/github-script@v2
93
+ with:
94
+ github-token: ${{ secrets.GITHUB_TOKEN }}
95
+ script: |
96
+ // Get contents of PR description
97
+ const prBody = context.payload.pull_request.body
98
+ // Parse lines of description
99
+ const prBodyLines = prBody.split('\n').map(x => x.trim()).filter(Boolean)
100
+ // Detect Release Notes
101
+ const releaseNotesStartIdx = prBodyLines.findIndex(line => line.match(/^<summary>release.*$/i))
102
+ const releaseNotesEndIdx = prBodyLines.findIndex(line => line.match(/^\<\/details>\s*$/i))
103
+ if (!releaseNotesStartIdx || !releaseNotesEndIdx) core.setFailed('Unable to parse release notes. Ensure release notes are included within the pull request description.')
104
+ // Extract release notes
105
+ const releaseNotes = Array.from({
106
+ length: releaseNotesEndIdx - releaseNotesStartIdx - 1
107
+ })
108
+ .map((_, i) => i + releaseNotesStartIdx + 1)
109
+ .map(idx => prBodyLines[idx])
110
+ .join('\n')
111
+ if (!releaseNotes.length || releaseNotes.startsWith('<!--')) return core.setFailed('Cannot find release notes associated with this pull request!')
112
+ core.setOutput("releaseNotes", releaseNotes)
113
+ # release_package:
114
+ # name: Publish package
115
+ # runs-on: ubuntu-latest
116
+ # needs: [scan_changed_packages, verify_description]
117
+ # if: ${{ needs.scan_changed_packages.outputs.packageName != 'N/A' && github.event.action == 'closed' && github.event.pull_request.merged == true }}
118
+ # steps:
119
+ # - uses: actions/checkout@v2
120
+ # with:
121
+ # fetch-depth: 0
122
+ # - run: git checkout master
123
+ # - name: Setup Node.js
124
+ # uses: actions/setup-node@v1
125
+ # with:
126
+ # node-version: "12.x"
127
+ # registry-url: "https://registry.npmjs.org"
128
+ # - run: npm ci --ignore-scripts
129
+ # env:
130
+ # NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
131
+ # - run: npm run vercel-build
132
+ # - name: Configure git credentials
133
+ # run: |
134
+ # git config --global user.email "mktg-dev-github-bot@hashicorp.com"
135
+ # git config --global user.name "HashiBot Web"
136
+ # - name: Tag major version
137
+ # if: ${{ needs.verify_description.outputs.version == 'Major'}}
138
+ # run: |
139
+ # echo 'VERSION<<EOF' >> $GITHUB_ENV
140
+ # ./node_modules/.bin/lerna version major --yes | jq -Rsr 'split(" => ") | .[1] | gsub("[\\n\\t]"; "")' >> $GITHUB_ENV
141
+ # echo 'EOF' >> $GITHUB_ENV
142
+ # env:
143
+ # NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
144
+ # - name: Tag minor version
145
+ # if: ${{ needs.verify_description.outputs.version == 'Minor'}}
146
+ # run: |
147
+ # echo 'VERSION<<EOF' >> $GITHUB_ENV
148
+ # ./node_modules/.bin/lerna version minor --yes | jq -Rsr 'split(" => ") | .[1] | gsub("[\\n\\t]"; "")' >> $GITHUB_ENV
149
+ # echo 'EOF' >> $GITHUB_ENV
150
+ # env:
151
+ # NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
152
+ # - name: Tag patch version
153
+ # if: ${{ needs.verify_description.outputs.version == 'Patch'}}
154
+ # run: |
155
+ # echo 'VERSION<<EOF' >> $GITHUB_ENV
156
+ # ./node_modules/.bin/lerna version patch --yes | jq -Rsr 'split(" => ") | .[1] | gsub("[\\n\\t]"; "")' >> $GITHUB_ENV
157
+ # echo 'EOF' >> $GITHUB_ENV
158
+ # env:
159
+ # NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
160
+ # - name: Print version
161
+ # run: echo $VERSION
162
+ # - name: Create GitHub release
163
+ # uses: actions/github-script@v2
164
+ # with:
165
+ # github-token: ${{ secrets.GITHUB_TOKEN }}
166
+ # script: |
167
+ # github.repos.createRelease({
168
+ # owner: context.payload.repository.owner.login,
169
+ # repo: context.payload.repository.name,
170
+ # tag_name: `${process.env.PACKAGE_NAME}@${process.env.VERSION}`,
171
+ # body: process.env.RELEASE_NOTES,
172
+ # draft: false,
173
+ # prerelease: false,
174
+ # });
175
+ # env:
176
+ # PACKAGE_NAME: ${{ needs.scan_changed_packages.outputs.packageName }}
177
+ # RELEASE_NOTES: ${{ needs.verify_description.outputs.releaseNotes }}
178
+ # - name: Publish package
179
+ # run: ./node_modules/.bin/lerna publish from-package --yes
180
+ # env:
181
+ # NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
package/README.md ADDED
@@ -0,0 +1,79 @@
1
+ # HashiCorp React Components
2
+
3
+ This project is a [lerna](https://github.com/lerna/lerna) monorepo containing a library of react components that are shared between multiple HashiCorp web properties. It also includes a component playground that uses [swingset](https://github.com/hashicorp/swingset) to create a space where component authors and contributors can experiment with and quickly iterate on component design and functionality.
4
+
5
+ ## Usage
6
+
7
+ - **Getting Started:** Run `npm i` to install base-level dependencies, then follow with `npm run bootstrap` to install dependencies for each component in the `packages` directory.
8
+ - **Running the Playground:** Run `npm start` - it will start a dev server which can be viewed at `http://localhost:3000`.
9
+ - **Running Tests:**: Run `npm t` to execute the tests. To run watch mode on tests, `npm run test:watch` - this is helpful during development.
10
+
11
+ The `packages` directory contains all the individual components. Let's talk about some of the most important files:
12
+
13
+ - `index.jsx`: primary export of the component itself
14
+ - `index.test.js`: tests for the component, run using [jest](https://jestjs.io/)
15
+ - `docs.mdx`: documentation for the component, see [swingset docs](https://github.com/hashicorp/swingset#usage) for more details on the format
16
+ - `props.js`: information about the component's props, see [swingset docs](https://github.com/hashicorp/swingset#props) for more details on the format
17
+
18
+ ## Publishing Packages
19
+
20
+ We manage and distribute packages to [`npm`](https://www.npmjs.com/) using [Lerna](https://lerna.js.org/). Each component is independently published and versioned.
21
+
22
+ ### Prerequisites
23
+
24
+ In order to publish packages, you must:
25
+
26
+ 1. Be added to the HashiCorp organization on `npm`
27
+ 2. [Enable 2-factor authentication](https://docs.npmjs.com/configuring-two-factor-authentication) on your npm account
28
+ 3. Log into to `npm` in your CLI with [`npm login`](https://docs.npmjs.com/cli/adduser)
29
+
30
+ If you have not done any of these steps, the publish script will fail.
31
+
32
+ ### Publishing `--canary` releases
33
+
34
+ Canary releases allow us to publish and test in-progress changes to components.
35
+
36
+ ```
37
+ npm run release:canary
38
+ ```
39
+
40
+ You can consume pre-releases with something like `npm install @hashicorp/react-package-name@next`. Canary releases should only be used in staging contexts, not production.
41
+
42
+ By default, `npm run release:canary` will publish a pre-patch canary release. If you're working on feature changes or breaking changes, you'll likely want to run the appropriate versioning command within the package folder before running `npm run release:canary`. This also helps signal the versioning intent to reviewers.
43
+
44
+ **Further details**: `npm run release:canary` will publish any changed packages and their dependencies. It tags the release with the `@next` dist-tag. It also uses [Lerna's `--canary` option](https://github.com/lerna/lerna/tree/master/commands/publish#--canary) to avoid version collisions across branches.
45
+
46
+ ### Publishing Production Releases
47
+
48
+ Production releases should only be published off of `master`.
49
+
50
+ ```sh
51
+ npm run release
52
+ ```
53
+
54
+ Any production releases should be **immediately followed up by bumping the updated package** in any consuming projects.
55
+
56
+ For most web-components packages, this means checking the `hashicorp-www-next` repo for Dependabot PRs to bump the package in question. You can view open Dependabot PRs on `hashicorp-www-next` using [the PR view with the `author:app/dependabot-preview` filter applied](https://github.com/hashicorp/hashicorp-www-next/pulls/app%2Fdependabot-preview).
57
+
58
+ ### Oh no! I got a 401 and now my packages are like half-published
59
+
60
+ The current workaround is not ideal, but should completely fix the issue. Definitely reach out if you need assistance, as almost everyone on the team has run into this:
61
+
62
+ 1. **Remove the "Publish" commit**. The "Publish" commit will most likely be your most recent commit, in which case the command below can be used. **These commands rewrite git history, so use caution!**
63
+ ```sh
64
+ git reset --hard HEAD^ # reset the previous commit
65
+ git push origin master --force-with-lease # push new history
66
+ ```
67
+ 1. **Delete the tags** that point to the deleted publish commit
68
+ ```sh
69
+ git tag --delete {tagname} # delete the local tag
70
+ git push --delete origin {tagname} # delete the remote tag
71
+ ```
72
+ For example:
73
+ ```sh
74
+ git tag --delete @hashicorp/react-secondary-nav@2.1.0
75
+ git push --delete origin @hashicorp/react-secondary-nav@2.1.0
76
+ ```
77
+ If multiple packages were published, you'll need to delete tags for each individual package.
78
+
79
+ Now everything should be reset to its state prior to the publish failure.
@@ -0,0 +1,6 @@
1
+ export default function expectToThrow(fn, throwResult) {
2
+ jest.spyOn(console, 'error')
3
+ console.error.mockImplementation(() => {})
4
+ expect(fn).toThrow(throwResult)
5
+ console.error.mockRestore()
6
+ }
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom/extend-expect'
@@ -0,0 +1 @@
1
+ module.exports = {}
@@ -0,0 +1 @@
1
+ module.exports = {}
@@ -0,0 +1 @@
1
+ module.exports = {}
@@ -0,0 +1,5 @@
1
+ // This is here for jest, it's not needed for nextjs as its the default
2
+
3
+ module.exports = {
4
+ presets: ['next/babel'],
5
+ }
package/jest.config.js ADDED
@@ -0,0 +1,13 @@
1
+ module.exports = {
2
+ moduleNameMapper: {
3
+ '\\.module.css$': '<rootDir>/__test-helpers/mocks/css-module-mock.js',
4
+ '\\.graphql$': '<rootDir>/__test-helpers/mocks/graphql-fragment-mock.js',
5
+ '\\.svg(?:\\?.*)*$': '<rootDir>/__test-helpers/mocks/svg-mock.js',
6
+ },
7
+ transformIgnorePatterns: [
8
+ '/node_modules/(?!@hashicorp/react-)',
9
+ '\\.pnp\\.[^\\/]+$',
10
+ ],
11
+ verbose: true,
12
+ setupFilesAfterEnv: ['<rootDir>/__test-helpers/extend-expect.js'],
13
+ }
package/lerna.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "lerna": "3.22.1",
3
+ "packages": ["packages/*"],
4
+ "version": "independent",
5
+ "command": {
6
+ "publish": {
7
+ "ignoreChanges": [
8
+ "*.test.js",
9
+ "props.js",
10
+ "docs.mdx",
11
+ "README.md",
12
+ "package-lock.json"
13
+ ]
14
+ }
15
+ }
16
+ }
package/next.config.js ADDED
@@ -0,0 +1,14 @@
1
+ const withHashicorp = require('@hashicorp/nextjs-scripts')
2
+ const withSwingset = require('swingset')
3
+
4
+ module.exports = withHashicorp({
5
+ transpileModules: [
6
+ 'swingset',
7
+ '@hashicorp/react-.*',
8
+ '@hashicorp/nextjs-scripts',
9
+ ],
10
+ })(
11
+ withSwingset({
12
+ componentsRoot: 'packages/*',
13
+ })({ svgo: { plugins: [{ removeViewBox: false }] } })
14
+ )
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@hashicorp/react-components",
3
+ "version": "0.0.0",
4
+ "dependencies": {
5
+ "@hashicorp/mktg-global-styles": "^2.0.0",
6
+ "@hashicorp/nextjs-scripts": "^13.2.0",
7
+ "next": "9.5.5",
8
+ "next-remote-watch": "^0.2.0",
9
+ "react": "16.13.1",
10
+ "react-dom": "16.13.1",
11
+ "swingset": "^0.4.2"
12
+ },
13
+ "devDependencies": {
14
+ "@testing-library/jest-dom": "^5.11.5",
15
+ "@testing-library/react": "^11.1.1",
16
+ "jest": "^26.6.3",
17
+ "lerna": "^3.22.1",
18
+ "regenerator-runtime": "^0.13.7"
19
+ },
20
+ "scripts": {
21
+ "bootstrap": "lerna bootstrap",
22
+ "release": "npm run release:check-branch && npm run release:check-auth && lerna publish",
23
+ "release:canary": "npm run release:check-auth && lerna publish --dist-tag=next --canary",
24
+ "release:check-auth": "./scripts/release-check-npm-auth.sh",
25
+ "release:check-branch": "./scripts/release-check-branch.sh",
26
+ "start": "next-remote-watch \"./packages/*/{docs.mdx,props.js}\"",
27
+ "test": "jest",
28
+ "test:watch": "jest --watch",
29
+ "vercel-build": "npm run bootstrap && next build"
30
+ }
31
+ }