Skip to content

Commit 7955fad

Browse files
authored
Merge branch 'main' into fix/partial-scores-ux-hydration
2 parents 39edb74 + 5033825 commit 7955fad

File tree

19 files changed

+2727
-1328
lines changed

19 files changed

+2727
-1328
lines changed

app/(routes)/configurations/page.tsx

Lines changed: 73 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import { useState, useEffect } from "react";
1414
import { useRouter } from "next/navigation";
1515
import Sidebar from "@/app/components/Sidebar";
1616
import { colors } from "@/app/lib/colors";
17-
import { useConfigs, SavedConfig } from "@/app/lib/useConfigs";
17+
import { useConfigs } from "@/app/hooks/useConfigs";
18+
import { SavedConfig } from "@/app/lib/types/configs";
1819
import ConfigCard from "@/app/components/ConfigCard";
1920
import { LoaderBox } from "@/app/components/Loader";
2021
import { EvalJob } from "@/app/components/types";
@@ -26,7 +27,16 @@ export default function ConfigLibraryPage() {
2627
const router = useRouter();
2728
const { sidebarCollapsed, setSidebarCollapsed } = useApp();
2829
const { activeKey } = useAuth();
29-
const { configGroups, isLoading, error, refetch, isCached } = useConfigs();
30+
const {
31+
configGroups,
32+
isLoading,
33+
error,
34+
refetch,
35+
isCached,
36+
loadMoreConfigs,
37+
hasMoreConfigs,
38+
isLoadingMore,
39+
} = useConfigs({ pageSize: 10 });
3040
const [searchQuery, setSearchQuery] = useState("");
3141
const [evaluationCounts, setEvaluationCounts] = useState<
3242
Record<string, number>
@@ -417,18 +427,67 @@ export default function ConfigLibraryPage() {
417427
)}
418428
</div>
419429
) : (
420-
<div className="grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-4">
421-
{filteredConfigs.map((configGroup) => (
422-
<ConfigCard
423-
key={configGroup.config_id}
424-
configGroup={configGroup}
425-
evaluationCount={
426-
evaluationCounts[configGroup.config_id] || 0
427-
}
428-
onUseInEvaluation={handleUseInEvaluation}
429-
/>
430-
))}
431-
</div>
430+
<>
431+
<div className="grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-4">
432+
{filteredConfigs.map((configGroup) => (
433+
<ConfigCard
434+
key={configGroup.config_id}
435+
configGroup={configGroup}
436+
evaluationCount={
437+
evaluationCounts[configGroup.config_id] || 0
438+
}
439+
onUseInEvaluation={handleUseInEvaluation}
440+
/>
441+
))}
442+
</div>
443+
{hasMoreConfigs && !searchQuery && (
444+
<div className="flex justify-center mt-6">
445+
<button
446+
onClick={loadMoreConfigs}
447+
disabled={isLoadingMore}
448+
className="px-6 py-2.5 rounded-md text-sm font-medium transition-colors flex items-center gap-2"
449+
style={{
450+
backgroundColor: colors.bg.primary,
451+
border: `1px solid ${colors.border}`,
452+
color: colors.text.secondary,
453+
}}
454+
onMouseEnter={(e) => {
455+
if (!isLoadingMore) {
456+
e.currentTarget.style.backgroundColor =
457+
colors.bg.secondary;
458+
e.currentTarget.style.color = colors.text.primary;
459+
}
460+
}}
461+
onMouseLeave={(e) => {
462+
e.currentTarget.style.backgroundColor =
463+
colors.bg.primary;
464+
e.currentTarget.style.color = colors.text.secondary;
465+
}}
466+
>
467+
{isLoadingMore ? (
468+
<>
469+
<svg
470+
className="w-4 h-4 animate-spin"
471+
fill="none"
472+
viewBox="0 0 24 24"
473+
stroke="currentColor"
474+
>
475+
<path
476+
strokeLinecap="round"
477+
strokeLinejoin="round"
478+
strokeWidth={2}
479+
d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"
480+
/>
481+
</svg>
482+
Loading...
483+
</>
484+
) : (
485+
"Load More"
486+
)}
487+
</button>
488+
</div>
489+
)}
490+
</>
432491
)}
433492
</div>
434493
</div>

0 commit comments

Comments
 (0)