@adminide-stack/yantra-help-browser 12.0.16-alpha.21 → 12.0.16-alpha.22
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/lib/components/HelpCenterFooter.d.ts.map +1 -1
- package/lib/components/HelpCenterFooter.js +226 -93
- package/lib/components/HelpCenterFooter.js.map +1 -1
- package/lib/components/HelpCenterHeader.d.ts.map +1 -1
- package/lib/components/HelpCenterHeader.js +111 -50
- package/lib/components/HelpCenterHeader.js.map +1 -1
- package/lib/components/SearchBar.d.ts.map +1 -1
- package/lib/components/SearchBar.js +136 -72
- package/lib/components/SearchBar.js.map +1 -1
- package/lib/components/navbar/index.d.ts.map +1 -1
- package/lib/components/navbar/index.js +27 -27
- package/lib/components/navbar/index.js.map +1 -1
- package/lib/pages/CategoryCollection/index.d.ts.map +1 -1
- package/lib/pages/CategoryCollection/index.js +146 -71
- package/lib/pages/CategoryCollection/index.js.map +1 -1
- package/lib/pages/GetStarted/components/ExampleCard.d.ts.map +1 -1
- package/lib/pages/GetStarted/components/GetStartedHero.d.ts.map +1 -1
- package/lib/pages/GetStarted/components/InfoSection.d.ts.map +1 -1
- package/lib/pages/GetStarted/components/TipCard.d.ts.map +1 -1
- package/lib/pages/GetStarted/components/UseCase.d.ts.map +1 -1
- package/lib/pages/GetStarted/index.d.ts.map +1 -1
- package/lib/pages/GetStarted/index.js +358 -702
- package/lib/pages/GetStarted/index.js.map +1 -1
- package/lib/pages/HelpCenter/components/HelpCategoryCard.d.ts.map +1 -1
- package/lib/pages/HelpCenter/components/HelpCategoryCard.js +111 -83
- package/lib/pages/HelpCenter/components/HelpCategoryCard.js.map +1 -1
- package/lib/pages/HelpCenter/components/Icons.d.ts.map +1 -1
- package/lib/pages/HelpCenter/components/Icons.js +182 -132
- package/lib/pages/HelpCenter/components/Icons.js.map +1 -1
- package/lib/pages/HelpCenter/components/PopularArticle.d.ts +3 -0
- package/lib/pages/HelpCenter/components/PopularArticle.d.ts.map +1 -1
- package/lib/pages/HelpCenter/components/PopularArticle.js +21 -21
- package/lib/pages/HelpCenter/components/PopularArticle.js.map +1 -1
- package/lib/pages/HelpCenter/index.d.ts.map +1 -1
- package/lib/pages/HelpCenter/index.js +286 -79
- package/lib/pages/HelpCenter/index.js.map +1 -1
- package/lib/pages/HelpCenter/mockData.d.ts +16 -0
- package/lib/pages/HelpCenter/mockData.d.ts.map +1 -1
- package/lib/pages/HelpCenter/mockData.js +71 -8
- package/lib/pages/HelpCenter/mockData.js.map +1 -1
- package/lib/pages/LandingPage/components/ArticleCard.d.ts +2 -2
- package/lib/pages/LandingPage/components/ArticleCard.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/ArticleCard.js +40 -20
- package/lib/pages/LandingPage/components/ArticleCard.js.map +1 -1
- package/lib/pages/LandingPage/components/Assets.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/CategoriesSection.d.ts +2 -1
- package/lib/pages/LandingPage/components/CategoriesSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/CategoriesSection.js +33 -23
- package/lib/pages/LandingPage/components/CategoriesSection.js.map +1 -1
- package/lib/pages/LandingPage/components/CategoryCard.d.ts +1 -1
- package/lib/pages/LandingPage/components/CategoryCard.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/CategoryCard.js +44 -13
- package/lib/pages/LandingPage/components/CategoryCard.js.map +1 -1
- package/lib/pages/LandingPage/components/FeaturedSection.d.ts +2 -1
- package/lib/pages/LandingPage/components/FeaturedSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/FeaturedSection.js +24 -9
- package/lib/pages/LandingPage/components/FeaturedSection.js.map +1 -1
- package/lib/pages/LandingPage/components/HeroSection.d.ts +1 -6
- package/lib/pages/LandingPage/components/HeroSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/HeroSection.js +113 -37
- package/lib/pages/LandingPage/components/HeroSection.js.map +1 -1
- package/lib/pages/LandingPage/components/Icons.d.ts +0 -1
- package/lib/pages/LandingPage/components/Icons.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/Icons.js +23 -48
- package/lib/pages/LandingPage/components/Icons.js.map +1 -1
- package/lib/pages/LandingPage/components/ResourceCard.d.ts +1 -1
- package/lib/pages/LandingPage/components/ResourceCard.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/ResourceCard.js +33 -19
- package/lib/pages/LandingPage/components/ResourceCard.js.map +1 -1
- package/lib/pages/LandingPage/components/ResourcesSection.d.ts +2 -2
- package/lib/pages/LandingPage/components/ResourcesSection.d.ts.map +1 -1
- package/lib/pages/LandingPage/components/ResourcesSection.js +28 -14
- package/lib/pages/LandingPage/components/ResourcesSection.js.map +1 -1
- package/lib/pages/LandingPage/index.d.ts.map +1 -1
- package/lib/pages/LandingPage/index.js +160 -125
- package/lib/pages/LandingPage/index.js.map +1 -1
- package/package.json +2 -2
- package/lib/pages/LandingPage/components/Assets.js +0 -14
- package/lib/pages/LandingPage/components/Assets.js.map +0 -1
|
@@ -4,6 +4,7 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
4
4
|
const [searchResults, setSearchResults] = useState([]);
|
|
5
5
|
const [showDropdown, setShowDropdown] = useState(false);
|
|
6
6
|
const [selectedIndex, setSelectedIndex] = useState(-1);
|
|
7
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
7
8
|
const [dropdownPosition, setDropdownPosition] = useState({
|
|
8
9
|
top: 0,
|
|
9
10
|
left: 0,
|
|
@@ -11,27 +12,21 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
11
12
|
});
|
|
12
13
|
const searchContainerRef = useRef(null);
|
|
13
14
|
const inputRef = useRef(null);
|
|
14
|
-
// Update search query when initialSearchQuery changes
|
|
15
|
-
// useEffect(() => {
|
|
16
|
-
// setSearchQuery(initialSearchQuery);
|
|
17
|
-
// }, [initialSearchQuery]);
|
|
18
|
-
// Calculate dropdown position
|
|
19
15
|
const updateDropdownPosition = useRef(() => {
|
|
20
16
|
if (searchContainerRef.current) {
|
|
21
17
|
const rect = searchContainerRef.current.getBoundingClientRect();
|
|
22
18
|
setDropdownPosition({
|
|
23
|
-
top: rect.bottom + window.scrollY +
|
|
19
|
+
top: rect.bottom + window.scrollY + 6,
|
|
24
20
|
left: rect.left + window.scrollX,
|
|
25
21
|
width: rect.width
|
|
26
22
|
});
|
|
27
23
|
}
|
|
28
24
|
});
|
|
29
|
-
// Perform search as user types
|
|
30
25
|
useEffect(() => {
|
|
31
26
|
if (searchQuery.trim().length > 0) {
|
|
32
27
|
const performSearch = async () => {
|
|
33
28
|
const results = await searchArticles(searchQuery);
|
|
34
|
-
setSearchResults(results.slice(0,
|
|
29
|
+
setSearchResults(results.slice(0, 6));
|
|
35
30
|
setShowDropdown(true);
|
|
36
31
|
setSelectedIndex(-1);
|
|
37
32
|
};
|
|
@@ -41,7 +36,6 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
41
36
|
setShowDropdown(false);
|
|
42
37
|
}
|
|
43
38
|
}, [searchQuery]);
|
|
44
|
-
// Update position on scroll/resize
|
|
45
39
|
useEffect(() => {
|
|
46
40
|
if (showDropdown) {
|
|
47
41
|
updateDropdownPosition.current();
|
|
@@ -55,13 +49,10 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
55
49
|
};
|
|
56
50
|
}
|
|
57
51
|
}, [showDropdown]);
|
|
58
|
-
// Close dropdown when clicking outside
|
|
59
52
|
useEffect(() => {
|
|
60
53
|
const handleClickOutside = event => {
|
|
61
54
|
const target = event.target;
|
|
62
|
-
// Check if click is outside search container AND not on dropdown
|
|
63
55
|
if (searchContainerRef.current && !searchContainerRef.current.contains(target)) {
|
|
64
|
-
// Check if click is on the dropdown (which is in a portal)
|
|
65
56
|
const dropdown = document.querySelector('[data-search-dropdown]');
|
|
66
57
|
if (!dropdown || !dropdown.contains(target)) {
|
|
67
58
|
setShowDropdown(false);
|
|
@@ -69,19 +60,13 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
69
60
|
}
|
|
70
61
|
};
|
|
71
62
|
document.addEventListener('mousedown', handleClickOutside);
|
|
72
|
-
return () =>
|
|
73
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
74
|
-
};
|
|
63
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
75
64
|
}, []);
|
|
76
65
|
const handleSearch = e => {
|
|
77
66
|
e.preventDefault();
|
|
78
|
-
// if (onSearch && searchQuery.trim()) {
|
|
79
|
-
// onSearch(searchQuery);
|
|
80
|
-
// }
|
|
81
|
-
// If there are results and user presses enter, navigate to first result
|
|
82
67
|
if (searchResults.length > 0) {
|
|
83
|
-
const
|
|
84
|
-
navigate(`/help-center/${
|
|
68
|
+
const target = selectedIndex >= 0 ? searchResults[selectedIndex] : searchResults[0];
|
|
69
|
+
navigate(`/help-center/${target.categoryId}/${target.slug}`);
|
|
85
70
|
setShowDropdown(false);
|
|
86
71
|
}
|
|
87
72
|
};
|
|
@@ -89,8 +74,22 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
89
74
|
setSearchQuery(e.target.value);
|
|
90
75
|
};
|
|
91
76
|
const handleInputFocus = () => {
|
|
92
|
-
|
|
93
|
-
|
|
77
|
+
setIsFocused(true);
|
|
78
|
+
if (searchResults.length > 0) setShowDropdown(true);
|
|
79
|
+
};
|
|
80
|
+
const handleInputBlur = () => {
|
|
81
|
+
setIsFocused(false);
|
|
82
|
+
};
|
|
83
|
+
const handleKeyDown = e => {
|
|
84
|
+
if (!showDropdown || searchResults.length === 0) return;
|
|
85
|
+
if (e.key === 'ArrowDown') {
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
setSelectedIndex(prev => prev < searchResults.length - 1 ? prev + 1 : 0);
|
|
88
|
+
} else if (e.key === 'ArrowUp') {
|
|
89
|
+
e.preventDefault();
|
|
90
|
+
setSelectedIndex(prev => prev > 0 ? prev - 1 : searchResults.length - 1);
|
|
91
|
+
} else if (e.key === 'Escape') {
|
|
92
|
+
setShowDropdown(false);
|
|
94
93
|
}
|
|
95
94
|
};
|
|
96
95
|
const handleResultClick = (article, e) => {
|
|
@@ -98,18 +97,24 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
98
97
|
e.preventDefault();
|
|
99
98
|
e.stopPropagation();
|
|
100
99
|
}
|
|
101
|
-
|
|
102
|
-
if (!article || !article.categoryId || !article.slug) {
|
|
103
|
-
console.error('Article missing required fields:', article);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
// Close dropdown
|
|
100
|
+
if (!article?.categoryId || !article?.slug) return;
|
|
107
101
|
setShowDropdown(false);
|
|
108
102
|
setSearchQuery('');
|
|
109
|
-
|
|
110
|
-
const path = `/help-center/${article.categoryId}/${article.slug}`;
|
|
111
|
-
navigate(path);
|
|
103
|
+
navigate(`/help-center/${article.categoryId}/${article.slug}`);
|
|
112
104
|
};
|
|
105
|
+
const popularTerms = [{
|
|
106
|
+
label: 'AI Employees',
|
|
107
|
+
icon: '\u{1F916}'
|
|
108
|
+
}, {
|
|
109
|
+
label: 'Integrations',
|
|
110
|
+
icon: '\u{1F517}'
|
|
111
|
+
}, {
|
|
112
|
+
label: 'Security',
|
|
113
|
+
icon: '\u{1F6E1}'
|
|
114
|
+
}, {
|
|
115
|
+
label: 'Getting started',
|
|
116
|
+
icon: '\u{1F680}'
|
|
117
|
+
}];
|
|
113
118
|
return jsxs("div", {
|
|
114
119
|
children: [jsx("form", {
|
|
115
120
|
onSubmit: handleSearch,
|
|
@@ -117,79 +122,89 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
117
122
|
style: {
|
|
118
123
|
zIndex: 50
|
|
119
124
|
},
|
|
120
|
-
children:
|
|
125
|
+
children: jsxs("div", {
|
|
121
126
|
ref: searchContainerRef,
|
|
122
|
-
className: "relative w-full",
|
|
123
|
-
children:
|
|
124
|
-
className: "
|
|
127
|
+
className: "relative w-full group",
|
|
128
|
+
children: [jsx("div", {
|
|
129
|
+
className: "absolute -inset-[2px] rounded-[18px] transition-opacity duration-500",
|
|
130
|
+
style: {
|
|
131
|
+
background: isFocused ? 'linear-gradient(135deg, rgba(6,182,212,0.3), rgba(139,92,246,0.3), rgba(236,72,153,0.2))' : 'transparent',
|
|
132
|
+
filter: 'blur(8px)',
|
|
133
|
+
opacity: isFocused ? 1 : 0
|
|
134
|
+
}
|
|
135
|
+
}), jsxs("div", {
|
|
136
|
+
className: `relative flex w-full rounded-2xl bg-white/[0.07] backdrop-blur-xl border shadow-2xl shadow-black/30 transition-all duration-300 ${isFocused ? 'border-white/[0.18] bg-white/[0.10]' : 'border-white/[0.08]'}`,
|
|
125
137
|
children: [jsxs("div", {
|
|
126
138
|
className: "relative flex-1",
|
|
127
139
|
children: [jsx("div", {
|
|
128
|
-
className: "pointer-events-none absolute inset-y-0 left-0 flex items-center pl-
|
|
140
|
+
className: "pointer-events-none absolute inset-y-0 left-0 flex items-center pl-5 z-10",
|
|
129
141
|
children: jsx("svg", {
|
|
130
|
-
className:
|
|
142
|
+
className: `h-5 w-5 transition-colors duration-300 ${isFocused ? 'text-cyan-400' : 'text-white/30'}`,
|
|
131
143
|
fill: "none",
|
|
132
144
|
viewBox: "0 0 24 24",
|
|
133
145
|
stroke: "currentColor",
|
|
134
146
|
children: jsx("path", {
|
|
135
147
|
strokeLinecap: "round",
|
|
136
148
|
strokeLinejoin: "round",
|
|
137
|
-
strokeWidth:
|
|
149
|
+
strokeWidth: 1.5,
|
|
138
150
|
d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
|
|
139
151
|
})
|
|
140
152
|
})
|
|
141
153
|
}), jsx("input", {
|
|
142
154
|
ref: inputRef,
|
|
143
155
|
type: "text",
|
|
144
|
-
className: "h-
|
|
145
|
-
placeholder: "Search
|
|
156
|
+
className: "h-[56px] w-full bg-transparent py-5 pl-14 pr-4 text-[15px] text-white placeholder-white/25 outline-none relative z-10",
|
|
157
|
+
placeholder: "Search articles, guides, and tutorials...",
|
|
146
158
|
value: searchQuery,
|
|
147
159
|
onChange: handleInputChange,
|
|
148
|
-
onFocus: handleInputFocus
|
|
160
|
+
onFocus: handleInputFocus,
|
|
161
|
+
onBlur: handleInputBlur,
|
|
162
|
+
onKeyDown: handleKeyDown
|
|
149
163
|
})]
|
|
150
164
|
}), jsx("button", {
|
|
151
165
|
type: "submit",
|
|
152
|
-
className: "flex items-center justify-center rounded-r-2xl bg-
|
|
166
|
+
className: "flex items-center justify-center rounded-r-2xl bg-gradient-to-r from-cyan-500 to-blue-600 px-7 text-sm font-semibold text-white transition-all hover:from-cyan-400 hover:to-blue-500 hover:shadow-lg hover:shadow-cyan-500/20 relative z-10",
|
|
153
167
|
children: "Search"
|
|
154
168
|
})]
|
|
155
|
-
})
|
|
169
|
+
})]
|
|
156
170
|
})
|
|
157
171
|
}), jsxs("div", {
|
|
158
|
-
className: "mt-
|
|
172
|
+
className: "mt-5 flex flex-wrap items-center justify-center gap-2",
|
|
159
173
|
children: [jsx("span", {
|
|
160
|
-
className: "text-
|
|
174
|
+
className: "text-[12px] text-white/25 mr-1",
|
|
161
175
|
children: "Popular:"
|
|
162
|
-
}),
|
|
176
|
+
}), popularTerms.map(term => jsxs("button", {
|
|
163
177
|
onClick: () => {
|
|
164
|
-
setSearchQuery(term);
|
|
178
|
+
setSearchQuery(term.label);
|
|
165
179
|
setShowDropdown(true);
|
|
166
180
|
},
|
|
167
|
-
className: "rounded-full bg-white/
|
|
168
|
-
children:
|
|
169
|
-
|
|
181
|
+
className: "inline-flex items-center gap-1.5 rounded-full border border-white/[0.06] bg-white/[0.03] px-3 py-1.5 text-[12px] text-white/40 transition-all duration-300 hover:bg-white/[0.08] hover:text-white/60 hover:border-white/[0.12]",
|
|
182
|
+
children: [jsx("span", {
|
|
183
|
+
className: "text-[11px]",
|
|
184
|
+
children: term.icon
|
|
185
|
+
}), term.label]
|
|
186
|
+
}, term.label))]
|
|
170
187
|
}), showDropdown && typeof document !== 'undefined' && createPortal(jsx(Fragment, {
|
|
171
|
-
children: searchResults.length > 0 ?
|
|
188
|
+
children: searchResults.length > 0 ? jsxs("div", {
|
|
172
189
|
"data-search-dropdown": true,
|
|
173
|
-
className: "fixed bg-white
|
|
190
|
+
className: "fixed rounded-2xl bg-white/95 backdrop-blur-xl shadow-2xl shadow-black/20 border border-gray-200/60 max-h-[420px] overflow-y-auto z-[9999]",
|
|
174
191
|
style: {
|
|
175
192
|
top: `${dropdownPosition.top}px`,
|
|
176
193
|
left: `${dropdownPosition.left}px`,
|
|
177
194
|
width: `${dropdownPosition.width}px`
|
|
178
195
|
},
|
|
179
196
|
onClick: e => e.stopPropagation(),
|
|
180
|
-
children: jsx("div", {
|
|
181
|
-
className: "
|
|
197
|
+
children: [jsx("div", {
|
|
198
|
+
className: "p-2",
|
|
182
199
|
children: searchResults.map((article, index) => {
|
|
183
200
|
const category = getCategoryByIdSync(article.categoryId);
|
|
184
|
-
|
|
185
|
-
return jsx("div", {
|
|
201
|
+
return jsxs("div", {
|
|
186
202
|
onClick: e => {
|
|
187
|
-
console.log('Click event fired on article:', article.title);
|
|
188
203
|
e.preventDefault();
|
|
189
204
|
e.stopPropagation();
|
|
190
205
|
handleResultClick(article, e);
|
|
191
206
|
},
|
|
192
|
-
className: `
|
|
207
|
+
className: `flex items-start gap-3 rounded-xl px-3 py-2.5 transition-all duration-150 cursor-pointer ${selectedIndex === index ? 'bg-gradient-to-r from-cyan-50 to-blue-50 shadow-sm' : 'hover:bg-gray-50/80'}`,
|
|
193
208
|
role: "button",
|
|
194
209
|
tabIndex: 0,
|
|
195
210
|
onKeyDown: e => {
|
|
@@ -198,35 +213,84 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useEff
|
|
|
198
213
|
handleResultClick(article);
|
|
199
214
|
}
|
|
200
215
|
},
|
|
201
|
-
children:
|
|
202
|
-
className: "flex
|
|
216
|
+
children: [jsx("div", {
|
|
217
|
+
className: "mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-gray-50 to-gray-100 text-gray-400 ring-1 ring-gray-200/60",
|
|
218
|
+
children: jsx("svg", {
|
|
219
|
+
className: "h-3.5 w-3.5",
|
|
220
|
+
fill: "none",
|
|
221
|
+
stroke: "currentColor",
|
|
222
|
+
viewBox: "0 0 24 24",
|
|
223
|
+
children: jsx("path", {
|
|
224
|
+
strokeLinecap: "round",
|
|
225
|
+
strokeLinejoin: "round",
|
|
226
|
+
strokeWidth: 1.5,
|
|
227
|
+
d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
|
|
228
|
+
})
|
|
229
|
+
})
|
|
230
|
+
}), jsxs("div", {
|
|
231
|
+
className: "min-w-0 flex-1",
|
|
203
232
|
children: [jsx("div", {
|
|
204
|
-
className: "text-
|
|
233
|
+
className: "text-[13px] font-semibold text-gray-900 truncate",
|
|
205
234
|
children: article.title
|
|
206
235
|
}), article.description && jsx("div", {
|
|
207
|
-
className: "text-
|
|
236
|
+
className: "mt-0.5 text-[12px] text-gray-500 line-clamp-1",
|
|
208
237
|
children: article.description
|
|
209
238
|
}), category && jsx("div", {
|
|
210
|
-
className: "text-
|
|
239
|
+
className: "mt-1.5 inline-flex items-center rounded-md bg-blue-50/80 px-1.5 py-0.5 text-[10px] font-medium text-blue-600 ring-1 ring-blue-100",
|
|
211
240
|
children: category.title
|
|
212
241
|
})]
|
|
213
|
-
})
|
|
242
|
+
}), jsx("svg", {
|
|
243
|
+
className: "mt-1 h-3.5 w-3.5 shrink-0 text-gray-300",
|
|
244
|
+
fill: "none",
|
|
245
|
+
stroke: "currentColor",
|
|
246
|
+
viewBox: "0 0 24 24",
|
|
247
|
+
children: jsx("path", {
|
|
248
|
+
strokeLinecap: "round",
|
|
249
|
+
strokeLinejoin: "round",
|
|
250
|
+
strokeWidth: 2,
|
|
251
|
+
d: "M9 5l7 7-7 7"
|
|
252
|
+
})
|
|
253
|
+
})]
|
|
214
254
|
}, article.id);
|
|
215
255
|
})
|
|
216
|
-
})
|
|
256
|
+
}), jsx("div", {
|
|
257
|
+
className: "border-t border-gray-100/80 px-3 py-2 text-center",
|
|
258
|
+
children: jsx("span", {
|
|
259
|
+
className: "text-[11px] text-gray-400",
|
|
260
|
+
children: "Enter to select \u00B7 \u2191\u2193 navigate \u00B7 Esc to close"
|
|
261
|
+
})
|
|
262
|
+
})]
|
|
217
263
|
}) : searchQuery.trim().length > 0 ? jsx("div", {
|
|
218
|
-
className: "fixed bg-white
|
|
264
|
+
className: "fixed rounded-2xl bg-white/95 backdrop-blur-xl shadow-2xl border border-gray-200/60 z-[9999]",
|
|
219
265
|
style: {
|
|
220
266
|
top: `${dropdownPosition.top}px`,
|
|
221
267
|
left: `${dropdownPosition.left}px`,
|
|
222
268
|
width: `${dropdownPosition.width}px`
|
|
223
269
|
},
|
|
224
270
|
onClick: e => e.stopPropagation(),
|
|
225
|
-
children:
|
|
226
|
-
className: "px-4 py-
|
|
227
|
-
children:
|
|
228
|
-
|
|
229
|
-
|
|
271
|
+
children: jsxs("div", {
|
|
272
|
+
className: "px-4 py-8 text-center",
|
|
273
|
+
children: [jsx("div", {
|
|
274
|
+
className: "mx-auto mb-3 flex h-12 w-12 items-center justify-center rounded-full bg-gray-50",
|
|
275
|
+
children: jsx("svg", {
|
|
276
|
+
className: "h-5 w-5 text-gray-400",
|
|
277
|
+
fill: "none",
|
|
278
|
+
stroke: "currentColor",
|
|
279
|
+
viewBox: "0 0 24 24",
|
|
280
|
+
children: jsx("path", {
|
|
281
|
+
strokeLinecap: "round",
|
|
282
|
+
strokeLinejoin: "round",
|
|
283
|
+
strokeWidth: 1.5,
|
|
284
|
+
d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
|
|
285
|
+
})
|
|
286
|
+
})
|
|
287
|
+
}), jsx("p", {
|
|
288
|
+
className: "text-sm font-medium text-gray-700",
|
|
289
|
+
children: "No results found"
|
|
290
|
+
}), jsx("p", {
|
|
291
|
+
className: "mt-1 text-xs text-gray-400",
|
|
292
|
+
children: "Try different keywords or browse categories below"
|
|
293
|
+
})]
|
|
230
294
|
})
|
|
231
295
|
}) : null
|
|
232
296
|
}), document.body)]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.js","sources":["../../src/components/SearchBar.tsx"],"sourcesContent":[null],"names":["
|
|
1
|
+
{"version":3,"file":"SearchBar.js","sources":["../../src/components/SearchBar.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAexC,UAAU,kBAAkB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqFtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -17,60 +17,60 @@ const RightNavItems = ({
|
|
|
17
17
|
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
18
18
|
const location = useLocation();
|
|
19
19
|
const params = useParams();
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
};
|
|
23
|
-
const isActive = path => {
|
|
24
|
-
return location.pathname === path;
|
|
25
|
-
};
|
|
20
|
+
const isActive = path => location.pathname === path;
|
|
21
|
+
const isDark = !scrolled && !params.articleSlug;
|
|
26
22
|
return jsxs("div", {
|
|
27
|
-
className:
|
|
23
|
+
className: `flex items-center justify-between ${isDark ? 'text-white' : 'text-foreground'}`,
|
|
28
24
|
children: [jsxs("div", {
|
|
29
|
-
className: "flex",
|
|
25
|
+
className: "flex items-center",
|
|
30
26
|
children: [jsx("div", {
|
|
31
|
-
className: "hidden sm:ml-6 sm:flex sm:
|
|
32
|
-
children: navItems.map(item =>
|
|
27
|
+
className: "hidden sm:ml-6 sm:flex sm:items-center sm:gap-1",
|
|
28
|
+
children: navItems.map(item => jsxs(Link, {
|
|
33
29
|
to: item.path,
|
|
34
|
-
className: `
|
|
35
|
-
children: item.label
|
|
30
|
+
className: `relative rounded-lg px-3.5 py-2 text-[14px] font-medium transition-all duration-200 ${isActive(item.path) ? isDark ? 'bg-white/[0.08] text-white' : 'bg-foreground/[0.06] text-foreground' : isDark ? 'text-white/60 hover:bg-white/[0.05] hover:text-white' : 'text-muted-foreground hover:bg-muted hover:text-foreground'}`,
|
|
31
|
+
children: [item.label, isActive(item.path) && jsx("span", {
|
|
32
|
+
className: "absolute bottom-0 left-1/2 h-[2px] w-4 -translate-x-1/2 rounded-full bg-gradient-to-r from-cyan-500 to-blue-500"
|
|
33
|
+
})]
|
|
36
34
|
}, item.key))
|
|
37
|
-
}), jsx("div", {
|
|
38
|
-
className: "hidden sm:ml-6 sm:flex sm:items-center"
|
|
39
35
|
}), jsx("div", {
|
|
40
36
|
className: "-mr-2 flex items-center sm:hidden",
|
|
41
37
|
children: jsxs("button", {
|
|
42
38
|
type: "button",
|
|
43
|
-
className: "inline-flex items-center justify-center rounded-
|
|
39
|
+
className: "inline-flex items-center justify-center rounded-lg p-2 transition-colors hover:bg-white/10",
|
|
40
|
+
onClick: () => setIsMenuOpen(!isMenuOpen),
|
|
44
41
|
"aria-expanded": isMenuOpen,
|
|
45
|
-
onClick: toggleMenu,
|
|
46
42
|
children: [jsx("span", {
|
|
47
43
|
className: "sr-only",
|
|
48
|
-
children: "
|
|
44
|
+
children: "Toggle menu"
|
|
49
45
|
}), jsx("svg", {
|
|
50
|
-
className: "
|
|
51
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
46
|
+
className: "h-5 w-5",
|
|
52
47
|
fill: "none",
|
|
53
48
|
viewBox: "0 0 24 24",
|
|
54
49
|
stroke: "currentColor",
|
|
55
|
-
|
|
56
|
-
children: jsx("path", {
|
|
50
|
+
strokeWidth: 1.5,
|
|
51
|
+
children: isMenuOpen ? jsx("path", {
|
|
52
|
+
strokeLinecap: "round",
|
|
53
|
+
strokeLinejoin: "round",
|
|
54
|
+
d: "M6 18L18 6M6 6l12 12"
|
|
55
|
+
}) : jsx("path", {
|
|
57
56
|
strokeLinecap: "round",
|
|
58
57
|
strokeLinejoin: "round",
|
|
59
|
-
strokeWidth: 2,
|
|
60
58
|
d: "M4 6h16M4 12h16M4 18h16"
|
|
61
59
|
})
|
|
62
60
|
})]
|
|
63
61
|
})
|
|
64
62
|
})]
|
|
65
63
|
}), isMenuOpen && jsx("div", {
|
|
66
|
-
className: "sm:hidden",
|
|
64
|
+
className: "absolute left-0 right-0 top-full z-50 border-b border-border/30 bg-background/95 backdrop-blur-xl sm:hidden",
|
|
67
65
|
children: jsx("div", {
|
|
68
|
-
className: "space-y-1
|
|
69
|
-
children: navItems.map(item =>
|
|
66
|
+
className: "space-y-1 px-4 py-3",
|
|
67
|
+
children: navItems.map(item => jsxs(Link, {
|
|
70
68
|
to: item.path,
|
|
71
|
-
className: `
|
|
69
|
+
className: `flex items-center gap-3 rounded-xl px-4 py-2.5 text-sm font-medium transition-all ${isActive(item.path) ? 'bg-gradient-to-r from-cyan-500/10 to-blue-500/10 text-foreground' : 'text-muted-foreground hover:bg-muted hover:text-foreground'}`,
|
|
72
70
|
onClick: () => setIsMenuOpen(false),
|
|
73
|
-
children: item.
|
|
71
|
+
children: [isActive(item.path) && jsx("span", {
|
|
72
|
+
className: "h-1.5 w-1.5 rounded-full bg-cyan-500"
|
|
73
|
+
}), item.label]
|
|
74
74
|
}, item.key))
|
|
75
75
|
})
|
|
76
76
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/navbar/index.tsx"],"sourcesContent":[null],"names":["_jsxs"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/navbar/index.tsx"],"sourcesContent":[null],"names":["_jsxs"],"mappings":"gIASA,MAAM,QAAQ,GAAc,CAAA;KACtB,EAAA,MAAK;OACL,EAAG,MAAE;MACL,EAAA;CACL,EAAC;AAMF,EAAM,GAAA,EAAC,aAAM;OACH,EAAA,aAAW;AACjB,EAAA,IAAA,EAAA;AACA,CAAA,EAAA;AAEA,EAAA,GAAA,EAAA,aAAc;OACR,EAAA,aAAU;MAET,EAAA;AAWyB,CAAA,CAAA;AACI,MAAA,aAAA,GAAA,CAAA;AACA,EAAA,QAAA,GAAA;AACJ,CAAA,KAAA;AACE,EAAA,MAAA,CAAA,UAAA,EAAA,aAAA,CAAA,GAAE,QAAsD,CAAA,KAAA,CAAA;AACxD,EAAA,MAAA,QAAA,GAAA,WAAA,EAAA;AA+CE,EAAA,MAAA,MAAA,GAAA,SAAA,EAAA;AACA,EAAA,MAAA,QAAA,GAAA,IAAA,IAAA,QACR,CAAA,QAAA,KAAA,IAAA;AAYhC,EAAE,MAAA,MAAA,GAAA,CAAA,QAAA,IAAA,CAAA,MAAA,CAAA,WAAA;AAEF,EAAA,OAAAA,IAAA,CAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/CategoryCollection/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/CategoryCollection/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,QAAA,MAAM,sBAAsB,EAAE,KAAK,CAAC,EA6KnC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|