@hashicorp/react-components 0.0.0-nightly.97eb452 → 0.0.0-nightly.9aa5827

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 (143) hide show
  1. package/.eslintrc.js +1 -2
  2. package/.stylelintrc.js +1 -1
  3. package/README.md +1 -1
  4. package/package.json +3 -8
  5. package/postcss.config.js +1 -1
  6. package/src/components/nav-panel/components/flight-icon/index.tsx +51 -0
  7. package/src/components/nav-panel/components/flight-icon/style.module.css +3 -0
  8. package/src/components/nav-panel/components/link/index.tsx +127 -0
  9. package/src/components/nav-panel/components/link/style.module.css +64 -0
  10. package/src/components/nav-panel/components/link-list/index.tsx +13 -65
  11. package/src/components/nav-panel/components/link-list/style.module.css +1 -50
  12. package/src/components/nav-panel/components/panel/column/style.module.css +2 -2
  13. package/src/components/nav-panel/components/panel/root/style.module.css +5 -5
  14. package/src/components/nav-panel/components/promo/index.tsx +31 -11
  15. package/src/components/nav-panel/components/promo/style.module.css +26 -12
  16. package/src/components/nav-panel/components/text/index.tsx +34 -0
  17. package/src/components/nav-panel/product-panel/index.tsx +54 -17
  18. package/src/components/nav-panel/product-panel/style.module.css +116 -36
  19. package/src/components/nav-panel/standard-panel/index.tsx +3 -0
  20. package/src/components/nav-panel/standard-panel/style.module.css +2 -2
  21. package/src/lib/get-localized-link-props/index.test.ts +30 -0
  22. package/src/lib/get-localized-link-props/index.ts +45 -0
  23. package/src/lib/parse-url/index.test.ts +30 -1
  24. package/src/lib/parse-url/index.ts +71 -8
  25. package/src/lib/send-posthog-event/index.ts +22 -0
  26. package/src/lib/supported-locales/index.ts +10 -0
  27. package/src/lib/track-nav-click-event/index.ts +4 -4
  28. package/src/components/actions/index.tsx +0 -107
  29. package/src/components/actions/style.module.css +0 -28
  30. package/src/components/actions/types.ts +0 -73
  31. package/src/components/call-to-action/index.tsx +0 -205
  32. package/src/components/call-to-action/styles/variant-centered.module.css +0 -93
  33. package/src/components/call-to-action/styles/variant-compact-grid.module.css +0 -88
  34. package/src/components/call-to-action/styles/variant-compact.module.css +0 -91
  35. package/src/components/call-to-action/styles/variant-links.module.css +0 -85
  36. package/src/components/card/README.md +0 -11
  37. package/src/components/card/card.tsx +0 -45
  38. package/src/components/card/index.test.tsx +0 -69
  39. package/src/components/card/index.tsx +0 -14
  40. package/src/components/card/newsroom-card/index.test.tsx +0 -39
  41. package/src/components/card/newsroom-card/index.tsx +0 -37
  42. package/src/components/card/newsroom-card/style.module.css +0 -12
  43. package/src/components/card/partner-card/index.test.tsx +0 -57
  44. package/src/components/card/partner-card/index.tsx +0 -69
  45. package/src/components/card/partner-card/style.module.css +0 -24
  46. package/src/components/card/person-card/index.test.tsx +0 -71
  47. package/src/components/card/person-card/index.tsx +0 -93
  48. package/src/components/card/person-card/style.module.css +0 -33
  49. package/src/components/card/primitives.tsx +0 -177
  50. package/src/components/card/promo-card/index.tsx +0 -51
  51. package/src/components/card/resource-card/index.test.tsx +0 -48
  52. package/src/components/card/resource-card/index.tsx +0 -37
  53. package/src/components/card/style.module.css +0 -145
  54. package/src/components/card/types.ts +0 -66
  55. package/src/components/card/unified-card/index.spec.tsx +0 -40
  56. package/src/components/card/unified-card/index.tsx +0 -58
  57. package/src/components/intro/index.tsx +0 -82
  58. package/src/components/intro/style.module.css +0 -67
  59. package/src/components/intro/types.ts +0 -44
  60. package/src/components/marketo-form/CHANGELOG.md +0 -122
  61. package/src/components/marketo-form/README.md +0 -1
  62. package/src/components/marketo-form/contexts/FormMetadata.ts +0 -13
  63. package/src/components/marketo-form/docs.mdx +0 -197
  64. package/src/components/marketo-form/fixtures/index.ts +0 -185
  65. package/src/components/marketo-form/form/index.tsx +0 -371
  66. package/src/components/marketo-form/index.test.tsx +0 -320
  67. package/src/components/marketo-form/index.ts +0 -11
  68. package/src/components/marketo-form/package.original.json +0 -30
  69. package/src/components/marketo-form/partials/error-message/index.tsx +0 -12
  70. package/src/components/marketo-form/partials/error-message/style.module.css +0 -13
  71. package/src/components/marketo-form/partials/field/index.tsx +0 -90
  72. package/src/components/marketo-form/partials/field-wrapper/index.tsx +0 -26
  73. package/src/components/marketo-form/partials/fields/checkbox-field/index.tsx +0 -32
  74. package/src/components/marketo-form/partials/fields/email-field/index.tsx +0 -35
  75. package/src/components/marketo-form/partials/fields/form-page-url-field/index.tsx +0 -23
  76. package/src/components/marketo-form/partials/fields/hidden-field/index.tsx +0 -38
  77. package/src/components/marketo-form/partials/fields/htmltext-field/index.tsx +0 -21
  78. package/src/components/marketo-form/partials/fields/htmltext-field/style.module.css +0 -18
  79. package/src/components/marketo-form/partials/fields/name-field/index.tsx +0 -19
  80. package/src/components/marketo-form/partials/fields/name-field/style.module.css +0 -13
  81. package/src/components/marketo-form/partials/fields/radio-buttons-field/index.tsx +0 -48
  82. package/src/components/marketo-form/partials/fields/select-field/index.tsx +0 -39
  83. package/src/components/marketo-form/partials/fields/select-field/style.module.css +0 -5
  84. package/src/components/marketo-form/partials/fields/telephone-field/index.tsx +0 -30
  85. package/src/components/marketo-form/partials/fields/text-field/index.tsx +0 -30
  86. package/src/components/marketo-form/partials/fields/textarea-field/index.tsx +0 -29
  87. package/src/components/marketo-form/partials/label/index.tsx +0 -24
  88. package/src/components/marketo-form/partials/label/style.module.css +0 -12
  89. package/src/components/marketo-form/partials/visibility-rule/index.tsx +0 -84
  90. package/src/components/marketo-form/props.js +0 -66
  91. package/src/components/marketo-form/server/api-routes.ts +0 -109
  92. package/src/components/marketo-form/server/client.ts +0 -98
  93. package/src/components/marketo-form/server/index.ts +0 -8
  94. package/src/components/marketo-form/types.ts +0 -268
  95. package/src/components/marketo-form/utils.test.tsx +0 -103
  96. package/src/components/marketo-form/utils.ts +0 -449
  97. package/src/components/next-steps/index.tsx +0 -138
  98. package/src/components/next-steps/style.module.css +0 -270
  99. package/src/components/next-steps/types.ts +0 -63
  100. package/src/components/product-badge/index.test.tsx +0 -11
  101. package/src/components/product-badge/index.tsx +0 -42
  102. package/src/components/product-badge/style.module.css +0 -76
  103. package/src/components/products-used/index.tsx +0 -84
  104. package/src/components/products-used/style.module.css +0 -87
  105. package/src/components/products-used/types.ts +0 -31
  106. package/src/components/related-content/index.test.tsx +0 -74
  107. package/src/components/related-content/index.tsx +0 -56
  108. package/src/components/related-content/style.module.css +0 -89
  109. package/src/components/related-content/types.ts +0 -21
  110. package/src/components/subnav/helpers/areBasePathsMatching.ts +0 -13
  111. package/src/components/subnav/helpers/traverse/index.ts +0 -42
  112. package/src/components/subnav/helpers/useHeightRef.ts +0 -42
  113. package/src/components/subnav/helpers/useNavRef.ts +0 -30
  114. package/src/components/subnav/helpers/useOverflowRef.ts +0 -85
  115. package/src/components/subnav/helpers/useStuckRef.ts +0 -51
  116. package/src/components/subnav/index.tsx +0 -203
  117. package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.test.ts +0 -26
  118. package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.ts +0 -22
  119. package/src/components/subnav/partials/CtaLinks/github-stars-link/index.tsx +0 -87
  120. package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.test.ts +0 -29
  121. package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.ts +0 -32
  122. package/src/components/subnav/partials/CtaLinks/github-stars-link/style.module.css +0 -81
  123. package/src/components/subnav/partials/CtaLinks/icons/github-logo.js +0 -20
  124. package/src/components/subnav/partials/CtaLinks/icons/github.svg.js +0 -7
  125. package/src/components/subnav/partials/CtaLinks/icons/star.js +0 -20
  126. package/src/components/subnav/partials/CtaLinks/index.tsx +0 -131
  127. package/src/components/subnav/partials/CtaLinks/style.module.css +0 -45
  128. package/src/components/subnav/partials/DropdownTrigger/index.tsx +0 -35
  129. package/src/components/subnav/partials/DropdownTrigger/style.module.css +0 -39
  130. package/src/components/subnav/partials/MenuItemsDefault/index.tsx +0 -158
  131. package/src/components/subnav/partials/MenuItemsDefault/style.module.css +0 -104
  132. package/src/components/subnav/partials/MenuItemsOverflow/index.tsx +0 -143
  133. package/src/components/subnav/partials/MenuItemsOverflow/style.module.css +0 -88
  134. package/src/components/subnav/partials/TitleLink/index.tsx +0 -113
  135. package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-dark.ts +0 -10
  136. package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-light.ts +0 -10
  137. package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-dark.ts +0 -23
  138. package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-light.ts +0 -23
  139. package/src/components/subnav/partials/TitleLink/style.module.css +0 -43
  140. package/src/components/subnav/partials/nav-item-text/index.tsx +0 -37
  141. package/src/components/subnav/partials/nav-item-text/style.module.css +0 -13
  142. package/src/components/subnav/style.module.css +0 -66
  143. package/src/components/subnav/subnav-consts.ts +0 -1
