@faststore/core 2.0.115-alpha.0 → 2.0.117-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 (54) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +16 -16
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/eslint/.cache_1gneedd +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/server-production/0.pack +0 -0
  9. package/.next/cache/webpack/server-production/index.pack +0 -0
  10. package/.next/prerender-manifest.json +1 -1
  11. package/.next/react-loadable-manifest.json +1 -1
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/4312.js +1 -1
  14. package/.next/server/middleware-build-manifest.js +1 -1
  15. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  16. package/.next/server/pages/_app.js +426 -340
  17. package/.next/server/pages/en-US/404.html +2 -2
  18. package/.next/server/pages/en-US/500.html +2 -2
  19. package/.next/server/pages/en-US/account.html +2 -2
  20. package/.next/server/pages/en-US/checkout.html +2 -2
  21. package/.next/server/pages/en-US/login.html +2 -2
  22. package/.next/server/pages/en-US/s.html +2 -2
  23. package/.next/server/pages/en-US.html +2 -2
  24. package/.next/server/pages/index.js +2 -1
  25. package/.next/server/pages-manifest.json +1 -1
  26. package/.next/static/chunks/{996.0cec637399d0f543.js → 996.98e590872c51f815.js} +1 -1
  27. package/.next/static/chunks/pages/_app-4aeb21d72aeea9b7.js +1 -0
  28. package/.next/static/chunks/pages/{index-218f29b878a08dc6.js → index-d48285f48d2a66ea.js} +1 -1
  29. package/.next/static/chunks/{webpack-62b0142505600323.js → webpack-f725b61675603493.js} +1 -1
  30. package/.next/static/css/502746c995f64cce.css +1 -0
  31. package/.next/static/{p4uTTHaqqJotnVxY7d4Kh → kFT8gMGQbscGgKaZLxG_K}/_buildManifest.js +1 -1
  32. package/.next/trace +64 -64
  33. package/.turbo/turbo-build.log +8 -8
  34. package/CHANGELOG.md +12 -0
  35. package/package.json +4 -4
  36. package/src/Layout.tsx +1 -1
  37. package/src/components/{common → navigation}/Navbar/Navbar.tsx +35 -26
  38. package/src/components/navigation/Navbar/index.ts +1 -0
  39. package/src/components/{common/Navbar/NavLinks.tsx → navigation/NavbarLinks/NavbarLinks.tsx} +21 -19
  40. package/src/components/navigation/NavbarLinks/index.ts +1 -0
  41. package/src/components/{common/Navbar → navigation/NavbarSlider}/NavbarSlider.tsx +18 -21
  42. package/src/components/navigation/NavbarSlider/index.ts +1 -0
  43. package/src/components/sections/BannerText/BannerText.tsx +1 -0
  44. package/.next/static/chunks/pages/_app-1f0f91614f519698.js +0 -1
  45. package/.next/static/css/b32231bee7a654b8.css +0 -1
  46. package/src/components/common/Navbar/NavLinks.stories.mdx +0 -122
  47. package/src/components/common/Navbar/Navbar.stories.mdx +0 -179
  48. package/src/components/common/Navbar/NavbarSlider.stories.mdx +0 -108
  49. package/src/components/common/Navbar/index.ts +0 -3
  50. package/src/components/common/Navbar/navbar-slider.module.scss +0 -53
  51. package/src/components/common/Navbar/navbar.module.scss +0 -204
  52. package/src/components/common/Navbar/navlinks.module.scss +0 -96
  53. package/src/sdk/ui/useScrollDirection.ts +0 -31
  54. /package/.next/static/{p4uTTHaqqJotnVxY7d4Kh → kFT8gMGQbscGgKaZLxG_K}/_ssgManifest.js +0 -0
