Инициализация календаря...
const { useState, useMemo, useEffect } = React; // --- НАСТРОЙКА --- // ВСТАВЬТЕ СЮДА ВАШУ ССЫЛКУ НА GOOGLE SCRIPT: const GAS_URL = 'https://script.google.com/macros/s/AKfycbwFuMFaEezspiuCjTw9GkPPzl5ZgQ290YTxtMbWx9w8jOToTutqtxcHNM2yIE-8Ipgy4w/exec'; function BookingCalendar() { const [isDarkMode, setIsDarkMode] = useState(false); const [isAdminMode, setIsAdminMode] = useState(false); const [properties, setProperties] = useState([]); const [activePropertyId, setActivePropertyId] = useState(null); const [bookings, setBookings] = useState({}); const [isLoaded, setIsLoaded] = useState(false); const [isSyncing, setIsSyncing] = useState(false); useEffect(() => { if (!GAS_URL) { setProperties([{ id: 'prop1', name: 'Демо-объект' }]); setBookings({ prop1: [] }); setActivePropertyId('prop1'); setIsLoaded(true); return; } fetch(GAS_URL) .then(res => res.json()) .then(data => { setProperties(data.properties || []); setBookings(data.bookings || {}); if (data.properties?.length > 0) setActivePropertyId(data.properties[0].id); setIsLoaded(true); }) .catch(() => setIsLoaded(true)); }, []); if (!isLoaded) return React.createElement('div', {className: 'p-10 text-center'}, 'Загрузка данных...'); return React.createElement('div', {className: isDarkMode ? 'dark' : ''}, React.createElement('div', {className: 'p-4 bg-white dark:bg-gray-800 rounded-lg'}, React.createElement('h1', {className: 'text-2xl font-bold dark:text-white'}, 'Календарь бронирования'), React.createElement('div', {className: 'mt-4 dark:text-gray-200'}, 'Объектов: ' + properties.length) ) ); }
Made on
Tilda