import { useState, useEffect } from 'react' import { type LucideIcon, CalendarOff, AlertCircle, Building2, Unlink, ArrowRightLeft, Globe, Plus, Trash2 } from 'lucide-react' import { useVacayStore } from '../../store/vacayStore' import { getIntlLanguage, useTranslation } from '../../i18n' import { useToast } from '../shared/Toast' import CustomSelect from '../shared/CustomSelect' import apiClient from '../../api/client' import type { VacayHolidayCalendar } from '../../types' interface VacaySettingsProps { onClose: () => void } export default function VacaySettings({ onClose }: VacaySettingsProps) { const { t } = useTranslation() const toast = useToast() const { plan, updatePlan, addHolidayCalendar, updateHolidayCalendar, deleteHolidayCalendar, isFused, dissolve, users } = useVacayStore() const [countries, setCountries] = useState<{ value: string; label: string }[]>([]) const [showAddForm, setShowAddForm] = useState(false) const { language } = useTranslation() // Load available countries with localized names useEffect(() => { apiClient.get('/addons/vacay/holidays/countries').then(r => { let displayNames try { displayNames = new Intl.DisplayNames([getIntlLanguage(language)], { type: 'region' }) } catch { /* */ } const list = r.data.map(c => ({ value: c.countryCode, label: displayNames ? (displayNames.of(c.countryCode) || c.name) : c.name, })) list.sort((a, b) => a.label.localeCompare(b.label)) setCountries(list) }).catch(() => {}) }, [language]) if (!plan) return null const toggle = (key: string) => updatePlan({ [key]: !plan[key] }) return (
{t('vacay.weekendDays')}
{t('vacay.noCalendars')}
)} {(plan.holiday_calendars ?? []).map(cal => ({t('vacay.dissolve')}
{t('vacay.dissolveHint')}
{label}
{hint}