From d6dbc1881a661455a3ffabce75150d79f74b6e50 Mon Sep 17 00:00:00 2001 From: Stefan Koelle Date: Sun, 9 Aug 2026 12:22:40 +0200 Subject: [PATCH] initial commit --- Controllers/FocusTasksController.cs | 140 ++ Data/FocusContext.cs | 28 + Directory.Build.props | 24 + FocusApp.csproj | 38 + FocusApp.sln | 39 + Models/FocusTask.cs | 16 + Program.cs | 97 + Properties/launchSettings.json | 12 + README.md | 431 ++++- appsettings.Development.json | 8 + appsettings.json | 14 + client/.env | 1 + client/build/android-chrome-192x192.png | Bin 0 -> 19053 bytes client/build/android-chrome-512x512.png | Bin 0 -> 58140 bytes client/build/apple-touch-icon.png | Bin 0 -> 17648 bytes client/build/assets/index-C7wD1ms3.js | 112 ++ client/build/assets/index-DjQQ8_vC.css | 1 + client/build/favicon-16x16.png | Bin 0 -> 819 bytes client/build/favicon-32x32.png | Bin 0 -> 1988 bytes client/build/favicon.ico | Bin 0 -> 15406 bytes client/build/index.html | 32 + client/index.html | 31 + client/package-lock.json | 2210 ++++++++++++++++++++++ client/package.json | 26 + client/public/android-chrome-192x192.png | Bin 0 -> 19053 bytes client/public/android-chrome-512x512.png | Bin 0 -> 58140 bytes client/public/apple-touch-icon.png | Bin 0 -> 17648 bytes client/public/favicon-16x16.png | Bin 0 -> 819 bytes client/public/favicon-32x32.png | Bin 0 -> 1988 bytes client/public/favicon.ico | Bin 0 -> 15406 bytes client/src/App.css | 91 + client/src/App.tsx | 144 ++ client/src/api.ts | 39 + client/src/components/TaskCard.css | 1020 ++++++++++ client/src/components/TaskCard.tsx | 87 + client/src/components/TaskForm.css | 917 +++++++++ client/src/components/TaskForm.tsx | 64 + client/src/index.css | 12 + client/src/main.tsx | 10 + client/src/types.ts | 19 + client/tsconfig.json | 28 + client/tsconfig.node.json | 10 + client/vite.config.ts | 18 + gitignore | 69 + 44 files changed, 5787 insertions(+), 1 deletion(-) create mode 100644 Controllers/FocusTasksController.cs create mode 100644 Data/FocusContext.cs create mode 100644 Directory.Build.props create mode 100644 FocusApp.csproj create mode 100644 FocusApp.sln create mode 100644 Models/FocusTask.cs create mode 100644 Program.cs create mode 100644 Properties/launchSettings.json create mode 100644 appsettings.Development.json create mode 100644 appsettings.json create mode 100644 client/.env create mode 100644 client/build/android-chrome-192x192.png create mode 100644 client/build/android-chrome-512x512.png create mode 100644 client/build/apple-touch-icon.png create mode 100644 client/build/assets/index-C7wD1ms3.js create mode 100644 client/build/assets/index-DjQQ8_vC.css create mode 100644 client/build/favicon-16x16.png create mode 100644 client/build/favicon-32x32.png create mode 100644 client/build/favicon.ico create mode 100644 client/build/index.html create mode 100644 client/index.html create mode 100644 client/package-lock.json create mode 100644 client/package.json create mode 100644 client/public/android-chrome-192x192.png create mode 100644 client/public/android-chrome-512x512.png create mode 100644 client/public/apple-touch-icon.png create mode 100644 client/public/favicon-16x16.png create mode 100644 client/public/favicon-32x32.png create mode 100644 client/public/favicon.ico create mode 100644 client/src/App.css create mode 100644 client/src/App.tsx create mode 100644 client/src/api.ts create mode 100644 client/src/components/TaskCard.css create mode 100644 client/src/components/TaskCard.tsx create mode 100644 client/src/components/TaskForm.css create mode 100644 client/src/components/TaskForm.tsx create mode 100644 client/src/index.css create mode 100644 client/src/main.tsx create mode 100644 client/src/types.ts create mode 100644 client/tsconfig.json create mode 100644 client/tsconfig.node.json create mode 100644 client/vite.config.ts create mode 100644 gitignore diff --git a/Controllers/FocusTasksController.cs b/Controllers/FocusTasksController.cs new file mode 100644 index 0000000..1f297fc --- /dev/null +++ b/Controllers/FocusTasksController.cs @@ -0,0 +1,140 @@ +using FocusApp.Data; +using FocusApp.Models; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace FocusApp.Controllers; + +[ApiController] +[Route("api/[controller]")] +public class FocusTasksController : ControllerBase +{ + private readonly FocusContext _context; + private readonly ILogger _logger; + + public FocusTasksController(FocusContext context, ILogger logger) + { + _context = context; + _logger = logger; + } + + [HttpGet] + public async Task>> GetTasks() + { + var tasks = await _context.FocusTasks + .OrderByDescending(t => t.Order) + .ToListAsync(); + return Ok(tasks); + } + + [HttpPost] + public async Task> CreateTask([FromBody] CreateTaskDto dto) + { + if (string.IsNullOrWhiteSpace(dto.Title)) + return BadRequest("Title is required"); + + var maxOrder = await _context.FocusTasks.MaxAsync(t => (int?)t.Order) ?? 0; + + var task = new FocusTask + { + Title = dto.Title, + Description = dto.Description, + Order = maxOrder + 1, + CreatedAt = DateTime.UtcNow, + UpdatedAt = DateTime.UtcNow + }; + + _context.FocusTasks.Add(task); + await _context.SaveChangesAsync(); + + return CreatedAtAction(nameof(GetTasks), new { id = task.Id }, task); + } + + [HttpPut("{id}")] + public async Task UpdateTask(int id, [FromBody] UpdateTaskDto dto) + { + var task = await _context.FocusTasks.FindAsync(id); + if (task == null) + return NotFound(); + + if (!string.IsNullOrWhiteSpace(dto.Title)) + task.Title = dto.Title; + + if (dto.Description != null) + task.Description = dto.Description; + + if (dto.Order.HasValue) + task.Order = dto.Order.Value; + + task.UpdatedAt = DateTime.UtcNow; + + _context.FocusTasks.Update(task); + await _context.SaveChangesAsync(); + + return Ok(task); + } + + [HttpPut("reorder")] + public async Task ReorderTasks([FromBody] ReorderDto dto) + { + if (dto.Orders == null || dto.Orders.Count == 0) + return BadRequest("Orders are required"); + + // Finde maximale Order-Nummer + int maxOrder = dto.Orders.Max(o => o.Order); + + foreach (var order in dto.Orders) + { + var task = await _context.FocusTasks.FindAsync(order.Id); + if (task != null) + { + // Invertiere die Order: hchste wird niedrigste und umgekehrt + task.Order = maxOrder - order.Order; + task.UpdatedAt = DateTime.UtcNow; + _context.FocusTasks.Update(task); + } + } + + await _context.SaveChangesAsync(); + + // Rckgabe: absteigend sortiert (neue oben) + return Ok(await _context.FocusTasks.OrderByDescending(t => t.Order).ToListAsync()); + } + + [HttpDelete("{id}")] + public async Task DeleteTask(int id) + { + var task = await _context.FocusTasks.FindAsync(id); + if (task == null) + return NotFound(); + + _context.FocusTasks.Remove(task); + await _context.SaveChangesAsync(); + + return NoContent(); + } +} + +public class CreateTaskDto +{ + public string Title { get; set; } = string.Empty; + public string? Description { get; set; } +} + +public class UpdateTaskDto +{ + public string? Title { get; set; } + public string? Description { get; set; } + public int? Order { get; set; } +} + +public class ReorderDto +{ + public List Orders { get; set; } = new(); +} + +public class OrderItem +{ + public int Id { get; set; } + public int Order { get; set; } +} diff --git a/Data/FocusContext.cs b/Data/FocusContext.cs new file mode 100644 index 0000000..978d6dc --- /dev/null +++ b/Data/FocusContext.cs @@ -0,0 +1,28 @@ +using FocusApp.Models; +using Microsoft.EntityFrameworkCore; + +namespace FocusApp.Data; + +public class FocusContext : DbContext +{ + public DbSet FocusTasks { get; set; } + + public FocusContext(DbContextOptions options) : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id); + entity.Property(e => e.Title).IsRequired().HasMaxLength(255); + entity.Property(e => e.Description).HasMaxLength(2000); + entity.Property(e => e.Order).IsRequired(); + entity.Property(e => e.CreatedAt).IsRequired(); + entity.Property(e => e.UpdatedAt).IsRequired(); + }); + } +} diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..2ea5c4b --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,24 @@ + + + + $(DefaultItemExcludes);client\node_modules\** + true + + + + + + + + + + + + + + + + + + + diff --git a/FocusApp.csproj b/FocusApp.csproj new file mode 100644 index 0000000..bd3e8be --- /dev/null +++ b/FocusApp.csproj @@ -0,0 +1,38 @@ + + + + net8.0 + enable + enable + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FocusApp.sln b/FocusApp.sln new file mode 100644 index 0000000..d1432b0 --- /dev/null +++ b/FocusApp.sln @@ -0,0 +1,39 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FocusApp", "FocusApp.csproj", "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{12345678-1234-1234-1234-123456789012}" + ProjectSection(SolutionItems) = preProject + .gitignore = .gitignore + deploy.ps1 = deploy.ps1 + Directory.Build.props = Directory.Build.props + README.md = README.md + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client", "client", "{23456789-2345-2345-2345-234567890123}" + ProjectSection(SolutionItems) = preProject + client\package.json = client\package.json + client\tsconfig.json = client\tsconfig.json + client\vite.config.ts = client\vite.config.ts + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {BA9C148F-90B2-4778-8D97-6A66BFBD0CDE} + EndGlobalSection +EndGlobal diff --git a/Models/FocusTask.cs b/Models/FocusTask.cs new file mode 100644 index 0000000..ca6f12c --- /dev/null +++ b/Models/FocusTask.cs @@ -0,0 +1,16 @@ +namespace FocusApp.Models; + +public class FocusTask +{ + public int Id { get; set; } + + public string Title { get; set; } = string.Empty; + + public string? Description { get; set; } + + public int Order { get; set; } + + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; + + public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; +} diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..404b512 --- /dev/null +++ b/Program.cs @@ -0,0 +1,97 @@ +using FocusApp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.FileProviders; + +var builder = WebApplication.CreateBuilder(args); + +// Add services +builder.Services.AddDbContext(options => + options.UseMySql( + builder.Configuration.GetConnectionString("DefaultConnection"), + ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection")) + ) +); + +builder.Services.AddCors(options => +{ + options.AddPolicy("AllowReact", policy => + { + policy.AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader(); + }); +}); + +builder.Services.AddControllers(); +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +builder.WebHost.UseUrls("http://0.0.0.0:5000"); + +var app = builder.Build(); + +// Ensure database is created +using (var scope = app.Services.CreateScope()) +{ + var db = scope.ServiceProvider.GetRequiredService(); + db.Database.EnsureCreated(); +} + +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseCors("AllowReact"); + +// STATIC FILES VOR UseRouting! +var clientPath = Path.Combine(app.Environment.ContentRootPath, "client", "build"); +Console.WriteLine($"Looking for frontend at: {clientPath}"); +Console.WriteLine($"Directory exists: {Directory.Exists(clientPath)}"); + +if (Directory.Exists(clientPath)) +{ + Console.WriteLine("Serving React frontend from client/build/"); + + app.UseDefaultFiles(new DefaultFilesOptions + { + FileProvider = new PhysicalFileProvider(clientPath) + }); + + app.UseStaticFiles(new StaticFileOptions + { + FileProvider = new PhysicalFileProvider(clientPath), + RequestPath = "" + }); +} +else +{ + Console.WriteLine("client/build/ not found! Run: cd client && npm run build"); +} + +app.UseAuthorization(); +app.MapControllers(); + +// FALLBACK fr SPA (alle nicht-API Routes >> index.html) +app.MapFallback(async context => +{ + var indexPath = Path.Combine(clientPath, "index.html"); + if (File.Exists(indexPath)) + { + context.Response.ContentType = "text/html"; + await context.Response.SendFileAsync(indexPath); + } + else + { + context.Response.StatusCode = 404; + await context.Response.WriteAsync("Frontend not built. Run: cd client && npm run build"); + } +}); + +Console.WriteLine("FocusApp started!"); +Console.WriteLine("Backend API: http://localhost:5000"); +Console.WriteLine("Swagger: http://localhost:5000/swagger"); +Console.WriteLine("Frontend: http://localhost:5000"); + +app.Run(); diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..34e02e9 --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "FocusApp": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:62966;http://localhost:62967" + } + } +} \ No newline at end of file diff --git a/README.md b/README.md index 27822a3..0884017 100644 --- a/README.md +++ b/README.md @@ -1 +1,430 @@ -# focusApp +# FocusApp - Todo Application + +Eine moderne, minimalistische Todo-Anwendung mit Drag & Drop, gebaut mit React und ASP.NET Core. + +## 🚀 Features + +- ✅ **Todo-Verwaltung** - Erstellen, Bearbeiten, Löschen von Aufgaben +- 🎯 **Drag & Drop** - Intuitive Neuordnung der Aufgaben +- 🎨 **Dark/Light Mode** - Automatische Theme-Erkennung +- 📱 **Responsive Design** - Optimiert für Desktop und Mobile +- 💾 **Persistente Speicherung** - Daten bleiben nach Neustart erhalten +- 🔄 **RESTful API** - Saubere Backend-Architektur + +## 📋 Voraussetzungen + +- **.NET 9.0 SDK** oder höher +- **Node.js 18+** und **npm** (für React-Entwicklung) +- **Linux Server** (Ubuntu/Debian empfohlen) für Deployment + +## 🛠️ Installation & Setup + +### 1. Projekt klonen/kopieren + +```bash +# Projektverzeichnis erstellen +sudo mkdir -p /opt/tools/FocusApp +sudo chown $USER:$USER /opt/tools/FocusApp +``` + +### 2. .NET Runtime installieren + +```bash +# .NET 9.0 Runtime herunterladen +cd /tmp +wget https://download.visualstudio.microsoft.com/download/pr/...dotnet-runtime-9.0.0-linux-x64.tar.gz + +# Entpacken nach /opt/dotnet +sudo mkdir -p /opt/dotnet +sudo tar -xzf dotnet-runtime-9.0.0-linux-x64.tar.gz -C /opt/dotnet + +# PATH setzen +echo 'export PATH=$PATH:/opt/dotnet' >> ~/.bashrc +source ~/.bashrc +``` + +### 3. React Frontend bauen + +```bash +cd /pfad/zu/deinem/projekt/FocusApp/ClientApp + +# Dependencies installieren +npm install + +# Production Build erstellen +npm run build +``` + +**Wichtig:** Der Build landet in `ClientApp/build/` und wird automatisch vom Backend ausgeliefert. + +### 4. ASP.NET Backend veröffentlichen + +```bash +cd /pfad/zu/deinem/projekt/FocusApp + +# Release Build erstellen +dotnet publish -c Release -o /opt/tools/FocusApp +``` + +## ⚙️ Konfiguration + +### appsettings.Production.json + +Erstelle `/opt/tools/FocusApp/appsettings.Production.json`: + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Warning", + "Microsoft": "Warning", + "Microsoft.AspNetCore": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" +} +``` + +**Log Levels:** +- `Error` - Nur Fehler +- `Warning` - Warnungen + Fehler (empfohlen) +- `Information` - Mehr Details +- `None` - Kein Logging + +## 🔧 Systemd Service Setup + +### Service-Datei erstellen + +```bash +sudo vim /etc/systemd/system/focusapp.service +``` + +**Inhalt:** + +```ini +[Unit] +Description=FocusApp Todo Application +After=network.target + +[Service] +Type=simple +WorkingDirectory=/opt/tools/FocusApp +ExecStart=/opt/dotnet/dotnet /opt/tools/FocusApp/FocusApp.dll +Restart=always +RestartSec=10 +User=stefan +Environment=ASPNETCORE_ENVIRONMENT=Production +Environment=DOTNET_ROOT=/opt/dotnet +Environment=ASPNETCORE_URLS=http://0.0.0.0:5000 +SyslogIdentifier=focusapp +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=multi-user.target +``` + +**Wichtig:** +- `Type=simple` verwenden (nicht `notify`) +- `User` anpassen auf deinen Linux-User +- Port `5000` ist der Standard, kann angepasst werden + +### Service aktivieren + +```bash +# Service neu laden +sudo systemctl daemon-reload + +# Service starten +sudo systemctl start focusapp.service + +# Service beim Boot aktivieren +sudo systemctl enable focusapp.service + +# Status prüfen +sudo systemctl status focusapp.service +``` + +## 📡 API Endpoints + +### Todos abrufen +```http +GET /api/todos +``` + +**Response:** +```json +[ + { + "id": 1, + "title": "Erste Aufgabe", + "description": "Beschreibung", + "createdAt": "2026-01-29T22:00:00Z", + "order": 0 + } +] +``` + +### Todo erstellen +```http +POST /api/todos +Content-Type: application/json + +{ + "title": "Neue Aufgabe", + "description": "Optional" +} +``` + +### Todo aktualisieren +```http +PUT /api/todos/{id} +Content-Type: application/json + +{ + "id": 1, + "title": "Geändert", + "description": "Neue Beschreibung" +} +``` + +### Todo löschen +```http +DELETE /api/todos/{id} +``` + +### Reihenfolge aktualisieren +```http +POST /api/todos/reorder +Content-Type: application/json + +[1, 3, 2, 4] +``` + +## 🎯 Entwicklung + +### Backend starten (Development) + +```bash +cd FocusApp +dotnet run +``` + +API läuft auf: `http://localhost:5000` + +### Frontend starten (Development) + +```bash +cd FocusApp/ClientApp +npm start +``` + +React Dev Server läuft auf: `http://localhost:3000` + +**Proxy:** API-Calls werden automatisch an `http://localhost:5000` weitergeleitet (siehe `package.json`). + +### Datenbank + +Todos werden in einer **SQLite-Datenbank** gespeichert: +- Datei: `/opt/tools/FocusApp/todos.db` +- Automatische Erstellung beim ersten Start +- Entity Framework Core mit Code-First Migrations + +## 🐛 Troubleshooting + +### Service startet nicht + +```bash +# Logs ansehen +sudo journalctl -u focusapp.service -n 50 --no-pager + +# Manuell testen +cd /opt/tools/FocusApp +/opt/dotnet/dotnet FocusApp.dll +``` + +### Service hängt bei "starting" + +**Problem:** `Type=notify` statt `Type=simple` in Service-Datei. + +**Lösung:** Service-Datei editieren, `Type=simple` verwenden, dann: +```bash +sudo systemctl daemon-reload +sudo systemctl restart focusapp.service +``` + +### Port bereits belegt + +```bash +# Port-Verwendung prüfen +sudo netstat -tlnp | grep 5000 + +# Anderen Port in Service-Datei setzen +Environment=ASPNETCORE_URLS=http://0.0.0.0:5001 +``` + +### Datenbank-Fehler + +```bash +# Datenbank löschen und neu erstellen lassen +rm /opt/tools/FocusApp/todos.db +sudo systemctl restart focusapp.service +``` + +## 📦 Projektstruktur + +``` +FocusApp/ +├── ClientApp/ # React Frontend +│ ├── public/ +│ ├── src/ +│ │ ├── components/ # React Komponenten +│ │ ├── App.js # Haupt-App +│ │ ├── App.css # Styles +│ │ └── index.js # Entry Point +│ ├── package.json +│ └── build/ # Production Build (nach npm run build) +├── Controllers/ +│ └── TodosController.cs # API Controller +├── Models/ +│ ├── TodoItem.cs # Todo Model +│ └── TodoContext.cs # EF Core DbContext +├── Program.cs # ASP.NET Startup +├── FocusApp.csproj # Projekt-Datei +├── appsettings.json # Basis-Config +├── appsettings.Production.json # Production-Config +└── todos.db # SQLite Datenbank (runtime) +``` + +## 🔐 Sicherheit + +### Firewall-Regeln + +```bash +# Nur lokalen Zugriff erlauben (Standard) +sudo ufw deny 5000 + +# Für Netzwerkzugriff: +sudo ufw allow 5000/tcp +``` + +### Reverse Proxy (nginx) + +Für Production empfohlen: + +```nginx +server { + listen 80; + server_name focus.example.com; + + location / { + proxy_pass http://localhost:5000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection keep-alive; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +## 📊 Monitoring + +### Service-Status prüfen + +```bash +# Aktiver Status +sudo systemctl status focusapp.service + +# Letzte Logs +sudo journalctl -u focusapp.service -n 50 + +# Live-Logs folgen +sudo journalctl -u focusapp.service -f +``` + +### Ressourcen-Nutzung + +```bash +# Prozess finden +ps aux | grep FocusApp + +# Speicher/CPU-Nutzung +top -p $(pgrep -f FocusApp.dll) +``` + +## 🚀 Updates & Deployment + +### 1. Code aktualisieren + +```bash +# Frontend neu bauen +cd ClientApp +npm run build + +# Backend neu veröffentlichen +cd .. +dotnet publish -c Release -o /opt/tools/FocusApp +``` + +### 2. Service neu starten + +```bash +sudo systemctl restart focusapp.service +sudo systemctl status focusapp.service +``` + +### 3. Datenbank-Migration (bei Schema-Änderungen) + +```bash +cd FocusApp + +# Migration erstellen +dotnet ef migrations add MigrationName + +# Migration anwenden +dotnet ef database update + +# Oder automatisch beim Start (bereits konfiguriert in Program.cs) +``` + +## 📝 Nützliche Befehle + +```bash +# Service-Befehle +sudo systemctl start focusapp.service # Starten +sudo systemctl stop focusapp.service # Stoppen +sudo systemctl restart focusapp.service # Neustarten +sudo systemctl status focusapp.service # Status +sudo systemctl enable focusapp.service # Auto-Start aktivieren +sudo systemctl disable focusapp.service # Auto-Start deaktivieren + +# Logs +sudo journalctl -u focusapp.service # Alle Logs +sudo journalctl -u focusapp.service -f # Live-Logs +sudo journalctl -u focusapp.service --since "1 hour ago" # Letzte Stunde + +# Datenbank +sqlite3 /opt/tools/FocusApp/todos.db # DB öffnen +.tables # Tabellen anzeigen +SELECT * FROM TodoItems; # Alle Todos +.quit # Beenden +``` + +## 🎨 Design System + +Die App verwendet ein eigenes Design System mit: +- CSS Custom Properties für theming +- Responsive Design (Mobile-First) +- Accessibility-Features (ARIA, Keyboard-Navigation) +- Dark/Light Mode Support + + +--- + +**Version:** 1.0.0 +**Letzte Aktualisierung:** 29. Januar 2026 +**Status:** ✅ Production Ready diff --git a/appsettings.Development.json b/appsettings.Development.json new file mode 100644 index 0000000..34f00ef --- /dev/null +++ b/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Debug", + "Microsoft.AspNetCore": "Information" + } + } +} diff --git a/appsettings.json b/appsettings.json new file mode 100644 index 0000000..21fc09d --- /dev/null +++ b/appsettings.json @@ -0,0 +1,14 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Warning", + "Microsoft": "Warning", + "Microsoft.AspNetCore": "Warning", + "Microsoft.Hosting.Lifetime": "Warning" + } + }, + "AllowedHosts": "*", + "ConnectionStrings": { + "DefaultConnection": "Server=maria-db-server.domain.local;Port=3306;Database=focusapp;User=focusapp;Password=[change-password]" + } +} diff --git a/client/.env b/client/.env new file mode 100644 index 0000000..1c630e6 --- /dev/null +++ b/client/.env @@ -0,0 +1 @@ +REACT_APP_API_URL=http://localhost:5000 diff --git a/client/build/android-chrome-192x192.png b/client/build/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..9409fdc5b8ebf2215b6382b0b78b81ddd6ced9dc GIT binary patch literal 19053 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�pDS4aV7ZC>3^{q0P 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 literal 0 HcmV?d00001 diff --git a/client/build/assets/index-C7wD1ms3.js b/client/build/assets/index-C7wD1ms3.js new file mode 100644 index 0000000..4308a18 --- /dev/null +++ b/client/build/assets/index-C7wD1ms3.js @@ -0,0 +1,112 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function r(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=r(i);fetch(i.href,o)}})();function zu(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Nf={exports:{}},ra={},Tf={exports:{}},$={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vi=Symbol.for("react.element"),Nm=Symbol.for("react.portal"),Tm=Symbol.for("react.fragment"),km=Symbol.for("react.strict_mode"),Am=Symbol.for("react.profiler"),Lm=Symbol.for("react.provider"),Bm=Symbol.for("react.context"),Mm=Symbol.for("react.forward_ref"),Fm=Symbol.for("react.suspense"),zm=Symbol.for("react.memo"),Um=Symbol.for("react.lazy"),gc=Symbol.iterator;function jm(e){return e===null||typeof e!="object"?null:(e=gc&&e[gc]||e["@@iterator"],typeof e=="function"?e:null)}var kf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Af=Object.assign,Lf={};function un(e,t,r){this.props=e,this.context=t,this.refs=Lf,this.updater=r||kf}un.prototype.isReactComponent={};un.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};un.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Bf(){}Bf.prototype=un.prototype;function Uu(e,t,r){this.props=e,this.context=t,this.refs=Lf,this.updater=r||kf}var ju=Uu.prototype=new Bf;ju.constructor=Uu;Af(ju,un.prototype);ju.isPureReactComponent=!0;var mc=Array.isArray,Mf=Object.prototype.hasOwnProperty,_u={current:null},Ff={key:!0,ref:!0,__self:!0,__source:!0};function zf(e,t,r){var n,i={},o=null,a=null;if(t!=null)for(n in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)Mf.call(t,n)&&!Ff.hasOwnProperty(n)&&(i[n]=t[n]);var l=arguments.length-2;if(l===1)i.children=r;else if(1>>1,j=R[_];if(0>>1;_i(Oe,L))tti(It,Oe)?(R[_]=It,R[tt]=L,_=tt):(R[_]=Oe,R[ye]=L,_=ye);else if(tti(It,L))R[_]=It,R[tt]=L,_=tt;else break e}}return B}function i(R,B){var L=R.sortIndex-B.sortIndex;return L!==0?L:R.id-B.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,l=a.now();e.unstable_now=function(){return a.now()-l}}var u=[],s=[],d=1,c=null,f=3,p=!1,v=!1,y=!1,w=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function h(R){for(var B=r(s);B!==null;){if(B.callback===null)n(s);else if(B.startTime<=R)n(s),B.sortIndex=B.expirationTime,t(u,B);else break;B=r(s)}}function S(R){if(y=!1,h(R),!v)if(r(u)!==null)v=!0,K(x);else{var B=r(s);B!==null&&He(S,B.startTime-R)}}function x(R,B){v=!1,y&&(y=!1,m(I),I=-1),p=!0;var L=f;try{for(h(B),c=r(u);c!==null&&(!(c.expirationTime>B)||R&&!z());){var _=c.callback;if(typeof _=="function"){c.callback=null,f=c.priorityLevel;var j=_(c.expirationTime<=B);B=e.unstable_now(),typeof j=="function"?c.callback=j:c===r(u)&&n(u),h(B)}else n(u);c=r(u)}if(c!==null)var Be=!0;else{var ye=r(s);ye!==null&&He(S,ye.startTime-B),Be=!1}return Be}finally{c=null,f=L,p=!1}}var b=!1,C=null,I=-1,k=5,T=-1;function z(){return!(e.unstable_now()-TR||125_?(R.sortIndex=L,t(s,R),r(u)===null&&R===r(s)&&(y?(m(I),I=-1):y=!0,He(S,L-_))):(R.sortIndex=j,t(u,R),v||p||(v=!0,K(x))),R},e.unstable_shouldYield=z,e.unstable_wrapCallback=function(R){var B=f;return function(){var L=f;f=B;try{return R.apply(this,arguments)}finally{f=L}}}})(Wf);$f.exports=Wf;var Xm=$f.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Jm=O,Xe=Xm;function D(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Bl=Object.prototype.hasOwnProperty,Zm=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,yc={},wc={};function eh(e){return Bl.call(wc,e)?!0:Bl.call(yc,e)?!1:Zm.test(e)?wc[e]=!0:(yc[e]=!0,!1)}function th(e,t,r,n){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function rh(e,t,r,n){if(t===null||typeof t>"u"||th(e,t,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Le(e,t,r,n,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var be={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){be[e]=new Le(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];be[t]=new Le(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){be[e]=new Le(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){be[e]=new Le(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){be[e]=new Le(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){be[e]=new Le(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){be[e]=new Le(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){be[e]=new Le(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){be[e]=new Le(e,5,!1,e.toLowerCase(),null,!1,!1)});var Wu=/[\-:]([a-z])/g;function Hu(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Wu,Hu);be[t]=new Le(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Wu,Hu);be[t]=new Le(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Wu,Hu);be[t]=new Le(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){be[e]=new Le(e,1,!1,e.toLowerCase(),null,!1,!1)});be.xlinkHref=new Le("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){be[e]=new Le(e,1,!1,e.toLowerCase(),null,!0,!0)});function Gu(e,t,r,n){var i=be.hasOwnProperty(t)?be[t]:null;(i!==null?i.type!==0:n||!(2l||i[a]!==o[l]){var u=` +`+i[a].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=a&&0<=l);break}}}finally{Ya=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Nn(e):""}function nh(e){switch(e.tag){case 5:return Nn(e.type);case 16:return Nn("Lazy");case 13:return Nn("Suspense");case 19:return Nn("SuspenseList");case 0:case 2:case 15:return e=Xa(e.type,!1),e;case 11:return e=Xa(e.type.render,!1),e;case 1:return e=Xa(e.type,!0),e;default:return""}}function Ul(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Ar:return"Fragment";case kr:return"Portal";case Ml:return"Profiler";case Vu:return"StrictMode";case Fl:return"Suspense";case zl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Vf:return(e.displayName||"Context")+".Consumer";case Gf:return(e._context.displayName||"Context")+".Provider";case qu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ku:return t=e.displayName||null,t!==null?t:Ul(e.type)||"Memo";case Ut:t=e._payload,e=e._init;try{return Ul(e(t))}catch{}}return null}function ih(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ul(t);case 8:return t===Vu?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function rr(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Kf(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function oh(e){var t=Kf(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,o=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){n=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(a){n=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Ui(e){e._valueTracker||(e._valueTracker=oh(e))}function Qf(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=Kf(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function xo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function jl(e,t){var r=t.checked;return oe({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function Ec(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=rr(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Yf(e,t){t=t.checked,t!=null&&Gu(e,"checked",t,!1)}function _l(e,t){Yf(e,t);var r=rr(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?$l(e,t.type,r):t.hasOwnProperty("defaultValue")&&$l(e,t.type,rr(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function xc(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function $l(e,t,r){(t!=="number"||xo(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var Tn=Array.isArray;function Hr(e,t,r,n){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=ji.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Vn(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var Ln={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ah=["Webkit","ms","Moz","O"];Object.keys(Ln).forEach(function(e){ah.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ln[t]=Ln[e]})});function ep(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||Ln.hasOwnProperty(e)&&Ln[e]?(""+t).trim():t+"px"}function tp(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=ep(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,i):e[r]=i}}var lh=oe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Gl(e,t){if(t){if(lh[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(D(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(D(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(D(61))}if(t.style!=null&&typeof t.style!="object")throw Error(D(62))}}function Vl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ql=null;function Qu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Kl=null,Gr=null,Vr=null;function Dc(e){if(e=hi(e)){if(typeof Kl!="function")throw Error(D(280));var t=e.stateNode;t&&(t=la(t),Kl(e.stateNode,e.type,t))}}function rp(e){Gr?Vr?Vr.push(e):Vr=[e]:Gr=e}function np(){if(Gr){var e=Gr,t=Vr;if(Vr=Gr=null,Dc(e),t)for(e=0;e>>=0,e===0?32:31-(yh(e)/wh|0)|0}var _i=64,$i=4194304;function kn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Po(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,i=e.suspendedLanes,o=e.pingedLanes,a=r&268435455;if(a!==0){var l=a&~i;l!==0?n=kn(l):(o&=a,o!==0&&(n=kn(o)))}else a=r&~i,a!==0?n=kn(a):o!==0&&(n=kn(o));if(n===0)return 0;if(t!==0&&t!==n&&!(t&i)&&(i=n&-n,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function gi(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-mt(t),e[t]=r}function bh(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0=Mn),Lc=" ",Bc=!1;function bp(e,t){switch(e){case"keyup":return Xh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Cp(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Lr=!1;function Zh(e,t){switch(e){case"compositionend":return Cp(t);case"keypress":return t.which!==32?null:(Bc=!0,Lc);case"textInput":return e=t.data,e===Lc&&Bc?null:e;default:return null}}function ey(e,t){if(Lr)return e==="compositionend"||!ns&&bp(e,t)?(e=Ep(),uo=es=Wt=null,Lr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Uc(r)}}function Rp(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Rp(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Op(){for(var e=window,t=xo();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=xo(e.document)}return t}function is(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function sy(e){var t=Op(),r=e.focusedElem,n=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&Rp(r.ownerDocument.documentElement,r)){if(n!==null&&is(r)){if(t=n.start,e=n.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=r.textContent.length,o=Math.min(n.start,i);n=n.end===void 0?o:Math.min(n.end,i),!e.extend&&o>n&&(i=n,n=o,o=i),i=jc(r,o);var a=jc(r,n);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>n?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,Br=null,eu=null,zn=null,tu=!1;function _c(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;tu||Br==null||Br!==xo(n)||(n=Br,"selectionStart"in n&&is(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),zn&&Jn(zn,n)||(zn=n,n=Oo(eu,"onSelect"),0zr||(e.current=lu[zr],lu[zr]=null,zr--)}function X(e,t){zr++,lu[zr]=e.current,e.current=t}var nr={},Re=ar(nr),Ue=ar(!1),Sr=nr;function Xr(e,t){var r=e.type.contextTypes;if(!r)return nr;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in r)i[o]=t[o];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function je(e){return e=e.childContextTypes,e!=null}function To(){Z(Ue),Z(Re)}function Kc(e,t,r){if(Re.current!==nr)throw Error(D(168));X(Re,t),X(Ue,r)}function zp(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var i in n)if(!(i in t))throw Error(D(108,ih(e)||"Unknown",i));return oe({},r,n)}function ko(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||nr,Sr=Re.current,X(Re,e),X(Ue,Ue.current),!0}function Qc(e,t,r){var n=e.stateNode;if(!n)throw Error(D(169));r?(e=zp(e,t,Sr),n.__reactInternalMemoizedMergedChildContext=e,Z(Ue),Z(Re),X(Re,e)):Z(Ue),X(Ue,r)}var Ot=null,ua=!1,dl=!1;function Up(e){Ot===null?Ot=[e]:Ot.push(e)}function Ey(e){ua=!0,Up(e)}function lr(){if(!dl&&Ot!==null){dl=!0;var e=0,t=V;try{var r=Ot;for(V=1;e>=a,i-=a,Nt=1<<32-mt(t)+i|r<I?(k=C,C=null):k=C.sibling;var T=f(m,C,h[I],S);if(T===null){C===null&&(C=k);break}e&&C&&T.alternate===null&&t(m,C),g=o(T,g,I),b===null?x=T:b.sibling=T,b=T,C=k}if(I===h.length)return r(m,C),te&&cr(m,I),x;if(C===null){for(;II?(k=C,C=null):k=C.sibling;var z=f(m,C,T.value,S);if(z===null){C===null&&(C=k);break}e&&C&&z.alternate===null&&t(m,C),g=o(z,g,I),b===null?x=z:b.sibling=z,b=z,C=k}if(T.done)return r(m,C),te&&cr(m,I),x;if(C===null){for(;!T.done;I++,T=h.next())T=c(m,T.value,S),T!==null&&(g=o(T,g,I),b===null?x=T:b.sibling=T,b=T);return te&&cr(m,I),x}for(C=n(m,C);!T.done;I++,T=h.next())T=p(C,m,I,T.value,S),T!==null&&(e&&T.alternate!==null&&C.delete(T.key===null?I:T.key),g=o(T,g,I),b===null?x=T:b.sibling=T,b=T);return e&&C.forEach(function(re){return t(m,re)}),te&&cr(m,I),x}function w(m,g,h,S){if(typeof h=="object"&&h!==null&&h.type===Ar&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case zi:e:{for(var x=h.key,b=g;b!==null;){if(b.key===x){if(x=h.type,x===Ar){if(b.tag===7){r(m,b.sibling),g=i(b,h.props.children),g.return=m,m=g;break e}}else if(b.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===Ut&&Jc(x)===b.type){r(m,b.sibling),g=i(b,h.props),g.ref=En(m,b,h),g.return=m,m=g;break e}r(m,b);break}else t(m,b);b=b.sibling}h.type===Ar?(g=yr(h.props.children,m.mode,S,h.key),g.return=m,m=g):(S=ho(h.type,h.key,h.props,null,m.mode,S),S.ref=En(m,g,h),S.return=m,m=S)}return a(m);case kr:e:{for(b=h.key;g!==null;){if(g.key===b)if(g.tag===4&&g.stateNode.containerInfo===h.containerInfo&&g.stateNode.implementation===h.implementation){r(m,g.sibling),g=i(g,h.children||[]),g.return=m,m=g;break e}else{r(m,g);break}else t(m,g);g=g.sibling}g=wl(h,m.mode,S),g.return=m,m=g}return a(m);case Ut:return b=h._init,w(m,g,b(h._payload),S)}if(Tn(h))return v(m,g,h,S);if(mn(h))return y(m,g,h,S);Qi(m,h)}return typeof h=="string"&&h!==""||typeof h=="number"?(h=""+h,g!==null&&g.tag===6?(r(m,g.sibling),g=i(g,h),g.return=m,m=g):(r(m,g),g=yl(h,m.mode,S),g.return=m,m=g),a(m)):r(m,g)}return w}var Zr=Wp(!0),Hp=Wp(!1),Bo=ar(null),Mo=null,_r=null,us=null;function ss(){us=_r=Mo=null}function cs(e){var t=Bo.current;Z(Bo),e._currentValue=t}function cu(e,t,r){for(;e!==null;){var n=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,n!==null&&(n.childLanes|=t)):n!==null&&(n.childLanes&t)!==t&&(n.childLanes|=t),e===r)break;e=e.return}}function Kr(e,t){Mo=e,us=_r=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(ze=!0),e.firstContext=null)}function st(e){var t=e._currentValue;if(us!==e)if(e={context:e,memoizedValue:t,next:null},_r===null){if(Mo===null)throw Error(D(308));_r=e,Mo.dependencies={lanes:0,firstContext:e}}else _r=_r.next=e;return t}var vr=null;function ds(e){vr===null?vr=[e]:vr.push(e)}function Gp(e,t,r,n){var i=t.interleaved;return i===null?(r.next=r,ds(t)):(r.next=i.next,i.next=r),t.interleaved=r,Bt(e,n)}function Bt(e,t){e.lanes|=t;var r=e.alternate;for(r!==null&&(r.lanes|=t),r=e,e=e.return;e!==null;)e.childLanes|=t,r=e.alternate,r!==null&&(r.childLanes|=t),r=e,e=e.return;return r.tag===3?r.stateNode:null}var jt=!1;function fs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Vp(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function kt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Qt(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,H&2){var i=n.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),n.pending=t,Bt(e,r)}return i=n.interleaved,i===null?(t.next=t,ds(n)):(t.next=i.next,i.next=t),n.interleaved=t,Bt(e,r)}function co(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Xu(e,r)}}function Zc(e,t){var r=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var i=null,o=null;if(r=r.firstBaseUpdate,r!==null){do{var a={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};o===null?i=o=a:o=o.next=a,r=r.next}while(r!==null);o===null?i=o=t:o=o.next=t}else i=o=t;r={baseState:n.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:n.shared,effects:n.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function Fo(e,t,r,n){var i=e.updateQueue;jt=!1;var o=i.firstBaseUpdate,a=i.lastBaseUpdate,l=i.shared.pending;if(l!==null){i.shared.pending=null;var u=l,s=u.next;u.next=null,a===null?o=s:a.next=s,a=u;var d=e.alternate;d!==null&&(d=d.updateQueue,l=d.lastBaseUpdate,l!==a&&(l===null?d.firstBaseUpdate=s:l.next=s,d.lastBaseUpdate=u))}if(o!==null){var c=i.baseState;a=0,d=s=u=null,l=o;do{var f=l.lane,p=l.eventTime;if((n&f)===f){d!==null&&(d=d.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var v=e,y=l;switch(f=t,p=r,y.tag){case 1:if(v=y.payload,typeof v=="function"){c=v.call(p,c,f);break e}c=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=y.payload,f=typeof v=="function"?v.call(p,c,f):v,f==null)break e;c=oe({},c,f);break e;case 2:jt=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,f=i.effects,f===null?i.effects=[l]:f.push(l))}else p={eventTime:p,lane:f,tag:l.tag,payload:l.payload,callback:l.callback,next:null},d===null?(s=d=p,u=c):d=d.next=p,a|=f;if(l=l.next,l===null){if(l=i.shared.pending,l===null)break;f=l,l=f.next,f.next=null,i.lastBaseUpdate=f,i.shared.pending=null}}while(!0);if(d===null&&(u=c),i.baseState=u,i.firstBaseUpdate=s,i.lastBaseUpdate=d,t=i.shared.interleaved,t!==null){i=t;do a|=i.lane,i=i.next;while(i!==t)}else o===null&&(i.shared.lanes=0);br|=a,e.lanes=a,e.memoizedState=c}}function ed(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var n=pl.transition;pl.transition={};try{e(!1),t()}finally{V=r,pl.transition=n}}function sv(){return ct().memoizedState}function Dy(e,t,r){var n=Xt(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},cv(e))dv(t,r);else if(r=Gp(e,t,r,n),r!==null){var i=ke();ht(r,e,n,i),fv(r,t,n)}}function Py(e,t,r){var n=Xt(e),i={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(cv(e))dv(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,l=o(a,r);if(i.hasEagerState=!0,i.eagerState=l,yt(l,a)){var u=t.interleaved;u===null?(i.next=i,ds(t)):(i.next=u.next,u.next=i),t.interleaved=i;return}}catch{}finally{}r=Gp(e,t,i,n),r!==null&&(i=ke(),ht(r,e,n,i),fv(r,t,n))}}function cv(e){var t=e.alternate;return e===ie||t!==null&&t===ie}function dv(e,t){Un=Uo=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function fv(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Xu(e,r)}}var jo={readContext:st,useCallback:Ce,useContext:Ce,useEffect:Ce,useImperativeHandle:Ce,useInsertionEffect:Ce,useLayoutEffect:Ce,useMemo:Ce,useReducer:Ce,useRef:Ce,useState:Ce,useDebugValue:Ce,useDeferredValue:Ce,useTransition:Ce,useMutableSource:Ce,useSyncExternalStore:Ce,useId:Ce,unstable_isNewReconciler:!1},Iy={readContext:st,useCallback:function(e,t){return bt().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:rd,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,po(4194308,4,iv.bind(null,t,e),r)},useLayoutEffect:function(e,t){return po(4194308,4,e,t)},useInsertionEffect:function(e,t){return po(4,2,e,t)},useMemo:function(e,t){var r=bt();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=bt();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=Dy.bind(null,ie,e),[n.memoizedState,e]},useRef:function(e){var t=bt();return e={current:e},t.memoizedState=e},useState:td,useDebugValue:Ss,useDeferredValue:function(e){return bt().memoizedState=e},useTransition:function(){var e=td(!1),t=e[0];return e=Cy.bind(null,e[1]),bt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var n=ie,i=bt();if(te){if(r===void 0)throw Error(D(407));r=r()}else{if(r=t(),pe===null)throw Error(D(349));xr&30||Yp(n,t,r)}i.memoizedState=r;var o={value:r,getSnapshot:t};return i.queue=o,rd(Jp.bind(null,n,o,e),[e]),n.flags|=2048,ai(9,Xp.bind(null,n,o,r,t),void 0,null),r},useId:function(){var e=bt(),t=pe.identifierPrefix;if(te){var r=Tt,n=Nt;r=(n&~(1<<32-mt(n)-1)).toString(32)+r,t=":"+t+"R"+r,r=ii++,0<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=a.createElement(r,{is:n.is}):(e=a.createElement(r),r==="select"&&(a=e,n.multiple?a.multiple=!0:n.size&&(a.size=n.size))):e=a.createElementNS(e,r),e[Ct]=t,e[ti]=n,xv(e,t,!1,!1),t.stateNode=e;e:{switch(a=Vl(r,n),r){case"dialog":J("cancel",e),J("close",e),i=n;break;case"iframe":case"object":case"embed":J("load",e),i=n;break;case"video":case"audio":for(i=0;irn&&(t.flags|=128,n=!0,xn(o,!1),t.lanes=4194304)}else{if(!n)if(e=zo(a),e!==null){if(t.flags|=128,n=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),xn(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!te)return De(t),null}else 2*le()-o.renderingStartTime>rn&&r!==1073741824&&(t.flags|=128,n=!0,xn(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(r=o.last,r!==null?r.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=le(),t.sibling=null,r=ne.current,X(ne,n?r&1|2:r&1),t):(De(t),null);case 22:case 23:return Ps(),n=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(t.flags|=8192),n&&t.mode&1?Ge&1073741824&&(De(t),t.subtreeFlags&6&&(t.flags|=8192)):De(t),null;case 24:return null;case 25:return null}throw Error(D(156,t.tag))}function By(e,t){switch(as(t),t.tag){case 1:return je(t.type)&&To(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return en(),Z(Ue),Z(Re),gs(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return vs(t),null;case 13:if(Z(ne),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(D(340));Jr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Z(ne),null;case 4:return en(),null;case 10:return cs(t.type._context),null;case 22:case 23:return Ps(),null;case 24:return null;default:return null}}var Xi=!1,Pe=!1,My=typeof WeakSet=="function"?WeakSet:Set,N=null;function $r(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){ae(e,t,n)}else r.current=null}function wu(e,t,r){try{r()}catch(n){ae(e,t,n)}}var pd=!1;function Fy(e,t){if(ru=Io,e=Op(),is(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var i=n.anchorOffset,o=n.focusNode;n=n.focusOffset;try{r.nodeType,o.nodeType}catch{r=null;break e}var a=0,l=-1,u=-1,s=0,d=0,c=e,f=null;t:for(;;){for(var p;c!==r||i!==0&&c.nodeType!==3||(l=a+i),c!==o||n!==0&&c.nodeType!==3||(u=a+n),c.nodeType===3&&(a+=c.nodeValue.length),(p=c.firstChild)!==null;)f=c,c=p;for(;;){if(c===e)break t;if(f===r&&++s===i&&(l=a),f===o&&++d===n&&(u=a),(p=c.nextSibling)!==null)break;c=f,f=c.parentNode}c=p}r=l===-1||u===-1?null:{start:l,end:u}}else r=null}r=r||{start:0,end:0}}else r=null;for(nu={focusedElem:e,selectionRange:r},Io=!1,N=t;N!==null;)if(t=N,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,N=e;else for(;N!==null;){t=N;try{var v=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var y=v.memoizedProps,w=v.memoizedState,m=t.stateNode,g=m.getSnapshotBeforeUpdate(t.elementType===t.type?y:ft(t.type,y),w);m.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var h=t.stateNode.containerInfo;h.nodeType===1?h.textContent="":h.nodeType===9&&h.documentElement&&h.removeChild(h.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(D(163))}}catch(S){ae(t,t.return,S)}if(e=t.sibling,e!==null){e.return=t.return,N=e;break}N=t.return}return v=pd,pd=!1,v}function jn(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var i=n=n.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&wu(t,r,o)}i=i.next}while(i!==n)}}function da(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function Su(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function Dv(e){var t=e.alternate;t!==null&&(e.alternate=null,Dv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ct],delete t[ti],delete t[au],delete t[wy],delete t[Sy])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Pv(e){return e.tag===5||e.tag===3||e.tag===4}function vd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Pv(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Eu(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=No));else if(n!==4&&(e=e.child,e!==null))for(Eu(e,t,r),e=e.sibling;e!==null;)Eu(e,t,r),e=e.sibling}function xu(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(xu(e,t,r),e=e.sibling;e!==null;)xu(e,t,r),e=e.sibling}var Se=null,pt=!1;function zt(e,t,r){for(r=r.child;r!==null;)Iv(e,t,r),r=r.sibling}function Iv(e,t,r){if(Dt&&typeof Dt.onCommitFiberUnmount=="function")try{Dt.onCommitFiberUnmount(na,r)}catch{}switch(r.tag){case 5:Pe||$r(r,t);case 6:var n=Se,i=pt;Se=null,zt(e,t,r),Se=n,pt=i,Se!==null&&(pt?(e=Se,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Se.removeChild(r.stateNode));break;case 18:Se!==null&&(pt?(e=Se,r=r.stateNode,e.nodeType===8?cl(e.parentNode,r):e.nodeType===1&&cl(e,r),Yn(e)):cl(Se,r.stateNode));break;case 4:n=Se,i=pt,Se=r.stateNode.containerInfo,pt=!0,zt(e,t,r),Se=n,pt=i;break;case 0:case 11:case 14:case 15:if(!Pe&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){i=n=n.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&(o&2||o&4)&&wu(r,t,a),i=i.next}while(i!==n)}zt(e,t,r);break;case 1:if(!Pe&&($r(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(l){ae(r,t,l)}zt(e,t,r);break;case 21:zt(e,t,r);break;case 22:r.mode&1?(Pe=(n=Pe)||r.memoizedState!==null,zt(e,t,r),Pe=n):zt(e,t,r);break;default:zt(e,t,r)}}function gd(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new My),t.forEach(function(n){var i=Vy.bind(null,e,n);r.has(n)||(r.add(n),n.then(i,i))})}}function dt(e,t){var r=t.deletions;if(r!==null)for(var n=0;ni&&(i=a),n&=~o}if(n=i,n=le()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Uy(n/1960))-n,10e?16:e,Ht===null)var n=!1;else{if(e=Ht,Ht=null,Wo=0,H&6)throw Error(D(331));var i=H;for(H|=4,N=e.current;N!==null;){var o=N,a=o.child;if(N.flags&16){var l=o.deletions;if(l!==null){for(var u=0;ule()-Cs?hr(e,0):bs|=r),_e(e,t)}function Bv(e,t){t===0&&(e.mode&1?(t=$i,$i<<=1,!($i&130023424)&&($i=4194304)):t=1);var r=ke();e=Bt(e,t),e!==null&&(gi(e,t,r),_e(e,r))}function Gy(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),Bv(e,r)}function Vy(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,i=e.memoizedState;i!==null&&(r=i.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(D(314))}n!==null&&n.delete(t),Bv(e,r)}var Mv;Mv=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ue.current)ze=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return ze=!1,Ay(e,t,r);ze=!!(e.flags&131072)}else ze=!1,te&&t.flags&1048576&&jp(t,Lo,t.index);switch(t.lanes=0,t.tag){case 2:var n=t.type;vo(e,t),e=t.pendingProps;var i=Xr(t,Re.current);Kr(t,r),i=hs(null,t,n,e,i,r);var o=ys();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,je(n)?(o=!0,ko(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,fs(t),i.updater=ca,t.stateNode=i,i._reactInternals=t,fu(t,n,e,r),t=gu(null,t,n,!0,o,r)):(t.tag=0,te&&o&&os(t),Te(null,t,i,r),t=t.child),t;case 16:n=t.elementType;e:{switch(vo(e,t),e=t.pendingProps,i=n._init,n=i(n._payload),t.type=n,i=t.tag=Ky(n),e=ft(n,e),i){case 0:t=vu(null,t,n,e,r);break e;case 1:t=cd(null,t,n,e,r);break e;case 11:t=ud(null,t,n,e,r);break e;case 14:t=sd(null,t,n,ft(n.type,e),r);break e}throw Error(D(306,n,""))}return t;case 0:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:ft(n,i),vu(e,t,n,i,r);case 1:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:ft(n,i),cd(e,t,n,i,r);case 3:e:{if(wv(t),e===null)throw Error(D(387));n=t.pendingProps,o=t.memoizedState,i=o.element,Vp(e,t),Fo(t,n,null,r);var a=t.memoizedState;if(n=a.element,o.isDehydrated)if(o={element:n,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=tn(Error(D(423)),t),t=dd(e,t,n,r,i);break e}else if(n!==i){i=tn(Error(D(424)),t),t=dd(e,t,n,r,i);break e}else for(Ve=Kt(t.stateNode.containerInfo.firstChild),Ke=t,te=!0,vt=null,r=Hp(t,null,n,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Jr(),n===i){t=Mt(e,t,r);break e}Te(e,t,n,r)}t=t.child}return t;case 5:return qp(t),e===null&&su(t),n=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,iu(n,i)?a=null:o!==null&&iu(n,o)&&(t.flags|=32),yv(e,t),Te(e,t,a,r),t.child;case 6:return e===null&&su(t),null;case 13:return Sv(e,t,r);case 4:return ps(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=Zr(t,null,n,r):Te(e,t,n,r),t.child;case 11:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:ft(n,i),ud(e,t,n,i,r);case 7:return Te(e,t,t.pendingProps,r),t.child;case 8:return Te(e,t,t.pendingProps.children,r),t.child;case 12:return Te(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(n=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,X(Bo,n._currentValue),n._currentValue=a,o!==null)if(yt(o.value,a)){if(o.children===i.children&&!Ue.current){t=Mt(e,t,r);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var l=o.dependencies;if(l!==null){a=o.child;for(var u=l.firstContext;u!==null;){if(u.context===n){if(o.tag===1){u=kt(-1,r&-r),u.tag=2;var s=o.updateQueue;if(s!==null){s=s.shared;var d=s.pending;d===null?u.next=u:(u.next=d.next,d.next=u),s.pending=u}}o.lanes|=r,u=o.alternate,u!==null&&(u.lanes|=r),cu(o.return,r,t),l.lanes|=r;break}u=u.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(D(341));a.lanes|=r,l=a.alternate,l!==null&&(l.lanes|=r),cu(a,r,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}Te(e,t,i.children,r),t=t.child}return t;case 9:return i=t.type,n=t.pendingProps.children,Kr(t,r),i=st(i),n=n(i),t.flags|=1,Te(e,t,n,r),t.child;case 14:return n=t.type,i=ft(n,t.pendingProps),i=ft(n.type,i),sd(e,t,n,i,r);case 15:return mv(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:ft(n,i),vo(e,t),t.tag=1,je(n)?(e=!0,ko(t)):e=!1,Kr(t,r),pv(t,n,i),fu(t,n,i,r),gu(null,t,n,!0,e,r);case 19:return Ev(e,t,r);case 22:return hv(e,t,r)}throw Error(D(156,t.tag))};function Fv(e,t){return cp(e,t)}function qy(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ot(e,t,r,n){return new qy(e,t,r,n)}function Rs(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ky(e){if(typeof e=="function")return Rs(e)?1:0;if(e!=null){if(e=e.$$typeof,e===qu)return 11;if(e===Ku)return 14}return 2}function Jt(e,t){var r=e.alternate;return r===null?(r=ot(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function ho(e,t,r,n,i,o){var a=2;if(n=e,typeof e=="function")Rs(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Ar:return yr(r.children,i,o,t);case Vu:a=8,i|=8;break;case Ml:return e=ot(12,r,t,i|2),e.elementType=Ml,e.lanes=o,e;case Fl:return e=ot(13,r,t,i),e.elementType=Fl,e.lanes=o,e;case zl:return e=ot(19,r,t,i),e.elementType=zl,e.lanes=o,e;case qf:return pa(r,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Gf:a=10;break e;case Vf:a=9;break e;case qu:a=11;break e;case Ku:a=14;break e;case Ut:a=16,n=null;break e}throw Error(D(130,e==null?e:typeof e,""))}return t=ot(a,r,t,i),t.elementType=e,t.type=n,t.lanes=o,t}function yr(e,t,r,n){return e=ot(7,e,n,t),e.lanes=r,e}function pa(e,t,r,n){return e=ot(22,e,n,t),e.elementType=qf,e.lanes=r,e.stateNode={isHidden:!1},e}function yl(e,t,r){return e=ot(6,e,null,t),e.lanes=r,e}function wl(e,t,r){return t=ot(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Qy(e,t,r,n,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Za(0),this.expirationTimes=Za(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Za(0),this.identifierPrefix=n,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Os(e,t,r,n,i,o,a,l,u){return e=new Qy(e,t,r,l,u),t===1?(t=1,o===!0&&(t|=8)):t=0,o=ot(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},fs(o),e}function Yy(e,t,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_v)}catch(e){console.error(e)}}_v(),_f.exports=Je;var As=_f.exports;const t0=zu(As);var bd=As;Ll.createRoot=bd.createRoot,Ll.hydrateRoot=bd.hydrateRoot;function Iu(e,t){return Iu=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},Iu(e,t)}function $v(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Iu(e,t)}function M(){return M=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(Me(1));return r(Wv)(e,t)}if(typeof e!="function")throw new Error(Me(2));var i=e,o=t,a=[],l=a,u=!1;function s(){l===a&&(l=a.slice())}function d(){if(u)throw new Error(Me(3));return o}function c(y){if(typeof y!="function")throw new Error(Me(4));if(u)throw new Error(Me(5));var w=!0;return s(),l.push(y),function(){if(w){if(u)throw new Error(Me(6));w=!1,s();var g=l.indexOf(y);l.splice(g,1),a=null}}}function f(y){if(!o0(y))throw new Error(Me(7));if(typeof y.type>"u")throw new Error(Me(8));if(u)throw new Error(Me(9));try{u=!0,o=i(o,y)}finally{u=!1}for(var w=a=l,m=0;m=0;n--){var i=t[n](e);if(i)return i}return function(o,a){throw new Error("Invalid value of type "+typeof e+" for "+r+" argument when connecting component "+a.wrappedComponentName+".")}}function cw(e,t){return e===t}function dw(e){var t=e===void 0?{}:e,r=t.connectHOC,n=r===void 0?G0:r,i=t.mapStateToPropsFactories,o=i===void 0?Z0:i,a=t.mapDispatchToPropsFactories,l=a===void 0?Y0:a,u=t.mergePropsFactories,s=u===void 0?iw:u,d=t.selectorFactory,c=d===void 0?uw:d;return function(p,v,y,w){w===void 0&&(w={});var m=w,g=m.pure,h=g===void 0?!0:g,S=m.areStatesEqual,x=S===void 0?cw:S,b=m.areOwnPropsEqual,C=b===void 0?Sl:b,I=m.areStatePropsEqual,k=I===void 0?Sl:I,T=m.areMergedPropsEqual,z=T===void 0?Sl:T,re=Vo(m,sw),ee=El(p,o,"mapStateToProps"),G=El(v,l,"mapDispatchToProps"),he=El(y,s,"mergeProps");return n(c,M({methodName:"connect",getDisplayName:function(He){return"Connect("+He+")"},shouldHandleStateChanges:!!p,initMapStateToProps:ee,initMapDispatchToProps:G,initMergeProps:he,pure:h,areStatesEqual:x,areOwnPropsEqual:C,areStatePropsEqual:k,areMergedPropsEqual:z},re))}}const ag=dw();u0(As.unstable_batchedUpdates);function fw(e,t){if(e.length!==t.length)return!1;for(var r=0;r");return n.callbacks},n.setCallbacks=function(l){n.callbacks=l},n}var r=t.prototype;return r.componentDidMount=function(){this.unbind=at(window,[{eventName:"error",fn:this.onWindowError}])},r.componentDidCatch=function(i){if(i instanceof Qo){this.setState({});return}throw i},r.componentWillUnmount=function(){this.unbind()},r.render=function(){return this.props.children(this.setCallbacks)},t}(Y.Component),bw=` + Press space bar to start a drag. + When dragging you can use the arrow keys to move the item around and escape to cancel. + Some screen readers may require you to be in focus mode or to use your pass through key +`,Yo=function(t){return t+1},Cw=function(t){return` + You have lifted an item in position `+Yo(t.source.index)+` +`},dg=function(t,r){var n=t.droppableId===r.droppableId,i=Yo(t.index),o=Yo(r.index);return n?` + You have moved the item from position `+i+` + to position `+o+` + `:` + You have moved the item from position `+i+` + in list `+t.droppableId+` + to list `+r.droppableId+` + in position `+o+` + `},fg=function(t,r,n){var i=r.droppableId===n.droppableId;return i?` + The item `+t+` + has been combined with `+n.draggableId:` + The item `+t+` + in list `+r.droppableId+` + has been combined with `+n.draggableId+` + in list `+n.droppableId+` + `},Dw=function(t){var r=t.destination;if(r)return dg(t.source,r);var n=t.combine;return n?fg(t.draggableId,t.source,n):"You are over an area that cannot be dropped on"},_d=function(t){return` + The item has returned to its starting position + of `+Yo(t.index)+` +`},Pw=function(t){if(t.reason==="CANCEL")return` + Movement cancelled. + `+_d(t.source)+` + `;var r=t.destination,n=t.combine;return r?` + You have dropped the item. + `+dg(t.source,r)+` + `:n?` + You have dropped the item. + `+fg(t.draggableId,t.source,n)+` + `:` + The item has been dropped while not over a drop area. + `+_d(t.source)+` + `},yo={dragHandleUsageInstructions:bw,onDragStart:Cw,onDragUpdate:Dw,onDragEnd:Pw},ge={x:0,y:0},Ee=function(t,r){return{x:t.x+r.x,y:t.y+r.y}},qe=function(t,r){return{x:t.x-r.x,y:t.y-r.y}},er=function(t,r){return t.x===r.x&&t.y===r.y},dn=function(t){return{x:t.x!==0?-t.x:0,y:t.y!==0?-t.y:0}},Dr=function(t,r,n){var i;return n===void 0&&(n=0),i={},i[t]=r,i[t==="x"?"y":"x"]=n,i},ci=function(t,r){return Math.sqrt(Math.pow(r.x-t.x,2)+Math.pow(r.y-t.y,2))},$d=function(t,r){return Math.min.apply(Math,r.map(function(n){return ci(t,n)}))},pg=function(t){return function(r){return{x:t(r.x),y:t(r.y)}}},Iw=function(e,t){var r=gt({top:Math.max(t.top,e.top),right:Math.min(t.right,e.right),bottom:Math.min(t.bottom,e.bottom),left:Math.max(t.left,e.left)});return r.width<=0||r.height<=0?null:r},Ri=function(t,r){return{top:t.top+r.y,left:t.left+r.x,bottom:t.bottom+r.y,right:t.right+r.x}},Wd=function(t){return[{x:t.left,y:t.top},{x:t.right,y:t.top},{x:t.left,y:t.bottom},{x:t.right,y:t.bottom}]},Rw={top:0,right:0,bottom:0,left:0},Ow=function(t,r){return r?Ri(t,r.scroll.diff.displacement):t},Nw=function(t,r,n){if(n&&n.increasedBy){var i;return M({},t,(i={},i[r.end]=t[r.end]+n.increasedBy[r.line],i))}return t},Tw=function(t,r){return r&&r.shouldClipSubject?Iw(r.pageMarginBox,t):gt(t)},nn=function(e){var t=e.page,r=e.withPlaceholder,n=e.axis,i=e.frame,o=Ow(t.marginBox,i),a=Nw(o,n,r),l=Tw(a,i);return{page:t,withPlaceholder:r,active:l}},Ws=function(e,t){e.frame||P();var r=e.frame,n=qe(t,r.scroll.initial),i=dn(n),o=M({},r,{scroll:{initial:r.scroll.initial,current:t,diff:{value:n,displacement:i},max:r.scroll.max}}),a=nn({page:e.subject.page,withPlaceholder:e.subject.withPlaceholder,axis:e.axis,frame:o}),l=M({},e,{frame:o,subject:a});return l};function Xo(e){return Object.values?Object.values(e):Object.keys(e).map(function(t){return e[t]})}function Hs(e,t){if(e.findIndex)return e.findIndex(t);for(var r=0;re.bottom,s=n.lefte.right,d=u&&s;if(d)return!0;var c=u&&a||s&&o;return c}},Bw=function(e){var t=ut(e.top,e.bottom),r=ut(e.left,e.right);return function(n){var i=t(n.top)&&t(n.bottom)&&r(n.left)&&r(n.right);return i}},Vs={direction:"vertical",line:"y",crossAxisLine:"x",start:"top",end:"bottom",size:"height",crossAxisStart:"left",crossAxisEnd:"right",crossAxisSize:"width"},wg={direction:"horizontal",line:"x",crossAxisLine:"y",start:"left",end:"right",size:"width",crossAxisStart:"top",crossAxisEnd:"bottom",crossAxisSize:"height"},Mw=function(e){return function(t){var r=ut(t.top,t.bottom),n=ut(t.left,t.right);return function(i){return e===Vs?r(i.top)&&r(i.bottom):n(i.left)&&n(i.right)}}},Fw=function(t,r){var n=r.frame?r.frame.scroll.diff.displacement:ge;return Ri(t,n)},zw=function(t,r,n){return r.subject.active?n(r.subject.active)(t):!1},Uw=function(t,r,n){return n(r)(t)},qs=function(t){var r=t.target,n=t.destination,i=t.viewport,o=t.withDroppableDisplacement,a=t.isVisibleThroughFrameFn,l=o?Fw(r,n):r;return zw(l,n,a)&&Uw(l,i,a)},jw=function(t){return qs(M({},t,{isVisibleThroughFrameFn:yg}))},Sg=function(t){return qs(M({},t,{isVisibleThroughFrameFn:Bw}))},_w=function(t){return qs(M({},t,{isVisibleThroughFrameFn:Mw(t.destination.axis)}))},$w=function(t,r,n){if(typeof n=="boolean")return n;if(!r)return!0;var i=r.invisible,o=r.visible;if(i[t])return!1;var a=o[t];return a?a.shouldAnimate:!0};function Ww(e,t){var r=e.page.marginBox,n={top:t.point.y,right:0,bottom:0,left:t.point.x};return gt(_s(r,n))}function fi(e){var t=e.afterDragging,r=e.destination,n=e.displacedBy,i=e.viewport,o=e.forceShouldAnimate,a=e.last;return t.reduce(function(u,s){var d=Ww(s,n),c=s.descriptor.id;u.all.push(c);var f=jw({target:d,destination:r,viewport:i,withDroppableDisplacement:!0});if(!f)return u.invisible[s.descriptor.id]=!0,u;var p=$w(c,a,o),v={draggableId:c,shouldAnimate:p};return u.visible[c]=v,u},{all:[],visible:{},invisible:{}})}function Hw(e,t){if(!e.length)return 0;var r=e[e.length-1].descriptor.index;return t.inHomeList?r:r+1}function Hd(e){var t=e.insideDestination,r=e.inHomeList,n=e.displacedBy,i=e.destination,o=Hw(t,{inHomeList:r});return{displaced:di,displacedBy:n,at:{type:"REORDER",destination:{droppableId:i.descriptor.id,index:o}}}}function Jo(e){var t=e.draggable,r=e.insideDestination,n=e.destination,i=e.viewport,o=e.displacedBy,a=e.last,l=e.index,u=e.forceShouldAnimate,s=pn(t,n);if(l==null)return Hd({insideDestination:r,inHomeList:s,displacedBy:o,destination:n});var d=ur(r,function(y){return y.descriptor.index===l});if(!d)return Hd({insideDestination:r,inHomeList:s,displacedBy:o,destination:n});var c=ka(t,r),f=r.indexOf(d),p=c.slice(f),v=fi({afterDragging:p,destination:n,displacedBy:o,last:a,viewport:i.frame,forceShouldAnimate:u});return{displaced:v,displacedBy:o,at:{type:"REORDER",destination:{droppableId:n.descriptor.id,index:l}}}}function ir(e,t){return!!t.effected[e]}var Gw=function(e){var t=e.isMovingForward,r=e.destination,n=e.draggables,i=e.combine,o=e.afterCritical;if(!r.isCombineEnabled)return null;var a=i.draggableId,l=n[a],u=l.descriptor.index,s=ir(a,o);return s?t?u:u-1:t?u+1:u},Vw=function(e){var t=e.isMovingForward,r=e.isInHomeList,n=e.insideDestination,i=e.location;if(!n.length)return null;var o=i.index,a=t?o+1:o-1,l=n[0].descriptor.index,u=n[n.length-1].descriptor.index,s=r?u:u+1;return as?null:a},qw=function(e){var t=e.isMovingForward,r=e.isInHomeList,n=e.draggable,i=e.draggables,o=e.destination,a=e.insideDestination,l=e.previousImpact,u=e.viewport,s=e.afterCritical,d=l.at;if(d||P(),d.type==="REORDER"){var c=Vw({isMovingForward:t,isInHomeList:r,location:d.destination,insideDestination:a});return c==null?null:Jo({draggable:n,insideDestination:a,destination:o,viewport:u,last:l.displaced,displacedBy:l.displacedBy,index:c})}var f=Gw({isMovingForward:t,destination:o,displaced:l.displaced,draggables:i,combine:d.combine,afterCritical:s});return f==null?null:Jo({draggable:n,insideDestination:a,destination:o,viewport:u,last:l.displaced,displacedBy:l.displacedBy,index:f})},Kw=function(e){var t=e.displaced,r=e.afterCritical,n=e.combineWith,i=e.displacedBy,o=!!(t.visible[n]||t.invisible[n]);return ir(n,r)?o?ge:dn(i.point):o?i.point:ge},Qw=function(e){var t=e.afterCritical,r=e.impact,n=e.draggables,i=Ta(r);i||P();var o=i.draggableId,a=n[o].page.borderBox.center,l=Kw({displaced:r.displaced,afterCritical:t,combineWith:o,displacedBy:r.displacedBy});return Ee(a,l)},Eg=function(t,r){return r.margin[t.start]+r.borderBox[t.size]/2},Yw=function(t,r){return r.margin[t.end]+r.borderBox[t.size]/2},Ks=function(t,r,n){return r[t.crossAxisStart]+n.margin[t.crossAxisStart]+n.borderBox[t.crossAxisSize]/2},Gd=function(t){var r=t.axis,n=t.moveRelativeTo,i=t.isMoving;return Dr(r.line,n.marginBox[r.end]+Eg(r,i),Ks(r,n.marginBox,i))},Vd=function(t){var r=t.axis,n=t.moveRelativeTo,i=t.isMoving;return Dr(r.line,n.marginBox[r.start]-Yw(r,i),Ks(r,n.marginBox,i))},Xw=function(t){var r=t.axis,n=t.moveInto,i=t.isMoving;return Dr(r.line,n.contentBox[r.start]+Eg(r,i),Ks(r,n.contentBox,i))},Jw=function(e){var t=e.impact,r=e.draggable,n=e.draggables,i=e.droppable,o=e.afterCritical,a=fn(i.descriptor.id,n),l=r.page,u=i.axis;if(!a.length)return Xw({axis:u,moveInto:i.page,isMoving:l});var s=t.displaced,d=t.displacedBy,c=s.all[0];if(c){var f=n[c];if(ir(c,o))return Vd({axis:u,moveRelativeTo:f.page,isMoving:l});var p=qo(f.page,d.point);return Vd({axis:u,moveRelativeTo:p,isMoving:l})}var v=a[a.length-1];if(v.descriptor.id===r.descriptor.id)return l.borderBox.center;if(ir(v.descriptor.id,o)){var y=qo(v.page,dn(o.displacedBy.point));return Gd({axis:u,moveRelativeTo:y,isMoving:l})}return Gd({axis:u,moveRelativeTo:v.page,isMoving:l})},Ru=function(e,t){var r=e.frame;return r?Ee(t,r.scroll.diff.displacement):t},Zw=function(t){var r=t.impact,n=t.draggable,i=t.droppable,o=t.draggables,a=t.afterCritical,l=n.page.borderBox.center,u=r.at;return!i||!u?l:u.type==="REORDER"?Jw({impact:r,draggable:n,draggables:o,droppable:i,afterCritical:a}):Qw({impact:r,draggables:o,afterCritical:a})},Aa=function(e){var t=Zw(e),r=e.droppable,n=r?Ru(r,t):t;return n},xg=function(e,t){var r=qe(t,e.scroll.initial),n=dn(r),i=gt({top:t.y,bottom:t.y+e.frame.height,left:t.x,right:t.x+e.frame.width}),o={frame:i,scroll:{initial:e.scroll.initial,max:e.scroll.max,current:t,diff:{value:r,displacement:n}}};return o};function qd(e,t){return e.map(function(r){return t[r]})}function eS(e,t){for(var r=0;r1?d.sort(function(c,f){return Ne(c)[l.start]-Ne(f)[l.start]})[0]:s.sort(function(c,f){var p=$d(r,Wd(Ne(c))),v=$d(r,Wd(Ne(f)));return p!==v?p-v:Ne(c)[l.start]-Ne(f)[l.start]})[0]},Kd=function(t,r){var n=t.page.borderBox.center;return ir(t.descriptor.id,r)?qe(n,r.displacedBy.point):n},oS=function(t,r){var n=t.page.borderBox;return ir(t.descriptor.id,r)?Ri(n,dn(r.displacedBy.point)):n},aS=function(e){var t=e.pageBorderBoxCenter,r=e.viewport,n=e.destination,i=e.insideDestination,o=e.afterCritical,a=i.filter(function(l){return Sg({target:oS(l,o),destination:n,viewport:r.frame,withDroppableDisplacement:!0})}).sort(function(l,u){var s=ci(t,Ru(n,Kd(l,o))),d=ci(t,Ru(n,Kd(u,o)));return st.left&&e.topt.top}function vS(e){var t=e.pageBorderBox,r=e.draggable,n=e.candidates,i=r.page.borderBox.center,o=n.map(function(a){var l=a.axis,u=Dr(a.axis.line,t.center[l.line],a.page.borderBox.center[l.crossAxisLine]);return{id:a.descriptor.id,distance:ci(i,u)}}).sort(function(a,l){return l.distance-a.distance});return o[0]?o[0].id:null}function gS(e){var t=e.pageBorderBox,r=e.draggable,n=e.droppables,i=Na(n).filter(function(o){if(!o.isEnabled)return!1;var a=o.subject.active;if(!a||!pS(t,a))return!1;if(Pg(a)(t.center))return!0;var l=o.axis,u=a.center[l.crossAxisLine],s=t[l.crossAxisStart],d=t[l.crossAxisEnd],c=ut(a[l.crossAxisStart],a[l.crossAxisEnd]),f=c(s),p=c(d);return!f&&!p?!0:f?su});return i.length?i.length===1?i[0].descriptor.id:vS({pageBorderBox:t,draggable:r,candidates:i}):null}var Ig=function(t,r){return gt(Ri(t,r))},mS=function(e,t){var r=e.frame;return r?Ig(t,r.scroll.diff.value):t};function Rg(e){var t=e.displaced,r=e.id;return!!(t.visible[r]||t.invisible[r])}function hS(e){var t=e.draggable,r=e.closest,n=e.inHomeList;return r?n&&r.descriptor.index>t.descriptor.index?r.descriptor.index-1:r.descriptor.index:null}var yS=function(e){var t=e.pageBorderBoxWithDroppableScroll,r=e.draggable,n=e.destination,i=e.insideDestination,o=e.last,a=e.viewport,l=e.afterCritical,u=n.axis,s=Oi(n.axis,r.displaceBy),d=s.value,c=t[u.start],f=t[u.end],p=ka(r,i),v=ur(p,function(w){var m=w.descriptor.id,g=w.page.borderBox.center[u.line],h=ir(m,l),S=Rg({displaced:o,id:m});return h?S?f<=g:cm[l.start]+h&&cm[l.start]-s+h&&dm[l.start]+s+h&&cm[l.start]+h&&d=Xd)return Fg;var o=i/Xd,a=Tu+QS*o,l=n==="CANCEL"?a*YS:a;return Number(l.toFixed(2))},JS=function(e){var t=e.impact,r=e.draggable,n=e.dimensions,i=e.viewport,o=e.afterCritical,a=n.draggables,l=n.droppables,u=Qe(t),s=u?l[u]:null,d=l[r.descriptor.droppableId],c=Tg({impact:t,draggable:r,draggables:a,afterCritical:o,droppable:s||d,viewport:i}),f=qe(c,r.client.borderBox.center);return f},ZS=function(e){var t=e.draggables,r=e.reason,n=e.lastImpact,i=e.home,o=e.viewport,a=e.onLiftImpact;if(!n.at||r!=="DROP"){var l=Ng({draggables:t,impact:a,destination:i,viewport:o,forceShouldAnimate:!0});return{impact:l,didDropInsideDroppable:!1}}if(n.at.type==="REORDER")return{impact:n,didDropInsideDroppable:!0};var u=M({},n,{displaced:di});return{impact:u,didDropInsideDroppable:!0}},eE=function(e){var t=e.getState,r=e.dispatch;return function(n){return function(i){if(i.type!=="DROP"){n(i);return}var o=t(),a=i.payload.reason;if(o.phase==="COLLECTING"){r(VS({reason:a}));return}if(o.phase!=="IDLE"){var l=o.phase==="DROP_PENDING"&&o.isWaiting;l&&P(),o.phase==="DRAGGING"||o.phase==="DROP_PENDING"||P();var u=o.critical,s=o.dimensions,d=s.draggables[o.critical.draggable.id],c=ZS({reason:a,lastImpact:o.impact,afterCritical:o.afterCritical,onLiftImpact:o.onLiftImpact,home:o.dimensions.droppables[o.critical.droppable.id],viewport:o.viewport,draggables:o.dimensions.draggables}),f=c.impact,p=c.didDropInsideDroppable,v=p?Gs(f):null,y=p?Ta(f):null,w={index:u.draggable.index,droppableId:u.droppable.id},m={draggableId:d.descriptor.id,type:d.descriptor.type,source:w,reason:a,mode:o.movementMode,destination:v,combine:y},g=JS({impact:f,draggable:d,dimensions:s,viewport:o.viewport,afterCritical:o.afterCritical}),h={critical:o.critical,afterCritical:o.afterCritical,result:m,impact:f},S=!er(o.current.client.offset,g)||!!m.combine;if(!S){r(Js({completed:h}));return}var x=XS({current:o.current.client.offset,destination:g,reason:a}),b={newHomeClientOffset:g,dropDuration:x,completed:h};r(GS(b))}}}},zg=function(){return{x:window.pageXOffset,y:window.pageYOffset}};function tE(e){return{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(r){r.target!==window&&r.target!==window.document||e()}}}function rE(e){var t=e.onWindowScroll;function r(){t(zg())}var n=si(r),i=tE(n),o=Zt;function a(){return o!==Zt}function l(){a()&&P(),o=at(window,[i])}function u(){a()||P(),n.cancel(),o(),o=Zt}return{start:l,stop:u,isActive:a}}var nE=function(t){return t.type==="DROP_COMPLETE"||t.type==="DROP_ANIMATE"||t.type==="FLUSH"},iE=function(e){var t=rE({onWindowScroll:function(n){e.dispatch(US({newScroll:n}))}});return function(r){return function(n){!t.isActive()&&n.type==="INITIAL_PUBLISH"&&t.start(),t.isActive()&&nE(n)&&t.stop(),r(n)}}},oE=function(e){var t=!1,r=!1,n=setTimeout(function(){r=!0}),i=function(a){t||r||(t=!0,e(a),clearTimeout(n))};return i.wasCalled=function(){return t},i},aE=function(){var e=[],t=function(o){var a=Hs(e,function(s){return s.timerId===o});a===-1&&P();var l=e.splice(a,1),u=l[0];u.callback()},r=function(o){var a=setTimeout(function(){return t(a)}),l={timerId:a,callback:o};e.push(l)},n=function(){if(e.length){var o=[].concat(e);e.length=0,o.forEach(function(a){clearTimeout(a.timerId),a.callback()})}};return{add:r,flush:n}},lE=function(t,r){return t==null&&r==null?!0:t==null||r==null?!1:t.droppableId===r.droppableId&&t.index===r.index},uE=function(t,r){return t==null&&r==null?!0:t==null||r==null?!1:t.draggableId===r.draggableId&&t.droppableId===r.droppableId},sE=function(t,r){if(t===r)return!0;var n=t.draggable.id===r.draggable.id&&t.draggable.droppableId===r.draggable.droppableId&&t.draggable.type===r.draggable.type&&t.draggable.index===r.draggable.index,i=t.droppable.id===r.droppable.id&&t.droppable.type===r.droppable.type;return n&&i},Cn=function(t,r){r()},eo=function(t,r){return{draggableId:t.draggable.id,type:t.droppable.type,source:{droppableId:t.droppable.id,index:t.draggable.index},mode:r}},Dl=function(t,r,n,i){if(!t){n(i(r));return}var o=oE(n),a={announce:o};t(r,a),o.wasCalled()||n(i(r))},cE=function(e,t){var r=aE(),n=null,i=function(f,p){n&&P(),Cn("onBeforeCapture",function(){var v=e().onBeforeCapture;if(v){var y={draggableId:f,mode:p};v(y)}})},o=function(f,p){n&&P(),Cn("onBeforeDragStart",function(){var v=e().onBeforeDragStart;v&&v(eo(f,p))})},a=function(f,p){n&&P();var v=eo(f,p);n={mode:p,lastCritical:f,lastLocation:v.source,lastCombine:null},r.add(function(){Cn("onDragStart",function(){return Dl(e().onDragStart,v,t,yo.onDragStart)})})},l=function(f,p){var v=Gs(p),y=Ta(p);n||P();var w=!sE(f,n.lastCritical);w&&(n.lastCritical=f);var m=!lE(n.lastLocation,v);m&&(n.lastLocation=v);var g=!uE(n.lastCombine,y);if(g&&(n.lastCombine=y),!(!w&&!m&&!g)){var h=M({},eo(f,n.mode),{combine:y,destination:v});r.add(function(){Cn("onDragUpdate",function(){return Dl(e().onDragUpdate,h,t,yo.onDragUpdate)})})}},u=function(){n||P(),r.flush()},s=function(f){n||P(),n=null,Cn("onDragEnd",function(){return Dl(e().onDragEnd,f,t,yo.onDragEnd)})},d=function(){if(n){var f=M({},eo(n.lastCritical,n.mode),{combine:null,destination:null,reason:"CANCEL"});s(f)}};return{beforeCapture:i,beforeStart:o,start:a,update:l,flush:u,drop:s,abort:d}},dE=function(e,t){var r=cE(e,t);return function(n){return function(i){return function(o){if(o.type==="BEFORE_INITIAL_CAPTURE"){r.beforeCapture(o.payload.draggableId,o.payload.movementMode);return}if(o.type==="INITIAL_PUBLISH"){var a=o.payload.critical;r.beforeStart(a,o.payload.movementMode),i(o),r.start(a,o.payload.movementMode);return}if(o.type==="DROP_COMPLETE"){var l=o.payload.completed.result;r.flush(),i(o),r.drop(l);return}if(i(o),o.type==="FLUSH"){r.abort();return}var u=n.getState();u.phase==="DRAGGING"&&r.update(u.critical,u.impact)}}}},fE=function(e){return function(t){return function(r){if(r.type!=="DROP_ANIMATION_FINISHED"){t(r);return}var n=e.getState();n.phase!=="DROP_ANIMATING"&&P(),e.dispatch(Js({completed:n.completed}))}}},pE=function(e){var t=null,r=null;function n(){r&&(cancelAnimationFrame(r),r=null),t&&(t(),t=null)}return function(i){return function(o){if((o.type==="FLUSH"||o.type==="DROP_COMPLETE"||o.type==="DROP_ANIMATION_FINISHED")&&n(),i(o),o.type==="DROP_ANIMATE"){var a={eventName:"scroll",options:{capture:!0,passive:!1,once:!0},fn:function(){var u=e.getState();u.phase==="DROP_ANIMATING"&&e.dispatch(Mg())}};r=requestAnimationFrame(function(){r=null,t=at(window,[a])})}}}},vE=function(e){return function(){return function(t){return function(r){(r.type==="DROP_COMPLETE"||r.type==="FLUSH"||r.type==="DROP_ANIMATE")&&e.stopPublishing(),t(r)}}}},gE=function(e){var t=!1;return function(){return function(r){return function(n){if(n.type==="INITIAL_PUBLISH"){t=!0,e.tryRecordFocus(n.payload.critical.draggable.id),r(n),e.tryRestoreFocusRecorded();return}if(r(n),!!t){if(n.type==="FLUSH"){t=!1,e.tryRestoreFocusRecorded();return}if(n.type==="DROP_COMPLETE"){t=!1;var i=n.payload.completed.result;i.combine&&e.tryShiftRecord(i.draggableId,i.combine.draggableId),e.tryRestoreFocusRecorded()}}}}}},mE=function(t){return t.type==="DROP_COMPLETE"||t.type==="DROP_ANIMATE"||t.type==="FLUSH"},hE=function(e){return function(t){return function(r){return function(n){if(mE(n)){e.stop(),r(n);return}if(n.type==="INITIAL_PUBLISH"){r(n);var i=t.getState();i.phase!=="DRAGGING"&&P(),e.start(i);return}r(n),e.scroll(t.getState())}}}},yE=function(e){return function(t){return function(r){if(t(r),r.type==="PUBLISH_WHILE_DRAGGING"){var n=e.getState();n.phase==="DROP_PENDING"&&(n.isWaiting||e.dispatch(Bg({reason:n.reason})))}}}},wE=Hv,SE=function(e){var t=e.dimensionMarshal,r=e.focusMarshal,n=e.styleMarshal,i=e.getResponders,o=e.announce,a=e.autoScroller;return Wv(NS,wE(a0(KS(n),vE(t),qS(t),eE,fE,pE,yE,hE(a),iE,gE(r),dE(i,o))))},Pl=function(){return{additions:{},removals:{},modified:{}}};function EE(e){var t=e.registry,r=e.callbacks,n=Pl(),i=null,o=function(){i||(r.collectionStarting(),i=requestAnimationFrame(function(){i=null;var d=n,c=d.additions,f=d.removals,p=d.modified,v=Object.keys(c).map(function(m){return t.draggable.getById(m).getDimension(ge)}).sort(function(m,g){return m.descriptor.index-g.descriptor.index}),y=Object.keys(p).map(function(m){var g=t.droppable.getById(m),h=g.callbacks.getScrollWhileDragging();return{droppableId:m,scroll:h}}),w={additions:v,removals:Object.keys(f),modified:y};n=Pl(),r.publish(w)}))},a=function(d){var c=d.descriptor.id;n.additions[c]=d,n.modified[d.descriptor.droppableId]=!0,n.removals[c]&&delete n.removals[c],o()},l=function(d){var c=d.descriptor;n.removals[c.id]=!0,n.modified[c.droppableId]=!0,n.additions[c.id]&&delete n.additions[c.id],o()},u=function(){i&&(cancelAnimationFrame(i),i=null,n=Pl())};return{add:a,remove:l,stop:u}}var Ug=function(e){var t=e.scrollHeight,r=e.scrollWidth,n=e.height,i=e.width,o=qe({x:r,y:t},{x:i,y:n}),a={x:Math.max(0,o.x),y:Math.max(0,o.y)};return a},jg=function(){var e=document.documentElement;return e||P(),e},_g=function(){var e=jg(),t=Ug({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,width:e.clientWidth,height:e.clientHeight});return t},xE=function(){var e=zg(),t=_g(),r=e.y,n=e.x,i=jg(),o=i.clientWidth,a=i.clientHeight,l=n+o,u=r+a,s=gt({top:r,left:n,right:l,bottom:u}),d={frame:s,scroll:{initial:e,current:e,max:t,diff:{value:ge,displacement:ge}}};return d},bE=function(e){var t=e.critical,r=e.scrollOptions,n=e.registry,i=xE(),o=i.scroll.current,a=t.droppable,l=n.droppable.getAllByType(a.type).map(function(c){return c.callbacks.getDimensionAndWatchScroll(o,r)}),u=n.draggable.getAllByType(t.draggable.type).map(function(c){return c.getDimension(o)}),s={draggables:mg(u),droppables:gg(l)},d={dimensions:s,critical:t,viewport:i};return d};function Jd(e,t,r){if(r.descriptor.id===t.id||r.descriptor.type!==t.type)return!1;var n=e.droppable.getById(r.descriptor.droppableId);return n.descriptor.mode==="virtual"}var CE=function(e,t){var r=null,n=EE({callbacks:{publish:t.publishWhileDragging,collectionStarting:t.collectionStarting},registry:e}),i=function(p,v){e.droppable.exists(p)||P(),r&&t.updateDroppableIsEnabled({id:p,isEnabled:v})},o=function(p,v){r&&(e.droppable.exists(p)||P(),t.updateDroppableIsCombineEnabled({id:p,isCombineEnabled:v}))},a=function(p,v){r&&(e.droppable.exists(p)||P(),t.updateDroppableScroll({id:p,newScroll:v}))},l=function(p,v){r&&e.droppable.getById(p).callbacks.scroll(v)},u=function(){if(r){n.stop();var p=r.critical.droppable;e.droppable.getAllByType(p.type).forEach(function(v){return v.callbacks.dragStopped()}),r.unsubscribe(),r=null}},s=function(p){r||P();var v=r.critical.draggable;p.type==="ADDITION"&&Jd(e,v,p.value)&&n.add(p.value),p.type==="REMOVAL"&&Jd(e,v,p.value)&&n.remove(p.value)},d=function(p){r&&P();var v=e.draggable.getById(p.draggableId),y=e.droppable.getById(v.descriptor.droppableId),w={draggable:v.descriptor,droppable:y.descriptor},m=e.subscribe(s);return r={critical:w,unsubscribe:m},bE({critical:w,registry:e,scrollOptions:p.scrollOptions})},c={updateDroppableIsEnabled:i,updateDroppableIsCombineEnabled:o,scrollDroppable:l,updateDroppableScroll:a,startPublishing:d,stopPublishing:u};return c},$g=function(e,t){return e.phase==="IDLE"?!0:e.phase!=="DROP_ANIMATING"||e.completed.result.draggableId===t?!1:e.completed.result.reason==="DROP"},DE=function(e){window.scrollBy(e.x,e.y)},PE=ve(function(e){return Na(e).filter(function(t){return!(!t.isEnabled||!t.frame)})}),IE=function(t,r){var n=ur(PE(r),function(i){return i.frame||P(),Pg(i.frame.pageMarginBox)(t)});return n},RE=function(e){var t=e.center,r=e.destination,n=e.droppables;if(r){var i=n[r];return i.frame?i:null}var o=IE(t,n);return o},tr={startFromPercentage:.25,maxScrollAtPercentage:.05,maxPixelScroll:28,ease:function(t){return Math.pow(t,2)},durationDampening:{stopDampeningAt:1200,accelerateAt:360}},OE=function(e,t){var r=e[t.size]*tr.startFromPercentage,n=e[t.size]*tr.maxScrollAtPercentage,i={startScrollingFrom:r,maxScrollValueAt:n};return i},Wg=function(e){var t=e.startOfRange,r=e.endOfRange,n=e.current,i=r-t;if(i===0)return 0;var o=n-t,a=o/i;return a},tc=1,NE=function(e,t){if(e>t.startScrollingFrom)return 0;if(e<=t.maxScrollValueAt)return tr.maxPixelScroll;if(e===t.startScrollingFrom)return tc;var r=Wg({startOfRange:t.maxScrollValueAt,endOfRange:t.startScrollingFrom,current:e}),n=1-r,i=tr.maxPixelScroll*tr.ease(n);return Math.ceil(i)},Zd=tr.durationDampening.accelerateAt,ef=tr.durationDampening.stopDampeningAt,TE=function(e,t){var r=t,n=ef,i=Date.now(),o=i-r;if(o>=ef)return e;if(ot.height,o=r.width>t.width;return!o&&!i?n:o&&i?null:{x:o?0:n.x,y:i?0:n.y}},AE=pg(function(e){return e===0?0:e}),Hg=function(e){var t=e.dragStartTime,r=e.container,n=e.subject,i=e.center,o=e.shouldUseTimeDampening,a={top:i.y-r.top,right:r.right-i.x,bottom:r.bottom-i.y,left:i.x-r.left},l=rf({container:r,distanceToEdges:a,dragStartTime:t,axis:Vs,shouldUseTimeDampening:o}),u=rf({container:r,distanceToEdges:a,dragStartTime:t,axis:wg,shouldUseTimeDampening:o}),s=AE({x:u,y:l});if(er(s,ge))return null;var d=kE({container:r,subject:n,proposedScroll:s});return d?er(d,ge)?null:d:null},LE=pg(function(e){return e===0?0:e>0?1:-1}),rc=function(){var e=function(r,n){return r<0?r:r>n?r-n:0};return function(t){var r=t.current,n=t.max,i=t.change,o=Ee(r,i),a={x:e(o.x,n.x),y:e(o.y,n.y)};return er(a,ge)?null:a}}(),Gg=function(t){var r=t.max,n=t.current,i=t.change,o={x:Math.max(n.x,r.x),y:Math.max(n.y,r.y)},a=LE(i),l=rc({max:o,current:n,change:a});return!l||a.x!==0&&l.x===0||a.y!==0&&l.y===0},nc=function(t,r){return Gg({current:t.scroll.current,max:t.scroll.max,change:r})},BE=function(t,r){if(!nc(t,r))return null;var n=t.scroll.max,i=t.scroll.current;return rc({current:i,max:n,change:r})},ic=function(t,r){var n=t.frame;return n?Gg({current:n.scroll.current,max:n.scroll.max,change:r}):!1},ME=function(t,r){var n=t.frame;return!n||!ic(t,r)?null:rc({current:n.scroll.current,max:n.scroll.max,change:r})},FE=function(e){var t=e.viewport,r=e.subject,n=e.center,i=e.dragStartTime,o=e.shouldUseTimeDampening,a=Hg({dragStartTime:i,container:t.frame,subject:r,center:n,shouldUseTimeDampening:o});return a&&nc(t,a)?a:null},zE=function(e){var t=e.droppable,r=e.subject,n=e.center,i=e.dragStartTime,o=e.shouldUseTimeDampening,a=t.frame;if(!a)return null;var l=Hg({dragStartTime:i,container:a.pageMarginBox,subject:r,center:n,shouldUseTimeDampening:o});return l&&ic(t,l)?l:null},nf=function(e){var t=e.state,r=e.dragStartTime,n=e.shouldUseTimeDampening,i=e.scrollWindow,o=e.scrollDroppable,a=t.current.page.borderBoxCenter,l=t.dimensions.draggables[t.critical.draggable.id],u=l.page.marginBox;if(t.isWindowScrollAllowed){var s=t.viewport,d=FE({dragStartTime:r,viewport:s,subject:u,center:a,shouldUseTimeDampening:n});if(d){i(d);return}}var c=RE({center:a,destination:Qe(t.impact),droppables:t.dimensions.droppables});if(c){var f=zE({dragStartTime:r,droppable:c,subject:u,center:a,shouldUseTimeDampening:n});f&&o(c.descriptor.id,f)}},UE=function(e){var t=e.scrollWindow,r=e.scrollDroppable,n=si(t),i=si(r),o=null,a=function(d){o||P();var c=o,f=c.shouldUseTimeDampening,p=c.dragStartTime;nf({state:d,scrollWindow:n,scrollDroppable:i,dragStartTime:p,shouldUseTimeDampening:f})},l=function(d){o&&P();var c=Date.now(),f=!1,p=function(){f=!0};nf({state:d,dragStartTime:0,shouldUseTimeDampening:!1,scrollWindow:p,scrollDroppable:p}),o={dragStartTime:c,shouldUseTimeDampening:f},f&&a(d)},u=function(){o&&(n.cancel(),i.cancel(),o=null)};return{start:l,stop:u,scroll:a}},jE=function(e){var t=e.move,r=e.scrollDroppable,n=e.scrollWindow,i=function(s,d){var c=Ee(s.current.client.selection,d);t({client:c})},o=function(s,d){if(!ic(s,d))return d;var c=ME(s,d);if(!c)return r(s.descriptor.id,d),null;var f=qe(d,c);r(s.descriptor.id,f);var p=qe(d,f);return p},a=function(s,d,c){if(!s||!nc(d,c))return c;var f=BE(d,c);if(!f)return n(c),null;var p=qe(c,f);n(p);var v=qe(c,p);return v},l=function(s){var d=s.scrollJumpRequest;if(d){var c=Qe(s.impact);c||P();var f=o(s.dimensions.droppables[c],d);if(f){var p=s.viewport,v=a(s.isWindowScrollAllowed,p,f);v&&i(s,v)}}};return l},_E=function(e){var t=e.scrollDroppable,r=e.scrollWindow,n=e.move,i=UE({scrollWindow:r,scrollDroppable:t}),o=jE({move:n,scrollWindow:r,scrollDroppable:t}),a=function(s){if(s.phase==="DRAGGING"){if(s.movementMode==="FLUID"){i.scroll(s);return}s.scrollJumpRequest&&o(s)}},l={scroll:a,start:i.start,stop:i.stop};return l},on="data-rbd",an=function(){var e=on+"-drag-handle";return{base:e,draggableId:e+"-draggable-id",contextId:e+"-context-id"}}(),ku=function(){var e=on+"-draggable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),$E=function(){var e=on+"-droppable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),of={contextId:on+"-scroll-container-context-id"},WE=function(t){return function(r){return"["+r+'="'+t+'"]'}},Dn=function(t,r){return t.map(function(n){var i=n.styles[r];return i?n.selector+" { "+i+" }":""}).join(" ")},HE="pointer-events: none;",GE=function(e){var t=WE(e),r=function(){var l=` + cursor: -webkit-grab; + cursor: grab; + `;return{selector:t(an.contextId),styles:{always:` + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0,0,0,0); + touch-action: manipulation; + `,resting:l,dragging:HE,dropAnimating:l}}}(),n=function(){var l=` + transition: `+Hn.outOfTheWay+`; + `;return{selector:t(ku.contextId),styles:{dragging:l,dropAnimating:l,userCancel:l}}}(),i={selector:t($E.contextId),styles:{always:"overflow-anchor: none;"}},o={selector:"body",styles:{dragging:` + cursor: grabbing; + cursor: -webkit-grabbing; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + overflow-anchor: none; + `}},a=[n,r,i,o];return{always:Dn(a,"always"),resting:Dn(a,"resting"),dragging:Dn(a,"dragging"),dropAnimating:Dn(a,"dropAnimating"),userCancel:Dn(a,"userCancel")}},Ye=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u"?O.useLayoutEffect:O.useEffect,Il=function(){var t=document.querySelector("head");return t||P(),t},af=function(t){var r=document.createElement("style");return t&&r.setAttribute("nonce",t),r.type="text/css",r};function VE(e,t){var r=W(function(){return GE(e)},[e]),n=O.useRef(null),i=O.useRef(null),o=A(ve(function(c){var f=i.current;f||P(),f.textContent=c}),[]),a=A(function(c){var f=n.current;f||P(),f.textContent=c},[]);Ye(function(){!n.current&&!i.current||P();var c=af(t),f=af(t);return n.current=c,i.current=f,c.setAttribute(on+"-always",e),f.setAttribute(on+"-dynamic",e),Il().appendChild(c),Il().appendChild(f),a(r.always),o(r.resting),function(){var p=function(y){var w=y.current;w||P(),Il().removeChild(w),y.current=null};p(n),p(i)}},[t,a,o,r.always,r.resting,e]);var l=A(function(){return o(r.dragging)},[o,r.dragging]),u=A(function(c){if(c==="DROP"){o(r.dropAnimating);return}o(r.userCancel)},[o,r.dropAnimating,r.userCancel]),s=A(function(){i.current&&o(r.resting)},[o,r.resting]),d=W(function(){return{dragging:l,dropping:u,resting:s}},[l,u,s]);return d}var Vg=function(e){return e&&e.ownerDocument?e.ownerDocument.defaultView:window};function La(e){return e instanceof Vg(e).HTMLElement}function qE(e,t){var r="["+an.contextId+'="'+e+'"]',n=vg(document.querySelectorAll(r));if(!n.length)return null;var i=ur(n,function(o){return o.getAttribute(an.draggableId)===t});return!i||!La(i)?null:i}function KE(e){var t=O.useRef({}),r=O.useRef(null),n=O.useRef(null),i=O.useRef(!1),o=A(function(f,p){var v={id:f,focus:p};return t.current[f]=v,function(){var w=t.current,m=w[f];m!==v&&delete w[f]}},[]),a=A(function(f){var p=qE(e,f);p&&p!==document.activeElement&&p.focus()},[e]),l=A(function(f,p){r.current===f&&(r.current=p)},[]),u=A(function(){n.current||i.current&&(n.current=requestAnimationFrame(function(){n.current=null;var f=r.current;f&&a(f)}))},[a]),s=A(function(f){r.current=null;var p=document.activeElement;p&&p.getAttribute(an.draggableId)===f&&(r.current=f)},[]);Ye(function(){return i.current=!0,function(){i.current=!1;var f=n.current;f&&cancelAnimationFrame(f)}},[]);var d=W(function(){return{register:o,tryRecordFocus:s,tryRestoreFocusRecorded:u,tryShiftRecord:l}},[o,s,u,l]);return d}function QE(){var e={draggables:{},droppables:{}},t=[];function r(c){return t.push(c),function(){var p=t.indexOf(c);p!==-1&&t.splice(p,1)}}function n(c){t.length&&t.forEach(function(f){return f(c)})}function i(c){return e.draggables[c]||null}function o(c){var f=i(c);return f||P(),f}var a={register:function(f){e.draggables[f.descriptor.id]=f,n({type:"ADDITION",value:f})},update:function(f,p){var v=e.draggables[p.descriptor.id];v&&v.uniqueId===f.uniqueId&&(delete e.draggables[p.descriptor.id],e.draggables[f.descriptor.id]=f)},unregister:function(f){var p=f.descriptor.id,v=i(p);v&&f.uniqueId===v.uniqueId&&(delete e.draggables[p],n({type:"REMOVAL",value:f}))},getById:o,findById:i,exists:function(f){return!!i(f)},getAllByType:function(f){return Xo(e.draggables).filter(function(p){return p.descriptor.type===f})}};function l(c){return e.droppables[c]||null}function u(c){var f=l(c);return f||P(),f}var s={register:function(f){e.droppables[f.descriptor.id]=f},unregister:function(f){var p=l(f.descriptor.id);p&&f.uniqueId===p.uniqueId&&delete e.droppables[f.descriptor.id]},getById:u,findById:l,exists:function(f){return!!l(f)},getAllByType:function(f){return Xo(e.droppables).filter(function(p){return p.descriptor.type===f})}};function d(){e.draggables={},e.droppables={},t.length=0}return{draggable:a,droppable:s,subscribe:r,clean:d}}function YE(){var e=W(QE,[]);return O.useEffect(function(){return function(){requestAnimationFrame(e.clean)}},[e]),e}var oc=Y.createContext(null),Zo=function(){var e=document.body;return e||P(),e},XE={position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0 0 0 0)","clip-path":"inset(100%)"},JE=function(t){return"rbd-announcement-"+t};function ZE(e){var t=W(function(){return JE(e)},[e]),r=O.useRef(null);O.useEffect(function(){var o=document.createElement("div");return r.current=o,o.id=t,o.setAttribute("aria-live","assertive"),o.setAttribute("aria-atomic","true"),M(o.style,XE),Zo().appendChild(o),function(){setTimeout(function(){var u=Zo();u.contains(o)&&u.removeChild(o),o===r.current&&(r.current=null)})}},[t]);var n=A(function(i){var o=r.current;if(o){o.textContent=i;return}},[]);return n}var ex=0,tx={separator:"::"};function ac(e,t){return t===void 0&&(t=tx),W(function(){return""+e+t.separator+ex++},[t.separator,e])}function rx(e){var t=e.contextId,r=e.uniqueId;return"rbd-hidden-text-"+t+"-"+r}function nx(e){var t=e.contextId,r=e.text,n=ac("hidden-text",{separator:"-"}),i=W(function(){return rx({contextId:t,uniqueId:n})},[n,t]);return O.useEffect(function(){var a=document.createElement("div");return a.id=i,a.textContent=r,a.style.display="none",Zo().appendChild(a),function(){var u=Zo();u.contains(a)&&u.removeChild(a)}},[i,r]),i}var Ba=Y.createContext(null);function qg(e){var t=O.useRef(e);return O.useEffect(function(){t.current=e}),t}function ix(){var e=null;function t(){return!!e}function r(a){return a===e}function n(a){e&&P();var l={abandon:a};return e=l,l}function i(){e||P(),e=null}function o(){e&&(e.abandon(),i())}return{isClaimed:t,isActive:r,claim:n,release:i,tryAbandon:o}}var ox=9,ax=13,lc=27,Kg=32,lx=33,ux=34,sx=35,cx=36,dx=37,fx=38,px=39,vx=40,to,gx=(to={},to[ax]=!0,to[ox]=!0,to),Qg=function(e){gx[e.keyCode]&&e.preventDefault()},Ma=function(){var e="visibilitychange";if(typeof document>"u")return e;var t=[e,"ms"+e,"webkit"+e,"moz"+e,"o"+e],r=ur(t,function(n){return"on"+n in document});return r||e}(),Yg=0,lf=5;function mx(e,t){return Math.abs(t.x-e.x)>=lf||Math.abs(t.y-e.y)>=lf}var uf={type:"IDLE"};function hx(e){var t=e.cancel,r=e.completed,n=e.getPhase,i=e.setPhase;return[{eventName:"mousemove",fn:function(a){var l=a.button,u=a.clientX,s=a.clientY;if(l===Yg){var d={x:u,y:s},c=n();if(c.type==="DRAGGING"){a.preventDefault(),c.actions.move(d);return}c.type!=="PENDING"&&P();var f=c.point;if(mx(f,d)){a.preventDefault();var p=c.actions.fluidLift(d);i({type:"DRAGGING",actions:p})}}}},{eventName:"mouseup",fn:function(a){var l=n();if(l.type!=="DRAGGING"){t();return}a.preventDefault(),l.actions.drop({shouldBlockNextClick:!0}),r()}},{eventName:"mousedown",fn:function(a){n().type==="DRAGGING"&&a.preventDefault(),t()}},{eventName:"keydown",fn:function(a){var l=n();if(l.type==="PENDING"){t();return}if(a.keyCode===lc){a.preventDefault(),t();return}Qg(a)}},{eventName:"resize",fn:t},{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(){n().type==="PENDING"&&t()}},{eventName:"webkitmouseforcedown",fn:function(a){var l=n();if(l.type==="IDLE"&&P(),l.actions.shouldRespectForcePress()){t();return}a.preventDefault()}},{eventName:Ma,fn:t}]}function yx(e){var t=O.useRef(uf),r=O.useRef(Zt),n=W(function(){return{eventName:"mousedown",fn:function(c){if(!c.defaultPrevented&&c.button===Yg&&!(c.ctrlKey||c.metaKey||c.shiftKey||c.altKey)){var f=e.findClosestDraggableId(c);if(f){var p=e.tryGetLock(f,a,{sourceEvent:c});if(p){c.preventDefault();var v={x:c.clientX,y:c.clientY};r.current(),s(p,v)}}}}}},[e]),i=W(function(){return{eventName:"webkitmouseforcewillbegin",fn:function(c){if(!c.defaultPrevented){var f=e.findClosestDraggableId(c);if(f){var p=e.findOptionsForDraggable(f);p&&(p.shouldRespectForcePress||e.canGetLock(f)&&c.preventDefault())}}}}},[e]),o=A(function(){var c={passive:!1,capture:!0};r.current=at(window,[i,n],c)},[i,n]),a=A(function(){var d=t.current;d.type!=="IDLE"&&(t.current=uf,r.current(),o())},[o]),l=A(function(){var d=t.current;a(),d.type==="DRAGGING"&&d.actions.cancel({shouldBlockNextClick:!0}),d.type==="PENDING"&&d.actions.abort()},[a]),u=A(function(){var c={capture:!0,passive:!1},f=hx({cancel:l,completed:a,getPhase:function(){return t.current},setPhase:function(v){t.current=v}});r.current=at(window,f,c)},[l,a]),s=A(function(c,f){t.current.type!=="IDLE"&&P(),t.current={type:"PENDING",point:f,actions:c},u()},[u]);Ye(function(){return o(),function(){r.current()}},[o])}var Tr;function wx(){}var Sx=(Tr={},Tr[ux]=!0,Tr[lx]=!0,Tr[cx]=!0,Tr[sx]=!0,Tr);function Ex(e,t){function r(){t(),e.cancel()}function n(){t(),e.drop()}return[{eventName:"keydown",fn:function(o){if(o.keyCode===lc){o.preventDefault(),r();return}if(o.keyCode===Kg){o.preventDefault(),n();return}if(o.keyCode===vx){o.preventDefault(),e.moveDown();return}if(o.keyCode===fx){o.preventDefault(),e.moveUp();return}if(o.keyCode===px){o.preventDefault(),e.moveRight();return}if(o.keyCode===dx){o.preventDefault(),e.moveLeft();return}if(Sx[o.keyCode]){o.preventDefault();return}Qg(o)}},{eventName:"mousedown",fn:r},{eventName:"mouseup",fn:r},{eventName:"click",fn:r},{eventName:"touchstart",fn:r},{eventName:"resize",fn:r},{eventName:"wheel",fn:r,options:{passive:!0}},{eventName:Ma,fn:r}]}function xx(e){var t=O.useRef(wx),r=W(function(){return{eventName:"keydown",fn:function(o){if(o.defaultPrevented||o.keyCode!==Kg)return;var a=e.findClosestDraggableId(o);if(!a)return;var l=e.tryGetLock(a,d,{sourceEvent:o});if(!l)return;o.preventDefault();var u=!0,s=l.snapLift();t.current();function d(){u||P(),u=!1,t.current(),n()}t.current=at(window,Ex(s,d),{capture:!0,passive:!1})}}},[e]),n=A(function(){var o={passive:!1,capture:!0};t.current=at(window,[r],o)},[r]);Ye(function(){return n(),function(){t.current()}},[n])}var Rl={type:"IDLE"},bx=120,Cx=.15;function Dx(e){var t=e.cancel,r=e.getPhase;return[{eventName:"orientationchange",fn:t},{eventName:"resize",fn:t},{eventName:"contextmenu",fn:function(i){i.preventDefault()}},{eventName:"keydown",fn:function(i){if(r().type!=="DRAGGING"){t();return}i.keyCode===lc&&i.preventDefault(),t()}},{eventName:Ma,fn:t}]}function Px(e){var t=e.cancel,r=e.completed,n=e.getPhase;return[{eventName:"touchmove",options:{capture:!1},fn:function(o){var a=n();if(a.type!=="DRAGGING"){t();return}a.hasMoved=!0;var l=o.touches[0],u=l.clientX,s=l.clientY,d={x:u,y:s};o.preventDefault(),a.actions.move(d)}},{eventName:"touchend",fn:function(o){var a=n();if(a.type!=="DRAGGING"){t();return}o.preventDefault(),a.actions.drop({shouldBlockNextClick:!0}),r()}},{eventName:"touchcancel",fn:function(o){if(n().type!=="DRAGGING"){t();return}o.preventDefault(),t()}},{eventName:"touchforcechange",fn:function(o){var a=n();a.type==="IDLE"&&P();var l=o.touches[0];if(l){var u=l.force>=Cx;if(u){var s=a.actions.shouldRespectForcePress();if(a.type==="PENDING"){s&&t();return}if(s){if(a.hasMoved){o.preventDefault();return}t();return}o.preventDefault()}}}},{eventName:Ma,fn:t}]}function Ix(e){var t=O.useRef(Rl),r=O.useRef(Zt),n=A(function(){return t.current},[]),i=A(function(p){t.current=p},[]),o=W(function(){return{eventName:"touchstart",fn:function(p){if(!p.defaultPrevented){var v=e.findClosestDraggableId(p);if(v){var y=e.tryGetLock(v,l,{sourceEvent:p});if(y){var w=p.touches[0],m=w.clientX,g=w.clientY,h={x:m,y:g};r.current(),c(y,h)}}}}}},[e]),a=A(function(){var p={capture:!0,passive:!1};r.current=at(window,[o],p)},[o]),l=A(function(){var f=t.current;f.type!=="IDLE"&&(f.type==="PENDING"&&clearTimeout(f.longPressTimerId),i(Rl),r.current(),a())},[a,i]),u=A(function(){var f=t.current;l(),f.type==="DRAGGING"&&f.actions.cancel({shouldBlockNextClick:!0}),f.type==="PENDING"&&f.actions.abort()},[l]),s=A(function(){var p={capture:!0,passive:!1},v={cancel:u,completed:l,getPhase:n},y=at(window,Px(v),p),w=at(window,Dx(v),p);r.current=function(){y(),w()}},[u,n,l]),d=A(function(){var p=n();p.type!=="PENDING"&&P();var v=p.actions.fluidLift(p.point);i({type:"DRAGGING",actions:v,hasMoved:!1})},[n,i]),c=A(function(p,v){n().type!=="IDLE"&&P();var y=setTimeout(d,bx);i({type:"PENDING",point:v,actions:p,longPressTimerId:y}),s()},[s,n,i,d]);Ye(function(){return a(),function(){r.current();var v=n();v.type==="PENDING"&&(clearTimeout(v.longPressTimerId),i(Rl))}},[n,a,i]),Ye(function(){var p=at(window,[{eventName:"touchmove",fn:function(){},options:{capture:!1,passive:!1}}]);return p},[])}var Rx={input:!0,button:!0,textarea:!0,select:!0,option:!0,optgroup:!0,video:!0,audio:!0};function Xg(e,t){if(t==null)return!1;var r=!!Rx[t.tagName.toLowerCase()];if(r)return!0;var n=t.getAttribute("contenteditable");return n==="true"||n===""?!0:t===e?!1:Xg(e,t.parentElement)}function Ox(e,t){var r=t.target;return La(r)?Xg(e,r):!1}var Nx=function(e){return gt(e.getBoundingClientRect()).center};function Tx(e){return e instanceof Vg(e).Element}var kx=function(){var e="matches";if(typeof document>"u")return e;var t=[e,"msMatchesSelector","webkitMatchesSelector"],r=ur(t,function(n){return n in Element.prototype});return r||e}();function Jg(e,t){return e==null?null:e[kx](t)?e:Jg(e.parentElement,t)}function Ax(e,t){return e.closest?e.closest(t):Jg(e,t)}function Lx(e){return"["+an.contextId+'="'+e+'"]'}function Bx(e,t){var r=t.target;if(!Tx(r))return null;var n=Lx(e),i=Ax(r,n);return!i||!La(i)?null:i}function Mx(e,t){var r=Bx(e,t);return r?r.getAttribute(an.draggableId):null}function Fx(e,t){var r="["+ku.contextId+'="'+e+'"]',n=vg(document.querySelectorAll(r)),i=ur(n,function(o){return o.getAttribute(ku.id)===t});return!i||!La(i)?null:i}function zx(e){e.preventDefault()}function ro(e){var t=e.expected,r=e.phase,n=e.isLockActive;return e.shouldWarn,!(!n()||t!==r)}function Zg(e){var t=e.lockAPI,r=e.store,n=e.registry,i=e.draggableId;if(t.isClaimed())return!1;var o=n.draggable.findById(i);return!(!o||!o.options.isEnabled||!$g(r.getState(),i))}function Ux(e){var t=e.lockAPI,r=e.contextId,n=e.store,i=e.registry,o=e.draggableId,a=e.forceSensorStop,l=e.sourceEvent,u=Zg({lockAPI:t,store:n,registry:i,draggableId:o});if(!u)return null;var s=i.draggable.getById(o),d=Fx(r,s.descriptor.id);if(!d||l&&!s.options.canDragInteractiveElements&&Ox(d,l))return null;var c=t.claim(a||Zt),f="PRE_DRAG";function p(){return s.options.shouldRespectForcePress}function v(){return t.isActive(c)}function y(b,C){ro({expected:b,phase:f,isLockActive:v,shouldWarn:!0})&&n.dispatch(C())}var w=y.bind(null,"DRAGGING");function m(b){function C(){t.release(),f="COMPLETED"}f!=="PRE_DRAG"&&(C(),f!=="PRE_DRAG"&&P()),n.dispatch(kS(b.liftActionArgs)),f="DRAGGING";function I(k,T){if(T===void 0&&(T={shouldBlockNextClick:!1}),b.cleanup(),T.shouldBlockNextClick){var z=at(window,[{eventName:"click",fn:zx,options:{once:!0,passive:!1,capture:!0}}]);setTimeout(z)}C(),n.dispatch(Bg({reason:k}))}return M({isActive:function(){return ro({expected:"DRAGGING",phase:f,isLockActive:v,shouldWarn:!1})},shouldRespectForcePress:p,drop:function(T){return I("DROP",T)},cancel:function(T){return I("CANCEL",T)}},b.actions)}function g(b){var C=si(function(k){w(function(){return Lg({client:k})})}),I=m({liftActionArgs:{id:o,clientSelection:b,movementMode:"FLUID"},cleanup:function(){return C.cancel()},actions:{move:C}});return M({},I,{move:C})}function h(){var b={moveUp:function(){return w(_S)},moveRight:function(){return w(WS)},moveDown:function(){return w($S)},moveLeft:function(){return w(HS)}};return m({liftActionArgs:{id:o,clientSelection:Nx(d),movementMode:"SNAP"},cleanup:Zt,actions:b})}function S(){var b=ro({expected:"PRE_DRAG",phase:f,isLockActive:v,shouldWarn:!0});b&&t.release()}var x={isActive:function(){return ro({expected:"PRE_DRAG",phase:f,isLockActive:v,shouldWarn:!1})},shouldRespectForcePress:p,fluidLift:g,snapLift:h,abort:S};return x}var jx=[yx,xx,Ix];function _x(e){var t=e.contextId,r=e.store,n=e.registry,i=e.customSensors,o=e.enableDefaultSensors,a=[].concat(o?jx:[],i||[]),l=O.useState(function(){return ix()})[0],u=A(function(g,h){g.isDragging&&!h.isDragging&&l.tryAbandon()},[l]);Ye(function(){var g=r.getState(),h=r.subscribe(function(){var S=r.getState();u(g,S),g=S});return h},[l,r,u]),Ye(function(){return l.tryAbandon},[l.tryAbandon]);for(var s=A(function(m){return Zg({lockAPI:l,registry:n,store:r,draggableId:m})},[l,n,r]),d=A(function(m,g,h){return Ux({lockAPI:l,registry:n,contextId:t,store:r,draggableId:m,forceSensorStop:g,sourceEvent:h&&h.sourceEvent?h.sourceEvent:null})},[t,l,n,r]),c=A(function(m){return Mx(t,m)},[t]),f=A(function(m){var g=n.draggable.findById(m);return g?g.options:null},[n.draggable]),p=A(function(){l.isClaimed()&&(l.tryAbandon(),r.getState().phase!=="IDLE"&&r.dispatch(Xs()))},[l,r]),v=A(l.isClaimed,[l]),y=W(function(){return{canGetLock:s,tryGetLock:d,findClosestDraggableId:c,findOptionsForDraggable:f,tryReleaseLock:p,isLockClaimed:v}},[s,d,c,f,p,v]),w=0;wt=>{const r=B1.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),St=e=>(e=e.toLowerCase(),t=>za(t)===e),Ua=e=>t=>typeof t===e,{isArray:vn}=Array,ln=Ua("undefined");function Ni(e){return e!==null&&!ln(e)&&e.constructor!==null&&!ln(e.constructor)&&$e(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const um=St("ArrayBuffer");function M1(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&um(e.buffer),t}const F1=Ua("string"),$e=Ua("function"),sm=Ua("number"),Ti=e=>e!==null&&typeof e=="object",z1=e=>e===!0||e===!1,wo=e=>{if(za(e)!=="object")return!1;const t=sc(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(lm in e)&&!(Fa in e)},U1=e=>{if(!Ti(e)||Ni(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},j1=St("Date"),_1=St("File"),$1=St("Blob"),W1=St("FileList"),H1=e=>Ti(e)&&$e(e.pipe),G1=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||$e(e.append)&&((t=za(e))==="formdata"||t==="object"&&$e(e.toString)&&e.toString()==="[object FormData]"))},V1=St("URLSearchParams"),[q1,K1,Q1,Y1]=["ReadableStream","Request","Response","Headers"].map(St),X1=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ki(e,t,{allOwnKeys:r=!1}={}){if(e===null||typeof e>"u")return;let n,i;if(typeof e!="object"&&(e=[e]),vn(e))for(n=0,i=e.length;n0;)if(i=r[n],t===i.toLowerCase())return i;return null}const mr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,dm=e=>!ln(e)&&e!==mr;function Lu(){const{caseless:e,skipUndefined:t}=dm(this)&&this||{},r={},n=(i,o)=>{const a=e&&cm(r,o)||o;wo(r[a])&&wo(i)?r[a]=Lu(r[a],i):wo(i)?r[a]=Lu({},i):vn(i)?r[a]=i.slice():(!t||!ln(i))&&(r[a]=i)};for(let i=0,o=arguments.length;i(ki(t,(i,o)=>{r&&$e(i)?Object.defineProperty(e,o,{value:am(i,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,o,{value:i,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:n}),e),Z1=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),eb=(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},tb=(e,t,r,n)=>{let i,o,a;const l={};if(t=t||{},e==null)return t;do{for(i=Object.getOwnPropertyNames(e),o=i.length;o-- >0;)a=i[o],(!n||n(a,e,t))&&!l[a]&&(t[a]=e[a],l[a]=!0);e=r!==!1&&sc(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},rb=(e,t,r)=>{e=String(e),(r===void 0||r>e.length)&&(r=e.length),r-=t.length;const n=e.indexOf(t,r);return n!==-1&&n===r},nb=e=>{if(!e)return null;if(vn(e))return e;let t=e.length;if(!sm(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},ib=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&sc(Uint8Array)),ob=(e,t)=>{const n=(e&&e[Fa]).call(e);let i;for(;(i=n.next())&&!i.done;){const o=i.value;t.call(e,o[0],o[1])}},ab=(e,t)=>{let r;const n=[];for(;(r=e.exec(t))!==null;)n.push(r);return n},lb=St("HTMLFormElement"),ub=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,i){return n.toUpperCase()+i}),vf=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),sb=St("RegExp"),fm=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),n={};ki(r,(i,o)=>{let a;(a=t(i,o,e))!==!1&&(n[o]=a||i)}),Object.defineProperties(e,n)},cb=e=>{fm(e,(t,r)=>{if($e(e)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=e[r];if($e(n)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},db=(e,t)=>{const r={},n=i=>{i.forEach(o=>{r[o]=!0})};return vn(e)?n(e):n(String(e).split(t)),r},fb=()=>{},pb=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function vb(e){return!!(e&&$e(e.append)&&e[lm]==="FormData"&&e[Fa])}const gb=e=>{const t=new Array(10),r=(n,i)=>{if(Ti(n)){if(t.indexOf(n)>=0)return;if(Ni(n))return n;if(!("toJSON"in n)){t[i]=n;const o=vn(n)?[]:{};return ki(n,(a,l)=>{const u=r(a,i+1);!ln(u)&&(o[l]=u)}),t[i]=void 0,o}}return n};return r(e,0)},mb=St("AsyncFunction"),hb=e=>e&&(Ti(e)||$e(e))&&$e(e.then)&&$e(e.catch),pm=((e,t)=>e?setImmediate:t?((r,n)=>(mr.addEventListener("message",({source:i,data:o})=>{i===mr&&o===r&&n.length&&n.shift()()},!1),i=>{n.push(i),mr.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",$e(mr.postMessage)),yb=typeof queueMicrotask<"u"?queueMicrotask.bind(mr):typeof process<"u"&&process.nextTick||pm,wb=e=>e!=null&&$e(e[Fa]),E={isArray:vn,isArrayBuffer:um,isBuffer:Ni,isFormData:G1,isArrayBufferView:M1,isString:F1,isNumber:sm,isBoolean:z1,isObject:Ti,isPlainObject:wo,isEmptyObject:U1,isReadableStream:q1,isRequest:K1,isResponse:Q1,isHeaders:Y1,isUndefined:ln,isDate:j1,isFile:_1,isBlob:$1,isRegExp:sb,isFunction:$e,isStream:H1,isURLSearchParams:V1,isTypedArray:ib,isFileList:W1,forEach:ki,merge:Lu,extend:J1,trim:X1,stripBOM:Z1,inherits:eb,toFlatObject:tb,kindOf:za,kindOfTest:St,endsWith:rb,toArray:nb,forEachEntry:ob,matchAll:ab,isHTMLForm:lb,hasOwnProperty:vf,hasOwnProp:vf,reduceDescriptors:fm,freezeMethods:cb,toObjectSet:db,toCamelCase:ub,noop:fb,toFiniteNumber:pb,findKey:cm,global:mr,isContextDefined:dm,isSpecCompliantForm:vb,toJSONObject:gb,isAsyncFn:mb,isThenable:hb,setImmediate:pm,asap:yb,isIterable:wb};let F=class vm extends Error{static from(t,r,n,i,o,a){const l=new vm(t.message,r||t.code,n,i,o);return l.cause=t,l.name=t.name,a&&Object.assign(l,a),l}constructor(t,r,n,i,o){super(t),this.name="AxiosError",this.isAxiosError=!0,r&&(this.code=r),n&&(this.config=n),i&&(this.request=i),o&&(this.response=o,this.status=o.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:E.toJSONObject(this.config),code:this.code,status:this.status}}};F.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";F.ERR_BAD_OPTION="ERR_BAD_OPTION";F.ECONNABORTED="ECONNABORTED";F.ETIMEDOUT="ETIMEDOUT";F.ERR_NETWORK="ERR_NETWORK";F.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";F.ERR_DEPRECATED="ERR_DEPRECATED";F.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";F.ERR_BAD_REQUEST="ERR_BAD_REQUEST";F.ERR_CANCELED="ERR_CANCELED";F.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";F.ERR_INVALID_URL="ERR_INVALID_URL";const Sb=null;function Bu(e){return E.isPlainObject(e)||E.isArray(e)}function gm(e){return E.endsWith(e,"[]")?e.slice(0,-2):e}function gf(e,t,r){return e?e.concat(t).map(function(i,o){return i=gm(i),!r&&o?"["+i+"]":i}).join(r?".":""):t}function Eb(e){return E.isArray(e)&&!e.some(Bu)}const xb=E.toFlatObject(E,{},null,function(t){return/^is[A-Z]/.test(t)});function ja(e,t,r){if(!E.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,r=E.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,w){return!E.isUndefined(w[y])});const n=r.metaTokens,i=r.visitor||d,o=r.dots,a=r.indexes,u=(r.Blob||typeof Blob<"u"&&Blob)&&E.isSpecCompliantForm(t);if(!E.isFunction(i))throw new TypeError("visitor must be a function");function s(v){if(v===null)return"";if(E.isDate(v))return v.toISOString();if(E.isBoolean(v))return v.toString();if(!u&&E.isBlob(v))throw new F("Blob is not supported. Use a Buffer instead.");return E.isArrayBuffer(v)||E.isTypedArray(v)?u&&typeof Blob=="function"?new Blob([v]):Buffer.from(v):v}function d(v,y,w){let m=v;if(v&&!w&&typeof v=="object"){if(E.endsWith(y,"{}"))y=n?y:y.slice(0,-2),v=JSON.stringify(v);else if(E.isArray(v)&&Eb(v)||(E.isFileList(v)||E.endsWith(y,"[]"))&&(m=E.toArray(v)))return y=gm(y),m.forEach(function(h,S){!(E.isUndefined(h)||h===null)&&t.append(a===!0?gf([y],S,o):a===null?y:y+"[]",s(h))}),!1}return Bu(v)?!0:(t.append(gf(w,y,o),s(v)),!1)}const c=[],f=Object.assign(xb,{defaultVisitor:d,convertValue:s,isVisitable:Bu});function p(v,y){if(!E.isUndefined(v)){if(c.indexOf(v)!==-1)throw Error("Circular reference detected in "+y.join("."));c.push(v),E.forEach(v,function(m,g){(!(E.isUndefined(m)||m===null)&&i.call(t,m,E.isString(g)?g.trim():g,y,f))===!0&&p(m,y?y.concat(g):[g])}),c.pop()}}if(!E.isObject(e))throw new TypeError("data must be an object");return p(e),t}function mf(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(n){return t[n]})}function cc(e,t){this._pairs=[],e&&ja(e,this,t)}const mm=cc.prototype;mm.append=function(t,r){this._pairs.push([t,r])};mm.toString=function(t){const r=t?function(n){return t.call(this,n,mf)}:mf;return this._pairs.map(function(i){return r(i[0])+"="+r(i[1])},"").join("&")};function bb(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function hm(e,t,r){if(!t)return e;const n=r&&r.encode||bb,i=E.isFunction(r)?{serialize:r}:r,o=i&&i.serialize;let a;if(o?a=o(t,i):a=E.isURLSearchParams(t)?t.toString():new cc(t,i).toString(n),a){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class hf{constructor(){this.handlers=[]}use(t,r,n){return this.handlers.push({fulfilled:t,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){E.forEach(this.handlers,function(n){n!==null&&t(n)})}}const ym={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Cb=typeof URLSearchParams<"u"?URLSearchParams:cc,Db=typeof FormData<"u"?FormData:null,Pb=typeof Blob<"u"?Blob:null,Ib={isBrowser:!0,classes:{URLSearchParams:Cb,FormData:Db,Blob:Pb},protocols:["http","https","file","blob","url","data"]},dc=typeof window<"u"&&typeof document<"u",Mu=typeof navigator=="object"&&navigator||void 0,Rb=dc&&(!Mu||["ReactNative","NativeScript","NS"].indexOf(Mu.product)<0),Ob=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Nb=dc&&window.location.href||"http://localhost",Tb=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:dc,hasStandardBrowserEnv:Rb,hasStandardBrowserWebWorkerEnv:Ob,navigator:Mu,origin:Nb},Symbol.toStringTag,{value:"Module"})),Ie={...Tb,...Ib};function kb(e,t){return ja(e,new Ie.classes.URLSearchParams,{visitor:function(r,n,i,o){return Ie.isNode&&E.isBuffer(r)?(this.append(n,r.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function Ab(e){return E.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function Lb(e){const t={},r=Object.keys(e);let n;const i=r.length;let o;for(n=0;n=r.length;return a=!a&&E.isArray(i)?i.length:a,u?(E.hasOwnProp(i,a)?i[a]=[i[a],n]:i[a]=n,!l):((!i[a]||!E.isObject(i[a]))&&(i[a]=[]),t(r,n,i[a],o)&&E.isArray(i[a])&&(i[a]=Lb(i[a])),!l)}if(E.isFormData(e)&&E.isFunction(e.entries)){const r={};return E.forEachEntry(e,(n,i)=>{t(Ab(n),i,r,0)}),r}return null}function Bb(e,t,r){if(E.isString(e))try{return(t||JSON.parse)(e),E.trim(e)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(e)}const Ai={transitional:ym,adapter:["xhr","http","fetch"],transformRequest:[function(t,r){const n=r.getContentType()||"",i=n.indexOf("application/json")>-1,o=E.isObject(t);if(o&&E.isHTMLForm(t)&&(t=new FormData(t)),E.isFormData(t))return i?JSON.stringify(wm(t)):t;if(E.isArrayBuffer(t)||E.isBuffer(t)||E.isStream(t)||E.isFile(t)||E.isBlob(t)||E.isReadableStream(t))return t;if(E.isArrayBufferView(t))return t.buffer;if(E.isURLSearchParams(t))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return kb(t,this.formSerializer).toString();if((l=E.isFileList(t))||n.indexOf("multipart/form-data")>-1){const u=this.env&&this.env.FormData;return ja(l?{"files[]":t}:t,u&&new u,this.formSerializer)}}return o||i?(r.setContentType("application/json",!1),Bb(t)):t}],transformResponse:[function(t){const r=this.transitional||Ai.transitional,n=r&&r.forcedJSONParsing,i=this.responseType==="json";if(E.isResponse(t)||E.isReadableStream(t))return t;if(t&&E.isString(t)&&(n&&!this.responseType||i)){const a=!(r&&r.silentJSONParsing)&&i;try{return JSON.parse(t,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?F.from(l,F.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ie.classes.FormData,Blob:Ie.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};E.forEach(["delete","get","head","post","put","patch"],e=>{Ai.headers[e]={}});const Mb=E.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Fb=e=>{const t={};let r,n,i;return e&&e.split(` +`).forEach(function(a){i=a.indexOf(":"),r=a.substring(0,i).trim().toLowerCase(),n=a.substring(i+1).trim(),!(!r||t[r]&&Mb[r])&&(r==="set-cookie"?t[r]?t[r].push(n):t[r]=[n]:t[r]=t[r]?t[r]+", "+n:n)}),t},yf=Symbol("internals");function In(e){return e&&String(e).trim().toLowerCase()}function So(e){return e===!1||e==null?e:E.isArray(e)?e.map(So):String(e)}function zb(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}const Ub=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Tl(e,t,r,n,i){if(E.isFunction(n))return n.call(this,t,r);if(i&&(t=r),!!E.isString(t)){if(E.isString(n))return t.indexOf(n)!==-1;if(E.isRegExp(n))return n.test(t)}}function jb(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,r,n)=>r.toUpperCase()+n)}function _b(e,t){const r=E.toCamelCase(" "+t);["get","set","has"].forEach(n=>{Object.defineProperty(e,n+r,{value:function(i,o,a){return this[n].call(this,t,i,o,a)},configurable:!0})})}let We=class{constructor(t){t&&this.set(t)}set(t,r,n){const i=this;function o(l,u,s){const d=In(u);if(!d)throw new Error("header name must be a non-empty string");const c=E.findKey(i,d);(!c||i[c]===void 0||s===!0||s===void 0&&i[c]!==!1)&&(i[c||u]=So(l))}const a=(l,u)=>E.forEach(l,(s,d)=>o(s,d,u));if(E.isPlainObject(t)||t instanceof this.constructor)a(t,r);else if(E.isString(t)&&(t=t.trim())&&!Ub(t))a(Fb(t),r);else if(E.isObject(t)&&E.isIterable(t)){let l={},u,s;for(const d of t){if(!E.isArray(d))throw TypeError("Object iterator must return a key-value pair");l[s=d[0]]=(u=l[s])?E.isArray(u)?[...u,d[1]]:[u,d[1]]:d[1]}a(l,r)}else t!=null&&o(r,t,n);return this}get(t,r){if(t=In(t),t){const n=E.findKey(this,t);if(n){const i=this[n];if(!r)return i;if(r===!0)return zb(i);if(E.isFunction(r))return r.call(this,i,n);if(E.isRegExp(r))return r.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,r){if(t=In(t),t){const n=E.findKey(this,t);return!!(n&&this[n]!==void 0&&(!r||Tl(this,this[n],n,r)))}return!1}delete(t,r){const n=this;let i=!1;function o(a){if(a=In(a),a){const l=E.findKey(n,a);l&&(!r||Tl(n,n[l],l,r))&&(delete n[l],i=!0)}}return E.isArray(t)?t.forEach(o):o(t),i}clear(t){const r=Object.keys(this);let n=r.length,i=!1;for(;n--;){const o=r[n];(!t||Tl(this,this[o],o,t,!0))&&(delete this[o],i=!0)}return i}normalize(t){const r=this,n={};return E.forEach(this,(i,o)=>{const a=E.findKey(n,o);if(a){r[a]=So(i),delete r[o];return}const l=t?jb(o):String(o).trim();l!==o&&delete r[o],r[l]=So(i),n[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const r=Object.create(null);return E.forEach(this,(n,i)=>{n!=null&&n!==!1&&(r[i]=t&&E.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,r])=>t+": "+r).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...r){const n=new this(t);return r.forEach(i=>n.set(i)),n}static accessor(t){const n=(this[yf]=this[yf]={accessors:{}}).accessors,i=this.prototype;function o(a){const l=In(a);n[l]||(_b(i,a),n[l]=!0)}return E.isArray(t)?t.forEach(o):o(t),this}};We.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);E.reduceDescriptors(We.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(n){this[r]=n}}});E.freezeMethods(We);function kl(e,t){const r=this||Ai,n=t||r,i=We.from(n.headers);let o=n.data;return E.forEach(e,function(l){o=l.call(r,o,i.normalize(),t?t.status:void 0)}),i.normalize(),o}function Sm(e){return!!(e&&e.__CANCEL__)}let Li=class extends F{constructor(t,r,n){super(t??"canceled",F.ERR_CANCELED,r,n),this.name="CanceledError",this.__CANCEL__=!0}};function Em(e,t,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?e(r):t(new F("Request failed with status code "+r.status,[F.ERR_BAD_REQUEST,F.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function $b(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Wb(e,t){e=e||10;const r=new Array(e),n=new Array(e);let i=0,o=0,a;return t=t!==void 0?t:1e3,function(u){const s=Date.now(),d=n[o];a||(a=s),r[i]=u,n[i]=s;let c=o,f=0;for(;c!==i;)f+=r[c++],c=c%e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),s-a{r=d,i=null,o&&(clearTimeout(o),o=null),e(...s)};return[(...s)=>{const d=Date.now(),c=d-r;c>=n?a(s,d):(i=s,o||(o=setTimeout(()=>{o=null,a(i)},n-c)))},()=>i&&a(i)]}const ta=(e,t,r=3)=>{let n=0;const i=Wb(50,250);return Hb(o=>{const a=o.loaded,l=o.lengthComputable?o.total:void 0,u=a-n,s=i(u),d=a<=l;n=a;const c={loaded:a,total:l,progress:l?a/l:void 0,bytes:u,rate:s||void 0,estimated:s&&l&&d?(l-a)/s:void 0,event:o,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(c)},r)},wf=(e,t)=>{const r=e!=null;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},Sf=e=>(...t)=>E.asap(()=>e(...t)),Gb=Ie.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,Ie.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(Ie.origin),Ie.navigator&&/(msie|trident)/i.test(Ie.navigator.userAgent)):()=>!0,Vb=Ie.hasStandardBrowserEnv?{write(e,t,r,n,i,o,a){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(t)}`];E.isNumber(r)&&l.push(`expires=${new Date(r).toUTCString()}`),E.isString(n)&&l.push(`path=${n}`),E.isString(i)&&l.push(`domain=${i}`),o===!0&&l.push("secure"),E.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function qb(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Kb(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function xm(e,t,r){let n=!qb(t);return e&&(n||r==!1)?Kb(e,t):t}const Ef=e=>e instanceof We?{...e}:e;function Pr(e,t){t=t||{};const r={};function n(s,d,c,f){return E.isPlainObject(s)&&E.isPlainObject(d)?E.merge.call({caseless:f},s,d):E.isPlainObject(d)?E.merge({},d):E.isArray(d)?d.slice():d}function i(s,d,c,f){if(E.isUndefined(d)){if(!E.isUndefined(s))return n(void 0,s,c,f)}else return n(s,d,c,f)}function o(s,d){if(!E.isUndefined(d))return n(void 0,d)}function a(s,d){if(E.isUndefined(d)){if(!E.isUndefined(s))return n(void 0,s)}else return n(void 0,d)}function l(s,d,c){if(c in t)return n(s,d);if(c in e)return n(void 0,s)}const u={url:o,method:o,data:o,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(s,d,c)=>i(Ef(s),Ef(d),c,!0)};return E.forEach(Object.keys({...e,...t}),function(d){const c=u[d]||i,f=c(e[d],t[d],d);E.isUndefined(f)&&c!==l||(r[d]=f)}),r}const bm=e=>{const t=Pr({},e);let{data:r,withXSRFToken:n,xsrfHeaderName:i,xsrfCookieName:o,headers:a,auth:l}=t;if(t.headers=a=We.from(a),t.url=hm(xm(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),E.isFormData(r)){if(Ie.hasStandardBrowserEnv||Ie.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(E.isFunction(r.getHeaders)){const u=r.getHeaders(),s=["content-type","content-length"];Object.entries(u).forEach(([d,c])=>{s.includes(d.toLowerCase())&&a.set(d,c)})}}if(Ie.hasStandardBrowserEnv&&(n&&E.isFunction(n)&&(n=n(t)),n||n!==!1&&Gb(t.url))){const u=i&&o&&Vb.read(o);u&&a.set(i,u)}return t},Qb=typeof XMLHttpRequest<"u",Yb=Qb&&function(e){return new Promise(function(r,n){const i=bm(e);let o=i.data;const a=We.from(i.headers).normalize();let{responseType:l,onUploadProgress:u,onDownloadProgress:s}=i,d,c,f,p,v;function y(){p&&p(),v&&v(),i.cancelToken&&i.cancelToken.unsubscribe(d),i.signal&&i.signal.removeEventListener("abort",d)}let w=new XMLHttpRequest;w.open(i.method.toUpperCase(),i.url,!0),w.timeout=i.timeout;function m(){if(!w)return;const h=We.from("getAllResponseHeaders"in w&&w.getAllResponseHeaders()),x={data:!l||l==="text"||l==="json"?w.responseText:w.response,status:w.status,statusText:w.statusText,headers:h,config:e,request:w};Em(function(C){r(C),y()},function(C){n(C),y()},x),w=null}"onloadend"in w?w.onloadend=m:w.onreadystatechange=function(){!w||w.readyState!==4||w.status===0&&!(w.responseURL&&w.responseURL.indexOf("file:")===0)||setTimeout(m)},w.onabort=function(){w&&(n(new F("Request aborted",F.ECONNABORTED,e,w)),w=null)},w.onerror=function(S){const x=S&&S.message?S.message:"Network Error",b=new F(x,F.ERR_NETWORK,e,w);b.event=S||null,n(b),w=null},w.ontimeout=function(){let S=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const x=i.transitional||ym;i.timeoutErrorMessage&&(S=i.timeoutErrorMessage),n(new F(S,x.clarifyTimeoutError?F.ETIMEDOUT:F.ECONNABORTED,e,w)),w=null},o===void 0&&a.setContentType(null),"setRequestHeader"in w&&E.forEach(a.toJSON(),function(S,x){w.setRequestHeader(x,S)}),E.isUndefined(i.withCredentials)||(w.withCredentials=!!i.withCredentials),l&&l!=="json"&&(w.responseType=i.responseType),s&&([f,v]=ta(s,!0),w.addEventListener("progress",f)),u&&w.upload&&([c,p]=ta(u),w.upload.addEventListener("progress",c),w.upload.addEventListener("loadend",p)),(i.cancelToken||i.signal)&&(d=h=>{w&&(n(!h||h.type?new Li(null,e,w):h),w.abort(),w=null)},i.cancelToken&&i.cancelToken.subscribe(d),i.signal&&(i.signal.aborted?d():i.signal.addEventListener("abort",d)));const g=$b(i.url);if(g&&Ie.protocols.indexOf(g)===-1){n(new F("Unsupported protocol "+g+":",F.ERR_BAD_REQUEST,e));return}w.send(o||null)})},Xb=(e,t)=>{const{length:r}=e=e?e.filter(Boolean):[];if(t||r){let n=new AbortController,i;const o=function(s){if(!i){i=!0,l();const d=s instanceof Error?s:this.reason;n.abort(d instanceof F?d:new Li(d instanceof Error?d.message:d))}};let a=t&&setTimeout(()=>{a=null,o(new F(`timeout of ${t}ms exceeded`,F.ETIMEDOUT))},t);const l=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(s=>{s.unsubscribe?s.unsubscribe(o):s.removeEventListener("abort",o)}),e=null)};e.forEach(s=>s.addEventListener("abort",o));const{signal:u}=n;return u.unsubscribe=()=>E.asap(l),u}},Jb=function*(e,t){let r=e.byteLength;if(r{const i=Zb(e,t);let o=0,a,l=u=>{a||(a=!0,n&&n(u))};return new ReadableStream({async pull(u){try{const{done:s,value:d}=await i.next();if(s){l(),u.close();return}let c=d.byteLength;if(r){let f=o+=c;r(f)}u.enqueue(new Uint8Array(d))}catch(s){throw l(s),s}},cancel(u){return l(u),i.return()}},{highWaterMark:2})},bf=64*1024,{isFunction:io}=E,tC=(({Request:e,Response:t})=>({Request:e,Response:t}))(E.global),{ReadableStream:Cf,TextEncoder:Df}=E.global,Pf=(e,...t)=>{try{return!!e(...t)}catch{return!1}},rC=e=>{e=E.merge.call({skipUndefined:!0},tC,e);const{fetch:t,Request:r,Response:n}=e,i=t?io(t):typeof fetch=="function",o=io(r),a=io(n);if(!i)return!1;const l=i&&io(Cf),u=i&&(typeof Df=="function"?(v=>y=>v.encode(y))(new Df):async v=>new Uint8Array(await new r(v).arrayBuffer())),s=o&&l&&Pf(()=>{let v=!1;const y=new r(Ie.origin,{body:new Cf,method:"POST",get duplex(){return v=!0,"half"}}).headers.has("Content-Type");return v&&!y}),d=a&&l&&Pf(()=>E.isReadableStream(new n("").body)),c={stream:d&&(v=>v.body)};i&&["text","arrayBuffer","blob","formData","stream"].forEach(v=>{!c[v]&&(c[v]=(y,w)=>{let m=y&&y[v];if(m)return m.call(y);throw new F(`Response type '${v}' is not supported`,F.ERR_NOT_SUPPORT,w)})});const f=async v=>{if(v==null)return 0;if(E.isBlob(v))return v.size;if(E.isSpecCompliantForm(v))return(await new r(Ie.origin,{method:"POST",body:v}).arrayBuffer()).byteLength;if(E.isArrayBufferView(v)||E.isArrayBuffer(v))return v.byteLength;if(E.isURLSearchParams(v)&&(v=v+""),E.isString(v))return(await u(v)).byteLength},p=async(v,y)=>{const w=E.toFiniteNumber(v.getContentLength());return w??f(y)};return async v=>{let{url:y,method:w,data:m,signal:g,cancelToken:h,timeout:S,onDownloadProgress:x,onUploadProgress:b,responseType:C,headers:I,withCredentials:k="same-origin",fetchOptions:T}=bm(v),z=t||fetch;C=C?(C+"").toLowerCase():"text";let re=Xb([g,h&&h.toAbortSignal()],S),ee=null;const G=re&&re.unsubscribe&&(()=>{re.unsubscribe()});let he;try{if(b&&s&&w!=="get"&&w!=="head"&&(he=await p(I,m))!==0){let _=new r(y,{method:"POST",body:m,duplex:"half"}),j;if(E.isFormData(m)&&(j=_.headers.get("content-type"))&&I.setContentType(j),_.body){const[Be,ye]=wf(he,ta(Sf(b)));m=xf(_.body,bf,Be,ye)}}E.isString(k)||(k=k?"include":"omit");const K=o&&"credentials"in r.prototype,He={...T,signal:re,method:w.toUpperCase(),headers:I.normalize().toJSON(),body:m,duplex:"half",credentials:K?k:void 0};ee=o&&new r(y,He);let R=await(o?z(ee,T):z(y,He));const B=d&&(C==="stream"||C==="response");if(d&&(x||B&&G)){const _={};["status","statusText","headers"].forEach(Oe=>{_[Oe]=R[Oe]});const j=E.toFiniteNumber(R.headers.get("content-length")),[Be,ye]=x&&wf(j,ta(Sf(x),!0))||[];R=new n(xf(R.body,bf,Be,()=>{ye&&ye(),G&&G()}),_)}C=C||"text";let L=await c[E.findKey(c,C)||"text"](R,v);return!B&&G&&G(),await new Promise((_,j)=>{Em(_,j,{data:L,headers:We.from(R.headers),status:R.status,statusText:R.statusText,config:v,request:ee})})}catch(K){throw G&&G(),K&&K.name==="TypeError"&&/Load failed|fetch/i.test(K.message)?Object.assign(new F("Network Error",F.ERR_NETWORK,v,ee),{cause:K.cause||K}):F.from(K,K&&K.code,v,ee)}}},nC=new Map,Cm=e=>{let t=e&&e.env||{};const{fetch:r,Request:n,Response:i}=t,o=[n,i,r];let a=o.length,l=a,u,s,d=nC;for(;l--;)u=o[l],s=d.get(u),s===void 0&&d.set(u,s=l?new Map:rC(t)),d=s;return s};Cm();const fc={http:Sb,xhr:Yb,fetch:{get:Cm}};E.forEach(fc,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const If=e=>`- ${e}`,iC=e=>E.isFunction(e)||e===null||e===!1;function oC(e,t){e=E.isArray(e)?e:[e];const{length:r}=e;let n,i;const o={};for(let a=0;a`adapter ${u} `+(s===!1?"is not supported by the environment":"is not available in the build"));let l=r?a.length>1?`since : +`+a.map(If).join(` +`):" "+If(a[0]):"as no adapter specified";throw new F("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return i}const Dm={getAdapter:oC,adapters:fc};function Al(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Li(null,e)}function Rf(e){return Al(e),e.headers=We.from(e.headers),e.data=kl.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Dm.getAdapter(e.adapter||Ai.adapter,e)(e).then(function(n){return Al(e),n.data=kl.call(e,e.transformResponse,n),n.headers=We.from(n.headers),n},function(n){return Sm(n)||(Al(e),n&&n.response&&(n.response.data=kl.call(e,e.transformResponse,n.response),n.response.headers=We.from(n.response.headers))),Promise.reject(n)})}const Pm="1.13.4",_a={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{_a[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const Of={};_a.transitional=function(t,r,n){function i(o,a){return"[Axios v"+Pm+"] Transitional option '"+o+"'"+a+(n?". "+n:"")}return(o,a,l)=>{if(t===!1)throw new F(i(a," has been removed"+(r?" in "+r:"")),F.ERR_DEPRECATED);return r&&!Of[a]&&(Of[a]=!0,console.warn(i(a," has been deprecated since v"+r+" and will be removed in the near future"))),t?t(o,a,l):!0}};_a.spelling=function(t){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${t}`),!0)};function aC(e,t,r){if(typeof e!="object")throw new F("options must be an object",F.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let i=n.length;for(;i-- >0;){const o=n[i],a=t[o];if(a){const l=e[o],u=l===void 0||a(l,o,e);if(u!==!0)throw new F("option "+o+" must be "+u,F.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new F("Unknown option "+o,F.ERR_BAD_OPTION)}}const Eo={assertOptions:aC,validators:_a},xt=Eo.validators;let wr=class{constructor(t){this.defaults=t||{},this.interceptors={request:new hf,response:new hf}}async request(t,r){try{return await this._request(t,r)}catch(n){if(n instanceof Error){let i={};Error.captureStackTrace?Error.captureStackTrace(i):i=new Error;const o=i.stack?i.stack.replace(/^.+\n/,""):"";try{n.stack?o&&!String(n.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(n.stack+=` +`+o):n.stack=o}catch{}}throw n}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=Pr(this.defaults,r);const{transitional:n,paramsSerializer:i,headers:o}=r;n!==void 0&&Eo.assertOptions(n,{silentJSONParsing:xt.transitional(xt.boolean),forcedJSONParsing:xt.transitional(xt.boolean),clarifyTimeoutError:xt.transitional(xt.boolean)},!1),i!=null&&(E.isFunction(i)?r.paramsSerializer={serialize:i}:Eo.assertOptions(i,{encode:xt.function,serialize:xt.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Eo.assertOptions(r,{baseUrl:xt.spelling("baseURL"),withXsrfToken:xt.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let a=o&&E.merge(o.common,o[r.method]);o&&E.forEach(["delete","get","head","post","put","patch","common"],v=>{delete o[v]}),r.headers=We.concat(a,o);const l=[];let u=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(r)===!1||(u=u&&y.synchronous,l.unshift(y.fulfilled,y.rejected))});const s=[];this.interceptors.response.forEach(function(y){s.push(y.fulfilled,y.rejected)});let d,c=0,f;if(!u){const v=[Rf.bind(this),void 0];for(v.unshift(...l),v.push(...s),f=v.length,d=Promise.resolve(r);c{if(!n._listeners)return;let o=n._listeners.length;for(;o-- >0;)n._listeners[o](i);n._listeners=null}),this.promise.then=i=>{let o;const a=new Promise(l=>{n.subscribe(l),o=l}).then(i);return a.cancel=function(){n.unsubscribe(o)},a},t(function(o,a,l){n.reason||(n.reason=new Li(o,a,l),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const t=new AbortController,r=n=>{t.abort(n)};return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new Im(function(i){t=i}),cancel:t}}};function uC(e){return function(r){return e.apply(null,r)}}function sC(e){return E.isObject(e)&&e.isAxiosError===!0}const Fu={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Fu).forEach(([e,t])=>{Fu[t]=e});function Rm(e){const t=new wr(e),r=am(wr.prototype.request,t);return E.extend(r,wr.prototype,t,{allOwnKeys:!0}),E.extend(r,t,null,{allOwnKeys:!0}),r.create=function(i){return Rm(Pr(e,i))},r}const ue=Rm(Ai);ue.Axios=wr;ue.CanceledError=Li;ue.CancelToken=lC;ue.isCancel=Sm;ue.VERSION=Pm;ue.toFormData=ja;ue.AxiosError=F;ue.Cancel=ue.CanceledError;ue.all=function(t){return Promise.all(t)};ue.spread=uC;ue.isAxiosError=sC;ue.mergeConfig=Pr;ue.AxiosHeaders=We;ue.formToJSON=e=>wm(E.isHTMLForm(e)?new FormData(e):e);ue.getAdapter=Dm.getAdapter;ue.HttpStatusCode=Fu;ue.default=ue;const{Axios:hC,AxiosError:yC,CanceledError:wC,isCancel:SC,CancelToken:EC,VERSION:xC,all:bC,Cancel:CC,isAxiosError:DC,spread:PC,toFormData:IC,AxiosHeaders:RC,HttpStatusCode:OC,formToJSON:NC,getAdapter:TC,mergeConfig:kC}=ue,cC="/api/focustasks",Rn=ue.create({baseURL:cC,headers:{"Content-Type":"application/json"}}),On={getTasks:async()=>{const{data:e}=await Rn.get("");return e},createTask:async e=>{const{data:t}=await Rn.post("",e);return t},updateTask:async(e,t)=>{const{data:r}=await Rn.put(`/${e}`,t);return r},deleteTask:async e=>{await Rn.delete(`/${e}`)},reorderTasks:async e=>{const{data:t}=await Rn.put("/reorder",{orders:e});return t}},dC=({task:e,onUpdate:t,onDelete:r})=>{const[n,i]=O.useState(!1),[o,a]=O.useState(e.title),[l,u]=O.useState(e.description||""),s=()=>{o.trim()&&(t(o,l),i(!1))},d=()=>{a(e.title),u(e.description||""),i(!1)};return n?U.jsx("div",{className:"task-card editing",children:U.jsxs("div",{className:"edit-form",children:[U.jsx("input",{type:"text",value:o,onChange:c=>a(c.target.value),className:"edit-input",autoFocus:!0}),U.jsx("textarea",{value:l,onChange:c=>u(c.target.value),className:"edit-textarea",rows:3}),U.jsxs("div",{className:"edit-actions",children:[U.jsx("button",{className:"btn-save",onClick:s,children:"✓ Speichern"}),U.jsx("button",{className:"btn-cancel",onClick:d,children:"✗ Abbrechen"})]})]})}):U.jsxs("div",{className:"task-card",children:[U.jsx("div",{className:"task-handle",children:"⋮⋮"}),U.jsxs("div",{className:"task-content",children:[U.jsx("h3",{className:"task-title",children:e.title}),e.description&&U.jsx("p",{className:"task-description",children:e.description}),U.jsx("div",{className:"task-meta",children:U.jsx("span",{className:"task-date",children:new Date(e.updatedAt).toLocaleDateString("de-DE",{year:"numeric",month:"short",day:"numeric"})})})]}),U.jsxs("div",{className:"task-actions",children:[U.jsx("button",{className:"btn-edit",onClick:()=>i(!0),title:"Bearbeiten",children:"✎"}),U.jsx("button",{className:"btn-delete",onClick:r,title:"Löschen",children:"✕"})]})]})},fC=({onAdd:e})=>{const[t,r]=O.useState(""),[n,i]=O.useState(""),[o,a]=O.useState(!1),l=u=>{u.preventDefault(),t.trim()&&(e(t,n),r(""),i(""),a(!1))};return U.jsxs("form",{className:"task-form",onSubmit:l,children:[U.jsx("input",{type:"text",placeholder:"Neuen Fokus-Task hinzufügen...",value:t,onChange:u=>r(u.target.value),onFocus:()=>a(!0),className:"task-input"}),o&&U.jsxs("div",{className:"form-expanded",children:[U.jsx("textarea",{placeholder:"Optionale Notiz (z.B. Gedanken, Checkliste, Status)",value:n,onChange:u=>i(u.target.value),className:"description-input",rows:3}),U.jsxs("div",{className:"form-actions",children:[U.jsx("button",{type:"submit",className:"btn btn-primary",children:"➕ Hinzufügen"}),U.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>{a(!1),i("")},children:"Abbrechen"})]})]})]})},pC=()=>{const[e,t]=O.useState([]),[r,n]=O.useState(!0),[i,o]=O.useState(null);O.useEffect(()=>{a()},[]);const a=async()=>{try{n(!0);const c=await On.getTasks();t(c),o(null)}catch(c){o("Failed to load tasks"),console.error(c)}finally{n(!1)}},l=async(c,f)=>{try{const p=await On.createTask({title:c,description:f});t([p,...e])}catch(p){o("Failed to create task"),console.error(p)}},u=async(c,f,p)=>{try{const v=await On.updateTask(c,{title:f,description:p});t(e.map(y=>y.id===c?v:y))}catch(v){o("Failed to update task"),console.error(v)}},s=async c=>{try{await On.deleteTask(c),t(e.filter(f=>f.id!==c))}catch(f){o("Failed to delete task"),console.error(f)}},d=async c=>{const{source:f,destination:p}=c;if(!p||f.index===p.index)return;const v=Array.from(e),[y]=v.splice(f.index,1);v.splice(p.index,0,y),t(v);try{const w=v.map((m,g)=>({id:m.id,order:g+1}));await On.reorderTasks(w)}catch(w){o("Failed to reorder tasks"),console.error(w),a()}};return U.jsx("div",{className:"app",children:U.jsxs("div",{className:"container",children:[U.jsxs("header",{className:"header",children:[U.jsx("h1",{children:"🎯 Focus Tasks"}),U.jsx("p",{children:"Deine aktiven Schwerpunkte für die nächsten 2-3 Wochen"})]}),i&&U.jsx("div",{className:"error-message",children:i}),U.jsx(fC,{onAdd:l}),r?U.jsx("div",{className:"loading",children:"Lade Tasks..."}):e.length===0?U.jsx("div",{className:"empty-state",children:U.jsx("p",{children:"Keine Tasks vorhanden. Füge einen neuen Task hinzu!"})}):U.jsx(Vx,{onDragEnd:d,children:U.jsx(om,{droppableId:"tasks",children:(c,f)=>U.jsxs("div",{className:`tasks-list ${f.isDraggingOver?"dragging":""}`,...c.droppableProps,ref:c.innerRef,children:[e.map((p,v)=>U.jsx(O1,{draggableId:p.id.toString(),index:v,children:(y,w)=>U.jsx("div",{ref:y.innerRef,...y.draggableProps,...y.dragHandleProps,className:w.isDragging?"dragging":"",children:U.jsx(dC,{task:p,onUpdate:(m,g)=>u(p.id,m,g),onDelete:()=>s(p.id)})})},p.id)),c.placeholder]})})})]})})};Ll.createRoot(document.getElementById("root")).render(U.jsx(Y.StrictMode,{children:U.jsx(pC,{})})); diff --git a/client/build/assets/index-DjQQ8_vC.css b/client/build/assets/index-DjQQ8_vC.css new file mode 100644 index 0000000..82b91ca --- /dev/null +++ b/client/build/assets/index-DjQQ8_vC.css @@ -0,0 +1 @@ +:root{--color-white: rgba(255, 255, 255, 1);--color-black: rgba(0, 0, 0, 1);--color-cream-50: rgba(252, 252, 249, 1);--color-cream-100: rgba(255, 255, 253, 1);--color-gray-200: rgba(245, 245, 245, 1);--color-gray-300: rgba(167, 169, 169, 1);--color-gray-400: rgba(119, 124, 124, 1);--color-slate-500: rgba(98, 108, 113, 1);--color-brown-600: rgba(94, 82, 64, 1);--color-charcoal-700: rgba(31, 33, 33, 1);--color-charcoal-800: rgba(38, 40, 40, 1);--color-slate-900: rgba(19, 52, 59, 1);--color-teal-300: rgba(50, 184, 198, 1);--color-teal-400: rgba(45, 166, 178, 1);--color-teal-500: rgba(33, 128, 141, 1);--color-teal-600: rgba(29, 116, 128, 1);--color-teal-700: rgba(26, 104, 115, 1);--color-teal-800: rgba(41, 150, 161, 1);--color-red-400: rgba(255, 84, 89, 1);--color-red-500: rgba(192, 21, 47, 1);--color-orange-400: rgba(230, 129, 97, 1);--color-orange-500: rgba(168, 75, 47, 1);--color-brown-600-rgb: 94, 82, 64;--color-teal-500-rgb: 33, 128, 141;--color-slate-900-rgb: 19, 52, 59;--color-slate-500-rgb: 98, 108, 113;--color-red-500-rgb: 192, 21, 47;--color-red-400-rgb: 255, 84, 89;--color-orange-500-rgb: 168, 75, 47;--color-orange-400-rgb: 230, 129, 97;--color-bg-1: rgba(59, 130, 246, .08);--color-bg-2: rgba(245, 158, 11, .08);--color-bg-3: rgba(34, 197, 94, .08);--color-bg-4: rgba(239, 68, 68, .08);--color-bg-5: rgba(147, 51, 234, .08);--color-bg-6: rgba(249, 115, 22, .08);--color-bg-7: rgba(236, 72, 153, .08);--color-bg-8: rgba(6, 182, 212, .08);--color-background: var(--color-cream-50);--color-surface: var(--color-cream-100);--color-text: var(--color-slate-900);--color-text-secondary: var(--color-slate-500);--color-primary: var(--color-teal-500);--color-primary-hover: var(--color-teal-600);--color-primary-active: var(--color-teal-700);--color-secondary: rgba(var(--color-brown-600-rgb), .12);--color-secondary-hover: rgba(var(--color-brown-600-rgb), .2);--color-secondary-active: rgba(var(--color-brown-600-rgb), .25);--color-border: rgba(var(--color-brown-600-rgb), .2);--color-btn-primary-text: var(--color-cream-50);--color-card-border: rgba(var(--color-brown-600-rgb), .12);--color-card-border-inner: rgba(var(--color-brown-600-rgb), .12);--color-error: var(--color-red-500);--color-success: var(--color-teal-500);--color-warning: var(--color-orange-500);--color-info: var(--color-slate-500);--color-focus-ring: rgba(var(--color-teal-500-rgb), .4);--color-select-caret: rgba(var(--color-slate-900-rgb), .8);--focus-ring: 0 0 0 3px var(--color-focus-ring);--focus-outline: 2px solid var(--color-primary);--status-bg-opacity: .15;--status-border-opacity: .25;--select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--color-success-rgb: 33, 128, 141;--color-error-rgb: 192, 21, 47;--color-warning-rgb: 168, 75, 47;--color-info-rgb: 98, 108, 113;--font-family-base: "FKGroteskNeue", "Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-mono: "Berkeley Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--font-size-4xl: 30px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 550;--font-weight-bold: 600;--line-height-tight: 1.2;--line-height-normal: 1.5;--letter-spacing-tight: -.01em;--space-0: 0;--space-1: 1px;--space-2: 2px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-10: 10px;--space-12: 12px;--space-16: 16px;--space-20: 20px;--space-24: 24px;--space-32: 32px;--radius-sm: 6px;--radius-base: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .02);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .02);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .04), 0 2px 4px -1px rgba(0, 0, 0, .02);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .04), 0 4px 6px -2px rgba(0, 0, 0, .02);--shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, .15), inset 0 -1px 0 rgba(0, 0, 0, .03);--duration-fast: .15s;--duration-normal: .25s;--ease-standard: cubic-bezier(.16, 1, .3, 1);--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1280px}@media (prefers-color-scheme: dark){:root{--color-gray-400-rgb: 119, 124, 124;--color-teal-300-rgb: 50, 184, 198;--color-gray-300-rgb: 167, 169, 169;--color-gray-200-rgb: 245, 245, 245;--color-bg-1: rgba(29, 78, 216, .15);--color-bg-2: rgba(180, 83, 9, .15);--color-bg-3: rgba(21, 128, 61, .15);--color-bg-4: rgba(185, 28, 28, .15);--color-bg-5: rgba(107, 33, 168, .15);--color-bg-6: rgba(194, 65, 12, .15);--color-bg-7: rgba(190, 24, 93, .15);--color-bg-8: rgba(8, 145, 178, .15);--color-background: var(--color-charcoal-700);--color-surface: var(--color-charcoal-800);--color-text: var(--color-gray-200);--color-text-secondary: rgba(var(--color-gray-300-rgb), .7);--color-primary: var(--color-teal-300);--color-primary-hover: var(--color-teal-400);--color-primary-active: var(--color-teal-800);--color-secondary: rgba(var(--color-gray-400-rgb), .15);--color-secondary-hover: rgba(var(--color-gray-400-rgb), .25);--color-secondary-active: rgba(var(--color-gray-400-rgb), .3);--color-border: rgba(var(--color-gray-400-rgb), .3);--color-error: var(--color-red-400);--color-success: var(--color-teal-300);--color-warning: var(--color-orange-400);--color-info: var(--color-gray-300);--color-focus-ring: rgba(var(--color-teal-300-rgb), .4);--color-btn-primary-text: var(--color-slate-900);--color-card-border: rgba(var(--color-gray-400-rgb), .2);--color-card-border-inner: rgba(var(--color-gray-400-rgb), .15);--shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, .1), inset 0 -1px 0 rgba(0, 0, 0, .15);--button-border-secondary: rgba(var(--color-gray-400-rgb), .2);--color-border-secondary: rgba(var(--color-gray-400-rgb), .2);--color-select-caret: rgba(var(--color-gray-200-rgb), .8);--focus-ring: 0 0 0 3px var(--color-focus-ring);--focus-outline: 2px solid var(--color-primary);--status-bg-opacity: .15;--status-border-opacity: .25;--select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--color-success-rgb: var(--color-teal-300-rgb);--color-error-rgb: var(--color-red-400-rgb);--color-warning-rgb: var(--color-orange-400-rgb);--color-info-rgb: var(--color-gray-300-rgb)}}[data-color-scheme=dark]{--color-gray-400-rgb: 119, 124, 124;--color-teal-300-rgb: 50, 184, 198;--color-gray-300-rgb: 167, 169, 169;--color-gray-200-rgb: 245, 245, 245;--color-bg-1: rgba(29, 78, 216, .15);--color-bg-2: rgba(180, 83, 9, .15);--color-bg-3: rgba(21, 128, 61, .15);--color-bg-4: rgba(185, 28, 28, .15);--color-bg-5: rgba(107, 33, 168, .15);--color-bg-6: rgba(194, 65, 12, .15);--color-bg-7: rgba(190, 24, 93, .15);--color-bg-8: rgba(8, 145, 178, .15);--color-background: var(--color-charcoal-700);--color-surface: var(--color-charcoal-800);--color-text: var(--color-gray-200);--color-text-secondary: rgba(var(--color-gray-300-rgb), .7);--color-primary: var(--color-teal-300);--color-primary-hover: var(--color-teal-400);--color-primary-active: var(--color-teal-800);--color-secondary: rgba(var(--color-gray-400-rgb), .15);--color-secondary-hover: rgba(var(--color-gray-400-rgb), .25);--color-secondary-active: rgba(var(--color-gray-400-rgb), .3);--color-border: rgba(var(--color-gray-400-rgb), .3);--color-error: var(--color-red-400);--color-success: var(--color-teal-300);--color-warning: var(--color-orange-400);--color-info: var(--color-gray-300);--color-focus-ring: rgba(var(--color-teal-300-rgb), .4);--color-btn-primary-text: var(--color-slate-900);--color-card-border: rgba(var(--color-gray-400-rgb), .15);--color-card-border-inner: rgba(var(--color-gray-400-rgb), .15);--shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, .1), inset 0 -1px 0 rgba(0, 0, 0, .15);--color-border-secondary: rgba(var(--color-gray-400-rgb), .2);--color-select-caret: rgba(var(--color-gray-200-rgb), .8);--focus-ring: 0 0 0 3px var(--color-focus-ring);--focus-outline: 2px solid var(--color-primary);--status-bg-opacity: .15;--status-border-opacity: .25;--select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--color-success-rgb: var(--color-teal-300-rgb);--color-error-rgb: var(--color-red-400-rgb);--color-warning-rgb: var(--color-orange-400-rgb);--color-info-rgb: var(--color-gray-300-rgb)}@font-face{font-family:FKGroteskNeue;src:url(https://r2cdn.perplexity.ai/fonts/FKGroteskNeue.woff2) format("woff2")}.task-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-16);margin-bottom:var(--space-12);display:flex;gap:var(--space-12);align-items:flex-start;box-shadow:var(--shadow-sm);border:1px solid var(--color-card-border);transition:all var(--duration-normal) var(--ease-standard);animation:fadeIn var(--duration-normal) var(--ease-standard)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.task-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.task-card.dragging{background:var(--color-secondary);opacity:.7}.task-card.editing{background:var(--color-surface);border:2px solid var(--color-primary)}.task-handle{color:var(--color-border);font-size:var(--font-size-xl);cursor:grab;-webkit-user-select:none;user-select:none;padding-top:var(--space-2);flex-shrink:0}.task-handle:active{cursor:grabbing}.task-content{flex:1;min-width:0}.task-title{margin:0 0 var(--space-6) 0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);word-break:break-word;line-height:var(--line-height-tight)}.task-description{margin:0 0 var(--space-10) 0;font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:var(--line-height-normal);word-break:break-word;white-space:pre-wrap}.task-meta{display:flex;gap:var(--space-12);align-items:center}.task-date{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.task-actions{display:flex;gap:var(--space-6);flex-shrink:0;opacity:0;transition:opacity var(--duration-fast) var(--ease-standard)}.task-card:hover .task-actions{opacity:1}.btn-edit,.btn-delete{width:32px;height:32px;border:none;border-radius:var(--radius-base);cursor:pointer;font-size:var(--font-size-md);transition:all var(--duration-fast) var(--ease-standard);display:flex;align-items:center;justify-content:center;background:transparent}.btn-edit{color:var(--color-primary);background:rgba(var(--color-teal-500-rgb),.12)}.btn-edit:hover{background:rgba(var(--color-teal-500-rgb),.2)}.btn-edit:focus-visible{outline:var(--focus-outline);outline-offset:2px}.btn-delete{color:var(--color-error);background:rgba(var(--color-error-rgb),.12)}.btn-delete:hover{background:rgba(var(--color-error-rgb),.2)}.btn-delete:focus-visible{outline:var(--focus-outline);outline-offset:2px}.edit-form{display:flex;flex-direction:column;gap:var(--space-10);width:100%}.edit-input,.edit-textarea{padding:var(--space-10) var(--space-12);border:2px solid var(--color-primary);border-radius:var(--radius-base);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-surface);outline:none;transition:box-shadow var(--duration-fast) var(--ease-standard)}.edit-input:focus,.edit-textarea:focus{box-shadow:var(--focus-ring);outline:var(--focus-outline)}.edit-textarea{min-height:80px;resize:vertical}.edit-actions{display:flex;gap:var(--space-8)}.btn-save,.btn-cancel{flex:1;padding:var(--space-8) var(--space-12);border:none;border-radius:var(--radius-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--duration-fast) var(--ease-standard);font-size:var(--font-size-base)}.btn-save{background:var(--color-success);color:var(--color-btn-primary-text)}.btn-save:hover{background:rgba(var(--color-success-rgb),.85)}.btn-save:focus-visible{outline:var(--focus-outline);outline-offset:2px}.btn-cancel{background:var(--color-secondary);color:var(--color-text)}.btn-cancel:hover{background:var(--color-secondary-hover)}.btn-cancel:focus-visible{outline:var(--focus-outline);outline-offset:2px}@media (max-width: 480px){.task-card{padding:var(--space-12);gap:var(--space-8);margin-bottom:var(--space-8)}.task-handle{font-size:var(--font-size-lg)}.task-title{font-size:var(--font-size-md);margin:0 0 var(--space-4) 0}.task-description{font-size:var(--font-size-sm);margin:0 0 var(--space-8) 0}.task-meta{flex-wrap:wrap;gap:var(--space-8)}.task-date{font-size:var(--font-size-xs)}.task-actions{opacity:1;gap:var(--space-4)}.btn-edit,.btn-delete{width:28px;height:28px;font-size:var(--font-size-sm)}.edit-form{gap:var(--space-8)}.edit-input,.edit-textarea{padding:var(--space-8) var(--space-10);font-size:var(--font-size-sm)}.edit-actions{gap:var(--space-6)}.btn-save,.btn-cancel{padding:var(--space-8) var(--space-10);font-size:var(--font-size-sm)}}:root{--color-white: rgba(255, 255, 255, 1);--color-black: rgba(0, 0, 0, 1);--color-cream-50: rgba(252, 252, 249, 1);--color-cream-100: rgba(255, 255, 253, 1);--color-gray-200: rgba(245, 245, 245, 1);--color-gray-300: rgba(167, 169, 169, 1);--color-gray-400: rgba(119, 124, 124, 1);--color-slate-500: rgba(98, 108, 113, 1);--color-brown-600: rgba(94, 82, 64, 1);--color-charcoal-700: rgba(31, 33, 33, 1);--color-charcoal-800: rgba(38, 40, 40, 1);--color-slate-900: rgba(19, 52, 59, 1);--color-teal-300: rgba(50, 184, 198, 1);--color-teal-400: rgba(45, 166, 178, 1);--color-teal-500: rgba(33, 128, 141, 1);--color-teal-600: rgba(29, 116, 128, 1);--color-teal-700: rgba(26, 104, 115, 1);--color-teal-800: rgba(41, 150, 161, 1);--color-red-400: rgba(255, 84, 89, 1);--color-red-500: rgba(192, 21, 47, 1);--color-orange-400: rgba(230, 129, 97, 1);--color-orange-500: rgba(168, 75, 47, 1);--color-brown-600-rgb: 94, 82, 64;--color-teal-500-rgb: 33, 128, 141;--color-slate-900-rgb: 19, 52, 59;--color-slate-500-rgb: 98, 108, 113;--color-red-500-rgb: 192, 21, 47;--color-red-400-rgb: 255, 84, 89;--color-orange-500-rgb: 168, 75, 47;--color-orange-400-rgb: 230, 129, 97;--color-bg-1: rgba(59, 130, 246, .08);--color-bg-2: rgba(245, 158, 11, .08);--color-bg-3: rgba(34, 197, 94, .08);--color-bg-4: rgba(239, 68, 68, .08);--color-bg-5: rgba(147, 51, 234, .08);--color-bg-6: rgba(249, 115, 22, .08);--color-bg-7: rgba(236, 72, 153, .08);--color-bg-8: rgba(6, 182, 212, .08);--color-background: var(--color-cream-50);--color-surface: var(--color-cream-100);--color-text: var(--color-slate-900);--color-text-secondary: var(--color-slate-500);--color-primary: var(--color-teal-500);--color-primary-hover: var(--color-teal-600);--color-primary-active: var(--color-teal-700);--color-secondary: rgba(var(--color-brown-600-rgb), .12);--color-secondary-hover: rgba(var(--color-brown-600-rgb), .2);--color-secondary-active: rgba(var(--color-brown-600-rgb), .25);--color-border: rgba(var(--color-brown-600-rgb), .2);--color-btn-primary-text: var(--color-cream-50);--color-card-border: rgba(var(--color-brown-600-rgb), .12);--color-card-border-inner: rgba(var(--color-brown-600-rgb), .12);--color-error: var(--color-red-500);--color-success: var(--color-teal-500);--color-warning: var(--color-orange-500);--color-info: var(--color-slate-500);--color-focus-ring: rgba(var(--color-teal-500-rgb), .4);--color-select-caret: rgba(var(--color-slate-900-rgb), .8);--focus-ring: 0 0 0 3px var(--color-focus-ring);--focus-outline: 2px solid var(--color-primary);--status-bg-opacity: .15;--status-border-opacity: .25;--select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--color-success-rgb: 33, 128, 141;--color-error-rgb: 192, 21, 47;--color-warning-rgb: 168, 75, 47;--color-info-rgb: 98, 108, 113;--font-family-base: "FKGroteskNeue", "Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-mono: "Berkeley Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--font-size-4xl: 30px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 550;--font-weight-bold: 600;--line-height-tight: 1.2;--line-height-normal: 1.5;--letter-spacing-tight: -.01em;--space-0: 0;--space-1: 1px;--space-2: 2px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-10: 10px;--space-12: 12px;--space-16: 16px;--space-20: 20px;--space-24: 24px;--space-32: 32px;--radius-sm: 6px;--radius-base: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .02);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .02);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .04), 0 2px 4px -1px rgba(0, 0, 0, .02);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .04), 0 4px 6px -2px rgba(0, 0, 0, .02);--shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, .15), inset 0 -1px 0 rgba(0, 0, 0, .03);--duration-fast: .15s;--duration-normal: .25s;--ease-standard: cubic-bezier(.16, 1, .3, 1);--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1280px}@media (prefers-color-scheme: dark){:root{--color-gray-400-rgb: 119, 124, 124;--color-teal-300-rgb: 50, 184, 198;--color-gray-300-rgb: 167, 169, 169;--color-gray-200-rgb: 245, 245, 245;--color-bg-1: rgba(29, 78, 216, .15);--color-bg-2: rgba(180, 83, 9, .15);--color-bg-3: rgba(21, 128, 61, .15);--color-bg-4: rgba(185, 28, 28, .15);--color-bg-5: rgba(107, 33, 168, .15);--color-bg-6: rgba(194, 65, 12, .15);--color-bg-7: rgba(190, 24, 93, .15);--color-bg-8: rgba(8, 145, 178, .15);--color-background: var(--color-charcoal-700);--color-surface: var(--color-charcoal-800);--color-text: var(--color-gray-200);--color-text-secondary: rgba(var(--color-gray-300-rgb), .7);--color-primary: var(--color-teal-300);--color-primary-hover: var(--color-teal-400);--color-primary-active: var(--color-teal-800);--color-secondary: rgba(var(--color-gray-400-rgb), .15);--color-secondary-hover: rgba(var(--color-gray-400-rgb), .25);--color-secondary-active: rgba(var(--color-gray-400-rgb), .3);--color-border: rgba(var(--color-gray-400-rgb), .3);--color-error: var(--color-red-400);--color-success: var(--color-teal-300);--color-warning: var(--color-orange-400);--color-info: var(--color-gray-300);--color-focus-ring: rgba(var(--color-teal-300-rgb), .4);--color-btn-primary-text: var(--color-slate-900);--color-card-border: rgba(var(--color-gray-400-rgb), .2);--color-card-border-inner: rgba(var(--color-gray-400-rgb), .15);--shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, .1), inset 0 -1px 0 rgba(0, 0, 0, .15);--button-border-secondary: rgba(var(--color-gray-400-rgb), .2);--color-border-secondary: rgba(var(--color-gray-400-rgb), .2);--color-select-caret: rgba(var(--color-gray-200-rgb), .8);--focus-ring: 0 0 0 3px var(--color-focus-ring);--focus-outline: 2px solid var(--color-primary);--status-bg-opacity: .15;--status-border-opacity: .25;--select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--color-success-rgb: var(--color-teal-300-rgb);--color-error-rgb: var(--color-red-400-rgb);--color-warning-rgb: var(--color-orange-400-rgb);--color-info-rgb: var(--color-gray-300-rgb)}}[data-color-scheme=dark]{--color-gray-400-rgb: 119, 124, 124;--color-teal-300-rgb: 50, 184, 198;--color-gray-300-rgb: 167, 169, 169;--color-gray-200-rgb: 245, 245, 245;--color-bg-1: rgba(29, 78, 216, .15);--color-bg-2: rgba(180, 83, 9, .15);--color-bg-3: rgba(21, 128, 61, .15);--color-bg-4: rgba(185, 28, 28, .15);--color-bg-5: rgba(107, 33, 168, .15);--color-bg-6: rgba(194, 65, 12, .15);--color-bg-7: rgba(190, 24, 93, .15);--color-bg-8: rgba(8, 145, 178, .15);--color-background: var(--color-charcoal-700);--color-surface: var(--color-charcoal-800);--color-text: var(--color-gray-200);--color-text-secondary: rgba(var(--color-gray-300-rgb), .7);--color-primary: var(--color-teal-300);--color-primary-hover: var(--color-teal-400);--color-primary-active: var(--color-teal-800);--color-secondary: rgba(var(--color-gray-400-rgb), .15);--color-secondary-hover: rgba(var(--color-gray-400-rgb), .25);--color-secondary-active: rgba(var(--color-gray-400-rgb), .3);--color-border: rgba(var(--color-gray-400-rgb), .3);--color-error: var(--color-red-400);--color-success: var(--color-teal-300);--color-warning: var(--color-orange-400);--color-info: var(--color-gray-300);--color-focus-ring: rgba(var(--color-teal-300-rgb), .4);--color-btn-primary-text: var(--color-slate-900);--color-card-border: rgba(var(--color-gray-400-rgb), .15);--color-card-border-inner: rgba(var(--color-gray-400-rgb), .15);--shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, .1), inset 0 -1px 0 rgba(0, 0, 0, .15);--color-border-secondary: rgba(var(--color-gray-400-rgb), .2);--color-select-caret: rgba(var(--color-gray-200-rgb), .8);--focus-ring: 0 0 0 3px var(--color-focus-ring);--focus-outline: 2px solid var(--color-primary);--status-bg-opacity: .15;--status-border-opacity: .25;--select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--color-success-rgb: var(--color-teal-300-rgb);--color-error-rgb: var(--color-red-400-rgb);--color-warning-rgb: var(--color-orange-400-rgb);--color-info-rgb: var(--color-gray-300-rgb)}[data-color-scheme=light]{--color-brown-600-rgb: 94, 82, 64;--color-teal-500-rgb: 33, 128, 141;--color-slate-900-rgb: 19, 52, 59;--color-background: var(--color-cream-50);--color-surface: var(--color-cream-100);--color-text: var(--color-slate-900);--color-text-secondary: var(--color-slate-500);--color-primary: var(--color-teal-500);--color-primary-hover: var(--color-teal-600);--color-primary-active: var(--color-teal-700);--color-secondary: rgba(var(--color-brown-600-rgb), .12);--color-secondary-hover: rgba(var(--color-brown-600-rgb), .2);--color-secondary-active: rgba(var(--color-brown-600-rgb), .25);--color-border: rgba(var(--color-brown-600-rgb), .2);--color-btn-primary-text: var(--color-cream-50);--color-card-border: rgba(var(--color-brown-600-rgb), .12);--color-card-border-inner: rgba(var(--color-brown-600-rgb), .12);--color-error: var(--color-red-500);--color-success: var(--color-teal-500);--color-warning: var(--color-orange-500);--color-info: var(--color-slate-500);--color-focus-ring: rgba(var(--color-teal-500-rgb), .4);--color-success-rgb: var(--color-teal-500-rgb);--color-error-rgb: var(--color-red-500-rgb);--color-warning-rgb: var(--color-orange-500-rgb);--color-info-rgb: var(--color-slate-500-rgb)}html{font-size:var(--font-size-base);font-family:var(--font-family-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);-webkit-font-smoothing:antialiased;box-sizing:border-box}body{margin:0;padding:0}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);letter-spacing:var(--letter-spacing-tight)}h1{font-size:var(--font-size-4xl)}h2{font-size:var(--font-size-3xl)}h3{font-size:var(--font-size-2xl)}h4{font-size:var(--font-size-xl)}h5{font-size:var(--font-size-lg)}h6{font-size:var(--font-size-md)}p{margin:0 0 var(--space-16) 0}a{color:var(--color-primary);text-decoration:none;transition:color var(--duration-fast) var(--ease-standard)}a:hover{color:var(--color-primary-hover)}code,pre{font-family:var(--font-family-mono);font-size:calc(var(--font-size-base) * .95);background-color:var(--color-secondary);border-radius:var(--radius-sm)}code{padding:var(--space-1) var(--space-4)}pre{padding:var(--space-16);margin:var(--space-16) 0;overflow:auto;border:1px solid var(--color-border)}pre code{background:none;padding:0}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-8) var(--space-16);border-radius:var(--radius-base);font-size:var(--font-size-base);font-weight:500;line-height:1.5;cursor:pointer;transition:all var(--duration-normal) var(--ease-standard);border:none;text-decoration:none;position:relative}.btn--primary{background:var(--color-primary);color:var(--color-btn-primary-text)}.btn--primary:hover{background:var(--color-primary-hover)}.btn--primary:active{background:var(--color-primary-active)}.btn--secondary{background:var(--color-secondary);color:var(--color-text)}.btn--secondary:hover{background:var(--color-secondary-hover)}.btn--secondary:active{background:var(--color-secondary-active)}.btn--outline{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.btn--outline:hover{background:var(--color-secondary)}.btn--sm{padding:var(--space-4) var(--space-12);font-size:var(--font-size-sm);border-radius:var(--radius-sm)}.btn--lg{padding:var(--space-10) var(--space-20);font-size:var(--font-size-lg);border-radius:var(--radius-md)}.btn--full-width{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.form-control{display:block;width:100%;padding:var(--space-8) var(--space-12);font-size:var(--font-size-md);line-height:1.5;color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-base);transition:border-color var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard)}textarea.form-control{font-family:var(--font-family-base);font-size:var(--font-size-base)}select.form-control{padding:var(--space-8) var(--space-12);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:var(--select-caret-light);background-repeat:no-repeat;background-position:right var(--space-12) center;background-size:16px;padding-right:var(--space-32)}@media (prefers-color-scheme: dark){select.form-control{background-image:var(--select-caret-dark)}}[data-color-scheme=dark] select.form-control{background-image:var(--select-caret-dark)}[data-color-scheme=light] select.form-control{background-image:var(--select-caret-light)}.form-control:focus{border-color:var(--color-primary);outline:var(--focus-outline)}.form-label{display:block;margin-bottom:var(--space-8);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm)}.form-group{margin-bottom:var(--space-16)}.card{background-color:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-card-border);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow var(--duration-normal) var(--ease-standard)}.card:hover{box-shadow:var(--shadow-md)}.card__body{padding:var(--space-16)}.card__header,.card__footer{padding:var(--space-16);border-bottom:1px solid var(--color-card-border-inner)}.status{display:inline-flex;align-items:center;padding:var(--space-6) var(--space-12);border-radius:var(--radius-full);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm)}.status--success{background-color:rgba(var(--color-success-rgb, 33, 128, 141),var(--status-bg-opacity));color:var(--color-success);border:1px solid rgba(var(--color-success-rgb, 33, 128, 141),var(--status-border-opacity))}.status--error{background-color:rgba(var(--color-error-rgb, 192, 21, 47),var(--status-bg-opacity));color:var(--color-error);border:1px solid rgba(var(--color-error-rgb, 192, 21, 47),var(--status-border-opacity))}.status--warning{background-color:rgba(var(--color-warning-rgb, 168, 75, 47),var(--status-bg-opacity));color:var(--color-warning);border:1px solid rgba(var(--color-warning-rgb, 168, 75, 47),var(--status-border-opacity))}.status--info{background-color:rgba(var(--color-info-rgb, 98, 108, 113),var(--status-bg-opacity));color:var(--color-info);border:1px solid rgba(var(--color-info-rgb, 98, 108, 113),var(--status-border-opacity))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--space-16);padding-left:var(--space-16)}@media (min-width: 640px){.container{max-width:var(--container-sm)}}@media (min-width: 768px){.container{max-width:var(--container-md)}}@media (min-width: 1024px){.container{max-width:var(--container-lg)}}@media (min-width: 1280px){.container{max-width:var(--container-xl)}}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-4{gap:var(--space-4)}.gap-8{gap:var(--space-8)}.gap-16{gap:var(--space-16)}.m-0{margin:0}.mt-8{margin-top:var(--space-8)}.mb-8{margin-bottom:var(--space-8)}.mx-8{margin-left:var(--space-8);margin-right:var(--space-8)}.my-8{margin-top:var(--space-8);margin-bottom:var(--space-8)}.p-0{padding:0}.py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.py-16{padding-top:var(--space-16);padding-bottom:var(--space-16)}.px-16{padding-left:var(--space-16);padding-right:var(--space-16)}.block{display:block}.hidden{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:focus-visible{outline:var(--focus-outline);outline-offset:2px}[data-color-scheme=dark] .btn--outline{border:1px solid var(--color-border-secondary)}@font-face{font-family:FKGroteskNeue;src:url(https://r2cdn.perplexity.ai/fonts/FKGroteskNeue.woff2) format("woff2")}.task-form{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-16);margin-bottom:var(--space-32);box-shadow:var(--shadow-md);border:1px solid var(--color-card-border);animation:slideUp .4s var(--ease-standard)}@keyframes slideUp{0%{opacity:0;transform:translateY(var(--space-10))}to{opacity:1;transform:translateY(0)}}.task-input{width:100%;padding:var(--space-12);border:1px solid var(--color-border);border-radius:var(--radius-base);font-size:var(--font-size-md);font-family:var(--font-family-base);color:var(--color-text);background-color:var(--color-surface);transition:all var(--duration-normal) var(--ease-standard);outline:none}.task-input:focus{border-color:var(--color-primary);outline:var(--focus-outline);outline-offset:0}.task-input:focus-visible{box-shadow:var(--focus-ring)}.form-expanded{margin-top:var(--space-16);animation:slideDown var(--duration-normal) var(--ease-standard)}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:300px}}.description-input{width:100%;padding:var(--space-12);border:1px solid var(--color-border);border-radius:var(--radius-base);font-size:var(--font-size-base);font-family:var(--font-family-base);color:var(--color-text);background-color:var(--color-surface);resize:vertical;min-height:80px;transition:all var(--duration-normal) var(--ease-standard);outline:none}.description-input:focus{border-color:var(--color-primary);outline:var(--focus-outline);outline-offset:0}.description-input:focus-visible{box-shadow:var(--focus-ring)}.form-actions{display:flex;gap:var(--space-10);margin-top:var(--space-12)}.btn{flex:1;display:inline-flex;align-items:center;justify-content:center;padding:var(--space-8) var(--space-16);border:none;border-radius:var(--radius-base);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);font-family:var(--font-family-base);line-height:var(--line-height-normal);cursor:pointer;transition:all var(--duration-normal) var(--ease-standard);position:relative}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn-primary{background:var(--color-primary);color:var(--color-btn-primary-text)}.btn-primary:hover{background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-primary:active{background:var(--color-primary-active);transform:translateY(0);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--color-secondary);color:var(--color-text)}.btn-secondary:hover{background:var(--color-secondary-hover)}.btn-secondary:active{background:var(--color-secondary-active)}@media (max-width: 480px){.task-form{padding:var(--space-12);margin-bottom:var(--space-20);border-radius:var(--radius-md)}.task-input{padding:var(--space-10);font-size:var(--font-size-base)}.description-input{padding:var(--space-10);font-size:var(--font-size-sm);min-height:60px}.form-expanded{margin-top:var(--space-12)}.form-actions{flex-direction:column;gap:var(--space-8);margin-top:var(--space-10)}.btn{width:100%;padding:var(--space-10) var(--space-12);font-size:var(--font-size-sm)}}.app{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.container{max-width:800px;margin:0 auto}.header{text-align:center;color:#fff;margin-bottom:40px;animation:slideDown .6s ease-out}.header h1{font-size:2.5rem;margin-bottom:10px;font-weight:700}.header p{font-size:1.1rem;opacity:.9}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.error-message{background-color:#ef5350;color:#fff;padding:15px 20px;border-radius:8px;margin-bottom:20px;animation:pulse .3s ease-out}.loading{text-align:center;color:#fff;font-size:1.2rem;padding:40px 20px}.empty-state{text-align:center;color:#fff;padding:60px 20px;font-size:1.1rem}.tasks-list{transition:background-color .2s ease}.tasks-list.dragging{background-color:#ffffff0d;border-radius:12px;padding:10px}@keyframes pulse{0%{opacity:0}to{opacity:1}}@media (max-width: 768px){.header h1{font-size:1.8rem}.header p{font-size:1rem}}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace} diff --git a/client/build/favicon-16x16.png b/client/build/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..377acc56016b3054b8dfbce6f4c0de3dfeec4e93 GIT binary patch literal 819 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 H7Y+O$w3M*m literal 0 HcmV?d00001 diff --git a/client/build/index.html b/client/build/index.html new file mode 100644 index 0000000..e639b21 --- /dev/null +++ b/client/build/index.html @@ -0,0 +1,32 @@ + + + + + + + Focus Tasks + + + + + +
+ + diff --git a/client/index.html b/client/index.html new file mode 100644 index 0000000..61b51e8 --- /dev/null +++ b/client/index.html @@ -0,0 +1,31 @@ + + + + + + + Focus Tasks + + + +
+ + + diff --git a/client/package-lock.json b/client/package-lock.json new file mode 100644 index 0000000..f511968 --- /dev/null +++ b/client/package-lock.json @@ -0,0 +1,2210 @@ +{ + "name": "focus-app-client", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "focus-app-client", + "version": "0.1.0", + "dependencies": { + "axios": "^1.6.0", + "react": "^18.2.0", + "react-beautiful-dnd": "^13.1.1", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "@types/react": "^18.2.0", + "@types/react-beautiful-dnd": "^13.1.5", + "@types/react-dom": "^18.2.0", + "@vitejs/plugin-react": "^4.2.0", + "typescript": "^5.0.0", + "vite": "^5.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz", + "integrity": "sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz", + "integrity": "sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz", + "integrity": "sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz", + "integrity": "sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz", + "integrity": "sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz", + "integrity": "sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz", + "integrity": "sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz", + "integrity": "sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz", + "integrity": "sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz", + "integrity": "sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz", + "integrity": "sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz", + "integrity": "sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz", + "integrity": "sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz", + "integrity": "sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz", + "integrity": "sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz", + "integrity": "sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz", + "integrity": "sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz", + "integrity": "sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz", + "integrity": "sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz", + "integrity": "sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz", + "integrity": "sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz", + "integrity": "sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz", + "integrity": "sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz", + "integrity": "sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz", + "integrity": "sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz", + "integrity": "sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==", + "license": "MIT", + "dependencies": { + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/node": { + "version": "20.19.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.27.tgz", + "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-beautiful-dnd": { + "version": "13.1.8", + "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz", + "integrity": "sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.34", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", + "license": "MIT", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz", + "integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "license": "MIT", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.282", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.282.tgz", + "integrity": "sha512-FCPkJtpst28UmFzd903iU7PdeVTfY0KAeJy+Lk0GLZRwgwYHn/irRcaCbQQOmr5Vytc/7rcavsYLvTM8RiHYhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-beautiful-dnd": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", + "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", + "deprecated": "react-beautiful-dnd is now deprecated. Context and options: https://github.com/atlassian/react-beautiful-dnd/issues/2672", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.9.2", + "css-box-model": "^1.2.0", + "memoize-one": "^5.1.1", + "raf-schd": "^4.0.2", + "react-redux": "^7.2.0", + "redux": "^4.0.4", + "use-memo-one": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/rollup": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.0.tgz", + "integrity": "sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.0", + "@rollup/rollup-android-arm64": "4.57.0", + "@rollup/rollup-darwin-arm64": "4.57.0", + "@rollup/rollup-darwin-x64": "4.57.0", + "@rollup/rollup-freebsd-arm64": "4.57.0", + "@rollup/rollup-freebsd-x64": "4.57.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.0", + "@rollup/rollup-linux-arm-musleabihf": "4.57.0", + "@rollup/rollup-linux-arm64-gnu": "4.57.0", + "@rollup/rollup-linux-arm64-musl": "4.57.0", + "@rollup/rollup-linux-loong64-gnu": "4.57.0", + "@rollup/rollup-linux-loong64-musl": "4.57.0", + "@rollup/rollup-linux-ppc64-gnu": "4.57.0", + "@rollup/rollup-linux-ppc64-musl": "4.57.0", + "@rollup/rollup-linux-riscv64-gnu": "4.57.0", + "@rollup/rollup-linux-riscv64-musl": "4.57.0", + "@rollup/rollup-linux-s390x-gnu": "4.57.0", + "@rollup/rollup-linux-x64-gnu": "4.57.0", + "@rollup/rollup-linux-x64-musl": "4.57.0", + "@rollup/rollup-openbsd-x64": "4.57.0", + "@rollup/rollup-openharmony-arm64": "4.57.0", + "@rollup/rollup-win32-arm64-msvc": "4.57.0", + "@rollup/rollup-win32-ia32-msvc": "4.57.0", + "@rollup/rollup-win32-x64-gnu": "4.57.0", + "@rollup/rollup-win32-x64-msvc": "4.57.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 0000000..d9f3584 --- /dev/null +++ b/client/package.json @@ -0,0 +1,26 @@ +{ + "name": "focus-app-client", + "version": "0.1.0", + "private": true, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-beautiful-dnd": "^13.1.1", + "axios": "^1.6.0" + }, + "devDependencies": { + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "@types/react-beautiful-dnd": "^13.1.5", + "@types/node": "^20.0.0", + "typescript": "^5.0.0", + "vite": "^5.0.0", + "@vitejs/plugin-react": "^4.2.0" + }, + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "proxy": "http://localhost:5000" +} diff --git a/client/public/android-chrome-192x192.png b/client/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..9409fdc5b8ebf2215b6382b0b78b81ddd6ced9dc GIT binary patch literal 19053 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�pDS4aV7ZC>3^{q0P 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 literal 0 HcmV?d00001 diff --git a/client/public/favicon-16x16.png b/client/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..377acc56016b3054b8dfbce6f4c0de3dfeec4e93 GIT binary patch literal 819 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 H7Y+O$w3M*m literal 0 HcmV?d00001 diff --git a/client/src/App.css b/client/src/App.css new file mode 100644 index 0000000..73457ed --- /dev/null +++ b/client/src/App.css @@ -0,0 +1,91 @@ +.app { + min-height: 100vh; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + padding: 20px; +} + +.container { + max-width: 800px; + margin: 0 auto; +} + +.header { + text-align: center; + color: white; + margin-bottom: 40px; + animation: slideDown 0.6s ease-out; +} + +.header h1 { + font-size: 2.5rem; + margin-bottom: 10px; + font-weight: 700; +} + +.header p { + font-size: 1.1rem; + opacity: 0.9; +} + +@keyframes slideDown { + from { + opacity: 0; + transform: translateY(-20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.error-message { + background-color: #ef5350; + color: white; + padding: 15px 20px; + border-radius: 8px; + margin-bottom: 20px; + animation: pulse 0.3s ease-out; +} + +.loading { + text-align: center; + color: white; + font-size: 1.2rem; + padding: 40px 20px; +} + +.empty-state { + text-align: center; + color: white; + padding: 60px 20px; + font-size: 1.1rem; +} + +.tasks-list { + transition: background-color 0.2s ease; +} + +.tasks-list.dragging { + background-color: rgba(255, 255, 255, 0.05); + border-radius: 12px; + padding: 10px; +} + +@keyframes pulse { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@media (max-width: 768px) { + .header h1 { + font-size: 1.8rem; + } + + .header p { + font-size: 1rem; + } +} diff --git a/client/src/App.tsx b/client/src/App.tsx new file mode 100644 index 0000000..4b8af79 --- /dev/null +++ b/client/src/App.tsx @@ -0,0 +1,144 @@ +import React, { useState, useEffect } from 'react'; +import { DragDropContext, Droppable, Draggable, DropResult } from 'react-beautiful-dnd'; +import { focusTaskApi } from './api'; +import { FocusTask } from './types'; +import TaskCard from './components/TaskCard'; +import TaskForm from './components/TaskForm'; +import './App.css'; + +const App: React.FC = () => { + const [tasks, setTasks] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + loadTasks(); + }, []); + + const loadTasks = async () => { + try { + setLoading(true); + const data = await focusTaskApi.getTasks(); + setTasks(data); + setError(null); + } catch (err) { + setError('Failed to load tasks'); + console.error(err); + } finally { + setLoading(false); + } + }; + + const handleAddTask = async (title: string, description?: string) => { + try { + const newTask = await focusTaskApi.createTask({ title, description }); + setTasks([newTask, ...tasks]); + } catch (err) { + setError('Failed to create task'); + console.error(err); + } + }; + + const handleUpdateTask = async (id: number, title: string, description?: string) => { + try { + const updated = await focusTaskApi.updateTask(id, { title, description }); + setTasks(tasks.map(t => t.id === id ? updated : t)); + } catch (err) { + setError('Failed to update task'); + console.error(err); + } + }; + + const handleDeleteTask = async (id: number) => { + try { + await focusTaskApi.deleteTask(id); + setTasks(tasks.filter(t => t.id !== id)); + } catch (err) { + setError('Failed to delete task'); + console.error(err); + } + }; + + const handleDragEnd = async (result: DropResult) => { + const { source, destination } = result; + + if (!destination) return; + if (source.index === destination.index) return; + + const newTasks = Array.from(tasks); + const [movedTask] = newTasks.splice(source.index, 1); + newTasks.splice(destination.index, 0, movedTask); + + setTasks(newTasks); + + // Update order in backend + try { + const orders = newTasks.map((task, index) => ({ + id: task.id, + order: index + 1, + })); + await focusTaskApi.reorderTasks(orders); + } catch (err) { + setError('Failed to reorder tasks'); + console.error(err); + loadTasks(); // Reload on error + } + }; + + return ( +
+
+
+

🎯 Focus Tasks

+

Deine aktiven Schwerpunkte für die nächsten 2-3 Wochen

+
+ + {error &&
{error}
} + + + + {loading ? ( +
Lade Tasks...
+ ) : tasks.length === 0 ? ( +
+

Keine Tasks vorhanden. Füge einen neuen Task hinzu!

+
+ ) : ( + + + {(provided, snapshot) => ( +
+ {tasks.map((task, index) => ( + + {(provided, snapshot) => ( +
+ handleUpdateTask(task.id, title, desc)} + onDelete={() => handleDeleteTask(task.id)} + /> +
+ )} +
+ ))} + {provided.placeholder} +
+ )} +
+
+ )} +
+
+ ); +}; + +export default App; diff --git a/client/src/api.ts b/client/src/api.ts new file mode 100644 index 0000000..2467732 --- /dev/null +++ b/client/src/api.ts @@ -0,0 +1,39 @@ +import axios from 'axios'; +import { FocusTask, CreateTaskDto, UpdateTaskDto } from './types'; + +const API_URL = '/api/focustasks'; + +const api = axios.create({ + baseURL: API_URL, + headers: { + 'Content-Type': 'application/json', + }, +}); + +export const focusTaskApi = { + getTasks: async (): Promise => { + const { data } = await api.get(''); + return data; + }, + + createTask: async (dto: CreateTaskDto): Promise => { + const { data } = await api.post('', dto); + return data; + }, + + updateTask: async (id: number, dto: UpdateTaskDto): Promise => { + const { data } = await api.put(`/${id}`, dto); + return data; + }, + + deleteTask: async (id: number): Promise => { + await api.delete(`/${id}`); + }, + + reorderTasks: async ( + orders: Array<{ id: number; order: number }> + ): Promise => { + const { data } = await api.put('/reorder', { orders }); + return data; + }, +}; diff --git a/client/src/components/TaskCard.css b/client/src/components/TaskCard.css new file mode 100644 index 0000000..f67e0a7 --- /dev/null +++ b/client/src/components/TaskCard.css @@ -0,0 +1,1020 @@ +:root { + /* Primitive Color Tokens */ + --color-white: rgba(255, 255, 255, 1); + --color-black: rgba(0, 0, 0, 1); + --color-cream-50: rgba(252, 252, 249, 1); + --color-cream-100: rgba(255, 255, 253, 1); + --color-gray-200: rgba(245, 245, 245, 1); + --color-gray-300: rgba(167, 169, 169, 1); + --color-gray-400: rgba(119, 124, 124, 1); + --color-slate-500: rgba(98, 108, 113, 1); + --color-brown-600: rgba(94, 82, 64, 1); + --color-charcoal-700: rgba(31, 33, 33, 1); + --color-charcoal-800: rgba(38, 40, 40, 1); + --color-slate-900: rgba(19, 52, 59, 1); + --color-teal-300: rgba(50, 184, 198, 1); + --color-teal-400: rgba(45, 166, 178, 1); + --color-teal-500: rgba(33, 128, 141, 1); + --color-teal-600: rgba(29, 116, 128, 1); + --color-teal-700: rgba(26, 104, 115, 1); + --color-teal-800: rgba(41, 150, 161, 1); + --color-red-400: rgba(255, 84, 89, 1); + --color-red-500: rgba(192, 21, 47, 1); + --color-orange-400: rgba(230, 129, 97, 1); + --color-orange-500: rgba(168, 75, 47, 1); + + /* RGB versions for opacity control */ + --color-brown-600-rgb: 94, 82, 64; + --color-teal-500-rgb: 33, 128, 141; + --color-slate-900-rgb: 19, 52, 59; + --color-slate-500-rgb: 98, 108, 113; + --color-red-500-rgb: 192, 21, 47; + --color-red-400-rgb: 255, 84, 89; + --color-orange-500-rgb: 168, 75, 47; + --color-orange-400-rgb: 230, 129, 97; + + /* Background color tokens (Light Mode) */ + --color-bg-1: rgba(59, 130, 246, 0.08); /* Light blue */ + --color-bg-2: rgba(245, 158, 11, 0.08); /* Light yellow */ + --color-bg-3: rgba(34, 197, 94, 0.08); /* Light green */ + --color-bg-4: rgba(239, 68, 68, 0.08); /* Light red */ + --color-bg-5: rgba(147, 51, 234, 0.08); /* Light purple */ + --color-bg-6: rgba(249, 115, 22, 0.08); /* Light orange */ + --color-bg-7: rgba(236, 72, 153, 0.08); /* Light pink */ + --color-bg-8: rgba(6, 182, 212, 0.08); /* Light cyan */ + + /* Semantic Color Tokens (Light Mode) */ + --color-background: var(--color-cream-50); + --color-surface: var(--color-cream-100); + --color-text: var(--color-slate-900); + --color-text-secondary: var(--color-slate-500); + --color-primary: var(--color-teal-500); + --color-primary-hover: var(--color-teal-600); + --color-primary-active: var(--color-teal-700); + --color-secondary: rgba(var(--color-brown-600-rgb), 0.12); + --color-secondary-hover: rgba(var(--color-brown-600-rgb), 0.2); + --color-secondary-active: rgba(var(--color-brown-600-rgb), 0.25); + --color-border: rgba(var(--color-brown-600-rgb), 0.2); + --color-btn-primary-text: var(--color-cream-50); + --color-card-border: rgba(var(--color-brown-600-rgb), 0.12); + --color-card-border-inner: rgba(var(--color-brown-600-rgb), 0.12); + --color-error: var(--color-red-500); + --color-success: var(--color-teal-500); + --color-warning: var(--color-orange-500); + --color-info: var(--color-slate-500); + --color-focus-ring: rgba(var(--color-teal-500-rgb), 0.4); + --color-select-caret: rgba(var(--color-slate-900-rgb), 0.8); + + /* Common style patterns */ + --focus-ring: 0 0 0 3px var(--color-focus-ring); + --focus-outline: 2px solid var(--color-primary); + --status-bg-opacity: 0.15; + --status-border-opacity: 0.25; + --select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + + /* RGB versions for opacity control */ + --color-success-rgb: 33, 128, 141; + --color-error-rgb: 192, 21, 47; + --color-warning-rgb: 168, 75, 47; + --color-info-rgb: 98, 108, 113; + + /* Typography */ + --font-family-base: "FKGroteskNeue", "Geist", "Inter", -apple-system, + BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --font-family-mono: "Berkeley Mono", ui-monospace, SFMono-Regular, Menlo, + Monaco, Consolas, monospace; + --font-size-xs: 11px; + --font-size-sm: 12px; + --font-size-base: 14px; + --font-size-md: 14px; + --font-size-lg: 16px; + --font-size-xl: 18px; + --font-size-2xl: 20px; + --font-size-3xl: 24px; + --font-size-4xl: 30px; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 550; + --font-weight-bold: 600; + --line-height-tight: 1.2; + --line-height-normal: 1.5; + --letter-spacing-tight: -0.01em; + + /* Spacing */ + --space-0: 0; + --space-1: 1px; + --space-2: 2px; + --space-4: 4px; + --space-6: 6px; + --space-8: 8px; + --space-10: 10px; + --space-12: 12px; + --space-16: 16px; + --space-20: 20px; + --space-24: 24px; + --space-32: 32px; + + /* Border Radius */ + --radius-sm: 6px; + --radius-base: 8px; + --radius-md: 10px; + --radius-lg: 12px; + --radius-full: 9999px; + + /* Shadows */ + --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.02); + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.04), + 0 2px 4px -1px rgba(0, 0, 0, 0.02); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.04), + 0 4px 6px -2px rgba(0, 0, 0, 0.02); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.15), + inset 0 -1px 0 rgba(0, 0, 0, 0.03); + + /* Animation */ + --duration-fast: 150ms; + --duration-normal: 250ms; + --ease-standard: cubic-bezier(0.16, 1, 0.3, 1); + + /* Layout */ + --container-sm: 640px; + --container-md: 768px; + --container-lg: 1024px; + --container-xl: 1280px; +} + +/* Dark mode colors */ +@media (prefers-color-scheme: dark) { + :root { + /* RGB versions for opacity control (Dark Mode) */ + --color-gray-400-rgb: 119, 124, 124; + --color-teal-300-rgb: 50, 184, 198; + --color-gray-300-rgb: 167, 169, 169; + --color-gray-200-rgb: 245, 245, 245; + + /* Background color tokens (Dark Mode) */ + --color-bg-1: rgba(29, 78, 216, 0.15); /* Dark blue */ + --color-bg-2: rgba(180, 83, 9, 0.15); /* Dark yellow */ + --color-bg-3: rgba(21, 128, 61, 0.15); /* Dark green */ + --color-bg-4: rgba(185, 28, 28, 0.15); /* Dark red */ + --color-bg-5: rgba(107, 33, 168, 0.15); /* Dark purple */ + --color-bg-6: rgba(194, 65, 12, 0.15); /* Dark orange */ + --color-bg-7: rgba(190, 24, 93, 0.15); /* Dark pink */ + --color-bg-8: rgba(8, 145, 178, 0.15); /* Dark cyan */ + + /* Semantic Color Tokens (Dark Mode) */ + --color-background: var(--color-charcoal-700); + --color-surface: var(--color-charcoal-800); + --color-text: var(--color-gray-200); + --color-text-secondary: rgba(var(--color-gray-300-rgb), 0.7); + --color-primary: var(--color-teal-300); + --color-primary-hover: var(--color-teal-400); + --color-primary-active: var(--color-teal-800); + --color-secondary: rgba(var(--color-gray-400-rgb), 0.15); + --color-secondary-hover: rgba(var(--color-gray-400-rgb), 0.25); + --color-secondary-active: rgba(var(--color-gray-400-rgb), 0.3); + --color-border: rgba(var(--color-gray-400-rgb), 0.3); + --color-error: var(--color-red-400); + --color-success: var(--color-teal-300); + --color-warning: var(--color-orange-400); + --color-info: var(--color-gray-300); + --color-focus-ring: rgba(var(--color-teal-300-rgb), 0.4); + --color-btn-primary-text: var(--color-slate-900); + --color-card-border: rgba(var(--color-gray-400-rgb), 0.2); + --color-card-border-inner: rgba(var(--color-gray-400-rgb), 0.15); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.1), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + --button-border-secondary: rgba(var(--color-gray-400-rgb), 0.2); + --color-border-secondary: rgba(var(--color-gray-400-rgb), 0.2); + --color-select-caret: rgba(var(--color-gray-200-rgb), 0.8); + + /* Common style patterns - updated for dark mode */ + --focus-ring: 0 0 0 3px var(--color-focus-ring); + --focus-outline: 2px solid var(--color-primary); + --status-bg-opacity: 0.15; + --status-border-opacity: 0.25; + --select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + + /* RGB versions for dark mode */ + --color-success-rgb: var(--color-teal-300-rgb); + --color-error-rgb: var(--color-red-400-rgb); + --color-warning-rgb: var(--color-orange-400-rgb); + --color-info-rgb: var(--color-gray-300-rgb); + } +} + +/* Data attribute for manual theme switching */ +[data-color-scheme="dark"] { + /* RGB versions for opacity control (dark mode) */ + --color-gray-400-rgb: 119, 124, 124; + --color-teal-300-rgb: 50, 184, 198; + --color-gray-300-rgb: 167, 169, 169; + --color-gray-200-rgb: 245, 245, 245; + + /* Colorful background palette - Dark Mode */ + --color-bg-1: rgba(29, 78, 216, 0.15); /* Dark blue */ + --color-bg-2: rgba(180, 83, 9, 0.15); /* Dark yellow */ + --color-bg-3: rgba(21, 128, 61, 0.15); /* Dark green */ + --color-bg-4: rgba(185, 28, 28, 0.15); /* Dark red */ + --color-bg-5: rgba(107, 33, 168, 0.15); /* Dark purple */ + --color-bg-6: rgba(194, 65, 12, 0.15); /* Dark orange */ + --color-bg-7: rgba(190, 24, 93, 0.15); /* Dark pink */ + --color-bg-8: rgba(8, 145, 178, 0.15); /* Dark cyan */ + + /* Semantic Color Tokens (Dark Mode) */ + --color-background: var(--color-charcoal-700); + --color-surface: var(--color-charcoal-800); + --color-text: var(--color-gray-200); + --color-text-secondary: rgba(var(--color-gray-300-rgb), 0.7); + --color-primary: var(--color-teal-300); + --color-primary-hover: var(--color-teal-400); + --color-primary-active: var(--color-teal-800); + --color-secondary: rgba(var(--color-gray-400-rgb), 0.15); + --color-secondary-hover: rgba(var(--color-gray-400-rgb), 0.25); + --color-secondary-active: rgba(var(--color-gray-400-rgb), 0.3); + --color-border: rgba(var(--color-gray-400-rgb), 0.3); + --color-error: var(--color-red-400); + --color-success: var(--color-teal-300); + --color-warning: var(--color-orange-400); + --color-info: var(--color-gray-300); + --color-focus-ring: rgba(var(--color-teal-300-rgb), 0.4); + --color-btn-primary-text: var(--color-slate-900); + --color-card-border: rgba(var(--color-gray-400-rgb), 0.15); + --color-card-border-inner: rgba(var(--color-gray-400-rgb), 0.15); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.1), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + --color-border-secondary: rgba(var(--color-gray-400-rgb), 0.2); + --color-select-caret: rgba(var(--color-gray-200-rgb), 0.8); + + /* Common style patterns - updated for dark mode */ + --focus-ring: 0 0 0 3px var(--color-focus-ring); + --focus-outline: 2px solid var(--color-primary); + --status-bg-opacity: 0.15; + --status-border-opacity: 0.25; + --select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + + /* RGB versions for dark mode */ + --color-success-rgb: var(--color-teal-300-rgb); + --color-error-rgb: var(--color-red-400-rgb); + --color-warning-rgb: var(--color-orange-400-rgb); + --color-info-rgb: var(--color-gray-300-rgb); +} + +[data-color-scheme="light"] { + /* RGB versions for opacity control (light mode) */ + --color-brown-600-rgb: 94, 82, 64; + --color-teal-500-rgb: 33, 128, 141; + --color-slate-900-rgb: 19, 52, 59; + + /* Semantic Color Tokens (Light Mode) */ + --color-background: var(--color-cream-50); + --color-surface: var(--color-cream-100); + --color-text: var(--color-slate-900); + --color-text-secondary: var(--color-slate-500); + --color-primary: var(--color-teal-500); + --color-primary-hover: var(--color-teal-600); + --color-primary-active: var(--color-teal-700); + --color-secondary: rgba(var(--color-brown-600-rgb), 0.12); + --color-secondary-hover: rgba(var(--color-brown-600-rgb), 0.2); + --color-secondary-active: rgba(var(--color-brown-600-rgb), 0.25); + --color-border: rgba(var(--color-brown-600-rgb), 0.2); + --color-btn-primary-text: var(--color-cream-50); + --color-card-border: rgba(var(--color-brown-600-rgb), 0.12); + --color-card-border-inner: rgba(var(--color-brown-600-rgb), 0.12); + --color-error: var(--color-red-500); + --color-success: var(--color-teal-500); + --color-warning: var(--color-orange-500); + --color-info: var(--color-slate-500); + --color-focus-ring: rgba(var(--color-teal-500-rgb), 0.4); + + /* RGB versions for light mode */ + --color-success-rgb: var(--color-teal-500-rgb); + --color-error-rgb: var(--color-red-500-rgb); + --color-warning-rgb: var(--color-orange-500-rgb); + --color-info-rgb: var(--color-slate-500-rgb); +} + +/* Base styles */ +html { + font-size: var(--font-size-base); + font-family: var(--font-family-base); + line-height: var(--line-height-normal); + color: var(--color-text); + background-color: var(--color-background); + -webkit-font-smoothing: antialiased; + box-sizing: border-box; +} + +body { + margin: 0; + padding: 0; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +/* Typography */ +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-weight: var(--font-weight-semibold); + line-height: var(--line-height-tight); + color: var(--color-text); + letter-spacing: var(--letter-spacing-tight); +} + +h1 { + font-size: var(--font-size-4xl); +} +h2 { + font-size: var(--font-size-3xl); +} +h3 { + font-size: var(--font-size-2xl); +} +h4 { + font-size: var(--font-size-xl); +} +h5 { + font-size: var(--font-size-lg); +} +h6 { + font-size: var(--font-size-md); +} + +p { + margin: 0 0 var(--space-16) 0; +} + +a { + color: var(--color-primary); + text-decoration: none; + transition: color var(--duration-fast) var(--ease-standard); +} + +a:hover { + color: var(--color-primary-hover); +} + +code, +pre { + font-family: var(--font-family-mono); + font-size: calc(var(--font-size-base) * 0.95); + background-color: var(--color-secondary); + border-radius: var(--radius-sm); +} + +code { + padding: var(--space-1) var(--space-4); +} + +pre { + padding: var(--space-16); + margin: var(--space-16) 0; + overflow: auto; + border: 1px solid var(--color-border); +} + +pre code { + background: none; + padding: 0; +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: var(--space-8) var(--space-16); + border-radius: var(--radius-base); + font-size: var(--font-size-base); + font-weight: 500; + line-height: 1.5; + cursor: pointer; + transition: all var(--duration-normal) var(--ease-standard); + border: none; + text-decoration: none; + position: relative; +} + +.btn:focus-visible { + outline: none; + box-shadow: var(--focus-ring); +} + +.btn--primary { + background: var(--color-primary); + color: var(--color-btn-primary-text); +} + +.btn--primary:hover { + background: var(--color-primary-hover); +} + +.btn--primary:active { + background: var(--color-primary-active); +} + +.btn--secondary { + background: var(--color-secondary); + color: var(--color-text); +} + +.btn--secondary:hover { + background: var(--color-secondary-hover); +} + +.btn--secondary:active { + background: var(--color-secondary-active); +} + +.btn--outline { + background: transparent; + border: 1px solid var(--color-border); + color: var(--color-text); +} + +.btn--outline:hover { + background: var(--color-secondary); +} + +.btn--sm { + padding: var(--space-4) var(--space-12); + font-size: var(--font-size-sm); + border-radius: var(--radius-sm); +} + +.btn--lg { + padding: var(--space-10) var(--space-20); + font-size: var(--font-size-lg); + border-radius: var(--radius-md); +} + +.btn--full-width { + width: 100%; +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +/* Form elements */ +.form-control { + display: block; + width: 100%; + padding: var(--space-8) var(--space-12); + font-size: var(--font-size-md); + line-height: 1.5; + color: var(--color-text); + background-color: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + transition: border-color var(--duration-fast) var(--ease-standard), + box-shadow var(--duration-fast) var(--ease-standard); +} + +textarea.form-control { + font-family: var(--font-family-base); + font-size: var(--font-size-base); +} + +select.form-control { + padding: var(--space-8) var(--space-12); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-image: var(--select-caret-light); + background-repeat: no-repeat; + background-position: right var(--space-12) center; + background-size: 16px; + padding-right: var(--space-32); +} + +/* Add a dark mode specific caret */ +@media (prefers-color-scheme: dark) { + select.form-control { + background-image: var(--select-caret-dark); + } +} + +/* Also handle data-color-scheme */ +[data-color-scheme="dark"] select.form-control { + background-image: var(--select-caret-dark); +} + +[data-color-scheme="light"] select.form-control { + background-image: var(--select-caret-light); +} + +.form-control:focus { + border-color: var(--color-primary); + outline: var(--focus-outline); +} + +.form-label { + display: block; + margin-bottom: var(--space-8); + font-weight: var(--font-weight-medium); + font-size: var(--font-size-sm); +} + +.form-group { + margin-bottom: var(--space-16); +} + +/* Card component */ +.card { + background-color: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-card-border); + box-shadow: var(--shadow-sm); + overflow: hidden; + transition: box-shadow var(--duration-normal) var(--ease-standard); +} + +.card:hover { + box-shadow: var(--shadow-md); +} + +.card__body { + padding: var(--space-16); +} + +.card__header, +.card__footer { + padding: var(--space-16); + border-bottom: 1px solid var(--color-card-border-inner); +} + +/* Status indicators - simplified with CSS variables */ +.status { + display: inline-flex; + align-items: center; + padding: var(--space-6) var(--space-12); + border-radius: var(--radius-full); + font-weight: var(--font-weight-medium); + font-size: var(--font-size-sm); +} + +.status--success { + background-color: rgba( + var(--color-success-rgb, 33, 128, 141), + var(--status-bg-opacity) + ); + color: var(--color-success); + border: 1px solid + rgba(var(--color-success-rgb, 33, 128, 141), var(--status-border-opacity)); +} + +.status--error { + background-color: rgba( + var(--color-error-rgb, 192, 21, 47), + var(--status-bg-opacity) + ); + color: var(--color-error); + border: 1px solid + rgba(var(--color-error-rgb, 192, 21, 47), var(--status-border-opacity)); +} + +.status--warning { + background-color: rgba( + var(--color-warning-rgb, 168, 75, 47), + var(--status-bg-opacity) + ); + color: var(--color-warning); + border: 1px solid + rgba(var(--color-warning-rgb, 168, 75, 47), var(--status-border-opacity)); +} + +.status--info { + background-color: rgba( + var(--color-info-rgb, 98, 108, 113), + var(--status-bg-opacity) + ); + color: var(--color-info); + border: 1px solid + rgba(var(--color-info-rgb, 98, 108, 113), var(--status-border-opacity)); +} + +/* Container layout */ +.container { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: var(--space-16); + padding-left: var(--space-16); +} + +@media (min-width: 640px) { + .container { + max-width: var(--container-sm); + } +} +@media (min-width: 768px) { + .container { + max-width: var(--container-md); + } +} +@media (min-width: 1024px) { + .container { + max-width: var(--container-lg); + } +} +@media (min-width: 1280px) { + .container { + max-width: var(--container-xl); + } +} + +/* Utility classes */ +.flex { + display: flex; +} +.flex-col { + flex-direction: column; +} +.items-center { + align-items: center; +} +.justify-center { + justify-content: center; +} +.justify-between { + justify-content: space-between; +} +.gap-4 { + gap: var(--space-4); +} +.gap-8 { + gap: var(--space-8); +} +.gap-16 { + gap: var(--space-16); +} + +.m-0 { + margin: 0; +} +.mt-8 { + margin-top: var(--space-8); +} +.mb-8 { + margin-bottom: var(--space-8); +} +.mx-8 { + margin-left: var(--space-8); + margin-right: var(--space-8); +} +.my-8 { + margin-top: var(--space-8); + margin-bottom: var(--space-8); +} + +.p-0 { + padding: 0; +} +.py-8 { + padding-top: var(--space-8); + padding-bottom: var(--space-8); +} +.px-8 { + padding-left: var(--space-8); + padding-right: var(--space-8); +} +.py-16 { + padding-top: var(--space-16); + padding-bottom: var(--space-16); +} +.px-16 { + padding-left: var(--space-16); + padding-right: var(--space-16); +} + +.block { + display: block; +} +.hidden { + display: none; +} + +/* Accessibility */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +/* Dark mode specifics */ +[data-color-scheme="dark"] .btn--outline { + border: 1px solid var(--color-border-secondary); +} + +@font-face { + font-family: 'FKGroteskNeue'; + src: url('https://r2cdn.perplexity.ai/fonts/FKGroteskNeue.woff2') + format('woff2'); +} + +.task-card { + background: var(--color-surface); + border-radius: var(--radius-lg); + padding: var(--space-16); + margin-bottom: var(--space-12); + display: flex; + gap: var(--space-12); + align-items: flex-start; + box-shadow: var(--shadow-sm); + border: 1px solid var(--color-card-border); + transition: all var(--duration-normal) var(--ease-standard); + animation: fadeIn var(--duration-normal) var(--ease-standard); +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.task-card:hover { + box-shadow: var(--shadow-md); + transform: translateY(-2px); +} + +.task-card.dragging { + background: var(--color-secondary); + opacity: 0.7; +} + +.task-card.editing { + background: var(--color-surface); + border: 2px solid var(--color-primary); +} + +.task-handle { + color: var(--color-border); + font-size: var(--font-size-xl); + cursor: grab; + user-select: none; + padding-top: var(--space-2); + flex-shrink: 0; +} + +.task-handle:active { + cursor: grabbing; +} + +.task-content { + flex: 1; + min-width: 0; +} + +.task-title { + margin: 0 0 var(--space-6) 0; + font-size: var(--font-size-lg); + font-weight: var(--font-weight-semibold); + color: var(--color-text); + word-break: break-word; + line-height: var(--line-height-tight); +} + +.task-description { + margin: 0 0 var(--space-10) 0; + font-size: var(--font-size-base); + color: var(--color-text-secondary); + line-height: var(--line-height-normal); + word-break: break-word; + white-space: pre-wrap; +} + +.task-meta { + display: flex; + gap: var(--space-12); + align-items: center; +} + +.task-date { + font-size: var(--font-size-sm); + color: var(--color-text-secondary); +} + +.task-actions { + display: flex; + gap: var(--space-6); + flex-shrink: 0; + opacity: 0; + transition: opacity var(--duration-fast) var(--ease-standard); +} + +.task-card:hover .task-actions { + opacity: 1; +} + +.btn-edit, +.btn-delete { + width: 32px; + height: 32px; + border: none; + border-radius: var(--radius-base); + cursor: pointer; + font-size: var(--font-size-md); + transition: all var(--duration-fast) var(--ease-standard); + display: flex; + align-items: center; + justify-content: center; + background: transparent; +} + +.btn-edit { + color: var(--color-primary); + background: rgba(var(--color-teal-500-rgb), 0.12); +} + +.btn-edit:hover { + background: rgba(var(--color-teal-500-rgb), 0.2); +} + +.btn-edit:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +.btn-delete { + color: var(--color-error); + background: rgba(var(--color-error-rgb), 0.12); +} + +.btn-delete:hover { + background: rgba(var(--color-error-rgb), 0.2); +} + +.btn-delete:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +.edit-form { + display: flex; + flex-direction: column; + gap: var(--space-10); + width: 100%; +} + +.edit-input, +.edit-textarea { + padding: var(--space-10) var(--space-12); + border: 2px solid var(--color-primary); + border-radius: var(--radius-base); + font-family: var(--font-family-base); + font-size: var(--font-size-base); + color: var(--color-text); + background-color: var(--color-surface); + outline: none; + transition: box-shadow var(--duration-fast) var(--ease-standard); +} + +.edit-input:focus, +.edit-textarea:focus { + box-shadow: var(--focus-ring); + outline: var(--focus-outline); +} + +.edit-textarea { + min-height: 80px; + resize: vertical; +} + +.edit-actions { + display: flex; + gap: var(--space-8); +} + +.btn-save, +.btn-cancel { + flex: 1; + padding: var(--space-8) var(--space-12); + border: none; + border-radius: var(--radius-base); + font-weight: var(--font-weight-semibold); + cursor: pointer; + transition: all var(--duration-fast) var(--ease-standard); + font-size: var(--font-size-base); +} + +.btn-save { + background: var(--color-success); + color: var(--color-btn-primary-text); +} + +.btn-save:hover { + background: rgba(var(--color-success-rgb), 0.85); +} + +.btn-save:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +.btn-cancel { + background: var(--color-secondary); + color: var(--color-text); +} + +.btn-cancel:hover { + background: var(--color-secondary-hover); +} + +.btn-cancel:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +/* Mobile responsive styles */ +@media (max-width: 480px) { + .task-card { + padding: var(--space-12); + gap: var(--space-8); + margin-bottom: var(--space-8); + } + + .task-handle { + font-size: var(--font-size-lg); + } + + .task-title { + font-size: var(--font-size-md); + margin: 0 0 var(--space-4) 0; + } + + .task-description { + font-size: var(--font-size-sm); + margin: 0 0 var(--space-8) 0; + } + + .task-meta { + flex-wrap: wrap; + gap: var(--space-8); + } + + .task-date { + font-size: var(--font-size-xs); + } + + .task-actions { + opacity: 1; + gap: var(--space-4); + } + + .btn-edit, + .btn-delete { + width: 28px; + height: 28px; + font-size: var(--font-size-sm); + } + + .edit-form { + gap: var(--space-8); + } + + .edit-input, + .edit-textarea { + padding: var(--space-8) var(--space-10); + font-size: var(--font-size-sm); + } + + .edit-actions { + gap: var(--space-6); + } + + .btn-save, + .btn-cancel { + padding: var(--space-8) var(--space-10); + font-size: var(--font-size-sm); + } +} \ No newline at end of file diff --git a/client/src/components/TaskCard.tsx b/client/src/components/TaskCard.tsx new file mode 100644 index 0000000..8f82f31 --- /dev/null +++ b/client/src/components/TaskCard.tsx @@ -0,0 +1,87 @@ +import React, { useState } from 'react'; +import { FocusTask } from '../types'; +import './TaskCard.css'; + +interface TaskCardProps { + task: FocusTask; + onUpdate: (title: string, description?: string) => void; + onDelete: () => void; +} + +const TaskCard: React.FC = ({ task, onUpdate, onDelete }) => { + const [isEditing, setIsEditing] = useState(false); + const [editTitle, setEditTitle] = useState(task.title); + const [editDescription, setEditDescription] = useState(task.description || ''); + + const handleSave = () => { + if (editTitle.trim()) { + onUpdate(editTitle, editDescription); + setIsEditing(false); + } + }; + + const handleCancel = () => { + setEditTitle(task.title); + setEditDescription(task.description || ''); + setIsEditing(false); + }; + + if (isEditing) { + return ( +
+
+ setEditTitle(e.target.value)} + className="edit-input" + autoFocus + /> +