@@ -1,179 +0,0 @@
1
- import { UIProvider } from '@faststore/ui'
2
-
3
- import Navbar, { NavLinks } from '.'
4
-
5
- import {
6
- TokenTable,
7
- TokenRow,
8
- TokenDivider,
9
- } from 'src/../.storybook/components'
10
-
11
- import { SectionList, SectionItem } from 'src/../.storybook/components'
12
-
13
- import { Meta, Canvas, Story, ArgsTable } from '@storybook/addon-docs'
14
-
15
- <Meta component={Navbar} title="Organisms/Navbar/Overview" />
16
-
17
- export const Template = () => {
18
- return (
19
- <UIProvider>
20
- <Navbar />
21
- </UIProvider>
22
- )
23
- }
24
-
25
- <header>
26
-
27
- # Navbar
28
-
29
- The `Navbar` represents the **Page Header** and groups some features like: `Search`, `Regionalization`, `SignIn`, `CartSidebar`.
30
-
31
- </header>
32
-
33
- ## Overview
34
-
35
- Uses [NavLinks](?path=/docs/organisms-navbar-navlinks--overview-default) and [NavbarSlider](?path=/docs/organisms-navbar-navbarslider--overview-default) as compound components.
36
-
37
- ---
38
-
39
- ## Usage
40
-
41
- `import Navbar from 'src/components/common/Navbar'`
42
-
43
- <Canvas>
44
- <Story name="overview-default">{Template.bind({})}</Story>
45
- </Canvas>
46
-
47
- <TokenTable>
48
- <TokenRow token="--fs-navbar-height-mobile" value="3.5rem" />
49
- <TokenDivider />
50
- <TokenRow
51
- token="--fs-navbar-bkg-color"
52
- value="rgb(255 255 255 / 90%)"
53
- isColor
54
- />
55
- <TokenDivider />
56
- <TokenRow
57
- token="--fs-navbar-transition-timing"
58
- value="var(--fs-transition-timing)"
59
- />
60
- <TokenRow
61
- token="--fs-navbar-transition-function"
62
- value="var(--fs-transition-function)"
63
- />
64
- <TokenDivider />
65
- <TokenRow
66
- token="--fs-navbar-box-shadow"
67
- value="0 var(--fs-spacing-0) var(--fs-spacing-3) rgb(0 0 0 / 5%)"
68
- />
69
- <TokenDivider />
70
- <TokenRow
71
- token="--fs-navbar-border-bottom-width"
72
- value="var(--fs-border-width)"
73
- />
74
- <TokenRow
75
- token="--fs-navbar-border-bottom-color"
76
- value="var(--fs-border-color-light)"
77
- isColor
78
- />
79
- </TokenTable>
80
-
81
- ---
82
-
83
- ## Nested Elements
84
-
85
- ### Search
86
-
87
- <TokenTable>
88
- <TokenRow
89
- token="--fs-navbar-search-button-icon-width-mobile"
90
- value="var(--fs-spacing-5)"
91
- />
92
- <TokenRow
93
- token="--fs-navbar-search-button-icon-height-mobile"
94
- value="var(--fs-navbar-search-button-icon-width-mobile)"
95
- />
96
- </TokenTable>
97
-
98
- ### Search Expanded
99
-
100
- <TokenTable>
101
- <TokenRow
102
- token="--fs-navbar-search-expanded-input-wrapper-margin-right"
103
- value="0.625rem"
104
- />
105
- <TokenRow
106
- token="--fs-navbar-search-expanded-input-wrapper-margin-left"
107
- value="var(--fs-spacing-9)"
108
- />
109
- <TokenDivider />
110
- <TokenRow
111
- token="--fs-navbar-search-expanded-input-width"
112
- value="calc(100% - var(--fs-spacing-7))"
113
- />
114
- <TokenDivider />
115
- <TokenRow
116
- token="--fs-navbar-search-expanded-button-icon-margin-right"
117
- value="-4.063rem"
118
- />
119
- </TokenTable>
120
-
121
- ### Header
122
-
123
- <TokenTable>
124
- <TokenRow token="--fs-navbar-header-padding" value="0 var(--fs-spacing-0)" />
125
- <TokenDivider />
126
- <TokenRow
127
- token="--fs-navbar-header-padding-top-notebook"
128
- value="var(--fs-spacing-1)"
129
- />
130
- <TokenRow
131
- token="--fs-navbar-header-padding-bottom-notebook"
132
- value="var(--fs-navbar-header-padding-top-notebook)"
133
- />
134
- </TokenTable>
135
-
136
- ### Logo
137
-
138
- <TokenTable>
139
- <TokenRow
140
- token="--fs-navbar-logo-border-left-width"
141
- value="var(--fs-border-width)"
142
- />
143
- <TokenRow
144
- token="--fs-navbar-logo-border-left-color"
145
- value="var(--fs-border-color-light)"
146
- isColor
147
- />
148
- </TokenTable>
149
-
150
- ---
151
-
152
- ## Compound Components
153
-
154
- <SectionList grid="grid">
155
- <SectionItem
156
- title="Navbar Slider"
157
- actionPath="../?path=/docs/organisms-navbar-navbarslider--overview-default"
158
- description={
159
- <>
160
- Displays the <code>NavLinks</code> and some features using{' '}
161
- <code>SlideOver</code> component.
162
- </>
163
- }
164
- >
165
- <img src="https://vtexhelp.vtexassets.com/assets/docs/src/navlinks___52dff993e0e04dea5d02c1e1a5bbf4e3.png" />
166
- </SectionItem>
167
- <SectionItem
168
- title="NavLinks"
169
- actionPath="../?path=/docs/organisms-navbar-navlinks--overview-default"
170
- description={
171
- <>
172
- Displays a set navigation links and self adapts on mobile{' '}
173
- <code>NavbarSlider</code> or desktop screens.
174
- </>
175
- }
176
- >
177
- <img src="https://vtexhelp.vtexassets.com/assets/docs/src/navlinks___ad2d67dbdbac8ea8ccb4e5a7d453a997.png" />
178
- </SectionItem>
179
- </SectionList>
@@ -1,108 +0,0 @@
1
- import { Meta, Canvas, Story, ArgsTable } from '@storybook/addon-docs'
2
-
3
- import { UIProvider, useUI } from '@faststore/ui'
4
-
5
- import { Button } from '@faststore/ui'
6
- import Icon from 'src/components/ui/Icon'
7
-
8
- import { NavbarSlider } from '.'
9
-
10
- import {
11
- TokenTable,
12
- TokenRow,
13
- TokenDivider,
14
- } from 'src/../.storybook/components'
15
-
16
- <Meta component={NavbarSlider} title="Organisms/Navbar/NavbarSlider" />
17
-
18
- export const TemplateNavbarSlider = () => {
19
- const { openNavbar, navbar: displayNavbar } = useUI()
20
- return (
21
- <div style={{ display: 'flex', alignItems: 'center' }}>
22
- <Button
23
- aria-label="Open Menu"
24
- icon={<Icon name="List" width={32} height={32} />}
25
- onClick={openNavbar}
26
- />
27
- <p style={{ marginLeft: '12px' }}>Open Menu</p>
28
- {displayNavbar && <NavbarSlider />}
29
- </div>
30
- )
31
- }
32
-
33
- export const TemplateProvider = () => {
34
- return (
35
- <UIProvider>
36
- <TemplateNavbarSlider />
37
- </UIProvider>
38
- )
39
- }
40
-
41
- <header>
42
-
43
- # Navbar Slider
44
-
45
- As part of the [Navbar](?path=/docs/organisms-navbar-overview--overview-default), NavbarSlider is its mobile version to list the `NavLinks`.
46
-
47
- </header>
48
-
49
- ## Overview
50
-
51
- Uses [SlideOver](?path=/docs/organisms-slideover--default-story) as base to show [Navlinks](?path=/docs/organisms-navbar-navlinks--overview-default) on mobile devices.
52
-
53
- ---
54
-
55
- ## Usage
56
-
57
- `import { NavbarSlider } from 'src/components/common/Navbar'`
58
-
59
- <Canvas>
60
- <Story name="overview-default">{TemplateProvider.bind({})}</Story>
61
- </Canvas>
62
-
63
- <TokenTable>
64
- <TokenRow token="--fs-navbar-slider-padding" value="var(--fs-spacing-3)" />
65
- </TokenTable>
66
-
67
- ---
68
-
69
- ## Nested Elements
70
-
71
- ### Header
72
-
73
- <TokenTable>
74
- <TokenRow
75
- token="--fs-navbar-slider-header-padding-bottom"
76
- value="var(--fs-spacing-2)"
77
- />
78
- <TokenRow
79
- token="--fs-navbar-slider-header-button-margin-right"
80
- value="calc(-1 * var(--fs-spacing-1))"
81
- />
82
- </TokenTable>
83
-
84
- ### Logo
85
-
86
- <TokenTable>
87
- <TokenRow token="--fs-navbar-slider-logo-height" value="2.375rem" />
88
- <TokenDivider />
89
- <TokenRow token="--fs-navbar-slider-logo-padding" value="0" />
90
- <TokenDivider />
91
- <TokenRow
92
- token="--fs-navbar-slider-logo-margin-right"
93
- value="var(--fs-spacing-5)"
94
- />
95
- </TokenTable>
96
-
97
- ### Footer
98
-
99
- <TokenTable>
100
- <TokenRow
101
- token="--fs-navbar-slider-footer-padding-top"
102
- value="var(--fs-spacing-2)"
103
- />
104
- <TokenRow
105
- token="--fs-navbar-slider-footer-margin-top"
106
- value="var(--fs-spacing-2)"
107
- />
108
- </TokenTable>
@@ -1,3 +0,0 @@
1
- export { default } from './Navbar'
2
- export { default as NavbarSlider } from './NavbarSlider'
3
- export { default as NavLinks } from './NavLinks'
@@ -1,53 +0,0 @@
1
- .fs-navbar-slider {
2
- // --------------------------------------------------------
3
- // Design Tokens for Navbar Slider
4
- // --------------------------------------------------------
5
-
6
- // Default properties
7
- --fs-navbar-slider-padding : var(--fs-spacing-3);
8
-
9
- // Header
10
- --fs-navbar-slider-header-padding-bottom : var(--fs-spacing-2);
11
- --fs-navbar-slider-header-button-margin-right : calc(-1 * var(--fs-spacing-1));
12
-
13
- // Logo
14
- --fs-navbar-slider-logo-height : 2.375rem;
15
- --fs-navbar-slider-logo-padding : 0;
16
- --fs-navbar-slider-logo-margin-right : var(--fs-spacing-5);
17
-
18
- // Footer
19
- --fs-navbar-slider-footer-padding-top : var(--fs-spacing-2);
20
- --fs-navbar-slider-footer-margin-top : var(--fs-spacing-2);
21
-
22
- // --------------------------------------------------------
23
- // Structural Styles
24
- // --------------------------------------------------------
25
-
26
- padding: var(--fs-navbar-slider-padding);
27
-
28
- [data-fs-slide-over-header] {
29
- padding: 0;
30
- padding-bottom: var(--fs-navbar-slider-header-padding-bottom);
31
- }
32
-
33
- [data-fs-navbar-slider-logo] {
34
- height: var(--fs-navbar-slider-logo-height);
35
- padding: var(--fs-navbar-slider-logo-padding);
36
- margin-right: var(--fs-navbar-slider-logo-margin-right);
37
-
38
- img {
39
- width: 100%;
40
- height: 100%;
41
- }
42
- }
43
-
44
- [data-fs-navbar-slider-footer] {
45
- padding-top: var(--fs-navbar-slider-footer-padding-top);
46
- margin-top: var(--fs-navbar-slider-footer-margin-top);
47
-
48
- [data-fs-button-signin-link] {
49
- width: fit-content;
50
- padding-left: 0;
51
- }
52
- }
53
- }
@@ -1,204 +0,0 @@
1
- @import "src/styles/scaffold";
2
-
3
- .fs-navbar {
4
- // --------------------------------------------------------
5
- // Design Tokens for Navbar
6
- // --------------------------------------------------------
7
-
8
- // Default properties
9
-
10
- --fs-navbar-height-mobile : 3.5rem;
11
-
12
- --fs-navbar-bkg-color : rgb(255 255 255 / 90%);
13
-
14
- --fs-navbar-transition-timing : var(--fs-transition-timing);
15
- --fs-navbar-transition-function : var(--fs-transition-function);
16
-
17
- --fs-navbar-box-shadow : 0 var(--fs-spacing-0) var(--fs-spacing-3) rgb(0 0 0 / 5%);
18
-
19
- // Search
20
- --fs-navbar-search-button-icon-width-mobile : var(--fs-spacing-5);
21
- --fs-navbar-search-button-icon-height-mobile : var(--fs-navbar-search-button-icon-width-mobile);
22
-
23
- // Search Expanded
24
- --fs-navbar-search-expanded-input-wrapper-margin-right : 0.625rem;
25
- --fs-navbar-search-expanded-input-wrapper-margin-left : var(--fs-spacing-9);
26
-
27
- --fs-navbar-search-expanded-input-width : calc(100% - var(--fs-spacing-7));
28
-
29
- --fs-navbar-search-expanded-button-icon-margin-right : -4.063rem;
30
-
31
- // Header
32
- --fs-navbar-header-padding : 0 var(--fs-spacing-0);
33
-
34
- --fs-navbar-header-padding-top-notebook : var(--fs-spacing-1);
35
- --fs-navbar-header-padding-bottom-notebook : var(--fs-navbar-header-padding-top-notebook);
36
-
37
- // Logo
38
- --fs-navbar-logo-border-left-width : var(--fs-border-width);
39
- --fs-navbar-logo-border-left-color : var(--fs-border-color-light);
40
-
41
- // --------------------------------------------------------
42
- // Structural Styles
43
- // --------------------------------------------------------
44
-
45
- position: sticky;
46
- top: 0;
47
- z-index: var(--fs-z-index-high);
48
- display: flex;
49
- flex-direction: column;
50
- justify-content: center;
51
- padding: 0;
52
- box-shadow: var(--fs-navbar-box-shadow);
53
- transition: top var(--fs-navbar-transition-timing) var(--fs-navbar-transition-function);
54
-
55
- @include media("<notebook") {
56
- height: var(--fs-navbar-height-mobile);
57
- }
58
-
59
- &[data-fs-navbar-scroll="down"] {
60
- > nav {
61
- top: calc(-1 * var(--fs-spacing-3));
62
- height: 0;
63
- padding: 0;
64
- opacity: 0;
65
- }
66
- }
67
-
68
- &[data-fs-navbar-scroll="up"] {
69
- > nav {
70
- top: 0;
71
- opacity: 1;
72
- }
73
- }
74
-
75
- [data-fs-search-input] {
76
- flex: 1 0 100%;
77
- order: 2;
78
-
79
- @include media("<notebook") {
80
- display: none;
81
- }
82
- }
83
-
84
- [data-fs-navbar-row] {
85
- display: flex;
86
- flex-flow: row wrap;
87
- align-items: center;
88
- justify-content: space-between;
89
- width: 100%;
90
-
91
- @include media("<notebook") {
92
- padding: 0;
93
- }
94
-
95
- @include media(">=notebook") {
96
- display: grid;
97
- grid-template-columns: 1fr minmax(auto, 37.5rem) 1fr;
98
- }
99
-
100
- [data-fs-navbar-button-menu] {
101
- @include media(">=notebook") { display: none; }
102
- }
103
- }
104
-
105
- [data-fs-navbar-buttons] {
106
- display: flex;
107
- align-items: center;
108
- justify-content: flex-end;
109
-
110
- [data-fs-button-signin-link] + [data-fs-cart-toggle] {
111
- @include media(">=notebook") {
112
- margin-left: var(--fs-spacing-3);
113
- }
114
- }
115
-
116
- [data-fs-button-signin-link] {
117
- display: none;
118
- }
119
-
120
- @include media(">=notebook") {
121
- order: 2;
122
-
123
- [data-fs-button-signin-link] {
124
- display: inline-flex;
125
- }
126
- }
127
-
128
- [data-fs-search-input] {
129
- display: none;
130
- transition: flex var(--fs-navbar-transition-timing) var(--fs-navbar-transition-function);
131
-
132
- @include media("<notebook") {
133
- display: flex;
134
- flex: 0;
135
- flex-direction: column;
136
- order: 0;
137
- width: min-content;
138
-
139
- &[data-fs-search-input-dropdown-visible="false"] [data-fs-search-input-field-input] {
140
- width: 0;
141
- padding: 0;
142
- border-width: 0;
143
-
144
- &:hover, &:focus, &:focus-visible &:hover:focus-visible {
145
- border-width: 0;
146
- box-shadow: 0 0;
147
- }
148
- }
149
-
150
- [data-fs-icon] {
151
- margin-right: 0;
152
- line-height: 0;
153
-
154
- svg {
155
- width: var(--fs-navbar-search-button-icon-width-mobile);
156
- height: var(--fs-navbar-search-button-icon-height-mobile);
157
- }
158
- }
159
- }
160
- }
161
-
162
- &[data-fs-navbar-search-expanded="true"] {
163
- width: 100%;
164
-
165
- [data-fs-search-input] {
166
- flex: 1 1;
167
- margin-right: var(--fs-navbar-search-expanded-input-wrapper-margin-right);
168
- margin-left: var(--fs-navbar-search-expanded-input-wrapper-margin-left);
169
-
170
- [data-fs-search-input-field] [data-fs-search-input-field-input] {
171
- width: var(--fs-navbar-search-expanded-input-width);
172
- padding: var(--fs-spacing-2);
173
- }
174
-
175
- [data-fs-icon] {
176
- margin-right: 0;
177
- }
178
- }
179
-
180
- [data-fs-icon-button="true"] {
181
- margin-right: var(--fs-navbar-search-expanded-button-icon-margin-right);
182
- transition: margin var(--fs-navbar-transition-timing) var(--fs-navbar-transition-function);
183
- }
184
- }
185
- }
186
-
187
- [data-fs-navbar-header] {
188
- padding: var(--fs-navbar-header-padding);
189
- overflow-x: clip;
190
- background-color: var(--fs-navbar-bkg-color);
191
- backdrop-filter: blur(10px);
192
- }
193
-
194
- [data-fs-navbar-logo] {
195
- align-self: stretch;
196
-
197
- @include media("<notebook") {
198
- padding: var(--fs-spacing-1) 0 var(--fs-spacing-1) var(--fs-spacing-3);
199
- margin-right: auto;
200
- margin-left: var(--fs-spacing-0);
201
- border-left: var(--fs-navbar-logo-border-left-width) solid var(--fs-navbar-logo-border-left-color);
202
- }
203
- }
204
- }
@@ -1,96 +0,0 @@
1
- @import "src/styles/scaffold";
2
-
3
- .fs-navlinks {
4
- // --------------------------------------------------------
5
- // Design Tokens for Navlinks
6
- // --------------------------------------------------------
7
-
8
- --fs-navlinks-padding-top-notebook : var(--fs-spacing-1);
9
- --fs-navlinks-padding-bottom-notebook : var(--fs-navlinks-padding-top-notebook);
10
-
11
- --fs-navlinks-bkg-color : var(--fs-color-body-bkg);
12
-
13
- --fs-navlinks-transition-property : var(--fs-transition-property);
14
- --fs-navlinks-transition-timing : var(--fs-transition-timing);
15
- --fs-navlinks-transition-function : var(--fs-transition-function);
16
-
17
- --fs-navlinks-border-top-width-mobile : var(--fs-border-width);
18
- --fs-navlinks-border-top-color-mobile : var(--fs-border-color-light);
19
- --fs-navlinks-border-bottom-width-mobile : var(--fs-navlinks-border-top-width-mobile);
20
- --fs-navlinks-border-bottom-color-mobile : var(--fs-navlinks-border-top-color-mobile);
21
-
22
- // Link
23
- --fs-navlinks-link-width-notebook : auto;
24
- --fs-navlinks-link-padding-notebook : 0 var(--fs-spacing-0);
25
-
26
- // List
27
- --fs-navlinks-list-padding-left-notebook : var(--fs-spacing-3);
28
- --fs-navlinks-list-margin-left-notebook : var(--fs-spacing-2);
29
- --fs-navlinks-list-border-left-width-notebook : var(--fs-border-width);
30
- --fs-navlinks-list-border-left-color-notebook : var(--fs-border-color-light);
31
-
32
- // --------------------------------------------------------
33
- // Structural Styles
34
- // --------------------------------------------------------
35
-
36
- position: relative;
37
- background-color: var(--fs-navlinks-bkg-color);
38
- transition: var(--fs-navlinks-transition-property) var(--fs-navlinks-transition-timing) var(--fs-navlinks-transition-function);
39
-
40
- @include media("<notebook") { padding: 0; }
41
-
42
- @include media(">=notebook") {
43
- z-index: var(--fs-z-index-below);
44
-
45
- > div {
46
- display: flex;
47
- align-items: center;
48
- }
49
- }
50
-
51
- [data-fs-navlinks-list-item] {
52
- display: flex;
53
- align-items: center;
54
- }
55
-
56
- [data-fs-button] {
57
- margin-left: calc(-1 * var(--fs-spacing-1));
58
-
59
- // TODO: remove this after navbar 2.0 is implemented
60
- &[data-fs-button-variant="tertiary"] {
61
- color: var(--fs-color-text-display);
62
- }
63
-
64
- @include media("<notebook") {
65
- display: none;
66
- }
67
- }
68
-
69
- [data-fs-navlinks-link] {
70
- display: block;
71
- width: 100%;
72
- }
73
-
74
- @include media(">=notebook") {
75
- padding-top: var(--fs-navlinks-padding-top-notebook);
76
- padding-bottom: var(--fs-navlinks-padding-bottom-notebook);
77
-
78
- [data-fs-navlinks-list] {
79
- display: flex;
80
- column-gap: var(--fs-spacing-3);
81
- padding-left: var(--fs-navlinks-list-padding-left-notebook);
82
- margin-left: var(--fs-navlinks-list-margin-left-notebook);
83
- border-left: var(--fs-navlinks-list-border-left-width-notebook) solid var(--fs-navlinks-list-border-left-color-notebook);
84
- }
85
-
86
- [data-fs-navlinks-link] {
87
- width: var(--fs-navlinks-link-width-notebook);
88
- padding: var(--fs-navlinks-link-padding-notebook);
89
- }
90
- }
91
-
92
- @include media("<notebook") {
93
- border-top: var(--fs-navlinks-border-top-width-mobile) solid var(--fs-navlinks-border-top-color-mobile);
94
- border-bottom: var(--fs-navlinks-border-bottom-width-mobile) solid var(--fs-navlinks-border-bottom-color-mobile);
95
- }
96
- }
@@ -1,31 +0,0 @@
1
- import { useEffect, useState, useTransition } from 'react'
2
-
3
- export default function useScrollDirection() {
4
- const [scrollDirection, setScrollDirection] = useState<string>('')
5
- const [isPending, startTransition] = useTransition()
6
-
7
- useEffect(() => {
8
- let lastScrollY = window.scrollY
9
-
10
- const updateScrollDirection = () => {
11
- const { scrollY } = window
12
- const direction = scrollY > lastScrollY ? 'down' : 'up'
13
-
14
- if (
15
- !isPending &&
16
- direction !== scrollDirection &&
17
- (scrollY - lastScrollY > 10 || scrollY - lastScrollY < -10)
18
- ) {
19
- startTransition(() => setScrollDirection(direction))
20
- }
21
-
22
- lastScrollY = scrollY > 0 ? scrollY : 0
23
- }
24
-
25
- window.addEventListener('scroll', updateScrollDirection)
26
-
27
- return () => window.removeEventListener('scroll', updateScrollDirection)
28
- }, [isPending, scrollDirection])
29
-
30
- return scrollDirection
31
- }