@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.
- package/.eslintrc.js +1 -2
- package/.stylelintrc.js +1 -1
- package/README.md +1 -1
- package/package.json +3 -8
- package/postcss.config.js +1 -1
- package/src/components/nav-panel/components/flight-icon/index.tsx +51 -0
- package/src/components/nav-panel/components/flight-icon/style.module.css +3 -0
- package/src/components/nav-panel/components/link/index.tsx +127 -0
- package/src/components/nav-panel/components/link/style.module.css +64 -0
- package/src/components/nav-panel/components/link-list/index.tsx +13 -65
- package/src/components/nav-panel/components/link-list/style.module.css +1 -50
- package/src/components/nav-panel/components/panel/column/style.module.css +2 -2
- package/src/components/nav-panel/components/panel/root/style.module.css +5 -5
- package/src/components/nav-panel/components/promo/index.tsx +31 -11
- package/src/components/nav-panel/components/promo/style.module.css +26 -12
- package/src/components/nav-panel/components/text/index.tsx +34 -0
- package/src/components/nav-panel/product-panel/index.tsx +54 -17
- package/src/components/nav-panel/product-panel/style.module.css +116 -36
- package/src/components/nav-panel/standard-panel/index.tsx +3 -0
- package/src/components/nav-panel/standard-panel/style.module.css +2 -2
- package/src/lib/get-localized-link-props/index.test.ts +30 -0
- package/src/lib/get-localized-link-props/index.ts +45 -0
- package/src/lib/parse-url/index.test.ts +30 -1
- package/src/lib/parse-url/index.ts +71 -8
- package/src/lib/send-posthog-event/index.ts +22 -0
- package/src/lib/supported-locales/index.ts +10 -0
- package/src/lib/track-nav-click-event/index.ts +4 -4
- package/src/components/actions/index.tsx +0 -107
- package/src/components/actions/style.module.css +0 -28
- package/src/components/actions/types.ts +0 -73
- package/src/components/call-to-action/index.tsx +0 -205
- package/src/components/call-to-action/styles/variant-centered.module.css +0 -93
- package/src/components/call-to-action/styles/variant-compact-grid.module.css +0 -88
- package/src/components/call-to-action/styles/variant-compact.module.css +0 -91
- package/src/components/call-to-action/styles/variant-links.module.css +0 -85
- package/src/components/card/README.md +0 -11
- package/src/components/card/card.tsx +0 -45
- package/src/components/card/index.test.tsx +0 -69
- package/src/components/card/index.tsx +0 -14
- package/src/components/card/newsroom-card/index.test.tsx +0 -39
- package/src/components/card/newsroom-card/index.tsx +0 -37
- package/src/components/card/newsroom-card/style.module.css +0 -12
- package/src/components/card/partner-card/index.test.tsx +0 -57
- package/src/components/card/partner-card/index.tsx +0 -69
- package/src/components/card/partner-card/style.module.css +0 -24
- package/src/components/card/person-card/index.test.tsx +0 -71
- package/src/components/card/person-card/index.tsx +0 -93
- package/src/components/card/person-card/style.module.css +0 -33
- package/src/components/card/primitives.tsx +0 -177
- package/src/components/card/promo-card/index.tsx +0 -51
- package/src/components/card/resource-card/index.test.tsx +0 -48
- package/src/components/card/resource-card/index.tsx +0 -37
- package/src/components/card/style.module.css +0 -145
- package/src/components/card/types.ts +0 -66
- package/src/components/card/unified-card/index.spec.tsx +0 -40
- package/src/components/card/unified-card/index.tsx +0 -58
- package/src/components/intro/index.tsx +0 -82
- package/src/components/intro/style.module.css +0 -67
- package/src/components/intro/types.ts +0 -44
- package/src/components/marketo-form/CHANGELOG.md +0 -122
- package/src/components/marketo-form/README.md +0 -1
- package/src/components/marketo-form/contexts/FormMetadata.ts +0 -13
- package/src/components/marketo-form/docs.mdx +0 -197
- package/src/components/marketo-form/fixtures/index.ts +0 -185
- package/src/components/marketo-form/form/index.tsx +0 -371
- package/src/components/marketo-form/index.test.tsx +0 -320
- package/src/components/marketo-form/index.ts +0 -11
- package/src/components/marketo-form/package.original.json +0 -30
- package/src/components/marketo-form/partials/error-message/index.tsx +0 -12
- package/src/components/marketo-form/partials/error-message/style.module.css +0 -13
- package/src/components/marketo-form/partials/field/index.tsx +0 -90
- package/src/components/marketo-form/partials/field-wrapper/index.tsx +0 -26
- package/src/components/marketo-form/partials/fields/checkbox-field/index.tsx +0 -32
- package/src/components/marketo-form/partials/fields/email-field/index.tsx +0 -35
- package/src/components/marketo-form/partials/fields/form-page-url-field/index.tsx +0 -23
- package/src/components/marketo-form/partials/fields/hidden-field/index.tsx +0 -38
- package/src/components/marketo-form/partials/fields/htmltext-field/index.tsx +0 -21
- package/src/components/marketo-form/partials/fields/htmltext-field/style.module.css +0 -18
- package/src/components/marketo-form/partials/fields/name-field/index.tsx +0 -19
- package/src/components/marketo-form/partials/fields/name-field/style.module.css +0 -13
- package/src/components/marketo-form/partials/fields/radio-buttons-field/index.tsx +0 -48
- package/src/components/marketo-form/partials/fields/select-field/index.tsx +0 -39
- package/src/components/marketo-form/partials/fields/select-field/style.module.css +0 -5
- package/src/components/marketo-form/partials/fields/telephone-field/index.tsx +0 -30
- package/src/components/marketo-form/partials/fields/text-field/index.tsx +0 -30
- package/src/components/marketo-form/partials/fields/textarea-field/index.tsx +0 -29
- package/src/components/marketo-form/partials/label/index.tsx +0 -24
- package/src/components/marketo-form/partials/label/style.module.css +0 -12
- package/src/components/marketo-form/partials/visibility-rule/index.tsx +0 -84
- package/src/components/marketo-form/props.js +0 -66
- package/src/components/marketo-form/server/api-routes.ts +0 -109
- package/src/components/marketo-form/server/client.ts +0 -98
- package/src/components/marketo-form/server/index.ts +0 -8
- package/src/components/marketo-form/types.ts +0 -268
- package/src/components/marketo-form/utils.test.tsx +0 -103
- package/src/components/marketo-form/utils.ts +0 -449
- package/src/components/next-steps/index.tsx +0 -138
- package/src/components/next-steps/style.module.css +0 -270
- package/src/components/next-steps/types.ts +0 -63
- package/src/components/product-badge/index.test.tsx +0 -11
- package/src/components/product-badge/index.tsx +0 -42
- package/src/components/product-badge/style.module.css +0 -76
- package/src/components/products-used/index.tsx +0 -84
- package/src/components/products-used/style.module.css +0 -87
- package/src/components/products-used/types.ts +0 -31
- package/src/components/related-content/index.test.tsx +0 -74
- package/src/components/related-content/index.tsx +0 -56
- package/src/components/related-content/style.module.css +0 -89
- package/src/components/related-content/types.ts +0 -21
- package/src/components/subnav/helpers/areBasePathsMatching.ts +0 -13
- package/src/components/subnav/helpers/traverse/index.ts +0 -42
- package/src/components/subnav/helpers/useHeightRef.ts +0 -42
- package/src/components/subnav/helpers/useNavRef.ts +0 -30
- package/src/components/subnav/helpers/useOverflowRef.ts +0 -85
- package/src/components/subnav/helpers/useStuckRef.ts +0 -51
- package/src/components/subnav/index.tsx +0 -203
- package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.test.ts +0 -26
- package/src/components/subnav/partials/CtaLinks/github-stars-link/formatStarCount/index.ts +0 -22
- package/src/components/subnav/partials/CtaLinks/github-stars-link/index.tsx +0 -87
- package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.test.ts +0 -29
- package/src/components/subnav/partials/CtaLinks/github-stars-link/parseGithubUrl/index.ts +0 -32
- package/src/components/subnav/partials/CtaLinks/github-stars-link/style.module.css +0 -81
- package/src/components/subnav/partials/CtaLinks/icons/github-logo.js +0 -20
- package/src/components/subnav/partials/CtaLinks/icons/github.svg.js +0 -7
- package/src/components/subnav/partials/CtaLinks/icons/star.js +0 -20
- package/src/components/subnav/partials/CtaLinks/index.tsx +0 -131
- package/src/components/subnav/partials/CtaLinks/style.module.css +0 -45
- package/src/components/subnav/partials/DropdownTrigger/index.tsx +0 -35
- package/src/components/subnav/partials/DropdownTrigger/style.module.css +0 -39
- package/src/components/subnav/partials/MenuItemsDefault/index.tsx +0 -158
- package/src/components/subnav/partials/MenuItemsDefault/style.module.css +0 -104
- package/src/components/subnav/partials/MenuItemsOverflow/index.tsx +0 -143
- package/src/components/subnav/partials/MenuItemsOverflow/style.module.css +0 -88
- package/src/components/subnav/partials/TitleLink/index.tsx +0 -113
- package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-dark.ts +0 -10
- package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-light.ts +0 -10
- package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-dark.ts +0 -23
- package/src/components/subnav/partials/TitleLink/mktg-logos/all-primary-logos_on-light.ts +0 -23
- package/src/components/subnav/partials/TitleLink/style.module.css +0 -43
- package/src/components/subnav/partials/nav-item-text/index.tsx +0 -37
- package/src/components/subnav/partials/nav-item-text/style.module.css +0 -13
- package/src/components/subnav/style.module.css +0 -66
- 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} />
|