Skip to content

Commit aab7049

Browse files
committed
design: use slow-pulse and fade-in for nav lazy loads
1 parent 9423cf0 commit aab7049

File tree

1 file changed

+36
-11
lines changed

1 file changed

+36
-11
lines changed

src/components/Nav/Client/index.tsx

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,18 @@ const Menu = dynamic(() => import("../Menu"), {
2323
loading: () => (
2424
<div className="me-8 flex w-full items-center gap-10 px-6 max-md:hidden">
2525
{Array.from({ length: 5 }).map((_, i) => (
26-
<Skeleton key={i} className="h-6 w-12 py-2" />
26+
<Skeleton variant="slow-pulse" key={i} className="h-6 w-12 py-2" />
2727
))}
2828
</div>
2929
),
3030
})
3131

3232
const MobileMenuLoading = () => (
33-
<Skeleton data-label="mobile-menu" className="ms-2 size-6" />
33+
<Skeleton
34+
variant="slow-pulse"
35+
data-label="mobile-menu"
36+
className="ms-2 size-6"
37+
/>
3438
)
3539

3640
const MobileNavMenu = dynamic(() => import("../Mobile"), {
@@ -44,13 +48,22 @@ const SearchProvider = dynamic(() => import("../../Search"), {
4448
<>
4549
<div className="flex items-center gap-6 px-2 max-md:hidden xl:px-3">
4650
<Skeleton
51+
variant="slow-pulse"
4752
data-label="search-xl"
4853
className="hidden h-6 w-[169px] xl:flex"
4954
/>
50-
<Skeleton data-label="search" className="size-6 xl:hidden" />
55+
<Skeleton
56+
variant="slow-pulse"
57+
data-label="search"
58+
className="size-6 xl:hidden"
59+
/>
5160
</div>
5261
<div className="flex items-center md:hidden">
53-
<Skeleton data-label="search" className="mx-2 size-6" />
62+
<Skeleton
63+
variant="slow-pulse"
64+
data-label="search"
65+
className="mx-2 size-6"
66+
/>
5467
<MobileMenuLoading />
5568
</div>
5669
</>
@@ -61,7 +74,10 @@ const LanguagePicker = dynamic(() => import("../../LanguagePicker"), {
6174
ssr: false,
6275
loading: () => (
6376
// LG skeleton width approximates English "[icon] Languages EN" text width
64-
<Skeleton className="h-6 max-md:hidden md:mx-2 md:w-[54px] lg:mx-3 lg:w-[8.875rem]" />
77+
<Skeleton
78+
variant="slow-pulse"
79+
className="h-6 max-md:hidden md:mx-2 md:w-[54px] lg:mx-3 lg:w-[8.875rem]"
80+
/>
6581
),
6682
})
6783

@@ -80,23 +96,32 @@ const ClientSideNav = () => {
8096
return (
8197
<>
8298
{desktopScreen && (
83-
<Menu className="max-md:hidden" sections={linkSections} />
99+
<Menu
100+
className="animate-fade-in max-md:hidden"
101+
sections={linkSections}
102+
/>
84103
)}
85104

86105
<div className="flex items-center">
87106
<SearchProvider>
88107
{({ onOpen }) => {
89108
return (
90109
<>
91-
<SearchInputButton className="max-xl:hidden" onClick={onOpen} />
92-
<SearchButton className="xl:hidden" onClick={onOpen} />
110+
<SearchInputButton
111+
className="animate-fade-in max-xl:hidden"
112+
onClick={onOpen}
113+
/>
114+
<SearchButton
115+
className="animate-fade-in xl:hidden"
116+
onClick={onOpen}
117+
/>
93118

94119
{!desktopScreen && (
95120
<MobileNavMenu
96121
toggleColorMode={toggleColorMode}
97122
linkSections={linkSections}
98123
toggleSearch={onOpen}
99-
className="flex md:hidden"
124+
className="flex animate-fade-in md:hidden"
100125
/>
101126
)}
102127
</>
@@ -109,7 +134,7 @@ const ClientSideNav = () => {
109134
aria-label={themeIconAriaLabel}
110135
variant="ghost"
111136
isSecondary
112-
className="group px-2 max-md:hidden xl:px-3 [&>svg]:transition-transform [&>svg]:duration-500 [&>svg]:hover:rotate-12 [&>svg]:hover:text-primary-hover"
137+
className="group animate-fade-in px-2 max-md:hidden xl:px-3 [&>svg]:transition-transform [&>svg]:duration-500 [&>svg]:hover:rotate-12 [&>svg]:hover:text-primary-hover"
113138
onClick={toggleColorMode}
114139
>
115140
<ThemeIcon className="transform-transform duration-500 group-hover:rotate-12 group-hover:transition-transform group-hover:duration-500" />
@@ -122,7 +147,7 @@ const ClientSideNav = () => {
122147
name={DESKTOP_LANGUAGE_BUTTON_NAME}
123148
ref={languagePickerRef}
124149
variant="ghost"
125-
className="gap-0 px-2 text-body transition-transform duration-500 active:bg-primary-low-contrast active:text-primary-hover data-[state='open']:bg-primary-low-contrast data-[state='open']:text-primary-hover max-md:hidden xl:px-3 [&_svg]:transition-transform [&_svg]:duration-500 [&_svg]:hover:rotate-12"
150+
className="animate-fade-in gap-0 px-2 text-body transition-transform duration-500 active:bg-primary-low-contrast active:text-primary-hover data-[state='open']:bg-primary-low-contrast data-[state='open']:text-primary-hover max-md:hidden xl:px-3 [&_svg]:transition-transform [&_svg]:duration-500 [&_svg]:hover:rotate-12"
126151
>
127152
<BsTranslate className="me-2 align-middle text-2xl" />
128153
<span className="max-lg:hidden">{t("languages")}&nbsp;</span>

0 commit comments

Comments
 (0)