Automated build & deploy
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .dockerignore +2 -0
- .gitignore +46 -0
- .gitmodules +0 -0
- Dockerfile +19 -0
- Dockerfile.generated +19 -0
- Dockerfile_frontend +20 -0
- Dockerfile_honduras +57 -0
- README.md +14 -10
- _backend/__init__.py +0 -0
- _backend/api.py +167 -0
- _backend/api_meeting_minutes.py +167 -0
- _backend/cli/__init__.py +0 -0
- _backend/cli/build_tool.py +166 -0
- _backend/cli/docker_builder.py +54 -0
- _backend/cli/graphrag_builder.py +17 -0
- _backend/cli/hf_deployer.py +37 -0
- _backend/cli/vector_db_builder.py +93 -0
- _backend/frontend/404.html +1 -0
- _backend/frontend/_next/static/-BZUAGOoGBhXHJLyfVPhi/_buildManifest.js +1 -0
- _backend/frontend/_next/static/-BZUAGOoGBhXHJLyfVPhi/_ssgManifest.js +1 -0
- _backend/frontend/_next/static/chunks/341.2903e54d3da731c1.js +1 -0
- _backend/frontend/_next/static/chunks/472.a3826d29d6854395.js +1 -0
- _backend/frontend/_next/static/chunks/4bd1b696-4b0f7518a463c96c.js +0 -0
- _backend/frontend/_next/static/chunks/527-17021ee980e21f8b.js +1 -0
- _backend/frontend/_next/static/chunks/558-386ce3b87f5e21a9.js +0 -0
- _backend/frontend/_next/static/chunks/684-9f376c0e2a3ae45e.js +0 -0
- _backend/frontend/_next/static/chunks/775-e50ffdc055346ff7.js +1 -0
- _backend/frontend/_next/static/chunks/8187f03c-c57963cb1b573777.js +0 -0
- _backend/frontend/_next/static/chunks/822-c73eb0df0acbcf5c.js +0 -0
- _backend/frontend/_next/static/chunks/app/_not-found/page-b63df5a8d3225455.js +1 -0
- _backend/frontend/_next/static/chunks/app/layout-6da5960c930aa43b.js +1 -0
- _backend/frontend/_next/static/chunks/app/page-0be14d953b17f4f9.js +1 -0
- _backend/frontend/_next/static/chunks/framework-f593a28cde54158e.js +0 -0
- _backend/frontend/_next/static/chunks/main-68a4efb29ad45f01.js +0 -0
- _backend/frontend/_next/static/chunks/main-app-373aaee17d94d527.js +1 -0
- _backend/frontend/_next/static/chunks/pages/_app-92f2aae776f86b9c.js +1 -0
- _backend/frontend/_next/static/chunks/pages/_error-71d2b6a7b832d02a.js +1 -0
- _backend/frontend/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
- _backend/frontend/_next/static/chunks/webpack-2ab7a1c436f84d2e.js +1 -0
- _backend/frontend/_next/static/css/a8e3f8fe32df230d.css +3 -0
- _backend/frontend/_next/static/media/8c0f877bd1202585-s.woff2 +0 -0
- _backend/frontend/_next/static/media/9c18eba18d4baf22-s.p.woff2 +0 -0
- _backend/frontend/favicon.ico +0 -0
- _backend/frontend/file.svg +1 -0
- _backend/frontend/globe.svg +1 -0
- _backend/frontend/index.html +1 -0
- _backend/frontend/index.txt +23 -0
- _backend/frontend/next.svg +1 -0
- _backend/frontend/vercel.svg +1 -0
- _backend/frontend/window.svg +1 -0
.dockerignore
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.next
|
| 2 |
+
node_modules
|
.gitignore
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
| 2 |
+
|
| 3 |
+
*data/
|
| 4 |
+
__pycache__/
|
| 5 |
+
bun.lock
|
| 6 |
+
|
| 7 |
+
# dependencies
|
| 8 |
+
/node_modules
|
| 9 |
+
/.pnp
|
| 10 |
+
.pnp.*
|
| 11 |
+
.yarn/*
|
| 12 |
+
!.yarn/patches
|
| 13 |
+
!.yarn/plugins
|
| 14 |
+
!.yarn/releases
|
| 15 |
+
!.yarn/versions
|
| 16 |
+
|
| 17 |
+
# testing
|
| 18 |
+
/coverage
|
| 19 |
+
|
| 20 |
+
# next.js
|
| 21 |
+
/.next/
|
| 22 |
+
/out/
|
| 23 |
+
|
| 24 |
+
# production
|
| 25 |
+
/build
|
| 26 |
+
|
| 27 |
+
# misc
|
| 28 |
+
.DS_Store
|
| 29 |
+
*.pem
|
| 30 |
+
|
| 31 |
+
# debug
|
| 32 |
+
npm-debug.log*
|
| 33 |
+
yarn-debug.log*
|
| 34 |
+
yarn-error.log*
|
| 35 |
+
|
| 36 |
+
# env files (can opt-in for commiting if needed)
|
| 37 |
+
*.env*
|
| 38 |
+
|
| 39 |
+
# vercel
|
| 40 |
+
.vercel
|
| 41 |
+
|
| 42 |
+
# typescript
|
| 43 |
+
*.tsbuildinfo
|
| 44 |
+
next-env.d.ts
|
| 45 |
+
|
| 46 |
+
lighrag.log
|
.gitmodules
ADDED
|
File without changes
|
Dockerfile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Auto-generated Dockerfile (do not edit manually)
|
| 2 |
+
FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim
|
| 3 |
+
|
| 4 |
+
WORKDIR /app/_backend
|
| 5 |
+
|
| 6 |
+
# Install system deps (adjust as needed)
|
| 7 |
+
RUN apt-get update && apt-get install -y --no-install-recommends git curl && rm -rf /var/lib/apt/lists/*
|
| 8 |
+
|
| 9 |
+
COPY _backend/requirements.txt .
|
| 10 |
+
RUN uv pip install --system -r requirements.txt
|
| 11 |
+
# Copy prebuilt frontend static files
|
| 12 |
+
WORKDIR /app
|
| 13 |
+
COPY out/ _backend/static/
|
| 14 |
+
WORKDIR /app/_backend
|
| 15 |
+
# Copy backend (after frontend build to maximize caching)
|
| 16 |
+
COPY _backend/ .
|
| 17 |
+
COPY .env .env
|
| 18 |
+
EXPOSE 8000
|
| 19 |
+
CMD ["python", "api_meeting_minutes.py"]
|
Dockerfile.generated
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Auto-generated Dockerfile (do not edit manually)
|
| 2 |
+
FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim
|
| 3 |
+
|
| 4 |
+
WORKDIR /app/_backend
|
| 5 |
+
|
| 6 |
+
# Install system deps (adjust as needed)
|
| 7 |
+
RUN apt-get update && apt-get install -y --no-install-recommends git curl && rm -rf /var/lib/apt/lists/*
|
| 8 |
+
|
| 9 |
+
COPY _backend/requirements.txt .
|
| 10 |
+
RUN uv pip install --system -r requirements.txt
|
| 11 |
+
# Copy prebuilt frontend static files
|
| 12 |
+
WORKDIR /app
|
| 13 |
+
COPY out/ _backend/static/
|
| 14 |
+
WORKDIR /app/_backend
|
| 15 |
+
# Copy backend (after frontend build to maximize caching)
|
| 16 |
+
COPY _backend/ .
|
| 17 |
+
COPY .env .env
|
| 18 |
+
EXPOSE 8000
|
| 19 |
+
CMD ["python", "api_meeting_minutes.py"]
|
Dockerfile_frontend
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM oven/bun:1 AS base
|
| 2 |
+
|
| 3 |
+
WORKDIR /app
|
| 4 |
+
|
| 5 |
+
# Only copy dependency files first
|
| 6 |
+
COPY package.json bun.lockb ./
|
| 7 |
+
RUN bun install --frozen-lockfile
|
| 8 |
+
|
| 9 |
+
# Now copy the rest of your app
|
| 10 |
+
COPY . .
|
| 11 |
+
|
| 12 |
+
# remove the _backend directory
|
| 13 |
+
RUN rm -rf _backend
|
| 14 |
+
|
| 15 |
+
RUN bun run build
|
| 16 |
+
|
| 17 |
+
EXPOSE 3000
|
| 18 |
+
ENV PORT=3000
|
| 19 |
+
|
| 20 |
+
CMD ["bun", "run", "start"]
|
Dockerfile_honduras
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Stage 1: Build SQLite
|
| 2 |
+
FROM debian:bookworm-slim AS builder
|
| 3 |
+
|
| 4 |
+
WORKDIR /build
|
| 5 |
+
|
| 6 |
+
# Install build dependencies
|
| 7 |
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 8 |
+
build-essential \
|
| 9 |
+
wget \
|
| 10 |
+
ca-certificates \
|
| 11 |
+
make \
|
| 12 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 13 |
+
|
| 14 |
+
# Download and install SQLite
|
| 15 |
+
RUN wget https://www.sqlite.org/2023/sqlite-autoconf-3410200.tar.gz && \
|
| 16 |
+
tar xzf sqlite-autoconf-3410200.tar.gz && \
|
| 17 |
+
cd sqlite-autoconf-3410200 && \
|
| 18 |
+
./configure --prefix=/usr/local && \
|
| 19 |
+
make && make install
|
| 20 |
+
|
| 21 |
+
# Stage 2: Build the final image
|
| 22 |
+
FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim
|
| 23 |
+
|
| 24 |
+
# Set the working directory inside the container
|
| 25 |
+
WORKDIR /app/_backend
|
| 26 |
+
|
| 27 |
+
# Copy SQLite from the builder stage
|
| 28 |
+
COPY --from=builder /usr/local /usr/local
|
| 29 |
+
|
| 30 |
+
# Update library path
|
| 31 |
+
ENV LD_LIBRARY_PATH="/usr/local/lib"
|
| 32 |
+
|
| 33 |
+
# Install pysqlite3-binary
|
| 34 |
+
RUN pip install --no-cache-dir pysqlite3-binary
|
| 35 |
+
|
| 36 |
+
# Copy the requirements file
|
| 37 |
+
COPY _backend/requirements.txt .
|
| 38 |
+
|
| 39 |
+
# Install dependencies
|
| 40 |
+
RUN :uv pip install --system -r requirements.txt
|
| 41 |
+
|
| 42 |
+
# Copy the backend files
|
| 43 |
+
COPY _backend/ .
|
| 44 |
+
COPY .prod.env .env
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
# Expose port 8000 (matching docker-compose)
|
| 48 |
+
EXPOSE 8000
|
| 49 |
+
|
| 50 |
+
# deleting the vector store
|
| 51 |
+
RUN rm -rf honduras_data/chroma_db
|
| 52 |
+
|
| 53 |
+
# Rebuild the vector store
|
| 54 |
+
RUN python reset_vdb.py
|
| 55 |
+
|
| 56 |
+
# Final command to run the application
|
| 57 |
+
CMD ["python", "api.py"]
|
README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
| 1 |
-
---
|
| 2 |
-
title: Test
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom: indigo
|
| 5 |
-
colorTo:
|
| 6 |
-
sdk: docker
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Test
|
| 3 |
+
emoji: 🧑💼
|
| 4 |
+
colorFrom: indigo
|
| 5 |
+
colorTo: blue
|
| 6 |
+
sdk: docker
|
| 7 |
+
sdk_version: "1.0"
|
| 8 |
+
app_file: app.py
|
| 9 |
+
pinned: false
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Test
|
| 13 |
+
|
| 14 |
+
This Space is deployed with a dynamic README.
|
_backend/__init__.py
ADDED
|
File without changes
|
_backend/api.py
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
|
| 3 |
+
from dotenv import load_dotenv
|
| 4 |
+
from typing import List, Optional, Dict
|
| 5 |
+
from pydantic import BaseModel
|
| 6 |
+
from fastapi import Body
|
| 7 |
+
from fastapi import FastAPI, HTTPException
|
| 8 |
+
from fastapi.middleware.cors import CORSMiddleware
|
| 9 |
+
from utils.ai import AiService
|
| 10 |
+
from utils.vector_db import VectorDB
|
| 11 |
+
from lightrag import LightRAG, QueryParam
|
| 12 |
+
from lightrag.llm.openai import gpt_4_1_mini_complete, openai_embed
|
| 13 |
+
from utils.time_funcs import extract_timestamps
|
| 14 |
+
from utils.document_management import load_document, transcript_chunker, merge_chunks
|
| 15 |
+
|
| 16 |
+
from prompts import name_generation_prompt
|
| 17 |
+
|
| 18 |
+
# Load environment variables
|
| 19 |
+
load_dotenv()
|
| 20 |
+
|
| 21 |
+
# Initialize FastAPI app
|
| 22 |
+
app = FastAPI(title="Transcription API")
|
| 23 |
+
|
| 24 |
+
# Add CORS middleware
|
| 25 |
+
app.add_middleware(
|
| 26 |
+
CORSMiddleware,
|
| 27 |
+
allow_origins=["*"],
|
| 28 |
+
allow_credentials=True,
|
| 29 |
+
allow_methods=["*"], # Allows all methods
|
| 30 |
+
allow_headers=["*"], # Allows all headers
|
| 31 |
+
)
|
| 32 |
+
|
| 33 |
+
# Initialize services
|
| 34 |
+
working_dir = os.path.join(os.getcwd(), "_backend", "data","honduras_data")
|
| 35 |
+
if os.getenv("ENVIRONMENT") == "production":
|
| 36 |
+
working_dir = os.path.join(os.getcwd(), "data","honduras_data")
|
| 37 |
+
|
| 38 |
+
transcription_data_dir = os.path.join(working_dir)
|
| 39 |
+
vector_db_name = "transcription"
|
| 40 |
+
vector_db_embedding_length = 1536
|
| 41 |
+
|
| 42 |
+
vector_db = VectorDB(
|
| 43 |
+
vector_db_name,
|
| 44 |
+
vector_db_embedding_length,
|
| 45 |
+
os.getenv("OPENAI_API_KEY"),
|
| 46 |
+
working_dir
|
| 47 |
+
)
|
| 48 |
+
|
| 49 |
+
ai_service = AiService(model="gpt-4.1")
|
| 50 |
+
|
| 51 |
+
lightrag_dir = os.path.join(working_dir, "lightrag")
|
| 52 |
+
rag = LightRAG(
|
| 53 |
+
working_dir=lightrag_dir,
|
| 54 |
+
llm_model_func=gpt_4_1_mini_complete,
|
| 55 |
+
embedding_func=openai_embed
|
| 56 |
+
)
|
| 57 |
+
|
| 58 |
+
class ChatRequest(BaseModel):
|
| 59 |
+
message: str
|
| 60 |
+
chat_history: List[Dict[str, str]]
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
class ChatResponse(BaseModel):
|
| 64 |
+
response: str
|
| 65 |
+
timestamps: List[Dict[str, str | int]] # Updated type annotation
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
class NameRequest(BaseModel):
|
| 69 |
+
user_query: str
|
| 70 |
+
assistant_response: str
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
class SearchRequest(BaseModel):
|
| 74 |
+
query: str
|
| 75 |
+
filters: Optional[Dict] = {}
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
class SessionInfoResponse(BaseModel):
|
| 79 |
+
session_info: Dict
|
| 80 |
+
video_url: str
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
# API Endpoints
|
| 84 |
+
@app.post("/api/v1/chat", response_model=ChatResponse)
|
| 85 |
+
async def chat_endpoint(request: ChatRequest):
|
| 86 |
+
try:
|
| 87 |
+
|
| 88 |
+
translated_query = ai_service.generate_single_response(
|
| 89 |
+
request.message,
|
| 90 |
+
"Translate the following text to Spanish",
|
| 91 |
+
json_output=False
|
| 92 |
+
)
|
| 93 |
+
# Search documents
|
| 94 |
+
search_docs = vector_db.search(translated_query, limit=100,
|
| 95 |
+
# filter=filters,
|
| 96 |
+
score_threshold=0
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
# Get GraphML response using asyncio.create_task to avoid event loop issues
|
| 100 |
+
import asyncio
|
| 101 |
+
loop = asyncio.get_event_loop()
|
| 102 |
+
graphML_resp = await loop.run_in_executor(
|
| 103 |
+
None,
|
| 104 |
+
lambda: rag.query(
|
| 105 |
+
request.message,
|
| 106 |
+
param=QueryParam(
|
| 107 |
+
mode="hybrid",
|
| 108 |
+
)
|
| 109 |
+
)
|
| 110 |
+
)
|
| 111 |
+
|
| 112 |
+
# Generate response
|
| 113 |
+
assistant_response = ai_service.generate_response(
|
| 114 |
+
request.chat_history,
|
| 115 |
+
docs=search_docs,
|
| 116 |
+
extra_context=graphML_resp,
|
| 117 |
+
)
|
| 118 |
+
|
| 119 |
+
# Extract timestamps
|
| 120 |
+
timestamps = extract_timestamps(assistant_response, search_docs)
|
| 121 |
+
|
| 122 |
+
return ChatResponse(
|
| 123 |
+
response=assistant_response,
|
| 124 |
+
timestamps=timestamps # Remove json.dumps(), return list directly
|
| 125 |
+
)
|
| 126 |
+
except Exception as e:
|
| 127 |
+
print(e)
|
| 128 |
+
raise HTTPException(status_code=500, detail=str(e))
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
@app.post("/api/v1/generate_name", response_model=str)
|
| 132 |
+
async def generate_name_endpoint(request: NameRequest):
|
| 133 |
+
try:
|
| 134 |
+
messages = ai_service.init_messages(name_generation_prompt)
|
| 135 |
+
ai_service.add_user_message(messages, request.user_query)
|
| 136 |
+
|
| 137 |
+
# Generate response
|
| 138 |
+
response = ai_service.generate_response(messages)
|
| 139 |
+
|
| 140 |
+
return response
|
| 141 |
+
except Exception as e:
|
| 142 |
+
raise HTTPException(status_code=500, detail=str(e))
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
@app.post("/api/v1/transcript", response_model=List[Dict])
|
| 146 |
+
async def get_transcript_file(body: Dict = Body(...)):
|
| 147 |
+
try:
|
| 148 |
+
file_name = body.get("file_name")
|
| 149 |
+
if not file_name:
|
| 150 |
+
raise HTTPException(status_code=400, detail="file_name is required")
|
| 151 |
+
file_path = os.path.join(transcription_data_dir, file_name)
|
| 152 |
+
doc = load_document(file_path)
|
| 153 |
+
transcript = transcript_chunker(doc, filename=file_name)
|
| 154 |
+
transcript = merge_chunks(transcript)
|
| 155 |
+
return transcript
|
| 156 |
+
|
| 157 |
+
except FileNotFoundError:
|
| 158 |
+
raise HTTPException(status_code=404, detail="File not found")
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
@app.get("/api/v1/health")
|
| 162 |
+
async def health_check():
|
| 163 |
+
return {"status": "healthy"}
|
| 164 |
+
|
| 165 |
+
if __name__ == "__main__":
|
| 166 |
+
import uvicorn
|
| 167 |
+
uvicorn.run(app, host="0.0.0.0", port=8000)
|
_backend/api_meeting_minutes.py
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
|
| 3 |
+
from dotenv import load_dotenv
|
| 4 |
+
from typing import List, Optional, Dict
|
| 5 |
+
from pydantic import BaseModel
|
| 6 |
+
from fastapi import Body
|
| 7 |
+
from fastapi import FastAPI, HTTPException
|
| 8 |
+
from fastapi.responses import FileResponse
|
| 9 |
+
from fastapi.middleware.cors import CORSMiddleware
|
| 10 |
+
from utils.ai import AiService
|
| 11 |
+
from utils.vector_db import VectorDB
|
| 12 |
+
from utils.document_management import load_document, transcript_chunker, merge_chunks, load_prompt
|
| 13 |
+
|
| 14 |
+
# Load environment variables
|
| 15 |
+
load_dotenv()
|
| 16 |
+
|
| 17 |
+
# Initialize FastAPI app
|
| 18 |
+
app = FastAPI(title="Transcription API")
|
| 19 |
+
|
| 20 |
+
# Add CORS middleware
|
| 21 |
+
app.add_middleware(
|
| 22 |
+
CORSMiddleware,
|
| 23 |
+
allow_origins=["*"],
|
| 24 |
+
allow_credentials=True,
|
| 25 |
+
allow_methods=["*"], # Allows all methods
|
| 26 |
+
allow_headers=["*"], # Allows all headers
|
| 27 |
+
)
|
| 28 |
+
|
| 29 |
+
# Initialize services
|
| 30 |
+
base_dir = os.path.join(os.getcwd(), "_backend")
|
| 31 |
+
if os.getenv("ENVIRONMENT") == "production":
|
| 32 |
+
base_dir = os.getcwd()
|
| 33 |
+
working_dir = os.path.join(base_dir, "data","meeting_minutes_data")
|
| 34 |
+
|
| 35 |
+
transcription_data_dir = os.path.join(working_dir)
|
| 36 |
+
vector_db_name = "meeting_minutes"
|
| 37 |
+
vector_db_embedding_length = 1536
|
| 38 |
+
|
| 39 |
+
vector_db = VectorDB(
|
| 40 |
+
vector_db_name,
|
| 41 |
+
vector_db_embedding_length,
|
| 42 |
+
os.getenv("OPENAI_API_KEY"),
|
| 43 |
+
working_dir
|
| 44 |
+
)
|
| 45 |
+
|
| 46 |
+
ai_service = AiService()
|
| 47 |
+
chat_system_prompt = load_prompt(os.getenv("PROMPT"), base_dir)
|
| 48 |
+
|
| 49 |
+
class ChatRequest(BaseModel):
|
| 50 |
+
message: str
|
| 51 |
+
chat_history: List[Dict[str, str]]
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
class ChatResponse(BaseModel):
|
| 55 |
+
response: str
|
| 56 |
+
timestamps: List[Dict[str, str | int]] # Updated type annotation
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
class NameRequest(BaseModel):
|
| 60 |
+
user_query: str
|
| 61 |
+
assistant_response: str
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
class SearchRequest(BaseModel):
|
| 65 |
+
query: str
|
| 66 |
+
filters: Optional[Dict] = {}
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
class SessionInfoResponse(BaseModel):
|
| 70 |
+
session_info: Dict
|
| 71 |
+
video_url: str
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
# API Endpoints
|
| 75 |
+
@app.post("/api/v1/chat", response_model=ChatResponse)
|
| 76 |
+
async def chat_endpoint(request: ChatRequest):
|
| 77 |
+
try:
|
| 78 |
+
|
| 79 |
+
# Search documents
|
| 80 |
+
search_docs = vector_db.search(request.message, limit=20,
|
| 81 |
+
# filter=filters,
|
| 82 |
+
score_threshold=0
|
| 83 |
+
)
|
| 84 |
+
|
| 85 |
+
# Generate response
|
| 86 |
+
assistant_response = ai_service.generate_response(
|
| 87 |
+
request.chat_history,
|
| 88 |
+
docs=search_docs,
|
| 89 |
+
extra_context=None,
|
| 90 |
+
instructions=chat_system_prompt,
|
| 91 |
+
)
|
| 92 |
+
|
| 93 |
+
# Extract timestamps
|
| 94 |
+
# timestamps = extract_timestamps(assistant_response, search_docs)
|
| 95 |
+
|
| 96 |
+
return ChatResponse(
|
| 97 |
+
response=assistant_response,
|
| 98 |
+
timestamps=[] # Remove json.dumps(), return list directly
|
| 99 |
+
)
|
| 100 |
+
|
| 101 |
+
except Exception as e:
|
| 102 |
+
print(e)
|
| 103 |
+
raise HTTPException(status_code=500, detail=str(e))
|
| 104 |
+
|
| 105 |
+
|
| 106 |
+
@app.post("/api/v1/generate_name", response_model=str)
|
| 107 |
+
async def generate_name_endpoint(request: NameRequest):
|
| 108 |
+
try:
|
| 109 |
+
name_generation_prompt = load_prompt("name_generation")
|
| 110 |
+
messages = ai_service.init_messages(name_generation_prompt)
|
| 111 |
+
ai_service.add_user_message(messages, request.user_query)
|
| 112 |
+
|
| 113 |
+
# Generate response
|
| 114 |
+
response = ai_service.generate_response(messages)
|
| 115 |
+
|
| 116 |
+
return response
|
| 117 |
+
except Exception as e:
|
| 118 |
+
raise HTTPException(status_code=500, detail=str(e))
|
| 119 |
+
|
| 120 |
+
|
| 121 |
+
@app.post("/api/v1/search", response_model=List[Dict])
|
| 122 |
+
async def search_documents(request: SearchRequest):
|
| 123 |
+
try:
|
| 124 |
+
results = vector_db.search(
|
| 125 |
+
request.query, limit=40, filter=request.filters)
|
| 126 |
+
return results
|
| 127 |
+
except Exception as e:
|
| 128 |
+
raise HTTPException(status_code=500, detail=str(e))
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
@app.post("/api/v1/transcript/", response_model=List[Dict])
|
| 132 |
+
async def get_transcript_file(body: Dict = Body(...)):
|
| 133 |
+
try:
|
| 134 |
+
file_name = body.get("file_name")
|
| 135 |
+
if not file_name:
|
| 136 |
+
raise HTTPException(status_code=400, detail="file_name is required")
|
| 137 |
+
file_path = os.path.join(transcription_data_dir, file_name)
|
| 138 |
+
doc = load_document(file_path)
|
| 139 |
+
transcript = transcript_chunker(doc, filename=file_name)
|
| 140 |
+
transcript = merge_chunks(transcript)
|
| 141 |
+
return transcript
|
| 142 |
+
|
| 143 |
+
except FileNotFoundError:
|
| 144 |
+
raise HTTPException(status_code=404, detail="File not found")
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
@app.get("/api/v1/health")
|
| 148 |
+
async def health_check():
|
| 149 |
+
return {"status": "healthy"}
|
| 150 |
+
|
| 151 |
+
@app.get("/")
|
| 152 |
+
async def root():
|
| 153 |
+
# return the static frontend located at frontend/index.html
|
| 154 |
+
print(f"Working directory: {working_dir}, environment: {os.getenv('ENVIRONMENT')}")
|
| 155 |
+
|
| 156 |
+
return FileResponse(os.path.join(base_dir, "frontend", "index.html"))
|
| 157 |
+
|
| 158 |
+
# Mount the static files directory
|
| 159 |
+
@app.get("/_next/{file_path:path}")
|
| 160 |
+
async def static_files(file_path: str):
|
| 161 |
+
return FileResponse(
|
| 162 |
+
os.path.join(base_dir, "frontend", "_next", file_path)
|
| 163 |
+
)
|
| 164 |
+
|
| 165 |
+
if __name__ == "__main__":
|
| 166 |
+
import uvicorn
|
| 167 |
+
uvicorn.run(app, host="0.0.0.0", port=8000)
|
_backend/cli/__init__.py
ADDED
|
File without changes
|
_backend/cli/build_tool.py
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import sys
|
| 3 |
+
import subprocess
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from typing import List
|
| 6 |
+
|
| 7 |
+
sys.path.append(str(Path(__file__).resolve().parents[1])) # Add parent directory to path
|
| 8 |
+
|
| 9 |
+
import typer
|
| 10 |
+
|
| 11 |
+
try:
|
| 12 |
+
import questionary # type: ignore
|
| 13 |
+
except ImportError:
|
| 14 |
+
questionary = None # Fallback if not installed
|
| 15 |
+
|
| 16 |
+
from docker_builder import build_dockerfile, write_dockerfile
|
| 17 |
+
from graphrag_builder import build_graphrag
|
| 18 |
+
from hf_deployer import deploy_space
|
| 19 |
+
from vector_db_builder import build_vector_db_for_dir
|
| 20 |
+
|
| 21 |
+
app = typer.Typer(help="Interactive build & deploy tool")
|
| 22 |
+
|
| 23 |
+
ROOT = Path(__file__).resolve().parents[2]
|
| 24 |
+
BACKEND_DIR = ROOT / "_backend"
|
| 25 |
+
DATA_DIR = BACKEND_DIR / "data"
|
| 26 |
+
DEFAULT_DOCKERFILE = ROOT / "Dockerfile.generated"
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
def list_data_files() -> List[Path]:
|
| 30 |
+
# Listing all the directories in the data directory
|
| 31 |
+
folders = [p for p in DATA_DIR.iterdir() if p.is_dir()]
|
| 32 |
+
if not folders:
|
| 33 |
+
return []
|
| 34 |
+
return sorted(folders)
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def run_command(cmd: List[str], cwd: Path | None = None):
|
| 38 |
+
typer.echo(f"Running: {' '.join(cmd)}")
|
| 39 |
+
res = subprocess.run(cmd, cwd=cwd, text=True)
|
| 40 |
+
if res.returncode != 0:
|
| 41 |
+
raise typer.Exit(code=res.returncode)
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def ensure_questionary():
|
| 45 |
+
if questionary is None:
|
| 46 |
+
typer.echo("questionary not installed. Please add it to requirements and install.")
|
| 47 |
+
raise typer.Exit(code=1)
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
@app.command()
|
| 51 |
+
def interactive(
|
| 52 |
+
graphrag: bool = typer.Option(False, help="Build GraphRAG artifacts"),
|
| 53 |
+
deploy: bool = typer.Option(False, help="Deploy to Hugging Face after build"),
|
| 54 |
+
dockerfile_out: Path = typer.Option(DEFAULT_DOCKERFILE, help="Path for generated Dockerfile"),
|
| 55 |
+
non_interactive: bool = typer.Option(False, help="Skip confirmations where possible")
|
| 56 |
+
):
|
| 57 |
+
"""Run the interactive (or semi-interactive) build workflow."""
|
| 58 |
+
if not non_interactive:
|
| 59 |
+
ensure_questionary()
|
| 60 |
+
|
| 61 |
+
files = list_data_files()
|
| 62 |
+
if not files:
|
| 63 |
+
typer.echo("No data files found under _backend/data.")
|
| 64 |
+
raise typer.Exit(code=1)
|
| 65 |
+
|
| 66 |
+
if non_interactive:
|
| 67 |
+
selected_paths = files # take all
|
| 68 |
+
else:
|
| 69 |
+
choices = [f.relative_to(DATA_DIR).as_posix() for f in files]
|
| 70 |
+
selected_rel = questionary.checkbox(
|
| 71 |
+
"Select data files to include:", choices=choices
|
| 72 |
+
).ask()
|
| 73 |
+
if not selected_rel:
|
| 74 |
+
typer.echo("No files selected.")
|
| 75 |
+
raise typer.Exit()
|
| 76 |
+
selected_paths = [DATA_DIR / r for r in selected_rel]
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
# Optional vector DB build using new utility
|
| 80 |
+
do_reset = True if non_interactive else questionary.confirm(
|
| 81 |
+
"Build/reset vector database(s) for selected data directories?"
|
| 82 |
+
).ask()
|
| 83 |
+
if do_reset:
|
| 84 |
+
for data_path in selected_paths:
|
| 85 |
+
# Prompt for file suffix and collection name
|
| 86 |
+
if non_interactive:
|
| 87 |
+
file_suffix = None
|
| 88 |
+
collection_name = data_path.name
|
| 89 |
+
else:
|
| 90 |
+
file_suffix = questionary.text(
|
| 91 |
+
f"File suffix to include for {data_path.name} (e.g. .md, .srt, leave blank for all):",
|
| 92 |
+
default=""
|
| 93 |
+
).ask()
|
| 94 |
+
file_suffix = file_suffix if file_suffix.strip() else None
|
| 95 |
+
collection_name = questionary.text(
|
| 96 |
+
f"Collection name for {data_path.name}:",
|
| 97 |
+
default=data_path.name
|
| 98 |
+
).ask()
|
| 99 |
+
build_vector_db_for_dir(
|
| 100 |
+
data_dir=str(data_path),
|
| 101 |
+
collection_name=collection_name,
|
| 102 |
+
file_suffix=file_suffix,
|
| 103 |
+
verbose=True
|
| 104 |
+
)
|
| 105 |
+
|
| 106 |
+
graphrag_artifact_paths: List[str] = []
|
| 107 |
+
build_graphrag_flag = graphrag or (False if non_interactive else questionary.confirm(
|
| 108 |
+
"Build GraphRAG artifacts?"
|
| 109 |
+
).ask())
|
| 110 |
+
if build_graphrag_flag:
|
| 111 |
+
out_dir = BACKEND_DIR / "graphrag_artifacts"
|
| 112 |
+
build_graphrag(selected_paths, out_dir)
|
| 113 |
+
graphrag_artifact_paths.append(str(out_dir.relative_to(ROOT)))
|
| 114 |
+
|
| 115 |
+
frontend_dir = Path(os.getenv("FRONTEND_DIR", "frontend"))
|
| 116 |
+
build_cmd = os.getenv("FRONTEND_BUILD_CMD", "npm run build")
|
| 117 |
+
build_out = os.getenv("FRONTEND_BUILD_OUTPUT", "dist")
|
| 118 |
+
|
| 119 |
+
prebuild_frontend = True if non_interactive else questionary.confirm(
|
| 120 |
+
"Pre-build frontend locally first?"
|
| 121 |
+
).ask()
|
| 122 |
+
if prebuild_frontend:
|
| 123 |
+
if frontend_dir.exists():
|
| 124 |
+
run_command(build_cmd.split(), cwd=ROOT / frontend_dir)
|
| 125 |
+
else:
|
| 126 |
+
typer.echo(f"Frontend directory {frontend_dir} not found; skipping pre-build.")
|
| 127 |
+
|
| 128 |
+
docker_content = build_dockerfile(
|
| 129 |
+
frontend_build_cmd=build_cmd,
|
| 130 |
+
frontend_build_output=build_out,
|
| 131 |
+
graphrag_artifact_paths=graphrag_artifact_paths or None,
|
| 132 |
+
)
|
| 133 |
+
write_dockerfile(dockerfile_out, docker_content)
|
| 134 |
+
typer.echo(f"Wrote Dockerfile to {dockerfile_out}")
|
| 135 |
+
|
| 136 |
+
build_image = True if non_interactive else questionary.confirm(
|
| 137 |
+
"Build Docker image locally?"
|
| 138 |
+
).ask()
|
| 139 |
+
if build_image:
|
| 140 |
+
tag = os.getenv("IMAGE_TAG", "interview-synth:latest") if non_interactive else questionary.text(
|
| 141 |
+
"Image tag:", default="interview-synth:latest"
|
| 142 |
+
).ask()
|
| 143 |
+
run_command(["docker", "build", "-f", str(dockerfile_out), "-t", tag, "."], cwd=ROOT)
|
| 144 |
+
|
| 145 |
+
do_deploy = deploy or (False if non_interactive else questionary.confirm(
|
| 146 |
+
"Deploy to Hugging Face Spaces?"
|
| 147 |
+
).ask())
|
| 148 |
+
if do_deploy:
|
| 149 |
+
space_id = os.getenv("HF_SPACE_ID") or ("" if non_interactive else questionary.text(
|
| 150 |
+
"Enter HF Space (user/space):"
|
| 151 |
+
).ask())
|
| 152 |
+
token = os.getenv("HUGGINGFACE_TOKEN") or ("" if non_interactive else questionary.password(
|
| 153 |
+
"Enter Hugging Face token:"
|
| 154 |
+
).ask())
|
| 155 |
+
if not space_id or not token:
|
| 156 |
+
typer.echo("Space ID or token missing; aborting deploy.")
|
| 157 |
+
else:
|
| 158 |
+
# Write the generated Dockerfile to project root for Spaces
|
| 159 |
+
(ROOT / "Dockerfile").write_text(docker_content, encoding="utf-8")
|
| 160 |
+
deploy_space(space_id, ROOT, token)
|
| 161 |
+
|
| 162 |
+
typer.echo("Done.")
|
| 163 |
+
|
| 164 |
+
|
| 165 |
+
if __name__ == "__main__":
|
| 166 |
+
app()
|
_backend/cli/docker_builder.py
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import textwrap
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
from typing import List, Optional
|
| 4 |
+
|
| 5 |
+
BASE_HEADER = """# Auto-generated Dockerfile (do not edit manually)
|
| 6 |
+
FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim
|
| 7 |
+
|
| 8 |
+
WORKDIR /app/_backend
|
| 9 |
+
|
| 10 |
+
# Install system deps (adjust as needed)
|
| 11 |
+
RUN apt-get update && apt-get install -y --no-install-recommends git curl && rm -rf /var/lib/apt/lists/*
|
| 12 |
+
|
| 13 |
+
COPY _backend/requirements.txt .
|
| 14 |
+
RUN uv pip install --system -r requirements.txt
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
FRONTEND_LAYER = """# Copy prebuilt frontend static files
|
| 18 |
+
WORKDIR /app
|
| 19 |
+
COPY out/ _backend/static/
|
| 20 |
+
WORKDIR /app/_backend
|
| 21 |
+
"""
|
| 22 |
+
|
| 23 |
+
BACKEND_COPY = """# Copy backend (after frontend build to maximize caching)
|
| 24 |
+
COPY _backend/ .
|
| 25 |
+
COPY .env .env
|
| 26 |
+
"""
|
| 27 |
+
|
| 28 |
+
GRAPH_RAG_COPY_TEMPLATE = """# Include GraphRAG artifacts
|
| 29 |
+
COPY {artifact_rel_path} {container_target}
|
| 30 |
+
"""
|
| 31 |
+
|
| 32 |
+
FINAL_CMD = """EXPOSE 8000
|
| 33 |
+
CMD ["python", "api_meeting_minutes.py"]
|
| 34 |
+
"""
|
| 35 |
+
|
| 36 |
+
def build_dockerfile(frontend_build_cmd: str = "",
|
| 37 |
+
frontend_build_output: str = "out",
|
| 38 |
+
graphrag_artifact_paths: Optional[List[str]] = None) -> str:
|
| 39 |
+
parts = [BASE_HEADER]
|
| 40 |
+
parts.append(FRONTEND_LAYER)
|
| 41 |
+
parts.append(BACKEND_COPY)
|
| 42 |
+
|
| 43 |
+
if graphrag_artifact_paths:
|
| 44 |
+
for p in graphrag_artifact_paths:
|
| 45 |
+
rel = p.replace("\\", "/")
|
| 46 |
+
parts.append(GRAPH_RAG_COPY_TEMPLATE.format(
|
| 47 |
+
artifact_rel_path=rel,
|
| 48 |
+
container_target=f"/app/{rel}"
|
| 49 |
+
))
|
| 50 |
+
parts.append(FINAL_CMD)
|
| 51 |
+
return textwrap.dedent("".join(parts))
|
| 52 |
+
|
| 53 |
+
def write_dockerfile(output_path: Path, content: str):
|
| 54 |
+
output_path.write_text(content, encoding="utf-8")
|
_backend/cli/graphrag_builder.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pathlib import Path
|
| 2 |
+
from typing import List
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
def build_graphrag(selected_files: List[Path], output_dir: Path) -> Path:
|
| 6 |
+
"""Placeholder GraphRAG build.
|
| 7 |
+
|
| 8 |
+
For now it just writes a manifest enumerating selected files.
|
| 9 |
+
Replace with actual GraphRAG pipeline integration.
|
| 10 |
+
"""
|
| 11 |
+
output_dir.mkdir(parents=True, exist_ok=True)
|
| 12 |
+
manifest = output_dir / "graphrag_manifest.txt"
|
| 13 |
+
manifest.write_text(
|
| 14 |
+
"GraphRAG Build\nFiles:\n" + "\n".join(str(p) for p in selected_files),
|
| 15 |
+
encoding="utf-8"
|
| 16 |
+
)
|
| 17 |
+
return output_dir
|
_backend/cli/hf_deployer.py
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import tempfile
|
| 2 |
+
import os
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from huggingface_hub import HfApi, create_repo
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def deploy_space(space_id: str, source_dir: Path, token: str, private: bool = False):
|
| 8 |
+
def generate_dynamic_readme(title: str) -> str:
|
| 9 |
+
return f'''---\ntitle: {title}\nemoji: 🧑💼\ncolorFrom: indigo\ncolorTo: blue\nsdk: docker\nsdk_version: "1.0"\napp_file: app.py\npinned: false\n---\n\n# {title}\n\nThis Space is deployed with a dynamic README.\n'''
|
| 10 |
+
|
| 11 |
+
# Ask for a title interactively if not provided via env
|
| 12 |
+
import questionary
|
| 13 |
+
title = os.getenv("HF_SPACE_TITLE") or questionary.text("Enter Hugging Face Space title:", default="Interview Synthesizer").ask()
|
| 14 |
+
dynamic_readme = generate_dynamic_readme(title)
|
| 15 |
+
# Write to a temp file and copy to the repo root for upload
|
| 16 |
+
with tempfile.NamedTemporaryFile("w", delete=False, encoding="utf-8", suffix=".md") as tmpf:
|
| 17 |
+
tmpf.write(dynamic_readme)
|
| 18 |
+
tmpf.flush()
|
| 19 |
+
tmp_readme_path = Path(tmpf.name)
|
| 20 |
+
# Copy to repo root as README.md (overwrite just for upload)
|
| 21 |
+
import shutil
|
| 22 |
+
shutil.copy(tmp_readme_path, source_dir / "README.md")
|
| 23 |
+
api = HfApi()
|
| 24 |
+
try:
|
| 25 |
+
create_repo(space_id, repo_type="space", token=token, private=private, exist_ok=True)
|
| 26 |
+
except Exception as e:
|
| 27 |
+
print(f"Repo create/check warning: {e}")
|
| 28 |
+
|
| 29 |
+
api.upload_folder(
|
| 30 |
+
token=token,
|
| 31 |
+
repo_id=space_id,
|
| 32 |
+
repo_type="space",
|
| 33 |
+
folder_path=str(source_dir),
|
| 34 |
+
path_in_repo=".",
|
| 35 |
+
commit_message="Automated build & deploy",
|
| 36 |
+
)
|
| 37 |
+
print(f"Uploaded to https://huggingface.co/spaces/{space_id}")
|
_backend/cli/vector_db_builder.py
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
from dotenv import load_dotenv
|
| 3 |
+
from utils.document_management import load_document, transcript_chunker, merge_chunks
|
| 4 |
+
from utils.vector_db import VectorDB
|
| 5 |
+
from langchain.schema import Document
|
| 6 |
+
from uuid import uuid4
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
from typing import Optional
|
| 9 |
+
|
| 10 |
+
def build_vector_db_for_dir(
|
| 11 |
+
data_dir: str,
|
| 12 |
+
collection_name: str = "custom_collection",
|
| 13 |
+
embedding_length: int = 1536,
|
| 14 |
+
file_suffix: Optional[str] = None,
|
| 15 |
+
openai_api_key: Optional[str] = None,
|
| 16 |
+
verbose: bool = True,
|
| 17 |
+
):
|
| 18 |
+
"""
|
| 19 |
+
Build a new vector database for all files in a directory.
|
| 20 |
+
Args:
|
| 21 |
+
data_dir: Directory containing files to process.
|
| 22 |
+
collection_name: Name for the vector DB collection.
|
| 23 |
+
embedding_length: Embedding vector length.
|
| 24 |
+
file_suffix: Only process files with this suffix (e.g. '.srt', '.md'). If None, process all files.
|
| 25 |
+
openai_api_key: API key for embedding (if required by backend).
|
| 26 |
+
verbose: Print progress.
|
| 27 |
+
"""
|
| 28 |
+
load_dotenv()
|
| 29 |
+
working_dir = os.path.abspath(data_dir)
|
| 30 |
+
if not os.path.isdir(working_dir):
|
| 31 |
+
raise ValueError(f"Directory not found: {working_dir}")
|
| 32 |
+
|
| 33 |
+
all_documents = []
|
| 34 |
+
all_files = []
|
| 35 |
+
for root, dirs, files in os.walk(working_dir):
|
| 36 |
+
for file in files:
|
| 37 |
+
if file_suffix is None or file.endswith(file_suffix):
|
| 38 |
+
file_path = os.path.join(root, file)
|
| 39 |
+
relative_path = os.path.relpath(file_path, working_dir)
|
| 40 |
+
all_files.append(relative_path)
|
| 41 |
+
|
| 42 |
+
for file_path in all_files:
|
| 43 |
+
path = os.path.join(working_dir, file_path)
|
| 44 |
+
doc = load_document(path)
|
| 45 |
+
if doc is None:
|
| 46 |
+
if verbose:
|
| 47 |
+
print(f"Skipping file {file_path} as it could not be loaded.")
|
| 48 |
+
continue
|
| 49 |
+
# Try chunking if transcript_chunker is available, else treat as single doc
|
| 50 |
+
try:
|
| 51 |
+
chunks = transcript_chunker(doc, filename=file_path)
|
| 52 |
+
merged_chunks = merge_chunks(chunks)
|
| 53 |
+
documents = [
|
| 54 |
+
Document(
|
| 55 |
+
page_content=chunk["text"],
|
| 56 |
+
metadata={**chunk, "chunk_id": i, "id": str(uuid4()), "filename": file_path}
|
| 57 |
+
)
|
| 58 |
+
for i, chunk in enumerate(merged_chunks)
|
| 59 |
+
]
|
| 60 |
+
except Exception:
|
| 61 |
+
# Fallback: treat as single document
|
| 62 |
+
documents = [
|
| 63 |
+
Document(
|
| 64 |
+
page_content=doc if isinstance(doc, str) else str(doc),
|
| 65 |
+
metadata={"id": str(uuid4()), "filename": file_path}
|
| 66 |
+
)
|
| 67 |
+
]
|
| 68 |
+
if verbose:
|
| 69 |
+
print(f"Processing {file_path} with {len(documents)} chunks")
|
| 70 |
+
all_documents.extend(documents)
|
| 71 |
+
|
| 72 |
+
# Remove existing vector DB if present
|
| 73 |
+
chroma_db_path = os.path.join(working_dir, "chroma_db")
|
| 74 |
+
if all_documents:
|
| 75 |
+
if os.path.exists(chroma_db_path):
|
| 76 |
+
import shutil
|
| 77 |
+
shutil.rmtree(chroma_db_path)
|
| 78 |
+
if verbose:
|
| 79 |
+
print("Removed existing vector database directory.")
|
| 80 |
+
vector_db = VectorDB(
|
| 81 |
+
collection_name=collection_name,
|
| 82 |
+
embedding_length=embedding_length,
|
| 83 |
+
open_ai_api_key=openai_api_key or os.getenv("OPENAI_API_KEY"),
|
| 84 |
+
working_dir=working_dir,
|
| 85 |
+
documents=all_documents
|
| 86 |
+
)
|
| 87 |
+
if verbose:
|
| 88 |
+
print(f"Created new vector database with {len(all_documents)} documents")
|
| 89 |
+
else:
|
| 90 |
+
if verbose:
|
| 91 |
+
print("No documents found to process")
|
| 92 |
+
if verbose:
|
| 93 |
+
print("Vector database reset and data upload complete with ChromaDB.")
|
_backend/frontend/404.html
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/a8e3f8fe32df230d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-2ab7a1c436f84d2e.js"/><script src="/_next/static/chunks/4bd1b696-4b0f7518a463c96c.js" async=""></script><script src="/_next/static/chunks/684-9f376c0e2a3ae45e.js" async=""></script><script src="/_next/static/chunks/main-app-373aaee17d94d527.js" async=""></script><script src="/_next/static/chunks/8187f03c-c57963cb1b573777.js" async=""></script><script src="/_next/static/chunks/822-c73eb0df0acbcf5c.js" async=""></script><script src="/_next/static/chunks/775-e50ffdc055346ff7.js" async=""></script><script src="/_next/static/chunks/527-17021ee980e21f8b.js" async=""></script><script src="/_next/static/chunks/app/layout-6da5960c930aa43b.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Transcription Chatbot</title><meta name="description" content="Generated by create next app"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__className_989755 antialiased"><script>((e,t,r,n,o,i,a,s)=>{let l=document.documentElement,u=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&i?o.map(e=>i[e]||e):o;r?(l.classList.remove(...n),l.classList.add(i&&i[t]?i[t]:t)):l.setAttribute(e,t)}),r=t,s&&u.includes(r)&&(l.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","theme","dark",null,["light","dark"],null,true,true)</script><div style="--sidebar-width:16rem;--sidebar-width-icon:3rem" class="relative flex w-full min-w-0 flex-col px-0"><div class="flex h-screen w-full"><div class="group peer hidden md:block text-sidebar-foreground" data-state="expanded" data-collapsible="" data-variant="sidebar" data-side="left"><div class="duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180 group-data-[collapsible=icon]:w-[--sidebar-width-icon]"></div><div class="duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l border-r border-border/50 bg-gradient-to-b from-card/50 to-background"><div data-sidebar="sidebar" class="flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"><div data-sidebar="header" class="flex flex-col gap-2 p-2 border-b border-border/50 bg-background/95 backdrop-blur"><div class="p-4 flex items-center justify-between"><div class="flex items-center gap-2 min-w-0"><h1 class="font-semibold text-lg bg-gradient-to-r from-foreground to-foreground/70 bg-clip-text text-transparent truncate">Transcriptinator 6000</h1></div></div></div><div data-sidebar="content" class="flex min-h-0 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden flex-1 overflow-x-clip custom-scrollbar"><div data-sidebar="group" class="relative flex w-full min-w-0 flex-col p-2 px-0"><ul data-sidebar="menu" class="flex w-full min-w-0 flex-col gap-1 px-2 py-2"><li data-sidebar="menu-item" class="group/menu-item relative"><button data-sidebar="menu-button" data-size="default" data-active="false" class="peer/menu-button flex w-full items-center gap-2 overflow-hidden p-2 text-left outline-none ring-sidebar-ring focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 hover:text-sidebar-accent-foreground text-sm transition-all duration-200 rounded-lg h-10 justify-start bg-primary/10 hover:bg-primary/20 text-primary border border-primary/20"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg><span class="text-sm font-medium">New chat</span></button></li><li data-sidebar="menu-item" class="group/menu-item relative"><button data-sidebar="menu-button" data-size="default" data-active="false" class="peer/menu-button flex w-full items-center gap-2 overflow-hidden p-2 text-left outline-none ring-sidebar-ring focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 hover:text-sidebar-accent-foreground text-sm transition-all duration-200 hover:bg-accent/50 rounded-lg h-10 justify-start"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search h-4 w-4"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.3-4.3"></path></svg><span class="text-sm font-medium">Search chats</span></button></li></ul><div data-sidebar="group-label" class="duration-200 flex h-8 shrink-0 items-center rounded-md outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0 group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 px-4 text-xs font-medium text-muted-foreground/80 mt-4 mb-2">Recent Chats</div><div data-sidebar="group-content" class="w-full text-sm"><ul data-sidebar="menu" class="flex w-full min-w-0 flex-col gap-1 px-2"><div class="px-4 py-8 text-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square h-8 w-8 text-muted-foreground/50 mx-auto mb-3"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><p class="text-sm text-muted-foreground">No conversations yet</p><p class="text-xs text-muted-foreground/60 mt-1">Create your first chat to get started</p></div></ul></div></div></div></div></div></div><main class="relative min-h-svh bg-background peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow flex-1 flex flex-col min-w-0"><div class="flex items-center justify-between h-14 px-4 border-b border-border/50 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60"><div class="flex items-center gap-3"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground h-8 w-8 hover:bg-accent/50 transition-colors rounded-md" data-sidebar="trigger"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg><span class="sr-only">Toggle Sidebar</span></button><div class="flex items-center gap-2 min-w-0"><div class="flex items-center gap-1.5 min-w-0"><h1 class="font-semibold text-base truncate max-w-[200px] sm:max-w-[400px]">New Chat</h1></div></div></div></div><div class="flex-1 overflow-hidden"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div></div></main></div><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events:none"><ol tabindex="-1" class="fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]"></ol></div></div><script src="/_next/static/chunks/webpack-2ab7a1c436f84d2e.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[6543,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"ThemeProvider\"]\n3:I[3276,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"SidebarProvider\"]\n4:I[2668,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"default\"]\n5:I[3276,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"SidebarInset\"]\n6:I[5808,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"default\"]\n7:I[7555,[],\"\"]\n8:I[1295,[],\"\"]\n9:I[2558,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"Toaster\"]\na:I[9665,[],\"OutletBoundary\"]\nd:I[9665,[],\"ViewportBoundary\"]\nf:I[9665,[],\"MetadataBoundary\"]\n11:I[6614,[],\"\"]\n:HL[\"/_next/static/css/a8e3f8fe32df230d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"-BZUAGOoGBhXHJLyfVPhi\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a8e3f8fe32df230d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__className_989755 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"enableSystem\":true,\"disableTransitionOnChange\":true,\"children\":[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-screen w-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{\"className\":\"flex-1 flex flex-col min-w-0\",\"children\":[[\"$\",\"$L6\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex-1 overflow-hidden\",\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],[\"$\",\"$L9\",null,{}]]}]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:children:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:children:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:children:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:children:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"$undefined\",null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",null]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"eIkkI0oVDuYPiwx787ZRG\",{\"children\":[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],null]}],[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"c:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"Transcription Chatbot\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Generated by create next app\"}]]\n"])</script></body></html>
|
_backend/frontend/_next/static/-BZUAGOoGBhXHJLyfVPhi/_buildManifest.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:3,errorRate:1e-4,numBits:58,numHashes:14,bitArray:[1,1,0,e,0,e,e,r,e,e,r,e,e,e,r,e,r,r,e,r,r,r,e,r,r,r,r,r,e,r,e,e,e,e,r,e,e,r,e,e,e,r,e,r,e,r,r,e,e,e,r,r,e,e,e,r,e,e]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-71d2b6a7b832d02a.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
_backend/frontend/_next/static/-BZUAGOoGBhXHJLyfVPhi/_ssgManifest.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
_backend/frontend/_next/static/chunks/341.2903e54d3da731c1.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[341],{303:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AmpStateContext",{enumerable:!0,get:function(){return r}});let r=n(4252)._(n(4232)).default.createContext({})},3776:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let r=n(4232),o=r.useLayoutEffect,l=r.useEffect;function a(e){let{headManager:t,reduceComponentsToState:n}=e;function a(){if(t&&t.mountedInstances){let o=r.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(n(o,e))}}return o(()=>{var n;return null==t||null==(n=t.mountedInstances)||n.add(e.children),()=>{var n;null==t||null==(n=t.mountedInstances)||n.delete(e.children)}}),o(()=>(t&&(t._pendingUpdate=a),()=>{t&&(t._pendingUpdate=a)})),l(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},5679:(e,t,n)=>{var r=n(5364);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return y},defaultHead:function(){return p}});let o=n(4252),l=n(8365),a=n(7876),i=l._(n(4232)),d=o._(n(3776)),s=n(303),u=n(8831),c=n(6807);function p(e){void 0===e&&(e=!1);let t=[(0,a.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,a.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===i.default.Fragment?e.concat(i.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}n(6079);let h=["name","httpEquiv","charSet","itemProp"];function m(e,t){let{inAmpMode:n}=t;return e.reduce(f,[]).reverse().concat(p(n).reverse()).filter(function(){let e=new Set,t=new Set,n=new Set,r={};return o=>{let l=!0,a=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){a=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?l=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?l=!1:t.add(o.type);break;case"meta":for(let e=0,t=h.length;e<t;e++){let t=h[e];if(o.props.hasOwnProperty(t)){if("charSet"===t)n.has(t)?l=!1:n.add(t);else{let e=o.props[t],n=r[t]||new Set;("name"!==t||!a)&&n.has(e)?l=!1:(n.add(e),r[t]=n)}}}}return l}}()).reverse().map((e,t)=>{let o=e.key||t;if(r.env.__NEXT_OPTIMIZE_FONTS&&!n&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,i.default.cloneElement(e,t)}return i.default.cloneElement(e,{key:o})})}let y=function(e){let{children:t}=e,n=(0,i.useContext)(s.AmpStateContext),r=(0,i.useContext)(u.HeadManagerContext);return(0,a.jsx)(d.default,{reduceComponentsToState:m,headManager:r,inAmpMode:(0,c.isInAmpMode)(n),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6079:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},6807:(e,t)=>{function n(e){let{ampFirst:t=!1,hybrid:n=!1,hasQuery:r=!1}=void 0===e?{}:e;return t||n&&r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return n}})},9341:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let r=n(4252),o=n(7876),l=r._(n(4232)),a=r._(n(5679)),i={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function d(e){let{req:t,res:n,err:r}=e;return{statusCode:n&&n.statusCode?n.statusCode:r?r.statusCode:404,hostname:window.location.hostname}}let s={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};class u extends l.default.Component{render(){let{statusCode:e,withDarkMode:t=!0}=this.props,n=this.props.title||i[e]||"An unexpected error has occurred";return(0,o.jsxs)("div",{style:s.error,children:[(0,o.jsx)(a.default,{children:(0,o.jsx)("title",{children:e?e+": "+n:"Application error: a client-side exception has occurred"})}),(0,o.jsxs)("div",{style:s.desc,children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),e?(0,o.jsx)("h1",{className:"next-error-h1",style:s.h1,children:e}):null,(0,o.jsx)("div",{style:s.wrap,children:(0,o.jsxs)("h2",{style:s.h2,children:[this.props.title||e?n:(0,o.jsxs)(o.Fragment,{children:["Application error: a client-side exception has occurred"," ",!!this.props.hostname&&(0,o.jsxs)(o.Fragment,{children:["while loading ",this.props.hostname]})," ","(see the browser console for more information)"]}),"."]})})]})]})}}u.displayName="ErrorPage",u.getInitialProps=d,u.origGetInitialProps=d,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}}]);
|
_backend/frontend/_next/static/chunks/472.a3826d29d6854395.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[472],{472:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let u=l(4252),n=l(7876),a=u._(l(4232)),o=l(2746);async function r(e){let{Component:t,ctx:l}=e;return{pageProps:await (0,o.loadGetInitialProps)(t,l)}}class s extends a.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,n.jsx)(e,{...t})}}s.origGetInitialProps=r,s.getInitialProps=r,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}}]);
|
_backend/frontend/_next/static/chunks/4bd1b696-4b0f7518a463c96c.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/527-17021ee980e21f8b.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[527],{285:(e,t,a)=>{a.d(t,{$:()=>d});var s=a(5155),n=a(2115),r=a(6634),o=a(2085),l=a(9434);let i=(0,o.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),d=n.forwardRef((e,t)=>{let{className:a,variant:n,size:o,asChild:d=!1,...c}=e,f=d?r.DX:"button";return(0,s.jsx)(f,{className:(0,l.cn)(i({variant:n,size:o,className:a})),ref:t,...c})});d.displayName="Button"},514:(e,t,a)=>{a.d(t,{QN:()=>f,RL:()=>l,_e:()=>d,fP:()=>u,lr:()=>o,rr:()=>r,tj:()=>c});var s=a(8606);let n=async()=>{let e=[];return await s.A.setItem("chats",e),e},r=async()=>{let e=await s.A.getItem("chats");return e||(e=await n()),e},o=async e=>(await r()).find(t=>t.id===e),l=async(e,t)=>{let a=await r(),n={id:Date.now().toString(),title:e,messages:t,date:new Date().toDateString()};return a.push(n),await s.A.setItem("chats",a),n},i=async(e,t)=>{let a=await r(),n=a.findIndex(t=>t.id===e);if(-1!==n)return a[n]={...a[n],...t},await s.A.setItem("chats",a),a[n]},d=async e=>{let t=await r(),a=t.filter(t=>t.id!==e);return a.length!==t.length&&(await s.A.setItem("chats",a),!0)},c=async(e,t)=>{let a=await r(),n=a.findIndex(t=>t.id===e);if(-1===n)return;let o=Date.now().toString(),l={...t,id:o};return a[n].messages.push(l),await s.A.setItem("chats",a),a[n]},f=async(e,t)=>{let a=await r(),n=a.findIndex(t=>t.id===e);if(-1===n)return;let o=a[n].messages.findIndex(e=>e.id===t);if(-1!==o)return a[n].messages.splice(o,1),await s.A.setItem("chats",a),a[n]},u=async(e,t)=>{let a=await o(e);if(!a)return!1;let s={...a,title:t};return await i(e,s),!0}},1927:(e,t,a)=>{a.d(t,{L:()=>i});var s=a(5453),n=a(514),r=a(5533),o=a(6521);async function l(e){try{let t=function(e){let t="# ".concat(e.title||"Chat Export","\n\n");t+="**Date:** ".concat(new Date(e.date).toLocaleDateString(),"\n\n"),t+="[TOC]\n\n";let a=e.messages.filter(e=>"system"!==e.role);for(let e=0;e<a.length;e++){let s=a[e];"user"===s.role?t+=" ## ".concat(s.content,"\n\n"):"assistant"===s.role&&(t+="".concat(s.content,"\n\n"),e<a.length-1&&(t+="\\pagebreak\n\n"))}return t}(e),a=await (0,o.S7)(t),s="".concat(e.title||"Chat","_").concat(new Date().toISOString().split("T")[0],".docx");(0,o.Hi)(a,s)}catch(e){throw console.error("Failed to download chat as markdown:",e),e}}let i=(0,s.v)((e,t)=>({selectedChat:null,selectedChatId:null,loadChat:async t=>{let a=await (0,n.lr)(t);if(a)return e({selectedChat:a,selectedChatId:t}),a;throw Error("Chat not found")},clearSelectedChat:()=>{e({selectedChat:null,selectedChatId:null})},sendMessage:async a=>{let{selectedChat:s}=t();if(!s)return"";console.log("Sending message",a);let o=await (0,n.tj)(s.id,a);if(o){let t=o.messages[o.messages.length-1].id;return e({selectedChat:o}),r.tO.emit(r.YV),t}return""},removeMessage:async a=>{let{selectedChat:s}=t();if(!s)return;let o=await (0,n.QN)(s.id,a);o&&(e({selectedChat:o}),r.tO.emit(r.YV))},updateChatName:async(a,s)=>{let o=await (0,n.fP)(a,s);if(o){let{selectedChat:n}=t();n&&n.id===a&&(e({selectedChat:{...n,title:s}}),r.tO.emit(r.RC))}return o},deleteChat:async e=>{let a=await (0,n._e)(e);if(a){let{selectedChat:a}=t();a&&a.id===e&&t().clearSelectedChat(),r.tO.emit(r.YV)}return a},downloadChat:async()=>{let{selectedChat:e}=t();if(!e)throw Error("No chat selected");try{await l(e)}catch(e){throw console.error("Failed to download chat:",e),e}}}))},4165:(e,t,a)=>{a.d(t,{Cf:()=>f,Es:()=>m,L3:()=>p,c7:()=>u,lG:()=>i,rr:()=>h});var s=a(5155),n=a(2115),r=a(9359),o=a(4416),l=a(9434);let i=r.bL;r.l9;let d=r.ZL;r.bm;let c=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.hJ,{ref:t,className:(0,l.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...n})});c.displayName=r.hJ.displayName;let f=n.forwardRef((e,t)=>{let{className:a,children:n,...i}=e;return(0,s.jsxs)(d,{children:[(0,s.jsx)(c,{}),(0,s.jsxs)(r.UC,{ref:t,className:(0,l.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...i,children:[n,(0,s.jsxs)(r.bm,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,s.jsx)(o.A,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});f.displayName=r.UC.displayName;let u=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,l.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};u.displayName="DialogHeader";let m=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,l.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};m.displayName="DialogFooter";let p=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.hE,{ref:t,className:(0,l.cn)("text-lg font-semibold leading-none tracking-tight",a),...n})});p.displayName=r.hE.displayName;let h=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.VY,{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",a),...n})});h.displayName=r.VY.displayName},5533:(e,t,a)=>{a.d(t,{RC:()=>r,YV:()=>n,tO:()=>s});let s=new(a(662)).EventEmitter,n="CHAT_UPDATED",r="CHAT_RENAMED"},6424:(e,t,a)=>{a.d(t,{F:()=>l});var s=a(5155),n=a(2115),r=a(6542),o=a(9434);let l=n.forwardRef((e,t)=>{let{className:a,children:n,...l}=e;return(0,s.jsxs)(r.bL,{ref:t,className:(0,o.cn)("relative overflow-hidden",a),...l,children:[(0,s.jsx)(r.LM,{className:"h-full w-full rounded-[inherit]",children:n}),(0,s.jsx)(i,{}),(0,s.jsx)(r.OK,{})]})});l.displayName=r.bL.displayName;let i=n.forwardRef((e,t)=>{let{className:a,orientation:n="vertical",...l}=e;return(0,s.jsx)(r.VM,{ref:t,orientation:n,className:(0,o.cn)("flex touch-none select-none transition-colors","vertical"===n&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===n&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",a),...l,children:(0,s.jsx)(r.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=r.VM.displayName},7481:(e,t,a)=>{a.d(t,{dj:()=>u});var s=a(2115);let n=0,r=new Map,o=e=>{if(r.has(e))return;let t=setTimeout(()=>{r.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:a}=t;return a?o(a):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===a||void 0===a?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},i=[],d={toasts:[]};function c(e){d=l(d,e),i.forEach(e=>{e(d)})}function f(e){let{...t}=e,a=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:a});return c({type:"ADD_TOAST",toast:{...t,id:a,open:!0,onOpenChange:e=>{e||s()}}}),{id:a,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:a}})}}function u(){let[e,t]=s.useState(d);return s.useEffect(()=>(i.push(t),()=>{let e=i.indexOf(t);e>-1&&i.splice(e,1)}),[e]),{...e,toast:f,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},8382:(e,t,a)=>{a.d(t,{CG:()=>c,cj:()=>d,h:()=>p});var s=a(5155),n=a(2115),r=a(9359),o=a(2085),l=a(4416),i=a(9434);let d=r.bL,c=r.l9;r.bm;let f=r.ZL,u=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.hJ,{className:(0,i.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...n,ref:t})});u.displayName=r.hJ.displayName;let m=(0,o.F)("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),p=n.forwardRef((e,t)=>{let{side:a="right",className:n,children:o,...d}=e;return(0,s.jsxs)(f,{children:[(0,s.jsx)(u,{}),(0,s.jsxs)(r.UC,{ref:t,className:(0,i.cn)(m({side:a}),n),...d,children:[o,(0,s.jsxs)(r.bm,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[(0,s.jsx)(l.A,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});p.displayName=r.UC.displayName,n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.hE,{ref:t,className:(0,i.cn)("text-lg font-semibold text-foreground",a),...n})}).displayName=r.hE.displayName,n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.VY,{ref:t,className:(0,i.cn)("text-sm text-muted-foreground",a),...n})}).displayName=r.VY.displayName},9434:(e,t,a)=>{a.d(t,{cn:()=>r});var s=a(2596),n=a(9688);function r(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,n.QP)((0,s.$)(t))}}}]);
|
_backend/frontend/_next/static/chunks/558-386ce3b87f5e21a9.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/684-9f376c0e2a3ae45e.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/775-e50ffdc055346ff7.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[775],{1114:(e,t,n)=>{"use strict";n.d(t,{rc:()=>ef,bm:()=>ep,VY:()=>ed,Kq:()=>ea,bL:()=>es,hE:()=>ec,LM:()=>eu});var r,o=n(2115),i=n.t(o,2),l=n(7650);function a(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}function u(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function s(...e){return o.useCallback(function(...e){return t=>{let n=!1,r=e.map(e=>{let r=u(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];"function"==typeof n?n():u(e[t],null)}}}}(...e),e)}var c=n(4971),d=n(5920),f=n(6266),p=n(5155);function m(e,t=[]){let n=[],r=()=>{let t=n.map(e=>o.createContext(e));return function(n){let r=n?.[e]||t;return o.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return r.scopeName=e,[function(t,r){let i=o.createContext(r),l=n.length;n=[...n,r];let a=t=>{let{scope:n,children:r,...a}=t,u=n?.[e]?.[l]||i,s=o.useMemo(()=>a,Object.values(a));return(0,p.jsx)(u.Provider,{value:s,children:r})};return a.displayName=t+"Provider",[a,function(n,a){let u=a?.[e]?.[l]||i,s=o.useContext(u);if(s)return s;if(void 0!==r)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let o=n(e)[`__scope${r}`];return{...t,...o}},{});return o.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}(r,...t)]}var v=n(6634),h=new WeakMap;function g(e,t){if("at"in Array.prototype)return Array.prototype.at.call(e,t);let n=function(e,t){let n=e.length,r=y(t),o=r>=0?r:n+r;return o<0||o>=n?-1:o}(e,t);return -1===n?void 0:e[n]}function y(e){return e!=e||0===e?0:Math.trunc(e)}r=new WeakMap;var w=n(338),x=n(7268),b=globalThis?.document?o.useLayoutEffect:()=>{},E=e=>{let{present:t,children:n}=e,r=function(e){var t,n;let[r,i]=o.useState(),l=o.useRef(null),a=o.useRef(e),u=o.useRef("none"),[s,c]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},o.useReducer((e,t)=>{let r=n[e][t];return null!=r?r:e},t));return o.useEffect(()=>{let e=R(l.current);u.current="mounted"===s?e:"none"},[s]),b(()=>{let t=l.current,n=a.current;if(n!==e){let r=u.current,o=R(t);e?c("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?c("UNMOUNT"):n&&r!==o?c("ANIMATION_OUT"):c("UNMOUNT"),a.current=e}},[e,c]),b(()=>{if(r){var e;let t;let n=null!==(e=r.ownerDocument.defaultView)&&void 0!==e?e:window,o=e=>{let o=R(l.current).includes(e.animationName);if(e.target===r&&o&&(c("ANIMATION_END"),!a.current)){let e=r.style.animationFillMode;r.style.animationFillMode="forwards",t=n.setTimeout(()=>{"forwards"===r.style.animationFillMode&&(r.style.animationFillMode=e)})}},i=e=>{e.target===r&&(u.current=R(l.current))};return r.addEventListener("animationstart",i),r.addEventListener("animationcancel",o),r.addEventListener("animationend",o),()=>{n.clearTimeout(t),r.removeEventListener("animationstart",i),r.removeEventListener("animationcancel",o),r.removeEventListener("animationend",o)}}c("ANIMATION_END")},[r,c]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:o.useCallback(e=>{l.current=e?getComputedStyle(e):null,i(e)},[])}}(t),i="function"==typeof n?n({present:r.isPresent}):o.Children.only(n),l=s(r.ref,function(e){var t,n;let r=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?e.ref:(o=(r=null===(n=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===n?void 0:n.get)&&"isReactWarning"in r&&r.isReactWarning)?e.props.ref:e.props.ref||e.ref}(i));return"function"==typeof n||r.isPresent?o.cloneElement(i,{ref:l}):null};function R(e){return(null==e?void 0:e.animationName)||"none"}E.displayName="Presence";var T=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let n=(0,v.TL)(`Primitive.${t}`),r=o.forwardRef((e,r)=>{let{asChild:o,...i}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,p.jsx)(o?n:t,{...i,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function C(e){let t=o.useRef(e);return o.useEffect(()=>{t.current=e}),o.useMemo(()=>(...e)=>t.current?.(...e),[])}var M=i[" useInsertionEffect ".trim().toString()]||b,N=(Symbol("RADIX:SYNC_STATE"),Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"})),A=o.forwardRef((e,t)=>(0,p.jsx)(T.span,{...e,ref:t,style:{...N,...e.style}}));A.displayName="VisuallyHidden";var S="ToastProvider",[P,j,k]=function(e){let t=e+"CollectionProvider",[n,r]=m(t),[i,l]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=e=>{let{scope:t,children:n}=e,r=o.useRef(null),l=o.useRef(new Map).current;return(0,p.jsx)(i,{scope:t,itemMap:l,collectionRef:r,children:n})};a.displayName=t;let u=e+"CollectionSlot",c=(0,v.TL)(u),d=o.forwardRef((e,t)=>{let{scope:n,children:r}=e,o=s(t,l(u,n).collectionRef);return(0,p.jsx)(c,{ref:o,children:r})});d.displayName=u;let f=e+"CollectionItemSlot",h="data-radix-collection-item",g=(0,v.TL)(f),y=o.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,a=o.useRef(null),u=s(t,a),c=l(f,n);return o.useEffect(()=>(c.itemMap.set(a,{ref:a,...i}),()=>void c.itemMap.delete(a))),(0,p.jsx)(g,{[h]:"",ref:u,children:r})});return y.displayName=f,[{Provider:a,Slot:d,ItemSlot:y},function(t){let n=l(e+"CollectionConsumer",t);return o.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(h,"]")));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])},r]}("Toast"),[L,D]=m("Toast",[k]),[O,I]=L(S),_=e=>{let{__scopeToast:t,label:n="Notification",duration:r=5e3,swipeDirection:i="right",swipeThreshold:l=50,children:a}=e,[u,s]=o.useState(null),[c,d]=o.useState(0),f=o.useRef(!1),m=o.useRef(!1);return n.trim()||console.error("Invalid prop `label` supplied to `".concat(S,"`. Expected non-empty `string`.")),(0,p.jsx)(P.Provider,{scope:t,children:(0,p.jsx)(O,{scope:t,label:n,duration:r,swipeDirection:i,swipeThreshold:l,toastCount:c,viewport:u,onViewportChange:s,onToastAdd:o.useCallback(()=>d(e=>e+1),[]),onToastRemove:o.useCallback(()=>d(e=>e-1),[]),isFocusedToastEscapeKeyDownRef:f,isClosePausedRef:m,children:a})})};_.displayName=S;var F="ToastViewport",U=["F8"],K="toast.viewportPause",W="toast.viewportResume",H=o.forwardRef((e,t)=>{let{__scopeToast:n,hotkey:r=U,label:i="Notifications ({hotkey})",...l}=e,a=I(F,n),u=j(n),c=o.useRef(null),d=o.useRef(null),f=o.useRef(null),m=o.useRef(null),v=s(t,m,a.onViewportChange),h=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),g=a.toastCount>0;o.useEffect(()=>{let e=e=>{var t;0!==r.length&&r.every(t=>e[t]||e.code===t)&&(null===(t=m.current)||void 0===t||t.focus())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[r]),o.useEffect(()=>{let e=c.current,t=m.current;if(g&&e&&t){let n=()=>{if(!a.isClosePausedRef.current){let e=new CustomEvent(K);t.dispatchEvent(e),a.isClosePausedRef.current=!0}},r=()=>{if(a.isClosePausedRef.current){let e=new CustomEvent(W);t.dispatchEvent(e),a.isClosePausedRef.current=!1}},o=t=>{e.contains(t.relatedTarget)||r()},i=()=>{e.contains(document.activeElement)||r()};return e.addEventListener("focusin",n),e.addEventListener("focusout",o),e.addEventListener("pointermove",n),e.addEventListener("pointerleave",i),window.addEventListener("blur",n),window.addEventListener("focus",r),()=>{e.removeEventListener("focusin",n),e.removeEventListener("focusout",o),e.removeEventListener("pointermove",n),e.removeEventListener("pointerleave",i),window.removeEventListener("blur",n),window.removeEventListener("focus",r)}}},[g,a.isClosePausedRef]);let y=o.useCallback(e=>{let{tabbingDirection:t}=e,n=u().map(e=>{let n=e.ref.current,r=[n,...function(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}(n)];return"forwards"===t?r:r.reverse()});return("forwards"===t?n.reverse():n).flat()},[u]);return o.useEffect(()=>{let e=m.current;if(e){let t=t=>{let n=t.altKey||t.ctrlKey||t.metaKey;if("Tab"===t.key&&!n){var r,o,i;let n=document.activeElement,l=t.shiftKey;if(t.target===e&&l){null===(r=d.current)||void 0===r||r.focus();return}let a=y({tabbingDirection:l?"backwards":"forwards"}),u=a.findIndex(e=>e===n);el(a.slice(u+1))?t.preventDefault():l?null===(o=d.current)||void 0===o||o.focus():null===(i=f.current)||void 0===i||i.focus()}};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)}},[u,y]),(0,p.jsxs)(w.lg,{ref:c,role:"region","aria-label":i.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:g?void 0:"none"},children:[g&&(0,p.jsx)(V,{ref:d,onFocusFromOutsideViewport:()=>{el(y({tabbingDirection:"forwards"}))}}),(0,p.jsx)(P.Slot,{scope:n,children:(0,p.jsx)(T.ol,{tabIndex:-1,...l,ref:v})}),g&&(0,p.jsx)(V,{ref:f,onFocusFromOutsideViewport:()=>{el(y({tabbingDirection:"backwards"}))}})]})});H.displayName=F;var $="ToastFocusProxy",V=o.forwardRef((e,t)=>{let{__scopeToast:n,onFocusFromOutsideViewport:r,...o}=e,i=I($,n);return(0,p.jsx)(A,{"aria-hidden":!0,tabIndex:0,...o,ref:t,style:{position:"fixed"},onFocus:e=>{var t;let n=e.relatedTarget;(null===(t=i.viewport)||void 0===t?void 0:t.contains(n))||r()}})});V.displayName=$;var B="Toast",z=o.forwardRef((e,t)=>{let{forceMount:n,open:r,defaultOpen:i,onOpenChange:l,...u}=e,[s,c]=function({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,l,a]=function({defaultProp:e,onChange:t}){let[n,r]=o.useState(e),i=o.useRef(n),l=o.useRef(t);return M(()=>{l.current=t},[t]),o.useEffect(()=>{i.current!==n&&(l.current?.(n),i.current=n)},[n,i]),[n,r,l]}({defaultProp:t,onChange:n}),u=void 0!==e,s=u?e:i;{let t=o.useRef(void 0!==e);o.useEffect(()=>{let e=t.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${r} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=u},[u,r])}return[s,o.useCallback(t=>{if(u){let n="function"==typeof t?t(e):t;n!==e&&a.current?.(n)}else l(t)},[u,e,l,a])]}({prop:r,defaultProp:null==i||i,onChange:l,caller:B});return(0,p.jsx)(E,{present:n||s,children:(0,p.jsx)(q,{open:s,...u,ref:t,onClose:()=>c(!1),onPause:C(e.onPause),onResume:C(e.onResume),onSwipeStart:a(e.onSwipeStart,e=>{e.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:a(e.onSwipeMove,e=>{let{x:t,y:n}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","move"),e.currentTarget.style.setProperty("--radix-toast-swipe-move-x","".concat(t,"px")),e.currentTarget.style.setProperty("--radix-toast-swipe-move-y","".concat(n,"px"))}),onSwipeCancel:a(e.onSwipeCancel,e=>{e.currentTarget.setAttribute("data-swipe","cancel"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:a(e.onSwipeEnd,e=>{let{x:t,y:n}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","end"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.setProperty("--radix-toast-swipe-end-x","".concat(t,"px")),e.currentTarget.style.setProperty("--radix-toast-swipe-end-y","".concat(n,"px")),c(!1)})})})});z.displayName=B;var[Y,X]=L(B,{onClose(){}}),q=o.forwardRef((e,t)=>{let{__scopeToast:n,type:r="foreground",duration:i,open:u,onClose:c,onEscapeKeyDown:d,onPause:f,onResume:m,onSwipeStart:v,onSwipeMove:h,onSwipeCancel:g,onSwipeEnd:y,...x}=e,b=I(B,n),[E,R]=o.useState(null),M=s(t,e=>R(e)),N=o.useRef(null),A=o.useRef(null),S=i||b.duration,j=o.useRef(0),k=o.useRef(S),L=o.useRef(0),{onToastAdd:D,onToastRemove:O}=b,_=C(()=>{var e;(null==E?void 0:E.contains(document.activeElement))&&(null===(e=b.viewport)||void 0===e||e.focus()),c()}),F=o.useCallback(e=>{e&&e!==1/0&&(window.clearTimeout(L.current),j.current=new Date().getTime(),L.current=window.setTimeout(_,e))},[_]);o.useEffect(()=>{let e=b.viewport;if(e){let t=()=>{F(k.current),null==m||m()},n=()=>{let e=new Date().getTime()-j.current;k.current=k.current-e,window.clearTimeout(L.current),null==f||f()};return e.addEventListener(K,n),e.addEventListener(W,t),()=>{e.removeEventListener(K,n),e.removeEventListener(W,t)}}},[b.viewport,S,f,m,F]),o.useEffect(()=>{u&&!b.isClosePausedRef.current&&F(S)},[u,S,b.isClosePausedRef,F]),o.useEffect(()=>(D(),()=>O()),[D,O]);let U=o.useMemo(()=>E?function e(t){let n=[];return Array.from(t.childNodes).forEach(t=>{var r;if(t.nodeType===t.TEXT_NODE&&t.textContent&&n.push(t.textContent),(r=t).nodeType===r.ELEMENT_NODE){let r=t.ariaHidden||t.hidden||"none"===t.style.display,o=""===t.dataset.radixToastAnnounceExclude;if(!r){if(o){let e=t.dataset.radixToastAnnounceAlt;e&&n.push(e)}else n.push(...e(t))}}}),n}(E):null,[E]);return b.viewport?(0,p.jsxs)(p.Fragment,{children:[U&&(0,p.jsx)(G,{__scopeToast:n,role:"status","aria-live":"foreground"===r?"assertive":"polite","aria-atomic":!0,children:U}),(0,p.jsx)(Y,{scope:n,onClose:_,children:l.createPortal((0,p.jsx)(P.ItemSlot,{scope:n,children:(0,p.jsx)(w.bL,{asChild:!0,onEscapeKeyDown:a(d,()=>{b.isFocusedToastEscapeKeyDownRef.current||_(),b.isFocusedToastEscapeKeyDownRef.current=!1}),children:(0,p.jsx)(T.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":u?"open":"closed","data-swipe-direction":b.swipeDirection,...x,ref:M,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:a(e.onKeyDown,e=>{"Escape"!==e.key||(null==d||d(e.nativeEvent),e.nativeEvent.defaultPrevented||(b.isFocusedToastEscapeKeyDownRef.current=!0,_()))}),onPointerDown:a(e.onPointerDown,e=>{0===e.button&&(N.current={x:e.clientX,y:e.clientY})}),onPointerMove:a(e.onPointerMove,e=>{if(!N.current)return;let t=e.clientX-N.current.x,n=e.clientY-N.current.y,r=!!A.current,o=["left","right"].includes(b.swipeDirection),i=["left","up"].includes(b.swipeDirection)?Math.min:Math.max,l=o?i(0,t):0,a=o?0:i(0,n),u="touch"===e.pointerType?10:2,s={x:l,y:a},c={originalEvent:e,delta:s};r?(A.current=s,eo("toast.swipeMove",h,c,{discrete:!1})):ei(s,b.swipeDirection,u)?(A.current=s,eo("toast.swipeStart",v,c,{discrete:!1}),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>u||Math.abs(n)>u)&&(N.current=null)}),onPointerUp:a(e.onPointerUp,e=>{let t=A.current,n=e.target;if(n.hasPointerCapture(e.pointerId)&&n.releasePointerCapture(e.pointerId),A.current=null,N.current=null,t){let n=e.currentTarget,r={originalEvent:e,delta:t};ei(t,b.swipeDirection,b.swipeThreshold)?eo("toast.swipeEnd",y,r,{discrete:!0}):eo("toast.swipeCancel",g,r,{discrete:!0}),n.addEventListener("click",e=>e.preventDefault(),{once:!0})}})})})}),b.viewport)})]}):null}),G=e=>{let{__scopeToast:t,children:n,...r}=e,i=I(B,t),[l,a]=o.useState(!1),[u,s]=o.useState(!1);return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>{},t=C(e);b(()=>{let e=0,n=0;return e=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(e),window.cancelAnimationFrame(n)}},[t])}(()=>a(!0)),o.useEffect(()=>{let e=window.setTimeout(()=>s(!0),1e3);return()=>window.clearTimeout(e)},[]),u?null:(0,p.jsx)(x.Z,{asChild:!0,children:(0,p.jsx)(A,{...r,children:l&&(0,p.jsxs)(p.Fragment,{children:[i.label," ",n]})})})},Z=o.forwardRef((e,t)=>{let{__scopeToast:n,...r}=e;return(0,p.jsx)(T.div,{...r,ref:t})});Z.displayName="ToastTitle";var J=o.forwardRef((e,t)=>{let{__scopeToast:n,...r}=e;return(0,p.jsx)(T.div,{...r,ref:t})});J.displayName="ToastDescription";var Q="ToastAction",ee=o.forwardRef((e,t)=>{let{altText:n,...r}=e;return n.trim()?(0,p.jsx)(er,{altText:n,asChild:!0,children:(0,p.jsx)(en,{...r,ref:t})}):(console.error("Invalid prop `altText` supplied to `".concat(Q,"`. Expected non-empty `string`.")),null)});ee.displayName=Q;var et="ToastClose",en=o.forwardRef((e,t)=>{let{__scopeToast:n,...r}=e,o=X(et,n);return(0,p.jsx)(er,{asChild:!0,children:(0,p.jsx)(T.button,{type:"button",...r,ref:t,onClick:a(e.onClick,o.onClose)})})});en.displayName=et;var er=o.forwardRef((e,t)=>{let{__scopeToast:n,altText:r,...o}=e;return(0,p.jsx)(T.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...o,ref:t})});function eo(e,t,n,r){let{discrete:o}=r,i=n.originalEvent.currentTarget,a=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});if(t&&i.addEventListener(e,t,{once:!0}),o)i&&l.flushSync(()=>i.dispatchEvent(a));else i.dispatchEvent(a)}var ei=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=Math.abs(e.x),o=Math.abs(e.y),i=r>o;return"left"===t||"right"===t?i&&r>n:!i&&o>n};function el(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}var ea=_,eu=H,es=z,ec=Z,ed=J,ef=ee,ep=en},1362:(e,t,n)=>{"use strict";n.d(t,{N:()=>u});var r=n(2115),o=(e,t,n,r,o,i,l,a)=>{let u=document.documentElement,s=["light","dark"];function c(t){var n;(Array.isArray(e)?e:[e]).forEach(e=>{let n="class"===e,r=n&&i?o.map(e=>i[e]||e):o;n?(u.classList.remove(...r),u.classList.add(i&&i[t]?i[t]:t)):u.setAttribute(e,t)}),n=t,a&&s.includes(n)&&(u.style.colorScheme=n)}if(r)c(r);else try{let e=localStorage.getItem(t)||n,r=l&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(r)}catch(e){}},i=["light","dark"],l="(prefers-color-scheme: dark)",a=r.createContext(void 0),u=e=>r.useContext(a)?r.createElement(r.Fragment,null,e.children):r.createElement(c,{...e}),s=["light","dark"],c=e=>{let{forcedTheme:t,disableTransitionOnChange:n=!1,enableSystem:o=!0,enableColorScheme:u=!0,storageKey:c="theme",themes:v=s,defaultTheme:h=o?"system":"light",attribute:g="data-theme",value:y,children:w,nonce:x,scriptProps:b}=e,[E,R]=r.useState(()=>f(c,h)),[T,C]=r.useState(()=>"system"===E?m():E),M=y?Object.values(y):v,N=r.useCallback(e=>{let t=e;if(!t)return;"system"===e&&o&&(t=m());let r=y?y[t]:t,l=n?p(x):null,a=document.documentElement,s=e=>{"class"===e?(a.classList.remove(...M),r&&a.classList.add(r)):e.startsWith("data-")&&(r?a.setAttribute(e,r):a.removeAttribute(e))};if(Array.isArray(g)?g.forEach(s):s(g),u){let e=i.includes(h)?h:null,n=i.includes(t)?t:e;a.style.colorScheme=n}null==l||l()},[x]),A=r.useCallback(e=>{let t="function"==typeof e?e(E):e;R(t);try{localStorage.setItem(c,t)}catch(e){}},[E]),S=r.useCallback(e=>{C(m(e)),"system"===E&&o&&!t&&N("system")},[E,t]);r.useEffect(()=>{let e=window.matchMedia(l);return e.addListener(S),S(e),()=>e.removeListener(S)},[S]),r.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?R(e.newValue):A(h))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[A]),r.useEffect(()=>{N(null!=t?t:E)},[t,E]);let P=r.useMemo(()=>({theme:E,setTheme:A,forcedTheme:t,resolvedTheme:"system"===E?T:E,themes:o?[...v,"system"]:v,systemTheme:o?T:void 0}),[E,A,t,T,o,v]);return r.createElement(a.Provider,{value:P},r.createElement(d,{forcedTheme:t,storageKey:c,attribute:g,enableSystem:o,enableColorScheme:u,defaultTheme:h,value:y,themes:v,nonce:x,scriptProps:b}),w)},d=r.memo(e=>{let{forcedTheme:t,storageKey:n,attribute:i,enableSystem:l,enableColorScheme:a,defaultTheme:u,value:s,themes:c,nonce:d,scriptProps:f}=e,p=JSON.stringify([i,n,u,t,c,s,l,a]).slice(1,-1);return r.createElement("script",{...f,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(o.toString(),")(").concat(p,")")}})}),f=(e,t)=>{let n;try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t},p=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},m=e=>(e||(e=window.matchMedia(l)),e.matches?"dark":"light")},1497:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},2432:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("PanelLeft",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]])},2475:(e,t,n)=>{"use strict";n.d(t,{UE:()=>ef,ll:()=>el,rD:()=>em,UU:()=>es,jD:()=>ed,ER:()=>ep,cY:()=>ea,BN:()=>eu,Ej:()=>ec});let r=["top","right","bottom","left"],o=Math.min,i=Math.max,l=Math.round,a=Math.floor,u=e=>({x:e,y:e}),s={left:"right",right:"left",bottom:"top",top:"bottom"},c={start:"end",end:"start"};function d(e,t){return"function"==typeof e?e(t):e}function f(e){return e.split("-")[0]}function p(e){return e.split("-")[1]}function m(e){return"x"===e?"y":"x"}function v(e){return"y"===e?"height":"width"}function h(e){return["top","bottom"].includes(f(e))?"y":"x"}function g(e){return e.replace(/start|end/g,e=>c[e])}function y(e){return e.replace(/left|right|bottom|top/g,e=>s[e])}function w(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function x(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function b(e,t,n){let r,{reference:o,floating:i}=e,l=h(t),a=m(h(t)),u=v(a),s=f(t),c="y"===l,d=o.x+o.width/2-i.width/2,g=o.y+o.height/2-i.height/2,y=o[u]/2-i[u]/2;switch(s){case"top":r={x:d,y:o.y-i.height};break;case"bottom":r={x:d,y:o.y+o.height};break;case"right":r={x:o.x+o.width,y:g};break;case"left":r={x:o.x-i.width,y:g};break;default:r={x:o.x,y:o.y}}switch(p(t)){case"start":r[a]-=y*(n&&c?-1:1);break;case"end":r[a]+=y*(n&&c?-1:1)}return r}let E=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:l}=n,a=i.filter(Boolean),u=await (null==l.isRTL?void 0:l.isRTL(t)),s=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:d}=b(s,r,u),f=r,p={},m=0;for(let n=0;n<a.length;n++){let{name:i,fn:v}=a[n],{x:h,y:g,data:y,reset:w}=await v({x:c,y:d,initialPlacement:r,placement:f,strategy:o,middlewareData:p,rects:s,platform:l,elements:{reference:e,floating:t}});c=null!=h?h:c,d=null!=g?g:d,p={...p,[i]:{...p[i],...y}},w&&m<=50&&(m++,"object"==typeof w&&(w.placement&&(f=w.placement),w.rects&&(s=!0===w.rects?await l.getElementRects({reference:e,floating:t,strategy:o}):w.rects),{x:c,y:d}=b(s,f,u)),n=-1)}return{x:c,y:d,placement:f,strategy:o,middlewareData:p}};async function R(e,t){var n;void 0===t&&(t={});let{x:r,y:o,platform:i,rects:l,elements:a,strategy:u}=e,{boundary:s="clippingAncestors",rootBoundary:c="viewport",elementContext:f="floating",altBoundary:p=!1,padding:m=0}=d(t,e),v=w(m),h=a[p?"floating"===f?"reference":"floating":f],g=x(await i.getClippingRect({element:null==(n=await (null==i.isElement?void 0:i.isElement(h)))||n?h:h.contextElement||await (null==i.getDocumentElement?void 0:i.getDocumentElement(a.floating)),boundary:s,rootBoundary:c,strategy:u})),y="floating"===f?{x:r,y:o,width:l.floating.width,height:l.floating.height}:l.reference,b=await (null==i.getOffsetParent?void 0:i.getOffsetParent(a.floating)),E=await (null==i.isElement?void 0:i.isElement(b))&&await (null==i.getScale?void 0:i.getScale(b))||{x:1,y:1},R=x(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:y,offsetParent:b,strategy:u}):y);return{top:(g.top-R.top+v.top)/E.y,bottom:(R.bottom-g.bottom+v.bottom)/E.y,left:(g.left-R.left+v.left)/E.x,right:(R.right-g.right+v.right)/E.x}}function T(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function C(e){return r.some(t=>e[t]>=0)}async function M(e,t){let{placement:n,platform:r,elements:o}=e,i=await (null==r.isRTL?void 0:r.isRTL(o.floating)),l=f(n),a=p(n),u="y"===h(n),s=["left","top"].includes(l)?-1:1,c=i&&u?-1:1,m=d(t,e),{mainAxis:v,crossAxis:g,alignmentAxis:y}="number"==typeof m?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return a&&"number"==typeof y&&(g="end"===a?-1*y:y),u?{x:g*c,y:v*s}:{x:v*s,y:g*c}}function N(){return"undefined"!=typeof window}function A(e){return j(e)?(e.nodeName||"").toLowerCase():"#document"}function S(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function P(e){var t;return null==(t=(j(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function j(e){return!!N()&&(e instanceof Node||e instanceof S(e).Node)}function k(e){return!!N()&&(e instanceof Element||e instanceof S(e).Element)}function L(e){return!!N()&&(e instanceof HTMLElement||e instanceof S(e).HTMLElement)}function D(e){return!!N()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof S(e).ShadowRoot)}function O(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=K(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function I(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch(e){return!1}})}function _(e){let t=F(),n=k(e)?K(e):e;return["transform","translate","scale","rotate","perspective"].some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","translate","scale","rotate","perspective","filter"].some(e=>(n.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(n.contain||"").includes(e))}function F(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function U(e){return["html","body","#document"].includes(A(e))}function K(e){return S(e).getComputedStyle(e)}function W(e){return k(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function H(e){if("html"===A(e))return e;let t=e.assignedSlot||e.parentNode||D(e)&&e.host||P(e);return D(t)?t.host:t}function $(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let o=function e(t){let n=H(t);return U(n)?t.ownerDocument?t.ownerDocument.body:t.body:L(n)&&O(n)?n:e(n)}(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),l=S(o);if(i){let e=V(l);return t.concat(l,l.visualViewport||[],O(o)?o:[],e&&n?$(e):[])}return t.concat(o,$(o,[],n))}function V(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function B(e){let t=K(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=L(e),i=o?e.offsetWidth:n,a=o?e.offsetHeight:r,u=l(n)!==i||l(r)!==a;return u&&(n=i,r=a),{width:n,height:r,$:u}}function z(e){return k(e)?e:e.contextElement}function Y(e){let t=z(e);if(!L(t))return u(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:i}=B(t),a=(i?l(n.width):n.width)/r,s=(i?l(n.height):n.height)/o;return a&&Number.isFinite(a)||(a=1),s&&Number.isFinite(s)||(s=1),{x:a,y:s}}let X=u(0);function q(e){let t=S(e);return F()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:X}function G(e,t,n,r){var o;void 0===t&&(t=!1),void 0===n&&(n=!1);let i=e.getBoundingClientRect(),l=z(e),a=u(1);t&&(r?k(r)&&(a=Y(r)):a=Y(e));let s=(void 0===(o=n)&&(o=!1),r&&(!o||r===S(l))&&o)?q(l):u(0),c=(i.left+s.x)/a.x,d=(i.top+s.y)/a.y,f=i.width/a.x,p=i.height/a.y;if(l){let e=S(l),t=r&&k(r)?S(r):r,n=e,o=V(n);for(;o&&r&&t!==n;){let e=Y(o),t=o.getBoundingClientRect(),r=K(o),i=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,d*=e.y,f*=e.x,p*=e.y,c+=i,d+=l,o=V(n=S(o))}}return x({width:f,height:p,x:c,y:d})}function Z(e,t){let n=W(e).scrollLeft;return t?t.left+n:G(P(e)).left+n}function J(e,t,n){void 0===n&&(n=!1);let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-(n?0:Z(e,r)),y:r.top+t.scrollTop}}function Q(e,t,n){let r;if("viewport"===t)r=function(e,t){let n=S(e),r=P(e),o=n.visualViewport,i=r.clientWidth,l=r.clientHeight,a=0,u=0;if(o){i=o.width,l=o.height;let e=F();(!e||e&&"fixed"===t)&&(a=o.offsetLeft,u=o.offsetTop)}return{width:i,height:l,x:a,y:u}}(e,n);else if("document"===t)r=function(e){let t=P(e),n=W(e),r=e.ownerDocument.body,o=i(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),l=i(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),a=-n.scrollLeft+Z(e),u=-n.scrollTop;return"rtl"===K(r).direction&&(a+=i(t.clientWidth,r.clientWidth)-o),{width:o,height:l,x:a,y:u}}(P(e));else if(k(t))r=function(e,t){let n=G(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=L(e)?Y(e):u(1),l=e.clientWidth*i.x,a=e.clientHeight*i.y;return{width:l,height:a,x:o*i.x,y:r*i.y}}(t,n);else{let n=q(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return x(r)}function ee(e){return"static"===K(e).position}function et(e,t){if(!L(e)||"fixed"===K(e).position)return null;if(t)return t(e);let n=e.offsetParent;return P(e)===n&&(n=n.ownerDocument.body),n}function en(e,t){let n=S(e);if(I(e))return n;if(!L(e)){let t=H(e);for(;t&&!U(t);){if(k(t)&&!ee(t))return t;t=H(t)}return n}let r=et(e,t);for(;r&&["table","td","th"].includes(A(r))&&ee(r);)r=et(r,t);return r&&U(r)&&ee(r)&&!_(r)?n:r||function(e){let t=H(e);for(;L(t)&&!U(t);){if(_(t))return t;if(I(t))break;t=H(t)}return null}(e)||n}let er=async function(e){let t=this.getOffsetParent||en,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=L(t),o=P(t),i="fixed"===n,l=G(e,!0,i,t),a={scrollLeft:0,scrollTop:0},s=u(0);if(r||!r&&!i){if(("body"!==A(t)||O(o))&&(a=W(t)),r){let e=G(t,!0,i,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&(s.x=Z(o))}i&&!r&&o&&(s.x=Z(o));let c=!o||r||i?u(0):J(o,a);return{x:l.left+a.scrollLeft-s.x-c.x,y:l.top+a.scrollTop-s.y-c.y,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},eo={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,i="fixed"===o,l=P(r),a=!!t&&I(t.floating);if(r===l||a&&i)return n;let s={scrollLeft:0,scrollTop:0},c=u(1),d=u(0),f=L(r);if((f||!f&&!i)&&(("body"!==A(r)||O(l))&&(s=W(r)),L(r))){let e=G(r);c=Y(r),d.x=e.x+r.clientLeft,d.y=e.y+r.clientTop}let p=!l||f||i?u(0):J(l,s,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+d.x+p.x,y:n.y*c.y-s.scrollTop*c.y+d.y+p.y}},getDocumentElement:P,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:l}=e,a=[..."clippingAncestors"===n?I(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=$(e,[],!1).filter(e=>k(e)&&"body"!==A(e)),o=null,i="fixed"===K(e).position,l=i?H(e):e;for(;k(l)&&!U(l);){let t=K(l),n=_(l);n||"fixed"!==t.position||(o=null),(i?!n&&!o:!n&&"static"===t.position&&!!o&&["absolute","fixed"].includes(o.position)||O(l)&&!n&&function e(t,n){let r=H(t);return!(r===n||!k(r)||U(r))&&("fixed"===K(r).position||e(r,n))}(e,l))?r=r.filter(e=>e!==l):o=t,l=H(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],u=a[0],s=a.reduce((e,n)=>{let r=Q(t,n,l);return e.top=i(r.top,e.top),e.right=o(r.right,e.right),e.bottom=o(r.bottom,e.bottom),e.left=i(r.left,e.left),e},Q(t,u,l));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:en,getElementRects:er,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=B(e);return{width:t,height:n}},getScale:Y,isElement:k,isRTL:function(e){return"rtl"===K(e).direction}};function ei(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function el(e,t,n,r){let l;void 0===r&&(r={});let{ancestorScroll:u=!0,ancestorResize:s=!0,elementResize:c="function"==typeof ResizeObserver,layoutShift:d="function"==typeof IntersectionObserver,animationFrame:f=!1}=r,p=z(e),m=u||s?[...p?$(p):[],...$(t)]:[];m.forEach(e=>{u&&e.addEventListener("scroll",n,{passive:!0}),s&&e.addEventListener("resize",n)});let v=p&&d?function(e,t){let n,r=null,l=P(e);function u(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function s(c,d){void 0===c&&(c=!1),void 0===d&&(d=1),u();let f=e.getBoundingClientRect(),{left:p,top:m,width:v,height:h}=f;if(c||t(),!v||!h)return;let g=a(m),y=a(l.clientWidth-(p+v)),w={rootMargin:-g+"px "+-y+"px "+-a(l.clientHeight-(m+h))+"px "+-a(p)+"px",threshold:i(0,o(1,d))||1},x=!0;function b(t){let r=t[0].intersectionRatio;if(r!==d){if(!x)return s();r?s(!1,r):n=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==r||ei(f,e.getBoundingClientRect())||s(),x=!1}try{r=new IntersectionObserver(b,{...w,root:l.ownerDocument})}catch(e){r=new IntersectionObserver(b,w)}r.observe(e)}(!0),u}(p,n):null,h=-1,g=null;c&&(g=new ResizeObserver(e=>{let[r]=e;r&&r.target===p&&g&&(g.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var e;null==(e=g)||e.observe(t)})),n()}),p&&!f&&g.observe(p),g.observe(t));let y=f?G(e):null;return f&&function t(){let r=G(e);y&&!ei(y,r)&&n(),y=r,l=requestAnimationFrame(t)}(),n(),()=>{var e;m.forEach(e=>{u&&e.removeEventListener("scroll",n),s&&e.removeEventListener("resize",n)}),null==v||v(),null==(e=g)||e.disconnect(),g=null,f&&cancelAnimationFrame(l)}}let ea=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;let{x:o,y:i,placement:l,middlewareData:a}=t,u=await M(t,e);return l===(null==(n=a.offset)?void 0:n.placement)&&null!=(r=a.arrow)&&r.alignmentOffset?{}:{x:o+u.x,y:i+u.y,data:{...u,placement:l}}}}},eu=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:l}=t,{mainAxis:a=!0,crossAxis:u=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=d(e,t),p={x:n,y:r},v=await R(t,c),g=h(f(l)),y=m(g),w=p[y],x=p[g];if(a){let e="y"===y?"top":"left",t="y"===y?"bottom":"right",n=w+v[e],r=w-v[t];w=i(n,o(w,r))}if(u){let e="y"===g?"top":"left",t="y"===g?"bottom":"right",n=x+v[e],r=x-v[t];x=i(n,o(x,r))}let b=s.fn({...t,[y]:w,[g]:x});return{...b,data:{x:b.x-n,y:b.y-r,enabled:{[y]:a,[g]:u}}}}}},es=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r,o,i,l;let{placement:a,middlewareData:u,rects:s,initialPlacement:c,platform:w,elements:x}=t,{mainAxis:b=!0,crossAxis:E=!0,fallbackPlacements:T,fallbackStrategy:C="bestFit",fallbackAxisSideDirection:M="none",flipAlignment:N=!0,...A}=d(e,t);if(null!=(n=u.arrow)&&n.alignmentOffset)return{};let S=f(a),P=h(c),j=f(c)===c,k=await (null==w.isRTL?void 0:w.isRTL(x.floating)),L=T||(j||!N?[y(c)]:function(e){let t=y(e);return[g(e),t,g(t)]}(c)),D="none"!==M;!T&&D&&L.push(...function(e,t,n,r){let o=p(e),i=function(e,t,n){let r=["left","right"],o=["right","left"];switch(e){case"top":case"bottom":if(n)return t?o:r;return t?r:o;case"left":case"right":return t?["top","bottom"]:["bottom","top"];default:return[]}}(f(e),"start"===n,r);return o&&(i=i.map(e=>e+"-"+o),t&&(i=i.concat(i.map(g)))),i}(c,N,M,k));let O=[c,...L],I=await R(t,A),_=[],F=(null==(r=u.flip)?void 0:r.overflows)||[];if(b&&_.push(I[S]),E){let e=function(e,t,n){void 0===n&&(n=!1);let r=p(e),o=m(h(e)),i=v(o),l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=y(l)),[l,y(l)]}(a,s,k);_.push(I[e[0]],I[e[1]])}if(F=[...F,{placement:a,overflows:_}],!_.every(e=>e<=0)){let e=((null==(o=u.flip)?void 0:o.index)||0)+1,t=O[e];if(t&&("alignment"!==E||P===h(t)||F.every(e=>e.overflows[0]>0&&h(e.placement)===P)))return{data:{index:e,overflows:F},reset:{placement:t}};let n=null==(i=F.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!n)switch(C){case"bestFit":{let e=null==(l=F.filter(e=>{if(D){let t=h(e.placement);return t===P||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:l[0];e&&(n=e);break}case"initialPlacement":n=c}if(a!==n)return{reset:{placement:n}}}return{}}}},ec=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;let l,a;let{placement:u,rects:s,platform:c,elements:m}=t,{apply:v=()=>{},...g}=d(e,t),y=await R(t,g),w=f(u),x=p(u),b="y"===h(u),{width:E,height:T}=s.floating;"top"===w||"bottom"===w?(l=w,a=x===(await (null==c.isRTL?void 0:c.isRTL(m.floating))?"start":"end")?"left":"right"):(a=w,l="end"===x?"top":"bottom");let C=T-y.top-y.bottom,M=E-y.left-y.right,N=o(T-y[l],C),A=o(E-y[a],M),S=!t.middlewareData.shift,P=N,j=A;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(j=M),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(P=C),S&&!x){let e=i(y.left,0),t=i(y.right,0),n=i(y.top,0),r=i(y.bottom,0);b?j=E-2*(0!==e||0!==t?e+t:i(y.left,y.right)):P=T-2*(0!==n||0!==r?n+r:i(y.top,y.bottom))}await v({...t,availableWidth:j,availableHeight:P});let k=await c.getDimensions(m.floating);return E!==k.width||T!==k.height?{reset:{rects:!0}}:{}}}},ed=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){let{rects:n}=t,{strategy:r="referenceHidden",...o}=d(e,t);switch(r){case"referenceHidden":{let e=T(await R(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:C(e)}}}case"escaped":{let e=T(await R(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:C(e)}}}default:return{}}}}},ef=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:r,placement:l,rects:a,platform:u,elements:s,middlewareData:c}=t,{element:f,padding:g=0}=d(e,t)||{};if(null==f)return{};let y=w(g),x={x:n,y:r},b=m(h(l)),E=v(b),R=await u.getDimensions(f),T="y"===b,C=T?"clientHeight":"clientWidth",M=a.reference[E]+a.reference[b]-x[b]-a.floating[E],N=x[b]-a.reference[b],A=await (null==u.getOffsetParent?void 0:u.getOffsetParent(f)),S=A?A[C]:0;S&&await (null==u.isElement?void 0:u.isElement(A))||(S=s.floating[C]||a.floating[E]);let P=S/2-R[E]/2-1,j=o(y[T?"top":"left"],P),k=o(y[T?"bottom":"right"],P),L=S-R[E]-k,D=S/2-R[E]/2+(M/2-N/2),O=i(j,o(D,L)),I=!c.arrow&&null!=p(l)&&D!==O&&a.reference[E]/2-(D<j?j:k)-R[E]/2<0,_=I?D<j?D-j:D-L:0;return{[b]:x[b]+_,data:{[b]:O,centerOffset:D-O-_,...I&&{alignmentOffset:_}},reset:I}}}),ep=function(e){return void 0===e&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:o,rects:i,middlewareData:l}=t,{offset:a=0,mainAxis:u=!0,crossAxis:s=!0}=d(e,t),c={x:n,y:r},p=h(o),v=m(p),g=c[v],y=c[p],w=d(a,t),x="number"==typeof w?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(u){let e="y"===v?"height":"width",t=i.reference[v]-i.floating[e]+x.mainAxis,n=i.reference[v]+i.reference[e]-x.mainAxis;g<t?g=t:g>n&&(g=n)}if(s){var b,E;let e="y"===v?"width":"height",t=["top","left"].includes(f(o)),n=i.reference[p]-i.floating[e]+(t&&(null==(b=l.offset)?void 0:b[p])||0)+(t?0:x.crossAxis),r=i.reference[p]+i.reference[e]+(t?0:(null==(E=l.offset)?void 0:E[p])||0)-(t?x.crossAxis:0);y<n?y=n:y>r&&(y=r)}return{[v]:g,[p]:y}}}},em=(e,t,n)=>{let r=new Map,o={platform:eo,...n},i={...o.platform,_c:r};return E(e,t,{...o,platform:i})}},3423:(e,t,n)=>{"use strict";n.d(t,{UC:()=>ey,Kq:()=>ev,bL:()=>eh,l9:()=>eg});var r=n(2115),o=n.t(r,2);function i(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}function l(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function a(...e){return r.useCallback(function(...e){return t=>{let n=!1,r=e.map(e=>{let r=l(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];"function"==typeof n?n():l(e[t],null)}}}}(...e),e)}var u=n(5155);function s(e,t=[]){let n=[],o=()=>{let t=n.map(e=>r.createContext(e));return function(n){let o=n?.[e]||t;return r.useMemo(()=>({[`__scope${e}`]:{...n,[e]:o}}),[n,o])}};return o.scopeName=e,[function(t,o){let i=r.createContext(o),l=n.length;n=[...n,o];let a=t=>{let{scope:n,children:o,...a}=t,s=n?.[e]?.[l]||i,c=r.useMemo(()=>a,Object.values(a));return(0,u.jsx)(s.Provider,{value:c,children:o})};return a.displayName=t+"Provider",[a,function(n,a){let u=a?.[e]?.[l]||i,s=r.useContext(u);if(s)return s;if(void 0!==o)return o;throw Error(`\`${n}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=n.reduce((t,{useScope:n,scopeName:r})=>{let o=n(e)[`__scope${r}`];return{...t,...o}},{});return r.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return n.scopeName=t.scopeName,n}(o,...t)]}var c=n(338),d=globalThis?.document?r.useLayoutEffect:()=>{},f=o[" useId ".trim().toString()]||(()=>void 0),p=0,m=n(4945),v=n(2475);n(7650);var h=n(6634),g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let n=(0,h.TL)(`Primitive.${t}`),o=r.forwardRef((e,r)=>{let{asChild:o,...i}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,u.jsx)(o?n:t,{...i,ref:r})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{}),y=r.forwardRef((e,t)=>{let{children:n,width:r=10,height:o=5,...i}=e;return(0,u.jsx)(g.svg,{...i,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,u.jsx)("polygon",{points:"0,0 30,0 15,10"})})});y.displayName="Arrow";var w=globalThis?.document?r.useLayoutEffect:()=>{},x="Popper",[b,E]=s(x),[R,T]=b(x),C=e=>{let{__scopePopper:t,children:n}=e,[o,i]=r.useState(null);return(0,u.jsx)(R,{scope:t,anchor:o,onAnchorChange:i,children:n})};C.displayName=x;var M="PopperAnchor",N=r.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:o,...i}=e,l=T(M,n),s=r.useRef(null),c=a(t,s);return r.useEffect(()=>{l.onAnchorChange((null==o?void 0:o.current)||s.current)}),o?null:(0,u.jsx)(g.div,{...i,ref:c})});N.displayName=M;var A="PopperContent",[S,P]=b(A),j=r.forwardRef((e,t)=>{var n,o,i,l,s,c,d,f;let{__scopePopper:p,side:h="bottom",sideOffset:y=0,align:x="center",alignOffset:b=0,arrowPadding:E=0,avoidCollisions:R=!0,collisionBoundary:C=[],collisionPadding:M=0,sticky:N="partial",hideWhenDetached:P=!1,updatePositionStrategy:j="optimized",onPlaced:k,...L}=e,D=T(A,p),[F,U]=r.useState(null),K=a(t,e=>U(e)),[W,H]=r.useState(null),$=function(e){let[t,n]=r.useState(void 0);return w(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,o;if(!Array.isArray(t)||!t.length)return;let i=t[0];if("borderBoxSize"in i){let e=i.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,o=t.blockSize}else r=e.offsetWidth,o=e.offsetHeight;n({width:r,height:o})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)},[e]),t}(W),V=null!==(d=null==$?void 0:$.width)&&void 0!==d?d:0,B=null!==(f=null==$?void 0:$.height)&&void 0!==f?f:0,z="number"==typeof M?M:{top:0,right:0,bottom:0,left:0,...M},Y=Array.isArray(C)?C:[C],X=Y.length>0,q={padding:z,boundary:Y.filter(O),altBoundary:X},{refs:G,floatingStyles:Z,placement:J,isPositioned:Q,middlewareData:ee}=(0,m.we)({strategy:"fixed",placement:h+("center"!==x?"-"+x:""),whileElementsMounted:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,v.ll)(...t,{animationFrame:"always"===j})},elements:{reference:D.anchor},middleware:[(0,m.cY)({mainAxis:y+B,alignmentAxis:b}),R&&(0,m.BN)({mainAxis:!0,crossAxis:!1,limiter:"partial"===N?(0,m.ER)():void 0,...q}),R&&(0,m.UU)({...q}),(0,m.Ej)({...q,apply:e=>{let{elements:t,rects:n,availableWidth:r,availableHeight:o}=e,{width:i,height:l}=n.reference,a=t.floating.style;a.setProperty("--radix-popper-available-width","".concat(r,"px")),a.setProperty("--radix-popper-available-height","".concat(o,"px")),a.setProperty("--radix-popper-anchor-width","".concat(i,"px")),a.setProperty("--radix-popper-anchor-height","".concat(l,"px"))}}),W&&(0,m.UE)({element:W,padding:E}),I({arrowWidth:V,arrowHeight:B}),P&&(0,m.jD)({strategy:"referenceHidden",...q})]}),[et,en]=_(J),er=function(e){let t=r.useRef(e);return r.useEffect(()=>{t.current=e}),r.useMemo(()=>(...e)=>t.current?.(...e),[])}(k);w(()=>{Q&&(null==er||er())},[Q,er]);let eo=null===(n=ee.arrow)||void 0===n?void 0:n.x,ei=null===(o=ee.arrow)||void 0===o?void 0:o.y,el=(null===(i=ee.arrow)||void 0===i?void 0:i.centerOffset)!==0,[ea,eu]=r.useState();return w(()=>{F&&eu(window.getComputedStyle(F).zIndex)},[F]),(0,u.jsx)("div",{ref:G.setFloating,"data-radix-popper-content-wrapper":"",style:{...Z,transform:Q?Z.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ea,"--radix-popper-transform-origin":[null===(l=ee.transformOrigin)||void 0===l?void 0:l.x,null===(s=ee.transformOrigin)||void 0===s?void 0:s.y].join(" "),...(null===(c=ee.hide)||void 0===c?void 0:c.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,u.jsx)(S,{scope:p,placedSide:et,onArrowChange:H,arrowX:eo,arrowY:ei,shouldHideArrow:el,children:(0,u.jsx)(g.div,{"data-side":et,"data-align":en,...L,ref:K,style:{...L.style,animation:Q?void 0:"none"}})})})});j.displayName=A;var k="PopperArrow",L={top:"bottom",right:"left",bottom:"top",left:"right"},D=r.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,o=P(k,n),i=L[o.placedSide];return(0,u.jsx)("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0},children:(0,u.jsx)(y,{...r,ref:t,style:{...r.style,display:"block"}})})});function O(e){return null!==e}D.displayName=k;var I=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,l;let{placement:a,rects:u,middlewareData:s}=t,c=(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset)!==0,d=c?0:e.arrowWidth,f=c?0:e.arrowHeight,[p,m]=_(a),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(i=null===(r=s.arrow)||void 0===r?void 0:r.x)&&void 0!==i?i:0)+d/2,g=(null!==(l=null===(o=s.arrow)||void 0===o?void 0:o.y)&&void 0!==l?l:0)+f/2,y="",w="";return"bottom"===p?(y=c?v:"".concat(h,"px"),w="".concat(-f,"px")):"top"===p?(y=c?v:"".concat(h,"px"),w="".concat(u.floating.height+f,"px")):"right"===p?(y="".concat(-f,"px"),w=c?v:"".concat(g,"px")):"left"===p&&(y="".concat(u.floating.width+f,"px"),w=c?v:"".concat(g,"px")),{data:{x:y,y:w}}}});function _(e){let[t,n="center"]=e.split("-");return[t,n]}n(7268);var F=globalThis?.document?r.useLayoutEffect:()=>{},U=e=>{let{present:t,children:n}=e,o=function(e){var t,n;let[o,i]=r.useState(),l=r.useRef(null),a=r.useRef(e),u=r.useRef("none"),[s,c]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>{let r=n[e][t];return null!=r?r:e},t));return r.useEffect(()=>{let e=K(l.current);u.current="mounted"===s?e:"none"},[s]),F(()=>{let t=l.current,n=a.current;if(n!==e){let r=u.current,o=K(t);e?c("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?c("UNMOUNT"):n&&r!==o?c("ANIMATION_OUT"):c("UNMOUNT"),a.current=e}},[e,c]),F(()=>{if(o){var e;let t;let n=null!==(e=o.ownerDocument.defaultView)&&void 0!==e?e:window,r=e=>{let r=K(l.current).includes(e.animationName);if(e.target===o&&r&&(c("ANIMATION_END"),!a.current)){let e=o.style.animationFillMode;o.style.animationFillMode="forwards",t=n.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=e)})}},i=e=>{e.target===o&&(u.current=K(l.current))};return o.addEventListener("animationstart",i),o.addEventListener("animationcancel",r),o.addEventListener("animationend",r),()=>{n.clearTimeout(t),o.removeEventListener("animationstart",i),o.removeEventListener("animationcancel",r),o.removeEventListener("animationend",r)}}c("ANIMATION_END")},[o,c]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:r.useCallback(e=>{l.current=e?getComputedStyle(e):null,i(e)},[])}}(t),i="function"==typeof n?n({present:o.isPresent}):r.Children.only(n),l=a(o.ref,function(e){var t,n;let r=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?e.ref:(o=(r=null===(n=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===n?void 0:n.get)&&"isReactWarning"in r&&r.isReactWarning)?e.props.ref:e.props.ref||e.ref}(i));return"function"==typeof n||o.isPresent?r.cloneElement(i,{ref:l}):null};function K(e){return(null==e?void 0:e.animationName)||"none"}U.displayName="Presence";var W=globalThis?.document?r.useLayoutEffect:()=>{},H=o[" useInsertionEffect ".trim().toString()]||W,$=(Symbol("RADIX:SYNC_STATE"),Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"})),V=r.forwardRef((e,t)=>(0,u.jsx)(g.span,{...e,ref:t,style:{...$,...e.style}}));V.displayName="VisuallyHidden";var[B,z]=s("Tooltip",[E]),Y=E(),X="TooltipProvider",q="tooltip.open",[G,Z]=B(X),J=e=>{let{__scopeTooltip:t,delayDuration:n=700,skipDelayDuration:o=300,disableHoverableContent:i=!1,children:l}=e,a=r.useRef(!0),s=r.useRef(!1),c=r.useRef(0);return r.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,u.jsx)(G,{scope:t,isOpenDelayedRef:a,delayDuration:n,onOpen:r.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:r.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,o)},[o]),isPointerInTransitRef:s,onPointerInTransitChange:r.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:l})};J.displayName=X;var Q="Tooltip",[ee,et]=B(Q),en=e=>{let{__scopeTooltip:t,children:n,open:o,defaultOpen:i,onOpenChange:l,disableHoverableContent:a,delayDuration:s}=e,c=Z(Q,e.__scopeTooltip),m=Y(t),[v,h]=r.useState(null),g=function(e){let[t,n]=r.useState(f());return d(()=>{n(e=>e??String(p++))},[void 0]),e||(t?`radix-${t}`:"")}(),y=r.useRef(0),w=null!=a?a:c.disableHoverableContent,x=null!=s?s:c.delayDuration,b=r.useRef(!1),[E,R]=function({prop:e,defaultProp:t,onChange:n=()=>{},caller:o}){let[i,l,a]=function({defaultProp:e,onChange:t}){let[n,o]=r.useState(e),i=r.useRef(n),l=r.useRef(t);return H(()=>{l.current=t},[t]),r.useEffect(()=>{i.current!==n&&(l.current?.(n),i.current=n)},[n,i]),[n,o,l]}({defaultProp:t,onChange:n}),u=void 0!==e,s=u?e:i;{let t=r.useRef(void 0!==e);r.useEffect(()=>{let e=t.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${o} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=u},[u,o])}return[s,r.useCallback(t=>{if(u){let n="function"==typeof t?t(e):t;n!==e&&a.current?.(n)}else l(t)},[u,e,l,a])]}({prop:o,defaultProp:null!=i&&i,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(q))):c.onClose(),null==l||l(e)},caller:Q}),T=r.useMemo(()=>E?b.current?"delayed-open":"instant-open":"closed",[E]),M=r.useCallback(()=>{window.clearTimeout(y.current),y.current=0,b.current=!1,R(!0)},[R]),N=r.useCallback(()=>{window.clearTimeout(y.current),y.current=0,R(!1)},[R]),A=r.useCallback(()=>{window.clearTimeout(y.current),y.current=window.setTimeout(()=>{b.current=!0,R(!0),y.current=0},x)},[x,R]);return r.useEffect(()=>()=>{y.current&&(window.clearTimeout(y.current),y.current=0)},[]),(0,u.jsx)(C,{...m,children:(0,u.jsx)(ee,{scope:t,contentId:g,open:E,stateAttribute:T,trigger:v,onTriggerChange:h,onTriggerEnter:r.useCallback(()=>{c.isOpenDelayedRef.current?A():M()},[c.isOpenDelayedRef,A,M]),onTriggerLeave:r.useCallback(()=>{w?N():(window.clearTimeout(y.current),y.current=0)},[N,w]),onOpen:M,onClose:N,disableHoverableContent:w,children:n})})};en.displayName=Q;var er="TooltipTrigger",eo=r.forwardRef((e,t)=>{let{__scopeTooltip:n,...o}=e,l=et(er,n),s=Z(er,n),c=Y(n),d=a(t,r.useRef(null),l.onTriggerChange),f=r.useRef(!1),p=r.useRef(!1),m=r.useCallback(()=>f.current=!1,[]);return r.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),(0,u.jsx)(N,{asChild:!0,...c,children:(0,u.jsx)(g.button,{"aria-describedby":l.open?l.contentId:void 0,"data-state":l.stateAttribute,...o,ref:d,onPointerMove:i(e.onPointerMove,e=>{"touch"===e.pointerType||p.current||s.isPointerInTransitRef.current||(l.onTriggerEnter(),p.current=!0)}),onPointerLeave:i(e.onPointerLeave,()=>{l.onTriggerLeave(),p.current=!1}),onPointerDown:i(e.onPointerDown,()=>{l.open&&l.onClose(),f.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:i(e.onFocus,()=>{f.current||l.onOpen()}),onBlur:i(e.onBlur,l.onClose),onClick:i(e.onClick,l.onClose)})})});eo.displayName=er;var[ei,el]=B("TooltipPortal",{forceMount:void 0}),ea="TooltipContent",eu=r.forwardRef((e,t)=>{let n=el(ea,e.__scopeTooltip),{forceMount:r=n.forceMount,side:o="top",...i}=e,l=et(ea,e.__scopeTooltip);return(0,u.jsx)(U,{present:r||l.open,children:l.disableHoverableContent?(0,u.jsx)(ep,{side:o,...i,ref:t}):(0,u.jsx)(es,{side:o,...i,ref:t})})}),es=r.forwardRef((e,t)=>{let n=et(ea,e.__scopeTooltip),o=Z(ea,e.__scopeTooltip),i=r.useRef(null),l=a(t,i),[s,c]=r.useState(null),{trigger:d,onClose:f}=n,p=i.current,{onPointerInTransitChange:m}=o,v=r.useCallback(()=>{c(null),m(!1)},[m]),h=r.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),i=Math.abs(t.left-e.x);switch(Math.min(n,r,o,i)){case i:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw Error("unreachable")}}(r,n.getBoundingClientRect());c(function(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return(n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y)?t:t.concat(n)}(t)}([...function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,o),...function(e){let{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())])),m(!0)},[m]);return r.useEffect(()=>()=>v(),[v]),r.useEffect(()=>{if(d&&p){let e=e=>h(e,p),t=e=>h(e,d);return d.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{d.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[d,p,h,v]),r.useEffect(()=>{if(s){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=(null==d?void 0:d.contains(t))||(null==p?void 0:p.contains(t)),o=!function(e,t){let{x:n,y:r}=e,o=!1;for(let e=0,i=t.length-1;e<t.length;i=e++){let l=t[e],a=t[i],u=l.x,s=l.y,c=a.x,d=a.y;s>r!=d>r&&n<(c-u)*(r-s)/(d-s)+u&&(o=!o)}return o}(n,s);r?v():o&&(v(),f())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[d,p,s,f,v]),(0,u.jsx)(ep,{...e,ref:l})}),[ec,ed]=B(Q,{isInside:!1}),ef=(0,h.Dc)("TooltipContent"),ep=r.forwardRef((e,t)=>{let{__scopeTooltip:n,children:o,"aria-label":i,onEscapeKeyDown:l,onPointerDownOutside:a,...s}=e,d=et(ea,n),f=Y(n),{onClose:p}=d;return r.useEffect(()=>(document.addEventListener(q,p),()=>document.removeEventListener(q,p)),[p]),r.useEffect(()=>{if(d.trigger){let e=e=>{let t=e.target;(null==t?void 0:t.contains(d.trigger))&&p()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[d.trigger,p]),(0,u.jsx)(c.qW,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:a,onFocusOutside:e=>e.preventDefault(),onDismiss:p,children:(0,u.jsxs)(j,{"data-state":d.stateAttribute,...f,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,u.jsx)(ef,{children:o}),(0,u.jsx)(ec,{scope:n,isInside:!0,children:(0,u.jsx)(V,{id:d.contentId,role:"tooltip",children:i||o})})]})})});eu.displayName=ea;var em="TooltipArrow";r.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,o=Y(n);return ed(em,n).isInside?null:(0,u.jsx)(D,{...o,...r,ref:t})}).displayName=em;var ev=J,eh=en,eg=eo,ey=eu},3560:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("CloudDownload",[["path",{d:"M12 13v8l-4-4",key:"1f5nwf"}],["path",{d:"m12 21 4-4",key:"1lfcce"}],["path",{d:"M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284",key:"ui1hmy"}]])},3969:(e,t,n)=>{"use strict";function r(e,t,n){if(!t.has(e))throw TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}n.d(t,{_:()=>r})},4126:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("Trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]])},4186:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])},4616:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},4945:(e,t,n)=>{"use strict";n.d(t,{BN:()=>m,ER:()=>v,Ej:()=>g,UE:()=>w,UU:()=>h,cY:()=>p,jD:()=>y,we:()=>d});var r=n(2475),o=n(2115),i=n(7650),l="undefined"!=typeof document?o.useLayoutEffect:function(){};function a(e,t){let n,r,o;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!a(e[r],t[r]))return!1;return!0}if((n=(o=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if(("_owner"!==n||!e.$$typeof)&&!a(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function u(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function s(e,t){let n=u(e);return Math.round(t*n)/n}function c(e){let t=o.useRef(e);return l(()=>{t.current=e}),t}function d(e){void 0===e&&(e={});let{placement:t="bottom",strategy:n="absolute",middleware:d=[],platform:f,elements:{reference:p,floating:m}={},transform:v=!0,whileElementsMounted:h,open:g}=e,[y,w]=o.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[x,b]=o.useState(d);a(x,d)||b(d);let[E,R]=o.useState(null),[T,C]=o.useState(null),M=o.useCallback(e=>{e!==P.current&&(P.current=e,R(e))},[]),N=o.useCallback(e=>{e!==j.current&&(j.current=e,C(e))},[]),A=p||E,S=m||T,P=o.useRef(null),j=o.useRef(null),k=o.useRef(y),L=null!=h,D=c(h),O=c(f),I=c(g),_=o.useCallback(()=>{if(!P.current||!j.current)return;let e={placement:t,strategy:n,middleware:x};O.current&&(e.platform=O.current),(0,r.rD)(P.current,j.current,e).then(e=>{let t={...e,isPositioned:!1!==I.current};F.current&&!a(k.current,t)&&(k.current=t,i.flushSync(()=>{w(t)}))})},[x,t,n,O,I]);l(()=>{!1===g&&k.current.isPositioned&&(k.current.isPositioned=!1,w(e=>({...e,isPositioned:!1})))},[g]);let F=o.useRef(!1);l(()=>(F.current=!0,()=>{F.current=!1}),[]),l(()=>{if(A&&(P.current=A),S&&(j.current=S),A&&S){if(D.current)return D.current(A,S,_);_()}},[A,S,_,D,L]);let U=o.useMemo(()=>({reference:P,floating:j,setReference:M,setFloating:N}),[M,N]),K=o.useMemo(()=>({reference:A,floating:S}),[A,S]),W=o.useMemo(()=>{let e={position:n,left:0,top:0};if(!K.floating)return e;let t=s(K.floating,y.x),r=s(K.floating,y.y);return v?{...e,transform:"translate("+t+"px, "+r+"px)",...u(K.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}},[n,v,K.floating,y.x,y.y]);return o.useMemo(()=>({...y,update:_,refs:U,elements:K,floatingStyles:W}),[y,_,U,K,W])}let f=e=>({name:"arrow",options:e,fn(t){let{element:n,padding:o}="function"==typeof e?e(t):e;return n&&({}).hasOwnProperty.call(n,"current")?null!=n.current?(0,r.UE)({element:n.current,padding:o}).fn(t):{}:n?(0,r.UE)({element:n,padding:o}).fn(t):{}}}),p=(e,t)=>({...(0,r.cY)(e),options:[e,t]}),m=(e,t)=>({...(0,r.BN)(e),options:[e,t]}),v=(e,t)=>({...(0,r.ER)(e),options:[e,t]}),h=(e,t)=>({...(0,r.UU)(e),options:[e,t]}),g=(e,t)=>({...(0,r.Ej)(e),options:[e,t]}),y=(e,t)=>({...(0,r.jD)(e),options:[e,t]}),w=(e,t)=>({...f(e),options:[e,t]})},4971:(e,t,n)=>{"use strict";n.d(t,{_:()=>o});var r=n(3969);function o(e,t){var n=(0,r._)(e,t,"get");return n.get?n.get.call(e):n.value}},5543:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},5623:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]])},5920:(e,t,n)=>{"use strict";function r(e,t,n){!function(e,t){if(t.has(e))throw TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}n.d(t,{_:()=>r})},6266:(e,t,n)=>{"use strict";n.d(t,{_:()=>o});var r=n(3969);function o(e,t,n){var o=(0,r._)(e,t,"set");return!function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw TypeError("attempted to set read only private field");t.value=n}}(e,o,n),n}},6287:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("Pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]])},7711:(e,t,n)=>{"use strict";n.d(t,{H_:()=>tJ,UC:()=>tX,YJ:()=>tq,q7:()=>tZ,VF:()=>t1,JU:()=>tG,ZL:()=>tY,z6:()=>tQ,hN:()=>t0,bL:()=>tB,wv:()=>t2,Pb:()=>t5,G5:()=>t6,ZP:()=>t4,l9:()=>tz});var r,o=n(2115),i=n.t(o,2);function l(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}function a(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function u(...e){return t=>{let n=!1,r=e.map(e=>{let r=a(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];"function"==typeof n?n():a(e[t],null)}}}}function s(...e){return o.useCallback(u(...e),e)}var c=n(5155);function d(e,t=[]){let n=[],r=()=>{let t=n.map(e=>o.createContext(e));return function(n){let r=n?.[e]||t;return o.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return r.scopeName=e,[function(t,r){let i=o.createContext(r),l=n.length;n=[...n,r];let a=t=>{let{scope:n,children:r,...a}=t,u=n?.[e]?.[l]||i,s=o.useMemo(()=>a,Object.values(a));return(0,c.jsx)(u.Provider,{value:s,children:r})};return a.displayName=t+"Provider",[a,function(n,a){let u=a?.[e]?.[l]||i,s=o.useContext(u);if(s)return s;if(void 0!==r)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let o=n(e)[`__scope${r}`];return{...t,...o}},{});return o.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}(r,...t)]}var f=globalThis?.document?o.useLayoutEffect:()=>{},p=i[" useInsertionEffect ".trim().toString()]||f;function m({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,l,a]=function({defaultProp:e,onChange:t}){let[n,r]=o.useState(e),i=o.useRef(n),l=o.useRef(t);return p(()=>{l.current=t},[t]),o.useEffect(()=>{i.current!==n&&(l.current?.(n),i.current=n)},[n,i]),[n,r,l]}({defaultProp:t,onChange:n}),u=void 0!==e,s=u?e:i;{let t=o.useRef(void 0!==e);o.useEffect(()=>{let e=t.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${r} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=u},[u,r])}return[s,o.useCallback(t=>{if(u){let n="function"==typeof t?t(e):t;n!==e&&a.current?.(n)}else l(t)},[u,e,l,a])]}Symbol("RADIX:SYNC_STATE");var v=n(7650),h=n(6634),g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let n=(0,h.TL)(`Primitive.${t}`),r=o.forwardRef((e,r)=>{let{asChild:o,...i}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,c.jsx)(o?n:t,{...i,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),y=n(4971),w=n(5920),x=n(6266);function b(e){let t=e+"CollectionProvider",[n,r]=d(t),[i,l]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=e=>{let{scope:t,children:n}=e,r=o.useRef(null),l=o.useRef(new Map).current;return(0,c.jsx)(i,{scope:t,itemMap:l,collectionRef:r,children:n})};a.displayName=t;let u=e+"CollectionSlot",f=(0,h.TL)(u),p=o.forwardRef((e,t)=>{let{scope:n,children:r}=e,o=s(t,l(u,n).collectionRef);return(0,c.jsx)(f,{ref:o,children:r})});p.displayName=u;let m=e+"CollectionItemSlot",v="data-radix-collection-item",g=(0,h.TL)(m),y=o.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,a=o.useRef(null),u=s(t,a),d=l(m,n);return o.useEffect(()=>(d.itemMap.set(a,{ref:a,...i}),()=>void d.itemMap.delete(a))),(0,c.jsx)(g,{[v]:"",ref:u,children:r})});return y.displayName=m,[{Provider:a,Slot:p,ItemSlot:y},function(t){let n=l(e+"CollectionConsumer",t);return o.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(v,"]")));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])},r]}var E=new WeakMap;function R(e,t){if("at"in Array.prototype)return Array.prototype.at.call(e,t);let n=function(e,t){let n=e.length,r=T(t),o=r>=0?r:n+r;return o<0||o>=n?-1:o}(e,t);return -1===n?void 0:e[n]}function T(e){return e!=e||0===e?0:Math.trunc(e)}r=new WeakMap;var C=o.createContext(void 0);function M(e){let t=o.useContext(C);return e||t||"ltr"}var N=n(338),A=n(2293),S=n(3862),P=globalThis?.document?o.useLayoutEffect:()=>{},j=i[" useId ".trim().toString()]||(()=>void 0),k=0;function L(e){let[t,n]=o.useState(j());return P(()=>{e||n(e=>e??String(k++))},[e]),e||(t?`radix-${t}`:"")}var D=n(4945),O=n(2475),I=o.forwardRef((e,t)=>{let{children:n,width:r=10,height:o=5,...i}=e;return(0,c.jsx)(g.svg,{...i,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,c.jsx)("polygon",{points:"0,0 30,0 15,10"})})});function _(e){let t=o.useRef(e);return o.useEffect(()=>{t.current=e}),o.useMemo(()=>(...e)=>t.current?.(...e),[])}I.displayName="Arrow";var F=globalThis?.document?o.useLayoutEffect:()=>{},U="Popper",[K,W]=d(U),[H,$]=K(U),V=e=>{let{__scopePopper:t,children:n}=e,[r,i]=o.useState(null);return(0,c.jsx)(H,{scope:t,anchor:r,onAnchorChange:i,children:n})};V.displayName=U;var B="PopperAnchor",z=o.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,l=$(B,n),a=o.useRef(null),u=s(t,a);return o.useEffect(()=>{l.onAnchorChange((null==r?void 0:r.current)||a.current)}),r?null:(0,c.jsx)(g.div,{...i,ref:u})});z.displayName=B;var Y="PopperContent",[X,q]=K(Y),G=o.forwardRef((e,t)=>{var n,r,i,l,a,u,d,f;let{__scopePopper:p,side:m="bottom",sideOffset:v=0,align:h="center",alignOffset:y=0,arrowPadding:w=0,avoidCollisions:x=!0,collisionBoundary:b=[],collisionPadding:E=0,sticky:R="partial",hideWhenDetached:T=!1,updatePositionStrategy:C="optimized",onPlaced:M,...N}=e,A=$(Y,p),[S,P]=o.useState(null),j=s(t,e=>P(e)),[k,L]=o.useState(null),I=function(e){let[t,n]=o.useState(void 0);return F(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,o;if(!Array.isArray(t)||!t.length)return;let i=t[0];if("borderBoxSize"in i){let e=i.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,o=t.blockSize}else r=e.offsetWidth,o=e.offsetHeight;n({width:r,height:o})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)},[e]),t}(k),U=null!==(d=null==I?void 0:I.width)&&void 0!==d?d:0,K=null!==(f=null==I?void 0:I.height)&&void 0!==f?f:0,W="number"==typeof E?E:{top:0,right:0,bottom:0,left:0,...E},H=Array.isArray(b)?b:[b],V=H.length>0,B={padding:W,boundary:H.filter(ee),altBoundary:V},{refs:z,floatingStyles:q,placement:G,isPositioned:Z,middlewareData:J}=(0,D.we)({strategy:"fixed",placement:m+("center"!==h?"-"+h:""),whileElementsMounted:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,O.ll)(...t,{animationFrame:"always"===C})},elements:{reference:A.anchor},middleware:[(0,D.cY)({mainAxis:v+K,alignmentAxis:y}),x&&(0,D.BN)({mainAxis:!0,crossAxis:!1,limiter:"partial"===R?(0,D.ER)():void 0,...B}),x&&(0,D.UU)({...B}),(0,D.Ej)({...B,apply:e=>{let{elements:t,rects:n,availableWidth:r,availableHeight:o}=e,{width:i,height:l}=n.reference,a=t.floating.style;a.setProperty("--radix-popper-available-width","".concat(r,"px")),a.setProperty("--radix-popper-available-height","".concat(o,"px")),a.setProperty("--radix-popper-anchor-width","".concat(i,"px")),a.setProperty("--radix-popper-anchor-height","".concat(l,"px"))}}),k&&(0,D.UE)({element:k,padding:w}),et({arrowWidth:U,arrowHeight:K}),T&&(0,D.jD)({strategy:"referenceHidden",...B})]}),[Q,er]=en(G),eo=_(M);F(()=>{Z&&(null==eo||eo())},[Z,eo]);let ei=null===(n=J.arrow)||void 0===n?void 0:n.x,el=null===(r=J.arrow)||void 0===r?void 0:r.y,ea=(null===(i=J.arrow)||void 0===i?void 0:i.centerOffset)!==0,[eu,es]=o.useState();return F(()=>{S&&es(window.getComputedStyle(S).zIndex)},[S]),(0,c.jsx)("div",{ref:z.setFloating,"data-radix-popper-content-wrapper":"",style:{...q,transform:Z?q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:eu,"--radix-popper-transform-origin":[null===(l=J.transformOrigin)||void 0===l?void 0:l.x,null===(a=J.transformOrigin)||void 0===a?void 0:a.y].join(" "),...(null===(u=J.hide)||void 0===u?void 0:u.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,c.jsx)(X,{scope:p,placedSide:Q,onArrowChange:L,arrowX:ei,arrowY:el,shouldHideArrow:ea,children:(0,c.jsx)(g.div,{"data-side":Q,"data-align":er,...N,ref:j,style:{...N.style,animation:Z?void 0:"none"}})})})});G.displayName=Y;var Z="PopperArrow",J={top:"bottom",right:"left",bottom:"top",left:"right"},Q=o.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,o=q(Z,n),i=J[o.placedSide];return(0,c.jsx)("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0},children:(0,c.jsx)(I,{...r,ref:t,style:{...r.style,display:"block"}})})});function ee(e){return null!==e}Q.displayName=Z;var et=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,l;let{placement:a,rects:u,middlewareData:s}=t,c=(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset)!==0,d=c?0:e.arrowWidth,f=c?0:e.arrowHeight,[p,m]=en(a),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(i=null===(r=s.arrow)||void 0===r?void 0:r.x)&&void 0!==i?i:0)+d/2,g=(null!==(l=null===(o=s.arrow)||void 0===o?void 0:o.y)&&void 0!==l?l:0)+f/2,y="",w="";return"bottom"===p?(y=c?v:"".concat(h,"px"),w="".concat(-f,"px")):"top"===p?(y=c?v:"".concat(h,"px"),w="".concat(u.floating.height+f,"px")):"right"===p?(y="".concat(-f,"px"),w=c?v:"".concat(g,"px")):"left"===p&&(y="".concat(u.floating.width+f,"px"),w=c?v:"".concat(g,"px")),{data:{x:y,y:w}}}});function en(e){let[t,n="center"]=e.split("-");return[t,n]}var er=n(7268),eo=globalThis?.document?o.useLayoutEffect:()=>{},ei=e=>{let{present:t,children:n}=e,r=function(e){var t,n;let[r,i]=o.useState(),l=o.useRef(null),a=o.useRef(e),u=o.useRef("none"),[s,c]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},o.useReducer((e,t)=>{let r=n[e][t];return null!=r?r:e},t));return o.useEffect(()=>{let e=el(l.current);u.current="mounted"===s?e:"none"},[s]),eo(()=>{let t=l.current,n=a.current;if(n!==e){let r=u.current,o=el(t);e?c("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?c("UNMOUNT"):n&&r!==o?c("ANIMATION_OUT"):c("UNMOUNT"),a.current=e}},[e,c]),eo(()=>{if(r){var e;let t;let n=null!==(e=r.ownerDocument.defaultView)&&void 0!==e?e:window,o=e=>{let o=el(l.current).includes(e.animationName);if(e.target===r&&o&&(c("ANIMATION_END"),!a.current)){let e=r.style.animationFillMode;r.style.animationFillMode="forwards",t=n.setTimeout(()=>{"forwards"===r.style.animationFillMode&&(r.style.animationFillMode=e)})}},i=e=>{e.target===r&&(u.current=el(l.current))};return r.addEventListener("animationstart",i),r.addEventListener("animationcancel",o),r.addEventListener("animationend",o),()=>{n.clearTimeout(t),r.removeEventListener("animationstart",i),r.removeEventListener("animationcancel",o),r.removeEventListener("animationend",o)}}c("ANIMATION_END")},[r,c]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:o.useCallback(e=>{l.current=e?getComputedStyle(e):null,i(e)},[])}}(t),i="function"==typeof n?n({present:r.isPresent}):o.Children.only(n),l=s(r.ref,function(e){var t,n;let r=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?e.ref:(o=(r=null===(n=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===n?void 0:n.get)&&"isReactWarning"in r&&r.isReactWarning)?e.props.ref:e.props.ref||e.ref}(i));return"function"==typeof n||r.isPresent?o.cloneElement(i,{ref:l}):null};function el(e){return(null==e?void 0:e.animationName)||"none"}ei.displayName="Presence";var ea="rovingFocusGroup.onEntryFocus",eu={bubbles:!1,cancelable:!0},es="RovingFocusGroup",[ec,ed,ef]=b(es),[ep,em]=d(es,[ef]),[ev,eh]=ep(es),eg=o.forwardRef((e,t)=>(0,c.jsx)(ec.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,c.jsx)(ec.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,c.jsx)(ey,{...e,ref:t})})}));eg.displayName=es;var ey=o.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:u,defaultCurrentTabStopId:d,onCurrentTabStopIdChange:f,onEntryFocus:p,preventScrollOnEntryFocus:v=!1,...h}=e,y=o.useRef(null),w=s(t,y),x=M(a),[b,E]=m({prop:u,defaultProp:null!=d?d:null,onChange:f,caller:es}),[R,T]=o.useState(!1),C=_(p),N=ed(n),A=o.useRef(!1),[S,P]=o.useState(0);return o.useEffect(()=>{let e=y.current;if(e)return e.addEventListener(ea,C),()=>e.removeEventListener(ea,C)},[C]),(0,c.jsx)(ev,{scope:n,orientation:r,dir:x,loop:i,currentTabStopId:b,onItemFocus:o.useCallback(e=>E(e),[E]),onItemShiftTab:o.useCallback(()=>T(!0),[]),onFocusableItemAdd:o.useCallback(()=>P(e=>e+1),[]),onFocusableItemRemove:o.useCallback(()=>P(e=>e-1),[]),children:(0,c.jsx)(g.div,{tabIndex:R||0===S?-1:0,"data-orientation":r,...h,ref:w,style:{outline:"none",...e.style},onMouseDown:l(e.onMouseDown,()=>{A.current=!0}),onFocus:l(e.onFocus,e=>{let t=!A.current;if(e.target===e.currentTarget&&t&&!R){let t=new CustomEvent(ea,eu);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=N().filter(e=>e.focusable);eE([e.find(e=>e.active),e.find(e=>e.id===b),...e].filter(Boolean).map(e=>e.ref.current),v)}}A.current=!1}),onBlur:l(e.onBlur,()=>T(!1))})})}),ew="RovingFocusGroupItem",ex=o.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:u,...s}=e,d=L(),f=a||d,p=eh(ew,n),m=p.currentTabStopId===f,v=ed(n),{onFocusableItemAdd:h,onFocusableItemRemove:y,currentTabStopId:w}=p;return o.useEffect(()=>{if(r)return h(),()=>y()},[r,h,y]),(0,c.jsx)(ec.ItemSlot,{scope:n,id:f,focusable:r,active:i,children:(0,c.jsx)(g.span,{tabIndex:m?0:-1,"data-orientation":p.orientation,...s,ref:t,onMouseDown:l(e.onMouseDown,e=>{r?p.onItemFocus(f):e.preventDefault()}),onFocus:l(e.onFocus,()=>p.onItemFocus(f)),onKeyDown:l(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey){p.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=function(e,t,n){var r;let o=(r=e.key,"rtl"!==n?r:"ArrowLeft"===r?"ArrowRight":"ArrowRight"===r?"ArrowLeft":r);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(o))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(o)))return eb[o]}(e,p.orientation,p.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=v().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)n.reverse();else if("prev"===t||"next"===t){"prev"===t&&n.reverse();let r=n.indexOf(e.currentTarget);n=p.loop?function(e,t){return e.map((n,r)=>e[(t+r)%e.length])}(n,r+1):n.slice(r+1)}setTimeout(()=>eE(n))}}),children:"function"==typeof u?u({isCurrentTabStop:m,hasTabStop:null!=w}):u})})});ex.displayName=ew;var eb={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function eE(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}var eR=n(8168),eT=n(3795),eC=["Enter"," "],eM=["ArrowUp","PageDown","End"],eN=["ArrowDown","PageUp","Home",...eM],eA={ltr:[...eC,"ArrowRight"],rtl:[...eC,"ArrowLeft"]},eS={ltr:["ArrowLeft"],rtl:["ArrowRight"]},eP="Menu",[ej,ek,eL]=b(eP),[eD,eO]=d(eP,[eL,W,em]),eI=W(),e_=em(),[eF,eU]=eD(eP),[eK,eW]=eD(eP),eH=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:l,modal:a=!0}=e,u=eI(t),[s,d]=o.useState(null),f=o.useRef(!1),p=_(l),m=M(i);return o.useEffect(()=>{let e=()=>{f.current=!0,document.addEventListener("pointerdown",t,{capture:!0,once:!0}),document.addEventListener("pointermove",t,{capture:!0,once:!0})},t=()=>f.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",t,{capture:!0}),document.removeEventListener("pointermove",t,{capture:!0})}},[]),(0,c.jsx)(V,{...u,children:(0,c.jsx)(eF,{scope:t,open:n,onOpenChange:p,content:s,onContentChange:d,children:(0,c.jsx)(eK,{scope:t,onClose:o.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:f,dir:m,modal:a,children:r})})})};eH.displayName=eP;var e$=o.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,o=eI(n);return(0,c.jsx)(z,{...o,...r,ref:t})});e$.displayName="MenuAnchor";var eV="MenuPortal",[eB,ez]=eD(eV,{forceMount:void 0}),eY=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:o}=e,i=eU(eV,t);return(0,c.jsx)(eB,{scope:t,forceMount:n,children:(0,c.jsx)(ei,{present:n||i.open,children:(0,c.jsx)(er.Z,{asChild:!0,container:o,children:r})})})};eY.displayName=eV;var eX="MenuContent",[eq,eG]=eD(eX),eZ=o.forwardRef((e,t)=>{let n=ez(eX,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,i=eU(eX,e.__scopeMenu),l=eW(eX,e.__scopeMenu);return(0,c.jsx)(ej.Provider,{scope:e.__scopeMenu,children:(0,c.jsx)(ei,{present:r||i.open,children:(0,c.jsx)(ej.Slot,{scope:e.__scopeMenu,children:l.modal?(0,c.jsx)(eJ,{...o,ref:t}):(0,c.jsx)(eQ,{...o,ref:t})})})})}),eJ=o.forwardRef((e,t)=>{let n=eU(eX,e.__scopeMenu),r=o.useRef(null),i=s(t,r);return o.useEffect(()=>{let e=r.current;if(e)return(0,eR.Eq)(e)},[]),(0,c.jsx)(e1,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:l(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),eQ=o.forwardRef((e,t)=>{let n=eU(eX,e.__scopeMenu);return(0,c.jsx)(e1,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),e0=(0,h.TL)("MenuContent.ScrollLock"),e1=o.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:u,disableOutsidePointerEvents:d,onEntryFocus:f,onEscapeKeyDown:p,onPointerDownOutside:m,onFocusOutside:v,onInteractOutside:h,onDismiss:g,disableOutsideScroll:y,...w}=e,x=eU(eX,n),b=eW(eX,n),E=eI(n),R=e_(n),T=ek(n),[C,M]=o.useState(null),P=o.useRef(null),j=s(t,P,x.onContentChange),k=o.useRef(0),L=o.useRef(""),D=o.useRef(0),O=o.useRef(null),I=o.useRef("right"),_=o.useRef(0),F=y?eT.A:o.Fragment,U=e=>{var t,n;let r=L.current+e,o=T().filter(e=>!e.disabled),i=document.activeElement,l=null===(t=o.find(e=>e.ref.current===i))||void 0===t?void 0:t.textValue,a=function(e,t,n){var r;let o=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=(r=Math.max(n?e.indexOf(n):-1,0),e.map((t,n)=>e[(r+n)%e.length]));1===o.length&&(i=i.filter(e=>e!==n));let l=i.find(e=>e.toLowerCase().startsWith(o.toLowerCase()));return l!==n?l:void 0}(o.map(e=>e.textValue),r,l),u=null===(n=o.find(e=>e.textValue===a))||void 0===n?void 0:n.ref.current;!function e(t){L.current=t,window.clearTimeout(k.current),""!==t&&(k.current=window.setTimeout(()=>e(""),1e3))}(r),u&&setTimeout(()=>u.focus())};o.useEffect(()=>()=>window.clearTimeout(k.current),[]),(0,A.Oh)();let K=o.useCallback(e=>{var t,n;return I.current===(null===(t=O.current)||void 0===t?void 0:t.side)&&function(e,t){return!!t&&function(e,t){let{x:n,y:r}=e,o=!1;for(let e=0,i=t.length-1;e<t.length;i=e++){let l=t[e],a=t[i],u=l.x,s=l.y,c=a.x,d=a.y;s>r!=d>r&&n<(c-u)*(r-s)/(d-s)+u&&(o=!o)}return o}({x:e.clientX,y:e.clientY},t)}(e,null===(n=O.current)||void 0===n?void 0:n.area)},[]);return(0,c.jsx)(eq,{scope:n,searchRef:L,onItemEnter:o.useCallback(e=>{K(e)&&e.preventDefault()},[K]),onItemLeave:o.useCallback(e=>{var t;K(e)||(null===(t=P.current)||void 0===t||t.focus(),M(null))},[K]),onTriggerLeave:o.useCallback(e=>{K(e)&&e.preventDefault()},[K]),pointerGraceTimerRef:D,onPointerGraceIntentChange:o.useCallback(e=>{O.current=e},[]),children:(0,c.jsx)(F,{...y?{as:e0,allowPinchZoom:!0}:void 0,children:(0,c.jsx)(S.n,{asChild:!0,trapped:i,onMountAutoFocus:l(a,e=>{var t;e.preventDefault(),null===(t=P.current)||void 0===t||t.focus({preventScroll:!0})}),onUnmountAutoFocus:u,children:(0,c.jsx)(N.qW,{asChild:!0,disableOutsidePointerEvents:d,onEscapeKeyDown:p,onPointerDownOutside:m,onFocusOutside:v,onInteractOutside:h,onDismiss:g,children:(0,c.jsx)(eg,{asChild:!0,...R,dir:b.dir,orientation:"vertical",loop:r,currentTabStopId:C,onCurrentTabStopIdChange:M,onEntryFocus:l(f,e=>{b.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,c.jsx)(G,{role:"menu","aria-orientation":"vertical","data-state":tw(x.open),"data-radix-menu-content":"",dir:b.dir,...E,...w,ref:j,style:{outline:"none",...w.style},onKeyDown:l(w.onKeyDown,e=>{let t=e.target.closest("[data-radix-menu-content]")===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=1===e.key.length;t&&("Tab"===e.key&&e.preventDefault(),!n&&r&&U(e.key));let o=P.current;if(e.target!==o||!eN.includes(e.key))return;e.preventDefault();let i=T().filter(e=>!e.disabled).map(e=>e.ref.current);eM.includes(e.key)&&i.reverse(),function(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}(i)}),onBlur:l(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(k.current),L.current="")}),onPointerMove:l(e.onPointerMove,tE(e=>{let t=e.target,n=_.current!==e.clientX;e.currentTarget.contains(t)&&n&&(I.current=e.clientX>_.current?"right":"left",_.current=e.clientX)}))})})})})})})});eZ.displayName=eX;var e2=o.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,c.jsx)(g.div,{role:"group",...r,ref:t})});e2.displayName="MenuGroup";var e5=o.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,c.jsx)(g.div,{...r,ref:t})});e5.displayName="MenuLabel";var e4="MenuItem",e6="menu.itemSelect",e9=o.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=o.useRef(null),u=eW(e4,e.__scopeMenu),d=eG(e4,e.__scopeMenu),f=s(t,a),p=o.useRef(!1);return(0,c.jsx)(e3,{...i,ref:f,disabled:n,onClick:l(e.onClick,()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(e6,{bubbles:!0,cancelable:!0});e.addEventListener(e6,e=>null==r?void 0:r(e),{once:!0}),function(e,t){e&&v.flushSync(()=>e.dispatchEvent(t))}(e,t),t.defaultPrevented?p.current=!1:u.onClose()}}),onPointerDown:t=>{var n;null===(n=e.onPointerDown)||void 0===n||n.call(e,t),p.current=!0},onPointerUp:l(e.onPointerUp,e=>{var t;p.current||null===(t=e.currentTarget)||void 0===t||t.click()}),onKeyDown:l(e.onKeyDown,e=>{let t=""!==d.searchRef.current;!n&&(!t||" "!==e.key)&&eC.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});e9.displayName=e4;var e3=o.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,u=eG(e4,n),d=e_(n),f=o.useRef(null),p=s(t,f),[m,v]=o.useState(!1),[h,y]=o.useState("");return o.useEffect(()=>{let e=f.current;if(e){var t;y((null!==(t=e.textContent)&&void 0!==t?t:"").trim())}},[a.children]),(0,c.jsx)(ej.ItemSlot,{scope:n,disabled:r,textValue:null!=i?i:h,children:(0,c.jsx)(ex,{asChild:!0,...d,focusable:!r,children:(0,c.jsx)(g.div,{role:"menuitem","data-highlighted":m?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...a,ref:p,onPointerMove:l(e.onPointerMove,tE(e=>{r?u.onItemLeave(e):(u.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:l(e.onPointerLeave,tE(e=>u.onItemLeave(e))),onFocus:l(e.onFocus,()=>v(!0)),onBlur:l(e.onBlur,()=>v(!1))})})})}),e7=o.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...o}=e;return(0,c.jsx)(tl,{scope:e.__scopeMenu,checked:n,children:(0,c.jsx)(e9,{role:"menuitemcheckbox","aria-checked":tx(n)?"mixed":n,...o,ref:t,"data-state":tb(n),onSelect:l(o.onSelect,()=>null==r?void 0:r(!!tx(n)||!n),{checkForDefaultPrevented:!1})})})});e7.displayName="MenuCheckboxItem";var e8="MenuRadioGroup",[te,tt]=eD(e8,{value:void 0,onValueChange:()=>{}}),tn=o.forwardRef((e,t)=>{let{value:n,onValueChange:r,...o}=e,i=_(r);return(0,c.jsx)(te,{scope:e.__scopeMenu,value:n,onValueChange:i,children:(0,c.jsx)(e2,{...o,ref:t})})});tn.displayName=e8;var tr="MenuRadioItem",to=o.forwardRef((e,t)=>{let{value:n,...r}=e,o=tt(tr,e.__scopeMenu),i=n===o.value;return(0,c.jsx)(tl,{scope:e.__scopeMenu,checked:i,children:(0,c.jsx)(e9,{role:"menuitemradio","aria-checked":i,...r,ref:t,"data-state":tb(i),onSelect:l(r.onSelect,()=>{var e;return null===(e=o.onValueChange)||void 0===e?void 0:e.call(o,n)},{checkForDefaultPrevented:!1})})})});to.displayName=tr;var ti="MenuItemIndicator",[tl,ta]=eD(ti,{checked:!1}),tu=o.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...o}=e,i=ta(ti,n);return(0,c.jsx)(ei,{present:r||tx(i.checked)||!0===i.checked,children:(0,c.jsx)(g.span,{...o,ref:t,"data-state":tb(i.checked)})})});tu.displayName=ti;var ts=o.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,c.jsx)(g.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});ts.displayName="MenuSeparator";var tc=o.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,o=eI(n);return(0,c.jsx)(Q,{...o,...r,ref:t})});tc.displayName="MenuArrow";var td="MenuSub",[tf,tp]=eD(td),tm=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,l=eU(td,t),a=eI(t),[u,s]=o.useState(null),[d,f]=o.useState(null),p=_(i);return o.useEffect(()=>(!1===l.open&&p(!1),()=>p(!1)),[l.open,p]),(0,c.jsx)(V,{...a,children:(0,c.jsx)(eF,{scope:t,open:r,onOpenChange:p,content:d,onContentChange:f,children:(0,c.jsx)(tf,{scope:t,contentId:L(),triggerId:L(),trigger:u,onTriggerChange:s,children:n})})})};tm.displayName=td;var tv="MenuSubTrigger",th=o.forwardRef((e,t)=>{let n=eU(tv,e.__scopeMenu),r=eW(tv,e.__scopeMenu),i=tp(tv,e.__scopeMenu),a=eG(tv,e.__scopeMenu),s=o.useRef(null),{pointerGraceTimerRef:d,onPointerGraceIntentChange:f}=a,p={__scopeMenu:e.__scopeMenu},m=o.useCallback(()=>{s.current&&window.clearTimeout(s.current),s.current=null},[]);return o.useEffect(()=>m,[m]),o.useEffect(()=>{let e=d.current;return()=>{window.clearTimeout(e),f(null)}},[d,f]),(0,c.jsx)(e$,{asChild:!0,...p,children:(0,c.jsx)(e3,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":i.contentId,"data-state":tw(n.open),...e,ref:u(t,i.onTriggerChange),onClick:t=>{var r;null===(r=e.onClick)||void 0===r||r.call(e,t),e.disabled||t.defaultPrevented||(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:l(e.onPointerMove,tE(t=>{a.onItemEnter(t),t.defaultPrevented||e.disabled||n.open||s.current||(a.onPointerGraceIntentChange(null),s.current=window.setTimeout(()=>{n.onOpenChange(!0),m()},100))})),onPointerLeave:l(e.onPointerLeave,tE(e=>{var t,r;m();let o=null===(t=n.content)||void 0===t?void 0:t.getBoundingClientRect();if(o){let t=null===(r=n.content)||void 0===r?void 0:r.dataset.side,i="right"===t,l=o[i?"left":"right"],u=o[i?"right":"left"];a.onPointerGraceIntentChange({area:[{x:e.clientX+(i?-5:5),y:e.clientY},{x:l,y:o.top},{x:u,y:o.top},{x:u,y:o.bottom},{x:l,y:o.bottom}],side:t}),window.clearTimeout(d.current),d.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:l(e.onKeyDown,t=>{let o=""!==a.searchRef.current;if(!e.disabled&&(!o||" "!==t.key)&&eA[r.dir].includes(t.key)){var i;n.onOpenChange(!0),null===(i=n.content)||void 0===i||i.focus(),t.preventDefault()}})})})});th.displayName=tv;var tg="MenuSubContent",ty=o.forwardRef((e,t)=>{let n=ez(eX,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=eU(eX,e.__scopeMenu),u=eW(eX,e.__scopeMenu),d=tp(tg,e.__scopeMenu),f=o.useRef(null),p=s(t,f);return(0,c.jsx)(ej.Provider,{scope:e.__scopeMenu,children:(0,c.jsx)(ei,{present:r||a.open,children:(0,c.jsx)(ej.Slot,{scope:e.__scopeMenu,children:(0,c.jsx)(e1,{id:d.contentId,"aria-labelledby":d.triggerId,...i,ref:p,align:"start",side:"rtl"===u.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{var t;u.isUsingKeyboardRef.current&&(null===(t=f.current)||void 0===t||t.focus()),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:l(e.onFocusOutside,e=>{e.target!==d.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:l(e.onEscapeKeyDown,e=>{u.onClose(),e.preventDefault()}),onKeyDown:l(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=eS[u.dir].includes(e.key);if(t&&n){var r;a.onOpenChange(!1),null===(r=d.trigger)||void 0===r||r.focus(),e.preventDefault()}})})})})})});function tw(e){return e?"open":"closed"}function tx(e){return"indeterminate"===e}function tb(e){return tx(e)?"indeterminate":e?"checked":"unchecked"}function tE(e){return t=>"mouse"===t.pointerType?e(t):void 0}ty.displayName=tg;var tR="DropdownMenu",[tT,tC]=d(tR,[eO]),tM=eO(),[tN,tA]=tT(tR),tS=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:l,onOpenChange:a,modal:u=!0}=e,s=tM(t),d=o.useRef(null),[f,p]=m({prop:i,defaultProp:null!=l&&l,onChange:a,caller:tR});return(0,c.jsx)(tN,{scope:t,triggerId:L(),triggerRef:d,contentId:L(),open:f,onOpenChange:p,onOpenToggle:o.useCallback(()=>p(e=>!e),[p]),modal:u,children:(0,c.jsx)(eH,{...s,open:f,onOpenChange:p,dir:r,modal:u,children:n})})};tS.displayName=tR;var tP="DropdownMenuTrigger",tj=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...o}=e,i=tA(tP,n),a=tM(n);return(0,c.jsx)(e$,{asChild:!0,...a,children:(0,c.jsx)(g.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:u(t,i.triggerRef),onPointerDown:l(e.onPointerDown,e=>{r||0!==e.button||!1!==e.ctrlKey||(i.onOpenToggle(),i.open||e.preventDefault())}),onKeyDown:l(e.onKeyDown,e=>{!r&&(["Enter"," "].includes(e.key)&&i.onOpenToggle(),"ArrowDown"===e.key&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});tj.displayName=tP;var tk=e=>{let{__scopeDropdownMenu:t,...n}=e,r=tM(t);return(0,c.jsx)(eY,{...r,...n})};tk.displayName="DropdownMenuPortal";var tL="DropdownMenuContent",tD=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=tA(tL,n),a=tM(n),u=o.useRef(!1);return(0,c.jsx)(eZ,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:l(e.onCloseAutoFocus,e=>{var t;u.current||null===(t=i.triggerRef.current)||void 0===t||t.focus(),u.current=!1,e.preventDefault()}),onInteractOutside:l(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey,r=2===t.button||n;(!i.modal||r)&&(u.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});tD.displayName=tL;var tO=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(e2,{...o,...r,ref:t})});tO.displayName="DropdownMenuGroup";var tI=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(e5,{...o,...r,ref:t})});tI.displayName="DropdownMenuLabel";var t_=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(e9,{...o,...r,ref:t})});t_.displayName="DropdownMenuItem";var tF=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(e7,{...o,...r,ref:t})});tF.displayName="DropdownMenuCheckboxItem";var tU=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(tn,{...o,...r,ref:t})});tU.displayName="DropdownMenuRadioGroup";var tK=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(to,{...o,...r,ref:t})});tK.displayName="DropdownMenuRadioItem";var tW=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(tu,{...o,...r,ref:t})});tW.displayName="DropdownMenuItemIndicator";var tH=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(ts,{...o,...r,ref:t})});tH.displayName="DropdownMenuSeparator",o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(tc,{...o,...r,ref:t})}).displayName="DropdownMenuArrow";var t$=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(th,{...o,...r,ref:t})});t$.displayName="DropdownMenuSubTrigger";var tV=o.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=tM(n);return(0,c.jsx)(ty,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});tV.displayName="DropdownMenuSubContent";var tB=tS,tz=tj,tY=tk,tX=tD,tq=tO,tG=tI,tZ=t_,tJ=tF,tQ=tU,t0=tK,t1=tW,t2=tH,t5=e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:o,defaultOpen:i}=e,l=tM(t),[a,u]=m({prop:r,defaultProp:null!=i&&i,onChange:o,caller:"DropdownMenuSub"});return(0,c.jsx)(tm,{...l,open:a,onOpenChange:u,children:n})},t4=t$,t6=tV},8062:e=>{e.exports={style:{fontFamily:"'DM Sans', 'DM Sans Fallback'",fontStyle:"normal"},className:"__className_989755"}},9428:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r=(0,n(9946).A)("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]])}}]);
|
_backend/frontend/_next/static/chunks/8187f03c-c57963cb1b573777.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/822-c73eb0df0acbcf5c.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/app/_not-found/page-b63df5a8d3225455.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{3632:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let l=r(5155),n=r(6395);function o(){return(0,l.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3868:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return r(3632)}])},6395:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}}),r(8229);let l=r(5155);r(2115);let n={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function o(e){let{status:t,message:r}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("title",{children:t+": "+r}),(0,l.jsx)("div",{style:n.error,children:(0,l.jsxs)("div",{children:[(0,l.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,l.jsx)("h1",{className:"next-error-h1",style:n.h1,children:t}),(0,l.jsx)("div",{style:n.desc,children:(0,l.jsx)("h2",{style:n.h2,children:r})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{var t=t=>e(e.s=t);e.O(0,[441,684,358],()=>t(3868)),_N_E=e.O()}]);
|
_backend/frontend/_next/static/chunks/app/layout-6da5960c930aa43b.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{347:()=>{},2523:(e,a,t)=>{"use strict";t.d(a,{p:()=>n});var r=t(5155),s=t(2115),i=t(9434);let n=s.forwardRef((e,a)=>{let{className:t,type:s,...n}=e;return(0,r.jsx)("input",{type:s,className:(0,i.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:a,...n})});n.displayName="Input"},2558:(e,a,t)=>{"use strict";t.d(a,{Toaster:()=>h});var r=t(5155),s=t(7481),i=t(2115),n=t(1114),d=t(2085),o=t(4416),l=t(9434);let c=n.Kq,u=i.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(n.LM,{ref:a,className:(0,l.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",t),...s})});u.displayName=n.LM.displayName;let m=(0,d.F)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),f=i.forwardRef((e,a)=>{let{className:t,variant:s,...i}=e;return(0,r.jsx)(n.bL,{ref:a,className:(0,l.cn)(m({variant:s}),t),...i})});f.displayName=n.bL.displayName,i.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(n.rc,{ref:a,className:(0,l.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...s})}).displayName=n.rc.displayName;let p=i.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(n.bm,{ref:a,className:(0,l.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...s,children:(0,r.jsx)(o.A,{className:"h-4 w-4"})})});p.displayName=n.bm.displayName;let x=i.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(n.hE,{ref:a,className:(0,l.cn)("text-sm font-semibold",t),...s})});x.displayName=n.hE.displayName;let b=i.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(n.VY,{ref:a,className:(0,l.cn)("text-sm opacity-90",t),...s})});function h(){let{toasts:e}=(0,s.dj)();return(0,r.jsxs)(c,{children:[e.map(function(e){let{id:a,title:t,description:s,action:i,...n}=e;return(0,r.jsxs)(f,{...n,children:[(0,r.jsxs)("div",{className:"grid gap-1",children:[t&&(0,r.jsx)(x,{children:t}),s&&(0,r.jsx)(b,{children:s})]}),i,(0,r.jsx)(p,{})]},a)}),(0,r.jsx)(u,{})]})}b.displayName=n.VY.displayName},2668:(e,a,t)=>{"use strict";t.d(a,{default:()=>M});var r=t(5155),s=t(2115),i=t(4616),n=t(5543),d=t(1497),o=t(5657),l=t(3276),c=t(514),u=t(5623),m=t(6287),f=t(4126),p=t(4165),x=t(285),b=t(2523);function h(e){let{chatId:a,initialTitle:t,onRename:i,isOpen:n,onClose:d}=e,[o,l]=(0,s.useState)(t);return(0,r.jsx)(p.lG,{open:n,onOpenChange:d,children:(0,r.jsxs)(p.Cf,{children:[(0,r.jsxs)(p.c7,{children:[(0,r.jsx)(p.L3,{children:"Rename Chat"}),(0,r.jsx)(p.rr,{children:"Change the title of this chat conversation"})]}),(0,r.jsx)("div",{className:"flex gap-2",children:(0,r.jsx)(b.p,{value:o,onChange:e=>l(e.target.value),placeholder:"New chat name"})}),(0,r.jsxs)(p.Es,{children:[(0,r.jsx)(x.$,{variant:"outline",onClick:d,children:"Cancel"}),(0,r.jsx)(x.$,{onClick:()=>{i&&o.trim()&&i(a,o).then(e=>{e&&d()})},children:"Save"})]})]})})}function g(e){let{chatId:a,onDelete:t,isOpen:s,onClose:i}=e;return(0,r.jsx)(p.lG,{open:s,onOpenChange:i,children:(0,r.jsxs)(p.Cf,{children:[(0,r.jsxs)(p.c7,{children:[(0,r.jsx)(p.L3,{children:"Delete Chat"}),(0,r.jsx)(p.rr,{children:"Are you sure you want to delete this chat? This action cannot be undone."})]}),(0,r.jsxs)(p.Es,{children:[(0,r.jsx)(x.$,{variant:"outline",onClick:i,children:"Cancel"}),(0,r.jsx)(x.$,{variant:"destructive",onClick:()=>{t&&t(a).then(e=>{e&&i()})},children:"Delete"})]})]})})}var v=t(7711),w=t(3052),j=t(5196),N=t(9428),y=t(9434);let k=v.bL,C=v.l9;v.YJ,v.ZL,v.Pb,v.z6,s.forwardRef((e,a)=>{let{className:t,inset:s,children:i,...n}=e;return(0,r.jsxs)(v.ZP,{ref:a,className:(0,y.cn)("flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",s&&"pl-8",t),...n,children:[i,(0,r.jsx)(w.A,{className:"ml-auto"})]})}).displayName=v.ZP.displayName,s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(v.G5,{ref:a,className:(0,y.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...s})}).displayName=v.G5.displayName;let S=s.forwardRef((e,a)=>{let{className:t,sideOffset:s=4,...i}=e;return(0,r.jsx)(v.ZL,{children:(0,r.jsx)(v.UC,{ref:a,sideOffset:s,className:(0,y.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...i})})});S.displayName=v.UC.displayName;let R=s.forwardRef((e,a)=>{let{className:t,inset:s,...i}=e;return(0,r.jsx)(v.q7,{ref:a,className:(0,y.cn)("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",s&&"pl-8",t),...i})});R.displayName=v.q7.displayName,s.forwardRef((e,a)=>{let{className:t,children:s,checked:i,...n}=e;return(0,r.jsxs)(v.H_,{ref:a,className:(0,y.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:i,...n,children:[(0,r.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(v.VF,{children:(0,r.jsx)(j.A,{className:"h-4 w-4"})})}),s]})}).displayName=v.H_.displayName,s.forwardRef((e,a)=>{let{className:t,children:s,...i}=e;return(0,r.jsxs)(v.hN,{ref:a,className:(0,y.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...i,children:[(0,r.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(v.VF,{children:(0,r.jsx)(N.A,{className:"h-2 w-2 fill-current"})})}),s]})}).displayName=v.hN.displayName,s.forwardRef((e,a)=>{let{className:t,inset:s,...i}=e;return(0,r.jsx)(v.JU,{ref:a,className:(0,y.cn)("px-2 py-1.5 text-sm font-semibold",s&&"pl-8",t),...i})}).displayName=v.JU.displayName,s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(v.wv,{ref:a,className:(0,y.cn)("-mx-1 my-1 h-px bg-muted",t),...s})}).displayName=v.wv.displayName;let z=e=>{let{chat:a,onClick:t,isSelected:i,onDelete:n,onRename:o}=e,[c,p]=(0,s.useState)(!1),[x,b]=(0,s.useState)(!1);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(l.FX,{children:[(0,r.jsx)(l.Uj,{onClick:()=>t(a.id),className:"group relative rounded-lg transition-all duration-200 hover:bg-accent/50 ".concat(i?"bg-gradient-to-r from-primary/10 to-primary/5 border border-primary/20 text-primary":"hover:bg-muted/50"),children:(0,r.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[(0,r.jsx)(d.A,{className:"h-4 w-4 flex-shrink-0 ".concat(i?"text-primary":"text-muted-foreground")}),(0,r.jsx)("span",{className:"text-sm truncate font-medium",children:a.title})]})}),(0,r.jsxs)(k,{children:[(0,r.jsx)(C,{asChild:!0,children:(0,r.jsx)(l.e7,{showOnHover:!0,className:"opacity-0 group-hover:opacity-100 transition-opacity duration-200 hover:bg-accent rounded-md",children:(0,r.jsx)(u.A,{className:"h-4 w-4"})})}),(0,r.jsxs)(S,{side:"right",align:"start",className:"w-48",children:[(0,r.jsxs)(R,{onClick:()=>p(!0),className:"cursor-pointer",children:[(0,r.jsx)(m.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Rename"})]}),(0,r.jsxs)(R,{onClick:()=>b(!0),className:"cursor-pointer text-destructive focus:text-destructive",children:[(0,r.jsx)(f.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Delete Conversation"})]})]})]})]}),(0,r.jsx)(h,{chatId:a.id,initialTitle:a.title,onRename:o,isOpen:c,onClose:()=>p(!1)}),(0,r.jsx)(g,{chatId:a.id,onDelete:n,isOpen:x,onClose:()=>b(!1)})]})};var _=t(5533),L=t(1927),A=t(4186),E=t(6424);let F=e=>{let{open:a,onOpenChange:t}=e,[i,o]=(0,s.useState)(""),[l,u]=(0,s.useState)([]),{loadChat:m}=(0,L.L)();(0,s.useEffect)(()=>{let e=async()=>{try{let e=await (0,c.rr)();u(e.reverse())}catch(e){console.error("Failed to load chats:",e)}};a&&e()},[a]);let f=l.filter(e=>e.title.toLowerCase().includes(i.toLowerCase())),h=e=>{m(e),t(!1),o("")},g=e=>{let a=new Date(e),t=Math.ceil(Math.abs(new Date().getTime()-a.getTime())/864e5);return 1===t?"Today":2===t?"Yesterday":t<=7?"".concat(t-1," days ago"):a.toLocaleDateString()};return(0,r.jsx)(p.lG,{open:a,onOpenChange:t,children:(0,r.jsxs)(p.Cf,{className:"sm:max-w-[500px] p-0",children:[(0,r.jsx)(p.c7,{className:"px-6 pt-6 pb-4",children:(0,r.jsx)(p.L3,{className:"text-lg font-semibold",children:"Search Chats"})}),(0,r.jsx)("div",{className:"px-6 pb-4",children:(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(n.A,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,r.jsx)(b.p,{placeholder:"Search your conversations...",value:i,onChange:e=>o(e.target.value),className:"pl-10 h-11 bg-muted/50 border-border/50 rounded-lg focus:bg-background",autoFocus:!0})]})}),(0,r.jsx)(E.F,{className:"max-h-[400px] px-6 pb-6",children:f.length>0?(0,r.jsx)("div",{className:"space-y-1",children:f.map(e=>(0,r.jsx)(x.$,{variant:"ghost",className:"w-full justify-start h-auto p-3 hover:bg-accent/50 rounded-lg",onClick:()=>h(e.id),children:(0,r.jsxs)("div",{className:"flex items-start gap-3 w-full",children:[(0,r.jsx)("div",{className:"w-8 h-8 bg-gradient-to-br from-primary/20 to-primary/10 rounded-lg flex items-center justify-center flex-shrink-0 mt-0.5",children:(0,r.jsx)(d.A,{className:"h-4 w-4 text-primary"})}),(0,r.jsxs)("div",{className:"flex-1 text-left min-w-0",children:[(0,r.jsx)("p",{className:"font-medium text-sm truncate",children:e.title}),(0,r.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,r.jsx)(A.A,{className:"h-3 w-3 text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:g(e.date)})]})]})]})},e.id))}):(0,r.jsxs)("div",{className:"text-center py-8",children:[(0,r.jsx)(n.A,{className:"h-8 w-8 text-muted-foreground/50 mx-auto mb-3"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:i?"No chats found":"Start typing to search your conversations"})]})})]})})},M=()=>{let[e,a]=(0,s.useState)([]),[t,u]=(0,s.useState)(!1),{loadChat:m,selectedChatId:f,updateChatName:p,deleteChat:x}=(0,L.L)(),{state:b}=(0,l.cL)(),h="collapsed"===b,g=(0,s.useCallback)(async()=>{try{let e=await (0,c.rr)();a(e.reverse())}catch(e){console.error("Failed to load chats:",e)}},[]),v=async e=>{try{if(!await x(e))return!1;return a(a=>a.filter(a=>a.id!==e)),!0}catch(e){return console.error("Failed to delete chat:",e),!1}},w=async(e,t)=>{try{return await p(e,t),a(a=>a.map(a=>a.id===e?{...a,title:t}:a)),!0}catch(e){return console.error("Failed to rename chat:",e),!1}};(0,s.useEffect)(()=>(g(),_.tO.on(_.RC,g),()=>{_.tO.off(_.RC,g)}),[g]);let j=async()=>{try{let e=await (0,c.RL)("New Chat",[]);m(e.id),a(a=>[e,...a])}catch(e){console.error("Failed to create new chat:",e)}},N=[{icon:i.A,label:"New chat",action:j},{icon:n.A,label:"Search chats",action:()=>u(!0)}];return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(l.Bx,{className:"border-r border-border/50 bg-gradient-to-b from-card/50 to-background",collapsible:"icon",children:[(0,r.jsx)(l.Gh,{className:(0,y.cn)("border-b border-border/50 bg-background/95 backdrop-blur",h&&"px-2"),children:!h&&(0,r.jsx)("div",{className:"p-4 flex items-center justify-between",children:(0,r.jsx)("div",{className:"flex items-center gap-2 min-w-0",children:(0,r.jsx)("h1",{className:"font-semibold text-lg bg-gradient-to-r from-foreground to-foreground/70 bg-clip-text text-transparent truncate",children:"Transcriptinator 6000"})})})}),(0,r.jsx)(l.Yv,{className:"flex-1 overflow-x-clip custom-scrollbar",children:(0,r.jsxs)(l.Cn,{children:[(0,r.jsx)(l.wZ,{className:(0,y.cn)("px-2 py-2",h&&"space-y-1"),children:N.map((e,a)=>(0,r.jsx)(l.FX,{children:(0,r.jsxs)(l.Uj,{onClick:e.action,tooltip:h?e.label:void 0,className:(0,y.cn)("transition-all duration-200 hover:bg-accent/50 rounded-lg h-10",h?"justify-center w-10":"justify-start","New chat"===e.label&&"bg-primary/10 hover:bg-primary/20 text-primary border border-primary/20"),children:[(0,r.jsx)(e.icon,{className:"h-4 w-4"}),!h&&(0,r.jsx)("span",{className:"text-sm font-medium",children:e.label})]})},a))}),!h&&(0,r.jsx)(l.jj,{className:"px-4 text-xs font-medium text-muted-foreground/80 mt-4 mb-2",children:"Recent Chats"}),(0,r.jsx)(l.rQ,{children:(0,r.jsx)(l.wZ,{className:"px-2",children:h?e.slice(0,8).map(e=>(0,r.jsx)(l.FX,{children:(0,r.jsx)(l.Uj,{onClick:()=>m(e.id),tooltip:e.title,className:(0,y.cn)("justify-center w-10 h-10 rounded-lg transition-all duration-200",f===e.id?"bg-primary/20 border border-primary/30 text-primary":"hover:bg-accent/50"),children:(0,r.jsx)(o.A,{className:(0,y.cn)("h-4 w-4",f===e.id?"text-primary":"text-muted-foreground")})})},e.id)):e.length>0?e.map(e=>(0,r.jsx)(z,{chat:e,isSelected:f===e.id,onClick:m,onDelete:v,onRename:w},e.id)):(0,r.jsxs)("div",{className:"px-4 py-8 text-center",children:[(0,r.jsx)(d.A,{className:"h-8 w-8 text-muted-foreground/50 mx-auto mb-3"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No conversations yet"}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground/60 mt-1",children:"Create your first chat to get started"})]})})})]})})]}),(0,r.jsx)(F,{open:t,onOpenChange:u})]})}},3276:(e,a,t)=>{"use strict";t.d(a,{Bx:()=>y,Yv:()=>R,Cn:()=>z,rQ:()=>L,jj:()=>_,Gh:()=>S,SidebarInset:()=>C,wZ:()=>A,e7:()=>D,Uj:()=>M,FX:()=>E,SidebarProvider:()=>N,x2:()=>k,cL:()=>j});var r=t(5155),s=t(2115),i=t(6634),n=t(2085),d=t(2432),o=t(9434),l=t(285),c=t(2523),u=t(4050);let m=s.forwardRef((e,a)=>{let{className:t,orientation:s="horizontal",decorative:i=!0,...n}=e;return(0,r.jsx)(u.b,{ref:a,decorative:i,orientation:s,className:(0,o.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",t),...n})});m.displayName=u.b.displayName;var f=t(8382);function p(e){let{className:a,...t}=e;return(0,r.jsx)("div",{className:(0,o.cn)("animate-pulse rounded-md bg-muted",a),...t})}var x=t(3423);let b=x.Kq,h=x.bL,g=x.l9,v=s.forwardRef((e,a)=>{let{className:t,sideOffset:s=4,...i}=e;return(0,r.jsx)(x.UC,{ref:a,sideOffset:s,className:(0,o.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...i})});v.displayName=x.UC.displayName;let w=s.createContext(null);function j(){let e=s.useContext(w);if(!e)throw Error("useSidebar must be used within a SidebarProvider.");return e}let N=s.forwardRef((e,a)=>{let{defaultOpen:t=!0,open:i,onOpenChange:n,className:d,style:l,children:c,...u}=e,m=function(){let[e,a]=s.useState(void 0);return s.useEffect(()=>{let e=window.matchMedia("(max-width: ".concat(767,"px)")),t=()=>{a(window.innerWidth<768)};return e.addEventListener("change",t),a(window.innerWidth<768),()=>e.removeEventListener("change",t)},[]),!!e}(),[f,p]=s.useState(!1),[x,h]=s.useState(t),g=null!=i?i:x,v=s.useCallback(e=>{let a="function"==typeof e?e(g):e;n?n(a):h(a),document.cookie="".concat("sidebar:state","=").concat(a,"; path=/; max-age=").concat(604800)},[n,g]),j=s.useCallback(()=>m?p(e=>!e):v(e=>!e),[m,v,p]);s.useEffect(()=>{let e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),j())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[j]);let N=g?"expanded":"collapsed",y=s.useMemo(()=>({state:N,open:g,setOpen:v,isMobile:m,openMobile:f,setOpenMobile:p,toggleSidebar:j}),[N,g,v,m,f,p,j]);return(0,r.jsx)(w.Provider,{value:y,children:(0,r.jsx)(b,{delayDuration:0,children:(0,r.jsx)("div",{style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...l},className:(0,o.cn)("relative flex w-full min-w-0 flex-col px-0",d),ref:a,...u,children:c})})})});N.displayName="SidebarProvider";let y=s.forwardRef((e,a)=>{let{side:t="left",variant:s="sidebar",collapsible:i="offcanvas",className:n,children:d,...l}=e,{isMobile:c,state:u,openMobile:m,setOpenMobile:p}=j();return"none"===i?(0,r.jsx)("div",{className:(0,o.cn)("flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",n),ref:a,...l,children:d}):c?(0,r.jsx)(f.cj,{open:m,onOpenChange:p,...l,children:(0,r.jsx)(f.h,{"data-sidebar":"sidebar","data-mobile":"true",className:"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:t,children:(0,r.jsx)("div",{className:"flex h-full w-full flex-col",children:d})})}):(0,r.jsxs)("div",{ref:a,className:"group peer hidden md:block text-sidebar-foreground","data-state":u,"data-collapsible":"collapsed"===u?i:"","data-variant":s,"data-side":t,children:[(0,r.jsx)("div",{className:(0,o.cn)("duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===s||"inset"===s?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon]")}),(0,r.jsx)("div",{className:(0,o.cn)("duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex","left"===t?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","floating"===s||"inset"===s?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",n),...l,children:(0,r.jsx)("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:d})})]})});y.displayName="Sidebar";let k=s.forwardRef((e,a)=>{let{className:t,onClick:s,...i}=e,{toggleSidebar:n}=j();return(0,r.jsxs)(l.$,{ref:a,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:(0,o.cn)("h-7 w-7",t),onClick:e=>{null==s||s(e),n()},...i,children:[(0,r.jsx)(d.A,{}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle Sidebar"})]})});k.displayName="SidebarTrigger",s.forwardRef((e,a)=>{let{className:t,...s}=e,{toggleSidebar:i}=j();return(0,r.jsx)("button",{ref:a,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:(0,o.cn)("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",t),...s})}).displayName="SidebarRail";let C=s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("main",{ref:a,className:(0,o.cn)("relative flex min-h-svh flex-1 flex-col bg-background","peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",t),...s})});C.displayName="SidebarInset",s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(c.p,{ref:a,"data-sidebar":"input",className:(0,o.cn)("h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",t),...s})}).displayName="SidebarInput";let S=s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:a,"data-sidebar":"header",className:(0,o.cn)("flex flex-col gap-2 p-2",t),...s})});S.displayName="SidebarHeader",s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:a,"data-sidebar":"footer",className:(0,o.cn)("flex flex-col gap-2 p-2",t),...s})}).displayName="SidebarFooter",s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)(m,{ref:a,"data-sidebar":"separator",className:(0,o.cn)("mx-2 w-auto bg-sidebar-border",t),...s})}).displayName="SidebarSeparator";let R=s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:a,"data-sidebar":"content",className:(0,o.cn)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),...s})});R.displayName="SidebarContent";let z=s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:a,"data-sidebar":"group",className:(0,o.cn)("relative flex w-full min-w-0 flex-col p-2 px-0",t),...s})});z.displayName="SidebarGroup";let _=s.forwardRef((e,a)=>{let{className:t,asChild:s=!1,...n}=e,d=s?i.DX:"div";return(0,r.jsx)(d,{ref:a,"data-sidebar":"group-label",className:(0,o.cn)("duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",t),...n})});_.displayName="SidebarGroupLabel",s.forwardRef((e,a)=>{let{className:t,asChild:s=!1,...n}=e,d=s?i.DX:"button";return(0,r.jsx)(d,{ref:a,"data-sidebar":"group-action",className:(0,o.cn)("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",t),...n})}).displayName="SidebarGroupAction";let L=s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:a,"data-sidebar":"group-content",className:(0,o.cn)("w-full text-sm",t),...s})});L.displayName="SidebarGroupContent";let A=s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("ul",{ref:a,"data-sidebar":"menu",className:(0,o.cn)("flex w-full min-w-0 flex-col gap-1",t),...s})});A.displayName="SidebarMenu";let E=s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("li",{ref:a,"data-sidebar":"menu-item",className:(0,o.cn)("group/menu-item relative",t),...s})});E.displayName="SidebarMenuItem";let F=(0,n.F)("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),M=s.forwardRef((e,a)=>{let{asChild:t=!1,isActive:s=!1,variant:n="default",size:d="default",tooltip:l,className:c,...u}=e,m=t?i.DX:"button",{isMobile:f,state:p}=j(),x=(0,r.jsx)(m,{ref:a,"data-sidebar":"menu-button","data-size":d,"data-active":s,className:(0,o.cn)(F({variant:n,size:d}),c),...u});return l?("string"==typeof l&&(l={children:l}),(0,r.jsxs)(h,{children:[(0,r.jsx)(g,{asChild:!0,children:x}),(0,r.jsx)(v,{side:"right",align:"center",hidden:"collapsed"!==p||f,...l})]})):x});M.displayName="SidebarMenuButton";let D=s.forwardRef((e,a)=>{let{className:t,asChild:s=!1,showOnHover:n=!1,...d}=e,l=s?i.DX:"button";return(0,r.jsx)(l,{ref:a,"data-sidebar":"menu-action",className:(0,o.cn)("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",t),...d})});D.displayName="SidebarMenuAction",s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:a,"data-sidebar":"menu-badge",className:(0,o.cn)("absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",t),...s})}).displayName="SidebarMenuBadge",s.forwardRef((e,a)=>{let{className:t,showIcon:i=!1,...n}=e,d=s.useMemo(()=>"".concat(Math.floor(40*Math.random())+50,"%"),[]);return(0,r.jsxs)("div",{ref:a,"data-sidebar":"menu-skeleton",className:(0,o.cn)("rounded-md h-8 flex gap-2 px-2 items-center",t),...n,children:[i&&(0,r.jsx)(p,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),(0,r.jsx)(p,{className:"h-4 flex-1 max-w-[--skeleton-width]","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":d}})]})}).displayName="SidebarMenuSkeleton",s.forwardRef((e,a)=>{let{className:t,...s}=e;return(0,r.jsx)("ul",{ref:a,"data-sidebar":"menu-sub",className:(0,o.cn)("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",t),...s})}).displayName="SidebarMenuSub",s.forwardRef((e,a)=>{let{...t}=e;return(0,r.jsx)("li",{ref:a,...t})}).displayName="SidebarMenuSubItem",s.forwardRef((e,a)=>{let{asChild:t=!1,size:s="md",isActive:n,className:d,...l}=e,c=t?i.DX:"a";return(0,r.jsx)(c,{ref:a,"data-sidebar":"menu-sub-button","data-size":s,"data-active":n,className:(0,o.cn)("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground","sm"===s&&"text-xs","md"===s&&"text-sm","group-data-[collapsible=icon]:hidden",d),...l})}).displayName="SidebarMenuSubButton"},5808:(e,a,t)=>{"use strict";t.d(a,{default:()=>l});var r=t(5155),s=t(3276),i=t(3560),n=t(1927),d=t(285),o=t(2115);let l=()=>{let{selectedChat:e,downloadChat:a}=(0,n.L)(),[t,l]=(0,o.useState)(!1),c=(null==e?void 0:e.title)||"New Chat",u=async()=>{if(e){l(!0);try{await a()}catch(e){console.error("Download failed:",e)}finally{l(!1)}}};return(0,r.jsxs)("div",{className:"flex items-center justify-between h-14 px-4 border-b border-border/50 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)(s.x2,{className:"h-8 w-8 hover:bg-accent/50 transition-colors rounded-md"}),(0,r.jsx)("div",{className:"flex items-center gap-2 min-w-0",children:(0,r.jsx)("div",{className:"flex items-center gap-1.5 min-w-0",children:(0,r.jsx)("h1",{className:"font-semibold text-base truncate max-w-[200px] sm:max-w-[400px]",children:c})})})]}),(null==e?void 0:e.id)&&(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsxs)(d.$,{variant:"ghost",size:"default",className:"h-8 hover:bg-accent/50",onClick:u,disabled:t,children:[(0,r.jsx)(i.A,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"hidden sm:inline-block ml-1",children:t?"Exporting...":"Export Chat"})]})})]})}},6254:(e,a,t)=>{Promise.resolve().then(t.t.bind(t,8062,23)),Promise.resolve().then(t.t.bind(t,347,23)),Promise.resolve().then(t.bind(t,2668)),Promise.resolve().then(t.bind(t,5808)),Promise.resolve().then(t.bind(t,3276)),Promise.resolve().then(t.bind(t,2558)),Promise.resolve().then(t.bind(t,6543))},6543:(e,a,t)=>{"use strict";t.d(a,{ThemeProvider:()=>i});var r=t(5155);t(2115);var s=t(1362);function i(e){let{children:a,...t}=e;return(0,r.jsx)(s.N,{...t,children:a})}}},e=>{var a=a=>e(e.s=a);e.O(0,[496,489,822,775,527,441,684,358],()=>a(6254)),_N_E=e.O()}]);
|
_backend/frontend/_next/static/chunks/app/page-0be14d953b17f4f9.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{4836:(e,s,t)=>{Promise.resolve().then(t.bind(t,9304))},9304:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>I});var a=t(5155),r=t(2115),l=t(9434);let n=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("textarea",{className:(0,l.cn)("flex min-h-[32px] max-h-[150px] w-full rounded-md bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 resize-none",t),ref:s,...r})});n.displayName="Textarea";var i=t(3311),o=t(1154),c=t(2486),m=t(285),d=t(1927);async function u(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;s="/api/v1"+s;let l={method:e,headers:{"Content-Type":"application/json",Authorization:r?"Bearer ".concat(r):"",...a}};return t instanceof FormData&&delete l.headers["Content-Type"],null!==t&&(l.body=t instanceof FormData?t:JSON.stringify(t)),fetch(s,l)}function x(e,s,t,a){return u("POST",e,s,t,a)}async function h(e,s){return x("/chat",{chat_history:e.map(e=>(function(e){let{content:s,role:t}=e;return{content:s,role:t}})(e)),message:s.content})}async function p(e){let s=await x("/transcript",{file_name:e});if(!s.ok||!s.body)return null;let t=await s.json();return t||null}async function f(e,s){let t=await x("/generate_name",{user_query:e,assistant_response:s});if(!t.ok||!t.body)return null;let a=await t.json();return a||null}var g=t(7481);let b=(e,s,t)=>{let[a,l]=(0,r.useState)(!1),{toast:n}=(0,g.dj)(),{sendMessage:i,removeMessage:o,loadChat:c,updateChatName:m}=(0,d.L)(),u=(0,r.useCallback)(async r=>{let d=r.trim();if(!d||a||!s||!e)return;l(!0);let u="";try{let e={content:d,transcripts:[],role:"user",timestamp:new Date,id:crypto.randomUUID()};u=await i(e);let a=await c(s),r=await h(a.messages,e);if(!(null==r?void 0:r.ok))throw Error("Failed to send message");let l=await r.json(),n={content:l.response,transcripts:l.timestamps,role:"assistant",timestamp:new Date,id:crypto.randomUUID()};await i(n),t();let o=(await c(s)).messages.length;if(3===o){let t=await f(e.content,n.content);t&&m(s,t)}}catch(e){console.error("Error in chat submission:",e),o(u),n({title:"Error",description:"Failed to send message. Please try again.",variant:"destructive"})}finally{l(!1)}},[a,s,e,i,c,m,o,t,n]);return{isLoading:a,handleSubmit:u}},v=r.memo(e=>{let{selectedChat:s,selectedChatId:t,scrollToBottom:l}=e,{isLoading:d,handleSubmit:u}=b(s,t,l),[x,h]=(0,r.useState)(""),p=(0,r.useRef)(null),f=(0,r.useCallback)(()=>{let e=p.current;if(e){e.style.height="auto";let s=Math.min(e.scrollHeight,120);e.style.height="".concat(s,"px")}},[]);(0,r.useEffect)(()=>{f()},[x,f]);let g=(0,r.useCallback)(async e=>{e.preventDefault(),x.trim()&&(await u(x),h(""),setTimeout(()=>f(),0))},[u,x,f]),v=(0,r.useCallback)(async e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),x.trim()&&(await u(x),h(""),setTimeout(()=>f(),0)))},[u,x,f]);return(0,r.useEffect)(()=>{let e=e=>{var s,t;"/"===e.key&&(null===(s=document.activeElement)||void 0===s?void 0:s.tagName)!=="TEXTAREA"&&(e.preventDefault(),null===(t=p.current)||void 0===t||t.focus())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,a.jsxs)("div",{className:"p-2 max-w-4xl mx-auto w-full",children:[(0,a.jsxs)("form",{onSubmit:g,className:"flex items-end gap-2 sm:gap-3 bg-gradient-to-r from-background to-muted/20 border border-border/50 rounded-xl sm:rounded-2xl p-2 sm:p-3 shadow-lg backdrop-blur-sm",children:[(0,a.jsxs)("div",{className:"flex-1 relative min-w-0",children:[(0,a.jsx)(n,{ref:p,value:x,onChange:e=>h(e.target.value),onKeyDown:v,placeholder:"Ask about your transcripts...",className:"resize-none border-none bg-transparent focus:ring-0 focus:outline-none overflow-y-auto placeholder:text-muted-foreground/60 text-sm sm:text-base",style:{minHeight:"36px",maxHeight:"120px"},disabled:d,"aria-label":"Message input"}),!x&&(0,a.jsx)("div",{className:"absolute top-2 sm:top-3 right-2 sm:right-3 text-muted-foreground/40 pointer-events-none",children:(0,a.jsx)(i.A,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})]}),(0,a.jsx)(m.$,{type:"submit",size:"icon",className:"h-9 w-9 sm:h-10 sm:w-10 rounded-lg sm:rounded-xl bg-gradient-to-r from-primary to-primary/80 hover:from-primary/90 hover:to-primary/70 transition-all duration-200 shadow-md hover:shadow-lg hover:scale-105 flex-shrink-0",disabled:d||null===t||!x.trim(),"aria-label":"Send message",children:d?(0,a.jsx)(o.A,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(c.A,{className:"h-4 w-4"})})]}),(0,a.jsx)("div",{className:"text-center mt-2 hidden sm:block",children:(0,a.jsx)("p",{className:"text-xs text-muted-foreground/60",children:"Answers are generated by AI and may not be accurate. Use at your own discretion."})})]})});var y=t(4165);let w=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("textarea",{className:(0,l.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:s,...r})});function j(e){let{open:s=!1,onOpenChange:t,message:l,prevMessage:n}=e,[i,o]=(0,r.useState)({relevance:0,accuracy:0,clarity:0,engagement:0}),c=[{name:"Relevance",value:i.relevance},{name:"Accuracy",value:i.accuracy},{name:"Clarity",value:i.clarity},{name:"User Engagement",value:i.engagement}],d=(e,s)=>{let t="user engagement"===e.toLowerCase()?"engagement":e.toLowerCase();o(e=>({...e,[t]:s}))};return(0,a.jsx)(y.lG,{open:s,onOpenChange:t,children:(0,a.jsxs)(y.Cf,{className:"sm:max-w-md",children:[(0,a.jsx)(y.c7,{children:(0,a.jsx)(y.L3,{className:"text-xl pb-2 border-b",children:"Evaluate this Response"})}),(0,a.jsxs)("div",{className:"space-y-6 py-4",children:[c.map(e=>(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("label",{className:"text-sm font-medium",children:[e.name,":"]}),(0,a.jsx)("div",{className:"flex gap-1",children:[1,2,3,4,5].map(s=>(0,a.jsx)("button",{onClick:()=>d(e.name,s),className:"text-2xl focus:outline-none",children:(0,a.jsx)("span",{className:"".concat(e.value>=s?"text-yellow-400":"text-muted-foreground"),children:"★"})},s))})]},e.name)),(0,a.jsx)(w,{placeholder:"Additional comments..."}),(0,a.jsx)(m.$,{className:"w-full",onClick:()=>{console.log("Submitting ratings:",i),t(!1)},children:"Submit"})]})]})})}function N(e){let{selectedChatId:s,hasMessages:t}=e;return null===s?(0,a.jsx)("div",{className:"flex-1 flex items-center justify-center p-4",children:(0,a.jsxs)("div",{className:"text-center space-y-6 p-4 sm:p-8 max-w-md mx-auto",children:[(0,a.jsx)("div",{className:"w-16 h-16 sm:w-20 sm:h-20 mx-auto bg-gradient-to-br from-primary/20 to-primary/5 rounded-2xl flex items-center justify-center",children:(0,a.jsx)(i.A,{className:"h-8 w-8 sm:h-10 sm:w-10 text-primary"})}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("h2",{className:"text-xl sm:text-2xl font-semibold tracking-tight",children:"Welcome to Transcriptinator 6000"}),(0,a.jsx)("p",{className:"text-muted-foreground text-sm sm:text-base",children:"Select a chat from the sidebar to get started, or create a new conversation to begin analyzing your transcripts."})]})]})}):t?null:(0,a.jsx)("div",{className:"flex-1 flex items-center justify-center p-4",children:(0,a.jsxs)("div",{className:"text-center space-y-6 p-4 sm:p-8 max-w-sm mx-auto",children:[(0,a.jsx)("div",{className:"w-14 h-14 sm:w-16 sm:h-16 mx-auto bg-gradient-to-br from-blue-500/20 to-blue-500/5 rounded-2xl flex items-center justify-center",children:(0,a.jsx)(c.A,{className:"h-7 w-7 sm:h-8 sm:w-8 text-blue-500"})}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("h3",{className:"text-lg sm:text-xl font-semibold",children:"Start the conversation"}),(0,a.jsx)("p",{className:"text-muted-foreground text-sm sm:text-base",children:"Ask a question about your transcripts to begin the analysis."})]})]})})}w.displayName="Textarea";var k=t(6424),C=t(1007),A=t(5657),T=t(7434),E=t(5196),S=t(4357),_=t(792);let D=e=>{let{message:s,handleTranscriptClick:t,onEvaluate:n}=e,i="user"===s.role?C.A:A.A,o="user"===s.role?"You":"AI Assistant",[c,d]=(0,r.useState)(!1),{toast:u}=(0,g.dj)(),x=async()=>{await navigator.clipboard.writeText(s.content),d(!0),setTimeout(()=>d(!1),2e3),u({title:"Copied to clipboard",description:"The response has been copied successfully."})};return(0,a.jsx)("div",{className:"w-full",children:(0,a.jsxs)("div",{className:(0,l.cn)("rounded-2xl p-4 sm:p-6 transition-all duration-200","max-w-full overflow-x-auto break-words","user"===s.role?"bg-gradient-to-br from-primary/10 to-primary/5 border border-primary/20 ml-0 sm:ml-12":"bg-gradient-to-br from-card to-card/50 border border-border/50 mr-0 sm:mr-12"),style:{wordBreak:"break-word"},children:[(0,a.jsx)("div",{className:(0,l.cn)("flex items-center gap-2 sm:gap-3 mb-3 sm:mb-4","assistant"===s.role?"justify-start":"justify-end"),children:(0,a.jsxs)("div",{className:(0,l.cn)("flex items-center gap-2","user"===s.role&&"flex-row-reverse"),children:[(0,a.jsx)("div",{className:(0,l.cn)("w-7 h-7 sm:w-8 sm:h-8 rounded-full flex items-center justify-center flex-shrink-0","user"===s.role?"bg-primary text-primary-foreground":"bg-gradient-to-br from-blue-500 to-purple-600 text-white"),children:(0,a.jsx)(i,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})}),(0,a.jsxs)("div",{className:(0,l.cn)("flex flex-col","user"===s.role?"items-end":"items-start"),children:[(0,a.jsx)("span",{className:"font-medium text-xs sm:text-sm",children:o}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:s.timestamp.toLocaleTimeString()})]})]})}),(0,a.jsx)("div",{className:(0,l.cn)("prose prose-sm dark:prose-invert max-w-full text-sm sm:text-base","user"===s.role?"text-right":"text-left"),style:{wordBreak:"break-word"},children:(0,a.jsx)(_.oz,{components:{a:e=>{let{href:s,children:t,...r}=e;return(0,a.jsx)("a",{href:s,target:"_blank",rel:"noopener noreferrer",...r,children:t})}},children:s.content})}),s.transcripts.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap mt-4 sm:mt-6 gap-2",children:s.transcripts.map(e=>(0,a.jsxs)(m.$,{variant:"secondary",size:"sm",className:"text-xs h-auto min-h-7 sm:min-h-8 bg-muted/50 hover:bg-muted border border-border/50 transition-all duration-200 hover:scale-105 py-2 max-w-full overflow-x-auto",onClick:()=>t(e),style:{wordBreak:"break-word"},children:[(0,a.jsx)(T.A,{className:"mr-1 sm:mr-1.5 w-3"}),(0,a.jsxs)("span",{className:"text-start whitespace-normal break-words",children:[e.filename," @ ",e.timestamp]})]},e.id))}),"assistant"===s.role&&(0,a.jsx)("div",{className:"mt-4 sm:mt-6 flex flex-col sm:flex-row justify-start gap-2",children:(0,a.jsxs)(m.$,{variant:"ghost",size:"sm",className:"h-8 text-xs hover:bg-accent/50 transition-all duration-200 justify-start sm:justify-center",onClick:x,children:[c?(0,a.jsx)(E.A,{className:"h-3.5 w-3.5 mr-1.5 text-green-500"}):(0,a.jsx)(S.A,{className:"h-3.5 w-3.5 mr-1.5"}),c?"Copied!":"Copy Response"]})})]})})};function O(e){let{selectedChat:s,isLoading:t,scrollRef:r,onTranscriptClick:l,onEvaluate:n}=e;return s?(0,a.jsx)(k.F,{className:"flex-1 custom-scrollbar",ref:r,children:(0,a.jsxs)("div",{className:"p-3 sm:p-6 space-y-4 sm:space-y-6 min-h-full max-w-4xl mx-auto",children:[s.messages.map((e,s)=>"system"!==e.role?(0,a.jsx)("div",{className:"message-animate",children:(0,a.jsx)(D,{message:e,handleTranscriptClick:l,onEvaluate:()=>n(s)})},e.id):null),t&&(0,a.jsx)("div",{className:"flex justify-center py-6 sm:py-8",children:(0,a.jsxs)("div",{className:"flex items-center space-x-2 text-muted-foreground",children:[(0,a.jsx)(o.A,{className:"h-4 w-4 sm:h-5 sm:w-5 animate-spin"}),(0,a.jsx)("span",{className:"text-sm",children:"Analyzing transcripts..."})]})})]})}):null}t(3052),t(8382),t(6542),t(4050);function z(e){let{selectedTranscript:s,selectedTranscripts:t,selectedChatId:a,isTranscriptsOpen:r,setIsTranscriptsOpen:l}=e;return null}let L=()=>{let e=(0,r.useRef)(null);return{scrollRef:e,scrollToBottom:()=>{if(e.current){let s=e.current.querySelector("[data-radix-scroll-area-viewport]");if(s){let e=s.scrollHeight;s.scrollTo({top:e,behavior:"smooth"})}}}}};var R=t(5533);let I=()=>{var e;let{selectedTranscripts:s,selectedTranscript:t,isLoading:l,evaluatingMessageIndex:n,setEvaluatingMessageIndex:i,selectedChat:o,selectedChatId:c,scrollRef:m,scrollToBottom:u,handleTranscriptClick:x,handleEvaluate:h,isTranscriptsOpen:f,setIsTranscriptsOpen:g}=function(){let[e,s]=(0,r.useState)([]),[t,a]=(0,r.useState)(null),[l,n]=(0,r.useState)(!1),[i,o]=(0,r.useState)(null),[c,m]=(0,r.useState)(!1),[u,x]=(0,r.useState)(!1),{selectedChat:h,selectedChatId:f}=(0,d.L)(),{scrollRef:g,scrollToBottom:b}=L(),v=async e=>{if(e&&(a(e),e.filename!==(null==t?void 0:t.filename)))try{let t=await p(e.filename);s(t),x(!0)}catch(e){console.error("Error loading transcripts:",e)}};return(0,r.useEffect)(()=>{c||(b(),m(!0));let e=()=>{c||(b(),m(!0))};return R.tO.on(R.YV,e),()=>{R.tO.off(R.YV,e)}},[b,c]),{selectedTranscripts:e,selectedTranscript:t,isLoading:l,evaluatingMessageIndex:i,setEvaluatingMessageIndex:o,selectedChat:h,selectedChatId:f,scrollRef:g,scrollToBottom:b,handleTranscriptClick:v,handleEvaluate:e=>{o(e)},isTranscriptsOpen:u,setIsTranscriptsOpen:x}}(),b=null===c||(null==o?void 0:o.messages.length)===0;return(0,a.jsxs)("div",{className:"flex-1 flex h-full bg-gradient-to-br from-background via-background to-muted/20",children:[(0,a.jsxs)("div",{className:"flex-1 flex flex-col min-w-0",children:[b?(0,a.jsx)(N,{selectedChatId:c,hasMessages:!!(null==o?void 0:null===(e=o.messages)||void 0===e?void 0:e.length)}):(0,a.jsx)(O,{selectedChat:o,isLoading:l,scrollRef:m,onTranscriptClick:x,onEvaluate:h}),c&&(0,a.jsx)("div",{className:"bg-trasparent backdrop-blur supports-[backdrop-filter]:bg-transparent",children:(0,a.jsx)(v,{selectedChatId:c,selectedChat:o,scrollToBottom:u})})]}),(0,a.jsx)(z,{selectedTranscript:t,selectedTranscripts:s,selectedChatId:c,isTranscriptsOpen:f,setIsTranscriptsOpen:g}),null!==o&&n&&(0,a.jsx)(j,{open:!!n,onOpenChange:e=>!e&&i(null),message:o.messages[n],prevMessage:o.messages[n-1]})]})}}},e=>{var s=s=>e(e.s=s);e.O(0,[489,822,558,527,441,684,358],()=>s(4836)),_N_E=e.O()}]);
|
_backend/frontend/_next/static/chunks/framework-f593a28cde54158e.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/main-68a4efb29ad45f01.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/main-app-373aaee17d94d527.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{3503:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,894,23)),Promise.resolve().then(n.t.bind(n,4970,23)),Promise.resolve().then(n.t.bind(n,6614,23)),Promise.resolve().then(n.t.bind(n,6975,23)),Promise.resolve().then(n.t.bind(n,7555,23)),Promise.resolve().then(n.t.bind(n,4911,23)),Promise.resolve().then(n.t.bind(n,9665,23)),Promise.resolve().then(n.t.bind(n,1295,23))}},e=>{var s=s=>e(e.s=s);e.O(0,[441,684],()=>(s(5415),s(3503))),_N_E=e.O()}]);
|
_backend/frontend/_next/static/chunks/pages/_app-92f2aae776f86b9c.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[472,636],{326:(e,t,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return n(472)}])},472:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let u=n(4252),l=n(7876),a=u._(n(4232)),o=n(2746);async function r(e){let{Component:t,ctx:n}=e;return{pageProps:await (0,o.loadGetInitialProps)(t,n)}}class s extends a.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,l.jsx)(e,{...t})}}s.origGetInitialProps=r,s.getInitialProps=r,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{var t=t=>e(e.s=t);e.O(0,[593,792],()=>(t(326),t(4294))),_N_E=e.O()}]);
|
_backend/frontend/_next/static/chunks/pages/_error-71d2b6a7b832d02a.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[341,731],{303:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AmpStateContext",{enumerable:!0,get:function(){return r}});let r=n(4252)._(n(4232)).default.createContext({})},2164:(e,t,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return n(9341)}])},3776:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let r=n(4232),o=r.useLayoutEffect,l=r.useEffect;function i(e){let{headManager:t,reduceComponentsToState:n}=e;function i(){if(t&&t.mountedInstances){let o=r.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(n(o,e))}}return o(()=>{var n;return null==t||null==(n=t.mountedInstances)||n.add(e.children),()=>{var n;null==t||null==(n=t.mountedInstances)||n.delete(e.children)}}),o(()=>(t&&(t._pendingUpdate=i),()=>{t&&(t._pendingUpdate=i)})),l(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},5679:(e,t,n)=>{"use strict";var r=n(5364);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return y},defaultHead:function(){return p}});let o=n(4252),l=n(8365),i=n(7876),a=l._(n(4232)),s=o._(n(3776)),d=n(303),u=n(8831),c=n(6807);function p(e){void 0===e&&(e=!1);let t=[(0,i.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,i.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===a.default.Fragment?e.concat(a.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}n(6079);let h=["name","httpEquiv","charSet","itemProp"];function m(e,t){let{inAmpMode:n}=t;return e.reduce(f,[]).reverse().concat(p(n).reverse()).filter(function(){let e=new Set,t=new Set,n=new Set,r={};return o=>{let l=!0,i=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){i=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?l=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?l=!1:t.add(o.type);break;case"meta":for(let e=0,t=h.length;e<t;e++){let t=h[e];if(o.props.hasOwnProperty(t)){if("charSet"===t)n.has(t)?l=!1:n.add(t);else{let e=o.props[t],n=r[t]||new Set;("name"!==t||!i)&&n.has(e)?l=!1:(n.add(e),r[t]=n)}}}}return l}}()).reverse().map((e,t)=>{let o=e.key||t;if(r.env.__NEXT_OPTIMIZE_FONTS&&!n&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,a.default.cloneElement(e,t)}return a.default.cloneElement(e,{key:o})})}let y=function(e){let{children:t}=e,n=(0,a.useContext)(d.AmpStateContext),r=(0,a.useContext)(u.HeadManagerContext);return(0,i.jsx)(s.default,{reduceComponentsToState:m,headManager:r,inAmpMode:(0,c.isInAmpMode)(n),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6079:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},6807:(e,t)=>{"use strict";function n(e){let{ampFirst:t=!1,hybrid:n=!1,hasQuery:r=!1}=void 0===e?{}:e;return t||n&&r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return n}})},9341:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let r=n(4252),o=n(7876),l=r._(n(4232)),i=r._(n(5679)),a={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function s(e){let{req:t,res:n,err:r}=e;return{statusCode:n&&n.statusCode?n.statusCode:r?r.statusCode:404,hostname:window.location.hostname}}let d={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};class u extends l.default.Component{render(){let{statusCode:e,withDarkMode:t=!0}=this.props,n=this.props.title||a[e]||"An unexpected error has occurred";return(0,o.jsxs)("div",{style:d.error,children:[(0,o.jsx)(i.default,{children:(0,o.jsx)("title",{children:e?e+": "+n:"Application error: a client-side exception has occurred"})}),(0,o.jsxs)("div",{style:d.desc,children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),e?(0,o.jsx)("h1",{className:"next-error-h1",style:d.h1,children:e}):null,(0,o.jsx)("div",{style:d.wrap,children:(0,o.jsxs)("h2",{style:d.h2,children:[this.props.title||e?n:(0,o.jsxs)(o.Fragment,{children:["Application error: a client-side exception has occurred"," ",!!this.props.hostname&&(0,o.jsxs)(o.Fragment,{children:["while loading ",this.props.hostname]})," ","(see the browser console for more information)"]}),"."]})})]})]})}}u.displayName="ErrorPage",u.getInitialProps=s,u.origGetInitialProps=s,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{var t=t=>e(e.s=t);e.O(0,[636,593,792],()=>t(2164)),_N_E=e.O()}]);
|
_backend/frontend/_next/static/chunks/polyfills-42372ed130431b0a.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
_backend/frontend/_next/static/chunks/webpack-2ab7a1c436f84d2e.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var u=1/0,i=0;i<e.length;i++){for(var[o,n,a]=e[i],l=!0,c=0;c<o.length;c++)(!1&a||u>=a)&&Object.keys(r.O).every(e=>r.O[e](o[c]))?o.splice(c--,1):(l=!1,a<u&&(u=a));if(l){e.splice(i--,1);var d=n();void 0!==d&&(t=d)}}return t}})(),r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>"static/chunks/"+e+"."+({341:"2903e54d3da731c1",472:"a3826d29d6854395"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o]){e[o].push(n);return}if(void 0!==a)for(var u,l,c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var s=c[d];if(s.getAttribute("src")==o||s.getAttribute("data-webpack")==t+a){u=s;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,r.nc&&u.setAttribute("nonce",r.nc),u.setAttribute("data-webpack",t+a),u.src=r.tu(o)),e[o]=[n];var f=(t,r)=>{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),l&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={68:0,496:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n){if(n)o.push(n[2]);else if(/^(496|68)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),u=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",u.name="ChunkLoadError",u.type=a,u.request=i,n[1](u)}},"chunk-"+t,t)}}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,u,l]=o,c=0;if(i.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(l)var d=l(r)}for(t&&t(o);c<i.length;c++)a=i[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(d)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),r.nc=void 0})();
|
_backend/frontend/_next/static/css/a8e3f8fe32df230d.css
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(/_next/static/media/8c0f877bd1202585-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(/_next/static/media/9c18eba18d4baf22-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Sans Fallback;src:local("Arial");ascent-override:94.90%;descent-override:29.66%;line-gap-override:0.00%;size-adjust:104.53%}.__className_989755{font-family:DM Sans,DM Sans Fallback;font-style:normal}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
|
| 2 |
+
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
|
| 3 |
+
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:0 0% 100%;--foreground:0 0% 3.9%;--card:0 0% 100%;--card-foreground:0 0% 3.9%;--popover:0 0% 100%;--popover-foreground:0 0% 3.9%;--primary:0 0% 9%;--primary-foreground:0 0% 98%;--secondary:0 0% 96.1%;--secondary-foreground:0 0% 9%;--muted:0 0% 96.1%;--muted-foreground:0 0% 45.1%;--accent:0 0% 96.1%;--accent-foreground:0 0% 9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:0 0% 89.8%;--input:0 0% 89.8%;--ring:0 0% 3.9%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius:0.5rem;--sidebar-background:0 0% 98%;--sidebar-foreground:240 5.3% 26.1%;--sidebar-primary:240 5.9% 10%;--sidebar-primary-foreground:0 0% 98%;--sidebar-accent:240 4.8% 95.9%;--sidebar-accent-foreground:240 5.9% 10%;--sidebar-border:220 13% 91%;--sidebar-ring:217.2 91.2% 59.8%}.dark{--background:0 0% 3.9%;--foreground:0 0% 98%;--card:0 0% 3.9%;--card-foreground:0 0% 98%;--popover:0 0% 3.9%;--popover-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:0 0% 9%;--secondary:0 0% 14.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 14.9%;--muted-foreground:0 0% 63.9%;--accent:0 0% 14.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:0 0% 14.9%;--input:0 0% 14.9%;--ring:0 0% 83.1%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%;--sidebar-background:240 5.9% 10%;--sidebar-foreground:240 4.8% 95.9%;--sidebar-primary:224.3 76.3% 48%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:240 3.7% 15.9%;--sidebar-accent-foreground:240 4.8% 95.9%;--sidebar-border:240 3.7% 15.9%;--sidebar-ring:217.2 91.2% 59.8%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0/50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;border-radius:.3125rem;padding-top:.1428571em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.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}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-20{top:5rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem}.mb-1,.my-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.size-4{width:1rem;height:1rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[calc\(100vh-120px\)\]{height:calc(100vh - 120px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-96{max-height:24rem}.max-h-\[150px\]{max-height:150px}.max-h-\[400px\]{max-height:400px}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-7{min-height:1.75rem}.min-h-\[32px\]{min-height:32px}.min-h-\[80px\]{min-height:80px}.min-h-full{min-height:100%}.min-h-svh{min-height:100svh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[1px\]{width:1px}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.min-w-5{min-width:1.25rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-4xl{max-width:56rem}.max-w-\[--skeleton-width\]{max-width:var(--skeleton-width)}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x:-1px}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-px{--tw-translate-x:1px}.translate-x-px,.translate-y-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.rotate-180{--tw-rotate:180deg}.rotate-180,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{user-select:none}.resize-none{resize:none}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-border\/50{border-color:hsl(var(--border)/.5)}.border-destructive{border-color:hsl(var(--destructive))}.border-input{border-color:hsl(var(--input))}.border-primary\/20{border-color:hsl(var(--primary)/.2)}.border-primary\/30{border-color:hsl(var(--primary)/.3)}.border-sidebar-border{border-color:hsl(var(--sidebar-border))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-background\/80{background-color:hsl(var(--background)/.8)}.bg-background\/95{background-color:hsl(var(--background)/.95)}.bg-black\/80{background-color:rgb(0 0 0/.8)}.bg-border{background-color:hsl(var(--border))}.bg-card\/50{background-color:hsl(var(--card)/.5)}.bg-destructive{background-color:hsl(var(--destructive))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/50{background-color:hsl(var(--muted)/.5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary)/.1)}.bg-primary\/20{background-color:hsl(var(--primary)/.2)}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sidebar{background-color:hsl(var(--sidebar-background))}.bg-sidebar-border{background-color:hsl(var(--sidebar-border))}.bg-transparent{background-color:transparent}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-background{--tw-gradient-from:hsl(var(--background)) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--background)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from:#3b82f6 var(--tw-gradient-from-position);--tw-gradient-to:rgb(59 130 246/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-500\/20{--tw-gradient-from:rgb(59 130 246/0.2) var(--tw-gradient-from-position);--tw-gradient-to:rgb(59 130 246/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-card{--tw-gradient-from:hsl(var(--card)) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--card)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-card\/50{--tw-gradient-from:hsl(var(--card)/0.5) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--card)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-foreground{--tw-gradient-from:hsl(var(--foreground)) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--foreground)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary{--tw-gradient-from:hsl(var(--primary)) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary\/10{--tw-gradient-from:hsl(var(--primary)/0.1) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary\/20{--tw-gradient-from:hsl(var(--primary)/0.2) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-background{--tw-gradient-to:hsl(var(--background)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--background)) var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-background{--tw-gradient-to:hsl(var(--background)) var(--tw-gradient-to-position)}.to-blue-500\/5{--tw-gradient-to:rgb(59 130 246/0.05) var(--tw-gradient-to-position)}.to-card\/50{--tw-gradient-to:hsl(var(--card)/0.5) var(--tw-gradient-to-position)}.to-foreground\/70{--tw-gradient-to:hsl(var(--foreground)/0.7) var(--tw-gradient-to-position)}.to-muted\/20{--tw-gradient-to:hsl(var(--muted)/0.2) var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to:hsl(var(--primary)/0.1) var(--tw-gradient-to-position)}.to-primary\/5{--tw-gradient-to:hsl(var(--primary)/0.05) var(--tw-gradient-to-position)}.to-primary\/80{--tw-gradient-to:hsl(var(--primary)/0.8) var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to:#9333ea var(--tw-gradient-to-position)}.bg-clip-text{background-clip:text}.fill-current{fill:currentColor}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-10{padding-left:2.5rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground)/.5)}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/40{color:hsl(var(--muted-foreground)/.4)}.text-muted-foreground\/50{color:hsl(var(--muted-foreground)/.5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground)/.6)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground)/.8)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-sidebar-foreground{color:hsl(var(--sidebar-foreground))}.text-sidebar-foreground\/70{color:hsl(var(--sidebar-foreground)/.7)}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-sidebar-ring{--tw-ring-color:hsl(var(--sidebar-ring))}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\2c right\2c width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\2c opa\]{transition-property:margin,opa;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\2c height\2c padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.fade-in-0{--tw-enter-opacity:0}.zoom-in-95{--tw-enter-scale:.95}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}body{font-family:Arial,Helvetica,sans-serif}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground\/60::placeholder{color:hsl(var(--muted-foreground)/.6)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent)/.5)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted)/.5)}.hover\:bg-primary\/20:hover{background-color:hsl(var(--primary)/.2)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:bg-sidebar-accent:hover{background-color:hsl(var(--sidebar-accent))}.hover\:from-primary\/90:hover{--tw-gradient-from:hsl(var(--primary)/0.9) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:to-primary\/70:hover{--tw-gradient-to:hsl(var(--primary)/0.7) var(--tw-gradient-to-position)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-sidebar-accent-foreground:hover{color:hsl(var(--sidebar-accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover,.hover\:shadow-lg:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:hsl(var(--sidebar-border))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-background:focus{background-color:hsl(var(--background))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-destructive:focus{color:hsl(var(--destructive))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:hsl(var(--sidebar-ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.active\:bg-sidebar-accent:active{background-color:hsl(var(--sidebar-accent))}.active\:text-sidebar-accent-foreground:active{color:hsl(var(--sidebar-accent-foreground))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-100,.group\/menu-item:hover .group-hover\/menu-item\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted)/.4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.group.destructive .group-\[\.destructive\]\:hover\:border-destructive\/30:hover{border-color:hsl(var(--destructive)/.3)}.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive:hover{background-color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:hover\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity,1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus{--tw-ring-color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.peer\/menu-button:hover~.peer-hover\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.group\/menu-item:has([data-sidebar=menu-action]) .group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8{padding-right:2rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom],.data-\[side\=left\]\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\[side\=right\]\:translate-x-1[data-side=right],.data-\[side\=top\]\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end],.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x)}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:hsl(var(--sidebar-accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:fade-out-80[data-state=closed]{--tw-exit-opacity:0.8}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed],.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.data-\[state\=open\]\:hover\:bg-sidebar-accent:hover[data-state=open]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground:hover[data-state=open]{color:hsl(var(--sidebar-accent-foreground))}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!size-8{width:2rem!important;height:2rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\]{width:var(--sidebar-width-icon)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]{width:calc(var(--sidebar-width-icon) + 1rem)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0,.group[data-side=right] .group-data-\[side\=right\]\:rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180{--tw-rotate:180deg}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border-sidebar-border{border-color:hsl(var(--sidebar-border))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-0{padding:0!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-2{padding:.5rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:hover{background-color:hsl(var(--sidebar-background))}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.peer[data-variant=inset]~.peer-data-\[variant\=inset\]\:min-h-\[calc\(100svh-theme\(spacing\.4\)\)\]{min-height:calc(100svh - 1rem)}.peer\/menu-button[data-active=true]~.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}@supports (backdrop-filter:var(--tw )){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background)/.6)}.supports-\[backdrop-filter\]\:bg-transparent{background-color:transparent}}@media (min-width:640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:right-3{right:.75rem}.sm\:top-3{top:.75rem}.sm\:top-auto{top:auto}.sm\:mb-4{margin-bottom:1rem}.sm\:ml-12{margin-left:3rem}.sm\:mr-1\.5{margin-right:.375rem}.sm\:mr-12{margin-right:3rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:h-10{height:2.5rem}.sm\:h-16{height:4rem}.sm\:h-20{height:5rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-\[calc\(100vh-150px\)\]{height:calc(100vh - 150px)}.sm\:min-h-8{min-height:2rem}.sm\:w-10{width:2.5rem}.sm\:w-16{width:4rem}.sm\:w-20{width:5rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-80{width:20rem}.sm\:max-w-\[400px\]{max-width:400px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:justify-end{justify-content:flex-end}.sm\:justify-center{justify-content:center}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:rounded-2xl{border-radius:1rem}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:pr-4{padding-right:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y:100%}}@media (min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:max-w-\[420px\]{max-width:420px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:opacity-0{opacity:0}.after\:md\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-state=collapsed][data-variant=inset]~.md\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:.75rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:hsl(var(--sidebar-accent-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}
|
_backend/frontend/_next/static/media/8c0f877bd1202585-s.woff2
ADDED
|
Binary file (18.2 kB). View file
|
|
|
_backend/frontend/_next/static/media/9c18eba18d4baf22-s.p.woff2
ADDED
|
Binary file (36.8 kB). View file
|
|
|
_backend/frontend/favicon.ico
ADDED
|
|
_backend/frontend/file.svg
ADDED
|
|
_backend/frontend/globe.svg
ADDED
|
|
_backend/frontend/index.html
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/a8e3f8fe32df230d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-2ab7a1c436f84d2e.js"/><script src="/_next/static/chunks/4bd1b696-4b0f7518a463c96c.js" async=""></script><script src="/_next/static/chunks/684-9f376c0e2a3ae45e.js" async=""></script><script src="/_next/static/chunks/main-app-373aaee17d94d527.js" async=""></script><script src="/_next/static/chunks/8187f03c-c57963cb1b573777.js" async=""></script><script src="/_next/static/chunks/822-c73eb0df0acbcf5c.js" async=""></script><script src="/_next/static/chunks/775-e50ffdc055346ff7.js" async=""></script><script src="/_next/static/chunks/527-17021ee980e21f8b.js" async=""></script><script src="/_next/static/chunks/app/layout-6da5960c930aa43b.js" async=""></script><script src="/_next/static/chunks/558-386ce3b87f5e21a9.js" async=""></script><script src="/_next/static/chunks/app/page-0be14d953b17f4f9.js" async=""></script><title>Transcription Chatbot</title><meta name="description" content="Generated by create next app"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__className_989755 antialiased"><script>((e,t,r,n,o,i,a,s)=>{let l=document.documentElement,u=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&i?o.map(e=>i[e]||e):o;r?(l.classList.remove(...n),l.classList.add(i&&i[t]?i[t]:t)):l.setAttribute(e,t)}),r=t,s&&u.includes(r)&&(l.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","theme","dark",null,["light","dark"],null,true,true)</script><div style="--sidebar-width:16rem;--sidebar-width-icon:3rem" class="relative flex w-full min-w-0 flex-col px-0"><div class="flex h-screen w-full"><div class="group peer hidden md:block text-sidebar-foreground" data-state="expanded" data-collapsible="" data-variant="sidebar" data-side="left"><div class="duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180 group-data-[collapsible=icon]:w-[--sidebar-width-icon]"></div><div class="duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l border-r border-border/50 bg-gradient-to-b from-card/50 to-background"><div data-sidebar="sidebar" class="flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"><div data-sidebar="header" class="flex flex-col gap-2 p-2 border-b border-border/50 bg-background/95 backdrop-blur"><div class="p-4 flex items-center justify-between"><div class="flex items-center gap-2 min-w-0"><h1 class="font-semibold text-lg bg-gradient-to-r from-foreground to-foreground/70 bg-clip-text text-transparent truncate">Transcriptinator 6000</h1></div></div></div><div data-sidebar="content" class="flex min-h-0 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden flex-1 overflow-x-clip custom-scrollbar"><div data-sidebar="group" class="relative flex w-full min-w-0 flex-col p-2 px-0"><ul data-sidebar="menu" class="flex w-full min-w-0 flex-col gap-1 px-2 py-2"><li data-sidebar="menu-item" class="group/menu-item relative"><button data-sidebar="menu-button" data-size="default" data-active="false" class="peer/menu-button flex w-full items-center gap-2 overflow-hidden p-2 text-left outline-none ring-sidebar-ring focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 hover:text-sidebar-accent-foreground text-sm transition-all duration-200 rounded-lg h-10 justify-start bg-primary/10 hover:bg-primary/20 text-primary border border-primary/20"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg><span class="text-sm font-medium">New chat</span></button></li><li data-sidebar="menu-item" class="group/menu-item relative"><button data-sidebar="menu-button" data-size="default" data-active="false" class="peer/menu-button flex w-full items-center gap-2 overflow-hidden p-2 text-left outline-none ring-sidebar-ring focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 hover:text-sidebar-accent-foreground text-sm transition-all duration-200 hover:bg-accent/50 rounded-lg h-10 justify-start"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search h-4 w-4"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.3-4.3"></path></svg><span class="text-sm font-medium">Search chats</span></button></li></ul><div data-sidebar="group-label" class="duration-200 flex h-8 shrink-0 items-center rounded-md outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0 group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 px-4 text-xs font-medium text-muted-foreground/80 mt-4 mb-2">Recent Chats</div><div data-sidebar="group-content" class="w-full text-sm"><ul data-sidebar="menu" class="flex w-full min-w-0 flex-col gap-1 px-2"><div class="px-4 py-8 text-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square h-8 w-8 text-muted-foreground/50 mx-auto mb-3"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><p class="text-sm text-muted-foreground">No conversations yet</p><p class="text-xs text-muted-foreground/60 mt-1">Create your first chat to get started</p></div></ul></div></div></div></div></div></div><main class="relative min-h-svh bg-background peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow flex-1 flex flex-col min-w-0"><div class="flex items-center justify-between h-14 px-4 border-b border-border/50 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60"><div class="flex items-center gap-3"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground h-8 w-8 hover:bg-accent/50 transition-colors rounded-md" data-sidebar="trigger"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg><span class="sr-only">Toggle Sidebar</span></button><div class="flex items-center gap-2 min-w-0"><div class="flex items-center gap-1.5 min-w-0"><h1 class="font-semibold text-base truncate max-w-[200px] sm:max-w-[400px]">New Chat</h1></div></div></div></div><div class="flex-1 overflow-hidden"><div class="flex-1 flex h-full bg-gradient-to-br from-background via-background to-muted/20"><div class="flex-1 flex flex-col min-w-0"><div class="flex-1 flex items-center justify-center p-4"><div class="text-center space-y-6 p-4 sm:p-8 max-w-md mx-auto"><div class="w-16 h-16 sm:w-20 sm:h-20 mx-auto bg-gradient-to-br from-primary/20 to-primary/5 rounded-2xl flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles h-8 w-8 sm:h-10 sm:w-10 text-primary"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path><path d="M20 3v4"></path><path d="M22 5h-4"></path><path d="M4 17v2"></path><path d="M5 18H3"></path></svg></div><div class="space-y-2"><h2 class="text-xl sm:text-2xl font-semibold tracking-tight">Welcome to Transcriptinator 6000</h2><p class="text-muted-foreground text-sm sm:text-base">Select a chat from the sidebar to get started, or create a new conversation to begin analyzing your transcripts.</p></div></div></div></div></div></div></main></div><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events:none"><ol tabindex="-1" class="fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]"></ol></div></div><script src="/_next/static/chunks/webpack-2ab7a1c436f84d2e.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[6543,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"ThemeProvider\"]\n3:I[3276,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"SidebarProvider\"]\n4:I[2668,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"default\"]\n5:I[3276,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"SidebarInset\"]\n6:I[5808,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"default\"]\n7:I[7555,[],\"\"]\n8:I[1295,[],\"\"]\n9:I[2558,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"775\",\"static/chunks/775-e50ffdc055346ff7.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"177\",\"static/chunks/app/layout-6da5960c930aa43b.js\"],\"Toaster\"]\na:I[894,[],\"ClientPageRoot\"]\nb:I[9304,[\"489\",\"static/chunks/8187f03c-c57963cb1b573777.js\",\"822\",\"static/chunks/822-c73eb0df0acbcf5c.js\",\"558\",\"static/chunks/558-386ce3b87f5e21a9.js\",\"527\",\"static/chunks/527-17021ee980e21f8b.js\",\"974\",\"static/chunks/app/page-0be14d953b17f4f9.js\"],\"default\"]\ne:I[9665,[],\"OutletBoundary\"]\n11:I[9665,[],\"ViewportBoundary\"]\n13:I[9665,[],\"MetadataBoundary\"]\n15:I["])</script><script>self.__next_f.push([1,"6614,[],\"\"]\n:HL[\"/_next/static/css/a8e3f8fe32df230d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"-BZUAGOoGBhXHJLyfVPhi\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a8e3f8fe32df230d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__className_989755 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"enableSystem\":true,\"disableTransitionOnChange\":true,\"children\":[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-screen w-full\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{\"className\":\"flex-1 flex flex-col min-w-0\",\"children\":[[\"$\",\"$L6\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex-1 overflow-hidden\",\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],[\"$\",\"$L9\",null,{}]]}]}]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$La\",null,{\"Component\":\"$b\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@c\",\"$@d\"]}],\"$undefined\",null,[\"$\",\"$Le\",null,{\"children\":[\"$Lf\",\"$L10\",null]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"vXioDfbltONRt6hK7MmxP\",{\"children\":[[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],null]}],[\"$\",\"$L13\",null,{\"children\":\"$L14\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:{}\nd:{}\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nf:null\n"])</script><script>self.__next_f.push([1,"10:null\n14:[[\"$\",\"title\",\"0\",{\"children\":\"Transcription Chatbot\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Generated by create next app\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}]]\n"])</script></body></html>
|
_backend/frontend/index.txt
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
1:"$Sreact.fragment"
|
| 2 |
+
2:I[6543,["489","static/chunks/8187f03c-c57963cb1b573777.js","822","static/chunks/822-c73eb0df0acbcf5c.js","775","static/chunks/775-e50ffdc055346ff7.js","527","static/chunks/527-17021ee980e21f8b.js","177","static/chunks/app/layout-6da5960c930aa43b.js"],"ThemeProvider"]
|
| 3 |
+
3:I[3276,["489","static/chunks/8187f03c-c57963cb1b573777.js","822","static/chunks/822-c73eb0df0acbcf5c.js","775","static/chunks/775-e50ffdc055346ff7.js","527","static/chunks/527-17021ee980e21f8b.js","177","static/chunks/app/layout-6da5960c930aa43b.js"],"SidebarProvider"]
|
| 4 |
+
4:I[2668,["489","static/chunks/8187f03c-c57963cb1b573777.js","822","static/chunks/822-c73eb0df0acbcf5c.js","775","static/chunks/775-e50ffdc055346ff7.js","527","static/chunks/527-17021ee980e21f8b.js","177","static/chunks/app/layout-6da5960c930aa43b.js"],"default"]
|
| 5 |
+
5:I[3276,["489","static/chunks/8187f03c-c57963cb1b573777.js","822","static/chunks/822-c73eb0df0acbcf5c.js","775","static/chunks/775-e50ffdc055346ff7.js","527","static/chunks/527-17021ee980e21f8b.js","177","static/chunks/app/layout-6da5960c930aa43b.js"],"SidebarInset"]
|
| 6 |
+
6:I[5808,["489","static/chunks/8187f03c-c57963cb1b573777.js","822","static/chunks/822-c73eb0df0acbcf5c.js","775","static/chunks/775-e50ffdc055346ff7.js","527","static/chunks/527-17021ee980e21f8b.js","177","static/chunks/app/layout-6da5960c930aa43b.js"],"default"]
|
| 7 |
+
7:I[7555,[],""]
|
| 8 |
+
8:I[1295,[],""]
|
| 9 |
+
9:I[2558,["489","static/chunks/8187f03c-c57963cb1b573777.js","822","static/chunks/822-c73eb0df0acbcf5c.js","775","static/chunks/775-e50ffdc055346ff7.js","527","static/chunks/527-17021ee980e21f8b.js","177","static/chunks/app/layout-6da5960c930aa43b.js"],"Toaster"]
|
| 10 |
+
a:I[894,[],"ClientPageRoot"]
|
| 11 |
+
b:I[9304,["489","static/chunks/8187f03c-c57963cb1b573777.js","822","static/chunks/822-c73eb0df0acbcf5c.js","558","static/chunks/558-386ce3b87f5e21a9.js","527","static/chunks/527-17021ee980e21f8b.js","974","static/chunks/app/page-0be14d953b17f4f9.js"],"default"]
|
| 12 |
+
e:I[9665,[],"OutletBoundary"]
|
| 13 |
+
11:I[9665,[],"ViewportBoundary"]
|
| 14 |
+
13:I[9665,[],"MetadataBoundary"]
|
| 15 |
+
15:I[6614,[],""]
|
| 16 |
+
:HL["/_next/static/css/a8e3f8fe32df230d.css","style"]
|
| 17 |
+
0:{"P":null,"b":"-BZUAGOoGBhXHJLyfVPhi","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a8e3f8fe32df230d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_989755 antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"dark","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","div",null,{"className":"flex h-screen w-full","children":[["$","$L4",null,{}],["$","$L5",null,{"className":"flex-1 flex flex-col min-w-0","children":[["$","$L6",null,{}],["$","div",null,{"className":"flex-1 overflow-hidden","children":["$","$L7",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L8",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],["$","$L9",null,{}]]}]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],"$undefined",null,["$","$Le",null,{"children":["$Lf","$L10",null]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","vXioDfbltONRt6hK7MmxP",{"children":[["$","$L11",null,{"children":"$L12"}],null]}],["$","$L13",null,{"children":"$L14"}]]}],false]],"m":"$undefined","G":["$15","$undefined"],"s":false,"S":true}
|
| 18 |
+
c:{}
|
| 19 |
+
d:{}
|
| 20 |
+
12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
| 21 |
+
f:null
|
| 22 |
+
10:null
|
| 23 |
+
14:[["$","title","0",{"children":"Transcription Chatbot"}],["$","meta","1",{"name":"description","content":"Generated by create next app"}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]]
|
_backend/frontend/next.svg
ADDED
|
|
_backend/frontend/vercel.svg
ADDED
|
|
_backend/frontend/window.svg
ADDED
|
|