@hashicorp/react-components 0.0.0-nightly.976e6ae → 0.0.0-nightly.97eb452
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/package.json +5 -4
- package/src/components/actions/index.tsx +5 -5
- package/src/components/call-to-action/index.tsx +7 -7
- package/src/components/card/index.test.tsx +1 -1
- package/src/components/card/newsroom-card/index.test.tsx +1 -1
- package/src/components/card/partner-card/index.tsx +3 -3
- package/src/components/card/person-card/index.tsx +1 -1
- package/src/components/card/primitives.tsx +16 -15
- package/src/components/card/resource-card/index.test.tsx +1 -1
- package/src/components/card/types.ts +2 -2
- package/src/components/card/unified-card/index.spec.tsx +40 -0
- package/src/components/card/unified-card/index.tsx +5 -11
- package/src/components/marketo-form/contexts/FormMetadata.ts +2 -0
- package/src/components/marketo-form/form/index.tsx +4 -2
- package/src/components/marketo-form/partials/fields/checkbox-field/index.tsx +1 -1
- package/src/components/marketo-form/partials/fields/email-field/index.tsx +1 -1
- package/src/components/marketo-form/partials/fields/form-page-url-field/index.tsx +2 -0
- package/src/components/marketo-form/partials/fields/hidden-field/index.tsx +1 -0
- package/src/components/marketo-form/partials/fields/radio-buttons-field/index.tsx +1 -1
- package/src/components/marketo-form/partials/fields/select-field/index.tsx +1 -1
- package/src/components/marketo-form/partials/fields/telephone-field/index.tsx +1 -1
- package/src/components/marketo-form/partials/fields/text-field/index.tsx +1 -1
- package/src/components/marketo-form/partials/fields/textarea-field/index.tsx +1 -1
- package/src/components/marketo-form/utils.ts +4 -0
- package/src/components/nav-panel/components/link-list/index.tsx +7 -6
- package/src/components/nav-panel/components/panel/column/index.tsx +17 -2
- package/src/components/nav-panel/components/panel/column/style.module.css +12 -2
- package/src/components/nav-panel/components/panel/root/index.tsx +13 -2
- package/src/components/nav-panel/components/panel/root/style.module.css +19 -4
- package/src/components/nav-panel/components/promo/index.tsx +15 -8
- package/src/components/nav-panel/components/promo/style.module.css +28 -6
- package/src/components/nav-panel/product-panel/index.tsx +104 -27
- package/src/components/nav-panel/product-panel/style.module.css +230 -15
- package/src/components/nav-panel/standard-panel/style.module.css +1 -1
- package/src/components/next-steps/index.tsx +3 -2
- package/src/components/product-badge/index.tsx +1 -1
- package/src/components/subnav/index.tsx +7 -3
- package/src/components/subnav/partials/CtaLinks/github-stars-link/style.module.css +8 -12
- package/src/components/subnav/partials/CtaLinks/index.tsx +9 -8
- package/src/components/subnav/partials/CtaLinks/style.module.css +4 -4
- package/src/components/subnav/partials/DropdownTrigger/index.tsx +2 -2
- package/src/components/subnav/partials/DropdownTrigger/style.module.css +7 -4
- package/src/components/subnav/partials/MenuItemsDefault/index.tsx +10 -3
- package/src/components/subnav/partials/MenuItemsDefault/style.module.css +37 -24
- package/src/components/subnav/partials/MenuItemsOverflow/index.tsx +8 -4
- package/src/components/subnav/partials/MenuItemsOverflow/style.module.css +22 -16
- package/src/components/subnav/partials/TitleLink/index.tsx +2 -2
- package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-dark.ts +2 -1
- package/src/components/subnav/partials/TitleLink/mktg-logos/all-community-product-logos_on-light.ts +2 -1
- package/src/components/subnav/partials/TitleLink/style.module.css +1 -1
- package/src/components/subnav/partials/nav-item-text/style.module.css +2 -4
- package/src/components/subnav/style.module.css +3 -5
- package/src/lib/parse-url/index.test.ts +10 -0
- package/src/lib/parse-url/index.ts +10 -6
- package/src/lib/v/index.ts +4 -5
- package/src/components/consent-manager/README.md +0 -73
- package/src/components/consent-manager/components/banner/banner.module.css +0 -23
- package/src/components/consent-manager/components/banner/banner.test.tsx +0 -31
- package/src/components/consent-manager/components/banner/banner.tsx +0 -73
- package/src/components/consent-manager/components/dialog/dialog.module.css +0 -145
- package/src/components/consent-manager/components/dialog/dialog.test.tsx +0 -194
- package/src/components/consent-manager/components/dialog/dialog.tsx +0 -339
- package/src/components/consent-manager/img/icn_close.tsx +0 -19
- package/src/components/consent-manager/index.test.tsx +0 -334
- package/src/components/consent-manager/index.tsx +0 -186
- package/src/components/consent-manager/loader/README.md +0 -29
- package/src/components/consent-manager/loader/categories.ts +0 -22
- package/src/components/consent-manager/loader/index.tsx +0 -94
- package/src/components/consent-manager/loader/presets/enterprise.ts +0 -12
- package/src/components/consent-manager/loader/presets/oss.ts +0 -10
- package/src/components/consent-manager/loader/services.ts +0 -45
- package/src/components/consent-manager/scripts/custom.tsx +0 -59
- package/src/components/consent-manager/scripts/segment.tsx +0 -87
- package/src/components/consent-manager/style.module.css +0 -9
- package/src/components/consent-manager/types.ts +0 -55
- package/src/components/consent-manager/util/cookies.test.ts +0 -75
- package/src/components/consent-manager/util/cookies.ts +0 -70
- package/src/components/consent-manager/util/integrations.test.ts +0 -115
- package/src/components/consent-manager/util/integrations.ts +0 -110
- package/src/components/subnav/theme.module.css +0 -50
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashicorp/react-components",
|
|
3
|
-
"version": "0.0.0-nightly.
|
|
3
|
+
"version": "0.0.0-nightly.97eb452",
|
|
4
4
|
"main": "src/index.ts",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"lint": "next-hashicorp lint",
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
"test:watch": "vitest watch"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@hashicorp/flight-icons": "^
|
|
11
|
+
"@hashicorp/flight-icons": "^3.7.0",
|
|
12
12
|
"@hashicorp/platform-product-meta": "^0.1.1",
|
|
13
13
|
"@hashicorp/platform-util": "^0.2.0",
|
|
14
|
-
"@hashicorp/react-
|
|
14
|
+
"@hashicorp/react-hds": "*",
|
|
15
|
+
"@hashicorp/react-mds": "*",
|
|
15
16
|
"@hashicorp/web-mktg-logos": "*",
|
|
16
17
|
"@radix-ui/react-navigation-menu": "^1.2.0",
|
|
17
18
|
"@radix-ui/react-visually-hidden": "^1.1.0",
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
"react-hook-form": "^7.43.5"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
|
-
"@hashicorp/platform-cli": "^2.
|
|
28
|
+
"@hashicorp/platform-cli": "^2.8.0",
|
|
28
29
|
"@hashicorp/platform-types": "^0.4.0",
|
|
29
30
|
"@testing-library/jest-dom": "^6.4.2",
|
|
30
31
|
"@vitejs/plugin-react": "^4.2.1",
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import classNames from 'classnames'
|
|
7
|
-
import
|
|
8
|
-
import
|
|
7
|
+
import { HDSPlusButton } from '@hashicorp/react-mds/src/hds-plus/button'
|
|
8
|
+
import { HDSPlusStandaloneLink } from '@hashicorp/react-mds/src/hds-plus/standalone-link'
|
|
9
9
|
import { IconArrowRight16 } from '@hashicorp/flight-icons/svg-react/arrow-right-16'
|
|
10
10
|
import { IconArrowRight24 } from '@hashicorp/flight-icons/svg-react/arrow-right-24'
|
|
11
11
|
import type { ActionsProps } from './types'
|
|
@@ -49,7 +49,7 @@ export default function Actions({
|
|
|
49
49
|
// have the `primary` and `secondary` variations respectively.
|
|
50
50
|
|
|
51
51
|
const standaloneLinkVariant: ComponentProps<
|
|
52
|
-
typeof
|
|
52
|
+
typeof HDSPlusStandaloneLink
|
|
53
53
|
>['color'] =
|
|
54
54
|
index === 0
|
|
55
55
|
? 'primary'
|
|
@@ -60,7 +60,7 @@ export default function Actions({
|
|
|
60
60
|
|
|
61
61
|
if (isStandaloneLink) {
|
|
62
62
|
return (
|
|
63
|
-
<
|
|
63
|
+
<HDSPlusStandaloneLink
|
|
64
64
|
// eslint-disable-next-line react/no-array-index-key
|
|
65
65
|
key={index}
|
|
66
66
|
text={cta.title}
|
|
@@ -89,7 +89,7 @@ export default function Actions({
|
|
|
89
89
|
)
|
|
90
90
|
} else {
|
|
91
91
|
return (
|
|
92
|
-
<
|
|
92
|
+
<HDSPlusButton
|
|
93
93
|
// eslint-disable-next-line react/no-array-index-key
|
|
94
94
|
key={index}
|
|
95
95
|
text={cta.title}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { ComponentProps, ReactNode } from 'react'
|
|
7
|
-
import
|
|
8
|
-
import ButtonSet from '@hashicorp/react-
|
|
9
|
-
import
|
|
7
|
+
import { HDSPlusButton } from '@hashicorp/react-mds/src/hds-plus/button'
|
|
8
|
+
import ButtonSet from '@hashicorp/react-hds/src/components/button-set'
|
|
9
|
+
import { HDSPlusStandaloneLink } from '@hashicorp/react-mds/src/hds-plus/standalone-link'
|
|
10
10
|
import { IconArrowRight24 } from '@hashicorp/flight-icons/svg-react/arrow-right-24'
|
|
11
11
|
import { IconExternalLink24 } from '@hashicorp/flight-icons/svg-react/external-link-24'
|
|
12
12
|
import { IconDownload24 } from '@hashicorp/flight-icons/svg-react/download-24'
|
|
@@ -119,7 +119,7 @@ function CallToAction({
|
|
|
119
119
|
{links && (
|
|
120
120
|
<ButtonSet className={s.links} data-testid="links">
|
|
121
121
|
{links.map((link, stableIdx) => {
|
|
122
|
-
let color: ComponentProps<typeof
|
|
122
|
+
let color: ComponentProps<typeof HDSPlusButton>['color'] =
|
|
123
123
|
variant === 'links'
|
|
124
124
|
? 'tertiary'
|
|
125
125
|
: stableIdx === 0
|
|
@@ -128,7 +128,7 @@ function CallToAction({
|
|
|
128
128
|
|
|
129
129
|
if (color === 'tertiary') {
|
|
130
130
|
return (
|
|
131
|
-
<
|
|
131
|
+
<HDSPlusStandaloneLink
|
|
132
132
|
key={stableIdx}
|
|
133
133
|
color="secondary"
|
|
134
134
|
text={link.text}
|
|
@@ -158,7 +158,7 @@ function CallToAction({
|
|
|
158
158
|
color = 'secondary'
|
|
159
159
|
} else if (theme === 'brand' && color === 'secondary') {
|
|
160
160
|
return (
|
|
161
|
-
<
|
|
161
|
+
<HDSPlusStandaloneLink
|
|
162
162
|
key={stableIdx}
|
|
163
163
|
color="secondary-inverted"
|
|
164
164
|
text={link.text}
|
|
@@ -177,7 +177,7 @@ function CallToAction({
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
return (
|
|
180
|
-
<
|
|
180
|
+
<HDSPlusButton
|
|
181
181
|
// eslint-disable-next-line react/no-array-index-key
|
|
182
182
|
key={stableIdx}
|
|
183
183
|
// className={s.button}
|
|
@@ -56,7 +56,7 @@ describe('<Card />', () => {
|
|
|
56
56
|
const metaElement = screen.getByTestId('wpl-card-meta')
|
|
57
57
|
|
|
58
58
|
cardMeta.forEach((item) => {
|
|
59
|
-
expect(metaElement).
|
|
59
|
+
expect(metaElement).toHaveTextContent(item)
|
|
60
60
|
})
|
|
61
61
|
expect(metaElement).toContainElement(screen.getByText('|'))
|
|
62
62
|
})
|
|
@@ -26,7 +26,7 @@ describe('<NewsroomCard />', () => {
|
|
|
26
26
|
const metaElement = screen.getByTestId('wpl-card-meta')
|
|
27
27
|
|
|
28
28
|
expectedMeta.forEach((item) => {
|
|
29
|
-
expect(metaElement).
|
|
29
|
+
expect(metaElement).toHaveTextContent(item)
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
expect(metaElement).toContainElement(screen.queryByText('|'))
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import Image, { type ImageProps } from 'next/image'
|
|
7
|
-
import Badge from '@hashicorp/react-
|
|
8
|
-
import FlightIcon from '@hashicorp/react-
|
|
9
|
-
import { TextPlus } from '@hashicorp/react-
|
|
7
|
+
import Badge from '@hashicorp/react-hds/src/components/badge'
|
|
8
|
+
import FlightIcon from '@hashicorp/react-hds/src/components/flight-icon'
|
|
9
|
+
import { TextPlus } from '@hashicorp/react-hds/src/components/text'
|
|
10
10
|
import * as CardPrimitives from '../primitives'
|
|
11
11
|
import type { CardProps } from '../types'
|
|
12
12
|
import s from './style.module.css'
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { memo, type ReactNode } from 'react'
|
|
7
|
-
import { TextPlus } from '@hashicorp/react-
|
|
7
|
+
import { TextPlus } from '@hashicorp/react-hds/src/components/text'
|
|
8
8
|
import { IconGithub16 } from '@hashicorp/flight-icons/svg-react/github-16'
|
|
9
9
|
import { IconTwitter16 } from '@hashicorp/flight-icons/svg-react/twitter-16'
|
|
10
10
|
import { IconLinkedin16 } from '@hashicorp/flight-icons/svg-react/linkedin-16'
|
|
@@ -7,8 +7,8 @@ import * as React from 'react'
|
|
|
7
7
|
import classNames from 'classnames'
|
|
8
8
|
import Image from 'next/image'
|
|
9
9
|
import Link from 'next/link'
|
|
10
|
-
import HDSCard from '@hashicorp/react-
|
|
11
|
-
import { TextPlus } from '@hashicorp/react-
|
|
10
|
+
import HDSCard from '@hashicorp/react-hds/src/components/card'
|
|
11
|
+
import { TextPlus } from '@hashicorp/react-hds/src/components/text'
|
|
12
12
|
import { IconArrowRight24 } from '@hashicorp/flight-icons/svg-react/arrow-right-24'
|
|
13
13
|
import ProductBadge from '../product-badge'
|
|
14
14
|
import type {
|
|
@@ -33,6 +33,7 @@ const Card = React.forwardRef<HTMLAnchorElement, CardPrimitiveProps>(
|
|
|
33
33
|
hasBorder = true,
|
|
34
34
|
children,
|
|
35
35
|
className,
|
|
36
|
+
'aria-label': ariaLabel,
|
|
36
37
|
} = props
|
|
37
38
|
|
|
38
39
|
const linkProps = isExternal
|
|
@@ -58,7 +59,7 @@ const Card = React.forwardRef<HTMLAnchorElement, CardPrimitiveProps>(
|
|
|
58
59
|
href={link}
|
|
59
60
|
ref={ref}
|
|
60
61
|
className={s.link}
|
|
61
|
-
aria-label={heading}
|
|
62
|
+
aria-label={ariaLabel ?? heading}
|
|
62
63
|
onClickCapture={clickHandler}
|
|
63
64
|
{...linkProps}
|
|
64
65
|
/>
|
|
@@ -100,23 +101,23 @@ function LogoThumbnail({ src, alt }: ThumbnailProps) {
|
|
|
100
101
|
|
|
101
102
|
function Meta({ items }: MetaProps) {
|
|
102
103
|
return (
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
<div className={s.meta} data-testid="wpl-card-meta">
|
|
105
|
+
<TextPlus.Label>
|
|
106
|
+
{items.map((item, stableIdx) => {
|
|
107
|
+
const isLastItem = stableIdx === items.length - 1
|
|
108
|
+
return (
|
|
109
|
+
<>
|
|
109
110
|
{item}
|
|
110
|
-
{
|
|
111
|
+
{!isLastItem ? (
|
|
111
112
|
<span className={s.metaSeparator} aria-hidden={true}>
|
|
112
113
|
|
|
|
113
114
|
</span>
|
|
114
115
|
) : null}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
</
|
|
116
|
+
</>
|
|
117
|
+
)
|
|
118
|
+
})}
|
|
119
|
+
</TextPlus.Label>
|
|
120
|
+
</div>
|
|
120
121
|
)
|
|
121
122
|
}
|
|
122
123
|
|
|
@@ -26,7 +26,7 @@ describe('<ResourceCard />', () => {
|
|
|
26
26
|
const metaElement = screen.getByTestId('wpl-card-meta')
|
|
27
27
|
|
|
28
28
|
expectedMeta.forEach((item) => {
|
|
29
|
-
expect(metaElement).
|
|
29
|
+
expect(metaElement).toHaveTextContent(item)
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
expect(metaElement).toContainElement(screen.getByText('|'))
|
|
@@ -10,14 +10,14 @@ import type { PersonCardProps } from './person-card'
|
|
|
10
10
|
import type { ResourceCardProps } from './resource-card'
|
|
11
11
|
import type { UnifiedCardProps } from './unified-card'
|
|
12
12
|
|
|
13
|
-
export interface BaseCardProps
|
|
13
|
+
export interface BaseCardProps
|
|
14
|
+
extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
14
15
|
withArrow?: boolean
|
|
15
16
|
heading: string
|
|
16
17
|
link: string
|
|
17
18
|
clickHandler?: () => void
|
|
18
19
|
isExternal?: boolean
|
|
19
20
|
hasBorder?: boolean
|
|
20
|
-
className?: string
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export interface CardPrimitiveProps extends BaseCardProps {
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
})
|
|
@@ -4,20 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { ReactNode } from 'react'
|
|
7
|
-
import Badge from '@hashicorp/react-
|
|
7
|
+
import Badge from '@hashicorp/react-hds/src/components/badge'
|
|
8
8
|
import * as CardPrimitives from '../primitives'
|
|
9
|
-
import type { CardProps
|
|
9
|
+
import type { CardProps } from '../types'
|
|
10
10
|
|
|
11
|
-
export interface UnifiedCardProps {
|
|
12
|
-
heading: string
|
|
13
|
-
meta?: string[]
|
|
14
|
-
link: string
|
|
15
|
-
productBadges?: CardProps['productBadges']
|
|
11
|
+
export interface UnifiedCardProps extends CardProps {
|
|
16
12
|
badges?: (string | [ReactNode, string])[]
|
|
17
|
-
thumbnail?: ThumbnailProps
|
|
18
|
-
withArrow?: boolean
|
|
19
|
-
isExternal?: boolean
|
|
20
|
-
className?: string
|
|
21
13
|
}
|
|
22
14
|
|
|
23
15
|
export function UnifiedCard({
|
|
@@ -30,6 +22,7 @@ export function UnifiedCard({
|
|
|
30
22
|
withArrow = false,
|
|
31
23
|
isExternal = false,
|
|
32
24
|
className,
|
|
25
|
+
'aria-label': ariaLabel,
|
|
33
26
|
}: UnifiedCardProps) {
|
|
34
27
|
return (
|
|
35
28
|
<CardPrimitives.Card
|
|
@@ -38,6 +31,7 @@ export function UnifiedCard({
|
|
|
38
31
|
withArrow={withArrow}
|
|
39
32
|
isExternal={isExternal}
|
|
40
33
|
className={className}
|
|
34
|
+
aria-label={ariaLabel ?? heading}
|
|
41
35
|
>
|
|
42
36
|
{thumbnail ? <CardPrimitives.Thumbnail {...thumbnail} /> : null}
|
|
43
37
|
<CardPrimitives.Content>
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
'use client'
|
|
7
|
+
|
|
6
8
|
import { useEffect, useMemo, useRef } from 'react'
|
|
7
9
|
import { useForm, FormProvider } from 'react-hook-form'
|
|
8
|
-
import
|
|
10
|
+
import { HDSPlusButton } from '@hashicorp/react-mds/src/hds-plus/button'
|
|
9
11
|
import VisibilityRule from '../partials/visibility-rule'
|
|
10
12
|
import NameField from '../partials/fields/name-field'
|
|
11
13
|
import { FormMetadataContext } from '../contexts/FormMetadata'
|
|
@@ -345,7 +347,7 @@ const Form = ({
|
|
|
345
347
|
/>
|
|
346
348
|
)
|
|
347
349
|
})}
|
|
348
|
-
<
|
|
350
|
+
<HDSPlusButton
|
|
349
351
|
type="submit"
|
|
350
352
|
size="large"
|
|
351
353
|
disabled={
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { useFormContext } from 'react-hook-form'
|
|
7
7
|
// import CheckboxInput from '@hashicorp/react-form-fields/checkbox'
|
|
8
|
-
import Checkbox from '@hashicorp/react-
|
|
8
|
+
import Checkbox from '@hashicorp/react-hds/src/components/form/checkbox'
|
|
9
9
|
import FieldWrapper from '../../field-wrapper'
|
|
10
10
|
import { formattedLabel, useErrorMessage } from '../../../utils'
|
|
11
11
|
import type { MarketoFormCheckboxField } from '../../../types'
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { useFormContext } from 'react-hook-form'
|
|
7
7
|
// import TextInput from '@hashicorp/react-form-fields/text'
|
|
8
|
-
import TextInput from '@hashicorp/react-
|
|
8
|
+
import TextInput from '@hashicorp/react-hds/src/components/form/text-input'
|
|
9
9
|
import FieldWrapper from '../../field-wrapper'
|
|
10
10
|
import { formattedLabel, useErrorMessage } from '../../../utils'
|
|
11
11
|
import type { MarketoFormEmailField } from '../../../types'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useFormContext } from 'react-hook-form'
|
|
2
2
|
import RadioCard, {
|
|
3
3
|
RadioCardGroup,
|
|
4
|
-
} from '@hashicorp/react-
|
|
4
|
+
} from '@hashicorp/react-hds/src/components/form/radio-card'
|
|
5
5
|
import FieldWrapper from '../../field-wrapper'
|
|
6
6
|
import type { MarketoFormRadioButtonsField } from '../../../types'
|
|
7
7
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { useFormContext } from 'react-hook-form'
|
|
7
|
-
import Select from '@hashicorp/react-
|
|
7
|
+
import Select from '@hashicorp/react-hds/src/components/form/select'
|
|
8
8
|
import FieldWrapper from '../../field-wrapper'
|
|
9
9
|
import { formattedLabel, useErrorMessage } from '../../../utils'
|
|
10
10
|
import type { MarketoFormSelectField } from '../../../types'
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { useFormContext } from 'react-hook-form'
|
|
7
|
-
import TextInput from '@hashicorp/react-
|
|
7
|
+
import TextInput from '@hashicorp/react-hds/src/components/form/text-input'
|
|
8
8
|
import FieldWrapper from '../../field-wrapper'
|
|
9
9
|
import { formattedLabel, useErrorMessage } from '../../../utils'
|
|
10
10
|
import type { MarketoFormTelephoneField } from '../../../types'
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { useFormContext } from 'react-hook-form'
|
|
7
|
-
import TextInput from '@hashicorp/react-
|
|
7
|
+
import TextInput from '@hashicorp/react-hds/src/components/form/text-input'
|
|
8
8
|
import FieldWrapper from '../../field-wrapper'
|
|
9
9
|
import { formattedLabel, useErrorMessage } from '../../../utils'
|
|
10
10
|
import type { MarketoFormTextField } from '../../../types'
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { useFormContext } from 'react-hook-form'
|
|
7
|
-
import Textarea from '@hashicorp/react-
|
|
7
|
+
import Textarea from '@hashicorp/react-hds/src/components/form/textarea'
|
|
8
8
|
import FieldWrapper from '../../field-wrapper'
|
|
9
9
|
import { formattedLabel, useErrorMessage } from '../../../utils'
|
|
10
10
|
import type { MarketoFormTextAreaField } from '../../../types'
|
|
@@ -426,6 +426,10 @@ export const resolverErrors = (
|
|
|
426
426
|
* @returns MarketoFormField[] with columnSplit property set
|
|
427
427
|
*/
|
|
428
428
|
export function setFieldsColumnSplit(fieldsArr: MarketoFormField[]) {
|
|
429
|
+
if (!fieldsArr) {
|
|
430
|
+
return []
|
|
431
|
+
}
|
|
432
|
+
|
|
429
433
|
return fieldsArr.map((f) => {
|
|
430
434
|
const columnSplit = getFieldColumnSplit(fieldsArr, f)
|
|
431
435
|
return { ...f, columnSplit }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Link from 'next/link'
|
|
2
2
|
import { parseUrl } from '../../../../lib/parse-url'
|
|
3
|
-
import {
|
|
4
|
-
import FlightIcon from '@hashicorp/react-
|
|
3
|
+
import { vercelSplit } from '../../../../lib/v'
|
|
4
|
+
import FlightIcon from '@hashicorp/react-hds/src/components/flight-icon'
|
|
5
5
|
import * as NavigationMenu from '@radix-ui/react-navigation-menu'
|
|
6
6
|
import s from './style.module.css'
|
|
7
7
|
|
|
@@ -44,8 +44,9 @@ export default function LinkList({ links, linkClickHandler }: LinkListProps) {
|
|
|
44
44
|
let style
|
|
45
45
|
link.iconGradient
|
|
46
46
|
? (style = {
|
|
47
|
-
'--iconGradient': GRADIENT_VALUE_MAP.get(
|
|
48
|
-
|
|
47
|
+
'--iconGradient': GRADIENT_VALUE_MAP.get(
|
|
48
|
+
vercelSplit(link.iconGradient)
|
|
49
|
+
)?.iconGradient,
|
|
49
50
|
} as React.CSSProperties)
|
|
50
51
|
: (style = null)
|
|
51
52
|
return (
|
|
@@ -60,12 +61,12 @@ export default function LinkList({ links, linkClickHandler }: LinkListProps) {
|
|
|
60
61
|
>
|
|
61
62
|
{link.iconGradient && link.icon ? (
|
|
62
63
|
<div className={s.iconBackground} style={style}>
|
|
63
|
-
<FlightIcon name={
|
|
64
|
+
<FlightIcon name={vercelSplit(link.icon)} />
|
|
64
65
|
</div>
|
|
65
66
|
) : (
|
|
66
67
|
link.icon && (
|
|
67
68
|
<FlightIcon
|
|
68
|
-
name={
|
|
69
|
+
name={vercelSplit(link.icon)}
|
|
69
70
|
color="var(--token-color-foreground-faint)"
|
|
70
71
|
/>
|
|
71
72
|
)
|
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
import classNames from 'classnames'
|
|
1
2
|
import s from './style.module.css'
|
|
2
3
|
|
|
3
4
|
export interface NavColumnProps {
|
|
5
|
+
className?: string
|
|
4
6
|
children: React.ReactNode
|
|
7
|
+
hasSidePanel?: boolean
|
|
5
8
|
}
|
|
6
9
|
|
|
7
|
-
export default function Column({
|
|
8
|
-
|
|
10
|
+
export default function Column({
|
|
11
|
+
className,
|
|
12
|
+
children,
|
|
13
|
+
hasSidePanel,
|
|
14
|
+
}: NavColumnProps) {
|
|
15
|
+
return (
|
|
16
|
+
<div
|
|
17
|
+
className={classNames(s.column, className, {
|
|
18
|
+
[s.hasSide]: hasSidePanel,
|
|
19
|
+
})}
|
|
20
|
+
>
|
|
21
|
+
{children}
|
|
22
|
+
</div>
|
|
23
|
+
)
|
|
9
24
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@custom-media --dev-dot-viewport (min-width: 924px);
|
|
2
|
+
|
|
1
3
|
.column {
|
|
2
4
|
position: relative;
|
|
3
5
|
display: flex;
|
|
@@ -5,10 +7,18 @@
|
|
|
5
7
|
justify-content: flex-start;
|
|
6
8
|
min-width: 190px;
|
|
7
9
|
padding: 0;
|
|
8
|
-
margin: 0 var(--hdsplus-spacing-
|
|
10
|
+
margin: 0 var(--hdsplus-spacing-07);
|
|
9
11
|
border-radius: var(--hdsplus-spacing-03);
|
|
10
12
|
|
|
11
13
|
@media (--large) {
|
|
12
|
-
|
|
14
|
+
&:not(.hasSide) {
|
|
15
|
+
margin: 0;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@media (--dev-dot-viewport) {
|
|
20
|
+
&.hasSide {
|
|
21
|
+
margin: 0;
|
|
22
|
+
}
|
|
13
23
|
}
|
|
14
24
|
}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import classNames from 'classnames'
|
|
1
2
|
import s from './style.module.css'
|
|
2
3
|
|
|
3
4
|
interface RootProps {
|
|
5
|
+
className?: string
|
|
4
6
|
children: React.ReactNode
|
|
7
|
+
hasSidePanel?: boolean
|
|
5
8
|
}
|
|
6
9
|
|
|
7
|
-
export default function Root({ children }: RootProps) {
|
|
8
|
-
return
|
|
10
|
+
export default function Root({ className, children, hasSidePanel }: RootProps) {
|
|
11
|
+
return (
|
|
12
|
+
<div
|
|
13
|
+
className={classNames(s.root, className, {
|
|
14
|
+
[s.hasSide]: hasSidePanel,
|
|
15
|
+
})}
|
|
16
|
+
>
|
|
17
|
+
{children}
|
|
18
|
+
</div>
|
|
19
|
+
)
|
|
9
20
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@custom-media --dev-dot-viewport (min-width: 924px);
|
|
2
|
+
|
|
1
3
|
.root {
|
|
2
4
|
width: 100%;
|
|
3
5
|
display: flex;
|
|
@@ -7,9 +9,22 @@
|
|
|
7
9
|
min-height: calc(100dvh - var(--hdsplus-spacing-12));
|
|
8
10
|
|
|
9
11
|
@media (--large) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
&:not(.hasSide) {
|
|
13
|
+
justify-content: flex-start;
|
|
14
|
+
height: 100%;
|
|
15
|
+
min-height: fit-content;
|
|
16
|
+
padding: var(--hdsplus-spacing-05) var(--hdsplus-spacing-04);
|
|
17
|
+
gap: var(--hdsplus-spacing-04);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media (--dev-dot-viewport) {
|
|
22
|
+
&.hasSide {
|
|
23
|
+
justify-content: flex-start;
|
|
24
|
+
height: 100%;
|
|
25
|
+
min-height: fit-content;
|
|
26
|
+
padding: var(--hdsplus-spacing-05) var(--hdsplus-spacing-04);
|
|
27
|
+
gap: var(--hdsplus-spacing-04);
|
|
28
|
+
}
|
|
14
29
|
}
|
|
15
30
|
}
|