import React from "react"; import { Badge } from "../UI/Badge"; import { Button } from "../UI/Button"; import { Panel } from "../UI/Panel"; const statusConfig = { online: { label: "Онлайн", tone: "accent" }, offline: { label: "Офлайн", tone: "warning" }, installed: { label: "Установлено", tone: "accent" }, browser: { label: "В браузере", tone: "neutral" }, ready: { label: "Офлайн готов", tone: "accent" }, pending: { label: "Кешируется", tone: "neutral" }, }; export const PwaDemoPanel = ({ isOnline, isInstallAvailable, isInstalled, isOfflineReady, onInstall, }) => { const networkBadge = isOnline ? statusConfig.online : statusConfig.offline; const installBadge = isInstalled ? statusConfig.installed : statusConfig.browser; const offlineBadge = isOfflineReady ? statusConfig.ready : statusConfig.pending; return (

Демо и PWA

Что это и зачем для демонстрации

PWA превращает веб-приложение в устанавливаемый рабочий экран: его можно открыть как отдельное приложение и использовать для показа сценариев после первого запуска.

{isInstallAvailable ? ( ) : null}
{networkBadge.label} {installBadge.label} {offlineBadge.label}

Что это

Это PWA-версия панели: её можно установить на ноутбук или телефон и запускать без адресной строки браузера.

Зачем для демо

После первого запуска оболочка кешируется, поэтому дашборд и демо-данные можно показать даже без интернета.

Как работает офлайн-демо

Демо-данные доступны локально: роли, вход по коду `000000`, заказы, статусы и обзор дашборда продолжают работать после первого запуска.

Интеграции и рабочая база требуют подключения, поэтому Supabase и боевые сценарии остаются сетевыми.

); };