@@ -23,14 +23,18 @@ const Menu = dynamic(() => import("../Menu"), {
23
23
loading : ( ) => (
24
24
< div className = "me-8 flex w-full items-center gap-10 px-6 max-md:hidden" >
25
25
{ 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" />
27
27
) ) }
28
28
</ div >
29
29
) ,
30
30
} )
31
31
32
32
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
+ />
34
38
)
35
39
36
40
const MobileNavMenu = dynamic ( ( ) => import ( "../Mobile" ) , {
@@ -44,13 +48,22 @@ const SearchProvider = dynamic(() => import("../../Search"), {
44
48
< >
45
49
< div className = "flex items-center gap-6 px-2 max-md:hidden xl:px-3" >
46
50
< Skeleton
51
+ variant = "slow-pulse"
47
52
data-label = "search-xl"
48
53
className = "hidden h-6 w-[169px] xl:flex"
49
54
/>
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
+ />
51
60
</ div >
52
61
< 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
+ />
54
67
< MobileMenuLoading />
55
68
</ div >
56
69
</ >
@@ -61,7 +74,10 @@ const LanguagePicker = dynamic(() => import("../../LanguagePicker"), {
61
74
ssr : false ,
62
75
loading : ( ) => (
63
76
// 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
+ />
65
81
) ,
66
82
} )
67
83
@@ -80,23 +96,32 @@ const ClientSideNav = () => {
80
96
return (
81
97
< >
82
98
{ desktopScreen && (
83
- < Menu className = "max-md:hidden" sections = { linkSections } />
99
+ < Menu
100
+ className = "animate-fade-in max-md:hidden"
101
+ sections = { linkSections }
102
+ />
84
103
) }
85
104
86
105
< div className = "flex items-center" >
87
106
< SearchProvider >
88
107
{ ( { onOpen } ) => {
89
108
return (
90
109
< >
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
+ />
93
118
94
119
{ ! desktopScreen && (
95
120
< MobileNavMenu
96
121
toggleColorMode = { toggleColorMode }
97
122
linkSections = { linkSections }
98
123
toggleSearch = { onOpen }
99
- className = "flex md:hidden"
124
+ className = "flex animate-fade-in md:hidden"
100
125
/>
101
126
) }
102
127
</ >
@@ -109,7 +134,7 @@ const ClientSideNav = () => {
109
134
aria-label = { themeIconAriaLabel }
110
135
variant = "ghost"
111
136
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"
113
138
onClick = { toggleColorMode }
114
139
>
115
140
< ThemeIcon className = "transform-transform duration-500 group-hover:rotate-12 group-hover:transition-transform group-hover:duration-500" />
@@ -122,7 +147,7 @@ const ClientSideNav = () => {
122
147
name = { DESKTOP_LANGUAGE_BUTTON_NAME }
123
148
ref = { languagePickerRef }
124
149
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"
126
151
>
127
152
< BsTranslate className = "me-2 align-middle text-2xl" />
128
153
< span className = "max-lg:hidden" > { t ( "languages" ) } </ span >
0 commit comments