@@ -3,7 +3,6 @@ import { useMemo, useState } from "react";
33import Autoplay from "embla-carousel-autoplay" ;
44import { IPreviewCard , IPreviewCards } from "@/utils/interfaces" ;
55import PreviewCard from "@/components/PreviewCard/PreviewCard" ;
6- import { Header , Logo , LogoContainer , Name } from "./PreviewSection.styles" ;
76import {
87 Carousel ,
98 CarouselContent ,
@@ -12,11 +11,24 @@ import {
1211 CarouselPrevious ,
1312 DotButton ,
1413} from "../ui/carousel" ;
15- import Filter from "./Filter/Filter" ;
14+ import {
15+ Select ,
16+ SelectContent ,
17+ SelectGroup ,
18+ SelectItem ,
19+ SelectLabel ,
20+ SelectTrigger ,
21+ SelectValue ,
22+ } from "../ui/select" ;
1623
17- const PreviewSection = ( { cards } : { cards : IPreviewCards [ ] } ) => {
18- const [ selectedRegion , setSelectedRegion ] = useState ( "Nordeste" ) ;
19- const [ selectedState , setSelectedState ] = useState ( "" ) ;
24+ const PreviewSection = ( {
25+ header,
26+ cards,
27+ } : {
28+ cards : IPreviewCards [ ] ;
29+ header : { fields : any } ;
30+ } ) => {
31+ const [ selectedState , setSelectedState ] = useState ( "all" ) ;
2032
2133 const allCardsData = cards . map ( ( card ) => ( {
2234 category : card . fields . category ,
@@ -25,9 +37,10 @@ const PreviewSection = ({ cards }: { cards: IPreviewCards[] }) => {
2537
2638 const filteredCards = useMemo ( ( ) => {
2739 return allCardsData . map ( ( regionData ) => {
28- const source = selectedState
29- ? regionData . states . find ( ( state ) => state . name === selectedState )
30- : regionData ;
40+ const source =
41+ selectedState !== "all"
42+ ? regionData . states . find ( ( state ) => state . name === selectedState )
43+ : regionData ;
3144
3245 return source
3346 ? {
@@ -41,28 +54,35 @@ const PreviewSection = ({ cards }: { cards: IPreviewCards[] }) => {
4154 : null ;
4255 } ) as IPreviewCard [ ] ;
4356 // eslint-disable-next-line react-hooks/exhaustive-deps
44- } , [ selectedState , selectedRegion ] ) ;
57+ } , [ selectedState ] ) ;
4558
46- const handleFilterChange = ( region : string , state : string ) => {
47- setSelectedRegion ( region ) ;
59+ const handleFilterChange = ( state : string ) => {
60+ // setSelectedRegion(region);
4861 setSelectedState ( state ) ;
4962 } ;
5063
5164 return (
52- < div className = "flex flex-col p-6 max-w-[1440px] w-full justify-center items-center" >
53- < Header >
54- < LogoContainer >
55- < Logo src = "/logo.png" alt = "datane logo" width = { 24 } height = { 24 } />
56- < Name > Data Nordeste</ Name >
57- </ LogoContainer >
58-
59- < Filter
60- data = { allCardsData }
61- selectedRegion = { selectedRegion }
62- selectedState = { selectedState }
63- onChange = { handleFilterChange }
64- />
65- </ Header >
65+ < div className = "flex flex-col bg-white px-3 lg:px-8 gap-3 border-box py-5 lg:py-10 max-w-[1440px] w-full justify-center items-center shadow-md rounded-lg -translate-y-4 lg:-translate-y-12" >
66+ < div className = "flex flex-col lg:flex-row gap-3 justify-between w-full" >
67+ < h2 className = "text-3xl font-semibold" > { header . fields . title } </ h2 >
68+ < Select onValueChange = { handleFilterChange } >
69+ < SelectTrigger className = "w-full lg:w-[180px]" >
70+ < SelectValue placeholder = "Nordeste" />
71+ </ SelectTrigger >
72+ < SelectContent >
73+ < SelectItem value = "all" > Nordeste</ SelectItem >
74+ < SelectGroup >
75+ < SelectLabel > Estados</ SelectLabel >
76+ { allCardsData &&
77+ allCardsData [ 0 ] . states . map ( ( state , i ) => (
78+ < SelectItem value = { state . name } key = { i } >
79+ { state . name }
80+ </ SelectItem >
81+ ) ) }
82+ </ SelectGroup >
83+ </ SelectContent >
84+ </ Select >
85+ </ div >
6686
6787 < Carousel
6888 opts = { {
@@ -80,7 +100,7 @@ const PreviewSection = ({ cards }: { cards: IPreviewCards[] }) => {
80100 { filteredCards . map ( ( card , i ) => (
81101 < CarouselItem
82102 key = { i }
83- className = "basis-1/1 md:basis-1/2 lg:basis-1/4 p-2"
103+ className = "basis-1/1 md:basis-1/2 lg:basis-1/4 p-1 md:p- 2"
84104 >
85105 < PreviewCard content = { card } />
86106 </ CarouselItem >
0 commit comments