@faststore/core 2.0.121-alpha.0 → 2.0.123-alpha.0

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 (91) hide show
  1. package/.turbo/turbo-build.log +15 -16
  2. package/CHANGELOG.md +12 -0
  3. package/package.json +4 -4
  4. package/src/components/cart/CartSidebar/CartSidebar.tsx +6 -2
  5. package/src/components/cart/CartSidebar/section.module.scss +21 -0
  6. package/src/components/cms/GlobalSections.tsx +6 -6
  7. package/src/components/common/Alert/Alert.tsx +8 -3
  8. package/src/components/common/Alert/section.module.scss +9 -0
  9. package/src/components/common/Footer/Footer.tsx +87 -89
  10. package/src/components/common/Footer/FooterLinks.tsx +4 -6
  11. package/src/components/common/Footer/section.module.scss +12 -0
  12. package/src/components/common/RegionBar/RegionBar.tsx +17 -0
  13. package/src/components/common/RegionBar/index.ts +1 -0
  14. package/src/components/common/RegionBar/section.module.scss +8 -0
  15. package/src/components/navigation/Navbar/Navbar.tsx +62 -61
  16. package/src/components/navigation/Navbar/section.module.scss +26 -0
  17. package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +0 -1
  18. package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +11 -7
  19. package/src/components/navigation/NavbarSlider/section.module.scss +26 -0
  20. package/src/components/product/ProductGrid/ProductGrid.tsx +2 -4
  21. package/src/components/region/RegionModal/RegionModal.tsx +6 -1
  22. package/src/components/region/RegionModal/section.module.scss +13 -0
  23. package/src/components/search/Filter/Filter.tsx +6 -3
  24. package/src/components/search/Filter/FilterSlider.tsx +5 -0
  25. package/src/components/search/Filter/section.module.scss +22 -0
  26. package/src/components/sections/BannerNewsletter/BannerNewsletter.tsx +5 -3
  27. package/src/components/sections/BannerNewsletter/section.module.scss +8 -0
  28. package/src/components/sections/BannerText/BannerText.tsx +4 -2
  29. package/src/components/sections/BannerText/section.module.scss +8 -0
  30. package/src/components/sections/Breadcrumb/Breadcrumb.tsx +4 -2
  31. package/src/components/sections/Breadcrumb/section.module.scss +9 -0
  32. package/src/components/sections/Hero/Hero.tsx +5 -9
  33. package/src/components/sections/Hero/section.module.scss +9 -0
  34. package/src/components/sections/{Incentives → IncentivesHeader}/IncentivesHeader.tsx +3 -2
  35. package/src/components/sections/IncentivesHeader/index.ts +1 -0
  36. package/src/components/sections/IncentivesHeader/section.module.scss +8 -0
  37. package/src/components/sections/Newsletter/Newsletter.tsx +68 -69
  38. package/src/components/sections/Newsletter/section.module.scss +11 -0
  39. package/src/components/sections/ProducDetailsContent/ProductDetailsContent.tsx +2 -4
  40. package/src/components/sections/ProductDetails/ProductDetails.tsx +44 -43
  41. package/src/components/sections/ProductDetails/section.module.scss +27 -0
  42. package/src/components/sections/ProductGallery/ProductGallery.tsx +121 -119
  43. package/src/components/sections/ProductGallery/section.module.scss +28 -0
  44. package/src/components/sections/ProductShelf/ProductShelf.tsx +8 -4
  45. package/src/components/sections/ProductShelf/section.module.scss +17 -0
  46. package/src/components/sections/ProductTiles/ProductTiles.tsx +9 -4
  47. package/src/components/sections/ProductTiles/section.module.scss +17 -0
  48. package/src/components/sections/ScrollToTopButton/ScrollToTopButton.tsx +3 -3
  49. package/src/components/sections/ScrollToTopButton/section.module.scss +11 -0
  50. package/src/components/skeletons/FilterSkeleton/FilterSkeleton.tsx +1 -2
  51. package/src/components/skeletons/ProductCardSkeleton/ProductCardSkeleton.tsx +0 -3
  52. package/src/components/skeletons/ProductShelfSkeleton/ProductShelfSkeleton.tsx +2 -2
  53. package/src/components/skeletons/ProductTilesSkeleton/ProductTileSkeleton/ProductTileSkeleton.tsx +0 -3
  54. package/src/components/ui/BannerText/BannerText.tsx +0 -3
  55. package/src/components/ui/Button/ButtonSignIn/ButtonSignIn.tsx +1 -2
  56. package/src/components/{sections → ui}/Incentives/Incentives.tsx +0 -3
  57. package/src/components/ui/Incentives/incentivesMock.ts +27 -0
  58. package/src/components/ui/Logo/Logo.tsx +1 -10
  59. package/src/components/ui/Tiles/Tiles.tsx +1 -6
  60. package/src/pages/[slug]/p.tsx +1 -1
  61. package/src/pages/_app.tsx +2 -2
  62. package/src/pages/index.tsx +2 -2
  63. package/src/styles/global/components.scss +8 -0
  64. package/src/styles/themes/midnight.scss +1 -1
  65. package/src/components/common/Footer/Footer.stories.mdx +0 -158
  66. package/src/components/common/Footer/footer.module.scss +0 -220
  67. package/src/components/sections/BannerNewsletter/banner-newsletter.module.scss +0 -23
  68. package/src/components/sections/Incentives/Incentives.stories.mdx +0 -159
  69. package/src/components/sections/Incentives/IncentivesFooter.tsx +0 -8
  70. package/src/components/sections/Incentives/incentives.module.scss +0 -122
  71. package/src/components/sections/Incentives/incentivesMock.ts +0 -55
  72. package/src/components/sections/Newsletter/Newsletter.stories.mdx +0 -139
  73. package/src/components/sections/Newsletter/newsletter.module.scss +0 -135
  74. package/src/components/sections/ProductDetails/product-details.module.scss +0 -185
  75. package/src/components/sections/ProductGallery/product-gallery.module.scss +0 -184
  76. package/src/components/sections/ScrollToTopButton/scroll-to-top-button.module.scss +0 -12
  77. package/src/components/skeletons/FilterSkeleton/FilterSkeleton.stories.mdx +0 -97
  78. package/src/components/skeletons/FilterSkeleton/filter-skeleton.module.scss +0 -51
  79. package/src/components/skeletons/ProductCardSkeleton/ProductCardSkeleton.stories.mdx +0 -113
  80. package/src/components/skeletons/ProductCardSkeleton/product-card-skeleton.module.scss +0 -58
  81. package/src/components/skeletons/ProductTilesSkeleton/ProductTileSkeleton/product-tile-skeleton.module.scss +0 -81
  82. package/src/components/ui/BannerText/BannerText.stories.mdx +0 -270
  83. package/src/components/ui/BannerText/banner-text.module.scss +0 -127
  84. package/src/components/ui/Button/Button.stories.mdx +0 -643
  85. package/src/components/ui/Button/button.module.scss +0 -11
  86. package/src/components/ui/Carousel/Carousel.stories.mdx +0 -201
  87. package/src/components/ui/Carousel/carousel.module.scss +0 -147
  88. package/src/components/ui/Logo/logo.module.scss +0 -12
  89. package/src/components/ui/Tiles/Tiles.stories.mdx +0 -151
  90. package/src/components/ui/Tiles/tiles.module.scss +0 -58
  91. /package/src/components/{sections → ui}/Incentives/index.ts +0 -0
