@hashicorp/react-components 0.0.0-canary.57d393c

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 (149) 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 +3 -0
  5. package/global.d.ts +6 -0
  6. package/package.json +31 -0
  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/src/components/consent-manager/README.md +73 -0
  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 +6 -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/next-steps/index.tsx +143 -0
  101. package/src/components/next-steps/style.module.css +270 -0
  102. package/src/components/next-steps/types.ts +63 -0
  103. package/src/components/product-badge/index.test.tsx +11 -0
  104. package/src/components/product-badge/index.tsx +42 -0
  105. package/src/components/product-badge/style.module.css +76 -0
  106. package/src/components/products-used/index.tsx +84 -0
  107. package/src/components/products-used/style.module.css +87 -0
  108. package/src/components/products-used/types.ts +31 -0
  109. package/src/components/related-content/index.test.tsx +74 -0
  110. package/src/components/related-content/index.tsx +56 -0
  111. package/src/components/related-content/style.module.css +89 -0
  112. package/src/components/related-content/types.ts +21 -0
  113. package/src/components/subnav/helpers/areBasePathsMatching.ts +13 -0
  114. package/src/components/subnav/helpers/traverse/index.ts +42 -0
  115. package/src/components/subnav/helpers/useHeightRef.ts +42 -0
  116. package/src/components/subnav/helpers/useNavRef.ts +30 -0
  117. package/src/components/subnav/helpers/useOverflowRef.ts +85 -0
  118. package/src/components/subnav/helpers/useStuckRef.ts +51 -0
  119. package/src/components/subnav/index.tsx +199 -0
  120. package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.test.ts +26 -0
  121. package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.ts +22 -0
  122. package/src/components/subnav/partials/CtaLinks/github-stars-link/index.tsx +87 -0
  123. package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.test.ts +29 -0
  124. package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.ts +32 -0
  125. package/src/components/subnav/partials/CtaLinks/github-stars-link/style.module.css +85 -0
  126. package/src/components/subnav/partials/CtaLinks/icons/github-logo.js +20 -0
  127. package/src/components/subnav/partials/CtaLinks/icons/github.svg.js +7 -0
  128. package/src/components/subnav/partials/CtaLinks/icons/star.js +20 -0
  129. package/src/components/subnav/partials/CtaLinks/index.tsx +131 -0
  130. package/src/components/subnav/partials/CtaLinks/style.module.css +45 -0
  131. package/src/components/subnav/partials/DropdownTrigger/index.tsx +35 -0
  132. package/src/components/subnav/partials/DropdownTrigger/style.module.css +36 -0
  133. package/src/components/subnav/partials/MenuItemsDefault/index.tsx +151 -0
  134. package/src/components/subnav/partials/MenuItemsDefault/style.module.css +91 -0
  135. package/src/components/subnav/partials/MenuItemsOverflow/index.tsx +139 -0
  136. package/src/components/subnav/partials/MenuItemsOverflow/style.module.css +82 -0
  137. package/src/components/subnav/partials/TitleLink/index.tsx +113 -0
  138. package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-dark.ts +9 -0
  139. package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-light.ts +9 -0
  140. package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-dark.ts +23 -0
  141. package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-light.ts +23 -0
  142. package/src/components/subnav/partials/TitleLink/style.module.css +43 -0
  143. package/src/components/subnav/partials/nav-item-text/index.tsx +37 -0
  144. package/src/components/subnav/partials/nav-item-text/style.module.css +15 -0
  145. package/src/components/subnav/style.module.css +68 -0
  146. package/src/components/subnav/subnav-consts.ts +1 -0
  147. package/src/components/subnav/theme.module.css +50 -0
  148. package/tsconfig.json +14 -0
  149. package/vitest.config.mts +12 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ import classNames from 'classnames'
