@faststore/ui 2.0.117-alpha.0 → 2.0.122-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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/ui",
3
- "version": "2.0.117-alpha.0",
3
+ "version": "2.0.122-alpha.0",
4
4
  "description": "A lightweight, framework agnostic component library for React",
5
5
  "author": "emersonlaurentino",
6
6
  "license": "MIT",
@@ -58,5 +58,5 @@
58
58
  "node": "16.18.0",
59
59
  "yarn": "1.19.1"
60
60
  },
61
- "gitHead": "0d97039ebb2acb1c000ca9a4c914c2388a4cd49e"
61
+ "gitHead": "253c09ebb08354e8c7fead371d64e97cdf0b204b"
62
62
  }
@@ -0,0 +1,12 @@
1
+ [data-fs-logo] {
2
+ --fs-logo-width : 7rem;
3
+ --fs-logo-img : url("~/public/brandless-neutral.png");
4
+
5
+ display: block;
6
+ width: var(--fs-logo-width);
7
+ height: 100%;
8
+ min-height: var(--fs-spacing-6);
9
+ background: var(--fs-logo-img) no-repeat;
10
+ background-position: center;
11
+ background-size: 100% auto;
12
+ }
@@ -0,0 +1,125 @@
1
+ [data-fs-banner-text] {
2
+ // --------------------------------------------------------
3
+ // Design Tokens for Banner Text
4
+ // --------------------------------------------------------
5
+
6
+ // Default properties
7
+ --fs-banner-padding-mobile : var(--fs-spacing-6) 5%;
8
+ --fs-banner-padding-desktop : var(--fs-spacing-9) 15%;
9
+
10
+ // Button Link
11
+ --fs-banner-button-link-min-width : 11.25rem;
12
+ --fs-banner-button-link-margin-top : var(--fs-spacing-6);
13
+
14
+ // Title
15
+ --fs-banner-title-size : var(--fs-text-size-lead);
16
+ --fs-banner-title-weight : var(--fs-text-weight-bold);
17
+ --fs-banner-title-line-height : 1.2;
18
+
19
+ // Primary
20
+ --fs-banner-primary-title-size : var(--fs-text-size-title-page);
21
+
22
+ // Secondary
23
+ --fs-banner-secondary-title-size : var(--fs-text-size-4);
24
+ --fs-banner-secondary-caption-size : var(--fs-text-size-base);
25
+ --fs-banner-secondary-caption-weight : var(--fs-text-weight-regular);
26
+ --fs-banner-secondary-caption-line-height : 1.5;
27
+
28
+ // Main
29
+ --fs-banner-main-bkg-color : var(--fs-color-primary-bkg);
30
+ --fs-banner-main-text-color : var(--fs-color-primary-text);
31
+
32
+ // Light
33
+ --fs-banner-light-bkg-color : var(--fs-color-secondary-bkg-light);
34
+ --fs-banner-light-text-color : var(--fs-color-text-display);
35
+
36
+ // Accent
37
+ --fs-banner-accent-bkg-color : var(--fs-color-highlighted-bkg);
38
+ --fs-banner-accent-text-color : var(--fs-banner-light-text-color);
39
+
40
+ // --------------------------------------------------------
41
+ // Structural Styles
42
+ // --------------------------------------------------------
43
+
44
+ height: 100%;
45
+ padding: var(--fs-banner-padding-mobile);
46
+ text-align: center;
47
+
48
+ @include media(">=notebook") {
49
+ padding: var(--fs-banner-padding-desktop);
50
+ }
51
+
52
+ [data-fs-banner-text-content] {
53
+ display: flex;
54
+ flex-direction: column;
55
+ align-items: center;
56
+ justify-content: center;
57
+ height: 100%;
58
+ }
59
+
60
+ [data-fs-banner-text-link] [data-fs-link-button] {
61
+ min-width: var(--fs-banner-button-link-min-width);
62
+ margin-top: var(--fs-banner-button-link-margin-top);
63
+ }
64
+
65
+ // --------------------------------------------------------
66
+ // Variants Styles
67
+ // --------------------------------------------------------
68
+
69
+ &[data-fs-banner-text-variant="primary"] {
70
+ h2 {
71
+ font-size: var(--fs-banner-title-size);
72
+ font-weight: var(--fs-banner-title-weight);
73
+ line-height: var(--fs-banner-title-line-height);
74
+
75
+ @include media(">=notebook") {
76
+ display: block;
77
+ font-size: var(--fs-banner-primary-title-size);
78
+ }
79
+ }
80
+ }
81
+
82
+ &[data-fs-banner-text-variant="secondary"] {
83
+ h2 {
84
+ margin-bottom: var(--fs-spacing-2);
85
+ font-size: var(--fs-banner-title-size);
86
+ font-weight: var(--fs-banner-title-weight);
87
+ line-height: var(--fs-banner-title-line-height);
88
+
89
+ @include media(">=notebook") {
90
+ display: block;
91
+ font-size: var(--fs-banner-secondary-title-size);
92
+ }
93
+ }
94
+
95
+ p {
96
+ font-size: var(--fs-banner-secondary-caption-size);
97
+ font-weight: var(--fs-banner-secondary-caption-weight);
98
+ line-height: var(--fs-banner-secondary-caption-line-height);
99
+ }
100
+ }
101
+
102
+ &[data-fs-banner-text-color-variant="main"] {
103
+ background-color: var(--fs-banner-main-bkg-color);
104
+
105
+ [data-fs-banner-text-heading] {
106
+ color: var(--fs-banner-main-text-color);
107
+ }
108
+ }
109
+
110
+ &[data-fs-banner-text-color-variant="light"] {
111
+ background-color: var(--fs-banner-light-bkg-color);
112
+
113
+ [data-fs-banner-text-heading] {
114
+ color: var(--fs-banner-light-text-color);
115
+ }
116
+ }
117
+
118
+ &[data-fs-banner-text-color-variant="accent"] {
119
+ background-color: var(--fs-banner-accent-bkg-color);
120
+
121
+ [data-fs-banner-text-heading] {
122
+ color: var(--fs-banner-accent-text-color);
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,145 @@
1
+ [data-fs-carousel] {
2
+ // --------------------------------------------------------
3
+ // Design Tokens for Carousel
4
+ // --------------------------------------------------------
5
+
6
+ // Track
7
+ --fs-carousel-padding-desktop : var(--fs-spacing-0) 6.25rem;
8
+
9
+ // Item
10
+ --fs-carousel-item-width-mobile : 80%;
11
+ --fs-carousel-item-width-desktop : 15rem;
12
+ --fs-carousel-item-margin-right : var(--fs-spacing-0);
13
+
14
+ // Controls
15
+ --fs-carousel-controls-width : 3.125rem;
16
+ --fs-carousel-controls-height : var(--fs-carousel-controls-width);
17
+ --fs-carousel-controls-position-top : calc((100% - var(--fs-spacing-7) - var(--fs-spacing-1)) / 2);
18
+ --fs-carousel-controls-bkg-color : var(--fs-color-neutral-0);
19
+ --fs-carousel-controls-border-radius : var(--fs-border-radius-circle);
20
+ --fs-carousel-controls-box-shadow : var(--fs-shadow-darker);
21
+ --fs-carousel-controls-icon-color : var(--fs-color-neutral-7);
22
+
23
+ --fs-carousel-controls-control-left : var(--fs-spacing-5);
24
+ --fs-carousel-controls-control-right : var(--fs-carousel-controls-control-left);
25
+
26
+ // Bullets
27
+ --fs-carousel-bullets-padding-top : var(--fs-carousel-controls-control-left);
28
+
29
+ --fs-carousel-bullet-width-mobile : 100%;
30
+ --fs-carousel-bullet-width-desktop : var(--fs-spacing-1);
31
+ --fs-carousel-bullet-height-mobile : var(--fs-carousel-item-margin-right);
32
+ --fs-carousel-bullet-height-desktop : var(--fs-carousel-bullet-width-desktop);
33
+ --fs-carousel-bullet-margin-right : var(--fs-carousel-item-margin-right);
34
+ --fs-carousel-bullet-bkg-color : var(--fs-color-neutral-3);
35
+ --fs-carousel-bullet-bkg-color-selected : var(--fs-color-main-4);
36
+ --fs-carousel-bullet-border-radius : var(--fs-carousel-controls-border-radius);
37
+
38
+ // --------------------------------------------------------
39
+ // Structural Styles
40
+ // --------------------------------------------------------
41
+
42
+ &:hover {
43
+ [data-fs-carousel-controls] {
44
+ @include media(">=tablet") {
45
+ display: flex;
46
+ width: 100%;
47
+
48
+ [data-fs-carousel-control] {
49
+ top: var(--fs-carousel-controls-position-top);
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ width: var(--fs-carousel-controls-width);
54
+ height: var(--fs-carousel-controls-height);
55
+ cursor: pointer;
56
+ background-color: var(--fs-carousel-controls-bkg-color);
57
+ border-color: transparent;
58
+ border-radius: var(--fs-carousel-controls-border-radius);
59
+ box-shadow: var(--fs-carousel-controls-box-shadow);
60
+ transform: translateY(-50%);
61
+ }
62
+
63
+ [data-fs-carousel-control="left"] {
64
+ position: absolute;
65
+ left: var(--fs-carousel-controls-control-left);
66
+ }
67
+
68
+ [data-fs-carousel-control="right"] {
69
+ position: absolute;
70
+ right: var(--fs-carousel-controls-control-right);
71
+ }
72
+
73
+ [data-fs-icon] { display: flex; }
74
+ }
75
+ }
76
+ }
77
+
78
+ [data-fs-carousel-track] {
79
+ &::-webkit-scrollbar {
80
+ display: none;
81
+ }
82
+
83
+ @include media(">=tablet") {
84
+ padding: var(--fs-carousel-padding-desktop);
85
+ }
86
+ }
87
+
88
+ [data-fs-carousel-item] {
89
+ width: var(--fs-carousel-item-width-mobile);
90
+
91
+ @include media(">=tablet") {
92
+ width: var(--fs-carousel-item-width-desktop);
93
+ height: 100%;
94
+ margin-right: var(--fs-carousel-item-margin-right);
95
+ }
96
+ }
97
+
98
+ [data-fs-icon] {
99
+ color: var(--fs-carousel-controls-icon-color);
100
+ }
101
+
102
+ [data-fs-carousel-controls] {
103
+ display: none;
104
+ }
105
+
106
+ [data-fs-carousel-bullets] {
107
+ width: 100%;
108
+ padding-top: var(--fs-carousel-bullets-padding-top);
109
+
110
+ @include media(">=tablet") {
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: center;
114
+ }
115
+
116
+ [data-fs-bullets] {
117
+ display: flex;
118
+ flex-flow: row nowrap;
119
+
120
+ @include media(">=tablet") {
121
+ column-gap: var(--fs-spacing-3);
122
+ }
123
+
124
+ [data-fs-bullet] {
125
+ width: var(--fs-carousel-bullet-width-mobile);
126
+ height: var(--fs-carousel-bullet-height-mobile);
127
+ padding: 0;
128
+ margin-right: var(--fs-carousel-bullet-margin-right);
129
+ background-color: var(--fs-carousel-bullet-bkg-color);
130
+ border-color: transparent;
131
+
132
+ &[aria-selected="true"] {
133
+ background-color: var(--fs-carousel-bullet-bkg-color-selected);
134
+ }
135
+
136
+ @include media(">=tablet") {
137
+ width: var(--fs-carousel-bullet-width-desktop);
138
+ height: var(--fs-carousel-bullet-height-desktop);
139
+ margin: 0;
140
+ border-radius: var(--fs-carousel-bullet-border-radius);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
@@ -38,8 +38,6 @@
38
38
  @include media("<notebook") { padding: 0; }
39
39
 
40
40
  @include media(">=notebook") {
41
- z-index: var(--fs-z-index-below);
42
-
43
41
  > div {
44
42
  display: flex;
45
43
  align-items: center;
@@ -0,0 +1,56 @@
1
+ [data-fs-product-card-skeleton] {
2
+ // --------------------------------------------------------
3
+ // Design Tokens for Product Card Skeleton
4
+ // --------------------------------------------------------
5
+
6
+ // Default properties
7
+ --fs-product-card-skeleton-padding : var(--fs-spacing-1) var(--fs-spacing-1) var(--fs-spacing-2);
8
+ --fs-product-card-skeleton-border-radius : var(--fs-border-radius);
9
+ --fs-product-card-skeleton-gap : var(--fs-spacing-1);
10
+
11
+ // Sectioned
12
+ --fs-product-card-skeleton-sectioned-min-width : 10rem;
13
+
14
+ // Bordered
15
+ --fs-product-card-skeleton-bordered : var(--fs-border-width) solid var(--fs-border-color-light);
16
+
17
+ // --------------------------------------------------------
18
+ // Structural Styles
19
+ // --------------------------------------------------------
20
+
21
+ position: relative;
22
+ display: flex;
23
+ flex-direction: column;
24
+ row-gap: var(--fs-product-card-skeleton-gap);
25
+ padding: var(--fs-product-card-skeleton-padding);
26
+ overflow: hidden;
27
+ border-radius: var(--fs-product-card-skeleton-border-radius);
28
+
29
+ [data-fs-product-card-skeleton-content] {
30
+ display: flex;
31
+ flex-direction: column;
32
+ row-gap: var(--fs-product-card-skeleton-gap);
33
+ }
34
+
35
+ [data-fs-product-card-skeleton-image] {
36
+ aspect-ratio: var(--fs-product-card-skeleton-image-aspect-ratio);
37
+
38
+ [data-fs-skeleton-wrapper],
39
+ [data-fs-skeleton] {
40
+ width: 100%;
41
+ height: 100%;
42
+ }
43
+ }
44
+
45
+ // --------------------------------------------------------
46
+ // Variants Styles
47
+ // --------------------------------------------------------
48
+
49
+ &[data-fs-product-card-skeleton-sectioned="true"] {
50
+ min-width: var(--fs-product-card-skeleton-sectioned-min-width);
51
+ }
52
+
53
+ &[data-fs-product-card-skeleton-bordered="true"] {
54
+ border: var(--fs-product-card-skeleton-bordered);
55
+ }
56
+ }
@@ -0,0 +1,79 @@
1
+ [data-fs-product-tile-skeleton] {
2
+ // --------------------------------------------------------
3
+ // Design Tokens for Product Tile Skeleton
4
+ // --------------------------------------------------------
5
+
6
+ // Default properties
7
+ --fs-product-tile-skeleton-gap : var(--fs-spacing-1);
8
+
9
+ // Content
10
+ --fs-product-tile-skeleton-content-padding : var(--fs-spacing-3);
11
+
12
+ // Wide
13
+ --fs-product-tile-skeleton-wide-padding : var(--fs-spacing-2) var(--fs-spacing-3) var(--fs-spacing-3);
14
+ --fs-product-tile-skeleton-wide-bkg-color : var(--fs-color-neutral-bkg);
15
+
16
+ // --------------------------------------------------------
17
+ // Structural Styles
18
+ // --------------------------------------------------------
19
+
20
+ position: relative;
21
+ display: flex;
22
+ flex-direction: column;
23
+ width: 100%;
24
+ height: 100%;
25
+ padding: 0;
26
+ overflow: hidden;
27
+
28
+ @include media(">=tablet") {
29
+ display: grid;
30
+ grid-auto-rows: 62% auto;
31
+ [data-fs-product-card-image] { height: 100%; }
32
+ }
33
+
34
+ @include media(">=notebook") { grid-auto-rows: 80% auto; }
35
+
36
+ [data-fs-product-tile-skeleton-content] {
37
+ display: flex;
38
+ flex-direction: column;
39
+ row-gap: var(--fs-product-tile-skeleton-gap);
40
+ padding: var(--fs-product-tile-skeleton-content-padding);
41
+ background-color: var(--fs-product-tile-skeleton-wide-bkg-color);
42
+
43
+ @include media(">=notebook") {
44
+ flex-direction: row;
45
+ justify-content: space-between;
46
+ height: 100%;
47
+ }
48
+ }
49
+
50
+ [data-fs-product-tile-skeleton-heading] {
51
+ display: flex;
52
+ flex-direction: column;
53
+ row-gap: var(--fs-product-tile-skeleton-gap);
54
+ width: 100%;
55
+ }
56
+
57
+ [data-fs-product-tile-skeleton-badge] {
58
+ max-width: 100%;
59
+ }
60
+
61
+ [data-fs-product-tile-skeleton-image] {
62
+ width: 100%;
63
+ aspect-ratio: var(--fs-product-tile-skeleton-image-aspect-ratio);
64
+ overflow: hidden;
65
+
66
+ [data-fs-skeleton-variant="image"] { border-radius: 0; }
67
+
68
+ @include media(">=tablet") { height: 100%; }
69
+ }
70
+
71
+ [data-fs-product-tile-skeleton-image],
72
+ [data-fs-product-tile-skeleton-badge] {
73
+ [data-fs-skeleton-wrapper],
74
+ [data-fs-skeleton] {
75
+ width: 100%;
76
+ height: 100%;
77
+ }
78
+ }
79
+ }
@@ -0,0 +1,21 @@
1
+ [data-fs-banner-newsletter] {
2
+ margin-bottom: var(--fs-grid-padding);
3
+
4
+ [data-fs-banner-text] {
5
+ border-radius: var(--fs-border-radius);
6
+ }
7
+
8
+ > section {
9
+ margin-top: 0;
10
+ }
11
+
12
+ @include media(">=notebook") {
13
+ display: flex;
14
+ column-gap: var(--fs-grid-gap-3);
15
+
16
+ > section {
17
+ padding-top: 0;
18
+ padding-bottom: 0;
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,49 @@
1
+ [data-fs-filter-skeleton] {
2
+ // --------------------------------------------------------
3
+ // Design Tokens for Filter Skeleton
4
+ // --------------------------------------------------------
5
+
6
+ // Default properties
7
+ --fs-filter-skeleton-margin-top : var(--fs-spacing-1);
8
+
9
+ // Title
10
+ --fs-filter-skeleton-title-max-width : 30%;
11
+ --fs-filter-skeleton-title-margin-bottom : var(--fs-spacing-2);
12
+
13
+ // Content
14
+ --fs-filter-skeleton-content-min-height : var(--fs-spacing-8);
15
+ --fs-filter-skeleton-content-margin-bottom : var(--fs-spacing-0);
16
+ --fs-filter-skeleton-content-padding : var(--fs-spacing-1) var(--fs-spacing-1) var(--fs-spacing-0);
17
+ --fs-filter-skeleton-content-border-color : var(--fs-border-color-light);
18
+ --fs-filter-skeleton-content-border-width : var(--fs-border-width);
19
+ --fs-filter-skeleton-content-border-radius : var(--fs-border-radius);
20
+
21
+ // --------------------------------------------------------
22
+ // Structural Styles
23
+ // --------------------------------------------------------
24
+
25
+ margin-top: var(--fs-filter-skeleton-margin-top);
26
+
27
+ @include media("<notebook") { display: none; }
28
+
29
+ [data-fs-filter-skeleton-text] {
30
+ max-width: var(--fs-filter-skeleton-title-max-width);
31
+ margin-bottom: var(--fs-filter-skeleton-title-margin-bottom);
32
+ }
33
+
34
+ [data-fs-filter-skeleton-content] {
35
+ position: relative;
36
+ display: flex;
37
+ flex-direction: column;
38
+ padding: var(--fs-filter-skeleton-content-padding);
39
+ overflow: hidden;
40
+ border: var(--fs-filter-skeleton-content-border-width) solid var(--fs-filter-skeleton-content-border-color);
41
+ border-radius: var(--fs-filter-skeleton-content-border-radius);
42
+
43
+ [data-fs-skeleton] {
44
+ min-width: 100%;
45
+ min-height: var(--fs-filter-skeleton-content-min-height);
46
+ margin-bottom: var(--fs-filter-skeleton-content-margin-bottom);
47
+ }
48
+ }
49
+ }