@@ -3,7 +3,7 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
33import Navbar from ' ../../components/Navbar.astro' ;
44import Footer from ' ../../components/Footer.astro' ;
55import PlanCard from ' ../../components/PlanCard.astro' ;
6- import FilterBar from ' ../../components/FilterBar.tsx ' ;
6+ import FilterBar from ' ../../components/FilterBar.astro ' ;
77import { getCollection } from ' astro:content' ;
88
99const 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