@@ -1,66 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
-
6
- import type { ReactNode } from 'react'
7
- import type { ProductBadgeProps } from '../product-badge'
8
- import type { NewsroomCardProps } from './newsroom-card'
9
- import type { PersonCardProps } from './person-card'
10
- import type { ResourceCardProps } from './resource-card'
11
- import type { UnifiedCardProps } from './unified-card'
12
-
13
- export interface BaseCardProps
14
- extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
15
- withArrow?: boolean
16
- heading: string
17
- link: string
18
- clickHandler?: () => void
19
- isExternal?: boolean
20
- hasBorder?: boolean
21
- }
22
-
23
- export interface CardPrimitiveProps extends BaseCardProps {
24
- children: ReactNode
25
- }
26
-
27
- export interface ThumbnailProps {
28
- src: string
29
- alt: string
30
- }
31
-
32
- export interface MetaProps {
33
- items: Array<string | ReactNode>
34
- }
35
-
36
- export interface ContentProps {
37
- children: ReactNode
38
- }
39
-
40
- export interface HeadingProps {
41
- as?: 'h2' | 'h3' | 'h4'
42
- children: string
43
- }
44
-
45
- export interface ProductBadgesProps {
46
- badges: Array<ProductBadgeProps['productName']>
47
- children?: ReactNode
48
- }
49
-
50
- export interface DescriptionProps {
51
- children: string
52
- }
53
-
54
- export interface CardProps extends BaseCardProps {
55
- thumbnail?: ThumbnailProps
56
- meta?: MetaProps['items']
57
- description?: DescriptionProps['children']
58
- productBadges?: ProductBadgesProps['badges']
59
- }
60
-
61
- export {
62
- NewsroomCardProps,
63
- PersonCardProps,
64
- ResourceCardProps,
65
- UnifiedCardProps,
66
- }
@@ -1,40 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
-
6
- import { render, screen } from '@testing-library/react'
7
- import { UnifiedCard, UnifiedCardProps } from '.'
8
-
9
- const defaultProps: UnifiedCardProps = {
10
- link: 'https://hashicorp.com',
11
- heading: 'Example heading',
12
- thumbnail: {
13
- src: 'https://www.datocms-assets.com/19447/1648680074-screenshot-2022-03-31-at-00-40-47.png',
14
- alt: 'HashiConf Europe 2022 Recap',
15
- },
16
- } as const
17
-
18
- describe(`<UnifiedCard />`, () => {
19
- it('should render the provided meta with a separator if n > 1', () => {
20
- const expectedMeta = ['Category', 'Hello']
21
- render(<UnifiedCard {...defaultProps} meta={expectedMeta} />)
22
-
23
- const metaElement = screen.getByTestId('wpl-card-meta')
24
-
25
- expectedMeta.forEach((item) => {
26
- expect(metaElement).toHaveTextContent(item)
27
- })
28
-
29
- expect(metaElement).toContainElement(screen.getByText('|'))
30
- })
31
-
32
- it('it should not render a separator if n === 1', () => {
33
- render(<UnifiedCard {...defaultProps} meta={['Category']} />)
34
- const metaElement = screen.getByTestId('wpl-card-meta')
35
-
36
- expect(metaElement).toContainElement(screen.getByText('Category'))
37
-
38
- expect(metaElement).not.toContainElement(screen.queryByText('|'))
39
- })
40
- })
@@ -1,58 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
-
6
- import type { ReactNode } from 'react'
7
- import Badge from '@hashicorp/react-hds/src/components/badge'
8
- import * as CardPrimitives from '../primitives'
9
- import type { CardProps } from '../types'
10
-
11
- export interface UnifiedCardProps extends CardProps {
12
- badges?: (string | [ReactNode, string])[]
13
- }
14
-
15
- export function UnifiedCard({
16
- heading,
17
- meta,
18
- link,
19
- productBadges,
20
- badges,
21
- thumbnail,
22
- withArrow = false,
23
- isExternal = false,
24
- className,
25
- 'aria-label': ariaLabel,
26
- }: UnifiedCardProps) {
27
- return (
28
- <CardPrimitives.Card
29
- heading={heading}
30
- link={link}
31
- withArrow={withArrow}
32
- isExternal={isExternal}
33
- className={className}
34
- aria-label={ariaLabel ?? heading}
35
- >
36
- {thumbnail ? <CardPrimitives.Thumbnail {...thumbnail} /> : null}
37
- <CardPrimitives.Content>
38
- {meta && meta.length > 0 ? <CardPrimitives.Meta items={meta} /> : null}
39
- <CardPrimitives.Heading>{heading}</CardPrimitives.Heading>
40
- {productBadges && productBadges?.length > 0 ? (
41
- <CardPrimitives.ProductBadges badges={productBadges}>
42
- {badges && badges.length > 0
43
- ? badges.map((badge, stableIdx) => {
44
- if (Array.isArray(badge)) {
45
- return (
46
- <Badge key={stableIdx} icon={badge[0]} text={badge[1]} />
47
- )
48
- }
49
-
50
- return <Badge key={stableIdx} text={badge} />
51
- })
52
- : null}
53
- </CardPrimitives.ProductBadges>
54
- ) : null}
55
- </CardPrimitives.Content>
56
- </CardPrimitives.Card>
57
- )
58
- }
@@ -1,82 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
-
6
- import classNames from 'classnames'
7
- import type { IntroProps } from './types'
8
- import Actions from '../actions'
9
- import s from './style.module.css'
10
-
11
- export default function Intro({
12
- appearance = 'light',
13
- textAlignment = 'left',
14
- eyebrow,
15
- heading,
16
- headingElement: HeadingElement = 'h2',
17
- headingSize = 2,
18
- description,
19
- actions,
20
- }: IntroProps) {
21
- const headingSizeClassname = `g-type-display-${headingSize}`
22
- const descriptionSizeClassname =
23
- headingSize === 1 ? 'g-type-body-large' : 'g-type-body'
24
- const descriptionClassName = classNames(
25
- s.description,
26
- descriptionSizeClassname
27
- )
28
- return (
29
- <div
30
- className={classNames(s.intro, s[appearance], s[textAlignment])}
31
- data-testid="intro"
32
- >
33
- {eyebrow ? <p className={s.eyebrow}>{eyebrow}</p> : null}
34
- <HeadingElement className={classNames(s.heading, headingSizeClassname)}>
35
- {heading}
36
- </HeadingElement>
37
- <Description className={descriptionClassName}>{description}</Description>
38
- {actions && actions.ctas && actions.ctas.length > 0 ? (
39
- <div className={s.actions}>
40
- <Actions
41
- appearance={appearance}
42
- layout={actions.layout}
43
- alignment={textAlignment}
44
- theme={actions.theme}
45
- size={actions.size}
46
- ctas={actions.ctas}
47
- />
48
- </div>
49
- ) : null}
50
- </div>
51
- )
52
- }
53
-
54
- const containsHTML = (str: string) => /<[a-z][\s\S]*>/i.test(str)
55
-
56
- function Description({
57
- className,
58
- children,
59
- }: {
60
- className: string
61
- children: IntroProps['description']
62
- }) {
63
- // ReactNode
64
- if (typeof children === 'object') {
65
- return <div className={className}>{children}</div>
66
- }
67
-
68
- // HTML String
69
- if (typeof children === 'string' && containsHTML(children)) {
70
- return (
71
- <div
72
- dangerouslySetInnerHTML={{
73
- __html: children,
74
- }}
75
- className={className}
76
- />
77
- )
78
- }
79
-
80
- // String
81
- return <p className={className}>{children}</p>
82
- }
@@ -1,67 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
-
6
- .intro {
7
- position: relative;
8
- display: flex;
9
- flex-direction: column;
10
-
11
- &.center {
12
- text-align: center;
13
- align-items: center;
14
- }
15
- }
16
-
17
- .eyebrow {
18
- --color: var(--wpl-neutral-500);
19
-
20
- composes: hdsplus-typography-label from global;
21
- font-weight: var(--font-weight-bold);
22
- text-transform: uppercase;
23
- margin: 0 0 32px;
24
- color: var(--color);
25
-
26
- @nest .dark & {
27
- --color: var(--wpl-neutral-300);
28
- }
29
- }
30
-
31
- .heading {
32
- --color: var(--wpl-neutral-900);
33
-
34
- margin: 0;
35
- color: var(--color);
36
-
37
- @nest .dark & {
38
- --color: var(--wpl-neutral-0);
39
- }
40
- }
41
-
42
- .description {
43
- --color: var(--wpl-neutral-500);
44
-
45
- margin: 16px 0 0;
46
- color: var(--color);
47
-
48
- @nest .dark & {
49
- --color: var(--wpl-neutral-400);
50
- }
51
-
52
- & > * {
53
- color: inherit;
54
-
55
- &:first-child {
56
- margin-top: 0;
57
- }
58
-
59
- &:last-child {
60
- margin-bottom: 0;
61
- }
62
- }
63
- }
64
-
65
- .actions {
66
- margin-top: 32px;
67
- }
@@ -1,44 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
-
6
- import type { ActionsProps } from '../actions/types'
7
- import React from 'react'
8
-
9
- type WithOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
10
-
11
- export interface IntroProps {
12
- /**
13
- * Display intro on light or dark backgrounds.
14
- */
15
- appearance?: 'light' | 'dark'
16
- /**
17
- * Controls the text alignment rendering.
18
- */
19
- textAlignment?: 'left' | 'center'
20
- /**
21
- * Optional text displayed above the heading.
22
- */
23
- eyebrow?: string
24
- /**
25
- * Text displayed within the heading element.
26
- */
27
- heading: string
28
- /**
29
- * Controls which element the heading renders as.
30
- */
31
- headingElement?: 'h1' | 'h2' | 'h3' | 'h4'
32
- /**
33
- * Controls the size at which the heading is rendered.
34
- */
35
- headingSize?: 1 | 2 | 3
36
- /**
37
- * Text following the heading element.
38
- */
39
- description: string | React.ReactNode
40
- /**
41
- * Render CTAs following the description element.
42
- */
43
- actions?: WithOptional<ActionsProps, 'ctas'>
44
- }
@@ -1,122 +0,0 @@
1
- # @hashicorp/react-marketo-form
2
-
3
- ## 0.9.0
4
-
5
- ### Minor Changes
6
-
7
- - [#928](https://github.com/hashicorp/react-components/pull/928) [`cc787d0f`](https://github.com/hashicorp/react-components/commit/cc787d0f5c880fe5d569b68ea54d56e5bc1642b6) Thanks [@dstaley](https://github.com/dstaley)! - Add support for htmltext fields
8
-
9
- ### Patch Changes
10
-
11
- - [#972](https://github.com/hashicorp/react-components/pull/972) [`dbb75084`](https://github.com/hashicorp/react-components/commit/dbb75084839ef20949c37114ea3e58ebd955b33d) Thanks [@dstaley](https://github.com/dstaley)! - Remove content API
12
-
13
- ## 0.8.4
14
-
15
- ### Patch Changes
16
-
17
- - [#959](https://github.com/hashicorp/react-components/pull/959) [`2084dc74`](https://github.com/hashicorp/react-components/commit/2084dc74bb3390227011c9b2052b4ac393554b6e) Thanks [@dstaley](https://github.com/dstaley)! - Treat all-whitespace values as invalid
18
-
19
- ## 0.8.3
20
-
21
- ### Patch Changes
22
-
23
- - [#941](https://github.com/hashicorp/react-components/pull/941) [`855af8ac`](https://github.com/hashicorp/react-components/commit/855af8ac0cad8a89920b733c1f914d2dff91c391) Thanks [@BRKalow](https://github.com/BRKalow)! - Updates @hashicorp/platform-analytics to address type errors.
24
-
25
- - Updated dependencies [[`b4ac21ad`](https://github.com/hashicorp/react-components/commit/b4ac21adec2d76163e1f6a9c3ca5173440d4a934)]:
26
- - @hashicorp/react-form-fields@0.2.0
27
-
28
- ## 0.8.2
29
-
30
- ### Patch Changes
31
-
32
- - [#886](https://github.com/hashicorp/react-components/pull/886) [`cbb148e4`](https://github.com/hashicorp/react-components/commit/cbb148e409f362333e6e898b529cd5c92462b79c) Thanks [@dstaley](https://github.com/dstaley)! - Require emails to have domains
33
-
34
- ## 0.8.1
35
-
36
- ### Patch Changes
37
-
38
- - [#884](https://github.com/hashicorp/react-components/pull/884) [`d7a4fda2`](https://github.com/hashicorp/react-components/commit/d7a4fda22665ab92ad075c66ca11811b13d819ce) Thanks [@dstaley](https://github.com/dstaley)! - Explicitly set default values for hidden fields
39
-
40
- ## 0.8.0
41
-
42
- ### Minor Changes
43
-
44
- - [#857](https://github.com/hashicorp/react-components/pull/857) [`2dfb913c`](https://github.com/hashicorp/react-components/commit/2dfb913cde43b4354183bbd04e65975aadd995e5) Thanks [@dstaley](https://github.com/dstaley)! - Add support for Marketo-driven localization
45
-
46
- ### Patch Changes
47
-
48
- - Updated dependencies [[`3c65a8bf`](https://github.com/hashicorp/react-components/commit/3c65a8bf3a6699fe9fca4422f6ff04a26ffeefd4)]:
49
- - @hashicorp/react-form-fields@0.1.1
50
-
51
- ## 0.7.1
52
-
53
- ### Patch Changes
54
-
55
- - [#868](https://github.com/hashicorp/react-components/pull/868) [`10a7dc7f`](https://github.com/hashicorp/react-components/commit/10a7dc7f92b55533a8a0c0c0216999695b165913) Thanks [@dstaley](https://github.com/dstaley)! - - `MarketoForm` will now treat skipped records as errors, and correctly invoke any `onSubmitError` handlers.
56
- - Added a new `onSubmitStart` handler that's called as soon as the submission process begins.
57
-
58
- ## 0.7.0
59
-
60
- ### Minor Changes
61
-
62
- - [#816](https://github.com/hashicorp/react-components/pull/816) [`e6c258c8`](https://github.com/hashicorp/react-components/commit/e6c258c860adb36363827995cb89e54ea2b5f21e) Thanks [@dstaley](https://github.com/dstaley)! - Use @hashicorp/react-form-fields for base field inputs
63
-
64
- ## 0.6.0
65
-
66
- ### Minor Changes
67
-
68
- - [#832](https://github.com/hashicorp/react-components/pull/832) [`50fbf782`](https://github.com/hashicorp/react-components/commit/50fbf782f2e0c7640f2d26e4f07f0fe477bad245) Thanks [@dstaley](https://github.com/dstaley)! - Call segment.identify on form submissions
69
-
70
- ## 0.5.0
71
-
72
- ### Minor Changes
73
-
74
- - [#828](https://github.com/hashicorp/react-components/pull/828) [`bafded5c`](https://github.com/hashicorp/react-components/commit/bafded5c510546f1ea236e3455d7af8fb5060115) Thanks [@nandereck](https://github.com/nandereck)! - Allow for hidden autofill values to be passed through
75
-
76
- ## 0.4.0
77
-
78
- ### Minor Changes
79
-
80
- - [#815](https://github.com/hashicorp/react-components/pull/815) [`5850beac`](https://github.com/hashicorp/react-components/commit/5850beac3128d64d2b9853f023640d33461672e2) Thanks [@nandereck](https://github.com/nandereck)! - Surface field ID on the FieldWrapper component
81
-
82
- ## 0.3.2
83
-
84
- ### Patch Changes
85
-
86
- - [#791](https://github.com/hashicorp/react-components/pull/791) [`6bd4f1cb`](https://github.com/hashicorp/react-components/commit/6bd4f1cbf150b2f6238500004e00bd116c25a40a) Thanks [@dstaley](https://github.com/dstaley)! - Export Field component for external usage
87
-
88
- ## 0.3.1
89
-
90
- ### Patch Changes
91
-
92
- - [#802](https://github.com/hashicorp/react-components/pull/802) [`67020b77`](https://github.com/hashicorp/react-components/commit/67020b77bccd38298078d3b5e1fa8757a81e09d8) Thanks [@dstaley](https://github.com/dstaley)! - Throw error if form query parameter is missing
93
-
94
- ## 0.3.0
95
-
96
- ### Minor Changes
97
-
98
- - [`1125f588`](https://github.com/hashicorp/react-components/commit/1125f588137049b7c91b018342cc199da88d1e23) Thanks [@dstaley](https://github.com/dstaley)! - Report skipped records as errors
99
-
100
- ## 0.2.0
101
-
102
- ### Minor Changes
103
-
104
- - [#755](https://github.com/hashicorp/react-components/pull/755) [`e803cc00`](https://github.com/hashicorp/react-components/commit/e803cc00d473a6570328473dfb760c5b52a8b3b2) Thanks [@dstaley](https://github.com/dstaley)! - Update react-hook-form
105
-
106
- ## 0.1.2
107
-
108
- ### Patch Changes
109
-
110
- - [#745](https://github.com/hashicorp/react-components/pull/745) [`e8424612`](https://github.com/hashicorp/react-components/commit/e842461209fcebc5a940128dad1f0acaf8183780) Thanks [@dstaley](https://github.com/dstaley)! - Keep dirty values when resetting form
111
-
112
- ## 0.1.1
113
-
114
- ### Patch Changes
115
-
116
- - [#743](https://github.com/hashicorp/react-components/pull/743) [`cbbd5082`](https://github.com/hashicorp/react-components/commit/cbbd508249da7b7bf737ccafc9cfe679686b9c18) Thanks [@dstaley](https://github.com/dstaley)! - Correctly keep modified values when recalculating initial state
117
-
118
- ## 0.1.0
119
-
120
- ### Minor Changes
121
-
122
- - [#630](https://github.com/hashicorp/react-components/pull/630) [`fdccbcc9`](https://github.com/hashicorp/react-components/commit/fdccbcc99ed85aafbdc6af4442f482d6ce5820af) Thanks [@dstaley](https://github.com/dstaley)! - Initial release
@@ -1 +0,0 @@
1
- # @hashicorp/react-marketo-form
@@ -1,13 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
-
6
- 'use client'
7
-
8
- import { createContext } from 'react'
9
- import type { MarketoFormMetadata } from '../types'
10
-
11
- export const FormMetadataContext = createContext<MarketoFormMetadata | null>(
12
- null
13
- )
@@ -1,197 +0,0 @@
1
- ---
2
- componentName: 'MarketoForm'
3
- ---
4
-
5
- Renders a form from Marketo.
6
-
7
- <LiveComponent>
8
- {`<MarketoForm
9
- metadata={{
10
- result: [
11
- {
12
- id: 9999,
13
- name: "FORM - Contact Sales",
14
- description: "",
15
- createdAt: "2020-08-26T21:35:12Z+0000",
16
- updatedAt: "2022-11-11T01:39:32Z+0000",
17
- url: "https://app-ab32.marketo.com/#FO1307B2",
18
- status: "approved",
19
- theme: "simple",
20
- language: "English",
21
- locale: "en_US",
22
- progressiveProfiling: false,
23
- labelPosition: "left",
24
- fontFamily: "Helvetica",
25
- fontSize: "13px",
26
- folder: {
27
- type: "Folder",
28
- value: 32792,
29
- folderName: "01. In use forms",
30
- },
31
- knownVisitor: {
32
- type: "form",
33
- template: null,
34
- },
35
- thankYouList: [
36
- {
37
- followupType: "none",
38
- followupValue: null,
39
- default: true,
40
- },
41
- ],
42
- buttonLocation: 120,
43
- buttonLabel: "Submit",
44
- waitingLabel: "Please Wait",
45
- workSpaceId: 1,
46
- },
47
- ],
48
- }}
49
- fields={{
50
- result: [
51
- {
52
- id: "FirstName",
53
- label: "First Name:",
54
- dataType: "text",
55
- validationMessage: "This field is required.",
56
- required: true,
57
- visibilityRules: {
58
- ruleType: "alwaysShow",
59
- },
60
- },
61
- {
62
- id: "LastName",
63
- label: "Last Name:",
64
- dataType: "text",
65
- validationMessage: "This field is required.",
66
- required: true,
67
- visibilityRules: {
68
- ruleType: "alwaysShow",
69
- },
70
- },
71
- {
72
- id: "Email",
73
- label: "Business Email:",
74
- dataType: "email",
75
- validationMessage:
76
- "Must be valid email. <span class='mktoErrorDetail'>example@yourdomain.com</span>",
77
- required: true,
78
- visibilityRules: {
79
- ruleType: "alwaysShow",
80
- },
81
- },
82
- {
83
- id: "Company",
84
- label: "Company:",
85
- dataType: "text",
86
- validationMessage: "This field is required.",
87
- required: true,
88
- visibilityRules: {
89
- ruleType: "alwaysShow",
90
- },
91
- },
92
- {
93
- id: "FavoriteProduct",
94
- label: "Favorite HashiCorp Product",
95
- dataType: "select",
96
- required: true,
97
- validationMessage: "This field is required.",
98
- visibilityRules: {
99
- ruleType: "alwaysShow",
100
- },
101
- fieldMetaData: {
102
- values: [
103
- { label: "Terraform", value: "terraform" },
104
- { label: "Packer", value: "packer" },
105
- { label: "Consul", value: "consul" },
106
- { label: "Vault", value: "vault" },
107
- { label: "Boundary", value: "boundary" },
108
- { label: "Nomad", value: "nomad" },
109
- { label: "Waypoint", value: "waypoint" },
110
- { label: "Vagrant", value: "vagrant" },
111
- ],
112
- },
113
- },
114
- {
115
- id: "appendToNotes",
116
- label: "Comments",
117
- dataType: "textArea",
118
- required: false,
119
- validationMessage: "This field is required.",
120
- visibilityRules: {
121
- ruleType: "alwaysShow",
122
- },
123
- },
124
- {
125
- id: "Phone",
126
- label: "Phone:",
127
- dataType: "text",
128
- validationMessage: "This field is required.",
129
- required: false,
130
- visibilityRules: {
131
- ruleType: "show",
132
- rules: [
133
- {
134
- subjectField: "fastTracktoSales",
135
- operator: "is",
136
- values: ["yes"],
137
- altLabel: "Phone Number:",
138
- },
139
- ],
140
- },
141
- },
142
- {
143
- id: "fastTracktoSales",
144
- label:
145
- "I'd like a sales person to contact me about a trial or pricing.",
146
- dataType: "checkbox",
147
- validationMessage: "This field is required.",
148
- rowNumber: 6,
149
- columnNumber: 0,
150
- required: false,
151
- formPrefill: true,
152
- fieldMetaData: {
153
- initiallyChecked: false,
154
- },
155
- visibilityRules: {
156
- ruleType: "alwaysShow",
157
- },
158
- },
159
- {
160
- id: "Consent_Privacy_Policy__c",
161
- label: "Send me news about HashiCorp products, releases and events.",
162
- dataType: "checkbox",
163
- validationMessage: "This field is required.",
164
- rowNumber: 6,
165
- columnNumber: 0,
166
- required: false,
167
- formPrefill: true,
168
- fieldMetaData: {
169
- initiallyChecked: false,
170
- },
171
- visibilityRules: {
172
- ruleType: "alwaysShow",
173
- },
174
- },
175
- {
176
- id: "SHRtbFRleHRfMjAyMy0wNC0wNVQyMjo0NDo0Ny45OTZa",
177
- labelWidth: 260,
178
- dataType: "htmltext",
179
- rowNumber: 9,
180
- columnNumber: 0,
181
- visibilityRules: {
182
- ruleType: "alwaysShow"
183
- },
184
- text: "By submitting this form, you acknowledge and agree that HashiCorp will process your personal information in accordance with the <a href=\\"https://hashicorp.com/trust/privacy\\" target=\\"_blank\\" id=\\"\\">Privacy Policy</a>."
185
- }
186
- ],
187
- }}
188
- submitTitle="Download Now"
189
- onSubmitSuccess={() => alert("Success!")}
190
- onSubmitFailure={() => alert("Failure!")}
191
- />`}
192
- </LiveComponent>
193
- ;
194
-
195
- ### Props
196
-
197
- <PropsTable props={componentProps} />