Avijit Ghosh
commited on
Commit
·
fb7cedb
1
Parent(s):
717eea4
Add horizontal scroll and show more/less for organizations
Browse files- src/pages/index.tsx +39 -12
src/pages/index.tsx
CHANGED
|
@@ -18,6 +18,7 @@ function Page({
|
|
| 18 |
}: PageProps) {
|
| 19 |
const [isLoading, setIsLoading] = useState(true);
|
| 20 |
const [selectedTags, setSelectedTags] = useState<string[]>([]);
|
|
|
|
| 21 |
|
| 22 |
useEffect(() => {
|
| 23 |
if (calendarData && Object.keys(calendarData).length > 0) {
|
|
@@ -77,23 +78,49 @@ function Page({
|
|
| 77 |
/>
|
| 78 |
</div>
|
| 79 |
|
| 80 |
-
<div className="mb-16 mx-auto">
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
</div>
|
| 94 |
|
| 95 |
<HeatmapGrid
|
| 96 |
-
sortedProviders={filteredProviders}
|
| 97 |
calendarData={calendarData}
|
| 98 |
isLoading={isLoading}
|
| 99 |
/>
|
|
|
|
| 18 |
}: PageProps) {
|
| 19 |
const [isLoading, setIsLoading] = useState(true);
|
| 20 |
const [selectedTags, setSelectedTags] = useState<string[]>([]);
|
| 21 |
+
const [showAllOrgs, setShowAllOrgs] = useState(false);
|
| 22 |
|
| 23 |
useEffect(() => {
|
| 24 |
if (calendarData && Object.keys(calendarData).length > 0) {
|
|
|
|
| 78 |
/>
|
| 79 |
</div>
|
| 80 |
|
| 81 |
+
<div className="mb-16 mx-auto max-w-full">
|
| 82 |
+
{/* Organization Buttons with Horizontal Scroll */}
|
| 83 |
+
<div className="relative px-4">
|
| 84 |
+
{/* Scrollable container with visible scrollbar */}
|
| 85 |
+
<div
|
| 86 |
+
className="overflow-x-auto overflow-y-hidden pb-4 scrollbar-thin scrollbar-thumb-muted-foreground/30 scrollbar-track-transparent hover:scrollbar-thumb-muted-foreground/50"
|
| 87 |
+
style={{
|
| 88 |
+
scrollbarWidth: 'thin',
|
| 89 |
+
scrollbarColor: 'rgba(115, 115, 115, 0.3) transparent'
|
| 90 |
+
}}
|
| 91 |
+
>
|
| 92 |
+
<div className="flex gap-6 py-2 w-max mx-auto">
|
| 93 |
+
{(showAllOrgs ? filteredProviders : filteredProviders.slice(0, 10)).map((provider, index) => (
|
| 94 |
+
<OrganizationButton
|
| 95 |
+
key={provider.fullName || provider.authors[0]}
|
| 96 |
+
provider={provider}
|
| 97 |
+
calendarData={calendarData}
|
| 98 |
+
rank={index + 1}
|
| 99 |
+
/>
|
| 100 |
+
))}
|
| 101 |
+
</div>
|
| 102 |
</div>
|
| 103 |
+
|
| 104 |
+
{/* Visual scroll indicators */}
|
| 105 |
+
<div className="absolute left-0 top-0 bottom-4 w-8 bg-gradient-to-r from-background via-background/80 to-transparent pointer-events-none" />
|
| 106 |
+
<div className="absolute right-0 top-0 bottom-4 w-8 bg-gradient-to-l from-background via-background/80 to-transparent pointer-events-none" />
|
| 107 |
</div>
|
| 108 |
+
|
| 109 |
+
{/* Show More/Less Button */}
|
| 110 |
+
{filteredProviders.length > 10 && (
|
| 111 |
+
<div className="flex justify-center mt-4">
|
| 112 |
+
<button
|
| 113 |
+
onClick={() => setShowAllOrgs(!showAllOrgs)}
|
| 114 |
+
className="px-6 py-2 text-sm font-medium text-foreground bg-muted hover:bg-muted/80 rounded-full transition-colors duration-200 border border-border"
|
| 115 |
+
>
|
| 116 |
+
{showAllOrgs ? `Show Less (Top 10)` : `Show All ${filteredProviders.length} Organizations`}
|
| 117 |
+
</button>
|
| 118 |
+
</div>
|
| 119 |
+
)}
|
| 120 |
</div>
|
| 121 |
|
| 122 |
<HeatmapGrid
|
| 123 |
+
sortedProviders={showAllOrgs ? filteredProviders : filteredProviders.slice(0, 10)}
|
| 124 |
calendarData={calendarData}
|
| 125 |
isLoading={isLoading}
|
| 126 |
/>
|