7
+ import React from 'react'
8
+ import s from './style.module.css'
9
+
10
+ /**
11
+ *
12
+ * A span of styled text with
13
+ * an active state that adds a thick
14
+ * bottom border.
15
+ *
16
+ */
17
+ function NavItemText({
18
+ isActive,
19
+ text,
20
+ }: {
21
+ /** If true, item will be rendered with a thick bottom border below the text. */
22
+ isActive?: boolean
23
+ /** Plain text to render within the styled <span /> */
24
+ text: string
25
+ }): React.ReactElement {
26
+ return (
27
+ <span
28
+ className={classNames(s.root, {
29
+ [s.isActive]: isActive,
30
+ })}
31
+ >
32
+ {text}
33
+ </span>
34
+ )
35
+ }
36
+
37
+ export default NavItemText
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ /* Note: consumes from theme.module.css, as marked */
7
+
8
+ .root {
9
+ color: var(--menu-item-text-color); /* from theme.module.css */
10
+ position: relative;
11
+
12
+ &.isActive {
13
+ color: var(--menu-item-text-color-active);
14
+ }
15
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ /* Note: consumes from theme.module.css, as marked */
7
+
8
+ .root {
9
+ position: sticky;
10
+ top: -1px;
11
+ z-index: 900;
12
+ background: var(--background-color); /* from theme.module.css */
13
+ border-top: 1px solid var(--border-color); /* from theme.module.css */
14
+ border-bottom: 1px solid transparent;
15
+ transition: border-bottom-color 0.8s;
16
+
17
+ &.isSticky {
18
+ border-bottom-color: var(--border-color); /* from theme.module.css */
19
+ }
20
+
21
+ /*
22
+ * About this selector:
23
+ * `& ~ *` finds all elements after the navigation.
24
+ * `:target` finds the active permalink on the page.
25
+ *
26
+ * About this style:
27
+ * `var(--subnav-height, 64px)` adjusts the scroll to account for the
28
+ * navigation. `0.5em` further adjusts the scroll to give the permalink
29
+ * breathing room.
30
+ *
31
+ * See: https://developer.mozilla.org/en-US/docs/Web/CSS/:target
32
+ * See: https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-margin-top
33
+ */
34
+ & ~ * :target {
35
+ scroll-margin-top: calc(var(--subnav-height, 64px) + 0.5em);
36
+ }
37
+
38
+ @media print {
39
+ display: none;
40
+ }
41
+ }
42
+
43
+ .subnavInnerRoot {
44
+ display: grid;
45
+ }
46
+
47
+ .subnavInner {
48
+ display: grid;
49
+ grid-template-columns: minmax(max-content, 1fr) min-content;
50
+ align-items: center;
51
+ justify-content: space-between;
52
+ min-height: 62px;
53
+ list-style: none;
54
+
55
+ &.hasOverflow {
56
+ display: flex;
57
+ }
58
+
59
+ &.notConstrained {
60
+ /* This padding should always match the horizontal padding of the main nav */
61
+ padding: 0 var(--hdsplus-spacing-05);
62
+ }
63
+ }
64
+
65
+ .subNavRight {
66
+ display: flex;
67
+ align-items: center;
68
+ }
@@ -0,0 +1 @@
1
+ export const THEMES = ['light', 'dark'] as const
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ /*
7
+ Theme settings.
8
+ Consumed in nearly all CSS files in this component,
9
+ including in /partials.
10
+ */
11
+
12
+ .light {
13
+ /* main */
14
+ --background-color: var(--white);
15
+ --border-color: var(--gray-5);
16
+ --dropdown-background-color: var(--white);
17
+
18
+ /* title or logo link */
19
+ --title-text-color: var(--gray-1);
20
+
21
+ /* github-stars-link */
22
+ --gh-stars-icon-color: var(--black);
23
+ --gh-stars-scrim-color: rgba(0, 0, 0, 0.1);
24
+
25
+ /* menu items */
26
+ --menu-item-text-color: #3B3D45;
27
+ --menu-item-text-color-active: #0C0C0E;
28
+ --menu-item-heading-text-color: var(--gray-3);
29
+ --menu-item-hover-color: #F1F2F3;
30
+ }
31
+
32
+ .dark {
33
+ /* main */
34
+ --background-color: var(--black);
35
+ --border-color: var(--gray-2);
36
+ --dropdown-background-color: var(--gray-1);
37
+
38
+ /* title or logo link */
39
+ --title-text-color: var(--white);
40
+
41
+ /* github-stars-link */
42
+ --gh-stars-icon-color: var(--white);
43
+ --gh-stars-scrim-color: rgba(255, 255, 255, 0.15);
44
+
45
+ /* menu items */
46
+ --menu-item-text-color: #D5D7DB;
47
+ --menu-item-text-color-active: #EFEFF1;
48
+ --menu-item-heading-text-color: var(--gray-4);
49
+ --menu-item-hover-color: #1E222A;
50
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "../../base.tsconfig.json",
3
+ "compilerOptions": {
4
+ "baseUrl": ".",
5
+ "plugins": [
6
+ {
7
+ "name": "next"
8
+ }
9
+ ],
10
+ "types": ["vitest/globals", "@testing-library/jest-dom"]
11
+ },
12
+ "include": ["./**/*"],
13
+ "exclude": ["node_modules"]
14
+ }
@@ -0,0 +1,12 @@
1
+ import { defineConfig, configDefaults } from 'vitest/config'
2
+ import react from '@vitejs/plugin-react'
3
+
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ test: {
7
+ globals: true,
8
+ environment: 'jsdom',
9
+ exclude: [...configDefaults.exclude, 'src/__tests__/e2e'],
10
+ setupFiles: ['.test/setup-vitest.js'],
11
+ },
12
+ })