@faststore/core 0.3.14 → 0.3.16
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.json +3 -0
- package/CHANGELOG.md +19 -0
- package/README.md +1 -1
- package/cypress/integration/analytics.test.js +24 -5
- package/cypress/integration/cart.test.js +4 -2
- package/cypress/integration/plp.test.js +1 -1
- package/cypress/integration/search.test.js +6 -1
- package/package.json +6 -7
- package/src/components/cms/RenderPageSections.tsx +0 -1
- package/src/components/common/Footer/Footer.tsx +9 -9
- package/src/components/sections/Hero/Hero.tsx +28 -77
- package/src/components/sections/ProducDetailsContent/ProductDetailsContent.tsx +15 -17
- package/src/components/ui/Price/Price.tsx +2 -3
- package/src/components/ui/ShippingSimulation/ShippingSimulation.stories.mdx +0 -27
- package/src/components/ui/ShippingSimulation/ShippingSimulation.tsx +6 -13
- package/src/components/ui/ShippingSimulation/shipping-simulation.module.scss +0 -39
- package/src/components/ui/ShippingSimulation/useShippingSimulation.ts +1 -1
- package/src/customizations/components/index.ts +1 -0
- package/src/pages/[...slug].tsx +8 -8
- package/src/pages/s.tsx +2 -2
- package/src/sdk/error/ErrorBoundary/ErrorBoundary.tsx +0 -1
- package/src/sdk/ui/useOnClickOutside.ts +0 -1
- package/src/server/cms.ts +0 -1
- package/vtex.env +2 -2
- package/.eslintignore +0 -8
- package/.eslintrc +0 -21
- package/bun.lockb +0 -0
- package/renovate.json +0 -5
- package/src/components/sections/Hero/Hero.stories.mdx +0 -277
- package/src/components/sections/Hero/hero.module.scss +0 -180
- package/src/components/sections/ProducDetailsContent/product-details-content.module.scss +0 -41
- package/src/components/ui/SROnly/SROnly.tsx +0 -20
- package/src/components/ui/SROnly/index.ts +0 -1
- package/src/components/ui/SROnly/sr-only.module.scss +0 -15
- package/src/components/ui/Toggle/Toggle.stories.mdx +0 -604
- package/src/components/ui/Toggle/Toggle.tsx +0 -75
- package/src/components/ui/Toggle/index.ts +0 -2
- package/src/components/ui/Toggle/toggle.module.scss +0 -200
|
@@ -196,7 +196,7 @@ export const useShippingSimulation = (shippingItem: IShippingItem) => {
|
|
|
196
196
|
},
|
|
197
197
|
})
|
|
198
198
|
}
|
|
199
|
-
}, [shippingPostalCode])
|
|
199
|
+
}, [country, shippingItem, shippingPostalCode])
|
|
200
200
|
|
|
201
201
|
const handleOnInput = useCallback((e: ChangeEvent<HTMLInputElement>) => {
|
|
202
202
|
const currentValue = e.currentTarget.value
|
package/src/pages/[...slug].tsx
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { isNotFoundError } from '@faststore/api'
|
|
2
|
+
import { gql } from '@faststore/graphql-utils'
|
|
3
|
+
import type { SearchState } from '@faststore/sdk'
|
|
2
4
|
import {
|
|
3
5
|
formatSearchState,
|
|
4
6
|
parseSearchState,
|
|
5
7
|
SearchProvider,
|
|
6
8
|
} from '@faststore/sdk'
|
|
7
|
-
import {
|
|
9
|
+
import type { GetStaticPaths, GetStaticProps } from 'next'
|
|
8
10
|
import { BreadcrumbJsonLd, NextSeo } from 'next-seo'
|
|
9
11
|
import { useRouter } from 'next/router'
|
|
10
12
|
import { useMemo } from 'react'
|
|
11
|
-
import type { SearchState } from '@faststore/sdk'
|
|
12
|
-
import type { GetStaticPaths, GetStaticProps } from 'next'
|
|
13
13
|
|
|
14
|
+
import type {
|
|
15
|
+
ServerCollectionPageQueryQuery,
|
|
16
|
+
ServerCollectionPageQueryQueryVariables,
|
|
17
|
+
} from '@generated/graphql'
|
|
14
18
|
import Breadcrumb from 'src/components/sections/Breadcrumb'
|
|
15
19
|
import Hero from 'src/components/sections/Hero'
|
|
16
20
|
import ProductGallery from 'src/components/sections/ProductGallery'
|
|
@@ -21,10 +25,6 @@ import { ITEMS_PER_PAGE, ITEMS_PER_SECTION } from 'src/constants'
|
|
|
21
25
|
import { useApplySearchState } from 'src/sdk/search/state'
|
|
22
26
|
import { mark } from 'src/sdk/tests/mark'
|
|
23
27
|
import { execute } from 'src/server'
|
|
24
|
-
import type {
|
|
25
|
-
ServerCollectionPageQueryQuery,
|
|
26
|
-
ServerCollectionPageQueryQueryVariables,
|
|
27
|
-
} from '@generated/graphql'
|
|
28
28
|
|
|
29
29
|
import storeConfig from '../../faststore.config'
|
|
30
30
|
|
|
@@ -105,7 +105,7 @@ function Page(props: Props) {
|
|
|
105
105
|
subtitle={`All the amazing ${title} from the brands we partner with.`}
|
|
106
106
|
imageSrc="https://storeframework.vtexassets.com/arquivos/ids/190897/Photo.jpg"
|
|
107
107
|
imageAlt="Quest 2 Controller on a table"
|
|
108
|
-
icon={<Icon name="Headphones" width={48} height={48}
|
|
108
|
+
icon={<Icon name="Headphones" width={48} height={48} />}
|
|
109
109
|
/>
|
|
110
110
|
|
|
111
111
|
<ProductGallery title={title} />
|
package/src/pages/s.tsx
CHANGED
|
@@ -3,10 +3,10 @@ import { NextSeo } from 'next-seo'
|
|
|
3
3
|
import { useRouter } from 'next/router'
|
|
4
4
|
import { useEffect, useState } from 'react'
|
|
5
5
|
import type { SearchState } from '@faststore/sdk'
|
|
6
|
+
import { SROnly as UISROnly } from '@faststore/ui'
|
|
6
7
|
|
|
7
8
|
import Breadcrumb from 'src/components/sections/Breadcrumb'
|
|
8
9
|
import ProductGallery from 'src/components/sections/ProductGallery'
|
|
9
|
-
import SROnly from 'src/components/ui/SROnly'
|
|
10
10
|
import { ITEMS_PER_PAGE } from 'src/constants'
|
|
11
11
|
import { useApplySearchState } from 'src/sdk/search/state'
|
|
12
12
|
import { mark } from 'src/sdk/tests/mark'
|
|
@@ -55,7 +55,7 @@ function Page() {
|
|
|
55
55
|
}}
|
|
56
56
|
/>
|
|
57
57
|
|
|
58
|
-
<
|
|
58
|
+
<UISROnly as="h1" text={title} />
|
|
59
59
|
|
|
60
60
|
{/*
|
|
61
61
|
WARNING: Do not import or render components from any
|
|
@@ -27,7 +27,6 @@ class ErrorBoundary extends Component<{ children: ReactNode }> {
|
|
|
27
27
|
|
|
28
28
|
// We can't accurately type the error here, since it could vary depending on
|
|
29
29
|
// what caused it. This is not standardized.
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
30
|
public componentDidCatch(error: any, errorInfo: ErrorInfo) {
|
|
32
31
|
console.error(`React Error: ${error.message} ${errorInfo.componentStack}`)
|
|
33
32
|
|
package/src/server/cms.ts
CHANGED
|
@@ -15,7 +15,6 @@ type Options =
|
|
|
15
15
|
filters?: Record<string, string>
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
18
|
const isLocator = (x: any): x is Locator =>
|
|
20
19
|
typeof x.contentType === 'string' &&
|
|
21
20
|
(typeof x.releaseId === 'string' || typeof x.documentId === 'string')
|
package/vtex.env
CHANGED
|
@@ -5,10 +5,10 @@ NEXT_TELEMETRY_DISABLED=true
|
|
|
5
5
|
## Enable re-using node_modules from previous runs for faster builds
|
|
6
6
|
USE_BUILD_CACHE=true
|
|
7
7
|
|
|
8
|
-
## Enable Incremental Static Builds (ISB):
|
|
8
|
+
## Enable Incremental Static Builds (ISB):
|
|
9
9
|
## https://www.faststore.dev/releases/2022/05/19/webops
|
|
10
10
|
USE_STALE_CACHE=true
|
|
11
11
|
|
|
12
|
-
## Production site host your users will
|
|
12
|
+
## Production site host your users will
|
|
13
13
|
## access your website
|
|
14
14
|
SITE_HOST=demo.faststore.dev
|
package/.eslintignore
DELETED
package/.eslintrc
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"vtex-react/gatsby",
|
|
4
|
-
"next/core-web-vitals"
|
|
5
|
-
],
|
|
6
|
-
"root": true,
|
|
7
|
-
"rules": {
|
|
8
|
-
"react/prop-types": "off",
|
|
9
|
-
"react/react-in-jsx-scope": "off",
|
|
10
|
-
"jsx-a11y/anchor-is-valid": "off"
|
|
11
|
-
},
|
|
12
|
-
"settings": {
|
|
13
|
-
"react": {
|
|
14
|
-
"version": "detect"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"ignorePatterns": [
|
|
18
|
-
"public/~partytown/*",
|
|
19
|
-
"next-env.d.ts"
|
|
20
|
-
]
|
|
21
|
-
}
|
package/bun.lockb
DELETED
|
Binary file
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
import { ArgsTable, Canvas, Meta, Story } from '@storybook/addon-docs'
|
|
2
|
-
import { TokenTable, TokenRow } from 'src/../.storybook/components'
|
|
3
|
-
|
|
4
|
-
import Hero from '.'
|
|
5
|
-
import Icon from 'src/components/ui/Icon'
|
|
6
|
-
|
|
7
|
-
<Meta
|
|
8
|
-
title="Organisms/Hero"
|
|
9
|
-
component={Hero}
|
|
10
|
-
argTypes={{
|
|
11
|
-
imageAlt: {
|
|
12
|
-
control: {
|
|
13
|
-
disable: true,
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
imageSrc: {
|
|
17
|
-
control: {
|
|
18
|
-
disable: true,
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
variant: {
|
|
22
|
-
defaultValue: 'primary',
|
|
23
|
-
},
|
|
24
|
-
colorVariant: {
|
|
25
|
-
defaultValue: 'main',
|
|
26
|
-
},
|
|
27
|
-
icon: {
|
|
28
|
-
control: { disable: true },
|
|
29
|
-
},
|
|
30
|
-
}}
|
|
31
|
-
/>
|
|
32
|
-
|
|
33
|
-
export const Template = (args) => <Hero {...args} />
|
|
34
|
-
|
|
35
|
-
<header>
|
|
36
|
-
|
|
37
|
-
# Hero
|
|
38
|
-
|
|
39
|
-
The `Hero` component is a full-width banner presented on the above-the-fold section of a web page with the intent to show the brand's identity and messaging.
|
|
40
|
-
|
|
41
|
-
</header>
|
|
42
|
-
|
|
43
|
-
## Overview
|
|
44
|
-
|
|
45
|
-
The `Hero` component uses [FastStore UI Hero](https://www.faststore.dev/reference/ui/organisms/Hero) as base.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Usage
|
|
50
|
-
|
|
51
|
-
`import Hero from 'src/components/sections/Hero'`
|
|
52
|
-
|
|
53
|
-
<Canvas>
|
|
54
|
-
<Story
|
|
55
|
-
name="usage"
|
|
56
|
-
args={{
|
|
57
|
-
title: 'Explore more about our amazing products',
|
|
58
|
-
subtitle: 'All the amazing products from the brands we partner with.',
|
|
59
|
-
imageSrc:
|
|
60
|
-
'https://storeframework.vtexassets.com/arquivos/ids/190897/Photo.jpg',
|
|
61
|
-
imageAlt: 'Quest 2 Controller on a table',
|
|
62
|
-
link: '/',
|
|
63
|
-
linkText: 'See more',
|
|
64
|
-
}}
|
|
65
|
-
>
|
|
66
|
-
{Template.bind({})}
|
|
67
|
-
</Story>
|
|
68
|
-
</Canvas>
|
|
69
|
-
|
|
70
|
-
<ArgsTable story="usage" />
|
|
71
|
-
|
|
72
|
-
<TokenTable>
|
|
73
|
-
<TokenRow token="--fs-hero-text-size" value="var(--fs-text-size-lead)" />
|
|
74
|
-
<TokenRow token="--fs-hero-text-line-height" value="1.33" />
|
|
75
|
-
</TokenTable>
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Nested Elements
|
|
80
|
-
|
|
81
|
-
### Image
|
|
82
|
-
|
|
83
|
-
<TokenTable>
|
|
84
|
-
<TokenRow token="--fs-hero-image-border-radius" value="0" />
|
|
85
|
-
</TokenTable>
|
|
86
|
-
|
|
87
|
-
### Title
|
|
88
|
-
|
|
89
|
-
<TokenTable>
|
|
90
|
-
<TokenRow
|
|
91
|
-
token="--fs-hero-title-padding"
|
|
92
|
-
value="var(--fs-spacing-5) 0 var(--fs-spacing-6)"
|
|
93
|
-
/>
|
|
94
|
-
<TokenRow
|
|
95
|
-
token="--fs-hero-title-weight"
|
|
96
|
-
value="var(--fs-text-weight-black)"
|
|
97
|
-
/>
|
|
98
|
-
<TokenRow token="--fs-hero-title-line-height" value="1.1" />
|
|
99
|
-
</TokenTable>
|
|
100
|
-
|
|
101
|
-
### Subtitle
|
|
102
|
-
|
|
103
|
-
<TokenTable>
|
|
104
|
-
<TokenRow
|
|
105
|
-
token="--fs-hero-subtitle-margin-top-mobile"
|
|
106
|
-
value="var(--fs-spacing-2)"
|
|
107
|
-
/>
|
|
108
|
-
<TokenRow
|
|
109
|
-
token="--fs-hero-subtitle-margin-top-tablet"
|
|
110
|
-
value="var(--fs-spacing-4)"
|
|
111
|
-
/>
|
|
112
|
-
<TokenRow token="--fs-hero-subtitle-size" value="var(--fs-hero-text-size)" />
|
|
113
|
-
<TokenRow
|
|
114
|
-
token="--fs-hero-subtitle-line-height"
|
|
115
|
-
value="var(--fs-hero-text-line-height)"
|
|
116
|
-
/>
|
|
117
|
-
</TokenTable>
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## Hierarchy
|
|
122
|
-
|
|
123
|
-
### Primary
|
|
124
|
-
|
|
125
|
-
<Canvas>
|
|
126
|
-
<Story
|
|
127
|
-
name="primary"
|
|
128
|
-
args={{
|
|
129
|
-
variant: 'primary',
|
|
130
|
-
title: 'Explore more about our amazing products',
|
|
131
|
-
subtitle: 'All the amazing products from the brands we partner with.',
|
|
132
|
-
imageSrc:
|
|
133
|
-
'https://storeframework.vtexassets.com/arquivos/ids/190897/Photo.jpg',
|
|
134
|
-
imageAlt: 'Quest 2 Controller on a table',
|
|
135
|
-
}}
|
|
136
|
-
>
|
|
137
|
-
{Template.bind({})}
|
|
138
|
-
</Story>
|
|
139
|
-
</Canvas>
|
|
140
|
-
|
|
141
|
-
<TokenTable>
|
|
142
|
-
<TokenRow token="--fs-hero-primary-image-height-mobile" value="15rem" />
|
|
143
|
-
<TokenRow token="--fs-hero-primary-image-height-desktop" value="29rem" />
|
|
144
|
-
<TokenRow
|
|
145
|
-
token="--fs-hero-primary-title-size"
|
|
146
|
-
value="var(--fs-text-size-title-huge)"
|
|
147
|
-
/>
|
|
148
|
-
</TokenTable>
|
|
149
|
-
|
|
150
|
-
### Secondary
|
|
151
|
-
|
|
152
|
-
<Canvas>
|
|
153
|
-
<Story
|
|
154
|
-
name="secondary"
|
|
155
|
-
args={{
|
|
156
|
-
variant: 'secondary',
|
|
157
|
-
title: 'Explore more about our amazing products',
|
|
158
|
-
subtitle: 'All the amazing products from the brands we partner with.',
|
|
159
|
-
imageSrc:
|
|
160
|
-
'https://storeframework.vtexassets.com/arquivos/ids/190897/Photo.jpg',
|
|
161
|
-
imageAlt: 'Quest 2 Controller on a table',
|
|
162
|
-
icon: <Icon name="House" width="40" height="40" />,
|
|
163
|
-
}}
|
|
164
|
-
>
|
|
165
|
-
{Template.bind({})}
|
|
166
|
-
</Story>
|
|
167
|
-
</Canvas>
|
|
168
|
-
|
|
169
|
-
<TokenTable>
|
|
170
|
-
<TokenRow token="--fs-hero-secondary-image-height-mobile" value="11.25rem" />
|
|
171
|
-
<TokenRow
|
|
172
|
-
token="--fs-hero-secondary-image-height-desktop"
|
|
173
|
-
value="14.188rem"
|
|
174
|
-
/>
|
|
175
|
-
<TokenRow
|
|
176
|
-
token="--fs-hero-secondary-title-size"
|
|
177
|
-
value="var(--fs-text-size-title-page)"
|
|
178
|
-
/>
|
|
179
|
-
</TokenTable>
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## Variants
|
|
184
|
-
|
|
185
|
-
### Main
|
|
186
|
-
|
|
187
|
-
<Canvas>
|
|
188
|
-
<Story
|
|
189
|
-
name="main"
|
|
190
|
-
args={{
|
|
191
|
-
colorVariant: 'main',
|
|
192
|
-
title: 'Explore more about our amazing products',
|
|
193
|
-
subtitle: 'All the amazing products from the brands we partner with.',
|
|
194
|
-
imageSrc:
|
|
195
|
-
'https://storeframework.vtexassets.com/arquivos/ids/190897/Photo.jpg',
|
|
196
|
-
imageAlt: 'Quest 2 Controller on a table',
|
|
197
|
-
}}
|
|
198
|
-
>
|
|
199
|
-
{Template.bind({})}
|
|
200
|
-
</Story>
|
|
201
|
-
</Canvas>
|
|
202
|
-
|
|
203
|
-
<TokenTable>
|
|
204
|
-
<TokenRow
|
|
205
|
-
token="--fs-hero-main-bkg-color"
|
|
206
|
-
value="var(--fs-color-primary-bkg)"
|
|
207
|
-
isColor
|
|
208
|
-
/>
|
|
209
|
-
<TokenRow
|
|
210
|
-
token="--fs-hero-main-text-color"
|
|
211
|
-
value="var(--fs-color-primary-text)"
|
|
212
|
-
isColor
|
|
213
|
-
/>
|
|
214
|
-
</TokenTable>
|
|
215
|
-
|
|
216
|
-
### Light
|
|
217
|
-
|
|
218
|
-
<Canvas>
|
|
219
|
-
<Story
|
|
220
|
-
name="light"
|
|
221
|
-
args={{
|
|
222
|
-
colorVariant: 'light',
|
|
223
|
-
title: 'Explore more about our amazing products',
|
|
224
|
-
subtitle: 'All the amazing products from the brands we partner with.',
|
|
225
|
-
imageSrc:
|
|
226
|
-
'https://storeframework.vtexassets.com/arquivos/ids/190897/Photo.jpg',
|
|
227
|
-
imageAlt: 'Quest 2 Controller on a table',
|
|
228
|
-
}}
|
|
229
|
-
>
|
|
230
|
-
{Template.bind({})}
|
|
231
|
-
</Story>
|
|
232
|
-
</Canvas>
|
|
233
|
-
|
|
234
|
-
<TokenTable>
|
|
235
|
-
<TokenRow
|
|
236
|
-
token="--fs-hero-light-bkg-color"
|
|
237
|
-
value="var(--fs-color-secondary-bkg-light)"
|
|
238
|
-
isColor
|
|
239
|
-
/>
|
|
240
|
-
<TokenRow
|
|
241
|
-
token="--fs-hero-light-text-color"
|
|
242
|
-
value="var(--fs-color-text-display)"
|
|
243
|
-
isColor
|
|
244
|
-
/>
|
|
245
|
-
</TokenTable>
|
|
246
|
-
|
|
247
|
-
### Accent
|
|
248
|
-
|
|
249
|
-
<Canvas>
|
|
250
|
-
<Story
|
|
251
|
-
name="accent"
|
|
252
|
-
args={{
|
|
253
|
-
colorVariant: 'accent',
|
|
254
|
-
title: 'Explore more about our amazing products',
|
|
255
|
-
subtitle: 'All the amazing products from the brands we partner with.',
|
|
256
|
-
imageSrc:
|
|
257
|
-
'https://storeframework.vtexassets.com/arquivos/ids/190897/Photo.jpg',
|
|
258
|
-
imageAlt: 'Quest 2 Controller on a table',
|
|
259
|
-
}}
|
|
260
|
-
>
|
|
261
|
-
{Template.bind({})}
|
|
262
|
-
</Story>
|
|
263
|
-
</Canvas>
|
|
264
|
-
|
|
265
|
-
<TokenTable>
|
|
266
|
-
<TokenRow
|
|
267
|
-
token="--fs-hero-accent-bkg-color"
|
|
268
|
-
value="var(--fs-color-highlighted-bkg)"
|
|
269
|
-
isColor
|
|
270
|
-
/>
|
|
271
|
-
<TokenRow
|
|
272
|
-
token="--fs-hero-accent-text-color"
|
|
273
|
-
value="var(--fs-hero-light-text-color)"
|
|
274
|
-
globalValue="var(--fs-color-text-display)"
|
|
275
|
-
isColor
|
|
276
|
-
/>
|
|
277
|
-
</TokenTable>
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
@import "src/styles/scaffold";
|
|
2
|
-
|
|
3
|
-
.fs-hero {
|
|
4
|
-
// --------------------------------------------------------
|
|
5
|
-
// Design Tokens for Hero Section
|
|
6
|
-
// --------------------------------------------------------
|
|
7
|
-
|
|
8
|
-
// Default properties
|
|
9
|
-
--fs-hero-text-size : var(--fs-text-size-lead);
|
|
10
|
-
--fs-hero-text-line-height : 1.33;
|
|
11
|
-
|
|
12
|
-
// Image
|
|
13
|
-
--fs-hero-image-border-radius : 0;
|
|
14
|
-
|
|
15
|
-
// Title
|
|
16
|
-
--fs-hero-title-padding : var(--fs-spacing-5) 0 var(--fs-spacing-6);
|
|
17
|
-
--fs-hero-title-weight : var(--fs-text-weight-black);
|
|
18
|
-
--fs-hero-title-line-height : 1.1;
|
|
19
|
-
|
|
20
|
-
// Subtitle
|
|
21
|
-
--fs-hero-subtitle-margin-top-mobile : var(--fs-spacing-2);
|
|
22
|
-
--fs-hero-subtitle-margin-top-tablet : var(--fs-spacing-4);
|
|
23
|
-
--fs-hero-subtitle-size : var(--fs-hero-text-size);
|
|
24
|
-
--fs-hero-subtitle-line-height : var(--fs-hero-text-line-height);
|
|
25
|
-
|
|
26
|
-
// Primary
|
|
27
|
-
--fs-hero-primary-image-height-mobile : 15rem; // 240px
|
|
28
|
-
--fs-hero-primary-image-height-desktop : 29rem; // 464px
|
|
29
|
-
--fs-hero-primary-title-size : var(--fs-text-size-title-huge);
|
|
30
|
-
|
|
31
|
-
// Secondary
|
|
32
|
-
--fs-hero-secondary-image-height-mobile : 11.25rem; // 180px
|
|
33
|
-
--fs-hero-secondary-image-height-desktop : 14.188rem; // 227px
|
|
34
|
-
--fs-hero-secondary-title-size : var(--fs-text-size-title-page);
|
|
35
|
-
|
|
36
|
-
// Main
|
|
37
|
-
--fs-hero-main-bkg-color : var(--fs-color-primary-bkg);
|
|
38
|
-
--fs-hero-main-text-color : var(--fs-color-primary-text);
|
|
39
|
-
|
|
40
|
-
// Light
|
|
41
|
-
--fs-hero-light-bkg-color : var(--fs-color-secondary-bkg-light);
|
|
42
|
-
--fs-hero-light-text-color : var(--fs-color-text-display);
|
|
43
|
-
|
|
44
|
-
// Accent
|
|
45
|
-
--fs-hero-accent-bkg-color : var(--fs-color-highlighted-bkg);
|
|
46
|
-
--fs-hero-accent-text-color : var(--fs-hero-light-text-color);
|
|
47
|
-
|
|
48
|
-
// --------------------------------------------------------
|
|
49
|
-
// Structural Styles
|
|
50
|
-
// --------------------------------------------------------
|
|
51
|
-
|
|
52
|
-
display: flex;
|
|
53
|
-
flex-direction: column;
|
|
54
|
-
width: 100%;
|
|
55
|
-
|
|
56
|
-
@include media(">=tablet") {
|
|
57
|
-
position: relative;
|
|
58
|
-
flex-direction: row-reverse;
|
|
59
|
-
justify-content: flex-end;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
[data-fs-hero-image] {
|
|
63
|
-
border-radius: var(--fs-hero-image-border-radius);
|
|
64
|
-
|
|
65
|
-
@include media(">=tablet") {
|
|
66
|
-
position: absolute;
|
|
67
|
-
right: 0;
|
|
68
|
-
width: 50%;
|
|
69
|
-
height: 100%;
|
|
70
|
-
overflow: hidden;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
[data-fs-hero-heading] {
|
|
75
|
-
width: 100%;
|
|
76
|
-
padding: var(--fs-hero-title-padding);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
[data-fs-hero-wrapper] {
|
|
80
|
-
display: flex;
|
|
81
|
-
gap: var(--fs-spacing-3);
|
|
82
|
-
justify-content: space-between;
|
|
83
|
-
|
|
84
|
-
@include media(">=tablet") {
|
|
85
|
-
gap: var(--fs-spacing-1);
|
|
86
|
-
justify-content: flex-start;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
[data-fs-hero-title] {
|
|
91
|
-
font-weight: var(--fs-hero-title-weight);
|
|
92
|
-
line-height: var(--fs-hero-title-line-height);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
[data-fs-hero-subtitle] {
|
|
96
|
-
margin-top: var(--fs-hero-subtitle-margin-top-mobile);
|
|
97
|
-
font-size: var(--fs-hero-subtitle-size);
|
|
98
|
-
line-height: var(--fs-hero-subtitle-line-height);
|
|
99
|
-
|
|
100
|
-
@include media(">=tablet") { margin-top: var(--fs-hero-subtitle-margin-top-tablet); }
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
[data-fs-button] {
|
|
104
|
-
justify-content: space-between;
|
|
105
|
-
min-width: 11.25rem;
|
|
106
|
-
margin-top: var(--fs-spacing-6);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
[data-fs-hero-icon] { color: var(--fs-hero-text-color); }
|
|
110
|
-
|
|
111
|
-
// --------------------------------------------------------
|
|
112
|
-
// Variants Styles
|
|
113
|
-
// --------------------------------------------------------
|
|
114
|
-
|
|
115
|
-
&[data-fs-hero-variant="primary"] {
|
|
116
|
-
@include media(">=tablet") { min-height: var(--fs-hero-primary-image-height-desktop); }
|
|
117
|
-
|
|
118
|
-
[data-fs-hero-title] { font-size: var(--fs-hero-primary-title-size); }
|
|
119
|
-
|
|
120
|
-
[data-fs-hero-heading] {
|
|
121
|
-
@include media(">=tablet") {
|
|
122
|
-
display: flex;
|
|
123
|
-
align-items: center;
|
|
124
|
-
padding: var(--fs-spacing-9) 0;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
[data-fs-button] {
|
|
129
|
-
@include media(">=tablet") { margin-top: var(--fs-spacing-8); }
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
[data-fs-hero-image] {
|
|
133
|
-
@include media("<tablet") { height: var(--fs-hero-primary-image-height-mobile); }
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
[data-fs-hero-info] {
|
|
137
|
-
@include media(">=tablet") {
|
|
138
|
-
width: 46%;
|
|
139
|
-
padding-right: var(--fs-spacing-9);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
&[data-fs-hero-variant="secondary"] {
|
|
145
|
-
@include media(">=tablet") { min-height: var(--fs-hero-secondary-image-height-desktop); }
|
|
146
|
-
|
|
147
|
-
[data-fs-hero-title] { font-size: var(--fs-hero-secondary-title-size); }
|
|
148
|
-
|
|
149
|
-
[data-fs-hero-info] {
|
|
150
|
-
@include media(">=tablet") {
|
|
151
|
-
width: 42%;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
[data-fs-hero-heading] {
|
|
156
|
-
padding: var(--fs-spacing-4) 0 var(--fs-spacing-5);
|
|
157
|
-
|
|
158
|
-
@include media(">=tablet") { padding: var(--fs-spacing-5) 0; }
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
[data-fs-hero-image] {
|
|
162
|
-
@include media("<tablet") { height: var(--fs-hero-secondary-image-height-mobile); }
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
&[data-fs-hero-color-variant="main"] {
|
|
167
|
-
color: var(--fs-hero-main-text-color);
|
|
168
|
-
background-color: var(--fs-hero-main-bkg-color);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
&[data-fs-hero-color-variant="light"] {
|
|
172
|
-
color: var(--fs-hero-light-text-color);
|
|
173
|
-
background-color: var(--fs-hero-light-bkg-color);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
&[data-fs-hero-color-variant="accent"] {
|
|
177
|
-
color: var(--fs-hero-accent-text-color);
|
|
178
|
-
background-color: var(--fs-hero-accent-bkg-color);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
.fs-product-details-content {
|
|
2
|
-
// -----------------------------
|
|
3
|
-
// Table
|
|
4
|
-
// -----------------------------
|
|
5
|
-
|
|
6
|
-
[data-fs-product-details-about] [data-fs-table] {
|
|
7
|
-
width: 100%;
|
|
8
|
-
|
|
9
|
-
[data-fs-accordion-item-button-icon] {
|
|
10
|
-
height: 18px;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
[data-fs-icon] {
|
|
14
|
-
margin-right: var(--fs-spacing-2);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
tr:nth-child(even) td {
|
|
18
|
-
background-color: var(--fs-color-neutral-1);
|
|
19
|
-
border-top-right-radius: var(--fs-border-radius);
|
|
20
|
-
border-bottom-right-radius: var(--fs-border-radius);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
tr:nth-child(even) th {
|
|
24
|
-
background-color: var(--fs-color-neutral-1);
|
|
25
|
-
border-top-left-radius: var(--fs-border-radius);
|
|
26
|
-
border-bottom-left-radius: var(--fs-border-radius);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
td {
|
|
30
|
-
padding: var(--fs-spacing-2) var(--fs-spacing-3) var(--fs-spacing-2) 0;
|
|
31
|
-
text-align: right;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
th {
|
|
35
|
-
display: flex;
|
|
36
|
-
padding: var(--fs-spacing-2) 0 var(--fs-spacing-2) var(--fs-spacing-3);
|
|
37
|
-
font-weight: normal;
|
|
38
|
-
text-align: left;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { ElementType } from 'react'
|
|
2
|
-
|
|
3
|
-
import styles from './sr-only.module.scss'
|
|
4
|
-
|
|
5
|
-
interface Props {
|
|
6
|
-
text: string
|
|
7
|
-
as?: ElementType
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function SROnly({ text, as }: Props) {
|
|
11
|
-
const Component = as ?? 'span'
|
|
12
|
-
|
|
13
|
-
return (
|
|
14
|
-
<Component className={styles.fsSrOnly} data-fs-sr-only>
|
|
15
|
-
{text}
|
|
16
|
-
</Component>
|
|
17
|
-
)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export default SROnly
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './SROnly'
|