@@ -1,185 +0,0 @@
1
- @import "src/styles/scaffold";
2
-
3
- .fs-product-details {
4
- // --------------------------------------------------------
5
- // Design Tokens for Product Details
6
- // --------------------------------------------------------
7
-
8
- // Default properties
9
- --fs-product-details-vertical-spacing : var(--fs-spacing-4);
10
-
11
- --fs-product-details-section-border-radius : var(--fs-border-radius);
12
- --fs-product-details-section-border-color : var(--fs-border-color-light);
13
- --fs-product-details-section-border-width : var(--fs-border-width);
14
-
15
- // --------------------------------------------------------
16
- // Structural Styles
17
- // --------------------------------------------------------
18
-
19
- margin-top: 0;
20
-
21
- [data-fs-product-details-body] {
22
- display: flex;
23
- flex-direction: column;
24
- row-gap: var(--fs-product-details-vertical-spacing);
25
-
26
- @include media(">=tablet") {
27
- display: grid;
28
- grid-template-columns: repeat(12, 1fr);
29
- row-gap: 0;
30
- column-gap: var(--fs-product-details-vertical-spacing);
31
- }
32
- }
33
-
34
- [data-fs-product-details-section] {
35
- height: fit-content;
36
-
37
- [data-fs-buy-button] {
38
- width: 100%;
39
- margin-top: var(--fs-spacing-3);
40
- }
41
-
42
- [data-fs-price] {
43
- display: block;
44
-
45
- &[data-fs-price-variant="spot"] {
46
- margin: 0;
47
- font-weight: var(--fs-text-weight-black);
48
- }
49
- }
50
-
51
- @include media(">=tablet") {
52
- padding: var(--fs-spacing-3);
53
- border: var(--fs-product-details-section-border-width) solid var(--fs-product-details-section-border-color);
54
-
55
- &:not(:first-child) {
56
- border-top: 0;
57
- }
58
- }
59
-
60
- @include media(">=notebook") {
61
- padding: var(--fs-product-details-vertical-spacing) var(--fs-spacing-5);
62
- }
63
- }
64
-
65
- [data-fs-product-details-title],
66
- [data-fs-product-details-info] {
67
- @include media(">=tablet") {
68
- grid-column: 8 / span 5;
69
- height: 100%;
70
- }
71
-
72
- @include media(">=notebook") {
73
- grid-column: 9 / span 4;
74
- }
75
- }
76
-
77
- // -----------------------------
78
- // Title Section
79
- // -----------------------------
80
-
81
- [data-fs-product-details-title] {
82
- @include media(">=tablet") {
83
- border-bottom: 0;
84
- border-radius: var(--fs-product-details-section-border-radius) var(--fs-product-details-section-border-radius) 0 0;
85
- }
86
- }
87
-
88
- // -----------------------------
89
- // Info Section
90
- // -----------------------------
91
-
92
- [data-fs-product-details-info] {
93
- display: flex;
94
- flex-direction: column;
95
- row-gap: var(--fs-product-details-vertical-spacing);
96
-
97
- @include media(">=tablet") {
98
- grid-row: span 5;
99
- row-gap: 0;
100
- }
101
- }
102
-
103
- // Settings
104
-
105
- [data-fs-product-details-settings] {
106
- display: flex;
107
- flex-direction: column;
108
- row-gap: var(--fs-product-details-vertical-spacing);
109
- }
110
-
111
- [data-fs-product-details-selectors] {
112
- display: flex;
113
- flex-direction: column;
114
- row-gap: var(--fs-product-details-vertical-spacing);
115
- }
116
-
117
- [data-fs-product-details-values] {
118
- display: flex;
119
- justify-content: space-between;
120
- }
121
-
122
- // Shipping
123
-
124
- [data-fs-product-details-shipping] {
125
- @include media(">=tablet") {
126
- border-radius: 0 0 var(--fs-product-details-section-border-radius) var(--fs-product-details-section-border-radius);
127
- }
128
- }
129
-
130
- // -----------------------------
131
- // Gallery Section
132
- // -----------------------------
133
-
134
- [data-fs-product-details-gallery] {
135
- @include media(">=tablet") {
136
- grid-row: 1 / span 3;
137
- grid-column: span 7;
138
- max-height: 23.75rem;
139
- }
140
-
141
- @include media(">tablet", "<notebook") {
142
- max-height: 35rem;
143
- }
144
-
145
- @include media(">=notebook") {
146
- max-height: 33.125rem;
147
- }
148
-
149
- &[data-fs-image-gallery="without-selector"] {
150
- @include media(">=notebook") {
151
- grid-row-end: span 4;
152
- grid-column: span 8;
153
- }
154
- }
155
-
156
- &[data-fs-image-gallery="with-selector"] {
157
- @include media(">=notebook") {
158
- grid-row: 1 / span 4;
159
- grid-column: span 8;
160
- }
161
- }
162
- }
163
-
164
- // -----------------------------
165
- // Content Section
166
- // -----------------------------
167
-
168
- [data-fs-product-details-content] {
169
- @include media(">=tablet") {
170
- grid-row: span 10;
171
- grid-column: span 7;
172
- margin-top: var(--fs-spacing-7);
173
- }
174
-
175
- @include media(">=notebook") {
176
- grid-column: span 8;
177
- }
178
- }
179
-
180
- [data-fs-image-gallery="with-selector"] ~ [data-fs-product-details-content] {
181
- @include media(">=notebook") {
182
- grid-column: 2 / 9;
183
- }
184
- }
185
- }
@@ -1,184 +0,0 @@
1
- @import "src/styles/scaffold";
2
-
3
- .fs-product-listing {
4
- --product-listing-row-height: var(--fs-spacing-6);
5
-
6
- height: 100%;
7
- padding-top: 0;
8
-
9
- [data-fs-empty-state] {
10
- margin: var(--fs-spacing-3) 0;
11
- }
12
-
13
- @include media(">=notebook") {
14
- padding-top: var(--fs-spacing-5);
15
-
16
- [data-fs-empty-state] {
17
- margin: 0 0 var(--fs-spacing-5);
18
- }
19
- }
20
-
21
- [data-fs-product-listing-search-term] {
22
- @include media(">=notebook") {
23
- padding-bottom: var(--fs-spacing-6);
24
- }
25
-
26
- h1 {
27
- font-size: var(--fs-text-size-4);
28
-
29
- @include media(">=tablet") { font-size: var(--fs-text-size-5); }
30
-
31
- span {
32
- font-weight: var(--fs-text-weight-bold);
33
- }
34
- }
35
- }
36
-
37
- [data-fs-product-listing-content-grid] {
38
- display: flex;
39
- flex-direction: column;
40
- height: 100%;
41
- padding-right: 0;
42
- padding-left: 0;
43
-
44
- @include media(">=notebook") {
45
- display: grid;
46
- grid-template-rows: var(--product-listing-row-height) auto;
47
- grid-template-columns: repeat(12, 1fr);
48
- row-gap: var(--fs-spacing-0);
49
- column-gap: var(--fs-spacing-4);
50
- padding-right: var(--fs-grid-padding);
51
- padding-left: var(--fs-grid-padding);
52
- }
53
- }
54
-
55
- [data-fs-product-listing-filters] {
56
- @include media(">=notebook") {
57
- position: sticky;
58
- top: var(--fs-grid-gap-2);
59
- grid-row: span 2;
60
- grid-column: 1 / span 3;
61
- align-self: start;
62
- }
63
- }
64
-
65
- [data-fs-product-listing-sort] {
66
- display: flex;
67
- align-items: center;
68
- justify-content: space-between;
69
- order: 1;
70
- width: 100%;
71
- min-height: rem(68px);
72
- padding: var(--fs-spacing-1) var(--fs-spacing-3) var(--fs-spacing-2);
73
- background-color: var(--fs-color-body-bkg);
74
-
75
- [data-fs-product-listing-sort-skeleton] {
76
- min-width: rem(225px);
77
- min-height: var(--fs-spacing-5);
78
- }
79
-
80
- @include media(">=notebook") {
81
- grid-column: 6 / span 7;
82
- justify-content: flex-end;
83
- order: unset;
84
- min-height: initial;
85
- padding: 0;
86
-
87
- [data-fs-button] {
88
- display: none;
89
- }
90
-
91
- [data-fs-product-listing-filter-button-skeleton] {
92
- display: none;
93
- }
94
- }
95
- }
96
-
97
- [data-fs-product-listing-results-count] {
98
- display: flex;
99
- align-items: center;
100
- justify-content: center;
101
- order: 2;
102
- min-height: rem(45px);
103
- padding: var(--fs-spacing-2) var(--fs-spacing-3);
104
- background-color: var(--fs-color-neutral-bkg);
105
-
106
- @include media(">=notebook") {
107
- grid-column: 4 /span 2;
108
- justify-content: left;
109
- order: unset;
110
- min-height: initial;
111
- padding: 0;
112
- background-color: unset;
113
- }
114
-
115
- [data-fs-product-listing-results-count-skeleton] {
116
- min-width: rem(130px);
117
- }
118
- }
119
-
120
- [data-fs-product-listing-results] {
121
- --padding: var(--fs-spacing-1);
122
-
123
- order: 3;
124
- padding: var(--padding) var(--padding) 0;
125
- background-color: var(--fs-color-neutral-bkg);
126
-
127
- @include media(">=notebook") {
128
- grid-column: 4 / span 9;
129
- order: unset;
130
- padding: 0;
131
- background-color: unset;
132
- }
133
-
134
- [data-fs-product-card] { min-width: 100%; }
135
- }
136
-
137
- [data-fs-product-listing-sponsored] {
138
- padding: var(--fs-spacing-4) var(--fs-spacing-3);
139
- margin: var(--fs-spacing-1) calc(-1 * var(--padding));
140
- background-color: var(--fs-color-body-bkg);
141
-
142
- @include media(">=notebook") {
143
- padding: 0;
144
- margin: var(--fs-spacing-6) 0;
145
-
146
- [data-fs-tiles] {
147
- row-gap: 0;
148
- column-gap: var(--fs-grid-gap-2);
149
- }
150
- }
151
-
152
- h3 { margin-bottom: var(--fs-spacing-1); }
153
- }
154
-
155
- [data-fs-product-listing-pagination] {
156
- display: flex;
157
- align-items: center;
158
- justify-content: center;
159
- min-height: var(--fs-spacing-13);
160
- padding: var(--fs-spacing-4);
161
- margin-right: calc(-1 * var(--padding));
162
- margin-left: calc(-1 * var(--padding));
163
-
164
- @include media(">=notebook") {
165
- padding: var(--fs-spacing-1) var(--fs-spacing-2);
166
- }
167
-
168
- [data-fs-button] {
169
- width: 100%;
170
-
171
- @include media(">=notebook") {
172
- width: fit-content;
173
- }
174
- }
175
- }
176
-
177
- [data-fs-product-listing-pagination="top"] {
178
- margin-bottom: var(--padding);
179
- }
180
-
181
- [data-fs-product-listing-pagination="bottom"] {
182
- margin-top: var(--padding);
183
- }
184
- }
@@ -1,12 +0,0 @@
1
- @import "src/styles/scaffold";
2
-
3
- .fs-scroll-to-top-button {
4
- display: flex;
5
- justify-content: center;
6
- width: 100%;
7
- padding-bottom: var(--fs-spacing-10);
8
-
9
- @include media(">=notebook") {
10
- padding-bottom: var(--fs-spacing-8);
11
- }
12
- }
@@ -1,97 +0,0 @@
1
- import { Meta, Canvas, Story, ArgsTable } from '@storybook/addon-docs'
2
- import {
3
- TokenTable,
4
- TokenRow,
5
- TokenDivider,
6
- } from 'src/../.storybook/components'
7
- import FilterSkeleton from '.'
8
-
9
- <Meta
10
- component={FilterSkeleton}
11
- title="Features/Skeletons/FilterSkeleton"
12
- argTypes={{
13
- loading: {
14
- control: 'boolean',
15
- table: { type: 'boolean', summary: true },
16
- },
17
- }}
18
- />
19
-
20
- export const TemplateFilterSkeleton = ({ ...args }) => (
21
- <FilterSkeleton {...args} />
22
- )
23
-
24
- <header>
25
-
26
- # Filter Skeleton
27
-
28
- The loading placeholder for the <code>Filter</code> component used in PLP.
29
-
30
- </header>
31
-
32
- ## Overview
33
-
34
- The `FilterSkeleton` component is part of Skeletons feature.
35
-
36
- ---
37
-
38
- ## Usage
39
-
40
- `import FilterSkeleton from 'src/components/skeletons/FilterSkeleton'`
41
-
42
- <Canvas className="canvas-filter-skeleton">
43
- <Story name="Usage" args={{ loading: true }}>
44
- {TemplateFilterSkeleton.bind({})}
45
- </Story>
46
- </Canvas>
47
-
48
- <ArgsTable story="Usage" />
49
-
50
- ---
51
-
52
- <TokenTable>
53
- <TokenRow
54
- token="--fs-filter-skeleton-margin-top"
55
- value="var(--fs-spacing-1)"
56
- />
57
- </TokenTable>
58
-
59
- ### Title
60
-
61
- <TokenTable>
62
- <TokenRow token="--fs-filter-skeleton-title-max-width" value="30%" />
63
- <TokenRow
64
- token="--fs-filter-skeleton-title-margin-bottom"
65
- value="var(--fs-spacing-2)"
66
- />
67
- </TokenTable>
68
-
69
- ### Content
70
-
71
- <TokenTable>
72
- <TokenRow
73
- token="--fs-filter-skeleton-content-min-height"
74
- value="var(--fs-spacing-8)"
75
- />
76
- <TokenRow
77
- token="--fs-filter-skeleton-content-margin-bottom"
78
- value="var(--fs-spacing-0)"
79
- />
80
- <TokenRow
81
- token="--fs-filter-skeleton-content-padding"
82
- value="var(--fs-spacing-1) var(--fs-spacing-1) var(--fs-spacing-0)"
83
- />
84
- <TokenRow
85
- token="--fs-filter-skeleton-content-border-width"
86
- value="var(--fs-border-width)"
87
- />
88
- <TokenRow
89
- token="--fs-filter-skeleton-content-border-color"
90
- value="var(--fs-border-color-light)"
91
- isColor
92
- />
93
- <TokenRow
94
- token="--fs-filter-skeleton-content-border-radius"
95
- value="var(--fs-border-radius)"
96
- />
97
- </TokenTable>
@@ -1,51 +0,0 @@
1
- @import "src/styles/scaffold";
2
-
3
- .fs-filter-skeleton {
4
- // --------------------------------------------------------
5
- // Design Tokens for Filter Skeleton
6
- // --------------------------------------------------------
7
-
8
- // Default properties
9
- --fs-filter-skeleton-margin-top : var(--fs-spacing-1);
10
-
11
- // Title
12
- --fs-filter-skeleton-title-max-width : 30%;
13
- --fs-filter-skeleton-title-margin-bottom : var(--fs-spacing-2);
14
-
15
- // Content
16
- --fs-filter-skeleton-content-min-height : var(--fs-spacing-8);
17
- --fs-filter-skeleton-content-margin-bottom : var(--fs-spacing-0);
18
- --fs-filter-skeleton-content-padding : var(--fs-spacing-1) var(--fs-spacing-1) var(--fs-spacing-0);
19
- --fs-filter-skeleton-content-border-color : var(--fs-border-color-light);
20
- --fs-filter-skeleton-content-border-width : var(--fs-border-width);
21
- --fs-filter-skeleton-content-border-radius : var(--fs-border-radius);
22
-
23
- // --------------------------------------------------------
24
- // Structural Styles
25
- // --------------------------------------------------------
26
-
27
- margin-top: var(--fs-filter-skeleton-margin-top);
28
-
29
- @include media("<notebook") { display: none; }
30
-
31
- [data-fs-filter-skeleton-text] {
32
- max-width: var(--fs-filter-skeleton-title-max-width);
33
- margin-bottom: var(--fs-filter-skeleton-title-margin-bottom);
34
- }
35
-
36
- [data-fs-filter-skeleton-content] {
37
- position: relative;
38
- display: flex;
39
- flex-direction: column;
40
- padding: var(--fs-filter-skeleton-content-padding);
41
- overflow: hidden;
42
- border: var(--fs-filter-skeleton-content-border-width) solid var(--fs-filter-skeleton-content-border-color);
43
- border-radius: var(--fs-filter-skeleton-content-border-radius);
44
-
45
- [data-fs-skeleton] {
46
- min-width: 100%;
47
- min-height: var(--fs-filter-skeleton-content-min-height);
48
- margin-bottom: var(--fs-filter-skeleton-content-margin-bottom);
49
- }
50
- }
51
- }
@@ -1,113 +0,0 @@
1
- import { Meta, Canvas, Story, ArgsTable } from '@storybook/addon-docs'
2
- import {
3
- TokenTable,
4
- TokenRow,
5
- TokenDivider,
6
- } from 'src/../.storybook/components'
7
- import ProductCardSkeleton from '.'
8
-
9
- <Meta
10
- component={ProductCardSkeleton}
11
- title="Features/Skeletons/ProductCardSkeleton"
12
- argTypes={{
13
- bordered: {
14
- control: 'boolean',
15
- table: { type: 'boolean' },
16
- },
17
- sectioned: {
18
- control: 'boolean',
19
- table: { type: 'boolean' },
20
- },
21
- displayButton: {
22
- control: 'boolean',
23
- table: { type: 'boolean' },
24
- },
25
- }}
26
- />
27
-
28
- export const TemplateProductCardSkeleton = ({ ...args }) => (
29
- <ProductCardSkeleton {...args} />
30
- )
31
-
32
- <header>
33
-
34
- # Product Card Skeleton
35
-
36
- The loading placeholder for the <code>ProductCard</code> used in several sections of the store.
37
-
38
- </header>
39
-
40
- ## Overview
41
-
42
- The `ProductCardSkeleton` component is part of Skeletons feature.
43
-
44
- ---
45
-
46
- ## Usage
47
-
48
- `import ProductCardSkeleton from 'src/components/skeletons/ProductCardSkeleton'`
49
-
50
- <Canvas className="canvas-product-card-skeleton">
51
- <Story
52
- name="Usage"
53
- args={{
54
- bordered: false,
55
- sectioned: false,
56
- variant: 'default',
57
- displayButton: false,
58
- }}
59
- >
60
- {TemplateProductCardSkeleton.bind({})}
61
- </Story>
62
- </Canvas>
63
-
64
- <ArgsTable story="Usage" />
65
-
66
- <TokenTable>
67
- <TokenRow
68
- token="--fs-product-card-skeleton-padding"
69
- value="var(--fs-spacing-1) var(--fs-spacing-1) var(--fs-spacing-2)"
70
- />
71
- <TokenRow
72
- token="--fs-product-card-skeleton-border-radius"
73
- value="var(--fs-border-radius)"
74
- />
75
- <TokenRow
76
- token="--fs-product-card-skeleton-gap"
77
- value="var(--fs-spacing-1)"
78
- />
79
- </TokenTable>
80
-
81
- ---
82
-
83
- ## Variants
84
-
85
- ### Sectioned
86
-
87
- <Canvas className="canvas-product-card-skeleton">
88
- <Story name="Sectioned" args={{ sectioned: true }}>
89
- {TemplateProductCardSkeleton.bind({})}
90
- </Story>
91
- </Canvas>
92
-
93
- <TokenTable>
94
- <TokenRow
95
- token="--fs-product-card-skeleton-sectioned-min-width"
96
- value="10rem"
97
- />
98
- </TokenTable>
99
-
100
- ### Bordered
101
-
102
- <Canvas className="canvas-product-card-skeleton">
103
- <Story name="Bordered" args={{ bordered: true }}>
104
- {TemplateProductCardSkeleton.bind({})}
105
- </Story>
106
- </Canvas>
107
-
108
- <TokenTable>
109
- <TokenRow
110
- token="--fs-product-card-skeleton-bordered"
111
- value="var(--fs-border-width) solid var(--fs-border-color-light)"
112
- />
113
- </TokenTable>
@@ -1,58 +0,0 @@
1
- @import "src/styles/scaffold";
2
-
3
- .fs-product-card-skeleton {
4
- // --------------------------------------------------------
5
- // Design Tokens for Product Card Skeleton
6
- // --------------------------------------------------------
7
-
8
- // Default properties
9
- --fs-product-card-skeleton-padding : var(--fs-spacing-1) var(--fs-spacing-1) var(--fs-spacing-2);
10
- --fs-product-card-skeleton-border-radius : var(--fs-border-radius);
11
- --fs-product-card-skeleton-gap : var(--fs-spacing-1);
12
-
13
- // Sectioned
14
- --fs-product-card-skeleton-sectioned-min-width : 10rem;
15
-
16
- // Bordered
17
- --fs-product-card-skeleton-bordered : var(--fs-border-width) solid var(--fs-border-color-light);
18
-
19
- // --------------------------------------------------------
20
- // Structural Styles
21
- // --------------------------------------------------------
22
-
23
- position: relative;
24
- display: flex;
25
- flex-direction: column;
26
- row-gap: var(--fs-product-card-skeleton-gap);
27
- padding: var(--fs-product-card-skeleton-padding);
28
- overflow: hidden;
29
- border-radius: var(--fs-product-card-skeleton-border-radius);
30
-
31
- [data-fs-product-card-skeleton-content] {
32
- display: flex;
33
- flex-direction: column;
34
- row-gap: var(--fs-product-card-skeleton-gap);
35
- }
36
-
37
- [data-fs-product-card-skeleton-image] {
38
- aspect-ratio: var(--fs-product-card-skeleton-image-aspect-ratio);
39
-
40
- [data-fs-skeleton-wrapper],
41
- [data-fs-skeleton] {
42
- width: 100%;
43
- height: 100%;
44
- }
45
- }
46
-
47
- // --------------------------------------------------------
48
- // Variants Styles
49
- // --------------------------------------------------------
50
-
51
- &[data-fs-product-card-skeleton-sectioned="true"] {
52
- min-width: var(--fs-product-card-skeleton-sectioned-min-width);
53
- }
54
-
55
- &[data-fs-product-card-skeleton-bordered="true"] {
56
- border: var(--fs-product-card-skeleton-bordered);
57
- }
58
- }