@faststore/core 0.3.13 → 0.3.15

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 (33) hide show
  1. package/.eslintrc.json +3 -0
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +1 -1
  4. package/cypress/integration/analytics.test.js +24 -5
  5. package/cypress/integration/cart.test.js +4 -2
  6. package/cypress/integration/plp.test.js +1 -1
  7. package/cypress/integration/search.test.js +6 -1
  8. package/package.json +7 -7
  9. package/src/components/cms/RenderPageSections.tsx +6 -3
  10. package/src/components/common/Footer/Footer.tsx +9 -9
  11. package/src/components/sections/Hero/Hero.tsx +28 -77
  12. package/src/components/ui/Price/Price.tsx +2 -3
  13. package/src/components/ui/ShippingSimulation/useShippingSimulation.ts +1 -1
  14. package/src/customizations/components/index.ts +1 -0
  15. package/src/pages/[...slug].tsx +8 -8
  16. package/src/pages/s.tsx +2 -2
  17. package/src/sdk/error/ErrorBoundary/ErrorBoundary.tsx +0 -1
  18. package/src/sdk/ui/useOnClickOutside.ts +0 -1
  19. package/src/server/cms.ts +0 -1
  20. package/vtex.env +2 -2
  21. package/.eslintignore +0 -8
  22. package/.eslintrc +0 -21
  23. package/bun.lockb +0 -0
  24. package/renovate.json +0 -5
  25. package/src/components/sections/Hero/Hero.stories.mdx +0 -277
  26. package/src/components/sections/Hero/hero.module.scss +0 -180
  27. package/src/components/ui/SROnly/SROnly.tsx +0 -20
  28. package/src/components/ui/SROnly/index.ts +0 -1
  29. package/src/components/ui/SROnly/sr-only.module.scss +0 -15
  30. package/src/components/ui/Toggle/Toggle.stories.mdx +0 -604
  31. package/src/components/ui/Toggle/Toggle.tsx +0 -75
  32. package/src/components/ui/Toggle/index.ts +0 -2
  33. package/src/components/ui/Toggle/toggle.module.scss +0 -200
@@ -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,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'
@@ -1,15 +0,0 @@
1
- .fs-sr-only {
2
- // --------------------------------------------------------
3
- // Structural Styles
4
- // --------------------------------------------------------
5
-
6
- &:not(:focus):not(:active) {
7
- position: absolute;
8
- width: 1px;
9
- height: 1px;
10
- overflow: hidden;
11
- clip: rect(0 0 0 0);
12
- clip-path: inset(50%);
13
- white-space: nowrap;
14
- }
15
- }