Skip to content

Commit 501926d

Browse files
committed
feat: refactor FilterBar to a static Astro component
1 parent 847a682 commit 501926d

1 file changed

Lines changed: 10 additions & 22 deletions

File tree

src/pages/plans/index.astro

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
33
import Navbar from '../../components/Navbar.astro';
44
import Footer from '../../components/Footer.astro';
55
import PlanCard from '../../components/PlanCard.astro';
6-
import FilterBar from '../../components/FilterBar.tsx';
6+
import FilterBar from '../../components/FilterBar.astro';
77
import { getCollection } from 'astro:content';
88
99
const allPlans = await getCollection('plans');
@@ -33,6 +33,7 @@ const planDataForFilter = allPlans.map(plan => ({
3333
startup_credits: plan.data.startup_credits,
3434
tools_compatible: plan.data.tools_compatible,
3535
community_score: plan.data.community_score ?? undefined,
36+
community_score: plan.data.community_score ?? undefined,
3637
latency: plan.data.latency ? {
3738
average_ms: plan.data.latency.average_ms,
3839
uptime_percent: plan.data.latency.uptime_percent,
@@ -68,9 +69,9 @@ const planDataForFilter = allPlans.map(plan => ({
6869
<!-- Filter Bar + Plan Grid -->
6970
<section class="py-8 bg-base-100">
7071
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
71-
<!-- FilterBar React Island -->
72+
<!-- FilterBar Astro Island -->
7273
<div class="mb-6">
73-
<FilterBar client:load plans={planDataForFilter} />
74+
<FilterBar plans={planDataForFilter} />
7475
</div>
7576

7677
<!-- Sort -->
@@ -93,6 +94,11 @@ const planDataForFilter = allPlans.map(plan => ({
9394
data-name={plan.data.name}
9495
data-score={plan.data.community_score ?? 0}
9596
data-badge={plan.data.badge}
97+
data-provider={plan.data.provider}
98+
data-categories={plan.data.categories.join(',')}
99+
data-tools={plan.data.tools_compatible.join(',')}
100+
data-student={plan.data.student_discount ? 'true' : 'false'}
101+
data-startup={plan.data.startup_credits ? 'true' : 'false'}
96102
>
97103
<PlanCard
98104
name={plan.data.name}
@@ -140,23 +146,5 @@ const planDataForFilter = allPlans.map(plan => ({
140146
items.forEach(item => grid.appendChild(item));
141147
});
142148

143-
// Listen for FilterBar custom events to show/hide plan cards
144-
window.addEventListener('filterbar:change', ((event: CustomEvent) => {
145-
const { slugs } = event.detail;
146-
const items = document.querySelectorAll('.plan-item') as NodeListOf<HTMLElement>;
147-
let visibleCount = 0;
148-
149-
items.forEach(item => {
150-
const slug = item.dataset.slug || '';
151-
if (slugs.includes(slug)) {
152-
item.style.display = '';
153-
visibleCount++;
154-
} else {
155-
item.style.display = 'none';
156-
}
157-
});
158-
159-
noResults.classList.toggle('hidden', visibleCount > 0);
160-
grid.classList.toggle('hidden', visibleCount === 0);
161-
}) as EventListener);
149+
// FilterBar logic will handle visibility directly.
162150
</script>

0 commit comments

Comments
 (0)