"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { TextInput } from "@/components/ui/TextInput/TextInput"; import { AGE_GROUPS, GENERATION_GROUPS, parseAgeRange } from "@/lib/age-utils"; interface AgeSelectorProps { selectedValues: string[]; onToggleValue: (value: string) => void; onAddCustomValue: (value: string) => void; } export function AgeSelector({ selectedValues, onToggleValue, onAddCustomValue }: AgeSelectorProps) { const [customValue, setCustomValue] = useState(""); const handleAddCustom = () => { if (customValue.trim()) { onAddCustomValue(customValue.trim()); setCustomValue(""); } }; const isValueSelected = (value: string) => selectedValues.includes(value); return (
{/* 🎂 ВОЗРАСТНЫЕ ГРУППЫ */}

🎂 Возрастные группы

{AGE_GROUPS.map((group) => { const isSelected = isValueSelected(group.id); return ( ); })}
{/* 🚀 ПОКОЛЕНИЯ */}

🚀 Поколения

{GENERATION_GROUPS.map((generation) => { const isSelected = isValueSelected(generation.id); return ( ); })}
{/* 🎯 ДОБАВЛЕНИЕ КАСТОМНЫХ ЗНАЧЕНИЙ */}
setCustomValue(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") { e.preventDefault(); handleAddCustom(); } }} />
{/* Подсказки по форматам */}
Примеры: 25 (точный возраст), 18-21 (диапазон), 60+ (от 60 лет), age-25 (альтернативный формат)
{/* 📋 ВЫБРАННЫЕ ЗНАЧЕНИЯ */} {selectedValues.length > 0 && (
{selectedValues.map((value) => { // Ищем в возрастных группах const ageGroup = AGE_GROUPS.find(group => group.id === value); if (ageGroup) { return ( 🎂 {ageGroup.name} ); } // Ищем в поколениях const generation = GENERATION_GROUPS.find(gen => gen.id === value); if (generation) { return ( 🚀 {generation.name} ); } // Кастомное значение const range = parseAgeRange(value); return ( 🎯 {range ? `${range.min}-${range.max === 120 ? '+' : range.max}` : value} ); })}
)} {/* 💡 ПОДСКАЗКА */}
💡 Как это работает: Система автоматически рассчитывает возраст из даты рождения пользователя. Выберите возрастные группы или поколения, при которых должен показываться этот вариант экрана. Можно комбинировать разные условия.
); }