import React, { useState, useMemo, useEffect } from 'react';
import { Search, Calendar as CalendarIcon, ChevronRight, ArrowLeft, Info, CheckCircle2, Thermometer, Snowflake, MapPin } from 'lucide-react';
// Generic tips fallback
const defaultDicas = {
escolher: 'Prefira frutos com cor vibrante, sem machucados, partes moles ou furos na casca. O aroma deve ser agradável.',
conservar: 'Mantenha em local fresco e arejado. Após maduro ou cortado, conserve na geladeira em recipiente fechado.',
congelar: 'Sim. Lave, descasque, pique e guarde em potes ou sacos próprios para freezer por até 3 meses.',
origens: 'Produção distribuída por diversas regiões do território nacional.'
};
const fruitData = [
{ name: 'Abacate', months: [2, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 2],
escolher: 'A casca deve ceder levemente ao toque suave. Evite frutos muito moles ou com manchas escuras fundas.',
conservar: 'Se estiver verde, deixe em temperatura ambiente. Quando amadurecer, guarde na geladeira para não estragar.' },
{ name: 'Abacaxi', months: [1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1],
escolher: 'As folhas da coroa devem soltar com facilidade ao puxar. O aroma na base deve ser doce.',
conservar: 'Deixe fora da geladeira até o momento de fatiar. Depois de cortado, mantenha na geladeira em pote fechado.' },
{ name: 'Açaí', months: [1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 2], ...defaultDicas },
{ name: 'Ameixa', months: [1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1],
escolher: 'Prefira as com casca lisa, sem rugas, e que cedam levemente à pressão.',
conservar: 'Guarde na geladeira (gaveta inferior) para prolongar a vida útil. Lave apenas antes de comer.' },
{ name: 'Atemóia', months: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 0, 0],
escolher: 'Os "gomos" da casca devem estar ligeiramente afastados. Fruto deve ceder um pouco ao toque.',
conservar: 'Amadurece rápido fora da geladeira. Consuma logo após madura ou refrigere por no máximo 2 dias.' },
{ name: 'Banana', months: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
escolher: 'Para consumo imediato, escolha cascas amarelas com pintinhas marrons. Para durar mais, pontas esverdeadas.',
conservar: 'Sempre fora da geladeira, em local fresco. A geladeira deixa a casca preta e altera o sabor.' },
{ name: 'Caju', months: [1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1],
escolher: 'Cor viva (amarelo ou vermelho), firme e sem manchas escuras ou partes machucadas.',
conservar: 'É muito perecível. Guarde na geladeira e consuma em até 2 dias úteis.' },
{ name: 'Caqui', months: [0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
escolher: 'A casca deve estar intacta. O tipo Rama Forte é bem mole quando maduro, o Fuyu deve ser firme como maçã.',
conservar: 'Na geladeira duram bastante tempo. Retire um pouco antes de comer se preferir menos gelado.' },
{ name: 'Carambola', months: [1, 1, 2, 2, 0, 0, 2, 1, 1, 0, 0, 2],
escolher: 'Cor amarela brilhante para consumo imediato. Bordas ligeiramente escurecidas são normais.',
conservar: 'Deixe em temperatura ambiente até amarelar por completo, depois transfira para a geladeira.' },
{ name: 'Cereja', months: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], ...defaultDicas },
{ name: 'Coco', months: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
escolher: 'Sacuda o coco verde para ouvir a água (quanto mais, melhor). Coco seco deve ser pesado para o tamanho.',
conservar: 'O verde pode ficar fora da geladeira até abrir. Depois de aberto, consuma a água no mesmo dia.' },
{ name: 'Cupuaçu', months: [1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 1], ...defaultDicas },
{ name: 'Figo', months: [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1],
escolher: 'Frutos macios e gordinhos. Evite os que estiverem soltando líquido ou cheirando a fermentado.',
conservar: 'Altamente perecível. Guarde imediatamente na geladeira forrado com papel toalha e consuma em 2 dias.' },
{ name: 'Goiaba', months: [1, 1, 1, 2, 2, 0, 0, 0, 0, 2, 1, 1],
escolher: 'Deve ter um aroma forte e doce, e ceder levemente à pressão dos dedos.',
conservar: 'Deixe na fruteira até amadurecer. Depois, guarde na geladeira para durar mais uns dias.' },
{ name: 'Graviola', months: [1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 2, 1], ...defaultDicas },
{ name: 'Jabuticaba', months: [0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 0],
escolher: 'Casca brilhante, lisa e cor preta intensa. Frutos murchos já estão passados.',
conservar: 'Lave e guarde na geladeira em pote fechado. Consuma rápido pois fermenta facilmente.' },
{ name: 'Jaca', months: [1, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 1], ...defaultDicas },
{ name: 'Kiwi', months: [0, 0, 0, 1, 1, 1, 1, 2, 0, 0, 0, 0],
escolher: 'Pressione delicadamente; deve ceder um pouco. Muito duro significa verde; muito mole, passado.',
conservar: 'Se estiver duro, deixe perto de maçãs ou bananas fora da geladeira. Maduro, mantenha refrigerado.' },
{ name: 'Laranja', months: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
escolher: 'Casca lisa e fina, pesado para o próprio tamanho (indica mais suco). Cor não é sinal definitivo de doçura.',
conservar: 'Pode ficar em local fresco por até uma semana, ou na gaveta da geladeira por até um mês.' },
{ name: 'Limão', months: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
escolher: 'Semelhante à laranja: casca lisa, macia ao toque leve e frutos pesados rendem mais suco.',
conservar: 'Duram bem fora da geladeira, mas na parte de baixo da geladeira podem durar semanas.' },
{ name: 'Maçã', months: [2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2],
escolher: 'Firme ao toque, sem partes amassadas ou escuras na casca.',
conservar: 'Guarde na geladeira para manter a crocância por semanas. Fora dela, ficam "farinhentas" mais rápido.' },
{ name: 'Mamão', months: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
escolher: 'Casca predominantemente amarela, macio ao toque (sem afundar o dedo).',
conservar: 'Amadurece fora da geladeira enrolado em jornal. Depois de maduro ou cortado, refrigere imediatamente.' },
{ name: 'Manga', months: [1, 1, 1, 2, 2, 0, 0, 0, 2, 1, 1, 1],
escolher: 'Confie no aroma doce próximo ao cabinho e se cede levemente ao toque. Cor não define maturação.',
conservar: 'Deixe na fruteira até amadurecer. Só guarde na geladeira se já estiver no ponto de comer.' },
{ name: 'Maracujá', months: [1, 1, 1, 2, 2, 0, 0, 2, 1, 1, 1, 1],
escolher: 'Casca enrugada significa que está mais doce e pronto. Escolha os mais pesados (mais polpa).',
conservar: 'Pode ser conservado fora da geladeira. Para longa duração, você pode congelar a polpa.' },
{ name: 'Melancia', months: [1, 1, 1, 2, 0, 0, 0, 0, 2, 1, 1, 1],
escolher: 'Faça o teste do som: batendo nela, deve soar oco. Procure a mancha amarela (onde ficou no chão).',
conservar: 'Inteira, mantenha em local arejado. Após cortada, cubra com plástico filme e guarde na geladeira.' },
{ name: 'Melão', months: [1, 1, 2, 0, 0, 0, 0, 2, 1, 1, 1, 1],
escolher: 'Pressione as extremidades; devem ceder um pouco. Aroma doce é um bom indicador.',
conservar: 'Inteiro e ainda firme, fora da geladeira. Maduro e/ou cortado, sempre na geladeira.' },
{ name: 'Morango', months: [0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0, 0],
escolher: 'Vermelhos por inteiro (não amadurecem depois de colhidos), sem machucados e com folhas verdes vivas.',
conservar: 'Na geladeira, em recipiente forrado com papel toalha. NÃO LAVE antes de guardar, apenas na hora de comer.' },
{ name: 'Pera', months: [1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1],
escolher: 'Pressione levemente perto do cabinho; se ceder, está madura.',
conservar: 'Deixe amadurecer fora da geladeira. Após madura, mantenha refrigerada.' },
{ name: 'Pêssego', months: [1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1],
escolher: 'O fundo (perto do cabinho) deve ser amarelo-creme, não verde. Aroma floral suave.',
conservar: 'Fora da geladeira até ceder ao toque, depois guarde refrigerado por até 5 dias.' },
{ name: 'Pitanga', months: [1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1], ...defaultDicas },
{ name: 'Tangerina', months: [0, 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 0],
escolher: 'Casca brilhante, cores fortes e peso na mão indicam frescor e bastante caldo.',
conservar: 'Podem ficar na fruteira por alguns dias, ou na geladeira para durarem mais.' },
{ name: 'Uva', months: [1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 1, 1],
escolher: 'Cachos volumosos, bagos firmes presos ao cabinho (que deve estar verde e flexível, não seco).',
conservar: 'Lave apenas antes de consumir. Guarde na geladeira (gaveta inferior) em saco plástico perfurado.' }
];
const monthsList = [
'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho',
'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'
];
const carouselImages = [
{ src: 'source/image-FoXdY66Uv3PIaVmcBkfBsiUMT0c9pT_2.png', alt: 'Papaya' },
{ src: 'source/image-eUUCVNutiSX3Na8qdSelnsTlKye5Ad_2.png', alt: 'Rambutan' },
{ src: 'source/image-id2bjNWhceyyEfRKFC99ipUcMSqfio_2.png', alt: 'Orange' },
{ src: 'source/image-t5ETcqgAlGBJHRCOgcNg9OPMX4FznF_2.png', alt: 'Watermelon' },
{ src: 'source/image-8LTO6JuYdFznf0sQdNCzGaekZn9rQ4.png', alt: 'Lemon Slice' },
{ src: 'source/image-Z0XqvzJFfoxD7OLa7twGAmDQYnyTtl.png', alt: 'Apricot/Peach' }
];
export default function App() {
const [currentView, setCurrentView] = useState('home'); // 'home', 'monthView', 'fruitDetail'
const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth());
const [searchQuery, setSearchQuery] = useState('');
const [selectedFruit, setSelectedFruit] = useState(null);
// State for image carousel on Home
const [currentImageIndex, setCurrentImageIndex] = useState(0);
useEffect(() => {
if (currentView === 'home') {
const interval = setInterval(() => {
setCurrentImageIndex((prev) => (prev + 1) % carouselImages.length);
}, 3500); // Change image every 3.5 seconds
return () => clearInterval(interval);
}
}, [currentView]);
const currentMonthName = monthsList[selectedMonth];
// Fruits for the currently selected month
const highSeasonFruits = useMemo(() =>
fruitData.filter(f => f.months[selectedMonth] === 1).sort((a, b) => a.name.localeCompare(b.name)),
[selectedMonth]);
const mediumSeasonFruits = useMemo(() =>
fruitData.filter(f => f.months[selectedMonth] === 2).sort((a, b) => a.name.localeCompare(b.name)),
[selectedMonth]);
// Search results
const searchResults = useMemo(() => {
if (!searchQuery.trim()) return [];
const query = searchQuery.toLowerCase();
return fruitData.filter(f => f.name.toLowerCase().includes(query)).sort((a, b) => a.name.localeCompare(b.name));
}, [searchQuery]);
const handleMonthSelect = (monthIndex) => {
setSelectedMonth(monthIndex);
setCurrentView('monthView');
setSearchQuery('');
};
const handleFruitSelect = (fruit) => {
setSelectedFruit(fruit);
setCurrentView('fruitDetail');
};
const goHome = () => {
setCurrentView('home');
setSearchQuery('');
};
const goBack = () => {
if (currentView === 'fruitDetail') {
setCurrentView(searchQuery ? 'home' : 'monthView');
} else {
goHome();
}
};
const Header = () => (
Safra
Descubra as melhores frutas para consumir hoje.
Veja as frutas que estão com a melhor qualidade e preço neste momento.
Guia de safra para este mês.
Melhor época para consumo. Maior oferta, qualidade e melhores preços.
Boa oferta, mas pode não estar no pico de qualidade ou menor preço.
{escolherText}
{conservarText}
{congelarText}
{origensText}
A sazonalidade pode variar dependendo da região do Brasil e fatores climáticos anuais.