commit f2952bcef0ad6ba19e1b710a5e29aec71df0a11c Author: Daniel Goc Date: Tue Mar 10 09:02:57 2026 +0100 initial commit. Cloned timetracker repository diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..1068a99 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,85 @@ +version: "3" + +dotenv: [".env"] + +vars: + PROJECT: timetracker + BUILD_DIR: ./bin + + REMOTE_USER: root + REMOTE_HOST: 192.168.220.30 + EMAIL_SMTP_PORT: 1025 + EMAIL_SMTP_HOST: localhost + GITEA_SERVICE: gitea_postgres_db + GITEA_DB: gitea + GITEA_USER: gitea + DUMP_FILE_NAME: + sh: echo gitea_$(date +%Y_%m_%d__%H_%M_%S).sql + GITEA_REMOTE_SERVICE: "gitea_postgres_db" + GITEA_REMOTE_DB_NAME: "gitea" + GITEA_REMOTE_DB_USER: "gitea" + GITEA_REMOTE_DB_PASS: "gitea" + DOCKER_CONFIG: | + services: + {{.DB_SERVICE_NAME}}: + image: postgres:alpine + container_name: {{.DB_SERVICE_NAME}} + environment: + POSTGRES_USER: {{.DB_USER}} + POSTGRES_PASSWORD: {{.DB_PASSWORD}} + POSTGRES_DB: {{.DB_NAME}} + ports: + - "{{.DB_PORT}}:{{.DB_PORT}}" + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 + pdf: + image: registry.ma-al.com/print-rs:latest + command: start_server + ports: + - "8000:8000" + restart: always + cap_add: + - SYS_ADMIN + environment: + - TZ=CET-1CES + mailpit: + image: axllent/mailpit + container_name: mailpit + restart: unless-stopped + volumes: + - mailpit_data:/data/tests + ports: + - 8025:8025 + - 1025:1025 + environment: + MP_MAX_MESSAGES: 5000 + MP_DATABASE: /data/tests/mailpit.db + MP_SMTP_AUTH_ACCEPT_ANY: true + MP_SMTP_AUTH_ALLOW_INSECURE: true + MP_ENABLE_SPAMASSASSIN: postmark + MP_VERBOSE: true + + volumes: + postgres_data: + mailpit_data: + + +includes: + docker: ./taskfiles/docker.yml + dev: ./taskfiles/dev.yml + build: ./taskfiles/build.yml + db: ./taskfiles/db.yml + gitea: ./taskfiles/gitea.yml + i18n: ./taskfiles/i18n.yml + tpl: ./taskfiles/templates.yml + +tasks: + default: + desc: List all available tasks + cmds: + - task --list diff --git a/app/api/embed.go b/app/api/embed.go new file mode 100644 index 0000000..8edb3e3 --- /dev/null +++ b/app/api/embed.go @@ -0,0 +1,8 @@ +package api + +import ( + _ "embed" +) + +//go:embed openapi.json +var ApenapiJson string diff --git a/app/api/openapi.json b/app/api/openapi.json new file mode 100644 index 0000000..426fa3b --- /dev/null +++ b/app/api/openapi.json @@ -0,0 +1,944 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "timeTracker API", + "description": "Authentication and user management API", + "version": "1.0.0", + "contact": { + "name": "API Support", + "email": "support@example.com" + } + }, + "servers": [ + { + "url": "http://localhost:3000", + "description": "Development server" + } + ], + "tags": [ + { + "name": "Health", + "description": "Health check endpoints" + }, + { + "name": "Auth", + "description": "Authentication endpoints" + }, + { + "name": "Languages", + "description": "Language and translation endpoints" + }, + { + "name": "Protected", + "description": "Protected routes requiring authentication" + }, + { + "name": "Admin", + "description": "Admin-only endpoints" + }, + { + "name": "Settings", + "description": "Application settings and configuration endpoints" + } + ], + "paths": { + "/health": { + "get": { + "tags": ["Health"], + "summary": "Health check", + "description": "Returns the health status of the application", + "operationId": "getHealth", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "ok" + }, + "app": { + "type": "string", + "example": "timeTracker" + }, + "version": { + "type": "string", + "example": "1.0.0" + } + } + } + } + } + } + } + } + }, + "/api/v1/langs": { + "get": { + "tags": ["Languages"], + "summary": "Get active languages", + "description": "Returns a list of all active languages", + "operationId": "getLanguages", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + } + } + } + } + } + }, + "/api/v1/translations": { + "get": { + "tags": ["Languages"], + "summary": "Get translations", + "description": "Returns translations from cache. Supports filtering by lang_id, scope, and components.", + "operationId": "getTranslations", + "parameters": [ + { + "name": "lang_id", + "in": "query", + "description": "Filter by language ID", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "scope", + "in": "query", + "description": "Filter by scope (e.g., 'be', 'frontend')", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "components", + "in": "query", + "description": "Filter by component name", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "success" + }, + "translations": { + "type": "object", + "description": "Translation data keyed by language ID, scope, component, and key" + } + } + } + } + } + }, + "400": { + "description": "Invalid request parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/translations/reload": { + "get": { + "tags": ["Languages"], + "summary": "Reload translations", + "description": "Reloads translations from the database into the cache", + "operationId": "reloadTranslations", + "responses": { + "200": { + "description": "Translations reloaded successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "success" + }, + "message": { + "type": "string", + "example": "Translations reloaded successfully" + } + } + } + } + } + }, + "500": { + "description": "Failed to reload translations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/auth/login": { + "post": { + "tags": ["Auth"], + "summary": "User login", + "description": "Authenticate a user with email and password", + "operationId": "login", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Login successful", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthResponse" + } + } + }, + "headers": { + "Set-Cookie": { + "schema": { + "type": "string" + }, + "description": "HTTP-only cookies containing access and refresh tokens" + } + } + }, + "400": { + "description": "Invalid request body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Invalid credentials", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Account inactive or email not verified", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/auth/register": { + "post": { + "tags": ["Auth"], + "summary": "User registration", + "description": "Register a new user account", + "operationId": "register", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegisterRequest" + } + } + } + }, + "responses": { + "201": { + "description": "Registration successful", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "registration successful, please verify your email" + } + } + } + } + } + }, + "400": { + "description": "Invalid request or email already exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/auth/complete-registration": { + "post": { + "tags": ["Auth"], + "summary": "Complete registration", + "description": "Complete registration after email verification", + "operationId": "completeRegistration", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompleteRegistrationRequest" + } + } + } + }, + "responses": { + "201": { + "description": "Registration completed successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthResponse" + } + } + } + }, + "400": { + "description": "Invalid token", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/auth/forgot-password": { + "post": { + "tags": ["Auth"], + "summary": "Request password reset", + "description": "Request a password reset email", + "operationId": "forgotPassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["email"], + "properties": { + "email": { + "type": "string", + "format": "email", + "description": "User's email address" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Password reset email sent if account exists", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "if an account with that email exists, a password reset link has been sent" + } + } + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/auth/reset-password": { + "post": { + "tags": ["Auth"], + "summary": "Reset password", + "description": "Reset password using reset token", + "operationId": "resetPassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResetPasswordRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Password reset successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "password reset successfully" + } + } + } + } + } + }, + "400": { + "description": "Invalid or expired token", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/auth/logout": { + "post": { + "tags": ["Auth"], + "summary": "User logout", + "description": "Clear authentication cookies", + "operationId": "logout", + "responses": { + "200": { + "description": "Logout successful", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "logged out successfully" + } + } + } + } + } + } + } + } + }, + "/api/v1/auth/refresh": { + "post": { + "tags": ["Auth"], + "summary": "Refresh access token", + "description": "Get a new access token using refresh token", + "operationId": "refreshToken", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "refresh_token": { + "type": "string", + "description": "Refresh token from login response" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Token refreshed successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthResponse" + } + } + } + }, + "400": { + "description": "Refresh token required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Invalid or expired refresh token", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/protected/dashboard": { + "get": { + "tags": ["Protected"], + "summary": "Get dashboard data", + "description": "Protected route requiring authentication", + "security": [ + { + "BearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Dashboard data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/UserSession" + } + } + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/admin/users": { + "get": { + "tags": ["Admin"], + "summary": "Get all users", + "description": "Admin-only endpoint for user management", + "security": [ + { + "BearerAuth": [] + } + ], + "responses": { + "200": { + "description": "List of users", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Admin access required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/settings": { + "get": { + "tags": ["Settings"], + "summary": "Get application settings", + "description": "Returns public application settings and configuration", + "operationId": "getSettings", + "responses": { + "200": { + "description": "Settings retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SettingsResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "LoginRequest": { + "type": "object", + "required": ["email", "password"], + "properties": { + "email": { + "type": "string", + "format": "email", + "description": "User's email address" + }, + "password": { + "type": "string", + "format": "password", + "description": "User's password" + } + } + }, + "RegisterRequest": { + "type": "object", + "required": ["email", "password", "confirm_password"], + "properties": { + "email": { + "type": "string", + "format": "email", + "description": "User's email address" + }, + "password": { + "type": "string", + "format": "password", + "description": "User's password (min 8 chars, uppercase, lowercase, digit)" + }, + "confirm_password": { + "type": "string", + "format": "password", + "description": "Password confirmation" + }, + "first_name": { + "type": "string", + "description": "User's first name" + }, + "last_name": { + "type": "string", + "description": "User's last name" + }, + "lang": { + "type": "string", + "description": "User's preferred language (e.g., 'en', 'pl', 'cs')" + } + } + }, + "CompleteRegistrationRequest": { + "type": "object", + "required": ["token"], + "properties": { + "token": { + "type": "string", + "description": "Email verification token" + } + } + }, + "ResetPasswordRequest": { + "type": "object", + "required": ["token", "password"], + "properties": { + "token": { + "type": "string", + "description": "Password reset token" + }, + "password": { + "type": "string", + "format": "password", + "description": "New password" + } + } + }, + "AuthResponse": { + "type": "object", + "properties": { + "access_token": { + "type": "string", + "description": "JWT access token" + }, + "refresh_token": { + "type": "string", + "description": "JWT refresh token" + }, + "token_type": { + "type": "string", + "example": "Bearer" + }, + "expires_in": { + "type": "integer", + "description": "Token expiration in seconds" + }, + "user": { + "$ref": "#/components/schemas/UserSession" + } + } + }, + "UserSession": { + "type": "object", + "properties": { + "user_id": { + "type": "integer", + "format": "uint", + "description": "User ID" + }, + "email": { + "type": "string", + "format": "email" + }, + "username": { + "type": "string" + }, + "role": { + "type": "string", + "enum": ["user", "admin"], + "description": "User role" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + } + } + }, + "Error": { + "type": "object", + "properties": { + "error": { + "type": "string", + "description": "Error message" + } + } + }, + "Language": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "uint64", + "description": "Language ID" + }, + "name": { + "type": "string", + "description": "Language name" + }, + "iso_code": { + "type": "string", + "description": "ISO 639-1 code (e.g., 'en', 'pl')" + }, + "lang_code": { + "type": "string", + "description": "Full language code (e.g., 'en-US', 'pl-PL')" + }, + "date_format": { + "type": "string", + "description": "Date format string" + }, + "date_format_short": { + "type": "string", + "description": "Short date format string" + }, + "rtl": { + "type": "boolean", + "description": "Right-to-left language" + }, + "is_default": { + "type": "boolean", + "description": "Is default language" + }, + "active": { + "type": "boolean", + "description": "Is active" + }, + "flag": { + "type": "string", + "description": "Flag emoji or code" + } + } + }, + "SettingsResponse": { + "type": "object", + "properties": { + "app": { + "$ref": "#/components/schemas/AppSettings" + }, + "server": { + "$ref": "#/components/schemas/ServerSettings" + }, + "auth": { + "$ref": "#/components/schemas/AuthSettings" + }, + "features": { + "$ref": "#/components/schemas/FeatureFlags" + }, + "version": { + "$ref": "#/components/schemas/VersionInfo" + } + } + }, + "AppSettings": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name" + }, + "environment": { + "type": "string", + "description": "Application environment (e.g., 'development', 'production')" + }, + "base_url": { + "type": "string", + "description": "Base URL of the application" + } + } + }, + "ServerSettings": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "description": "Server port" + }, + "host": { + "type": "string", + "description": "Server host" + } + } + }, + "AuthSettings": { + "type": "object", + "properties": { + "jwt_expiration": { + "type": "integer", + "description": "JWT token expiration in seconds" + }, + "refresh_expiration": { + "type": "integer", + "description": "Refresh token expiration in seconds" + } + } + }, + "FeatureFlags": { + "type": "object", + "properties": { + "email_enabled": { + "type": "boolean", + "description": "Whether email functionality is enabled" + }, + "oauth_google": { + "type": "boolean", + "description": "Whether Google OAuth is enabled" + } + } + }, + "VersionInfo": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "Application version" + }, + "commit": { + "type": "string", + "description": "Git commit hash" + }, + "date": { + "type": "string", + "description": "Build date" + } + } + } + }, + "securitySchemes": { + "BearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "JWT token obtained from login response" + } + } + } +} diff --git a/app/cmd/main.go b/app/cmd/main.go new file mode 100644 index 0000000..ccf55d2 --- /dev/null +++ b/app/cmd/main.go @@ -0,0 +1,41 @@ +package main + +import ( + "flag" + "log" + + "git.ma-al.com/goc_marek/timetracker/app/delivery/web" + "git.ma-al.com/goc_marek/timetracker/app/service/langs" + "git.ma-al.com/goc_marek/timetracker/app/utils/version" +) + +func main() { + // Check for version subcommand + versionFlag := flag.Bool("version", false, "Show version information") + flag.Parse() + + if *versionFlag { + log.Println(version.String()) + return + } + + // Create and setup the server + server := web.New() + + // Configure routes + if err := server.Setup(); err != nil { + log.Fatalf("Failed to setup server: %v", err) + } + + // Load translations on startup + if err := langs.LangSrv.LoadTranslations(); err != nil { + log.Printf("Warning: Failed to load translations on startup: %v", err) + } else { + log.Println("Translations loaded successfully on startup") + } + + // Start the server + if err := server.Run(); err != nil { + log.Fatalf("Failed to start server: %v", err) + } +} diff --git a/app/config/config.go b/app/config/config.go new file mode 100644 index 0000000..2750ca1 --- /dev/null +++ b/app/config/config.go @@ -0,0 +1,281 @@ +package config + +import ( + "fmt" + "log/slog" + "os" + "reflect" + "strconv" + "strings" + "time" + + "github.com/joho/godotenv" +) + +type Config struct { + Server ServerConfig + Database DatabaseConfig + Auth AuthConfig + OAuth OAuthConfig + App AppConfig + Email EmailConfig + I18n I18n + Pdf PdfPrinter +} + +type I18n struct { + Langs []string `env:"I18N_LANGS,en,pl"` +} +type ServerConfig struct { + Port int `env:"SERVER_PORT,3000"` + Host string `env:"SERVER_HOST,0.0.0.0"` +} + +type DatabaseConfig struct { + Host string `env:"DB_HOST,localhost"` + Port int `env:"DB_PORT"` + User string `env:"DB_USER"` + Password string `env:"DB_PASSWORD"` + Name string `env:"DB_NAME"` + SSLMode string `env:",disable"` + MaxIdleConns int `env:",10"` + MaxOpenConns int `env:",100"` + ConnMaxLifetime time.Duration `env:",1h"` +} + +type AuthConfig struct { + JWTSecret string `env:"AUTH_JWT_SECRET"` + JWTExpiration int `env:"AUTH_JWT_EXPIRATION"` + RefreshExpiration int `env:"AUTH_REFRESH_EXPIRATION"` +} + +type OAuthConfig struct { + Google GoogleOAuthConfig +} + +type GoogleOAuthConfig struct { + ClientID string `env:"OAUTH_GOOGLE_CLIENT_ID"` + ClientSecret string `env:"OAUTH_GOOGLE_CLIENT_SECRET"` + RedirectURL string `env:"OAUTH_GOOGLE_REDIRECT_URL"` + Scopes []string `env:""` +} + +type AppConfig struct { + Name string `env:"APP_NAME,Gitea Manager"` + Version string `env:"APP_VERSION,1.0.0"` + Environment string `env:"APP_ENVIRONMENT,development"` + BaseURL string `env:"APP_BASE_URL,http://localhost:5173"` +} + +type EmailConfig struct { + SMTPHost string `env:"EMAIL_SMTP_HOST,localhost"` + SMTPPort int `env:"EMAIL_SMTP_PORT,587"` + SMTPUser string `env:"EMAIL_SMTP_USER"` + SMTPPassword string `env:"EMAIL_SMTP_PASSWORD"` + FromEmail string `env:"EMAIL_FROM,noreply@example.com"` + FromName string `env:"EMAIL_FROM_NAME,Gitea Manager"` + AdminEmail string `env:"EMAIL_ADMIN,admin@example.com"` + Enabled bool `env:"EMAIL_ENABLED,false"` +} + +type PdfPrinter struct { + ServerUrl string `env:"PDF_SERVER_URL,http://localhost:8000"` +} + +var cfg *Config + +func init() { + if cfg == nil { + cfg = load() + } +} + +func Get() *Config { + return cfg +} + +// GetDSN returns the database connection string +func (c *DatabaseConfig) GetDSN() string { + return fmt.Sprintf( + "host=%s port=%d user=%s password=%s dbname=%s sslmode=%s", + c.Host, + c.Port, + c.User, + c.Password, + c.Name, + c.SSLMode, + ) +} + +func load() *Config { + + cfg := &Config{} + + err := godotenv.Load(".env") + if err != nil { + slog.Error("not possible to load env: %s", err.Error(), "") + } + err = loadEnv(&cfg.Database) + if err != nil { + slog.Error("not possible to load env variables for database : ", err.Error(), "") + } + + err = loadEnv(&cfg.Server) + if err != nil { + slog.Error("not possible to load env variables for server : ", err.Error(), "") + } + + err = loadEnv(&cfg.Auth) + if err != nil { + slog.Error("not possible to load env variables for auth : ", err.Error(), "") + } + + err = loadEnv(&cfg.OAuth.Google) + if err != nil { + slog.Error("not possible to load env variables for outh google : ", err.Error(), "") + } + + err = loadEnv(&cfg.App) + if err != nil { + slog.Error("not possible to load env variables for app : ", err.Error(), "") + } + + err = loadEnv(&cfg.Email) + if err != nil { + slog.Error("not possible to load env variables for email : ", err.Error(), "") + } + + err = loadEnv(&cfg.I18n) + if err != nil { + slog.Error("not possible to load env variables for email : ", err.Error(), "") + } + + err = loadEnv(&cfg.Pdf) + if err != nil { + slog.Error("not possible to load env variables for email : ", err.Error(), "") + } + + return cfg +} + +func loadEnv(dst any) error { + v := reflect.ValueOf(dst) + if v.Kind() != reflect.Pointer || v.Elem().Kind() != reflect.Struct { + return fmt.Errorf("dst must be pointer to struct") + } + + return loadStruct(v.Elem()) +} + +func loadStruct(v reflect.Value) error { + t := v.Type() + + for i := 0; i < v.NumField(); i++ { + field := v.Field(i) + fieldType := t.Field(i) + + if !field.CanSet() { + continue + } + + // nested struct + if field.Kind() == reflect.Struct && field.Type() != reflect.TypeOf(time.Duration(0)) { + if err := loadStruct(field); err != nil { + return err + } + continue + } + + tag := fieldType.Tag.Get("env") + key, def := parseEnvTag(tag) + + if key == "" { + key = fieldType.Name + } + + val, ok := os.LookupEnv(key) + + // fallback to default + if !ok && def != nil { + val = *def + ok = true + } + + if !ok { + continue + } + + if err := setValue(field, val, key); err != nil { + return err + } + } + + return nil +} + +func setValue(field reflect.Value, val string, key string) error { + switch field.Kind() { + case reflect.String: + field.SetString(val) + + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + // time.Duration + if field.Type() == reflect.TypeOf(time.Duration(0)) { + d, err := time.ParseDuration(val) + if err != nil { + return fmt.Errorf("env %s: %w", key, err) + } + field.SetInt(int64(d)) + return nil + } + + i, err := strconv.Atoi(val) + if err != nil { + return fmt.Errorf("env %s: %w", key, err) + } + field.SetInt(int64(i)) + + case reflect.Bool: + b, err := strconv.ParseBool(val) + if err != nil { + return fmt.Errorf("env %s: %w", key, err) + } + field.SetBool(b) + + case reflect.Slice: + if field.Type().Elem().Kind() == reflect.String { + // Split by comma and trim whitespace + parts := strings.Split(val, ",") + slice := make([]string, 0, len(parts)) + for _, p := range parts { + p = strings.TrimSpace(p) + if p != "" { + slice = append(slice, p) + } + } + field.Set(reflect.ValueOf(slice)) + } else { + return fmt.Errorf("unsupported slice type %s for env %s", field.Type().Elem().Kind(), key) + } + + default: + return fmt.Errorf("unsupported type %s for env %s", field.Kind(), key) + } + + return nil +} + +func parseEnvTag(tag string) (key string, def *string) { + if tag == "" { + return "", nil + } + + parts := strings.SplitN(tag, ",", 2) + key = parts[0] + + if len(parts) == 2 { + return key, &parts[1] // Returns "en,pl,de" for slices - setValue handles the split + } + + return key, nil +} diff --git a/app/db/postgres.go b/app/db/postgres.go new file mode 100644 index 0000000..01aa2e4 --- /dev/null +++ b/app/db/postgres.go @@ -0,0 +1,109 @@ +package db + +import ( + "fmt" + "log" + "log/slog" + + "git.ma-al.com/goc_marek/timetracker/app/config" + + "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +var DB *gorm.DB + +func init() { + if DB == nil { + dbconn, err := newPostgresDB(&config.Get().Database) + if err != nil { + slog.Error("⚠️ No connection to database was possible to establish", "error", err.Error()) + } + DB = dbconn + } +} + +func Get() *gorm.DB { + return DB +} + +// newPostgresDB creates a new PostgreSQL database connection +func newPostgresDB(cfg *config.DatabaseConfig) (*gorm.DB, error) { + dsn := cfg.GetDSN() + + db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Error), + }) + + if err != nil { + return nil, fmt.Errorf("failed to connect to database: %w", err) + } + + sqlDB, err := db.DB() + if err != nil { + return nil, fmt.Errorf("failed to get database instance: %w", err) + } + + // Connection pool settings + sqlDB.SetMaxIdleConns(cfg.MaxIdleConns) + sqlDB.SetMaxOpenConns(cfg.MaxOpenConns) + sqlDB.SetConnMaxLifetime(cfg.ConnMaxLifetime) + + log.Println("✓ Database connection established successfully") + return db, nil +} + +// // RunMigrations runs all database migrations +// func RunMigrations() error { +// if DB == nil { +// return fmt.Errorf("database connection not established") +// } + +// log.Println("Running database migrations...") + +// // Add your models here for AutoMigrate +// // Example: err := db.AutoMigrate(&model.Customer{}) + +// err := DB.AutoMigrate(&model.Customer{}) +// if err != nil { +// return fmt.Errorf("failed to run migrations: %w", err) +// } + +// log.Println("✓ Database migrations completed successfully") + +// return nil +// } + +// // SeedAdminUser creates a default admin user if one doesn't exist +// // Call this function with admin credentials after migrations +// func SeedAdminUser(adminEmail, adminPassword string) error { +// log.Println("✓ Admin seeding ready - implement with your User model") + +// // Example implementation when you have a User model: +// // var count int64 +// // db.Model(&model.User{}).Where("role = ?", "admin").Count(&count) +// // if count > 0 { +// // log.Println("✓ Admin user already exists") +// // return nil +// // } +// // hashedPassword, err := bcrypt.GenerateFromPassword([]byte(adminPassword), bcrypt.DefaultCost) +// // if err != nil { +// // return fmt.Errorf("failed to hash password: %w", err) +// // } +// // admin := model.User{ +// // Email: adminEmail, +// // Password: string(hashedPassword), +// // Role: "admin", +// // IsActive: true, +// // } +// // if err := db.Create(&admin).Error; err != nil { +// // return err +// // } +// // log.Printf("✓ Created admin user: %s", adminEmail) + +// // Suppress unused variable warning +// _, _ = bcrypt.GenerateFromPassword([]byte(adminPassword), bcrypt.DefaultCost) + +// return nil +// } diff --git a/app/delivery/handler/auth.go b/app/delivery/handler/auth.go new file mode 100644 index 0000000..8969b3e --- /dev/null +++ b/app/delivery/handler/auth.go @@ -0,0 +1,11 @@ +package handler + +import ( + "git.ma-al.com/goc_marek/timetracker/app/delivery/web/public" + "github.com/gofiber/fiber/v3" +) + +// AuthHandlerRoutes registers all auth routes +func AuthHandlerRoutes(r fiber.Router) fiber.Router { + return public.AuthHandlerRoutes(r) +} diff --git a/app/delivery/handler/repo.go b/app/delivery/handler/repo.go new file mode 100644 index 0000000..a554ed3 --- /dev/null +++ b/app/delivery/handler/repo.go @@ -0,0 +1,11 @@ +package handler + +import ( + "git.ma-al.com/goc_marek/timetracker/app/delivery/web/public" + "github.com/gofiber/fiber/v3" +) + +// AuthHandlerRoutes registers all auth routes +func RepoHandlerRoutes(r fiber.Router) fiber.Router { + return public.RepoHandlerRoutes(r) +} diff --git a/app/delivery/middleware/auth.go b/app/delivery/middleware/auth.go new file mode 100644 index 0000000..26cff90 --- /dev/null +++ b/app/delivery/middleware/auth.go @@ -0,0 +1,118 @@ +package middleware + +import ( + "strings" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/model" + "git.ma-al.com/goc_marek/timetracker/app/service/authService" + + "github.com/gofiber/fiber/v3" +) + +// AuthMiddleware creates authentication middleware +func AuthMiddleware() fiber.Handler { + authService := authService.NewAuthService() + + return func(c fiber.Ctx) error { + // Get token from Authorization header + authHeader := c.Get("Authorization") + if authHeader == "" { + // Try to get from cookie + authHeader = c.Cookies("access_token") + if authHeader == "" { + return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ + "error": "authorization token required", + }) + } + } else { + // Extract token from "Bearer " + parts := strings.Split(authHeader, " ") + if len(parts) != 2 || parts[0] != "Bearer" { + return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ + "error": "invalid authorization header format", + }) + } + authHeader = parts[1] + } + + // Validate token + claims, err := authService.ValidateToken(authHeader) + if err != nil { + return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ + "error": "invalid or expired token", + }) + } + + // Get user from database + user, err := authService.GetUserByID(claims.UserID) + if err != nil { + return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ + "error": "user not found", + }) + } + + // Check if user is active + if !user.IsActive { + return c.Status(fiber.StatusForbidden).JSON(fiber.Map{ + "error": "user account is inactive", + }) + } + + // Set user in context + c.Locals("user", user.ToSession()) + c.Locals("userID", user.ID) + + return c.Next() + } +} + +// RequireAdmin creates admin-only middleware +func RequireAdmin() fiber.Handler { + return func(c fiber.Ctx) error { + user := c.Locals("user") + if user == nil { + return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ + "error": "not authenticated", + }) + } + + userSession, ok := user.(*model.UserSession) + if !ok { + return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ + "error": "invalid user session", + }) + } + + if userSession.Role != model.RoleAdmin { + return c.Status(fiber.StatusForbidden).JSON(fiber.Map{ + "error": "admin access required", + }) + } + + return c.Next() + } +} + +// GetUserID extracts user ID from context +func GetUserID(c fiber.Ctx) uint { + userID, ok := c.Locals("userID").(uint) + if !ok { + return 0 + } + return userID +} + +// GetUser extracts user from context +func GetUser(c fiber.Ctx) *model.UserSession { + user, ok := c.Locals("user").(*model.UserSession) + if !ok { + return nil + } + return user +} + +// GetConfig returns the app config +func GetConfig() *config.Config { + return config.Get() +} diff --git a/app/delivery/middleware/cors.go b/app/delivery/middleware/cors.go new file mode 100644 index 0000000..e52024b --- /dev/null +++ b/app/delivery/middleware/cors.go @@ -0,0 +1,18 @@ +package middleware + +import "github.com/gofiber/fiber/v3" + +// CORSMiddleware creates CORS middleware +func CORSMiddleware() fiber.Handler { + return func(c fiber.Ctx) error { + c.Set("Access-Control-Allow-Origin", "*") + c.Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS") + c.Set("Access-Control-Allow-Headers", "Content-Type, Authorization") + + if c.Method() == "OPTIONS" { + return c.SendStatus(fiber.StatusOK) + } + + return c.Next() + } +} diff --git a/app/delivery/middleware/language.go b/app/delivery/middleware/language.go new file mode 100644 index 0000000..0432b2d --- /dev/null +++ b/app/delivery/middleware/language.go @@ -0,0 +1,114 @@ +package middleware + +import ( + "strconv" + "strings" + + "git.ma-al.com/goc_marek/timetracker/app/service/langs" + "github.com/gofiber/fiber/v3" +) + +// LanguageMiddleware discovers client's language and stores it in context +// Priority: Query param > Cookie > Accept-Language header > Default language +func LanguageMiddleware() fiber.Handler { + langService := langs.LangSrv + + return func(c fiber.Ctx) error { + var langID uint + + // 1. Check query parameter + langIDStr := c.Query("lang_id", "") + if langIDStr != "" { + if id, err := strconv.ParseUint(langIDStr, 10, 32); err == nil { + langID = uint(id) + if langID > 0 { + lang, err := langService.GetLanguageById(langID) + if err == nil { + c.Locals("langID", langID) + c.Locals("lang", lang) + return c.Next() + } + } + } + } + + // 2. Check cookie + cookieLang := c.Cookies("lang_id", "") + if cookieLang != "" { + if id, err := strconv.ParseUint(cookieLang, 10, 32); err == nil { + langID = uint(id) + if langID > 0 { + lang, err := langService.GetLanguageById(langID) + if err == nil { + c.Locals("langID", langID) + c.Locals("lang", lang) + return c.Next() + } + } + } + } + + // 3. Check Accept-Language header + acceptLang := c.Get("Accept-Language", "") + if acceptLang != "" { + // Parse the Accept-Language header (e.g., "en-US,en;q=0.9,pl;q=0.8") + isoCode := parseAcceptLanguage(acceptLang) + if isoCode != "" { + lang, err := langService.GetLanguageByISOCode(isoCode) + if err == nil && lang != nil { + langID = uint(lang.ID) + c.Locals("langID", langID) + c.Locals("lang", lang) + return c.Next() + } + } + } + + // 4. Fall back to default language + defaultLang, err := langService.GetDefaultLanguage() + if err == nil && defaultLang != nil { + langID = uint(defaultLang.ID) + c.Locals("langID", langID) + c.Locals("lang", defaultLang) + } + + return c.Next() + } +} + +// parseAcceptLanguage extracts the primary language ISO code from Accept-Language header +func parseAcceptLanguage(header string) string { + // Split by comma + parts := strings.Split(header, ",") + if len(parts) == 0 { + return "" + } + + // Get the first part (highest priority) + first := strings.TrimSpace(parts[0]) + if first == "" { + return "" + } + + // Remove any quality value (e.g., ";q=0.9") + if idx := strings.Index(first, ";"); idx != -1 { + first = strings.TrimSpace(first[:idx]) + } + + // Handle cases like "en-US" or "en" + // Return the primary language code (first part before dash) + if idx := strings.Index(first, "-"); idx != -1 { + return strings.ToLower(first[:idx]) + } + + return strings.ToLower(first) +} + +// GetLanguageID extracts language ID from context +func GetLanguageID(c fiber.Ctx) uint { + langID, ok := c.Locals("langID").(uint) + if !ok { + return 0 + } + return langID +} diff --git a/app/delivery/web/init.go b/app/delivery/web/init.go new file mode 100644 index 0000000..4bbdaae --- /dev/null +++ b/app/delivery/web/init.go @@ -0,0 +1,177 @@ +package web + +import ( + "context" + "log" + "os" + "os/signal" + "strconv" + "syscall" + "time" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/delivery/handler" + "git.ma-al.com/goc_marek/timetracker/app/delivery/middleware" + "git.ma-al.com/goc_marek/timetracker/app/delivery/web/public" + + // "github.com/gofiber/fiber/v2/middleware/filesystem" + "github.com/gofiber/fiber/v3" + // "github.com/gofiber/fiber/v3/middleware/filesystem" + "github.com/gofiber/fiber/v3/middleware/logger" + "github.com/gofiber/fiber/v3/middleware/recover" +) + +// Server represents the web server +type Server struct { + app *fiber.App + cfg *config.Config + api fiber.Router +} + +// App returns the fiber app +func (s *Server) App() *fiber.App { + return s.app +} + +// Cfg returns the config +func (s *Server) Cfg() *config.Config { + return s.cfg +} + +// New creates a new server instance +func New() *Server { + return &Server{ + app: fiber.New(fiber.Config{ + ErrorHandler: customErrorHandler, + }), + cfg: config.Get(), + } +} + +// Setup configures the server with routes and middleware +func (s *Server) Setup() error { + // Global middleware + s.app.Use(recover.New()) + s.app.Use(logger.New()) + + // CORS middleware + s.app.Use(middleware.CORSMiddleware()) + + // Language middleware - discovers client's language and stores in context + s.app.Use(middleware.LanguageMiddleware()) + + // initialize healthcheck + public.InitHealth(s.App(), s.Cfg()) + + // serve favicon + public.Favicon(s.app, s.cfg) + + // API routes + s.api = s.app.Group("/api/v1") + + // initialize swagger endpoints + public.InitSwagger(s.App()) + + // Auth routes (public) + auth := s.api.Group("/auth") + handler.AuthHandlerRoutes(auth) + + // Repo routes (public) + repo := s.api.Group("/repo") + repo.Use(middleware.AuthMiddleware()) + handler.RepoHandlerRoutes(repo) + + // Protected routes example + protected := s.api.Group("/restricted") + protected.Use(middleware.AuthMiddleware()) + protected.Get("/dashboard", func(c fiber.Ctx) error { + user := middleware.GetUser(c) + return c.JSON(fiber.Map{ + "message": "Welcome to the protected area", + "user": user, + }) + }) + + // Admin routes example + admin := s.api.Group("/admin") + admin.Use(middleware.AuthMiddleware()) + admin.Use(middleware.RequireAdmin()) + admin.Get("/users", func(c fiber.Ctx) error { + return c.JSON(fiber.Map{ + "message": "Admin area - user management", + }) + }) + + public.NewLangHandler().InitLanguage(s.api, s.cfg) + + // Settings endpoint + public.NewSettingsHandler().InitSettings(s.api, s.cfg) + + // keep this at the end because its wilderange + public.InitBo(s.App()) + + return nil +} + +// Run starts the server +func (s *Server) Run() error { + // Run database migrations + // if err := db.RunMigrations(); err != nil { + // log.Printf("⚠️ Database migrations failed: %v", err) + // } else { + // log.Println("✓ Database migrations completed") + // } + + // // Seed admin user + // if err := db.SeedAdminUser("admin@example.com", "admin123"); err != nil { + // log.Printf("⚠️ Admin user seeding failed: %v", err) + // } + + addr := s.cfg.Server.Host + ":" + strconv.Itoa(s.cfg.Server.Port) + log.Printf("Starting server on %s", addr) + log.Printf("Swagger UI available at http://%s/swagger/index.html", addr) + log.Printf("OpenAPI JSON available at http://%s/openapi.json", addr) + + go func() { + if err := s.app.Listen(":3000"); err != nil { + log.Println("Server stopped:", err) + } + }() + + // Wait for shutdown signal + quit := make(chan os.Signal, 1) + + signal.Notify( + quit, + syscall.SIGINT, // Ctrl+C + syscall.SIGTERM, // docker stop + ) + + <-quit + + log.Println("Shutting down server...") + + // graceful shutdown with timeout + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + if err := s.app.ShutdownWithContext(ctx); err != nil { + log.Fatal("Shutdown error:", err) + } + + log.Println("Server exited cleanly") + return nil +} + +// customErrorHandler handles errors +func customErrorHandler(c fiber.Ctx, err error) error { + code := fiber.StatusInternalServerError + + if e, ok := err.(*fiber.Error); ok { + code = e.Code + } + + return c.Status(code).JSON(fiber.Map{ + "error": err.Error(), + }) +} diff --git a/app/delivery/web/public/auth.go b/app/delivery/web/public/auth.go new file mode 100644 index 0000000..faf8ee9 --- /dev/null +++ b/app/delivery/web/public/auth.go @@ -0,0 +1,416 @@ +package public + +import ( + "log" + "time" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/delivery/middleware" + "git.ma-al.com/goc_marek/timetracker/app/model" + "git.ma-al.com/goc_marek/timetracker/app/service/authService" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "git.ma-al.com/goc_marek/timetracker/app/view" + + "github.com/gofiber/fiber/v3" +) + +// AuthHandler handles authentication endpoints +type AuthHandler struct { + authService *authService.AuthService + config *config.Config +} + +// NewAuthHandler creates a new AuthHandler instance +func NewAuthHandler() *AuthHandler { + authService := authService.NewAuthService() + return &AuthHandler{ + authService: authService, + config: config.Get(), + } +} + +// AuthHandlerRoutes registers all auth routes +func AuthHandlerRoutes(r fiber.Router) fiber.Router { + handler := NewAuthHandler() + + r.Post("/login", handler.Login) + r.Post("/register", handler.Register) + r.Post("/complete-registration", handler.CompleteRegistration) + r.Post("/forgot-password", handler.ForgotPassword) + r.Post("/reset-password", handler.ResetPassword) + r.Post("/logout", handler.Logout) + r.Post("/refresh", handler.RefreshToken) + + // Google OAuth2 + r.Get("/google", handler.GoogleLogin) + r.Get("/google/callback", handler.GoogleCallback) + + authProtected := r.Group("", middleware.AuthMiddleware()) + authProtected.Get("/me", handler.Me) + + return r +} + +func (h *AuthHandler) Login(c fiber.Ctx) error { + var req model.LoginRequest + + if err := c.Bind().Body(&req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + // Validate required fields + if req.Email == "" || req.Password == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrEmailPasswordRequired), + }) + } + + // Attempt login + response, rawRefreshToken, err := h.authService.Login(&req) + if err != nil { + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + // Set cookies for web-based authentication + h.setAuthCookies(c, response.AccessToken, rawRefreshToken) + + return c.JSON(response) +} + +// setAuthCookies sets the access token (HTTPOnly) and refresh token (HTTPOnly) cookies, +// plus a non-HTTPOnly is_authenticated flag cookie for frontend state detection. +func (h *AuthHandler) setAuthCookies(c fiber.Ctx, accessToken, rawRefreshToken string) { + isProduction := h.config.App.Environment == "production" + + // HTTPOnly access token cookie — not readable by JS, protects against XSS + c.Cookie(&fiber.Cookie{ + Name: "access_token", + Value: accessToken, + Expires: time.Now().Add(time.Duration(h.config.Auth.JWTExpiration) * time.Second), + HTTPOnly: true, + Secure: isProduction, + SameSite: "Lax", + }) + + // HTTPOnly refresh token cookie — opaque, stored as hash in DB + if rawRefreshToken != "" { + c.Cookie(&fiber.Cookie{ + Name: "refresh_token", + Value: rawRefreshToken, + Expires: time.Now().Add(time.Duration(h.config.Auth.RefreshExpiration) * time.Second), + HTTPOnly: true, + Secure: isProduction, + SameSite: "Lax", + }) + } + + // Non-HTTPOnly flag cookie — readable by JS to detect auth state. + // Contains no sensitive data; actual auth is enforced by the HTTPOnly access_token cookie. + c.Cookie(&fiber.Cookie{ + Name: "is_authenticated", + Value: "1", + Expires: time.Now().Add(time.Duration(h.config.Auth.JWTExpiration) * time.Second), + HTTPOnly: false, + Secure: isProduction, + SameSite: "Lax", + }) +} + +// clearAuthCookies expires all auth-related cookies +func (h *AuthHandler) clearAuthCookies(c fiber.Ctx) { + isProduction := h.config.App.Environment == "production" + past := time.Now().Add(-time.Hour) + + c.Cookie(&fiber.Cookie{ + Name: "access_token", + Value: "", + Expires: past, + HTTPOnly: true, + Secure: isProduction, + SameSite: "Lax", + }) + c.Cookie(&fiber.Cookie{ + Name: "refresh_token", + Value: "", + Expires: past, + HTTPOnly: true, + Secure: isProduction, + SameSite: "Lax", + }) + c.Cookie(&fiber.Cookie{ + Name: "is_authenticated", + Value: "", + Expires: past, + HTTPOnly: false, + Secure: isProduction, + SameSite: "Lax", + }) +} + +// ForgotPassword handles password reset request +func (h *AuthHandler) ForgotPassword(c fiber.Ctx) error { + var req struct { + Email string `json:"email" form:"email"` + } + + if err := c.Bind().Body(&req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + // Validate email + if req.Email == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrEmailRequired), + }) + } + + // Request password reset - always return success to prevent email enumeration + err := h.authService.RequestPasswordReset(req.Email) + if err != nil { + log.Printf("Password reset request error: %v", err) + } + + return c.JSON(fiber.Map{ + "message": i18n.T_(c, "auth.auth_if_account_exists"), + }) +} + +// ResetPassword handles password reset completion +func (h *AuthHandler) ResetPassword(c fiber.Ctx) error { + var req model.ResetPasswordRequest + + if err := c.Bind().Body(&req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + // Validate required fields + if req.Token == "" || req.Password == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrTokenPasswordRequired), + }) + } + + // Reset password (also revokes all refresh tokens for the user) + err := h.authService.ResetPassword(req.Token, req.Password) + if err != nil { + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + return c.JSON(fiber.Map{ + "message": i18n.T_(c, "auth.auth_password_reset_successfully"), + }) +} + +// Logout handles user logout — revokes the refresh token from DB and clears all cookies +func (h *AuthHandler) Logout(c fiber.Ctx) error { + // Revoke the refresh token from the database + rawRefreshToken := c.Cookies("refresh_token") + if rawRefreshToken != "" { + h.authService.RevokeRefreshToken(rawRefreshToken) + } + + // Clear all auth cookies + h.clearAuthCookies(c) + + return c.JSON(fiber.Map{ + "message": i18n.T_(c, "auth.auth_logged_out_successfully"), + }) +} + +// RefreshToken handles token refresh — validates opaque refresh token, rotates it, issues new access token +func (h *AuthHandler) RefreshToken(c fiber.Ctx) error { + // Get refresh token from HTTPOnly cookie (preferred) or request body (fallback for API clients) + rawRefreshToken := c.Cookies("refresh_token") + if rawRefreshToken == "" { + var body struct { + RefreshToken string `json:"refresh_token"` + } + if err := c.Bind().Body(&body); err == nil { + rawRefreshToken = body.RefreshToken + } + } + + if rawRefreshToken == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrRefreshTokenRequired), + }) + } + + response, newRawRefreshToken, err := h.authService.RefreshToken(rawRefreshToken) + if err != nil { + // If refresh token is invalid/expired, clear cookies + h.clearAuthCookies(c) + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + // Set new cookies (rotated refresh token + new access token) + h.setAuthCookies(c, response.AccessToken, newRawRefreshToken) + + return c.JSON(response) +} + +// Me returns the current user info +func (h *AuthHandler) Me(c fiber.Ctx) error { + user := c.Locals("user") + if user == nil { + return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrNotAuthenticated), + }) + } + + return c.JSON(fiber.Map{ + "user": user, + }) +} + +// Register handles user registration +func (h *AuthHandler) Register(c fiber.Ctx) error { + var req model.RegisterRequest + + if err := c.Bind().Body(&req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + // Validate required fields + if req.FirstName == "" || req.LastName == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrFirstLastNameRequired), + }) + } + + // Validate required fields + if req.Email == "" || req.Password == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrEmailPasswordRequired), + }) + } + + // Attempt registration + err := h.authService.Register(&req) + if err != nil { + log.Printf("Register error: %v", err) + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + return c.Status(fiber.StatusCreated).JSON(fiber.Map{ + "message": i18n.T_(c, "auth.auth_registration_successful"), + }) +} + +// CompleteRegistration handles completion of registration with password +func (h *AuthHandler) CompleteRegistration(c fiber.Ctx) error { + var req model.CompleteRegistrationRequest + + if err := c.Bind().Body(&req); err != nil { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + // Validate required fields + if req.Token == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrTokenRequired), + }) + } + + // Attempt to complete registration + response, rawRefreshToken, err := h.authService.CompleteRegistration(&req) + if err != nil { + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + // Set cookies for web-based authentication + h.setAuthCookies(c, response.AccessToken, rawRefreshToken) + + return c.Status(fiber.StatusCreated).JSON(response) +} + +// GoogleLogin redirects the user to Google's OAuth2 consent page +func (h *AuthHandler) GoogleLogin(c fiber.Ctx) error { + // Generate a random state token and store it in a short-lived cookie + state, err := h.authService.GenerateOAuthState() + if err != nil { + return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ + "error": i18n.T_(c, "error.err_internal_server_error"), + }) + } + + c.Cookie(&fiber.Cookie{ + Name: "oauth_state", + Value: state, + Expires: time.Now().Add(10 * time.Minute), + HTTPOnly: true, + Secure: h.config.App.Environment == "production", + SameSite: "Lax", + }) + + url := h.authService.GetGoogleAuthURL(state) + return c.Redirect().To(url) +} + +// GoogleCallback handles the OAuth2 callback from Google +func (h *AuthHandler) GoogleCallback(c fiber.Ctx) error { + // Validate state to prevent CSRF + cookieState := c.Cookies("oauth_state") + queryState := c.Query("state") + if cookieState == "" || cookieState != queryState { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": i18n.T_(c, "error.err_invalid_token"), + }) + } + + // Clear the state cookie + c.Cookie(&fiber.Cookie{ + Name: "oauth_state", + Value: "", + Expires: time.Now().Add(-time.Hour), + HTTPOnly: true, + Secure: h.config.App.Environment == "production", + SameSite: "Lax", + }) + + code := c.Query("code") + if code == "" { + return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ + "error": i18n.T_(c, "error.err_invalid_body"), + }) + } + + response, rawRefreshToken, err := h.authService.HandleGoogleCallback(code) + if err != nil { + log.Printf("Google OAuth callback error: %v", err) + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + // Set cookies for web-based authentication (including is_authenticated flag) + h.setAuthCookies(c, response.AccessToken, rawRefreshToken) + + // Redirect to the locale-prefixed charts page after successful Google login. + // The user's preferred language is stored in the auth response; fall back to "en". + lang := response.User.Lang + if lang == "" { + lang = "en" + } + return c.Redirect().To(h.config.App.BaseURL + "/" + lang + "/chart") +} diff --git a/app/delivery/web/public/bo.go b/app/delivery/web/public/bo.go new file mode 100644 index 0000000..f29b329 --- /dev/null +++ b/app/delivery/web/public/bo.go @@ -0,0 +1,26 @@ +package public + +import ( + "git.ma-al.com/goc_marek/timetracker/assets" + "github.com/gofiber/fiber/v3" + "github.com/gofiber/fiber/v3/middleware/static" +) + +func InitBo(app *fiber.App) { + // static files + app.Get("/*", static.New("", static.Config{ + FS: assets.FS(), + // Browse: true, + MaxAge: 60 * 60 * 24 * 30, // 30 days + })) + + app.Get("/*", static.New("", static.Config{ + FS: assets.FSDist(), + // Browse: true, + MaxAge: 60 * 60 * 24 * 30, // 30 days + })) + + app.Get("/*", func(c fiber.Ctx) error { + return c.SendFile("./assets/public/dist/index.html") + }) +} diff --git a/app/delivery/web/public/favicon.go b/app/delivery/web/public/favicon.go new file mode 100644 index 0000000..46bced8 --- /dev/null +++ b/app/delivery/web/public/favicon.go @@ -0,0 +1,17 @@ +package public + +import ( + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/assets" + "github.com/gofiber/fiber/v3" +) + +func Favicon(app *fiber.App, cfg *config.Config) { + // Favicon check endpoint + app.Get("/favicon.ico", func(c fiber.Ctx) error { + return c.SendFile("img/favicon.ico", fiber.SendFile{ + FS: assets.FS(), + }) + + }) +} diff --git a/app/delivery/web/public/health.go b/app/delivery/web/public/health.go new file mode 100644 index 0000000..9979dc2 --- /dev/null +++ b/app/delivery/web/public/health.go @@ -0,0 +1,20 @@ +package public + +import ( + "git.ma-al.com/goc_marek/timetracker/app/config" + "github.com/gofiber/fiber/v3" +) + +func InitHealth(app *fiber.App, cfg *config.Config) { + // Health check endpoint + app.Get("/health", func(c fiber.Ctx) error { + // emailService.NewEmailService().SendVerificationEmail("goc_daniel@ma-al.com", "jakis_token", c.BaseURL(), "en") + // emailService.NewEmailService().SendPasswordResetEmail("goc_daniel@ma-al.com", "jakis_token", c.BaseURL(), "en") + // emailService.NewEmailService().SendNewUserAdminNotification("goc_daniel@ma-al.com", "admin", c.BaseURL()) + return c.JSON(fiber.Map{ + "status": "ok", + "app": cfg.App.Name, + "version": cfg.App.Version, + }) + }) +} diff --git a/app/delivery/web/public/languages.go b/app/delivery/web/public/languages.go new file mode 100644 index 0000000..5fab481 --- /dev/null +++ b/app/delivery/web/public/languages.go @@ -0,0 +1,48 @@ +package public + +import ( + "strconv" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/service/langs" + "github.com/gofiber/fiber/v3" +) + +type LangHandler struct { + service langs.LangService +} + +func NewLangHandler() *LangHandler { + return &LangHandler{ + service: *langs.LangSrv, + } +} + +func (h *LangHandler) InitLanguage(api fiber.Router, cfg *config.Config) { + + api.Get("langs", h.GetLanguages) + api.Get("translations", h.GetTranslations) + api.Get("translations/reload", h.ReloadTranslations) +} + +func (h *LangHandler) GetLanguages(c fiber.Ctx) error { + return c.JSON(h.service.GetActive(c)) +} + +func (h *LangHandler) GetTranslations(c fiber.Ctx) error { + langIDStr := c.Query("lang_id", "0") + langID, _ := strconv.Atoi(langIDStr) + scope := c.Query("scope", "") + componentsStr := c.Query("components", "") + + var components []string + if componentsStr != "" { + components = []string{componentsStr} + } + + return c.JSON(h.service.GetTranslations(c, uint(langID), scope, components)) +} + +func (h *LangHandler) ReloadTranslations(c fiber.Ctx) error { + return c.JSON(h.service.ReloadTranslationsResponse(c)) +} diff --git a/app/delivery/web/public/repo.go b/app/delivery/web/public/repo.go new file mode 100644 index 0000000..88c73a3 --- /dev/null +++ b/app/delivery/web/public/repo.go @@ -0,0 +1,179 @@ +package public + +import ( + "strconv" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/service/repoService" + "git.ma-al.com/goc_marek/timetracker/app/utils/pagination" + "git.ma-al.com/goc_marek/timetracker/app/view" + + "github.com/gofiber/fiber/v3" +) + +// RepoHandler handles endpoints asking for repository data (to create charts) +type RepoHandler struct { + repoService *repoService.RepoService + config *config.Config +} + +// NewRepoHandler creates a new RepoHandler instance +func NewRepoHandler() *RepoHandler { + repoService := repoService.New() + return &RepoHandler{ + repoService: repoService, + config: config.Get(), + } +} + +// RepoHandlerRoutes registers all repo routes +func RepoHandlerRoutes(r fiber.Router) fiber.Router { + handler := NewRepoHandler() + + r.Get("/get-repos", handler.GetRepoIDs) + r.Get("/get-years", handler.GetYears) + r.Get("/get-quarters", handler.GetQuarters) + r.Get("/get-issues", handler.GetIssues) + + return r +} + +func (h *RepoHandler) GetRepoIDs(c fiber.Ctx) error { + userID, ok := c.Locals("userID").(uint) + if !ok { + return c.Status(view.GetErrorStatus(view.ErrInvalidBody)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + response, err := h.repoService.GetRepositoriesForUser(userID) + if err != nil { + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + return c.JSON(response) +} + +func (h *RepoHandler) GetYears(c fiber.Ctx) error { + userID, ok := c.Locals("userID").(uint) + if !ok { + return c.Status(view.GetErrorStatus(view.ErrInvalidBody)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + repoID_attribute := c.Query("repoID") + repoID, err := strconv.Atoi(repoID_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadRepoIDAttribute)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadRepoIDAttribute), + }) + } + + response, err := h.repoService.GetYearsForUser(userID, uint(repoID)) + if err != nil { + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + return c.JSON(response) +} + +func (h *RepoHandler) GetQuarters(c fiber.Ctx) error { + userID, ok := c.Locals("userID").(uint) + if !ok { + return c.Status(view.GetErrorStatus(view.ErrInvalidBody)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + repoID_attribute := c.Query("repoID") + repoID, err := strconv.Atoi(repoID_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadRepoIDAttribute)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadRepoIDAttribute), + }) + } + + year_attribute := c.Query("year") + year, err := strconv.Atoi(year_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadYearAttribute)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadYearAttribute), + }) + } + + response, err := h.repoService.GetQuartersForUser(userID, uint(repoID), uint(year)) + if err != nil { + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + return c.JSON(response) +} + +func (h *RepoHandler) GetIssues(c fiber.Ctx) error { + userID, ok := c.Locals("userID").(uint) + if !ok { + return c.Status(view.GetErrorStatus(view.ErrInvalidBody)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrInvalidBody), + }) + } + + repoID_attribute := c.Query("repoID") + repoID, err := strconv.Atoi(repoID_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadRepoIDAttribute)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadRepoIDAttribute), + }) + } + + year_attribute := c.Query("year") + year, err := strconv.Atoi(year_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadYearAttribute)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadYearAttribute), + }) + } + + quarter_attribute := c.Query("quarter") + quarter, err := strconv.Atoi(quarter_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadQuarterAttribute)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadQuarterAttribute), + }) + } + + page_number_attribute := c.Query("page_number") + page_number, err := strconv.Atoi(page_number_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadPaging)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadPaging), + }) + } + + elements_per_page_attribute := c.Query("quarter") + elements_per_page, err := strconv.Atoi(elements_per_page_attribute) + if err != nil { + return c.Status(view.GetErrorStatus(view.ErrBadPaging)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, view.ErrBadPaging), + }) + } + + var paging pagination.Paging + paging.Page = uint(page_number) + paging.Elements = uint(elements_per_page) + + response, err := h.repoService.GetIssuesForUser(userID, uint(repoID), uint(year), uint(quarter), paging) + if err != nil { + return c.Status(view.GetErrorStatus(err)).JSON(fiber.Map{ + "error": view.GetErrorCode(c, err), + }) + } + + return c.JSON(response) +} diff --git a/app/delivery/web/public/settings.go b/app/delivery/web/public/settings.go new file mode 100644 index 0000000..97b9097 --- /dev/null +++ b/app/delivery/web/public/settings.go @@ -0,0 +1,91 @@ +package public + +import ( + "git.ma-al.com/goc_marek/timetracker/app/config" + constdata "git.ma-al.com/goc_marek/timetracker/app/utils/const_data" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "git.ma-al.com/goc_marek/timetracker/app/utils/nullable" + "git.ma-al.com/goc_marek/timetracker/app/utils/response" + "git.ma-al.com/goc_marek/timetracker/app/utils/version" + "github.com/gofiber/fiber/v3" +) + +// SettingsResponse represents the settings endpoint response +type SettingsResponse struct { + App AppSettings `json:"app"` + Server ServerSettings `json:"server"` + Auth AuthSettings `json:"auth"` + Features FeatureFlags `json:"features"` + Version version.Info `json:"version"` +} + +// AppSettings represents app configuration +type AppSettings struct { + Name string `json:"name"` + Environment string `json:"environment"` + BaseURL string `json:"base_url"` + PasswordRegex string `json:"password_regex"` + // Config config.Config `json:"config"` +} + +// ServerSettings represents server configuration (non-sensitive) +type ServerSettings struct { + Port int `json:"port"` + Host string `json:"host"` +} + +// AuthSettings represents auth configuration (non-sensitive) +type AuthSettings struct { + JWTExpiration int `json:"jwt_expiration"` + RefreshExpiration int `json:"refresh_expiration"` +} + +// FeatureFlags represents feature flags +type FeatureFlags struct { + EmailEnabled bool `json:"email_enabled"` + OAuthGoogle bool `json:"oauth_google"` +} + +// SettingsHandler handles settings/config endpoints +type SettingsHandler struct{} + +// NewSettingsHandler creates a new settings handler +func NewSettingsHandler() *SettingsHandler { + return &SettingsHandler{} +} + +// InitSettings initializes the settings routes +func (h *SettingsHandler) InitSettings(api fiber.Router, cfg *config.Config) { + settings := api.Group("/settings") + settings.Get("", h.GetSettings(cfg)) +} + +// GetSettings returns all settings/config +func (h *SettingsHandler) GetSettings(cfg *config.Config) fiber.Handler { + return func(c fiber.Ctx) error { + settings := SettingsResponse{ + App: AppSettings{ + Name: cfg.App.Name, + Environment: cfg.App.Environment, + BaseURL: cfg.App.BaseURL, + PasswordRegex: constdata.PASSWORD_VALIDATION_REGEX, + // Config: *config.Get(), + }, + Server: ServerSettings{ + Port: cfg.Server.Port, + Host: cfg.Server.Host, + }, + Auth: AuthSettings{ + JWTExpiration: cfg.Auth.JWTExpiration, + RefreshExpiration: cfg.Auth.RefreshExpiration, + }, + Features: FeatureFlags{ + EmailEnabled: cfg.Email.Enabled, + OAuthGoogle: cfg.OAuth.Google.ClientID != "", + }, + Version: version.GetInfo(), + } + + return c.JSON(response.Make(c, fiber.StatusOK, nullable.GetNil(settings), nullable.GetNil(0), i18n.T_(c, response.Message_OK))) + } +} diff --git a/app/delivery/web/public/swagger.go b/app/delivery/web/public/swagger.go new file mode 100644 index 0000000..8508016 --- /dev/null +++ b/app/delivery/web/public/swagger.go @@ -0,0 +1,60 @@ +package public + +import ( + "git.ma-al.com/goc_marek/timetracker/app/api" + "github.com/gofiber/fiber/v3" + "github.com/gofiber/fiber/v3/middleware/static" +) + +func InitSwagger(app *fiber.App) { + // Swagger - serve OpenAPI JSON + app.Get("/openapi.json", func(c fiber.Ctx) error { + c.Set("Content-Type", "application/json") + return c.SendString(api.ApenapiJson) + }) + + // Swagger UI HTML + app.Get("/swagger", func(c fiber.Ctx) error { + return c.Redirect().Status(fiber.StatusFound).To("/swagger/index.html") + }) + + app.Get("/swagger/index.html", func(c fiber.Ctx) error { + c.Set("Content-Type", "text/html") + return c.SendString(swaggerHTML) + }) + + // Serve Swagger assets + app.Get("/swagger/assets", static.New("app/api/swagger/assets")) +} + +// Embedded Swagger UI HTML (minimal version) +var swaggerHTML = ` + + + + + + API Documentation + + + +
+ + + + + +` diff --git a/app/langs/langs.go b/app/langs/langs.go new file mode 100644 index 0000000..5ac0afe --- /dev/null +++ b/app/langs/langs.go @@ -0,0 +1,68 @@ +package langs_repo + +import ( + "git.ma-al.com/goc_marek/timetracker/app/db" + "git.ma-al.com/goc_marek/timetracker/app/model" + "git.ma-al.com/goc_marek/timetracker/app/view" +) + +type LangsRepo struct{} + +func New() *LangsRepo { + return &LangsRepo{} +} + +func (r *LangsRepo) GetActive() ([]view.Language, error) { + langs := []view.Language{} + err := db.DB.Model(model.Language{}).Find(&langs, model.Language{Active: true}).Error + if err != nil { + return nil, err + } + return langs, nil +} + +func (r *LangsRepo) GetAllTranslations() ([]model.Translation, error) { + var translations []model.Translation + err := db.DB.Preload("Language").Preload("Scope").Preload("Component").Find(&translations).Error + if err != nil { + return nil, err + } + return translations, nil +} + +func (r *LangsRepo) GetTranslationsByLangID(langID uint) ([]model.Translation, error) { + var translations []model.Translation + err := db.DB.Preload("Language").Preload("Scope").Preload("Component"). + Where("lang_id = ?", langID).Find(&translations).Error + if err != nil { + return nil, err + } + return translations, nil +} + +func (r *LangsRepo) GetDefault() (*view.Language, error) { + var lang view.Language + err := db.DB.Model(model.Language{}).Where("is_default = ?", true).First(&lang).Error + if err != nil { + return nil, err + } + return &lang, nil +} + +func (r *LangsRepo) GetByISOCode(isoCode string) (*view.Language, error) { + var lang view.Language + err := db.DB.Model(model.Language{}).First(&lang, model.Language{ISOCode: isoCode}).Error + if err != nil { + return nil, err + } + return &lang, nil +} + +func (r *LangsRepo) GetById(id uint) (*view.Language, error) { + var lang view.Language + err := db.DB.Model(model.Language{}).First(&lang, model.Language{ID: id}).Error + if err != nil { + return nil, err + } + return &lang, nil +} diff --git a/app/model/customer.go b/app/model/customer.go new file mode 100644 index 0000000..84b95f2 --- /dev/null +++ b/app/model/customer.go @@ -0,0 +1,144 @@ +package model + +import ( + "time" + + "gorm.io/gorm" +) + +// User represents a user in the system +type Customer struct { + ID uint `gorm:"primaryKey" json:"id"` + Email string `gorm:"uniqueIndex;not null;size:255" json:"email"` + Password string `gorm:"size:255" json:"-"` // Hashed password, not exposed in JSON + FirstName string `gorm:"size:100" json:"first_name"` + LastName string `gorm:"size:100" json:"last_name"` + Role CustomerRole `gorm:"type:varchar(20);default:'user'" json:"role"` + Provider AuthProvider `gorm:"type:varchar(20);default:'local'" json:"provider"` + ProviderID string `gorm:"size:255" json:"provider_id,omitempty"` // ID from OAuth provider + AvatarURL string `gorm:"size:500" json:"avatar_url,omitempty"` + IsActive bool `gorm:"default:true" json:"is_active"` + EmailVerified bool `gorm:"default:false" json:"email_verified"` + EmailVerificationToken string `gorm:"size:255" json:"-"` + EmailVerificationExpires *time.Time `json:"-"` + PasswordResetToken string `gorm:"size:255" json:"-"` + PasswordResetExpires *time.Time `json:"-"` + LastPasswordResetRequest *time.Time `json:"-"` + LastLoginAt *time.Time `json:"last_login_at,omitempty"` + Lang string `gorm:"size:10;default:'en'" json:"lang"` // User's preferred language + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` +} + +// CustomerRole represents the role of a user +type CustomerRole string + +const ( + RoleUser CustomerRole = "user" + RoleAdmin CustomerRole = "admin" +) + +// AuthProvider represents the authentication provider +type AuthProvider string + +const ( + ProviderLocal AuthProvider = "local" + ProviderGoogle AuthProvider = "google" +) + +// TableName specifies the table name for User model +func (Customer) TableName() string { + return "customers" +} + +// IsAdmin checks if the user has admin role +func (u *Customer) IsAdmin() bool { + return u.Role == RoleAdmin +} + +// CanManageUsers checks if the user can manage other users +func (u *Customer) CanManageUsers() bool { + return u.Role == RoleAdmin +} + +// FullName returns the user's full name +func (u *Customer) FullName() string { + if u.FirstName == "" && u.LastName == "" { + return u.Email + } + return u.FirstName + " " + u.LastName +} + +// UserSession represents a user session for JWT claims +type UserSession struct { + UserID uint `json:"user_id"` + Email string `json:"email"` + Username string `json:"username"` + Role CustomerRole `json:"role"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + Lang string `json:"lang"` +} + +// ToSession converts User to UserSession +func (u *Customer) ToSession() *UserSession { + return &UserSession{ + UserID: u.ID, + Email: u.Email, + Role: u.Role, + FirstName: u.FirstName, + LastName: u.LastName, + Lang: u.Lang, + } +} + +// LoginRequest represents the login form data +type LoginRequest struct { + Email string `json:"email" form:"email"` + Password string `json:"password" form:"password"` +} + +// RegisterRequest represents the initial registration form data +type RegisterRequest struct { + ErrorMsg string `form:"error_msg" json:"error_msg"` + Email string `json:"email" form:"email"` + Password string `json:"password" form:"password"` + ConfirmPassword string `json:"confirm_password" form:"confirm_password"` + FirstName string `json:"first_name" form:"first_name"` + LastName string `json:"last_name" form:"last_name"` + Lang string `form:"lang" json:"lang"` +} + +// CompleteRegistrationRequest represents the completion of registration with email verification +type CompleteRegistrationRequest struct { + Token string `json:"token" form:"token"` +} + +// ResetPasswordRequest represents the reset password form data +type ResetPasswordRequest struct { + Token string `json:"token" form:"token"` + Password string `json:"password" form:"password"` +} + +// AuthResponse represents the authentication response +type AuthResponse struct { + AccessToken string `json:"access_token"` + TokenType string `json:"token_type"` + ExpiresIn int `json:"expires_in"` + User *UserSession `json:"user"` +} + +// RefreshToken represents an opaque refresh token stored in the database +type RefreshToken struct { + ID uint `gorm:"primaryKey" json:"-"` + CustomerID uint `gorm:"not null;index" json:"-"` + TokenHash string `gorm:"size:64;uniqueIndex;not null" json:"-"` // SHA-256 hex of the raw token + ExpiresAt time.Time `gorm:"not null" json:"-"` + CreatedAt time.Time `json:"-"` +} + +// TableName specifies the table name for RefreshToken model +func (RefreshToken) TableName() string { + return "refresh_tokens" +} diff --git a/app/model/data.go b/app/model/data.go new file mode 100644 index 0000000..bd7c30d --- /dev/null +++ b/app/model/data.go @@ -0,0 +1,22 @@ +package model + +// LoginRequest represents the login form data +type DataRequest struct { + RepoID uint `json:"repoid" form:"repoid"` + Step uint `json:"step" form:"step"` +} + +type PageMeta struct { + Title string + Description string +} + +type QuarterData struct { + Time float64 `json:"time"` + Quarter string `json:"quarter"` +} + +type DayData struct { + Date string `json:"date"` + Time float64 `json:"time"` +} diff --git a/app/model/i18n.go b/app/model/i18n.go new file mode 100644 index 0000000..4720c76 --- /dev/null +++ b/app/model/i18n.go @@ -0,0 +1,67 @@ +package model + +import ( + "time" + + "gorm.io/gorm" +) + +// contextKey is a custom type for context keys +type contextKey string + +// ContextLanguageID is the key for storing language ID in context +const ContextLanguageID contextKey = "languageID" + +type Translation struct { + LangID uint `gorm:"primaryKey;column:lang_id"` + ScopeID uint `gorm:"primaryKey;column:scope_id"` + ComponentID uint `gorm:"primaryKey;column:component_id"` + Key string `gorm:"primaryKey;size:255;column:key"` + Data *string `gorm:"type:text;column:data"` + + Language Language `gorm:"foreignKey:LangID;references:ID;constraint:OnUpdate:RESTRICT,OnDelete:RESTRICT"` + Scope Scope `gorm:"foreignKey:ScopeID;references:ID;constraint:OnUpdate:RESTRICT,OnDelete:RESTRICT"` + Component Component `gorm:"foreignKey:ComponentID;references:ID;constraint:OnUpdate:RESTRICT,OnDelete:RESTRICT"` +} + +func (Translation) TableName() string { + return "translations" +} + +type Language struct { + ID uint `gorm:"primaryKey;autoIncrement;column:id"` + CreatedAt time.Time `gorm:"not null;column:created_at"` + UpdatedAt *time.Time `gorm:"column:updated_at"` + DeletedAt gorm.DeletedAt `gorm:"index:idx_language_deleted_at;column:deleted_at"` + Name string `gorm:"size:128;not null;column:name"` + ISOCode string `gorm:"size:2;not null;column:iso_code"` + LangCode string `gorm:"size:5;not null;column:lang_code"` + DateFormat string `gorm:"size:32;not null;column:date_format"` + DateFormatShort string `gorm:"size:32;not null;column:date_format_short"` + RTL bool `gorm:"not null;default:0;column:rtl"` + IsDefault bool `gorm:"not null;default:0;column:is_default;comment:there should be only one default language"` + Active bool `gorm:"not null;default:1;column:active"` + Flag string `gorm:"size:16;not null;column:flag"` +} + +func (Language) TableName() string { + return "language" +} + +type Component struct { + ID uint64 `gorm:"primaryKey;autoIncrement;column:id"` + Name string `gorm:"size:255;not null;uniqueIndex:uk_components_name;column:name"` +} + +func (Component) TableName() string { + return "components" +} + +type Scope struct { + ID uint64 `gorm:"primaryKey;autoIncrement;column:id"` + Name string `gorm:"size:255;not null;uniqueIndex:uk_scopes_name;column:name"` +} + +func (Scope) TableName() string { + return "scopes" +} diff --git a/app/model/repository.go b/app/model/repository.go new file mode 100644 index 0000000..6212723 --- /dev/null +++ b/app/model/repository.go @@ -0,0 +1,61 @@ +package model + +import "encoding/json" + +type Repository struct { + ID int64 `db:"id"` + OwnerID *int64 `db:"owner_id"` + OwnerName *string `db:"owner_name"` + LowerName string `db:"lower_name"` + Name string `db:"name"` + Description *string `db:"description"` + Website *string `db:"website"` + OriginalServiceType *int `db:"original_service_type"` + OriginalURL *string `db:"original_url"` + DefaultBranch *string `db:"default_branch"` + DefaultWikiBranch *string `db:"default_wiki_branch"` + + NumWatches *int `db:"num_watches"` + NumStars *int `db:"num_stars"` + NumForks *int `db:"num_forks"` + NumIssues *int `db:"num_issues"` + NumClosedIssues *int `db:"num_closed_issues"` + NumPulls *int `db:"num_pulls"` + NumClosedPulls *int `db:"num_closed_pulls"` + + NumMilestones int `db:"num_milestones"` + NumClosedMilestones int `db:"num_closed_milestones"` + NumProjects int `db:"num_projects"` + NumClosedProjects int `db:"num_closed_projects"` + NumActionRuns int `db:"num_action_runs"` + NumClosedActionRuns int `db:"num_closed_action_runs"` + + IsPrivate *bool `db:"is_private"` + IsEmpty *bool `db:"is_empty"` + IsArchived *bool `db:"is_archived"` + IsMirror *bool `db:"is_mirror"` + + Status int `db:"status"` + IsFork bool `db:"is_fork"` + ForkID *int64 `db:"fork_id"` + + IsTemplate bool `db:"is_template"` + TemplateID *int64 `db:"template_id"` + + Size int64 `db:"size"` + GitSize int64 `db:"git_size"` + LFSSize int64 `db:"lfs_size"` + + IsFsckEnabled bool `db:"is_fsck_enabled"` + CloseIssuesViaCommitAnyBranch bool `db:"close_issues_via_commit_in_any_branch"` + + Topics json.RawMessage `db:"topics"` + + ObjectFormatName string `db:"object_format_name"` + TrustModel *int `db:"trust_model"` + Avatar *string `db:"avatar"` + + CreatedUnix *int64 `db:"created_unix"` + UpdatedUnix *int64 `db:"updated_unix"` + ArchivedUnix int64 `db:"archived_unix"` +} diff --git a/app/service/authService/auth.go b/app/service/authService/auth.go new file mode 100644 index 0000000..3a95989 --- /dev/null +++ b/app/service/authService/auth.go @@ -0,0 +1,509 @@ +package authService + +import ( + "crypto/rand" + "crypto/sha256" + "encoding/hex" + "errors" + "fmt" + "time" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/db" + "git.ma-al.com/goc_marek/timetracker/app/model" + "git.ma-al.com/goc_marek/timetracker/app/service/emailService" + constdata "git.ma-al.com/goc_marek/timetracker/app/utils/const_data" + "git.ma-al.com/goc_marek/timetracker/app/view" + + "github.com/dlclark/regexp2" + "github.com/golang-jwt/jwt/v5" + "golang.org/x/crypto/bcrypt" + "gorm.io/gorm" +) + +// JWTClaims represents the JWT claims +type JWTClaims struct { + UserID uint `json:"user_id"` + Email string `json:"email"` + Username string `json:"username"` + Role model.CustomerRole `json:"customer_role"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + jwt.RegisteredClaims +} + +// AuthService handles authentication operations +type AuthService struct { + db *gorm.DB + config *config.AuthConfig + email *emailService.EmailService +} + +// NewAuthService creates a new AuthService instance +func NewAuthService() *AuthService { + svc := &AuthService{ + db: db.Get(), + config: &config.Get().Auth, + email: emailService.NewEmailService(), + } + // Auto-migrate the refresh_tokens table + if svc.db != nil { + _ = svc.db.AutoMigrate(&model.RefreshToken{}) + } + return svc +} + +// Login authenticates a user with email and password +func (s *AuthService) Login(req *model.LoginRequest) (*model.AuthResponse, string, error) { + var user model.Customer + + // Find user by email + if err := s.db.Where("email = ?", req.Email).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, "", view.ErrInvalidCredentials + } + return nil, "", fmt.Errorf("database error: %w", err) + } + // Check if user is active + if !user.IsActive { + return nil, "", view.ErrUserInactive + } + + // Check if email is verified + if !user.EmailVerified { + return nil, "", view.ErrEmailNotVerified + } + + // Verify password + if err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(req.Password)); err != nil { + return nil, "", view.ErrInvalidCredentials + } + + // Update last login time + now := time.Now() + user.LastLoginAt = &now + s.db.Save(&user) + + // Generate access token (JWT) + accessToken, err := s.generateAccessToken(&user) + if err != nil { + return nil, "", fmt.Errorf("failed to generate access token: %w", err) + } + + // Generate opaque refresh token and store in DB + rawRefreshToken, err := s.createRefreshToken(user.ID) + if err != nil { + return nil, "", fmt.Errorf("failed to create refresh token: %w", err) + } + + return &model.AuthResponse{ + AccessToken: accessToken, + TokenType: "Bearer", + ExpiresIn: s.config.JWTExpiration, + User: user.ToSession(), + }, rawRefreshToken, nil +} + +// Register initiates user registration +func (s *AuthService) Register(req *model.RegisterRequest) error { + // Check if email already exists + var existingUser model.Customer + if err := s.db.Where("email = ?", req.Email).First(&existingUser).Error; err == nil { + return view.ErrEmailExists + } + + // Validate passwords match + if req.Password != req.ConfirmPassword { + return view.ErrPasswordsDoNotMatch + } + + // Validate password strength + if err := validatePassword(req.Password); err != nil { + return view.ErrInvalidPassword + } + + // Hash password + hashedPassword, err := bcrypt.GenerateFromPassword([]byte(req.Password), bcrypt.DefaultCost) + if err != nil { + return fmt.Errorf("failed to hash password: %w", err) + } + + // Generate verification token + token, err := s.generateVerificationToken() + if err != nil { + return fmt.Errorf("failed to generate verification token: %w", err) + } + + // Set expiration (24 hours from now) + expiresAt := time.Now().Add(24 * time.Hour) + + // Create user with verification token + user := model.Customer{ + Email: req.Email, + Password: string(hashedPassword), + FirstName: req.FirstName, + LastName: req.LastName, + Role: model.RoleUser, + Provider: model.ProviderLocal, + IsActive: false, + EmailVerified: false, + EmailVerificationToken: token, + EmailVerificationExpires: &expiresAt, + Lang: req.Lang, + } + + if err := s.db.Create(&user).Error; err != nil { + return fmt.Errorf("failed to create user: %w", err) + } + + // Send verification email + baseURL := config.Get().App.BaseURL + lang := req.Lang + if lang == "" { + lang = "en" // Default to English + } + if err := s.email.SendVerificationEmail(user.Email, user.EmailVerificationToken, baseURL, lang); err != nil { + // Log error but don't fail registration - user can request resend + _ = err + } + + return nil +} + +// CompleteRegistration completes the registration with password verification after email verification +func (s *AuthService) CompleteRegistration(req *model.CompleteRegistrationRequest) (*model.AuthResponse, string, error) { + // Find user by verification token + var user model.Customer + if err := s.db.Where("email_verification_token = ?", req.Token).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, "", view.ErrInvalidVerificationToken + } + return nil, "", fmt.Errorf("database error: %w", err) + } + + // Check if token is expired + if user.EmailVerificationExpires != nil && user.EmailVerificationExpires.Before(time.Now()) { + return nil, "", view.ErrVerificationTokenExpired + } + + // Update user - activate account and mark email as verified + user.IsActive = true + user.EmailVerified = true + user.EmailVerificationToken = "" + user.EmailVerificationExpires = nil + + if err := s.db.Save(&user).Error; err != nil { + return nil, "", fmt.Errorf("failed to update user: %w", err) + } + + // Send admin notification about new user registration + baseURL := config.Get().App.BaseURL + if err := s.email.SendNewUserAdminNotification(user.Email, user.FullName(), baseURL); err != nil { + _ = err + } + + // Generate access token + accessToken, err := s.generateAccessToken(&user) + if err != nil { + return nil, "", fmt.Errorf("failed to generate access token: %w", err) + } + + // Generate opaque refresh token and store in DB + rawRefreshToken, err := s.createRefreshToken(user.ID) + if err != nil { + return nil, "", fmt.Errorf("failed to create refresh token: %w", err) + } + + return &model.AuthResponse{ + AccessToken: accessToken, + TokenType: "Bearer", + ExpiresIn: s.config.JWTExpiration, + User: user.ToSession(), + }, rawRefreshToken, nil +} + +// RequestPasswordReset initiates a password reset request +func (s *AuthService) RequestPasswordReset(emailAddr string) error { + // Find user by email + var user model.Customer + if err := s.db.Where("email = ?", emailAddr).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + // Don't reveal if email exists or not for security + return nil + } + return fmt.Errorf("database error: %w", err) + } + + // Check if user is active, email verified, and is a local user + if !user.IsActive || !user.EmailVerified || user.Provider != model.ProviderLocal { + // Don't reveal account status for security + return nil + } + + // Check rate limit: don't allow password reset requests more than once per hour + if user.LastPasswordResetRequest != nil && time.Since(*user.LastPasswordResetRequest) < time.Hour { + // Rate limit hit, silently fail for security + return nil + } + + // Generate reset token + token, err := s.generateVerificationToken() + if err != nil { + return fmt.Errorf("failed to generate reset token: %w", err) + } + + // Set expiration (1 hour from now) + expiresAt := time.Now().Add(1 * time.Hour) + + // Update user with reset token and last request time + now := time.Now() + user.PasswordResetToken = token + user.PasswordResetExpires = &expiresAt + user.LastPasswordResetRequest = &now + if err := s.db.Save(&user).Error; err != nil { + return fmt.Errorf("failed to save reset token: %w", err) + } + + // Send password reset email + baseURL := config.Get().App.BaseURL + lang := "en" + if user.Lang != "" { + lang = user.Lang + } + if err := s.email.SendPasswordResetEmail(user.Email, user.PasswordResetToken, baseURL, lang); err != nil { + _ = err + } + + return nil +} + +// ResetPassword completes the password reset with a new password +func (s *AuthService) ResetPassword(token, newPassword string) error { + // Find user by reset token + var user model.Customer + if err := s.db.Where("password_reset_token = ?", token).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return view.ErrInvalidResetToken + } + return fmt.Errorf("database error: %w", err) + } + + // Check if token is expired + if user.PasswordResetExpires == nil || user.PasswordResetExpires.Before(time.Now()) { + return view.ErrResetTokenExpired + } + + // Validate new password + if err := validatePassword(newPassword); err != nil { + return view.ErrInvalidPassword + } + + // Hash new password + hashedPassword, err := bcrypt.GenerateFromPassword([]byte(newPassword), bcrypt.DefaultCost) + if err != nil { + return fmt.Errorf("failed to hash password: %w", err) + } + + // Update user password and clear reset token + user.Password = string(hashedPassword) + user.PasswordResetToken = "" + user.PasswordResetExpires = nil + + if err := s.db.Save(&user).Error; err != nil { + return fmt.Errorf("failed to update password: %w", err) + } + + // Revoke all existing refresh tokens for this user (security: password changed) + s.db.Where("customer_id = ?", user.ID).Delete(&model.RefreshToken{}) + + return nil +} + +// ValidateToken validates a JWT access token and returns the claims +func (s *AuthService) ValidateToken(tokenString string) (*JWTClaims, error) { + token, err := jwt.ParseWithClaims(tokenString, &JWTClaims{}, func(token *jwt.Token) (interface{}, error) { + if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) + } + return []byte(s.config.JWTSecret), nil + }) + + if err != nil { + if errors.Is(err, jwt.ErrTokenExpired) { + return nil, view.ErrTokenExpired + } + return nil, view.ErrInvalidToken + } + + claims, ok := token.Claims.(*JWTClaims) + if !ok || !token.Valid { + return nil, view.ErrInvalidToken + } + + return claims, nil +} + +// RefreshToken validates an opaque refresh token, rotates it, and returns a new access token. +// Returns: AuthResponse, new raw refresh token, error +func (s *AuthService) RefreshToken(rawToken string) (*model.AuthResponse, string, error) { + tokenHash := hashToken(rawToken) + + // Find the refresh token record + var rt model.RefreshToken + if err := s.db.Where("token_hash = ?", tokenHash).First(&rt).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, "", view.ErrInvalidToken + } + return nil, "", fmt.Errorf("database error: %w", err) + } + + // Check expiry + if rt.ExpiresAt.Before(time.Now()) { + // Clean up expired token + s.db.Delete(&rt) + return nil, "", view.ErrTokenExpired + } + + // Get user from database + var user model.Customer + if err := s.db.First(&user, rt.CustomerID).Error; err != nil { + return nil, "", view.ErrUserNotFound + } + + if !user.IsActive { + return nil, "", view.ErrUserInactive + } + + if !user.EmailVerified { + return nil, "", view.ErrEmailNotVerified + } + + // Delete the old refresh token (rotation: one-time use) + s.db.Delete(&rt) + + // Generate new access token + accessToken, err := s.generateAccessToken(&user) + if err != nil { + return nil, "", fmt.Errorf("failed to generate access token: %w", err) + } + + // Issue a new opaque refresh token + newRawRefreshToken, err := s.createRefreshToken(user.ID) + if err != nil { + return nil, "", fmt.Errorf("failed to create refresh token: %w", err) + } + + return &model.AuthResponse{ + AccessToken: accessToken, + TokenType: "Bearer", + ExpiresIn: s.config.JWTExpiration, + User: user.ToSession(), + }, newRawRefreshToken, nil +} + +// RevokeRefreshToken deletes a specific refresh token from the DB (used on logout) +func (s *AuthService) RevokeRefreshToken(rawToken string) { + if rawToken == "" { + return + } + tokenHash := hashToken(rawToken) + s.db.Where("token_hash = ?", tokenHash).Delete(&model.RefreshToken{}) +} + +// RevokeAllRefreshTokens deletes all refresh tokens for a user (used on logout-all-devices) +func (s *AuthService) RevokeAllRefreshTokens(userID uint) { + s.db.Where("customer_id = ?", userID).Delete(&model.RefreshToken{}) +} + +// GetUserByID retrieves a user by ID +func (s *AuthService) GetUserByID(userID uint) (*model.Customer, error) { + var user model.Customer + if err := s.db.First(&user, userID).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, view.ErrUserNotFound + } + return nil, fmt.Errorf("database error: %w", err) + } + return &user, nil +} + +// GetUserByEmail retrieves a user by email +func (s *AuthService) GetUserByEmail(email string) (*model.Customer, error) { + var user model.Customer + if err := s.db.Where("email = ?", email).First(&user).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, view.ErrUserNotFound + } + return nil, fmt.Errorf("database error: %w", err) + } + return &user, nil +} + +// createRefreshToken generates a random opaque token, stores its hash in the DB, and returns the raw token. +func (s *AuthService) createRefreshToken(userID uint) (string, error) { + // Generate 32 random bytes → 64-char hex string + b := make([]byte, 32) + if _, err := rand.Read(b); err != nil { + return "", err + } + rawToken := hex.EncodeToString(b) + tokenHash := hashToken(rawToken) + + expiresAt := time.Now().Add(time.Duration(s.config.RefreshExpiration) * time.Second) + + rt := model.RefreshToken{ + CustomerID: userID, + TokenHash: tokenHash, + ExpiresAt: expiresAt, + } + if err := s.db.Create(&rt).Error; err != nil { + return "", fmt.Errorf("failed to store refresh token: %w", err) + } + + return rawToken, nil +} + +// hashToken returns the SHA-256 hex digest of a raw token string. +func hashToken(raw string) string { + h := sha256.Sum256([]byte(raw)) + return hex.EncodeToString(h[:]) +} + +// generateAccessToken generates a short-lived JWT access token +func (s *AuthService) generateAccessToken(user *model.Customer) (string, error) { + claims := JWTClaims{ + UserID: user.ID, + Email: user.Email, + Username: user.Email, + Role: user.Role, + FirstName: user.FirstName, + LastName: user.LastName, + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Duration(s.config.JWTExpiration) * time.Second)), + IssuedAt: jwt.NewNumericDate(time.Now()), + }, + } + + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + return token.SignedString([]byte(s.config.JWTSecret)) +} + +// generateVerificationToken generates a random verification token +func (s *AuthService) generateVerificationToken() (string, error) { + bytes := make([]byte, 32) + if _, err := rand.Read(bytes); err != nil { + return "", err + } + return hex.EncodeToString(bytes), nil +} + +// validatePassword validates password strength using RE2-compatible regexes. +func validatePassword(password string) error { + var passregex2 = regexp2.MustCompile(constdata.PASSWORD_VALIDATION_REGEX, regexp2.None) + + if ok, _ := passregex2.MatchString(password); !ok { + return errors.New("password must be at least 10 characters long and contain at least one lowercase letter, one uppercase letter, and one digit") + } + + return nil +} diff --git a/app/service/authService/google_oauth.go b/app/service/authService/google_oauth.go new file mode 100644 index 0000000..4995dec --- /dev/null +++ b/app/service/authService/google_oauth.go @@ -0,0 +1,204 @@ +package authService + +import ( + "context" + "crypto/rand" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "net/http" + "time" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/model" + "git.ma-al.com/goc_marek/timetracker/app/view" + "golang.org/x/oauth2" + "golang.org/x/oauth2/google" +) + +const googleUserInfoURL = "https://www.googleapis.com/oauth2/v2/userinfo" + +// GoogleUserInfo represents the user info returned by Google +type GoogleUserInfo struct { + ID string `json:"id"` + Email string `json:"email"` + VerifiedEmail bool `json:"verified_email"` + Name string `json:"name"` + GivenName string `json:"given_name"` + FamilyName string `json:"family_name"` + Picture string `json:"picture"` +} + +// googleOAuthConfig returns the OAuth2 config for Google +func googleOAuthConfig() *oauth2.Config { + cfg := config.Get().OAuth.Google + scopes := cfg.Scopes + if len(scopes) == 0 { + scopes = []string{ + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/userinfo.profile", + } + } + return &oauth2.Config{ + ClientID: cfg.ClientID, + ClientSecret: cfg.ClientSecret, + RedirectURL: cfg.RedirectURL, + Scopes: scopes, + Endpoint: google.Endpoint, + } +} + +// GenerateOAuthState generates a random state token for CSRF protection +func (s *AuthService) GenerateOAuthState() (string, error) { + b := make([]byte, 16) + if _, err := rand.Read(b); err != nil { + return "", err + } + return hex.EncodeToString(b), nil +} + +// GetGoogleAuthURL returns the Google OAuth2 authorization URL with a state token +func (s *AuthService) GetGoogleAuthURL(state string) string { + return googleOAuthConfig().AuthCodeURL(state, oauth2.AccessTypeOnline) +} + +// HandleGoogleCallback exchanges the code for a token, fetches user info, +// and either logs in or registers the user, returning an AuthResponse and raw refresh token. +func (s *AuthService) HandleGoogleCallback(code string) (*model.AuthResponse, string, error) { + oauthCfg := googleOAuthConfig() + + // Exchange authorization code for token + token, err := oauthCfg.Exchange(context.Background(), code) + if err != nil { + return nil, "", fmt.Errorf("failed to exchange code: %w", err) + } + + // Fetch user info from Google + userInfo, err := fetchGoogleUserInfo(oauthCfg.Client(context.Background(), token)) + if err != nil { + return nil, "", fmt.Errorf("failed to fetch user info: %w", err) + } + + if !userInfo.VerifiedEmail { + return nil, "", view.ErrEmailNotVerified + } + + // Find or create user + user, err := s.findOrCreateGoogleUser(userInfo) + if err != nil { + return nil, "", err + } + + // Update last login + now := time.Now() + user.LastLoginAt = &now + s.db.Save(user) + + // Generate access token (JWT) + accessToken, err := s.generateAccessToken(user) + if err != nil { + return nil, "", fmt.Errorf("failed to generate access token: %w", err) + } + + // Generate opaque refresh token and store in DB + rawRefreshToken, err := s.createRefreshToken(user.ID) + if err != nil { + return nil, "", fmt.Errorf("failed to create refresh token: %w", err) + } + + return &model.AuthResponse{ + AccessToken: accessToken, + TokenType: "Bearer", + ExpiresIn: s.config.JWTExpiration, + User: user.ToSession(), + }, rawRefreshToken, nil +} + +// findOrCreateGoogleUser finds an existing user by Google provider ID or email, +// or creates a new one. +func (s *AuthService) findOrCreateGoogleUser(info *GoogleUserInfo) (*model.Customer, error) { + var user model.Customer + + // Try to find by provider + provider_id + err := s.db.Where("provider = ? AND provider_id = ?", model.ProviderGoogle, info.ID).First(&user).Error + if err == nil { + // Update avatar in case it changed + user.AvatarURL = info.Picture + s.db.Save(&user) + return &user, nil + } + + // Try to find by email (user may have registered locally before) + err = s.db.Where("email = ?", info.Email).First(&user).Error + if err == nil { + // Link Google provider to existing account + user.Provider = model.ProviderGoogle + user.ProviderID = info.ID + user.AvatarURL = info.Picture + user.IsActive = true + s.db.Save(&user) + + // If email has not been verified yet, send email to admin. + if !user.EmailVerified { + baseURL := config.Get().App.BaseURL + if err := s.email.SendNewUserAdminNotification(info.Email, info.Name, baseURL); err != nil { + // Log error but don't fail registration + _ = err + } + } + user.EmailVerified = true + + return &user, nil + } + + // Create new user + newUser := model.Customer{ + Email: info.Email, + FirstName: info.GivenName, + LastName: info.FamilyName, + Provider: model.ProviderGoogle, + ProviderID: info.ID, + AvatarURL: info.Picture, + Role: model.RoleUser, + IsActive: true, + EmailVerified: true, + Lang: "en", + } + + if err := s.db.Create(&newUser).Error; err != nil { + return nil, fmt.Errorf("failed to create user: %w", err) + } + + // If everything succeeded, send email to admin. + if !user.EmailVerified { + baseURL := config.Get().App.BaseURL + if err := s.email.SendNewUserAdminNotification(info.Email, info.Name, baseURL); err != nil { + // Log error but don't fail registration + _ = err + } + } + + return &newUser, nil +} + +// fetchGoogleUserInfo fetches user info from Google using the provided HTTP client +func fetchGoogleUserInfo(client *http.Client) (*GoogleUserInfo, error) { + resp, err := client.Get(googleUserInfoURL) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var userInfo GoogleUserInfo + if err := json.Unmarshal(body, &userInfo); err != nil { + return nil, err + } + + return &userInfo, nil +} diff --git a/app/service/emailService/email.go b/app/service/emailService/email.go new file mode 100644 index 0000000..6855de7 --- /dev/null +++ b/app/service/emailService/email.go @@ -0,0 +1,138 @@ +package emailService + +import ( + "bytes" + "context" + "fmt" + "net/smtp" + "strings" + + "git.ma-al.com/goc_marek/timetracker/app/config" + "git.ma-al.com/goc_marek/timetracker/app/service/langs" + "git.ma-al.com/goc_marek/timetracker/app/templ/emails" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "git.ma-al.com/goc_marek/timetracker/app/view" +) + +// EmailService handles sending emails +type EmailService struct { + config *config.EmailConfig +} + +// NewEmailService creates a new EmailService instance +func NewEmailService() *EmailService { + return &EmailService{ + config: &config.Get().Email, + } +} + +// getLangID returns the language ID from the ISO code using the language service +func getLangID(isoCode string) uint { + if isoCode == "" { + isoCode = "en" + } + + lang, err := langs.LangSrv.GetLanguageByISOCode(isoCode) + if err != nil || lang == nil { + return 1 // Default to English (ID 1) + } + + return uint(lang.ID) +} + +// SendEmail sends an email to the specified recipient +func (s *EmailService) SendEmail(to, subject, body string) error { + if !s.config.Enabled { + return fmt.Errorf("email service is disabled") + } + + // Set up authentication + auth := smtp.PlainAuth("", s.config.SMTPUser, s.config.SMTPPassword, s.config.SMTPHost) + + // Create email headers + headers := make(map[string]string) + headers["From"] = fmt.Sprintf("%s <%s>", s.config.FromName, s.config.FromEmail) + headers["To"] = to + headers["Subject"] = subject + headers["MIME-Version"] = "1.0" + headers["Content-Type"] = "text/html; charset=utf-8" + + // Build email message + var msg strings.Builder + for k, v := range headers { + msg.WriteString(fmt.Sprintf("%s: %s\r\n", k, v)) + } + msg.WriteString("\r\n") + msg.WriteString(body) + + // Send email + addr := fmt.Sprintf("%s:%d", s.config.SMTPHost, s.config.SMTPPort) + if err := smtp.SendMail(addr, auth, s.config.FromEmail, []string{to}, []byte(msg.String())); err != nil { + return fmt.Errorf("failed to send email: %w", err) + } + + return nil +} + +// SendVerificationEmail sends an email verification email +func (s *EmailService) SendVerificationEmail(to, token, baseURL, lang string) error { + // Use default language if not provided + if lang == "" { + lang = "en" + } + verificationURL := fmt.Sprintf("%s/%s/verify-email?token=%s", baseURL, lang, token) + + langID := getLangID(lang) + subject := i18n.T___(langID, "email.email_verification_subject") + body := s.verificationEmailTemplate(to, verificationURL, langID) + + return s.SendEmail(to, subject, body) +} + +// SendPasswordResetEmail sends a password reset email +func (s *EmailService) SendPasswordResetEmail(to, token, baseURL, lang string) error { + // Use default language if not provided + if lang == "" { + lang = "en" + } + resetURL := fmt.Sprintf("%s/%s/reset-password?token=%s", baseURL, lang, token) + + langID := getLangID(lang) + subject := i18n.T___(langID, "email.email_password_reset_subject") + body := s.passwordResetEmailTemplate(to, resetURL, langID) + + return s.SendEmail(to, subject, body) +} + +// SendNewUserAdminNotification sends an email to admin when a new user completes registration +func (s *EmailService) SendNewUserAdminNotification(userEmail, userName, baseURL string) error { + if s.config.AdminEmail == "" { + return nil // No admin email configured + } + + subject := "New User Registration - Repository Assignment Required" + body := s.newUserAdminNotificationTemplate(userEmail, userName, baseURL) + + return s.SendEmail(s.config.AdminEmail, subject, body) +} + +// verificationEmailTemplate returns the HTML template for email verification +func (s *EmailService) verificationEmailTemplate(name, verificationURL string, langID uint) string { + buf := bytes.Buffer{} + emails.EmailVerificationWrapper(view.EmailLayout[view.EmailVerificationData]{LangID: langID, Data: view.EmailVerificationData{VerificationURL: verificationURL}}).Render(context.Background(), &buf) + return buf.String() +} + +// passwordResetEmailTemplate returns the HTML template for password reset +func (s *EmailService) passwordResetEmailTemplate(name, resetURL string, langID uint) string { + buf := bytes.Buffer{} + emails.EmailPasswordResetWrapper(view.EmailLayout[view.EmailPasswordResetData]{LangID: langID, Data: view.EmailPasswordResetData{ResetURL: resetURL}}).Render(context.Background(), &buf) + return buf.String() +} + +// newUserAdminNotificationTemplate returns the HTML template for admin notification +func (s *EmailService) newUserAdminNotificationTemplate(userEmail, userName, baseURL string) string { + buf := bytes.Buffer{} + emails.EmailAdminNotificationWrapper(view.EmailLayout[view.EmailAdminNotificationData]{LangID: 2, Data: view.EmailAdminNotificationData{UserEmail: userEmail, UserName: userName, BaseURL: baseURL}}).Render(context.Background(), &buf) + return buf.String() +} diff --git a/app/service/langs/service.go b/app/service/langs/service.go new file mode 100644 index 0000000..8015723 --- /dev/null +++ b/app/service/langs/service.go @@ -0,0 +1,97 @@ +package langs + +import ( + langs_repo "git.ma-al.com/goc_marek/timetracker/app/langs" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "git.ma-al.com/goc_marek/timetracker/app/utils/nullable" + "git.ma-al.com/goc_marek/timetracker/app/utils/response" + "git.ma-al.com/goc_marek/timetracker/app/view" + "github.com/gofiber/fiber/v3" +) + +type LangService struct { + repo langs_repo.LangsRepo +} + +type LangServiceMessage i18n.I18nTranslation + +const ( + Message_LangsLoaded LangServiceMessage = "langs_loaded" + Message_LangsNotLoaded LangServiceMessage = "langs_not_loaded" + Message_TranslationsOK LangServiceMessage = "translations_loaded" + Message_TranslationsNOK LangServiceMessage = "translations_not_loaded" +) + +var LangSrv *LangService + +func (s *LangService) GetActive(c fiber.Ctx) response.Response[[]view.Language] { + res, err := s.repo.GetActive() + if err != nil { + return response.Make[[]view.Language](c, fiber.StatusBadRequest, nil, nil, i18n.T_(c, response.Message_NOK)) + } + return response.Make(c, fiber.StatusOK, nullable.GetNil(res), nullable.GetNil(len(res)), i18n.T_(c, response.Message_OK)) +} + +// LoadTranslations loads all translations from the database into the cache +func (s *LangService) LoadTranslations() error { + translations, err := s.repo.GetAllTranslations() + if err != nil { + return err + } + return i18n.TransStore.LoadTranslations(translations) +} + +// ReloadTranslations reloads translations from the database into the cache +func (s *LangService) ReloadTranslations() error { + translations, err := s.repo.GetAllTranslations() + if err != nil { + return err + } + return i18n.TransStore.ReloadTranslations(translations) +} + +// GetTranslations returns translations from the cache +func (s *LangService) GetTranslations(c fiber.Ctx, langID uint, scope string, components []string) response.Response[*i18n.TranslationResponse] { + translations, err := i18n.TransStore.GetTranslations(langID, scope, components) + if err != nil { + return response.Make[*i18n.TranslationResponse](c, fiber.StatusBadRequest, nil, nil, i18n.T_(c, Message_TranslationsNOK)) + } + return response.Make(c, fiber.StatusOK, nullable.GetNil(translations), nil, i18n.T_(c, Message_TranslationsOK)) +} + +// GetAllTranslations returns all translations from the cache +func (s *LangService) GetAllTranslationsResponse(c fiber.Ctx) response.Response[*i18n.TranslationResponse] { + translations := i18n.TransStore.GetAllTranslations() + return response.Make(c, fiber.StatusOK, nullable.GetNil(translations), nil, i18n.T_(c, Message_TranslationsOK)) +} + +// ReloadTranslationsResponse returns response after reloading translations +func (s *LangService) ReloadTranslationsResponse(c fiber.Ctx) response.Response[map[string]string] { + err := s.ReloadTranslations() + if err != nil { + return response.Make[map[string]string](c, fiber.StatusInternalServerError, nil, nil, i18n.T_(c, Message_LangsNotLoaded)) + } + result := map[string]string{"status": "success"} + return response.Make(c, fiber.StatusOK, nullable.GetNil(result), nil, i18n.T_(c, Message_LangsLoaded)) +} + +// GetDefaultLanguage returns the default language +func (s *LangService) GetDefaultLanguage() (*view.Language, error) { + return s.repo.GetDefault() +} + +// GetLanguageByISOCode returns a language by its ISO code +func (s *LangService) GetLanguageByISOCode(isoCode string) (*view.Language, error) { + return s.repo.GetByISOCode(isoCode) +} + +// GetLanguageByISOCode returns a language by its ISO code +func (s *LangService) GetLanguageById(id uint) (*view.Language, error) { + return s.repo.GetById(id) +} + +func init() { + LangSrv = &LangService{ + repo: *langs_repo.New(), + } +} diff --git a/app/service/repoService/repo.go b/app/service/repoService/repo.go new file mode 100644 index 0000000..d5abd06 --- /dev/null +++ b/app/service/repoService/repo.go @@ -0,0 +1,335 @@ +package repoService + +import ( + "fmt" + "slices" + + "git.ma-al.com/goc_marek/timetracker/app/db" + "git.ma-al.com/goc_marek/timetracker/app/model" + "git.ma-al.com/goc_marek/timetracker/app/utils/pagination" + "git.ma-al.com/goc_marek/timetracker/app/view" + "gorm.io/gorm" +) + +// type +type RepoService struct { + db *gorm.DB +} + +func New() *RepoService { + return &RepoService{ + db: db.Get(), + } +} + +func (s *RepoService) GetRepositoriesForUser(userID uint) ([]uint, error) { + var repoIDs []uint + + err := s.db. + Table("customer_repo_accesses"). + Where("user_id = ?", userID). + Pluck("repo_id", &repoIDs).Error + if err != nil { + return nil, fmt.Errorf("database error: %w", err) + } + + return repoIDs, nil +} + +func (s *RepoService) UserHasAccessToRepo(userID uint, repoID uint) (bool, error) { + var repositories []uint + var err error + + if repositories, err = s.GetRepositoriesForUser(userID); err != nil { + return false, err + } + + if !slices.Contains(repositories, repoID) { + return false, view.ErrInvalidRepoID + } + + return true, nil +} + +// Extract all repositories assigned to user with specific id +func (s *RepoService) GetYearsForUser(userID uint, repoID uint) ([]uint, error) { + if ok, err := s.UserHasAccessToRepo(userID, repoID); !ok { + return nil, err + } + + years, err := s.GetYears(repoID) + if err != nil { + return nil, fmt.Errorf("database error: %w", err) + } + + return years, nil +} + +func (s *RepoService) GetYears(repo uint) ([]uint, error) { + + var years []uint + + query := ` + WITH bounds AS ( + SELECT + MIN(to_timestamp(tt.created_unix)) AS min_ts, + MAX(to_timestamp(tt.created_unix)) AS max_ts + FROM tracked_time tt + JOIN issue i ON i.id = tt.issue_id + WHERE i.repo_id = ? + AND tt.deleted = false + ) + SELECT + EXTRACT(YEAR FROM y.year_start)::int AS year + FROM bounds + CROSS JOIN LATERAL generate_series( + date_trunc('year', min_ts), + date_trunc('year', max_ts), + interval '1 year' + ) AS y(year_start) + ORDER BY year + ` + + err := db.Get().Raw(query, repo).Find(&years).Error + if err != nil { + return nil, err + } + return years, nil +} + +// Extract all repositories assigned to user with specific id +func (s *RepoService) GetQuartersForUser(userID uint, repoID uint, year uint) ([]model.QuarterData, error) { + if ok, err := s.UserHasAccessToRepo(userID, repoID); !ok { + return nil, err + } + + response, err := s.GetQuarters(repoID, year) + if err != nil { + return nil, fmt.Errorf("database error: %w", err) + } + + return response, nil +} + +func (s *RepoService) GetQuarters(repo uint, year uint) ([]model.QuarterData, error) { + var quarters []model.QuarterData + + query := ` + WITH quarters AS ( + SELECT + make_date(?::int, 1, 1) + (q * interval '3 months') AS quarter_start, + q + 1 AS quarter + FROM generate_series(0, 3) AS q + ), + data AS ( + SELECT + EXTRACT(QUARTER FROM to_timestamp(tt.created_unix)) AS quarter, + SUM(tt.time) / 3600 AS time + FROM tracked_time tt + JOIN issue i ON i.id = tt.issue_id + JOIN repository r ON i.repo_id = r.id + WHERE + EXTRACT(YEAR FROM to_timestamp(tt.created_unix)) = ? + AND r.id = ? + AND tt.deleted = false + GROUP BY EXTRACT(QUARTER FROM to_timestamp(tt.created_unix)) + ) + SELECT + COALESCE(d.time, 0) AS time, + CONCAT(EXTRACT(YEAR FROM q.quarter_start)::int, '_Q', q.quarter) AS quarter + FROM quarters q + LEFT JOIN data d ON d.quarter = q.quarter + ORDER BY q.quarter + ` + + err := db.Get(). + Raw(query, year, year, repo). + Find(&quarters). + Error + if err != nil { + fmt.Printf("err: %v\n", err) + return nil, err + } + + return quarters, nil +} + +func (s *RepoService) GetTotalTimeForQuarter(repo uint, year uint, quarter uint) (float64, error) { + var total float64 + + query := ` + SELECT COALESCE(SUM(tt.time) / 3600, 0) AS total_time + FROM tracked_time tt + JOIN issue i ON i.id = tt.issue_id + WHERE i.repo_id = ? + AND EXTRACT(YEAR FROM to_timestamp(tt.created_unix)) = ? + AND EXTRACT(QUARTER FROM to_timestamp(tt.created_unix)) = ? + AND tt.deleted = false + ` + + err := db.Get().Raw(query, repo, year, quarter).Row().Scan(&total) + if err != nil { + return 0, err + } + + return total, nil +} + +func (s *RepoService) GetTimeTracked(repo uint, year uint, quarter uint, step string) ([]model.DayData, error) { + var days []model.DayData + + // Calculate quarter start and end dates + quarterStartMonth := (quarter-1)*3 + 1 + quarterStart := fmt.Sprintf("%d-%02d-01", year, quarterStartMonth) + var quarterEnd string + switch quarter { + case 1: + quarterEnd = fmt.Sprintf("%d-03-31", year) + case 2: + quarterEnd = fmt.Sprintf("%d-06-30", year) + case 3: + quarterEnd = fmt.Sprintf("%d-09-30", year) + default: + quarterEnd = fmt.Sprintf("%d-12-31", year) + } + + var bucketExpr string + var seriesInterval string + var seriesStart string + var seriesEnd string + + switch step { + case "day": + bucketExpr = "DATE(to_timestamp(tt.created_unix))" + seriesInterval = "1 day" + seriesStart = "p.start_date" + seriesEnd = "p.end_date" + + case "week": + bucketExpr = ` + (p.start_date + + ((DATE(to_timestamp(tt.created_unix)) - p.start_date) / 7) * 7 + )::date` + seriesInterval = "7 days" + seriesStart = "p.start_date" + seriesEnd = "p.end_date" + + case "month": + bucketExpr = "date_trunc('month', to_timestamp(tt.created_unix))::date" + seriesInterval = "1 month" + seriesStart = "date_trunc('month', p.start_date)" + seriesEnd = "date_trunc('month', p.end_date)" + } + + query := fmt.Sprintf(` +WITH params AS ( + SELECT ?::date AS start_date, ?::date AS end_date +), +date_range AS ( + SELECT generate_series( + %s, + %s, + interval '%s' + )::date AS date + FROM params p +), +data AS ( + SELECT + %s AS date, + SUM(tt.time) / 3600 AS time + FROM tracked_time tt + JOIN issue i ON i.id = tt.issue_id + CROSS JOIN params p + WHERE i.repo_id = ? + AND to_timestamp(tt.created_unix) >= p.start_date + AND to_timestamp(tt.created_unix) < p.end_date + interval '1 day' + AND tt.deleted = false + GROUP BY 1 +) +SELECT + TO_CHAR(dr.date, 'YYYY-MM-DD') AS date, + COALESCE(d.time, 0) AS time +FROM date_range dr +LEFT JOIN data d ON d.date = dr.date +ORDER BY dr.date +`, seriesStart, seriesEnd, seriesInterval, bucketExpr) + err := db.Get(). + Raw(query, quarterStart, quarterEnd, repo). + Scan(&days).Error + + if err != nil { + return nil, err + } + + return days, nil +} + +func (s *RepoService) GetRepoData(repoIds []uint) ([]model.Repository, error) { + var repos []model.Repository + + err := db.Get().Model(model.Repository{}).Where("id = ?", repoIds).Find(&repos).Error + if err != nil { + return nil, err + } + return repos, nil +} + +func (s *RepoService) GetIssuesForUser( + userID uint, + repoID uint, + year uint, + quarter uint, + p pagination.Paging, +) (*pagination.Found[view.IssueTimeSummary], error) { + if ok, err := s.UserHasAccessToRepo(userID, repoID); !ok { + return nil, err + } + + return s.GetIssues(repoID, year, quarter, p) +} + +func (s *RepoService) GetIssues( + repoId uint, + year uint, + quarter uint, + p pagination.Paging, +) (*pagination.Found[view.IssueTimeSummary], error) { + + query := db.Get().Debug(). + Table("issue i"). + Select(` + i.id AS issue_id, + i.name AS issue_name, + u.id AS user_id, + upper( + regexp_replace( + regexp_replace(u.full_name, '(\y\w)\w*', '\1', 'g'), + '(\w)', '\1.', 'g' + ) + ) AS initials, + to_timestamp(tt.created_unix)::date AS created_date, + ROUND(SUM(tt.time) / 3600.0, 2) AS total_hours_spent + `). + Joins(`JOIN tracked_time tt ON tt.issue_id = i.id`). + Joins(`JOIN "user" u ON u.id = tt.user_id`). + Where("i.repo_id = ?", repoId). + Where(` + EXTRACT(YEAR FROM to_timestamp(tt.created_unix)) = ? + AND EXTRACT(QUARTER FROM to_timestamp(tt.created_unix)) = ? + `, year, quarter). + Group(` + i.id, + i.name, + u.id, + u.full_name, + created_date + `). + Order("created_date") + + result, err := pagination.Paginate[view.IssueTimeSummary](p, query) + if err != nil { + return nil, err + } + + return &result, nil +} diff --git a/app/templ/emails/emailAdminNotification.templ b/app/templ/emails/emailAdminNotification.templ new file mode 100644 index 0000000..ff0d78f --- /dev/null +++ b/app/templ/emails/emailAdminNotification.templ @@ -0,0 +1,35 @@ +package emails + +import ( + "git.ma-al.com/goc_marek/timetracker/app/templ/layout" + "git.ma-al.com/goc_marek/timetracker/app/view" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" +) + +templ EmailAdminNotificationWrapper(data view.EmailLayout[view.EmailAdminNotificationData]) { + @layout.Base( i18n.T___(data.LangID, "email.email_admin_notification_title")) { +
+ +
+ } +} \ No newline at end of file diff --git a/app/templ/emails/emailAdminNotification_templ.go b/app/templ/emails/emailAdminNotification_templ.go new file mode 100644 index 0000000..7125bf2 --- /dev/null +++ b/app/templ/emails/emailAdminNotification_templ.go @@ -0,0 +1,90 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.1001 +package emails + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "git.ma-al.com/goc_marek/timetracker/app/templ/layout" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "git.ma-al.com/goc_marek/timetracker/app/view" +) + +func EmailAdminNotificationWrapper(data view.EmailLayout[view.EmailAdminNotificationData]) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "

New User Registration

Hello Administrator,

A new user has completed their registration and requires repository access.

User Details:

Name: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(data.Data.UserName) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailAdminNotification.templ`, Line: 21, Col: 70} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "

Email: ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(data.Data.UserEmail) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailAdminNotification.templ`, Line: 22, Col: 72} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "

Please assign the appropriate repositories to this user in the admin panel.

© 2024 Gitea Manager. All rights reserved.

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) + templ_7745c5c3_Err = layout.Base(i18n.T___(data.LangID, "email.email_admin_notification_title")).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/app/templ/emails/emailPasswordReset.templ b/app/templ/emails/emailPasswordReset.templ new file mode 100644 index 0000000..0a59405 --- /dev/null +++ b/app/templ/emails/emailPasswordReset.templ @@ -0,0 +1,34 @@ +package emails + +import ( + "git.ma-al.com/goc_marek/timetracker/app/templ/layout" + "git.ma-al.com/goc_marek/timetracker/app/view" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" +) + +templ EmailPasswordResetWrapper(data view.EmailLayout[view.EmailPasswordResetData]) { + @layout.Base( i18n.T___(data.LangID, "email.email_password_reset_title")) { +
+ +
+ } +} diff --git a/app/templ/emails/emailPasswordReset_templ.go b/app/templ/emails/emailPasswordReset_templ.go new file mode 100644 index 0000000..889721b --- /dev/null +++ b/app/templ/emails/emailPasswordReset_templ.go @@ -0,0 +1,194 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.1001 +package emails + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "git.ma-al.com/goc_marek/timetracker/app/templ/layout" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "git.ma-al.com/goc_marek/timetracker/app/view" +) + +func EmailPasswordResetWrapper(data view.EmailLayout[view.EmailPasswordResetData]) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_greeting")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailPasswordReset.templ`, Line: 14, Col: 73} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_password_reset_message1")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailPasswordReset.templ`, Line: 17, Col: 87} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_or_copy")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailPasswordReset.templ`, Line: 21, Col: 71} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var9 string + templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_warning_title")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailPasswordReset.templ`, Line: 24, Col: 86} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, " ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var10 string + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_password_reset_warning")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailPasswordReset.templ`, Line: 24, Col: 161} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_ignore_reset")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailPasswordReset.templ`, Line: 26, Col: 76} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "

© 2024 Gitea Manager. ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_footer")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailPasswordReset.templ`, Line: 29, Col: 96} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) + templ_7745c5c3_Err = layout.Base(i18n.T___(data.LangID, "email.email_password_reset_title")).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/app/templ/emails/emailVerification.templ b/app/templ/emails/emailVerification.templ new file mode 100644 index 0000000..f4a34f9 --- /dev/null +++ b/app/templ/emails/emailVerification.templ @@ -0,0 +1,34 @@ +package emails + +import ( + "git.ma-al.com/goc_marek/timetracker/app/templ/layout" + "git.ma-al.com/goc_marek/timetracker/app/view" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" +) + +templ EmailVerificationWrapper(data view.EmailLayout[view.EmailVerificationData]) { + @layout.Base( i18n.T___(data.LangID, "email.email_verification_title")) { +
+ +
+ } +} diff --git a/app/templ/emails/emailVerification_templ.go b/app/templ/emails/emailVerification_templ.go new file mode 100644 index 0000000..fa2a2fa --- /dev/null +++ b/app/templ/emails/emailVerification_templ.go @@ -0,0 +1,194 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.1001 +package emails + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "git.ma-al.com/goc_marek/timetracker/app/templ/layout" + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "git.ma-al.com/goc_marek/timetracker/app/view" +) + +func EmailVerificationWrapper(data view.EmailLayout[view.EmailVerificationData]) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_verification_title")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailVerification.templ`, Line: 14, Col: 67} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_greeting")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailVerification.templ`, Line: 17, Col: 56} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_verification_message1")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailVerification.templ`, Line: 18, Col: 69} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_or_copy")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailVerification.templ`, Line: 22, Col: 55} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var10 string + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_verification_note")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailVerification.templ`, Line: 24, Col: 73} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_ignore")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailVerification.templ`, Line: 25, Col: 54} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "

© 2024 Gitea Manager. ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(i18n.T___(data.LangID, "email.email_footer")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/emails/emailVerification.templ`, Line: 28, Col: 81} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) + templ_7745c5c3_Err = layout.Base(i18n.T___(data.LangID, "email.email_verification_title")).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/app/templ/layout/base.templ b/app/templ/layout/base.templ new file mode 100644 index 0000000..7cbdc63 --- /dev/null +++ b/app/templ/layout/base.templ @@ -0,0 +1,83 @@ +package layout + +templ Base(title string) { + + + @head(title) + + { children... } + + +} + +templ head(title string) { + + + + { title } + + +} diff --git a/app/templ/layout/base_templ.go b/app/templ/layout/base_templ.go new file mode 100644 index 0000000..a4428e0 --- /dev/null +++ b/app/templ/layout/base_templ.go @@ -0,0 +1,98 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.1001 +package layout + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Base(title string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = head(title).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +func head(title string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var2 := templ.GetChildren(ctx) + if templ_7745c5c3_Var2 == nil { + templ_7745c5c3_Var2 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `app/templ/layout/base.templ`, Line: 17, Col: 16} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/app/utils/const_data/consts.go b/app/utils/const_data/consts.go new file mode 100644 index 0000000..a411036 --- /dev/null +++ b/app/utils/const_data/consts.go @@ -0,0 +1,4 @@ +package constdata + +// PASSWORD_VALIDATION_REGEX is used by the frontend (JavaScript supports lookaheads). +const PASSWORD_VALIDATION_REGEX = `^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{10,}$` diff --git a/app/utils/i18n/i18n.go b/app/utils/i18n/i18n.go new file mode 100644 index 0000000..8280014 --- /dev/null +++ b/app/utils/i18n/i18n.go @@ -0,0 +1,237 @@ +package i18n + +import ( + "errors" + "fmt" + "html/template" + "strings" + "sync" + + "git.ma-al.com/goc_marek/timetracker/app/model" + "github.com/gofiber/fiber/v3" +) + +type I18nTranslation string + +type TranslationResponse map[uint]map[string]map[string]map[string]string + +var TransStore = newTranslationsStore() + +var ( + ErrLangIsoEmpty = errors.New("lang_id_empty") + ErrScopeEmpty = errors.New("scope_empty") + ErrComponentEmpty = errors.New("component_empty") + ErrKeyEmpty = errors.New("key_empty") + + ErrLangIsoNotFoundInCache = errors.New("lang_id_not_in_cache") + ErrScopeNotFoundInCache = errors.New("scope_not_in_cache") + ErrComponentNotFoundInCache = errors.New("component_not_in_cache") + ErrKeyNotFoundInCache = errors.New("key_invalid_in_cache") +) + +type TranslationsStore struct { + mutex sync.RWMutex + cache TranslationResponse +} + +func newTranslationsStore() *TranslationsStore { + service := &TranslationsStore{ + cache: make(TranslationResponse), + } + + return service +} + +func (s *TranslationsStore) Get(langID uint, scope string, component string, key string) (string, error) { + s.mutex.RLock() + defer s.mutex.RUnlock() + + if langID == 0 { + return "lang_id_empty", ErrLangIsoEmpty + } + + if _, ok := s.cache[langID]; !ok { + return fmt.Sprintf("lang_id_not_in_cache: %d", langID), ErrLangIsoNotFoundInCache + } + + if scope == "" { + return "scope_empty", ErrScopeEmpty + } + + if _, ok := s.cache[langID][scope]; !ok { + return fmt.Sprintf("scope_not_in_cache: %s", scope), ErrScopeNotFoundInCache + } + + if component == "" { + return "component_empty", ErrComponentEmpty + } + + if _, ok := s.cache[langID][scope][component]; !ok { + return fmt.Sprintf("component_not_in_cache: %s", component), ErrComponentNotFoundInCache + } + + if key == "" { + return "key_empty", ErrKeyEmpty + } + + if _, ok := s.cache[langID][scope][component][key]; !ok { + return fmt.Sprintf("key_invalid_in_cache: %s", key), ErrKeyNotFoundInCache + } + + return s.cache[langID][scope][component][key], nil +} +func (s *TranslationsStore) GetTranslations(langID uint, scope string, components []string) (*TranslationResponse, error) { + s.mutex.RLock() + defer s.mutex.RUnlock() + + if langID == 0 { + resp := make(TranslationResponse) + for k, v := range s.cache { + resp[k] = v + } + return &resp, nil + } + + if _, ok := s.cache[langID]; !ok { + return nil, fmt.Errorf("invalid translation arguments") + } + + tr := make(TranslationResponse) + + if scope == "" { + tr[langID] = s.cache[langID] + return &tr, nil + } + + if _, ok := s.cache[langID][scope]; !ok { + return nil, fmt.Errorf("invalid translation arguments") + } + + tr[langID] = make(map[string]map[string]map[string]string) + if len(components) <= 0 { + tr[langID][scope] = s.cache[langID][scope] + return &tr, nil + } + + tr[langID][scope] = make(map[string]map[string]string) + + var invalidComponents []string + for _, component := range components { + if _, ok := s.cache[langID][scope][component]; !ok { + invalidComponents = append(invalidComponents, component) + continue + } + tr[langID][scope][component] = s.cache[langID][scope][component] + } + if len(invalidComponents) > 0 { + return &tr, fmt.Errorf("invalid translation arguments") + } + + return &tr, nil +} + +// GetAllTranslations returns all translations from the cache +func (s *TranslationsStore) GetAllTranslations() *TranslationResponse { + s.mutex.RLock() + defer s.mutex.RUnlock() + + resp := make(TranslationResponse) + for k, v := range s.cache { + resp[k] = v + } + return &resp +} + +func (s *TranslationsStore) LoadTranslations(translations []model.Translation) error { + + s.mutex.Lock() + defer s.mutex.Unlock() + s.cache = make(TranslationResponse) + for _, t := range translations { + lang := uint(t.LangID) + scp := t.Scope.Name + cmp := t.Component.Name + data := "" + if t.Data != nil { + data = *t.Data + } + + if _, ok := s.cache[lang]; !ok { + s.cache[lang] = make(map[string]map[string]map[string]string) + } + if _, ok := s.cache[lang][scp]; !ok { + s.cache[lang][scp] = make(map[string]map[string]string) + } + if _, ok := s.cache[lang][scp][cmp]; !ok { + s.cache[lang][scp][cmp] = make(map[string]string) + } + s.cache[lang][scp][cmp][t.Key] = data + } + return nil +} + +// ReloadTranslations reloads translations from the database +func (s *TranslationsStore) ReloadTranslations(translations []model.Translation) error { + return s.LoadTranslations(translations) +} + +// T_ is meant to be used to translate error messages and other system communicates. +func T_[T ~string](c fiber.Ctx, key T, params ...interface{}) string { + if langID, ok := c.Locals("langID").(uint); ok { + parts := strings.Split(string(key), ".") + + if len(parts) >= 2 { + if trans, err := TransStore.Get(langID, "Backend", parts[0], strings.Join(parts[1:], ".")); err == nil { + return Format(trans, params...) + } + } else { + if trans, err := TransStore.Get(langID, "Backend", "be", parts[0]); err == nil { + return Format(trans, params...) + } + } + } + + return string(key) +} + +// T___ works exactly the same as T_ but uses just language ID instead of the whole context +func T___[T ~string](langId uint, key T, params ...interface{}) string { + parts := strings.Split(string(key), ".") + + if len(parts) >= 2 { + if trans, err := TransStore.Get(langId, "Backend", parts[0], strings.Join(parts[1:], ".")); err == nil { + return Format(trans, params...) + } + } else { + if trans, err := TransStore.Get(langId, "Backend", "be", parts[0]); err == nil { + return Format(trans, params...) + } + } + + return string(key) +} + +func Format(text string, params ...interface{}) string { + text = fmt.Sprintf(text, params...) + return text +} + +// T__ wraps T_ adding a conversion from string to template.HTML +func T__(c fiber.Ctx, key string, params ...interface{}) template.HTML { + return template.HTML(T_(c, key, params...)) +} + +// MapKeyOnTranslationMap is a helper function to map keys on translation map +// this is used to map keys on translation map +// +// example: +// map := map[T]string{} +// MapKeyOnTranslationMap(ctx, map, key1, key2, key3) +func MapKeyOnTranslationMap[T ~string](c fiber.Ctx, m *map[T]string, key ...T) { + if *m == nil { + *m = make(map[T]string) + } + for _, k := range key { + (*m)[k] = T_(c, string(k)) + } +} diff --git a/app/utils/mapper/mapper.go b/app/utils/mapper/mapper.go new file mode 100644 index 0000000..35a0657 --- /dev/null +++ b/app/utils/mapper/mapper.go @@ -0,0 +1,74 @@ +package mapper + +// Package mapper provides utilities to map fields from one struct to another +// by matching field names (case-insensitive). Unmatched fields are left as +// their zero values. + +import ( + "fmt" + "reflect" + "strings" +) + +// Map copies field values from src into dst by matching field names +// (case-insensitive). Fields in dst that have no counterpart in src +// are left at their zero value. +// +// Both dst and src must be pointers to structs. +// Returns an error if the types do not satisfy those constraints. +func Map(dst, src any) error { + dstVal := reflect.ValueOf(dst) + srcVal := reflect.ValueOf(src) + + if dstVal.Kind() != reflect.Ptr || dstVal.Elem().Kind() != reflect.Struct { + return fmt.Errorf("mapper: dst must be a pointer to a struct, got %T", dst) + } + if srcVal.Kind() != reflect.Ptr || srcVal.Elem().Kind() != reflect.Struct { + return fmt.Errorf("mapper: src must be a pointer to a struct, got %T", src) + } + + dstElem := dstVal.Elem() + srcElem := srcVal.Elem() + + // Build a lookup map of src fields: lowercase name -> field value + srcFields := make(map[string]reflect.Value) + for i := 0; i < srcElem.NumField(); i++ { + f := srcElem.Type().Field(i) + if !f.IsExported() { + continue + } + srcFields[strings.ToLower(f.Name)] = srcElem.Field(i) + } + + // Iterate over dst fields and copy matching src values + for i := 0; i < dstElem.NumField(); i++ { + dstField := dstElem.Field(i) + dstType := dstElem.Type().Field(i) + + if !dstType.IsExported() || !dstField.CanSet() { + continue + } + + srcField, ok := srcFields[strings.ToLower(dstType.Name)] + if !ok { + // No matching src field – leave zero value in place + continue + } + + if srcField.Type().AssignableTo(dstField.Type()) { + dstField.Set(srcField) + } else if srcField.Type().ConvertibleTo(dstField.Type()) { + dstField.Set(srcField.Convert(dstField.Type())) + } + // If neither assignable nor convertible, the dst field keeps its zero value + } + + return nil +} + +// MustMap is like Map but panics on error. +func MustMap(dst, src any) { + if err := Map(dst, src); err != nil { + panic(err) + } +} diff --git a/app/utils/mapper/mapper_test.go b/app/utils/mapper/mapper_test.go new file mode 100644 index 0000000..d4abfbf --- /dev/null +++ b/app/utils/mapper/mapper_test.go @@ -0,0 +1,78 @@ +package mapper_test + +import ( + "testing" + + "git.ma-al.com/goc_marek/timetracker/app/utils/mapper" +) + +// --- example structs --- + +type UserInput struct { + Name string + Email string + Age int +} + +type UserRecord struct { + Name string + Email string + Age int + CreatedAt string // not in src → stays "" + Active bool // not in src → stays false +} + +// --- tests --- + +func TestMap_MatchingFields(t *testing.T) { + src := &UserInput{Name: "Alice", Email: "alice@example.com", Age: 30} + dst := &UserRecord{} + + if err := mapper.Map(dst, src); err != nil { + t.Fatalf("unexpected error: %v", err) + } + + if dst.Name != "Alice" { + t.Errorf("Name: want Alice, got %s", dst.Name) + } + if dst.Email != "alice@example.com" { + t.Errorf("Email: want alice@example.com, got %s", dst.Email) + } + if dst.Age != 30 { + t.Errorf("Age: want 30, got %d", dst.Age) + } +} + +func TestMap_UnmatchedFieldsAreZero(t *testing.T) { + src := &UserInput{Name: "Bob"} + dst := &UserRecord{} + + mapper.MustMap(dst, src) + + if dst.CreatedAt != "" { + t.Errorf("CreatedAt: expected empty string, got %q", dst.CreatedAt) + } + if dst.Active != false { + t.Errorf("Active: expected false, got %v", dst.Active) + } +} + +func TestMap_TypeConversion(t *testing.T) { + type Src struct{ Score int32 } + type Dst struct{ Score int64 } + + src := &Src{Score: 99} + dst := &Dst{} + + mapper.MustMap(dst, src) + + if dst.Score != 99 { + t.Errorf("Score: want 99, got %d", dst.Score) + } +} + +func TestMap_InvalidInput(t *testing.T) { + if err := mapper.Map("not a struct", 42); err == nil { + t.Error("expected error for non-struct inputs") + } +} diff --git a/app/utils/nullable/nullable.go b/app/utils/nullable/nullable.go new file mode 100644 index 0000000..b7efef3 --- /dev/null +++ b/app/utils/nullable/nullable.go @@ -0,0 +1,6 @@ +package nullable + +//go:fix inline +func GetNil[T any](in T) *T { + return new(in) +} diff --git a/app/utils/pagination/pagination.go b/app/utils/pagination/pagination.go new file mode 100644 index 0000000..3a4e15e --- /dev/null +++ b/app/utils/pagination/pagination.go @@ -0,0 +1,63 @@ +package pagination + +import ( + "strconv" + + "github.com/gofiber/fiber/v3" + "gorm.io/gorm" +) + +type Paging struct { + Page uint `json:"page_number" example:"5"` + Elements uint `json:"elements_per_page" example:"30"` +} + +func (p Paging) Offset() int { + return int(p.Elements) * int(p.Page-1) +} + +func (p Paging) Limit() int { + return int(p.Elements) +} + +type Found[T any] struct { + Items []T `json:"items,omitempty"` + Count uint `json:"items_count" example:"56"` +} + +func Paginate[T any](paging Paging, stmt *gorm.DB) (Found[T], error) { + var items []T + var count int64 + + base := stmt.Session(&gorm.Session{}) + + countDB := stmt.Session(&gorm.Session{ + NewDB: true, // critical: do NOT reuse statement + }) + + if err := countDB. + Table("(?) as sub", base). + Count(&count).Error; err != nil { + return Found[T]{}, err + } + + err := base. + Offset(paging.Offset()). + Limit(paging.Limit()). + Find(&items). + Error + if err != nil { + return Found[T]{}, err + } + + return Found[T]{ + Items: items, + Count: uint(count), + }, err +} + +func ParsePagination(c *fiber.Ctx) Paging { + pageNum, _ := strconv.ParseInt((*c).Query("p", "1"), 10, 64) + pageSize, _ := strconv.ParseInt((*c).Query("elems", "10"), 10, 64) + return Paging{Page: uint(pageNum), Elements: uint(pageSize)} +} diff --git a/app/utils/response/messages.go b/app/utils/response/messages.go new file mode 100644 index 0000000..761ed0b --- /dev/null +++ b/app/utils/response/messages.go @@ -0,0 +1,10 @@ +package response + +import "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + +type ResponseMessage i18n.I18nTranslation + +const ( + Message_OK ResponseMessage = "message_ok" + Message_NOK ResponseMessage = "message_nok" +) diff --git a/app/utils/response/response.go b/app/utils/response/response.go new file mode 100644 index 0000000..f8cf4dd --- /dev/null +++ b/app/utils/response/response.go @@ -0,0 +1,18 @@ +package response + +import "github.com/gofiber/fiber/v3" + +type Response[T any] struct { + Message string `json:"message,omitempty"` + Items *T `json:"items,omitempty"` + Count *int `json:"count,omitempty"` +} + +func Make[T any](c fiber.Ctx, status int, items *T, count *int, message string) Response[T] { + c.Status(status) + return Response[T]{ + Message: message, + Items: items, + Count: count, + } +} diff --git a/app/utils/version/version.go b/app/utils/version/version.go new file mode 100644 index 0000000..f46d51c --- /dev/null +++ b/app/utils/version/version.go @@ -0,0 +1,136 @@ +package version + +import ( + "fmt" + "os" + "strings" + "time" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/plumbing" +) + +// Version info populated at build time +var ( + Version string // Git tag or commit hash + Commit string // Short commit hash + BuildDate string // Build timestamp +) + +// Info returns version information +type Info struct { + Version string `json:"version"` + Commit string `json:"commit"` + BuildDate string `json:"build_date"` +} + +// GetInfo returns version information +func GetInfo() Info { + v := Info{ + Version: Version, + Commit: Commit, + BuildDate: BuildDate, + } + + // If not set during build, try to get from git + if v.Version == "" || v.Version == "unknown" || v.Version == "(devel)" { + if gitVersion, gitCommit := getGitInfo(); gitVersion != "" { + v.Version = gitVersion + v.Commit = gitCommit + } + } + + // If build date not set, use current time + if v.BuildDate == "" { + v.BuildDate = time.Now().Format(time.RFC3339) + } + + return v +} + +// getGitInfo returns the latest tag or short commit hash and the commit hash +func getGitInfo() (string, string) { + // Get the current working directory + dir, err := os.Getwd() + if err != nil { + return "", "" + } + + // Open the git repository + repo, err := git.PlainOpen(dir) + if err != nil { + return "", "" + } + + // Get the HEAD reference + head, err := repo.Head() + if err != nil { + return "", "" + } + + commitHash := head.Hash().String()[:7] + + // Get all tags + tagIter, err := repo.Tags() + if err != nil { + return commitHash, commitHash + } + + // Get the commit for HEAD + commit, err := repo.CommitObject(head.Hash()) + if err != nil { + return commitHash, commitHash + } + + // Build ancestry map + ancestry := make(map[string]bool) + c := commit + for c != nil { + ancestry[c.Hash.String()] = true + c, _ = c.Parent(0) + } + + // Find the most recent tag that's an ancestor of HEAD + var latestTag string + err = tagIter.ForEach(func(ref *plumbing.Reference) error { + // Get the target commit + targetHash := ref.Hash() + + // Get the target commit + targetCommit, err := repo.CommitObject(targetHash) + if err != nil { + return nil + } + + // Check if this tag is an ancestor of HEAD + checkCommit := targetCommit + for checkCommit != nil { + if ancestry[checkCommit.Hash.String()] { + // Extract tag name (remove refs/tags/ prefix) + tagName := strings.TrimPrefix(ref.Name().String(), "refs/tags/") + if latestTag == "" || tagName > latestTag { + latestTag = tagName + } + return nil + } + checkCommit, _ = checkCommit.Parent(0) + } + return nil + }) + + if err != nil { + return commitHash, commitHash + } + + if latestTag != "" { + return latestTag, commitHash + } + + return commitHash, commitHash +} + +// String returns a formatted version string +func String() string { + info := GetInfo() + return fmt.Sprintf("Version: %s\nCommit: %s\nBuild Date: %s\n", info.Version, info.Commit, info.BuildDate) +} diff --git a/app/view/emails.go b/app/view/emails.go new file mode 100644 index 0000000..c488dc9 --- /dev/null +++ b/app/view/emails.go @@ -0,0 +1,20 @@ +package view + +type EmailLayout[T any] struct { + LangID uint + Data T +} + +type EmailVerificationData struct { + VerificationURL string +} + +type EmailAdminNotificationData struct { + UserName string + UserEmail string + BaseURL string +} + +type EmailPasswordResetData struct { + ResetURL string +} diff --git a/app/view/errors.go b/app/view/errors.go new file mode 100644 index 0000000..5e93820 --- /dev/null +++ b/app/view/errors.go @@ -0,0 +1,166 @@ +package view + +import ( + "errors" + + "git.ma-al.com/goc_marek/timetracker/app/utils/i18n" + "github.com/gofiber/fiber/v3" +) + +var ( + // Typed errors for request validation and authentication + ErrInvalidBody = errors.New("invalid request body") + ErrNotAuthenticated = errors.New("not authenticated") + ErrUserNotFound = errors.New("user not found") + ErrUserInactive = errors.New("user account is inactive") + ErrInvalidToken = errors.New("invalid token") + ErrTokenExpired = errors.New("token has expired") + ErrTokenRequired = errors.New("token is required") + + // Typed errors for logging in and registering + ErrInvalidCredentials = errors.New("invalid email or password") + ErrEmailNotVerified = errors.New("email not verified") + ErrEmailExists = errors.New("email already exists") + ErrFirstLastNameRequired = errors.New("first and last name is required") + ErrEmailRequired = errors.New("email is required") + ErrEmailPasswordRequired = errors.New("email and password are required") + ErrRefreshTokenRequired = errors.New("refresh token is required") + + // Typed errors for password reset + ErrInvalidResetToken = errors.New("invalid reset token") + ErrResetTokenExpired = errors.New("reset token has expired") + ErrPasswordsDoNotMatch = errors.New("passwords do not match") + ErrInvalidPassword = errors.New("password must be at least 8 characters long and contain at least one lowercase letter, one uppercase letter, and one digit") + ErrTokenPasswordRequired = errors.New("token and password are required") + + // Typed errors for verification + ErrInvalidVerificationToken = errors.New("invalid verification token") + ErrVerificationTokenExpired = errors.New("verification token has expired") + + // Typed errors for data extraction + ErrBadRepoIDAttribute = errors.New("invalid repo id attribute") + ErrBadYearAttribute = errors.New("invalid year attribute") + ErrBadQuarterAttribute = errors.New("invalid quarter attribute") + ErrBadPaging = errors.New("invalid paging") + ErrInvalidRepoID = errors.New("repo not accessible") +) + +// Error represents an error with HTTP status code +type Error struct { + Err error + Status int +} + +func (e *Error) Error() string { + return e.Err.Error() +} + +func (e *Error) Unwrap() error { + return e.Err +} + +// NewError creates a new typed error +func NewError(err error, status int) *Error { + return &Error{Err: err, Status: status} +} + +// GetErrorCode returns the error code string for HTTP response mapping +func GetErrorCode(c fiber.Ctx, err error) string { + switch { + case errors.Is(err, ErrInvalidBody): + return i18n.T_(c, "error.err_invalid_body") + case errors.Is(err, ErrInvalidCredentials): + return i18n.T_(c, "error.err_invalid_credentials") + case errors.Is(err, ErrNotAuthenticated): + return i18n.T_(c, "error.err_not_authenticated") + case errors.Is(err, ErrUserNotFound): + return i18n.T_(c, "error.err_user_not_found") + case errors.Is(err, ErrUserInactive): + return i18n.T_(c, "error.err_user_inactive") + case errors.Is(err, ErrEmailNotVerified): + return i18n.T_(c, "error.err_email_not_verified") + case errors.Is(err, ErrEmailExists): + return i18n.T_(c, "error.err_email_exists") + case errors.Is(err, ErrInvalidToken): + return i18n.T_(c, "error.err_invalid_token") + case errors.Is(err, ErrTokenExpired): + return i18n.T_(c, "error.err_token_expired") + case errors.Is(err, ErrFirstLastNameRequired): + return i18n.T_(c, "error.err_first_last_name_required") + case errors.Is(err, ErrEmailRequired): + return i18n.T_(c, "error.err_email_required") + case errors.Is(err, ErrEmailPasswordRequired): + return i18n.T_(c, "error.err_email_password_required") + case errors.Is(err, ErrTokenRequired): + return i18n.T_(c, "error.err_token_required") + case errors.Is(err, ErrRefreshTokenRequired): + return i18n.T_(c, "error.err_refresh_token_required") + + case errors.Is(err, ErrInvalidResetToken): + return i18n.T_(c, "error.err_invalid_reset_token") + case errors.Is(err, ErrResetTokenExpired): + return i18n.T_(c, "error.err_reset_token_expired") + case errors.Is(err, ErrPasswordsDoNotMatch): + return i18n.T_(c, "error.err_passwords_do_not_match") + case errors.Is(err, ErrInvalidPassword): + return i18n.T_(c, "error.err_invalid_password") + case errors.Is(err, ErrTokenPasswordRequired): + return i18n.T_(c, "error.err_token_password_required") + + case errors.Is(err, ErrInvalidVerificationToken): + return i18n.T_(c, "error.err_invalid_verification_token") + case errors.Is(err, ErrVerificationTokenExpired): + return i18n.T_(c, "error.err_verification_token_expired") + + case errors.Is(err, ErrBadRepoIDAttribute): + return i18n.T_(c, "error.err_bad_repo_id_attribute") + case errors.Is(err, ErrBadYearAttribute): + return i18n.T_(c, "error.err_bad_year_attribute") + case errors.Is(err, ErrBadQuarterAttribute): + return i18n.T_(c, "error.err_bad_quarter_attribute") + case errors.Is(err, ErrBadPaging): + return i18n.T_(c, "error.err_bad_paging") + case errors.Is(err, ErrInvalidRepoID): + return i18n.T_(c, "error.err_invalid_repo_id") + + default: + return i18n.T_(c, "error.err_internal_server_error") + } +} + +// GetErrorStatus returns the HTTP status code for the given error +func GetErrorStatus(err error) int { + switch { + case errors.Is(err, ErrInvalidCredentials), + errors.Is(err, ErrNotAuthenticated), + errors.Is(err, ErrInvalidToken), + errors.Is(err, ErrTokenExpired): + return fiber.StatusUnauthorized + case errors.Is(err, ErrInvalidBody), + errors.Is(err, ErrUserNotFound), + errors.Is(err, ErrUserInactive), + errors.Is(err, ErrEmailNotVerified), + errors.Is(err, ErrFirstLastNameRequired), + errors.Is(err, ErrEmailRequired), + errors.Is(err, ErrEmailPasswordRequired), + errors.Is(err, ErrTokenRequired), + errors.Is(err, ErrRefreshTokenRequired), + errors.Is(err, ErrPasswordsDoNotMatch), + errors.Is(err, ErrTokenPasswordRequired), + errors.Is(err, ErrInvalidResetToken), + errors.Is(err, ErrResetTokenExpired), + errors.Is(err, ErrInvalidVerificationToken), + errors.Is(err, ErrVerificationTokenExpired), + errors.Is(err, ErrInvalidPassword), + errors.Is(err, ErrBadRepoIDAttribute), + errors.Is(err, ErrBadYearAttribute), + errors.Is(err, ErrBadQuarterAttribute), + errors.Is(err, ErrBadPaging), + errors.Is(err, ErrInvalidRepoID): + return fiber.StatusBadRequest + case errors.Is(err, ErrEmailExists): + return fiber.StatusConflict + default: + return fiber.StatusInternalServerError + } +} diff --git a/app/view/i18n.go b/app/view/i18n.go new file mode 100644 index 0000000..5f99ff1 --- /dev/null +++ b/app/view/i18n.go @@ -0,0 +1,21 @@ +package view + +import ( + "time" +) + +type Language struct { + ID uint64 `json:"id"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` + DeletedAt *time.Time `json:"deleted_at,omitempty"` + Name string `json:"name"` + ISOCode string `json:"iso_code"` + LangCode string `json:"lang_code"` + DateFormat string `json:"date_format"` + DateFormatShort string `json:"date_format_short"` + RTL bool `json:"rtl"` + IsDefault bool `json:"is_default"` + Active bool `json:"active"` + Flag string `json:"flag"` +} diff --git a/app/view/repo.go b/app/view/repo.go new file mode 100644 index 0000000..f321ea3 --- /dev/null +++ b/app/view/repo.go @@ -0,0 +1,36 @@ +package view + +import ( + "time" + + "git.ma-al.com/goc_marek/timetracker/app/model" + "git.ma-al.com/goc_marek/timetracker/app/utils/pagination" +) + +type RepositoryChartData struct { + Years []uint + Quarters []model.QuarterData + QuartersJSON string + Year uint +} + +type TimeTrackedData struct { + RepoId uint + Year uint + Quarter uint + Step string + TotalTime float64 + DailyData []model.DayData + DailyDataJSON string + Years []uint + IssueSummaries *pagination.Found[IssueTimeSummary] +} + +type IssueTimeSummary struct { + IssueID uint `gorm:"column:issue_id"` + IssueName string `gorm:"column:issue_name"` + UserID uint `gorm:"column:user_id"` + Initials string `gorm:"column:initials"` + CreatedDate time.Time `gorm:"column:created_date"` + TotalHoursSpent float64 `gorm:"column:total_hours_spent"` +} diff --git a/assets/dev.go b/assets/dev.go new file mode 100644 index 0000000..5aec885 --- /dev/null +++ b/assets/dev.go @@ -0,0 +1,16 @@ +//go:build !embed + +package assets + +import ( + "io/fs" + "os" +) + +func FS() fs.FS { + return os.DirFS("assets/public") // <-- dev root matches embedded +} + +func FSDist() fs.FS { + return os.DirFS("assets/public/dist") // <-- dev root matches embedded +} diff --git a/assets/prod.go b/assets/prod.go new file mode 100644 index 0000000..f5dfba0 --- /dev/null +++ b/assets/prod.go @@ -0,0 +1,30 @@ +//go:build embed + +package assets + +import ( + "embed" + "io/fs" +) + +//go:embed all:public +var Embedded embed.FS + +//go:embed all:public/dist +var EmbeddedDist embed.FS + +func FS() fs.FS { + sub, err := fs.Sub(Embedded, "public") + if err != nil { + panic(err) + } + return sub +} + +func FSDist() fs.FS { + sub, err := fs.Sub(EmbeddedDist, "public/dist") + if err != nil { + panic(err) + } + return sub +} diff --git a/assets/public/dist/assets/Alert-BNRo6CMI.js b/assets/public/dist/assets/Alert-BNRo6CMI.js new file mode 100644 index 0000000..89041cb --- /dev/null +++ b/assets/public/dist/assets/Alert-BNRo6CMI.js @@ -0,0 +1 @@ +import{D as e,F as t,G as n,L as r,Q as i,R as a,d as o,f as s,g as c,h as l,m as u,o as d,p as f,wt as p,xt as m,yt as h}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{S as g,i as _,n as v,r as y,t as b,u as x}from"./Icon-Chkiq2IE.js";import{n as S,t as C}from"./Button-jwL-tYHc.js";var w={slots:{root:`relative overflow-hidden w-full rounded-lg p-4 flex gap-2.5`,wrapper:`min-w-0 flex-1 flex flex-col`,title:`text-sm font-medium`,description:`text-sm opacity-90`,icon:`shrink-0 size-5`,avatar:`shrink-0`,avatarSize:`2xl`,actions:`flex flex-wrap gap-1.5 shrink-0`,close:`p-0`},variants:{color:{primary:``,secondary:``,success:``,info:``,warning:``,error:``,neutral:``},variant:{solid:``,outline:``,soft:``,subtle:``},orientation:{horizontal:{root:`items-center`,actions:`items-center`},vertical:{root:`items-start`,actions:`items-start mt-2.5`}},title:{true:{description:`mt-1`}}},compoundVariants:[{color:`primary`,variant:`solid`,class:{root:`bg-primary text-inverted`}},{color:`secondary`,variant:`solid`,class:{root:`bg-secondary text-inverted`}},{color:`success`,variant:`solid`,class:{root:`bg-success text-inverted`}},{color:`info`,variant:`solid`,class:{root:`bg-info text-inverted`}},{color:`warning`,variant:`solid`,class:{root:`bg-warning text-inverted`}},{color:`error`,variant:`solid`,class:{root:`bg-error text-inverted`}},{color:`primary`,variant:`outline`,class:{root:`text-primary ring ring-inset ring-primary/25`}},{color:`secondary`,variant:`outline`,class:{root:`text-secondary ring ring-inset ring-secondary/25`}},{color:`success`,variant:`outline`,class:{root:`text-success ring ring-inset ring-success/25`}},{color:`info`,variant:`outline`,class:{root:`text-info ring ring-inset ring-info/25`}},{color:`warning`,variant:`outline`,class:{root:`text-warning ring ring-inset ring-warning/25`}},{color:`error`,variant:`outline`,class:{root:`text-error ring ring-inset ring-error/25`}},{color:`primary`,variant:`soft`,class:{root:`bg-primary/10 text-primary`}},{color:`secondary`,variant:`soft`,class:{root:`bg-secondary/10 text-secondary`}},{color:`success`,variant:`soft`,class:{root:`bg-success/10 text-success`}},{color:`info`,variant:`soft`,class:{root:`bg-info/10 text-info`}},{color:`warning`,variant:`soft`,class:{root:`bg-warning/10 text-warning`}},{color:`error`,variant:`soft`,class:{root:`bg-error/10 text-error`}},{color:`primary`,variant:`subtle`,class:{root:`bg-primary/10 text-primary ring ring-inset ring-primary/25`}},{color:`secondary`,variant:`subtle`,class:{root:`bg-secondary/10 text-secondary ring ring-inset ring-secondary/25`}},{color:`success`,variant:`subtle`,class:{root:`bg-success/10 text-success ring ring-inset ring-success/25`}},{color:`info`,variant:`subtle`,class:{root:`bg-info/10 text-info ring ring-inset ring-info/25`}},{color:`warning`,variant:`subtle`,class:{root:`bg-warning/10 text-warning ring ring-inset ring-warning/25`}},{color:`error`,variant:`subtle`,class:{root:`bg-error/10 text-error ring ring-inset ring-error/25`}},{color:`neutral`,variant:`solid`,class:{root:`text-inverted bg-inverted`}},{color:`neutral`,variant:`outline`,class:{root:`text-highlighted bg-default ring ring-inset ring-default`}},{color:`neutral`,variant:`soft`,class:{root:`text-highlighted bg-elevated/50`}},{color:`neutral`,variant:`subtle`,class:{root:`text-highlighted bg-elevated/50 ring ring-inset ring-accented`}}],defaultVariants:{color:`primary`,variant:`solid`}},T={__name:`Alert`,props:{as:{type:null,required:!1},title:{type:String,required:!1},description:{type:String,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},orientation:{type:null,required:!1,default:`vertical`},actions:{type:Array,required:!1},close:{type:[Boolean,Object],required:!1},closeIcon:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},emits:[`update:open`],setup(T,{emit:E}){let D=T,O=E,k=n(),{t:A}=x(),j=g(),M=v(`alert`,D),N=o(()=>y({extend:y(w),...j.ui?.alert||{}})({color:D.color,variant:D.variant,orientation:D.orientation,title:!!D.title||!!k.title}));return(n,o)=>(t(),f(h(_),{as:T.as,"data-orientation":T.orientation,"data-slot":`root`,class:m(N.value.root({class:[h(M)?.root,D.class]}))},{default:i(()=>[a(n.$slots,`leading`,{ui:N.value},()=>[T.avatar?(t(),f(S,e({key:0,size:h(M)?.avatarSize||N.value.avatarSize()},T.avatar,{"data-slot":`avatar`,class:N.value.avatar({class:h(M)?.avatar})}),null,16,[`size`,`class`])):T.icon?(t(),f(b,{key:1,name:T.icon,"data-slot":`icon`,class:m(N.value.icon({class:h(M)?.icon}))},null,8,[`name`,`class`])):u(``,!0)]),s(`div`,{"data-slot":`wrapper`,class:m(N.value.wrapper({class:h(M)?.wrapper}))},[T.title||k.title?(t(),l(`div`,{key:0,"data-slot":`title`,class:m(N.value.title({class:h(M)?.title}))},[a(n.$slots,`title`,{},()=>[c(p(T.title),1)])],2)):u(``,!0),T.description||k.description?(t(),l(`div`,{key:1,"data-slot":`description`,class:m(N.value.description({class:h(M)?.description}))},[a(n.$slots,`description`,{},()=>[c(p(T.description),1)])],2)):u(``,!0),T.orientation===`vertical`&&(T.actions?.length||k.actions)?(t(),l(`div`,{key:2,"data-slot":`actions`,class:m(N.value.actions({class:h(M)?.actions}))},[a(n.$slots,`actions`,{},()=>[(t(!0),l(d,null,r(T.actions,(n,r)=>(t(),f(C,e({key:r,size:`xs`},{ref_for:!0},n),null,16))),128))])],2)):u(``,!0)],2),T.orientation===`horizontal`&&(T.actions?.length||k.actions)||T.close?(t(),l(`div`,{key:0,"data-slot":`actions`,class:m(N.value.actions({class:h(M)?.actions,orientation:`horizontal`}))},[T.orientation===`horizontal`&&(T.actions?.length||k.actions)?a(n.$slots,`actions`,{key:0},()=>[(t(!0),l(d,null,r(T.actions,(n,r)=>(t(),f(C,e({key:r,size:`xs`},{ref_for:!0},n),null,16))),128))]):u(``,!0),a(n.$slots,`close`,{ui:N.value},()=>[T.close?(t(),f(C,e({key:0,icon:T.closeIcon||h(j).ui.icons.close,color:`neutral`,variant:`link`,"aria-label":h(A)(`alert.close`)},typeof T.close==`object`?T.close:{},{"data-slot":`close`,class:N.value.close({class:h(M)?.close}),onClick:o[0]||=e=>O(`update:open`,!1)}),null,16,[`icon`,`aria-label`,`class`])):u(``,!0)])],2)):u(``,!0)]),_:3},8,[`as`,`data-orientation`,`class`]))}};export{T as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/Button-jwL-tYHc.js b/assets/public/dist/assets/Button-jwL-tYHc.js new file mode 100644 index 0000000..de6aa12 --- /dev/null +++ b/assets/public/dist/assets/Button-jwL-tYHc.js @@ -0,0 +1 @@ +import{B as e,D as t,E as n,F as r,G as i,I as a,J as o,Q as s,R as c,St as l,W as u,_ as d,_t as f,b as p,bt as m,d as h,g,h as _,ht as v,m as y,o as b,p as x,ut as S,w as C,wt as w,x as T,xt as E,yt as D}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{B as O,G as k,S as A,V as j,W as M,Y as ee,_ as te,a as N,b as P,g as F,i as I,n as L,r as R,t as z,v as ne,x as B,y as re}from"./Icon-Chkiq2IE.js";function V(e){let t=p(),n=Object.keys(t?.type.props??{}).reduce((e,n)=>{let r=(t?.type.props[n]).default;return r!==void 0&&(e[n]=r),e},{}),r=v(e);return h(()=>{let e={},i=t?.vnode.props??{};return Object.keys(i).forEach(t=>{e[m(t)]=i[t]}),Object.keys({...n,...e}).reduce((e,t)=>(r.value[t]!==void 0&&(e[t]=r.value[t]),e),{})})}const ie=Symbol(`nuxt-ui.field-group`);function H(e){let t=C(ie,void 0);return{orientation:h(()=>t?.value.orientation),size:h(()=>e?.size??t?.value.size)}}function U(e){let t=A(),n=h(()=>f(e)),r=h(()=>n.value.icon&&n.value.leading||n.value.icon&&!n.value.trailing||n.value.loading&&!n.value.trailing||!!n.value.leadingIcon);return{isLeading:r,isTrailing:h(()=>n.value.icon&&n.value.trailing||n.value.loading&&n.value.trailing||!!n.value.trailingIcon),leadingIconName:h(()=>n.value.loading?n.value.loadingIcon||t.ui.icons.loading:n.value.leadingIcon||n.value.icon),trailingIconName:h(()=>n.value.loading&&!r.value?n.value.loadingIcon||t.ui.icons.loading:n.value.trailingIcon||n.value.icon)}}const W=Symbol(`nuxt-ui.form-options`),G=Symbol(`nuxt-ui.form-events`),ae=Symbol(`nuxt-ui.form-state`),K=Symbol(`nuxt-ui.form-field`),q=Symbol(`nuxt-ui.input-id`),oe=Symbol(`nuxt-ui.form-inputs`),J=Symbol(`nuxt-ui.form-loading`),se=Symbol(`nuxt-ui.form-errors`);function ce(e,t){let n=C(W,void 0),r=C(G,void 0),i=C(K,void 0),o=C(q,void 0);a(K,void 0),i&&o&&(t?.bind===!1?o.value=void 0:e?.id&&(o.value=e?.id));function s(e,t,n){r&&i&&t&&r.emit({type:e,name:t,eager:n})}function c(){s(`blur`,i?.value.name)}function l(){s(`focus`,i?.value.name)}function u(){s(`change`,i?.value.name)}let d=M(()=>{s(`input`,i?.value.name,!t?.deferInputValidation||i?.value.eagerValidation)},i?.value.validateOnInputDelay??n?.value.validateOnInputDelay??0);return{id:h(()=>e?.id??o?.value),name:h(()=>e?.name??i?.value.name),size:h(()=>e?.size??i?.value.size),color:h(()=>i?.value.error?`error`:e?.color),highlight:h(()=>i?.value.error?!0:e?.highlight),disabled:h(()=>n?.value.disabled||e?.disabled),emitFormBlur:c,emitFormInput:d,emitFormChange:u,emitFormFocus:l,ariaAttrs:h(()=>{if(!i?.value)return;let e=[`error`,`hint`,`description`,`help`].filter(e=>i?.value?.[e]).map(e=>`${i?.value.ariaId}-${e}`)||[],t={"aria-invalid":!!i?.value.error};return e.length>0&&(t[`aria-describedby`]=e.join(` `)),t})}}const Y=Symbol(`nuxt-ui.avatar-group`);function X(e){let t=C(Y,void 0),n=h(()=>e.size??t?.value.size);return a(Y,h(()=>({size:n.value}))),{size:n}}var le={slots:{root:`relative inline-flex items-center justify-center shrink-0`,base:`rounded-full ring ring-bg flex items-center justify-center text-inverted font-medium whitespace-nowrap`},variants:{color:{primary:`bg-primary`,secondary:`bg-secondary`,success:`bg-success`,info:`bg-info`,warning:`bg-warning`,error:`bg-error`,neutral:`bg-inverted`},size:{"3xs":`h-[4px] min-w-[4px] text-[4px]`,"2xs":`h-[5px] min-w-[5px] text-[5px]`,xs:`h-[6px] min-w-[6px] text-[6px]`,sm:`h-[7px] min-w-[7px] text-[7px]`,md:`h-[8px] min-w-[8px] text-[8px]`,lg:`h-[9px] min-w-[9px] text-[9px]`,xl:`h-[10px] min-w-[10px] text-[10px]`,"2xl":`h-[11px] min-w-[11px] text-[11px]`,"3xl":`h-[12px] min-w-[12px] text-[12px]`},position:{"top-right":`top-0 right-0`,"bottom-right":`bottom-0 right-0`,"top-left":`top-0 left-0`,"bottom-left":`bottom-0 left-0`},inset:{false:``},standalone:{false:`absolute`}},compoundVariants:[{position:`top-right`,inset:!1,class:`-translate-y-1/2 translate-x-1/2 transform`},{position:`bottom-right`,inset:!1,class:`translate-y-1/2 translate-x-1/2 transform`},{position:`top-left`,inset:!1,class:`-translate-y-1/2 -translate-x-1/2 transform`},{position:`bottom-left`,inset:!1,class:`translate-y-1/2 -translate-x-1/2 transform`}],defaultVariants:{size:`md`,color:`primary`,position:`top-right`}},Z=Object.assign({inheritAttrs:!1},{__name:`Chip`,props:n({as:{type:null,required:!1},text:{type:[String,Number],required:!1},color:{type:null,required:!1},size:{type:null,required:!1},position:{type:null,required:!1},inset:{type:Boolean,required:!1,default:!1},standalone:{type:Boolean,required:!1,default:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},{show:{type:Boolean,default:!0},showModifiers:{}}),emits:[`update:show`],setup(e,{attrs:t}){let n=e,i=u(e,`show`,{type:Boolean,default:!0}),{size:a}=X(n),o=A(),f=L(`chip`,n),p=h(()=>R({extend:R(le),...o.ui?.chip||{}})({color:n.color,size:a.value,position:n.position,inset:n.inset,standalone:n.standalone}));return(a,o)=>(r(),x(D(I),{as:e.as,"data-slot":`root`,class:E(p.value.root({class:[D(f)?.root,n.class]}))},{default:s(()=>[d(D(N),l(T(t)),{default:s(()=>[c(a.$slots,`default`)]),_:3},16),i.value?(r(),_(`span`,{key:0,"data-slot":`base`,class:E(p.value.base({class:D(f)?.base}))},[c(a.$slots,`content`,{},()=>[g(w(e.text),1)])],2)):y(``,!0)]),_:3},8,[`as`,`class`]))}}),ue={slots:{root:`inline-flex items-center justify-center shrink-0 select-none rounded-full align-middle bg-elevated`,image:`h-full w-full rounded-[inherit] object-cover`,fallback:`font-medium leading-none text-muted truncate`,icon:`text-muted shrink-0`},variants:{size:{"3xs":{root:`size-4 text-[8px]`},"2xs":{root:`size-5 text-[10px]`},xs:{root:`size-6 text-xs`},sm:{root:`size-7 text-sm`},md:{root:`size-8 text-base`},lg:{root:`size-9 text-lg`},xl:{root:`size-10 text-xl`},"2xl":{root:`size-11 text-[22px]`},"3xl":{root:`size-12 text-2xl`}}},defaultVariants:{size:`md`}},Q=Object.assign({inheritAttrs:!1},{__name:`Avatar`,props:{as:{type:null,required:!1},src:{type:String,required:!1},alt:{type:String,required:!1},icon:{type:null,required:!1},text:{type:String,required:!1},size:{type:null,required:!1},chip:{type:[Boolean,Object],required:!1},class:{type:null,required:!1},style:{type:null,required:!1},ui:{type:Object,required:!1}},setup(n,{attrs:i}){let a=n,u=h(()=>typeof a.as==`string`||typeof a.as?.render==`function`?{root:a.as}:B(a.as,{root:`span`})),d=h(()=>a.text||(a.alt||``).split(` `).map(e=>e.charAt(0)).join(``).substring(0,2)),f=A(),p=L(`avatar`,a),{size:m}=X(a),g=h(()=>R({extend:R(ue),...f.ui?.avatar||{}})({size:m.value})),v=h(()=>({"3xs":16,"2xs":20,xs:24,sm:28,md:32,lg:36,xl:40,"2xl":44,"3xl":48})[a.size||`md`]),y=S(!1);o(()=>a.src,()=>{y.value&&=!1});function b(){y.value=!0}return(o,f)=>(r(),x(e(a.chip?Z:D(I)),t({as:u.value.root},a.chip?typeof a.chip==`object`?{inset:!0,...a.chip}:{inset:!0}:{},{"data-slot":`root`,class:g.value.root({class:[D(p)?.root,a.class]}),style:a.style}),{default:s(()=>[n.src&&!y.value?(r(),x(e(u.value.img||D(`img`)),t({key:0,src:n.src,alt:n.alt,width:v.value,height:v.value},i,{"data-slot":`image`,class:g.value.image({class:D(p)?.image}),onError:b}),null,16,[`src`,`alt`,`width`,`height`,`class`])):(r(),x(D(N),l(t({key:1},i)),{default:s(()=>[c(o.$slots,`default`,{},()=>[n.icon?(r(),x(z,{key:0,name:n.icon,"data-slot":`icon`,class:E(g.value.icon({class:D(p)?.icon}))},null,8,[`name`,`class`])):(r(),_(`span`,{key:1,"data-slot":`fallback`,class:E(g.value.fallback({class:D(p)?.fallback}))},w(d.value||`\xA0`),3))])]),_:3},16))]),_:3},16,[`as`,`class`,`style`]))}});const de=`active.activeClass.ariaCurrentValue.as.disabled.download.exact.exactActiveClass.exactHash.exactQuery.external.form.formaction.formenctype.formmethod.formnovalidate.formtarget.href.hreflang.inactiveClass.media.noPrefetch.noRel.onClick.ping.prefetch.prefetchOn.prefetchedClass.referrerpolicy.rel.replace.target.title.to.trailingSlash.type.viewTransition`.split(`.`);function fe(e){let t=Object.keys(e),n=t.filter(e=>e.startsWith(`aria-`)),r=t.filter(e=>e.startsWith(`data-`));return j(e,...de,...n,...r)}function pe(e,t){let n=re(e,t).reduce((e,t)=>(t.type===`added`&&e.add(t.key),e),new Set);return P(Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e))),Object.fromEntries(Object.entries(t).filter(([e])=>!n.has(e))))}var $={__name:`LinkBase`,props:{as:{type:String,required:!1,default:`button`},type:{type:String,required:!1,default:`button`},disabled:{type:Boolean,required:!1},onClick:{type:[Function,Array],required:!1},href:{type:String,required:!1},navigate:{type:Function,required:!1},target:{type:[String,Object,null],required:!1},rel:{type:[String,Object,null],required:!1},active:{type:Boolean,required:!1},isExternal:{type:Boolean,required:!1}},setup(e){let n=e;function i(e){if(n.disabled){e.stopPropagation(),e.preventDefault();return}if(n.onClick)for(let t of Array.isArray(n.onClick)?n.onClick:[n.onClick])t(e);n.href&&n.navigate&&!n.isExternal&&n.navigate(e)}return(n,a)=>(r(),x(D(I),t(e.href?{as:`a`,href:e.disabled?void 0:e.href,"aria-disabled":e.disabled?`true`:void 0,role:e.disabled?`link`:void 0,tabindex:e.disabled?-1:void 0}:e.as===`button`?{as:e.as,type:e.type,disabled:e.disabled}:{as:e.as},{rel:e.rel,target:e.target,onClick:i}),{default:s(()=>[c(n.$slots,`default`)]),_:3},16,[`rel`,`target`]))}},me={base:`focus-visible:outline-primary`,variants:{active:{true:`text-primary`,false:`text-muted`},disabled:{true:`cursor-not-allowed opacity-75`}},compoundVariants:[{active:!1,disabled:!1,class:[`hover:text-default`,`transition-colors`]}]},he=Object.assign({inheritAttrs:!1},{__name:`Link`,props:{as:{type:null,required:!1,default:`button`},href:{type:null,required:!1},external:{type:Boolean,required:!1},target:{type:[String,Object,null],required:!1},rel:{type:[String,Object,null],required:!1},noRel:{type:Boolean,required:!1},type:{type:null,required:!1,default:`button`},disabled:{type:Boolean,required:!1},active:{type:Boolean,required:!1,default:void 0},exact:{type:Boolean,required:!1},exactQuery:{type:[Boolean,String],required:!1},exactHash:{type:Boolean,required:!1},inactiveClass:{type:String,required:!1},custom:{type:Boolean,required:!1},raw:{type:Boolean,required:!1},class:{type:null,required:!1},activeClass:{type:String,required:!1},exactActiveClass:{type:String,required:!1},ariaCurrentValue:{type:String,required:!1,default:`page`},viewTransition:{type:Boolean,required:!1},to:{type:null,required:!1},replace:{type:Boolean,required:!1}},setup(e,{attrs:n}){let i=e,a=ee(),o=A(),u=V(O(i,`as`,`type`,`disabled`,`active`,`exact`,`exactQuery`,`exactHash`,`activeClass`,`inactiveClass`,`to`,`href`,`raw`,`custom`,`class`,`noRel`)),d=h(()=>R({extend:R(me),...B({variants:{active:{true:F(o.ui?.link?.variants?.active?.true,i.activeClass),false:F(o.ui?.link?.variants?.active?.false,i.inactiveClass)}}},o.ui?.link||{})})),f=h(()=>i.to??i.href),p=h(()=>i.external?!0:f.value?typeof f.value==`string`&&ne(f.value,{acceptRelative:!0}):!1),m=h(()=>!!i.target&&i.target!==`_self`),g=h(()=>i.noRel?null:i.rel===void 0?p.value||m.value?`noopener noreferrer`:null:i.rel||null);function v({route:e,isActive:t,isExactActive:n}){if(i.active!==void 0)return i.active;if(!f.value)return!1;if(i.exactQuery===`partial`){if(!pe(e.query,a.query))return!1}else if(i.exactQuery===!0&&!P(e.query,a.query))return!1;return i.exactHash&&e.hash!==a.hash?!1:!!(i.exact&&n||!i.exact&&t)}function y({route:e,isActive:t,isExactActive:n}={}){let r=v({route:e,isActive:t,isExactActive:n});return i.raw?[i.class,r?i.activeClass:i.inactiveClass]:d.value({class:i.class,active:r,disabled:i.disabled})}return(a,o)=>!p.value&&f.value?(r(),x(D(k),t({key:0},D(u),{to:f.value,custom:``}),{default:s(({href:o,navigate:u,route:d,isActive:f,isExactActive:m})=>[e.custom?c(a.$slots,`default`,l(t({key:0},{...n,...e.exact&&m?{"aria-current":i.ariaCurrentValue}:{},as:e.as,type:e.type,disabled:e.disabled,href:o,navigate:u,rel:g.value,target:e.target,isExternal:p.value,active:v({route:d,isActive:f,isExactActive:m})}))):(r(),x($,t({key:1},{...n,...e.exact&&m?{"aria-current":i.ariaCurrentValue}:{},as:e.as,type:e.type,disabled:e.disabled,href:o,navigate:u,rel:g.value,target:e.target,isExternal:p.value},{class:y({route:d,isActive:f,isExactActive:m})}),{default:s(()=>[c(a.$slots,`default`,{active:v({route:d,isActive:f,isExactActive:m})})]),_:2},1040,[`class`]))]),_:3},16,[`to`])):(r(),_(b,{key:1},[e.custom?c(a.$slots,`default`,l(t({key:0},{...n,as:e.as,type:e.type,disabled:e.disabled,href:f.value,rel:g.value,target:e.target,active:e.active??!1,isExternal:p.value}))):(r(),x($,t({key:1},{...n,as:e.as,type:e.type,disabled:e.disabled,href:f.value,rel:g.value,target:e.target,isExternal:p.value},{class:y()}),{default:s(()=>[c(a.$slots,`default`,{active:e.active??!1})]),_:3},16,[`class`]))],64))}}),ge={slots:{base:[`rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75`,`transition-colors`],label:`truncate`,leadingIcon:`shrink-0`,leadingAvatar:`shrink-0`,leadingAvatarSize:``,trailingIcon:`shrink-0`},variants:{fieldGroup:{horizontal:`not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]`,vertical:`not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]`},color:{primary:``,secondary:``,success:``,info:``,warning:``,error:``,neutral:``},variant:{solid:``,outline:``,soft:``,subtle:``,ghost:``,link:``},size:{xs:{base:`px-2 py-1 text-xs gap-1`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`},sm:{base:`px-2.5 py-1.5 text-xs gap-1.5`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`},md:{base:`px-2.5 py-1.5 text-sm gap-1.5`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`},lg:{base:`px-3 py-2 text-sm gap-2`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`},xl:{base:`px-3 py-2 text-base gap-2`,leadingIcon:`size-6`,leadingAvatarSize:`xs`,trailingIcon:`size-6`}},block:{true:{base:`w-full justify-center`,trailingIcon:`ms-auto`}},square:{true:``},leading:{true:``},trailing:{true:``},loading:{true:``},active:{true:{base:``},false:{base:``}}},compoundVariants:[{color:`primary`,variant:`solid`,class:`text-inverted bg-primary hover:bg-primary/75 active:bg-primary/75 disabled:bg-primary aria-disabled:bg-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary`},{color:`secondary`,variant:`solid`,class:`text-inverted bg-secondary hover:bg-secondary/75 active:bg-secondary/75 disabled:bg-secondary aria-disabled:bg-secondary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary`},{color:`success`,variant:`solid`,class:`text-inverted bg-success hover:bg-success/75 active:bg-success/75 disabled:bg-success aria-disabled:bg-success focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success`},{color:`info`,variant:`solid`,class:`text-inverted bg-info hover:bg-info/75 active:bg-info/75 disabled:bg-info aria-disabled:bg-info focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info`},{color:`warning`,variant:`solid`,class:`text-inverted bg-warning hover:bg-warning/75 active:bg-warning/75 disabled:bg-warning aria-disabled:bg-warning focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning`},{color:`error`,variant:`solid`,class:`text-inverted bg-error hover:bg-error/75 active:bg-error/75 disabled:bg-error aria-disabled:bg-error focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-error`},{color:`primary`,variant:`outline`,class:`ring ring-inset ring-primary/50 text-primary hover:bg-primary/10 active:bg-primary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-primary`},{color:`secondary`,variant:`outline`,class:`ring ring-inset ring-secondary/50 text-secondary hover:bg-secondary/10 active:bg-secondary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-secondary`},{color:`success`,variant:`outline`,class:`ring ring-inset ring-success/50 text-success hover:bg-success/10 active:bg-success/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-success`},{color:`info`,variant:`outline`,class:`ring ring-inset ring-info/50 text-info hover:bg-info/10 active:bg-info/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-info`},{color:`warning`,variant:`outline`,class:`ring ring-inset ring-warning/50 text-warning hover:bg-warning/10 active:bg-warning/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-warning`},{color:`error`,variant:`outline`,class:`ring ring-inset ring-error/50 text-error hover:bg-error/10 active:bg-error/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-error`},{color:`primary`,variant:`soft`,class:`text-primary bg-primary/10 hover:bg-primary/15 active:bg-primary/15 focus:outline-none focus-visible:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10`},{color:`secondary`,variant:`soft`,class:`text-secondary bg-secondary/10 hover:bg-secondary/15 active:bg-secondary/15 focus:outline-none focus-visible:bg-secondary/15 disabled:bg-secondary/10 aria-disabled:bg-secondary/10`},{color:`success`,variant:`soft`,class:`text-success bg-success/10 hover:bg-success/15 active:bg-success/15 focus:outline-none focus-visible:bg-success/15 disabled:bg-success/10 aria-disabled:bg-success/10`},{color:`info`,variant:`soft`,class:`text-info bg-info/10 hover:bg-info/15 active:bg-info/15 focus:outline-none focus-visible:bg-info/15 disabled:bg-info/10 aria-disabled:bg-info/10`},{color:`warning`,variant:`soft`,class:`text-warning bg-warning/10 hover:bg-warning/15 active:bg-warning/15 focus:outline-none focus-visible:bg-warning/15 disabled:bg-warning/10 aria-disabled:bg-warning/10`},{color:`error`,variant:`soft`,class:`text-error bg-error/10 hover:bg-error/15 active:bg-error/15 focus:outline-none focus-visible:bg-error/15 disabled:bg-error/10 aria-disabled:bg-error/10`},{color:`primary`,variant:`subtle`,class:`text-primary ring ring-inset ring-primary/25 bg-primary/10 hover:bg-primary/15 active:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary`},{color:`secondary`,variant:`subtle`,class:`text-secondary ring ring-inset ring-secondary/25 bg-secondary/10 hover:bg-secondary/15 active:bg-secondary/15 disabled:bg-secondary/10 aria-disabled:bg-secondary/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-secondary`},{color:`success`,variant:`subtle`,class:`text-success ring ring-inset ring-success/25 bg-success/10 hover:bg-success/15 active:bg-success/15 disabled:bg-success/10 aria-disabled:bg-success/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-success`},{color:`info`,variant:`subtle`,class:`text-info ring ring-inset ring-info/25 bg-info/10 hover:bg-info/15 active:bg-info/15 disabled:bg-info/10 aria-disabled:bg-info/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-info`},{color:`warning`,variant:`subtle`,class:`text-warning ring ring-inset ring-warning/25 bg-warning/10 hover:bg-warning/15 active:bg-warning/15 disabled:bg-warning/10 aria-disabled:bg-warning/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-warning`},{color:`error`,variant:`subtle`,class:`text-error ring ring-inset ring-error/25 bg-error/10 hover:bg-error/15 active:bg-error/15 disabled:bg-error/10 aria-disabled:bg-error/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-error`},{color:`primary`,variant:`ghost`,class:`text-primary hover:bg-primary/10 active:bg-primary/10 focus:outline-none focus-visible:bg-primary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent`},{color:`secondary`,variant:`ghost`,class:`text-secondary hover:bg-secondary/10 active:bg-secondary/10 focus:outline-none focus-visible:bg-secondary/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent`},{color:`success`,variant:`ghost`,class:`text-success hover:bg-success/10 active:bg-success/10 focus:outline-none focus-visible:bg-success/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent`},{color:`info`,variant:`ghost`,class:`text-info hover:bg-info/10 active:bg-info/10 focus:outline-none focus-visible:bg-info/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent`},{color:`warning`,variant:`ghost`,class:`text-warning hover:bg-warning/10 active:bg-warning/10 focus:outline-none focus-visible:bg-warning/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent`},{color:`error`,variant:`ghost`,class:`text-error hover:bg-error/10 active:bg-error/10 focus:outline-none focus-visible:bg-error/10 disabled:bg-transparent aria-disabled:bg-transparent dark:disabled:bg-transparent dark:aria-disabled:bg-transparent`},{color:`primary`,variant:`link`,class:`text-primary hover:text-primary/75 active:text-primary/75 disabled:text-primary aria-disabled:text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary`},{color:`secondary`,variant:`link`,class:`text-secondary hover:text-secondary/75 active:text-secondary/75 disabled:text-secondary aria-disabled:text-secondary focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary`},{color:`success`,variant:`link`,class:`text-success hover:text-success/75 active:text-success/75 disabled:text-success aria-disabled:text-success focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success`},{color:`info`,variant:`link`,class:`text-info hover:text-info/75 active:text-info/75 disabled:text-info aria-disabled:text-info focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info`},{color:`warning`,variant:`link`,class:`text-warning hover:text-warning/75 active:text-warning/75 disabled:text-warning aria-disabled:text-warning focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning`},{color:`error`,variant:`link`,class:`text-error hover:text-error/75 active:text-error/75 disabled:text-error aria-disabled:text-error focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error`},{color:`neutral`,variant:`solid`,class:`text-inverted bg-inverted hover:bg-inverted/90 active:bg-inverted/90 disabled:bg-inverted aria-disabled:bg-inverted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-inverted`},{color:`neutral`,variant:`outline`,class:`ring ring-inset ring-accented text-default bg-default hover:bg-elevated active:bg-elevated disabled:bg-default aria-disabled:bg-default focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted`},{color:`neutral`,variant:`soft`,class:`text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 focus:outline-none focus-visible:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated`},{color:`neutral`,variant:`subtle`,class:`ring ring-inset ring-accented text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted`},{color:`neutral`,variant:`ghost`,class:`text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent`},{color:`neutral`,variant:`link`,class:`text-muted hover:text-default active:text-default disabled:text-muted aria-disabled:text-muted focus:outline-none focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-inverted`},{size:`xs`,square:!0,class:`p-1`},{size:`sm`,square:!0,class:`p-1.5`},{size:`md`,square:!0,class:`p-1.5`},{size:`lg`,square:!0,class:`p-2`},{size:`xl`,square:!0,class:`p-2`},{loading:!0,leading:!0,class:{leadingIcon:`animate-spin`}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:`animate-spin`}}],defaultVariants:{color:`primary`,variant:`solid`,size:`md`}},_e={__name:`Button`,props:{label:{type:String,required:!1},color:{type:null,required:!1},activeColor:{type:null,required:!1},variant:{type:null,required:!1},activeVariant:{type:null,required:!1},size:{type:null,required:!1},square:{type:Boolean,required:!1},block:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1},onClick:{type:[Function,Array],required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1},as:{type:null,required:!1},type:{type:null,required:!1},disabled:{type:Boolean,required:!1},active:{type:Boolean,required:!1},exact:{type:Boolean,required:!1},exactQuery:{type:[Boolean,String],required:!1},exactHash:{type:Boolean,required:!1},inactiveClass:{type:String,required:!1},to:{type:null,required:!1},href:{type:null,required:!1},external:{type:Boolean,required:!1},target:{type:[String,Object,null],required:!1},rel:{type:[String,Object,null],required:!1},noRel:{type:Boolean,required:!1},prefetchedClass:{type:String,required:!1},prefetch:{type:Boolean,required:!1},prefetchOn:{type:[String,Object],required:!1},noPrefetch:{type:Boolean,required:!1},trailingSlash:{type:String,required:!1},activeClass:{type:String,required:!1},exactActiveClass:{type:String,required:!1},ariaCurrentValue:{type:String,required:!1},viewTransition:{type:Boolean,required:!1},replace:{type:Boolean,required:!1}},setup(e){let n=e,a=i(),o=A(),l=L(`button`,n),{orientation:u,size:f}=H(n),p=V(fe(n)),m=S(!1),g=C(J,void 0);async function v(e){m.value=!0;let t=Array.isArray(n.onClick)?n.onClick:[n.onClick];try{await Promise.all(t.map(t=>t?.(e)))}finally{m.value=!1}}let b=h(()=>n.loading||n.loadingAuto&&(m.value||g?.value&&n.type===`submit`)),{isLeading:T,isTrailing:O,leadingIconName:k,trailingIconName:j}=U(h(()=>({...n,loading:b.value}))),M=h(()=>R({extend:R(ge),...B({variants:{active:{true:{base:F(o.ui?.button?.variants?.active?.true?.base,n.activeClass)},false:{base:F(o.ui?.button?.variants?.active?.false?.base,n.inactiveClass)}}}},o.ui?.button||{})})({color:n.color,variant:n.variant,size:f.value,loading:b.value,block:n.block,square:n.square||!a.default&&!n.label,leading:T.value,trailing:O.value,fieldGroup:u.value}));return(i,a)=>(r(),x(he,t({type:e.type,disabled:e.disabled||b.value},D(te)(D(p),[`type`,`disabled`,`onClick`]),{custom:``}),{default:s(({active:a,...o})=>[d($,t(o,{"data-slot":`base`,class:M.value.base({class:[D(l)?.base,n.class],active:a,...a&&e.activeVariant?{variant:e.activeVariant}:{},...a&&e.activeColor?{color:e.activeColor}:{}}),onClick:v}),{default:s(()=>[c(i.$slots,`leading`,{ui:M.value},()=>[D(T)&&D(k)?(r(),x(z,{key:0,name:D(k),"data-slot":`leadingIcon`,class:E(M.value.leadingIcon({class:D(l)?.leadingIcon,active:a}))},null,8,[`name`,`class`])):e.avatar?(r(),x(Q,t({key:1,size:D(l)?.leadingAvatarSize||M.value.leadingAvatarSize()},e.avatar,{"data-slot":`leadingAvatar`,class:M.value.leadingAvatar({class:D(l)?.leadingAvatar,active:a})}),null,16,[`size`,`class`])):y(``,!0)]),c(i.$slots,`default`,{ui:M.value},()=>[e.label!==void 0&&e.label!==null?(r(),_(`span`,{key:0,"data-slot":`label`,class:E(M.value.label({class:D(l)?.label,active:a}))},w(e.label),3)):y(``,!0)]),c(i.$slots,`trailing`,{ui:M.value},()=>[D(O)&&D(j)?(r(),x(z,{key:0,name:D(j),"data-slot":`trailingIcon`,class:E(M.value.trailingIcon({class:D(l)?.trailingIcon,active:a}))},null,8,[`name`,`class`])):y(``,!0)])]),_:2},1040,[`class`])]),_:3},16,[`type`,`disabled`]))}};export{se as a,J as c,q as d,ce as f,V as h,G as i,W as l,H as m,Q as n,K as o,U as p,Z as r,oe as s,_e as t,ae as u}; \ No newline at end of file diff --git a/assets/public/dist/assets/Card-DPC9xXwj.js b/assets/public/dist/assets/Card-DPC9xXwj.js new file mode 100644 index 0000000..29bcae8 --- /dev/null +++ b/assets/public/dist/assets/Card-DPC9xXwj.js @@ -0,0 +1 @@ +import{F as e,G as t,Q as n,R as r,d as i,h as a,m as o,p as s,xt as c,yt as l}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{S as u,i as d,n as f,r as p}from"./Icon-Chkiq2IE.js";var m={slots:{root:`rounded-lg overflow-hidden`,header:`p-4 sm:px-6`,body:`p-4 sm:p-6`,footer:`p-4 sm:px-6`},variants:{variant:{solid:{root:`bg-inverted text-inverted`},outline:{root:`bg-default ring ring-default divide-y divide-default`},soft:{root:`bg-elevated/50 divide-y divide-default`},subtle:{root:`bg-elevated/50 ring ring-default divide-y divide-default`}}},defaultVariants:{variant:`outline`}},h={__name:`Card`,props:{as:{type:null,required:!1},variant:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(h){let g=h,_=t(),v=u(),y=f(`card`,g),b=i(()=>p({extend:p(m),...v.ui?.card||{}})({variant:g.variant}));return(t,i)=>(e(),s(l(d),{as:h.as,"data-slot":`root`,class:c(b.value.root({class:[l(y)?.root,g.class]}))},{default:n(()=>[_.header?(e(),a(`div`,{key:0,"data-slot":`header`,class:c(b.value.header({class:l(y)?.header}))},[r(t.$slots,`header`)],2)):o(``,!0),_.default?(e(),a(`div`,{key:1,"data-slot":`body`,class:c(b.value.body({class:l(y)?.body}))},[r(t.$slots,`default`)],2)):o(``,!0),_.footer?(e(),a(`div`,{key:2,"data-slot":`footer`,class:c(b.value.footer({class:l(y)?.footer}))},[r(t.$slots,`footer`)],2)):o(``,!0)]),_:3},8,[`as`,`class`]))}};export{h as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/Collection-BkGqWqUl.js b/assets/public/dist/assets/Collection-BkGqWqUl.js new file mode 100644 index 0000000..e544adb --- /dev/null +++ b/assets/public/dist/assets/Collection-BkGqWqUl.js @@ -0,0 +1 @@ +import{I as e,J as t,S as n,Y as r,_t as i,d as a,ot as o,ut as s,w as c,y as l}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{E as u,a as d}from"./Icon-Chkiq2IE.js";import{f}from"./usePortal-Zddbph8M.js";function p(e){let t=f({dir:s(`ltr`)});return a(()=>e?.value||t.dir?.value||`ltr`)}function m(e){return a(()=>i(e)?!!u(e)?.closest(`form`):!0)}function h(){let e=s();return{primitiveElement:e,currentElement:a(()=>[`#text`,`#comment`].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:u(e))}}var g=`data-reka-collection-item`;function _(i={}){let{key:u=``,isProvider:f=!1}=i,p=`${u}CollectionProvider`,m;if(f){let t=s(new Map);m={collectionRef:s(),itemMap:t},e(p,m)}else m=c(p);let _=(e=!1)=>{let t=m.collectionRef.value;if(!t)return[];let n=Array.from(t.querySelectorAll(`[${g}]`)),r=Array.from(m.itemMap.value.values()).sort((e,t)=>n.indexOf(e.ref)-n.indexOf(t.ref));return e?r:r.filter(e=>e.ref.dataset.disabled!==``)},v=l({name:`CollectionSlot`,inheritAttrs:!1,setup(e,{slots:r,attrs:i}){let{primitiveElement:a,currentElement:o}=h();return t(o,()=>{m.collectionRef.value=o.value}),()=>n(d,{ref:a,...i},r)}}),y=l({name:`CollectionItem`,inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(e,{slots:t,attrs:i}){let{primitiveElement:a,currentElement:s}=h();return r(t=>{if(s.value){let n=o(s.value);m.itemMap.value.set(n,{ref:s.value,value:e.value}),t(()=>m.itemMap.value.delete(n))}}),()=>n(d,{...i,[g]:``,ref:a},t)}});return{getItems:_,reactiveItems:a(()=>Array.from(m.itemMap.value.values())),itemMapSize:a(()=>m.itemMap.value.size),CollectionSlot:v,CollectionItem:y}}export{p as i,h as n,m as r,_ as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/HomeView-BQahLZXc.js b/assets/public/dist/assets/HomeView-BQahLZXc.js new file mode 100644 index 0000000..28b86e2 --- /dev/null +++ b/assets/public/dist/assets/HomeView-BQahLZXc.js @@ -0,0 +1 @@ +import{t as e}from"./HomeView-CdMOMcn8.js";export{e as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/HomeView-CdMOMcn8.js b/assets/public/dist/assets/HomeView-CdMOMcn8.js new file mode 100644 index 0000000..be3fede --- /dev/null +++ b/assets/public/dist/assets/HomeView-CdMOMcn8.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,g as r,h as i,z as a}from"./vue.runtime.esm-bundler-BM5WPBHd.js";var o=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},s={},c={class:`flex gap-4`};function l(o,s){let l=a(`RouterLink`);return e(),i(`main`,c,[n(l,{class:`bg-(--color-blue-600) dark:bg-(--color-blue-500) px-2 py-1 rounded text-white flex items-center shadow-md`,to:{name:`login`}},{default:t(()=>[...s[0]||=[r(`Login `,-1)]]),_:1}),n(l,{class:`bg-(--color-blue-600) dark:bg-(--color-blue-500) px-2 py-1 rounded text-white flex items-center shadow-md`,to:{name:`register`}},{default:t(()=>[...s[1]||=[r(` Register`,-1)]]),_:1}),n(l,{class:`bg-(--color-blue-600) dark:bg-(--color-blue-500) px-2 py-1 rounded text-white flex items-center shadow-md`,to:{name:`chart`}},{default:t(()=>[...s[2]||=[r(`Chart `,-1)]]),_:1})])}var u=o(s,[[`render`,l]]);export{u as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/Icon-Chkiq2IE.js b/assets/public/dist/assets/Icon-Chkiq2IE.js new file mode 100644 index 0000000..de29122 --- /dev/null +++ b/assets/public/dist/assets/Icon-Chkiq2IE.js @@ -0,0 +1,3 @@ +import{A as e,B as t,C as n,D as r,F as i,I as a,J as o,M as s,N as c,O as l,P as u,S as d,Y as f,_ as p,_t as m,a as h,at as g,b as _,ct as v,d as y,dt as b,et as x,gt as S,ht as ee,l as C,lt as w,nt as te,o as ne,p as T,pt as re,st as ie,t as ae,tt as E,u as oe,ut as D,w as O,y as k,yt as A}from"./vue.runtime.esm-bundler-BM5WPBHd.js";function se(e,t){typeof console<`u`&&(console.warn(`[intlify] `+e),t&&console.warn(t.stack))}var ce=typeof window<`u`,j=(e,t=!1)=>t?Symbol.for(e):Symbol(e),M=(e,t,n)=>N({l:e,k:t,s:n}),N=e=>JSON.stringify(e).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`).replace(/\u0027/g,`\\u0027`),P=e=>typeof e==`number`&&isFinite(e),le=e=>xe(e)===`[object Date]`,F=e=>xe(e)===`[object RegExp]`,ue=e=>U(e)&&Object.keys(e).length===0,I=Object.assign,de=Object.create,L=(e=null)=>de(e),fe,pe=()=>fe||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:L();function me(e){return e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/\//g,`/`).replace(/=/g,`=`)}function he(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(//g,`>`)}function ge(e){return e=e.replace(/(\w+)\s*=\s*"([^"]*)"/g,(e,t,n)=>`${t}="${he(n)}"`),e=e.replace(/(\w+)\s*=\s*'([^']*)'/g,(e,t,n)=>`${t}='${he(n)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(e)&&(e=e.replace(/(\s+)(on)(\w+\s*=)/gi,`$1on$3`)),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEach(t=>{e=e.replace(t,`$1javascript:`)}),e}var _e=Object.prototype.hasOwnProperty;function ve(e,t){return _e.call(e,t)}var R=Array.isArray,z=e=>typeof e==`function`,B=e=>typeof e==`string`,V=e=>typeof e==`boolean`,H=e=>typeof e==`object`&&!!e,ye=e=>H(e)&&z(e.then)&&z(e.catch),be=Object.prototype.toString,xe=e=>be.call(e),U=e=>xe(e)===`[object Object]`,Se=e=>e==null?``:R(e)||U(e)&&e.toString===be?JSON.stringify(e,null,2):String(e);function Ce(e,t=``){return e.reduce((e,n,r)=>r===0?e+n:e+t+n,``)}var we=e=>!H(e)||R(e);function Te(e,t){if(we(e)||we(t))throw Error(`Invalid value`);let n=[{src:e,des:t}];for(;n.length;){let{src:e,des:t}=n.pop();Object.keys(e).forEach(r=>{r!==`__proto__`&&(H(e[r])&&!H(t[r])&&(t[r]=Array.isArray(e[r])?[]:L()),we(t[r])||we(e[r])?t[r]=e[r]:n.push({src:e[r],des:t[r]}))})}}function Ee(e,t,n){return{line:e,column:t,offset:n}}function De(e,t,n){let r={start:e,end:t};return n!=null&&(r.source=n),r}var W={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16};W.EXPECTED_TOKEN,W.INVALID_TOKEN_IN_PLACEHOLDER,W.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,W.UNKNOWN_ESCAPE_SEQUENCE,W.INVALID_UNICODE_ESCAPE_SEQUENCE,W.UNBALANCED_CLOSING_BRACE,W.UNTERMINATED_CLOSING_BRACE,W.EMPTY_PLACEHOLDER,W.NOT_ALLOW_NEST_PLACEHOLDER,W.INVALID_LINKED_FORMAT,W.MUST_HAVE_MESSAGES_IN_PLURAL,W.UNEXPECTED_EMPTY_LINKED_MODIFIER,W.UNEXPECTED_EMPTY_LINKED_KEY,W.UNEXPECTED_LEXICAL_ANALYSIS,W.UNHANDLED_CODEGEN_NODE_TYPE,W.UNHANDLED_MINIFIER_NODE_TYPE;function G(e,t,n={}){let{domain:r,messages:i,args:a}=n,o=e,s=SyntaxError(String(o));return s.code=e,t&&(s.location=t),s.domain=r,s}function Oe(e){throw e}var ke=` `,Ae=`\r`,je=` +`,Me=`\u2028`,Ne=`\u2029`;function Pe(e){let t=e,n=0,r=1,i=1,a=0,o=e=>t[e]===Ae&&t[e+1]===je,s=e=>t[e]===je,c=e=>t[e]===Ne,l=e=>t[e]===Me,u=e=>o(e)||s(e)||c(e)||l(e),d=()=>n,f=()=>r,p=()=>i,m=()=>a,h=e=>o(e)||c(e)||l(e)?je:t[e],g=()=>h(n),_=()=>h(n+a);function v(){return a=0,u(n)&&(r++,i=0),o(n)&&n++,n++,i++,t[n]}function y(){return o(n+a)&&a++,a++,t[n+a]}function b(){n=0,r=1,i=1,a=0}function x(e=0){a=e}function S(){let e=n+a;for(;e!==n;)v();a=0}return{index:d,line:f,column:p,peekOffset:m,charAt:h,currentChar:g,currentPeek:_,next:v,peek:y,reset:b,resetPeek:x,skipToPeek:S}}var Fe=void 0,Ie=`'`,Le=`tokenizer`;function Re(e,t={}){let n=t.location!==!1,r=Pe(e),i=()=>r.index(),a=()=>Ee(r.line(),r.column(),r.index()),o=a(),s=i(),c={currentType:13,offset:s,startLoc:o,endLoc:o,lastType:13,lastOffset:s,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:``},l=()=>c,{onError:u}=t;function d(e,t,r,...i){let a=l();t.column+=r,t.offset+=r,u&&u(G(e,n?De(a.startLoc,t):null,{domain:Le,args:i}))}function f(e,t,r){e.endLoc=a(),e.currentType=t;let i={type:t};return n&&(i.loc=De(e.startLoc,e.endLoc)),r!=null&&(i.value=r),i}let p=e=>f(e,13);function m(e,t){return e.currentChar()===t?(e.next(),t):(d(W.EXPECTED_TOKEN,a(),0,t),``)}function h(e){let t=``;for(;e.currentPeek()===ke||e.currentPeek()===je;)t+=e.currentPeek(),e.peek();return t}function g(e){let t=h(e);return e.skipToPeek(),t}function _(e){if(e===Fe)return!1;let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t===95}function v(e){if(e===Fe)return!1;let t=e.charCodeAt(0);return t>=48&&t<=57}function y(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function b(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=v(e.currentPeek()===`-`?e.peek():e.currentPeek());return e.resetPeek(),r}function x(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=e.currentPeek()===Ie;return e.resetPeek(),r}function S(e,t){let{currentType:n}=t;if(n!==7)return!1;h(e);let r=e.currentPeek()===`.`;return e.resetPeek(),r}function ee(e,t){let{currentType:n}=t;if(n!==8)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function C(e,t){let{currentType:n}=t;if(!(n===7||n===11))return!1;h(e);let r=e.currentPeek()===`:`;return e.resetPeek(),r}function w(e,t){let{currentType:n}=t;if(n!==9)return!1;let r=()=>{let t=e.currentPeek();return t===`{`?_(e.peek()):t===`@`||t===`|`||t===`:`||t===`.`||t===ke||!t?!1:t===je?(e.peek(),r()):ne(e,!1)},i=r();return e.resetPeek(),i}function te(e){h(e);let t=e.currentPeek()===`|`;return e.resetPeek(),t}function ne(e,t=!0){let n=(t=!1,r=``)=>{let i=e.currentPeek();return i===`{`||i===`@`||!i?t:i===`|`?!(r===ke||r===je):i===ke?(e.peek(),n(!0,ke)):i===je?(e.peek(),n(!0,je)):!0},r=n();return t&&e.resetPeek(),r}function T(e,t){let n=e.currentChar();return n===Fe?Fe:t(n)?(e.next(),n):null}function re(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36}function ie(e){return T(e,re)}function ae(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36||t===45}function E(e){return T(e,ae)}function oe(e){let t=e.charCodeAt(0);return t>=48&&t<=57}function D(e){return T(e,oe)}function O(e){let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function k(e){return T(e,O)}function A(e){let t=``,n=``;for(;t=D(e);)n+=t;return n}function se(e){let t=``;for(;;){let n=e.currentChar();if(n===`{`||n===`}`||n===`@`||n===`|`||!n)break;if(n===ke||n===je)if(ne(e))t+=n,e.next();else if(te(e))break;else t+=n,e.next();else t+=n,e.next()}return t}function ce(e){g(e);let t=``,n=``;for(;t=E(e);)n+=t;let r=e.currentChar();if(r&&r!==`}`&&r!==Fe&&r!==ke&&r!==je&&r!==` `){let t=ue(e);return d(W.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n+t),n+t}return e.currentChar()===Fe&&d(W.UNTERMINATED_CLOSING_BRACE,a(),0),n}function j(e){g(e);let t=``;return e.currentChar()===`-`?(e.next(),t+=`-${A(e)}`):t+=A(e),e.currentChar()===Fe&&d(W.UNTERMINATED_CLOSING_BRACE,a(),0),t}function M(e){return e!==Ie&&e!==je}function N(e){g(e),m(e,`'`);let t=``,n=``;for(;t=T(e,M);)t===`\\`?n+=P(e):n+=t;let r=e.currentChar();return r===je||r===Fe?(d(W.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),0),r===je&&(e.next(),m(e,`'`)),n):(m(e,`'`),n)}function P(e){let t=e.currentChar();switch(t){case`\\`:case`'`:return e.next(),`\\${t}`;case`u`:return le(e,t,4);case`U`:return le(e,t,6);default:return d(W.UNKNOWN_ESCAPE_SEQUENCE,a(),0,t),``}}function le(e,t,n){m(e,t);let r=``;for(let i=0;i{let r=e.currentChar();return r===`{`||r===`@`||r===`|`||r===`(`||r===`)`||!r||r===ke?n:(n+=r,e.next(),t(n))};return t(``)}function L(e){g(e);let t=m(e,`|`);return g(e),t}function fe(e,t){let n=null;switch(e.currentChar()){case`{`:return t.braceNest>=1&&d(W.NOT_ALLOW_NEST_PLACEHOLDER,a(),0),e.next(),n=f(t,2,`{`),g(e),t.braceNest++,n;case`}`:return t.braceNest>0&&t.currentType===2&&d(W.EMPTY_PLACEHOLDER,a(),0),e.next(),n=f(t,3,`}`),t.braceNest--,t.braceNest>0&&g(e),t.inLinked&&t.braceNest===0&&(t.inLinked=!1),n;case`@`:return t.braceNest>0&&d(W.UNTERMINATED_CLOSING_BRACE,a(),0),n=pe(e,t)||p(t),t.braceNest=0,n;default:{let r=!0,i=!0,o=!0;if(te(e))return t.braceNest>0&&d(W.UNTERMINATED_CLOSING_BRACE,a(),0),n=f(t,1,L(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(t.currentType===4||t.currentType===5||t.currentType===6))return d(W.UNTERMINATED_CLOSING_BRACE,a(),0),t.braceNest=0,me(e,t);if(r=y(e,t))return n=f(t,4,ce(e)),g(e),n;if(i=b(e,t))return n=f(t,5,j(e)),g(e),n;if(o=x(e,t))return n=f(t,6,N(e)),g(e),n;if(!r&&!i&&!o)return n=f(t,12,ue(e)),d(W.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n.value),g(e),n;break}}return n}function pe(e,t){let{currentType:n}=t,r=null,i=e.currentChar();switch((n===7||n===8||n===11||n===9)&&(i===je||i===ke)&&d(W.INVALID_LINKED_FORMAT,a(),0),i){case`@`:return e.next(),r=f(t,7,`@`),t.inLinked=!0,r;case`.`:return g(e),e.next(),f(t,8,`.`);case`:`:return g(e),e.next(),f(t,9,`:`);default:return te(e)?(r=f(t,1,L(e)),t.braceNest=0,t.inLinked=!1,r):S(e,t)||C(e,t)?(g(e),pe(e,t)):ee(e,t)?(g(e),f(t,11,I(e))):w(e,t)?(g(e),i===`{`?fe(e,t)||r:f(t,10,de(e))):(n===7&&d(W.INVALID_LINKED_FORMAT,a(),0),t.braceNest=0,t.inLinked=!1,me(e,t))}}function me(e,t){let n={type:13};if(t.braceNest>0)return fe(e,t)||p(t);if(t.inLinked)return pe(e,t)||p(t);switch(e.currentChar()){case`{`:return fe(e,t)||p(t);case`}`:return d(W.UNBALANCED_CLOSING_BRACE,a(),0),e.next(),f(t,3,`}`);case`@`:return pe(e,t)||p(t);default:if(te(e))return n=f(t,1,L(e)),t.braceNest=0,t.inLinked=!1,n;if(ne(e))return f(t,0,se(e));break}return n}function he(){let{currentType:e,offset:t,startLoc:n,endLoc:o}=c;return c.lastType=e,c.lastOffset=t,c.lastStartLoc=n,c.lastEndLoc=o,c.offset=i(),c.startLoc=a(),r.currentChar()===Fe?f(c,13):me(r,c)}return{nextToken:he,currentOffset:i,currentPosition:a,context:l}}var ze=`parser`,Be=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function Ve(e,t,n){switch(e){case`\\\\`:return`\\`;case`\\'`:return`'`;default:{let e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):`�`}}}function He(e={}){let t=e.location!==!1,{onError:n}=e;function r(e,r,i,a,...o){let s=e.currentPosition();s.offset+=a,s.column+=a,n&&n(G(r,t?De(i,s):null,{domain:ze,args:o}))}function i(e,n,r){let i={type:e};return t&&(i.start=n,i.end=n,i.loc={start:r,end:r}),i}function a(e,n,r,i){t&&(e.end=n,e.loc&&(e.loc.end=r))}function o(e,t){let n=e.context(),r=i(3,n.offset,n.startLoc);return r.value=t,a(r,e.currentOffset(),e.currentPosition()),r}function s(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(5,n,r);return o.index=parseInt(t,10),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function c(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(4,n,r);return o.key=t,e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function l(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(9,n,r);return o.value=t.replace(Be,Ve),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function u(e){let t=e.nextToken(),n=e.context(),{lastOffset:o,lastStartLoc:s}=n,c=i(8,o,s);return t.type===11?(t.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,0,Ue(t)),c.value=t.value||``,a(c,e.currentOffset(),e.currentPosition()),{node:c}):(r(e,W.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,0),c.value=``,a(c,o,s),{nextConsumeToken:t,node:c})}function d(e,t){let n=e.context(),r=i(7,n.offset,n.startLoc);return r.value=t,a(r,e.currentOffset(),e.currentPosition()),r}function f(e){let t=e.context(),n=i(6,t.offset,t.startLoc),o=e.nextToken();if(o.type===8){let t=u(e);n.modifier=t.node,o=t.nextConsumeToken||e.nextToken()}switch(o.type!==9&&r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(o)),o=e.nextToken(),o.type===2&&(o=e.nextToken()),o.type){case 10:o.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(o)),n.key=d(e,o.value||``);break;case 4:o.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(o)),n.key=c(e,o.value||``);break;case 5:o.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(o)),n.key=s(e,o.value||``);break;case 6:o.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(o)),n.key=l(e,o.value||``);break;default:{r(e,W.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc,0);let s=e.context(),c=i(7,s.offset,s.startLoc);return c.value=``,a(c,s.offset,s.startLoc),n.key=c,a(n,s.offset,s.startLoc),{nextConsumeToken:o,node:n}}}return a(n,e.currentOffset(),e.currentPosition()),{node:n}}function p(e){let t=e.context(),n=i(2,t.currentType===1?e.currentOffset():t.offset,t.currentType===1?t.endLoc:t.startLoc);n.items=[];let u=null;do{let i=u||e.nextToken();switch(u=null,i.type){case 0:i.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(i)),n.items.push(o(e,i.value||``));break;case 5:i.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(i)),n.items.push(s(e,i.value||``));break;case 4:i.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(i)),n.items.push(c(e,i.value||``));break;case 6:i.value??r(e,W.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Ue(i)),n.items.push(l(e,i.value||``));break;case 7:{let t=f(e);n.items.push(t.node),u=t.nextConsumeToken||null;break}}}while(t.currentType!==13&&t.currentType!==1);return a(n,t.currentType===1?t.lastOffset:e.currentOffset(),t.currentType===1?t.lastEndLoc:e.currentPosition()),n}function m(e,t,n,o){let s=e.context(),c=o.items.length===0,l=i(1,t,n);l.cases=[],l.cases.push(o);do{let t=p(e);c||=t.items.length===0,l.cases.push(t)}while(s.currentType!==13);return c&&r(e,W.MUST_HAVE_MESSAGES_IN_PLURAL,n,0),a(l,e.currentOffset(),e.currentPosition()),l}function h(e){let t=e.context(),{offset:n,startLoc:r}=t,i=p(e);return t.currentType===13?i:m(e,n,r,i)}function g(n){let o=Re(n,I({},e)),s=o.context(),c=i(0,s.offset,s.startLoc);return t&&c.loc&&(c.loc.source=n),c.body=h(o),e.onCacheKey&&(c.cacheKey=e.onCacheKey(n)),s.currentType!==13&&r(o,W.UNEXPECTED_LEXICAL_ANALYSIS,s.lastStartLoc,0,n[s.offset]||``),a(c,o.currentOffset(),o.currentPosition()),c}return{parse:g}}function Ue(e){if(e.type===13)return`EOF`;let t=(e.value||``).replace(/\r?\n/gu,`\\n`);return t.length>10?t.slice(0,9)+`…`:t}function We(e,t={}){let n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}function Ge(e,t){for(let n=0;nYe(e)),e}function Ye(e){if(e.items.length===1){let t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{let t=[];for(let n=0;ns;function l(e,t){s.code+=e}function u(e,t=!0){let n=t?i:``;l(a?n+` `.repeat(e):n)}function d(e=!0){let t=++s.indentLevel;e&&u(t)}function f(e=!0){let t=--s.indentLevel;e&&u(t)}function p(){u(s.indentLevel)}return{context:c,push:l,indent:d,deindent:f,newline:p,helper:e=>`_${e}`,needIndent:()=>s.needIndent}}function Qe(e,t){let{helper:n}=e;e.push(`${n(`linked`)}(`),nt(e,t.key),t.modifier?(e.push(`, `),nt(e,t.modifier),e.push(`, _type`)):e.push(`, undefined, _type`),e.push(`)`)}function $e(e,t){let{helper:n,needIndent:r}=e;e.push(`${n(`normalize`)}([`),e.indent(r());let i=t.items.length;for(let n=0;n1){e.push(`${n(`plural`)}([`),e.indent(r());let i=t.cases.length;for(let n=0;n{let n=B(t.mode)?t.mode:`normal`,r=B(t.filename)?t.filename:`message.intl`,i=!!t.sourceMap,a=t.breakLineCode==null?n===`arrow`?`;`:` +`:t.breakLineCode,o=t.needIndent?t.needIndent:n!==`arrow`,s=e.helpers||[],c=Ze(e,{mode:n,filename:r,sourceMap:i,breakLineCode:a,needIndent:o});c.push(n===`normal`?`function __msg__ (ctx) {`:`(ctx) => {`),c.indent(o),s.length>0&&(c.push(`const { ${Ce(s.map(e=>`${e}: _${e}`),`, `)} } = ctx`),c.newline()),c.push(`return `),nt(c,e),c.deindent(o),c.push(`}`),delete e.helpers;let{code:l,map:u}=c.context();return{ast:e,code:l,map:u?u.toJSON():void 0}};function it(e,t={}){let n=I({},t),r=!!n.jit,i=!!n.minify,a=n.optimize==null?!0:n.optimize,o=He(n).parse(e);return r?(a&&Je(o),i&&Xe(o),{ast:o,code:``}):(qe(o,n),rt(o,n))}function at(){typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(pe().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(pe().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function ot(e){return H(e)&>(e)===0&&(ve(e,`b`)||ve(e,`body`))}var st=[`b`,`body`];function ct(e){return Ct(e,st)}var lt=[`c`,`cases`];function ut(e){return Ct(e,lt,[])}var dt=[`s`,`static`];function ft(e){return Ct(e,dt)}var pt=[`i`,`items`];function mt(e){return Ct(e,pt,[])}var ht=[`t`,`type`];function gt(e){return Ct(e,ht)}var _t=[`v`,`value`];function vt(e,t){let n=Ct(e,_t);if(n!=null)return n;throw Tt(t)}var yt=[`m`,`modifier`];function bt(e){return Ct(e,yt)}var xt=[`k`,`key`];function St(e){let t=Ct(e,xt);if(t)return t;throw Tt(6)}function Ct(e,t,n){for(let n=0;nDt(t,e)}function Dt(e,t){let n=ct(t);if(n==null)throw Tt(0);if(gt(n)===1){let t=ut(n);return e.plural(t.reduce((t,n)=>[...t,Ot(e,n)],[]))}else return Ot(e,n)}function Ot(e,t){let n=ft(t);if(n!=null)return e.type===`text`?n:e.normalize([n]);{let n=mt(t).reduce((t,n)=>[...t,kt(e,n)],[]);return e.normalize(n)}}function kt(e,t){let n=gt(t);switch(n){case 3:return vt(t,n);case 9:return vt(t,n);case 4:{let r=t;if(ve(r,`k`)&&r.k)return e.interpolate(e.named(r.k));if(ve(r,`key`)&&r.key)return e.interpolate(e.named(r.key));throw Tt(n)}case 5:{let r=t;if(ve(r,`i`)&&P(r.i))return e.interpolate(e.list(r.i));if(ve(r,`index`)&&P(r.index))return e.interpolate(e.list(r.index));throw Tt(n)}case 6:{let n=t,r=bt(n),i=St(n);return e.linked(kt(e,i),r?kt(e,r):void 0,e.type)}case 7:return vt(t,n);case 8:return vt(t,n);default:throw Error(`unhandled node on format message part: ${n}`)}}var At=e=>e,jt=L();function Mt(e,t={}){let n=!1,r=t.onError||Oe;return t.onError=e=>{n=!0,r(e)},{...it(e,t),detectError:n}}function Nt(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&B(e)){V(t.warnHtmlMessage)&&t.warnHtmlMessage;let n=(t.onCacheKey||At)(e),r=jt[n];if(r)return r;let{ast:i,detectError:a}=Mt(e,{...t,location:!1,jit:!0}),o=Et(i);return a?o:jt[n]=o}else{let t=e.cacheKey;return t?jt[t]||(jt[t]=Et(e)):Et(e)}}var Pt=null;function Ft(e){Pt=e}function It(e,t,n){Pt&&Pt.emit(`i18n:init`,{timestamp:Date.now(),i18n:e,version:t,meta:n})}var Lt=Rt(`function:translate`);function Rt(e){return t=>Pt&&Pt.emit(e,t)}var zt={INVALID_ARGUMENT:17,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_NON_STRING_MESSAGE:20,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23};function Bt(e){return G(e,null,void 0)}zt.INVALID_ARGUMENT,zt.INVALID_DATE_ARGUMENT,zt.INVALID_ISO_DATE_ARGUMENT,zt.NOT_SUPPORT_NON_STRING_MESSAGE,zt.NOT_SUPPORT_LOCALE_PROMISE_VALUE,zt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION,zt.NOT_SUPPORT_LOCALE_TYPE;function Vt(e,t){return t.locale==null?Ut(e.locale):Ut(t.locale)}var Ht;function Ut(e){if(B(e))return e;if(z(e)){if(e.resolvedOnce&&Ht!=null)return Ht;if(e.constructor.name===`Function`){let t=e();if(ye(t))throw Bt(zt.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Ht=t}else throw Bt(zt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Bt(zt.NOT_SUPPORT_LOCALE_TYPE)}function Wt(e,t,n){return[...new Set([n,...R(t)?t:H(t)?Object.keys(t):B(t)?[t]:[n]])]}function Gt(e,t,n){let r=B(n)?n:cn,i=e;i.__localeChainCache||=new Map;let a=i.__localeChainCache.get(r);if(!a){a=[];let e=[n];for(;R(e);)e=Kt(a,e,t);let o=R(t)||!U(t)?t:t.default?t.default:null;e=B(o)?[o]:o,R(e)&&Kt(a,e,!1),i.__localeChainCache.set(r,a)}return a}function Kt(e,t,n){let r=!0;for(let i=0;i{o===void 0?o=s:o+=s},f[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},f[2]=()=>{f[0](),i++},f[3]=()=>{if(i>0)i--,r=4,f[0]();else{if(i=0,o===void 0||(o=en(o),o===!1))return!1;f[1]()}};function p(){let t=e[n+1];if(r===5&&t===`'`||r===6&&t===`"`)return n++,s=`\\`+t,f[0](),!0}for(;r!==null;)if(n++,a=e[n],!(a===`\\`&&p())){if(c=$t(a),d=Yt[r],l=d[c]||d.l||8,l===8||(r=l[0],l[1]!==void 0&&(u=f[l[1]],u&&(s=a,u()===!1))))return;if(r===7)return t}}var nn=new Map;function rn(e,t){return H(e)?e[t]:null}function an(e,t){if(!H(e))return null;let n=nn.get(t);if(n||(n=tn(t),n&&nn.set(t,n)),!n)return null;let r=n.length,i=e,a=0;for(;a`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function un(){return{upper:(e,t)=>t===`text`&&B(e)?e.toUpperCase():t===`vnode`&&H(e)&&`__v_isVNode`in e?e.children.toUpperCase():e,lower:(e,t)=>t===`text`&&B(e)?e.toLowerCase():t===`vnode`&&H(e)&&`__v_isVNode`in e?e.children.toLowerCase():e,capitalize:(e,t)=>t===`text`&&B(e)?ln(e):t===`vnode`&&H(e)&&`__v_isVNode`in e?ln(e.children):e}}var dn;function fn(e){dn=e}var pn;function mn(e){pn=e}var hn;function gn(e){hn=e}var _n=null,vn=()=>_n,yn=null,bn=e=>{yn=e},xn=()=>yn,Sn=0;function Cn(e={}){let t=z(e.onWarn)?e.onWarn:se,n=B(e.version)?e.version:sn,r=B(e.locale)||z(e.locale)?e.locale:cn,i=z(r)?cn:r,a=R(e.fallbackLocale)||U(e.fallbackLocale)||B(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,o=U(e.messages)?e.messages:wn(i),s=U(e.datetimeFormats)?e.datetimeFormats:wn(i),c=U(e.numberFormats)?e.numberFormats:wn(i),l=I(L(),e.modifiers,un()),u=e.pluralRules||L(),d=z(e.missing)?e.missing:null,f=V(e.missingWarn)||F(e.missingWarn)?e.missingWarn:!0,p=V(e.fallbackWarn)||F(e.fallbackWarn)?e.fallbackWarn:!0,m=!!e.fallbackFormat,h=!!e.unresolving,g=z(e.postTranslation)?e.postTranslation:null,_=U(e.processor)?e.processor:null,v=V(e.warnHtmlMessage)?e.warnHtmlMessage:!0,y=!!e.escapeParameter,b=z(e.messageCompiler)?e.messageCompiler:dn,x=z(e.messageResolver)?e.messageResolver:pn||rn,S=z(e.localeFallbacker)?e.localeFallbacker:hn||Wt,ee=H(e.fallbackContext)?e.fallbackContext:void 0,C=e,w=H(C.__datetimeFormatters)?C.__datetimeFormatters:new Map,te=H(C.__numberFormatters)?C.__numberFormatters:new Map,ne=H(C.__meta)?C.__meta:{};Sn++;let T={version:n,cid:Sn,locale:r,fallbackLocale:a,messages:o,modifiers:l,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:p,fallbackFormat:m,unresolving:h,postTranslation:g,processor:_,warnHtmlMessage:v,escapeParameter:y,messageCompiler:b,messageResolver:x,localeFallbacker:S,fallbackContext:ee,onWarn:t,__meta:ne};return T.datetimeFormats=s,T.numberFormats=c,T.__datetimeFormatters=w,T.__numberFormatters=te,__INTLIFY_PROD_DEVTOOLS__&&It(T,n,ne),T}var wn=e=>({[e]:L()});function Tn(e,t,n,r,i){let{missing:a,onWarn:o}=e;if(a!==null){let r=a(e,n,t,i);return B(r)?r:t}else return t}function En(e,t,n){let r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function Dn(e,t){return e===t?!1:e.split(`-`)[0]===t.split(`-`)[0]}function On(e,t){let n=t.indexOf(e);if(n===-1)return!1;for(let r=n+1;r{jn.includes(e)?o[e]=n[e]:a[e]=n[e]}),B(r)?a.locale=r:U(r)&&(o=r),U(i)&&(o=i),[a.key||``,s,a,o]}function Nn(e,t,n){let r=e;for(let e in n){let n=`${t}__${e}`;r.__datetimeFormatters.has(n)&&r.__datetimeFormatters.delete(n)}}function Pn(e,...t){let{numberFormats:n,unresolving:r,fallbackLocale:i,onWarn:a,localeFallbacker:o}=e,{__numberFormatters:s}=e,[c,l,u,d]=In(...t),f=V(u.missingWarn)?u.missingWarn:e.missingWarn;V(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;let p=!!u.part,m=Vt(e,u),h=o(e,i,m);if(!B(c)||c===``)return new Intl.NumberFormat(m,d).format(l);let g={},_,v=null;for(let t=0;t{Fn.includes(e)?o[e]=n[e]:a[e]=n[e]}),B(r)?a.locale=r:U(r)&&(o=r),U(i)&&(o=i),[a.key||``,s,a,o]}function Ln(e,t,n){let r=e;for(let e in n){let n=`${t}__${e}`;r.__numberFormatters.has(n)&&r.__numberFormatters.delete(n)}}var Rn=e=>e,zn=e=>``,Bn=`text`,Vn=e=>e.length===0?``:Ce(e),Hn=Se;function Un(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function Wn(e){let t=P(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(P(e.named.count)||P(e.named.n))?P(e.named.count)?e.named.count:P(e.named.n)?e.named.n:t:t}function Gn(e,t){t.count||=e,t.n||=e}function Kn(e={}){let t=e.locale,n=Wn(e),r=H(e.pluralRules)&&B(t)&&z(e.pluralRules[t])?e.pluralRules[t]:Un,i=H(e.pluralRules)&&B(t)&&z(e.pluralRules[t])?Un:void 0,a=e=>e[r(n,e.length,i)],o=e.list||[],s=e=>o[e],c=e.named||L();P(e.pluralIndex)&&Gn(n,c);let l=e=>c[e];function u(t,n){return(z(e.messages)?e.messages(t,!!n):H(e.messages)?e.messages[t]:!1)||(e.parent?e.parent.message(t):zn)}let d=t=>e.modifiers?e.modifiers[t]:Rn,f=U(e.processor)&&z(e.processor.normalize)?e.processor.normalize:Vn,p=U(e.processor)&&z(e.processor.interpolate)?e.processor.interpolate:Hn,m={list:s,named:l,plural:a,linked:(e,...t)=>{let[n,r]=t,i=`text`,a=``;t.length===1?H(n)?(a=n.modifier||a,i=n.type||i):B(n)&&(a=n||a):t.length===2&&(B(n)&&(a=n||a),B(r)&&(i=r||i));let o=u(e,!0)(m),s=i===`vnode`&&R(o)&&a?o[0]:o;return a?d(a)(s,i):s},message:u,type:U(e.processor)&&B(e.processor.type)?e.processor.type:Bn,interpolate:p,normalize:f,values:I(L(),o,c)};return m}var qn=()=>``,Jn=e=>z(e);function Yn(e,...t){let{fallbackFormat:n,postTranslation:r,unresolving:i,messageCompiler:a,fallbackLocale:o,messages:s}=e,[c,l]=er(...t),u=V(l.missingWarn)?l.missingWarn:e.missingWarn,d=V(l.fallbackWarn)?l.fallbackWarn:e.fallbackWarn,f=V(l.escapeParameter)?l.escapeParameter:e.escapeParameter,p=!!l.resolvedMessage,m=B(l.default)||V(l.default)?V(l.default)?a?c:()=>c:l.default:n?a?c:()=>c:null,h=n||m!=null&&(B(m)||z(m)),g=Vt(e,l);f&&Xn(l);let[_,v,y]=p?[c,g,s[g]||L()]:Zn(e,c,g,o,d,u),b=_,x=c;if(!p&&!(B(b)||ot(b)||Jn(b))&&h&&(b=m,x=b),!p&&(!(B(b)||ot(b)||Jn(b))||!B(v)))return i?-1:c;let S=!1,ee=Jn(b)?b:Qn(e,c,v,b,x,()=>{S=!0});if(S)return b;let C=$n(e,ee,Kn(nr(e,v,y,l))),w=r?r(C,c):C;if(f&&B(w)&&(w=ge(w)),__INTLIFY_PROD_DEVTOOLS__){let t={timestamp:Date.now(),key:B(c)?c:Jn(b)?b.key:``,locale:v||(Jn(b)?b.locale:``),format:B(b)?b:Jn(b)?b.source:``,message:w};t.meta=I({},e.__meta,vn()||{}),Lt(t)}return w}function Xn(e){R(e.list)?e.list=e.list.map(e=>B(e)?me(e):e):H(e.named)&&Object.keys(e.named).forEach(t=>{B(e.named[t])&&(e.named[t]=me(e.named[t]))})}function Zn(e,t,n,r,i,a){let{messages:o,onWarn:s,messageResolver:c,localeFallbacker:l}=e,u=l(e,r,n),d=L(),f,p=null;for(let n=0;nr);return e.locale=n,e.key=t,e}let c=o(r,tr(e,n,i,r,s,a));return c.locale=n,c.key=t,c.source=r,c}function $n(e,t,n){return t(n)}function er(...e){let[t,n,r]=e,i=L();if(!B(t)&&!P(t)&&!Jn(t)&&!ot(t))throw Bt(zt.INVALID_ARGUMENT);let a=P(t)?String(t):(Jn(t),t);return P(n)?i.plural=n:B(n)?i.default=n:U(n)&&!ue(n)?i.named=n:R(n)&&(i.list=n),P(r)?i.plural=r:B(r)?i.default=r:U(r)&&I(i,r),[a,i]}function tr(e,t,n,r,i,a){return{locale:t,key:n,warnHtmlMessage:i,onError:e=>{throw a&&a(e),e},onCacheKey:e=>M(t,n,e)}}function nr(e,t,n,r){let{modifiers:i,pluralRules:a,messageResolver:o,fallbackLocale:s,fallbackWarn:c,missingWarn:l,fallbackContext:u}=e,d={locale:t,modifiers:i,pluralRules:a,messages:(r,i)=>{let a=o(n,r);if(a==null&&(u||i)){let[,,n]=Zn(u||e,r,t,s,c,l);a=o(n,r)}if(B(a)||ot(a)){let n=!1,i=Qn(e,r,t,a,r,()=>{n=!0});return n?qn:i}else if(Jn(a))return a;else return qn}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),P(r.plural)&&(d.pluralIndex=r.plural),d}at();var rr=`11.2.8`;function ir(){typeof __VUE_I18N_FULL_INSTALL__!=`boolean`&&(pe().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!=`boolean`&&(pe().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(pe().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(pe().__INTLIFY_PROD_DEVTOOLS__=!1)}var K={UNEXPECTED_RETURN_TYPE:24,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:30,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_COMPATIBLE_LEGACY_VUE_I18N:33,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function ar(e,...t){return G(e,null,void 0)}K.UNEXPECTED_RETURN_TYPE,K.INVALID_ARGUMENT,K.MUST_BE_CALL_SETUP_TOP,K.NOT_INSTALLED,K.UNEXPECTED_ERROR,K.REQUIRED_VALUE,K.INVALID_VALUE,K.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN,K.NOT_INSTALLED_WITH_PROVIDE,K.NOT_COMPATIBLE_LEGACY_VUE_I18N,K.NOT_AVAILABLE_COMPOSITION_IN_LEGACY;var or=j(`__translateVNode`),sr=j(`__datetimeParts`),cr=j(`__numberParts`),lr=j(`__setPluralRules`);j(`__intlifyMeta`);var ur=j(`__injectWithOption`),dr=j(`__dispose`),fr={FALLBACK_TO_ROOT:8,NOT_FOUND_PARENT_SCOPE:9,IGNORE_OBJ_FLATTEN:10,DEPRECATE_LEGACY_MODE:11,DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE:12,DUPLICATE_USE_I18N_CALLING:13};fr.FALLBACK_TO_ROOT,fr.NOT_FOUND_PARENT_SCOPE,fr.IGNORE_OBJ_FLATTEN,fr.DEPRECATE_LEGACY_MODE,fr.DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE,fr.DUPLICATE_USE_I18N_CALLING;function pr(e){if(!H(e)||ot(e))return e;for(let t in e)if(ve(e,t))if(!t.includes(`.`))H(e[t])&&pr(e[t]);else{let n=t.split(`.`),r=n.length-1,i=e,a=!1;for(let e=0;e{if(`locale`in e&&`resource`in e){let{locale:t,resource:n}=e;t?(o[t]=o[t]||L(),Te(n,o[t])):Te(n,o)}else B(e)&&Te(JSON.parse(e),o)}),i==null&&a)for(let e in o)ve(o,e)&&pr(o[e]);return o}function hr(e){return e.type}function gr(e,t,n){let r=H(t.messages)?t.messages:L();`__i18nGlobal`in n&&(r=mr(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));let i=Object.keys(r);if(i.length&&i.forEach(t=>{e.mergeLocaleMessage(t,r[t])}),H(t.datetimeFormats)){let n=Object.keys(t.datetimeFormats);n.length&&n.forEach(n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])})}if(H(t.numberFormats)){let n=Object.keys(t.numberFormats);n.length&&n.forEach(n=>{e.mergeNumberFormat(n,t.numberFormats[n])})}}function _r(e){return p(C,null,e,0)}function vr(){let e=`currentInstance`;return e in ae?ae[e]:_()}var yr=()=>[],br=()=>!1,xr=0;function Sr(e){return((t,n,r,i)=>e(n,r,vr()||void 0,i))}function Cr(e={}){let{__root:t,__injectWithOption:n}=e,r=t===void 0,i=e.flatJson,a=ce?D:re,s=V(e.inheritLocale)?e.inheritLocale:!0,c=a(t&&s?t.locale.value:B(e.locale)?e.locale:cn),l=a(t&&s?t.fallbackLocale.value:B(e.fallbackLocale)||R(e.fallbackLocale)||U(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),u=a(mr(c.value,e)),d=a(U(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),f=a(U(e.numberFormats)?e.numberFormats:{[c.value]:{}}),p=t?t.missingWarn:V(e.missingWarn)||F(e.missingWarn)?e.missingWarn:!0,m=t?t.fallbackWarn:V(e.fallbackWarn)||F(e.fallbackWarn)?e.fallbackWarn:!0,h=t?t.fallbackRoot:V(e.fallbackRoot)?e.fallbackRoot:!0,g=!!e.fallbackFormat,_=z(e.missing)?e.missing:null,v=z(e.missing)?Sr(e.missing):null,b=z(e.postTranslation)?e.postTranslation:null,x=t?t.warnHtmlMessage:V(e.warnHtmlMessage)?e.warnHtmlMessage:!0,S=!!e.escapeParameter,ee=t?t.modifiers:U(e.modifiers)?e.modifiers:{},C=e.pluralRules||t&&t.pluralRules,w;w=(()=>{r&&bn(null);let t={version:rr,locale:c.value,fallbackLocale:l.value,messages:u.value,modifiers:ee,pluralRules:C,missing:v===null?void 0:v,missingWarn:p,fallbackWarn:m,fallbackFormat:g,unresolving:!0,postTranslation:b===null?void 0:b,warnHtmlMessage:x,escapeParameter:S,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:`vue`}};t.datetimeFormats=d.value,t.numberFormats=f.value,t.__datetimeFormatters=U(w)?w.__datetimeFormatters:void 0,t.__numberFormatters=U(w)?w.__numberFormatters:void 0;let n=Cn(t);return r&&bn(n),n})(),En(w,c.value,l.value);function te(){return[c.value,l.value,u.value,d.value,f.value]}let ne=y({get:()=>c.value,set:e=>{w.locale=e,c.value=e}}),T=y({get:()=>l.value,set:e=>{w.fallbackLocale=e,l.value=e,En(w,c.value,e)}}),ie=y(()=>u.value),ae=y(()=>d.value),E=y(()=>f.value);function oe(){return z(b)?b:null}function O(e){b=e,w.postTranslation=e}function k(){return _}function A(e){e!==null&&(v=Sr(e)),_=e,w.missing=v}let se=(e,n,i,a,o,s)=>{te();let c;try{__INTLIFY_PROD_DEVTOOLS__,r||(w.fallbackContext=t?xn():void 0),c=e(w)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(w.fallbackContext=void 0)}if(i!==`translate exists`&&P(c)&&c===-1||i===`translate exists`&&!c){let[e,r]=n();return t&&h?a(t):o(e)}else if(s(c))return c;else throw ar(K.UNEXPECTED_RETURN_TYPE)};function j(...e){return se(t=>Reflect.apply(Yn,null,[t,...e]),()=>er(...e),`translate`,t=>Reflect.apply(t.t,t,[...e]),e=>e,e=>B(e))}function M(...e){let[t,n,r]=e;if(r&&!H(r))throw ar(K.INVALID_ARGUMENT);return j(t,n,I({resolvedMessage:!0},r||{}))}function N(...e){return se(t=>Reflect.apply(An,null,[t,...e]),()=>Mn(...e),`datetime format`,t=>Reflect.apply(t.d,t,[...e]),()=>``,e=>B(e)||R(e))}function le(...e){return se(t=>Reflect.apply(Pn,null,[t,...e]),()=>In(...e),`number format`,t=>Reflect.apply(t.n,t,[...e]),()=>``,e=>B(e)||R(e))}function ue(e){return e.map(e=>B(e)||P(e)||V(e)?_r(String(e)):e)}let de={normalize:ue,interpolate:e=>e,type:`vnode`};function L(...e){return se(t=>{let n,r=t;try{r.processor=de,n=Reflect.apply(Yn,null,[r,...e])}finally{r.processor=null}return n},()=>er(...e),`translate`,t=>t[or](...e),e=>[_r(e)],e=>R(e))}function fe(...e){return se(t=>Reflect.apply(Pn,null,[t,...e]),()=>In(...e),`number format`,t=>t[cr](...e),yr,e=>B(e)||R(e))}function pe(...e){return se(t=>Reflect.apply(An,null,[t,...e]),()=>Mn(...e),`datetime format`,t=>t[sr](...e),yr,e=>B(e)||R(e))}function me(e){C=e,w.pluralRules=C}function he(e,t){return se(()=>{if(!e)return!1;let n=ye(B(t)?t:c.value),r=w.messageResolver(n,e);return ot(r)||Jn(r)||B(r)},()=>[e],`translate exists`,n=>Reflect.apply(n.te,n,[e,t]),br,e=>V(e))}function ge(e){let t=null,n=Gt(w,l.value,c.value);for(let r=0;r{s&&(c.value=e,w.locale=e,En(w,c.value,l.value))}),o(t.fallbackLocale,e=>{s&&(l.value=e,w.fallbackLocale=e,En(w,c.value,l.value))}));let G={id:xr,locale:ne,fallbackLocale:T,get inheritLocale(){return s},set inheritLocale(e){s=e,e&&t&&(c.value=t.locale.value,l.value=t.fallbackLocale.value,En(w,c.value,l.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:ie,get modifiers(){return ee},get pluralRules(){return C||{}},get isGlobal(){return r},get missingWarn(){return p},set missingWarn(e){p=e,w.missingWarn=p},get fallbackWarn(){return m},set fallbackWarn(e){m=e,w.fallbackWarn=m},get fallbackRoot(){return h},set fallbackRoot(e){h=e},get fallbackFormat(){return g},set fallbackFormat(e){g=e,w.fallbackFormat=g},get warnHtmlMessage(){return x},set warnHtmlMessage(e){x=e,w.warnHtmlMessage=e},get escapeParameter(){return S},set escapeParameter(e){S=e,w.escapeParameter=e},t:j,getLocaleMessage:ye,setLocaleMessage:be,mergeLocaleMessage:xe,getPostTranslationHandler:oe,setPostTranslationHandler:O,getMissingHandler:k,setMissingHandler:A,[lr]:me};return G.datetimeFormats=ae,G.numberFormats=E,G.rt=M,G.te=he,G.tm=_e,G.d=N,G.n=le,G.getDateTimeFormat=Se,G.setDateTimeFormat=Ce,G.mergeDateTimeFormat=we,G.getNumberFormat=Ee,G.setNumberFormat=De,G.mergeNumberFormat=W,G[ur]=n,G[or]=L,G[sr]=pe,G[cr]=fe,G}function wr(e){let t=B(e.locale)?e.locale:cn,n=B(e.fallbackLocale)||R(e.fallbackLocale)||U(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=z(e.missing)?e.missing:void 0,i=V(e.silentTranslationWarn)||F(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,a=V(e.silentFallbackWarn)||F(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=V(e.fallbackRoot)?e.fallbackRoot:!0,s=!!e.formatFallbackMessages,c=U(e.modifiers)?e.modifiers:{},l=e.pluralizationRules,u=z(e.postTranslation)?e.postTranslation:void 0,d=B(e.warnHtmlInMessage)?e.warnHtmlInMessage!==`off`:!0,f=!!e.escapeParameterHtml,p=V(e.sync)?e.sync:!0,m=e.messages;if(U(e.sharedMessages)){let t=e.sharedMessages;m=Object.keys(t).reduce((e,n)=>(I(e[n]||(e[n]={}),t[n]),e),m||{})}let{__i18n:h,__root:g,__injectWithOption:_}=e,v=e.datetimeFormats,y=e.numberFormats,b=e.flatJson;return{locale:t,fallbackLocale:n,messages:m,flatJson:b,datetimeFormats:v,numberFormats:y,missing:r,missingWarn:i,fallbackWarn:a,fallbackRoot:o,fallbackFormat:s,modifiers:c,pluralRules:l,postTranslation:u,warnHtmlMessage:d,escapeParameter:f,messageResolver:e.messageResolver,inheritLocale:p,__i18n:h,__root:g,__injectWithOption:_}}function Tr(e={}){let t=Cr(wr(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return V(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=V(e)?!e:e},get silentFallbackWarn(){return V(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=V(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?`warn`:`off`},set warnHtmlInMessage(e){t.warnHtmlMessage=e!==`off`},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){return Reflect.apply(t.t,t,[...e])},rt(...e){return Reflect.apply(t.rt,t,[...e])},te(e,n){return t.te(e,n)},tm(e){return t.tm(e)},getLocaleMessage(e){return t.getLocaleMessage(e)},setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d(...e){return Reflect.apply(t.d,t,[...e])},getDateTimeFormat(e){return t.getDateTimeFormat(e)},setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n(...e){return Reflect.apply(t.n,t,[...e])},getNumberFormat(e){return t.getNumberFormat(e)},setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)}};return r.__extender=n,r}function Er(e,t,n){return{beforeCreate(){let r=vr();if(!r)throw ar(K.UNEXPECTED_ERROR);let i=this.$options;if(i.i18n){let r=i.i18n;if(i.__i18n&&(r.__i18n=i.__i18n),r.__root=t,this===this.$root)this.$i18n=Dr(e,r);else{r.__injectWithOption=!0,r.__extender=n.__vueI18nExtend,this.$i18n=Tr(r);let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}}else if(i.__i18n)if(this===this.$root)this.$i18n=Dr(e,i);else{this.$i18n=Tr({__i18n:i.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}else this.$i18n=e;i.__i18nGlobal&&gr(t,i,i),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e),n.__setInstance(r,this.$i18n)},mounted(){},unmounted(){let e=vr();if(!e)throw ar(K.UNEXPECTED_ERROR);let t=this.$i18n;delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),n.__deleteInstance(e),delete this.$i18n}}}function Dr(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[lr](t.pluralizationRules||e.pluralizationRules);let n=mr(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(t=>e.mergeLocaleMessage(t,n[t])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}var Or={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e===`parent`||e===`global`,default:`parent`},i18n:{type:Object}};function kr({slots:e},t){return t.length===1&&t[0]===`default`?(e.default?e.default():[]).reduce((e,t)=>[...e,...t.type===ne?t.children:[t]],[]):t.reduce((t,n)=>{let r=e[n];return r&&(t[n]=r()),t},L())}function Ar(){return ne}var jr=k({name:`i18n-t`,props:I({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>P(e)||!isNaN(e)}},Or),setup(e,t){let{slots:n,attrs:r}=t,i=e.i18n||Hr({useScope:e.scope,__useComponent:!0});return()=>{let a=Object.keys(n).filter(e=>e[0]!==`_`),o=L();e.locale&&(o.locale=e.locale),e.plural!==void 0&&(o.plural=B(e.plural)?+e.plural:e.plural);let s=kr(t,a),c=i[or](e.keypath,s,o),l=I(L(),r);return d(B(e.tag)||H(e.tag)?e.tag:Ar(),l,c)}}});function Mr(e){return R(e)&&!B(e[0])}function Nr(e,t,n,r){let{slots:i,attrs:a}=t;return()=>{let t={part:!0},o=L();e.locale&&(t.locale=e.locale),B(e.format)?t.key=e.format:H(e.format)&&(B(e.format.key)&&(t.key=e.format.key),o=Object.keys(e.format).reduce((t,r)=>n.includes(r)?I(L(),t,{[r]:e.format[r]}):t,L()));let s=r(e.value,t,o),c=[t.key];R(s)?c=s.map((e,t)=>{let n=i[e.type],r=n?n({[e.type]:e.value,index:t,parts:s}):[e.value];return Mr(r)&&(r[0].key=`${e.type}-${t}`),r}):B(s)&&(c=[s]);let l=I(L(),a);return d(B(e.tag)||H(e.tag)?e.tag:Ar(),l,c)}}var Pr=k({name:`i18n-n`,props:I({value:{type:Number,required:!0},format:{type:[String,Object]}},Or),setup(e,t){let n=e.i18n||Hr({useScope:e.scope,__useComponent:!0});return Nr(e,t,Fn,(...e)=>n[cr](...e))}});function Fr(e,t){let n=e;if(e.mode===`composition`)return n.__getInstance(t)||e.global;{let r=n.__getInstance(t);return r==null?e.global.__composer:r.__composer}}function Ir(e){let t=t=>{let{instance:n,value:r}=t;if(!n||!n.$)throw ar(K.UNEXPECTED_ERROR);let i=Fr(e,n.$),a=Lr(r);return[Reflect.apply(i.t,i,[...Rr(a)]),i]};return{created:(n,r)=>{let[i,a]=t(r);ce&&e.global===a&&(n.__i18nWatcher=o(a.locale,()=>{r.instance&&r.instance.$forceUpdate()})),n.__composer=a,n.textContent=i},unmounted:e=>{ce&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){let n=e.__composer,r=Lr(t);e.textContent=Reflect.apply(n.t,n,[...Rr(r)])}},getSSRProps:e=>{let[n]=t(e);return{textContent:n}}}}function Lr(e){if(B(e))return{path:e};if(U(e)){if(!(`path`in e))throw ar(K.REQUIRED_VALUE,`path`);return e}else throw ar(K.INVALID_VALUE)}function Rr(e){let{path:t,locale:n,args:r,choice:i,plural:a}=e,o={},s=r||{};return B(n)&&(o.locale=n),P(i)&&(o.plural=i),P(a)&&(o.plural=a),[t,s,o]}function zr(e,t,...n){let r=U(n[0])?n[0]:{};(!V(r.globalInstall)||r.globalInstall)&&([jr.name,`I18nT`].forEach(t=>e.component(t,jr)),[Pr.name,`I18nN`].forEach(t=>e.component(t,Pr)),[$r.name,`I18nD`].forEach(t=>e.component(t,$r))),e.directive(`t`,Ir(t))}var Br=j(`global-vue-i18n`);function Vr(e={}){let t=__VUE_I18N_LEGACY_API__&&V(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=V(e.globalInjection)?e.globalInjection:!0,r=new Map,[i,a]=Ur(e,t),o=j(``);function s(e){return r.get(e)||null}function c(e,t){r.set(e,t)}function l(e){r.delete(e)}let u={get mode(){return __VUE_I18N_LEGACY_API__&&t?`legacy`:`composition`},async install(e,...r){if(e.__VUE_I18N_SYMBOL__=o,e.provide(e.__VUE_I18N_SYMBOL__,u),U(r[0])){let e=r[0];u.__composerExtend=e.__composerExtend,u.__vueI18nExtend=e.__vueI18nExtend}let i=null;!t&&n&&(i=Qr(e,u.global)),__VUE_I18N_FULL_INSTALL__&&zr(e,u,...r),__VUE_I18N_LEGACY_API__&&t&&e.mixin(Er(a,a.__composer,u));let s=e.unmount;e.unmount=()=>{i&&i(),u.dispose(),s()}},get global(){return a},dispose(){i.stop()},__instances:r,__getInstance:s,__setInstance:c,__deleteInstance:l};return u}function Hr(e={}){let t=vr();if(t==null)throw ar(K.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw ar(K.NOT_INSTALLED);let n=Wr(t),r=Kr(n),i=hr(t),a=Gr(e,i);if(a===`global`)return gr(r,e,i),r;if(a===`parent`){let i=qr(n,t,e.__useComponent);return i??=r,i}let o=n,s=o.__getInstance(t);if(s==null){let n=I({},e);`__i18n`in i&&(n.__i18n=i.__i18n),r&&(n.__root=r),s=Cr(n),o.__composerExtend&&(s[dr]=o.__composerExtend(s)),Yr(o,t,s),o.__setInstance(t,s)}return s}function Ur(e,t){let n=E(),r=__VUE_I18N_LEGACY_API__&&t?n.run(()=>Tr(e)):n.run(()=>Cr(e));if(r==null)throw ar(K.UNEXPECTED_ERROR);return[n,r]}function Wr(e){let t=O(e.isCE?Br:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw ar(e.isCE?K.NOT_INSTALLED_WITH_PROVIDE:K.UNEXPECTED_ERROR);return t}function Gr(e,t){return ue(e)?`__i18n`in t?`local`:`global`:e.useScope?e.useScope:`local`}function Kr(e){return e.mode===`composition`?e.global:e.global.__composer}function qr(e,t,n=!1){let r=null,i=t.root,a=Jr(t,n);for(;a!=null;){let t=e;if(e.mode===`composition`)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){let e=t.__getInstance(a);e!=null&&(r=e.__composer,n&&r&&!r[ur]&&(r=null))}if(r!=null||i===a)break;a=a.parent}return r}function Jr(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Yr(e,t,n){s(()=>{},t),c(()=>{let r=n;e.__deleteInstance(t);let i=r[dr];i&&(i(),delete r[dr])},t)}var Xr=[`locale`,`fallbackLocale`,`availableLocales`],Zr=[`t`,`rt`,`d`,`n`,`tm`,`te`];function Qr(e,t){let n=Object.create(null);return Xr.forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw ar(K.UNEXPECTED_ERROR);let i=g(r.value)?{get(){return r.value.value},set(e){r.value.value=e}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,e,i)}),e.config.globalProperties.$i18n=n,Zr.forEach(n=>{let r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw ar(K.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)}),()=>{delete e.config.globalProperties.$i18n,Zr.forEach(t=>{delete e.config.globalProperties[`$${t}`]})}}var $r=k({name:`i18n-d`,props:I({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Or),setup(e,t){let n=e.i18n||Hr({useScope:e.scope,__useComponent:!0});return Nr(e,t,jn,(...e)=>n[sr](...e))}});if(ir(),fn(Nt),mn(an),gn(Gt),__INTLIFY_PROD_DEVTOOLS__){let e=pe();e.__INTLIFY__=!0,Ft(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}function ei(e,t={},n){for(let r in e){let i=e[r],a=n?`${n}:${r}`:r;typeof i==`object`&&i?ei(i,t,a):typeof i==`function`&&(t[a]=i)}return t}var ti={run:e=>e()},ni=console.createTask===void 0?()=>ti:console.createTask;function ri(e,t){let n=ni(t.shift());return e.reduce((e,r)=>e.then(()=>n.run(()=>r(...t))),Promise.resolve())}function ii(e,t){let n=ni(t.shift());return Promise.all(e.map(e=>n.run(()=>e(...t))))}function ai(e,t){for(let n of[...e])n(t)}var oi=class{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!=`function`)return()=>{};let r=e,i;for(;this._deprecatedHooks[e];)i=this._deprecatedHooks[e],e=i.to;if(i&&!n.allowDeprecated){let e=i.message;e||=`${r} hook has been deprecated`+(i.to?`, please use ${i.to}`:``),this._deprecatedMessages||=new Set,this._deprecatedMessages.has(e)||(console.warn(e),this._deprecatedMessages.add(e))}if(!t.name)try{Object.defineProperty(t,`name`,{get:()=>`_`+e.replace(/\W+/g,`_`)+`_hook_cb`,configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&=(this.removeHook(e,t),void 0)}}hookOnce(e,t){let n,r=(...e)=>(typeof n==`function`&&n(),n=void 0,r=void 0,t(...e));return n=this.hook(e,r),n}removeHook(e,t){if(this._hooks[e]){let n=this._hooks[e].indexOf(t);n!==-1&&this._hooks[e].splice(n,1),this._hooks[e].length===0&&delete this._hooks[e]}}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t==`string`?{to:t}:t;let n=this._hooks[e]||[];delete this._hooks[e];for(let t of n)this.hook(e,t)}deprecateHooks(e){Object.assign(this._deprecatedHooks,e);for(let t in e)this.deprecateHook(t,e[t])}addHooks(e){let t=ei(e),n=Object.keys(t).map(e=>this.hook(e,t[e]));return()=>{for(let e of n.splice(0,n.length))e()}}removeHooks(e){let t=ei(e);for(let e in t)this.removeHook(e,t[e])}removeAllHooks(){for(let e in this._hooks)delete this._hooks[e]}callHook(e,...t){return t.unshift(e),this.callHookWith(ri,e,...t)}callHookParallel(e,...t){return t.unshift(e),this.callHookWith(ii,e,...t)}callHookWith(e,t,...n){let r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&ai(this._before,r);let i=e(t in this._hooks?[...this._hooks[t]]:[],n);return i instanceof Promise?i.finally(()=>{this._after&&r&&ai(this._after,r)}):(this._after&&r&&ai(this._after,r),i)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){let t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){let t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function si(){return new oi}var ci=typeof document<`u`;function li(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function ui(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&li(e.default)}var q=Object.assign;function di(e,t){let n={};for(let r in t){let i=t[r];n[r]=pi(i)?i.map(e):e(i)}return n}var fi=()=>{},pi=Array.isArray;function mi(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var J=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),hi=Symbol(``);J.MATCHER_NOT_FOUND,J.NAVIGATION_GUARD_REDIRECT,J.NAVIGATION_ABORTED,J.NAVIGATION_CANCELLED,J.NAVIGATION_DUPLICATED;function gi(e,t){return q(Error(),{type:e,[hi]:!0},t)}function _i(e,t){return e instanceof Error&&hi in e&&(t==null||!!(e.type&t))}var vi=Symbol(``),yi=Symbol(``),bi=Symbol(``),xi=Symbol(``),Si=Symbol(``);function Ci(){return O(bi)}function wi(e){return O(xi)}var Ti=/#/g,Ei=/&/g,Di=/\//g,Oi=/=/g,ki=/\?/g,Ai=/\+/g,ji=/%5B/g,Mi=/%5D/g,Ni=/%5E/g,Pi=/%60/g,Fi=/%7B/g,Ii=/%7C/g,Li=/%7D/g,Ri=/%20/g;function zi(e){return e==null?``:encodeURI(``+e).replace(Ii,`|`).replace(ji,`[`).replace(Mi,`]`)}function Bi(e){return zi(e).replace(Fi,`{`).replace(Li,`}`).replace(Ni,`^`)}function Vi(e){return zi(e).replace(Ai,`%2B`).replace(Ri,`+`).replace(Ti,`%23`).replace(Ei,`%26`).replace(Pi,"`").replace(Fi,`{`).replace(Li,`}`).replace(Ni,`^`)}function Hi(e){return Vi(e).replace(Oi,`%3D`)}function Ui(e){return zi(e).replace(Ti,`%23`).replace(ki,`%3F`)}function Wi(e){return Ui(e).replace(Di,`%2F`)}function Gi(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Ki=/\/$/,qi=e=>e.replace(Ki,``);function Ji(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=na(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:Gi(o)}}function Yi(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function Xi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function Zi(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&Qi(t.matched[r],n.matched[i])&&$i(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Qi(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function $i(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!ea(e[n],t[n]))return!1;return!0}function ea(e,t){return pi(e)?ta(e,t):pi(t)?ta(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function ta(e,t){return pi(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function na(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var ra={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},ia=function(e){return e.pop=`pop`,e.push=`push`,e}({}),aa=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function oa(e){if(!e)if(ci){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),qi(e)}var sa=/^[^#]+#/;function ca(e,t){return e.replace(sa,`#`)+t}function la(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var ua=()=>({left:window.scrollX,top:window.scrollY});function da(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=la(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function fa(e,t){return(history.state?history.state.position-t:-1)+e}var pa=new Map;function ma(e,t){pa.set(e,t)}function ha(e){let t=pa.get(e);return pa.delete(e),t}function ga(e){return typeof e==`string`||e&&typeof e==`object`}function _a(e){return typeof e==`string`||typeof e==`symbol`}function va(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&Vi(e)):[r&&Vi(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function ba(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=pi(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function xa(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Sa(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(gi(J.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):ga(e)?c(gi(J.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ca(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(li(s)){let c=(s.__vccOpts||s)[t];c&&a.push(Sa(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=ui(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&Sa(c,n,r,o,e,i)()}))}}return a}function wa(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oQi(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>Qi(e,s))||i.push(s))}return[n,r,i]}var Ta=()=>location.protocol+`//`+location.host;function Ea(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),Xi(n,``)}return Xi(n,e)+r+i}function Da(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ea(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:ia.pop,direction:u?u>0?aa.forward:aa.back:aa.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(q({},e.state,{scroll:ua()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Oa(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?ua():null}}function ka(e){let{history:t,location:n}=window,r={value:Ea(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Ta()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,q({},t.state,Oa(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=q({},i.value,t.state,{forward:e,scroll:ua()});a(o.current,o,!0),a(e,q({},Oa(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Aa(e){e=oa(e);let t=ka(e),n=Da(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=q({location:``,base:e,go:r,createHref:ca.bind(null,e)},t,n);return Object.defineProperty(i,`location`,{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,`state`,{enumerable:!0,get:()=>t.state.value}),i}var ja=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Y=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Y||{}),Ma={type:ja.Static,value:``},Na=/[a-zA-Z0-9_]/;function Pa(e){if(!e)return[[]];if(e===`/`)return[[Ma]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Y.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Y.Static?a.push({type:ja.Static,value:l}):n===Y.Param||n===Y.ParamRegExp||n===Y.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:ja.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===La.Static+La.Segment?1:-1:0}function Va(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Ua={strict:!1,end:!0,sensitive:!1};function Wa(e,t,n){let r=q(za(Pa(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ga(e,t){let n=[],r=new Map;t=mi(Ua,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=qa(e);s.aliasOf=r&&r.record;let l=mi(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(qa(q({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Wa(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!Ya(d)&&o(e.name)),$a(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:fi}function o(e){if(_a(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Za(e,n);n.splice(t,0,e),e.record.name&&!Ya(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw gi(J.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=q(Ka(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Ka(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw gi(J.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=q({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Xa(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Ka(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function qa(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ja(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,`mods`,{value:{}}),t}function Ja(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function Ya(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Xa(e){return e.reduce((e,t)=>q(e,t.meta),{})}function Za(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Va(e,t[i])<0?r=i:n=i+1}let i=Qa(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Qa(e){let t=e;for(;t=t.parent;)if($a(t)&&Va(e,t)===0)return t}function $a({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function eo(e){let t=O(bi),n=O(xi),r=y(()=>{let n=A(e.to);return t.resolve(n)}),i=y(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(Qi.bind(null,i));if(o>-1)return o;let s=ao(e[t-2]);return t>1&&ao(i)===s&&a[a.length-1].path!==s?a.findIndex(Qi.bind(null,e[t-2])):o}),a=y(()=>i.value>-1&&io(n.params,r.value.params)),o=y(()=>i.value>-1&&i.value===n.matched.length-1&&$i(n.params,r.value.params));function s(n={}){if(ro(n)){let n=t[A(e.replace)?`replace`:`push`](A(e.to)).catch(fi);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:y(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function to(e){return e.length===1?e[0]:e}var no=k({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:eo,setup(e,{slots:t}){let n=v(eo(e)),{options:r}=O(bi),i=y(()=>({[oo(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[oo(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&to(t.default(n));return e.custom?r:d(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function ro(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function io(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!pi(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function ao(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var oo=(e,t,n)=>e??t??n,so=k({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=O(Si),i=y(()=>e.route||r.value),s=O(yi,0),c=y(()=>{let e=A(s),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),l=y(()=>i.value.matched[c.value]);a(yi,y(()=>c.value+1)),a(vi,l),a(Si,i);let u=D();return o(()=>[u.value,l.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!Qi(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=i.value,a=e.name,o=l.value,s=o&&o.components[a];if(!s)return co(n.default,{Component:s,route:r});let c=o.props[a],f=d(s,q({},c?c===!0?r.params:typeof c==`function`?c(r):c:null,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[a]=null)},ref:u}));return co(n.default,{Component:f,route:r})||f}}});function co(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var lo=so;function uo(e){let t=Ga(e.routes,e),n=e.parseQuery||va,r=e.stringifyQuery||ya,i=e.history,a=xa(),o=xa(),s=xa(),c=re(ra),u=ra;ci&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let d=di.bind(null,e=>``+e),f=di.bind(null,Wi),p=di.bind(null,Gi);function m(e,n){let r,i;return _a(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function h(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function g(){return t.getRoutes().map(e=>e.record)}function _(e){return!!t.getRecordMatcher(e)}function v(e,a){if(a=q({},a||c.value),typeof e==`string`){let r=Ji(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return q(r,o,{params:p(o.params),hash:Gi(r.hash),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=q({},e,{path:Ji(n,e.path,a.path).path});else{let t=q({},e.params);for(let e in t)t[e]??delete t[e];o=q({},e,{params:f(t)}),a.params=f(a.params)}let s=t.resolve(o,a),l=e.hash||``;s.params=d(p(s.params));let u=Yi(r,q({},e,{hash:Bi(l),path:s.path})),m=i.createHref(u);return q({fullPath:u,hash:l,query:r===ya?ba(e.query):e.query||{}},s,{redirectedFrom:void 0,href:m})}function y(e){return typeof e==`string`?Ji(n,e,c.value.path):q({},e)}function x(e,t){if(u!==e)return gi(J.NAVIGATION_CANCELLED,{from:t,to:e})}function S(e){return w(e)}function ee(e){return S(q(y(e),{replace:!0}))}function C(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=y(i):{path:i},i.params={}),q({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function w(e,t){let n=u=v(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,l=C(n,i);if(l)return w(q(y(l),{state:typeof l==`object`?q({},a,l.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&Zi(r,i,n)&&(f=gi(J.NAVIGATION_DUPLICATED,{to:d,from:i}),M(i,i,!0,!1)),(f?Promise.resolve(f):T(d,i)).catch(e=>_i(e)?_i(e,J.NAVIGATION_GUARD_REDIRECT)?e:j(e):se(e,d,i)).then(e=>{if(e){if(_i(e,J.NAVIGATION_GUARD_REDIRECT))return w(q({replace:s},y(e.to),{state:typeof e.to==`object`?q({},a,e.to.state):a,force:o}),t||d)}else e=ae(d,i,!0,s,a);return ie(d,i,e),e})}function te(e,t){let n=x(e,t);return n?Promise.reject(n):Promise.resolve()}function ne(e){let t=le.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function T(e,t){let n,[r,i,s]=wa(e,t);n=Ca(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(Sa(r,e,t))});let c=te.bind(null,e,t);return n.push(c),ue(n).then(()=>{n=[];for(let r of a.list())n.push(Sa(r,e,t));return n.push(c),ue(n)}).then(()=>{n=Ca(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(Sa(r,e,t))});return n.push(c),ue(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter)if(pi(r.beforeEnter))for(let i of r.beforeEnter)n.push(Sa(i,e,t));else n.push(Sa(r.beforeEnter,e,t));return n.push(c),ue(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ca(s,`beforeRouteEnter`,e,t,ne),n.push(c),ue(n))).then(()=>{n=[];for(let r of o.list())n.push(Sa(r,e,t));return n.push(c),ue(n)}).catch(e=>_i(e,J.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function ie(e,t,n){s.list().forEach(r=>ne(()=>r(e,t,n)))}function ae(e,t,n,r,a){let o=x(e,t);if(o)return o;let s=t===ra,l=ci?history.state:{};n&&(r||s?i.replace(e.fullPath,q({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,M(e,t,n,s),j()}let E;function oe(){E||=i.listen((e,t,n)=>{if(!F.listening)return;let r=v(e),a=C(r,F.currentRoute.value);if(a){w(q(a,{replace:!0,force:!0}),r).catch(fi);return}u=r;let o=c.value;ci&&ma(fa(o.fullPath,n.delta),ua()),T(r,o).catch(e=>_i(e,J.NAVIGATION_ABORTED|J.NAVIGATION_CANCELLED)?e:_i(e,J.NAVIGATION_GUARD_REDIRECT)?(w(q(y(e.to),{force:!0}),r).then(e=>{_i(e,J.NAVIGATION_ABORTED|J.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===ia.pop&&i.go(-1,!1)}).catch(fi),Promise.reject()):(n.delta&&i.go(-n.delta,!1),se(e,r,o))).then(e=>{e||=ae(r,o,!1),e&&(n.delta&&!_i(e,J.NAVIGATION_CANCELLED)?i.go(-n.delta,!1):n.type===ia.pop&&_i(e,J.NAVIGATION_ABORTED|J.NAVIGATION_DUPLICATED)&&i.go(-1,!1)),ie(r,o,e)}).catch(fi)})}let D=xa(),O=xa(),k;function se(e,t,n){j(e);let r=O.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function ce(){return k&&c.value!==ra?Promise.resolve():new Promise((e,t)=>{D.add([e,t])})}function j(e){return k||(k=!e,oe(),D.list().forEach(([t,n])=>e?n(e):t()),D.reset()),e}function M(t,n,r,i){let{scrollBehavior:a}=e;if(!ci||!a)return Promise.resolve();let o=!r&&ha(fa(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return l().then(()=>a(t,n,o)).then(e=>e&&da(e)).catch(e=>se(e,t,n))}let N=e=>i.go(e),P,le=new Set,F={currentRoute:c,listening:!0,addRoute:m,removeRoute:h,clearRoutes:t.clearRoutes,hasRoute:_,getRoutes:g,resolve:v,options:e,push:S,replace:ee,go:N,back:()=>N(-1),forward:()=>N(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:O.add,isReady:ce,install(e){e.component(`RouterLink`,no),e.component(`RouterView`,lo),e.config.globalProperties.$router=F,Object.defineProperty(e.config.globalProperties,`$route`,{enumerable:!0,get:()=>A(c)}),ci&&!P&&c.value===ra&&(P=!0,S(i.location).catch(e=>{}));let t={};for(let e in ra)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(bi,F),e.provide(xi,b(t)),e.provide(Si,c);let n=e.unmount;le.add(e),e.unmount=function(){le.delete(e),le.size<1&&(u=ra,E&&E(),E=null,c.value=ra,P=!1,k=!1),n()}}};function ue(e){return e.reduce((e,t)=>e.then(()=>ne(t)),Promise.resolve())}return F}function fo(e,t){let n=re();return f(()=>{n.value=e()},{...t,flush:t?.flush??`sync`}),w(n)}function po(e,t,n={}){let r,i,a,s=!0,c=()=>{s=!0,a()};o(e,c,{flush:`sync`,...n});let l=typeof t==`function`?t:t.get,u=typeof t==`function`?void 0:t.set,d=x((e,t)=>(i=e,a=t,{get(){return s&&=(r=l(r),!1),i(),r},set(e){u?.(e)}}));return d.trigger=c,d}function mo(e,t){return te()?(ie(e,t),!0):!1}function ho(){let e=new Set,t=t=>{e.delete(t)};return{on:n=>{e.add(n);let r=()=>t(n);return mo(r),{off:r}},off:t,trigger:(...t)=>Promise.all(Array.from(e).map(e=>e(...t))),clear:()=>{e.clear()}}}function go(e){let t=!1,n,r=E(!0);return((...i)=>(t||=(n=r.run(()=>e(...i)),!0),n))}var _o=new WeakMap,vo=(...e)=>{let t=e[0],r=_()?.proxy??te();if(r==null&&!n())throw Error(`injectLocal must be called in setup`);return r&&_o.has(r)&&t in _o.get(r)?_o.get(r)[t]:O(...e)},yo=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var bo=e=>e!==void 0,xo=Object.prototype.toString,So=e=>xo.call(e)===`[object Object]`,Co=()=>{},wo=To();function To(){var e,t;return yo&&!!(!((e=window)==null||(e=e.navigator)==null)&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)==null||(t=t.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function Eo(...e){if(e.length!==1)return ee(...e);let t=e[0];return typeof t==`function`?w(x(()=>({get:t,set:Co}))):D(t)}function Do(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}var Oo=e=>e();function ko(e,t={}){let n,r,i=Co,a=e=>{clearTimeout(e),i(),i=Co},o;return s=>{let c=m(e),l=m(t.maxWait);return n&&a(n),c<=0||l!==void 0&&l<=0?(r&&=(a(r),void 0),Promise.resolve(s())):new Promise((e,u)=>{i=t.rejectOnCancel?u:e,o=s,l&&!r&&(r=setTimeout(()=>{n&&a(n),r=void 0,e(o())},l)),n=setTimeout(()=>{r&&a(r),r=void 0,e(s())},c)})}}function Ao(e=Oo,t={}){let{initialState:n=`active`}=t,r=Eo(n===`active`);function i(){r.value=!1}function a(){r.value=!0}return{isActive:w(r),pause:i,resume:a,eventFilter:(...t)=>{r.value&&e(...t)}}}function jo(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function Mo(e){return Array.isArray(e)?e:[e]}function No(e){let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))}var Po=/-(\w)/g,Fo=No(e=>e.replace(Po,(e,t)=>t?t.toUpperCase():``));function Io(e){return e||_()}function Lo(e){if(!yo)return e;let t=0,n,r,i=()=>{--t,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return((...a)=>(t+=1,r||(r=E(!0),n=r.run(()=>e(...a))),mo(i),n))}function Ro(e,t){if(typeof Symbol<`u`){let n={...e};return Object.defineProperty(n,Symbol.iterator,{enumerable:!1,value(){let e=0;return{next:()=>({value:t[e++],done:e>t.length})}}}),n}else return Object.assign([...t],e)}function zo(e){return g(e)?v(new Proxy({},{get(t,n,r){return A(Reflect.get(e.value,n,r))},set(t,n,r){return g(e.value[n])&&!g(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):v(e)}function Bo(e){return zo(y(e))}function Vo(e,...t){let n=t.flat(),r=n[0];return Bo(()=>typeof r==`function`?Object.fromEntries(Object.entries(S(e)).filter(([e,t])=>!r(m(t),e))):Object.fromEntries(Object.entries(S(e)).filter(e=>!n.includes(e[0]))))}function Ho(e,...t){let n=t.flat(),r=n[0];return Bo(()=>typeof r==`function`?Object.fromEntries(Object.entries(S(e)).filter(([e,t])=>r(m(t),e))):Object.fromEntries(n.map(t=>[t,Eo(e,t)])))}function Uo(e,t=1e4){return x((n,r)=>{let i=m(e),a,o=()=>setTimeout(()=>{i=m(e),r()},m(t));return mo(()=>{clearTimeout(a)}),{get(){return n(),i},set(e){i=e,r(),clearTimeout(a),a=o()}}})}function Wo(e,t=200,n={}){return Do(ko(t,n),e)}function Go(e,t,n={}){let{eventFilter:r=Oo,...i}=n;return o(e,Do(r,t),i)}function Ko(e,t,n={}){let{eventFilter:r,initialState:i=`active`,...a}=n,{eventFilter:o,pause:s,resume:c,isActive:l}=Ao(r,{initialState:i});return{stop:Go(e,t,{...a,eventFilter:o}),pause:s,resume:c,isActive:l}}function qo(t,n){Io(n)&&e(t,n)}function Jo(e,t=!0,n){Io(n)?s(e,n):t?e():l(e)}function Yo(e,t,n){return o(e,t,{...n,immediate:!0})}function Xo(e={}){let{inheritAttrs:t=!0}=e,n=re(),r=k({setup(e,{slots:t}){return()=>{n.value=t.default}}}),i=k({inheritAttrs:t,props:e.props,setup(r,{attrs:i,slots:a}){return()=>{if(!n.value)throw Error(`[VueUse] Failed to find the definition of reusable template`);let o=n.value?.call(n,{...e.props==null?Zo(i):r,$slots:a});return t&&o?.length===1?o[0]:o}}});return Ro({define:r,reuse:i},[r,i])}function Zo(e){let t={};for(let n in e)t[Fo(n)]=e[n];return t}var Qo=yo?window:void 0;yo&&window.document,yo&&window.navigator,yo&&window.location;function $o(e){let t=m(e);return t?.$el??t}function es(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=y(()=>{let t=Mo(m(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return Yo(()=>[n.value?.map(e=>$o(e))??[Qo].filter(e=>e!=null),Mo(m(n.value?e[1]:e[0])),Mo(A(n.value?e[2]:e[1])),m(n.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=So(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}function ts(){let e=re(!1),t=_();return t&&s(()=>{e.value=!0},t),e}function ns(e){let t=ts();return y(()=>(t.value,!!e()))}function rs(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function is(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=Qo,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=rs(t);return es(i,a,e=>{e.repeat&&m(s)||c(e)&&n(e)},o)}var as=Symbol(`vueuse-ssr-width`);function os(){let e=n()?vo(as,null):null;return typeof e==`number`?e:void 0}function ss(e,t={}){let{window:n=Qo,ssrWidth:r=os()}=t,i=ns(()=>n&&`matchMedia`in n&&typeof n.matchMedia==`function`),a=re(typeof r==`number`),o=re(),s=re(!1);return f(()=>{if(a.value){a.value=!i.value,s.value=m(e).split(`,`).some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),a=!!(n||i);return n&&a&&(a=r>=jo(n[1])),i&&a&&(a=r<=jo(i[1])),t?!a:a});return}i.value&&(o.value=n.matchMedia(m(e)),s.value=o.value.matches)}),es(o,`change`,e=>{s.value=e.matches},{passive:!0}),y(()=>s.value)}function cs(e){return JSON.parse(JSON.stringify(e))}var ls=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:{},us=`__vueuse_ssr_handlers__`,ds=fs();function fs(){return us in ls||(ls[us]=ls[us]||{}),ls[us]}function ps(e,t){return ds[e]||t}function ms(e){return ss(`(prefers-color-scheme: dark)`,e)}function hs(e){return e==null?`any`:e instanceof Set?`set`:e instanceof Map?`map`:e instanceof Date?`date`:typeof e==`boolean`?`boolean`:typeof e==`string`?`string`:typeof e==`object`?`object`:Number.isNaN(e)?`any`:`number`}var gs={boolean:{read:e=>e===`true`,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},_s=`vueuse-storage`;function vs(e,t,n,r={}){let{flush:i=`pre`,deep:a=!0,listenToStorageChanges:s=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:f=Qo,eventFilter:p,onError:h=e=>{console.error(e)},initOnMounted:g}=r,_=(d?re:D)(typeof t==`function`?t():t),v=y(()=>m(e));if(!n)try{n=ps(`getDefaultStorage`,()=>Qo?.localStorage)()}catch(e){h(e)}if(!n)return _;let b=m(t),x=hs(b),S=r.serializer??gs[x],{pause:ee,resume:C}=Ko(_,e=>ne(e),{flush:i,deep:a,eventFilter:p});o(v,()=>ie(),{flush:i});let w=!1;f&&s&&(n instanceof Storage?es(f,`storage`,e=>{g&&!w||ie(e)},{passive:!0}):es(f,_s,e=>{g&&!w||ae(e)})),g?Jo(()=>{w=!0,ie()}):ie();function te(e,t){if(f){let r={key:v.value,oldValue:e,newValue:t,storageArea:n};f.dispatchEvent(n instanceof Storage?new StorageEvent(`storage`,r):new CustomEvent(_s,{detail:r}))}}function ne(e){try{let t=n.getItem(v.value);if(e==null)te(t,null),n.removeItem(v.value);else{let r=S.write(e);t!==r&&(n.setItem(v.value,r),te(t,r))}}catch(e){h(e)}}function T(e){let t=e?e.newValue:n.getItem(v.value);if(t==null)return c&&b!=null&&n.setItem(v.value,S.write(b)),b;if(!e&&u){let e=S.read(t);return typeof u==`function`?u(e,b):x===`object`&&!Array.isArray(e)?{...b,...e}:e}else if(typeof t!=`string`)return t;else return S.read(t)}function ie(e){if(!(e&&e.storageArea!==n)){if(e&&e.key==null){_.value=b;return}if(!(e&&e.key!==v.value)){ee();try{let t=S.write(_.value);(e===void 0||e?.newValue!==t)&&(_.value=T(e))}catch(e){h(e)}finally{e?l(C):C()}}}}function ae(e){ie(e.detail)}return _}var ys=`*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`;function bs(e={}){let{selector:t=`html`,attribute:n=`class`,initialValue:r=`auto`,window:i=Qo,storage:a,storageKey:s=`vueuse-color-scheme`,listenToStorageChanges:c=!0,storageRef:l,emitAuto:u,disableTransition:d=!0}=e,f={auto:``,light:`light`,dark:`dark`,...e.modes||{}},p=ms({window:i}),m=y(()=>p.value?`dark`:`light`),h=l||(s==null?Eo(r):vs(s,r,a,{window:i,listenToStorageChanges:c})),g=y(()=>h.value===`auto`?m.value:h.value),_=ps(`updateHTMLAttrs`,(e,t,n)=>{let r=typeof e==`string`?i?.document.querySelector(e):$o(e);if(!r)return;let a=new Set,o=new Set,s=null;if(t===`class`){let e=n.split(/\s/g);Object.values(f).flatMap(e=>(e||``).split(/\s/g)).filter(Boolean).forEach(t=>{e.includes(t)?a.add(t):o.add(t)})}else s={key:t,value:n};if(a.size===0&&o.size===0&&s===null)return;let c;d&&(c=i.document.createElement(`style`),c.appendChild(document.createTextNode(ys)),i.document.head.appendChild(c));for(let e of a)r.classList.add(e);for(let e of o)r.classList.remove(e);s&&r.setAttribute(s.key,s.value),d&&(i.getComputedStyle(c).opacity,document.head.removeChild(c))});function v(e){_(t,n,f[e]??e)}function b(t){e.onChanged?e.onChanged(t,v):v(t)}o(g,b,{flush:`post`,immediate:!0}),Jo(()=>b(g.value));let x=y({get(){return u?h.value:g.value},set(e){h.value=e}});return Object.assign(x,{store:h,system:m,state:g})}function xs(e){let t=_(),n=po(()=>null,()=>e?$o(e):t.proxy.$el);return u(n.trigger),s(n.trigger),n}function Ss(e={}){let{valueDark:t=`dark`,valueLight:n=``}=e,r=bs({...e,onChanged:(t,n)=>{var r;e.onChanged?(r=e.onChanged)==null||r.call(e,t===`dark`,n,t):n(t)},modes:{dark:t,light:n}}),i=y(()=>r.system.value);return y({get(){return r.value===`dark`},set(e){let t=e?`dark`:`light`;i.value===t?r.value=`auto`:r.value=t}})}function Cs(e,t,n={}){let{window:r=Qo,...i}=n,a,s=ns(()=>r&&`ResizeObserver`in r),c=()=>{a&&=(a.disconnect(),void 0)},l=o(y(()=>{let t=m(e);return Array.isArray(t)?t.map(e=>$o(e)):[$o(t)]}),e=>{if(c(),s.value&&r){a=new ResizeObserver(t);for(let t of e)t&&a.observe(t,i)}},{immediate:!0,flush:`post`}),u=()=>{c(),l()};return mo(u),{isSupported:s,stop:u}}var ws=new Map;function Ts(e){let t=te();function n(n){var r;let a=ws.get(e)||new Set;a.add(n),ws.set(e,a);let o=()=>i(n);return t==null||(r=t.cleanups)==null||r.push(o),o}function r(e){function t(...n){i(t),e(...n)}return n(t)}function i(t){let n=ws.get(e);n&&(n.delete(t),n.size||a())}function a(){ws.delete(e)}function o(t,n){var r;(r=ws.get(e))==null||r.forEach(e=>e(t,n))}return{on:n,once:r,off:i,emit:o,reset:a}}function Es(e=xs()){let t=re(),n=()=>{let n=$o(e);n&&(t.value=n.parentElement)};return Jo(n),o(()=>m(e),n),t}function Ds(e,t,n,r={}){var i,a;let{clone:s=!1,passive:c=!1,eventName:u,deep:d=!1,defaultValue:f,shouldEmit:p}=r,m=_(),h=n||m?.emit||(m==null||(i=m.$emit)==null?void 0:i.bind(m))||(m==null||(a=m.proxy)==null||(a=a.$emit)==null?void 0:a.bind(m?.proxy)),g=u;t||=`modelValue`,g||=`update:${t.toString()}`;let v=e=>s?typeof s==`function`?s(e):cs(e):e,b=()=>bo(e[t])?v(e[t]):f,x=e=>{p?p(e)&&h(g,e):h(g,e)};if(c){let n=D(b()),r=!1;return o(()=>e[t],e=>{r||(r=!0,n.value=v(e),l(()=>r=!1))}),o(n,n=>{!r&&(n!==e[t]||d)&&x(n)},{deep:d}),n}else return y({get(){return b()},set(e){x(e)}})}var Os={ui:{colors:{primary:`blue`,secondary:`blue`,success:`green`,info:`blue`,warning:`yellow`,error:`red`,neutral:`zink`},icons:{arrowDown:`i-lucide-arrow-down`,arrowLeft:`i-lucide-arrow-left`,arrowRight:`i-lucide-arrow-right`,arrowUp:`i-lucide-arrow-up`,caution:`i-lucide-circle-alert`,check:`i-lucide-check`,chevronDoubleLeft:`i-lucide-chevrons-left`,chevronDoubleRight:`i-lucide-chevrons-right`,chevronDown:`i-lucide-chevron-down`,chevronLeft:`i-lucide-chevron-left`,chevronRight:`i-lucide-chevron-right`,chevronUp:`i-lucide-chevron-up`,close:`i-lucide-x`,copy:`i-lucide-copy`,copyCheck:`i-lucide-copy-check`,dark:`i-lucide-moon`,drag:`i-lucide-grip-vertical`,ellipsis:`i-lucide-ellipsis`,error:`i-lucide-circle-x`,external:`i-lucide-arrow-up-right`,eye:`i-lucide-eye`,eyeOff:`i-lucide-eye-off`,file:`i-lucide-file`,folder:`i-lucide-folder`,folderOpen:`i-lucide-folder-open`,hash:`i-lucide-hash`,info:`i-lucide-info`,light:`i-lucide-sun`,loading:`i-lucide-loader-circle`,menu:`i-lucide-menu`,minus:`i-lucide-minus`,panelClose:`i-lucide-panel-left-close`,panelOpen:`i-lucide-panel-left-open`,plus:`i-lucide-plus`,reload:`i-lucide-rotate-ccw`,search:`i-lucide-search`,stop:`i-lucide-square`,success:`i-lucide-circle-check`,system:`i-lucide-monitor`,tip:`i-lucide-lightbulb`,upload:`i-lucide-upload`,warning:`i-lucide-triangle-alert`},tv:{twMergeConfig:{}},pagination:{slots:{root:``}},button:{slots:{base:`border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!`}},input:{slots:{base:`text-(--black) dark:text-white border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!`}},select:{slots:{base:`w-full! cursor-pointer border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!`,itemLabel:`text-black! dark:text-white!`,itemTrailingIcon:`text-black! dark:text-white!`}}},colorMode:!0},ks=v(Os);const As=()=>ks;function js(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function Ms(e,t,n=`.`,r){if(!js(t))return Ms(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(Array.isArray(a)&&Array.isArray(i[t])?i[t]=[...a,...i[t]]:js(a)&&js(i[t])?i[t]=Ms(a,i[t],(n?`${n}.`:``)+t.toString(),r):i[t]=a))}return i}function Ns(e){return(...t)=>t.reduce((t,n)=>Ms(t,n,``,e),{})}var Ps=Ns();function Fs(e){return Ps(e,{dir:`ltr`})}function Is(e){return typeof e==`string`?`'${e}'`:new Ls().serialize(e)}var Ls=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}();function Rs(e,t){return e===t||Is(e)===Is(t)}function zs(e,t){return Bs(Vs(e),Vs(t))}function Bs(e,t){let n=[],r=new Set([...Object.keys(e.props||{}),...Object.keys(t.props||{})]);if(e.props&&t.props)for(let i of r){let r=e.props[i],a=t.props[i];r&&a?n.push(...Bs(e.props?.[i],t.props?.[i])):(r||a)&&n.push(new Hs((a||r).key,r?`removed`:`added`,a,r))}return r.size===0&&e.hash!==t.hash&&n.push(new Hs((t||e).key,`changed`,t,e)),n}function Vs(e,t=``){if(e&&typeof e!=`object`)return new Us(t,e,Is(e));let n={},r=[];for(let i in e)n[i]=Vs(e[i],t?`${t}.${i}`:i),r.push(n[i].hash);return new Us(t,e,`{${r.join(`:`)}}`,n)}var Hs=class{constructor(e,t,n,r){this.key=e,this.type=t,this.newValue=n,this.oldValue=r}toString(){return this.toJSON()}toJSON(){switch(this.type){case`added`:return`Added \`${this.key}\``;case`removed`:return`Removed \`${this.key}\``;case`changed`:return`Changed \`${this.key}\` from \`${this.oldValue?.toString()||`-`}\` to \`${this.newValue.toString()}\``}}},Us=class{constructor(e,t,n,r){this.key=e,this.value=t,this.hash=n,this.props=r}toString(){return this.props?`{${Object.keys(this.props).join(`,`)}}`:JSON.stringify(this.value)}toJSON(){let e=this.key||`.`;return this.props?`${e}({${Object.keys(this.props).join(`,`)}})`:`${e}(${this.value})`}};String.fromCharCode;var Ws=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Gs=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,Ks=/^([/\\]\s*){2,}[^/\\]/;function qs(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?Ws.test(e):Gs.test(e)||(t.acceptRelative?Ks.test(e):!1)}function Js(e,t){let n={...e};for(let e of t)delete n[e];return n}function Ys(e,t,n){typeof t==`string`&&(t=t.split(`.`).map(e=>{let t=Number(e);return Number.isNaN(t)?e:t}));let r=e;for(let e of t){if(r==null)return n;r=r[e]}return r===void 0?n:r}function Xs(e){let t=Number.parseFloat(e);return Number.isNaN(t)?e:t}function Zs(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?Ys(e,n)===Ys(t,n):Rs(e,t)}function Qs(e){if(e==null)return!0;if(typeof e==`boolean`||typeof e==`number`)return!1;if(typeof e==`string`)return e.trim().length===0;if(Array.isArray(e))return e.length===0;if(e instanceof Map||e instanceof Set)return e.size===0;if(e instanceof Date||e instanceof RegExp||typeof e==`function`)return!1;if(typeof e==`object`){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}return!1}function $s(e,t,n={}){let{valueKey:r,labelKey:i,by:a}=n,o=e.find(e=>Zs(typeof e==`object`&&e&&r?Ys(e,r):e,t,a));if(Qs(t)&&o)return i?Ys(o,i):void 0;if(Qs(t))return;let s=o??t;if(s!=null)return typeof s==`object`?i?Ys(s,i):void 0:String(s)}function ec(e){return Array.isArray(e[0])}function tc(e,t){return!e&&!t?``:[...Array.isArray(e)?e:[e],t].filter(Boolean)}function nc(e){return(t,n)=>rc(t,n,A(e))}function rc(e,t,n){return Ys(n,`messages.${e}`,e).replace(/\{(\w+)\}/g,(e,n)=>`${t?.[n]??`{${n}}`}`)}function ic(e){return{lang:y(()=>A(e).name),code:y(()=>A(e).code),dir:y(()=>A(e).dir),locale:g(e)?e:D(e),t:nc(e)}}var ac=Fs({name:`English`,code:`en`,messages:{alert:{close:`Close`},authForm:{hidePassword:`Hide password`,showPassword:`Show password`,submit:`Continue`},banner:{close:`Close`},calendar:{nextMonth:`Next month`,nextYear:`Next year`,prevMonth:`Previous month`,prevYear:`Previous year`},carousel:{dots:`Choose slide to display`,goto:`Go to slide {slide}`,next:`Next`,prev:`Prev`},chatPrompt:{placeholder:`Type your message here…`},chatPromptSubmit:{label:`Send prompt`},colorMode:{dark:`Dark`,light:`Light`,switchToDark:`Switch to dark mode`,switchToLight:`Switch to light mode`,system:`System`},commandPalette:{back:`Back`,close:`Close`,noData:`No data`,noMatch:`No matching data`,placeholder:`Type a command or search…`},contentSearch:{links:`Links`,theme:`Theme`},contentSearchButton:{label:`Search…`},contentToc:{title:`On this page`},dashboardSearch:{theme:`Theme`},dashboardSearchButton:{label:`Search…`},dashboardSidebarCollapse:{collapse:`Collapse sidebar`,expand:`Expand sidebar`},dashboardSidebarToggle:{close:`Close sidebar`,open:`Open sidebar`},error:{clear:`Back to home`},fileUpload:{removeFile:`Remove {filename}`},header:{close:`Close menu`,open:`Open menu`},inputMenu:{create:`Create "{label}"`,noData:`No data`,noMatch:`No matching data`},inputNumber:{decrement:`Decrement`,increment:`Increment`},modal:{close:`Close`},pricingTable:{caption:`Pricing plan comparison`},prose:{codeCollapse:{closeText:`Collapse`,name:`code`,openText:`Expand`},collapsible:{closeText:`Hide`,name:`properties`,openText:`Show`},pre:{copy:`Copy code to clipboard`}},selectMenu:{create:`Create "{label}"`,noData:`No data`,noMatch:`No matching data`,search:`Search…`},slideover:{close:`Close`},table:{noData:`No data`},toast:{close:`Close`}}});const oc=Symbol.for(`nuxt-ui.locale-context`),sc=Lo(e=>{let t=e||ee(O(oc,ac));return ic(y(()=>t.value||ac))});var cc=si();function lc(){return{isHydrating:!0,payload:{serverRendered:!1},hooks:cc,hook:cc.hook}}function uc(e){return{install(t){t.runWithContext(()=>e({vueApp:t}))}}}function dc(e,t){let n=typeof e==`string`&&!t?`${e}Context`:t,r=Symbol(n);return[t=>{let n=O(r,t);if(n||n===null)return n;throw Error(`Injection \`${r.toString()}\` not found. Component must be used within ${Array.isArray(e)?`one of the following components: ${e.join(`, `)}`:`\`${e}\``}`)},e=>(a(r,e),e)]}function fc(e){return e?e.flatMap(e=>e.type===ne?fc(e.children):[e]):[]}var pc=k({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=fc(n.default()),i=e.findIndex(e=>e.type!==h);if(i===-1)return e;let a=e[i];delete a.props?.ref;let o=a.props?r(t,a.props):t,s=oe({...a,props:{}},o);return e.length===1?s:(e[i]=s,e)}}}),mc=[`area`,`img`,`input`],hc=k({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(e,{attrs:t,slots:n}){let r=e.asChild?`template`:e.as;return typeof r==`string`&&mc.includes(r)?()=>d(r,t):r===`template`?()=>d(pc,t,{default:n.default}):()=>d(e.as,t,{default:n.default})}}),gc=/\s+/g,_c=e=>typeof e!=`string`||!e?e:e.replace(gc,` `).trim(),vc=(...e)=>{let t=[],n=e=>{if(!e&&e!==0&&e!==0n)return;if(Array.isArray(e)){for(let t=0,r=e.length;t0?_c(t.join(` `)):void 0},yc=e=>e===!1?`false`:e===!0?`true`:e===0?`0`:e,bc=e=>{if(!e||typeof e!=`object`)return!0;for(let t in e)return!1;return!0},xc=(e,t)=>{if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i=0;i{for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let r=t[n];n in e?e[n]=vc(e[n],r):e[n]=r}return e},Cc=(e,t)=>{for(let n=0;n{let t=[];Cc(e,t);let n=[];for(let e=0;e{let n={};for(let r in e){let i=e[r];if(r in t){let e=t[r];Array.isArray(i)||Array.isArray(e)?n[r]=wc(e,i):typeof i==`object`&&typeof e==`object`&&i&&e?n[r]=Tc(i,e):n[r]=e+` `+i}else n[r]=i}for(let r in t)r in e||(n[r]=t[r]);return n},Ec={twMerge:!0,twMergeConfig:{}};function Dc(){let e=null,t={},n=!1;return{get cachedTwMerge(){return e},set cachedTwMerge(t){e=t},get cachedTwMergeConfig(){return t},set cachedTwMergeConfig(e){t=e},get didTwMergeConfigChange(){return n},set didTwMergeConfigChange(e){n=e},reset(){e=null,t={},n=!1}}}var Oc=Dc(),kc=e=>{let t=(t,n)=>{let{extend:r=null,slots:i={},variants:a={},compoundVariants:o=[],compoundSlots:s=[],defaultVariants:c={}}=t,l={...Ec,...n},u=r?.base?vc(r.base,t?.base):t?.base,d=r?.variants&&!bc(r.variants)?Tc(a,r.variants):a,f=r?.defaultVariants&&!bc(r.defaultVariants)?{...r.defaultVariants,...c}:c;!bc(l.twMergeConfig)&&!xc(l.twMergeConfig,Oc.cachedTwMergeConfig)&&(Oc.didTwMergeConfigChange=!0,Oc.cachedTwMergeConfig=l.twMergeConfig);let p=bc(r?.slots),m=bc(i)?{}:{base:vc(t?.base,p&&r?.base),...i},h=p?m:Sc({...r?.slots},bc(m)?{base:t?.base}:m),g=bc(r?.compoundVariants)?o:wc(r?.compoundVariants,o),_=t=>{if(bc(d)&&bc(i)&&p)return e(u,t?.class,t?.className)(l);if(g&&!Array.isArray(g))throw TypeError(`The "compoundVariants" prop must be an array. Received: ${typeof g}`);if(s&&!Array.isArray(s))throw TypeError(`The "compoundSlots" prop must be an array. Received: ${typeof s}`);let n=(e,n=d,r=null,i=null)=>{let a=n[e];if(!a||bc(a))return null;let o=i?.[e]??t?.[e];if(o===null)return null;let s=yc(o);if(typeof s==`object`)return null;let c=f?.[e];return a[(s??yc(c))||`false`]},r=()=>{if(!d)return null;let e=Object.keys(d),t=[];for(let r=0;r{if(!d||typeof d!=`object`)return null;let r=[];for(let i in d){let a=n(i,d,e,t),o=e===`base`&&typeof a==`string`?a:a&&a[e];o&&r.push(o)}return r},o={};for(let e in t){let n=t[e];n!==void 0&&(o[e]=n)}let c=(e,n)=>{let r=typeof t?.[e]==`object`?{[e]:t[e]?.initial}:{};return{...f,...o,...r,...n}},m=(e=[],t)=>{let n=[],r=e.length;for(let i=0;i{let n=m(g,t);if(!Array.isArray(n))return n;let r={},i=e;for(let e=0;e{if(s.length<1)return null;let t={},n=c(null,e);for(let e=0;e{let r=_(t),i=v(t);return n(h[e],a(e,t),r?r[e]:void 0,i?i[e]:void 0,t?.class,t?.className)(l)}}return t}return e(u,r(),m(g),t?.class,t?.className)(l)};return _.variantKeys=(()=>{if(!(!d||typeof d!=`object`))return Object.keys(d)})(),_.extend=r,_.base=u,_.slots=h,_.variants=d,_.defaultVariants=f,_.compoundSlots=s,_.compoundVariants=g,_};return{tv:t,createTV:e=>(n,r)=>t(n,r?Tc(e,r):e)}},Ac=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),Mc=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Nc=`-`,Pc=[],Fc=`arbitrary..`,Ic=e=>{let t=zc(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Rc(e);let n=e.split(Nc);return Lc(n,n[0]===``&&n.length>1?1:0,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?Ac(i,t):t:i||Pc}return n[e]||Pc}}},Lc=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=Lc(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(Nc):e.slice(t).join(Nc),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?Fc+r:void 0})(),zc=e=>{let{theme:t,classGroups:n}=e;return Bc(n,t)},Bc=(e,t)=>{let n=Mc();for(let r in e){let i=e[r];Vc(i,n,r,t)}return n},Vc=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){Uc(e,t,n);return}if(typeof e==`function`){Wc(e,t,n,r);return}Gc(e,t,n,r)},Uc=(e,t,n)=>{let r=e===``?t:Kc(t,e);r.classGroupId=n},Wc=(e,t,n,r)=>{if(qc(e)){Vc(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(jc(n,e))},Gc=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(Nc),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,Jc=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},Yc=`!`,Xc=`:`,Zc=[],Qc=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),$c=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return Qc(t,l,c,u)};if(t){let e=t+Xc,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):Qc(Zc,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},el=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},tl=e=>({cache:Jc(e.cacheSize),parseClassName:$c(e),sortModifiers:el(e),...Ic(e)}),nl=/\s+/,rl=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(nl),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+Yc:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e0?` `+c:c)}return c},il=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=tl(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=rl(e,n);return i(e,a),a};return a=o,(...e)=>a(il(...e))},sl=[],X=e=>{let t=t=>t[e]||sl;return t.isThemeGetter=!0,t},cl=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ll=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ul=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,dl=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,fl=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,pl=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,ml=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,hl=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,gl=e=>ul.test(e),Z=e=>!!e&&!Number.isNaN(Number(e)),_l=e=>!!e&&Number.isInteger(Number(e)),vl=e=>e.endsWith(`%`)&&Z(e.slice(0,-1)),yl=e=>dl.test(e),bl=()=>!0,xl=e=>fl.test(e)&&!pl.test(e),Sl=()=>!1,Cl=e=>ml.test(e),wl=e=>hl.test(e),Tl=e=>!Q(e)&&!$(e),El=e=>Vl(e,Gl,Sl),Q=e=>cl.test(e),Dl=e=>Vl(e,Kl,xl),Ol=e=>Vl(e,ql,Z),kl=e=>Vl(e,Yl,bl),Al=e=>Vl(e,Jl,Sl),jl=e=>Vl(e,Ul,Sl),Ml=e=>Vl(e,Wl,wl),Nl=e=>Vl(e,Xl,Cl),$=e=>ll.test(e),Pl=e=>Hl(e,Kl),Fl=e=>Hl(e,Jl),Il=e=>Hl(e,Ul),Ll=e=>Hl(e,Gl),Rl=e=>Hl(e,Wl),zl=e=>Hl(e,Xl,!0),Bl=e=>Hl(e,Yl,!0),Vl=(e,t,n)=>{let r=cl.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Hl=(e,t,n=!1)=>{let r=ll.exec(e);return r?r[1]?t(r[1]):n:!1},Ul=e=>e===`position`||e===`percentage`,Wl=e=>e===`image`||e===`url`,Gl=e=>e===`length`||e===`size`||e===`bg-size`,Kl=e=>e===`length`,ql=e=>e===`number`,Jl=e=>e===`family-name`,Yl=e=>e===`number`||e===`weight`,Xl=e=>e===`shadow`,Zl=()=>{let e=X(`color`),t=X(`font`),n=X(`text`),r=X(`font-weight`),i=X(`tracking`),a=X(`leading`),o=X(`breakpoint`),s=X(`container`),c=X(`spacing`),l=X(`radius`),u=X(`shadow`),d=X(`inset-shadow`),f=X(`text-shadow`),p=X(`drop-shadow`),m=X(`blur`),h=X(`perspective`),g=X(`aspect`),_=X(`ease`),v=X(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),$,Q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],ee=()=>[`auto`,`contain`,`none`],C=()=>[$,Q,c],w=()=>[gl,`full`,`auto`,...C()],te=()=>[_l,`none`,`subgrid`,$,Q],ne=()=>[`auto`,{span:[`full`,_l,$,Q]},_l,$,Q],T=()=>[_l,`auto`,$,Q],re=()=>[`auto`,`min`,`max`,`fr`,$,Q],ie=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],ae=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],E=()=>[`auto`,...C()],oe=()=>[gl,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...C()],D=()=>[gl,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...C()],O=()=>[gl,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...C()],k=()=>[e,$,Q],A=()=>[...b(),Il,jl,{position:[$,Q]}],se=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ce=()=>[`auto`,`cover`,`contain`,Ll,El,{size:[$,Q]}],j=()=>[vl,Pl,Dl],M=()=>[``,`none`,`full`,l,$,Q],N=()=>[``,Z,Pl,Dl],P=()=>[`solid`,`dashed`,`dotted`,`double`],le=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],F=()=>[Z,vl,Il,jl],ue=()=>[``,`none`,m,$,Q],I=()=>[`none`,Z,$,Q],de=()=>[`none`,Z,$,Q],L=()=>[Z,$,Q],fe=()=>[gl,`full`,...C()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[yl],breakpoint:[yl],color:[bl],container:[yl],"drop-shadow":[yl],ease:[`in`,`out`,`in-out`],font:[Tl],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[yl],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[yl],shadow:[yl],spacing:[`px`,Z],text:[yl],"text-shadow":[yl],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,gl,Q,$,g]}],container:[`container`],columns:[{columns:[Z,Q,$,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:ee()}],"overscroll-x":[{"overscroll-x":ee()}],"overscroll-y":[{"overscroll-y":ee()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:w()}],"inset-x":[{"inset-x":w()}],"inset-y":[{"inset-y":w()}],start:[{"inset-s":w(),start:w()}],end:[{"inset-e":w(),end:w()}],"inset-bs":[{"inset-bs":w()}],"inset-be":[{"inset-be":w()}],top:[{top:w()}],right:[{right:w()}],bottom:[{bottom:w()}],left:[{left:w()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[_l,`auto`,$,Q]}],basis:[{basis:[gl,`full`,`auto`,s,...C()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[Z,gl,`auto`,`initial`,`none`,Q]}],grow:[{grow:[``,Z,$,Q]}],shrink:[{shrink:[``,Z,$,Q]}],order:[{order:[_l,`first`,`last`,`none`,$,Q]}],"grid-cols":[{"grid-cols":te()}],"col-start-end":[{col:ne()}],"col-start":[{"col-start":T()}],"col-end":[{"col-end":T()}],"grid-rows":[{"grid-rows":te()}],"row-start-end":[{row:ne()}],"row-start":[{"row-start":T()}],"row-end":[{"row-end":T()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":re()}],"auto-rows":[{"auto-rows":re()}],gap:[{gap:C()}],"gap-x":[{"gap-x":C()}],"gap-y":[{"gap-y":C()}],"justify-content":[{justify:[...ie(),`normal`]}],"justify-items":[{"justify-items":[...ae(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...ae()]}],"align-content":[{content:[`normal`,...ie()]}],"align-items":[{items:[...ae(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...ae(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ie()}],"place-items":[{"place-items":[...ae(),`baseline`]}],"place-self":[{"place-self":[`auto`,...ae()]}],p:[{p:C()}],px:[{px:C()}],py:[{py:C()}],ps:[{ps:C()}],pe:[{pe:C()}],pbs:[{pbs:C()}],pbe:[{pbe:C()}],pt:[{pt:C()}],pr:[{pr:C()}],pb:[{pb:C()}],pl:[{pl:C()}],m:[{m:E()}],mx:[{mx:E()}],my:[{my:E()}],ms:[{ms:E()}],me:[{me:E()}],mbs:[{mbs:E()}],mbe:[{mbe:E()}],mt:[{mt:E()}],mr:[{mr:E()}],mb:[{mb:E()}],ml:[{ml:E()}],"space-x":[{"space-x":C()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":C()}],"space-y-reverse":[`space-y-reverse`],size:[{size:oe()}],"inline-size":[{inline:[`auto`,...D()]}],"min-inline-size":[{"min-inline":[`auto`,...D()]}],"max-inline-size":[{"max-inline":[`none`,...D()]}],"block-size":[{block:[`auto`,...O()]}],"min-block-size":[{"min-block":[`auto`,...O()]}],"max-block-size":[{"max-block":[`none`,...O()]}],w:[{w:[s,`screen`,...oe()]}],"min-w":[{"min-w":[s,`screen`,`none`,...oe()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...oe()]}],h:[{h:[`screen`,`lh`,...oe()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...oe()]}],"max-h":[{"max-h":[`screen`,`lh`,...oe()]}],"font-size":[{text:[`base`,n,Pl,Dl]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Bl,kl]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,vl,Q]}],"font-family":[{font:[Fl,Al,t]}],"font-features":[{"font-features":[Q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,$,Q]}],"line-clamp":[{"line-clamp":[Z,`none`,$,Ol]}],leading:[{leading:[a,...C()]}],"list-image":[{"list-image":[`none`,$,Q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,$,Q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:k()}],"text-color":[{text:k()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...P(),`wavy`]}],"text-decoration-thickness":[{decoration:[Z,`from-font`,`auto`,$,Dl]}],"text-decoration-color":[{decoration:k()}],"underline-offset":[{"underline-offset":[Z,`auto`,$,Q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:C()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,$,Q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,$,Q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:A()}],"bg-repeat":[{bg:se()}],"bg-size":[{bg:ce()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},_l,$,Q],radial:[``,$,Q],conic:[_l,$,Q]},Rl,Ml]}],"bg-color":[{bg:k()}],"gradient-from-pos":[{from:j()}],"gradient-via-pos":[{via:j()}],"gradient-to-pos":[{to:j()}],"gradient-from":[{from:k()}],"gradient-via":[{via:k()}],"gradient-to":[{to:k()}],rounded:[{rounded:M()}],"rounded-s":[{"rounded-s":M()}],"rounded-e":[{"rounded-e":M()}],"rounded-t":[{"rounded-t":M()}],"rounded-r":[{"rounded-r":M()}],"rounded-b":[{"rounded-b":M()}],"rounded-l":[{"rounded-l":M()}],"rounded-ss":[{"rounded-ss":M()}],"rounded-se":[{"rounded-se":M()}],"rounded-ee":[{"rounded-ee":M()}],"rounded-es":[{"rounded-es":M()}],"rounded-tl":[{"rounded-tl":M()}],"rounded-tr":[{"rounded-tr":M()}],"rounded-br":[{"rounded-br":M()}],"rounded-bl":[{"rounded-bl":M()}],"border-w":[{border:N()}],"border-w-x":[{"border-x":N()}],"border-w-y":[{"border-y":N()}],"border-w-s":[{"border-s":N()}],"border-w-e":[{"border-e":N()}],"border-w-bs":[{"border-bs":N()}],"border-w-be":[{"border-be":N()}],"border-w-t":[{"border-t":N()}],"border-w-r":[{"border-r":N()}],"border-w-b":[{"border-b":N()}],"border-w-l":[{"border-l":N()}],"divide-x":[{"divide-x":N()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":N()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...P(),`hidden`,`none`]}],"divide-style":[{divide:[...P(),`hidden`,`none`]}],"border-color":[{border:k()}],"border-color-x":[{"border-x":k()}],"border-color-y":[{"border-y":k()}],"border-color-s":[{"border-s":k()}],"border-color-e":[{"border-e":k()}],"border-color-bs":[{"border-bs":k()}],"border-color-be":[{"border-be":k()}],"border-color-t":[{"border-t":k()}],"border-color-r":[{"border-r":k()}],"border-color-b":[{"border-b":k()}],"border-color-l":[{"border-l":k()}],"divide-color":[{divide:k()}],"outline-style":[{outline:[...P(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[Z,$,Q]}],"outline-w":[{outline:[``,Z,Pl,Dl]}],"outline-color":[{outline:k()}],shadow:[{shadow:[``,`none`,u,zl,Nl]}],"shadow-color":[{shadow:k()}],"inset-shadow":[{"inset-shadow":[`none`,d,zl,Nl]}],"inset-shadow-color":[{"inset-shadow":k()}],"ring-w":[{ring:N()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:k()}],"ring-offset-w":[{"ring-offset":[Z,Dl]}],"ring-offset-color":[{"ring-offset":k()}],"inset-ring-w":[{"inset-ring":N()}],"inset-ring-color":[{"inset-ring":k()}],"text-shadow":[{"text-shadow":[`none`,f,zl,Nl]}],"text-shadow-color":[{"text-shadow":k()}],opacity:[{opacity:[Z,$,Q]}],"mix-blend":[{"mix-blend":[...le(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":le()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[Z]}],"mask-image-linear-from-pos":[{"mask-linear-from":F()}],"mask-image-linear-to-pos":[{"mask-linear-to":F()}],"mask-image-linear-from-color":[{"mask-linear-from":k()}],"mask-image-linear-to-color":[{"mask-linear-to":k()}],"mask-image-t-from-pos":[{"mask-t-from":F()}],"mask-image-t-to-pos":[{"mask-t-to":F()}],"mask-image-t-from-color":[{"mask-t-from":k()}],"mask-image-t-to-color":[{"mask-t-to":k()}],"mask-image-r-from-pos":[{"mask-r-from":F()}],"mask-image-r-to-pos":[{"mask-r-to":F()}],"mask-image-r-from-color":[{"mask-r-from":k()}],"mask-image-r-to-color":[{"mask-r-to":k()}],"mask-image-b-from-pos":[{"mask-b-from":F()}],"mask-image-b-to-pos":[{"mask-b-to":F()}],"mask-image-b-from-color":[{"mask-b-from":k()}],"mask-image-b-to-color":[{"mask-b-to":k()}],"mask-image-l-from-pos":[{"mask-l-from":F()}],"mask-image-l-to-pos":[{"mask-l-to":F()}],"mask-image-l-from-color":[{"mask-l-from":k()}],"mask-image-l-to-color":[{"mask-l-to":k()}],"mask-image-x-from-pos":[{"mask-x-from":F()}],"mask-image-x-to-pos":[{"mask-x-to":F()}],"mask-image-x-from-color":[{"mask-x-from":k()}],"mask-image-x-to-color":[{"mask-x-to":k()}],"mask-image-y-from-pos":[{"mask-y-from":F()}],"mask-image-y-to-pos":[{"mask-y-to":F()}],"mask-image-y-from-color":[{"mask-y-from":k()}],"mask-image-y-to-color":[{"mask-y-to":k()}],"mask-image-radial":[{"mask-radial":[$,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":F()}],"mask-image-radial-to-pos":[{"mask-radial-to":F()}],"mask-image-radial-from-color":[{"mask-radial-from":k()}],"mask-image-radial-to-color":[{"mask-radial-to":k()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[Z]}],"mask-image-conic-from-pos":[{"mask-conic-from":F()}],"mask-image-conic-to-pos":[{"mask-conic-to":F()}],"mask-image-conic-from-color":[{"mask-conic-from":k()}],"mask-image-conic-to-color":[{"mask-conic-to":k()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:A()}],"mask-repeat":[{mask:se()}],"mask-size":[{mask:ce()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,$,Q]}],filter:[{filter:[``,`none`,$,Q]}],blur:[{blur:ue()}],brightness:[{brightness:[Z,$,Q]}],contrast:[{contrast:[Z,$,Q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,zl,Nl]}],"drop-shadow-color":[{"drop-shadow":k()}],grayscale:[{grayscale:[``,Z,$,Q]}],"hue-rotate":[{"hue-rotate":[Z,$,Q]}],invert:[{invert:[``,Z,$,Q]}],saturate:[{saturate:[Z,$,Q]}],sepia:[{sepia:[``,Z,$,Q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,$,Q]}],"backdrop-blur":[{"backdrop-blur":ue()}],"backdrop-brightness":[{"backdrop-brightness":[Z,$,Q]}],"backdrop-contrast":[{"backdrop-contrast":[Z,$,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,Z,$,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Z,$,Q]}],"backdrop-invert":[{"backdrop-invert":[``,Z,$,Q]}],"backdrop-opacity":[{"backdrop-opacity":[Z,$,Q]}],"backdrop-saturate":[{"backdrop-saturate":[Z,$,Q]}],"backdrop-sepia":[{"backdrop-sepia":[``,Z,$,Q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":C()}],"border-spacing-x":[{"border-spacing-x":C()}],"border-spacing-y":[{"border-spacing-y":C()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,$,Q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[Z,`initial`,$,Q]}],ease:[{ease:[`linear`,`initial`,_,$,Q]}],delay:[{delay:[Z,$,Q]}],animate:[{animate:[`none`,v,$,Q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,$,Q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:I()}],"rotate-x":[{"rotate-x":I()}],"rotate-y":[{"rotate-y":I()}],"rotate-z":[{"rotate-z":I()}],scale:[{scale:de()}],"scale-x":[{"scale-x":de()}],"scale-y":[{"scale-y":de()}],"scale-z":[{"scale-z":de()}],"scale-3d":[`scale-3d`],skew:[{skew:L()}],"skew-x":[{"skew-x":L()}],"skew-y":[{"skew-y":L()}],transform:[{transform:[$,Q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:fe()}],"translate-x":[{"translate-x":fe()}],"translate-y":[{"translate-y":fe()}],"translate-z":[{"translate-z":fe()}],"translate-none":[`translate-none`],accent:[{accent:k()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:k()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,$,Q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":C()}],"scroll-mx":[{"scroll-mx":C()}],"scroll-my":[{"scroll-my":C()}],"scroll-ms":[{"scroll-ms":C()}],"scroll-me":[{"scroll-me":C()}],"scroll-mbs":[{"scroll-mbs":C()}],"scroll-mbe":[{"scroll-mbe":C()}],"scroll-mt":[{"scroll-mt":C()}],"scroll-mr":[{"scroll-mr":C()}],"scroll-mb":[{"scroll-mb":C()}],"scroll-ml":[{"scroll-ml":C()}],"scroll-p":[{"scroll-p":C()}],"scroll-px":[{"scroll-px":C()}],"scroll-py":[{"scroll-py":C()}],"scroll-ps":[{"scroll-ps":C()}],"scroll-pe":[{"scroll-pe":C()}],"scroll-pbs":[{"scroll-pbs":C()}],"scroll-pbe":[{"scroll-pbe":C()}],"scroll-pt":[{"scroll-pt":C()}],"scroll-pr":[{"scroll-pr":C()}],"scroll-pb":[{"scroll-pb":C()}],"scroll-pl":[{"scroll-pl":C()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,$,Q]}],fill:[{fill:[`none`,...k()]}],"stroke-w":[{stroke:[Z,Pl,Dl,Ol]}],stroke:[{stroke:[`none`,...k()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}},Ql=(e,{cacheSize:t,prefix:n,experimentalParseClassName:r,extend:i={},override:a={}})=>($l(e,`cacheSize`,t),$l(e,`prefix`,n),$l(e,`experimentalParseClassName`,r),eu(e.theme,a.theme),eu(e.classGroups,a.classGroups),eu(e.conflictingClassGroups,a.conflictingClassGroups),eu(e.conflictingClassGroupModifiers,a.conflictingClassGroupModifiers),$l(e,`orderSensitiveModifiers`,a.orderSensitiveModifiers),tu(e.theme,i.theme),tu(e.classGroups,i.classGroups),tu(e.conflictingClassGroups,i.conflictingClassGroups),tu(e.conflictingClassGroupModifiers,i.conflictingClassGroupModifiers),nu(e,i,`orderSensitiveModifiers`),e),$l=(e,t,n)=>{n!==void 0&&(e[t]=n)},eu=(e,t)=>{if(t)for(let n in t)$l(e,n,t[n])},tu=(e,t)=>{if(t)for(let n in t)nu(e,t,n)},nu=(e,t,n)=>{let r=t[n];r!==void 0&&(e[n]=e[n]?e[n].concat(r):r)},ru=(e,...t)=>typeof e==`function`?ol(Zl,e,...t):ol(()=>Ql(Zl(),e),...t),iu=ol(Zl),au=e=>bc(e)?iu:ru({...e,extend:{theme:e.theme,classGroups:e.classGroups,conflictingClassGroupModifiers:e.conflictingClassGroupModifiers,conflictingClassGroups:e.conflictingClassGroups,...e.extend}}),ou=(e,t)=>{let n=vc(e);return!n||!(t?.twMerge??!0)?n:((!Oc.cachedTwMerge||Oc.didTwMergeConfigChange)&&(Oc.didTwMergeConfigChange=!1,Oc.cachedTwMerge=au(Oc.cachedTwMergeConfig)),Oc.cachedTwMerge(n)||void 0)},{createTV:su,tv:cu}=kc((...e)=>t=>ou(e,t));const lu=su(Os.ui?.tv);var[uu,du]=dc(`UTheme`,`RootContext`);function fu(e,t){let{ui:n}=uu({ui:y(()=>({}))});return y(()=>{let r=Ys(n.value,e)||{};return Ps(t.ui??{},r)})}var pu=/^[a-z0-9]+(-[a-z0-9]+)*$/,mu=(e,t,n,r=``)=>{let i=e.split(`:`);if(e.slice(0,1)===`@`){if(i.length<2||i.length>3)return null;r=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let e=i.pop(),n=i.pop(),a={provider:i.length>0?i[0]:r,prefix:n,name:e};return t&&!hu(a)?null:a}let a=i[0],o=a.split(`-`);if(o.length>1){let e={provider:r,prefix:o.shift(),name:o.join(`-`)};return t&&!hu(e)?null:e}if(n&&r===``){let e={provider:r,prefix:``,name:a};return t&&!hu(e,n)?null:e}return null},hu=(e,t)=>e?!!((t&&e.prefix===``||e.prefix)&&e.name):!1,gu=Object.freeze({left:0,top:0,width:16,height:16}),_u=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),vu=Object.freeze({...gu,..._u}),yu=Object.freeze({...vu,body:``,hidden:!1});function bu(e,t){let n={};!e.hFlip!=!t.hFlip&&(n.hFlip=!0),!e.vFlip!=!t.vFlip&&(n.vFlip=!0);let r=((e.rotate||0)+(t.rotate||0))%4;return r&&(n.rotate=r),n}function xu(e,t){let n=bu(e,t);for(let r in yu)r in _u?r in e&&!(r in n)&&(n[r]=_u[r]):r in t?n[r]=t[r]:r in e&&(n[r]=e[r]);return n}function Su(e,t){let n=e.icons,r=e.aliases||Object.create(null),i=Object.create(null);function a(e){if(n[e])return i[e]=[];if(!(e in i)){i[e]=null;let t=r[e]&&r[e].parent,n=t&&a(t);n&&(i[e]=[t].concat(n))}return i[e]}return Object.keys(n).concat(Object.keys(r)).forEach(a),i}function Cu(e,t,n){let r=e.icons,i=e.aliases||Object.create(null),a={};function o(e){a=xu(r[e]||i[e],a)}return o(t),n.forEach(o),xu(e,a)}function wu(e,t){let n=[];if(typeof e!=`object`||typeof e.icons!=`object`)return n;e.not_found instanceof Array&&e.not_found.forEach(e=>{t(e,null),n.push(e)});let r=Su(e);for(let i in r){let a=r[i];a&&(t(i,Cu(e,i,a)),n.push(i))}return n}var Tu={provider:``,aliases:{},not_found:{},...gu};function Eu(e,t){for(let n in t)if(n in e&&typeof e[n]!=typeof t[n])return!1;return!0}function Du(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.prefix!=`string`||!e.icons||typeof e.icons!=`object`||!Eu(e,Tu))return null;let n=t.icons;for(let e in n){let t=n[e];if(!e||typeof t.body!=`string`||!Eu(t,yu))return null}let r=t.aliases||Object.create(null);for(let e in r){let t=r[e],i=t.parent;if(!e||typeof i!=`string`||!n[i]&&!r[i]||!Eu(t,yu))return null}return t}var Ou=Object.create(null);function ku(e,t){return{provider:e,prefix:t,icons:Object.create(null),missing:new Set}}function Au(e,t){let n=Ou[e]||(Ou[e]=Object.create(null));return n[t]||(n[t]=ku(e,t))}function ju(e,t){return Du(t)?wu(t,(t,n)=>{n?e.icons[t]=n:e.missing.add(t)}):[]}function Mu(e,t,n){try{if(typeof n.body==`string`)return e.icons[t]={...n},!0}catch{}return!1}var Nu=!1;function Pu(e){return typeof e==`boolean`&&(Nu=e),Nu}function Fu(e){let t=typeof e==`string`?mu(e,!0,Nu):e;if(t){let e=Au(t.provider,t.prefix),n=t.name;return e.icons[n]||(e.missing.has(n)?null:void 0)}}function Iu(e,t){let n=mu(e,!0,Nu);if(!n)return!1;let r=Au(n.provider,n.prefix);return t?Mu(r,n.name,t):(r.missing.add(n.name),!0)}function Lu(e,t){if(typeof e!=`object`)return!1;if(typeof t!=`string`&&(t=e.provider||``),Nu&&!t&&!e.prefix){let t=!1;return Du(e)&&(e.prefix=``,wu(e,(e,n)=>{Iu(e,n)&&(t=!0)})),t}let n=e.prefix;return hu({prefix:n,name:`a`})?!!ju(Au(t,n),e):!1}var Ru=Object.freeze({width:null,height:null}),zu=Object.freeze({...Ru,..._u}),Bu=/(-?[0-9.]*[0-9]+[0-9.]*)/g,Vu=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function Hu(e,t,n){if(t===1)return e;if(n||=100,typeof e==`number`)return Math.ceil(e*t*n)/n;if(typeof e!=`string`)return e;let r=e.split(Bu);if(r===null||!r.length)return e;let i=[],a=r.shift(),o=Vu.test(a);for(;;){if(o){let e=parseFloat(a);isNaN(e)?i.push(a):i.push(Math.ceil(e*t*n)/n)}else i.push(a);if(a=r.shift(),a===void 0)return i.join(``);o=!o}}function Uu(e,t=`defs`){let n=``,r=e.indexOf(`<`+t);for(;r>=0;){let i=e.indexOf(`>`,r),a=e.indexOf(``,a);if(o===-1)break;n+=e.slice(i+1,a).trim(),e=e.slice(0,r).trim()+e.slice(o+1)}return{defs:n,content:e}}function Wu(e,t){return e?``+e+``+t:t}function Gu(e,t,n){let r=Uu(e);return Wu(r.defs,t+r.content+n)}var Ku=e=>e===`unset`||e===`undefined`||e===`none`;function qu(e,t){let n={...vu,...e},r={...zu,...t},i={left:n.left,top:n.top,width:n.width,height:n.height},a=n.body;[n,r].forEach(e=>{let t=[],n=e.hFlip,r=e.vFlip,o=e.rotate;n?r?o+=2:(t.push(`translate(`+(i.width+i.left).toString()+` `+(0-i.top).toString()+`)`),t.push(`scale(-1 1)`),i.top=i.left=0):r&&(t.push(`translate(`+(0-i.left).toString()+` `+(i.height+i.top).toString()+`)`),t.push(`scale(1 -1)`),i.top=i.left=0);let s;switch(o<0&&(o-=Math.floor(o/4)*4),o%=4,o){case 1:s=i.height/2+i.top,t.unshift(`rotate(90 `+s.toString()+` `+s.toString()+`)`);break;case 2:t.unshift(`rotate(180 `+(i.width/2+i.left).toString()+` `+(i.height/2+i.top).toString()+`)`);break;case 3:s=i.width/2+i.left,t.unshift(`rotate(-90 `+s.toString()+` `+s.toString()+`)`);break}o%2==1&&(i.left!==i.top&&(s=i.left,i.left=i.top,i.top=s),i.width!==i.height&&(s=i.width,i.width=i.height,i.height=s)),t.length&&(a=Gu(a,``,``))});let o=r.width,s=r.height,c=i.width,l=i.height,u,d;o===null?(d=s===null?`1em`:s===`auto`?l:s,u=Hu(d,c/l)):(u=o===`auto`?c:o,d=s===null?Hu(u,l/c):s===`auto`?l:s);let f={},p=(e,t)=>{Ku(t)||(f[e]=t.toString())};p(`width`,u),p(`height`,d);let m=[i.left,i.top,c,l];return f.viewBox=m.join(` `),{attributes:f,viewBox:m,body:a}}var Ju=/\sid="(\S+)"/g,Yu=`IconifyId`+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),Xu=0;function Zu(e,t=Yu){let n=[],r;for(;r=Ju.exec(e);)n.push(r[1]);if(!n.length)return e;let i=`suffix`+(Math.random()*16777216|Date.now()).toString(16);return n.forEach(n=>{let r=typeof t==`function`?t(n):t+(Xu++).toString(),a=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);e=e.replace(RegExp(`([#;"])(`+a+`)([")]|\\.[a-z])`,`g`),`$1`+r+i+`$3`)}),e=e.replace(new RegExp(i,`g`),``),e}var Qu=Object.create(null);function $u(e,t){Qu[e]=t}function ed(e){return Qu[e]||Qu[``]}function td(e){let t;if(typeof e.resources==`string`)t=[e.resources];else if(t=e.resources,!(t instanceof Array)||!t.length)return null;return{resources:t,path:e.path||`/`,maxURL:e.maxURL||500,rotate:e.rotate||750,timeout:e.timeout||5e3,random:e.random===!0,index:e.index||0,dataAfterTimeout:e.dataAfterTimeout!==!1}}for(var nd=Object.create(null),rd=[`https://api.simplesvg.com`,`https://api.unisvg.com`],id=[];rd.length>0;)rd.length===1||Math.random()>.5?id.push(rd.shift()):id.push(rd.pop());nd[``]=td({resources:[`https://api.iconify.design`].concat(id)});function ad(e,t){let n=td(t);return n===null?!1:(nd[e]=n,!0)}function od(e){return nd[e]}var sd=(()=>{let e;try{if(e=fetch,typeof e==`function`)return e}catch{}})();function cd(e,t){let n=od(e);if(!n)return 0;let r;if(!n.maxURL)r=0;else{let e=0;n.resources.forEach(t=>{let n=t;e=Math.max(e,n.length)});let i=t+`.json?icons=`;r=n.maxURL-e-n.path.length-i.length}return r}function ld(e){return e===404}var ud=(e,t,n)=>{let r=[],i=cd(e,t),a=`icons`,o={type:a,provider:e,prefix:t,icons:[]},s=0;return n.forEach((n,c)=>{s+=n.length+1,s>=i&&c>0&&(r.push(o),o={type:a,provider:e,prefix:t,icons:[]},s=n.length),o.icons.push(n)}),r.push(o),r};function dd(e){if(typeof e==`string`){let t=od(e);if(t)return t.path}return`/`}var fd={prepare:ud,send:(e,t,n)=>{if(!sd){n(`abort`,424);return}let r=dd(t.provider);switch(t.type){case`icons`:{let e=t.prefix,n=t.icons.join(`,`),i=new URLSearchParams({icons:n});r+=e+`.json?`+i.toString();break}case`custom`:{let e=t.uri;r+=e.slice(0,1)===`/`?e.slice(1):e;break}default:n(`abort`,400);return}let i=503;sd(e+r).then(e=>{let t=e.status;if(t!==200){setTimeout(()=>{n(ld(t)?`abort`:`next`,t)});return}return i=501,e.json()}).then(e=>{if(typeof e!=`object`||!e){setTimeout(()=>{e===404?n(`abort`,e):n(`next`,i)});return}setTimeout(()=>{n(`success`,e)})}).catch(()=>{n(`next`,i)})}};function pd(e){let t={loaded:[],missing:[],pending:[]},n=Object.create(null);e.sort((e,t)=>e.provider===t.provider?e.prefix===t.prefix?e.name.localeCompare(t.name):e.prefix.localeCompare(t.prefix):e.provider.localeCompare(t.provider));let r={provider:``,prefix:``,name:``};return e.forEach(e=>{if(r.name===e.name&&r.prefix===e.prefix&&r.provider===e.provider)return;r=e;let i=e.provider,a=e.prefix,o=e.name,s=n[i]||(n[i]=Object.create(null)),c=s[a]||(s[a]=Au(i,a)),l;l=o in c.icons?t.loaded:a===``||c.missing.has(o)?t.missing:t.pending;let u={provider:i,prefix:a,name:o};l.push(u)}),t}function md(e,t){e.forEach(e=>{let n=e.loaderCallbacks;n&&(e.loaderCallbacks=n.filter(e=>e.id!==t))})}function hd(e){e.pendingCallbacksFlag||(e.pendingCallbacksFlag=!0,setTimeout(()=>{e.pendingCallbacksFlag=!1;let t=e.loaderCallbacks?e.loaderCallbacks.slice(0):[];if(!t.length)return;let n=!1,r=e.provider,i=e.prefix;t.forEach(t=>{let a=t.icons,o=a.pending.length;a.pending=a.pending.filter(t=>{if(t.prefix!==i)return!0;let o=t.name;if(e.icons[o])a.loaded.push({provider:r,prefix:i,name:o});else if(e.missing.has(o))a.missing.push({provider:r,prefix:i,name:o});else return n=!0,!0;return!1}),a.pending.length!==o&&(n||md([e],t.id),t.callback(a.loaded.slice(0),a.missing.slice(0),a.pending.slice(0),t.abort))})}))}var gd=0;function _d(e,t,n){let r=gd++,i=md.bind(null,n,r);if(!t.pending.length)return i;let a={id:r,icons:t,callback:e,abort:i};return n.forEach(e=>{(e.loaderCallbacks||=[]).push(a)}),i}function vd(e,t=!0,n=!1){let r=[];return e.forEach(e=>{let i=typeof e==`string`?mu(e,t,n):e;i&&r.push(i)}),r}var yd={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function bd(e,t,n,r){let i=e.resources.length,a=e.random?Math.floor(Math.random()*i):e.index,o;if(e.random){let t=e.resources.slice(0);for(o=[];t.length>1;){let e=Math.floor(Math.random()*t.length);o.push(t[e]),t=t.slice(0,e).concat(t.slice(e+1))}o=o.concat(t)}else o=e.resources.slice(a).concat(e.resources.slice(0,a));let s=Date.now(),c=`pending`,l=0,u,d=null,f=[],p=[];typeof r==`function`&&p.push(r);function m(){d&&=(clearTimeout(d),null)}function h(){c===`pending`&&(c=`aborted`),m(),f.forEach(e=>{e.status===`pending`&&(e.status=`aborted`)}),f=[]}function g(e,t){t&&(p=[]),typeof e==`function`&&p.push(e)}function _(){return{startTime:s,payload:t,status:c,queriesSent:l,queriesPending:f.length,subscribe:g,abort:h}}function v(){c=`failed`,p.forEach(e=>{e(void 0,u)})}function y(){f.forEach(e=>{e.status===`pending`&&(e.status=`aborted`)}),f=[]}function b(t,n,r){let i=n!==`success`;switch(f=f.filter(e=>e!==t),c){case`pending`:break;case`failed`:if(i||!e.dataAfterTimeout)return;break;default:return}if(n===`abort`){u=r,v();return}if(i){u=r,f.length||(o.length?x():v());return}if(m(),y(),!e.random){let n=e.resources.indexOf(t.resource);n!==-1&&n!==e.index&&(e.index=n)}c=`completed`,p.forEach(e=>{e(r)})}function x(){if(c!==`pending`)return;m();let r=o.shift();if(r===void 0){if(f.length){d=setTimeout(()=>{m(),c===`pending`&&(y(),v())},e.timeout);return}v();return}let i={status:`pending`,resource:r,callback:(e,t)=>{b(i,e,t)}};f.push(i),l++,d=setTimeout(x,e.rotate),n(r,t,i.callback)}return setTimeout(x),_}function xd(e){let t={...yd,...e},n=[];function r(){n=n.filter(e=>e().status===`pending`)}function i(e,i,a){let o=bd(t,e,i,(e,t)=>{r(),a&&a(e,t)});return n.push(o),o}function a(e){return n.find(t=>e(t))||null}return{query:i,find:a,setIndex:e=>{t.index=e},getIndex:()=>t.index,cleanup:r}}function Sd(){}var Cd=Object.create(null);function wd(e){if(!Cd[e]){let t=od(e);if(!t)return;Cd[e]={config:t,redundancy:xd(t)}}return Cd[e]}function Td(e,t,n){let r,i;if(typeof e==`string`){let t=ed(e);if(!t)return n(void 0,424),Sd;i=t.send;let a=wd(e);a&&(r=a.redundancy)}else{let t=td(e);if(t){r=xd(t);let n=ed(e.resources?e.resources[0]:``);n&&(i=n.send)}}return!r||!i?(n(void 0,424),Sd):r.query(t,i,n)().abort}function Ed(){}function Dd(e){e.iconsLoaderFlag||(e.iconsLoaderFlag=!0,setTimeout(()=>{e.iconsLoaderFlag=!1,hd(e)}))}function Od(e){let t=[],n=[];return e.forEach(e=>{(e.match(pu)?t:n).push(e)}),{valid:t,invalid:n}}function kd(e,t,n){function r(){let n=e.pendingIcons;t.forEach(t=>{n&&n.delete(t),e.icons[t]||e.missing.add(t)})}if(n&&typeof n==`object`)try{if(!ju(e,n).length){r();return}}catch(e){console.error(e)}r(),Dd(e)}function Ad(e,t){e instanceof Promise?e.then(e=>{t(e)}).catch(()=>{t(null)}):t(e)}function jd(e,t){e.iconsToLoad?e.iconsToLoad=e.iconsToLoad.concat(t).sort():e.iconsToLoad=t,e.iconsQueueFlag||(e.iconsQueueFlag=!0,setTimeout(()=>{e.iconsQueueFlag=!1;let{provider:t,prefix:n}=e,r=e.iconsToLoad;if(delete e.iconsToLoad,!r||!r.length)return;let i=e.loadIcon;if(e.loadIcons&&(r.length>1||!i)){Ad(e.loadIcons(r,n,t),t=>{kd(e,r,t)});return}if(i){r.forEach(r=>{Ad(i(r,n,t),t=>{kd(e,[r],t?{prefix:n,icons:{[r]:t}}:null)})});return}let{valid:a,invalid:o}=Od(r);if(o.length&&kd(e,o,null),!a.length)return;let s=n.match(pu)?ed(t):null;if(!s){kd(e,a,null);return}s.prepare(t,n,a).forEach(n=>{Td(t,n,t=>{kd(e,n.icons,t)})})}))}var Md=(e,t)=>{let n=pd(vd(e,!0,Pu()));if(!n.pending.length){let e=!0;return t&&setTimeout(()=>{e&&t(n.loaded,n.missing,n.pending,Ed)}),()=>{e=!1}}let r=Object.create(null),i=[],a,o;return n.pending.forEach(e=>{let{provider:t,prefix:n}=e;if(n===o&&t===a)return;a=t,o=n,i.push(Au(t,n));let s=r[t]||(r[t]=Object.create(null));s[n]||(s[n]=[])}),n.pending.forEach(e=>{let{provider:t,prefix:n,name:i}=e,a=Au(t,n),o=a.pendingIcons||=new Set;o.has(i)||(o.add(i),r[t][n].push(i))}),i.forEach(e=>{let t=r[e.provider][e.prefix];t.length&&jd(e,t)}),t?_d(t,n,i):Ed};function Nd(e,t){let n={...e};for(let e in t){let r=t[e],i=typeof r;e in Ru?(r===null||r&&(i===`string`||i===`number`))&&(n[e]=r):i===typeof n[e]&&(n[e]=e===`rotate`?r%4:r)}return n}var Pd=/[\s,]+/;function Fd(e,t){t.split(Pd).forEach(t=>{switch(t.trim()){case`horizontal`:e.hFlip=!0;break;case`vertical`:e.vFlip=!0;break}})}function Id(e,t=0){let n=e.replace(/^-?[0-9.]*/,``);function r(e){for(;e<0;)e+=4;return e%4}if(n===``){let t=parseInt(e);return isNaN(t)?0:r(t)}else if(n!==e){let t=0;switch(n){case`%`:t=25;break;case`deg`:t=90}if(t){let i=parseFloat(e.slice(0,e.length-n.length));return isNaN(i)?0:(i/=t,i%1==0?r(i):0)}}return t}function Ld(e,t){let n=e.indexOf(`xlink:`)===-1?``:` xmlns:xlink="http://www.w3.org/1999/xlink"`;for(let e in t)n+=` `+e+`="`+t[e]+`"`;return``+e+``}function Rd(e){return e.replace(/"/g,`'`).replace(/%/g,`%25`).replace(/#/g,`%23`).replace(//g,`%3E`).replace(/\s+/g,` `)}function zd(e){return`data:image/svg+xml,`+Rd(e)}function Bd(e){return`url("`+zd(e)+`")`}var Vd={...zu,inline:!1},Hd={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,"aria-hidden":!0,role:`img`},Ud={display:`inline-block`},Wd={backgroundColor:`currentColor`},Gd={backgroundColor:`transparent`},Kd={Image:`var(--svg)`,Repeat:`no-repeat`,Size:`100% 100%`},qd={webkitMask:Wd,mask:Wd,background:Gd};for(let e in qd){let t=qd[e];for(let n in Kd)t[e+n]=Kd[n]}var Jd={};[`horizontal`,`vertical`].forEach(e=>{let t=e.slice(0,1)+`Flip`;Jd[e+`-flip`]=t,Jd[e.slice(0,1)+`-flip`]=t,Jd[e+`Flip`]=t});function Yd(e){return e+(e.match(/^[-0-9.]+$/)?`px`:``)}var Xd=(e,t)=>{let n=Nd(Vd,t),r={...Hd},i=t.mode||`svg`,a={},o=t.style,s=typeof o==`object`&&!(o instanceof Array)?o:{};for(let e in t){let i=t[e];if(i!==void 0)switch(e){case`icon`:case`style`:case`onLoad`:case`mode`:case`ssr`:break;case`inline`:case`hFlip`:case`vFlip`:n[e]=i===!0||i===`true`||i===1;break;case`flip`:typeof i==`string`&&Fd(n,i);break;case`color`:a.color=i;break;case`rotate`:typeof i==`string`?n[e]=Id(i):typeof i==`number`&&(n[e]=i);break;case`ariaHidden`:case`aria-hidden`:i!==!0&&i!==`true`&&delete r[`aria-hidden`];break;default:{let t=Jd[e];t?(i===!0||i===`true`||i===1)&&(n[t]=!0):Vd[e]===void 0&&(r[e]=i)}}}let c=qu(e,n),l=c.attributes;if(n.inline&&(a.verticalAlign=`-0.125em`),i===`svg`){r.style={...a,...s},Object.assign(r,l);let e=0,n=t.id;return typeof n==`string`&&(n=n.replace(/-/g,`_`)),r.innerHTML=Zu(c.body,n?()=>n+`ID`+ e++:`iconifyVue`),d(`svg`,r)}let{body:u,width:f,height:p}=e,m=i===`mask`||(i===`bg`?!1:u.indexOf(`currentColor`)!==-1),h=Ld(u,{...l,width:f+``,height:p+``});return r.style={...a,"--svg":Bd(h),width:Yd(l.width),height:Yd(l.height),...Ud,...m?Wd:Gd,...s},d(`span`,r)};if(Pu(!0),$u(``,fd),typeof document<`u`&&typeof window<`u`){let e=window;if(e.IconifyPreload!==void 0){let t=e.IconifyPreload,n=`Invalid IconifyPreload syntax.`;typeof t==`object`&&t&&(t instanceof Array?t:[t]).forEach(e=>{try{(typeof e!=`object`||!e||e instanceof Array||typeof e.icons!=`object`||typeof e.prefix!=`string`||!Lu(e))&&console.error(n)}catch{console.error(n)}})}if(e.IconifyProviders!==void 0){let t=e.IconifyProviders;if(typeof t==`object`&&t)for(let e in t){let n=`IconifyProviders[`+e+`] is invalid.`;try{let r=t[e];if(typeof r!=`object`||!r||r.resources===void 0)continue;ad(e,r)||console.error(n)}catch{console.error(n)}}}}var Zd={...vu,body:``},Qd=k((e,{emit:t})=>{let n=D(null);function r(){n.value&&=(n.value.abort?.(),null)}let i=D(!!e.ssr),a=D(``),u=re(null);function d(){let i=e.icon;if(typeof i==`object`&&i&&typeof i.body==`string`)return a.value=``,{data:i};let o;if(typeof i!=`string`||(o=mu(i,!1,!0))===null)return null;let s=Fu(o);if(!s){let e=n.value;return(!e||e.name!==i)&&(s===null?n.value={name:i}:n.value={name:i,abort:Md([o],f)}),null}r(),a.value!==i&&(a.value=i,l(()=>{t(`load`,i)}));let c=e.customise;if(c){s=Object.assign({},s);let e=c(s.body,o.name,o.prefix,o.provider);typeof e==`string`&&(s.body=e)}let u=[`iconify`];return o.prefix!==``&&u.push(`iconify--`+o.prefix),o.provider!==``&&u.push(`iconify--`+o.provider),{data:s,classes:u}}function f(){let e=d();e?e.data!==u.value?.data&&(u.value=e):u.value=null}return i.value?f():s(()=>{i.value=!0,f()}),o(()=>e.icon,f),c(r),()=>{let t=u.value;if(!t)return Xd(Zd,e);let n=e;return t.classes&&(n={...e,class:t.classes.join(` `)}),Xd({...vu,...t.data},n)}},{props:[`icon`,`mode`,`ssr`,`width`,`height`,`style`,`color`,`inline`,`rotate`,`hFlip`,`horizontalFlip`,`vFlip`,`verticalFlip`,`flip`,`id`,`ariaHidden`,`customise`,`title`],emits:[`load`]}),$d={__name:`Icon`,props:{name:{type:null,required:!0}},setup(e){return(n,r)=>typeof e.name==`string`?(i(),T(A(Qd),{key:0,icon:e.name.replace(/^i-/,``)},null,8,[`icon`])):(i(),T(t(e.name),{key:1}))}};export{ts as A,Vo as B,Xo as C,Ss as D,$o as E,ho as F,no as G,Uo as H,go as I,Aa as J,lo as K,Lo as L,Cs as M,Ds as N,Ts as O,fo as P,Hr as Q,yo as R,As as S,is as T,qo as U,Ho as V,Wo as W,Ci as X,wi as Y,Vr as Z,Js as _,pc as a,Rs as b,uc as c,Zs as d,Ys as f,tc as g,Xs as h,hc as i,Es as j,es as k,lc as l,ec as m,fu as n,fc as o,$s as p,uo as q,lu as r,dc as s,$d as t,sc as u,qs as v,Qo as w,Ps as x,zs as y,wo as z}; \ No newline at end of file diff --git a/assets/public/dist/assets/LoginView-DckqZJ4W.js b/assets/public/dist/assets/LoginView-DckqZJ4W.js new file mode 100644 index 0000000..1a3a7b3 --- /dev/null +++ b/assets/public/dist/assets/LoginView-DckqZJ4W.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cs_TermsAndConditionsView-DP2Pp5Ho.js","assets/vue.runtime.esm-bundler-BM5WPBHd.js","assets/Icon-Chkiq2IE.js","assets/Card-DPC9xXwj.js","assets/en_TermsAndConditionsView-C9vscF7i.js","assets/pl_TermsAndConditionsView-D4bXtPik.js","assets/cs_PrivacyPolicyView-Be5X4T0B.js","assets/en_PrivacyPolicyView-C0wuScgt.js","assets/pl_PrivacyPolicyView-Bqyt2B2G.js"])))=>i.map(i=>d[i]); +import{B as e,F as t,Q as n,_ as r,d as i,f as a,g as o,h as s,m as c,o as l,p as u,ut as d,v as f,wt as p,y as m,yt as h}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{n as g}from"./useFetchJson-4WJQFaEO.js";import{n as _}from"./useForwardExpose-BgPOLLFN.js";import{Q as v,X as y,Y as b,t as x}from"./Icon-Chkiq2IE.js";import{t as S}from"./auth-hZSBdvj-.js";import{t as C}from"./Button-jwL-tYHc.js";import{n as w,t as T}from"./_rolldown_dynamic_import_helper-DhxqfwDR.js";import{n as E,r as D,t as O}from"./useValidation-wBItIFut.js";import{n as k}from"./settings-BcOmX106.js";import{t as A}from"./Alert-BNRo6CMI.js";var j={class:`h-[100vh] flex items-center justify-center px-4 sm:px-6 lg:px-8`},M={class:`w-full max-w-md flex flex-col gap-4`},N={class:`flex items-center justify-between w-full dark:text-white text-black`},P={class:`text-center`},F={class:`dark:text-white text-black`},I={class:`mt-8 text-center text-xs dark:text-white text-black`},L=m({__name:`LoginView`,setup(m){let{t:L}=v(),R=y(),z=b(),B=S(),V=d(``),H=d(``),U=d(!1),W=O();async function G(){if(await B.login(V.value,H.value)){let e=z.query.redirect;R.push(e||{name:`chart`})}}function K(){R.push({name:`register`})}function q(){R.push({name:`password-recovery`})}function J(){return W.reset(),W.validateEmail(V,`email`,_.t(`validate_error.email_required`)),H.value||W.errors.push({name:`password`,message:_.t(`validate_error.password_required`)}),W.errors}let Y=d(!1),X=d(!1),Z=i(()=>f(()=>T(Object.assign({"../components/terms/cs_TermsAndConditionsView.vue":()=>g(()=>import(`./cs_TermsAndConditionsView-DP2Pp5Ho.js`),__vite__mapDeps([0,1,2,3])),"../components/terms/en_TermsAndConditionsView.vue":()=>g(()=>import(`./en_TermsAndConditionsView-C9vscF7i.js`),__vite__mapDeps([4,1,2,3])),"../components/terms/pl_TermsAndConditionsView.vue":()=>g(()=>import(`./pl_TermsAndConditionsView-D4bXtPik.js`),__vite__mapDeps([5,1,2,3]))}),`../components/terms/${_.locale.value}_TermsAndConditionsView.vue`,4).catch(()=>g(()=>import(`./en_TermsAndConditionsView-C9vscF7i.js`),__vite__mapDeps([4,1,2,3]))))),Q=i(()=>f(()=>T(Object.assign({"../components/terms/cs_PrivacyPolicyView.vue":()=>g(()=>import(`./cs_PrivacyPolicyView-Be5X4T0B.js`),__vite__mapDeps([6,1,2,3])),"../components/terms/en_PrivacyPolicyView.vue":()=>g(()=>import(`./en_PrivacyPolicyView-C0wuScgt.js`),__vite__mapDeps([7,1,2,3])),"../components/terms/pl_PrivacyPolicyView.vue":()=>g(()=>import(`./pl_PrivacyPolicyView-Bqyt2B2G.js`),__vite__mapDeps([8,1,2,3]))}),`../components/terms/${_.locale.value}_PrivacyPolicyView.vue`,4).catch(()=>g(()=>import(`./en_PrivacyPolicyView-C0wuScgt.js`),__vite__mapDeps([7,1,2,3])))));return(i,d)=>{let f=C,m=w,g=A,_=k,v=E,y=x,b=D;return t(),s(l,null,[r(m,{open:Y.value,"onUpdate:open":d[1]||=e=>Y.value=e,overlay:!1},{body:n(()=>[(t(),u(e(Z.value)))]),footer:n(()=>[r(f,{onClick:d[0]||=e=>Y.value=!1,class:`mx-auto px-12`},{default:n(()=>[...d[10]||=[o(`close`,-1)]]),_:1})]),_:1},8,[`open`]),r(m,{open:X.value,"onUpdate:open":d[3]||=e=>X.value=e,overlay:!1},{body:n(()=>[(t(),u(e(Q.value)))]),footer:n(()=>[r(f,{onClick:d[2]||=e=>X.value=!1,class:`mx-auto px-12`},{default:n(()=>[...d[11]||=[o(`close`,-1)]]),_:1})]),_:1},8,[`open`]),a(`div`,j,[a(`div`,M,[r(b,{validate:J,onSubmit:G,class:`space-y-5`},{default:n(()=>[h(B).error?(t(),u(g,{key:0,color:`error`,variant:`subtle`,title:h(B).error,"close-button":{icon:`i-heroicons-x-mark-20-solid`,color:`gray`,variant:`link`},onClose:h(B).clearError},null,8,[`title`,`onClose`])):c(``,!0),r(v,{label:i.$t(`general.email_address`),name:`email`,required:``,class:`w-full dark:text-white text-black`},{default:n(()=>[r(_,{modelValue:V.value,"onUpdate:modelValue":d[4]||=e=>V.value=e,placeholder:i.$t(`general.enter_your_email`),disabled:h(B).loading,class:`w-full dark:text-white text-black`},null,8,[`modelValue`,`placeholder`,`disabled`])]),_:1},8,[`label`]),r(v,{label:i.$t(`general.password`),name:`password`,required:``,class:`w-full dark:text-white text-black`},{default:n(()=>[r(_,{modelValue:H.value,"onUpdate:modelValue":d[6]||=e=>H.value=e,placeholder:i.$t(`general.enter_your_password`),type:U.value?`text`:`password`,class:`w-full`,ui:{trailing:`pe-1`}},{trailing:n(()=>[r(y,{color:`neutral`,variant:`link`,size:`sm`,name:U.value?`i-lucide-eye-off`:`i-lucide-eye`,"aria-label":U.value?`Hide password`:`Show password`,"aria-pressed":U.value,"aria-controls":`password`,onClick:d[5]||=e=>U.value=!U.value},null,8,[`name`,`aria-label`,`aria-pressed`])]),_:1},8,[`modelValue`,`placeholder`,`type`])]),_:1},8,[`label`]),a(`div`,N,[a(`button`,{variant:`link`,size:`sm`,onClick:q,class:`text-[15px] w-full flex justify-end text-(--color-blue-600) dark:text-(--color-blue-500)`},p(i.$t(`general.forgot_password`))+`? `,1)]),r(f,{type:`submit`,loading:h(B).loading,class:`w-full flex justify-center text-white bg-(--color-blue-600) dark:bg-(--color-blue-500)`},{default:n(()=>[o(p(i.$t(`general.sign_in`)),1)]),_:1},8,[`loading`])]),_:1}),d[13]||=a(`div`,{class:`flex items-center gap-3 my-1`},[a(`div`,{class:`flex-1 h-px bg-gray-200 dark:bg-gray-700`}),a(`span`,{class:`text-xs text-gray-400 dark:text-gray-500`},`or`),a(`div`,{class:`flex-1 h-px bg-gray-200 dark:bg-gray-700`})],-1),r(f,{type:`button`,color:`neutral`,variant:`outline`,size:`lg`,block:``,disabled:h(B).loading,onClick:d[7]||=e=>h(B).loginWithGoogle(),class:`flex items-center justify-center gap-2 dark:text-white text-black`},{default:n(()=>[d[12]||=a(`svg`,{class:`w-5 h-5`,viewBox:`0 0 24 24`,xmlns:`http://www.w3.org/2000/svg`},[a(`path`,{d:`M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z`,fill:`#4285F4`}),a(`path`,{d:`M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z`,fill:`#34A853`}),a(`path`,{d:`M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l3.66-2.84z`,fill:`#FBBC05`}),a(`path`,{d:`M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z`,fill:`#EA4335`})],-1),o(` `+p(i.$t(`general.continue_with_google`)),1)]),_:1},8,[`disabled`]),a(`div`,P,[a(`p`,F,[o(p(i.$t(`general.dont_have_an_account`))+`? `,1),a(`button`,{variant:`link`,size:`sm`,class:`text-[15px] text-(--color-blue-600) dark:text-(--color-blue-500)`,onClick:K},p(i.$t(`general.create_account_now`)),1)])]),a(`p`,I,[o(p(i.$t(`general.by_signing_in_you_agree_to_our`))+` `,1),a(`span`,{onClick:d[8]||=e=>Y.value=!Y.value,class:`cursor-pointer underline text-(--color-blue-600) dark:text-(--color-blue-500)`},p(i.$t(`general.terms_of_service`)),1),o(` `+p(i.$t(`general.and`))+` `,1),a(`span`,{onClick:d[9]||=e=>X.value=!X.value,class:`cursor-pointer underline text-(--color-blue-600) dark:text-(--color-blue-500)`},p(i.$t(`general.privacy_policy`)),1)])])])],64)}}});export{L as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/PasswordRecoveryView-BsywcP-S.js b/assets/public/dist/assets/PasswordRecoveryView-BsywcP-S.js new file mode 100644 index 0000000..5d9173e --- /dev/null +++ b/assets/public/dist/assets/PasswordRecoveryView-BsywcP-S.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,f as r,g as i,h as a,m as o,o as s,p as c,ut as l,wt as u,y as d,yt as f}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import"./useFetchJson-4WJQFaEO.js";import{n as p}from"./useForwardExpose-BgPOLLFN.js";import{Q as m,X as h,t as g}from"./Icon-Chkiq2IE.js";import{t as _}from"./auth-hZSBdvj-.js";import{t as v}from"./Button-jwL-tYHc.js";import{n as y,r as b,t as x}from"./useValidation-wBItIFut.js";import{n as S}from"./settings-BcOmX106.js";import{t as C}from"./Alert-BNRo6CMI.js";var w={class:`h-[100vh] flex items-center justify-center px-4 sm:px-6 lg:px-8`},T={class:`w-full max-w-md flex flex-col gap-4`},E={key:0,class:`text-center flex flex-col gap-4`},D={class:`text-xl font-semibold dark:text-white text-black`},O={class:`text-sm text-gray-600 dark:text-gray-400`},k={class:`text-center`},A={class:`text-sm text-gray-600 dark:text-gray-400`},j={class:`text-center flex flex-col gap-3 border-t dark:border-(--border-dark) border-(--border-light) pt-4`},M={class:`text-sm text-gray-600 dark:text-gray-400`},N=d({__name:`PasswordRecoveryView`,setup(d){let{t:N}=m(),P=h(),F=_(),I=x(),L=l(``),R=l(!1);async function z(){await F.requestPasswordReset(L.value)&&(R.value=!0)}function B(){P.push({name:`login`})}function V(){P.push({name:`register`})}function H(){return I.reset(),I.validateEmail(L,`email`,p.t(`validate_error.email_required`)),I.errors}return(l,d)=>{let p=g,m=v,h=C,_=S,x=y,N=b;return e(),a(`div`,w,[r(`div`,T,[R.value?(e(),a(`div`,E,[n(p,{name:`i-heroicons-envelope`,class:`w-12 h-12 mx-auto text-primary-500`}),r(`h2`,D,u(l.$t(`general.check_your_email`)),1),r(`p`,O,u(l.$t(`general.password_reset_link_sent_notice`)),1),n(m,{color:`neutral`,variant:`outline`,block:``,onClick:B,class:`dark:text-white text-black`},{default:t(()=>[i(u(l.$t(`general.back_to_sign_in`)),1)]),_:1})])):(e(),a(s,{key:1},[r(`div`,k,[r(`p`,A,u(l.$t(`general.enter_email_for_password_reset`)),1)]),n(N,{validate:H,onSubmit:z,class:`flex flex-col gap-3`},{default:t(()=>[f(F).error?(e(),c(h,{key:0,color:`error`,variant:`subtle`,icon:`i-heroicons-exclamation-triangle`,title:f(F).error,"close-button":{icon:`i-heroicons-x-mark-20-solid`,variant:`link`},onClose:f(F).clearError},null,8,[`title`,`onClose`])):o(``,!0),n(x,{label:l.$t(`general.email_address`),name:`email`,required:``,class:`w-full dark:text-white text-black`},{default:t(()=>[n(_,{modelValue:L.value,"onUpdate:modelValue":d[0]||=e=>L.value=e,placeholder:l.$t(`general.enter_your_email`),disabled:f(F).loading,class:`w-full dark:text-white text-black`},null,8,[`modelValue`,`placeholder`,`disabled`])]),_:1},8,[`label`]),n(m,{type:`submit`,block:``,loading:f(F).loading,class:`text-white bg-(--color-blue-600) dark:bg-(--color-blue-500)`},{default:t(()=>[i(u(l.$t(`general.send_password_reset_link`)),1)]),_:1},8,[`loading`])]),_:1}),r(`div`,j,[n(m,{color:`neutral`,variant:`outline`,loading:f(F).loading,class:`w-full flex justify-center dark:text-white text-black`,onClick:B},{default:t(()=>[i(u(l.$t(`general.back_to_sign_in`)),1)]),_:1},8,[`loading`]),r(`p`,M,[i(u(l.$t(`general.dont_have_an_account`))+` `,1),n(m,{variant:`link`,size:`sm`,onClick:V,class:`text-(--color-blue-600) dark:text-(--color-blue-500)`},{default:t(()=>[i(u(l.$t(`general.create_account_now`)),1)]),_:1})])])],64))])])}}});export{N as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/PopperArrow-CcUKYeE0.js b/assets/public/dist/assets/PopperArrow-CcUKYeE0.js new file mode 100644 index 0000000..dfb9c13 --- /dev/null +++ b/assets/public/dist/assets/PopperArrow-CcUKYeE0.js @@ -0,0 +1 @@ +import{Ct as e,D as t,F as n,J as r,M as i,Q as a,R as o,T as s,X as c,Y as l,_ as u,d,ft as f,h as p,nt as m,p as h,pt as g,st as _,ut as v,y,yt as b}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{t as x}from"./useForwardExpose-BgPOLLFN.js";import{E as S,H as C,P as w,R as T,i as E,s as D}from"./Icon-Chkiq2IE.js";import{h as O}from"./usePortal-Zddbph8M.js";var k=0;function A(){l(e=>{if(!T)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??j()),document.body.insertAdjacentElement(`beforeend`,t[1]??j()),k++,e(()=>{k===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),k--})})}function j(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}function ee(e){let t=v(),n=d(()=>t.value?.width??0),r=d(()=>t.value?.height??0);return i(()=>{let n=S(e);if(n){t.value={width:n.offsetWidth,height:n.offsetHeight};let e=new ResizeObserver(e=>{if(!Array.isArray(e)||!e.length)return;let r=e[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=n.offsetWidth,a=n.offsetHeight;t.value={width:i,height:a}});return e.observe(n,{box:`border-box`}),()=>e.unobserve(n)}else t.value=void 0}),{width:n,height:r}}function M(e){let t=C(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=O(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=ne(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function te(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function ne(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=te(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}var[re,N]=D(`PopperRoot`),ie=y({inheritAttrs:!1,__name:`PopperRoot`,setup(e){let t=v();return N({anchor:t,onAnchorChange:e=>t.value=e}),(e,t)=>o(e.$slots,`default`)}}),ae=y({__name:`PopperAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:r,currentElement:i}=x(),s=re();return c(()=>{s.onAnchorChange(t.reference??i.value)}),(e,t)=>(n(),h(b(E),{ref:b(r),as:e.as,"as-child":e.asChild},{default:a(()=>[o(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}}),oe={key:0,d:`M0 0L6 6L12 0`},se={key:1,d:`M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0`},ce=y({__name:`Arrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let r=e;return x(),(e,i)=>(n(),h(b(E),t(r,{width:e.width,height:e.height,viewBox:e.asChild?void 0:`0 0 12 6`,preserveAspectRatio:e.asChild?void 0:`none`}),{default:a(()=>[o(e.$slots,`default`,{},()=>[e.rounded?(n(),p(`path`,se)):(n(),p(`path`,oe))])]),_:3},16,[`width`,`height`,`viewBox`,`preserveAspectRatio`]))}});function le(e){return e!==null}function ue(e){return{name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=de(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}}function de(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var fe=[`top`,`right`,`bottom`,`left`],P=Math.min,F=Math.max,pe=Math.round,me=Math.floor,I=e=>({x:e,y:e}),he={left:`right`,right:`left`,bottom:`top`,top:`bottom`},ge={start:`end`,end:`start`};function _e(e,t,n){return F(e,P(t,n))}function L(e,t){return typeof e==`function`?e(t):e}function R(e){return e.split(`-`)[0]}function z(e){return e.split(`-`)[1]}function ve(e){return e===`x`?`y`:`x`}function ye(e){return e===`y`?`height`:`width`}var be=new Set([`top`,`bottom`]);function B(e){return be.has(R(e))?`y`:`x`}function xe(e){return ve(B(e))}function Se(e,t,n){n===void 0&&(n=!1);let r=z(e),i=xe(e),a=ye(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=je(o)),[o,je(o)]}function Ce(e){let t=je(e);return[we(e),t,we(t)]}function we(e){return e.replace(/start|end/g,e=>ge[e])}var Te=[`left`,`right`],Ee=[`right`,`left`],De=[`top`,`bottom`],Oe=[`bottom`,`top`];function ke(e,t,n){switch(e){case`top`:case`bottom`:return n?t?Ee:Te:t?Te:Ee;case`left`:case`right`:return t?De:Oe;default:return[]}}function Ae(e,t,n,r){let i=z(e),a=ke(R(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(we)))),a}function je(e){return e.replace(/left|right|bottom|top/g,e=>he[e])}function Me(e){return{top:0,right:0,bottom:0,left:0,...e}}function Ne(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:Me(e)}function Pe(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function Fe(e,t,n){let{reference:r,floating:i}=e,a=B(t),o=xe(t),s=ye(o),c=R(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(z(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function Ie(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=L(t,e),p=Ne(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=Pe(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=Pe(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Le=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=a.filter(Boolean),c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Fe(l,r,c),f=r,p={},m=0;for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=L(e,t)||{};if(l==null)return{};let d=Ne(u),f={x:n,y:r},p=xe(i),m=ye(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=P(d[_],T),D=P(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=_e(O,A,k),ee=!c.arrow&&z(i)!=null&&A!==j&&a.reference[m]/2-(Ae<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==B(t))||T.every(e=>B(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=B(e.placement);return t===_||t===`y`}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]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function Be(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ve(e){return fe.some(t=>e[t]>=0)}var He=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=L(e,t);switch(i){case`referenceHidden`:{let e=Be(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Ve(e)}}}case`escaped`:{let e=Be(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Ve(e)}}}default:return{}}}}},Ue=new Set([`left`,`top`]);async function We(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=R(n),s=z(n),c=B(n)===`y`,l=Ue.has(o)?-1:1,u=a&&c?-1:1,d=L(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Ge=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await We(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Ke=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=L(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=B(R(i)),p=ve(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=_e(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=_e(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},qe=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=L(e,t),u={x:n,y:r},d=B(i),f=ve(d),p=u[f],m=u[d],h=L(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=Ue.has(R(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Je=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=L(e,t),u=await o.detectOverflow(t,l),d=R(i),f=z(i),p=B(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=P(h-u[g],v),x=P(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=F(u.left,0),t=F(u.right,0),n=F(u.top,0),r=F(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:F(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:F(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Ye(){return typeof window<`u`}function V(e){return Xe(e)?(e.nodeName||``).toLowerCase():`#document`}function H(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function U(e){return((Xe(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Xe(e){return Ye()?e instanceof Node||e instanceof H(e).Node:!1}function W(e){return Ye()?e instanceof Element||e instanceof H(e).Element:!1}function G(e){return Ye()?e instanceof HTMLElement||e instanceof H(e).HTMLElement:!1}function Ze(e){return!Ye()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof H(e).ShadowRoot}var Qe=new Set([`inline`,`contents`]);function K(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=J(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!Qe.has(i)}var $e=new Set([`table`,`td`,`th`]);function et(e){return $e.has(V(e))}var tt=[`:popover-open`,`:modal`];function nt(e){return tt.some(t=>{try{return e.matches(t)}catch{return!1}})}var rt=[`transform`,`translate`,`scale`,`rotate`,`perspective`],it=[`transform`,`translate`,`scale`,`rotate`,`perspective`,`filter`],at=[`paint`,`layout`,`strict`,`content`];function ot(e){let t=ct(),n=W(e)?J(e):e;return rt.some(e=>n[e]?n[e]!==`none`:!1)||(n.containerType?n.containerType!==`normal`:!1)||!t&&(n.backdropFilter?n.backdropFilter!==`none`:!1)||!t&&(n.filter?n.filter!==`none`:!1)||it.some(e=>(n.willChange||``).includes(e))||at.some(e=>(n.contain||``).includes(e))}function st(e){let t=Y(e);for(;G(t)&&!q(t);){if(ot(t))return t;if(nt(t))return null;t=Y(t)}return null}function ct(){return typeof CSS>`u`||!CSS.supports?!1:CSS.supports(`-webkit-backdrop-filter`,`none`)}var lt=new Set([`html`,`body`,`#document`]);function q(e){return lt.has(V(e))}function J(e){return H(e).getComputedStyle(e)}function ut(e){return W(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Y(e){if(V(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Ze(e)&&e.host||U(e);return Ze(t)?t.host:t}function dt(e){let t=Y(e);return q(t)?e.ownerDocument?e.ownerDocument.body:e.body:G(t)&&K(t)?t:dt(t)}function X(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=dt(e),i=r===e.ownerDocument?.body,a=H(r);if(i){let e=ft(a);return t.concat(a,a.visualViewport||[],K(r)?r:[],e&&n?X(e):[])}return t.concat(r,X(r,[],n))}function ft(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function pt(e){let t=J(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=G(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=pe(n)!==a||pe(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function mt(e){return W(e)?e:e.contextElement}function Z(e){let t=mt(e);if(!G(t))return I(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=pt(t),o=(a?pe(n.width):n.width)/r,s=(a?pe(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var ht=I(0);function gt(e){let t=H(e);return!ct()||!t.visualViewport?ht:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function _t(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==H(e)?!1:t}function Q(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=mt(e),o=I(1);t&&(r?W(r)&&(o=Z(r)):o=Z(e));let s=_t(a,n,r)?gt(a):I(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=H(a),t=r&&W(r)?H(r):r,n=e,i=ft(n);for(;i&&r&&t!==n;){let e=Z(i),t=i.getBoundingClientRect(),r=J(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=H(i),i=ft(n)}}return Pe({width:u,height:d,x:c,y:l})}function vt(e,t){let n=ut(e).scrollLeft;return t?t.left+n:Q(U(e)).left+n}function yt(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-vt(e,n),y:n.top+t.scrollTop}}function bt(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=U(r),s=t?nt(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=I(1),u=I(0),d=G(r);if((d||!d&&!a)&&((V(r)!==`body`||K(o))&&(c=ut(r)),G(r))){let e=Q(r);l=Z(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?yt(o,c):I(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function xt(e){return Array.from(e.getClientRects())}function St(e){let t=U(e),n=ut(e),r=e.ownerDocument.body,i=F(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=F(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+vt(e),s=-n.scrollTop;return J(r).direction===`rtl`&&(o+=F(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var Ct=25;function wt(e,t){let n=H(e),r=U(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=ct();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=vt(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=Ct&&(a-=o)}else l<=Ct&&(a+=l);return{width:a,height:o,x:s,y:c}}var Tt=new Set([`absolute`,`fixed`]);function Et(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=G(e)?Z(e):I(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Dt(e,t,n){let r;if(t===`viewport`)r=wt(e,n);else if(t===`document`)r=St(U(e));else if(W(t))r=Et(t,n);else{let n=gt(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return Pe(r)}function Ot(e,t){let n=Y(e);return n===t||!W(n)||q(n)?!1:J(n).position===`fixed`||Ot(n,t)}function kt(e,t){let n=t.get(e);if(n)return n;let r=X(e,[],!1).filter(e=>W(e)&&V(e)!==`body`),i=null,a=J(e).position===`fixed`,o=a?Y(e):e;for(;W(o)&&!q(o);){let t=J(o),n=ot(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&Tt.has(i.position)||K(o)&&!n&&Ot(e,o))?r=r.filter(e=>e!==o):i=t,o=Y(o)}return t.set(e,r),r}function At(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?nt(t)?[]:kt(t,this._c):[].concat(n),r],o=a[0],s=a.reduce((e,n)=>{let r=Dt(t,n,i);return e.top=F(r.top,e.top),e.right=P(r.right,e.right),e.bottom=P(r.bottom,e.bottom),e.left=F(r.left,e.left),e},Dt(t,o,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function jt(e){let{width:t,height:n}=pt(e);return{width:t,height:n}}function Mt(e,t,n){let r=G(t),i=U(t),a=n===`fixed`,o=Q(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=I(0);function l(){c.x=vt(i)}if(r||!r&&!a)if((V(t)!==`body`||K(i))&&(s=ut(t)),r){let e=Q(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?yt(i,s):I(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function Nt(e){return J(e).position===`static`}function Pt(e,t){if(!G(e)||J(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return U(e)===n&&(n=n.ownerDocument.body),n}function Ft(e,t){let n=H(e);if(nt(e))return n;if(!G(e)){let t=Y(e);for(;t&&!q(t);){if(W(t)&&!Nt(t))return t;t=Y(t)}return n}let r=Pt(e,t);for(;r&&et(r)&&Nt(r);)r=Pt(r,t);return r&&q(r)&&Nt(r)&&!ot(r)?n:r||st(e)||n}var It=async function(e){let t=this.getOffsetParent||Ft,n=this.getDimensions,r=await n(e.floating);return{reference:Mt(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Lt(e){return J(e).direction===`rtl`}var Rt={convertOffsetParentRelativeRectToViewportRelativeRect:bt,getDocumentElement:U,getClippingRect:At,getOffsetParent:Ft,getElementRects:It,getClientRects:xt,getDimensions:jt,getScale:Z,isElement:W,isRTL:Lt};function zt(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Bt(e,t){let n=null,r,i=U(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=me(d),h=me(i.clientWidth-(u+f)),g=me(i.clientHeight-(d+p)),_=me(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:F(0,P(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!zt(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function Vt(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=mt(e),u=i||a?[...l?X(l):[],...X(t)]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Bt(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),p.observe(t));let m,h=c?Q(e):null;c&&g();function g(){let t=Q(e);h&&!zt(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Ht=Ge,Ut=Ke,Wt=ze,Gt=Je,Kt=He,qt=Re,Jt=qe,Yt=(e,t,n)=>{let r=new Map,i={platform:Rt,...n},a={...i.platform,_c:r};return Le(e,t,{...i,platform:a})};function Xt(e){return typeof e==`object`&&!!e&&`$el`in e}function Zt(e){if(Xt(e)){let t=e.$el;return Xe(t)&&V(t)===`#comment`?null:t}return e}function $(e){return typeof e==`function`?e():b(e)}function Qt(e){return{name:`arrow`,options:e,fn(t){let n=Zt($(e.element));return n==null?{}:qt({element:n,padding:e.padding}).fn(t)}}}function $t(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function en(e,t){let n=$t(e);return Math.round(t*n)/n}function tn(e,t,n){n===void 0&&(n={});let i=n.whileElementsMounted,a=d(()=>$(n.open)??!0),o=d(()=>$(n.middleware)),s=d(()=>$(n.placement)??`bottom`),c=d(()=>$(n.strategy)??`absolute`),l=d(()=>$(n.transform)??!0),u=d(()=>Zt(e.value)),p=d(()=>Zt(t.value)),h=v(0),y=v(0),b=v(c.value),x=v(s.value),S=g({}),C=v(!1),w=d(()=>{let e={position:b.value,left:`0`,top:`0`};if(!p.value)return e;let t=en(p.value,h.value),n=en(p.value,y.value);return l.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...$t(p.value)>=1.5&&{willChange:`transform`}}:{position:b.value,left:t+`px`,top:n+`px`}}),T;function E(){if(u.value==null||p.value==null)return;let e=a.value;Yt(u.value,p.value,{middleware:o.value,placement:s.value,strategy:c.value}).then(t=>{h.value=t.x,y.value=t.y,b.value=t.strategy,x.value=t.placement,S.value=t.middlewareData,C.value=e!==!1})}function D(){typeof T==`function`&&(T(),T=void 0)}function O(){if(D(),i===void 0){E();return}if(u.value!=null&&p.value!=null){T=i(u.value,p.value,E);return}}function k(){a.value||(C.value=!1)}return r([o,s,c,a],E,{flush:`sync`}),r([u,p],O,{flush:`sync`}),r(a,k,{flush:`sync`}),m()&&_(D),{x:f(h),y:f(y),strategy:f(b),placement:f(x),middlewareData:f(S),isPositioned:f(C),floatingStyles:w,update:E}}var nn={side:`bottom`,sideOffset:0,sideFlip:!0,align:`center`,alignOffset:0,alignFlip:!0,arrowPadding:0,hideShiftedArrow:!0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:`partial`,hideWhenDetached:!1,positionStrategy:`fixed`,updatePositionStrategy:`optimized`,prioritizePosition:!1},[rn,an]=D(`PopperContent`),on=y({inheritAttrs:!1,__name:`PopperContent`,props:s({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...nn}),emits:[`placed`],setup(r,{emit:i}){let s=r,f=i,m=re(),{forwardRef:h,currentElement:g}=x(),_=v(),y=v(),{width:S,height:C}=ee(y),T=d(()=>s.side+(s.align===`center`?``:`-${s.align}`)),D=d(()=>typeof s.collisionPadding==`number`?s.collisionPadding:{top:0,right:0,bottom:0,left:0,...s.collisionPadding}),O=d(()=>Array.isArray(s.collisionBoundary)?s.collisionBoundary:[s.collisionBoundary]),k=d(()=>({padding:D.value,boundary:O.value.filter(le),altBoundary:O.value.length>0})),A=d(()=>({mainAxis:s.sideFlip,crossAxis:s.alignFlip})),j=w(()=>[Ht({mainAxis:s.sideOffset+C.value,alignmentAxis:s.alignOffset}),s.prioritizePosition&&s.avoidCollisions&&Wt({...k.value,...A.value}),s.avoidCollisions&&Ut({mainAxis:!0,crossAxis:!!s.prioritizePosition,limiter:s.sticky===`partial`?Jt():void 0,...k.value}),!s.prioritizePosition&&s.avoidCollisions&&Wt({...k.value,...A.value}),Gt({...k.value,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--reka-popper-available-width`,`${n}px`),o.setProperty(`--reka-popper-available-height`,`${r}px`),o.setProperty(`--reka-popper-anchor-width`,`${i}px`),o.setProperty(`--reka-popper-anchor-height`,`${a}px`)}}),y.value&&Qt({element:y.value,padding:s.arrowPadding}),ue({arrowWidth:S.value,arrowHeight:C.value}),s.hideWhenDetached&&Kt({strategy:`referenceHidden`,...k.value})]),{floatingStyles:M,placement:te,isPositioned:ne,middlewareData:N,update:ie}=tn(d(()=>s.reference??m.anchor.value),_,{strategy:s.positionStrategy,placement:T,whileElementsMounted:(...e)=>Vt(...e,{layoutShift:!s.disableUpdateOnLayoutShift,animationFrame:s.updatePositionStrategy===`always`}),middleware:j}),ae=d(()=>de(te.value)[0]),oe=d(()=>de(te.value)[1]);c(()=>{ne.value&&f(`placed`)});let se=d(()=>{let e=N.value.arrow?.centerOffset!==0;return s.hideShiftedArrow&&e}),ce=v(``);return l(()=>{g.value&&(ce.value=window.getComputedStyle(g.value).zIndex)}),an({placedSide:ae,onArrowChange:e=>y.value=e,arrowX:d(()=>N.value.arrow?.x??0),arrowY:d(()=>N.value.arrow?.y??0),shouldHideArrow:se}),(r,i)=>(n(),p(`div`,{ref_key:`floatingRef`,ref:_,"data-reka-popper-content-wrapper":``,style:e({...b(M),transform:b(ne)?b(M).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ce.value,"--reka-popper-transform-origin":[b(N).transformOrigin?.x,b(N).transformOrigin?.y].join(` `),...b(N).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[u(b(E),t({ref:b(h)},r.$attrs,{"as-child":s.asChild,as:r.as,"data-side":ae.value,"data-align":oe.value,style:{animation:b(ne)?void 0:`none`}}),{default:a(()=>[o(r.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}}),sn={top:`bottom`,right:`left`,bottom:`top`,left:`right`},cn=y({inheritAttrs:!1,__name:`PopperArrow`,props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(r){let{forwardRef:i}=x(),s=rn(),c=d(()=>sn[s.placedSide.value]);return(r,l)=>(n(),p(`span`,{ref:e=>{b(s).onArrowChange(e)},style:e({position:`absolute`,left:b(s).arrowX?.value?`${b(s).arrowX?.value}px`:void 0,top:b(s).arrowY?.value?`${b(s).arrowY?.value}px`:void 0,[c.value]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[b(s).placedSide.value],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[b(s).placedSide.value],visibility:b(s).shouldHideArrow.value?`hidden`:void 0})},[u(ce,t(r.$attrs,{ref:b(i),style:{display:`block`},as:r.as,"as-child":r.asChild,rounded:r.rounded,width:r.width,height:r.height}),{default:a(()=>[o(r.$slots,`default`)]),_:3},16,[`as`,`as-child`,`rounded`,`width`,`height`])],4))}});export{ne as a,ie as i,on as n,M as o,ae as r,A as s,cn as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/RegisterView-HW42R58H.js b/assets/public/dist/assets/RegisterView-HW42R58H.js new file mode 100644 index 0000000..22e3399 --- /dev/null +++ b/assets/public/dist/assets/RegisterView-HW42R58H.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cs_TermsAndConditionsView-DP2Pp5Ho.js","assets/vue.runtime.esm-bundler-BM5WPBHd.js","assets/Icon-Chkiq2IE.js","assets/Card-DPC9xXwj.js","assets/en_TermsAndConditionsView-C9vscF7i.js","assets/pl_TermsAndConditionsView-D4bXtPik.js","assets/cs_PrivacyPolicyView-Be5X4T0B.js","assets/en_PrivacyPolicyView-C0wuScgt.js","assets/pl_PrivacyPolicyView-Bqyt2B2G.js"])))=>i.map(i=>d[i]); +import{B as e,D as t,E as n,F as r,G as i,H as a,M as o,N as s,O as c,Q as l,R as u,U as d,W as f,_ as p,d as m,f as h,g,h as _,i as v,m as y,o as b,p as x,r as S,ut as C,v as w,wt as T,xt as E,y as D,yt as O}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{n as k}from"./useFetchJson-4WJQFaEO.js";import{n as A,t as j}from"./useForwardExpose-BgPOLLFN.js";import{N as M,Q as N,S as P,V as F,X as I,b as L,i as R,n as ee,r as z,s as B,t as V}from"./Icon-Chkiq2IE.js";import{t as H}from"./auth-hZSBdvj-.js";import{o as U,p as W,s as G}from"./usePortal-Zddbph8M.js";import{r as K,t as te}from"./Collection-BkGqWqUl.js";import{f as ne,h as re,t as ie}from"./Button-jwL-tYHc.js";import{n as q,t as J}from"./_rolldown_dynamic_import_helper-DhxqfwDR.js";import{a as ae,i as oe,r as se,t as ce}from"./VisuallyHiddenInput-BH1aLUkb.js";import{i as Y,n as le,r as ue,t as de}from"./useValidation-wBItIFut.js";import{n as fe}from"./settings-BcOmX106.js";import{t as pe}from"./Alert-BNRo6CMI.js";function X(e,t){return W(e)?!1:Array.isArray(e)?e.some(e=>L(e,t)):L(e,t)}var[me,he]=B(`RovingFocusGroup`),Z=D({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=me(),i=G(),a=m(()=>t.tabStopId||i),d=m(()=>n.currentTabStopId.value===a.value),{getItems:f,CollectionItem:h}=te();o(()=>{t.focusable&&n.onFocusableItemAdd()}),s(()=>{t.focusable&&n.onFocusableItemRemove()});function g(e){if(e.key===`Tab`&&e.shiftKey){n.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let r=oe(e,n.orientation.value,n.dir.value);if(r!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!t.allowShiftKey&&e.shiftKey)return;e.preventDefault();let i=[...f().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(r===`last`)i.reverse();else if(r===`prev`||r===`next`){r===`prev`&&i.reverse();let t=i.indexOf(e.currentTarget);i=n.loop.value?ae(i,t+1):i.slice(t+1)}c(()=>se(i))}}return(e,t)=>(r(),x(O(h),null,{default:l(()=>[p(O(R),{tabindex:d.value?0:-1,"data-orientation":O(n).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?O(n).onItemFocus(a.value):t.preventDefault()},onFocus:t[1]||=e=>O(n).onItemFocus(a.value),onKeydown:g},{default:l(()=>[u(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}}),[ge,_e]=B(`CheckboxGroupRoot`);function Q(e){return e===`indeterminate`}function $(e){return Q(e)?`indeterminate`:e?`checked`:`unchecked`}var[ve,ye]=B(`CheckboxRoot`),be=D({inheritAttrs:!1,__name:`CheckboxRoot`,props:{defaultValue:{type:[Boolean,String],required:!1},modelValue:{type:[Boolean,String,null],required:!1,default:void 0},disabled:{type:Boolean,required:!1},value:{type:null,required:!1,default:`on`},id:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(n,{emit:i}){let a=n,o=i,{forwardRef:s,currentElement:c}=j(),d=ge(null),f=M(a,`modelValue`,o,{defaultValue:a.defaultValue,passive:a.modelValue===void 0}),p=m(()=>d?.disabled.value||a.disabled),h=m(()=>W(d?.modelValue.value)?f.value===`indeterminate`?`indeterminate`:f.value:X(d.modelValue.value,a.value));function g(){if(W(d?.modelValue.value))f.value=Q(f.value)?!0:!f.value;else{let e=[...d.modelValue.value||[]];if(X(e,a.value)){let t=e.findIndex(e=>L(e,a.value));e.splice(t,1)}else e.push(a.value);d.modelValue.value=e}}let _=K(c),b=m(()=>a.id&&c.value?document.querySelector(`[for="${a.id}"]`)?.innerText:void 0);return ye({disabled:p,state:h}),(n,i)=>(r(),x(e(O(d)?.rovingFocus.value?O(Z):O(R)),t(n.$attrs,{id:n.id,ref:O(s),role:`checkbox`,"as-child":n.asChild,as:n.as,type:n.as===`button`?`button`:void 0,"aria-checked":O(Q)(h.value)?`mixed`:h.value,"aria-required":n.required,"aria-label":n.$attrs[`aria-label`]||b.value,"data-state":O($)(h.value),"data-disabled":p.value?``:void 0,disabled:p.value,focusable:O(d)?.rovingFocus.value?!p.value:void 0,onKeydown:S(v(()=>{},[`prevent`]),[`enter`]),onClick:g}),{default:l(()=>[u(n.$slots,`default`,{modelValue:O(f),state:h.value}),O(_)&&n.name&&!O(d)?(r(),x(O(ce),{key:0,type:`checkbox`,checked:!!h.value,name:n.name,value:n.value,disabled:p.value,required:n.required},null,8,[`checked`,`name`,`value`,`disabled`,`required`])):y(`v-if`,!0)]),_:3},16,[`id`,`as-child`,`as`,`type`,`aria-checked`,`aria-required`,`aria-label`,`data-state`,`data-disabled`,`disabled`,`focusable`,`onKeydown`]))}}),xe=D({__name:`CheckboxIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let{forwardRef:n}=j(),i=ve();return(e,a)=>(r(),x(O(U),{present:e.forceMount||O(Q)(O(i).state.value)||O(i).state.value===!0},{default:l(()=>[p(O(R),t({ref:O(n),"data-state":O($)(O(i).state.value),"data-disabled":O(i).disabled.value?``:void 0,style:{pointerEvents:`none`},"as-child":e.asChild,as:e.as},e.$attrs),{default:l(()=>[u(e.$slots,`default`)]),_:3},16,[`data-state`,`data-disabled`,`as-child`,`as`])]),_:3},8,[`present`]))}}),Se={slots:{root:`relative flex items-start`,container:`flex items-center`,base:`rounded-sm ring ring-inset ring-accented overflow-hidden focus-visible:outline-2 focus-visible:outline-offset-2`,indicator:`flex items-center justify-center size-full text-inverted`,icon:`shrink-0 size-full`,wrapper:`w-full`,label:`block font-medium text-default`,description:`text-muted`},variants:{color:{primary:{base:`focus-visible:outline-primary`,indicator:`bg-primary`},secondary:{base:`focus-visible:outline-secondary`,indicator:`bg-secondary`},success:{base:`focus-visible:outline-success`,indicator:`bg-success`},info:{base:`focus-visible:outline-info`,indicator:`bg-info`},warning:{base:`focus-visible:outline-warning`,indicator:`bg-warning`},error:{base:`focus-visible:outline-error`,indicator:`bg-error`},neutral:{base:`focus-visible:outline-inverted`,indicator:`bg-inverted`}},variant:{list:{root:``},card:{root:`border border-muted rounded-lg`}},indicator:{start:{root:`flex-row`,wrapper:`ms-2`},end:{root:`flex-row-reverse`,wrapper:`me-2`},hidden:{base:`sr-only`,wrapper:`text-center`}},size:{xs:{base:`size-3`,container:`h-4`,wrapper:`text-xs`},sm:{base:`size-3.5`,container:`h-4`,wrapper:`text-xs`},md:{base:`size-4`,container:`h-5`,wrapper:`text-sm`},lg:{base:`size-4.5`,container:`h-5`,wrapper:`text-sm`},xl:{base:`size-5`,container:`h-6`,wrapper:`text-base`}},required:{true:{label:`after:content-['*'] after:ms-0.5 after:text-error`}},disabled:{true:{root:`opacity-75`,base:`cursor-not-allowed`,label:`cursor-not-allowed`,description:`cursor-not-allowed`}},checked:{true:``}},compoundVariants:[{size:`xs`,variant:`card`,class:{root:`p-2.5`}},{size:`sm`,variant:`card`,class:{root:`p-3`}},{size:`md`,variant:`card`,class:{root:`p-3.5`}},{size:`lg`,variant:`card`,class:{root:`p-4`}},{size:`xl`,variant:`card`,class:{root:`p-4.5`}},{color:`primary`,variant:`card`,class:{root:`has-data-[state=checked]:border-primary`}},{color:`secondary`,variant:`card`,class:{root:`has-data-[state=checked]:border-secondary`}},{color:`success`,variant:`card`,class:{root:`has-data-[state=checked]:border-success`}},{color:`info`,variant:`card`,class:{root:`has-data-[state=checked]:border-info`}},{color:`warning`,variant:`card`,class:{root:`has-data-[state=checked]:border-warning`}},{color:`error`,variant:`card`,class:{root:`has-data-[state=checked]:border-error`}},{color:`neutral`,variant:`card`,class:{root:`has-data-[state=checked]:border-inverted`}},{variant:`card`,disabled:!0,class:{root:`cursor-not-allowed`}}],defaultVariants:{size:`md`,color:`primary`,variant:`list`,indicator:`start`}},Ce=Object.assign({inheritAttrs:!1},{__name:`Checkbox`,props:n({as:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},indicator:{type:null,required:!1},icon:{type:null,required:!1},indeterminateIcon:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},disabled:{type:Boolean,required:!1},required:{type:Boolean,required:!1},name:{type:String,required:!1},value:{type:null,required:!1},id:{type:String,required:!1},defaultValue:{type:[Boolean,String],required:!1}},{modelValue:{type:[Boolean,String],default:void 0},modelModifiers:{}}),emits:n([`change`],[`update:modelValue`]),setup(n,{emit:o}){let s=n,c=i(),v=o,b=f(n,`modelValue`,{type:[Boolean,String],default:void 0}),S=P(),C=ee(`checkbox`,s),w=re(F(s,`required`,`value`,`defaultValue`)),{id:D,emitFormChange:k,emitFormInput:A,size:j,color:M,name:N,disabled:I,ariaAttrs:L}=ne(s),B=D.value??d(),H=a(),U=m(()=>{let{"data-state":e,...t}=H;return t}),W=m(()=>z({extend:z(Se),...S.ui?.checkbox||{}})({size:j.value,color:M.value,variant:s.variant,indicator:s.indicator,required:s.required,disabled:I.value}));function G(e){v(`change`,new Event(`change`,{target:{value:e}})),k(),A()}return(i,a)=>(r(),x(O(R),{as:!n.variant||n.variant===`list`?n.as:O(Y),"data-slot":`root`,class:E(W.value.root({class:[O(C)?.root,s.class]}))},{default:l(()=>[h(`div`,{"data-slot":`container`,class:E(W.value.container({class:O(C)?.container}))},[p(O(be),t({id:O(B)},{...O(w),...U.value,...O(L)},{modelValue:b.value,"onUpdate:modelValue":[a[0]||=e=>b.value=e,G],name:O(N),disabled:O(I),"data-slot":`base`,class:W.value.base({class:O(C)?.base})}),{default:l(({modelValue:e})=>[p(O(xe),{"data-slot":`indicator`,class:E(W.value.indicator({class:O(C)?.indicator}))},{default:l(()=>[e===`indeterminate`?(r(),x(V,{key:0,name:n.indeterminateIcon||O(S).ui.icons.minus,"data-slot":`icon`,class:E(W.value.icon({class:O(C)?.icon}))},null,8,[`name`,`class`])):(r(),x(V,{key:1,name:n.icon||O(S).ui.icons.check,"data-slot":`icon`,class:E(W.value.icon({class:O(C)?.icon}))},null,8,[`name`,`class`]))]),_:2},1032,[`class`])]),_:1},16,[`id`,`modelValue`,`name`,`disabled`,`class`])],2),n.label||c.label||n.description||c.description?(r(),_(`div`,{key:0,"data-slot":`wrapper`,class:E(W.value.wrapper({class:O(C)?.wrapper}))},[n.label||c.label?(r(),x(e(!n.variant||n.variant===`list`?O(Y):`p`),{key:0,for:O(B),"data-slot":`label`,class:E(W.value.label({class:O(C)?.label}))},{default:l(()=>[u(i.$slots,`label`,{label:n.label},()=>[g(T(n.label),1)])]),_:3},8,[`for`,`class`])):y(``,!0),n.description||c.description?(r(),_(`p`,{key:1,"data-slot":`description`,class:E(W.value.description({class:O(C)?.description}))},[u(i.$slots,`description`,{description:n.description},()=>[g(T(n.description),1)])],2)):y(``,!0)],2)):y(``,!0)]),_:3},8,[`as`,`class`]))}}),we={class:`h-[100vh] flex items-center justify-center px-4 sm:px-6 lg:px-8`},Te={class:`w-full max-w-md`},Ee={class:`dark:text-white text-black`},De={class:`text-center flex flex-col gap-3 border-t dark:border-(--border-dark) border-(--border-light) pt-4`},Oe={class:`dark:text-white text-black`},ke=D({__name:`RegisterView`,setup(t){let{locale:n}=N(),i=I(),a=H(),o=C(!1),s=C(!1),c=C(!1),u=de(),d=C(``),f=C(``),v=C(``),S=C(``),E=C(``);async function D(){(await a.register(d.value,f.value,v.value,S.value,E.value,n.value))?.success&&i.push({name:`login`,query:{registered:`true`}})}function j(){i.push({name:`login`})}function M(){return u.reset(),u.validateFirstName(d,`first_name`,A.t(`validate_error.first_name_required`)),u.validateLastName(f,`last_name`,A.t(`validate_error.last_name_required`)),u.validateEmail(v,`email`,A.t(`validate_error.email_required`)),u.validatePasswords(S,`password`,E,`confirm_password`,A.t(`validate_error.confirm_password_required`)),u.errors}let P=C(!1),F=C(!1),L=m(()=>w(()=>J(Object.assign({"../components/terms/cs_TermsAndConditionsView.vue":()=>k(()=>import(`./cs_TermsAndConditionsView-DP2Pp5Ho.js`),__vite__mapDeps([0,1,2,3])),"../components/terms/en_TermsAndConditionsView.vue":()=>k(()=>import(`./en_TermsAndConditionsView-C9vscF7i.js`),__vite__mapDeps([4,1,2,3])),"../components/terms/pl_TermsAndConditionsView.vue":()=>k(()=>import(`./pl_TermsAndConditionsView-D4bXtPik.js`),__vite__mapDeps([5,1,2,3]))}),`../components/terms/${A.locale.value}_TermsAndConditionsView.vue`,4).catch(()=>k(()=>import(`./en_TermsAndConditionsView-C9vscF7i.js`),__vite__mapDeps([4,1,2,3]))))),R=m(()=>w(()=>J(Object.assign({"../components/terms/cs_PrivacyPolicyView.vue":()=>k(()=>import(`./cs_PrivacyPolicyView-Be5X4T0B.js`),__vite__mapDeps([6,1,2,3])),"../components/terms/en_PrivacyPolicyView.vue":()=>k(()=>import(`./en_PrivacyPolicyView-C0wuScgt.js`),__vite__mapDeps([7,1,2,3])),"../components/terms/pl_PrivacyPolicyView.vue":()=>k(()=>import(`./pl_PrivacyPolicyView-Bqyt2B2G.js`),__vite__mapDeps([8,1,2,3]))}),`../components/terms/${A.locale.value}_PrivacyPolicyView.vue`,4).catch(()=>k(()=>import(`./en_PrivacyPolicyView-C0wuScgt.js`),__vite__mapDeps([7,1,2,3])))));return(t,n)=>{let i=ie,u=q,m=pe,C=fe,w=le,k=V,A=Ce,N=ue;return r(),_(b,null,[p(u,{open:P.value,"onUpdate:open":n[1]||=e=>P.value=e,overlay:!1},{body:l(()=>[(r(),x(e(L.value)))]),footer:l(()=>[p(i,{onClick:n[0]||=e=>P.value=!1,class:`mx-auto px-12`},{default:l(()=>[...n[14]||=[g(`close`,-1)]]),_:1})]),_:1},8,[`open`]),p(u,{open:F.value,"onUpdate:open":n[3]||=e=>F.value=e,overlay:!1},{body:l(()=>[(r(),x(e(R.value)))]),footer:l(()=>[p(i,{onClick:n[2]||=e=>F.value=!1,class:`mx-auto px-12`},{default:l(()=>[...n[15]||=[g(`close`,-1)]]),_:1})]),_:1},8,[`open`]),h(`div`,we,[h(`div`,Te,[p(N,{validate:M,onSubmit:D,class:`flex flex-col gap-3`},{default:l(()=>[O(a).error?(r(),x(m,{key:0,color:`error`,variant:`subtle`,icon:`i-heroicons-exclamation-triangle`,title:O(a).error,"close-button":{icon:`i-heroicons-x-mark-20-solid`,variant:`link`},onClose:O(a).clearError},null,8,[`title`,`onClose`])):y(``,!0),p(w,{label:t.$t(`general.first_name`),name:`first_name`,required:``,class:`w-full dark:text-white text-black`},{default:l(()=>[p(C,{class:`w-full`,modelValue:d.value,"onUpdate:modelValue":n[4]||=e=>d.value=e,type:`text`,placeholder:t.$t(`general.first_name`),disabled:O(a).loading},null,8,[`modelValue`,`placeholder`,`disabled`])]),_:1},8,[`label`]),p(w,{label:t.$t(`general.last_name`),name:`last_name`,required:``,class:`w-full dark:text-white text-black`},{default:l(()=>[p(C,{class:`w-full dark:text-white text-black`,modelValue:f.value,"onUpdate:modelValue":n[5]||=e=>f.value=e,type:`text`,placeholder:t.$t(`general.last_name`),disabled:O(a).loading},null,8,[`modelValue`,`placeholder`,`disabled`])]),_:1},8,[`label`]),p(w,{label:t.$t(`general.email_address`),name:`email`,required:``,class:`w-full dark:text-white text-black`},{default:l(()=>[p(C,{modelValue:v.value,"onUpdate:modelValue":n[6]||=e=>v.value=e,placeholder:t.$t(`general.enter_your_email`),disabled:O(a).loading,class:`w-full dark:text-white text-black`},null,8,[`modelValue`,`placeholder`,`disabled`])]),_:1},8,[`label`]),p(w,{label:t.$t(`general.password`),name:`password`,required:``,class:`w-full dark:text-white text-black`},{default:l(()=>[p(C,{modelValue:S.value,"onUpdate:modelValue":n[8]||=e=>S.value=e,placeholder:t.$t(`general.enter_your_password`),disabled:O(a).loading,class:`w-full dark:text-white text-black`,type:c.value?`text`:`password`,ui:{trailing:`pe-1`}},{trailing:l(()=>[p(k,{color:`neutral`,variant:`link`,size:`sm`,name:c.value?`i-lucide-eye-off`:`i-lucide-eye`,"aria-label":c.value?`Hide password`:`Show password`,"aria-pressed":c.value,"aria-controls":`password`,onClick:n[7]||=e=>c.value=!c.value},null,8,[`name`,`aria-label`,`aria-pressed`])]),_:1},8,[`modelValue`,`placeholder`,`disabled`,`type`])]),_:1},8,[`label`]),p(w,{label:t.$t(`general.confirm_password`),name:`confirm_password`,required:``,class:`w-full dark:text-white text-black`},{default:l(()=>[p(C,{modelValue:E.value,"onUpdate:modelValue":n[10]||=e=>E.value=e,type:s.value?`text`:`password`,class:`w-full dark:text-white text-black`,placeholder:t.$t(`general.confirm_your_password`),disabled:O(a).loading,ui:{trailing:`pe-1`}},{trailing:l(()=>[p(k,{color:`neutral`,variant:`ghost`,size:`sm`,name:s.value?`i-lucide-eye-off`:`i-lucide-eye`,onClick:n[9]||=e=>s.value=!s.value},null,8,[`name`])]),_:1},8,[`modelValue`,`type`,`placeholder`,`disabled`])]),_:1},8,[`label`]),p(A,{modelValue:o.value,"onUpdate:modelValue":n[13]||=e=>o.value=e,class:`label mb-3`},{label:l(()=>[h(`span`,Ee,[g(T(t.$t(`general.i_agree_to_the`))+` `,1),h(`span`,{onClick:n[11]||=e=>P.value=!P.value,class:`cursor-pointer underline text-(--color-blue-600) dark:text-(--color-blue-500)`},T(t.$t(`general.terms_of_service`)),1),g(` `+T(t.$t(`general.and`))+` `,1),h(`span`,{onClick:n[12]||=e=>F.value=!F.value,class:`cursor-pointer underline text-(--color-blue-600) dark:text-(--color-blue-500)`},T(t.$t(`general.privacy_policy`)),1)])]),_:1},8,[`modelValue`]),p(i,{type:`submit`,block:``,loading:O(a).loading,disabled:!o.value,class:`text-white bg-(--color-blue-600) dark:bg-(--color-blue-500)`},{default:l(()=>[g(T(t.$t(`general.create_account`)),1)]),_:1},8,[`loading`,`disabled`]),h(`div`,De,[h(`p`,Oe,T(t.$t(`general.already_have_an_account`)),1),p(i,{color:`neutral`,variant:`outline`,loading:O(a).loading,class:`w-full flex justify-center dark:text-white hover:text-white hover:bg-(--color-blue-600) dark:hover:bg-(--color-blue-500) border border-(--border-light)! dark:border-(--border-dark)!`,onClick:j},{default:l(()=>[g(T(t.$t(`general.sign_in`)),1)]),_:1},8,[`loading`])])]),_:1})])])],64)}}});export{ke as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/RepoChartView-DWk8UojC.js b/assets/public/dist/assets/RepoChartView-DWk8UojC.js new file mode 100644 index 0000000..8f45b95 --- /dev/null +++ b/assets/public/dist/assets/RepoChartView-DWk8UojC.js @@ -0,0 +1,3 @@ +import{B as e,Ct as t,D as n,F as r,G as i,J as a,K as o,L as s,M as c,N as l,O as u,Q as d,R as f,S as p,St as m,Y as h,_ as g,c as _,d as v,f as y,g as b,gt as x,h as S,ht as C,i as w,m as T,mt as E,o as D,p as O,pt as k,rt as ee,ut as A,wt as j,x as te,xt as M,y as N,yt as P}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{t as ne}from"./useFetchJson-4WJQFaEO.js";import{n as re,t as F}from"./useForwardExpose-BgPOLLFN.js";import{E as ie,M as ae,N as oe,S as se,V as ce,b as le,f as ue,h as de,i as I,m as fe,n as pe,p as me,r as he,s as ge,t as _e,u as ve,x as ye}from"./Icon-Chkiq2IE.js";import{t as be}from"./auth-hZSBdvj-.js";import{a as xe,c as Se,d as Ce,h as we,i as Te,l as Ee,m as L,n as De,o as Oe,p as ke,r as Ae,s as je,t as Me}from"./usePortal-Zddbph8M.js";import{i as Ne,r as Pe,t as R}from"./Collection-BkGqWqUl.js";import{i as Fe,n as Ie,o as Le,r as Re,s as ze,t as Be}from"./PopperArrow-CcUKYeE0.js";import{f as Ve,h as He,m as Ue,n as We,p as Ge,r as Ke,t as qe}from"./Button-jwL-tYHc.js";import{t as Je}from"./utils-ZBSSwpFo.js";function Ye(e,t=-1/0,n=1/0){return Math.min(n,Math.max(t,e))}var Xe=N({__name:`PaginationEllipsis`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return F(),(e,i)=>(r(),O(P(I),n(t,{"data-type":`ellipsis`}),{default:d(()=>[f(e.$slots,`default`,{},()=>[i[0]||=b(`…`)])]),_:3},16))}}),[Ze,Qe]=ge(`PaginationRoot`),$e=N({__name:`PaginationRoot`,props:{page:{type:Number,required:!1},defaultPage:{type:Number,required:!1,default:1},itemsPerPage:{type:Number,required:!0},total:{type:Number,required:!1,default:0},siblingCount:{type:Number,required:!1,default:2},disabled:{type:Boolean,required:!1},showEdges:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`nav`}},emits:[`update:page`],setup(e,{emit:t}){let n=e,i=t,{siblingCount:a,disabled:o,showEdges:s}=x(n);F();let c=oe(n,`page`,i,{defaultValue:n.defaultPage,passive:n.page===void 0}),l=v(()=>Math.max(1,Math.ceil(n.total/(n.itemsPerPage||1))));return Qe({page:c,onPageChange(e){c.value=e},pageCount:l,siblingCount:a,disabled:o,showEdges:s}),(e,t)=>(r(),O(P(I),{as:e.as,"as-child":e.asChild},{default:d(()=>[f(e.$slots,`default`,{page:P(c),pageCount:l.value})]),_:3},8,[`as`,`as-child`]))}}),et=N({__name:`PaginationFirst`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,i=Ze();F();let a=v(()=>i.page.value===1||i.disabled.value);return(e,o)=>(r(),O(P(I),n(t,{"aria-label":`First Page`,type:e.as===`button`?`button`:void 0,disabled:a.value,onClick:o[0]||=e=>!a.value&&P(i).onPageChange(1)}),{default:d(()=>[f(e.$slots,`default`,{},()=>[o[1]||=b(`First page`)])]),_:3},16,[`type`,`disabled`]))}}),tt=N({__name:`PaginationLast`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,i=Ze();F();let a=v(()=>i.page.value===i.pageCount.value||i.disabled.value);return(e,o)=>(r(),O(P(I),n(t,{"aria-label":`Last Page`,type:e.as===`button`?`button`:void 0,disabled:a.value,onClick:o[0]||=e=>!a.value&&P(i).onPageChange(P(i).pageCount.value)}),{default:d(()=>[f(e.$slots,`default`,{},()=>[o[1]||=b(`Last page`)])]),_:3},16,[`type`,`disabled`]))}});function nt(e,t){let n=t-e+1;return Array.from({length:n},(t,n)=>n+e)}function rt(e){return e.map(e=>typeof e==`number`?{type:`page`,value:e}:{type:`ellipsis`})}var it=`ellipsis`;function at(e,t,n,r){let i=t,a=Math.max(e-n,1),o=Math.min(e+n,i);if(r){let e=Math.min(2*n+5,t)-2,r=a>3&&Math.abs(i-e-1+1)>2&&Math.abs(a-1)>2,s=o2&&Math.abs(i-o)>2;return!r&&s?[...nt(1,e),it,i]:r&&!s?[1,it,...nt(i-e+1,i)]:r&&s?[1,it,...nt(a,o),it,i]:nt(1,i)}else{let r=n*2+1;return trt(at(n.page.value,n.pageCount.value,n.siblingCount.value,n.showEdges.value)));return(e,n)=>(r(),O(P(I),m(te(t)),{default:d(()=>[f(e.$slots,`default`,{items:i.value})]),_:3},16))}}),st=N({__name:`PaginationListItem`,props:{value:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;F();let i=Ze(),a=v(()=>i.page.value===t.value),o=v(()=>i.disabled.value);return(e,s)=>(r(),O(P(I),n(t,{"data-type":`page`,"aria-label":`Page ${e.value}`,"aria-current":a.value?`page`:void 0,"data-selected":a.value?`true`:void 0,disabled:o.value,type:e.as===`button`?`button`:void 0,onClick:s[0]||=t=>!o.value&&P(i).onPageChange(e.value)}),{default:d(()=>[f(e.$slots,`default`,{},()=>[b(j(e.value),1)])]),_:3},16,[`aria-label`,`aria-current`,`data-selected`,`disabled`,`type`]))}}),ct=N({__name:`PaginationNext`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;F();let i=Ze(),a=v(()=>i.page.value===i.pageCount.value||i.disabled.value);return(e,o)=>(r(),O(P(I),n(t,{"aria-label":`Next Page`,type:e.as===`button`?`button`:void 0,disabled:a.value,onClick:o[0]||=e=>!a.value&&P(i).onPageChange(P(i).page.value+1)}),{default:d(()=>[f(e.$slots,`default`,{},()=>[o[1]||=b(`Next page`)])]),_:3},16,[`type`,`disabled`]))}}),lt=N({__name:`PaginationPrev`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;F();let i=Ze(),a=v(()=>i.page.value===1||i.disabled.value);return(e,o)=>(r(),O(P(I),n(t,{"aria-label":`Previous Page`,type:e.as===`button`?`button`:void 0,disabled:a.value,onClick:o[0]||=e=>!a.value&&P(i).onPageChange(P(i).page.value-1)}),{default:d(()=>[f(e.$slots,`default`,{},()=>[o[1]||=b(`Prev page`)])]),_:3},16,[`type`,`disabled`]))}}),ut=[` `,`Enter`,`ArrowUp`,`ArrowDown`],dt=[` `,`Enter`];function ft(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>pt(e,t,n)):pt(e,t,n)}function pt(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:le(e,t)}function mt(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var ht={key:0,value:``},[gt,_t]=ge(`SelectRoot`),vt=N({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:t}){let i=e,a=t,{required:o,disabled:c,multiple:l,dir:u}=x(i),p=oe(i,`modelValue`,a,{defaultValue:i.defaultValue??(l.value?[]:void 0),passive:i.modelValue===void 0,deep:!0}),m=oe(i,`open`,a,{defaultValue:i.defaultOpen,passive:i.open===void 0}),h=A(),g=A(),_=A({x:0,y:0}),y=v(()=>l.value&&Array.isArray(p.value)?p.value?.length===0:ke(p.value));R({isProvider:!0});let b=Ne(u),C=Pe(h),w=A(new Set),E=v(()=>Array.from(w.value).map(e=>e.value).join(`;`));function k(e){if(l.value){let t=Array.isArray(p.value)?[...p.value]:[],n=t.findIndex(t=>pt(t,e,i.by));n===-1?t.push(e):t.splice(n,1),p.value=[...t]}else p.value=e}function ee(e){return Array.from(w.value).find(t=>ft(e,t.value,i.by))}return _t({triggerElement:h,onTriggerChange:e=>{h.value=e},valueElement:g,onValueElementChange:e=>{g.value=e},contentId:``,modelValue:p,onValueChange:k,by:i.by,open:m,multiple:l,required:o,onOpenChange:e=>{m.value=e},dir:b,triggerPointerDownPosRef:_,disabled:c,isEmptyModelValue:y,optionsSet:w,onOptionAdd:e=>{let t=ee(e.value);t&&w.value.delete(t),w.value.add(e)},onOptionRemove:e=>{let t=ee(e.value);t&&w.value.delete(t)}}),(e,t)=>(r(),O(P(Fe),null,{default:d(()=>[f(e.$slots,`default`,{modelValue:P(p),open:P(m)}),P(C)?(r(),O(yt,{key:E.value,"aria-hidden":`true`,tabindex:`-1`,multiple:P(l),required:P(o),name:e.name,autocomplete:e.autocomplete,disabled:P(c),value:P(p)},{default:d(()=>[P(ke)(P(p))?(r(),S(`option`,ht)):T(`v-if`,!0),(r(!0),S(D,null,s(Array.from(w.value),e=>(r(),S(`option`,n({key:e.value??``},{ref_for:!0},e),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):T(`v-if`,!0)]),_:3}))}}),yt=N({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){let t=e,i=A(),o=gt();a(()=>t.value,(e,t)=>{let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(e!==t&&r&&i.value){let t=new Event(`change`,{bubbles:!0});r.call(i.value,e),i.value.dispatchEvent(t)}});function s(e){o.onValueChange(e.target.value)}return(e,a)=>(r(),O(P(De),{"as-child":``},{default:d(()=>[y(`select`,n({ref_key:`selectElement`,ref:i},t,{onInput:s}),[f(e.$slots,`default`)],16)]),_:3}))}}),bt=N({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=He(e);return(e,i)=>(r(),O(P(Ie),n(P(t),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:d(()=>[f(e.$slots,`default`)]),_:3},16))}}),xt={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[St,Ct]=ge(`SelectContent`),wt=N({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:i}){let o=t,s=i,c=gt();ze(),Ce(o.bodyLock);let{CollectionSlot:l,getItems:u}=R(),p=A();Se(p);let{search:m,handleTypeaheadSearch:_}=Le(),y=A(),b=A(),x=A(),S=A(!1),C=A(!1),T=A(!1);function E(){b.value&&p.value&&Je([b.value,p.value])}a(S,()=>{E()});let{onOpenChange:D,triggerPointerDownPosRef:k}=c;h(e=>{if(!p.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(k.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(k.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():p.value?.contains(e.target)||D(!1),document.removeEventListener(`pointermove`,n),k.value=null)};k.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function ee(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&_(e.key,u()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...u().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>Je(t)),e.preventDefault()}}let j=He(v(()=>o.position===`popper`?o:{}).value);return Ct({content:p,viewport:y,onViewportChange:e=>{y.value=e},itemRefCallback:(e,t,n)=>{let r=!C.value&&!n,i=ft(c.modelValue.value,t,c.by);if(c.multiple.value){if(T.value)return;(i||r)&&(b.value=e,i&&(T.value=!0))}else (i||r)&&(b.value=e);r&&(C.value=!0)},selectedItem:b,selectedItemText:x,onItemLeave:()=>{p.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!C.value&&!n;(ft(c.modelValue.value,t,c.by)||r)&&(x.value=e)},focusSelectedItem:E,position:o.position,isPositioned:S,searchRef:m}),(t,i)=>(r(),O(P(l),null,{default:d(()=>[g(P(Te),{"as-child":``,onMountAutoFocus:i[6]||=w(()=>{},[`prevent`]),onUnmountAutoFocus:i[7]||=e=>{s(`closeAutoFocus`,e),!e.defaultPrevented&&(P(c).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:d(()=>[g(P(xe),{"as-child":``,"disable-outside-pointer-events":t.disableOutsidePointerEvents,onFocusOutside:i[2]||=w(()=>{},[`prevent`]),onDismiss:i[3]||=e=>P(c).onOpenChange(!1),onEscapeKeyDown:i[4]||=e=>s(`escapeKeyDown`,e),onPointerDownOutside:i[5]||=e=>s(`pointerDownOutside`,e)},{default:d(()=>[(r(),O(e(t.position===`popper`?bt:Dt),n({...t.$attrs,...P(j)},{id:P(c).contentId,ref:e=>{let t=P(ie)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?p.value=t.firstElementChild:p.value=t},role:`listbox`,"data-state":P(c).open.value?`open`:`closed`,dir:P(c).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:i[0]||=w(()=>{},[`prevent`]),onPlaced:i[1]||=e=>S.value=!0,onKeydown:ee}),{default:d(()=>[f(t.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3},8,[`disable-outside-pointer-events`])]),_:3})]),_:3}))}}),[Tt,Et]=ge(`SelectItemAlignedPosition`),Dt=N({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(e,{emit:i}){let a=e,o=i,{getItems:s}=R(),l=gt(),p=St(),m=A(!1),h=A(!0),_=A(),{forwardRef:v,currentElement:y}=F(),{viewport:b,selectedItem:x,selectedItemText:C,focusSelectedItem:w}=p;function T(){if(l.triggerElement.value&&l.valueElement.value&&_.value&&y.value&&b?.value&&x?.value&&C?.value){let e=l.triggerElement.value.getBoundingClientRect(),t=y.value.getBoundingClientRect(),n=l.valueElement.value.getBoundingClientRect(),r=C.value.getBoundingClientRect();if(l.dir.value!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=Ye(a,10,Math.max(10,l-c));_.value.style.minWidth=`${s}px`,_.value.style.left=`${u}px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=Ye(a,10,Math.max(10,l-c));_.value.style.minWidth=`${s}px`,_.value.style.right=`${u}px`}let i=s().map(e=>e.ref),a=window.innerHeight-20,c=b.value.scrollHeight,u=window.getComputedStyle(y.value),d=Number.parseInt(u.borderTopWidth,10),f=Number.parseInt(u.paddingTop,10),p=Number.parseInt(u.borderBottomWidth,10),h=Number.parseInt(u.paddingBottom,10),g=d+f+c+h+p,v=Math.min(x.value.offsetHeight*5,g),S=window.getComputedStyle(b.value),w=Number.parseInt(S.paddingTop,10),T=Number.parseInt(S.paddingBottom,10),E=e.top+e.height/2-10,D=a-E,O=x.value.offsetHeight/2,k=x.value.offsetTop+O,ee=d+f+k,A=g-ee;if(ee<=E){let e=x.value===i[i.length-1];_.value.style.bottom=`0px`;let t=y.value.clientHeight-b.value.offsetTop-b.value.offsetHeight,n=ee+Math.max(D,O+(e?T:0)+t+p);_.value.style.height=`${n}px`}else{let e=x.value===i[0];_.value.style.top=`0px`;let t=Math.max(E,d+b.value.offsetTop+(e?w:0)+O)+A;_.value.style.height=`${t}px`,b.value.scrollTop=ee-E+b.value.offsetTop}_.value.style.margin=`10px 0`,_.value.style.minHeight=`${v}px`,_.value.style.maxHeight=`${a}px`,o(`placed`),requestAnimationFrame(()=>m.value=!0)}}let E=A(``);c(async()=>{await u(),T(),y.value&&(E.value=window.getComputedStyle(y.value).zIndex)});function D(e){e&&h.value===!0&&(T(),w?.(),h.value=!1)}return ae(l.triggerElement,()=>{T()}),Et({contentWrapper:_,shouldExpandOnScrollRef:m,onScrollButtonChange:D}),(e,i)=>(r(),S(`div`,{ref_key:`contentWrapperElement`,ref:_,style:t({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:E.value})},[g(P(I),n({ref:P(v),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...e.$attrs,...a}),{default:d(()=>[f(e.$slots,`default`)]),_:3},16)],4))}}),Ot=N({__name:`SelectArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e,i=St(xt);return(e,a)=>P(i).position===`popper`?(r(),O(P(Be),m(n({key:0},t)),{default:d(()=>[f(e.$slots,`default`)]),_:3},16)):T(`v-if`,!0)}}),kt=N({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return _t(e.context),Ct(xt),(e,t)=>f(e.$slots,`default`)}}),At={key:1},jt=N({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,i=Ee(n,t),o=gt(),s=A();c(()=>{s.value=new DocumentFragment});let l=A(),u=v(()=>n.forceMount||o.open.value),p=A(u.value);return a(u,()=>{setTimeout(()=>p.value=u.value)}),(e,t)=>u.value||p.value||l.value?.present?(r(),O(P(Oe),{key:0,ref_key:`presenceRef`,ref:l,present:u.value},{default:d(()=>[g(wt,m(te({...P(i),...e.$attrs})),{default:d(()=>[f(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):s.value?(r(),S(`div`,At,[(r(),O(_,{to:s.value},[g(kt,{context:P(o)},{default:d(()=>[f(e.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):T(`v-if`,!0)}}),[Mt,Nt]=ge(`SelectGroup`),Pt=N({__name:`SelectGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,i=je(void 0,`reka-select-group`);return Nt({id:i}),(e,a)=>(r(),O(P(I),n({role:`group`},t,{"aria-labelledby":P(i)}),{default:d(()=>[f(e.$slots,`default`)]),_:3},16,[`aria-labelledby`]))}}),[Ft,It]=ge(`SelectItem`),Lt=N({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let n=e,i=t,{disabled:a}=x(n),o=gt(),s=St(),{forwardRef:l,currentElement:p}=F(),{CollectionItem:m}=R(),h=v(()=>ft(o.modelValue?.value,n.value,o.by)),_=A(!1),y=A(n.textValue??``),b=je(void 0,`reka-select-item-text`);async function S(e){e.defaultPrevented||L(`select.select`,C,{originalEvent:e,value:n.value})}async function C(e){await u(),i(`select`,e),!e.defaultPrevented&&(a.value||(o.onValueChange(n.value),o.multiple.value||o.onOpenChange(!1)))}async function T(e){await u(),!e.defaultPrevented&&(a.value?s.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function E(e){await u(),!e.defaultPrevented&&e.currentTarget===we()&&s.onItemLeave?.()}async function D(e){await u(),!e.defaultPrevented&&(s.searchRef?.value!==``&&e.key===` `||(dt.includes(e.key)&&S(e),e.key===` `&&e.preventDefault()))}if(n.value===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return c(()=>{p.value&&s.itemRefCallback(p.value,n.value,n.disabled)}),It({value:n.value,disabled:a,textId:b,isSelected:h,onItemTextChange:e=>{y.value=((y.value||e?.textContent)??``).trim()}}),(e,t)=>(r(),O(P(m),{value:{textValue:y.value}},{default:d(()=>[g(P(I),{ref:P(l),role:`option`,"aria-labelledby":P(b),"data-highlighted":_.value?``:void 0,"aria-selected":h.value,"data-state":h.value?`checked`:`unchecked`,"aria-disabled":P(a)||void 0,"data-disabled":P(a)?``:void 0,tabindex:P(a)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>_.value=!0,onBlur:t[1]||=e=>_.value=!1,onPointerup:S,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=w(()=>{},[`prevent`,`stop`]),onPointermove:T,onPointerleave:E,onKeydown:D},{default:d(()=>[f(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),Rt=N({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,i=Ft();return(e,a)=>P(i).isSelected.value?(r(),O(P(I),n({key:0,"aria-hidden":`true`},t),{default:d(()=>[f(e.$slots,`default`)]),_:3},16)):T(`v-if`,!0)}}),zt=N({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,i=gt(),a=St(),o=Ft(),{forwardRef:s,currentElement:u}=F(),p=v(()=>({value:o.value,disabled:o.disabled.value,textContent:u.value?.textContent??o.value?.toString()??``}));return c(()=>{u.value&&(o.onItemTextChange(u.value),a.itemTextRefCallback(u.value,o.value,o.disabled.value),i.onOptionAdd(p.value))}),l(()=>{i.onOptionRemove(p.value)}),(e,i)=>(r(),O(P(I),n({id:P(o).textId,ref:P(s)},{...t,...e.$attrs}),{default:d(()=>[f(e.$slots,`default`)]),_:3},16,[`id`]))}}),Bt=N({__name:`SelectLabel`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let t=e,i=Mt({id:``});return(e,a)=>(r(),O(P(I),n(t,{id:P(i).id}),{default:d(()=>[f(e.$slots,`default`)]),_:3},16,[`id`]))}}),Vt=N({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(r(),O(P(Ae),m(te(t)),{default:d(()=>[f(e.$slots,`default`)]),_:3},16))}}),Ht=N({__name:`SelectSeparator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return(e,i)=>(r(),O(P(I),n({"aria-hidden":`true`},t),{default:d(()=>[f(e.$slots,`default`)]),_:3},16))}}),Ut=N({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=gt(),{forwardRef:i,currentElement:a}=F(),o=v(()=>n.disabled?.value||t.disabled);n.contentId||=je(void 0,`reka-select-content`),c(()=>{n.onTriggerChange(a.value)});let{getItems:s}=R(),{search:l,handleTypeaheadSearch:u,resetTypeahead:p}=Le();function m(){o.value||(n.onOpenChange(!0),p())}function h(e){m(),n.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(r(),O(P(Re),{"as-child":``,reference:e.reference},{default:d(()=>[g(P(I),{ref:P(i),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":P(n).contentId,"aria-expanded":P(n).open.value||!1,"aria-required":P(n).required?.value,"aria-autocomplete":`none`,disabled:o.value,dir:P(n)?.dir.value,"data-state":P(n)?.open.value?`open`:`closed`,"data-disabled":o.value?``:void 0,"data-placeholder":P(mt)(P(n).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(h(e),e.preventDefault())},onPointerup:t[2]||=w(e=>{e.pointerType===`touch`&&h(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=P(l)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(P(u)(e.key,P(s)()),P(ut).includes(e.key)&&(m(),e.preventDefault()))}},{default:d(()=>[f(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),Wt={slots:{root:``,list:`flex items-center gap-1`,ellipsis:`pointer-events-none`,label:`min-w-5 text-center`,first:``,prev:``,item:``,next:``,last:``}},Gt={__name:`Pagination`,props:{as:{type:null,required:!1},firstIcon:{type:null,required:!1},prevIcon:{type:null,required:!1},nextIcon:{type:null,required:!1},lastIcon:{type:null,required:!1},ellipsisIcon:{type:null,required:!1},color:{type:null,required:!1,default:`neutral`},variant:{type:null,required:!1,default:`outline`},activeColor:{type:null,required:!1,default:`primary`},activeVariant:{type:null,required:!1,default:`solid`},showControls:{type:Boolean,required:!1,default:!0},size:{type:null,required:!1},to:{type:Function,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultPage:{type:Number,required:!1},disabled:{type:Boolean,required:!1},itemsPerPage:{type:Number,required:!1,default:10},page:{type:Number,required:!1},showEdges:{type:Boolean,required:!1,default:!1},siblingCount:{type:Number,required:!1,default:2},total:{type:Number,required:!1,default:0}},emits:[`update:page`],setup(e,{emit:t}){let a=e,o=t,c=i(),{dir:l}=ve(),u=se(),p=pe(`pagination`,a),m=Ee(ce(a,`as`,`defaultPage`,`disabled`,`itemsPerPage`,`page`,`showEdges`,`siblingCount`,`total`),o),h=v(()=>a.firstIcon||(l.value===`rtl`?u.ui.icons.chevronDoubleRight:u.ui.icons.chevronDoubleLeft)),_=v(()=>a.prevIcon||(l.value===`rtl`?u.ui.icons.chevronRight:u.ui.icons.chevronLeft)),y=v(()=>a.nextIcon||(l.value===`rtl`?u.ui.icons.chevronLeft:u.ui.icons.chevronRight)),b=v(()=>a.lastIcon||(l.value===`rtl`?u.ui.icons.chevronDoubleLeft:u.ui.icons.chevronDoubleRight)),x=v(()=>he({extend:he(Wt),...u.ui?.pagination||{}})());return(t,i)=>(r(),O(P($e),n(P(m),{"data-slot":`root`,class:x.value.root({class:[P(p)?.root,a.class]})}),{default:d(({page:i,pageCount:a})=>[g(P(ot),{"data-slot":`list`,class:M(x.value.list({class:P(p)?.list}))},{default:d(({items:o})=>[e.showControls||c.first?(r(),O(P(et),{key:0,"as-child":``,"data-slot":`first`,class:M(x.value.first({class:P(p)?.first}))},{default:d(()=>[f(t.$slots,`first`,{},()=>[g(qe,{color:e.color,variant:e.variant,size:e.size,icon:h.value,to:e.to?.(1)},null,8,[`color`,`variant`,`size`,`icon`,`to`])])]),_:3},8,[`class`])):T(``,!0),e.showControls||c.prev?(r(),O(P(lt),{key:1,"as-child":``,"data-slot":`prev`,class:M(x.value.prev({class:P(p)?.prev}))},{default:d(()=>[f(t.$slots,`prev`,{},()=>[g(qe,{color:e.color,variant:e.variant,size:e.size,icon:_.value,to:i>1?e.to?.(i-1):void 0},null,8,[`color`,`variant`,`size`,`icon`,`to`])])]),_:2},1032,[`class`])):T(``,!0),(r(!0),S(D,null,s(o,(o,s)=>(r(),S(D,{key:s},[o.type===`page`?(r(),O(P(st),{key:0,"as-child":``,value:o.value,"data-slot":`item`,class:M(x.value.item({class:P(p)?.item}))},{default:d(()=>[f(t.$slots,`item`,n({ref_for:!0},{item:o,index:s,page:i,pageCount:a}),()=>[g(qe,{color:i===o.value?e.activeColor:e.color,variant:i===o.value?e.activeVariant:e.variant,size:e.size,label:String(o.value),ui:{label:x.value.label()},to:e.to?.(o.value),square:``},null,8,[`color`,`variant`,`size`,`label`,`ui`,`to`])])]),_:2},1032,[`value`,`class`])):(r(),O(P(Xe),{key:1,"as-child":``,"data-slot":`ellipsis`,class:M(x.value.ellipsis({class:P(p)?.ellipsis}))},{default:d(()=>[f(t.$slots,`ellipsis`,{ui:x.value},()=>[g(qe,{as:`div`,color:e.color,variant:e.variant,size:e.size,icon:e.ellipsisIcon||P(u).ui.icons.ellipsis},null,8,[`color`,`variant`,`size`,`icon`])])]),_:3},8,[`class`]))],64))),128)),e.showControls||c.next?(r(),O(P(ct),{key:2,"as-child":``,"data-slot":`next`,class:M(x.value.next({class:P(p)?.next}))},{default:d(()=>[f(t.$slots,`next`,{},()=>[g(qe,{color:e.color,variant:e.variant,size:e.size,icon:y.value,to:i[f(t.$slots,`last`,{},()=>[g(qe,{color:e.color,variant:e.variant,size:e.size,icon:b.value,to:e.to?.(a)},null,8,[`color`,`variant`,`size`,`icon`,`to`])])]),_:2},1032,[`class`])):T(``,!0)]),_:2},1032,[`class`])]),_:3},16,[`class`]))}},Kt={slots:{base:[`relative group rounded-md inline-flex items-center focus:outline-none disabled:cursor-not-allowed disabled:opacity-75`,`transition-colors`],leading:`absolute inset-y-0 start-0 flex items-center`,leadingIcon:`shrink-0 text-dimmed`,leadingAvatar:`shrink-0`,leadingAvatarSize:``,trailing:`absolute inset-y-0 end-0 flex items-center`,trailingIcon:`shrink-0 text-dimmed`,value:`truncate pointer-events-none`,placeholder:`truncate text-dimmed`,arrow:`fill-default`,content:`max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col`,viewport:`relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1`,group:`p-1 isolate`,empty:`text-center text-muted`,label:`font-semibold text-highlighted`,separator:`-mx-1 my-1 h-px bg-border`,item:[`group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50`,`transition-colors before:transition-colors`],itemLeadingIcon:[`shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default`,`transition-colors`],itemLeadingAvatar:`shrink-0`,itemLeadingAvatarSize:``,itemLeadingChip:`shrink-0`,itemLeadingChipSize:``,itemTrailing:`ms-auto inline-flex gap-1.5 items-center`,itemTrailingIcon:`shrink-0`,itemWrapper:`flex-1 flex flex-col min-w-0`,itemLabel:`truncate`,itemDescription:`truncate text-muted`},variants:{fieldGroup:{horizontal:`not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]`,vertical:`not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]`},size:{xs:{base:`px-2 py-1 text-xs gap-1`,leading:`ps-2`,trailing:`pe-2`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`,label:`p-1 text-[10px]/3 gap-1`,item:`p-1 text-xs gap-1`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemLeadingChip:`size-4`,itemLeadingChipSize:`sm`,itemTrailingIcon:`size-4`,empty:`p-1 text-xs`},sm:{base:`px-2.5 py-1.5 text-xs gap-1.5`,leading:`ps-2.5`,trailing:`pe-2.5`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`,label:`p-1.5 text-[10px]/3 gap-1.5`,item:`p-1.5 text-xs gap-1.5`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemLeadingChip:`size-4`,itemLeadingChipSize:`sm`,itemTrailingIcon:`size-4`,empty:`p-1.5 text-xs`},md:{base:`px-2.5 py-1.5 text-sm gap-1.5`,leading:`ps-2.5`,trailing:`pe-2.5`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`,label:`p-1.5 text-xs gap-1.5`,item:`p-1.5 text-sm gap-1.5`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemLeadingChip:`size-5`,itemLeadingChipSize:`md`,itemTrailingIcon:`size-5`,empty:`p-1.5 text-sm`},lg:{base:`px-3 py-2 text-sm gap-2`,leading:`ps-3`,trailing:`pe-3`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`,label:`p-2 text-xs gap-2`,item:`p-2 text-sm gap-2`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemLeadingChip:`size-5`,itemLeadingChipSize:`md`,itemTrailingIcon:`size-5`,empty:`p-2 text-sm`},xl:{base:`px-3 py-2 text-base gap-2`,leading:`ps-3`,trailing:`pe-3`,leadingIcon:`size-6`,leadingAvatarSize:`xs`,trailingIcon:`size-6`,label:`p-2 text-sm gap-2`,item:`p-2 text-base gap-2`,itemLeadingIcon:`size-6`,itemLeadingAvatarSize:`xs`,itemLeadingChip:`size-6`,itemLeadingChipSize:`lg`,itemTrailingIcon:`size-6`,empty:`p-2 text-base`}},variant:{outline:`text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default`,soft:`text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50`,subtle:`text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated`,ghost:`text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent`,none:`text-highlighted bg-transparent`},color:{primary:``,secondary:``,success:``,info:``,warning:``,error:``,neutral:``},leading:{true:``},trailing:{true:``},loading:{true:``},highlight:{true:``},fixed:{false:``},type:{file:`file:me-1.5 file:font-medium file:text-muted file:outline-none`}},compoundVariants:[{color:`primary`,variant:[`outline`,`subtle`],class:`focus:ring-2 focus:ring-inset focus:ring-primary`},{color:`secondary`,variant:[`outline`,`subtle`],class:`focus:ring-2 focus:ring-inset focus:ring-secondary`},{color:`success`,variant:[`outline`,`subtle`],class:`focus:ring-2 focus:ring-inset focus:ring-success`},{color:`info`,variant:[`outline`,`subtle`],class:`focus:ring-2 focus:ring-inset focus:ring-info`},{color:`warning`,variant:[`outline`,`subtle`],class:`focus:ring-2 focus:ring-inset focus:ring-warning`},{color:`error`,variant:[`outline`,`subtle`],class:`focus:ring-2 focus:ring-inset focus:ring-error`},{color:`primary`,highlight:!0,class:`ring ring-inset ring-primary`},{color:`secondary`,highlight:!0,class:`ring ring-inset ring-secondary`},{color:`success`,highlight:!0,class:`ring ring-inset ring-success`},{color:`info`,highlight:!0,class:`ring ring-inset ring-info`},{color:`warning`,highlight:!0,class:`ring ring-inset ring-warning`},{color:`error`,highlight:!0,class:`ring ring-inset ring-error`},{color:`neutral`,variant:[`outline`,`subtle`],class:`focus:ring-2 focus:ring-inset focus:ring-inverted`},{color:`neutral`,highlight:!0,class:`ring ring-inset ring-inverted`},{leading:!0,size:`xs`,class:`ps-7`},{leading:!0,size:`sm`,class:`ps-8`},{leading:!0,size:`md`,class:`ps-9`},{leading:!0,size:`lg`,class:`ps-10`},{leading:!0,size:`xl`,class:`ps-11`},{trailing:!0,size:`xs`,class:`pe-7`},{trailing:!0,size:`sm`,class:`pe-8`},{trailing:!0,size:`md`,class:`pe-9`},{trailing:!0,size:`lg`,class:`pe-10`},{trailing:!0,size:`xl`,class:`pe-11`},{loading:!0,leading:!0,class:{leadingIcon:`animate-spin`}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:`animate-spin`}},{fixed:!1,size:`xs`,class:`md:text-xs`},{fixed:!1,size:`sm`,class:`md:text-xs`},{fixed:!1,size:`md`,class:`md:text-sm`},{fixed:!1,size:`lg`,class:`md:text-sm`}],defaultVariants:{size:`md`,color:`primary`,variant:`outline`}},qt=Object.assign({inheritAttrs:!1},{__name:`Select`,props:{id:{type:String,required:!1},placeholder:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},valueKey:{type:null,required:!1,default:`value`},labelKey:{type:null,required:!1,default:`label`},descriptionKey:{type:null,required:!1,default:`description`},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:[`change`,`blur`,`focus`,`update:modelValue`,`update:open`],setup(e,{expose:t,emit:a,attrs:l}){let u=e,p=a,h=i(),_=se(),x=pe(`select`,u),w=Ee(ce(u,`open`,`defaultOpen`,`disabled`,`autocomplete`,`required`,`multiple`),p),E=Me(C(()=>u.portal)),k=C(()=>ye(u.content,{side:`bottom`,sideOffset:8,collisionPadding:8,position:`popper`})),ee=C(()=>u.arrow),{emitFormChange:A,emitFormInput:N,emitFormBlur:ne,emitFormFocus:re,size:F,color:ie,id:ae,name:oe,highlight:le,disabled:I,ariaAttrs:ge}=Ve(u),{orientation:ve,size:be}=Ue(u),{isLeading:xe,isTrailing:Se,leadingIconName:Ce,trailingIconName:we}=Ge(C(()=>ye(u,{trailingIcon:_.ui.icons.chevronDown}))),Te=v(()=>be.value||F.value),L=v(()=>he({extend:he(Kt),..._.ui?.select||{}})({color:ie.value,variant:u.variant,size:Te?.value,loading:u.loading,highlight:le.value,leading:xe.value||!!u.avatar||!!h.leading,trailing:Se.value||!!h.trailing,fieldGroup:ve.value})),De=v(()=>u.items?.length?fe(u.items)?u.items:[u.items]:[]),Oe=v(()=>De.value.flatMap(e=>e));function ke(e){if(u.multiple&&Array.isArray(e)){let t=e.map(e=>me(Oe.value,e,{labelKey:u.labelKey,valueKey:u.valueKey})).filter(e=>e!=null&&e!==``);return t.length>0?t.join(`, `):void 0}return me(Oe.value,e,{labelKey:u.labelKey,valueKey:u.valueKey})}let Ae=o(`triggerRef`);function je(){u.autofocus&&Ae.value?.$el?.focus({focusVisible:!0})}c(()=>{setTimeout(()=>{je()},u.autofocusDelay)});function Ne(e){u.modelModifiers?.trim&&(typeof e==`string`||e==null)&&(e=e?.trim()??null),u.modelModifiers?.number&&(e=de(e)),u.modelModifiers?.nullable&&(e??=null),u.modelModifiers?.optional&&!u.modelModifiers?.nullable&&e!==null&&(e??=void 0),p(`change`,new Event(`change`,{target:{value:e}})),A(),N()}function Pe(e){e?(p(`focus`,new FocusEvent(`focus`)),re()):(p(`blur`,new FocusEvent(`blur`)),ne())}function R(e){return typeof e==`object`&&!!e}let Fe=o(`viewportRef`);return t({triggerRef:C(()=>Ae.value?.$el),viewportRef:C(()=>Fe.value)}),(t,i)=>(r(),O(P(vt),n({name:P(oe)},P(w),{autocomplete:e.autocomplete,disabled:P(I),"default-value":e.defaultValue,"model-value":e.modelValue,"onUpdate:modelValue":Ne,"onUpdate:open":Pe}),{default:d(({modelValue:i,open:a})=>[g(P(Ut),n({id:P(ae),ref_key:`triggerRef`,ref:Ae,"data-slot":`base`,class:L.value.base({class:[P(x)?.base,u.class]})},{...l,...P(ge)}),{default:d(()=>[P(xe)||e.avatar||h.leading?(r(),S(`span`,{key:0,"data-slot":`leading`,class:M(L.value.leading({class:P(x)?.leading}))},[f(t.$slots,`leading`,{modelValue:i,open:a,ui:L.value},()=>[P(xe)&&P(Ce)?(r(),O(_e,{key:0,name:P(Ce),"data-slot":`leadingIcon`,class:M(L.value.leadingIcon({class:P(x)?.leadingIcon}))},null,8,[`name`,`class`])):e.avatar?(r(),O(We,n({key:1,size:P(x)?.itemLeadingAvatarSize||L.value.itemLeadingAvatarSize()},e.avatar,{"data-slot":`itemLeadingAvatar`,class:L.value.itemLeadingAvatar({class:P(x)?.itemLeadingAvatar})}),null,16,[`size`,`class`])):T(``,!0)])],2)):T(``,!0),f(t.$slots,`default`,{modelValue:i,open:a,ui:L.value},()=>[(r(!0),S(D,null,s([ke(i)],t=>(r(),S(D,{key:t},[t==null?(r(),S(`span`,{key:1,"data-slot":`placeholder`,class:M(L.value.placeholder({class:P(x)?.placeholder}))},j(e.placeholder??`\xA0`),3)):(r(),S(`span`,{key:0,"data-slot":`value`,class:M(L.value.value({class:P(x)?.value}))},j(t),3))],64))),128))]),P(Se)||h.trailing?(r(),S(`span`,{key:1,"data-slot":`trailing`,class:M(L.value.trailing({class:P(x)?.trailing}))},[f(t.$slots,`trailing`,{modelValue:i,open:a,ui:L.value},()=>[P(we)?(r(),O(_e,{key:0,name:P(we),"data-slot":`trailingIcon`,class:M(L.value.trailingIcon({class:P(x)?.trailingIcon}))},null,8,[`name`,`class`])):T(``,!0)])],2)):T(``,!0)]),_:2},1040,[`id`,`class`]),g(P(Vt),m(te(P(E))),{default:d(()=>[g(P(jt),n({"data-slot":`content`,class:L.value.content({class:P(x)?.content})},k.value),{default:d(()=>[f(t.$slots,`content-top`),y(`div`,{ref_key:`viewportRef`,ref:Fe,role:`presentation`,"data-slot":`viewport`,class:M(L.value.viewport({class:P(x)?.viewport}))},[(r(!0),S(D,null,s(De.value,(i,a)=>(r(),O(P(Pt),{key:`group-${a}`,"data-slot":`group`,class:M(L.value.group({class:P(x)?.group}))},{default:d(()=>[(r(!0),S(D,null,s(i,(i,o)=>(r(),S(D,{key:`group-${a}-${o}`},[R(i)&&i.type===`label`?(r(),O(P(Bt),{key:0,"data-slot":`label`,class:M(L.value.label({class:[P(x)?.label,i.ui?.label,i.class]}))},{default:d(()=>[b(j(P(ue)(i,u.labelKey)),1)]),_:2},1032,[`class`])):R(i)&&i.type===`separator`?(r(),O(P(Ht),{key:1,"data-slot":`separator`,class:M(L.value.separator({class:[P(x)?.separator,i.ui?.separator,i.class]}))},null,8,[`class`])):(r(),O(P(Lt),{key:2,"data-slot":`item`,class:M(L.value.item({class:[P(x)?.item,R(i)&&i.ui?.item,R(i)&&i.class]})),disabled:R(i)&&i.disabled,value:R(i)?P(ue)(i,u.valueKey):i,onSelect:e=>R(i)&&i.onSelect?.(e)},{default:d(()=>[f(t.$slots,`item`,{item:i,index:o,ui:L.value},()=>[f(t.$slots,`item-leading`,{item:i,index:o,ui:L.value},()=>[R(i)&&i.icon?(r(),O(_e,{key:0,name:i.icon,"data-slot":`itemLeadingIcon`,class:M(L.value.itemLeadingIcon({class:[P(x)?.itemLeadingIcon,i.ui?.itemLeadingIcon]}))},null,8,[`name`,`class`])):R(i)&&i.avatar?(r(),O(We,n({key:1,size:i.ui?.itemLeadingAvatarSize||P(x)?.itemLeadingAvatarSize||L.value.itemLeadingAvatarSize()},{ref_for:!0},i.avatar,{"data-slot":`itemLeadingAvatar`,class:L.value.itemLeadingAvatar({class:[P(x)?.itemLeadingAvatar,i.ui?.itemLeadingAvatar]})}),null,16,[`size`,`class`])):R(i)&&i.chip?(r(),O(Ke,n({key:2,size:i.ui?.itemLeadingChipSize||P(x)?.itemLeadingChipSize||L.value.itemLeadingChipSize(),inset:``,standalone:``},{ref_for:!0},i.chip,{"data-slot":`itemLeadingChip`,class:L.value.itemLeadingChip({class:[P(x)?.itemLeadingChip,i.ui?.itemLeadingChip]})}),null,16,[`size`,`class`])):T(``,!0)]),y(`span`,{"data-slot":`itemWrapper`,class:M(L.value.itemWrapper({class:[P(x)?.itemWrapper,R(i)&&i.ui?.itemWrapper]}))},[g(P(zt),{"data-slot":`itemLabel`,class:M(L.value.itemLabel({class:[P(x)?.itemLabel,R(i)&&i.ui?.itemLabel]}))},{default:d(()=>[f(t.$slots,`item-label`,{item:i,index:o},()=>[b(j(R(i)?P(ue)(i,u.labelKey):i),1)])]),_:2},1032,[`class`]),R(i)&&(P(ue)(i,u.descriptionKey)||h[`item-description`])?(r(),S(`span`,{key:0,"data-slot":`itemDescription`,class:M(L.value.itemDescription({class:[P(x)?.itemDescription,R(i)&&i.ui?.itemDescription]}))},[f(t.$slots,`item-description`,{item:i,index:o},()=>[b(j(P(ue)(i,u.descriptionKey)),1)])],2)):T(``,!0)],2),y(`span`,{"data-slot":`itemTrailing`,class:M(L.value.itemTrailing({class:[P(x)?.itemTrailing,R(i)&&i.ui?.itemTrailing]}))},[f(t.$slots,`item-trailing`,{item:i,index:o,ui:L.value}),g(P(Rt),{"as-child":``},{default:d(()=>[g(_e,{name:e.selectedIcon||P(_).ui.icons.check,"data-slot":`itemTrailingIcon`,class:M(L.value.itemTrailingIcon({class:[P(x)?.itemTrailingIcon,R(i)&&i.ui?.itemTrailingIcon]}))},null,8,[`name`,`class`])]),_:2},1024)],2)])]),_:2},1032,[`class`,`disabled`,`value`,`onSelect`]))],64))),128))]),_:2},1032,[`class`]))),128))],2),f(t.$slots,`content-bottom`),e.arrow?(r(),O(P(Ot),n({key:0},ee.value,{"data-slot":`arrow`,class:L.value.arrow({class:P(x)?.arrow})}),null,16,[`class`])):T(``,!0)]),_:3},16,[`class`])]),_:3},16)]),_:3},16,[`name`,`autocomplete`,`disabled`,`default-value`,`model-value`]))}});function Jt(e){return e+.5|0}var Yt=(e,t,n)=>Math.max(Math.min(e,n),t);function Xt(e){return Yt(Jt(e*2.55),0,255)}function Zt(e){return Yt(Jt(e*255),0,255)}function Qt(e){return Yt(Jt(e/2.55)/100,0,1)}function $t(e){return Yt(Jt(e*100),0,100)}var en={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},tn=[...`0123456789ABCDEF`],nn=e=>tn[e&15],rn=e=>tn[(e&240)>>4]+tn[e&15],an=e=>(e&240)>>4==(e&15),on=e=>an(e.r)&&an(e.g)&&an(e.b)&&an(e.a);function sn(e){var t=e.length,n;return e[0]===`#`&&(t===4||t===5?n={r:255&en[e[1]]*17,g:255&en[e[2]]*17,b:255&en[e[3]]*17,a:t===5?en[e[4]]*17:255}:(t===7||t===9)&&(n={r:en[e[1]]<<4|en[e[2]],g:en[e[3]]<<4|en[e[4]],b:en[e[5]]<<4|en[e[6]],a:t===9?en[e[7]]<<4|en[e[8]]:255})),n}var cn=(e,t)=>e<255?t(e):``;function ln(e){var t=on(e)?nn:rn;return e?`#`+t(e.r)+t(e.g)+t(e.b)+cn(e.a,t):void 0}var un=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function dn(e,t,n){let r=t*Math.min(n,1-n),i=(t,i=(t+e/30)%12)=>n-r*Math.max(Math.min(i-3,9-i,1),-1);return[i(0),i(8),i(4)]}function fn(e,t,n){let r=(r,i=(r+e/60)%6)=>n-n*t*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function pn(e,t,n){let r=dn(e,1,.5),i;for(t+n>1&&(i=1/(t+n),t*=i,n*=i),i=0;i<3;i++)r[i]*=1-t-n,r[i]+=t;return r}function mn(e,t,n,r,i){return e===i?(t-n)/r+(t.5?l/(2-i-a):l/(i+a),s=mn(t,n,r,l,i),s=s*60+.5),[s|0,c||0,o]}function gn(e,t,n,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,r)).map(Zt)}function _n(e,t,n){return gn(dn,e,t,n)}function vn(e,t,n){return gn(pn,e,t,n)}function yn(e,t,n){return gn(fn,e,t,n)}function bn(e){return(e%360+360)%360}function xn(e){let t=un.exec(e),n=255,r;if(!t)return;t[5]!==r&&(n=t[6]?Xt(+t[5]):Zt(+t[5]));let i=bn(+t[2]),a=t[3]/100,o=t[4]/100;return r=t[1]===`hwb`?vn(i,a,o):t[1]===`hsv`?yn(i,a,o):_n(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function Sn(e,t){var n=hn(e);n[0]=bn(n[0]+t),n=_n(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Cn(e){if(!e)return;let t=hn(e),n=t[0],r=$t(t[1]),i=$t(t[2]);return e.a<255?`hsla(${n}, ${r}%, ${i}%, ${Qt(e.a)})`:`hsl(${n}, ${r}%, ${i}%)`}var wn={x:`dark`,Z:`light`,Y:`re`,X:`blu`,W:`gr`,V:`medium`,U:`slate`,A:`ee`,T:`ol`,S:`or`,B:`ra`,C:`lateg`,D:`ights`,R:`in`,Q:`turquois`,E:`hi`,P:`ro`,O:`al`,N:`le`,M:`de`,L:`yello`,F:`en`,K:`ch`,G:`arks`,H:`ea`,I:`ightg`,J:`wh`},Tn={OiceXe:`f0f8ff`,antiquewEte:`faebd7`,aqua:`ffff`,aquamarRe:`7fffd4`,azuY:`f0ffff`,beige:`f5f5dc`,bisque:`ffe4c4`,black:`0`,blanKedOmond:`ffebcd`,Xe:`ff`,XeviTet:`8a2be2`,bPwn:`a52a2a`,burlywood:`deb887`,caMtXe:`5f9ea0`,KartYuse:`7fff00`,KocTate:`d2691e`,cSO:`ff7f50`,cSnflowerXe:`6495ed`,cSnsilk:`fff8dc`,crimson:`dc143c`,cyan:`ffff`,xXe:`8b`,xcyan:`8b8b`,xgTMnPd:`b8860b`,xWay:`a9a9a9`,xgYF:`6400`,xgYy:`a9a9a9`,xkhaki:`bdb76b`,xmagFta:`8b008b`,xTivegYF:`556b2f`,xSange:`ff8c00`,xScEd:`9932cc`,xYd:`8b0000`,xsOmon:`e9967a`,xsHgYF:`8fbc8f`,xUXe:`483d8b`,xUWay:`2f4f4f`,xUgYy:`2f4f4f`,xQe:`ced1`,xviTet:`9400d3`,dAppRk:`ff1493`,dApskyXe:`bfff`,dimWay:`696969`,dimgYy:`696969`,dodgerXe:`1e90ff`,fiYbrick:`b22222`,flSOwEte:`fffaf0`,foYstWAn:`228b22`,fuKsia:`ff00ff`,gaRsbSo:`dcdcdc`,ghostwEte:`f8f8ff`,gTd:`ffd700`,gTMnPd:`daa520`,Way:`808080`,gYF:`8000`,gYFLw:`adff2f`,gYy:`808080`,honeyMw:`f0fff0`,hotpRk:`ff69b4`,RdianYd:`cd5c5c`,Rdigo:`4b0082`,ivSy:`fffff0`,khaki:`f0e68c`,lavFMr:`e6e6fa`,lavFMrXsh:`fff0f5`,lawngYF:`7cfc00`,NmoncEffon:`fffacd`,ZXe:`add8e6`,ZcSO:`f08080`,Zcyan:`e0ffff`,ZgTMnPdLw:`fafad2`,ZWay:`d3d3d3`,ZgYF:`90ee90`,ZgYy:`d3d3d3`,ZpRk:`ffb6c1`,ZsOmon:`ffa07a`,ZsHgYF:`20b2aa`,ZskyXe:`87cefa`,ZUWay:`778899`,ZUgYy:`778899`,ZstAlXe:`b0c4de`,ZLw:`ffffe0`,lime:`ff00`,limegYF:`32cd32`,lRF:`faf0e6`,magFta:`ff00ff`,maPon:`800000`,VaquamarRe:`66cdaa`,VXe:`cd`,VScEd:`ba55d3`,VpurpN:`9370db`,VsHgYF:`3cb371`,VUXe:`7b68ee`,VsprRggYF:`fa9a`,VQe:`48d1cc`,VviTetYd:`c71585`,midnightXe:`191970`,mRtcYam:`f5fffa`,mistyPse:`ffe4e1`,moccasR:`ffe4b5`,navajowEte:`ffdead`,navy:`80`,Tdlace:`fdf5e6`,Tive:`808000`,TivedBb:`6b8e23`,Sange:`ffa500`,SangeYd:`ff4500`,ScEd:`da70d6`,pOegTMnPd:`eee8aa`,pOegYF:`98fb98`,pOeQe:`afeeee`,pOeviTetYd:`db7093`,papayawEp:`ffefd5`,pHKpuff:`ffdab9`,peru:`cd853f`,pRk:`ffc0cb`,plum:`dda0dd`,powMrXe:`b0e0e6`,purpN:`800080`,YbeccapurpN:`663399`,Yd:`ff0000`,Psybrown:`bc8f8f`,PyOXe:`4169e1`,saddNbPwn:`8b4513`,sOmon:`fa8072`,sandybPwn:`f4a460`,sHgYF:`2e8b57`,sHshell:`fff5ee`,siFna:`a0522d`,silver:`c0c0c0`,skyXe:`87ceeb`,UXe:`6a5acd`,UWay:`708090`,UgYy:`708090`,snow:`fffafa`,sprRggYF:`ff7f`,stAlXe:`4682b4`,tan:`d2b48c`,teO:`8080`,tEstN:`d8bfd8`,tomato:`ff6347`,Qe:`40e0d0`,viTet:`ee82ee`,JHt:`f5deb3`,wEte:`ffffff`,wEtesmoke:`f5f5f5`,Lw:`ffff00`,LwgYF:`9acd32`};function En(){let e={},t=Object.keys(Tn),n=Object.keys(wn),r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return e}var Dn;function On(e){Dn||(Dn=En(),Dn.transparent=[0,0,0,0]);let t=Dn[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var kn=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function An(e){let t=kn.exec(e),n=255,r,i,a;if(t){if(t[7]!==r){let e=+t[7];n=t[8]?Xt(e):Yt(e*255,0,255)}return r=+t[1],i=+t[3],a=+t[5],r=255&(t[2]?Xt(r):Yt(r,0,255)),i=255&(t[4]?Xt(i):Yt(i,0,255)),a=255&(t[6]?Xt(a):Yt(a,0,255)),{r,g:i,b:a,a:n}}}function jn(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${Qt(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var Mn=e=>e<=.0031308?e*12.92:e**(1/2.4)*1.055-.055,Nn=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Pn(e,t,n){let r=Nn(Qt(e.r)),i=Nn(Qt(e.g)),a=Nn(Qt(e.b));return{r:Zt(Mn(r+n*(Nn(Qt(t.r))-r))),g:Zt(Mn(i+n*(Nn(Qt(t.g))-i))),b:Zt(Mn(a+n*(Nn(Qt(t.b))-a))),a:e.a+n*(t.a-e.a)}}function Fn(e,t,n){if(e){let r=hn(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*n,t===0?360:1)),r=_n(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function In(e,t){return e&&Object.assign(t||{},e)}function Ln(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Zt(e[3]))):(t=In(e,{r:0,g:0,b:0,a:1}),t.a=Zt(t.a)),t}function Rn(e){return e.charAt(0)===`r`?An(e):xn(e)}var zn=class e{constructor(t){if(t instanceof e)return t;let n=typeof t,r;n===`object`?r=Ln(t):n===`string`&&(r=sn(t)||On(t)||Rn(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=In(this._rgb);return e&&(e.a=Qt(e.a)),e}set rgb(e){this._rgb=Ln(e)}rgbString(){return this._valid?jn(this._rgb):void 0}hexString(){return this._valid?ln(this._rgb):void 0}hslString(){return this._valid?Cn(this._rgb):void 0}mix(e,t){if(e){let n=this.rgb,r=e.rgb,i,a=t===i?.5:t,o=2*a-1,s=n.a-r.a,c=((o*s===-1?o:(o+s)/(1+o*s))+1)/2;i=1-c,n.r=255&c*n.r+i*r.r+.5,n.g=255&c*n.g+i*r.g+.5,n.b=255&c*n.b+i*r.b+.5,n.a=a*n.a+(1-a)*r.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=Pn(this._rgb,e._rgb,t)),this}clone(){return new e(this.rgb)}alpha(e){return this._rgb.a=Zt(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb;return e.r=e.g=e.b=Jt(e.r*.3+e.g*.59+e.b*.11),this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return Fn(this._rgb,2,e),this}darken(e){return Fn(this._rgb,2,-e),this}saturate(e){return Fn(this._rgb,1,e),this}desaturate(e){return Fn(this._rgb,1,-e),this}rotate(e){return Sn(this._rgb,e),this}};function Bn(){}var Vn=(()=>{let e=0;return()=>e++})();function z(e){return e==null}function B(e){if(Array.isArray&&Array.isArray(e))return!0;let t=Object.prototype.toString.call(e);return t.slice(0,7)===`[object`&&t.slice(-6)===`Array]`}function V(e){return e!==null&&Object.prototype.toString.call(e)===`[object Object]`}function H(e){return(typeof e==`number`||e instanceof Number)&&isFinite(+e)}function U(e,t){return H(e)?e:t}function W(e,t){return e===void 0?t:e}var Hn=(e,t)=>typeof e==`string`&&e.endsWith(`%`)?parseFloat(e)/100*t:+e;function G(e,t,n){if(e&&typeof e.call==`function`)return e.apply(n,t)}function K(e,t,n,r){let i,a,o;if(B(e))if(a=e.length,r)for(i=a-1;i>=0;i--)t.call(n,e[i],i);else for(i=0;ie,x:e=>e.x,y:e=>e.y};function Zn(e){let t=e.split(`.`),n=[],r=``;for(let e of t)r+=e,r.endsWith(`\\`)?r=r.slice(0,-1)+`.`:(n.push(r),r=``);return n}function Qn(e){let t=Zn(e);return e=>{for(let n of t){if(n===``)break;e&&=e[n]}return e}}function $n(e,t){return(Xn[t]||(Xn[t]=Qn(t)))(e)}function er(e){return e.charAt(0).toUpperCase()+e.slice(1)}var tr=e=>e!==void 0,nr=e=>typeof e==`function`,rr=(e,t)=>{if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0};function ir(e){return e.type===`mouseup`||e.type===`click`||e.type===`contextmenu`}var q=Math.PI,ar=2*q;ar+q;var or=1/0,sr=q/180,cr=q/2,lr=q/4,ur=q*2/3,dr=Math.log10,fr=Math.sign;function pr(e,t,n){return Math.abs(e-t)e-t).pop(),t}function gr(e){return typeof e==`symbol`||typeof e==`object`&&!!e&&!(Symbol.toPrimitive in e||`toString`in e||`valueOf`in e)}function _r(e){return!gr(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function vr(e,t){let n=Math.round(e);return n-t<=e&&n+t>=e}function yr(e,t,n){let r,i,a;for(r=0,i=e.length;rc&&l=Math.min(t,n)-r&&e<=Math.max(t,n)+r}function Ar(e,t,n){n||=(n=>e[n]1;)a=i+r>>1,n(a)?i=a:r=a;return{lo:i,hi:r}}var jr=(e,t,n,r)=>Ar(e,n,r?r=>{let i=e[r][t];return ie[r][t]Ar(e,n,r=>e[r][t]>=n);function Nr(e,t,n){let r=0,i=e.length;for(;rr&&e[i-1]>n;)i--;return r>0||i{let n=`_onData`+er(t),r=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...t){let i=r.apply(this,t);return e._chartjs.listeners.forEach(e=>{typeof e[n]==`function`&&e[n](...t)}),i}})})}function Ir(e,t){let n=e._chartjs;if(!n)return;let r=n.listeners,i=r.indexOf(t);i!==-1&&r.splice(i,1),!(r.length>0)&&(Pr.forEach(t=>{delete e[t]}),delete e._chartjs)}function Lr(e){let t=new Set(e);return t.size===e.length?e:Array.from(t)}var Rr=function(){return typeof window>`u`?function(e){return e()}:window.requestAnimationFrame}();function zr(e,t){let n=[],r=!1;return function(...i){n=i,r||(r=!0,Rr.call(window,()=>{r=!1,e.apply(t,n)}))}}function Br(e,t){let n;return function(...r){return t?(clearTimeout(n),n=setTimeout(e,t,r)):e.apply(this,r),t}}var Vr=e=>e===`start`?`left`:e===`end`?`right`:`center`,J=(e,t,n)=>e===`start`?t:e===`end`?n:(t+n)/2,Hr=(e,t,n,r)=>e===(r?`left`:`right`)?n:e===`center`?(t+n)/2:t,Ur=e=>e===0||e===1,Wr=(e,t,n)=>-(2**(10*--e)*Math.sin((e-t)*ar/n)),Gr=(e,t,n)=>2**(-10*e)*Math.sin((e-t)*ar/n)+1,Kr={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>--e*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-(--e*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>--e*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*cr)+1,easeOutSine:e=>Math.sin(e*cr),easeInOutSine:e=>-.5*(Math.cos(q*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:-(2**(-10*e))+1,easeInOutExpo:e=>Ur(e)?e:e<.5?.5*2**(10*(e*2-1)):.5*(-(2**(-10*(e*2-1)))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1- --e*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>Ur(e)?e:Wr(e,.075,.3),easeOutElastic:e=>Ur(e)?e:Gr(e,.075,.3),easeInOutElastic(e){let t=.1125,n=.45;return Ur(e)?e:e<.5?.5*Wr(e*2,t,n):.5+.5*Gr(e*2-1,t,n)},easeInBack(e){let t=1.70158;return e*e*((t+1)*e-t)},easeOutBack(e){let t=1.70158;return--e*e*((t+1)*e+t)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-Kr.easeOutBounce(1-e),easeOutBounce(e){let t=7.5625,n=2.75;return e<1/n?t*e*e:e<2/n?t*(e-=1.5/n)*e+.75:e<2.5/n?t*(e-=2.25/n)*e+.9375:t*(e-=2.625/n)*e+.984375},easeInOutBounce:e=>e<.5?Kr.easeInBounce(e*2)*.5:Kr.easeOutBounce(e*2-1)*.5+.5};function qr(e){if(e&&typeof e==`object`){let t=e.toString();return t===`[object CanvasPattern]`||t===`[object CanvasGradient]`}return!1}function Jr(e){return qr(e)?e:new zn(e)}function Yr(e){return qr(e)?e:new zn(e).saturate(.5).darken(.1).hexString()}var Xr=[`x`,`y`,`borderWidth`,`radius`,`tension`],Zr=[`color`,`borderColor`,`backgroundColor`];function Qr(e){e.set(`animation`,{delay:void 0,duration:1e3,easing:`easeOutQuart`,fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe(`animation`,{_fallback:!1,_indexable:!1,_scriptable:e=>e!==`onProgress`&&e!==`onComplete`&&e!==`fn`}),e.set(`animations`,{colors:{type:`color`,properties:Zr},numbers:{type:`number`,properties:Xr}}),e.describe(`animations`,{_fallback:`animation`}),e.set(`transitions`,{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:`transparent`},visible:{type:`boolean`,duration:0}}},hide:{animations:{colors:{to:`transparent`},visible:{type:`boolean`,easing:`linear`,fn:e=>e|0}}}})}function $r(e){e.set(`layout`,{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var ei=new Map;function ti(e,t){t||={};let n=e+JSON.stringify(t),r=ei.get(n);return r||(r=new Intl.NumberFormat(e,t),ei.set(n,r)),r}function ni(e,t,n){return ti(t,n).format(e)}var ri={values(e){return B(e)?e:``+e},numeric(e,t,n){if(e===0)return`0`;let r=this.chart.options.locale,i,a=e;if(n.length>1){let t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>0x38d7ea4c68000)&&(i=`scientific`),a=ii(e,n)}let o=dr(Math.abs(a)),s=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:i,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),ni(e,r,c)},logarithmic(e,t,n){if(e===0)return`0`;let r=n[t].significand||e/10**Math.floor(dr(e));return[1,2,3,5,10,15].includes(r)||t>.8*n.length?ri.numeric.call(this,e,t,n):``}};function ii(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var ai={formatters:ri};function oi(e){e.set(`scale`,{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:`ticks`,clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,t)=>t.lineWidth,tickColor:(e,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:``,padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:``,padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ai.formatters.values,minor:{},major:{},align:`center`,crossAlign:`near`,showLabelBackdrop:!1,backdropColor:`rgba(255, 255, 255, 0.75)`,backdropPadding:2}}),e.route(`scale.ticks`,`color`,``,`color`),e.route(`scale.grid`,`color`,``,`borderColor`),e.route(`scale.border`,`color`,``,`borderColor`),e.route(`scale.title`,`color`,``,`color`),e.describe(`scale`,{_fallback:!1,_scriptable:e=>!e.startsWith(`before`)&&!e.startsWith(`after`)&&e!==`callback`&&e!==`parser`,_indexable:e=>e!==`borderDash`&&e!==`tickBorderDash`&&e!==`dash`}),e.describe(`scales`,{_fallback:`scale`}),e.describe(`scale.ticks`,{_scriptable:e=>e!==`backdropPadding`&&e!==`callback`,_indexable:e=>e!==`backdropPadding`})}var si=Object.create(null),ci=Object.create(null);function li(e,t){if(!t)return e;let n=t.split(`.`);for(let t=0,r=n.length;te.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[`mousemove`,`mouseout`,`click`,`touchstart`,`touchmove`],this.font={family:`'Helvetica Neue', 'Helvetica', 'Arial', sans-serif`,size:12,style:`normal`,lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,t)=>Yr(t.backgroundColor),this.hoverBorderColor=(e,t)=>Yr(t.borderColor),this.hoverColor=(e,t)=>Yr(t.color),this.indexAxis=`x`,this.interaction={mode:`nearest`,intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(t)}set(e,t){return ui(this,e,t)}get(e){return li(this,e)}describe(e,t){return ui(ci,e,t)}override(e,t){return ui(si,e,t)}route(e,t,n,r){let i=li(this,e),a=li(this,n),o=`_`+t;Object.defineProperties(i,{[o]:{value:i[t],writable:!0},[t]:{enumerable:!0,get(){let e=this[o],t=a[r];return V(e)?Object.assign({},t,e):W(e,t)},set(e){this[o]=e}}})}apply(e){e.forEach(e=>e(this))}}({_scriptable:e=>!e.startsWith(`on`),_indexable:e=>e!==`events`,hover:{_fallback:`interaction`},interaction:{_scriptable:!1,_indexable:!1}},[Qr,$r,oi]);function di(e){return!e||z(e.size)||z(e.family)?null:(e.style?e.style+` `:``)+(e.weight?e.weight+` `:``)+e.size+`px `+e.family}function fi(e,t,n,r,i){let a=t[i];return a||(a=t[i]=e.measureText(i).width,n.push(i)),a>r&&(r=a),r}function pi(e,t,n,r){r||={};let i=r.data=r.data||{},a=r.garbageCollect=r.garbageCollect||[];r.font!==t&&(i=r.data={},a=r.garbageCollect=[],r.font=t),e.save(),e.font=t;let o=0,s=n.length,c,l,u,d,f;for(c=0;cn.length){for(c=0;c0&&e.stroke()}}function vi(e,t,n){return n||=.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&a.strokeColor!==``,c,l;for(e.save(),e.font=i.string,xi(e,a),c=0;c+e||0;function Ai(e,t){let n={},r=V(t),i=r?Object.keys(t):t,a=V(e)?r?n=>W(e[n],e[t[n]]):t=>e[t]:()=>e;for(let e of i)n[e]=ki(a(e));return n}function ji(e){return Ai(e,{top:`y`,right:`x`,bottom:`y`,left:`x`})}function Mi(e){return Ai(e,[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`])}function X(e){let t=ji(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function Z(e,t){e||={},t||=Y.font;let n=W(e.size,t.size);typeof n==`string`&&(n=parseInt(n,10));let r=W(e.style,t.style);r&&!(``+r).match(Di)&&(console.warn(`Invalid font style specified: "`+r+`"`),r=void 0);let i={family:W(e.family,t.family),lineHeight:Oi(W(e.lineHeight,t.lineHeight),n),size:n,style:r,weight:W(e.weight,t.weight),string:``};return i.string=di(i),i}function Ni(e,t,n,r){let i=!0,a,o,s;for(a=0,o=e.length;an&&e===0?0:e+t;return{min:o(r,-Math.abs(a)),max:o(i,a)}}function Fi(e,t){return Object.assign(Object.create(e),t)}function Ii(e,t=[``],n,r,i=()=>e[0]){let a=n||e;r===void 0&&(r=Qi(`_fallback`,e));let o={[Symbol.toStringTag]:`Object`,_cacheable:!0,_scopes:e,_rootScopes:a,_fallback:r,_getTarget:i,override:n=>Ii([n,...e],t,a,r)};return new Proxy(o,{deleteProperty(t,n){return delete t[n],delete t._keys,delete e[0][n],!0},get(n,r){return Vi(n,r,()=>Zi(r,t,e,n))},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e._scopes[0],t)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(e,t){return $i(e).includes(t)},ownKeys(e){return $i(e)},set(e,t,n){let r=e._storage||=i();return e[t]=r[t]=n,delete e._keys,!0}})}function Li(e,t,n,r){let i={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:Ri(e,r),setContext:t=>Li(e,t,n,r),override:i=>Li(e.override(i),t,n,r)};return new Proxy(i,{deleteProperty(t,n){return delete t[n],delete e[n],!0},get(e,t,n){return Vi(e,t,()=>Hi(e,t,n))},getOwnPropertyDescriptor(t,n){return t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(t,n){return Reflect.has(e,n)},ownKeys(){return Reflect.ownKeys(e)},set(t,n,r){return e[n]=r,delete t[n],!0}})}function Ri(e,t={scriptable:!0,indexable:!0}){let{_scriptable:n=t.scriptable,_indexable:r=t.indexable,_allKeys:i=t.allKeys}=e;return{allKeys:i,scriptable:n,indexable:r,isScriptable:nr(n)?n:()=>n,isIndexable:nr(r)?r:()=>r}}var zi=(e,t)=>e?e+er(t):t,Bi=(e,t)=>V(t)&&e!==`adapters`&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function Vi(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t===`constructor`)return e[t];let r=n();return e[t]=r,r}function Hi(e,t,n){let{_proxy:r,_context:i,_subProxy:a,_descriptors:o}=e,s=r[t];return nr(s)&&o.isScriptable(t)&&(s=Ui(t,s,e,n)),B(s)&&s.length&&(s=Wi(t,s,e,o.isIndexable)),Bi(t,s)&&(s=Li(s,i,a&&a[t],o)),s}function Ui(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_stack:s}=n;if(s.has(e))throw Error(`Recursion detected: `+Array.from(s).join(`->`)+`->`+e);s.add(e);let c=t(a,o||r);return s.delete(e),Bi(e,c)&&(c=Ji(i._scopes,i,e,c)),c}function Wi(e,t,n,r){let{_proxy:i,_context:a,_subProxy:o,_descriptors:s}=n;if(a.index!==void 0&&r(e))return t[a.index%t.length];if(V(t[0])){let n=t,r=i._scopes.filter(e=>e!==n);t=[];for(let c of n){let n=Ji(r,i,e,c);t.push(Li(n,a,o&&o[e],s))}}return t}function Gi(e,t,n){return nr(e)?e(t,n):e}var Ki=(e,t)=>e===!0?t:typeof e==`string`?$n(t,e):void 0;function qi(e,t,n,r,i){for(let a of t){let t=Ki(n,a);if(t){e.add(t);let a=Gi(t._fallback,n,i);if(a!==void 0&&a!==n&&a!==r)return a}else if(t===!1&&r!==void 0&&n!==r)return null}return!1}function Ji(e,t,n,r){let i=t._rootScopes,a=Gi(t._fallback,n,r),o=[...e,...i],s=new Set;s.add(r);let c=Yi(s,o,n,a||n,r);return c===null||a!==void 0&&a!==n&&(c=Yi(s,o,a,c,r),c===null)?!1:Ii(Array.from(s),[``],i,a,()=>Xi(t,n,r))}function Yi(e,t,n,r,i){for(;n;)n=qi(e,t,n,r,i);return n}function Xi(e,t,n){let r=e._getTarget();t in r||(r[t]={});let i=r[t];return B(i)&&V(n)?n:i||{}}function Zi(e,t,n,r){let i;for(let a of t)if(i=Qi(zi(a,e),n),i!==void 0)return Bi(e,i)?Ji(n,r,e,i):i}function Qi(e,t){for(let n of t){if(!n)continue;let t=n[e];if(t!==void 0)return t}}function $i(e){let t=e._keys;return t||=e._keys=ea(e._scopes),t}function ea(e){let t=new Set;for(let n of e)for(let e of Object.keys(n).filter(e=>!e.startsWith(`_`)))t.add(e);return Array.from(t)}function ta(){return typeof window<`u`&&typeof document<`u`}function na(e){let t=e.parentNode;return t&&t.toString()===`[object ShadowRoot]`&&(t=t.host),t}function ra(e,t,n){let r;return typeof e==`string`?(r=parseInt(e,10),e.indexOf(`%`)!==-1&&(r=r/100*t.parentNode[n])):r=e,r}var ia=e=>e.ownerDocument.defaultView.getComputedStyle(e,null);function aa(e,t){return ia(e).getPropertyValue(t)}var oa=[`top`,`right`,`bottom`,`left`];function sa(e,t,n){let r={};n=n?`-`+n:``;for(let i=0;i<4;i++){let a=oa[i];r[a]=parseFloat(e[t+`-`+a+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}var ca=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function la(e,t){let n=e.touches,r=n&&n.length?n[0]:e,{offsetX:i,offsetY:a}=r,o=!1,s,c;if(ca(i,a,e.target))s=i,c=a;else{let e=t.getBoundingClientRect();s=r.clientX-e.left,c=r.clientY-e.top,o=!0}return{x:s,y:c,box:o}}function ua(e,t){if(`native`in e)return e;let{canvas:n,currentDevicePixelRatio:r}=t,i=ia(n),a=i.boxSizing===`border-box`,o=sa(i,`padding`),s=sa(i,`border`,`width`),{x:c,y:l,box:u}=la(e,n),d=o.left+(u&&s.left),f=o.top+(u&&s.top),{width:p,height:m}=t;return a&&(p-=o.width+s.width,m-=o.height+s.height),{x:Math.round((c-d)/p*n.width/r),y:Math.round((l-f)/m*n.height/r)}}function da(e,t,n){let r,i;if(t===void 0||n===void 0){let a=e&&na(e);if(!a)t=e.clientWidth,n=e.clientHeight;else{let e=a.getBoundingClientRect(),o=ia(a),s=sa(o,`border`,`width`),c=sa(o,`padding`);t=e.width-c.width-s.width,n=e.height-c.height-s.height,r=ra(o.maxWidth,a,`clientWidth`),i=ra(o.maxHeight,a,`clientHeight`)}}return{width:t,height:n,maxWidth:r||or,maxHeight:i||or}}var fa=e=>Math.round(e*10)/10;function pa(e,t,n,r){let i=ia(e),a=sa(i,`margin`),o=ra(i.maxWidth,e,`clientWidth`)||or,s=ra(i.maxHeight,e,`clientHeight`)||or,c=da(e,t,n),{width:l,height:u}=c;if(i.boxSizing===`content-box`){let e=sa(i,`border`,`width`),t=sa(i,`padding`);l-=t.width+e.width,u-=t.height+e.height}return l=Math.max(0,l-a.width),u=Math.max(0,r?l/r:u-a.height),l=fa(Math.min(l,o,c.maxWidth)),u=fa(Math.min(u,s,c.maxHeight)),l&&!u&&(u=fa(l/2)),(t!==void 0||n!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=fa(Math.floor(u*r))),{width:l,height:u}}function ma(e,t,n){let r=t||1,i=fa(e.height*r),a=fa(e.width*r);e.height=fa(e.height),e.width=fa(e.width);let o=e.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${e.height}px`,o.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||o.height!==i||o.width!==a?(e.currentDevicePixelRatio=r,o.height=i,o.width=a,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}var ha=function(){let e=!1;try{let t={get passive(){return e=!0,!1}};ta()&&(window.addEventListener(`test`,null,t),window.removeEventListener(`test`,null,t))}catch{}return e}();function ga(e,t){let n=aa(e,t),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}var _a=function(e,t){return{x(n){return e+e+t-n},setWidth(e){t=e},textAlign(e){return e===`center`?e:e===`right`?`left`:`right`},xPlus(e,t){return e-t},leftForLtr(e,t){return e-t}}},va=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function ya(e,t,n){return e?_a(t,n):va()}function ba(e,t){let n,r;(t===`ltr`||t===`rtl`)&&(n=e.canvas.style,r=[n.getPropertyValue(`direction`),n.getPropertyPriority(`direction`)],n.setProperty(`direction`,t,`important`),e.prevTextDirection=r)}function xa(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty(`direction`,t[0],t[1]))}function Sa(e,t,n){return e.options.clip?e[n]:t[n]}function Ca(e,t){let{xScale:n,yScale:r}=e;return n&&r?{left:Sa(n,t,`left`),right:Sa(n,t,`right`),top:Sa(r,t,`top`),bottom:Sa(r,t,`bottom`)}:t}function wa(e,t){let n=t._clip;if(n.disabled)return!1;let r=Ca(t,e.chartArea);return{left:n.left===!1?0:r.left-(n.left===!0?0:n.left),right:n.right===!1?e.width:r.right+(n.right===!0?0:n.right),top:n.top===!1?0:r.top-(n.top===!0?0:n.top),bottom:n.bottom===!1?e.height:r.bottom+(n.bottom===!0?0:n.bottom)}}var Ta=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,t,n,r){let i=t.listeners[r],a=t.duration;i.forEach(r=>r({chart:e,initial:t.initial,numSteps:a,currentStep:Math.min(n-t.start,a)}))}_refresh(){this._request||=(this._running=!0,Rr.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let t=0;this._charts.forEach((n,r)=>{if(!n.running||!n.items.length)return;let i=n.items,a=i.length-1,o=!1,s;for(;a>=0;--a)s=i[a],s._active?(s._total>n.duration&&(n.duration=s._total),s.tick(e),o=!0):(i[a]=i[i.length-1],i.pop());o&&(r.draw(),this._notify(r,n,e,`progress`)),i.length||(n.running=!1,this._notify(r,n,e,`complete`),n.initial=!1),t+=i.length}),this._lastDate=e,t===0&&(this._running=!1)}_getAnims(e){let t=this._charts,n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){!t||!t.length||this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){let t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,t)=>Math.max(e,t._duration),0),this._refresh())}running(e){if(!this._running)return!1;let t=this._charts.get(e);return!(!t||!t.running||!t.items.length)}stop(e){let t=this._charts.get(e);if(!t||!t.items.length)return;let n=t.items,r=n.length-1;for(;r>=0;--r)n[r].cancel();t.items=[],this._notify(e,t,Date.now(),`complete`)}remove(e){return this._charts.delete(e)}},Ea=`transparent`,Da={boolean(e,t,n){return n>.5?t:e},color(e,t,n){let r=Jr(e||Ea),i=r.valid&&Jr(t||Ea);return i&&i.valid?i.mix(r,n).hexString():t},number(e,t,n){return e+(t-e)*n}},Oa=class{constructor(e,t,n,r){let i=t[n];r=Ni([e.to,r,i,e.from]);let a=Ni([e.from,i,r]);this._active=!0,this._fn=e.fn||Da[e.type||typeof a],this._easing=Kr[e.easing]||Kr.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=a,this._to=r,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);let r=this._target[this._prop],i=n-this._start,a=this._duration-i;this._start=n,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=Ni([e.to,t,r,e.from]),this._from=Ni([e.from,r,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){let t=e-this._start,n=this._duration,r=this._prop,i=this._from,a=this._loop,o=this._to,s;if(this._active=i!==o&&(a||t1?2-s:s,s=this._easing(Math.min(1,Math.max(0,s))),this._target[r]=this._fn(i,o,s)}wait(){let e=this._promises||=[];return new Promise((t,n)=>{e.push({res:t,rej:n})})}_notify(e){let t=e?`res`:`rej`,n=this._promises||[];for(let e=0;e{let i=e[r];if(!V(i))return;let a={};for(let e of t)a[e]=i[e];(B(i.properties)&&i.properties||[r]).forEach(e=>{(e===r||!n.has(e))&&n.set(e,a)})})}_animateOptions(e,t){let n=t.options,r=ja(e,n);if(!r)return[];let i=this._createAnimations(r,n);return n.$shared&&Aa(e.options.$animations,n).then(()=>{e.options=n},()=>{}),i}_createAnimations(e,t){let n=this._properties,r=[],i=e.$animations||={},a=Object.keys(t),o=Date.now(),s;for(s=a.length-1;s>=0;--s){let c=a[s];if(c.charAt(0)===`$`)continue;if(c===`options`){r.push(...this._animateOptions(e,t));continue}let l=t[c],u=i[c],d=n.get(c);if(u)if(d&&u.active()){u.update(d,l,o);continue}else u.cancel();if(!d||!d.duration){e[c]=l;continue}i[c]=u=new Oa(d,e,c,l),r.push(u)}return r}update(e,t){if(this._properties.size===0){Object.assign(e,t);return}let n=this._createAnimations(e,t);if(n.length)return Ta.add(this._chart,n),!0}};function Aa(e,t){let n=[],r=Object.keys(t);for(let t=0;t0||!n&&t<0)return i.index}return null}function Ua(e,t){let{chart:n,_cachedMeta:r}=e,i=n._stacks||={},{iScale:a,vScale:o,index:s}=r,c=a.axis,l=o.axis,u=za(a,o,r),d=t.length,f;for(let e=0;en[e].axis===t).shift()}function Ga(e,t){return Fi(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:`default`,type:`dataset`})}function Ka(e,t,n){return Fi(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:`default`,type:`data`})}function qa(e,t){let n=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t||=e._parsed;for(let e of t){let t=e._stacks;if(!t||t[r]===void 0||t[r][n]===void 0)return;delete t[r][n],t[r]._visualValues!==void 0&&t[r]._visualValues[n]!==void 0&&delete t[r]._visualValues[n]}}}var Ja=e=>e===`reset`||e===`none`,Ya=(e,t)=>t?e:Object.assign({},e),Xa=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:Fa(n,!0),values:null},Za=class{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Ra(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled(`filler`)&&console.warn(`Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options`)}updateIndex(e){this.index!==e&&qa(this._cachedMeta),this.index=e}linkScales(){let e=this.chart,t=this._cachedMeta,n=this.getDataset(),r=(e,t,n,r)=>e===`x`?t:e===`r`?r:n,i=t.xAxisID=W(n.xAxisID,Wa(e,`x`)),a=t.yAxisID=W(n.yAxisID,Wa(e,`y`)),o=t.rAxisID=W(n.rAxisID,Wa(e,`r`)),s=t.indexAxis,c=t.iAxisID=r(s,i,a,o),l=t.vAxisID=r(s,a,i,o);t.xScale=this.getScaleForId(i),t.yScale=this.getScaleForId(a),t.rScale=this.getScaleForId(o),t.iScale=this.getScaleForId(c),t.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){let t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update(`reset`)}_destroy(){let e=this._cachedMeta;this._data&&Ir(this._data,this),e._stacked&&qa(e)}_dataCheck(){let e=this.getDataset(),t=e.data||=[],n=this._data;if(V(t)){let e=this._cachedMeta;this._data=La(t,e)}else if(n!==t){if(n){Ir(n,this);let e=this._cachedMeta;qa(e),e._parsed=[]}t&&Object.isExtensible(t)&&Fr(t,this),this._syncList=[],this._data=t}}addElements(){let e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){let t=this._cachedMeta,n=this.getDataset(),r=!1;this._dataCheck();let i=t._stacked;t._stacked=Ra(t.vScale,t),t.stack!==n.stack&&(r=!0,qa(t),t.stack=n.stack),this._resyncElements(e),(r||i!==t._stacked)&&(Ua(this,t._parsed),t._stacked=Ra(t.vScale,t))}configure(){let e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){let{_cachedMeta:n,_data:r}=this,{iScale:i,_stacked:a}=n,o=i.axis,s=e===0&&t===r.length?!0:n._sorted,c=e>0&&n._parsed[e-1],l,u,d;if(this._parsing===!1)n._parsed=r,n._sorted=!0,d=r;else{d=B(r[e])?this.parseArrayData(n,r,e,t):V(r[e])?this.parseObjectData(n,r,e,t):this.parsePrimitiveData(n,r,e,t);let i=()=>u[o]===null||c&&u[o]t||u=0;--d)if(!p()){this.updateRangeFromParsed(c,e,f,s);break}}return c}getAllParsedValues(e){let t=this._cachedMeta._parsed,n=[],r,i,a;for(r=0,i=t.length;r=0&&ethis.getContext(n,r,t),u);return p.$shared&&(p.$shared=s,i[a]=Object.freeze(Ya(p,s))),p}_resolveAnimations(e,t,n){let r=this.chart,i=this._cachedDataOpts,a=`animation-${t}`,o=i[a];if(o)return o;let s;if(r.options.animation!==!1){let r=this.chart.config,i=r.datasetAnimationScopeKeys(this._type,t),a=r.getOptionScopes(this.getDataset(),i);s=r.createResolver(a,this.getContext(e,n,t))}let c=new ka(r,s&&s.animations);return s&&s._cacheable&&(i[a]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||=Object.assign({},e)}includeOptions(e,t){return!t||Ja(e)||this.chart._animationsDisabled}_getSharedOptions(e,t){let n=this.resolveDataElementOptions(e,t),r=this._sharedOptions,i=this.getSharedOptions(n),a=this.includeOptions(t,i)||i!==r;return this.updateSharedOptions(i,t,n),{sharedOptions:i,includeOptions:a}}updateElement(e,t,n,r){Ja(r)?Object.assign(e,n):this._resolveAnimations(t,r).update(e,n)}updateSharedOptions(e,t,n){e&&!Ja(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,r){e.active=r;let i=this.getStyle(t,r);this._resolveAnimations(t,n,r).update(e,{options:!r&&this.getSharedOptions(i)||i})}removeHoverStyle(e,t,n){this._setStyle(e,n,`active`,!1)}setHoverStyle(e,t,n){this._setStyle(e,n,`active`,!0)}_removeDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!1)}_setDatasetHoverStyle(){let e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,`active`,!0)}_resyncElements(e){let t=this._data,n=this._cachedMeta.data;for(let[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];let r=n.length,i=t.length,a=Math.min(i,r);a&&this.parse(0,a),i>r?this._insertElements(r,i-r,e):i{for(e.length+=t,o=e.length-1;o>=a;o--)e[o]=e[o-t]};for(s(i),o=e;oe-t))}return e._cache.$bar}function $a(e){let t=e.iScale,n=Qa(t,e.type),r=t._length,i,a,o,s,c=()=>{o===32767||o===-32768||(tr(s)&&(r=Math.min(r,Math.abs(o-s)||r)),s=o)};for(i=0,a=n.length;i0?i[e-1]:null,s=eMath.abs(s)&&(c=s,l=o),t[n.axis]=l,t._custom={barStart:c,barEnd:l,start:i,end:a,min:o,max:s}}function ro(e,t,n,r){return B(e)?no(e,t,n,r):t[n.axis]=n.parse(e,r),t}function io(e,t,n,r){let i=e.iScale,a=e.vScale,o=i.getLabels(),s=i===a,c=[],l,u,d,f;for(l=n,u=n+r;l=n?1:-1):fr(e)}function so(e){let t,n,r,i,a;return e.horizontal?(t=e.base>e.x,n=`left`,r=`right`):(t=e.basee.controller.options.grouped),i=n.options.stacked,a=[],o=this._cachedMeta.controller.getParsed(t),s=o&&o[n.axis],c=e=>{let t=e._parsed.find(e=>e[n.axis]===s),r=t&&t[e.vScale.axis];if(z(r)||isNaN(r))return!0};for(let n of r)if(!(t!==void 0&&c(n))&&((i===!1||a.indexOf(n.stack)===-1||i===void 0&&n.stack===void 0)&&a.push(n.stack),n.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let e=this.chart.scales,t=this.chart.options.indexAxis;return Object.keys(e).filter(n=>e[n].axis===t).shift()}_getAxis(){let e={},t=this.getFirstScaleIdForIndexAxis();for(let n of this.chart.data.datasets)e[W(this.chart.options.indexAxis===`x`?n.xAxisID:n.yAxisID,t)]=!0;return Object.keys(e)}_getStackIndex(e,t,n){let r=this._getStacks(e,n),i=t===void 0?-1:r.indexOf(t);return i===-1?r.length-1:i}_getRuler(){let e=this.options,t=this._cachedMeta,n=t.iScale,r=[],i,a;for(i=0,a=t.data.length;i!z(e[t.axis]));r.lo-=Math.max(0,a);let o=n.slice(r.hi).findIndex(e=>!z(e[t.axis]));r.hi+=Math.max(0,o)}return r}else if(i._sharedOptions){let e=a[0],r=typeof e.getRange==`function`&&e.getRange(t);if(r){let e=o(a,t,n-r),i=o(a,t,n+r);return{lo:e.lo,hi:i.hi}}}}return{lo:0,hi:a.length-1}}function vo(e,t,n,r,i){let a=e.getSortedVisibleDatasetMetas(),o=n[t];for(let e=0,n=a.length;e{e[o]&&e[o](t[n],i)&&(a.push({element:e,datasetIndex:r,index:c}),s||=e.inRange(t.x,t.y,i))}),r&&!s?[]:a}var To={evaluateInteractionItems:vo,modes:{index(e,t,n,r){let i=ua(t,e),a=n.axis||`x`,o=n.includeInvisible||!1,s=n.intersect?bo(e,i,a,r,o):Co(e,i,a,!1,r,o),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(e=>{let t=s[0].index,n=e.data[t];n&&!n.skip&&c.push({element:n,datasetIndex:e.index,index:t})}),c):[]},dataset(e,t,n,r){let i=ua(t,e),a=n.axis||`xy`,o=n.includeInvisible||!1,s=n.intersect?bo(e,i,a,r,o):Co(e,i,a,!1,r,o);if(s.length>0){let t=s[0].datasetIndex,n=e.getDatasetMeta(t).data;s=[];for(let e=0;ee.pos===t)}function Oo(e,t){return e.filter(e=>Eo.indexOf(e.pos)===-1&&e.box.axis===t)}function ko(e,t){return e.sort((e,n)=>{let r=t?n:e,i=t?e:n;return r.weight===i.weight?r.index-i.index:r.weight-i.weight})}function Ao(e){let t=[],n,r,i,a,o,s;for(n=0,r=(e||[]).length;ne.box.fullSize),!0),r=ko(Do(t,`left`),!0),i=ko(Do(t,`right`)),a=ko(Do(t,`top`),!0),o=ko(Do(t,`bottom`)),s=Oo(t,`x`),c=Oo(t,`y`);return{fullSize:n,leftAndTop:r.concat(a),rightAndBottom:i.concat(c).concat(o).concat(s),chartArea:Do(t,`chartArea`),vertical:r.concat(i).concat(c),horizontal:a.concat(o).concat(s)}}function Po(e,t,n,r){return Math.max(e[n],t[n])+Math.max(e[r],t[r])}function Fo(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Io(e,t,n,r){let{pos:i,box:a}=n,o=e.maxPadding;if(!V(i)){n.size&&(e[i]-=n.size);let t=r[n.stack]||{size:0,count:1};t.size=Math.max(t.size,n.horizontal?a.height:a.width),n.size=t.size/t.count,e[i]+=n.size}a.getPadding&&Fo(o,a.getPadding());let s=Math.max(0,t.outerWidth-Po(o,e,`left`,`right`)),c=Math.max(0,t.outerHeight-Po(o,e,`top`,`bottom`)),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,n.horizontal?{same:l,other:u}:{same:u,other:l}}function Lo(e){let t=e.maxPadding;function n(n){let r=Math.max(t[n]-e[n],0);return e[n]+=r,r}e.y+=n(`top`),e.x+=n(`left`),n(`right`),n(`bottom`)}function Ro(e,t){let n=t.maxPadding;function r(e){let r={left:0,top:0,right:0,bottom:0};return e.forEach(e=>{r[e]=Math.max(t[e],n[e])}),r}return r(e?[`left`,`right`]:[`top`,`bottom`])}function zo(e,t,n,r){let i=[],a,o,s,c,l,u;for(a=0,o=e.length,l=0;a{typeof e.beforeLayout==`function`&&e.beforeLayout()});let u=c.reduce((e,t)=>t.box.options&&t.box.options.display===!1?e:e+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:i,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/u,hBoxMaxHeight:o/2}),f=Object.assign({},i);Fo(f,X(r));let p=Object.assign({maxPadding:f,w:a,h:o,x:i.left,y:i.top},i),m=Mo(c.concat(l),d);zo(s.fullSize,p,d,m),zo(c,p,d,m),zo(l,p,d,m)&&zo(c,p,d,m),Lo(p),Vo(s.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,Vo(s.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},K(s.chartArea,t=>{let n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}},Uo=class{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,r){return t=Math.max(0,t||e.width),n||=e.height,{width:t,height:Math.max(0,r?Math.floor(t/r):n)}}isAttached(e){return!0}updateConfig(e){}},Wo=class extends Uo{acquireContext(e){return e&&e.getContext&&e.getContext(`2d`)||null}updateConfig(e){e.options.animation=!1}},Go=`$chartjs`,Ko={touchstart:`mousedown`,touchmove:`mousemove`,touchend:`mouseup`,pointerenter:`mouseenter`,pointerdown:`mousedown`,pointermove:`mousemove`,pointerup:`mouseup`,pointerleave:`mouseout`,pointerout:`mouseout`},qo=e=>e===null||e===``;function Jo(e,t){let n=e.style,r=e.getAttribute(`height`),i=e.getAttribute(`width`);if(e[Go]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||`block`,n.boxSizing=n.boxSizing||`border-box`,qo(i)){let t=ga(e,`width`);t!==void 0&&(e.width=t)}if(qo(r))if(e.style.height===``)e.height=e.width/(t||2);else{let t=ga(e,`height`);t!==void 0&&(e.height=t)}return e}var Yo=ha?{passive:!0}:!1;function Xo(e,t,n){e&&e.addEventListener(t,n,Yo)}function Zo(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,Yo)}function Qo(e,t){let n=Ko[e.type]||e.type,{x:r,y:i}=ua(e,t);return{type:n,chart:t,native:e,x:r===void 0?null:r,y:i===void 0?null:i}}function $o(e,t){for(let n of e)if(n===t||n.contains(t))return!0}function es(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$o(n.addedNodes,r),t&&=!$o(n.removedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function ts(e,t,n){let r=e.canvas,i=new MutationObserver(e=>{let t=!1;for(let n of e)t||=$o(n.removedNodes,r),t&&=!$o(n.addedNodes,r);t&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}var ns=new Map,rs=0;function is(){let e=window.devicePixelRatio;e!==rs&&(rs=e,ns.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function as(e,t){ns.size||window.addEventListener(`resize`,is),ns.set(e,t)}function os(e){ns.delete(e),ns.size||window.removeEventListener(`resize`,is)}function ss(e,t,n){let r=e.canvas,i=r&&na(r);if(!i)return;let a=zr((e,t)=>{let r=i.clientWidth;n(e,t),r{let t=e[0],n=t.contentRect.width,r=t.contentRect.height;n===0&&r===0||a(n,r)});return o.observe(i),as(e,a),o}function cs(e,t,n){n&&n.disconnect(),t===`resize`&&os(e)}function ls(e,t,n){let r=e.canvas,i=zr(t=>{e.ctx!==null&&n(Qo(t,e))},e);return Xo(r,t,i),i}var us=class extends Uo{acquireContext(e,t){let n=e&&e.getContext&&e.getContext(`2d`);return n&&n.canvas===e?(Jo(e,t),n):null}releaseContext(e){let t=e.canvas;if(!t[Go])return!1;let n=t[Go].initial;[`height`,`width`].forEach(e=>{let r=n[e];z(r)?t.removeAttribute(e):t.setAttribute(e,r)});let r=n.style||{};return Object.keys(r).forEach(e=>{t.style[e]=r[e]}),t.width=t.width,delete t[Go],!0}addEventListener(e,t,n){this.removeEventListener(e,t);let r=e.$proxies||={};r[t]=({attach:es,detach:ts,resize:ss}[t]||ls)(e,t,n)}removeEventListener(e,t){let n=e.$proxies||={},r=n[t];r&&(({attach:cs,detach:cs,resize:cs}[t]||Zo)(e,t,r),n[t]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,r){return pa(e,t,n,r)}isAttached(e){let t=e&&na(e);return!!(t&&t.isConnected)}};function ds(e){return!ta()||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?Wo:us}var fs=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){let{x:t,y:n}=this.getProps([`x`,`y`],e);return{x:t,y:n}}hasValue(){return _r(this.x)&&_r(this.y)}getProps(e,t){let n=this.$animations;if(!t||!n)return this;let r={};return e.forEach(e=>{r[e]=n[e]&&n[e].active()?n[e]._to:this[e]}),r}};function ps(e,t){let n=e.options.ticks,r=ms(e),i=Math.min(n.maxTicksLimit||r,r),a=n.major.enabled?gs(t):[],o=a.length,s=a[0],c=a[o-1],l=[];if(o>i)return _s(t,l,a,o/i),l;let u=hs(a,t,i);if(o>0){let e,n,r=o>1?Math.round((c-s)/(o-1)):null;for(vs(t,l,u,z(r)?0:s-r,s),e=0,n=o-1;ei)return t}return Math.max(i,1)}function gs(e){let t=[],n,r;for(n=0,r=e.length;ne===`left`?`right`:e===`right`?`left`:e,xs=(e,t,n)=>t===`top`||t===`left`?e[t]+n:e[t]-n,Ss=(e,t)=>Math.min(t||e,e);function Cs(e,t){let n=[],r=e.length/t,i=e.length,a=0;for(;ao+s)))return c}function Ts(e,t){K(e,e=>{let n=e.gc,r=n.length/2,i;if(r>t){for(i=0;in?n:t,n=r&&t>n?t:n,{min:U(t,U(n,t)),max:U(n,U(t,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||=this._computeLabelItems(e)}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){G(this.options.beforeUpdate,[this])}update(e,t,n){let{beginAtZero:r,grace:i,ticks:a}=this.options,o=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||=(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Pi(this,i,r),!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let s=o=i||n<=1||!this.isHorizontal()){this.labelRotation=r;return}let l=this._getLabelSizes(),u=l.widest.width,d=l.highest.height,f=Dr(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/n:f/(n-1),u+6>o&&(o=f/(n-(e.offset?.5:1)),s=this.maxHeight-Es(e.grid)-t.padding-Ds(e.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),a=xr(Math.min(Math.asin(Dr((l.highest.height+6)/o,-1,1)),Math.asin(Dr(s/c,-1,1))-Math.asin(Dr(d/c,-1,1)))),a=Math.max(r,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){G(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){G(this.options.beforeFit,[this])}fit(){let e={width:0,height:0},{chart:t,options:{ticks:n,title:r,grid:i}}=this,a=this._isVisible(),o=this.isHorizontal();if(a){let a=Ds(r,t.options.font);if(o?(e.width=this.maxWidth,e.height=Es(i)+a):(e.height=this.maxHeight,e.width=Es(i)+a),n.display&&this.ticks.length){let{first:t,last:r,widest:i,highest:a}=this._getLabelSizes(),s=n.padding*2,c=br(this.labelRotation),l=Math.cos(c),u=Math.sin(c);if(o){let t=n.mirror?0:u*i.width+l*a.height;e.height=Math.min(this.maxHeight,e.height+t+s)}else{let t=n.mirror?0:l*i.width+u*a.height;e.width=Math.min(this.maxWidth,e.width+t+s)}this._calculatePadding(t,r,u,l)}}this._handleMargins(),o?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,r){let{ticks:{align:i,padding:a},position:o}=this.options,s=this.labelRotation!==0,c=o!==`top`&&this.axis===`x`;if(this.isHorizontal()){let o=this.getPixelForTick(0)-this.left,l=this.right-this.getPixelForTick(this.ticks.length-1),u=0,d=0;s?c?(u=r*e.width,d=n*t.height):(u=n*e.height,d=r*t.width):i===`start`?d=t.width:i===`end`?u=e.width:i!==`inner`&&(u=e.width/2,d=t.width/2),this.paddingLeft=Math.max((u-o+a)*this.width/(this.width-o),0),this.paddingRight=Math.max((d-l+a)*this.width/(this.width-l),0)}else{let n=t.height/2,r=e.height/2;i===`start`?(n=0,r=e.height):i===`end`&&(n=t.height,r=0),this.paddingTop=n+a,this.paddingBottom=r+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){G(this.options.afterFit,[this])}isHorizontal(){let{axis:e,position:t}=this.options;return t===`top`||t===`bottom`||e===`x`}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let t,n;for(t=0,n=e.length;t({width:a[e]||0,height:o[e]||0});return{first:C(0),last:C(t-1),widest:C(x),highest:C(S),widths:a,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){let t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);let t=this._startPixel+e*this._length;return Or(this._alignToPixels?mi(this.chart,t,0):t)}getDecimalForPixel(e){let t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){let t=this.ticks||[];if(e>=0&&eo*r?o/n:s/r:s*r0:!!e}_computeGridLineItems(e){let t=this.axis,n=this.chart,r=this.options,{grid:i,position:a,border:o}=r,s=i.offset,c=this.isHorizontal(),l=this.ticks.length+(s?1:0),u=Es(i),d=[],f=o.setContext(this.getContext()),p=f.display?f.width:0,m=p/2,h=function(e){return mi(n,e,p)},g,_,v,y,b,x,S,C,w,T,E,D;if(a===`top`)g=h(this.bottom),x=this.bottom-u,C=g-m,T=h(e.top)+m,D=e.bottom;else if(a===`bottom`)g=h(this.top),T=e.top,D=h(e.bottom)-m,x=g+m,C=this.top+u;else if(a===`left`)g=h(this.right),b=this.right-u,S=g-m,w=h(e.left)+m,E=e.right;else if(a===`right`)g=h(this.left),w=e.left,E=h(e.right)-m,b=g+m,S=this.left+u;else if(t===`x`){if(a===`center`)g=h((e.top+e.bottom)/2+.5);else if(V(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}T=e.top,D=e.bottom,x=g+m,C=x+u}else if(t===`y`){if(a===`center`)g=h((e.left+e.right)/2);else if(V(a)){let e=Object.keys(a)[0],t=a[e];g=h(this.chart.scales[e].getPixelForValue(t))}b=g-m,S=b-u,w=e.left,E=e.right}let O=W(r.ticks.maxTicksLimit,l),k=Math.max(1,Math.ceil(l/O));for(_=0;_0&&(a-=r/2);break}f={left:a,top:i,width:r+t.width,height:n+t.height,color:e.backdropColor}}h.push({label:y,font:w,textOffset:D,options:{rotation:m,color:n,strokeColor:s,strokeWidth:l,textAlign:d,textBaseline:O,translation:[b,x],backdrop:f}})}return h}_getXAxisLabelAlignment(){let{position:e,ticks:t}=this.options;if(-br(this.labelRotation))return e===`top`?`left`:`right`;let n=`center`;return t.align===`start`?n=`left`:t.align===`end`?n=`right`:t.align===`inner`&&(n=`inner`),n}_getYAxisLabelAlignment(e){let{position:t,ticks:{crossAlign:n,mirror:r,padding:i}}=this.options,a=this._getLabelSizes(),o=e+i,s=a.widest.width,c,l;return t===`left`?r?(l=this.right+i,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l+=s)):(l=this.right-o,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l=this.left)):t===`right`?r?(l=this.left+i,n===`near`?c=`right`:n===`center`?(c=`center`,l-=s/2):(c=`left`,l-=s)):(l=this.left+o,n===`near`?c=`left`:n===`center`?(c=`center`,l+=s/2):(c=`right`,l=this.right)):c=`right`,{textAlign:c,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;let e=this.chart,t=this.options.position;if(t===`left`||t===`right`)return{top:0,left:this.left,bottom:e.height,right:this.right};if(t===`top`||t===`bottom`)return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){let{ctx:e,options:{backgroundColor:t},left:n,top:r,width:i,height:a}=this;t&&(e.save(),e.fillStyle=t,e.fillRect(n,r,i,a),e.restore())}getLineWidthForValue(e){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(t=>t.value===e);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(e){let t=this.options.grid,n=this.ctx,r=this._gridLineItems||=this._computeGridLineItems(e),i,a,o=(e,t,r)=>{!r.width||!r.color||(n.save(),n.lineWidth=r.width,n.strokeStyle=r.color,n.setLineDash(r.borderDash||[]),n.lineDashOffset=r.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(i=0,a=r.length;i{this.draw(e)}}]:[{z:r,draw:e=>{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:e=>{this.drawLabels(e)}}]}getMatchingVisibleMetas(e){let t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+`AxisID`,r=[],i,a;for(i=0,a=t.length;i{let r=n.split(`.`),i=r.pop(),a=[e].concat(r).join(`.`),o=t[n].split(`.`),s=o.pop(),c=o.join(`.`);Y.route(a,i,c,s)})}function Is(e){return`id`in e&&`defaults`in e}var Ls=new class{constructor(){this.controllers=new Ns(Za,`datasets`,!0),this.elements=new Ns(fs,`elements`),this.plugins=new Ns(Object,`plugins`),this.scales=new Ns(Ms,`scales`),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each(`register`,e)}remove(...e){this._each(`unregister`,e)}addControllers(...e){this._each(`register`,e,this.controllers)}addElements(...e){this._each(`register`,e,this.elements)}addPlugins(...e){this._each(`register`,e,this.plugins)}addScales(...e){this._each(`register`,e,this.scales)}getController(e){return this._get(e,this.controllers,`controller`)}getElement(e){return this._get(e,this.elements,`element`)}getPlugin(e){return this._get(e,this.plugins,`plugin`)}getScale(e){return this._get(e,this.scales,`scale`)}removeControllers(...e){this._each(`unregister`,e,this.controllers)}removeElements(...e){this._each(`unregister`,e,this.elements)}removePlugins(...e){this._each(`unregister`,e,this.plugins)}removeScales(...e){this._each(`unregister`,e,this.scales)}_each(e,t,n){[...t].forEach(t=>{let r=n||this._getRegistryForType(t);n||r.isForType(t)||r===this.plugins&&t.id?this._exec(e,r,t):K(t,t=>{let r=n||this._getRegistryForType(t);this._exec(e,r,t)})})}_exec(e,t,n){let r=er(e);G(n[`before`+r],[],n),t[e](n),G(n[`after`+r],[],n)}_getRegistryForType(e){for(let t=0;te.filter(e=>!t.some(t=>e.plugin.id===t.plugin.id));this._notify(r(t,n),e,`stop`),this._notify(r(n,t),e,`start`)}};function zs(e){let t={},n=[],r=Object.keys(Ls.plugins.items);for(let e=0;e1&&Ks(e[0].toLowerCase());if(t)return t}throw Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Ys(e,t,n){if(n[t+`AxisID`]===e)return{axis:t}}function Xs(e,t){if(t.data&&t.data.datasets){let n=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(n.length)return Ys(e,`x`,n[0])||Ys(e,`y`,n[0])}return{}}function Zs(e,t){let n=si[e.type]||{scales:{}},r=t.scales||{},i=Us(e.type,t),a=Object.create(null);return Object.keys(r).forEach(t=>{let o=r[t];if(!V(o))return console.error(`Invalid scale configuration for scale: ${t}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let s=Js(t,o,Xs(t,e),Y.scales[o.type]),c=Gs(s,i),l=n.scales||{};a[t]=Jn(Object.create(null),[{axis:s},o,l[s],l[c]])}),e.data.datasets.forEach(n=>{let i=n.type||e.type,o=n.indexAxis||Us(i,t),s=(si[i]||{}).scales||{};Object.keys(s).forEach(e=>{let t=Ws(e,o),i=n[t+`AxisID`]||t;a[i]=a[i]||Object.create(null),Jn(a[i],[{axis:t},r[i],s[e]])})}),Object.keys(a).forEach(e=>{let t=a[e];Jn(t,[Y.scales[t.type],Y.scale])}),a}function Qs(e){let t=e.options||={};t.plugins=W(t.plugins,{}),t.scales=Zs(e,t)}function $s(e){return e||={},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function ec(e){return e||={},e.data=$s(e.data),Qs(e),e}var tc=new Map,nc=new Set;function rc(e,t){let n=tc.get(e);return n||(n=t(),tc.set(e,n),nc.add(n)),n}var ic=(e,t,n)=>{let r=$n(t,n);r!==void 0&&e.add(r)},ac=class{constructor(e){this._config=ec(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=$s(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){let e=this._config;this.clearCache(),Qs(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return rc(e,()=>[[`datasets.${e}`,``]])}datasetAnimationScopeKeys(e,t){return rc(`${e}.transition.${t}`,()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,``]])}datasetElementScopeKeys(e,t){return rc(`${e}-${t}`,()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,``]])}pluginScopeKeys(e){let t=e.id,n=this.type;return rc(`${n}-plugin-${t}`,()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,t){let n=this._scopeCache,r=n.get(e);return(!r||t)&&(r=new Map,n.set(e,r)),r}getOptionScopes(e,t,n){let{options:r,type:i}=this,a=this._cachedScopes(e,n),o=a.get(t);if(o)return o;let s=new Set;t.forEach(t=>{e&&(s.add(e),t.forEach(t=>ic(s,e,t))),t.forEach(e=>ic(s,r,e)),t.forEach(e=>ic(s,si[i]||{},e)),t.forEach(e=>ic(s,Y,e)),t.forEach(e=>ic(s,ci,e))});let c=Array.from(s);return c.length===0&&c.push(Object.create(null)),nc.has(t)&&a.set(t,c),c}chartOptionScopes(){let{options:e,type:t}=this;return[e,si[t]||{},Y.datasets[t]||{},{type:t},Y,ci]}resolveNamedOptions(e,t,n,r=[``]){let i={$shared:!0},{resolver:a,subPrefixes:o}=oc(this._resolverCache,e,r),s=a;if(cc(a,t)){i.$shared=!1,n=nr(n)?n():n;let t=this.createResolver(e,n,o);s=Li(a,n,t)}for(let e of t)i[e]=s[e];return i}createResolver(e,t,n=[``],r){let{resolver:i}=oc(this._resolverCache,e,n);return V(t)?Li(i,t,void 0,r):i}};function oc(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=n.join(),a=r.get(i);return a||(a={resolver:Ii(t,n),subPrefixes:n.filter(e=>!e.toLowerCase().includes(`hover`))},r.set(i,a)),a}var sc=e=>V(e)&&Object.getOwnPropertyNames(e).some(t=>nr(e[t]));function cc(e,t){let{isScriptable:n,isIndexable:r}=Ri(e);for(let i of t){let t=n(i),a=r(i),o=(a||t)&&e[i];if(t&&(nr(o)||sc(o))||a&&B(o))return!0}return!1}var lc=`4.5.1`,uc=[`top`,`bottom`,`left`,`right`,`chartArea`];function dc(e,t){return e===`top`||e===`bottom`||uc.indexOf(e)===-1&&t===`x`}function fc(e,t){return function(n,r){return n[e]===r[e]?n[t]-r[t]:n[e]-r[e]}}function pc(e){let t=e.chart,n=t.options.animation;t.notifyPlugins(`afterRender`),G(n&&n.onComplete,[e],t)}function mc(e){let t=e.chart,n=t.options.animation;G(n&&n.onProgress,[e],t)}function hc(e){return ta()&&typeof e==`string`?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var gc={},_c=e=>{let t=hc(e);return Object.values(gc).filter(e=>e.canvas===t).pop()};function vc(e,t,n){let r=Object.keys(e);for(let i of r){let r=+i;if(r>=t){let a=e[i];delete e[i],(n>0||r>t)&&(e[r+n]=a)}}}function yc(e,t,n,r){return!n||e.type===`mouseout`?null:r?t:e}var bc=class{static defaults=Y;static instances=gc;static overrides=si;static registry=Ls;static version=lc;static getChart=_c;static register(...e){Ls.add(...e),xc()}static unregister(...e){Ls.remove(...e),xc()}constructor(e,t){let n=this.config=new ac(t),r=hc(e),i=_c(r);if(i)throw Error(`Canvas is already in use. Chart with ID '`+i.id+`' must be destroyed before the canvas with ID '`+i.canvas.id+`' can be reused.`);let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||(ds(r))),this.platform.updateConfig(n);let o=this.platform.acquireContext(r,a.aspectRatio),s=o&&o.canvas,c=s&&s.height,l=s&&s.width;if(this.id=Vn(),this.ctx=o,this.canvas=s,this.width=l,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Rs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Br(e=>this.update(e),a.resizeDelay||0),this._dataChanges=[],gc[this.id]=this,!o||!s){console.error(`Failed to create chart: can't acquire context from the given item`);return}Ta.listen(this,`complete`,pc),Ta.listen(this,`progress`,mc),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:r,_aspectRatio:i}=this;return z(e)?t&&i?i:r?n/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return Ls}_initialize(){return this.notifyPlugins(`beforeInit`),this.options.responsive?this.resize():ma(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(`afterInit`),this}clear(){return hi(this.canvas,this.ctx),this}stop(){return Ta.stop(this),this}resize(e,t){Ta.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){let n=this.options,r=this.canvas,i=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(r,e,t,i),o=n.devicePixelRatio||this.platform.getDevicePixelRatio(),s=this.width?`resize`:`attach`;this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,ma(this,o,!0)&&(this.notifyPlugins(`resize`,{size:a}),G(n.onResize,[this,a],this),this.attached&&this._doResize(s)&&this.render())}ensureScalesHaveIDs(){K(this.options.scales||{},(e,t)=>{e.id=t})}buildOrUpdateScales(){let e=this.options,t=e.scales,n=this.scales,r=Object.keys(n).reduce((e,t)=>(e[t]=!1,e),{}),i=[];t&&(i=i.concat(Object.keys(t).map(e=>{let n=t[e],r=Js(e,n),i=r===`r`,a=r===`x`;return{options:n,dposition:i?`chartArea`:a?`bottom`:`left`,dtype:i?`radialLinear`:a?`category`:`linear`}}))),K(i,t=>{let i=t.options,a=i.id,o=Js(a,i),s=W(i.type,t.dtype);(i.position===void 0||dc(i.position,o)!==dc(t.dposition))&&(i.position=t.dposition),r[a]=!0;let c=null;a in n&&n[a].type===s?c=n[a]:(c=new(Ls.getScale(s))({id:a,type:s,ctx:this.ctx,chart:this}),n[c.id]=c),c.init(i,e)}),K(r,(e,t)=>{e||delete n[t]}),K(n,e=>{Ho.configure(this,e,e.options),Ho.addBox(this,e)})}_updateMetasets(){let e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort((e,t)=>e.index-t.index),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach((e,n)=>{t.filter(t=>t===e._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let e=[],t=this.data.datasets,n,r;for(this._removeUnreferencedMetasets(),n=0,r=t.length;n{this.getDatasetMeta(t).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins(`reset`)}update(e){let t=this.config;t.update();let n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins(`beforeUpdate`,{mode:e,cancelable:!0})===!1)return;let i=this.buildOrUpdateControllers();this.notifyPlugins(`beforeElementsUpdate`);let a=0;for(let e=0,t=this.data.datasets.length;e{e.reset()}),this._updateDatasets(e),this.notifyPlugins(`afterUpdate`,{mode:e}),this._layers.sort(fc(`z`,`_idx`));let{_active:o,_lastEvent:s}=this;s?this._eventHandler(s,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){K(this.scales,e=>{Ho.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let e=this.options;(!rr(new Set(Object.keys(this._listeners)),new Set(e.events))||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(let{method:n,start:r,count:i}of t)vc(e,r,n===`_removeElements`?-i:i)}_getUniformDataChanges(){let e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];let t=this.data.datasets.length,n=t=>new Set(e.filter(e=>e[0]===t).map((e,t)=>t+`,`+e.splice(1).join(`,`))),r=n(0);for(let e=1;ee.split(`,`)).map(e=>({method:e[1],start:+e[2],count:+e[3]}))}_updateLayout(e){if(this.notifyPlugins(`beforeLayout`,{cancelable:!0})===!1)return;Ho.update(this,this.width,this.height,e);let t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],K(this.boxes,e=>{n&&e.position===`chartArea`||(e.configure&&e.configure(),this._layers.push(...e._layers()))},this),this._layers.forEach((e,t)=>{e._idx=t}),this.notifyPlugins(`afterLayout`)}_updateDatasets(e){if(this.notifyPlugins(`beforeDatasetsUpdate`,{mode:e,cancelable:!0})!==!1){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins(`afterDatasetsDraw`)}_drawDataset(e){let t=this.ctx,n={meta:e,index:e.index,cancelable:!0},r=wa(this,e);this.notifyPlugins(`beforeDatasetDraw`,n)!==!1&&(r&&yi(t,r),e.controller.draw(),r&&bi(t),n.cancelable=!1,this.notifyPlugins(`afterDatasetDraw`,n))}isPointInArea(e){return vi(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,t,n,r){let i=To.modes[t];return typeof i==`function`?i(this,e,n,r):[]}getDatasetMeta(e){let t=this.data.datasets[e],n=this._metasets,r=n.filter(e=>e&&e._dataset===t).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(r)),r}getContext(){return this.$context||=Fi(null,{chart:this,type:`chart`})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){let t=this.data.datasets[e];if(!t)return!1;let n=this.getDatasetMeta(e);return typeof n.hidden==`boolean`?!n.hidden:!t.hidden}setDatasetVisibility(e,t){let n=this.getDatasetMeta(e);n.hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){let r=n?`show`:`hide`,i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,r);tr(t)?(i.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),a.update(i,{visible:n}),this.update(t=>t.datasetIndex===e?r:void 0))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){let t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),Ta.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,r),e[n]=r},r=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};K(this.options.events,e=>n(e,r))}bindResponsiveEvents(){this._responsiveListeners||={};let e=this._responsiveListeners,t=this.platform,n=(n,r)=>{t.addEventListener(this,n,r),e[n]=r},r=(n,r)=>{e[n]&&(t.removeEventListener(this,n,r),delete e[n])},i=(e,t)=>{this.canvas&&this.resize(e,t)},a,o=()=>{r(`attach`,o),this.attached=!0,this.resize(),n(`resize`,i),n(`detach`,a)};a=()=>{this.attached=!1,r(`resize`,i),this._stop(),this._resize(0,0),n(`attach`,o)},t.isAttached(this.canvas)?o():a()}unbindEvents(){K(this._listeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._listeners={},K(this._responsiveListeners,(e,t)=>{this.platform.removeEventListener(this,t,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){let r=n?`set`:`remove`,i,a,o,s;for(t===`dataset`&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller[`_`+r+`DatasetHoverStyle`]()),o=0,s=e.length;o{let n=this.getDatasetMeta(e);if(!n)throw Error(`No dataset found at index `+e);return{datasetIndex:e,element:n.data[t],index:t}});Un(n,t)||(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}isPluginEnabled(e){return this._plugins._cache.filter(t=>t.plugin.id===e).length===1}_updateHoverStyles(e,t,n){let r=this.options.hover,i=(e,t)=>e.filter(e=>!t.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),a=i(t,e),o=n?e:i(e,t);a.length&&this.updateHoverStyle(a,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,t){let n={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},r=t=>(t.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins(`beforeEvent`,n,r)===!1)return;let i=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins(`afterEvent`,n,r),(i||n.changed)&&this.render(),this}_handleEvent(e,t,n){let{_active:r=[],options:i}=this,a=t,o=this._getActiveElements(e,r,n,a),s=ir(e),c=yc(e,this._lastEvent,n,s);n&&(this._lastEvent=null,G(i.onHover,[e,o,this],this),s&&G(i.onClick,[e,o,this],this));let l=!Un(o,r);return(l||t)&&(this._active=o,this._updateHoverStyles(o,r,t)),this._lastEvent=c,l}_getActiveElements(e,t,n,r){if(e.type===`mouseout`)return[];if(!n)return t;let i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,r)}};function xc(){return K(bc.instances,e=>e._plugins.invalidate())}function Sc(e,t){let{x:n,y:r,base:i,width:a,height:o}=e.getProps([`x`,`y`,`base`,`width`,`height`],t),s,c,l,u,d;return e.horizontal?(d=o/2,s=Math.min(n,i),c=Math.max(n,i),l=r-d,u=r+d):(d=a/2,s=n-d,c=n+d,l=Math.min(r,i),u=Math.max(r,i)),{left:s,top:l,right:c,bottom:u}}function Cc(e,t,n,r){return e?0:Dr(t,n,r)}function wc(e,t,n){let r=e.options.borderWidth,i=e.borderSkipped,a=ji(r);return{t:Cc(i.top,a.top,0,n),r:Cc(i.right,a.right,0,t),b:Cc(i.bottom,a.bottom,0,n),l:Cc(i.left,a.left,0,t)}}function Tc(e,t,n){let{enableBorderRadius:r}=e.getProps([`enableBorderRadius`]),i=e.options.borderRadius,a=Mi(i),o=Math.min(t,n),s=e.borderSkipped,c=r||V(i);return{topLeft:Cc(!c||s.top||s.left,a.topLeft,0,o),topRight:Cc(!c||s.top||s.right,a.topRight,0,o),bottomLeft:Cc(!c||s.bottom||s.left,a.bottomLeft,0,o),bottomRight:Cc(!c||s.bottom||s.right,a.bottomRight,0,o)}}function Ec(e){let t=Sc(e),n=t.right-t.left,r=t.bottom-t.top,i=wc(e,n/2,r/2),a=Tc(e,n/2,r/2);return{outer:{x:t.left,y:t.top,w:n,h:r,radius:a},inner:{x:t.left+i.l,y:t.top+i.t,w:n-i.l-i.r,h:r-i.t-i.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(i.t,i.l)),topRight:Math.max(0,a.topRight-Math.max(i.t,i.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(i.b,i.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(i.b,i.r))}}}}function Dc(e,t,n,r){let i=t===null,a=n===null,o=e&&!(i&&a)&&Sc(e,r);return o&&(i||kr(t,o.left,o.right))&&(a||kr(n,o.top,o.bottom))}function Oc(e){return e.topLeft||e.topRight||e.bottomLeft||e.bottomRight}function kc(e,t){e.rect(t.x,t.y,t.w,t.h)}function Ac(e,t,n={}){let r=e.x===n.x?0:-t,i=e.y===n.y?0:-t,a=(e.x+e.w===n.x+n.w?0:t)-r,o=(e.y+e.h===n.y+n.h?0:t)-i;return{x:e.x+r,y:e.y+i,w:e.w+a,h:e.h+o,radius:e.radius}}var jc=class extends fs{static id=`bar`;static defaults={borderSkipped:`start`,borderWidth:0,borderRadius:0,inflateAmount:`auto`,pointStyle:void 0};static defaultRoutes={backgroundColor:`backgroundColor`,borderColor:`borderColor`};constructor(e){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,e&&Object.assign(this,e)}draw(e){let{inflateAmount:t,options:{borderColor:n,backgroundColor:r}}=this,{inner:i,outer:a}=Ec(this),o=Oc(a.radius)?Ti:kc;e.save(),(a.w!==i.w||a.h!==i.h)&&(e.beginPath(),o(e,Ac(a,t,i)),e.clip(),o(e,Ac(i,-t,a)),e.fillStyle=n,e.fill(`evenodd`)),e.beginPath(),o(e,Ac(i,t)),e.fillStyle=r,e.fill(),e.restore()}inRange(e,t,n){return Dc(this,e,t,n)}inXRange(e,t){return Dc(this,e,null,t)}inYRange(e,t){return Dc(this,null,e,t)}getCenterPoint(e){let{x:t,y:n,base:r,horizontal:i}=this.getProps([`x`,`y`,`base`,`horizontal`],e);return{x:i?(t+r)/2:t,y:i?n:(n+r)/2}}getRange(e){return e===`x`?this.width/2:this.height/2}},Mc=(e,t)=>{let{boxHeight:n=t,boxWidth:r=t}=e;return e.usePointStyle&&(n=Math.min(n,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(t,n)}},Nc=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index,Pc=class extends fs{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t,n){this.maxWidth=e,this.maxHeight=t,this._margins=n,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let e=this.options.labels||{},t=G(e.generateLabels,[this.chart],this)||[];e.filter&&(t=t.filter(t=>e.filter(t,this.chart.data))),e.sort&&(t=t.sort((t,n)=>e.sort(t,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:e,ctx:t}=this;if(!e.display){this.width=this.height=0;return}let n=e.labels,r=Z(n.font),i=r.size,a=this._computeTitleHeight(),{boxWidth:o,itemHeight:s}=Mc(n,i),c,l;t.font=r.string,this.isHorizontal()?(c=this.maxWidth,l=this._fitRows(a,i,o,s)+10):(l=this.maxHeight,c=this._fitCols(a,r,o,s)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,t,n,r){let{ctx:i,maxWidth:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.lineWidths=[0],l=r+o,u=e;i.textAlign=`left`,i.textBaseline=`middle`;let d=-1,f=-l;return this.legendItems.forEach((e,p)=>{let m=n+t/2+i.measureText(e.text).width;(p===0||c[c.length-1]+m+2*o>a)&&(u+=l,c[c.length-(p>0?0:1)]=0,f+=l,d++),s[p]={left:0,top:f,row:d,width:m,height:r},c[c.length-1]+=m+o}),u}_fitCols(e,t,n,r){let{ctx:i,maxHeight:a,options:{labels:{padding:o}}}=this,s=this.legendHitBoxes=[],c=this.columnSizes=[],l=a-e,u=o,d=0,f=0,p=0,m=0;return this.legendItems.forEach((e,a)=>{let{itemWidth:h,itemHeight:g}=Fc(n,t,i,e,r);a>0&&f+g+2*o>l&&(u+=d+o,c.push({width:d,height:f}),p+=d+o,m++,d=f=0),s[a]={left:p,top:f,col:m,width:h,height:g},d=Math.max(d,h),f+=g+o}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let e=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:n,labels:{padding:r},rtl:i}}=this,a=ya(i,this.left,this.width);if(this.isHorizontal()){let i=0,o=J(n,this.left+r,this.right-this.lineWidths[i]);for(let s of t)i!==s.row&&(i=s.row,o=J(n,this.left+r,this.right-this.lineWidths[i])),s.top+=this.top+e+r,s.left=a.leftForLtr(a.x(o),s.width),o+=s.width+r}else{let i=0,o=J(n,this.top+e+r,this.bottom-this.columnSizes[i].height);for(let s of t)s.col!==i&&(i=s.col,o=J(n,this.top+e+r,this.bottom-this.columnSizes[i].height)),s.top=o,s.left+=this.left+r,s.left=a.leftForLtr(a.x(s.left),s.width),o+=s.height+r}}isHorizontal(){return this.options.position===`top`||this.options.position===`bottom`}draw(){if(this.options.display){let e=this.ctx;yi(e,this),this._draw(),bi(e)}}_draw(){let{options:e,columnSizes:t,lineWidths:n,ctx:r}=this,{align:i,labels:a}=e,o=Y.color,s=ya(e.rtl,this.left,this.width),c=Z(a.font),{padding:l}=a,u=c.size,d=u/2,f;this.drawTitle(),r.textAlign=s.textAlign(`left`),r.textBaseline=`middle`,r.lineWidth=.5,r.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:h}=Mc(a,u),g=function(e,t,n){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;r.save();let i=W(n.lineWidth,1);if(r.fillStyle=W(n.fillStyle,o),r.lineCap=W(n.lineCap,`butt`),r.lineDashOffset=W(n.lineDashOffset,0),r.lineJoin=W(n.lineJoin,`miter`),r.lineWidth=i,r.strokeStyle=W(n.strokeStyle,o),r.setLineDash(W(n.lineDash,[])),a.usePointStyle)_i(r,{radius:m*Math.SQRT2/2,pointStyle:n.pointStyle,rotation:n.rotation,borderWidth:i},s.xPlus(e,p/2),t+d,a.pointStyleWidth&&p);else{let a=t+Math.max((u-m)/2,0),o=s.leftForLtr(e,p),c=Mi(n.borderRadius);r.beginPath(),Object.values(c).some(e=>e!==0)?Ti(r,{x:o,y:a,w:p,h:m,radius:c}):r.rect(o,a,p,m),r.fill(),i!==0&&r.stroke()}r.restore()},_=function(e,t,n){wi(r,n.text,e,t+h/2,c,{strikethrough:n.hidden,textAlign:s.textAlign(n.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();f=v?{x:J(i,this.left+l,this.right-n[0]),y:this.top+l+y,line:0}:{x:this.left+l,y:J(i,this.top+y+l,this.bottom-t[0].height),line:0},ba(this.ctx,e.textDirection);let b=h+l;this.legendItems.forEach((o,u)=>{r.strokeStyle=o.fontColor,r.fillStyle=o.fontColor;let m=r.measureText(o.text).width,h=s.textAlign(o.textAlign||=a.textAlign),x=p+d+m,S=f.x,C=f.y;if(s.setWidth(this.width),v?u>0&&S+x+l>this.right&&(C=f.y+=b,f.line++,S=f.x=J(i,this.left+l,this.right-n[f.line])):u>0&&C+b>this.bottom&&(S=f.x=S+t[f.line].width+l,f.line++,C=f.y=J(i,this.top+y+l,this.bottom-t[f.line].height)),g(s.x(S),C,o),S=Hr(h,S+p+d,v?S+x:this.right,e.rtl),_(s.x(S),C,o),v)f.x+=x+l;else if(typeof o.text!=`string`){let e=c.lineHeight;f.y+=Rc(o,e)+l}else f.y+=b}),xa(this.ctx,e.textDirection)}drawTitle(){let e=this.options,t=e.title,n=Z(t.font),r=X(t.padding);if(!t.display)return;let i=ya(e.rtl,this.left,this.width),a=this.ctx,o=t.position,s=n.size/2,c=r.top+s,l,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),l=this.top+c,u=J(e.align,u,this.right-d);else{let t=this.columnSizes.reduce((e,t)=>Math.max(e,t.height),0);l=c+J(e.align,this.top,this.bottom-t-e.labels.padding-this._computeTitleHeight())}let f=J(o,u,u+d);a.textAlign=i.textAlign(Vr(o)),a.textBaseline=`middle`,a.strokeStyle=t.color,a.fillStyle=t.color,a.font=n.string,wi(a,t.text,f,l,n)}_computeTitleHeight(){let e=this.options.title,t=Z(e.font),n=X(e.padding);return e.display?t.lineHeight+n.height:0}_getLegendItemAt(e,t){let n,r,i;if(kr(e,this.left,this.right)&&kr(t,this.top,this.bottom)){for(i=this.legendHitBoxes,n=0;ne.length>t.length?e:t)),t+n.size/2+r.measureText(i).width}function Lc(e,t,n){let r=e;return typeof t.text!=`string`&&(r=Rc(t,n)),r}function Rc(e,t){return t*(e.text?e.text.length:0)}function zc(e,t){return!!((e===`mousemove`||e===`mouseout`)&&(t.onHover||t.onLeave)||t.onClick&&(e===`click`||e===`mouseup`))}var Bc={id:`legend`,_element:Pc,start(e,t,n){let r=e.legend=new Pc({ctx:e.ctx,options:n,chart:e});Ho.configure(e,r,n),Ho.addBox(e,r)},stop(e){Ho.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){let r=e.legend;Ho.configure(e,r,n),r.options=n},afterUpdate(e){let t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:`top`,align:`center`,fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){let r=t.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),t.hidden=!0):(i.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:a,useBorderRadius:o,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(e=>{let c=e.controller.getStyle(n?0:void 0),l=X(c.borderWidth);return{text:t[e.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!e.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:o&&(s||c.borderRadius),datasetIndex:e.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:`center`,text:``}},descriptors:{_scriptable:e=>!e.startsWith(`on`),labels:{_scriptable:e=>![`generateLabels`,`filter`,`sort`].includes(e)}}},Vc=class extends fs{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){let n=this.options;if(this.left=0,this.top=0,!n.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=t;let r=B(n.text)?n.text.length:1;this._padding=X(n.padding);let i=r*Z(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){let e=this.options.position;return e===`top`||e===`bottom`}_drawArgs(e){let{top:t,left:n,bottom:r,right:i,options:a}=this,o=a.align,s=0,c,l,u;return this.isHorizontal()?(l=J(o,n,i),u=t+e,c=i-n):(a.position===`left`?(l=n+e,u=J(o,r,t),s=q*-.5):(l=i-e,u=J(o,t,r),s=q*.5),c=r-t),{titleX:l,titleY:u,maxWidth:c,rotation:s}}draw(){let e=this.ctx,t=this.options;if(!t.display)return;let n=Z(t.font),r=n.lineHeight/2+this._padding.top,{titleX:i,titleY:a,maxWidth:o,rotation:s}=this._drawArgs(r);wi(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:s,textAlign:Vr(t.align),textBaseline:`middle`,translation:[i,a]})}};function Hc(e,t){let n=new Vc({ctx:e.ctx,options:t,chart:e});Ho.configure(e,n,t),Ho.addBox(e,n),e.titleBlock=n}var Uc={id:`title`,_element:Vc,start(e,t,n){Hc(e,n)},stop(e){let t=e.titleBlock;Ho.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){let r=e.titleBlock;Ho.configure(e,r,n),r.options=n},defaults:{align:`center`,display:!1,font:{weight:`bold`},fullSize:!0,padding:10,position:`top`,text:``,weight:2e3},defaultRoutes:{color:`color`},descriptors:{_scriptable:!0,_indexable:!1}},Wc={average(e){if(!e.length)return!1;let t,n,r=new Set,i=0,a=0;for(t=0,n=e.length;te+t)/r.size,y:i/a}},nearest(e,t){if(!e.length)return!1;let n=t.x,r=t.y,i=1/0,a,o,s;for(a=0,o=e.length;a-1?e.split(` +`):e}function qc(e,t){let{element:n,datasetIndex:r,index:i}=t,a=e.getDatasetMeta(r).controller,{label:o,value:s}=a.getLabelAndValue(i);return{chart:e,label:o,parsed:a.getParsed(i),raw:e.data.datasets[r].data[i],formattedValue:s,dataset:a.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function Jc(e,t){let n=e.chart.ctx,{body:r,footer:i,title:a}=e,{boxWidth:o,boxHeight:s}=t,c=Z(t.bodyFont),l=Z(t.titleFont),u=Z(t.footerFont),d=a.length,f=i.length,p=r.length,m=X(t.padding),h=m.height,g=0,_=r.reduce((e,t)=>e+t.before.length+t.lines.length+t.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,d&&(h+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),_){let e=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;h+=p*e+(_-p)*c.lineHeight+(_-1)*t.bodySpacing}f&&(h+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let v=0,y=function(e){g=Math.max(g,n.measureText(e).width+v)};return n.save(),n.font=l.string,K(e.title,y),n.font=c.string,K(e.beforeBody.concat(e.afterBody),y),v=t.displayColors?o+2+t.boxPadding:0,K(r,e=>{K(e.before,y),K(e.lines,y),K(e.after,y)}),v=0,n.font=u.string,K(e.footer,y),n.restore(),g+=m.width,{width:g,height:h}}function Yc(e,t){let{y:n,height:r}=t;return ne.height-r/2?`bottom`:`center`}function Xc(e,t,n,r){let{x:i,width:a}=r,o=n.caretSize+n.caretPadding;if(e===`left`&&i+a+o>t.width||e===`right`&&i-a-o<0)return!0}function Zc(e,t,n,r){let{x:i,width:a}=n,{width:o,chartArea:{left:s,right:c}}=e,l=`center`;return r===`center`?l=i<=(s+c)/2?`left`:`right`:i<=a/2?l=`left`:i>=o-a/2&&(l=`right`),Xc(l,e,t,n)&&(l=`center`),l}function Qc(e,t,n){let r=n.yAlign||t.yAlign||Yc(e,n);return{xAlign:n.xAlign||t.xAlign||Zc(e,t,n,r),yAlign:r}}function $c(e,t){let{x:n,width:r}=e;return t===`right`?n-=r:t===`center`&&(n-=r/2),n}function el(e,t,n){let{y:r,height:i}=e;return t===`top`?r+=n:t===`bottom`?r-=i+n:r-=i/2,r}function tl(e,t,n,r){let{caretSize:i,caretPadding:a,cornerRadius:o}=e,{xAlign:s,yAlign:c}=n,l=i+a,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:p}=Mi(o),m=$c(t,s),h=el(t,c,l);return c===`center`?s===`left`?m+=l:s===`right`&&(m-=l):s===`left`?m-=Math.max(u,f)+i:s===`right`&&(m+=Math.max(d,p)+i),{x:Dr(m,0,r.width-t.width),y:Dr(h,0,r.height-t.height)}}function nl(e,t,n){let r=X(n.padding);return t===`center`?e.x+e.width/2:t===`right`?e.x+e.width-r.right:e.x+r.left}function rl(e){return Gc([],Kc(e))}function il(e,t,n){return Fi(e,{tooltip:t,tooltipItems:n,type:`tooltip`})}function al(e,t){let n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}var ol={beforeTitle:Bn,title(e){if(e.length>0){let t=e[0],n=t.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode===`dataset`)return t.dataset.label||``;if(t.label)return t.label;if(r>0&&t.dataIndex{let t={before:[],lines:[],after:[]},i=al(n,e);Gc(t.before,Kc(Q(i,`beforeLabel`,this,e))),Gc(t.lines,Q(i,`label`,this,e)),Gc(t.after,Kc(Q(i,`afterLabel`,this,e))),r.push(t)}),r}getAfterBody(e,t){return rl(Q(t.callbacks,`afterBody`,this,e))}getFooter(e,t){let{callbacks:n}=t,r=Q(n,`beforeFooter`,this,e),i=Q(n,`footer`,this,e),a=Q(n,`afterFooter`,this,e),o=[];return o=Gc(o,Kc(r)),o=Gc(o,Kc(i)),o=Gc(o,Kc(a)),o}_createItems(e){let t=this._active,n=this.chart.data,r=[],i=[],a=[],o=[],s,c;for(s=0,c=t.length;se.filter(t,r,i,n))),e.itemSort&&(o=o.sort((t,r)=>e.itemSort(t,r,n))),K(o,t=>{let n=al(e.callbacks,t);r.push(Q(n,`labelColor`,this,t)),i.push(Q(n,`labelPointStyle`,this,t)),a.push(Q(n,`labelTextColor`,this,t))}),this.labelColors=r,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=o,o}update(e,t){let n=this.options.setContext(this.getContext()),r=this._active,i,a=[];if(!r.length)this.opacity!==0&&(i={opacity:0});else{let e=Wc[n.position].call(this,r,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let t=this._size=Jc(this,n),o=Object.assign({},e,t),s=Qc(this.chart,n,o),c=tl(n,o,s,this.chart);this.xAlign=s.xAlign,this.yAlign=s.yAlign,i={opacity:1,x:c.x,y:c.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,r){let i=this.getCaretPosition(e,n,r);t.lineTo(i.x1,i.y1),t.lineTo(i.x2,i.y2),t.lineTo(i.x3,i.y3)}getCaretPosition(e,t,n){let{xAlign:r,yAlign:i}=this,{caretSize:a,cornerRadius:o}=n,{topLeft:s,topRight:c,bottomLeft:l,bottomRight:u}=Mi(o),{x:d,y:f}=e,{width:p,height:m}=t,h,g,_,v,y,b;return i===`center`?(y=f+m/2,r===`left`?(h=d,g=h-a,v=y+a,b=y-a):(h=d+p,g=h+a,v=y-a,b=y+a),_=h):(g=r===`left`?d+Math.max(s,l)+a:r===`right`?d+p-Math.max(c,u)-a:this.caretX,i===`top`?(v=f,y=v-a,h=g-a,_=g+a):(v=f+m,y=v+a,h=g+a,_=g-a),b=v),{x1:h,x2:g,x3:_,y1:v,y2:y,y3:b}}drawTitle(e,t,n){let r=this.title,i=r.length,a,o,s;if(i){let c=ya(n.rtl,this.x,this.width);for(e.x=nl(this,n.titleAlign,n),t.textAlign=c.textAlign(n.titleAlign),t.textBaseline=`middle`,a=Z(n.titleFont),o=n.titleSpacing,t.fillStyle=n.titleColor,t.font=a.string,s=0;se!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,Ti(e,{x:t,y:p,w:c,h:s,radius:o}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),Ti(e,{x:n,y:p+1,w:c-2,h:s-2,radius:o}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(t,p,c,s),e.strokeRect(t,p,c,s),e.fillStyle=a.backgroundColor,e.fillRect(n,p+1,c-2,s-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){let{body:r}=this,{bodySpacing:i,bodyAlign:a,displayColors:o,boxHeight:s,boxWidth:c,boxPadding:l}=n,u=Z(n.bodyFont),d=u.lineHeight,f=0,p=ya(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+f),e.y+d/2),e.y+=d+i},h=p.textAlign(a),g,_,v,y,b,x,S;for(t.textAlign=a,t.textBaseline=`middle`,t.font=u.string,e.x=nl(this,h,n),t.fillStyle=n.bodyColor,K(this.beforeBody,m),f=o&&h!==`right`?a===`center`?c/2+l:c+2+l:0,y=0,x=r.length;y0&&t.stroke()}_updateAnimationTarget(e){let t=this.chart,n=this.$animations,r=n&&n.x,i=n&&n.y;if(r||i){let n=Wc[e.position].call(this,this._active,this._eventPosition);if(!n)return;let a=this._size=Jc(this,e),o=Object.assign({},n,this._size),s=Qc(t,e,o),c=tl(e,o,s,t);(r._to!==c.x||i._to!==c.y)&&(this.xAlign=s.xAlign,this.yAlign=s.yAlign,this.width=a.width,this.height=a.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){let t=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(t);let r={width:this.width,height:this.height},i={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=X(t.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&o&&(e.save(),e.globalAlpha=n,this.drawBackground(i,e,r,t),ba(e,t.textDirection),i.y+=a.top,this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),xa(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){let n=this._active,r=e.map(({datasetIndex:e,index:t})=>{let n=this.chart.getDatasetMeta(e);if(!n)throw Error(`Cannot find a dataset at index `+e);return{datasetIndex:e,element:n.data[t],index:t}}),i=!Un(n,r),a=this._positionChanged(r,t);(i||a)&&(this._active=r,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,i=this._active||[],a=this._getActiveElements(e,i,t,n),o=this._positionChanged(a,e),s=t||!Un(a,i)||o;return s&&(this._active=a,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),s}_getActiveElements(e,t,n,r){let i=this.options;if(e.type===`mouseout`)return[];if(!r)return t.filter(e=>this.chart.data.datasets[e.datasetIndex]&&this.chart.getDatasetMeta(e.datasetIndex).controller.getParsed(e.index)!==void 0);let a=this.chart.getElementsAtEventForMode(e,i.mode,i,n);return i.reverse&&a.reverse(),a}_positionChanged(e,t){let{caretX:n,caretY:r,options:i}=this,a=Wc[i.position].call(this,e,t);return a!==!1&&(n!==a.x||r!==a.y)}},cl={id:`tooltip`,_element:sl,positioners:Wc,afterInit(e,t,n){n&&(e.tooltip=new sl({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){let t=e.tooltip;if(t&&t._willRender()){let n={tooltip:t};if(e.notifyPlugins(`beforeTooltipDraw`,{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins(`afterTooltipDraw`,n)}},afterEvent(e,t){if(e.tooltip){let n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:`average`,backgroundColor:`rgba(0,0,0,0.8)`,titleColor:`#fff`,titleFont:{weight:`bold`},titleSpacing:2,titleMarginBottom:6,titleAlign:`left`,bodyColor:`#fff`,bodySpacing:2,bodyFont:{},bodyAlign:`left`,footerColor:`#fff`,footerSpacing:2,footerMarginTop:6,footerFont:{weight:`bold`},footerAlign:`left`,padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:`#fff`,displayColors:!0,boxPadding:0,borderColor:`rgba(0,0,0,0)`,borderWidth:0,animation:{duration:400,easing:`easeOutQuart`},animations:{numbers:{type:`number`,properties:[`x`,`y`,`width`,`height`,`caretX`,`caretY`]},opacity:{easing:`linear`,duration:200}},callbacks:ol},defaultRoutes:{bodyFont:`font`,footerFont:`font`,titleFont:`font`},descriptors:{_scriptable:e=>e!==`filter`&&e!==`itemSort`&&e!==`external`,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:`animation`}},additionalOptionScopes:[`interaction`]},ll=(e,t,n,r)=>(typeof t==`string`?(n=e.push(t)-1,r.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function ul(e,t,n,r){let i=e.indexOf(t);return i===-1?ll(e,t,n,r):i===e.lastIndexOf(t)?i:n}var dl=(e,t)=>e===null?null:Dr(Math.round(e),0,t);function fl(e){let t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}};function ml(e,t){let n=[],{bounds:r,step:i,min:a,max:o,precision:s,count:c,maxTicks:l,maxDigits:u,includeBounds:d}=e,f=i||1,p=l-1,{min:m,max:h}=t,g=!z(a),_=!z(o),v=!z(c),y=(h-m)/(u+1),b=mr((h-m)/p/f)*f,x,S,C,w;if(b<1e-14&&!g&&!_)return[{value:m},{value:h}];w=Math.ceil(h/b)-Math.floor(m/b),w>p&&(b=mr(w*b/p/f)*f),z(s)||(x=10**s,b=Math.ceil(b*x)/x),r===`ticks`?(S=Math.floor(m/b)*b,C=Math.ceil(h/b)*b):(S=m,C=h),g&&_&&i&&vr((o-a)/i,b/1e3)?(w=Math.round(Math.min((o-a)/b,l)),b=(o-a)/w,S=a,C=o):v?(S=g?a:S,C=_?o:C,w=c-1,b=(C-S)/w):(w=(C-S)/b,w=pr(w,Math.round(w),b/1e3)?Math.round(w):Math.ceil(w));let T=Math.max(Sr(b),Sr(S));x=10**(z(s)?T:s),S=Math.round(S*x)/x,C=Math.round(C*x)/x;let E=0;for(g&&(d&&S!==a?(n.push({value:a}),So)break;n.push({value:e})}return _&&d&&C!==o?n.length&&pr(n[n.length-1].value,o,hl(o,y,e))?n[n.length-1].value=o:n.push({value:o}):(!_||C===o)&&n.push({value:C}),n}function hl(e,t,{horizontal:n,minRotation:r}){let i=br(r),a=(n?Math.sin(i):Math.cos(i))||.001,o=.75*t*(``+e).length;return Math.min(t/a,o)}var gl=class extends Ms{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,t){return z(e)||(typeof e==`number`||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){let{beginAtZero:e}=this.options,{minDefined:t,maxDefined:n}=this.getUserBounds(),{min:r,max:i}=this,a=e=>r=t?r:e,o=e=>i=n?i:e;if(e){let e=fr(r),t=fr(i);e<0&&t<0?o(0):e>0&&t>0&&a(0)}if(r===i){let t=i===0?1:Math.abs(i*.05);o(i+t),e||a(r-t)}this.min=r,this.max=i}getTickLimit(){let{maxTicksLimit:e,stepSize:t}=this.options.ticks,n;return t?(n=Math.ceil(this.max/t)-Math.floor(this.min/t)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${t} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e||=11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return 1/0}buildTicks(){let e=this.options,t=e.ticks,n=this.getTickLimit();n=Math.max(2,n);let r=ml({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},this._range||this);return e.bounds===`ticks`&&yr(r,this,`value`),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let e=this.ticks,t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){let r=(n-t)/Math.max(e.length-1,1)/2;t-=r,n+=r}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return ni(e,this.chart.options.locale,this.options.ticks.format)}},_l=class extends gl{static id=`linear`;static defaults={ticks:{callback:ai.formatters.numeric}};determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=H(e)?e:0,this.max=H(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let e=this.isHorizontal(),t=e?this.width:this.height,n=br(this.options.ticks.minRotation),r=(e?Math.sin(n):Math.cos(n))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,i.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}},vl=e=>Math.floor(dr(e)),yl=(e,t)=>10**(vl(e)+t);function bl(e){return e/10**vl(e)==1}function xl(e,t,n){let r=10**n,i=Math.floor(e/r);return Math.ceil(t/r)-i}function Sl(e,t){let n=vl(t-e);for(;xl(e,t,n)>10;)n++;for(;xl(e,t,n)<10;)n--;return Math.min(n,vl(e))}function Cl(e,{min:t,max:n}){t=U(e.min,t);let r=[],i=vl(t),a=Sl(t,n),o=a<0?10**Math.abs(a):1,s=10**a,c=i>a?10**i:0,l=Math.round((t-c)*o)/o,u=Math.floor((t-c)/s/10)*s*10,d=Math.floor((l-u)/10**a),f=U(e.min,Math.round((c+u+d*10**a)*o)/o);for(;f=10?d=d<15?15:20:d++,d>=20&&(a++,d=2,o=a>=0?1:o),f=Math.round((c+u+d*10**a)*o)/o;let p=U(e.max,f);return r.push({value:p,major:bl(p),significand:d}),r}(class extends Ms{static id=`logarithmic`;static defaults={ticks:{callback:ai.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){let n=gl.prototype.parse.apply(this,[e,t]);if(n===0){this._zero=!0;return}return H(n)&&n>0?n:null}determineDataLimits(){let{min:e,max:t}=this.getMinMax(!0);this.min=H(e)?Math.max(0,e):null,this.max=H(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!H(this._userMin)&&(this.min=e===yl(this.min,0)?yl(this.min,-1):yl(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:e,maxDefined:t}=this.getUserBounds(),n=this.min,r=this.max,i=t=>n=e?n:t,a=e=>r=t?r:e;n===r&&(n<=0?(i(1),a(10)):(i(yl(n,-1)),a(yl(r,1)))),n<=0&&i(yl(r,-1)),r<=0&&a(yl(n,1)),this.min=n,this.max=r}buildTicks(){let e=this.options,t=Cl({min:this._userMin,max:this._userMax},this);return e.bounds===`ticks`&&yr(t,this,`value`),e.reverse?(t.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),t}getLabelForValue(e){return e===void 0?`0`:ni(e,this.chart.options.locale,this.options.ticks.format)}configure(){let e=this.min;super.configure(),this._startValue=dr(e),this._valueRange=dr(this.max)-dr(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(dr(e)-this._startValue)/this._valueRange)}getValueForPixel(e){let t=this.getDecimalForPixel(e);return 10**(this._startValue+t*this._valueRange)}});function wl(e){let t=e.ticks;if(t.display&&e.display){let e=X(t.backdropPadding);return W(t.font&&t.font.size,Y.font.size)+e.height}return 0}function Tl(e,t,n){return n=B(n)?n:[n],{w:pi(e,t.string,n),h:n.length*t.lineHeight}}function El(e,t,n,r,i){return e===r||e===i?{start:t-n/2,end:t+n/2}:ei?{start:t-n,end:t}:{start:t,end:t+n}}function Dl(e){let t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),r=[],i=[],a=e._pointLabels.length,o=e.options.pointLabels,s=o.centerPointLabels?q/a:0;for(let c=0;ct.r&&(s=(r.end-t.r)/a,e.r=Math.max(e.r,t.r+s)),i.startt.b&&(c=(i.end-t.b)/o,e.b=Math.max(e.b,t.b+c))}function kl(e,t,n){let r=e.drawingArea,{extra:i,additionalAngle:a,padding:o,size:s}=n,c=e.getPointPosition(t,r+i+o,a),l=Math.round(xr(Tr(c.angle+cr))),u=Pl(c.y,s.h,l),d=Ml(l),f=Nl(c.x,s.w,d);return{visible:!0,x:c.x,y:u,textAlign:d,left:f,top:u,right:f+s.w,bottom:u+s.h}}function Al(e,t){if(!t)return!0;let{left:n,top:r,right:i,bottom:a}=e;return!(vi({x:n,y:r},t)||vi({x:n,y:a},t)||vi({x:i,y:r},t)||vi({x:i,y:a},t))}function jl(e,t,n){let r=[],i=e._pointLabels.length,a=e.options,{centerPointLabels:o,display:s}=a.pointLabels,c={extra:wl(a)/2,additionalAngle:o?q/i:0},l;for(let a=0;a270||n<90)&&(e-=t),e}function Fl(e,t,n){let{left:r,top:i,right:a,bottom:o}=n,{backdropColor:s}=t;if(!z(s)){let n=Mi(t.borderRadius),c=X(t.backdropPadding);e.fillStyle=s;let l=r-c.left,u=i-c.top,d=a-r+c.width,f=o-i+c.height;Object.values(n).some(e=>e!==0)?(e.beginPath(),Ti(e,{x:l,y:u,w:d,h:f,radius:n}),e.fill()):e.fillRect(l,u,d,f)}}function Il(e,t){let{ctx:n,options:{pointLabels:r}}=e;for(let i=t-1;i>=0;i--){let t=e._pointLabelItems[i];if(!t.visible)continue;let a=r.setContext(e.getPointLabelContext(i));Fl(n,a,t);let o=Z(a.font),{x:s,y:c,textAlign:l}=t;wi(n,e._pointLabels[i],s,c+o.lineHeight/2,o,{color:a.color,textAlign:l,textBaseline:`middle`})}}function Ll(e,t,n,r){let{ctx:i}=e;if(n)i.arc(e.xCenter,e.yCenter,t,0,ar);else{let n=e.getPointPosition(0,t);i.moveTo(n.x,n.y);for(let a=1;a{let n=G(this.options.pointLabels.callback,[e,t],this);return n||n===0?n:``}).filter((e,t)=>this.chart.getDataVisibility(t))}fit(){let e=this.options;e.display&&e.pointLabels.display?Dl(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,r){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,r))}getIndexAngle(e){let t=ar/(this._pointLabels.length||1),n=this.options.startAngle||0;return Tr(e*t+br(n))}getDistanceFromCenterForValue(e){if(z(e))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(z(e))return NaN;let t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){let t=this._pointLabels||[];if(e>=0&&e{if(t!==0||t===0&&this.min<0){s=this.getDistanceFromCenterForValue(e.value);let n=this.getContext(t),o=r.setContext(n),c=i.setContext(n);Rl(this,o,s,a,c)}}),n.display){for(e.save(),o=a-1;o>=0;o--){let r=n.setContext(this.getPointLabelContext(o)),{color:i,lineWidth:a}=r;!a||!i||(e.lineWidth=a,e.strokeStyle=i,e.setLineDash(r.borderDash),e.lineDashOffset=r.borderDashOffset,s=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(o,s),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){let e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;let r=this.getIndexAngle(0),i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign=`center`,e.textBaseline=`middle`,this.ticks.forEach((r,o)=>{if(o===0&&this.min>=0&&!t.reverse)return;let s=n.setContext(this.getContext(o)),c=Z(s.font);if(i=this.getDistanceFromCenterForValue(this.ticks[o].value),s.showLabelBackdrop){e.font=c.string,a=e.measureText(r.label).width,e.fillStyle=s.backdropColor;let t=X(s.backdropPadding);e.fillRect(-a/2-t.left,-i-c.size/2-t.top,a+t.width,c.size+t.height)}wi(e,r.label,0,-i,c,{color:s.color,strokeColor:s.textStrokeColor,strokeWidth:s.textStrokeWidth})}),e.restore()}drawTitle(){}});var Bl={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},$=Object.keys(Bl);function Vl(e,t){return e-t}function Hl(e,t){if(z(t))return null;let n=e._adapter,{parser:r,round:i,isoWeekday:a}=e._parseOpts,o=t;return typeof r==`function`&&(o=r(o)),H(o)||(o=typeof r==`string`?n.parse(o,r):n.parse(o)),o===null?null:(i&&(o=i===`week`&&(_r(a)||a===!0)?n.startOf(o,`isoWeek`,a):n.startOf(o,i)),+o)}function Ul(e,t,n,r){let i=$.length;for(let a=$.indexOf(e);a=$.indexOf(n);a--){let n=$[a];if(Bl[n].common&&e._adapter.diff(i,r,n)>=t-1)return n}return $[n?$.indexOf(n):0]}function Gl(e){for(let t=$.indexOf(e)+1,n=$.length;t=t?n[r]:n[i];e[a]=!0}}function ql(e,t,n,r){let i=e._adapter,a=+i.startOf(t[0].value,r),o=t[t.length-1].value,s,c;for(s=a;s<=o;s=+i.add(s,1,r))c=n[s],c>=0&&(t[c].major=!0);return t}function Jl(e,t,n){let r=[],i={},a=t.length,o,s;for(o=0;o+e.value))}initOffsets(e=[]){let t=0,n=0,r,i;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),t=e.length===1?1-r:(this.getDecimalForValue(e[1])-r)/2,i=this.getDecimalForValue(e[e.length-1]),n=e.length===1?i:(i-this.getDecimalForValue(e[e.length-2]))/2);let a=e.length<3?.5:.25;t=Dr(t,0,a),n=Dr(n,0,a),this._offsets={start:t,end:n,factor:1/(t+1+n)}}_generate(){let e=this._adapter,t=this.min,n=this.max,r=this.options,i=r.time,a=i.unit||Ul(i.minUnit,t,n,this._getLabelCapacity(t)),o=W(r.ticks.stepSize,1),s=a===`week`?i.isoWeekday:!1,c=_r(s)||s===!0,l={},u=t,d,f;if(c&&(u=+e.startOf(u,`isoWeek`,s)),u=+e.startOf(u,c?`day`:a),e.diff(n,t,a)>1e5*o)throw Error(t+` and `+n+` are too far apart with stepSize of `+o+` `+a);let p=r.ticks.source===`data`&&this.getDataTimestamps();for(d=u,f=0;d+e)}getLabelForValue(e){let t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}format(e,t){let n=this.options.time.displayFormats,r=this._unit,i=t||n[r];return this._adapter.format(e,i)}_tickFormatFunction(e,t,n,r){let i=this.options,a=i.ticks.callback;if(a)return G(a,[e,t,n],this);let o=i.time.displayFormats,s=this._unit,c=this._majorUnit,l=s&&o[s],u=c&&o[c],d=n[t],f=c&&u&&d&&d.major;return this._adapter.format(e,r||(f?u:l))}generateTickLabels(e){let t,n,r;for(t=0,n=e.length;t0?o:1}getDataTimestamps(){let e=this._cache.data||[],t,n;if(e.length)return e;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(t=0,n=r.length;t=e[r].pos&&t<=e[i].pos&&({lo:r,hi:i}=jr(e,`pos`,t)),{pos:a,time:s}=e[r],{pos:o,time:c}=e[i]):(t>=e[r].time&&t<=e[i].time&&({lo:r,hi:i}=jr(e,`time`,t)),{time:a,pos:s}=e[r],{time:o,pos:c}=e[i]);let l=o-a;return l?s+(c-s)*(t-a)/l:s}(class extends Yl{static id=`timeseries`;static defaults=Yl.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=Xl(t,this.min),this._tableRange=Xl(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){let{min:t,max:n}=this,r=[],i=[],a,o,s,c,l;for(a=0,o=e.length;a=t&&c<=n&&r.push(c);if(r.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(a=0,o=r.length;ae-t)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;let t=this.getDataTimestamps(),n=this.getLabelTimestamps();return e=t.length&&n.length?this.normalize(t.concat(n)):t.length?t:n,e=this._cache.all=e,e}getDecimalForValue(e){return(Xl(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){let t=this._offsets,n=this.getDecimalForPixel(e)/t.factor-t.end;return Xl(this._table,n*this._tableRange+this._minPos,!0)}});var Zl={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:`label`},updateMode:{type:String,default:void 0}},Ql={ariaLabel:{type:String},ariaDescribedby:{type:String}},$l={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...Zl,...Ql},eu=(e,t)=>Object.assign(e,t);function tu(e){return ee(e)?E(e):e}function nu(e){return ee(arguments.length>1&&arguments[1]!==void 0?arguments[1]:e)?new Proxy(e,{}):e}function ru(e,t){let n=e.options;n&&t&&Object.assign(n,t)}function iu(e,t){e.labels=t}function au(e,t,n){let r=[];e.datasets=t.map(t=>{let i=e.datasets.find(e=>e[n]===t[n]);return!i||!t.data||r.includes(i)?{...t}:(r.push(i),Object.assign(i,t),i)})}function ou(e,t){let n={labels:[],datasets:[]};return iu(n,e.labels),au(n,e.datasets,t),n}var su=N({props:$l,setup(e,t){let{expose:n,slots:r}=t,i=A(null),o=k(null);n({chart:o});let s=()=>{if(!i.value)return;let{type:t,data:n,options:r,plugins:a,datasetIdKey:s}=e,c=nu(ou(n,s),n);o.value=new bc(i.value,{type:t,data:c,options:{...r},plugins:a})},d=()=>{let t=E(o.value);t&&(e.destroyDelay>0?setTimeout(()=>{t.destroy(),o.value=null},e.destroyDelay):(t.destroy(),o.value=null))},f=t=>{t.update(e.updateMode)};return c(s),l(d),a([()=>e.options,()=>e.data],(t,n)=>{let[r,i]=t,[a,s]=n,c=E(o.value);if(!c)return;let l=!1;if(r){let e=tu(r),t=tu(a);e&&e!==t&&(ru(c,e),l=!0)}if(i){let t=tu(i.labels),n=tu(s.labels),r=tu(i.datasets),a=tu(s.datasets);t!==n&&(iu(c.config.data,t),l=!0),r&&r!==a&&(au(c.config.data,r,e.datasetIdKey),l=!0)}l&&u(()=>{f(c)})},{deep:!0}),()=>p(`canvas`,{role:`img`,"aria-label":e.ariaLabel,"aria-describedby":e.ariaDescribedby,ref:i},[p(`p`,{},[r.default?r.default():``])])}});function cu(e,t){return bc.register(t),N({props:Zl,setup(t,n){let{expose:r}=n,i=k(null),a=e=>{i.value=e?.chart};return r({chart:i}),()=>p(su,eu({ref:a},{type:e,...t}))}})}var lu=cu(`bar`,mo),uu=`/api/v1/repo`;async function du(){return await ne(`${uu}/get-repos`)}async function fu(e){return ne(`${uu}/get-years?repoID=${e}`)}async function pu(e,t){return ne(`${uu}/get-quarters?repoID=${e}&year=${t}`)}async function mu(e,t,n,r=1,i=10){return ne(`${uu}/get-issues?repoID=${e}&year=${t}&quarter=${n}&page_number=${r}&elements_per_page=${i}`)}async function hu(){let e=await mu(7,2026,1);console.log(e,`leraaaaaa`)}hu();var gu={class:`container`},_u={class:`p-6 bg-white dark:bg-(--black) min-h-screen font-sans`},vu={class:`text-2xl font-bold mb-6 text-black`},yu={key:0,class:`mb-4 p-3 bg-red-100 text-red-700 rounded`},bu={key:1,class:`mb-4 p-3 bg-blue-100 text-blue-700 rounded`},xu={key:2,class:`mb-4 p-3 bg-yellow-100 text-yellow-700 rounded`},Su={key:3,class:`flex flex-wrap gap-4 mb-6`},Cu={class:`flex flex-col min-w-[192px]`},wu={class:`mb-1 text-sm font-medium text-black dark:text-white`},Tu={class:`flex flex-col min-w-[160px]`},Eu={class:`mb-1 text-sm font-medium text-black dark:text-white`},Du={class:`flex flex-col min-w-[192px]`},Ou={class:`mb-1 text-sm font-medium text-black dark:text-white`},ku={key:4,class:`mb-6 p-4 border border-(--border-light) dark:border-(--border-dark) rounded`},Au={class:`text-xl font-medium mb-4 text-black dark:text-white`},ju={class:`h-80`},Mu={key:5,class:`p-4 border border-(--border-light) dark:border-(--border-dark) rounded`},Nu={class:`text-xl font-medium mb-4 text-black dark:text-white`},Pu={class:`w-full border border-(--border-light) dark:border-(--border-dark)`},Fu={class:`bg-gray-100 dark:bg-(--black)`},Iu={class:`p-3 text-left text-xs font-bold text-gray-600 dark:text-white uppercase border border-(--border-light) dark:border-(--border-dark)`},Lu={class:`p-3 text-left text-xs font-bold text-gray-600 dark:text-white uppercase border border-(--border-light) dark:border-(--border-dark)`},Ru={class:`p-3 text-left text-xs font-bold text-gray-600 dark:text-white uppercase border border-(--border-light) dark:border-(--border-dark)`},zu={class:`p-3 text-left text-xs font-bold text-gray-600 dark:text-white uppercase border border-(--border-light) dark:border-(--border-dark)`},Bu={class:`p-3 text-black dark:text-white`},Vu={class:`p-3 text-black dark:text-white`},Hu={class:`p-3 text-black dark:text-white`},Uu={class:`p-3 text-black dark:text-white`},Wu={class:`p-3 text-black dark:text-white`},Gu={class:`pt-4 flex justify-center items-center dark:text-white!`},Ku={key:6,class:`mt-4 p-3 dark:bg-(--black) bg-white border border-(--border-light) dark:border-(--border-dark) dark:text-white text-black rounded`},qu={key:7,class:`p-3 dark:bg-(--black) bg-white border border-(--border-light) dark:border-(--border-dark) rounded`},Ju={key:0},Yu={key:1},Xu={key:2},Zu={key:3},Qu=N({__name:`RepoChartView`,setup(e){bc.register(Uc,cl,Bc,jc,pl,_l);let t=be(),n=A([]),i=A([]),o=A([]),l=A([]),u=A(null),d=A(null),f=A(null),p=A(1),m=A(0),h=A(!1),_=A(null);async function b(e,t,n){h.value=!0,_.value=null;try{let n=await e();t.value=n.items||n||[]}catch(e){_.value=e?.message||n}finally{h.value=!1}}c(()=>b(()=>du(),n,re.t(`repo_chart.failed_to_load_repositories`))),a(u,async e=>{d.value=null,f.value=null,o.value=[],l.value=[],e&&await b(()=>fu(e),i,re.t(`repo_chart.failed_to_load_years`))}),a(d,async e=>{f.value=null,l.value=[],e&&u.value&&await b(()=>pu(u.value,e),o,re.t(`repo_chart.failed_to_load_quarters`))}),a(f,async e=>{e&&u.value&&d.value?await x(u.value,d.value,e):l.value=[]}),a(p,()=>{u.value&&d.value&&f.value&&x(u.value,d.value,f.value)});async function x(e,t,n){let r=n.split(`_Q`)[1];if(r){h.value=!0,_.value=null;try{let n=await mu(e,t,parseInt(r),p.value,50);l.value=n.items||[],m.value=n.items_count||0}catch(e){_.value=e?.message||re.t(`repo_chart.failed_to_load_issues`)}finally{h.value=!1}}}let C=v(()=>({labels:o.value.map(e=>e.quarter),datasets:[{label:re.t(`repo_chart.hours_worked`),backgroundColor:`#3b82f6`,data:o.value.map(e=>e.time)}]})),w={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:`top`},title:{display:!0,text:re.t(`repo_chart.work_by_quarter`)}},scales:{y:{beginAtZero:!0,title:{display:!0,text:re.t(`repo_chart.hours`)}}}},E=v(()=>o.value.length>0),O=v(()=>l.value.length>0),k=v(()=>n.value.map(e=>({value:e,label:`Repo ${e}`}))),ee=v(()=>[{value:null,label:re.t(`repo_chart.select_a_year`)},...i.value.map(e=>({value:e,label:String(e)}))]),te=v(()=>[{value:null,label:re.t(`repo_chart.all_quarters`)},...o.value.map(e=>({value:e.quarter,label:`${e.quarter} (${e.time.toFixed(1)}h)`}))]);return(e,n)=>{let a=qt,c=Gt;return r(),S(`div`,gu,[y(`div`,_u,[y(`h1`,vu,j(e.$t(`repo_chart.repository_work_chart`)),1),_.value?(r(),S(`div`,yu,j(_.value),1)):T(``,!0),h.value?(r(),S(`div`,bu,j(e.$t(`repo_chart.loading`))+`... `,1)):T(``,!0),P(t).isAuthenticated?T(``,!0):(r(),S(`div`,xu,j(e.$t(`repo_chart.login_to_view_charts`)),1)),P(t).isAuthenticated?(r(),S(`div`,Su,[y(`div`,Cu,[y(`label`,wu,j(e.$t(`repo_chart.repository`)),1),g(a,{modelValue:u.value,"onUpdate:modelValue":n[0]||=e=>u.value=e,items:k.value,disabled:h.value,placeholder:e.$t(`repo_chart.select_a_repository`),class:`dark:text-white text-black`},null,8,[`modelValue`,`items`,`disabled`,`placeholder`])]),y(`div`,Tu,[y(`label`,Eu,j(e.$t(`repo_chart.year`)),1),g(a,{modelValue:d.value,"onUpdate:modelValue":n[1]||=e=>d.value=e,items:ee.value,disabled:h.value||!u.value||i.value.length===0,placeholder:e.$t(`repo_chart.select_a_year`),class:`dark:text-white text-black`},null,8,[`modelValue`,`items`,`disabled`,`placeholder`])]),y(`div`,Du,[y(`label`,Ou,j(e.$t(`repo_chart.quarter`)),1),g(a,{modelValue:f.value,"onUpdate:modelValue":n[2]||=e=>f.value=e,items:te.value,disabled:h.value||!d.value||o.value.length===0,placeholder:e.$t(`repo_chart.all_quarters`),class:`dark:text-white text-black`},null,8,[`modelValue`,`items`,`disabled`,`placeholder`])])])):T(``,!0),E.value&&P(t).isAuthenticated?(r(),S(`div`,ku,[y(`h2`,Au,j(e.$t(`repo_chart.work_done_by_quarter`)),1),y(`div`,ju,[g(P(lu),{data:C.value,options:w},null,8,[`data`])])])):T(``,!0),O.value&&P(t).isAuthenticated?(r(),S(`div`,Mu,[y(`h2`,Nu,j(e.$t(`repo_chart.issues_for`))+` `+j(f.value),1),y(`table`,Pu,[y(`thead`,null,[y(`tr`,Fu,[n[4]||=y(`th`,{class:`p-3 text-left text-xs font-bold text-gray-600 dark:text-white uppercase border border-(--border-light) dark:border-(--border-dark)`},` ID`,-1),y(`th`,Iu,j(e.$t(`repo_chart.issue_name`)),1),y(`th`,Lu,j(e.$t(`repo_chart.user_initials`)),1),y(`th`,Ru,j(e.$t(`repo_chart.created_on`)),1),y(`th`,zu,j(e.$t(`repo_chart.hours_spent`)),1)])]),y(`tbody`,null,[(r(!0),S(D,null,s(l.value,e=>(r(),S(`tr`,{key:e.IssueID,class:`border-b border-(--border-light) dark:border-(--border-dark)`},[y(`td`,Bu,j(e.IssueID),1),y(`td`,Vu,j(e.IssueName),1),y(`td`,Hu,j(e.Initials),1),y(`td`,Uu,j(e.CreatedDate),1),y(`td`,Wu,j(e.TotalHoursSpent)+`h`,1)]))),128))])]),y(`div`,Gu,[g(c,{page:p.value,"onUpdate:page":n[3]||=e=>p.value=e,total:m.value},null,8,[`page`,`total`])])])):f.value&&!h.value&&P(t).isAuthenticated&&!O.value?(r(),S(`div`,Ku,j(e.$t(`validate_error.no_issues_for_quarter`))+`. `,1)):!h.value&&P(t).isAuthenticated?(r(),S(`div`,qu,[u.value?d.value?f.value?o.value.length===0?(r(),S(`span`,Zu,j(e.$t(`repo_chart.no_work_data_available`)),1)):T(``,!0):(r(),S(`span`,Xu,j(e.$t(`repo_chart.select_quarter_to_view_issues`)),1)):(r(),S(`span`,Yu,j(e.$t(`repo_chart.select_year_to_view_data`)),1)):(r(),S(`span`,Ju,j(e.$t(`repo_chart.select_repo_to_view_data`)),1))])):T(``,!0)])])}}});export{Qu as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/ResetPasswordForm-Bm9Fa-4w.js b/assets/public/dist/assets/ResetPasswordForm-Bm9Fa-4w.js new file mode 100644 index 0000000..f0c9598 --- /dev/null +++ b/assets/public/dist/assets/ResetPasswordForm-Bm9Fa-4w.js @@ -0,0 +1 @@ +import{F as e,M as t,Q as n,_ as r,f as i,g as a,h as o,m as s,p as c,ut as l,wt as u,y as d,yt as f}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import"./useFetchJson-4WJQFaEO.js";import{n as p}from"./useForwardExpose-BgPOLLFN.js";import{Q as m,X as h,Y as g,t as _}from"./Icon-Chkiq2IE.js";import{t as v}from"./auth-hZSBdvj-.js";import{t as y}from"./Button-jwL-tYHc.js";import{n as b,r as x,t as S}from"./useValidation-wBItIFut.js";import{n as C}from"./settings-BcOmX106.js";import{t as w}from"./Alert-BNRo6CMI.js";var T={class:`h-[100vh] flex items-center justify-center px-4 sm:px-6 lg:px-8`},E={class:`w-full max-w-md flex flex-col gap-4`},D={key:0,class:`text-center flex flex-col gap-4`},O={class:`text-xl font-semibold dark:text-white text-black`},k={class:`text-sm text-gray-600 dark:text-gray-400`},A={class:`text-center border-t dark:border-(--border-dark) border-(--border-light) pt-4`},j=d({__name:`ResetPasswordForm`,setup(d){let{t:j}=m(),M=h(),N=g(),P=v(),F=S(),I=l(``),L=l(``),R=l(!1),z=l(!1),B=l(``),V=l(!1);t(()=>{B.value=N.query.token||``,B.value||M.push({name:`password-recovery`})});async function H(){await P.resetPassword(B.value,I.value)&&(V.value=!0)}function U(){M.push({name:`login`})}function W(){return F.reset(),F.validatePasswords(I,`new_password`,L,`confirm_new_password`,p.t(`validate_error.confirm_password_required`)),F.errors}return(t,l)=>{let d=_,p=y,m=w,h=C,g=b,v=x;return e(),o(`div`,T,[i(`div`,E,[V.value?(e(),o(`div`,D,[r(d,{name:`i-heroicons-check-circle`,class:`w-12 h-12 mx-auto text-green-500`}),i(`h2`,O,u(t.$t(`general.password_updated`)),1),i(`p`,k,u(t.$t(`general.password_updated_description`)),1),r(p,{block:``,onClick:U,class:`dark:text-white text-black`},{default:n(()=>[a(u(t.$t(`general.back_to_sign_in`)),1)]),_:1})])):(e(),c(v,{key:1,validate:W,onSubmit:H,class:`flex flex-col gap-3`},{default:n(()=>[f(P).error?(e(),c(m,{key:0,color:`error`,variant:`subtle`,icon:`i-heroicons-exclamation-triangle`,title:f(P).error,"close-button":{icon:`i-heroicons-x-mark-20-solid`,variant:`link`},onClose:f(P).clearError},null,8,[`title`,`onClose`])):s(``,!0),r(g,{label:t.$t(`general.new_password`),name:`new_password`,required:``,class:`w-full dark:text-white text-black`},{default:n(()=>[r(h,{modelValue:I.value,"onUpdate:modelValue":l[1]||=e=>I.value=e,type:R.value?`text`:`password`,placeholder:t.$t(`general.enter_your_new_password`),disabled:f(P).loading,class:`w-full dark:text-white text-black`,ui:{trailing:`pe-1`}},{trailing:n(()=>[r(d,{color:`neutral`,variant:`link`,size:`sm`,name:R.value?`i-lucide-eye-off`:`i-lucide-eye`,"aria-label":R.value?`Hide password`:`Show password`,"aria-pressed":R.value,"aria-controls":`new_password`,onClick:l[0]||=e=>R.value=!R.value},null,8,[`name`,`aria-label`,`aria-pressed`])]),_:1},8,[`modelValue`,`type`,`placeholder`,`disabled`])]),_:1},8,[`label`]),r(g,{label:t.$t(`general.confirm_password`),name:`confirm_new_password`,required:``,class:`w-full dark:text-white text-black`},{default:n(()=>[r(h,{modelValue:L.value,"onUpdate:modelValue":l[3]||=e=>L.value=e,type:z.value?`text`:`password`,placeholder:t.$t(`general.confirm_your_new_password`),disabled:f(P).loading,class:`w-full dark:text-white text-black`,ui:{trailing:`pe-1`}},{trailing:n(()=>[r(d,{color:`neutral`,variant:`ghost`,size:`sm`,name:z.value?`i-lucide-eye-off`:`i-lucide-eye`,onClick:l[2]||=e=>z.value=!z.value},null,8,[`name`])]),_:1},8,[`modelValue`,`type`,`placeholder`,`disabled`])]),_:1},8,[`label`]),r(p,{type:`submit`,block:``,loading:f(P).loading,class:`text-white! bg-(--color-blue-600) dark:bg-(--color-blue-500)`},{default:n(()=>[a(u(t.$t(`general.reset_password`)),1)]),_:1},8,[`loading`]),i(`div`,A,[r(p,{color:`neutral`,variant:`ghost`,onClick:U,class:`dark:text-white text-black`},{default:n(()=>[a(u(t.$t(`general.back_to_sign_in`)),1)]),_:1})])]),_:1}))])])}}});export{j as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/VerifyEmailView-B2adokLx.js b/assets/public/dist/assets/VerifyEmailView-B2adokLx.js new file mode 100644 index 0000000..f4f1b41 --- /dev/null +++ b/assets/public/dist/assets/VerifyEmailView-B2adokLx.js @@ -0,0 +1 @@ +import{F as e,M as t,Q as n,_ as r,f as i,g as a,h as o,m as s,ut as c,wt as l,y as u}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{t as d}from"./useFetchJson-4WJQFaEO.js";import{Q as f,X as p,Y as m,t as h}from"./Icon-Chkiq2IE.js";import{t as g}from"./Button-jwL-tYHc.js";import{t as _}from"./Card-DPC9xXwj.js";import{t as v}from"./Alert-BNRo6CMI.js";var y={class:`min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900`},b={class:`pt-20 pb-8 flex items-center justify-center px-4 sm:px-6 lg:px-8`},x={class:`w-full max-w-md`},S={class:`text-center mb-8`},C={class:`inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30`},w={class:`text-center`},T={key:0},E={class:`text-xl font-semibold text-gray-900 dark:text-white`},D={key:1},O={class:`inline-flex items-center justify-center w-12 h-12 rounded-full bg-green-100 text-green-600 mb-4`},k={class:`text-xl font-semibold text-gray-900 dark:text-white`},A={class:`mt-1 text-sm text-gray-500 dark:text-gray-400`},j={key:2},M={class:`inline-flex items-center justify-center w-12 h-12 rounded-full bg-red-100 text-red-600 mb-4`},N={class:`text-xl font-semibold text-gray-900 dark:text-white`},P={class:`mt-1 text-sm text-gray-500 dark:text-gray-400`},F={key:0,class:`text-center py-4`},I={class:`text-gray-600 dark:text-gray-400 mb-4`},L={key:1,class:`text-center py-4`},R={key:2,class:`text-center py-4`},z={class:`text-gray-500 dark:text-gray-400`},B={class:`text-center`},V={class:`text-sm text-gray-600 dark:text-gray-400`},H=u({__name:`VerifyEmailView`,setup(u){let{t:H,te:U}=f(),W=p(),G=m();function K(e,t){return U(e)?H(e):t}let q=c(``),J=c(!1),Y=c(null),X=c(!1),Z=c(!0);t(()=>{if(q.value=G.query.token||``,!q.value){Y.value=K(`verify_email.invalid_token`,`Invalid or missing verification token`),Z.value=!1;return}Q()});async function Q(){if(!q.value){Y.value=K(`verify_email.invalid_token`,`Invalid or missing verification token`);return}J.value=!0,Y.value=null;try{await d(`/api/v1/auth/complete-registration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:q.value})}),X.value=!0,Z.value=!1,setTimeout(()=>{W.push({name:`login`})},3e3)}catch(e){Y.value=e?.message??K(`verify_email.verification_failed`,`Email verification failed`),Z.value=!1}finally{J.value=!1}}function $(){W.push({name:`login`})}return(t,c)=>{let u=h,d=g,f=v,p=_;return e(),o(`div`,y,[i(`div`,b,[i(`div`,x,[i(`div`,S,[i(`div`,C,[r(u,{name:`i-heroicons-envelope-check`,class:`w-8 h-8`})]),c[0]||=i(`h1`,{class:`text-3xl font-bold text-gray-900 dark:text-white`},`TimeTracker`,-1)]),r(p,{class:`shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50`},{header:n(()=>[i(`div`,w,[Z.value&&J.value?(e(),o(`div`,T,[r(u,{name:`i-heroicons-arrow-path`,class:`w-8 h-8 animate-spin text-primary-500 mx-auto mb-4`}),i(`h2`,E,l(K(`verify_email.verifying`,`Verifying your email...`)),1)])):X.value?(e(),o(`div`,D,[i(`div`,O,[r(u,{name:`i-heroicons-check-circle`,class:`w-6 h-6`})]),i(`h2`,k,l(K(`verify_email.success_title`,`Email Verified!`)),1),i(`p`,A,l(K(`verify_email.success_message`,`Your email has been verified successfully.`)),1)])):Y.value?(e(),o(`div`,j,[i(`div`,M,[r(u,{name:`i-heroicons-exclamation-circle`,class:`w-6 h-6`})]),i(`h2`,N,l(K(`verify_email.error_title`,`Verification Failed`)),1),i(`p`,P,l(K(`verify_email.error_message`,`We could not verify your email.`)),1)])):s(``,!0)])]),footer:n(()=>[i(`div`,B,[i(`p`,V,[a(l(K(`verify_email.already_registered`,`Already have an account?`))+` `,1),r(d,{variant:`link`,size:`sm`,onClick:$},{default:n(()=>[a(l(K(`verify_email.sign_in`,`Sign in`)),1)]),_:1})])])]),default:n(()=>[X.value?(e(),o(`div`,F,[i(`p`,I,l(K(`verify_email.redirect_message`,`You will be redirected to login page...`)),1),r(d,{color:`primary`,onClick:$},{default:n(()=>[a(l(K(`verify_email.go_to_login`,`Go to Login`)),1)]),_:1})])):Y.value?(e(),o(`div`,L,[r(f,{color:`error`,variant:`subtle`,icon:`i-heroicons-exclamation-triangle`,title:Y.value,class:`mb-4`},null,8,[`title`]),r(d,{color:`primary`,onClick:$},{default:n(()=>[a(l(K(`verify_email.go_to_login`,`Go to Login`)),1)]),_:1})])):Z.value&&J.value?(e(),o(`div`,R,[i(`p`,z,l(K(`verify_email.please_wait`,`Please wait while we verify your email address.`)),1)])):s(``,!0)]),_:1})])])])}}});export{H as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/VisuallyHiddenInput-BH1aLUkb.js b/assets/public/dist/assets/VisuallyHiddenInput-BH1aLUkb.js new file mode 100644 index 0000000..3ba9e2c --- /dev/null +++ b/assets/public/dist/assets/VisuallyHiddenInput-BH1aLUkb.js @@ -0,0 +1 @@ +import{D as e,F as t,J as n,L as r,d as i,h as a,m as o,o as s,p as c,y as l}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{h as u,n as d}from"./usePortal-Zddbph8M.js";import{n as f}from"./Collection-BkGqWqUl.js";var p={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function m(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function h(e,t,n){let r=m(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return p[r]}function g(e,t=!1){let n=u();for(let r of e)if(r===n||(r.focus({preventScroll:t}),u()!==n))return}function _(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var v=l({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(r){let a=r,{primitiveElement:o,currentElement:s}=f();return n(i(()=>a.checked??a.value),(e,t)=>{if(!s.value)return;let n=s.value,r=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(i&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});i.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(n,r)=>(t(),c(d,e({ref_key:`primitiveElement`,ref:o},{...a,...n.$attrs},{as:`input`}),null,16))}}),y=l({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(n){let l=n,u=i(()=>typeof l.value==`object`&&Array.isArray(l.value)&&l.value.length===0&&l.required),d=i(()=>typeof l.value==`string`||typeof l.value==`number`||typeof l.value==`boolean`||l.value===null||l.value===void 0?[{name:l.name,value:l.value}]:typeof l.value==`object`&&Array.isArray(l.value)?l.value.flatMap((e,t)=>typeof e==`object`?Object.entries(e).map(([e,n])=>({name:`${l.name}[${t}][${e}]`,value:n})):{name:`${l.name}[${t}]`,value:e}):l.value!==null&&typeof l.value==`object`&&!Array.isArray(l.value)?Object.entries(l.value).map(([e,t])=>({name:`${l.name}[${e}]`,value:t})):[]);return(n,i)=>(t(),a(s,null,[o(` We render single input if it's required `),u.value?(t(),c(v,e({key:n.name},{...l,...n.$attrs},{name:n.name,value:n.value}),null,16,[`name`,`value`])):(t(!0),a(s,{key:1},r(d.value,r=>(t(),c(v,e({key:r.name},{ref_for:!0},{...l,...n.$attrs},{name:r.name,value:r.value}),null,16,[`name`,`value`]))),128))],2112))}});export{_ as a,h as i,p as n,g as r,y as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/_rolldown_dynamic_import_helper-DhxqfwDR.js b/assets/public/dist/assets/_rolldown_dynamic_import_helper-DhxqfwDR.js new file mode 100644 index 0000000..16ec196 --- /dev/null +++ b/assets/public/dist/assets/_rolldown_dynamic_import_helper-DhxqfwDR.js @@ -0,0 +1 @@ +import{A as e,B as t,Ct as n,D as r,F as i,G as a,J as o,M as s,N as c,O as l,Q as u,R as d,St as f,V as p,Y as m,_ as h,b as g,d as _,f as v,g as y,gt as b,h as x,ht as S,i as C,m as w,p as T,ut as E,wt as D,x as O,xt as k,y as A,yt as j}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{t as M}from"./useForwardExpose-BgPOLLFN.js";import{N,S as P,V as ee,i as F,n as te,r as I,s as L}from"./Icon-Chkiq2IE.js";import{a as ne,c as R,d as re,h as z,i as ie,l as B,n as ae,o as oe,r as V,s as H,t as se,u as U}from"./usePortal-Zddbph8M.js";import{n as W}from"./utils-ZBSSwpFo.js";var[G,ce]=L(`DialogRoot`),le=A({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=N(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),i=E(),a=E(),{modal:o}=b(n);return ce({open:r,modal:o,openModal:()=>{r.value=!0},onOpenChange:e=>{r.value=e},onOpenToggle:()=>{r.value=!r.value},contentId:``,titleId:``,descriptionId:``,triggerElement:i,contentElement:a}),(e,t)=>d(e.$slots,`default`,{open:j(r),close:()=>r.value=!1})}}),K=A({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,a=t,o=G(),{forwardRef:c,currentElement:l}=M();return o.titleId||=H(void 0,`reka-dialog-title`),o.descriptionId||=H(void 0,`reka-dialog-description`),s(()=>{o.contentElement=l,z()!==document.body&&(o.triggerElement.value=z())}),(e,t)=>(i(),T(j(ie),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>a(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>a(`closeAutoFocus`,e)},{default:u(()=>[h(j(ne),r({id:j(o).contentId,ref:j(c),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":j(o).descriptionId,"aria-labelledby":j(o).titleId,"data-state":j(W)(j(o).open.value)},e.$attrs,{onDismiss:t[0]||=e=>j(o).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>a(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>a(`focusOutside`,e),onInteractOutside:t[3]||=e=>a(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>a(`pointerDownOutside`,e)}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),ue=A({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,a=t,o=G(),s=U(a),{forwardRef:c,currentElement:l}=M();return R(l),(e,t)=>(i(),T(K,r({...n,...j(s)},{ref:j(c),"trap-focus":j(o).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),j(o).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),de=A({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,a=U(t);M();let o=G(),s=E(!1),c=E(!1);return(e,t)=>(i(),T(K,r({...n,...j(a)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(s.value||j(o).triggerElement.value?.focus(),e.preventDefault()),s.value=!1,c.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(s.value=!0,e.detail.originalEvent.type===`pointerdown`&&(c.value=!0));let t=e.target;j(o).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&c.value&&e.preventDefault()}}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16))}}),fe=A({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,a=t,o=G(),s=U(a),{forwardRef:c}=M();return(e,t)=>(i(),T(j(oe),{present:e.forceMount||j(o).open.value},{default:u(()=>[j(o).modal.value?(i(),T(ue,r({key:0,ref:j(c)},{...n,...j(s),...e.$attrs}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16)):(i(),T(de,r({key:1,ref:j(c)},{...n,...j(s),...e.$attrs}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),pe=A({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;M();let n=G();return(e,a)=>(i(),T(j(F),r(t,{id:j(n).descriptionId}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16,[`id`]))}}),me=A({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=G();return re(!0),M(),(e,n)=>(i(),T(j(F),{as:e.as,"as-child":e.asChild,"data-state":j(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:u(()=>[d(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),he=A({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=G(),{forwardRef:n}=M();return(e,a)=>j(t)?.modal.value?(i(),T(j(oe),{key:0,present:e.forceMount||j(t).open.value},{default:u(()=>[h(me,r(e.$attrs,{ref:j(n),as:e.as,"as-child":e.asChild}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):w(`v-if`,!0)}}),ge=A({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(i(),T(j(V),f(O(t)),{default:u(()=>[d(e.$slots,`default`)]),_:3},16))}}),_e=A({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=G();return M(),(e,a)=>(i(),T(j(F),r(t,{id:j(n).titleId}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16,[`id`]))}}),ve=A({__name:`DialogTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=G(),{forwardRef:a,currentElement:o}=M();return n.contentId||=H(void 0,`reka-dialog-content`),s(()=>{n.triggerElement.value=o.value}),(e,o)=>(i(),T(j(F),r(t,{ref:j(a),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":j(n).open.value||!1,"aria-controls":j(n).open.value?j(n).contentId:void 0,"data-state":j(n).open.value?`open`:`closed`,onClick:j(n).onOpenToggle}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16,[`type`,`aria-expanded`,`aria-controls`,`data-state`,`onClick`]))}});(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.nonce=document.head.querySelector(`meta[property=csp-nonce]`)?.content,e.appendChild(document.createTextNode(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32,.72,0,1);animation-duration:.5s;animation-timing-function:cubic-bezier(.32,.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform, 100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform, 100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform, 100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform, 100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top],[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height, 0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left],[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height, 0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(.32,.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32,.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true]):after{content:"";position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]:after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]:after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]:after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]:after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not([data-state=closed]){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:hover,[data-vaul-handle]:active{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover: hover) and (pointer: fine){[data-vaul-drawer]{-webkit-user-select:none;user-select:none}}@media (pointer: fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{0%{transform:translate3d(0,var(--initial-transform, 100%),0)}to{transform:translateZ(0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform, 100%),0)}}@keyframes slideFromTop{0%{transform:translate3d(0,calc(var(--initial-transform, 100%) * -1),0)}to{transform:translateZ(0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform, 100%) * -1),0)}}@keyframes slideFromLeft{0%{transform:translate3d(calc(var(--initial-transform, 100%) * -1),0,0)}to{transform:translateZ(0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform, 100%) * -1),0,0)}}@keyframes slideFromRight{0%{transform:translate3d(var(--initial-transform, 100%),0,0)}to{transform:translateZ(0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform, 100%),0,0)}}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();var ye=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var be=e=>typeof e<`u`;function xe(e){return JSON.parse(JSON.stringify(e))}function Se(e,t,n,r={}){let{clone:i=!1,passive:a=!1,eventName:s,deep:c=!1,defaultValue:u,shouldEmit:d}=r,f=g(),p=n||f?.emit||(f?.$emit)?.bind(f)||(f?.proxy?.$emit)?.bind(f?.proxy),m=s;t||=`modelValue`,m||=`update:${t.toString()}`;let h=e=>i?typeof i==`function`?i(e):xe(e):e,v=()=>be(e[t])?h(e[t]):u,y=e=>{d?d(e)&&p(m,e):p(m,e)};if(a){let n=E(v()),r=!1;return o(()=>e[t],e=>{r||(r=!0,n.value=h(e),l(()=>r=!1))}),o(n,n=>{!r&&(n!==e[t]||c)&&y(n)},{deep:c}),n}else return _({get(){return v()},set(e){y(e)}})}var[q,Ce]=L(`DrawerRoot`),we=new WeakMap;function J(e,t,n=!1){if(!e||!(e instanceof HTMLElement)||!t)return;let r={};Object.entries(t).forEach(([t,n])=>{if(t.startsWith(`--`)){e.style.setProperty(t,n);return}r[t]=e.style[t],e.style[t]=n}),!n&&we.set(e,r)}function Te(e,t){if(!e||!(e instanceof HTMLElement))return;let n=we.get(e);n&&Object.entries(n).forEach(([t,n])=>{e.style[t]=n})}function Y(e,t){let n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform,i=r.match(/^matrix3d\((.+)\)$/);return i?Number.parseFloat(i[1].split(`, `)[X(t)?13:12]):(i=r.match(/^matrix\((.+)\)$/),i?Number.parseFloat(i[1].split(`, `)[X(t)?5:4]):null)}function Ee(e){return 8*(Math.log(e+1)-2)}function X(e){switch(e){case`top`:case`bottom`:return!0;case`left`:case`right`:return!1;default:return e}}function De(e,t){if(!e)return()=>{};let n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}var Z={DURATION:.5,EASE:[.32,.72,0,1]},Oe=.4,ke=.25,Ae=100,je=8,Q=16,Me=26,Ne=`vaul-dragging`;function Pe({activeSnapPoint:t,snapPoints:n,drawerRef:r,overlayRef:i,fadeFromIndex:a,onSnapPointChange:c,direction:u}){let d=E(typeof window<`u`?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);function f(){d.value={innerWidth:window.innerWidth,innerHeight:window.innerHeight}}s(()=>{typeof window<`u`&&window.addEventListener(`resize`,f)}),e(()=>{typeof window<`u`&&window.removeEventListener(`resize`,f)});let p=_(()=>(n.value&&t.value===n.value[n.value.length-1])??null),m=_(()=>n.value&&n.value.length>0&&(a?.value||a?.value===0)&&!Number.isNaN(a?.value)&&n.value[a?.value??-1]===t.value||!n.value),h=_(()=>n.value?.findIndex(e=>e===t.value)??null),g=_(()=>n.value?.map(e=>{let t=typeof e==`string`,n=0;if(t&&(n=Number.parseInt(e,10)),X(u.value)){let r=t?n:d.value?e*d.value.innerHeight:0;return d.value?u.value===`bottom`?d.value.innerHeight-r:-d.value.innerHeight+r:r}let r=t?n:d.value?e*d.value.innerWidth:0;return d.value?u.value===`right`?d.value.innerWidth-r:-d.value.innerWidth+r:r})??[]),v=_(()=>h.value===null?null:g.value?.[h.value]),y=e=>{let o=g.value?.findIndex(t=>t===e)??null;l(()=>{c(o,g.value),J(r.value?.$el,{transition:`transform ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`,transform:X(u.value)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}),g.value&&o!==g.value.length-1&&o!==a?.value?J(i.value?.$el,{transition:`opacity ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`,opacity:`0`}):J(i.value?.$el,{transition:`opacity ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`,opacity:`1`}),t.value=o===null?null:n.value?.[o]??null};o([t,g,n],()=>{if(t.value){let e=n.value?.findIndex(e=>e===t.value)??-1;g.value&&e!==-1&&typeof g.value[e]==`number`&&y(g.value[e])}},{immediate:!0});function b({draggedDistance:e,closeDrawer:t,velocity:r,dismissible:o}){if(a.value===void 0)return;let s=u.value===`bottom`||u.value===`right`?(v.value??0)-e:(v.value??0)+e,c=h.value===a.value-1,l=h.value===0,d=e>0;if(c&&J(i.value?.$el,{transition:`opacity ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`}),r>2&&!d){o?t():y(g.value[0]);return}if(r>2&&d&&g&&n.value){y(g.value[n.value.length-1]);return}let f=g.value?.reduce((e,t)=>typeof e!=`number`||typeof t!=`number`?e:Math.abs(t-s)Oe&&Math.abs(e)0&&p){y(g.value[(n.value?.length??0)-1]);return}if(l&&e<0&&o&&t(),h.value===null)return;y(g.value[h.value+e]);return}y(f)}function x({draggedDistance:e}){if(v.value===null)return;let t=u.value===`bottom`||u.value===`right`?v.value-e:v.value+e;(u.value===`bottom`||u.value===`right`)&&tg.value[g.value.length-1]||J(r.value?.$el,{transform:X(u.value)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})}function S(e,t){if(!n.value||typeof h.value!=`number`||!g.value||a.value===void 0)return null;let r=h.value===a.value-1;if(h.value>=a.value&&t)return 0;if(r&&!t)return 1;if(!m.value&&!r)return null;let i=r?h.value+1:h.value-1,o=r?g.value[i]-g.value[i-1]:g.value[i+1]-g.value[i],s=e/Math.abs(o);return r?1-s:s}return{isLastSnapPoint:p,shouldFade:m,getPercentageDragged:S,activeSnapPointIndex:h,onRelease:b,onDrag:x,snapPointsOffset:g}}function Fe(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}var $=null;function Ie(e){let{isOpen:t,modal:n,nested:r,hasBeenOpened:i,preventScrollRestoration:a,noBodyStyles:l}=e,u=E(typeof window<`u`?window.location.href:``),d=E(0);function f(){if(Fe()&&$===null&&t.value&&!l.value){$={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height};let{scrollX:e,innerHeight:t}=window;document.body.style.setProperty(`position`,`fixed`,`important`),Object.assign(document.body.style,{top:`${-d.value}px`,left:`${-e}px`,right:`0px`,height:`auto`}),setTimeout(()=>{requestAnimationFrame(()=>{let e=t-window.innerHeight;e&&d.value>=t&&(document.body.style.top=`-${d.value+e}px`)})},300)}}function p(){if(Fe()&&$!==null&&!l.value){let e=-Number.parseInt(document.body.style.top,10),t=-Number.parseInt(document.body.style.left,10);Object.assign(document.body.style,$),window.requestAnimationFrame(()=>{if(a.value&&u.value!==window.location.href){u.value=window.location.href;return}window.scrollTo(t,e)}),$=null}}return s(()=>{function e(){d.value=window.scrollY}e(),window.addEventListener(`scroll`,e),c(()=>{window.removeEventListener(`scroll`,e)})}),o([t,i,u],()=>{r.value||!i.value||(t.value?(window.matchMedia(`(display-mode: standalone)`).matches||f(),n.value||setTimeout(()=>{p()},500)):p())}),{restorePositionSetting:p}}function Le(e,t){return e&&e.value?e:t}function Re(e){let{emitDrag:t,emitRelease:n,emitClose:r,emitOpenChange:i,open:a,dismissible:s,nested:c,modal:l,shouldScaleBackground:u,setBackgroundColorOnScale:d,scrollLockTimeout:f,closeThreshold:p,activeSnapPoint:h,fadeFromIndex:g,direction:v,noBodyStyles:y,handleOnly:b,preventScrollRestoration:x}=e,S=E(a.value??!1),C=E(!1),w=E(!1),T=E(!1),D=E(null),O=E(null),k=E(null),A=E(null),j=E(null),M=E(!1),N=E(null),P=E(0),ee=E(!1);E(0);let F=E(null);E(0);let te=_(()=>F.value?.$el.getBoundingClientRect().height||0),I=Le(e.snapPoints,E(void 0)),L=_(()=>I&&(I.value?.length??0)>0),ne=E(null),{activeSnapPointIndex:R,onRelease:re,snapPointsOffset:z,onDrag:ie,shouldFade:B,getPercentageDragged:ae}=Pe({snapPoints:I,activeSnapPoint:h,drawerRef:F,fadeFromIndex:g,overlayRef:D,onSnapPointChange:oe,direction:v});function oe(e,t){I.value&&e===t.length-1&&(O.value=new Date)}Ie({isOpen:S,modal:l,nested:c,hasBeenOpened:C,noBodyStyles:y,preventScrollRestoration:x});function V(){return(window.innerWidth-Me)/window.innerWidth}function H(e,t){if(!e)return!1;let n=e,r=window.getSelection()?.toString(),i=F.value?Y(F.value.$el,v.value):null,a=new Date;if(n.hasAttribute(`data-vaul-no-drag`)||n.closest(`[data-vaul-no-drag]`))return!1;if(v.value===`right`||v.value===`left`)return!0;if(O.value&&a.getTime()-O.value.getTime()<500)return!1;if(i!==null&&(v.value===`bottom`?i>0:i<0))return!0;if(r&&r.length>0)return!1;if(j.value&&a.getTime()-j.value.getTime()n.clientHeight){if(n.scrollTop!==0)return j.value=new Date,!1;if(n.getAttribute(`role`)===`dialog`)return!0}n=n.parentNode}return!0}function se(e){!s.value&&!I.value||F.value&&!F.value.$el.contains(e.target)||(w.value=!0,k.value=new Date,e.target.setPointerCapture(e.pointerId),P.value=X(v.value)?e.clientY:e.clientX)}function U(e){var n;if(F.value&&w.value){let r=v.value===`bottom`||v.value===`right`?1:-1,i=(P.value-(X(v.value)?e.clientY:e.clientX))*r,a=i>0,o=I.value&&!s.value&&!a;if(o&&R.value===0)return;let c=Math.abs(i),l=document.querySelector(`[data-vaul-drawer-wrapper]`)||document.querySelector(`[vaul-drawer-wrapper]`),d=c/te.value,f=ae(c,a);if(f!==null&&(d=f),o&&d>=1||!M.value&&!H(e.target,a))return;if((n=F?.value)==null||n.$el.classList.add(Ne),M.value=!0,J(F.value?.$el,{transition:`none`}),J(D.value?.$el,{transition:`none`}),I.value&&ie({draggedDistance:i}),a&&!I.value){let e=Ee(i),t=Math.min(e*-1,0)*r;J(F.value?.$el,{transform:X(v.value)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`});return}let p=1-d;if((B.value||g.value&&R.value===g.value-1)&&(t(d),J(D.value?.$el,{opacity:`${p}`,transition:`none`},!0)),l&&D.value&&u.value){let e=Math.min(V()+d*(1-V()),1),t=8-d*8,n=Math.max(0,14-d*14);J(l,{borderRadius:`${t}px`,transform:X(v.value)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`,transition:`none`},!0)}if(!I.value){let e=c*r;J(F.value?.$el,{transform:X(v.value)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}}}function W(){if(!F.value)return;let e=document.querySelector(`[data-vaul-drawer-wrapper]`)||document.querySelector(`[vaul-drawer-wrapper]`),t=Y(F.value.$el,v.value);J(F.value.$el,{transform:`translate3d(0, 0, 0)`,transition:`transform ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`}),J(D.value?.$el,{transition:`opacity ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`,opacity:`1`}),u.value&&t&&t>0&&S.value&&J(e,{borderRadius:`${je}px`,overflow:`hidden`,...X(v.value)?{transform:`scale(${V()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:`top`}:{transform:`scale(${V()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:`left`},transitionProperty:`transform, border-radius`,transitionDuration:`${Z.DURATION}s`,transitionTimingFunction:`cubic-bezier(${Z.EASE.join(`,`)})`},!0)}function G(e){F.value&&(r(),e||(S.value=!1),window.setTimeout(()=>{I.value&&(h.value=I.value[0])},Z.DURATION*1e3))}m(()=>{if(!S.value&&u.value&&ye){let e=setTimeout(()=>{Te(document.body)},200);return()=>clearTimeout(e)}}),o(a,()=>{S.value=a.value,a.value||G()});function ce(e){if(!w.value||!F.value)return;F.value.$el.classList.remove(Ne),M.value=!1,w.value=!1,A.value=new Date;let t=Y(F.value.$el,v.value);if(!H(e.target,!1)||!t||Number.isNaN(t)||k.value===null)return;let r=A.value.getTime()-k.value.getTime(),i=P.value-(X(v.value)?e.clientY:e.clientX),a=Math.abs(i)/r;if(a>.05&&(T.value=!0,window.setTimeout(()=>{T.value=!1},200)),I.value){re({draggedDistance:i*(v.value===`bottom`||v.value===`right`?1:-1),closeDrawer:G,velocity:a,dismissible:s.value}),n(!0);return}if(v.value===`bottom`||v.value===`right`?i>0:i<0){W(),n(!0);return}if(a>Oe){G(),n(!1);return}if(t>=Math.min(F.value.$el.getBoundingClientRect().height??0,window.innerHeight)*p.value){G(),n(!1);return}n(!0),W()}o(S,e=>{e&&(O.value=new Date),i(e)},{immediate:!0});function le(e){var t;let n=e?(window.innerWidth-Q)/window.innerWidth:1,r=e?-16:0;N.value&&window.clearTimeout(N.value),J(F.value?.$el,{transition:`transform ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`,transform:`scale(${n}) translate3d(0, ${r}px, 0)`}),!e&&(t=F.value)!=null&&t.$el&&(N.value=window.setTimeout(()=>{let e=Y(F.value?.$el,v.value);J(F.value?.$el,{transition:`none`,transform:X(v.value)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},500))}function K(e){if(e<0)return;let t=X(v.value)?window.innerHeight:window.innerWidth,n=(t-Q)/t,r=n+e*(1-n),i=-16+e*Q;J(F.value?.$el,{transform:X(v.value)?`scale(${r}) translate3d(0, ${i}px, 0)`:`scale(${r}) translate3d(${i}px, 0, 0)`,transition:`none`})}function ue(e){let t=X(v.value)?window.innerHeight:window.innerWidth,n=e?(t-Q)/t:1,r=e?-16:0;e&&J(F.value?.$el,{transition:`transform ${Z.DURATION}s cubic-bezier(${Z.EASE.join(`,`)})`,transform:X(v.value)?`scale(${n}) translate3d(0, ${r}px, 0)`:`scale(${n}) translate3d(${r}px, 0, 0)`})}return{open:a,isOpen:S,modal:l,keyboardIsOpen:ee,hasBeenOpened:C,drawerRef:F,drawerHeightRef:te,overlayRef:D,handleRef:ne,isDragging:w,dragStartTime:k,isAllowedToDrag:M,snapPoints:I,activeSnapPoint:h,hasSnapPoints:L,pointerStart:P,dismissible:s,snapPointsOffset:z,direction:v,shouldFade:B,fadeFromIndex:g,shouldScaleBackground:u,setBackgroundColorOnScale:d,onPress:se,onDrag:U,onRelease:ce,closeDrawer:G,onNestedDrag:K,onNestedRelease:ue,onNestedOpenChange:le,emitClose:r,emitDrag:t,emitRelease:n,emitOpenChange:i,nested:c,handleOnly:b,noBodyStyles:y}}var ze=A({__name:`DrawerRoot`,props:{activeSnapPoint:{default:void 0},closeThreshold:{default:ke},shouldScaleBackground:{type:Boolean,default:void 0},setBackgroundColorOnScale:{type:Boolean,default:!0},scrollLockTimeout:{default:Ae},fixed:{type:Boolean,default:void 0},dismissible:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},nested:{type:Boolean,default:!1},direction:{default:`bottom`},noBodyStyles:{type:Boolean},handleOnly:{type:Boolean,default:!1},preventScrollRestoration:{type:Boolean},snapPoints:{default:void 0},fadeFromIndex:{default:void 0}},emits:[`drag`,`release`,`close`,`update:open`,`update:activeSnapPoint`,`animationEnd`],setup(e,{expose:t,emit:n}){let r=e,o=n;a();let s=_(()=>r.fadeFromIndex??(r.snapPoints&&r.snapPoints.length-1)),c=Se(r,`open`,o,{defaultValue:r.defaultOpen,passive:r.open===void 0}),l=Se(r,`activeSnapPoint`,o,{passive:r.activeSnapPoint===void 0}),f={emitDrag:e=>o(`drag`,e),emitRelease:e=>o(`release`,e),emitClose:()=>o(`close`),emitOpenChange:e=>{o(`update:open`,e),setTimeout(()=>{o(`animationEnd`,e)},Z.DURATION*1e3)}},{closeDrawer:p,hasBeenOpened:m,modal:h,isOpen:g}=Ce(Re({...f,...b(r),activeSnapPoint:l,fadeFromIndex:s,open:c}));function v(e){if(c.value!==void 0){f.emitOpenChange(e);return}g.value=e,e?m.value=!0:p()}return t({open:g}),(e,t)=>(i(),T(j(le),{open:j(g),modal:j(h),"onUpdate:open":v},{default:u(()=>[d(e.$slots,`default`,{open:j(g)})]),_:3},8,[`open`,`modal`]))}}),Be=A({__name:`DrawerRootNested`,props:{activeSnapPoint:{},closeThreshold:{},shouldScaleBackground:{type:Boolean},setBackgroundColorOnScale:{type:Boolean},scrollLockTimeout:{},fixed:{type:Boolean},dismissible:{type:Boolean},modal:{type:Boolean},open:{type:Boolean},defaultOpen:{type:Boolean},nested:{type:Boolean},direction:{},noBodyStyles:{type:Boolean},handleOnly:{type:Boolean},preventScrollRestoration:{type:Boolean},snapPoints:{},fadeFromIndex:{}},emits:[`drag`,`release`,`close`,`update:open`,`update:activeSnapPoint`,`animationEnd`],setup(e,{emit:t}){let n=e,a=t,{onNestedDrag:o,onNestedOpenChange:s,onNestedRelease:c}=q();function l(){s(!1)}function f(e){o(e)}function p(e){e&&s(e),a(`update:open`,e)}let m=B(n,a);return(e,t)=>(i(),T(ze,r(j(m),{nested:``,onClose:l,onDrag:f,onRelease:j(c),"onUpdate:open":p}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16,[`onRelease`]))}}),Ve=A({__name:`DrawerOverlay`,setup(e){let{overlayRef:t,hasSnapPoints:n,isOpen:r,shouldFade:a}=q();return(e,o)=>(i(),T(j(he),{ref_key:`overlayRef`,ref:t,"data-vaul-overlay":``,"data-vaul-snap-points":j(r)&&j(n)?`true`:`false`,"data-vaul-snap-points-overlay":j(r)&&j(a)?`true`:`false`},null,8,[`data-vaul-snap-points`,`data-vaul-snap-points-overlay`]))}});function He(){let{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:i}=q(),a=E(null),o=E(document.body.style.backgroundColor);function s(){return(window.innerWidth-Me)/window.innerWidth}m(c=>{if(t.value&&n.value){a.value&&clearTimeout(a.value);let t=document.querySelector(`[data-vaul-drawer-wrapper]`)||document.querySelector(`[vaul-drawer-wrapper]`);if(!t)return;r.value&&!i.value&&De(document.body,{background:`black`}),De(t,{transformOrigin:X(e.value)?`top`:`left`,transitionProperty:`transform, border-radius`,transitionDuration:`${Z.DURATION}s`,transitionTimingFunction:`cubic-bezier(${Z.EASE.join(`,`)})`});let n=De(t,{borderRadius:`${je}px`,overflow:`hidden`,...X(e.value)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});c(()=>{n(),a.value=window.setTimeout(()=>{o.value?document.body.style.background=o.value:document.body.style.removeProperty(`background`)},Z.DURATION*1e3)})}},{flush:`pre`})}var Ue=A({__name:`DrawerContent`,setup(e){let{open:t,isOpen:r,snapPointsOffset:a,hasSnapPoints:o,drawerRef:s,onPress:c,onDrag:l,onRelease:f,modal:p,emitOpenChange:h,dismissible:g,keyboardIsOpen:v,closeDrawer:y,direction:b,handleOnly:x}=q();He();let S=E(!1),w=_(()=>a.value&&a.value.length>0?`${a.value[0]}px`:`0`);function D(e){if(!p.value||e.defaultPrevented){e.preventDefault();return}v.value&&=!1,g.value?h(!1):e.preventDefault()}function O(e){x.value||c(e)}function k(e){x.value||l(e)}return m(()=>{o.value&&window.requestAnimationFrame(()=>{S.value=!0})}),(e,t)=>(i(),T(j(fe),{ref_key:`drawerRef`,ref:s,"data-vaul-drawer":``,"data-vaul-drawer-direction":j(b),"data-vaul-delayed-snap-points":S.value?`true`:`false`,"data-vaul-snap-points":j(r)&&j(o)?`true`:`false`,style:n({"--snap-point-height":w.value}),onPointerdown:O,onPointermove:k,onPointerup:j(f),onPointerDownOutside:D,onOpenAutoFocus:t[0]||=C(()=>{},[`prevent`]),onEscapeKeyDown:t[1]||=e=>{j(g)||e.preventDefault()}},{default:u(()=>[d(e.$slots,`default`)]),_:3},8,[`data-vaul-drawer-direction`,`data-vaul-delayed-snap-points`,`data-vaul-snap-points`,`style`,`onPointerup`]))}}),We=[`data-vaul-drawer-visible`],Ge={"data-vaul-handle-hitarea":``,"aria-hidden":`true`},Ke=250,qe=120,Je=A({__name:`DrawerHandle`,props:{preventCycle:{type:Boolean,default:!1}},setup(e){let t=e,{onPress:n,onDrag:r,handleRef:a,handleOnly:o,isOpen:s,snapPoints:c,activeSnapPoint:l,isDragging:u,dismissible:f,closeDrawer:p}=q(),m=E(null),h=E(!1);function g(){if(h.value){b();return}window.setTimeout(()=>{_()},qe)}function _(){if(u.value||t.preventCycle||h.value){b();return}if(b(),!c.value||c.value.length===0){f.value||p();return}let e=l.value===c.value[c.value.length-1];if(e&&f.value){p();return}let n=c.value.findIndex(e=>e===l.value);if(n===-1)return;let r=e?0:n+1;l.value=c.value[r]}function y(){m.value=window.setTimeout(()=>{h.value=!0},Ke)}function b(){m.value&&window.clearTimeout(m.value),h.value=!1}function S(e){o.value&&n(e),y()}function C(e){o.value&&r(e)}return(e,t)=>(i(),x(`div`,{ref_key:`handleRef`,ref:a,"data-vaul-drawer-visible":j(s)?`true`:`false`,"data-vaul-handle":``,"aria-hidden":`true`,onClick:g,onPointercancel:b,onPointerdown:S,onPointermove:C},[v(`span`,Ge,[d(e.$slots,`default`)])],40,We))}});function Ye(e,t={}){let n=e.detail.originalEvent,r=n.target;if(!r?.isConnected){e.preventDefault();return}t.scrollable&&(n.offsetX>r.clientWidth||n.offsetY>r.clientHeight)&&e.preventDefault()}var Xe={slots:{overlay:`fixed inset-0 bg-elevated/75`,content:`fixed bg-default ring ring-default flex focus:outline-none`,handle:[`shrink-0 !bg-accented`,`transition-opacity`],container:`w-full flex flex-col gap-4 p-4 overflow-y-auto`,header:``,title:`text-highlighted font-semibold`,description:`mt-1 text-muted text-sm`,body:`flex-1`,footer:`flex flex-col gap-1.5`},variants:{direction:{top:{content:`mb-24 flex-col-reverse`,handle:`mb-4`},right:{content:`flex-row`,handle:`!ml-4`},bottom:{content:`mt-24 flex-col`,handle:`mt-4`},left:{content:`flex-row-reverse`,handle:`!mr-4`}},inset:{true:{content:`rounded-lg after:hidden overflow-hidden [--initial-transform:calc(100%+1.5rem)]`}},snapPoints:{true:``}},compoundVariants:[{direction:[`top`,`bottom`],class:{content:`h-auto max-h-[96%]`,handle:`!w-12 !h-1.5 mx-auto`}},{direction:[`top`,`bottom`],snapPoints:!0,class:{content:`h-full`}},{direction:[`right`,`left`],class:{content:`w-auto max-w-[calc(100%-2rem)]`,handle:`!h-12 !w-1.5 mt-auto mb-auto`}},{direction:[`right`,`left`],snapPoints:!0,class:{content:`w-full`}},{direction:`top`,inset:!0,class:{content:`inset-x-4 top-4`}},{direction:`top`,inset:!1,class:{content:`inset-x-0 top-0 rounded-b-lg`}},{direction:`bottom`,inset:!0,class:{content:`inset-x-4 bottom-4`}},{direction:`bottom`,inset:!1,class:{content:`inset-x-0 bottom-0 rounded-t-lg`}},{direction:`left`,inset:!0,class:{content:`inset-y-4 left-4`}},{direction:`left`,inset:!1,class:{content:`inset-y-0 left-0 rounded-r-lg`}},{direction:`right`,inset:!0,class:{content:`inset-y-4 right-4`}},{direction:`right`,inset:!1,class:{content:`inset-y-0 right-0 rounded-l-lg`}}]},Ze={__name:`Drawer`,props:{as:{type:null,required:!1},title:{type:String,required:!1},description:{type:String,required:!1},inset:{type:Boolean,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},handle:{type:Boolean,required:!1,default:!0},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},nested:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},activeSnapPoint:{type:[Number,String,null],required:!1},closeThreshold:{type:Number,required:!1},shouldScaleBackground:{type:Boolean,required:!1},setBackgroundColorOnScale:{type:Boolean,required:!1},scrollLockTimeout:{type:Number,required:!1},fixed:{type:Boolean,required:!1},dismissible:{type:Boolean,required:!1,default:!0},modal:{type:Boolean,required:!1,default:!0},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},direction:{type:String,required:!1,default:`bottom`},noBodyStyles:{type:Boolean,required:!1},handleOnly:{type:Boolean,required:!1},preventScrollRestoration:{type:Boolean,required:!1},snapPoints:{type:Array,required:!1}},emits:[`close:prevent`,`drag`,`release`,`close`,`update:open`,`update:activeSnapPoint`,`animationEnd`],setup(e,{emit:n}){let o=e,s=n,c=a(),l=P(),m=te(`drawer`,o),g=B(ee(o,`activeSnapPoint`,`closeThreshold`,`shouldScaleBackground`,`setBackgroundColorOnScale`,`scrollLockTimeout`,`fixed`,`dismissible`,`modal`,`open`,`defaultOpen`,`nested`,`direction`,`noBodyStyles`,`handleOnly`,`preventScrollRestoration`,`snapPoints`),s),b=se(S(()=>o.portal)),C=S(()=>o.content),E=_(()=>o.dismissible?{pointerDownOutside:Ye}:[`pointerDownOutside`,`interactOutside`,`escapeKeyDown`].reduce((e,t)=>(e[t]=e=>{e.preventDefault(),s(`close:prevent`)},e),{})),A=_(()=>I({extend:I(Xe),...l.ui?.drawer||{}})({direction:o.direction,inset:o.inset,snapPoints:o.snapPoints&&o.snapPoints.length>0}));return(n,a)=>(i(),T(t(e.nested?j(Be):j(ze)),f(O(j(g))),{default:u(()=>[c.default?(i(),T(j(ve),{key:0,"as-child":``,class:k(o.class)},{default:u(()=>[d(n.$slots,`default`)]),_:3},8,[`class`])):w(``,!0),h(j(ge),f(O(j(b))),{default:u(()=>[e.overlay?(i(),T(j(Ve),{key:0,"data-slot":`overlay`,class:k(A.value.overlay({class:j(m)?.overlay}))},null,8,[`class`])):w(``,!0),h(j(Ue),r({"data-slot":`content`,class:A.value.content({class:[!c.default&&o.class,j(m)?.content]})},C.value,p(E.value)),{default:u(()=>[e.handle?(i(),T(j(Je),{key:0,"data-slot":`handle`,class:k(A.value.handle({class:j(m)?.handle}))},null,8,[`class`])):w(``,!0),c.content&&(e.title||c.title||e.description||c.description)?(i(),T(j(ae),{key:1},{default:u(()=>[e.title||c.title?(i(),T(j(_e),{key:0},{default:u(()=>[d(n.$slots,`title`,{},()=>[y(D(e.title),1)])]),_:3})):w(``,!0),e.description||c.description?(i(),T(j(pe),{key:1},{default:u(()=>[d(n.$slots,`description`,{},()=>[y(D(e.description),1)])]),_:3})):w(``,!0)]),_:3})):w(``,!0),d(n.$slots,`content`,{},()=>[v(`div`,{"data-slot":`container`,class:k(A.value.container({class:j(m)?.container}))},[c.header||e.title||c.title||e.description||c.description?(i(),x(`div`,{key:0,"data-slot":`header`,class:k(A.value.header({class:j(m)?.header}))},[d(n.$slots,`header`,{},()=>[e.title||c.title?(i(),T(j(_e),{key:0,"data-slot":`title`,class:k(A.value.title({class:j(m)?.title}))},{default:u(()=>[d(n.$slots,`title`,{},()=>[y(D(e.title),1)])]),_:3},8,[`class`])):w(``,!0),e.description||c.description?(i(),T(j(pe),{key:1,"data-slot":`description`,class:k(A.value.description({class:j(m)?.description}))},{default:u(()=>[d(n.$slots,`description`,{},()=>[y(D(e.description),1)])]),_:3},8,[`class`])):w(``,!0)])],2)):w(``,!0),c.body?(i(),x(`div`,{key:1,"data-slot":`body`,class:k(A.value.body({class:j(m)?.body}))},[d(n.$slots,`body`)],2)):w(``,!0),c.footer?(i(),x(`div`,{key:2,"data-slot":`footer`,class:k(A.value.footer({class:j(m)?.footer}))},[d(n.$slots,`footer`)],2)):w(``,!0)],2)])]),_:3},16,[`class`])]),_:3},16)]),_:3},16))}},Qe=(e,t,n)=>{let r=t.lastIndexOf(`?`),i=e[r===-1||r{(typeof queueMicrotask==`function`?queueMicrotask:setTimeout)(r.bind(null,Error(`Unknown variable dynamic import: `+t+(t.split(`/`).length===n?``:`. Note that variables only represent file names one level deep.`))))})};export{Ze as n,Qe as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/auth-CdHmhksw.js b/assets/public/dist/assets/auth-CdHmhksw.js new file mode 100644 index 0000000..58bef1d --- /dev/null +++ b/assets/public/dist/assets/auth-CdHmhksw.js @@ -0,0 +1 @@ +import"./useFetchJson-4WJQFaEO.js";import{t as e}from"./auth-hZSBdvj-.js";export{e as useAuthStore}; \ No newline at end of file diff --git a/assets/public/dist/assets/auth-hZSBdvj-.js b/assets/public/dist/assets/auth-hZSBdvj-.js new file mode 100644 index 0000000..42f4eb4 --- /dev/null +++ b/assets/public/dist/assets/auth-hZSBdvj-.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/router-Wd6OrXcf.js","assets/useFetchJson-4WJQFaEO.js","assets/Icon-Chkiq2IE.js","assets/vue.runtime.esm-bundler-BM5WPBHd.js","assets/Button-jwL-tYHc.js","assets/router-CoYWQDRi.js","assets/HomeView-CdMOMcn8.js","assets/PopperArrow-CcUKYeE0.js","assets/usePortal-Zddbph8M.js","assets/useForwardExpose-BgPOLLFN.js","assets/settings-BcOmX106.js","assets/Collection-BkGqWqUl.js","assets/VisuallyHiddenInput-BH1aLUkb.js"])))=>i.map(i=>d[i]); +import{C as e,J as t,O as n,at as r,ct as i,d as a,gt as o,it as s,mt as c,nt as l,ot as u,st as d,tt as f,ut as p,w as m}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{n as h,t as g}from"./useFetchJson-4WJQFaEO.js";var _=typeof window<`u`,v,y=e=>v=e,b=Symbol();function x(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var S;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(S||={});var C=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function w(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function T(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){A(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function E(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function D(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var O=typeof navigator==`object`?navigator:{userAgent:``},k=/Macintosh/.test(O.userAgent)&&/AppleWebKit/.test(O.userAgent)&&!/Safari/.test(O.userAgent),A=_?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!k?j:`msSaveOrOpenBlob`in O?M:N:()=>{};function j(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?D(r):E(r.href)?T(e,t,n):(r.target=`_blank`,D(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){D(r)},0))}function M(e,t=`download`,n){if(typeof e==`string`)if(E(e))T(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){D(t)})}else navigator.msSaveOrOpenBlob(w(e,n),t)}function N(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return T(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(C.HTMLElement))||`safari`in C,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||k)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:P}=Object;function F(){let e=f(!0),t=e.run(()=>p({})),n=[],r=[],i=u({install(e){y(i),i._a=e,e.provide(b,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var I=()=>{};function L(e,t,n,r=I){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&l()&&d(i),i}function R(e,...t){e.forEach(e=>{e(...t)})}var z=e=>e(),B=Symbol(),V=Symbol();function H(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!t.hasOwnProperty(n))continue;let i=t[n],a=e[n];x(a)&&x(i)&&e.hasOwnProperty(n)&&!r(i)&&!s(i)?e[n]=H(a,i):e[n]=i}return e}var U=Symbol();function W(e){return!x(e)||!Object.prototype.hasOwnProperty.call(e,U)}var{assign:G}=Object;function K(e){return!!(r(e)&&e.effect)}function q(e,t,n,r){let{state:i,actions:s,getters:c}=t,l=n.state.value[e],d;function f(){return l||(n.state.value[e]=i?i():{}),G(o(n.state.value[e]),s,Object.keys(c||{}).reduce((t,r)=>(t[r]=u(a(()=>{y(n);let t=n._s.get(e);return c[r].call(t,t)})),t),{}))}return d=J(e,f,t,n,r,!0),d}function J(e,a,o={},l,u,d){let m,h=G({actions:{}},o),g={deep:!0},_,v,b=new Set,x=new Set,C=l.state.value[e];!d&&!C&&(l.state.value[e]={}),p({});let w;function T(t){let r;_=v=!1,typeof t==`function`?(t(l.state.value[e]),r={type:S.patchFunction,storeId:e,events:void 0}):(H(l.state.value[e],t),r={type:S.patchObject,payload:t,storeId:e,events:void 0});let i=w=Symbol();n().then(()=>{w===i&&(_=!0)}),v=!0,R(b,r,l.state.value[e])}let E=d?function(){let{state:e}=o,t=e?e():{};this.$patch(e=>{G(e,t)})}:I;function D(){m.stop(),b.clear(),x.clear(),l._s.delete(e)}let O=(t,n=``)=>{if(B in t)return t[V]=n,t;let r=function(){y(l);let n=Array.from(arguments),i=new Set,a=new Set;function o(e){i.add(e)}function s(e){a.add(e)}R(x,{args:n,name:r[V],store:k,after:o,onError:s});let c;try{c=t.apply(this&&this.$id===e?this:k,n)}catch(e){throw R(a,e),e}return c instanceof Promise?c.then(e=>(R(i,e),e)).catch(e=>(R(a,e),Promise.reject(e))):(R(i,c),c)};return r[B]=!0,r[V]=n,r},k=i({_p:l,$id:e,$onAction:L.bind(null,x),$patch:T,$reset:E,$subscribe(n,r={}){let i=L(b,n,r.detached,()=>a()),a=m.run(()=>t(()=>l.state.value[e],t=>{(r.flush===`sync`?v:_)&&n({storeId:e,type:S.direct,events:void 0},t)},G({},g,r)));return i},$dispose:D});l._s.set(e,k);let A=(l._a&&l._a.runWithContext||z)(()=>l._e.run(()=>(m=f()).run(()=>a({action:O}))));for(let t in A){let n=A[t];r(n)&&!K(n)||s(n)?d||(C&&W(n)&&(r(n)?n.value=C[t]:H(n,C[t])),l.state.value[e][t]=n):typeof n==`function`&&(A[t]=O(n,t),h.actions[t]=n)}return G(k,A),G(c(k),A),Object.defineProperty(k,`$state`,{get:()=>l.state.value[e],set:e=>{T(t=>{G(t,e)})}}),l._p.forEach(e=>{G(k,m.run(()=>e({store:k,app:l._a,pinia:l,options:h})))}),C&&d&&o.hydrate&&o.hydrate(k.$state,C),_=!0,v=!0,k}function Y(t,n,r){let i,a=typeof n==`function`;i=a?r:n;function o(r,o){let s=e();return r||=s?m(b,null):null,r&&y(r),r=v,r._s.has(t)||(a?J(t,n,i,r):q(t,i,r)),r._s.get(t)}return o.$id=t,o}function X(){return typeof document>`u`?!1:document.cookie.split(`; `).some(e=>e===`is_authenticated=1`)}const Z=Y(`auth`,()=>{let e=p(null),t=p(!1),n=p(null),r=p(X()),i=a(()=>r.value);function o(){r.value=X()}async function s(r,i){t.value=!0,n.value=null;try{let t=await g(`/api/v1/auth/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({email:r,password:i})}),n=t.items||t;if(!n.access_token)throw Error(`No access token received`);return e.value=n.user,o(),!0}catch(e){return n.value=e?.error??`An error occurred`,!1}finally{t.value=!1}}async function c(e,r,i,a,o,s){t.value=!0,n.value=null;try{return await g(`/api/v1/auth/register`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({first_name:e,last_name:r,email:i,password:a,confirm_password:o,lang:s||`en`})}),{success:!0,requiresVerification:!0}}catch(e){return n.value=e?.error??`An error occurred`,{success:!1,requiresVerification:!1}}finally{t.value=!1}}async function l(e){t.value=!0,n.value=null;try{return await g(`/api/v1/auth/forgot-password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({email:e})}),!0}catch(e){return n.value=e?.error??`An error occurred`,!1}finally{t.value=!1}}async function u(e,r){t.value=!0,n.value=null;try{return await g(`/api/v1/auth/reset-password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,password:r})}),!0}catch(e){return n.value=e?.error??`An error occurred`,!1}finally{t.value=!1}}function d(){window.location.href=`/api/v1/auth/google`}async function f(){try{await g(`/api/v1/auth/logout`,{method:`POST`})}catch{}finally{e.value=null,r.value=!1;let{default:t}=await h(async()=>{let{default:e}=await import(`./router-Wd6OrXcf.js`);return{default:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]));t.push({name:`login`})}}async function m(){try{return await g(`/api/v1/auth/refresh`,{method:`POST`,headers:{"Content-Type":`application/json`}}),o(),!0}catch{return e.value=null,r.value=!1,!1}}function _(){n.value=null}return{user:e,loading:t,error:n,isAuthenticated:i,login:s,loginWithGoogle:d,register:c,requestPasswordReset:l,resetPassword:u,logout:f,refreshAccessToken:m,clearError:_}});export{F as n,Y as r,Z as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/cs_PrivacyPolicyView-Be5X4T0B.js b/assets/public/dist/assets/cs_PrivacyPolicyView-Be5X4T0B.js new file mode 100644 index 0000000..6ad1f99 --- /dev/null +++ b/assets/public/dist/assets/cs_PrivacyPolicyView-Be5X4T0B.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,f as r,h as i,y as a}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{Q as o,t as s}from"./Icon-Chkiq2IE.js";import{t as c}from"./Card-DPC9xXwj.js";var l={class:`min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8`},u={class:`max-w-4xl mx-auto`},d={class:`text-center mb-12`},f={class:`inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30`},p=a({__name:`cs_PrivacyPolicyView`,setup(a){let{t:p}=o();return(a,o)=>{let p=s,m=c;return e(),i(`div`,l,[r(`div`,u,[r(`div`,d,[r(`div`,f,[n(p,{name:`i-heroicons-shield-check`,class:`w-8 h-8`})]),o[0]||=r(`h1`,{class:`text-3xl font-bold text-gray-900 dark:text-white`},`Zásady ochrany osobních údajů`,-1),o[1]||=r(`p`,{class:`mt-2 text-sm text-gray-600 dark:text-gray-400`},`Poslední aktualizace: březen 2026`,-1)]),n(m,{class:`shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50`},{footer:t(()=>[...o[2]||=[r(`div`,{class:`flex justify-center`},null,-1)]]),default:t(()=>[o[3]||=r(`div`,{class:`prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6`},[r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`1. Úvod`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` V TimeTracker bereme vaše soukromí vážně. Tyto Zásady ochrany osobních údajů vysvětlují, jak shromažďujeme, používáme, sdílíme a chráníme vaše informace při používání naší aplikace. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`2. Informace, které shromažďujeme`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Můžeme shromažďovat osobní údaje, které nám dobrovolně poskytujete, když:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Registrujete účet`),r(`li`,null,`Používáte funkce sledování času`),r(`li`,null,`Vytváříte nebo spravujete projekty`),r(`li`,null,`Generujete reporty`),r(`li`,null,`Kontaktujete naši podporu`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`3. Jak používáme vaše informace`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Shromážděné informace používáme k:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Poskytování a údržbě našich služeb`),r(`li`,null,`Sledování vašeho času a správě projektů`),r(`li`,null,`Zlepšování našich služeb a uživatelského zážitku`),r(`li`,null,`Komunikaci s vámi ohledně aktualizací a podpory`),r(`li`,null,`Plnění právních povinností`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`4. Ukládání a zabezpečení dat`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Vaše data jsou bezpečně ukládána pomocí šifrování podle průmyslových standardů. Implementujeme vhodná technická a organizační opatření na ochranu vašich osobních údajů před neoprávněným přístupem, změnou, zveřejněním nebo zničením. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`5. Sdílení dat`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Vaše osobní údaje neprodáváme, nevyměňujeme ani jinak nepřevádíme třetím stranám. Můžeme sdílet informace s: `),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Poskytovateli služeb, kteří nám pomáhají`),r(`li`,null,`Právními orgány, když to vyžaduje zákon`),r(`li`,null,`Obchodními partnery s vaším souhlasem`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`6. Vaše práva`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Máte právo na:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Přístup k vašim osobním údajům`),r(`li`,null,`Opravu nepřesných údajů`),r(`li`,null,`Žádost o smazání vašich údajů`),r(`li`,null,`Export vašich dat v přenosném formátu`),r(`li`,null,`Odhlášení z marketingových sdělení`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`7. Cookies a sledovací technologie`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Používáme cookies a podobné sledovací technologie pro zlepšení vašeho zážitku. Cookies můžete ovládat prostřednictvím nastavení prohlížeče. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`8. Soukromí dětí`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Naše služba není určena pro děti mladší 13 let. Vědomě neshromažďujeme osobní údaje od dětí mladších 13 let. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`9. Změny těchto zásad`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Tyto Zásady ochrany osobních údajů můžeme čas od času aktualizovat. Jakékoli změny vám oznámíme zveřejněním nových zásad na této stránce a aktualizací data "Poslední aktualizace". `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`10. Kontaktujte nás`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Máte-li jakékoli dotazy ohledně těchto Zásad ochrany osobních údajů, kontaktujte nás na adrese privacy@timetracker.com. `)])],-1)]),_:1})])])}}});export{p as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/cs_TermsAndConditionsView-DP2Pp5Ho.js b/assets/public/dist/assets/cs_TermsAndConditionsView-DP2Pp5Ho.js new file mode 100644 index 0000000..30de6cb --- /dev/null +++ b/assets/public/dist/assets/cs_TermsAndConditionsView-DP2Pp5Ho.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,f as r,h as i,y as a}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{Q as o,t as s}from"./Icon-Chkiq2IE.js";import{t as c}from"./Card-DPC9xXwj.js";var l={class:`min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8`},u={class:`max-w-4xl mx-auto`},d={class:`text-center mb-12`},f={class:`inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30`},p=a({__name:`cs_TermsAndConditionsView`,setup(a){let{t:p}=o();return(a,o)=>{let p=s,m=c;return e(),i(`div`,l,[r(`div`,u,[r(`div`,d,[r(`div`,f,[n(p,{name:`i-heroicons-document-text`,class:`w-8 h-8`})]),o[0]||=r(`h1`,{class:`text-3xl font-bold text-gray-900 dark:text-white`},`Podmínky použití`,-1),o[1]||=r(`p`,{class:`mt-2 text-sm text-gray-600 dark:text-gray-400`},`Poslední aktualizace: březen 2026`,-1)]),n(m,{class:`shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50`},{footer:t(()=>[...o[2]||=[r(`div`,{class:`flex justify-center`},null,-1)]]),default:t(()=>[o[3]||=r(`div`,{class:`prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6`},[r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`1. Přijetí podmínek`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Používáním aplikace TimeTracker souhlasíte a zavazujete se dodržovat podmínky a ustanovení této dohody. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`2. Popis služby`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` TimeTracker je aplikace pro sledování času, která uživatelům umožňuje sledovat pracovní hodiny, spravovat projekty a generovat reporty. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`3. Odpovědnosti uživatele`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Souhlasíte s:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Poskytováním přesných a úplných informací`),r(`li`,null,`Udržováním bezpečnosti svého účtu`),r(`li`,null,`Nesdílením přihlašovacích údajů s ostatními`),r(`li`,null,`Používáním služby v souladu s platnými zákony`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`4. Ochrana osobních údajů`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Jsme odhodláni chránit vaše soukromí. Vaše osobní údaje budou zpracovány v souladu s naší Zásadami ochrany osobních údajů a příslušnými zákony o ochraně dat. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`5. Duševní vlastnictví`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Služba TimeTracker a veškerý její obsah, včetně mimo jiné textů, grafiky, loga a softwaru, je majetkem TimeTracker a je chráněn zákony o duševním vlastnictví. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`6. Omezení odpovědnosti`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` TimeTracker neodpovídá za jakékoli nepřímé, náhodné, zvláštní, následné nebo trestné škody vzniklé v důsledku vašeho používání nebo neschopnosti používat službu. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`7. Ukončení`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Vyhrazujeme si právo ukončit nebo pozastavit váš účet kdykoli, bez předchozího upozornění, za chování, které por tyto Podmušujeínky použití nebo je škodlivé pro ostatní uživatele nebo službu. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`8. Změny podmínek`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Vyhrazujeme si právo kdykoli upravit tyto Podmínky použití. Vaše další používání TimeTracker po jakýchkoli změnách znamená přijetí nových podmínek. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`9. Kontaktní informace`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Máte-li jakékoli dotazy ohledně těchto Podmínek použití, kontaktujte nás na adrese support@timetracker.com. `)])],-1)]),_:1})])])}}});export{p as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/en_PrivacyPolicyView-C0wuScgt.js b/assets/public/dist/assets/en_PrivacyPolicyView-C0wuScgt.js new file mode 100644 index 0000000..c5aadf6 --- /dev/null +++ b/assets/public/dist/assets/en_PrivacyPolicyView-C0wuScgt.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,f as r,h as i,y as a}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{Q as o,t as s}from"./Icon-Chkiq2IE.js";import{t as c}from"./Card-DPC9xXwj.js";var l={class:`min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8`},u={class:`max-w-4xl mx-auto`},d={class:`text-center mb-12`},f={class:`inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30`},p=a({__name:`en_PrivacyPolicyView`,setup(a){let{t:p}=o();return(a,o)=>{let p=s,m=c;return e(),i(`div`,l,[r(`div`,u,[r(`div`,d,[r(`div`,f,[n(p,{name:`i-heroicons-shield-check`,class:`w-8 h-8`})]),o[0]||=r(`h1`,{class:`text-3xl font-bold text-gray-900 dark:text-white`},`Privacy Policy`,-1),o[1]||=r(`p`,{class:`mt-2 text-sm text-gray-600 dark:text-gray-400`},`Last updated: March 2026`,-1)]),n(m,{class:`shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50`},{footer:t(()=>[...o[2]||=[r(`div`,{class:`flex justify-center`},null,-1)]]),default:t(()=>[o[3]||=r(`div`,{class:`prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6`},[r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`1. Introduction`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` At TimeTracker, we take your privacy seriously. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our application. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`2. Information We Collect`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`We may collect personal information that you voluntarily provide to us when you:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Register for an account`),r(`li`,null,`Use our time tracking features`),r(`li`,null,`Create or manage projects`),r(`li`,null,`Generate reports`),r(`li`,null,`Contact our support team`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`3. How We Use Your Information`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`We use the information we collect to:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Provide and maintain our services`),r(`li`,null,`Track your time and manage your projects`),r(`li`,null,`Improve our services and user experience`),r(`li`,null,`Communicate with you about updates and support`),r(`li`,null,`Comply with legal obligations`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`4. Data Storage and Security`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Your data is stored securely using industry-standard encryption. We implement appropriate technical and organizational measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`5. Data Sharing`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` We do not sell, trade, or otherwise transfer your personal information to outside parties. We may share information with: `),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Service providers who assist in our operations`),r(`li`,null,`Legal authorities when required by law`),r(`li`,null,`Business partners with your consent`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`6. Your Rights`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`You have the right to:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Access your personal information`),r(`li`,null,`Correct inaccurate data`),r(`li`,null,`Request deletion of your data`),r(`li`,null,`Export your data in a portable format`),r(`li`,null,`Opt-out of marketing communications`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`7. Cookies and Tracking Technologies`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` We use cookies and similar tracking technologies to enhance your experience. You can control cookies through your browser settings. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`8. Children's Privacy`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Our service is not intended for children under 13. We do not knowingly collect personal information from children under 13. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`9. Changes to This Policy`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy on this page and updating the "Last updated" date. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`10. Contact Us`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`If you have any questions about this Privacy Policy, please contact us at privacy@timetracker.com.`)])],-1)]),_:1})])])}}});export{p as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/en_TermsAndConditionsView-C9vscF7i.js b/assets/public/dist/assets/en_TermsAndConditionsView-C9vscF7i.js new file mode 100644 index 0000000..45babda --- /dev/null +++ b/assets/public/dist/assets/en_TermsAndConditionsView-C9vscF7i.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,f as r,h as i,y as a}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{Q as o,t as s}from"./Icon-Chkiq2IE.js";import{t as c}from"./Card-DPC9xXwj.js";var l={class:`min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8`},u={class:`max-w-4xl mx-auto`},d={class:`text-center mb-12`},f={class:`inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30`},p=a({__name:`en_TermsAndConditionsView`,setup(a){let{t:p}=o();return(a,o)=>{let p=s,m=c;return e(),i(`div`,l,[r(`div`,u,[r(`div`,d,[r(`div`,f,[n(p,{name:`i-heroicons-document-text`,class:`w-8 h-8`})]),o[0]||=r(`h1`,{class:`text-3xl font-bold text-gray-900 dark:text-white`},`Terms and Conditions`,-1),o[1]||=r(`p`,{class:`mt-2 text-sm text-gray-600 dark:text-gray-400`},`Last updated: March 2026`,-1)]),n(m,{class:`shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50`},{footer:t(()=>[...o[2]||=[r(`div`,{class:`flex justify-center`},null,-1)]]),default:t(()=>[o[3]||=r(`div`,{class:`prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6`},[r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`1. Acceptance of Terms`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` By accessing and using TimeTracker, you accept and agree to be bound by the terms and provision of this agreement. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`2. Description of Service`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` TimeTracker is a time tracking application that allows users to track their working hours, manage projects, and generate reports. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`3. User Responsibilities`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`You agree to:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Provide accurate and complete information`),r(`li`,null,`Maintain the security of your account`),r(`li`,null,`Not share your login credentials with others`),r(`li`,null,`Use the service in compliance with applicable laws`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`4. Privacy and Data Protection`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` We are committed to protecting your privacy. Your personal data will be processed in accordance with our Privacy Policy and applicable data protection laws. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`5. Intellectual Property`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` The TimeTracker service and all its contents, including but not limited to text, graphics, logos, and software, are the property of TimeTracker and are protected by intellectual property laws. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`6. Limitation of Liability`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` TimeTracker shall not be liable for any indirect, incidental, special, consequential, or punitive damages resulting from your use of or inability to use the service. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`7. Termination`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` We reserve the right to terminate or suspend your account at any time, without prior notice, for conduct that we believe violates these Terms and Conditions or is harmful to other users or the service. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`8. Changes to Terms`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` We reserve the right to modify these Terms and Conditions at any time. Your continued use of TimeTracker after any changes indicates your acceptance of the new terms. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`9. Contact Information`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` If you have any questions about these Terms and Conditions, please contact us at support@timetracker.com. `)])],-1)]),_:1})])])}}});export{p as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/index-BqfKAJS4.js b/assets/public/dist/assets/index-BqfKAJS4.js new file mode 100644 index 0000000..c93ff8a --- /dev/null +++ b/assets/public/dist/assets/index-BqfKAJS4.js @@ -0,0 +1,15 @@ +import{A as e,C as t,F as n,Q as r,Y as i,_ as a,_t as o,at as s,b as c,d as l,j as u,k as ee,n as te,p as ne,s as d,ut as f,w as p,y as m,yt as h}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import"./useFetchJson-4WJQFaEO.js";import{r as g}from"./useForwardExpose-BgPOLLFN.js";import{D as _,K as v,S as re,c as ie,l as ae}from"./Icon-Chkiq2IE.js";import{n as oe}from"./auth-hZSBdvj-.js";import{t as se}from"./router-CoYWQDRi.js";import"./Button-jwL-tYHc.js";import"./settings-BcOmX106.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ce=m({__name:`App`,setup(e){return(e,t)=>(n(),ne(d,null,{default:r(()=>[a(h(v))]),_:1}))}});function y(e,t={},n){for(let r in e){let i=e[r],a=n?`${n}:${r}`:r;typeof i==`object`&&i?y(i,t,a):typeof i==`function`&&(t[a]=i)}return t}var b=(()=>{if(console.createTask)return console.createTask;let e={run:e=>e()};return()=>e})();function x(e,t,n,r){for(let i=n;ie[i](...t)):e[i](...t);if(n instanceof Promise)return n.then(()=>x(e,t,i+1,r))}catch(e){return Promise.reject(e)}}function le(e,t,n){if(e.length>0)return x(e,t,0,b(n))}function ue(e,t,n){if(e.length>0){let r=b(n);return Promise.all(e.map(e=>r.run(()=>e(...t))))}}function S(e,t){for(let n of[...e])n(t)}var C=class{_hooks;_before;_after;_deprecatedHooks;_deprecatedMessages;constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!=`function`)return()=>{};let r=e,i;for(;this._deprecatedHooks[e];)i=this._deprecatedHooks[e],e=i.to;if(i&&!n.allowDeprecated){let e=i.message;e||=`${r} hook has been deprecated`+(i.to?`, please use ${i.to}`:``),this._deprecatedMessages||=new Set,this._deprecatedMessages.has(e)||(console.warn(e),this._deprecatedMessages.add(e))}if(!t.name)try{Object.defineProperty(t,`name`,{get:()=>`_`+e.replace(/\W+/g,`_`)+`_hook_cb`,configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&=(this.removeHook(e,t),void 0)}}hookOnce(e,t){let n,r=(...e)=>(typeof n==`function`&&n(),n=void 0,r=void 0,t(...e));return n=this.hook(e,r),n}removeHook(e,t){let n=this._hooks[e];if(n){let r=n.indexOf(t);r!==-1&&n.splice(r,1),n.length===0&&(this._hooks[e]=void 0)}}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t==`string`?{to:t}:t;let n=this._hooks[e]||[];this._hooks[e]=void 0;for(let t of n)this.hook(e,t)}deprecateHooks(e){for(let t in e)this.deprecateHook(t,e[t])}addHooks(e){let t=y(e),n=Object.keys(t).map(e=>this.hook(e,t[e]));return()=>{for(let e of n)e();n.length=0}}removeHooks(e){let t=y(e);for(let e in t)this.removeHook(e,t[e])}removeAllHooks(){this._hooks={}}callHook(e,...t){return this.callHookWith(le,e,t)}callHookParallel(e,...t){return this.callHookWith(ue,e,t)}callHookWith(e,t,n){let r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&S(this._before,r);let i=e(this._hooks[t]?[...this._hooks[t]]:[],n,t);return i instanceof Promise?i.finally(()=>{this._after&&r&&S(this._after,r)}):(this._after&&r&&S(this._after,r),i)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){let t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){let t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function w(){return new C}var T=new Set([`link`,`style`,`script`,`noscript`]),E=new Set([`title`,`titleTemplate`,`script`,`style`,`noscript`]),D=new Set([`base`,`meta`,`link`,`style`,`script`,`noscript`]),O=new Set([`title`,`base`,`htmlAttrs`,`bodyAttrs`,`meta`,`link`,`style`,`script`,`noscript`]),k=new Set([`base`,`title`,`titleTemplate`,`bodyAttrs`,`htmlAttrs`,`templateParams`]),A=new Set([`key`,`tagPosition`,`tagPriority`,`tagDuplicateStrategy`,`innerHTML`,`textContent`,`processTemplateParams`]),j=new Set([`templateParams`,`htmlAttrs`,`bodyAttrs`]),M=new Set([`theme-color`,`google-site-verification`,`og`,`article`,`book`,`profile`,`twitter`,`author`]),N=[`name`,`property`,`http-equiv`],P=new Set([`viewport`,`description`,`keywords`,`robots`]);function F(e){let t=e.split(`:`);return t.length?M.has(t[1]):!1}function I(e){let{props:t,tag:n}=e;if(k.has(n))return n;if(n===`link`&&t.rel===`canonical`)return`canonical`;if(n===`link`&&t.rel===`alternate`){let e=t.hreflang||t.type;if(e)return`alternate:${e}`}if(t.charset)return`charset`;if(e.tag===`meta`){for(let r of N)if(t[r]!==void 0){let i=t[r],a=i&&typeof i==`string`&&i.includes(`:`),o=i&&P.has(i);return`${n}:${i}${!(a||o)&&e.key?`:key:${e.key}`:``}`}}if(e.key)return`${n}:key:${e.key}`;if(t.id)return`${n}:id:${t.id}`;if(n===`link`&&t.rel===`alternate`)return`alternate:${t.href||``}`;if(E.has(n)){let t=e.textContent||e.innerHTML;if(t)return`${n}:content:${t}`}}function L(e){return e._h||e._d||e.textContent||e.innerHTML||`${e.tag}:${Object.entries(e.props).map(([e,t])=>`${e}:${String(t)}`).join(`,`)}`}function R(e,t,n){typeof e==`function`&&(!n||n!==`titleTemplate`&&!(n[0]===`o`&&n[1]===`n`))&&(e=e());let r=t?t(n,e):e;if(Array.isArray(r))return r.map(e=>R(e,t));if(r?.constructor===Object){let e={};for(let n of Object.keys(r))e[n]=R(r[n],t,n);return e}return r}function z(e,t){let n=e===`style`?new Map:new Set;function r(t){if(t==null||t===void 0)return;let r=String(t).trim();if(r)if(e===`style`){let[e,...t]=r.split(`:`).map(e=>e?e.trim():``);e&&t.length&&n.set(e,t.join(`:`))}else r.split(` `).filter(Boolean).forEach(e=>n.add(e))}return typeof t==`string`?e===`style`?t.split(`;`).forEach(r):r(t):Array.isArray(t)?t.forEach(e=>r(e)):t&&typeof t==`object`&&Object.entries(t).forEach(([t,i])=>{i&&i!==`false`&&(e===`style`?n.set(String(t).trim(),String(i)):r(t))}),n}function B(e,t){return e.props=e.props||{},t?e.tag===`templateParams`?(e.props=t,e):(Object.entries(t).forEach(([n,r])=>{if(r===null){e.props[n]=null;return}if(n===`class`||n===`style`){e.props[n]=z(n,r);return}if(A.has(n)){if([`textContent`,`innerHTML`].includes(n)&&typeof r==`object`){let i=t.type;if(t.type||(i=`application/json`),!i?.endsWith(`json`)&&i!==`speculationrules`)return;t.type=i,e.props.type=i,e[n]=JSON.stringify(r)}else e[n]=r;return}let i=String(r),a=n.startsWith(`data-`),o=e.tag===`meta`&&n===`content`;i===`true`||i===``?e.props[n]=a||o?i:!0:!r&&a&&i===`false`?e.props[n]=`false`:r!==void 0&&(e.props[n]=r)}),e):e}function V(e,t){let n=B({tag:e,props:{}},typeof t==`object`&&typeof t!=`function`?t:{[e===`script`||e===`noscript`||e===`style`?`innerHTML`:`textContent`]:t});return n.key&&T.has(n.tag)&&(n.props[`data-hid`]=n._h=n.key),n.tag===`script`&&typeof n.innerHTML==`object`&&(n.innerHTML=JSON.stringify(n.innerHTML),n.props.type=n.props.type||`application/json`),Array.isArray(n.props.content)?n.props.content.map(e=>({...n,props:{...n.props,content:e}})):n}function H(e,t){if(!e)return[];typeof e==`function`&&(e=e());let n=(e,n)=>{for(let r=0;r{if(t!==void 0)for(let n of Array.isArray(t)?t:[t])r.push(V(e,n))}),r.flat()}var U=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,W={base:-10,title:10},de={critical:-8,high:-1,low:2},G={meta:{"content-security-policy":-30,charset:-20,viewport:-15},link:{preconnect:20,stylesheet:60,preload:70,modulepreload:70,prefetch:90,"dns-prefetch":90,prerender:90},script:{async:30,defer:80,sync:50},style:{imported:40,sync:60}},fe=/@import/,K=e=>e===``||e===!0;function pe(e,t){if(typeof t.tagPriority==`number`)return t.tagPriority;let n=100,r=de[t.tagPriority]||0,i=e.resolvedOptions.disableCapoSorting?{link:{},script:{},style:{}}:G;if(t.tag in W)n=W[t.tag];else if(t.tag===`meta`){let e=t.props[`http-equiv`]===`content-security-policy`?`content-security-policy`:t.props.charset?`charset`:t.props.name===`viewport`?`viewport`:null;e&&(n=G.meta[e])}else if(t.tag===`link`&&t.props.rel)n=i.link[t.props.rel];else if(t.tag===`script`){let e=String(t.props.type);K(t.props.async)?n=i.script.async:t.props.src&&!K(t.props.defer)&&!K(t.props.async)&&e!==`module`&&!e.endsWith(`json`)||t.innerHTML&&!e.endsWith(`json`)?n=i.script.sync:(K(t.props.defer)&&t.props.src&&!K(t.props.async)||e===`module`)&&(n=i.script.defer)}else t.tag===`style`&&(n=t.innerHTML&&fe.test(t.innerHTML)?i.style.imported:i.style.sync);return(n||100)+r}function q(e,t){let n=typeof t==`function`?t(e):t,r=n.key||String(e.plugins.size+1);e.plugins.get(r)||(e.plugins.set(r,n),e.hooks.addHooks(n.hooks||{}))}function me(e={}){let t=w();t.addHooks(e.hooks||{});let n=!e.document,r=new Map,i=new Map,a=new Set,o={_entryCount:1,plugins:i,dirty:!1,resolvedOptions:e,hooks:t,ssr:n,entries:r,headEntries(){return[...r.values()]},use:e=>q(o,e),push(e,i){let s={...i||{}};delete s.head;let c=s._index??o._entryCount++,l={_i:c,input:e,options:s},u={_poll(e=!1){o.dirty=!0,!e&&a.add(c),t.callHook(`entries:updated`,o)},dispose(){r.delete(c)&&o.invalidate()},patch(e){(!s.mode||s.mode===`server`&&n||s.mode===`client`&&!n)&&(l.input=e,r.set(c,l),u._poll())}};return u.patch(e),u},async resolveTags(){let n={tagMap:new Map,tags:[],entries:[...o.entries.values()]};for(await t.callHook(`entries:resolve`,n);a.size;){let n=a.values().next().value;a.delete(n);let i=r.get(n);if(i){let n={tags:H(i.input,e.propResolvers||[]).map(e=>Object.assign(e,i.options)),entry:i};await t.callHook(`entries:normalize`,n),i._tags=n.tags.map((e,t)=>(e._w=pe(o,e),e._p=(i._i<<10)+t,e._d=I(e),e._d||(e._h=L(e)),e))}}let i=!1;n.entries.flatMap(e=>(e._tags||[]).map(e=>({...e,props:{...e.props}}))).sort(U).reduce((e,t)=>{let n=t._d||t._h;if(!e.has(n))return e.set(n,t);let r=e.get(n);if((t?.tagDuplicateStrategy||(j.has(t.tag)?`merge`:null)||(t.key&&t.key===r.key?`merge`:null))===`merge`){let i={...r.props};Object.entries(t.props).forEach(([e,t])=>i[e]=e===`style`?new Map([...r.props.style||new Map,...t]):e===`class`?new Set([...r.props.class||new Set,...t]):t),e.set(n,{...t,props:i})}else t._p>>10==r._p>>10&&t.tag===`meta`&&F(n)?(e.set(n,Object.assign([...Array.isArray(r)?r:[r],t],t)),i=!0):(t._w===r._w?t._p>r._p:t?._wq(o,e)),o.hooks.callHook(`init`,o),e.init?.forEach(e=>e&&o.push(e)),o}async function J(e,t={}){let n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;let r={shouldRender:!0,tags:[]};if(await e.hooks.callHook(`dom:beforeRender`,r),r.shouldRender)return e._domUpdatePromise||=new Promise(async t=>{let r=new Map,i=new Promise(t=>{e.resolveTags().then(e=>{t(e.map(e=>{let t=r.get(e._d)||0,n={tag:e,id:(t?`${e._d}:${t}`:e._d)||e._h,shouldRender:!0};return e._d&&F(e._d)&&r.set(e._d,t+1),n}))})}),a=e._dom;if(!a){a={title:n.title,elMap:new Map().set(`htmlAttrs`,n.documentElement).set(`bodyAttrs`,n.body)};for(let e of[`body`,`head`]){let t=n[e]?.children;for(let e of t){let t=e.tagName.toLowerCase();if(!D.has(t))continue;let n=B({tag:t,props:{}},{innerHTML:e.innerHTML,...e.getAttributeNames().reduce((t,n)=>(t[n]=e.getAttribute(n),t),{})||{}});if(n.key=e.getAttribute(`data-hid`)||void 0,n._d=I(n)||L(n),a.elMap.has(n._d)){let t=1,r=n._d;for(;a.elMap.has(r);)r=`${n._d}:${t++}`;a.elMap.set(r,e)}else a.elMap.set(n._d,e)}}}a.pendingSideEffects={...a.sideEffects},a.sideEffects={};function o(e,t,n){let r=`${e}:${t}`;a.sideEffects[r]=n,delete a.pendingSideEffects[r]}function s({id:e,$el:t,tag:r}){let i=r.tag.endsWith(`Attrs`);a.elMap.set(e,t),i||(r.textContent&&r.textContent!==t.textContent&&(t.textContent=r.textContent),r.innerHTML&&r.innerHTML!==t.innerHTML&&(t.innerHTML=r.innerHTML),o(e,`el`,()=>{t?.remove(),a.elMap.delete(e)}));for(let a in r.props){if(!Object.prototype.hasOwnProperty.call(r.props,a))continue;let s=r.props[a];if(a.startsWith(`on`)&&typeof s==`function`){let e=t?.dataset;if(e&&e[`${a}fired`]){let e=a.slice(0,-5);s.call(t,new Event(e.substring(2)))}t.getAttribute(`data-${a}`)!==``&&((r.tag===`bodyAttrs`?n.defaultView:t).addEventListener(a.substring(2),s.bind(t)),t.setAttribute(`data-${a}`,``));continue}let c=`attr:${a}`;if(a===`class`){if(!s)continue;for(let n of s)i&&o(e,`${c}:${n}`,()=>t.classList.remove(n)),!t.classList.contains(n)&&t.classList.add(n)}else if(a===`style`){if(!s)continue;for(let[n,r]of s)o(e,`${c}:${n}`,()=>{t.style.removeProperty(n)}),t.style.setProperty(n,r)}else s!==!1&&s!==null&&(t.getAttribute(a)!==s&&t.setAttribute(a,s===!0?``:String(s)),i&&o(e,c,()=>t.removeAttribute(a)))}}let c=[],l={bodyClose:void 0,bodyOpen:void 0,head:void 0},u=await i;for(let e of u){let{tag:t,shouldRender:r,id:i}=e;if(r){if(t.tag===`title`){n.title=t.textContent,o(`title`,``,()=>n.title=a.title);continue}e.$el=e.$el||a.elMap.get(i),e.$el?s(e):D.has(t.tag)&&c.push(e)}}for(let e of c){let t=e.tag.tagPosition||`head`;e.$el=n.createElement(e.tag.tag),s(e),l[t]=l[t]||n.createDocumentFragment(),l[t].appendChild(e.$el)}for(let t of u)await e.hooks.callHook(`dom:renderTag`,t,n,o);l.head&&n.head.appendChild(l.head),l.bodyOpen&&n.body.insertBefore(l.bodyOpen,n.body.firstChild),l.bodyClose&&n.body.appendChild(l.bodyClose);for(let e in a.pendingSideEffects)a.pendingSideEffects[e]();e._dom=a,await e.hooks.callHook(`dom:rendered`,{renders:u}),t()}).finally(()=>{e._domUpdatePromise=void 0,e.dirty=!1}),e._domUpdatePromise}function he(e={}){let t=e.domOptions?.render||J;e.document=e.document||(typeof window<`u`?document:void 0);let n=e.document?.head.querySelector(`script[id="unhead:payload"]`)?.innerHTML||!1;return me({...e,plugins:[...e.plugins||[],{key:`client`,hooks:{"entries:updated":t}}],init:[n?JSON.parse(n):!1,...e.init||[]]})}function ge(e,t){let n=0;return()=>{let r=++n;t(()=>{n===r&&e()})}}var _e=(e,t)=>s(t)?o(t):t,Y=`usehead`;function ve(e){return{install(t){t.config.globalProperties.$unhead=e,t.config.globalProperties.$head=e,t.provide(Y,e)}}.install}function ye(){if(t()){let e=p(Y);if(e)return e}throw Error(`useHead() was called without provide context, ensure you call it through the setup() function.`)}function be(e,t={}){let n=t.head||ye();return n.ssr?n.push(e||{},t):xe(n,e,t)}function xe(t,n,r={}){let a=f(!1),o;return i(()=>{let e=a.value?{}:R(n,_e);o?o.patch(e):o=t.push(e,r)}),c()&&(e(()=>{o.dispose()}),u(()=>{a.value=!0}),ee(()=>{a.value=!1})),o}function Se(e={}){let t=he({domOptions:{render:ge(()=>J(t),e=>setTimeout(e,0))},...e});return t.install=ve(t),t}var Ce={install(e){if(e._context.provides.usehead)return;let t=Se();e.use(t)}},X={install(e,t){t?.router&&typeof t.router==`function`&&e.provide(`nuxtui:router`,t.router)}},Z={inherit:`inherit`,current:`currentcolor`,transparent:`transparent`,black:`#000`,white:`#fff`,slate:{50:`oklch(98.4% 0.003 247.858)`,100:`oklch(96.8% 0.007 247.896)`,200:`oklch(92.9% 0.013 255.508)`,300:`oklch(86.9% 0.022 252.894)`,400:`oklch(70.4% 0.04 256.788)`,500:`oklch(55.4% 0.046 257.417)`,600:`oklch(44.6% 0.043 257.281)`,700:`oklch(37.2% 0.044 257.287)`,800:`oklch(27.9% 0.041 260.031)`,900:`oklch(20.8% 0.042 265.755)`,950:`oklch(12.9% 0.042 264.695)`},gray:{50:`oklch(98.5% 0.002 247.839)`,100:`oklch(96.7% 0.003 264.542)`,200:`oklch(92.8% 0.006 264.531)`,300:`oklch(87.2% 0.01 258.338)`,400:`oklch(70.7% 0.022 261.325)`,500:`oklch(55.1% 0.027 264.364)`,600:`oklch(44.6% 0.03 256.802)`,700:`oklch(37.3% 0.034 259.733)`,800:`oklch(27.8% 0.033 256.848)`,900:`oklch(21% 0.034 264.665)`,950:`oklch(13% 0.028 261.692)`},zinc:{50:`oklch(98.5% 0 0)`,100:`oklch(96.7% 0.001 286.375)`,200:`oklch(92% 0.004 286.32)`,300:`oklch(87.1% 0.006 286.286)`,400:`oklch(70.5% 0.015 286.067)`,500:`oklch(55.2% 0.016 285.938)`,600:`oklch(44.2% 0.017 285.786)`,700:`oklch(37% 0.013 285.805)`,800:`oklch(27.4% 0.006 286.033)`,900:`oklch(21% 0.006 285.885)`,950:`oklch(14.1% 0.005 285.823)`},neutral:{50:`oklch(98.5% 0 0)`,100:`oklch(97% 0 0)`,200:`oklch(92.2% 0 0)`,300:`oklch(87% 0 0)`,400:`oklch(70.8% 0 0)`,500:`oklch(55.6% 0 0)`,600:`oklch(43.9% 0 0)`,700:`oklch(37.1% 0 0)`,800:`oklch(26.9% 0 0)`,900:`oklch(20.5% 0 0)`,950:`oklch(14.5% 0 0)`},stone:{50:`oklch(98.5% 0.001 106.423)`,100:`oklch(97% 0.001 106.424)`,200:`oklch(92.3% 0.003 48.717)`,300:`oklch(86.9% 0.005 56.366)`,400:`oklch(70.9% 0.01 56.259)`,500:`oklch(55.3% 0.013 58.071)`,600:`oklch(44.4% 0.011 73.639)`,700:`oklch(37.4% 0.01 67.558)`,800:`oklch(26.8% 0.007 34.298)`,900:`oklch(21.6% 0.006 56.043)`,950:`oklch(14.7% 0.004 49.25)`},mauve:{50:`oklch(98.5% 0 0)`,100:`oklch(96% 0.003 325.6)`,200:`oklch(92.2% 0.005 325.62)`,300:`oklch(86.5% 0.012 325.68)`,400:`oklch(71.1% 0.019 323.02)`,500:`oklch(54.2% 0.034 322.5)`,600:`oklch(43.5% 0.029 321.78)`,700:`oklch(36.4% 0.029 323.89)`,800:`oklch(26.3% 0.024 320.12)`,900:`oklch(21.2% 0.019 322.12)`,950:`oklch(14.5% 0.008 326)`},olive:{50:`oklch(98.8% 0.003 106.5)`,100:`oklch(96.6% 0.005 106.5)`,200:`oklch(93% 0.007 106.5)`,300:`oklch(88% 0.011 106.6)`,400:`oklch(73.7% 0.021 106.9)`,500:`oklch(58% 0.031 107.3)`,600:`oklch(46.6% 0.025 107.3)`,700:`oklch(39.4% 0.023 107.4)`,800:`oklch(28.6% 0.016 107.4)`,900:`oklch(22.8% 0.013 107.4)`,950:`oklch(15.3% 0.006 107.1)`},mist:{50:`oklch(98.7% 0.002 197.1)`,100:`oklch(96.3% 0.002 197.1)`,200:`oklch(92.5% 0.005 214.3)`,300:`oklch(87.2% 0.007 219.6)`,400:`oklch(72.3% 0.014 214.4)`,500:`oklch(56% 0.021 213.5)`,600:`oklch(45% 0.017 213.2)`,700:`oklch(37.8% 0.015 216)`,800:`oklch(27.5% 0.011 216.9)`,900:`oklch(21.8% 0.008 223.9)`,950:`oklch(14.8% 0.004 228.8)`},taupe:{50:`oklch(98.6% 0.002 67.8)`,100:`oklch(96% 0.002 17.2)`,200:`oklch(92.2% 0.005 34.3)`,300:`oklch(86.8% 0.007 39.5)`,400:`oklch(71.4% 0.014 41.2)`,500:`oklch(54.7% 0.021 43.1)`,600:`oklch(43.8% 0.017 39.3)`,700:`oklch(36.7% 0.016 35.7)`,800:`oklch(26.8% 0.011 36.5)`,900:`oklch(21.4% 0.009 43.1)`,950:`oklch(14.7% 0.004 49.3)`},red:{50:`oklch(97.1% 0.013 17.38)`,100:`oklch(93.6% 0.032 17.717)`,200:`oklch(88.5% 0.062 18.334)`,300:`oklch(80.8% 0.114 19.571)`,400:`oklch(70.4% 0.191 22.216)`,500:`oklch(63.7% 0.237 25.331)`,600:`oklch(57.7% 0.245 27.325)`,700:`oklch(50.5% 0.213 27.518)`,800:`oklch(44.4% 0.177 26.899)`,900:`oklch(39.6% 0.141 25.723)`,950:`oklch(25.8% 0.092 26.042)`},orange:{50:`oklch(98% 0.016 73.684)`,100:`oklch(95.4% 0.038 75.164)`,200:`oklch(90.1% 0.076 70.697)`,300:`oklch(83.7% 0.128 66.29)`,400:`oklch(75% 0.183 55.934)`,500:`oklch(70.5% 0.213 47.604)`,600:`oklch(64.6% 0.222 41.116)`,700:`oklch(55.3% 0.195 38.402)`,800:`oklch(47% 0.157 37.304)`,900:`oklch(40.8% 0.123 38.172)`,950:`oklch(26.6% 0.079 36.259)`},amber:{50:`oklch(98.7% 0.022 95.277)`,100:`oklch(96.2% 0.059 95.617)`,200:`oklch(92.4% 0.12 95.746)`,300:`oklch(87.9% 0.169 91.605)`,400:`oklch(82.8% 0.189 84.429)`,500:`oklch(76.9% 0.188 70.08)`,600:`oklch(66.6% 0.179 58.318)`,700:`oklch(55.5% 0.163 48.998)`,800:`oklch(47.3% 0.137 46.201)`,900:`oklch(41.4% 0.112 45.904)`,950:`oklch(27.9% 0.077 45.635)`},yellow:{50:`oklch(98.7% 0.026 102.212)`,100:`oklch(97.3% 0.071 103.193)`,200:`oklch(94.5% 0.129 101.54)`,300:`oklch(90.5% 0.182 98.111)`,400:`oklch(85.2% 0.199 91.936)`,500:`oklch(79.5% 0.184 86.047)`,600:`oklch(68.1% 0.162 75.834)`,700:`oklch(55.4% 0.135 66.442)`,800:`oklch(47.6% 0.114 61.907)`,900:`oklch(42.1% 0.095 57.708)`,950:`oklch(28.6% 0.066 53.813)`},lime:{50:`oklch(98.6% 0.031 120.757)`,100:`oklch(96.7% 0.067 122.328)`,200:`oklch(93.8% 0.127 124.321)`,300:`oklch(89.7% 0.196 126.665)`,400:`oklch(84.1% 0.238 128.85)`,500:`oklch(76.8% 0.233 130.85)`,600:`oklch(64.8% 0.2 131.684)`,700:`oklch(53.2% 0.157 131.589)`,800:`oklch(45.3% 0.124 130.933)`,900:`oklch(40.5% 0.101 131.063)`,950:`oklch(27.4% 0.072 132.109)`},green:{50:`oklch(98.2% 0.018 155.826)`,100:`oklch(96.2% 0.044 156.743)`,200:`oklch(92.5% 0.084 155.995)`,300:`oklch(87.1% 0.15 154.449)`,400:`oklch(79.2% 0.209 151.711)`,500:`oklch(72.3% 0.219 149.579)`,600:`oklch(62.7% 0.194 149.214)`,700:`oklch(52.7% 0.154 150.069)`,800:`oklch(44.8% 0.119 151.328)`,900:`oklch(39.3% 0.095 152.535)`,950:`oklch(26.6% 0.065 152.934)`},emerald:{50:`oklch(97.9% 0.021 166.113)`,100:`oklch(95% 0.052 163.051)`,200:`oklch(90.5% 0.093 164.15)`,300:`oklch(84.5% 0.143 164.978)`,400:`oklch(76.5% 0.177 163.223)`,500:`oklch(69.6% 0.17 162.48)`,600:`oklch(59.6% 0.145 163.225)`,700:`oklch(50.8% 0.118 165.612)`,800:`oklch(43.2% 0.095 166.913)`,900:`oklch(37.8% 0.077 168.94)`,950:`oklch(26.2% 0.051 172.552)`},teal:{50:`oklch(98.4% 0.014 180.72)`,100:`oklch(95.3% 0.051 180.801)`,200:`oklch(91% 0.096 180.426)`,300:`oklch(85.5% 0.138 181.071)`,400:`oklch(77.7% 0.152 181.912)`,500:`oklch(70.4% 0.14 182.503)`,600:`oklch(60% 0.118 184.704)`,700:`oklch(51.1% 0.096 186.391)`,800:`oklch(43.7% 0.078 188.216)`,900:`oklch(38.6% 0.063 188.416)`,950:`oklch(27.7% 0.046 192.524)`},cyan:{50:`oklch(98.4% 0.019 200.873)`,100:`oklch(95.6% 0.045 203.388)`,200:`oklch(91.7% 0.08 205.041)`,300:`oklch(86.5% 0.127 207.078)`,400:`oklch(78.9% 0.154 211.53)`,500:`oklch(71.5% 0.143 215.221)`,600:`oklch(60.9% 0.126 221.723)`,700:`oklch(52% 0.105 223.128)`,800:`oklch(45% 0.085 224.283)`,900:`oklch(39.8% 0.07 227.392)`,950:`oklch(30.2% 0.056 229.695)`},sky:{50:`oklch(97.7% 0.013 236.62)`,100:`oklch(95.1% 0.026 236.824)`,200:`oklch(90.1% 0.058 230.902)`,300:`oklch(82.8% 0.111 230.318)`,400:`oklch(74.6% 0.16 232.661)`,500:`oklch(68.5% 0.169 237.323)`,600:`oklch(58.8% 0.158 241.966)`,700:`oklch(50% 0.134 242.749)`,800:`oklch(44.3% 0.11 240.79)`,900:`oklch(39.1% 0.09 240.876)`,950:`oklch(29.3% 0.066 243.157)`},blue:{50:`oklch(97% 0.014 254.604)`,100:`oklch(93.2% 0.032 255.585)`,200:`oklch(88.2% 0.059 254.128)`,300:`oklch(80.9% 0.105 251.813)`,400:`oklch(70.7% 0.165 254.624)`,500:`oklch(62.3% 0.214 259.815)`,600:`oklch(54.6% 0.245 262.881)`,700:`oklch(48.8% 0.243 264.376)`,800:`oklch(42.4% 0.199 265.638)`,900:`oklch(37.9% 0.146 265.522)`,950:`oklch(28.2% 0.091 267.935)`},indigo:{50:`oklch(96.2% 0.018 272.314)`,100:`oklch(93% 0.034 272.788)`,200:`oklch(87% 0.065 274.039)`,300:`oklch(78.5% 0.115 274.713)`,400:`oklch(67.3% 0.182 276.935)`,500:`oklch(58.5% 0.233 277.117)`,600:`oklch(51.1% 0.262 276.966)`,700:`oklch(45.7% 0.24 277.023)`,800:`oklch(39.8% 0.195 277.366)`,900:`oklch(35.9% 0.144 278.697)`,950:`oklch(25.7% 0.09 281.288)`},violet:{50:`oklch(96.9% 0.016 293.756)`,100:`oklch(94.3% 0.029 294.588)`,200:`oklch(89.4% 0.057 293.283)`,300:`oklch(81.1% 0.111 293.571)`,400:`oklch(70.2% 0.183 293.541)`,500:`oklch(60.6% 0.25 292.717)`,600:`oklch(54.1% 0.281 293.009)`,700:`oklch(49.1% 0.27 292.581)`,800:`oklch(43.2% 0.232 292.759)`,900:`oklch(38% 0.189 293.745)`,950:`oklch(28.3% 0.141 291.089)`},purple:{50:`oklch(97.7% 0.014 308.299)`,100:`oklch(94.6% 0.033 307.174)`,200:`oklch(90.2% 0.063 306.703)`,300:`oklch(82.7% 0.119 306.383)`,400:`oklch(71.4% 0.203 305.504)`,500:`oklch(62.7% 0.265 303.9)`,600:`oklch(55.8% 0.288 302.321)`,700:`oklch(49.6% 0.265 301.924)`,800:`oklch(43.8% 0.218 303.724)`,900:`oklch(38.1% 0.176 304.987)`,950:`oklch(29.1% 0.149 302.717)`},fuchsia:{50:`oklch(97.7% 0.017 320.058)`,100:`oklch(95.2% 0.037 318.852)`,200:`oklch(90.3% 0.076 319.62)`,300:`oklch(83.3% 0.145 321.434)`,400:`oklch(74% 0.238 322.16)`,500:`oklch(66.7% 0.295 322.15)`,600:`oklch(59.1% 0.293 322.896)`,700:`oklch(51.8% 0.253 323.949)`,800:`oklch(45.2% 0.211 324.591)`,900:`oklch(40.1% 0.17 325.612)`,950:`oklch(29.3% 0.136 325.661)`},pink:{50:`oklch(97.1% 0.014 343.198)`,100:`oklch(94.8% 0.028 342.258)`,200:`oklch(89.9% 0.061 343.231)`,300:`oklch(82.3% 0.12 346.018)`,400:`oklch(71.8% 0.202 349.761)`,500:`oklch(65.6% 0.241 354.308)`,600:`oklch(59.2% 0.249 0.584)`,700:`oklch(52.5% 0.223 3.958)`,800:`oklch(45.9% 0.187 3.815)`,900:`oklch(40.8% 0.153 2.432)`,950:`oklch(28.4% 0.109 3.907)`},rose:{50:`oklch(96.9% 0.015 12.422)`,100:`oklch(94.1% 0.03 12.58)`,200:`oklch(89.2% 0.058 10.001)`,300:`oklch(81% 0.117 11.638)`,400:`oklch(71.2% 0.194 13.428)`,500:`oklch(64.5% 0.246 16.439)`,600:`oklch(58.6% 0.253 17.585)`,700:`oklch(51.4% 0.222 16.935)`,800:`oklch(45.5% 0.188 13.697)`,900:`oklch(41% 0.159 10.272)`,950:`oklch(27.1% 0.105 12.094)`}},we=[50,100,200,300,400,500,600,700,800,900,950];function Te(e,t){return e in Z&&typeof Z[e]==`object`&&t in Z[e]?Z[e][t]:``}function Ee(e,t,n){let r=n?`${n}-`:``;return`${we.map(n=>`--ui-color-${e}-${n}: var(--${r}color-${t===`neutral`?`old-neutral`:t}-${n}, ${Te(t,n)});`).join(` + `)}`}function Q(e,t){return`--ui-${e}: var(--ui-color-${e}-${t});`}var De=ie(()=>{let e=re(),t=ae(),n=l(()=>{let{neutral:t,...n}=e.ui.colors,r=e.ui.prefix;return`@layer theme { + :root, :host { + ${Object.entries(e.ui.colors).map(([e,t])=>Ee(e,t,r)).join(` + `)} + } + :root, :host, .light { + ${Object.keys(n).map(e=>Q(e,500)).join(` + `)} + } + .dark { + ${Object.keys(n).map(e=>Q(e,400)).join(` + `)} + } +}`}),r={style:[{innerHTML:()=>n.value,tagPriority:-2,id:`nuxt-ui-colors`}]};if(t.isHydrating&&!t.payload.serverRendered){let e=document.createElement(`style`);e.innerHTML=n.value,e.setAttribute(`data-nuxt-ui-colors`,``),document.head.appendChild(e),r.script=[{innerHTML:`document.head.removeChild(document.querySelector('[data-nuxt-ui-colors]'))`}]}be(r)}),Oe={install(){_()}},ke={install(e,t={}){e.use(Ce,t),e.use(X,t),e.use(De,t),e.use(Oe,t)}},$=te(ce);$.use(oe()),$.use(se),$.use(ke),$.use(g),$.mount(`#app`); \ No newline at end of file diff --git a/assets/public/dist/assets/index-UnLOO1Sq.css b/assets/public/dist/assets/index-UnLOO1Sq.css new file mode 100644 index 0000000..7491455 --- /dev/null +++ b/assets/public/dist/assets/index-UnLOO1Sq.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-divide-x-reverse:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-700:oklch(55.4% .135 66.442);--color-green-100:oklch(96.2% .044 156.743);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-old-neutral-50:oklch(98.5% 0 0);--color-old-neutral-100:oklch(97% 0 0);--color-old-neutral-200:oklch(92.2% 0 0);--color-old-neutral-300:oklch(87% 0 0);--color-old-neutral-400:oklch(70.8% 0 0);--color-old-neutral-500:oklch(55.6% 0 0);--color-old-neutral-600:oklch(43.9% 0 0);--color-old-neutral-700:oklch(37.1% 0 0);--color-old-neutral-800:oklch(26.9% 0 0);--color-old-neutral-900:oklch(20.5% 0 0);--color-old-neutral-950:oklch(14.5% 0 0);--main-light:#fffefb;--second-light:#f5f6fa;--main-dark:#212121;--black:#1a1a1a;--gray:#6b6b6b;--gray-dark:#a3a3a3;--accent-green:#004f3d;--accent-green-dark:#00a882;--accent-brown:#9a7f62;--accent-red:#b72d2d;--dark-red:#f94040;--border-light:#e8e7e0;--border-dark:#3f3e3d;--ui-bg:var(--main-light);--ui-primary:var(--color-gray-300);--ui-secondary:var(--accent-green);--ui-border-accented:var(--border-light);--ui-text-dimmed:var(--gray);--ui-bg-elevated:var(--color-gray-300);--ui-border:var(--border-light);--ui-color-neutral-700:var(--black);--ui-error:var(--accent-red);--tw-border-style:var(--border-light)}:host,:root{--ui-header-height:calc(var(--spacing) * 16)}.light,:host,:root{--ui-text-dimmed:var(--ui-color-neutral-400);--ui-text-muted:var(--ui-color-neutral-500);--ui-text-toned:var(--ui-color-neutral-600);--ui-text:var(--ui-color-neutral-700);--ui-text-highlighted:var(--ui-color-neutral-900);--ui-text-inverted:#fff;--ui-bg:#fff;--ui-bg-muted:var(--ui-color-neutral-50);--ui-bg-elevated:var(--ui-color-neutral-100);--ui-bg-accented:var(--ui-color-neutral-200);--ui-bg-inverted:var(--ui-color-neutral-900);--ui-border:var(--ui-color-neutral-200);--ui-border-muted:var(--ui-color-neutral-200);--ui-border-accented:var(--ui-color-neutral-300);--ui-border-inverted:var(--ui-color-neutral-900);--ui-radius:.25rem;--ui-container:80rem}.dark{--ui-text-dimmed:var(--ui-color-neutral-500);--ui-text-muted:var(--ui-color-neutral-400);--ui-text-toned:var(--ui-color-neutral-300);--ui-text:var(--ui-color-neutral-200);--ui-text-highlighted:#fff;--ui-text-inverted:var(--ui-color-neutral-900);--ui-bg:var(--ui-color-neutral-900);--ui-bg-muted:var(--ui-color-neutral-800);--ui-bg-elevated:var(--ui-color-neutral-800);--ui-bg-accented:var(--ui-color-neutral-700);--ui-bg-inverted:#fff;--ui-border:var(--ui-color-neutral-800);--ui-border-muted:var(--ui-color-neutral-700);--ui-border-accented:var(--ui-color-neutral-700);--ui-border-inverted:#fff}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}body{background-color:var(--ui-bg);color:var(--ui-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body:where(.dark,.dark *){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-1{inset-inline:calc(var(--spacing) * 1)}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.inset-y-1{inset-block:calc(var(--spacing) * 1)}.inset-y-1\.5{inset-block:calc(var(--spacing) * 1.5)}.inset-y-2{inset-block:calc(var(--spacing) * 2)}.inset-y-3{inset-block:calc(var(--spacing) * 3)}.inset-y-4{inset-block:calc(var(--spacing) * 4)}.-start-px{inset-inline-start:-1px}.start{inset-inline-start:var(--spacing)}.start-0{inset-inline-start:calc(var(--spacing) * 0)}.start-4{inset-inline-start:calc(var(--spacing) * 4)}.start-32{inset-inline-start:calc(var(--spacing) * 32)}.start-\[calc\(50\%\+16px\)\]{inset-inline-start:calc(50% + 16px)}.start-\[calc\(50\%\+20px\)\]{inset-inline-start:calc(50% + 20px)}.start-\[calc\(50\%\+28px\)\]{inset-inline-start:calc(50% + 28px)}.start-\[calc\(50\%\+32px\)\]{inset-inline-start:calc(50% + 32px)}.start-\[calc\(50\%\+36px\)\]{inset-inline-start:calc(50% + 36px)}.start-\[calc\(50\%-1px\)\]{inset-inline-start:calc(50% - 1px)}.-end-1\.5{inset-inline-end:calc(var(--spacing) * -1.5)}.end{inset-inline-end:var(--spacing)}.end-0{inset-inline-end:calc(var(--spacing) * 0)}.end-4{inset-inline-end:calc(var(--spacing) * 4)}.end-\[calc\(-50\%\+16px\)\]{inset-inline-end:calc(16px - 50%)}.end-\[calc\(-50\%\+20px\)\]{inset-inline-end:calc(20px - 50%)}.end-\[calc\(-50\%\+28px\)\]{inset-inline-end:calc(28px - 50%)}.end-\[calc\(-50\%\+32px\)\]{inset-inline-end:calc(32px - 50%)}.end-\[calc\(-50\%\+36px\)\]{inset-inline-end:calc(36px - 50%)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.-top-8{top:calc(var(--spacing) * -8)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-\[30px\]{top:30px}.top-\[38px\]{top:38px}.top-\[46px\]{top:46px}.top-\[50\%\]{top:50%}.top-\[54px\]{top:54px}.top-\[62px\]{top:62px}.top-\[86\%\]{top:86%}.top-\[calc\(50\%-2px\)\]{top:calc(50% - 2px)}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-1\/2{right:50%}.right-4{right:calc(var(--spacing) * 4)}.-bottom-7{bottom:calc(var(--spacing) * -7)}.-bottom-\[10px\]{bottom:-10px}.-bottom-px{bottom:-1px}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-\(--reka-navigation-menu-viewport-left\){left:var(--reka-navigation-menu-viewport-left)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.left-6\.5{left:calc(var(--spacing) * 6.5)}.left-11{left:calc(var(--spacing) * 11)}.isolate{isolation:isolate}.z-\(--index\){z-index:var(--index)}.z-1{z-index:1}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[100\]{z-index:100}.order-first{order:-9999}.order-last{order:9999}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0\.5{margin:calc(var(--spacing) * .5)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.-ms-1\.5{margin-inline-start:calc(var(--spacing) * -1.5)}.-ms-4{margin-inline-start:calc(var(--spacing) * -4)}.-ms-\[8\.5px\]{margin-inline-start:-8.5px}.-ms-px{margin-inline-start:-1px}.ms-2{margin-inline-start:calc(var(--spacing) * 2)}.ms-4{margin-inline-start:calc(var(--spacing) * 4)}.ms-4\.5{margin-inline-start:calc(var(--spacing) * 4.5)}.ms-5{margin-inline-start:calc(var(--spacing) * 5)}.ms-5\.5{margin-inline-start:calc(var(--spacing) * 5.5)}.ms-6{margin-inline-start:calc(var(--spacing) * 6)}.ms-auto{margin-inline-start:auto}.-me-0\.5{margin-inline-end:calc(var(--spacing) * -.5)}.-me-1{margin-inline-end:calc(var(--spacing) * -1)}.-me-1\.5{margin-inline-end:calc(var(--spacing) * -1.5)}.-me-2{margin-inline-end:calc(var(--spacing) * -2)}.me-1\.5{margin-inline-end:calc(var(--spacing) * 1.5)}.me-2{margin-inline-end:calc(var(--spacing) * 2)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-8{margin-top:calc(var(--spacing) * -8)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\!{margin-top:calc(var(--spacing) * 1)!important}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-3\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-20\!{margin-top:calc(var(--spacing) * 20)!important}.mt-24{margin-top:calc(var(--spacing) * 24)}.mt-auto{margin-top:auto}.\!mr-4{margin-right:calc(var(--spacing) * 4)!important}.\!mb-1{margin-bottom:calc(var(--spacing) * 1)!important}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-24{margin-bottom:calc(var(--spacing) * 24)}.mb-auto{margin-bottom:auto}.\!ml-4{margin-left:calc(var(--spacing) * 4)!important}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[16\/9\]{aspect-ratio:16/9}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-4\.5{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-10\/12{width:83.3333%;height:83.3333%}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-full{width:100%;height:100%}.\!h-1\.5{height:calc(var(--spacing) * 1.5)!important}.\!h-12{height:calc(var(--spacing) * 12)!important}.h-\(--reka-navigation-menu-viewport-height\){height:var(--reka-navigation-menu-viewport-height)}.h-\(--reka-tabs-indicator-size\){height:var(--reka-tabs-indicator-size)}.h-\(--ui-header-height\){height:var(--ui-header-height)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-38{height:calc(var(--spacing) * 38)}.h-40{height:calc(var(--spacing) * 40)}.h-42{height:calc(var(--spacing) * 42)}.h-44{height:calc(var(--spacing) * 44)}.h-46{height:calc(var(--spacing) * 46)}.h-80{height:calc(var(--spacing) * 80)}.h-\[4px\]{height:4px}.h-\[5px\]{height:5px}.h-\[6px\]{height:6px}.h-\[7px\]{height:7px}.h-\[8px\]{height:8px}.h-\[9px\]{height:9px}.h-\[10px\]{height:10px}.h-\[11px\]{height:11px}.h-\[12px\]{height:12px}.h-\[43px\]{height:43px}.h-\[100vh\]{height:100vh}.h-\[fit-content\]{height:fit-content}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[70vh\]{max-height:70vh}.max-h-\[96\%\]{max-height:96%}.max-h-\[calc\(100\%-2rem\)\]{max-height:calc(100% - 2rem)}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[49px\]{min-height:49px}.min-h-\[calc\(100vh-var\(--ui-header-height\)\)\]{min-height:calc(100vh - var(--ui-header-height))}.min-h-fit{min-height:fit-content}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.\!w-1\.5{width:calc(var(--spacing) * 1.5)!important}.\!w-12{width:calc(var(--spacing) * 12)!important}.w-\(--reka-combobox-trigger-width\){width:var(--reka-combobox-trigger-width)}.w-\(--reka-navigation-menu-indicator-size\){width:var(--reka-navigation-menu-indicator-size)}.w-\(--reka-select-trigger-width\){width:var(--reka-select-trigger-width)}.w-\(--reka-tabs-indicator-size\){width:var(--reka-tabs-indicator-size)}.w-\(--width\){width:var(--width)}.w-0{width:calc(var(--spacing) * 0)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-32{width:calc(var(--spacing) * 32)}.w-38{width:calc(var(--spacing) * 38)}.w-40{width:calc(var(--spacing) * 40)}.w-42{width:calc(var(--spacing) * 42)}.w-44{width:calc(var(--spacing) * 44)}.w-46{width:calc(var(--spacing) * 46)}.w-60{width:calc(var(--spacing) * 60)}.w-\[6px\]{width:6px}.w-\[7px\]{width:7px}.w-\[8px\]{width:8px}.w-\[9px\]{width:9px}.w-\[10px\]{width:10px}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-full\!{width:100%!important}.w-px{width:1px}.max-w-\(--ui-container\){max-width:var(--ui-container)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-\[75\%\]{max-width:75%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-16{min-width:calc(var(--spacing) * 16)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-\[4px\]{min-width:4px}.min-w-\[5px\]{min-width:5px}.min-w-\[6px\]{min-width:6px}.min-w-\[7px\]{min-width:7px}.min-w-\[8px\]{min-width:8px}.min-w-\[9px\]{min-width:9px}.min-w-\[10px\]{min-width:10px}.min-w-\[11px\]{min-width:11px}.min-w-\[12px\]{min-width:12px}.min-w-\[16px\]{min-width:16px}.min-w-\[20px\]{min-width:20px}.min-w-\[24px\]{min-width:24px}.min-w-\[160px\]{min-width:160px}.min-w-\[192px\]{min-width:192px}.min-w-fit{min-width:fit-content}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-x-0{--tw-border-spacing-x:calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.origin-\(--reka-combobox-content-transform-origin\){transform-origin:var(--reka-combobox-content-transform-origin)}.origin-\(--reka-context-menu-content-transform-origin\){transform-origin:var(--reka-context-menu-content-transform-origin)}.origin-\(--reka-dropdown-menu-content-transform-origin\){transform-origin:var(--reka-dropdown-menu-content-transform-origin)}.origin-\(--reka-popover-content-transform-origin\){transform-origin:var(--reka-popover-content-transform-origin)}.origin-\(--reka-select-content-transform-origin\){transform-origin:var(--reka-select-content-transform-origin)}.origin-\(--reka-tooltip-content-transform-origin\){transform-origin:var(--reka-tooltip-content-transform-origin)}.origin-\[top_center\]{transform-origin:top}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-\[4px\]{--tw-translate-x:calc(4px * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\(--reka-navigation-menu-indicator-position\){--tw-translate-x:var(--reka-navigation-menu-indicator-position);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\(--reka-tabs-indicator-position\){--tw-translate-x:var(--reka-tabs-indicator-position);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\(--reka-tabs-indicator-position\){--tw-translate-y:var(--reka-tabs-indicator-position);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\/2{--tw-translate-y:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-80{--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.transform-\(--transform\){transform:var(--transform)}.animate-\[marquee-vertical_var\(--duration\)_linear_infinite\]{animation:marquee-vertical var(--duration) linear infinite}.animate-\[marquee_var\(--duration\)_linear_infinite\]{animation:marquee var(--duration) linear infinite}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.scroll-mt-3{scroll-margin-top:calc(var(--spacing) * 3)}.scroll-mt-4{scroll-margin-top:calc(var(--spacing) * 4)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.\!flex-col{flex-direction:column!important}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.place-items-baseline{place-items:baseline}.place-items-center{place-items:center}.content-center{align-content:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-\(--gap\){gap:var(--gap)}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-0\.25{gap:calc(var(--spacing) * .25)}.gap-0\.75{gap:calc(var(--spacing) * .75)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.-space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(-1px * var(--tw-space-y-reverse));margin-block-end:calc(-1px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}:where(.-space-x-px>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(-1px * var(--tw-space-x-reverse));margin-inline-end:calc(-1px * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.gap-y-8{row-gap:calc(var(--spacing) * 8)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-accented>:not(:last-child)){border-color:var(--ui-border-accented)}:where(.divide-default>:not(:last-child)){border-color:var(--ui-border)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--ui-radius) * 4)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:calc(var(--ui-radius) * 2)}.rounded-md{border-radius:calc(var(--ui-radius) * 1.5)}.rounded-sm{border-radius:var(--ui-radius)}.rounded-xl{border-radius:calc(var(--ui-radius) * 3)}.rounded-xs{border-radius:calc(var(--ui-radius) * .5)}.rounded-t-lg{border-top-left-radius:calc(var(--ui-radius) * 2);border-top-right-radius:calc(var(--ui-radius) * 2)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l-lg{border-top-left-radius:calc(var(--ui-radius) * 2);border-bottom-left-radius:calc(var(--ui-radius) * 2)}.rounded-r-lg{border-top-right-radius:calc(var(--ui-radius) * 2);border-bottom-right-radius:calc(var(--ui-radius) * 2)}.rounded-b-lg{border-bottom-right-radius:calc(var(--ui-radius) * 2);border-bottom-left-radius:calc(var(--ui-radius) * 2)}.border{border-style:var(--tw-border-style);border-width:1px}.border\!{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-s-\[2px\]{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-s-\[3px\]{border-inline-start-style:var(--tw-border-style);border-inline-start-width:3px}.border-s-\[4px\]{border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px}.border-s-\[5px\]{border-inline-start-style:var(--tw-border-style);border-inline-start-width:5px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[2px\]{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-\[3px\]{border-top-style:var(--tw-border-style);border-top-width:3px}.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-t-\[5px\]{border-top-style:var(--tw-border-style);border-top-width:5px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none\!{--tw-border-style:none!important;border-style:none!important}.border-solid{--tw-border-style:solid;border-style:solid}.border-\(--border-light\){border-color:var(--border-light)}.border-\(--border-light\)\!{border-color:var(--border-light)!important}.border-bg{border-color:var(--ui-bg)}.border-default{border-color:var(--ui-border)}.border-error{border-color:var(--ui-error)}.border-info{border-color:var(--ui-info)}.border-inverted{border-color:var(--ui-border-inverted)}.border-muted{border-color:var(--ui-border-muted)}.border-primary{border-color:var(--ui-primary)}.border-secondary{border-color:var(--ui-secondary)}.border-success{border-color:var(--ui-success)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--ui-warning)}.border-b-gray-300{border-bottom-color:var(--color-gray-300)}.\!bg-\(--accent-brown\){background-color:var(--accent-brown)!important}.\!bg-accented{background-color:var(--ui-bg-accented)!important}.bg-\(--color-blue-600\){background-color:var(--color-blue-600)}.bg-\(--main-light\)\!{background-color:var(--main-light)!important}.bg-\(--ui-border-accented\){background-color:var(--ui-border-accented)}.bg-accented{background-color:var(--ui-bg-accented)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-border{background-color:var(--ui-border)}.bg-default{background-color:var(--ui-bg)}.bg-default\/75{background-color:#fffefbbf}@supports (color:color-mix(in lab, red, red)){.bg-default\/75{background-color:color-mix(in oklab, var(--ui-bg) 75%, transparent)}}.bg-default\/90{background-color:#fffefbe6}@supports (color:color-mix(in lab, red, red)){.bg-default\/90{background-color:color-mix(in oklab, var(--ui-bg) 90%, transparent)}}.bg-elevated{background-color:var(--ui-bg-elevated)}.bg-elevated\/50{background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.bg-elevated\/50{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}.bg-elevated\/75{background-color:#d1d5dcbf}@supports (color:color-mix(in lab, red, red)){.bg-elevated\/75{background-color:color-mix(in oklab, var(--ui-bg-elevated) 75%, transparent)}}.bg-error{background-color:var(--ui-error)}.bg-error\/10{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-100{background-color:var(--color-green-100)}.bg-info,.bg-info\/10{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/10{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.bg-inverted{background-color:var(--ui-bg-inverted)}.bg-primary{background-color:var(--ui-primary)}.bg-primary-500{background-color:var(--ui-color-primary-500)}.bg-primary\/10{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-secondary{background-color:var(--ui-secondary)}.bg-secondary\/10{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/10{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.bg-success,.bg-success\/10{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning,.bg-warning\/10{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-default{--tw-gradient-from:var(--ui-bg);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary-50{--tw-gradient-from:var(--ui-color-primary-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-white{--tw-gradient-via:var(--color-white);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-primary-100{--tw-gradient-to:var(--ui-color-primary-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-default{fill:var(--ui-border)}.object-cover{object-fit:cover}.object-top{object-position:top}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-4\.5{padding:calc(var(--spacing) * 4.5)}.p-6{padding:calc(var(--spacing) * 6)}.p-10{padding:calc(var(--spacing) * 10)}.\!px-\[25px\]{padding-inline:25px!important}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-\[10px\]{padding-inline:10px}.px-\[25px\]{padding-inline:25px}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-\[10px\]{padding-block:10px}.py-\[15px\]{padding-block:15px}.ps-1{padding-inline-start:calc(var(--spacing) * 1)}.ps-1\.5{padding-inline-start:calc(var(--spacing) * 1.5)}.ps-2{padding-inline-start:calc(var(--spacing) * 2)}.ps-2\.5{padding-inline-start:calc(var(--spacing) * 2.5)}.ps-3{padding-inline-start:calc(var(--spacing) * 3)}.ps-4{padding-inline-start:calc(var(--spacing) * 4)}.ps-7{padding-inline-start:calc(var(--spacing) * 7)}.ps-8{padding-inline-start:calc(var(--spacing) * 8)}.ps-9{padding-inline-start:calc(var(--spacing) * 9)}.ps-10{padding-inline-start:calc(var(--spacing) * 10)}.ps-11{padding-inline-start:calc(var(--spacing) * 11)}.pe-1{padding-inline-end:calc(var(--spacing) * 1)}.pe-2{padding-inline-end:calc(var(--spacing) * 2)}.pe-2\.5{padding-inline-end:calc(var(--spacing) * 2.5)}.pe-3{padding-inline-end:calc(var(--spacing) * 3)}.pe-4\.5{padding-inline-end:calc(var(--spacing) * 4.5)}.pe-5{padding-inline-end:calc(var(--spacing) * 5)}.pe-5\.5{padding-inline-end:calc(var(--spacing) * 5.5)}.pe-6{padding-inline-end:calc(var(--spacing) * 6)}.pe-6\.5{padding-inline-end:calc(var(--spacing) * 6.5)}.pe-7{padding-inline-end:calc(var(--spacing) * 7)}.pe-7\.5{padding-inline-end:calc(var(--spacing) * 7.5)}.pe-8{padding-inline-end:calc(var(--spacing) * 8)}.pe-8\.5{padding-inline-end:calc(var(--spacing) * 8.5)}.pe-9{padding-inline-end:calc(var(--spacing) * 9)}.pe-10{padding-inline-end:calc(var(--spacing) * 10)}.pe-11{padding-inline-end:calc(var(--spacing) * 11)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-3\.5{padding-bottom:calc(var(--spacing) * 3.5)}.pb-4\.5{padding-bottom:calc(var(--spacing) * 4.5)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-5\.5{padding-bottom:calc(var(--spacing) * 5.5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-6\.5{padding-bottom:calc(var(--spacing) * 6.5)}.pb-7{padding-bottom:calc(var(--spacing) * 7)}.pb-7\.5{padding-bottom:calc(var(--spacing) * 7.5)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-8\.5{padding-bottom:calc(var(--spacing) * 8.5)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-6\!{padding-left:calc(var(--spacing) * 6)!important}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-start{text-align:start}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-sans{font-family:var(--font-sans)}.\!text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-\[8px\]\/3{font-size:8px;line-height:calc(var(--spacing) * 3)}.text-\[10px\]\/3{font-size:10px;line-height:calc(var(--spacing) * 3)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-base\/5{font-size:var(--text-base);line-height:calc(var(--spacing) * 5)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\!{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.text-sm\/4{font-size:var(--text-sm);line-height:calc(var(--spacing) * 4)}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing) * 6)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-xs\/5{font-size:var(--text-xs);line-height:calc(var(--spacing) * 5)}.text-\[4px\]{font-size:4px}.text-\[5px\]{font-size:5px}.text-\[6px\]{font-size:6px}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[15px\]{font-size:15px}.text-\[22px\]{font-size:22px}.leading-none{--tw-leading:1;line-height:1}.leading-none\!{--tw-leading:1!important;line-height:1!important}.\!font-normal{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-normal\!{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.text-\(--black\){color:var(--black)}.text-\(--color-blue-600\){color:var(--color-blue-600)}.text-\(--gray\)\!{color:var(--gray)!important}.text-black{color:var(--color-black)}.text-black\!{color:var(--color-black)!important}.text-blue-700{color:var(--color-blue-700)}.text-default{color:var(--ui-text)}.text-dimmed{color:var(--ui-text-dimmed)}.text-error{color:var(--ui-error)}.text-error\/75{color:#b72d2dbf}@supports (color:color-mix(in lab, red, red)){.text-error\/75{color:color-mix(in oklab, var(--ui-error) 75%, transparent)}}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-highlighted{color:var(--ui-text-highlighted)}.text-info,.text-info\/75{color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.text-info\/75{color:color-mix(in oklab, var(--ui-info) 75%, transparent)}}.text-inherit{color:inherit}.text-inverted{color:var(--ui-text-inverted)}.text-muted{color:var(--ui-text-muted)}.text-primary{color:var(--ui-primary)}.text-primary-500{color:var(--ui-color-primary-500)}.text-primary\/75{color:#d1d5dcbf}@supports (color:color-mix(in lab, red, red)){.text-primary\/75{color:color-mix(in oklab, var(--ui-primary) 75%, transparent)}}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary{color:var(--ui-secondary)}.text-secondary\/75{color:#004f3dbf}@supports (color:color-mix(in lab, red, red)){.text-secondary\/75{color:color-mix(in oklab, var(--ui-secondary) 75%, transparent)}}.text-success,.text-success\/75{color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.text-success\/75{color:color-mix(in oklab, var(--ui-success) 75%, transparent)}}.text-toned{color:var(--ui-text-toned)}.text-warning,.text-warning\/75{color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.text-warning\/75{color:color-mix(in oklab, var(--ui-warning) 75%, transparent)}}.text-white{color:var(--color-white)}.text-white\!{color:var(--color-white)!important}.text-yellow-700{color:var(--color-yellow-700)}.uppercase{text-transform:uppercase}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0\!{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-3{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-gray-200\/50{--tw-shadow-color:#e5e7eb80}@supports (color:color-mix(in lab, red, red)){.shadow-gray-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-gray-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-primary-500\/30{--tw-shadow-color:var(--ui-color-primary-500)}@supports (color:color-mix(in lab, red, red)){.shadow-primary-500\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--ui-color-primary-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-accented{--tw-ring-color:var(--ui-border-accented)}.ring-bg{--tw-ring-color:var(--ui-bg)}.ring-default{--tw-ring-color:var(--ui-border)}.ring-error{--tw-ring-color:var(--ui-error)}.ring-error\/25{--tw-ring-color:#b72d2d40}@supports (color:color-mix(in lab, red, red)){.ring-error\/25{--tw-ring-color:color-mix(in oklab, var(--ui-error) 25%, transparent)}}.ring-error\/50{--tw-ring-color:#b72d2d80}@supports (color:color-mix(in lab, red, red)){.ring-error\/50{--tw-ring-color:color-mix(in oklab, var(--ui-error) 50%, transparent)}}.ring-info,.ring-info\/25{--tw-ring-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.ring-info\/25{--tw-ring-color:color-mix(in oklab, var(--ui-info) 25%, transparent)}}.ring-info\/50{--tw-ring-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.ring-info\/50{--tw-ring-color:color-mix(in oklab, var(--ui-info) 50%, transparent)}}.ring-inverted{--tw-ring-color:var(--ui-border-inverted)}.ring-primary{--tw-ring-color:var(--ui-primary)}.ring-primary\/25{--tw-ring-color:#d1d5dc40}@supports (color:color-mix(in lab, red, red)){.ring-primary\/25{--tw-ring-color:color-mix(in oklab, var(--ui-primary) 25%, transparent)}}.ring-primary\/50{--tw-ring-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.ring-primary\/50{--tw-ring-color:color-mix(in oklab, var(--ui-primary) 50%, transparent)}}.ring-secondary{--tw-ring-color:var(--ui-secondary)}.ring-secondary\/25{--tw-ring-color:#004f3d40}@supports (color:color-mix(in lab, red, red)){.ring-secondary\/25{--tw-ring-color:color-mix(in oklab, var(--ui-secondary) 25%, transparent)}}.ring-secondary\/50{--tw-ring-color:#004f3d80}@supports (color:color-mix(in lab, red, red)){.ring-secondary\/50{--tw-ring-color:color-mix(in oklab, var(--ui-secondary) 50%, transparent)}}.ring-success,.ring-success\/25{--tw-ring-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.ring-success\/25{--tw-ring-color:color-mix(in oklab, var(--ui-success) 25%, transparent)}}.ring-success\/50{--tw-ring-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.ring-success\/50{--tw-ring-color:color-mix(in oklab, var(--ui-success) 50%, transparent)}}.ring-warning,.ring-warning\/25{--tw-ring-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.ring-warning\/25{--tw-ring-color:color-mix(in oklab, var(--ui-warning) 25%, transparent)}}.ring-warning\/50{--tw-ring-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.ring-warning\/50{--tw-ring-color:color-mix(in oklab, var(--ui-warning) 50%, transparent)}}.ring-white{--tw-ring-color:var(--color-white)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-0\!{outline-style:var(--tw-outline-style)!important;outline-width:0!important}.blur{--tw-blur:blur(8px);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,)}.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);-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-md{--tw-backdrop-blur:blur(var(--blur-md));-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background\]{transition-property:background;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,opacity\]{transition-property:color,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,translate\,height\]{transition-property:transform,translate,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[translate\,width\]{transition-property:translate,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,left\]{transition-property:width,height,left;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\[height\]{will-change:height}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\!\[animation-direction\:reverse\]{animation-direction:reverse!important}.\[--duration\:20s\]{--duration:20s}.\[--gap\:--spacing\(16\)\]{--gap:calc(var(--spacing) * 16)}.\[--initial-transform\:calc\(100\%\+1\.5rem\)\]{--initial-transform:calc(100% + 1.5rem)}.\[--spotlight-color\:var\(--ui-bg-inverted\)\]{--spotlight-color:var(--ui-bg-inverted)}.\[--spotlight-color\:var\(--ui-error\)\]{--spotlight-color:var(--ui-error)}.\[--spotlight-color\:var\(--ui-info\)\]{--spotlight-color:var(--ui-info)}.\[--spotlight-color\:var\(--ui-primary\)\]{--spotlight-color:var(--ui-primary)}.\[--spotlight-color\:var\(--ui-secondary\)\]{--spotlight-color:var(--ui-secondary)}.\[--spotlight-color\:var\(--ui-success\)\]{--spotlight-color:var(--ui-success)}.\[--spotlight-color\:var\(--ui-warning\)\]{--spotlight-color:var(--ui-warning)}.\[--spotlight-size\:400px\]{--spotlight-size:400px}.backface-hidden{backface-visibility:hidden}.ring-inset{--tw-ring-inset:inset}:is(.\*\:my-5>*){margin-block:calc(var(--spacing) * 5)}:is(.\*\:size-2>*){width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}:is(.\*\:break-inside-avoid-column>*){break-inside:avoid-column}:is(.\*\:rounded-full>*){border-radius:3.40282e38px}:is(.\*\:bg-elevated>*){background-color:var(--ui-bg-elevated)}:is(.\*\:pt-8>*){padding-top:calc(var(--spacing) * 8)}:is(.\*\:will-change-transform>*){will-change:transform}.not-last\:not-first\:rounded-none:not(:last-child):not(:first-child){border-radius:0}.not-data-\[segment\=literal\]\:w-6:not([data-segment=literal]){width:calc(var(--spacing) * 6)}.not-data-\[segment\=literal\]\:w-7:not([data-segment=literal]){width:calc(var(--spacing) * 7)}.not-data-\[segment\=literal\]\:w-8:not([data-segment=literal]){width:calc(var(--spacing) * 8)}.group-not-last\:group-not-first\:rounded-none:is(:where(.group):not(:last-child) *):is(:where(.group):not(:first-child) *){border-radius:0}.group-not-only\:group-first\:rounded-e-none:is(:where(.group):not(:only-child) *):is(:where(.group):first-child *){border-start-end-radius:0;border-end-end-radius:0}.group-not-only\:group-first\:rounded-b-none:is(:where(.group):not(:only-child) *):is(:where(.group):first-child *){border-bottom-right-radius:0;border-bottom-left-radius:0}.group-not-only\:group-last\:rounded-s-none:is(:where(.group):not(:only-child) *):is(:where(.group):last-child *){border-start-start-radius:0;border-end-start-radius:0}.group-not-only\:group-last\:rounded-t-none:is(:where(.group):not(:only-child) *):is(:where(.group):last-child *){border-top-left-radius:0;border-top-right-radius:0}@media (hover:hover){.group-hover\:bg-primary:is(:where(.group):hover *){background-color:var(--ui-primary)}.group-hover\:text-default:is(:where(.group):hover *){color:var(--ui-text)}.group-hover\:text-inverted:is(:where(.group):hover *){color:var(--ui-text-inverted)}.group-hover\:ring-primary:is(:where(.group):hover *){--tw-ring-color:var(--ui-primary)}.group-hover\:\[animation-play-state\:paused\]:is(:where(.group):hover *){animation-play-state:paused}.group-hover\/blog-post\:scale-110:is(:where(.group\/blog-post):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\/blog-post\:rounded-r-none:is(:where(.group\/blog-post):hover *){border-top-right-radius:0;border-bottom-right-radius:0}.group-hover\/blog-post\:rounded-b-none:is(:where(.group\/blog-post):hover *){border-bottom-right-radius:0;border-bottom-left-radius:0}.group-hover\/blog-post\:shadow-none:is(:where(.group\/blog-post):hover *){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-hover\/changelog-version-image\:scale-105:is(:where(.group\/changelog-version-image):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\/message\:opacity-100:is(:where(.group\/message):hover *){opacity:1}.group-hover\/user\:scale-115:is(:where(.group\/user):hover *){--tw-scale-x:115%;--tw-scale-y:115%;--tw-scale-z:115%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.group-has-focus-visible\/changelog-version-image\:scale-105:is(:where(.group\/changelog-version-image):has(:focus-visible) *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-has-focus-visible\/user\:scale-115:is(:where(.group\/user):has(:focus-visible) *){--tw-scale-x:115%;--tw-scale-y:115%;--tw-scale-z:115%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-data-expanded\:rotate-180:is(:where(.group)[data-expanded] *){rotate:180deg}.group-data-highlighted\:inline-flex:is(:where(.group)[data-highlighted] *){display:inline-flex}.group-data-highlighted\:text-default:is(:where(.group)[data-highlighted] *){color:var(--ui-text)}.group-data-highlighted\:text-error:is(:where(.group)[data-highlighted] *){color:var(--ui-error)}.group-data-highlighted\:text-info:is(:where(.group)[data-highlighted] *){color:var(--ui-info)}.group-data-highlighted\:text-primary:is(:where(.group)[data-highlighted] *){color:var(--ui-primary)}.group-data-highlighted\:text-secondary:is(:where(.group)[data-highlighted] *){color:var(--ui-secondary)}.group-data-highlighted\:text-success:is(:where(.group)[data-highlighted] *){color:var(--ui-success)}.group-data-highlighted\:text-warning:is(:where(.group)[data-highlighted] *){color:var(--ui-warning)}.group-data-highlighted\:not-group-data-disabled\:text-default:is(:where(.group)[data-highlighted] *):not(:is(:where(.group)[data-disabled] *)){color:var(--ui-text)}.group-data-\[disabled\]\:opacity-75:is(:where(.group)[data-disabled] *){opacity:.75}.group-data-\[state\=active\]\:bg-error:is(:where(.group)[data-state=active] *){background-color:var(--ui-error)}.group-data-\[state\=active\]\:bg-info:is(:where(.group)[data-state=active] *){background-color:var(--ui-info)}.group-data-\[state\=active\]\:bg-inverted:is(:where(.group)[data-state=active] *){background-color:var(--ui-bg-inverted)}.group-data-\[state\=active\]\:bg-primary:is(:where(.group)[data-state=active] *){background-color:var(--ui-primary)}.group-data-\[state\=active\]\:bg-secondary:is(:where(.group)[data-state=active] *){background-color:var(--ui-secondary)}.group-data-\[state\=active\]\:bg-success:is(:where(.group)[data-state=active] *){background-color:var(--ui-success)}.group-data-\[state\=active\]\:bg-warning:is(:where(.group)[data-state=active] *){background-color:var(--ui-warning)}.group-data-\[state\=active\]\:text-inverted:is(:where(.group)[data-state=active] *){color:var(--ui-text-inverted)}.group-data-\[state\=checked\]\:text-error:is(:where(.group)[data-state=checked] *){color:var(--ui-error)}.group-data-\[state\=checked\]\:text-highlighted:is(:where(.group)[data-state=checked] *){color:var(--ui-text-highlighted)}.group-data-\[state\=checked\]\:text-info:is(:where(.group)[data-state=checked] *){color:var(--ui-info)}.group-data-\[state\=checked\]\:text-primary:is(:where(.group)[data-state=checked] *){color:var(--ui-primary)}.group-data-\[state\=checked\]\:text-secondary:is(:where(.group)[data-state=checked] *){color:var(--ui-secondary)}.group-data-\[state\=checked\]\:text-success:is(:where(.group)[data-state=checked] *){color:var(--ui-success)}.group-data-\[state\=checked\]\:text-warning:is(:where(.group)[data-state=checked] *){color:var(--ui-warning)}.group-data-\[state\=checked\]\:opacity-100:is(:where(.group)[data-state=checked] *){opacity:1}.group-data-\[state\=completed\]\:bg-error:is(:where(.group)[data-state=completed] *){background-color:var(--ui-error)}.group-data-\[state\=completed\]\:bg-info:is(:where(.group)[data-state=completed] *){background-color:var(--ui-info)}.group-data-\[state\=completed\]\:bg-inverted:is(:where(.group)[data-state=completed] *){background-color:var(--ui-bg-inverted)}.group-data-\[state\=completed\]\:bg-primary:is(:where(.group)[data-state=completed] *){background-color:var(--ui-primary)}.group-data-\[state\=completed\]\:bg-secondary:is(:where(.group)[data-state=completed] *){background-color:var(--ui-secondary)}.group-data-\[state\=completed\]\:bg-success:is(:where(.group)[data-state=completed] *){background-color:var(--ui-success)}.group-data-\[state\=completed\]\:bg-warning:is(:where(.group)[data-state=completed] *){background-color:var(--ui-warning)}.group-data-\[state\=completed\]\:text-inverted:is(:where(.group)[data-state=completed] *){color:var(--ui-text-inverted)}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[state\=open\]\:text-default:is(:where(.group)[data-state=open] *){color:var(--ui-text)}.group-data-\[state\=open\]\:text-error:is(:where(.group)[data-state=open] *){color:var(--ui-error)}.group-data-\[state\=open\]\:text-highlighted:is(:where(.group)[data-state=open] *){color:var(--ui-text-highlighted)}.group-data-\[state\=open\]\:text-info:is(:where(.group)[data-state=open] *){color:var(--ui-info)}.group-data-\[state\=open\]\:text-primary:is(:where(.group)[data-state=open] *){color:var(--ui-primary)}.group-data-\[state\=open\]\:text-secondary:is(:where(.group)[data-state=open] *){color:var(--ui-secondary)}.group-data-\[state\=open\]\:text-success:is(:where(.group)[data-state=open] *){color:var(--ui-success)}.group-data-\[state\=open\]\:text-warning:is(:where(.group)[data-state=open] *){color:var(--ui-warning)}.group-data-\[state\=unchecked\]\:text-dimmed:is(:where(.group)[data-state=unchecked] *){color:var(--ui-text-dimmed)}.group-data-\[state\=unchecked\]\:opacity-100:is(:where(.group)[data-state=unchecked] *){opacity:1}@media (hover:hover){.peer-hover\:text-highlighted:is(:where(.peer):hover~*){color:var(--ui-text-highlighted)}.peer-hover\:text-toned:is(:where(.peer):hover~*){color:var(--ui-text-toned)}}.peer-focus-visible\:text-highlighted:is(:where(.peer):focus-visible~*){color:var(--ui-text-highlighted)}.peer-focus-visible\:text-toned:is(:where(.peer):focus-visible~*){color:var(--ui-text-toned)}.selection\:bg-primary\/20 ::selection{background-color:#d1d5dc33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/20 ::selection{background-color:color-mix(in oklab, var(--ui-primary) 20%, transparent)}}.selection\:bg-primary\/20::selection{background-color:#d1d5dc33}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/20::selection{background-color:color-mix(in oklab, var(--ui-primary) 20%, transparent)}}.file\:me-1\.5::file-selector-button{margin-inline-end:calc(var(--spacing) * 1.5)}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-muted::file-selector-button{color:var(--ui-text-muted)}.file\:outline-none::file-selector-button{--tw-outline-style:none;outline-style:none}.placeholder\:text-\(--gray\)\/50\!::placeholder{color:#6b6b6b80!important}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-\(--gray\)\/50\!::placeholder{color:color-mix(in oklab, var(--gray) 50%, transparent)!important}}.placeholder\:text-dimmed::placeholder{color:var(--ui-text-dimmed)}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:-inset-px:before{content:var(--tw-content);inset:-1px}.before\:inset-px:before{content:var(--tw-content);inset:1px}.before\:inset-x-0:before{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.before\:inset-x-px:before{content:var(--tw-content);inset-inline:1px}.before\:inset-y-0:before{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.before\:inset-y-px:before{content:var(--tw-content);inset-block:1px}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\:-right-1\.5:before{content:var(--tw-content);right:calc(var(--spacing) * -1.5)}.before\:-left-1\.5:before{content:var(--tw-content);left:calc(var(--spacing) * -1.5)}.before\:left-0:before{content:var(--tw-content);left:calc(var(--spacing) * 0)}.before\:z-1:before{content:var(--tw-content);z-index:1}.before\:z-2:before{content:var(--tw-content);z-index:2}.before\:z-\[-1\]:before{content:var(--tw-content);z-index:-1}.before\:h-1\/3:before{content:var(--tw-content);height:33.3333%}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-1\/3:before{content:var(--tw-content);width:33.3333%}.before\:w-full:before{content:var(--tw-content);width:100%}.before\:rounded-\[inherit\]:before{content:var(--tw-content);border-radius:inherit}.before\:rounded-md:before{content:var(--tw-content);border-radius:calc(var(--ui-radius) * 1.5)}.before\:bg-elevated:before{content:var(--tw-content);background-color:var(--ui-bg-elevated)}.before\:bg-elevated\/75:before{content:var(--tw-content);background-color:#d1d5dcbf}@supports (color:color-mix(in lab, red, red)){.before\:bg-elevated\/75:before{background-color:color-mix(in oklab, var(--ui-bg-elevated) 75%, transparent)}}.before\:bg-error\/10:before{content:var(--tw-content);background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.before\:bg-error\/10:before{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.before\:bg-info\/10:before{content:var(--tw-content);background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.before\:bg-info\/10:before{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.before\:bg-primary\/10:before{content:var(--tw-content);background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.before\:bg-primary\/10:before{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.before\:bg-secondary\/10:before{content:var(--tw-content);background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.before\:bg-secondary\/10:before{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.before\:bg-success\/10:before{content:var(--tw-content);background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.before\:bg-success\/10:before{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.before\:bg-warning\/10:before{content:var(--tw-content);background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.before\:bg-warning\/10:before{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.before\:bg-gradient-to-b:before{content:var(--tw-content);--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.before\:bg-gradient-to-r:before{content:var(--tw-content);--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.before\:bg-\[radial-gradient\(var\(--spotlight-size\)_var\(--spotlight-size\)_at_calc\(var\(--spotlight-x\,0px\)\)_calc\(var\(--spotlight-y\,0px\)\)\,var\(--spotlight-color\)\,transparent_70\%\)\]:before{content:var(--tw-content);background-image:radial-gradient(var(--spotlight-size) var(--spotlight-size) at calc(var(--spotlight-x,0px)) calc(var(--spotlight-y,0px)),var(--spotlight-color),transparent 70%)}.before\:from-default:before{content:var(--tw-content);--tw-gradient-from:var(--ui-bg);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.before\:to-transparent:before{content:var(--tw-content);--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.before\:transition-colors:before{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\:content-\[\\\"\\\"\]:before{--tw-content:\"\";content:var(--tw-content)}.not-first-of-type\:before\:me-0\.5:not(:first-of-type):before{content:var(--tw-content);margin-inline-end:calc(var(--spacing) * .5)}.not-first-of-type\:before\:content-\[\'·\'\]:not(:first-of-type):before{--tw-content:"·";content:var(--tw-content)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-x-0:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.after\:inset-x-2\.5:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 2.5)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:inset-y-0\.5:after{content:var(--tw-content);inset-block:calc(var(--spacing) * .5)}.after\:-start-1\.5:after{content:var(--tw-content);inset-inline-start:calc(var(--spacing) * -1.5)}.after\:right-0:after{content:var(--tw-content);right:calc(var(--spacing) * 0)}.after\:-bottom-2:after{content:var(--tw-content);bottom:calc(var(--spacing) * -2)}.after\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing) * 0)}.after\:z-1:after{content:var(--tw-content);z-index:1}.after\:z-2:after{content:var(--tw-content);z-index:2}.after\:ms-0\.5:after{content:var(--tw-content);margin-inline-start:calc(var(--spacing) * .5)}.after\:block:after{content:var(--tw-content);display:block}.after\:hidden:after{content:var(--tw-content);display:none}.after\:size-1:after{content:var(--tw-content);width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.after\:size-1\.5:after{content:var(--tw-content);width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.after\:size-2:after{content:var(--tw-content);width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.after\:h-1\/3:after{content:var(--tw-content);height:33.3333%}.after\:h-full:after{content:var(--tw-content);height:100%}.after\:h-px:after{content:var(--tw-content);height:1px}.after\:w-1\/3:after{content:var(--tw-content);width:33.3333%}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:w-px:after{content:var(--tw-content);width:1px}.after\:animate-\[carousel-inverse_2s_ease-in-out_infinite\]:after{content:var(--tw-content);animation:2s ease-in-out infinite carousel-inverse}.after\:animate-\[carousel_2s_ease-in-out_infinite\]:after{content:var(--tw-content);animation:2s ease-in-out infinite carousel}.after\:animate-\[elastic_2s_ease-in-out_infinite\]:after{content:var(--tw-content);animation:2s ease-in-out infinite elastic}.after\:animate-\[swing_2s_ease-in-out_infinite\]:after{content:var(--tw-content);animation:2s ease-in-out infinite swing}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-default:after{content:var(--tw-content);background-color:var(--ui-bg)}.after\:bg-error:after{content:var(--tw-content);background-color:var(--ui-error)}.after\:bg-info:after{content:var(--tw-content);background-color:var(--ui-info)}.after\:bg-inverted:after{content:var(--tw-content);background-color:var(--ui-bg-inverted)}.after\:bg-primary:after{content:var(--tw-content);background-color:var(--ui-primary)}.after\:bg-secondary:after{content:var(--tw-content);background-color:var(--ui-secondary)}.after\:bg-success:after{content:var(--tw-content);background-color:var(--ui-success)}.after\:bg-warning:after{content:var(--tw-content);background-color:var(--ui-warning)}.after\:bg-gradient-to-l:after{content:var(--tw-content);--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.after\:bg-gradient-to-t:after{content:var(--tw-content);--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.after\:from-default:after{content:var(--tw-content);--tw-gradient-from:var(--ui-bg);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.after\:to-transparent:after{content:var(--tw-content);--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.after\:text-error:after{content:var(--tw-content);color:var(--ui-error)}.after\:transition-colors:after{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\*\'\]:after{--tw-content:"*";content:var(--tw-content)}.after\:content-\[\\\"\\\"\]:after{--tw-content:\"\";content:var(--tw-content)}:is(.\*\:not-last\:after\:absolute>*):not(:last-child):after{content:var(--tw-content);position:absolute}:is(.\*\:not-last\:after\:inset-x-1>*):not(:last-child):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 1)}:is(.\*\:not-last\:after\:bottom-0>*):not(:last-child):after{content:var(--tw-content);bottom:calc(var(--spacing) * 0)}:is(.\*\:not-last\:after\:h-px>*):not(:last-child):after{content:var(--tw-content);height:1px}:is(.\*\:not-last\:after\:bg-border>*):not(:last-child):after{content:var(--tw-content);background-color:var(--ui-border)}.first\:me-0:first-child{margin-inline-end:calc(var(--spacing) * 0)}:is(.\*\:first\:mt-0>*):first-child{margin-top:calc(var(--spacing) * 0)}.not-only\:first\:rounded-e-none:not(:only-child):first-child{border-start-end-radius:0;border-end-end-radius:0}.not-only\:first\:rounded-b-none:not(:only-child):first-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}:is(.\*\:last\:mb-0>*):last-child{margin-bottom:calc(var(--spacing) * 0)}.not-only\:last\:rounded-s-none:not(:only-child):last-child{border-start-start-radius:0;border-end-start-radius:0}.not-only\:last\:rounded-t-none:not(:only-child):last-child{border-top-left-radius:0;border-top-right-radius:0}.first-of-type\:rounded-s-lg:first-of-type{border-start-start-radius:calc(var(--ui-radius) * 2);border-end-start-radius:calc(var(--ui-radius) * 2)}.first-of-type\:rounded-t-lg:first-of-type{border-top-left-radius:calc(var(--ui-radius) * 2);border-top-right-radius:calc(var(--ui-radius) * 2)}.last-of-type\:rounded-e-lg:last-of-type{border-start-end-radius:calc(var(--ui-radius) * 2);border-end-end-radius:calc(var(--ui-radius) * 2)}.last-of-type\:rounded-b-lg:last-of-type{border-bottom-right-radius:calc(var(--ui-radius) * 2);border-bottom-left-radius:calc(var(--ui-radius) * 2)}@media (hover:hover){.hover\:scale-115:hover{--tw-scale-x:115%;--tw-scale-y:115%;--tw-scale-z:115%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:bg-\(--color-blue-600\):hover{background-color:var(--color-blue-600)}.hover\:bg-accented\/75:hover{background-color:var(--ui-bg-accented)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accented\/75:hover{background-color:color-mix(in oklab, var(--ui-bg-accented) 75%, transparent)}}.hover\:bg-default\/10:hover{background-color:#fffefb1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-default\/10:hover{background-color:color-mix(in oklab, var(--ui-bg) 10%, transparent)}}.hover\:bg-elevated:hover{background-color:var(--ui-bg-elevated)}.hover\:bg-elevated\/25:hover{background-color:#d1d5dc40}@supports (color:color-mix(in lab, red, red)){.hover\:bg-elevated\/25:hover{background-color:color-mix(in oklab, var(--ui-bg-elevated) 25%, transparent)}}.hover\:bg-elevated\/50:hover{background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-elevated\/50:hover{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}.hover\:bg-error\/10:hover{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/10:hover{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.hover\:bg-error\/15:hover{background-color:#b72d2d26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/15:hover{background-color:color-mix(in oklab, var(--ui-error) 15%, transparent)}}.hover\:bg-error\/75:hover{background-color:#b72d2dbf}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/75:hover{background-color:color-mix(in oklab, var(--ui-error) 75%, transparent)}}.hover\:bg-error\/90:hover{background-color:#b72d2de6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/90:hover{background-color:color-mix(in oklab, var(--ui-error) 90%, transparent)}}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-info\/10:hover{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/10:hover{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.hover\:bg-info\/15:hover{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/15:hover{background-color:color-mix(in oklab, var(--ui-info) 15%, transparent)}}.hover\:bg-info\/75:hover{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/75:hover{background-color:color-mix(in oklab, var(--ui-info) 75%, transparent)}}.hover\:bg-info\/90:hover{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/90:hover{background-color:color-mix(in oklab, var(--ui-info) 90%, transparent)}}.hover\:bg-inverted\/90:hover{background-color:var(--ui-bg-inverted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-inverted\/90:hover{background-color:color-mix(in oklab, var(--ui-bg-inverted) 90%, transparent)}}.hover\:bg-primary\/10:hover{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.hover\:bg-primary\/15:hover{background-color:#d1d5dc26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/15:hover{background-color:color-mix(in oklab, var(--ui-primary) 15%, transparent)}}.hover\:bg-primary\/75:hover{background-color:#d1d5dcbf}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/75:hover{background-color:color-mix(in oklab, var(--ui-primary) 75%, transparent)}}.hover\:bg-primary\/90:hover{background-color:#d1d5dce6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--ui-primary) 90%, transparent)}}.hover\:bg-secondary\/10:hover{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/10:hover{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.hover\:bg-secondary\/15:hover{background-color:#004f3d26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/15:hover{background-color:color-mix(in oklab, var(--ui-secondary) 15%, transparent)}}.hover\:bg-secondary\/75:hover{background-color:#004f3dbf}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/75:hover{background-color:color-mix(in oklab, var(--ui-secondary) 75%, transparent)}}.hover\:bg-secondary\/90:hover{background-color:#004f3de6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab, var(--ui-secondary) 90%, transparent)}}.hover\:bg-success\/10:hover{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.hover\:bg-success\/15:hover{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/15:hover{background-color:color-mix(in oklab, var(--ui-success) 15%, transparent)}}.hover\:bg-success\/75:hover{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/75:hover{background-color:color-mix(in oklab, var(--ui-success) 75%, transparent)}}.hover\:bg-success\/90:hover{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/90:hover{background-color:color-mix(in oklab, var(--ui-success) 90%, transparent)}}.hover\:bg-warning\/10:hover{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/10:hover{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.hover\:bg-warning\/15:hover{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/15:hover{background-color:color-mix(in oklab, var(--ui-warning) 15%, transparent)}}.hover\:bg-warning\/75:hover{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/75:hover{background-color:color-mix(in oklab, var(--ui-warning) 75%, transparent)}}.hover\:bg-warning\/90:hover{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/90:hover{background-color:color-mix(in oklab, var(--ui-warning) 90%, transparent)}}.hover\:text-default:hover{color:var(--ui-text)}.hover\:text-error\/75:hover{color:#b72d2dbf}@supports (color:color-mix(in lab, red, red)){.hover\:text-error\/75:hover{color:color-mix(in oklab, var(--ui-error) 75%, transparent)}}.hover\:text-highlighted:hover{color:var(--ui-text-highlighted)}.hover\:text-info\/75:hover{color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.hover\:text-info\/75:hover{color:color-mix(in oklab, var(--ui-info) 75%, transparent)}}.hover\:text-primary:hover{color:var(--ui-primary)}.hover\:text-primary\/75:hover{color:#d1d5dcbf}@supports (color:color-mix(in lab, red, red)){.hover\:text-primary\/75:hover{color:color-mix(in oklab, var(--ui-primary) 75%, transparent)}}.hover\:text-secondary\/75:hover{color:#004f3dbf}@supports (color:color-mix(in lab, red, red)){.hover\:text-secondary\/75:hover{color:color-mix(in oklab, var(--ui-secondary) 75%, transparent)}}.hover\:text-success\/75:hover{color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.hover\:text-success\/75:hover{color:color-mix(in oklab, var(--ui-success) 75%, transparent)}}.hover\:text-warning\/75:hover{color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:text-warning\/75:hover{color:color-mix(in oklab, var(--ui-warning) 75%, transparent)}}.hover\:text-white:hover{color:var(--color-white)}.hover\:ring-accented:hover{--tw-ring-color:var(--ui-border-accented)}.hover\:not-data-\[selected\]\:bg-error\/10:hover:not([data-selected]){background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-error\/10:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.hover\:not-data-\[selected\]\:bg-error\/20:hover:not([data-selected]){background-color:#b72d2d33}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-error\/20:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-error) 20%, transparent)}}.hover\:not-data-\[selected\]\:bg-info\/10:hover:not([data-selected]){background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-info\/10:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.hover\:not-data-\[selected\]\:bg-info\/20:hover:not([data-selected]){background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-info\/20:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-info) 20%, transparent)}}.hover\:not-data-\[selected\]\:bg-inverted\/10:hover:not([data-selected]){background-color:var(--ui-bg-inverted)}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-inverted\/10:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-bg-inverted) 10%, transparent)}}.hover\:not-data-\[selected\]\:bg-primary\/10:hover:not([data-selected]){background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-primary\/10:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.hover\:not-data-\[selected\]\:bg-primary\/20:hover:not([data-selected]){background-color:#d1d5dc33}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-primary\/20:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-primary) 20%, transparent)}}.hover\:not-data-\[selected\]\:bg-secondary\/10:hover:not([data-selected]){background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-secondary\/10:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.hover\:not-data-\[selected\]\:bg-secondary\/20:hover:not([data-selected]){background-color:#004f3d33}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-secondary\/20:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-secondary) 20%, transparent)}}.hover\:not-data-\[selected\]\:bg-success\/10:hover:not([data-selected]){background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-success\/10:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.hover\:not-data-\[selected\]\:bg-success\/20:hover:not([data-selected]){background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-success\/20:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-success) 20%, transparent)}}.hover\:not-data-\[selected\]\:bg-warning\/10:hover:not([data-selected]){background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-warning\/10:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.hover\:not-data-\[selected\]\:bg-warning\/20:hover:not([data-selected]){background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:not-data-\[selected\]\:bg-warning\/20:hover:not([data-selected]){background-color:color-mix(in oklab, var(--ui-warning) 20%, transparent)}}.hover\:before\:bg-elevated\/50:hover:before{content:var(--tw-content);background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.hover\:before\:bg-elevated\/50:hover:before{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}}.focus\:bg-accented:focus,.focus\:bg-accented\/50:focus{background-color:var(--ui-bg-accented)}@supports (color:color-mix(in lab, red, red)){.focus\:bg-accented\/50:focus{background-color:color-mix(in oklab, var(--ui-bg-accented) 50%, transparent)}}.focus\:bg-elevated:focus{background-color:var(--ui-bg-elevated)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-error:focus{--tw-ring-color:var(--ui-error)}.focus\:ring-info:focus{--tw-ring-color:var(--ui-info)}.focus\:ring-inverted:focus{--tw-ring-color:var(--ui-border-inverted)}.focus\:ring-primary:focus{--tw-ring-color:var(--ui-primary)}.focus\:ring-secondary:focus{--tw-ring-color:var(--ui-secondary)}.focus\:ring-success:focus{--tw-ring-color:var(--ui-success)}.focus\:ring-warning:focus{--tw-ring-color:var(--ui-warning)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:ring-inset:focus{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:focus\:bg-accented:is(:where(.group):hover *):focus{background-color:var(--ui-bg-accented)}}.focus-visible\:z-\[1\]:focus-visible{z-index:1}.focus-visible\:bg-accented\/75:focus-visible{background-color:var(--ui-bg-accented)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-accented\/75:focus-visible{background-color:color-mix(in oklab, var(--ui-bg-accented) 75%, transparent)}}.focus-visible\:bg-default\/10:focus-visible{background-color:#fffefb1a}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-default\/10:focus-visible{background-color:color-mix(in oklab, var(--ui-bg) 10%, transparent)}}.focus-visible\:bg-elevated:focus-visible{background-color:var(--ui-bg-elevated)}.focus-visible\:bg-error\/10:focus-visible{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-error\/10:focus-visible{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.focus-visible\:bg-error\/15:focus-visible{background-color:#b72d2d26}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-error\/15:focus-visible{background-color:color-mix(in oklab, var(--ui-error) 15%, transparent)}}.focus-visible\:bg-info\/10:focus-visible{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-info\/10:focus-visible{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.focus-visible\:bg-info\/15:focus-visible{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-info\/15:focus-visible{background-color:color-mix(in oklab, var(--ui-info) 15%, transparent)}}.focus-visible\:bg-primary\/10:focus-visible{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-primary\/10:focus-visible{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.focus-visible\:bg-primary\/15:focus-visible{background-color:#d1d5dc26}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-primary\/15:focus-visible{background-color:color-mix(in oklab, var(--ui-primary) 15%, transparent)}}.focus-visible\:bg-secondary\/10:focus-visible{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-secondary\/10:focus-visible{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.focus-visible\:bg-secondary\/15:focus-visible{background-color:#004f3d26}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-secondary\/15:focus-visible{background-color:color-mix(in oklab, var(--ui-secondary) 15%, transparent)}}.focus-visible\:bg-success\/10:focus-visible{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-success\/10:focus-visible{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.focus-visible\:bg-success\/15:focus-visible{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-success\/15:focus-visible{background-color:color-mix(in oklab, var(--ui-success) 15%, transparent)}}.focus-visible\:bg-warning\/10:focus-visible{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-warning\/10:focus-visible{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.focus-visible\:bg-warning\/15:focus-visible{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-warning\/15:focus-visible{background-color:color-mix(in oklab, var(--ui-warning) 15%, transparent)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-error:focus-visible{--tw-ring-color:var(--ui-error)}.focus-visible\:ring-info:focus-visible{--tw-ring-color:var(--ui-info)}.focus-visible\:ring-inverted:focus-visible{--tw-ring-color:var(--ui-border-inverted)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--ui-primary)}.focus-visible\:ring-secondary:focus-visible{--tw-ring-color:var(--ui-secondary)}.focus-visible\:ring-success:focus-visible{--tw-ring-color:var(--ui-success)}.focus-visible\:ring-warning:focus-visible{--tw-ring-color:var(--ui-warning)}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-error:focus-visible{outline-color:var(--ui-error)}.focus-visible\:outline-error\/50:focus-visible{outline-color:#b72d2d80}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-error\/50:focus-visible{outline-color:color-mix(in oklab, var(--ui-error) 50%, transparent)}}.focus-visible\:outline-info:focus-visible,.focus-visible\:outline-info\/50:focus-visible{outline-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-info\/50:focus-visible{outline-color:color-mix(in oklab, var(--ui-info) 50%, transparent)}}.focus-visible\:outline-inverted:focus-visible,.focus-visible\:outline-inverted\/50:focus-visible{outline-color:var(--ui-border-inverted)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-inverted\/50:focus-visible{outline-color:color-mix(in oklab, var(--ui-border-inverted) 50%, transparent)}}.focus-visible\:outline-primary:focus-visible{outline-color:var(--ui-primary)}.focus-visible\:outline-primary\/50:focus-visible{outline-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-primary\/50:focus-visible{outline-color:color-mix(in oklab, var(--ui-primary) 50%, transparent)}}.focus-visible\:outline-secondary:focus-visible{outline-color:var(--ui-secondary)}.focus-visible\:outline-secondary\/50:focus-visible{outline-color:#004f3d80}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-secondary\/50:focus-visible{outline-color:color-mix(in oklab, var(--ui-secondary) 50%, transparent)}}.focus-visible\:outline-success:focus-visible,.focus-visible\:outline-success\/50:focus-visible{outline-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-success\/50:focus-visible{outline-color:color-mix(in oklab, var(--ui-success) 50%, transparent)}}.focus-visible\:outline-warning:focus-visible,.focus-visible\:outline-warning\/50:focus-visible{outline-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-warning\/50:focus-visible{outline-color:color-mix(in oklab, var(--ui-warning) 50%, transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:before\:ring-2:focus-visible:before{content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:before\:ring-error:focus-visible:before{content:var(--tw-content);--tw-ring-color:var(--ui-error)}.focus-visible\:before\:ring-info:focus-visible:before{content:var(--tw-content);--tw-ring-color:var(--ui-info)}.focus-visible\:before\:ring-inverted:focus-visible:before{content:var(--tw-content);--tw-ring-color:var(--ui-border-inverted)}.focus-visible\:before\:ring-primary:focus-visible:before{content:var(--tw-content);--tw-ring-color:var(--ui-primary)}.focus-visible\:before\:ring-secondary:focus-visible:before{content:var(--tw-content);--tw-ring-color:var(--ui-secondary)}.focus-visible\:before\:ring-success:focus-visible:before{content:var(--tw-content);--tw-ring-color:var(--ui-success)}.focus-visible\:before\:ring-warning:focus-visible:before{content:var(--tw-content);--tw-ring-color:var(--ui-warning)}.focus-visible\:before\:ring-inset:focus-visible:before{content:var(--tw-content);--tw-ring-inset:inset}.active\:bg-accented\/75:active{background-color:var(--ui-bg-accented)}@supports (color:color-mix(in lab, red, red)){.active\:bg-accented\/75:active{background-color:color-mix(in oklab, var(--ui-bg-accented) 75%, transparent)}}.active\:bg-elevated:active{background-color:var(--ui-bg-elevated)}.active\:bg-error\/10:active{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/10:active{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.active\:bg-error\/15:active{background-color:#b72d2d26}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/15:active{background-color:color-mix(in oklab, var(--ui-error) 15%, transparent)}}.active\:bg-error\/75:active{background-color:#b72d2dbf}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/75:active{background-color:color-mix(in oklab, var(--ui-error) 75%, transparent)}}.active\:bg-info\/10:active{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/10:active{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.active\:bg-info\/15:active{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/15:active{background-color:color-mix(in oklab, var(--ui-info) 15%, transparent)}}.active\:bg-info\/75:active{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/75:active{background-color:color-mix(in oklab, var(--ui-info) 75%, transparent)}}.active\:bg-inverted\/90:active{background-color:var(--ui-bg-inverted)}@supports (color:color-mix(in lab, red, red)){.active\:bg-inverted\/90:active{background-color:color-mix(in oklab, var(--ui-bg-inverted) 90%, transparent)}}.active\:bg-primary\/10:active{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/10:active{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.active\:bg-primary\/15:active{background-color:#d1d5dc26}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/15:active{background-color:color-mix(in oklab, var(--ui-primary) 15%, transparent)}}.active\:bg-primary\/75:active{background-color:#d1d5dcbf}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/75:active{background-color:color-mix(in oklab, var(--ui-primary) 75%, transparent)}}.active\:bg-secondary\/10:active{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.active\:bg-secondary\/10:active{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.active\:bg-secondary\/15:active{background-color:#004f3d26}@supports (color:color-mix(in lab, red, red)){.active\:bg-secondary\/15:active{background-color:color-mix(in oklab, var(--ui-secondary) 15%, transparent)}}.active\:bg-secondary\/75:active{background-color:#004f3dbf}@supports (color:color-mix(in lab, red, red)){.active\:bg-secondary\/75:active{background-color:color-mix(in oklab, var(--ui-secondary) 75%, transparent)}}.active\:bg-success\/10:active{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/10:active{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.active\:bg-success\/15:active{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/15:active{background-color:color-mix(in oklab, var(--ui-success) 15%, transparent)}}.active\:bg-success\/75:active{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/75:active{background-color:color-mix(in oklab, var(--ui-success) 75%, transparent)}}.active\:bg-warning\/10:active{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/10:active{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.active\:bg-warning\/15:active{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/15:active{background-color:color-mix(in oklab, var(--ui-warning) 15%, transparent)}}.active\:bg-warning\/75:active{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/75:active{background-color:color-mix(in oklab, var(--ui-warning) 75%, transparent)}}.active\:text-default:active{color:var(--ui-text)}.active\:text-error\/75:active{color:#b72d2dbf}@supports (color:color-mix(in lab, red, red)){.active\:text-error\/75:active{color:color-mix(in oklab, var(--ui-error) 75%, transparent)}}.active\:text-info\/75:active{color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.active\:text-info\/75:active{color:color-mix(in oklab, var(--ui-info) 75%, transparent)}}.active\:text-primary\/75:active{color:#d1d5dcbf}@supports (color:color-mix(in lab, red, red)){.active\:text-primary\/75:active{color:color-mix(in oklab, var(--ui-primary) 75%, transparent)}}.active\:text-secondary\/75:active{color:#004f3dbf}@supports (color:color-mix(in lab, red, red)){.active\:text-secondary\/75:active{color:color-mix(in oklab, var(--ui-secondary) 75%, transparent)}}.active\:text-success\/75:active{color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.active\:text-success\/75:active{color:color-mix(in oklab, var(--ui-success) 75%, transparent)}}.active\:text-warning\/75:active{color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.active\:text-warning\/75:active{color:color-mix(in oklab, var(--ui-warning) 75%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-default:disabled{background-color:var(--ui-bg)}.disabled\:bg-elevated:disabled{background-color:var(--ui-bg-elevated)}.disabled\:bg-elevated\/50:disabled{background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-elevated\/50:disabled{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}.disabled\:bg-error:disabled{background-color:var(--ui-error)}.disabled\:bg-error\/10:disabled{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-error\/10:disabled{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.disabled\:bg-info:disabled,.disabled\:bg-info\/10:disabled{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-info\/10:disabled{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.disabled\:bg-inverted:disabled{background-color:var(--ui-bg-inverted)}.disabled\:bg-primary:disabled{background-color:var(--ui-primary)}.disabled\:bg-primary\/10:disabled{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-primary\/10:disabled{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.disabled\:bg-secondary:disabled{background-color:var(--ui-secondary)}.disabled\:bg-secondary\/10:disabled{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-secondary\/10:disabled{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.disabled\:bg-success:disabled,.disabled\:bg-success\/10:disabled{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-success\/10:disabled{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:bg-warning:disabled,.disabled\:bg-warning\/10:disabled{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-warning\/10:disabled{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.disabled\:text-\(--gray\):disabled{color:var(--gray)}.disabled\:text-error:disabled{color:var(--ui-error)}.disabled\:text-info:disabled{color:var(--ui-info)}.disabled\:text-muted:disabled{color:var(--ui-text-muted)}.disabled\:text-primary:disabled{color:var(--ui-primary)}.disabled\:text-secondary:disabled{color:var(--ui-secondary)}.disabled\:text-success:disabled{color:var(--ui-success)}.disabled\:text-warning:disabled{color:var(--ui-warning)}.disabled\:\!opacity-100:disabled{opacity:1!important}.disabled\:opacity-75:disabled{opacity:.75}@media (hover:hover){.hover\:disabled\:bg-transparent:hover:disabled{background-color:#0000}}.has-focus\:bg-elevated:has(:focus){background-color:var(--ui-bg-elevated)}.has-focus-visible\:z-\[1\]:has(:focus-visible){z-index:1}.has-focus-visible\:ring-2:has(:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-focus-visible\:ring-error:has(:focus-visible){--tw-ring-color:var(--ui-error)}.has-focus-visible\:ring-info:has(:focus-visible){--tw-ring-color:var(--ui-info)}.has-focus-visible\:ring-inverted:has(:focus-visible){--tw-ring-color:var(--ui-border-inverted)}.has-focus-visible\:ring-primary:has(:focus-visible){--tw-ring-color:var(--ui-primary)}.has-focus-visible\:ring-secondary:has(:focus-visible){--tw-ring-color:var(--ui-secondary)}.has-focus-visible\:ring-success:has(:focus-visible){--tw-ring-color:var(--ui-success)}.has-focus-visible\:ring-warning:has(:focus-visible){--tw-ring-color:var(--ui-warning)}.has-focus-visible\:ring-inset:has(:focus-visible){--tw-ring-inset:inset}.has-data-\[state\=checked\]\:z-\[1\]:has([data-state=checked]){z-index:1}.has-data-\[state\=checked\]\:border-error:has([data-state=checked]){border-color:var(--ui-error)}.has-data-\[state\=checked\]\:border-error\/50:has([data-state=checked]){border-color:#b72d2d80}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:border-error\/50:has([data-state=checked]){border-color:color-mix(in oklab, var(--ui-error) 50%, transparent)}}:is(.has-data-\[state\=checked\]\:border-info:has([data-state=checked]),.has-data-\[state\=checked\]\:border-info\/50:has([data-state=checked])){border-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:border-info\/50:has([data-state=checked]){border-color:color-mix(in oklab, var(--ui-info) 50%, transparent)}}:is(.has-data-\[state\=checked\]\:border-inverted:has([data-state=checked]),.has-data-\[state\=checked\]\:border-inverted\/50:has([data-state=checked])){border-color:var(--ui-border-inverted)}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:border-inverted\/50:has([data-state=checked]){border-color:color-mix(in oklab, var(--ui-border-inverted) 50%, transparent)}}.has-data-\[state\=checked\]\:border-primary:has([data-state=checked]){border-color:var(--ui-primary)}.has-data-\[state\=checked\]\:border-primary\/50:has([data-state=checked]){border-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:border-primary\/50:has([data-state=checked]){border-color:color-mix(in oklab, var(--ui-primary) 50%, transparent)}}.has-data-\[state\=checked\]\:border-secondary:has([data-state=checked]){border-color:var(--ui-secondary)}.has-data-\[state\=checked\]\:border-secondary\/50:has([data-state=checked]){border-color:#004f3d80}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:border-secondary\/50:has([data-state=checked]){border-color:color-mix(in oklab, var(--ui-secondary) 50%, transparent)}}:is(.has-data-\[state\=checked\]\:border-success:has([data-state=checked]),.has-data-\[state\=checked\]\:border-success\/50:has([data-state=checked])){border-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:border-success\/50:has([data-state=checked]){border-color:color-mix(in oklab, var(--ui-success) 50%, transparent)}}:is(.has-data-\[state\=checked\]\:border-warning:has([data-state=checked]),.has-data-\[state\=checked\]\:border-warning\/50:has([data-state=checked])){border-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:border-warning\/50:has([data-state=checked]){border-color:color-mix(in oklab, var(--ui-warning) 50%, transparent)}}.has-data-\[state\=checked\]\:bg-elevated:has([data-state=checked]){background-color:var(--ui-bg-elevated)}.has-data-\[state\=checked\]\:bg-error\/10:has([data-state=checked]){background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:bg-error\/10:has([data-state=checked]){background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.has-data-\[state\=checked\]\:bg-info\/10:has([data-state=checked]){background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:bg-info\/10:has([data-state=checked]){background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.has-data-\[state\=checked\]\:bg-primary\/10:has([data-state=checked]){background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:bg-primary\/10:has([data-state=checked]){background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.has-data-\[state\=checked\]\:bg-secondary\/10:has([data-state=checked]){background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:bg-secondary\/10:has([data-state=checked]){background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.has-data-\[state\=checked\]\:bg-success\/10:has([data-state=checked]){background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:bg-success\/10:has([data-state=checked]){background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.has-data-\[state\=checked\]\:bg-warning\/10:has([data-state=checked]){background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.has-data-\[state\=checked\]\:bg-warning\/10:has([data-state=checked]){background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.aria-disabled\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.aria-disabled\:bg-default[aria-disabled=true]{background-color:var(--ui-bg)}.aria-disabled\:bg-elevated[aria-disabled=true]{background-color:var(--ui-bg-elevated)}.aria-disabled\:bg-error[aria-disabled=true]{background-color:var(--ui-error)}.aria-disabled\:bg-error\/10[aria-disabled=true]{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.aria-disabled\:bg-error\/10[aria-disabled=true]{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.aria-disabled\:bg-info[aria-disabled=true],.aria-disabled\:bg-info\/10[aria-disabled=true]{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.aria-disabled\:bg-info\/10[aria-disabled=true]{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.aria-disabled\:bg-inverted[aria-disabled=true]{background-color:var(--ui-bg-inverted)}.aria-disabled\:bg-primary[aria-disabled=true]{background-color:var(--ui-primary)}.aria-disabled\:bg-primary\/10[aria-disabled=true]{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.aria-disabled\:bg-primary\/10[aria-disabled=true]{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.aria-disabled\:bg-secondary[aria-disabled=true]{background-color:var(--ui-secondary)}.aria-disabled\:bg-secondary\/10[aria-disabled=true]{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.aria-disabled\:bg-secondary\/10[aria-disabled=true]{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.aria-disabled\:bg-success[aria-disabled=true],.aria-disabled\:bg-success\/10[aria-disabled=true]{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.aria-disabled\:bg-success\/10[aria-disabled=true]{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.aria-disabled\:bg-transparent[aria-disabled=true]{background-color:#0000}.aria-disabled\:bg-warning[aria-disabled=true],.aria-disabled\:bg-warning\/10[aria-disabled=true]{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.aria-disabled\:bg-warning\/10[aria-disabled=true]{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.aria-disabled\:text-error[aria-disabled=true]{color:var(--ui-error)}.aria-disabled\:text-info[aria-disabled=true]{color:var(--ui-info)}.aria-disabled\:text-muted[aria-disabled=true]{color:var(--ui-text-muted)}.aria-disabled\:text-primary[aria-disabled=true]{color:var(--ui-primary)}.aria-disabled\:text-secondary[aria-disabled=true]{color:var(--ui-secondary)}.aria-disabled\:text-success[aria-disabled=true]{color:var(--ui-success)}.aria-disabled\:text-warning[aria-disabled=true]{color:var(--ui-warning)}.aria-disabled\:opacity-75[aria-disabled=true]{opacity:.75}@media (hover:hover){.hover\:aria-disabled\:bg-transparent:hover[aria-disabled=true]{background-color:#0000}}.data-disabled\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-disabled\:text-muted[data-disabled]{color:var(--ui-text-muted)}.data-disabled\:opacity-75[data-disabled]{opacity:.75}.data-highlighted\:text-error[data-highlighted]{color:var(--ui-error)}.data-highlighted\:text-highlighted[data-highlighted]{color:var(--ui-text-highlighted)}.data-highlighted\:text-info[data-highlighted]{color:var(--ui-info)}.data-highlighted\:text-primary[data-highlighted]{color:var(--ui-primary)}.data-highlighted\:text-secondary[data-highlighted]{color:var(--ui-secondary)}.data-highlighted\:text-success[data-highlighted]{color:var(--ui-success)}.data-highlighted\:text-warning[data-highlighted]{color:var(--ui-warning)}.data-highlighted\:not-data-disabled\:text-highlighted[data-highlighted]:not([data-disabled]){color:var(--ui-text-highlighted)}.data-highlighted\:before\:bg-elevated\/50[data-highlighted]:before{content:var(--tw-content);background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:before\:bg-elevated\/50[data-highlighted]:before{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}.data-highlighted\:before\:bg-error\/10[data-highlighted]:before{content:var(--tw-content);background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:before\:bg-error\/10[data-highlighted]:before{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.data-highlighted\:before\:bg-info\/10[data-highlighted]:before{content:var(--tw-content);background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:before\:bg-info\/10[data-highlighted]:before{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.data-highlighted\:before\:bg-primary\/10[data-highlighted]:before{content:var(--tw-content);background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:before\:bg-primary\/10[data-highlighted]:before{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.data-highlighted\:before\:bg-secondary\/10[data-highlighted]:before{content:var(--tw-content);background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:before\:bg-secondary\/10[data-highlighted]:before{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.data-highlighted\:before\:bg-success\/10[data-highlighted]:before{content:var(--tw-content);background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:before\:bg-success\/10[data-highlighted]:before{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.data-highlighted\:before\:bg-warning\/10[data-highlighted]:before{content:var(--tw-content);background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:before\:bg-warning\/10[data-highlighted]:before{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.data-highlighted\:not-data-disabled\:before\:bg-elevated\/50[data-highlighted]:not([data-disabled]):before{content:var(--tw-content);background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.data-highlighted\:not-data-disabled\:before\:bg-elevated\/50[data-highlighted]:not([data-disabled]):before{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}.data-invalid\:text-error[data-invalid]{color:var(--ui-error)}.data-placeholder\:text-dimmed[data-placeholder]{color:var(--ui-text-dimmed)}.data-today\:font-semibold[data-today]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-today\:not-data-\[selected\]\:text-error[data-today]:not([data-selected]){color:var(--ui-error)}.data-today\:not-data-\[selected\]\:text-highlighted[data-today]:not([data-selected]){color:var(--ui-text-highlighted)}.data-today\:not-data-\[selected\]\:text-info[data-today]:not([data-selected]){color:var(--ui-info)}.data-today\:not-data-\[selected\]\:text-primary[data-today]:not([data-selected]){color:var(--ui-primary)}.data-today\:not-data-\[selected\]\:text-secondary[data-today]:not([data-selected]){color:var(--ui-secondary)}.data-today\:not-data-\[selected\]\:text-success[data-today]:not([data-selected]){color:var(--ui-success)}.data-today\:not-data-\[selected\]\:text-warning[data-today]:not([data-selected]){color:var(--ui-warning)}.data-unavailable\:pointer-events-none[data-unavailable]{pointer-events:none}.data-unavailable\:text-muted[data-unavailable]{color:var(--ui-text-muted)}.data-unavailable\:line-through[data-unavailable]{text-decoration-line:line-through}.data-\[disabled\]\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\[disabled\]\:opacity-75[data-disabled]{opacity:.75}.data-\[dragging\=true\]\:bg-elevated\/25[data-dragging=true]{background-color:#d1d5dc40}@supports (color:color-mix(in lab, red, red)){.data-\[dragging\=true\]\:bg-elevated\/25[data-dragging=true]{background-color:color-mix(in oklab, var(--ui-bg-elevated) 25%, transparent)}}.data-\[expanded\=true\]\:h-\(--height\)[data-expanded=true]{height:var(--height)}:is(.data-\[front\=false\]\:\*\:transition-opacity[data-front=false]>*){transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}:is(.data-\[front\=false\]\:\*\:duration-100[data-front=false]>*){--tw-duration:.1s;transition-duration:.1s}.data-\[expanded\=false\]\:data-\[front\=false\]\:h-\(--front-height\)[data-expanded=false][data-front=false]{height:var(--front-height)}:is(.data-\[expanded\=false\]\:data-\[front\=false\]\:\*\:opacity-0[data-expanded=false][data-front=false]>*){opacity:0}.data-\[highlighted\]\:bg-error\/10[data-highlighted]{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-error\/10[data-highlighted]{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.data-\[highlighted\]\:bg-error\/20[data-highlighted]{background-color:#b72d2d33}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-error\/20[data-highlighted]{background-color:color-mix(in oklab, var(--ui-error) 20%, transparent)}}.data-\[highlighted\]\:bg-info\/10[data-highlighted]{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-info\/10[data-highlighted]{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.data-\[highlighted\]\:bg-info\/20[data-highlighted]{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-info\/20[data-highlighted]{background-color:color-mix(in oklab, var(--ui-info) 20%, transparent)}}.data-\[highlighted\]\:bg-inverted\/10[data-highlighted]{background-color:var(--ui-bg-inverted)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-inverted\/10[data-highlighted]{background-color:color-mix(in oklab, var(--ui-bg-inverted) 10%, transparent)}}.data-\[highlighted\]\:bg-inverted\/20[data-highlighted]{background-color:var(--ui-bg-inverted)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-inverted\/20[data-highlighted]{background-color:color-mix(in oklab, var(--ui-bg-inverted) 20%, transparent)}}.data-\[highlighted\]\:bg-primary\/10[data-highlighted]{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-primary\/10[data-highlighted]{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.data-\[highlighted\]\:bg-primary\/20[data-highlighted]{background-color:#d1d5dc33}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-primary\/20[data-highlighted]{background-color:color-mix(in oklab, var(--ui-primary) 20%, transparent)}}.data-\[highlighted\]\:bg-secondary\/10[data-highlighted]{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-secondary\/10[data-highlighted]{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.data-\[highlighted\]\:bg-secondary\/20[data-highlighted]{background-color:#004f3d33}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-secondary\/20[data-highlighted]{background-color:color-mix(in oklab, var(--ui-secondary) 20%, transparent)}}.data-\[highlighted\]\:bg-success\/10[data-highlighted]{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-success\/10[data-highlighted]{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.data-\[highlighted\]\:bg-success\/20[data-highlighted]{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-success\/20[data-highlighted]{background-color:color-mix(in oklab, var(--ui-success) 20%, transparent)}}.data-\[highlighted\]\:bg-warning\/10[data-highlighted]{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-warning\/10[data-highlighted]{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.data-\[highlighted\]\:bg-warning\/20[data-highlighted]{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-warning\/20[data-highlighted]{background-color:color-mix(in oklab, var(--ui-warning) 20%, transparent)}}.data-\[motion\=from-end\]\:animate-\[enter-from-right_200ms_ease\][data-motion=from-end]{animation:.2s enter-from-right}.data-\[motion\=from-start\]\:animate-\[enter-from-left_200ms_ease\][data-motion=from-start]{animation:.2s enter-from-left}.data-\[motion\=to-end\]\:animate-\[exit-to-right_200ms_ease\][data-motion=to-end]{animation:.2s exit-to-right}.data-\[motion\=to-start\]\:animate-\[exit-to-left_200ms_ease\][data-motion=to-start]{animation:.2s exit-to-left}.data-\[outside-view\]\:text-muted[data-outside-view]{color:var(--ui-text-muted)}.data-\[segment\=day\]\:w-6[data-segment=day]{width:calc(var(--spacing) * 6)}.data-\[segment\=day\]\:w-7[data-segment=day]{width:calc(var(--spacing) * 7)}.data-\[segment\=day\]\:w-8[data-segment=day]{width:calc(var(--spacing) * 8)}.data-\[segment\=literal\]\:text-muted[data-segment=literal]{color:var(--ui-text-muted)}.data-\[segment\=month\]\:w-6[data-segment=month]{width:calc(var(--spacing) * 6)}.data-\[segment\=month\]\:w-7[data-segment=month]{width:calc(var(--spacing) * 7)}.data-\[segment\=month\]\:w-8[data-segment=month]{width:calc(var(--spacing) * 8)}.data-\[segment\=year\]\:w-9[data-segment=year]{width:calc(var(--spacing) * 9)}.data-\[segment\=year\]\:w-11[data-segment=year]{width:calc(var(--spacing) * 11)}.data-\[segment\=year\]\:w-13[data-segment=year]{width:calc(var(--spacing) * 13)}.data-\[selected\]\:bg-default[data-selected]{background-color:var(--ui-bg)}.data-\[selected\]\:bg-elevated[data-selected]{background-color:var(--ui-bg-elevated)}.data-\[selected\]\:bg-error[data-selected]{background-color:var(--ui-error)}.data-\[selected\]\:bg-error\/10[data-selected]{background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:bg-error\/10[data-selected]{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.data-\[selected\]\:bg-info[data-selected],.data-\[selected\]\:bg-info\/10[data-selected]{background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:bg-info\/10[data-selected]{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.data-\[selected\]\:bg-inverted[data-selected]{background-color:var(--ui-bg-inverted)}.data-\[selected\]\:bg-primary[data-selected]{background-color:var(--ui-primary)}.data-\[selected\]\:bg-primary\/10[data-selected]{background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:bg-primary\/10[data-selected]{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.data-\[selected\]\:bg-secondary[data-selected]{background-color:var(--ui-secondary)}.data-\[selected\]\:bg-secondary\/10[data-selected]{background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:bg-secondary\/10[data-selected]{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.data-\[selected\]\:bg-success[data-selected],.data-\[selected\]\:bg-success\/10[data-selected]{background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:bg-success\/10[data-selected]{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.data-\[selected\]\:bg-warning[data-selected],.data-\[selected\]\:bg-warning\/10[data-selected]{background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:bg-warning\/10[data-selected]{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.data-\[selected\]\:text-default[data-selected]{color:var(--ui-text)}.data-\[selected\]\:text-error[data-selected]{color:var(--ui-error)}.data-\[selected\]\:text-info[data-selected]{color:var(--ui-info)}.data-\[selected\]\:text-inverted[data-selected]{color:var(--ui-text-inverted)}.data-\[selected\]\:text-primary[data-selected]{color:var(--ui-primary)}.data-\[selected\]\:text-secondary[data-selected]{color:var(--ui-secondary)}.data-\[selected\]\:text-success[data-selected]{color:var(--ui-success)}.data-\[selected\]\:text-warning[data-selected]{color:var(--ui-warning)}.data-\[selected\]\:ring[data-selected]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[selected\]\:ring-accented[data-selected]{--tw-ring-color:var(--ui-border-accented)}.data-\[selected\]\:ring-error\/25[data-selected]{--tw-ring-color:#b72d2d40}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-error\/25[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-error) 25%, transparent)}}.data-\[selected\]\:ring-error\/50[data-selected]{--tw-ring-color:#b72d2d80}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-error\/50[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-error) 50%, transparent)}}.data-\[selected\]\:ring-info\/25[data-selected]{--tw-ring-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-info\/25[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-info) 25%, transparent)}}.data-\[selected\]\:ring-info\/50[data-selected]{--tw-ring-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-info\/50[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-info) 50%, transparent)}}.data-\[selected\]\:ring-primary\/25[data-selected]{--tw-ring-color:#d1d5dc40}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-primary\/25[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-primary) 25%, transparent)}}.data-\[selected\]\:ring-primary\/50[data-selected]{--tw-ring-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-primary\/50[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-primary) 50%, transparent)}}.data-\[selected\]\:ring-secondary\/25[data-selected]{--tw-ring-color:#004f3d40}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-secondary\/25[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-secondary) 25%, transparent)}}.data-\[selected\]\:ring-secondary\/50[data-selected]{--tw-ring-color:#004f3d80}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-secondary\/50[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-secondary) 50%, transparent)}}.data-\[selected\]\:ring-success\/25[data-selected]{--tw-ring-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-success\/25[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-success) 25%, transparent)}}.data-\[selected\]\:ring-success\/50[data-selected]{--tw-ring-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-success\/50[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-success) 50%, transparent)}}.data-\[selected\]\:ring-warning\/25[data-selected]{--tw-ring-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-warning\/25[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-warning) 25%, transparent)}}.data-\[selected\]\:ring-warning\/50[data-selected]{--tw-ring-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.data-\[selected\]\:ring-warning\/50[data-selected]{--tw-ring-color:color-mix(in oklab, var(--ui-warning) 50%, transparent)}}.data-\[selected\]\:ring-inset[data-selected]{--tw-ring-inset:inset}.data-\[selected\=true\]\:bg-elevated\/50[data-selected=true]{background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.data-\[selected\=true\]\:bg-elevated\/50[data-selected=true]{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}.data-\[state\=\\\"active\\\"\]\:bg-accented[data-state=\"active\"]{background-color:var(--ui-bg-accented)}.data-\[state\=active\]\:bg-inverted[data-state=active]{background-color:var(--ui-bg-inverted)}.data-\[state\=active\]\:text-error[data-state=active]{color:var(--ui-error)}.data-\[state\=active\]\:text-highlighted[data-state=active]{color:var(--ui-text-highlighted)}.data-\[state\=active\]\:text-info[data-state=active]{color:var(--ui-info)}.data-\[state\=active\]\:text-inverted[data-state=active]{color:var(--ui-text-inverted)}.data-\[state\=active\]\:text-primary[data-state=active]{color:var(--ui-primary)}.data-\[state\=active\]\:text-secondary[data-state=active]{color:var(--ui-secondary)}.data-\[state\=active\]\:text-success[data-state=active]{color:var(--ui-success)}.data-\[state\=active\]\:text-warning[data-state=active]{color:var(--ui-warning)}.data-\[state\=checked\]\:translate-x-3[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:translate-x-3\.5[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 3.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:translate-x-4\.5[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-error[data-state=checked]{background-color:var(--ui-error)}.data-\[state\=checked\]\:bg-info[data-state=checked]{background-color:var(--ui-info)}.data-\[state\=checked\]\:bg-inverted[data-state=checked]{background-color:var(--ui-bg-inverted)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--ui-primary)}.data-\[state\=checked\]\:bg-secondary[data-state=checked]{background-color:var(--ui-secondary)}.data-\[state\=checked\]\:bg-success[data-state=checked]{background-color:var(--ui-success)}.data-\[state\=checked\]\:bg-warning[data-state=checked]{background-color:var(--ui-warning)}.data-\[state\=closed\]\:animate-\[accordion-up_200ms_ease-out\][data-state=closed]{animation:.2s ease-out accordion-up}.data-\[state\=closed\]\:animate-\[collapsible-up_200ms_ease-out\][data-state=closed]{animation:.2s ease-out collapsible-up}.data-\[state\=closed\]\:animate-\[fade-out_200ms_ease-in\][data-state=closed]{animation:.2s ease-in fade-out}.data-\[state\=closed\]\:animate-\[scale-out_100ms_ease-in\][data-state=closed]{animation:.1s ease-in scale-out}.data-\[state\=closed\]\:animate-\[scale-out_200ms_ease-in\][data-state=closed]{animation:.2s ease-in scale-out}.data-\[state\=closed\]\:animate-\[slide-out-to-bottom_200ms_ease-in-out\][data-state=closed]{animation:.2s ease-in-out slide-out-to-bottom}.data-\[state\=closed\]\:animate-\[slide-out-to-left_200ms_ease-in-out\][data-state=closed]{animation:.2s ease-in-out slide-out-to-left}.data-\[state\=closed\]\:animate-\[slide-out-to-right_200ms_ease-in-out\][data-state=closed]{animation:.2s ease-in-out slide-out-to-right}.data-\[state\=closed\]\:animate-\[slide-out-to-top_200ms_ease-in-out\][data-state=closed]{animation:.2s ease-in-out slide-out-to-top}.data-\[state\=closed\]\:animate-\[toast-closed_200ms_ease-in-out\][data-state=closed]{animation:.2s ease-in-out toast-closed}.data-\[state\=closed\]\:data-\[expanded\=false\]\:data-\[front\=false\]\:animate-\[toast-collapsed-closed_200ms_ease-in-out\][data-state=closed][data-expanded=false][data-front=false]{animation:.2s ease-in-out toast-collapsed-closed}.data-\[state\=delayed-open\]\:animate-\[scale-in_100ms_ease-out\][data-state=delayed-open]{animation:.1s ease-out scale-in}.data-\[state\=hidden\]\:animate-\[fade-out_100ms_ease-in\][data-state=hidden]{animation:.1s ease-in fade-out}.data-\[state\=hidden\]\:opacity-0[data-state=hidden]{opacity:0}.data-\[state\=inactive\]\:text-muted[data-state=inactive]{color:var(--ui-text-muted)}@media (hover:hover){.hover\:data-\[state\=inactive\]\:not-disabled\:text-default:hover[data-state=inactive]:not(:disabled){color:var(--ui-text)}}.data-\[state\=indeterminate\]\:animate-\[carousel-inverse-vertical_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite carousel-inverse-vertical}.data-\[state\=indeterminate\]\:animate-\[carousel-inverse_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite carousel-inverse}.data-\[state\=indeterminate\]\:animate-\[carousel-vertical_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite carousel-vertical}.data-\[state\=indeterminate\]\:animate-\[carousel_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite carousel}.data-\[state\=indeterminate\]\:animate-\[elastic-vertical_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite elastic-vertical}.data-\[state\=indeterminate\]\:animate-\[elastic_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite elastic}.data-\[state\=indeterminate\]\:animate-\[swing-vertical_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite swing-vertical}.data-\[state\=indeterminate\]\:animate-\[swing_2s_ease-in-out_infinite\][data-state=indeterminate]{animation:2s ease-in-out infinite swing}.data-\[state\=open\]\:animate-\[accordion-down_200ms_ease-out\][data-state=open]{animation:.2s ease-out accordion-down}.data-\[state\=open\]\:animate-\[collapsible-down_200ms_ease-out\][data-state=open]{animation:.2s ease-out collapsible-down}.data-\[state\=open\]\:animate-\[fade-in_200ms_ease-out\][data-state=open]{animation:.2s ease-out fade-in}.data-\[state\=open\]\:animate-\[scale-in_100ms_ease-out\][data-state=open]{animation:.1s ease-out scale-in}.data-\[state\=open\]\:animate-\[scale-in_200ms_ease-out\][data-state=open]{animation:.2s ease-out scale-in}.data-\[state\=open\]\:animate-\[slide-in-from-bottom_200ms_ease-in-out\][data-state=open]{animation:.2s ease-in-out slide-in-from-bottom}.data-\[state\=open\]\:animate-\[slide-in-from-left_200ms_ease-in-out\][data-state=open]{animation:.2s ease-in-out slide-in-from-left}.data-\[state\=open\]\:animate-\[slide-in-from-right_200ms_ease-in-out\][data-state=open]{animation:.2s ease-in-out slide-in-from-right}.data-\[state\=open\]\:animate-\[slide-in-from-top_200ms_ease-in-out\][data-state=open]{animation:.2s ease-in-out slide-in-from-top}.data-\[state\=open\]\:animate-\[toast-slide-in-from-bottom_200ms_ease-in-out\][data-state=open]{animation:.2s ease-in-out toast-slide-in-from-bottom}.data-\[state\=open\]\:animate-\[toast-slide-in-from-top_200ms_ease-in-out\][data-state=open]{animation:.2s ease-in-out toast-slide-in-from-top}.data-\[state\=open\]\:text-highlighted[data-state=open]{color:var(--ui-text-highlighted)}.data-\[state\=open\]\:before\:bg-elevated\/50[data-state=open]:before{content:var(--tw-content);background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:before\:bg-elevated\/50[data-state=open]:before{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}.data-\[state\=open\]\:before\:bg-error\/10[data-state=open]:before{content:var(--tw-content);background-color:#b72d2d1a}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:before\:bg-error\/10[data-state=open]:before{background-color:color-mix(in oklab, var(--ui-error) 10%, transparent)}}.data-\[state\=open\]\:before\:bg-info\/10[data-state=open]:before{content:var(--tw-content);background-color:var(--ui-info)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:before\:bg-info\/10[data-state=open]:before{background-color:color-mix(in oklab, var(--ui-info) 10%, transparent)}}.data-\[state\=open\]\:before\:bg-primary\/10[data-state=open]:before{content:var(--tw-content);background-color:#d1d5dc1a}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:before\:bg-primary\/10[data-state=open]:before{background-color:color-mix(in oklab, var(--ui-primary) 10%, transparent)}}.data-\[state\=open\]\:before\:bg-secondary\/10[data-state=open]:before{content:var(--tw-content);background-color:#004f3d1a}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:before\:bg-secondary\/10[data-state=open]:before{background-color:color-mix(in oklab, var(--ui-secondary) 10%, transparent)}}.data-\[state\=open\]\:before\:bg-success\/10[data-state=open]:before{content:var(--tw-content);background-color:var(--ui-success)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:before\:bg-success\/10[data-state=open]:before{background-color:color-mix(in oklab, var(--ui-success) 10%, transparent)}}.data-\[state\=open\]\:before\:bg-warning\/10[data-state=open]:before{content:var(--tw-content);background-color:var(--ui-warning)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:before\:bg-warning\/10[data-state=open]:before{background-color:color-mix(in oklab, var(--ui-warning) 10%, transparent)}}.data-\[state\=open\]\:data-\[pulsing\=even\]\:animate-\[toast-pulse-b_300ms_ease-out\][data-state=open][data-pulsing=even]{animation:.3s ease-out toast-pulse-b}.data-\[state\=open\]\:data-\[pulsing\=odd\]\:animate-\[toast-pulse-a_300ms_ease-out\][data-state=open][data-pulsing=odd]{animation:.3s ease-out toast-pulse-a}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-accented[data-state=unchecked]{background-color:var(--ui-bg-accented)}.data-\[state\=visible\]\:animate-\[fade-in_100ms_ease-out\][data-state=visible]{animation:.1s ease-out fade-in}.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[swipe\=cancel\]\:translate-y-0[data-swipe=cancel]{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[swipe\=end\]\:translate-x-\(--reka-toast-swipe-end-x\)[data-swipe=end]{--tw-translate-x:var(--reka-toast-swipe-end-x);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[swipe\=end\]\:translate-y-\(--reka-toast-swipe-end-y\)[data-swipe=end]{--tw-translate-y:var(--reka-toast-swipe-end-y);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[swipe\=end\]\:animate-\[toast-slide-down_200ms_ease-out\][data-swipe=end]{animation:.2s ease-out toast-slide-down}.data-\[swipe\=end\]\:animate-\[toast-slide-left_200ms_ease-out\][data-swipe=end]{animation:.2s ease-out toast-slide-left}.data-\[swipe\=end\]\:animate-\[toast-slide-right_200ms_ease-out\][data-swipe=end]{animation:.2s ease-out toast-slide-right}.data-\[swipe\=end\]\:animate-\[toast-slide-up_200ms_ease-out\][data-swipe=end]{animation:.2s ease-out toast-slide-up}.data-\[swipe\=move\]\:translate-x-\(--reka-toast-swipe-move-x\)[data-swipe=move]{--tw-translate-x:var(--reka-toast-swipe-move-x);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[swipe\=move\]\:translate-y-\(--reka-toast-swipe-move-y\)[data-swipe=move]{--tw-translate-y:var(--reka-toast-swipe-move-y);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}@media (width>=40rem){.sm\:-start-12{inset-inline-start:calc(var(--spacing) * -12)}.sm\:-end-12{inset-inline-end:calc(var(--spacing) * -12)}.sm\:-top-12{top:calc(var(--spacing) * -12)}.sm\:-bottom-12{bottom:calc(var(--spacing) * -12)}.sm\:mb-1{margin-bottom:calc(var(--spacing) * 1)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:inline{display:inline}.sm\:h-\[28rem\]{height:28rem}.sm\:h-\[38px\]{height:38px}.sm\:h-\[54px\]{height:54px}.sm\:max-h-\[calc\(100dvh-4rem\)\]{max-height:calc(100dvh - 4rem)}.sm\:w-\(--reka-navigation-menu-viewport-width\){width:var(--reka-navigation-menu-viewport-width)}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:max-w-3xl{max-width:var(--container-3xl)}.sm\:max-w-100{max-width:calc(var(--spacing) * 100)}.sm\:scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:gap-16{gap:calc(var(--spacing) * 16)}:where(.sm\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}.sm\:gap-y-12{row-gap:calc(var(--spacing) * 12)}.sm\:gap-y-24{row-gap:calc(var(--spacing) * 24)}.sm\:p-0{padding:calc(var(--spacing) * 0)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:px-12{padding-inline:calc(var(--spacing) * 12)}.sm\:py-8{padding-block:calc(var(--spacing) * 8)}.sm\:py-24{padding-block:calc(var(--spacing) * 24)}.sm\:py-32{padding-block:calc(var(--spacing) * 32)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-xl\/8{font-size:var(--text-xl);line-height:calc(var(--spacing) * 8)}.sm\:text-\[16px\]{font-size:16px}.sm\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.sm\:ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (width>=48rem){.md\:hidden{display:none}.md\:table{display:table}.md\:columns-2{columns:2}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (width>=64rem){.lg\:sticky{position:sticky}.lg\:top-\(--ui-header-height\){top:var(--ui-header-height)}.lg\:z-\[1\]{z-index:1}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:order-3{order:3}.lg\:order-last{order:9999}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:mx-auto{margin-inline:auto}.lg\:-ms-4{margin-inline-start:calc(var(--spacing) * -4)}.lg\:me-0{margin-inline-end:calc(var(--spacing) * 0)}.lg\:mt-0{margin-top:calc(var(--spacing) * 0)}.lg\:mt-12{margin-top:calc(var(--spacing) * 12)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:inline-flex{display:inline-flex}.lg\:max-h-\[calc\(100vh-var\(--ui-header-height\)\)\]{max-height:calc(100vh - var(--ui-header-height))}.lg\:w-\(--width\){width:var(--width)}.lg\:w-full{width:100%}.lg\:max-w-xs{max-width:var(--container-xs)}.lg\:flex-1{flex:1}.lg\:scale-\[1\.1\]{scale:1.1}.lg\:columns-3{columns:3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-\[repeat\(var\(--count\)\,minmax\(0\,1fr\)\)\]{grid-template-columns:repeat(var(--count),minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:justify-center{justify-content:center}.lg\:justify-end{justify-content:flex-end}.lg\:justify-start{justify-content:flex-start}.lg\:gap-10{gap:calc(var(--spacing) * 10)}.lg\:gap-x-3{column-gap:calc(var(--spacing) * 3)}.lg\:gap-x-13{column-gap:calc(var(--spacing) * 13)}.lg\:gap-y-16{row-gap:calc(var(--spacing) * 16)}:where(.lg\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.lg\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}.lg\:p-6{padding:calc(var(--spacing) * 6)}.lg\:p-8{padding:calc(var(--spacing) * 8)}.lg\:px-0{padding-inline:calc(var(--spacing) * 0)}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:px-16{padding-inline:calc(var(--spacing) * 16)}.lg\:py-4{padding-block:calc(var(--spacing) * 4)}.lg\:py-12{padding-block:calc(var(--spacing) * 12)}.lg\:py-24{padding-block:calc(var(--spacing) * 24)}.lg\:py-32{padding-block:calc(var(--spacing) * 32)}.lg\:py-40{padding-block:calc(var(--spacing) * 40)}.lg\:ps-4{padding-inline-start:calc(var(--spacing) * 4)}.lg\:pe-6\.5{padding-inline-end:calc(var(--spacing) * 6.5)}.lg\:pr-6{padding-right:calc(var(--spacing) * 6)}.lg\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:not-last\:border-e:not(:last-child){border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.lg\:not-last\:border-default:not(:last-child){border-color:var(--ui-border)}}@media (width>=80rem){.xl\:col-span-2{grid-column:span 2/span 2}.xl\:mt-0{margin-top:calc(var(--spacing) * 0)}.xl\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.xl\:grid{display:grid}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:gap-8{gap:calc(var(--spacing) * 8)}.xl\:p-10{padding:calc(var(--spacing) * 10)}}.ltr\:justify-end:where(:not(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=ltr],[dir=ltr] *){justify-content:flex-end}.rtl\:translate-x-\[4px\]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:4px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rtl\:-rotate-90:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){rotate:-90deg}.rtl\:animate-\[marquee-rtl_var\(--duration\)_linear_infinite\]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){animation:marquee-rtl var(--duration) linear infinite}.rtl\:animate-\[marquee-vertical-rtl_var\(--duration\)_linear_infinite\]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){animation:marquee-vertical-rtl var(--duration) linear infinite}.rtl\:justify-end:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){justify-content:flex-end}.rtl\:text-right:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){text-align:right}.rtl\:after\:animate-\[carousel-inverse-rtl_2s_ease-in-out_infinite\]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *):after{content:var(--tw-content);animation:2s ease-in-out infinite carousel-inverse-rtl}.rtl\:after\:animate-\[carousel-rtl_2s_ease-in-out_infinite\]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *):after{content:var(--tw-content);animation:2s ease-in-out infinite carousel-rtl}.data-\[state\=checked\]\:rtl\:-translate-x-3[data-state=checked]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(var(--spacing) * -3);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:rtl\:-translate-x-3\.5[data-state=checked]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(var(--spacing) * -3.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:rtl\:-translate-x-4[data-state=checked]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:rtl\:-translate-x-4\.5[data-state=checked]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(var(--spacing) * -4.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:rtl\:-translate-x-5[data-state=checked]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(var(--spacing) * -5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=indeterminate\]\:rtl\:animate-\[carousel-inverse-rtl_2s_ease-in-out_infinite\][data-state=indeterminate]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){animation:2s ease-in-out infinite carousel-inverse-rtl}.data-\[state\=indeterminate\]\:rtl\:animate-\[carousel-rtl_2s_ease-in-out_infinite\][data-state=indeterminate]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){animation:2s ease-in-out infinite carousel-rtl}.data-\[state\=unchecked\]\:rtl\:-translate-x-0[data-state=unchecked]:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:inline-block:where(.dark,.dark *){display:inline-block}.dark\:border-\(--border-dark\):where(.dark,.dark *){border-color:var(--border-dark)}.dark\:border-\(--border-dark\)\!:where(.dark,.dark *){border-color:var(--border-dark)!important}.dark\:bg-\(--black\):where(.dark,.dark *){background-color:var(--black)}.dark\:bg-\(--black\)\!:where(.dark,.dark *){background-color:var(--black)!important}.dark\:bg-\(--color-blue-500\):where(.dark,.dark *){background-color:var(--color-blue-500)}.dark\:bg-\(--main-dark\)\/90:where(.dark,.dark *){background-color:#212121e6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-\(--main-dark\)\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--main-dark) 90%, transparent)}}.dark\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\:from-gray-900:where(.dark,.dark *){--tw-gradient-from:var(--color-gray-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:via-gray-800:where(.dark,.dark *){--tw-gradient-via:var(--color-gray-800);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:to-gray-900:where(.dark,.dark *){--tw-gradient-to:var(--color-gray-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:text-\(--color-blue-500\):where(.dark,.dark *){color:var(--color-blue-500)}.dark\:text-\(--gray-dark\)\!:where(.dark,.dark *){color:var(--gray-dark)!important}.dark\:text-\(--second-light\):where(.dark,.dark *){color:var(--second-light)}.dark\:text-gray-200:where(.dark,.dark *){color:var(--color-gray-200)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:where(.dark,.dark *){color:var(--color-gray-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-white\!:where(.dark,.dark *){color:var(--color-white)!important}.dark\:shadow-gray-900\/50:where(.dark,.dark *){--tw-shadow-color:#10182880}@supports (color:color-mix(in lab, red, red)){.dark\:shadow-gray-900\/50:where(.dark,.dark *){--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-gray-900) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.dark\:placeholder\:text-\(--gray\)\!:where(.dark,.dark *)::placeholder{color:var(--gray)!important}@media (hover:hover){.dark\:hover\:bg-\(--color-blue-500\):where(.dark,.dark *):hover{background-color:var(--color-blue-500)}.dark\:hover\:bg-gray-800:where(.dark,.dark *):hover{background-color:var(--color-gray-800)}.dark\:hover\:text-primary:where(.dark,.dark *):hover{color:var(--ui-primary)}}.dark\:focus-visible\:outline-none:where(.dark,.dark *):focus-visible{--tw-outline-style:none;outline-style:none}.dark\:disabled\:bg-transparent:where(.dark,.dark *):disabled{background-color:#0000}@media (hover:hover){.dark\:hover\:disabled\:bg-transparent:where(.dark,.dark *):hover:disabled{background-color:#0000}}.dark\:aria-disabled\:bg-transparent:where(.dark,.dark *)[aria-disabled=true]{background-color:#0000}@media (hover:hover){.dark\:hover\:aria-disabled\:bg-transparent:where(.dark,.dark *):hover[aria-disabled=true]{background-color:#0000}}.\[\&_\.ProseMirror-selectednode\:not\(img\)\:not\(pre\)\:not\(\[data-node-view-wrapper\]\)\]\:bg-primary\/20 .ProseMirror-selectednode:not(img):not(pre):not([data-node-view-wrapper]){background-color:#d1d5dc33}@supports (color:color-mix(in lab, red, red)){.\[\&_\.ProseMirror-selectednode\:not\(img\)\:not\(pre\)\:not\(\[data-node-view-wrapper\]\)\]\:bg-primary\/20 .ProseMirror-selectednode:not(img):not(pre):not([data-node-view-wrapper]){background-color:color-mix(in oklab, var(--ui-primary) 20%, transparent)}}.\[\&_\.mention\]\:font-medium .mention{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\.mention\]\:text-primary .mention{color:var(--ui-primary)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:font-bold :is(h1,h2,h3,h4,h5,h6){--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\]\:text-highlighted :is(h1,h2,h3,h4,h5,h6){color:var(--ui-text-highlighted)}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\>code\]\:border-dashed :is(h1,h2,h3,h4,h5,h6)>code{--tw-border-style:dashed;border-style:dashed}.\[\&_\:is\(h1\,h2\,h3\,h4\,h5\,h6\)\>code\]\:font-bold :is(h1,h2,h3,h4,h5,h6)>code{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-editor-empty\:first-child\]\:before\:pointer-events-none :is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child:before{content:var(--tw-content);pointer-events:none}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-editor-empty\:first-child\]\:before\:float-start :is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child:before{content:var(--tw-content);float:inline-start}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-editor-empty\:first-child\]\:before\:h-0 :is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child:before{content:var(--tw-content);height:calc(var(--spacing) * 0)}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-editor-empty\:first-child\]\:before\:text-dimmed :is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child:before{content:var(--tw-content);color:var(--ui-text-dimmed)}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-editor-empty\:first-child\]\:before\:content-\[attr\(data-placeholder\)\] :is(p,h1,h2,h3,h4,h5,h6).is-editor-empty:first-child:before{--tw-content:attr(data-placeholder);content:var(--tw-content)}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-empty\]\:before\:pointer-events-none :is(p,h1,h2,h3,h4,h5,h6).is-empty:before{content:var(--tw-content);pointer-events:none}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-empty\]\:before\:float-start :is(p,h1,h2,h3,h4,h5,h6).is-empty:before{content:var(--tw-content);float:inline-start}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-empty\]\:before\:h-0 :is(p,h1,h2,h3,h4,h5,h6).is-empty:before{content:var(--tw-content);height:calc(var(--spacing) * 0)}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-empty\]\:before\:text-dimmed :is(p,h1,h2,h3,h4,h5,h6).is-empty:before{content:var(--tw-content);color:var(--ui-text-dimmed)}.\[\&_\:is\(p\,h1\,h2\,h3\,h4\,h5\,h6\)\.is-empty\]\:before\:content-\[attr\(data-placeholder\)\] :is(p,h1,h2,h3,h4,h5,h6).is-empty:before{--tw-content:attr(data-placeholder);content:var(--tw-content)}.\[\&_\:is\(ul\,ol\)\]\:ps-6 :is(ul,ol){padding-inline-start:calc(var(--spacing) * 6)}.\[\&_\[data-type\=horizontalRule\]\]\:my-8 [data-type=horizontalRule]{margin-block:calc(var(--spacing) * 8)}.\[\&_\[data-type\=horizontalRule\]\]\:py-2 [data-type=horizontalRule]{padding-block:calc(var(--spacing) * 2)}.\[\&_a\]\:border-b a{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_a\]\:border-transparent a{border-color:#0000}.\[\&_a\]\:font-medium a{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_a\]\:text-primary a{color:var(--ui-primary)}.\[\&_a\]\:transition-colors a{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.\[\&_a\]\:hover\:border-primary a:hover{border-color:var(--ui-primary)}}.\[\&_a\:hover\>code\]\:border-primary a:hover>code{border-color:var(--ui-primary)}.\[\&_a\:hover\>code\]\:text-primary a:hover>code{color:var(--ui-primary)}.\[\&_a\>code\]\:border-dashed a>code{--tw-border-style:dashed;border-style:dashed}.\[\&_a\>code\]\:transition-colors a>code{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.\[\&_blockquote\]\:border-s-4 blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px}.\[\&_blockquote\]\:border-accented blockquote{border-color:var(--ui-border-accented)}.\[\&_blockquote\]\:ps-4 blockquote{padding-inline-start:calc(var(--spacing) * 4)}.\[\&_blockquote\]\:italic blockquote{font-style:italic}.\[\&_code\]\:inline-block code{display:inline-block}.\[\&_code\]\:rounded-md code{border-radius:calc(var(--ui-radius) * 1.5)}.\[\&_code\]\:border code{border-style:var(--tw-border-style);border-width:1px}.\[\&_code\]\:border-muted code{border-color:var(--ui-border-muted)}.\[\&_code\]\:bg-muted code{background-color:var(--ui-bg-muted)}.\[\&_code\]\:px-1\.5 code{padding-inline:calc(var(--spacing) * 1.5)}.\[\&_code\]\:py-0\.5 code{padding-block:calc(var(--spacing) * .5)}.\[\&_code\]\:font-mono code{font-family:var(--font-mono)}.\[\&_code\]\:text-sm code{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_code\]\:font-medium code{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_code\]\:text-highlighted code{color:var(--ui-text-highlighted)}.\[\&_h1\]\:text-3xl h1{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.\[\&_h2\]\:text-2xl h2{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.\[\&_h2\>code\]\:text-xl\/6 h2>code{font-size:var(--text-xl);line-height:calc(var(--spacing) * 6)}.\[\&_h3\]\:text-xl h3{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.\[\&_h3\>code\]\:text-lg\/5 h3>code{font-size:var(--text-lg);line-height:calc(var(--spacing) * 5)}.\[\&_h4\]\:text-lg h4{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.\[\&_h5\]\:text-base h5,.\[\&_h6\]\:text-base h6{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.\[\&_hr\]\:border-t hr{border-top-style:var(--tw-border-style);border-top-width:1px}.\[\&_hr\]\:border-default hr{border-color:var(--ui-border)}.\[\&_img\]\:block img{display:block}.\[\&_img\]\:max-w-full img{max-width:100%}.\[\&_img\]\:rounded-md img{border-radius:calc(var(--ui-radius) * 1.5)}.\[\&_img\.ProseMirror-selectednode\]\:outline-2 img.ProseMirror-selectednode{outline-style:var(--tw-outline-style);outline-width:2px}.\[\&_img\.ProseMirror-selectednode\]\:outline-primary img.ProseMirror-selectednode{outline-color:var(--ui-primary)}.\[\&_li\]\:my-1\.5 li{margin-block:calc(var(--spacing) * 1.5)}.\[\&_li\]\:ps-1\.5 li{padding-inline-start:calc(var(--spacing) * 1.5)}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:marker\:text-muted ol ::marker{color:var(--ui-text-muted)}.\[\&_ol\]\:marker\:text-muted ol::marker{color:var(--ui-text-muted)}.\[\&_ol\]\:marker\:text-muted ol ::-webkit-details-marker{color:var(--ui-text-muted)}.\[\&_ol\]\:marker\:text-muted ol::-webkit-details-marker{color:var(--ui-text-muted)}.\[\&_p\]\:leading-7 p{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.\[\&_pre\]\:rounded-md pre{border-radius:calc(var(--ui-radius) * 1.5)}.\[\&_pre\]\:border pre{border-style:var(--tw-border-style);border-width:1px}.\[\&_pre\]\:border-muted pre{border-color:var(--ui-border-muted)}.\[\&_pre\]\:bg-muted pre{background-color:var(--ui-bg-muted)}.\[\&_pre\]\:px-4 pre{padding-inline:calc(var(--spacing) * 4)}.\[\&_pre\]\:py-3 pre{padding-block:calc(var(--spacing) * 3)}.\[\&_pre\]\:text-sm\/6 pre{font-size:var(--text-sm);line-height:calc(var(--spacing) * 6)}.\[\&_pre\]\:break-words pre{overflow-wrap:break-word}.\[\&_pre\]\:whitespace-pre-wrap pre{white-space:pre-wrap}.\[\&_pre_code\]\:inline pre code{display:inline}.\[\&_pre_code\]\:rounded-none pre code{border-radius:0}.\[\&_pre_code\]\:border-0 pre code{border-style:var(--tw-border-style);border-width:0}.\[\&_pre_code\]\:bg-transparent pre code{background-color:#0000}.\[\&_pre_code\]\:p-0 pre code{padding:calc(var(--spacing) * 0)}.\[\&_pre_code\]\:text-inherit pre code{color:inherit}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:marker\:text-\(--ui-border-accented\) ul ::marker{color:var(--ui-border-accented)}.\[\&_ul\]\:marker\:text-\(--ui-border-accented\) ul::marker{color:var(--ui-border-accented)}.\[\&_ul\]\:marker\:text-\(--ui-border-accented\) ul ::-webkit-details-marker{color:var(--ui-border-accented)}.\[\&_ul\]\:marker\:text-\(--ui-border-accented\) ul::-webkit-details-marker{color:var(--ui-border-accented)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pe-0:has([role=checkbox]){padding-inline-end:calc(var(--spacing) * 0)}.\[\&\>\*\:first-child\]\:col-start-2>:first-child{grid-column-start:2}.\[\&\>\*\:nth-child\(1\)\]\:animate-\[bounce_1s_infinite\]>:first-child{animation:1s infinite bounce}.\[\&\>\*\:nth-child\(2\)\]\:animate-\[bounce_1s_0\.15s_infinite\]>:nth-child(2){animation:1s .15s infinite bounce}.\[\&\>\*\:nth-child\(3\)\]\:animate-\[bounce_1s_0\.3s_infinite\]>:nth-child(3){animation:1s .3s infinite bounce}.\[\&\>article\]\:last-of-type\:min-h-\(--last-message-height\)>article:last-of-type{min-height:var(--last-message-height)}.\[\&\>button\]\:py-0>button{padding-block:calc(var(--spacing) * 0)}.\[\&\>div\]\:min-w-0>div{min-width:calc(var(--spacing) * 0)}.\[\&\>input\]\:h-10>input{height:calc(var(--spacing) * 10)}.\[\&\>input\]\:h-11>input{height:calc(var(--spacing) * 11)}.\[\&\>input\]\:h-12>input{height:calc(var(--spacing) * 12)}.\[\&\>input\]\:h-13>input{height:calc(var(--spacing) * 13)}.\[\&\>input\]\:h-14>input{height:calc(var(--spacing) * 14)}.\[\&\>mark\]\:bg-primary>mark{background-color:var(--ui-primary)}.\[\&\>mark\]\:text-inverted>mark{color:var(--ui-text-inverted)}@media (hover:hover){.\[\&\>tr\]\:data-\[selectable\=true\]\:hover\:bg-elevated\/50>tr[data-selectable=true]:hover{background-color:#d1d5dc80}@supports (color:color-mix(in lab, red, red)){.\[\&\>tr\]\:data-\[selectable\=true\]\:hover\:bg-elevated\/50>tr[data-selectable=true]:hover{background-color:color-mix(in oklab, var(--ui-bg-elevated) 50%, transparent)}}}.\[\&\>tr\]\:data-\[selectable\=true\]\:focus-visible\:outline-primary>tr[data-selectable=true]:focus-visible{outline-color:var(--ui-primary)}}@keyframes accordion-up{0%{height:var(--reka-accordion-content-height)}to{height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--reka-accordion-content-height)}}@keyframes collapsible-up{0%{height:var(--reka-collapsible-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--reka-collapsible-content-height)}}@keyframes toast-slide-in-from-top{0%{transform:translateY(-100%)}to{transform:var(--transform)}}@keyframes toast-slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:var(--transform)}}@keyframes toast-slide-up{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) - 100%))}}@keyframes toast-slide-down{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) + 100%))}}@keyframes toast-pulse-a{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-pulse-b{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slide-out-to-left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translate(200px)}to{opacity:1;transform:translate(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translate(-200px)}to{opacity:1;transform:translate(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-200px)}}@keyframes carousel{0%,to{width:50%}0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes carousel-rtl{0%,to{width:50%}0%{transform:translate(100%)}to{transform:translate(-200%)}}@keyframes carousel-vertical{0%,to{height:50%}0%{transform:translateY(-100%)}to{transform:translateY(200%)}}@keyframes carousel-inverse{0%,to{width:50%}0%{transform:translate(200%)}to{transform:translate(-100%)}}@keyframes carousel-inverse-rtl{0%,to{width:50%}0%{transform:translate(-200%)}to{transform:translate(100%)}}@keyframes carousel-inverse-vertical{0%,to{height:50%}0%{transform:translateY(200%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:50%}0%,to{transform:translate(-25%)}50%{transform:translate(125%)}}@keyframes swing-vertical{0%,to{height:50%}0%,to{transform:translateY(-25%)}50%{transform:translateY(125%)}}@keyframes elastic{0%,to{width:50%;margin-left:25%}50%{width:90%;margin-left:5%}}@keyframes elastic-vertical{0%,to{height:50%;margin-top:25%}50%{height:90%;margin-top:5%}}@keyframes marquee{0%{transform:translateZ(0)}to{transform:translate3d(calc(-100% - var(--gap)),0,0)}}@keyframes marquee-rtl{0%{transform:translateZ(0)}to{transform:translate3d(calc(100% + var(--gap)),0,0)}}@keyframes marquee-vertical{0%{transform:translateZ(0)}to{transform:translate3d(0,calc(-100% - var(--gap)),0)}}@keyframes marquee-vertical-rtl{0%{transform:translate3d(0,calc(-100% - var(--gap)),0)}to{transform:translate3d(0,calc(-100%*var(--gap)),0)}}body,.inter{font-family:Inter,sans-serif}.container{max-width:2100px;margin:auto}.dark{--ui-bg:var(--black);--ui-primary:var(--color-gray-500);--ui-secondary:var(--accent-green-dark);--ui-border-accented:var(--border-dark);--ui-text-dimmed:var(--gray-dark);--ui-border:var(--border-dark);--ui-bg-elevated:var(--color-gray-500);--ui-error:var(--dark-red);--border:var(--border-dark);--tw-border-style:var(--border-dark)}.label-form{padding-left:calc(var(--spacing) * 0);--tw-leading:1;color:var(--gray);line-height:1}@media (width>=48rem){.label-form{padding-left:calc(var(--spacing) * 6)}}.label-form:where(.dark,.dark *){color:var(--gray-dark)}.title{--tw-leading:1;--tw-font-weight:var(--font-weight-medium);font-size:19px;line-height:1;font-weight:var(--font-weight-medium);color:var(--black)}@media (width>=40rem){.title{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (width>=48rem){.title{font-size:22px}}.title:where(.dark,.dark *){color:var(--main-light)}.column-title{margin-bottom:25px}@media (width>=40rem){.column-title{margin-bottom:30px}}@media (width>=48rem){.column-title{margin-left:25px}}.form-title{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--accent-green)}.form-title:where(.dark,.dark *){color:var(--accent-green-dark)}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} diff --git a/assets/public/dist/assets/pl_PrivacyPolicyView-Bqyt2B2G.js b/assets/public/dist/assets/pl_PrivacyPolicyView-Bqyt2B2G.js new file mode 100644 index 0000000..cd8c443 --- /dev/null +++ b/assets/public/dist/assets/pl_PrivacyPolicyView-Bqyt2B2G.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,f as r,h as i,y as a}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{Q as o,t as s}from"./Icon-Chkiq2IE.js";import{t as c}from"./Card-DPC9xXwj.js";var l={class:`min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8`},u={class:`max-w-4xl mx-auto`},d={class:`text-center mb-12`},f={class:`inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30`},p=a({__name:`pl_PrivacyPolicyView`,setup(a){let{t:p}=o();return(a,o)=>{let p=s,m=c;return e(),i(`div`,l,[r(`div`,u,[r(`div`,d,[r(`div`,f,[n(p,{name:`i-heroicons-shield-check`,class:`w-8 h-8`})]),o[0]||=r(`h1`,{class:`text-3xl font-bold text-gray-900 dark:text-white`},`Polityka Prywatności`,-1),o[1]||=r(`p`,{class:`mt-2 text-sm text-gray-600 dark:text-gray-400`},`Ostatnia aktualizacja: marzec 2026`,-1)]),n(m,{class:`shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50`},{footer:t(()=>[...o[2]||=[r(`div`,{class:`flex justify-center`},null,-1)]]),default:t(()=>[o[3]||=r(`div`,{class:`prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6`},[r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`1. Wprowadzenie`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` W TimeTracker traktujemy Twoją prywatność poważnie. Niniejsza Polityka Prywatności wyjaśnia, jak gromadzimy, wykorzystujemy, udostępniamy i chronimy Twoje informacje podczas korzystania z naszej aplikacji. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`2. Informacje, które gromadzimy`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Możemy gromadzić dane osobowe, które dobrowolnie nam podajesz, gdy:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Rejestrujesz konto`),r(`li`,null,`Korzystasz z funkcji śledzenia czasu`),r(`li`,null,`Tworzysz lub zarządzasz projektami`),r(`li`,null,`Generujesz raporty`),r(`li`,null,`Kontaktujesz się z naszym zespołem wsparcia`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`3. Jak wykorzystujemy Twoje informacje`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Wykorzystujemy zebrane informacje do:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Świadczenia i utrzymywania naszych usług`),r(`li`,null,`Śledzenia Twojego czasu i zarządzania projektami`),r(`li`,null,`Ulepszania naszych usług i doświadczenia użytkownika`),r(`li`,null,`Komunikowania się z Tobą w sprawach aktualizacji i wsparcia`),r(`li`,null,`Wypełniania zobowiązań prawnych`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`4. Przechowywanie i bezpieczeństwo danych`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Twoje dane są bezpiecznie przechowywane z wykorzystaniem szyfrowania zgodnego ze standardami branżowymi. Implementujemy odpowiednie środki techniczne i organizacyjne w celu ochrony Twoich danych osobowych przed nieautoryzowanym dostępem, zmianą, ujawnieniem lub zniszczeniem. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`5. Udostępnianie danych`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Nie sprzedajemy, nie wymieniamy ani w inny sposób nie przekazujemy Twoich danych osobowych stronom trzecim. Możemy udostępniać informacje: `),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Dostawcom usług wspierającym nasze działania`),r(`li`,null,`Organom prawnym, gdy wymaga tego prawo`),r(`li`,null,`Partnerom biznesowym za Twoją zgodą`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`6. Twoje prawa`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Masz prawo do:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Dostępu do swoich danych osobowych`),r(`li`,null,`Korekty niedokładnych danych`),r(`li`,null,`Żądania usunięcia swoich danych`),r(`li`,null,`Eksportu danych w formacie przenośnym`),r(`li`,null,`Rezygnacji z komunikacji marketingowej`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`7. Pliki cookies i technologie śledzenia`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Wykorzystujemy pliki cookies i podobne technologie śledzące, aby poprawić Twoje doświadczenie. Możesz kontrolować pliki cookies poprzez ustawienia przeglądarki. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`8. Prywatność dzieci`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Nasza usługa nie jest przeznaczona dla dzieci poniżej 13. roku życia. Świadomie nie gromadzimy danych osobowych od dzieci poniżej 13. roku życia. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`9. Zmiany w niniejszej polityce`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Możemy aktualizować niniejszą Politykę Prywatności od czasu do czasu. Powiadomimy Cię o wszelkich zmianach poprzez zamieszczenie nowej polityki na tej stronie i zaktualizowanie daty "Ostatnia aktualizacja". `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`10. Skontaktuj się z nami`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Jeśli masz jakiekolwiek pytania dotyczące niniejszej Polityki Prywatności, skontaktuj się z nami pod adresem privacy@timetracker.com. `)])],-1)]),_:1})])])}}});export{p as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/pl_TermsAndConditionsView-D4bXtPik.js b/assets/public/dist/assets/pl_TermsAndConditionsView-D4bXtPik.js new file mode 100644 index 0000000..da01992 --- /dev/null +++ b/assets/public/dist/assets/pl_TermsAndConditionsView-D4bXtPik.js @@ -0,0 +1 @@ +import{F as e,Q as t,_ as n,f as r,h as i,y as a}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{Q as o,t as s}from"./Icon-Chkiq2IE.js";import{t as c}from"./Card-DPC9xXwj.js";var l={class:`min-h-screen bg-gradient-to-br from-primary-50 via-white to-primary-100 dark:from-gray-900 dark:via-gray-800 dark:to-gray-900 py-12 px-4 sm:px-6 lg:px-8`},u={class:`max-w-4xl mx-auto`},d={class:`text-center mb-12`},f={class:`inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary-500 text-white mb-4 shadow-lg shadow-primary-500/30`},p=a({__name:`pl_TermsAndConditionsView`,setup(a){let{t:p}=o();return(a,o)=>{let p=s,m=c;return e(),i(`div`,l,[r(`div`,u,[r(`div`,d,[r(`div`,f,[n(p,{name:`i-heroicons-document-text`,class:`w-8 h-8`})]),o[0]||=r(`h1`,{class:`text-3xl font-bold text-gray-900 dark:text-white`},`Regulamin`,-1),o[1]||=r(`p`,{class:`mt-2 text-sm text-gray-600 dark:text-gray-400`},`Ostatnia aktualizacja: marzec 2026`,-1)]),n(m,{class:`shadow-xl shadow-gray-200/50 dark:shadow-gray-900/50`},{footer:t(()=>[...o[2]||=[r(`div`,{class:`flex justify-center`},null,-1)]]),default:t(()=>[o[3]||=r(`div`,{class:`prose prose-sm sm:prose dark:prose-invert max-w-none space-y-6`},[r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`1. Akceptacja Regulaminu`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Korzystając z aplikacji TimeTracker, akceptujesz i zgadzasz się na przestrzeganie warunków i postanowień niniejszej umowy. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`2. Opis Usługi`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` TimeTracker to aplikacja do śledzenia czasu pracy, która umożliwia użytkownikom śledzenie godzin pracy, zarządzanie projektami oraz generowanie raportów. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`3. Obowiązki Użytkownika`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},`Zgadzasz się na:`),r(`ul`,{class:`list-disc list-inside space-y-2 text-gray-600 dark:text-gray-400 ml-4`},[r(`li`,null,`Podawanie dokładnych i kompletnych informacji`),r(`li`,null,`Utrzymywanie bezpieczeństwa swojego konta`),r(`li`,null,`Nieudostępnianie danych logowania innym osobom`),r(`li`,null,`Korzystanie z usługi zgodnie z obowiązującymi przepisami prawa`)])]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`4. Prywatność i Ochrona Danych`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Jesteśmy zobowiązani do ochrony Twojej prywatności. Twoje dane osobowe będą przetwarzane zgodnie z naszą Polityką Prywatności oraz obowiązującymi przepisami o ochronie danych. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`5. Własność Intelektualna`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Usługa TimeTracker oraz wszystkie jej treści, w tym między innymi teksty, grafika, logo i oprogramowanie, stanowią własność TimeTracker i są chronione przepisami o własności intelektualnej. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`6. Ograniczenie Odpowiedzialności`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` TimeTracker nie ponosi odpowiedzialności za jakiekolwiek pośrednie, przypadkowe, specjalne, następcze lub karne szkody wynikające z korzystania lub niemożności korzystania z usługi. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`7. Rozwiązanie Umowy`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` zastrzegamy sobie prawo do rozwiązania lub zawieszenia Twojego konta w dowolnym momencie, bez wcześniejszego powiadomienia, za zachowanie, które narusza niniejszy Regulamin lub jest szkodliwe dla innych użytkowników lub usługi. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`8. Zmiany w Regulaminie`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` zastrzegamy sobie prawo do modyfikacji niniejszego Regulaminu w dowolnym momencie. Dalsze korzystanie z TimeTracker po wprowadzeniu zmian oznacza akceptację nowych warunków. `)]),r(`section`,null,[r(`h2`,{class:`text-xl font-semibold text-gray-900 dark:text-white`},`9. Informacje Kontaktowe`),r(`p`,{class:`text-gray-600 dark:text-gray-400`},` Jeśli masz jakiekolwiek pytania dotyczące niniejszego Regulaminu, skontaktuj się z nami pod adresem support@timetracker.com. `)])],-1)]),_:1})])])}}});export{p as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/router-CoYWQDRi.js b/assets/public/dist/assets/router-CoYWQDRi.js new file mode 100644 index 0000000..b2b1577 --- /dev/null +++ b/assets/public/dist/assets/router-CoYWQDRi.js @@ -0,0 +1,5 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-BQahLZXc.js","assets/HomeView-CdMOMcn8.js","assets/vue.runtime.esm-bundler-BM5WPBHd.js","assets/RepoChartView-DWk8UojC.js","assets/useFetchJson-4WJQFaEO.js","assets/PopperArrow-CcUKYeE0.js","assets/Icon-Chkiq2IE.js","assets/usePortal-Zddbph8M.js","assets/Button-jwL-tYHc.js","assets/useForwardExpose-BgPOLLFN.js","assets/auth-hZSBdvj-.js","assets/Collection-BkGqWqUl.js","assets/utils-ZBSSwpFo.js","assets/LoginView-DckqZJ4W.js","assets/_rolldown_dynamic_import_helper-DhxqfwDR.js","assets/Alert-BNRo6CMI.js","assets/useValidation-wBItIFut.js","assets/settings-BcOmX106.js","assets/RegisterView-HW42R58H.js","assets/VisuallyHiddenInput-BH1aLUkb.js","assets/PasswordRecoveryView-BsywcP-S.js","assets/ResetPasswordForm-Bm9Fa-4w.js","assets/VerifyEmailView-B2adokLx.js","assets/Card-DPC9xXwj.js"])))=>i.map(i=>d[i]); +import{$ as e,B as t,Ct as n,D as r,E as i,F as a,G as o,J as s,K as c,L as l,M as u,N as d,O as f,Q as p,R as m,St as h,W as g,Z as _,_ as v,at as y,b,d as x,f as S,g as C,gt as w,h as T,ht as E,i as D,m as O,mt as ee,o as k,p as A,pt as te,r as j,st as ne,u as M,ut as N,vt as P,wt as F,x as I,xt as L,y as R,yt as z,z as B}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{n as V}from"./useFetchJson-4WJQFaEO.js";import{a as re,i as H,n as ie,o as U,s as ae,t as W}from"./useForwardExpose-BgPOLLFN.js";import{C as oe,F as se,H as ce,J as le,N as ue,S as de,V as fe,X as pe,Y as me,b as he,d as ge,f as G,h as _e,i as K,j as ve,m as ye,n as be,p as xe,q as Se,r as Ce,s as q,t as we,u as Te,x as Ee}from"./Icon-Chkiq2IE.js";import{r as De,t as Oe}from"./auth-hZSBdvj-.js";import{a as ke,c as Ae,d as J,h as je,i as Me,l as Ne,m as Pe,o as Fe,r as Ie,s as Y,t as Le}from"./usePortal-Zddbph8M.js";import{i as Re,n as X,r as ze,t as Be}from"./Collection-BkGqWqUl.js";import{a as Ve,i as He,n as Ue,o as We,r as Z,s as Ge,t as Ke}from"./PopperArrow-CcUKYeE0.js";import{f as qe,h as Je,m as Ye,n as Xe,p as Ze,r as Qe,t as $e}from"./Button-jwL-tYHc.js";import{i as et,n as tt,t as nt}from"./VisuallyHiddenInput-BH1aLUkb.js";import{t as rt}from"./HomeView-CdMOMcn8.js";import{n as it,t as at}from"./settings-BcOmX106.js";function ot(e,t,n){let r=e.findIndex(e=>he(e,t)),i=e.findIndex(e=>he(e,n));if(r===-1||i===-1)return[];let[a,o]=[r,i].sort((e,t)=>e-t);return e.slice(a,o+1)}function st(e){let t=x(()=>z(e)),n=x(()=>new Intl.Collator(`en`,{usage:`search`,...t.value}));return{startsWith:(e,t)=>t.length===0?!0:(e=e.normalize(`NFC`),t=t.normalize(`NFC`),n.value.compare(e.slice(0,t.length),t)===0),endsWith:(e,t)=>t.length===0?!0:(e=e.normalize(`NFC`),t=t.normalize(`NFC`),n.value.compare(e.slice(-t.length),t)===0),contains:(e,t)=>{if(t.length===0)return!0;e=e.normalize(`NFC`),t=t.normalize(`NFC`);let r=0,i=t.length;for(;r+i<=e.length;r++){let a=e.slice(r,r+i);if(n.value.compare(t,a)===0)return!0}return!1}}}function ct(){return{ALT:`Alt`,ARROW_DOWN:`ArrowDown`,ARROW_LEFT:`ArrowLeft`,ARROW_RIGHT:`ArrowRight`,ARROW_UP:`ArrowUp`,BACKSPACE:`Backspace`,CAPS_LOCK:`CapsLock`,CONTROL:`Control`,DELETE:`Delete`,END:`End`,ENTER:`Enter`,ESCAPE:`Escape`,F1:`F1`,F10:`F10`,F11:`F11`,F12:`F12`,F2:`F2`,F3:`F3`,F4:`F4`,F5:`F5`,F6:`F6`,F7:`F7`,F8:`F8`,F9:`F9`,HOME:`Home`,META:`Meta`,PAGE_DOWN:`PageDown`,PAGE_UP:`PageUp`,SHIFT:`Shift`,SPACE:` `,TAB:`Tab`,CTRL:`Control`,ASTERISK:`*`,SPACE_CODE:`Space`}}var lt=R({__name:`ComboboxAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{forwardRef:t}=W();return(e,n)=>(a(),A(z(Z),{"as-child":``,reference:e.reference},{default:p(()=>[v(z(K),r({ref:z(t),"as-child":e.asChild,as:e.as},e.$attrs),{default:p(()=>[m(e.$slots,`default`)]),_:3},16,[`as-child`,`as`])]),_:3},8,[`reference`]))}});function ut(e){return e?.querySelector(`[data-state=checked]`)}function dt(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>Q(e,t,n)):Q(e,t,n)}function Q(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:he(e,t)}var[ft,pt]=q(`ListboxRoot`),mt=R({__name:`ListboxRoot`,props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:`vertical`},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:`toggle`},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`highlight`,`entryFocus`,`leave`],setup(e,{expose:t,emit:n}){let r=e,i=n,{multiple:o,highlightOnHover:c,orientation:l,disabled:u,selectionBehavior:d,dir:h}=w(r),{getItems:g}=Be({isProvider:!0}),{handleTypeaheadSearch:_}=We(),{primitiveElement:v,currentElement:y}=X(),b=ct(),x=Re(h),S=ze(y),C=N(),T=N(!1),E=N(!0),D=ue(r,`modelValue`,i,{defaultValue:r.defaultValue??(o.value?[]:void 0),passive:r.modelValue===void 0,deep:!0});function ee(e){if(T.value=!0,r.multiple){let t=Array.isArray(D.value)?[...D.value]:[],n=t.findIndex(t=>Q(t,e,r.by));r.selectionBehavior===`toggle`?(n===-1?t.push(e):t.splice(n,1),D.value=t):(D.value=[e],C.value=e)}else r.selectionBehavior===`toggle`&&Q(D.value,e,r.by)?D.value=void 0:D.value=e;setTimeout(()=>{T.value=!1},1)}let k=N(null),te=N(null),j=N(!1),ne=N(!1),M=se(),P=se(),F=se();function I(){return g().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)}function L(e,t=!0){e&&(k.value=e,E.value&&k.value.focus(),t&&k.value.scrollIntoView({block:`nearest`}),i(`highlight`,g().find(t=>t.ref===e)))}function R(e){if(j.value)F.trigger(e);else{let t=g().find(t=>Q(t.value,e,r.by));t&&(k.value=t.ref,L(t.ref))}}function B(e){k.value&&k.value.isConnected&&(e.preventDefault(),e.stopPropagation(),ne.value||k.value.click())}function V(e){if(E.value){if(T.value=!0,j.value)P.trigger(e);else{let t=e.altKey||e.ctrlKey||e.metaKey;if(t&&e.key===`a`&&o.value){let t=g();D.value=[...t.map(e=>e.value)],e.preventDefault(),L(t[t.length-1].ref)}else if(!t){let t=_(e.key,g());t&&L(t)}}setTimeout(()=>{T.value=!1},1)}}function re(){ne.value=!0}function H(){f(()=>{ne.value=!1})}function ie(){f(()=>{W(new KeyboardEvent(`keydown`,{key:`PageUp`}))})}function U(e){let t=k.value;t?.isConnected&&(te.value=t),k.value=null,i(`leave`,e)}function ae(e){let t=new CustomEvent(`listbox.entryFocus`,{bubbles:!1,cancelable:!0});if(e.currentTarget?.dispatchEvent(t),i(`entryFocus`,t),!t.defaultPrevented)if(te.value)L(te.value);else{let e=I()?.[0];L(e)}}function W(e){let t=et(e,l.value,x.value);if(!t)return;let n=I();if(k.value){if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let e=n.indexOf(k.value);n=n.slice(e+1)}oe(e,n[0])}if(n.length){let e=!k.value&&t===`prev`?n.length-1:0;L(n[e])}if(j.value)return P.trigger(e)}function oe(e,t){if(!(j.value||r.selectionBehavior!==`replace`||!o.value||!Array.isArray(D.value))&&!((e.altKey||e.ctrlKey||e.metaKey)&&!e.shiftKey)&&e.shiftKey){let n=g().filter(e=>e.ref.dataset.disabled!==``),r=n.find(e=>e.ref===t)?.value;if(e.key===b.END?r=n[n.length-1].value:e.key===b.HOME&&(r=n[0].value),!r||!C.value)return;D.value=ot(n.map(e=>e.value),C.value,r)}}async function ce(e){if(await f(),j.value)M.trigger(e);else{let e=I(),t=e.find(e=>e.dataset.state===`checked`);t?L(t):e.length&&L(e[0])}}return s(D,()=>{T.value||f(()=>{ce()})},{immediate:!0,deep:!0}),t({highlightedElement:k,highlightItem:R,highlightFirstItem:ie,highlightSelected:ce,getItems:g}),pt({modelValue:D,onValueChange:ee,multiple:o,orientation:l,dir:x,disabled:u,highlightOnHover:c,highlightedElement:k,isVirtual:j,virtualFocusHook:M,virtualKeydownHook:P,virtualHighlightHook:F,by:r.by,firstValue:C,selectionBehavior:d,focusable:E,onLeave:U,onEnter:ae,changeHighlight:L,onKeydownEnter:B,onKeydownNavigation:W,onKeydownTypeAhead:V,onCompositionStart:re,onCompositionEnd:H,highlightFirstItem:ie}),(e,t)=>(a(),A(z(K),{ref_key:`primitiveElement`,ref:v,as:e.as,"as-child":e.asChild,dir:z(x),"data-disabled":z(u)?``:void 0,onPointerleave:U,onFocusout:t[0]||=async e=>{let t=e.relatedTarget||e.target;await f(),k.value&&z(y)&&!z(y).contains(t)&&U(e)}},{default:p(()=>[m(e.$slots,`default`,{modelValue:z(D)}),z(S)&&e.name?(a(),A(z(nt),{key:0,name:e.name,value:z(D),disabled:z(u),required:e.required},null,8,[`name`,`value`,`disabled`,`required`])):O(`v-if`,!0)]),_:3},8,[`as`,`as-child`,`dir`,`data-disabled`]))}}),ht=R({__name:`ListboxContent`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{CollectionSlot:t}=Be(),n=ft(),r=ce(!1,10);return(e,i)=>(a(),A(z(t),null,{default:p(()=>[v(z(K),{role:`listbox`,as:e.as,"as-child":e.asChild,tabindex:z(n).focusable.value?z(n).highlightedElement.value?`-1`:`0`:`-1`,"aria-orientation":z(n).orientation.value,"aria-multiselectable":!!z(n).multiple.value,"data-orientation":z(n).orientation.value,onMousedown:i[0]||=D(e=>r.value=!0,[`left`]),onFocus:i[1]||=e=>{z(r)||z(n).onEnter(e)},onKeydown:[i[2]||=j(e=>{z(n).orientation.value===`vertical`&&(e.key===`ArrowLeft`||e.key===`ArrowRight`)||z(n).orientation.value===`horizontal`&&(e.key===`ArrowUp`||e.key===`ArrowDown`)||(e.preventDefault(),z(n).focusable.value&&z(n).onKeydownNavigation(e))},[`down`,`up`,`left`,`right`,`home`,`end`]),j(z(n).onKeydownEnter,[`enter`]),z(n).onKeydownTypeAhead]},{default:p(()=>[m(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`tabindex`,`aria-orientation`,`aria-multiselectable`,`data-orientation`,`onKeydown`])]),_:3}))}}),gt=R({__name:`ListboxFilter`,props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`input`}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=ue(n,`modelValue`,t,{defaultValue:``,passive:n.modelValue===void 0}),i=ft(),{primitiveElement:o,currentElement:s}=X(),c=x(()=>n.disabled||i.disabled.value||!1),l=N();return _(()=>l.value=i.highlightedElement.value?.id),u(()=>{i.focusable.value=!1,setTimeout(()=>{n.autoFocus&&s.value?.focus()},1)}),d(()=>{i.focusable.value=!0}),(e,t)=>(a(),A(z(K),{ref_key:`primitiveElement`,ref:o,as:e.as,"as-child":e.asChild,value:z(r),disabled:c.value?``:void 0,"data-disabled":c.value?``:void 0,"aria-disabled":c.value??void 0,"aria-activedescendant":l.value,type:`text`,onKeydown:[j(D(z(i).onKeydownNavigation,[`prevent`]),[`down`,`up`,`home`,`end`]),j(z(i).onKeydownEnter,[`enter`])],onInput:t[0]||=e=>{r.value=e.target.value,z(i).highlightFirstItem()},onCompositionstart:z(i).onCompositionStart,onCompositionend:z(i).onCompositionEnd},{default:p(()=>[m(e.$slots,`default`,{modelValue:z(r)})]),_:3},8,[`as`,`as-child`,`value`,`disabled`,`data-disabled`,`aria-disabled`,`aria-activedescendant`,`onKeydown`,`onCompositionstart`,`onCompositionend`]))}}),[_t,vt]=q(`ListboxGroup`),yt=R({__name:`ListboxGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=Y(void 0,`reka-listbox-group`);return vt({id:n}),(e,i)=>(a(),A(z(K),r({role:`group`},t,{"aria-labelledby":z(n)}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16,[`aria-labelledby`]))}}),bt=`listbox.select`,[xt,St]=q(`ListboxItem`),Ct=R({__name:`ListboxItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},emits:[`select`],setup(t,{emit:n}){let i=t,o=n,s=Y(void 0,`reka-listbox-item`),{CollectionItem:c}=Be(),{forwardRef:l,currentElement:u}=W(),d=ft(),f=x(()=>u.value===d.highlightedElement.value),h=x(()=>dt(d.modelValue.value,i.value,d.by)),g=x(()=>d.disabled.value||i.disabled);async function _(e){o(`select`,e),!e?.defaultPrevented&&!g.value&&e&&(d.onValueChange(i.value),d.changeHighlight(u.value))}function y(e){Pe(bt,_,{originalEvent:e,value:i.value})}return St({isSelected:h}),(t,n)=>(a(),A(z(c),{value:t.value},{default:p(()=>[e([f.value,h.value],()=>v(z(K),r({id:z(s)},t.$attrs,{ref:z(l),role:`option`,tabindex:z(d).focusable.value?f.value?`0`:`-1`:-1,"aria-selected":h.value,as:t.as,"as-child":t.asChild,disabled:g.value?``:void 0,"data-disabled":g.value?``:void 0,"data-highlighted":f.value?``:void 0,"data-state":h.value?`checked`:`unchecked`,onClick:y,onKeydown:j(D(y,[`prevent`]),[`space`]),onPointermove:n[0]||=()=>{z(d).highlightedElement.value!==z(u)&&z(d).highlightOnHover.value&&!z(d).focusable.value&&z(d).changeHighlight(z(u),!1)}}),{default:p(()=>[m(t.$slots,`default`)]),_:3},16,[`id`,`tabindex`,`aria-selected`,`as`,`as-child`,`disabled`,`data-disabled`,`data-highlighted`,`data-state`,`onKeydown`]),n,1)]),_:3},8,[`value`]))}}),wt=R({__name:`ListboxItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e;W();let n=xt();return(e,i)=>z(n).isSelected.value?(a(),A(z(K),r({key:0,"aria-hidden":`true`},t),{default:p(()=>[m(e.$slots,`default`)]),_:3},16)):O(`v-if`,!0)}});function Tt(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o;n.key&&n.debug?.call(n)&&(o=Date.now());let s=e();if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug?.call(n)&&(c=Date.now()),i=t(...s),n.key&&n.debug?.call(n)){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.length{r=e},o}function Et(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var Dt=(e,t)=>Math.abs(e-t)<1.01,Ot=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},kt=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},At=e=>e,jt=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},Mt=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(kt(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(kt(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},Nt={passive:!0},Pt=typeof window>`u`?!0:`onscrollend`in window,Ft=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=0,a=e.options.useScrollendEvent&&Pt?()=>void 0:Ot(r,()=>{t(i,!1)},e.options.isScrollingResetDelay),o=r=>()=>{let{horizontal:o,isRtl:s}=e.options;i=o?n.scrollLeft*(s&&-1||1):n.scrollTop,a(),t(i,r)},s=o(!0),c=o(!1);n.addEventListener(`scroll`,s,Nt);let l=e.options.useScrollendEvent&&Pt;return l&&n.addEventListener(`scrollend`,c,Nt),()=>{n.removeEventListener(`scroll`,s),l&&n.removeEventListener(`scrollend`,c)}},It=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Lt=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;let o=e+t;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:o,behavior:n})},Rt=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.currentScrollToIndex=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{this._measureElement(e.target,e)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,n])=>{n===void 0&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:At,rangeExtractor:jt,onChange:()=>{},measureElement:It,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...e}},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=Tt(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.ende.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=Tt(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes],(e,t,n,r,i,a)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a}),{key:!1}),this.getMeasurements=Tt(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a},o)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let s=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let c=this.measurementsCache.slice(0,s),l=Array(a).fill(void 0);for(let e=0;e1){s=a;let e=l[s],r=e===void 0?void 0:c[e];u=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?c[i-1]:this.getFurthestMeasurement(c,i);u=e?e.end+this.options.gap:t+n,s=e?e.lane:i%this.options.lanes,this.options.lanes>1&&this.laneAssignments.set(i,s)}let d=o.get(e),f=typeof d==`number`?d:this.options.estimateSize(i),p=u+f;c[i]={index:i,start:u,size:f,end:p,key:e,lane:s},l[s]=i}return this.measurementsCache=c,c},{key:!1,debug:()=>this.options.debug}),this.calculateRange=Tt(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?Bt({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=Tt(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this._measureElement=(e,t)=>{let n=this.indexFromElement(e),r=this.measurementsCache[n];if(!r)return;let i=r.key,a=this.elementsCache.get(i);a!==e&&(a&&this.observer.unobserve(a),this.observer.observe(e),this.elementsCache.set(i,e)),e.isConnected&&this.resizeItem(n,this.options.measureElement(e,t,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}this._measureElement(e,void 0)},this.getVirtualItems=Tt(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;rthis.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length!==0)return Et(t[zt(0,t.length-1,e=>Et(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.measurementsCache[e];if(!n)return;let r=this.getSize(),i=this.getScrollOffset();if(t===`auto`)if(n.end>=i+r-this.options.scrollPaddingEnd)t=`end`;else if(n.start<=i+this.options.scrollPaddingStart)t=`start`;else return[i,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?n.end+this.options.scrollPaddingEnd:n.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,n.size),t]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(e,{align:t=`start`,behavior:n}={})=>{n===`smooth`&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(e,t),{adjustments:void 0,behavior:n})},this.scrollToIndex=(e,{align:t=`auto`,behavior:n}={})=>{n===`smooth`&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),e=Math.max(0,Math.min(e,this.options.count-1)),this.currentScrollToIndex=e;let r=0,i=t=>{if(!this.targetWindow)return;let r=this.getOffsetForIndex(e,t);if(!r){console.warn(`Failed to get offset for index:`,e);return}let[i,o]=r;this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.targetWindow.requestAnimationFrame(()=>{if(!this.targetWindow)return;let t=()=>{if(this.currentScrollToIndex!==e)return;let t=this.getScrollOffset(),n=this.getOffsetForIndex(e,o);if(!n){console.warn(`Failed to get offset for index:`,e);return}Dt(n[0],t)||a(o)};this.isDynamicMode()?this.targetWindow.requestAnimationFrame(t):t()})},a=t=>{this.targetWindow&&this.currentScrollToIndex===e&&(r++,r<10?this.targetWindow.requestAnimationFrame(()=>i(t)):console.warn(`Failed to scroll to index ${e} after 10 attempts.`))};i(t)},this.scrollBy=(e,{behavior:t}={})=>{t===`smooth`&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+e,{adjustments:void 0,behavior:t})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1)t=e[e.length-1]?.end??0;else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}},zt=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(ar)t=i-1;else return i}return e>0?e-1:0};function Bt({measurements:e,outerSize:t,scrollOffset:n,lanes:r}){let i=e.length-1,a=t=>e[t].start;if(e.length<=r)return{startIndex:0,endIndex:i};let o=zt(0,i,a,n),s=o;if(r===1)for(;s1){let a=Array(r).fill(0);for(;se=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(i,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}function Vt(e){let t=new Rt(z(e)),n=te(t),r=t._didMount();return s(()=>z(e).getScrollElement(),e=>{e&&t._willUpdate()},{immediate:!0}),s(()=>z(e),e=>{t.setOptions({...e,onChange:(t,r)=>{var i;P(n),(i=e.onChange)==null||i.call(e,t,r)}}),t._willUpdate(),P(n)},{immediate:!0}),ne(r),n}function Ht(e){return Vt(x(()=>({observeElementRect:Mt,observeElementOffset:Ft,scrollToFn:Lt,...z(e)})))}var Ut=R({__name:`ListboxVirtualizer`,props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(e){let r=e,i=o(),s=ft(),c=ve(),{getItems:u}=Be();s.isVirtual.value=!0;let d=x(()=>{let e=c.value;if(e){let t=window.getComputedStyle(e);return{start:Number.parseFloat(t.paddingBlockStart||t.paddingTop),end:Number.parseFloat(t.paddingBlockEnd||t.paddingBottom)}}else return{start:0,end:0}}),f=Ht({get scrollPaddingStart(){return d.value.start},get scrollPaddingEnd(){return d.value.end},get count(){return r.options.length},get horizontal(){return s.orientation.value===`horizontal`},estimateSize(e){return typeof r.estimateSize==`function`?r.estimateSize(e):r.estimateSize??28},getScrollElement(){return c.value},overscan:r.overscan??12}),p=x(()=>f.value.getVirtualItems().map(e=>{let t=i.default({option:r.options[e.index],virtualizer:f.value,virtualItem:e})[0];return{item:e,is:M(t.type===k&&Array.isArray(t.children)?t.children[0]:t,{key:`${e.key}`,"data-index":e.index,"aria-setsize":r.options.length,"aria-posinset":e.index+1,style:{position:`absolute`,top:0,left:0,transform:`translateY(${e.start}px)`,overflowAnchor:`none`}})}}));s.virtualFocusHook.on(e=>{let t=r.options.findIndex(e=>Array.isArray(s.modelValue.value)?Q(e,s.modelValue.value[0],s.by):Q(e,s.modelValue.value,s.by));t===-1?s.highlightFirstItem():(e?.preventDefault(),f.value.scrollToIndex(t,{align:`start`}),requestAnimationFrame(()=>{let t=ut(c.value);t&&(s.changeHighlight(t),e&&t?.focus())}))}),s.virtualHighlightHook.on(e=>{let t=r.options.findIndex(t=>Q(t,e,s.by));f.value.scrollToIndex(t,{align:`start`}),requestAnimationFrame(()=>{let e=ut(c.value);e&&s.changeHighlight(e)})});let m=ce(``,1e3),h=x(()=>{let e=e=>r.textContent?r.textContent(e):e?.toString().toLowerCase();return r.options.map((t,n)=>({index:n,textContent:e(t)}))});function g(e,t){if(!s.firstValue?.value||!s.multiple.value||!Array.isArray(s.modelValue.value))return;let n=u().filter(e=>e.ref.dataset.disabled!==``).find(e=>e.ref===s.highlightedElement.value)?.value;if(!n)return;let i=null;switch(t){case`prev`:case`next`:i=ot(r.options,s.firstValue.value,n);break;case`first`:i=ot(r.options,s.firstValue.value,r.options?.[0]);break;case`last`:i=ot(r.options,s.firstValue.value,r.options?.[r.options.length-1]);break}s.modelValue.value=i}return s.virtualKeydownHook.on(e=>{let t=e.altKey||e.ctrlKey||e.metaKey;if(e.key===`Tab`&&!t)return;let n=tt[e.key];if(t&&e.key===`a`&&s.multiple.value?(e.preventDefault(),s.modelValue.value=[...r.options],n=`last`):e.shiftKey&&n&&g(e,n),[`first`,`last`].includes(n)){e.preventDefault();let t=n===`first`?0:r.options.length-1;f.value.scrollToIndex(t),requestAnimationFrame(()=>{let e=u(),t=n===`first`?e[0]:e[e.length-1];t&&s.changeHighlight(t.ref)})}else if(!n&&!t){m.value+=e.key;let t=Number(je()?.getAttribute(`data-index`)),n=h.value[t].textContent,r=Ve(h.value.map(e=>e.textContent??``),m.value,n),i=h.value.find(e=>e.textContent===r);i&&(f.value.scrollToIndex(i.index,{align:`start`}),requestAnimationFrame(()=>{let e=c.value.querySelector(`[data-index="${i.index}"]`);e instanceof HTMLElement&&s.changeHighlight(e)}))}}),(e,r)=>(a(),T(`div`,{"data-reka-virtualizer":``,style:n({position:`relative`,width:`100%`,height:`${z(f).getTotalSize()}px`})},[(a(!0),T(k,null,l(p.value,({is:e,item:n})=>(a(),A(t(e),{key:n.index}))),128))],4))}}),[$,Wt]=q(`ComboboxRoot`),Gt=R({__name:`ComboboxRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},openOnFocus:{type:Boolean,required:!1,default:!1},openOnClick:{type:Boolean,required:!1,default:!1},ignoreFilter:{type:Boolean,required:!1},resetModelValueOnClear:{type:Boolean,required:!1,default:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},highlightOnHover:{type:Boolean,required:!1,default:!0},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`highlight`,`update:open`],setup(e,{expose:t,emit:n}){let i=e,o=n,{primitiveElement:s,currentElement:c}=X(),{multiple:l,disabled:d,ignoreFilter:h,resetSearchTermOnSelect:g,openOnFocus:_,openOnClick:S,dir:C,resetModelValueOnClear:T,highlightOnHover:E}=w(i),D=Re(C),O=ue(i,`modelValue`,o,{defaultValue:i.defaultValue??(l.value?[]:void 0),passive:i.modelValue===void 0,deep:!0}),ee=ue(i,`open`,o,{defaultValue:i.defaultOpen,passive:i.open===void 0});async function k(e){ee.value=e,B.value=``,e?(await f(),s.value?.highlightSelected(),j.value=!0,M.value?.focus()):(j.value=!1,setTimeout(()=>{!e&&i.resetSearchTermOnBlur&&te.trigger()},1))}let te=se(),j=N(!1),ne=N(!1),M=N(),P=N(),F=x(()=>s.value?.highlightedElement??void 0),I=N(new Map),L=N(new Map),{contains:R}=st({sensitivity:`base`}),B=N(``),V=x(e=>{if(!B.value||i.ignoreFilter||ne.value)return{count:I.value.size,items:e?.items??new Map,groups:e?.groups??new Set(L.value.keys())};let t=0,n=new Map,r=new Set;for(let[e,r]of I.value){let i=R(r,B.value);n.set(e,i?1:0),i&&t++}for(let[e,t]of L.value)for(let i of t)if(n.get(i)>0){r.add(e);break}return{count:t,items:n,groups:r}}),re=b();return u(()=>{re?.exposed&&(re.exposed.highlightItem=s.value?.highlightItem,re.exposed.highlightFirstItem=s.value?.highlightFirstItem,re.exposed.highlightSelected=s.value?.highlightSelected)}),t({filtered:V,highlightedElement:F,highlightItem:s.value?.highlightItem,highlightFirstItem:s.value?.highlightFirstItem,highlightSelected:s.value?.highlightSelected}),Wt({modelValue:O,multiple:l,disabled:d,open:ee,onOpenChange:k,contentId:``,isUserInputted:j,isVirtual:ne,inputElement:M,highlightedElement:F,onInputElementChange:e=>M.value=e,triggerElement:P,onTriggerElementChange:e=>P.value=e,parentElement:c,resetSearchTermOnSelect:g,onResetSearchTerm:te.on,allItems:I,allGroups:L,filterSearch:B,filterState:V,ignoreFilter:h,openOnFocus:_,openOnClick:S,resetModelValueOnClear:T}),(e,t)=>(a(),A(z(He),null,{default:p(()=>[v(z(mt),r({ref_key:`primitiveElement`,ref:s},e.$attrs,{modelValue:z(O),"onUpdate:modelValue":t[0]||=e=>y(O)?O.value=e:null,style:{pointerEvents:z(ee)?`auto`:void 0},as:e.as,"as-child":e.asChild,dir:z(D),multiple:z(l),name:e.name,required:e.required,disabled:z(d),"highlight-on-hover":z(E),by:i.by,onHighlight:t[1]||=e=>o(`highlight`,e)}),{default:p(()=>[m(e.$slots,`default`,{open:z(ee),modelValue:z(O)})]),_:3},16,[`modelValue`,`style`,`as`,`as-child`,`dir`,`multiple`,`name`,`required`,`disabled`,`highlight-on-hover`,`by`])]),_:3}))}}),[Kt,qt]=q(`ComboboxContent`),Jt=R({__name:`ComboboxContentImpl`,props:{position:{type:String,required:!1,default:`inline`},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`],setup(e,{emit:n}){let i=e,o=n,{position:s}=w(i),c=$(),{forwardRef:l,currentElement:f}=W();J(i.bodyLock),Ge(),Ae(c.parentElement);let h=Je(x(()=>i.position===`popper`?i:{}).value),g={boxSizing:`border-box`,"--reka-combobox-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-combobox-content-available-width":`var(--reka-popper-available-width)`,"--reka-combobox-content-available-height":`var(--reka-popper-available-height)`,"--reka-combobox-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-combobox-trigger-height":`var(--reka-popper-anchor-height)`};qt({position:s});let _=N(!1);return u(()=>{c.inputElement.value&&(_.value=f.value.contains(c.inputElement.value),_.value&&c.inputElement.value.focus())}),d(()=>{let e=je();_.value&&(!e||e===document.body)&&c.triggerElement.value?.focus()}),(e,n)=>(a(),A(z(ht),{"as-child":``},{default:p(()=>[v(z(Me),{"as-child":``,onMountAutoFocus:n[5]||=D(()=>{},[`prevent`]),onUnmountAutoFocus:n[6]||=D(()=>{},[`prevent`])},{default:p(()=>[v(z(ke),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onDismiss:n[0]||=e=>z(c).onOpenChange(!1),onFocusOutside:n[1]||=e=>{z(c).parentElement.value?.contains(e.target)&&e.preventDefault(),o(`focusOutside`,e)},onInteractOutside:n[2]||=e=>o(`interactOutside`,e),onEscapeKeyDown:n[3]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:n[4]||=e=>{z(c).parentElement.value?.contains(e.target)&&e.preventDefault(),o(`pointerDownOutside`,e)}},{default:p(()=>[(a(),A(t(z(s)===`popper`?z(Ue):z(K)),r({...e.$attrs,...z(h)},{id:z(c).contentId,ref:z(l),"data-state":z(c).open.value?`open`:`closed`,style:{display:`flex`,flexDirection:`column`,outline:`none`,...z(s)===`popper`?g:{}}}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`style`]))]),_:3},8,[`disable-outside-pointer-events`])]),_:3})]),_:3}))}}),Yt=R({__name:`ComboboxArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e,n=$(),i=Kt();return W(),(e,o)=>z(n).open.value&&z(i).position.value===`popper`?(a(),A(z(Ke),h(r({key:0},t)),{default:p(()=>[m(e.$slots,`default`)]),_:3},16)):O(`v-if`,!0)}}),Xt=R({__name:`ComboboxCancel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;W();let n=$();function i(){n.filterSearch.value=``,n.inputElement.value&&(n.inputElement.value.value=``,n.inputElement.value.focus()),n.resetModelValueOnClear?.value&&(n.modelValue.value=n.multiple.value?[]:null)}return(e,n)=>(a(),A(z(K),r({type:e.as===`button`?`button`:void 0},t,{tabindex:`-1`,onClick:i}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16,[`type`]))}}),Zt=R({__name:`ComboboxContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`],setup(e,{emit:t}){let n=Ne(e,t),{forwardRef:i}=W(),o=$();return o.contentId||=Y(void 0,`reka-combobox-content`),(e,t)=>(a(),A(z(Fe),{present:e.forceMount||z(o).open.value},{default:p(()=>[v(Jt,r({...z(n),...e.$attrs},{ref:z(i)}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`]))}}),Qt=R({__name:`ComboboxEmpty`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=$(),i=x(()=>n.ignoreFilter.value?n.allItems.value.size===0:n.filterState.value.count===0);return(e,n)=>i.value?(a(),A(z(K),h(r({key:0},t)),{default:p(()=>[m(e.$slots,`default`,{},()=>[n[0]||=C(`No options`)])]),_:3},16)):O(`v-if`,!0)}}),[$t,en]=q(`ComboboxGroup`),tn=R({__name:`ComboboxGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=Y(void 0,`reka-combobox-group`),i=$(),o=x(()=>i.ignoreFilter.value?!0:i.filterSearch.value?i.filterState.value.groups.has(n):!0),s=en({id:n,labelId:``});return u(()=>{i.allGroups.value.has(n)||i.allGroups.value.set(n,new Set)}),d(()=>{i.allGroups.value.delete(n)}),(e,i)=>(a(),A(z(yt),r({id:z(n),"aria-labelledby":z(s).labelId},t,{hidden:o.value?void 0:!0}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16,[`id`,`aria-labelledby`,`hidden`]))}}),nn=R({__name:`ComboboxInput`,props:{displayValue:{type:Function,required:!1},modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`input`}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,i=$(),o=ft(),{primitiveElement:c,currentElement:l}=X(),d=ue(n,`modelValue`,r,{passive:n.modelValue===void 0});u(()=>{l.value&&i.onInputElementChange(l.value)});function h(e){i.open.value||i.onOpenChange(!0)}function g(e){let t=e.target;i.open.value?i.filterSearch.value=t.value:(i.onOpenChange(!0),f(()=>{t.value&&(i.filterSearch.value=t.value,o.highlightFirstItem())}))}function _(){i.openOnFocus.value&&!i.open.value&&i.onOpenChange(!0)}function v(){i.openOnClick.value&&!i.open.value&&i.onOpenChange(!0)}function b(){let e=i.modelValue.value;n.displayValue?d.value=n.displayValue(e):!i.multiple.value&&e&&!Array.isArray(e)?typeof e==`object`?d.value=``:d.value=e.toString():d.value=``,f(()=>{d.value=d.value})}return i.onResetSearchTerm(()=>{b()}),s(i.modelValue,async()=>{!i.isUserInputted.value&&i.resetSearchTermOnSelect.value&&b()},{immediate:!0,deep:!0}),s(i.filterState,(e,t)=>{!i.isVirtual.value&&t.count===0&&o.highlightFirstItem()}),(e,t)=>(a(),A(z(gt),{ref_key:`primitiveElement`,ref:c,modelValue:z(d),"onUpdate:modelValue":t[0]||=e=>y(d)?d.value=e:null,as:e.as,"as-child":e.asChild,"auto-focus":e.autoFocus,disabled:e.disabled,"aria-expanded":z(i).open.value,"aria-controls":z(i).contentId,"aria-autocomplete":`list`,role:`combobox`,autocomplete:`off`,onClick:v,onInput:g,onKeydown:j(D(h,[`prevent`]),[`down`,`up`]),onFocus:_},{default:p(()=>[m(e.$slots,`default`)]),_:3},8,[`modelValue`,`as`,`as-child`,`auto-focus`,`disabled`,`aria-expanded`,`aria-controls`,`onKeydown`]))}}),rn=R({__name:`ComboboxItem`,props:{textValue:{type:String,required:!1},value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let n=e,i=t,o=Y(void 0,`reka-combobox-item`),s=$(),c=$t(null),{primitiveElement:l,currentElement:f}=X();if(n.value===``)throw Error(`A must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.`);let h=x(()=>{if(s.isVirtual.value||s.ignoreFilter.value||!s.filterSearch.value)return!0;{let e=s.filterState.value.items.get(o);return e===void 0?!0:e>0}});return u(()=>{s.allItems.value.set(o,n.textValue||f.value.textContent||f.value.innerText);let e=c?.id;e&&(s.allGroups.value.has(e)?s.allGroups.value.get(e)?.add(o):s.allGroups.value.set(e,new Set([o])))}),d(()=>{s.allItems.value.delete(o)}),(e,t)=>h.value?(a(),A(z(Ct),r({key:0},n,{id:z(o),ref_key:`primitiveElement`,ref:l,disabled:z(s).disabled.value||e.disabled,onSelect:t[0]||=t=>{i(`select`,t),!t.defaultPrevented&&!z(s).multiple.value&&!e.disabled&&!z(s).disabled.value&&(t.preventDefault(),z(s).onOpenChange(!1),z(s).modelValue.value=n.value)}}),{default:p(()=>[m(e.$slots,`default`,{},()=>[C(F(e.value),1)])]),_:3},16,[`id`,`disabled`])):O(`v-if`,!0)}}),an=R({__name:`ComboboxItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e;return(e,n)=>(a(),A(z(wt),h(I(t)),{default:p(()=>[m(e.$slots,`default`)]),_:3},16))}}),on=R({__name:`ComboboxLabel`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let t=e;W();let n=$t({id:``,labelId:``});return n.labelId||=Y(void 0,`reka-combobox-group-label`),(e,i)=>(a(),A(z(K),r(t,{id:z(n).labelId}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16,[`id`]))}}),sn=R({__name:`ComboboxPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(a(),A(z(Ie),h(I(t)),{default:p(()=>[m(e.$slots,`default`)]),_:3},16))}}),cn=R({__name:`ComboboxSeparator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return W(),(e,n)=>(a(),A(z(K),r(t,{"aria-hidden":`true`}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16))}}),ln=R({__name:`ComboboxTrigger`,props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,{forwardRef:n,currentElement:i}=W(),o=$(),s=x(()=>t.disabled||o.disabled.value||!1);return u(()=>{i.value&&o.onTriggerElementChange(i.value)}),(e,i)=>(a(),A(z(K),r(t,{ref:z(n),type:e.as===`button`?`button`:void 0,tabindex:`-1`,"aria-label":`Show popup`,"aria-haspopup":`listbox`,"aria-expanded":z(o).open.value,"aria-controls":z(o).contentId,"data-state":z(o).open.value?`open`:`closed`,disabled:s.value,"data-disabled":s.value?``:void 0,"aria-disabled":s.value??void 0,onClick:i[0]||=e=>z(o).onOpenChange(!z(o).open.value)}),{default:p(()=>[m(e.$slots,`default`)]),_:3},16,[`type`,`aria-expanded`,`aria-controls`,`data-state`,`disabled`,`data-disabled`,`aria-disabled`]))}}),un=R({__name:`ComboboxVirtualizer`,props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(e){let t=e,n=$();return n.isVirtual.value=!0,(e,n)=>(a(),A(Ut,h(I(t)),{default:p(t=>[m(e.$slots,`default`,h(I(t)))]),_:3},16))}});function dn(){let{contains:e,startsWith:t}=st({sensitivity:`base`});function n(n,r){return e(n,r)?e(r,n)?0:t(n,r)?1:2:null}function r(e,t,r){if(typeof e!=`object`||!e)return n(String(e),t);let i=null;for(let a of r){let r=G(e,a);if(r==null)continue;let o=Array.isArray(r)?r.map(String):[String(r)];for(let e of o){let r=n(e,t);if(r!==null&&(i===null||re.score-t.score),i.map(({item:e})=>e)}function a(e,t,n){return t?e.map(e=>{let i=[];for(let a of e){if(a==null)continue;if(n.isStructural?.(a)){i.push({item:a,score:-1});continue}let e=r(a,t,n.fields);e!==null&&i.push({item:a,score:e})}return i.sort((e,t)=>e.score-t.score),i.map(({item:e})=>e)}).filter(e=>e.some(e=>!n.isStructural?.(e))):e}return{score:n,scoreItem:r,filter:i,filterGroups:a}}function fn(e,t){if(typeof e!=`object`||!e)return!1;let n=G(e,t);return n!=null&&n!==``}function pn(e,t){return t?{xs:44,sm:48,md:52,lg:56,xl:60}[e]:{xs:24,sm:28,md:32,lg:36,xl:40}[e]}function mn(e,t,n,r){let i=pn(t,!0),a=pn(t,!1);return r?()=>i:n?t=>fn(e[t],n)?i:a:()=>a}var hn={slots:{base:[`relative group rounded-md inline-flex items-center focus:outline-none disabled:cursor-not-allowed disabled:opacity-75`,`transition-colors`],leading:`absolute inset-y-0 start-0 flex items-center`,leadingIcon:`shrink-0 text-dimmed`,leadingAvatar:`shrink-0`,leadingAvatarSize:``,trailing:`absolute inset-y-0 end-0 flex items-center`,trailingIcon:`shrink-0 text-dimmed`,value:`truncate pointer-events-none`,placeholder:`truncate text-dimmed`,arrow:`fill-default`,content:[`max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col`,`origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)`],viewport:`relative scroll-py-1 overflow-y-auto flex-1`,group:`p-1 isolate`,empty:`text-center text-muted`,label:`font-semibold text-highlighted`,separator:`-mx-1 my-1 h-px bg-border`,item:[`group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50`,`transition-colors before:transition-colors`],itemLeadingIcon:[`shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default`,`transition-colors`],itemLeadingAvatar:`shrink-0`,itemLeadingAvatarSize:``,itemLeadingChip:`shrink-0`,itemLeadingChipSize:``,itemTrailing:`ms-auto inline-flex gap-1.5 items-center`,itemTrailingIcon:`shrink-0`,itemWrapper:`flex-1 flex flex-col min-w-0`,itemLabel:`truncate`,itemDescription:`truncate text-muted`,input:`border-b border-default`,focusScope:`flex flex-col min-h-0`,trailingClear:`p-0`},variants:{fieldGroup:{horizontal:`not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]`,vertical:`not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]`},size:{xs:{base:`px-2 py-1 text-xs gap-1`,leading:`ps-2`,trailing:`pe-2`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`,label:`p-1 text-[10px]/3 gap-1`,item:`p-1 text-xs gap-1`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemLeadingChip:`size-4`,itemLeadingChipSize:`sm`,itemTrailingIcon:`size-4`,empty:`p-1 text-xs`},sm:{base:`px-2.5 py-1.5 text-xs gap-1.5`,leading:`ps-2.5`,trailing:`pe-2.5`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`,label:`p-1.5 text-[10px]/3 gap-1.5`,item:`p-1.5 text-xs gap-1.5`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemLeadingChip:`size-4`,itemLeadingChipSize:`sm`,itemTrailingIcon:`size-4`,empty:`p-1.5 text-xs`},md:{base:`px-2.5 py-1.5 text-sm gap-1.5`,leading:`ps-2.5`,trailing:`pe-2.5`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`,label:`p-1.5 text-xs gap-1.5`,item:`p-1.5 text-sm gap-1.5`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemLeadingChip:`size-5`,itemLeadingChipSize:`md`,itemTrailingIcon:`size-5`,empty:`p-1.5 text-sm`},lg:{base:`px-3 py-2 text-sm gap-2`,leading:`ps-3`,trailing:`pe-3`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`,label:`p-2 text-xs gap-2`,item:`p-2 text-sm gap-2`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemLeadingChip:`size-5`,itemLeadingChipSize:`md`,itemTrailingIcon:`size-5`,empty:`p-2 text-sm`},xl:{base:`px-3 py-2 text-base gap-2`,leading:`ps-3`,trailing:`pe-3`,leadingIcon:`size-6`,leadingAvatarSize:`xs`,trailingIcon:`size-6`,label:`p-2 text-sm gap-2`,item:`p-2 text-base gap-2`,itemLeadingIcon:`size-6`,itemLeadingAvatarSize:`xs`,itemLeadingChip:`size-6`,itemLeadingChipSize:`lg`,itemTrailingIcon:`size-6`,empty:`p-2 text-base`}},variant:{outline:`text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default`,soft:`text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50`,subtle:`text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated`,ghost:`text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent`,none:`text-highlighted bg-transparent`},color:{primary:``,secondary:``,success:``,info:``,warning:``,error:``,neutral:``},leading:{true:``},trailing:{true:``},loading:{true:``},highlight:{true:``},fixed:{false:``},type:{file:`file:me-1.5 file:font-medium file:text-muted file:outline-none`},virtualize:{true:{viewport:`p-1 isolate`},false:{viewport:`divide-y divide-default`}}},compoundVariants:[{color:`primary`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary`},{color:`secondary`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary`},{color:`success`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success`},{color:`info`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info`},{color:`warning`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning`},{color:`error`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error`},{color:`primary`,highlight:!0,class:`ring ring-inset ring-primary`},{color:`secondary`,highlight:!0,class:`ring ring-inset ring-secondary`},{color:`success`,highlight:!0,class:`ring ring-inset ring-success`},{color:`info`,highlight:!0,class:`ring ring-inset ring-info`},{color:`warning`,highlight:!0,class:`ring ring-inset ring-warning`},{color:`error`,highlight:!0,class:`ring ring-inset ring-error`},{color:`neutral`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted`},{color:`neutral`,highlight:!0,class:`ring ring-inset ring-inverted`},{leading:!0,size:`xs`,class:`ps-7`},{leading:!0,size:`sm`,class:`ps-8`},{leading:!0,size:`md`,class:`ps-9`},{leading:!0,size:`lg`,class:`ps-10`},{leading:!0,size:`xl`,class:`ps-11`},{trailing:!0,size:`xs`,class:`pe-7`},{trailing:!0,size:`sm`,class:`pe-8`},{trailing:!0,size:`md`,class:`pe-9`},{trailing:!0,size:`lg`,class:`pe-10`},{trailing:!0,size:`xl`,class:`pe-11`},{loading:!0,leading:!0,class:{leadingIcon:`animate-spin`}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:`animate-spin`}},{fixed:!1,size:`xs`,class:`md:text-xs`},{fixed:!1,size:`sm`,class:`md:text-xs`},{fixed:!1,size:`md`,class:`md:text-sm`},{fixed:!1,size:`lg`,class:`md:text-sm`}],defaultVariants:{size:`md`,color:`primary`,variant:`outline`}},gn=Object.assign({inheritAttrs:!1},{__name:`SelectMenu`,props:i({id:{type:String,required:!1},placeholder:{type:String,required:!1},searchInput:{type:[Boolean,Object],required:!1,default:!0},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},clear:{type:[Boolean,Object],required:!1},clearIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},virtualize:{type:[Boolean,Object],required:!1,default:!1},valueKey:{type:null,required:!1},labelKey:{type:null,required:!1,default:`label`},descriptionKey:{type:null,required:!1,default:`description`},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},createItem:{type:[Boolean,String,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},resetModelValueOnClear:{type:Boolean,required:!1,default:!0},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},{searchTerm:{type:String,default:``},searchTermModifiers:{}}),emits:i([`change`,`blur`,`focus`,`create`,`clear`,`highlight`,`update:modelValue`,`update:open`],[`update:searchTerm`]),setup(e,{expose:t,emit:n,attrs:i}){let s=e,d=n,f=o(),_=g(e,`searchTerm`,{type:String,default:``}),{t:y}=Te(),b=de(),w=be(`selectMenu`,s),{filterGroups:te}=dn(),j=Ne(fe(s,`modelValue`,`defaultValue`,`open`,`defaultOpen`,`required`,`multiple`,`resetSearchTermOnBlur`,`resetSearchTermOnSelect`,`resetModelValueOnClear`,`highlightOnHover`,`by`),d),ne=Le(E(()=>s.portal)),M=E(()=>Ee(s.content,{side:`bottom`,sideOffset:8,collisionPadding:8,position:`popper`})),N=E(()=>s.arrow),P=x(()=>typeof s.clear==`object`?s.clear:{}),R=E(()=>s.virtualize?Ee(typeof s.virtualize==`boolean`?{}:s.virtualize,{estimateSize:mn(Y.value,q.value||`md`,s.descriptionKey,!!f[`item-description`])}):!1),B=E(()=>Ee(s.searchInput,{placeholder:y(`selectMenu.search`),variant:`none`})),{emitFormBlur:V,emitFormFocus:re,emitFormInput:H,emitFormChange:ie,size:U,color:ae,id:W,name:se,highlight:ce,disabled:le,ariaAttrs:ue}=qe(s),{orientation:pe,size:me}=Ye(s),{isLeading:he,isTrailing:K,leadingIconName:ve,trailingIconName:Se}=Ze(E(()=>Ee(s,{trailingIcon:b.ui.icons.chevronDown}))),q=x(()=>me.value||U.value),[De,Oe]=oe(),[ke,Ae]=oe({props:{item:{type:[Object,String,Number,Boolean],required:!0},index:{type:Number,required:!1}}}),J=x(()=>Ce({extend:Ce(hn),...b.ui?.selectMenu||{}})({color:ae.value,variant:s.variant,size:q?.value,loading:s.loading,highlight:ce.value,leading:he.value||!!s.avatar||!!f.leading,trailing:K.value||!!f.trailing,fieldGroup:pe.value,virtualize:!!s.virtualize}));function je(e){if(s.multiple&&Array.isArray(e)){let t=e.map(e=>xe(Fe.value,e,{labelKey:s.labelKey,valueKey:s.valueKey,by:s.by})).filter(e=>e!=null&&e!==``);return t.length>0?t.join(`, `):void 0}return xe(Fe.value,e,{labelKey:s.labelKey,valueKey:s.valueKey,by:s.by})}let Pe=x(()=>s.items?.length?ye(s.items)?s.items:[s.items]:[]),Fe=x(()=>Pe.value.flatMap(e=>e)),Ie=x(()=>{if(s.ignoreFilter||!_.value)return Pe.value;let e=Array.isArray(s.filterFields)?s.filterFields:[s.labelKey];return te(Pe.value,_.value,{fields:e,isStructural:e=>Z(e)&&!!e.type&&[`label`,`separator`].includes(e.type)})}),Y=x(()=>Ie.value.flatMap(e=>e)),Re=x(()=>{if(!s.createItem||!_.value)return!1;let e=s.valueKey?{[s.valueKey]:_.value}:_.value;return typeof s.createItem==`object`&&s.createItem.when===`always`||s.createItem===`always`?!Y.value.find(t=>ge(t,e,s.by??s.valueKey)):!Y.value.length}),X=x(()=>typeof s.createItem==`object`?s.createItem.position:`bottom`),ze=c(`triggerRef`);function Be(){s.autofocus&&ze.value?.$el?.focus({focusVisible:!0})}u(()=>{setTimeout(()=>{Be()},s.autofocusDelay)});function Ve(e){ee(s.modelValue)!==e&&(s.modelModifiers?.trim&&(typeof e==`string`||e==null)&&(e=e?.trim()??null),s.modelModifiers?.number&&(e=_e(e)),s.modelModifiers?.nullable&&(e??=null),s.modelModifiers?.optional&&!s.modelModifiers?.nullable&&e!==null&&(e??=void 0),d(`change`,new Event(`change`,{target:{value:e}})),ie(),H(),s.resetSearchTermOnSelect&&(_.value=``))}function He(e){let t;e?(d(`focus`,new FocusEvent(`focus`)),re(),clearTimeout(t)):(d(`blur`,new FocusEvent(`blur`)),V(),s.resetSearchTermOnBlur&&(t=setTimeout(()=>{_.value=``},100)))}function Ue(e){e.preventDefault(),e.stopPropagation(),d(`create`,_.value)}function We(e,t){if(Z(t)){if(t.disabled){e.preventDefault();return}t.onSelect?.(e)}}function Z(e){return typeof e==`object`&&!!e}function Ge(e){return s.multiple&&Array.isArray(e)?e.length===0:e==null||e===``}function Ke(){d(`clear`)}let Je=c(`viewportRef`);return t({triggerRef:E(()=>ze.value?.$el),viewportRef:E(()=>Je.value)}),(t,n)=>(a(),T(k,null,[v(z(De),null,{default:p(()=>[v(z(rn),{"data-slot":`item`,class:L(J.value.item({class:z(w)?.item})),value:_.value,onSelect:Ue},{default:p(()=>[S(`span`,{"data-slot":`itemLabel`,class:L(J.value.itemLabel({class:z(w)?.itemLabel}))},[m(t.$slots,`create-item-label`,{item:_.value},()=>[C(F(z(y)(`selectMenu.create`,{label:_.value})),1)])],2)]),_:3},8,[`class`,`value`])]),_:3}),v(z(ke),null,{default:p(({item:n,index:i})=>[Z(n)&&n.type===`label`?(a(),A(z(on),{key:0,"data-slot":`label`,class:L(J.value.label({class:[z(w)?.label,n.ui?.label,n.class]}))},{default:p(()=>[C(F(z(G)(n,s.labelKey)),1)]),_:2},1032,[`class`])):Z(n)&&n.type===`separator`?(a(),A(z(cn),{key:1,"data-slot":`separator`,class:L(J.value.separator({class:[z(w)?.separator,n.ui?.separator,n.class]}))},null,8,[`class`])):(a(),A(z(rn),{key:2,"data-slot":`item`,class:L(J.value.item({class:[z(w)?.item,Z(n)&&n.ui?.item,Z(n)&&n.class]})),disabled:Z(n)&&n.disabled,value:s.valueKey&&Z(n)?z(G)(n,s.valueKey):n,onSelect:e=>We(e,n)},{default:p(()=>[m(t.$slots,`item`,{item:n,index:i,ui:J.value},()=>[m(t.$slots,`item-leading`,{item:n,index:i,ui:J.value},()=>[Z(n)&&n.icon?(a(),A(we,{key:0,name:n.icon,"data-slot":`itemLeadingIcon`,class:L(J.value.itemLeadingIcon({class:[z(w)?.itemLeadingIcon,n.ui?.itemLeadingIcon]}))},null,8,[`name`,`class`])):Z(n)&&n.avatar?(a(),A(Xe,r({key:1,size:n.ui?.itemLeadingAvatarSize||z(w)?.itemLeadingAvatarSize||J.value.itemLeadingAvatarSize()},n.avatar,{"data-slot":`itemLeadingAvatar`,class:J.value.itemLeadingAvatar({class:[z(w)?.itemLeadingAvatar,n.ui?.itemLeadingAvatar]})}),null,16,[`size`,`class`])):Z(n)&&n.chip?(a(),A(Qe,r({key:2,size:n.ui?.itemLeadingChipSize||z(w)?.itemLeadingChipSize||J.value.itemLeadingChipSize(),inset:``,standalone:``},n.chip,{"data-slot":`itemLeadingChip`,class:J.value.itemLeadingChip({class:[z(w)?.itemLeadingChip,n.ui?.itemLeadingChip]})}),null,16,[`size`,`class`])):O(``,!0)]),S(`span`,{"data-slot":`itemWrapper`,class:L(J.value.itemWrapper({class:[z(w)?.itemWrapper,Z(n)&&n.ui?.itemWrapper]}))},[S(`span`,{"data-slot":`itemLabel`,class:L(J.value.itemLabel({class:[z(w)?.itemLabel,Z(n)&&n.ui?.itemLabel]}))},[m(t.$slots,`item-label`,{item:n,index:i},()=>[C(F(Z(n)?z(G)(n,s.labelKey):n),1)])],2),Z(n)&&(z(G)(n,s.descriptionKey)||f[`item-description`])?(a(),T(`span`,{key:0,"data-slot":`itemDescription`,class:L(J.value.itemDescription({class:[z(w)?.itemDescription,Z(n)&&n.ui?.itemDescription]}))},[m(t.$slots,`item-description`,{item:n,index:i},()=>[C(F(z(G)(n,s.descriptionKey)),1)])],2)):O(``,!0)],2),S(`span`,{"data-slot":`itemTrailing`,class:L(J.value.itemTrailing({class:[z(w)?.itemTrailing,Z(n)&&n.ui?.itemTrailing]}))},[m(t.$slots,`item-trailing`,{item:n,index:i,ui:J.value}),v(z(an),{"as-child":``},{default:p(()=>[v(we,{name:e.selectedIcon||z(b).ui.icons.check,"data-slot":`itemTrailingIcon`,class:L(J.value.itemTrailingIcon({class:[z(w)?.itemTrailingIcon,Z(n)&&n.ui?.itemTrailingIcon]}))},null,8,[`name`,`class`])]),_:2},1024)],2)])]),_:2},1032,[`class`,`disabled`,`value`,`onSelect`]))]),_:3}),v(z(Gt),r({id:z(W)},{...z(j),...i,...z(ue)},{"ignore-filter":``,"as-child":``,name:z(se),disabled:z(le),"onUpdate:modelValue":Ve,"onUpdate:open":He}),{default:p(({modelValue:i,open:o})=>[v(z(lt),{"as-child":``},{default:p(()=>[v(z(ln),{ref_key:`triggerRef`,ref:ze,"data-slot":`base`,class:L(J.value.base({class:[z(w)?.base,s.class]})),tabindex:`0`},{default:p(()=>[z(he)||e.avatar||f.leading?(a(),T(`span`,{key:0,"data-slot":`leading`,class:L(J.value.leading({class:z(w)?.leading}))},[m(t.$slots,`leading`,{modelValue:i,open:o,ui:J.value},()=>[z(he)&&z(ve)?(a(),A(we,{key:0,name:z(ve),"data-slot":`leadingIcon`,class:L(J.value.leadingIcon({class:z(w)?.leadingIcon}))},null,8,[`name`,`class`])):e.avatar?(a(),A(Xe,r({key:1,size:z(w)?.itemLeadingAvatarSize||J.value.itemLeadingAvatarSize()},e.avatar,{"data-slot":`itemLeadingAvatar`,class:J.value.itemLeadingAvatar({class:z(w)?.itemLeadingAvatar})}),null,16,[`size`,`class`])):O(``,!0)])],2)):O(``,!0),m(t.$slots,`default`,{modelValue:i,open:o,ui:J.value},()=>[(a(!0),T(k,null,l([je(i)],t=>(a(),T(k,{key:t},[t==null?(a(),T(`span`,{key:1,"data-slot":`placeholder`,class:L(J.value.placeholder({class:z(w)?.placeholder}))},F(e.placeholder??`\xA0`),3)):(a(),T(`span`,{key:0,"data-slot":`value`,class:L(J.value.value({class:z(w)?.value}))},F(t),3))],64))),128))]),z(K)||f.trailing||e.clear?(a(),T(`span`,{key:1,"data-slot":`trailing`,class:L(J.value.trailing({class:z(w)?.trailing}))},[m(t.$slots,`trailing`,{modelValue:i,open:o,ui:J.value},()=>[e.clear&&!Ge(i)?(a(),A(z(Xt),{key:0,"as-child":``},{default:p(()=>[v($e,r({as:`span`,icon:e.clearIcon||z(b).ui.icons.close,size:q.value,variant:`link`,color:`neutral`,tabindex:`-1`},P.value,{"data-slot":`trailingClear`,class:J.value.trailingClear({class:z(w)?.trailingClear}),onClick:D(Ke,[`stop`])}),null,16,[`icon`,`size`,`class`])]),_:1})):z(Se)?(a(),A(we,{key:1,name:z(Se),"data-slot":`trailingIcon`,class:L(J.value.trailingIcon({class:z(w)?.trailingIcon}))},null,8,[`name`,`class`])):O(``,!0)])],2)):O(``,!0)]),_:2},1032,[`class`])]),_:2},1024),v(z(sn),h(I(z(ne))),{default:p(()=>[v(z(Zt),r({"data-slot":`content`,class:J.value.content({class:z(w)?.content})},M.value),{default:p(()=>[v(z(Me),{trapped:``,"data-slot":`focusScope`,class:L(J.value.focusScope({class:z(w)?.focusScope}))},{default:p(()=>[m(t.$slots,`content-top`),e.searchInput?(a(),A(z(nn),{key:0,modelValue:_.value,"onUpdate:modelValue":n[1]||=e=>_.value=e,"display-value":()=>_.value,"as-child":``},{default:p(()=>[v(it,r({autofocus:``,autocomplete:`off`,size:q.value},B.value,{"model-modifiers":{trim:e.modelModifiers?.trim},"data-slot":`input`,class:J.value.input({class:z(w)?.input}),onChange:n[0]||=D(()=>{},[`stop`])}),null,16,[`size`,`model-modifiers`,`class`])]),_:1},8,[`modelValue`,`display-value`])):O(``,!0),v(z(Qt),{"data-slot":`empty`,class:L(J.value.empty({class:z(w)?.empty}))},{default:p(()=>[m(t.$slots,`empty`,{searchTerm:_.value},()=>[C(F(_.value?z(y)(`selectMenu.noMatch`,{searchTerm:_.value}):z(y)(`selectMenu.noData`)),1)])]),_:3},8,[`class`]),S(`div`,{ref_key:`viewportRef`,ref:Je,role:`presentation`,"data-slot":`viewport`,class:L(J.value.viewport({class:z(w)?.viewport}))},[e.virtualize?(a(),T(k,{key:0},[Re.value&&X.value===`top`?(a(),A(z(Oe),{key:0})):O(``,!0),v(z(un),r({options:Y.value,"text-content":e=>Z(e)?z(G)(e,s.labelKey):String(e)},R.value),{default:p(({option:e,virtualItem:t})=>[v(z(Ae),{item:e,index:t.index},null,8,[`item`,`index`])]),_:1},16,[`options`,`text-content`]),Re.value&&X.value===`bottom`?(a(),A(z(Oe),{key:1})):O(``,!0)],64)):(a(),T(k,{key:1},[Re.value&&X.value===`top`?(a(),A(z(tn),{key:0,"data-slot":`group`,class:L(J.value.group({class:z(w)?.group}))},{default:p(()=>[v(z(Oe))]),_:1},8,[`class`])):O(``,!0),(a(!0),T(k,null,l(Ie.value,(e,t)=>(a(),A(z(tn),{key:`group-${t}`,"data-slot":`group`,class:L(J.value.group({class:z(w)?.group}))},{default:p(()=>[(a(!0),T(k,null,l(e,(e,n)=>(a(),A(z(Ae),{key:`group-${t}-${n}`,item:e,index:n},null,8,[`item`,`index`]))),128))]),_:2},1032,[`class`]))),128)),Re.value&&X.value===`bottom`?(a(),A(z(tn),{key:1,"data-slot":`group`,class:L(J.value.group({class:z(w)?.group}))},{default:p(()=>[v(z(Oe))]),_:1},8,[`class`])):O(``,!0)],64))],2),m(t.$slots,`content-bottom`)]),_:3},8,[`class`]),e.arrow?(a(),A(z(Yt),r({key:0},N.value,{"data-slot":`arrow`,class:J.value.arrow({class:z(w)?.arrow})}),null,16,[`class`])):O(``,!0)]),_:3},16,[`class`])]),_:3},16)]),_:3},16,[`id`,`name`,`disabled`])],64))}}),_n={class:`flex items-center gap-1`},vn={class:`text-md dark:text-white text-black`},yn={class:`font-medium dark:text-white text-black`},bn={class:`flex items-center rounded-md cursor-pointer transition-colors`},xn={class:`text-md`},Sn={class:`ml-2 dark:text-white text-black font-medium`},Cn=R({__name:`langSwitch`,setup(e){let t=pe(),n=me(),r=ae(),i=x({get(){return H.value?.iso_code||ie.locale.value},set(e){ie.locale.value=e,H.value=U.find(t=>t.iso_code==e);let i=n.path,a=i.split(`/`).filter(Boolean);r.setCookie(`lang_id`,`${U.find(t=>t.iso_code==e)?.id}`,{days:60,secure:!0,sameSite:`Lax`}),a.length>0&&(U.some(e=>e.lang_code===a[0])?(a[0]=e,t.replace({path:`/`+a.join(`/`),query:n.query})):t.replace({path:`/`+e+i,query:n.query}))}});return s(()=>n.params.locale,e=>{e&&typeof e==`string`&&(ie.locale.value=e,H.value=U.find(t=>t.iso_code==e))},{immediate:!0}),(e,t)=>{let n=gn;return a(),A(n,{modelValue:i.value,"onUpdate:modelValue":t[0]||=e=>i.value=e,items:z(U),class:`w-40 bg-white dark:bg-(--black) rounded-md shadow-sm hover:none!`,valueKey:`iso_code`,searchInput:!1},{default:p(({modelValue:e})=>[S(`div`,_n,[S(`span`,vn,F(z(U).find(t=>t.iso_code==e)?.flag),1),S(`span`,yn,F(z(U).find(t=>t.iso_code==e)?.name),1)])]),"item-leading":p(({item:e})=>[S(`div`,bn,[S(`span`,xn,F(e.flag),1),S(`span`,Sn,F(e.name),1)])]),_:1},8,[`modelValue`,`items`])}}});const wn=De(`theme`,()=>{let e=N(localStorage.getItem(`vueuse-color-scheme`)),t=x(()=>{switch(!0){case e.value==`light`:return`i-heroicons-sun`;case e.value==`dark`:return`i-heroicons-moon`;case e.value==`auto`:return`i-heroicons-computer-desktop`}});function n(){switch(!0){case localStorage.getItem(`vueuse-color-scheme`)==`dark`:e.value=`light`,localStorage.setItem(`vueuse-color-scheme`,`light`),document.documentElement.classList.toggle(`dark`,!1);break;case localStorage.getItem(`vueuse-color-scheme`)==`light`:e.value=`dark`,localStorage.setItem(`vueuse-color-scheme`,`dark`),document.documentElement.classList.toggle(`dark`,!0);break;case localStorage.getItem(`vueuse-color-scheme`)==`auto`:window.matchMedia(`(prefers-color-scheme: dark)`).matches,e.value=`light`,localStorage.setItem(`vueuse-color-scheme`,`light`),document.documentElement.classList.toggle(`dark`,!1);break}}return{vueuseColorScheme:e,setTheme:n,themeIcon:t}});var Tn={class:`hidden sm:inline`},En=R({__name:`themeSwitch`,setup(e){let t=wn();return(e,n)=>{let r=we,i=$e;return a(),A(i,{variant:`ghost`,size:`sm`,onClick:n[0]||=e=>z(t).setTheme()},{default:p(()=>[S(`span`,Tn,[v(r,{class:`size-5`,name:z(t).themeIcon},null,8,[`name`])])]),_:1})}}}),Dn={class:`fixed top-0 left-0 right-0 z-50 bg-white/80 dark:bg-(--black) backdrop-blur-md border-b border-(--border-light) dark:border-(--border-dark)`},On={class:`container px-4 sm:px-6 lg:px-8`},kn={class:`flex items-center justify-between h-14`},An={class:`w-8 h-8 rounded-lg bg-primary text-white flex items-center justify-center`},jn={class:`flex items-center gap-2`},Mn=R({__name:`TopBarLogin`,setup(e){let t=Oe();return(e,n)=>{let r=we,i=B(`RouterLink`);return a(),T(`header`,Dn,[S(`div`,On,[S(`div`,kn,[v(i,{to:{name:`home`},class:`flex items-center gap-2`},{default:p(()=>[S(`div`,An,[v(r,{name:`i-heroicons-clock`,class:`w-5 h-5`})]),n[1]||=S(`span`,{class:`font-semibold text-gray-900 dark:text-white`},`TimeTracker`,-1)]),_:1}),v(rt),S(`div`,jn,[v(Cn),v(En),z(t).isAuthenticated?(a(),T(`button`,{key:0,onClick:n[0]||=e=>z(t).logout(),class:`px-3 py-1.5 text-sm font-medium text-gray-700 dark:text-gray-200 hover:text-primary dark:hover:text-primary hover:bg-gray-100 dark:hover:bg-gray-800 rounded-lg transition-colors`},` Logout `)):O(``,!0)])])])])}}}),Nn=R({__name:`empty`,setup(e){return(e,t)=>{let n=B(`router-view`);return a(),T(`main`,{key:z(ie).locale.value},[v(Mn),v(n)])}}});function Pn(){return typeof document>`u`?!1:document.cookie.split(`; `).some(e=>e===`is_authenticated=1`)}await re(),await at();var Fn=Se({history:le(void 0),routes:[{path:`/`,redirect:()=>`/${H.value?.iso_code}`},{path:`/:locale`,children:[{path:``,component:Nn,children:[{path:``,component:()=>V(()=>import(`./HomeView-BQahLZXc.js`),__vite__mapDeps([0,1,2])),name:`home`},{path:`chart`,component:()=>V(()=>import(`./RepoChartView-DWk8UojC.js`),__vite__mapDeps([3,2,4,5,6,7,8,9,10,11,12])),name:`chart`},{path:`login`,component:()=>V(()=>import(`./LoginView-DckqZJ4W.js`),__vite__mapDeps([13,2,14,6,7,8,9,4,12,15,16,17,10])),name:`login`,meta:{guest:!0}},{path:`register`,component:()=>V(()=>import(`./RegisterView-HW42R58H.js`),__vite__mapDeps([18,2,14,6,7,8,9,4,12,15,16,17,10,11,19])),name:`register`,meta:{guest:!0}},{path:`password-recovery`,component:()=>V(()=>import(`./PasswordRecoveryView-BsywcP-S.js`),__vite__mapDeps([20,2,4,6,15,8,16,9,17,10])),name:`password-recovery`,meta:{guest:!0}},{path:`reset-password`,component:()=>V(()=>import(`./ResetPasswordForm-Bm9Fa-4w.js`),__vite__mapDeps([21,2,4,6,15,8,16,9,17,10])),name:`reset-password`,meta:{guest:!0}},{path:`verify-email`,component:()=>V(()=>import(`./VerifyEmailView-B2adokLx.js`),__vite__mapDeps([22,2,4,6,15,8,23])),name:`verify-email`,meta:{guest:!0}}]}]}]});Fn.beforeEach((e,t,n)=>{let r=e.params.locale,i=U.find(e=>e.iso_code==r);if(r&&U.length>0){if(U.find(e=>e.lang_code===r))return H.value=i,!e.meta?.guest&&!Pn()?n({name:`login`,params:{locale:r}}):n();if(r)return n(`/${H.value?.iso_code}${e.path.replace(`/${r}`,``)||`/`}`)}if(!r&&e.path!==`/`)return n(`/${H.value?.iso_code}${e.path}`);n()});export{Fn as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/router-Wd6OrXcf.js b/assets/public/dist/assets/router-Wd6OrXcf.js new file mode 100644 index 0000000..bdbbef1 --- /dev/null +++ b/assets/public/dist/assets/router-Wd6OrXcf.js @@ -0,0 +1 @@ +import"./useFetchJson-4WJQFaEO.js";import"./useForwardExpose-BgPOLLFN.js";import"./Icon-Chkiq2IE.js";import"./auth-hZSBdvj-.js";import{t as e}from"./router-CoYWQDRi.js";import"./Button-jwL-tYHc.js";import"./settings-BcOmX106.js";export{e as default}; \ No newline at end of file diff --git a/assets/public/dist/assets/settings-BcOmX106.js b/assets/public/dist/assets/settings-BcOmX106.js new file mode 100644 index 0000000..0025f61 --- /dev/null +++ b/assets/public/dist/assets/settings-BcOmX106.js @@ -0,0 +1 @@ +import{D as e,F as t,G as n,K as r,M as i,Q as a,R as o,ct as s,d as c,f as ee,h as l,m as u,p as d,xt as f,yt as p}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{t as m}from"./useFetchJson-4WJQFaEO.js";import{N as te,S as h,h as g,i as _,n as v,r as y,t as b}from"./Icon-Chkiq2IE.js";import{f as x,m as S,n as C,p as w}from"./Button-jwL-tYHc.js";var T={slots:{root:`relative inline-flex items-center`,base:[`w-full rounded-md border-0 appearance-none placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75`,`transition-colors`],leading:`absolute inset-y-0 start-0 flex items-center`,leadingIcon:`shrink-0 text-dimmed`,leadingAvatar:`shrink-0`,leadingAvatarSize:``,trailing:`absolute inset-y-0 end-0 flex items-center`,trailingIcon:`shrink-0 text-dimmed`},variants:{fieldGroup:{horizontal:{root:`group has-focus-visible:z-[1]`,base:`group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none`},vertical:{root:`group has-focus-visible:z-[1]`,base:`group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none`}},size:{xs:{base:`px-2 py-1 text-sm/4 gap-1`,leading:`ps-2`,trailing:`pe-2`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`},sm:{base:`px-2.5 py-1.5 text-sm/4 gap-1.5`,leading:`ps-2.5`,trailing:`pe-2.5`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`,trailingIcon:`size-4`},md:{base:`px-2.5 py-1.5 text-base/5 gap-1.5`,leading:`ps-2.5`,trailing:`pe-2.5`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`},lg:{base:`px-3 py-2 text-base/5 gap-2`,leading:`ps-3`,trailing:`pe-3`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`,trailingIcon:`size-5`},xl:{base:`px-3 py-2 text-base gap-2`,leading:`ps-3`,trailing:`pe-3`,leadingIcon:`size-6`,leadingAvatarSize:`xs`,trailingIcon:`size-6`}},variant:{outline:`text-highlighted bg-default ring ring-inset ring-accented`,soft:`text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50`,subtle:`text-highlighted bg-elevated ring ring-inset ring-accented`,ghost:`text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent`,none:`text-highlighted bg-transparent`},color:{primary:``,secondary:``,success:``,info:``,warning:``,error:``,neutral:``},leading:{true:``},trailing:{true:``},loading:{true:``},highlight:{true:``},fixed:{false:``},type:{file:`file:me-1.5 file:font-medium file:text-muted file:outline-none`}},compoundVariants:[{color:`primary`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary`},{color:`secondary`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary`},{color:`success`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success`},{color:`info`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info`},{color:`warning`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning`},{color:`error`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error`},{color:`primary`,highlight:!0,class:`ring ring-inset ring-primary`},{color:`secondary`,highlight:!0,class:`ring ring-inset ring-secondary`},{color:`success`,highlight:!0,class:`ring ring-inset ring-success`},{color:`info`,highlight:!0,class:`ring ring-inset ring-info`},{color:`warning`,highlight:!0,class:`ring ring-inset ring-warning`},{color:`error`,highlight:!0,class:`ring ring-inset ring-error`},{color:`neutral`,variant:[`outline`,`subtle`],class:`focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted`},{color:`neutral`,highlight:!0,class:`ring ring-inset ring-inverted`},{leading:!0,size:`xs`,class:`ps-7`},{leading:!0,size:`sm`,class:`ps-8`},{leading:!0,size:`md`,class:`ps-9`},{leading:!0,size:`lg`,class:`ps-10`},{leading:!0,size:`xl`,class:`ps-11`},{trailing:!0,size:`xs`,class:`pe-7`},{trailing:!0,size:`sm`,class:`pe-8`},{trailing:!0,size:`md`,class:`pe-9`},{trailing:!0,size:`lg`,class:`pe-10`},{trailing:!0,size:`xl`,class:`pe-11`},{loading:!0,leading:!0,class:{leadingIcon:`animate-spin`}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:`animate-spin`}},{fixed:!1,size:`xs`,class:`md:text-xs`},{fixed:!1,size:`sm`,class:`md:text-xs`},{fixed:!1,size:`md`,class:`md:text-sm`},{fixed:!1,size:`lg`,class:`md:text-sm`}],defaultVariants:{size:`md`,color:`primary`,variant:`outline`}},ne=[`id`,`type`,`value`,`name`,`placeholder`,`disabled`,`required`,`autocomplete`],E=Object.assign({inheritAttrs:!1},{__name:`Input`,props:{as:{type:null,required:!1},id:{type:String,required:!1},name:{type:String,required:!1},type:{type:null,required:!1,default:`text`},placeholder:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},autocomplete:{type:[String,Object],required:!1,default:`off`},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},disabled:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},fixed:{type:Boolean,required:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:[`update:modelValue`,`blur`,`change`],setup(s,{expose:m,emit:E,attrs:D}){let O=s,k=E,A=n(),j=te(O,`modelValue`,k,{defaultValue:O.defaultValue}),M=h(),N=v(`input`,O),{emitFormBlur:P,emitFormInput:F,emitFormChange:I,size:L,color:R,id:z,name:B,highlight:V,disabled:H,emitFormFocus:U,ariaAttrs:W}=x(O,{deferInputValidation:!0}),{orientation:G,size:K}=S(O),{isLeading:q,isTrailing:J,leadingIconName:Y,trailingIconName:X}=w(O),re=c(()=>K.value||L.value),Z=c(()=>y({extend:y(T),...M.ui?.input||{}})({type:O.type,color:R.value,variant:O.variant,size:re?.value,loading:O.loading,highlight:V.value,fixed:O.fixed,leading:q.value||!!O.avatar||!!A.leading,trailing:J.value||!!A.trailing,fieldGroup:G.value})),Q=r(`inputRef`);function $(e){O.modelModifiers?.trim&&(typeof e==`string`||e==null)&&(e=e?.trim()??null),(O.modelModifiers?.number||O.type===`number`)&&(e=g(e)),O.modelModifiers?.nullable&&(e||=null),O.modelModifiers?.optional&&!O.modelModifiers?.nullable&&e!==null&&(e||=void 0),j.value=e,F()}function ie(e){O.modelModifiers?.lazy||$(e.target.value)}function ae(e){let t=e.target.value;O.modelModifiers?.lazy&&$(t),O.modelModifiers?.trim&&(e.target.value=t.trim()),I(),k(`change`,e)}function oe(e){P(),k(`blur`,e)}function se(){O.autofocus&&Q.value?.focus()}return i(()=>{setTimeout(()=>{se()},O.autofocusDelay)}),m({inputRef:Q}),(n,r)=>(t(),d(p(_),{as:s.as,"data-slot":`root`,class:f(Z.value.root({class:[p(N)?.root,O.class]}))},{default:a(()=>[ee(`input`,e({id:p(z),ref_key:`inputRef`,ref:Q,type:s.type,value:p(j),name:p(B),placeholder:s.placeholder,"data-slot":`base`,class:Z.value.base({class:p(N)?.base}),disabled:p(H),required:s.required,autocomplete:s.autocomplete},{...D,...p(W)},{onInput:ie,onBlur:oe,onChange:ae,onFocus:r[0]||=(...e)=>p(U)&&p(U)(...e)}),null,16,ne),o(n.$slots,`default`,{ui:Z.value}),p(q)||s.avatar||A.leading?(t(),l(`span`,{key:0,"data-slot":`leading`,class:f(Z.value.leading({class:p(N)?.leading}))},[o(n.$slots,`leading`,{ui:Z.value},()=>[p(q)&&p(Y)?(t(),d(b,{key:0,name:p(Y),"data-slot":`leadingIcon`,class:f(Z.value.leadingIcon({class:p(N)?.leadingIcon}))},null,8,[`name`,`class`])):s.avatar?(t(),d(C,e({key:1,size:p(N)?.leadingAvatarSize||Z.value.leadingAvatarSize()},s.avatar,{"data-slot":`leadingAvatar`,class:Z.value.leadingAvatar({class:p(N)?.leadingAvatar})}),null,16,[`size`,`class`])):u(``,!0)])],2)):u(``,!0),p(J)||A.trailing?(t(),l(`span`,{key:1,"data-slot":`trailing`,class:f(Z.value.trailing({class:p(N)?.trailing}))},[o(n.$slots,`trailing`,{ui:Z.value},()=>[p(X)?(t(),d(b,{key:0,name:p(X),"data-slot":`trailingIcon`,class:f(Z.value.trailingIcon({class:p(N)?.trailingIcon}))},null,8,[`name`,`class`])):u(``,!0)])],2)):u(``,!0)]),_:3},8,[`as`,`class`]))}});const D=s({});async function O(){let{items:e}=await m(`/api/v1/settings`);Object.assign(D,e)}export{E as n,O as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/useFetchJson-4WJQFaEO.js b/assets/public/dist/assets/useFetchJson-4WJQFaEO.js new file mode 100644 index 0000000..c28f15c --- /dev/null +++ b/assets/public/dist/assets/useFetchJson-4WJQFaEO.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/auth-CdHmhksw.js","assets/auth-hZSBdvj-.js","assets/vue.runtime.esm-bundler-BM5WPBHd.js"])))=>i.map(i=>d[i]); +var e=`modulepreload`,t=function(e){return`/`+e},n={};const r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};async function i(e,t){let n=a(``,e),i=new Headers(t?.headers);i.has(`Content-Type`)||i.set(`Content-Type`,`application/json`);let o={...t,headers:i,credentials:`same-origin`};try{let e=await fetch(n,o);if(!(e.headers.get(`content-type`)??``).includes(`application/json`))throw{message:`this is not proper json format`};let t=await e.json();if(e.status===401){let{useAuthStore:e}=await r(async()=>{let{useAuthStore:e}=await import(`./auth-CdHmhksw.js`);return{useAuthStore:e}},__vite__mapDeps([0,1,2])),i=e();if(await i.refreshAccessToken()){let e=await fetch(n,o);if(!(e.headers.get(`content-type`)??``).includes(`application/json`))throw{message:`this is not proper json format`};let t=await e.json();if(!e.ok)throw t;return t}throw i.logout(),t}if(!e.ok)throw t;return t}catch(e){throw e}}function a(...e){let t=e.filter(Boolean).join(`/`).replace(/\/{2,}/g,`/`);return t.startsWith(`/`)?t:`/${t}`}export{r as n,i as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/useForwardExpose-BgPOLLFN.js b/assets/public/dist/assets/useForwardExpose-BgPOLLFN.js new file mode 100644 index 0000000..30ab933 --- /dev/null +++ b/assets/public/dist/assets/useForwardExpose-BgPOLLFN.js @@ -0,0 +1 @@ +import{J as e,b as t,ct as n,d as r,ut as i}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{t as a}from"./useFetchJson-4WJQFaEO.js";import{E as o,Z as s}from"./Icon-Chkiq2IE.js";const c=()=>{function e(e){let t=document.cookie?document.cookie.split(`; `):[];for(let n of t){let[t,...r]=n.split(`=`);if(t===e)return decodeURIComponent(r.join(`=`))}return null}function t(e,t,n){let r=`${e}=${encodeURIComponent(t)}`;if(n?.days){let e=new Date;e.setTime(e.getTime()+n.days*24*60*60*1e3),r+=`; expires=${e.toUTCString()}`}r+=`; path=${n?.path??`/`}`,n?.domain&&(r+=`; domain=${n.domain}`),n?.secure&&(r+=`; Secure`),n?.sameSite&&(r+=`; SameSite=${n.sameSite}`),document.cookie=r}function n(e,t=`/`,n){let r=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=${t}`;n&&(r+=`; domain=${n}`),document.cookie=r}return{getCookie:e,setCookie:t,deleteCookie:n}},l=n([]),u=i();var d=i(),f=c();async function p(){try{let{items:e}=await a(`/api/v1/langs`);l.push(...e);let t=null,n=f.getCookie(`lang_id`);n&&(t=l.find(e=>e.id==parseInt(n))),d.value=e.find(e=>e.is_default==1),u.value=t??d.value}catch(e){console.error(`Failed to fetch languages:`,e)}}const m=s({legacy:!1,locale:`en`,lazy:!0,messages:{},messageResolver:(e,t)=>{let n=t.split(`.`).reduce((e,t)=>e?.[t],e);return n===``||n==null?null:n}}),h=m.global;var g=[];e(h.locale,async e=>{if(!g.includes(e)){let t=l.find(t=>t.iso_code==e);if(!t)return;g.push(e);let n=await a(`/api/v1/translations?lang_id=${t?.id}&scope=backoffice`);h.setLocaleMessage(e,n.items[t.id].backoffice)}},{});function _(){let e=t(),n=i(),a=r(()=>[`#text`,`#comment`].includes(n.value?.$el.nodeName)?n.value?.$el.nextElementSibling:o(n)),s=Object.assign({},e.exposed),c={};for(let t in e.props)Object.defineProperty(c,t,{enumerable:!0,configurable:!0,get:()=>e.props[t]});if(Object.keys(s).length>0)for(let e in s)Object.defineProperty(c,e,{enumerable:!0,configurable:!0,get:()=>s[e]});Object.defineProperty(c,`$el`,{enumerable:!0,configurable:!0,get:()=>e.vnode.el}),e.exposed=c;function l(t){if(n.value=t,t&&(Object.defineProperty(c,`$el`,{enumerable:!0,configurable:!0,get:()=>t instanceof Element?t:t.$el}),!(t instanceof Element)&&!Object.prototype.hasOwnProperty.call(t,`$el`))){let n=t.$.exposed,r=Object.assign({},c);for(let e in n)Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>n[e]});e.exposed=r}}return{forwardRef:l,currentRef:n,currentElement:a}}export{p as a,u as i,h as n,l as o,m as r,c as s,_ as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/usePortal-Zddbph8M.js b/assets/public/dist/assets/usePortal-Zddbph8M.js new file mode 100644 index 0000000..064cdbc --- /dev/null +++ b/assets/public/dist/assets/usePortal-Zddbph8M.js @@ -0,0 +1,3 @@ +import{Ct as e,F as t,J as n,N as r,O as i,Q as a,R as o,S as s,Tt as c,U as l,Y as u,_t as d,b as f,bt as p,c as m,ct as h,d as g,gt as _,m as v,p as y,t as b,ut as x,w as S,y as C,yt as w}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{t as T}from"./useForwardExpose-BgPOLLFN.js";import{A as ee,E,I as te,L as D,R as O,T as ne,U as re,i as k,k as ie,o as ae,s as oe,w as se,x as ce,z as A}from"./Icon-Chkiq2IE.js";import{h as le}from"./Button-jwL-tYHc.js";function j(){let e=document.activeElement;if(e==null)return null;for(;e!=null&&e.shadowRoot!=null&&e.shadowRoot.activeElement!=null;)e=e.shadowRoot.activeElement;return e}function M(e,t,n){let r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),r.dispatchEvent(i)}function N(e){return e==null}var[P,ue]=oe(`ConfigProvider`),de=D(()=>{let e=x(new Map),t=x(),r=g(()=>{for(let t of e.value.values())if(t)return!0;return!1}),a=P({scrollBody:x(!0)}),o=null,s=()=>{document.body.style.paddingRight=``,document.body.style.marginRight=``,document.body.style.pointerEvents=``,document.documentElement.style.removeProperty(`--scrollbar-width`),document.body.style.overflow=t.value??``,A&&o?.(),t.value=void 0};return n(r,(e,n)=>{if(!O)return;if(!e){n&&s();return}t.value===void 0&&(t.value=document.body.style.overflow);let r=window.innerWidth-document.documentElement.clientWidth,c={padding:r,margin:0},l=a.scrollBody?.value?typeof a.scrollBody.value==`object`?ce({padding:a.scrollBody.value.padding===!0?r:a.scrollBody.value.padding,margin:a.scrollBody.value.margin===!0?r:a.scrollBody.value.margin},c):c:{padding:0,margin:0};r>0&&(document.body.style.paddingRight=typeof l.padding==`number`?`${l.padding}px`:String(l.padding),document.body.style.marginRight=typeof l.margin==`number`?`${l.margin}px`:String(l.margin),document.documentElement.style.setProperty(`--scrollbar-width`,`${r}px`),document.body.style.overflow=`hidden`),A&&(o=ie(document,`touchmove`,e=>pe(e),{passive:!1})),i(()=>{document.body.style.pointerEvents=`none`,document.body.style.overflow=`hidden`})},{immediate:!0,flush:`sync`}),e});function fe(e){let t=Math.random().toString(36).substring(2,7),n=de();n.value.set(t,e??!1);let r=g({get:()=>n.value.get(t)??!1,set:e=>n.value.set(t,e)});return re(()=>{n.value.delete(t)}),r}function F(e){let t=window.getComputedStyle(e);if(t.overflowX===`scroll`||t.overflowY===`scroll`||t.overflowX===`auto`&&e.clientWidth1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}function I(e){let t=f(),n=t?.type.emits,r={};return n?.length||console.warn(`No emitted event found. Please check component: ${t?.type.__name}`),n?.forEach(t=>{r[c(p(t))]=(...n)=>e(t,...n)}),r}function me(e,t){let n=le(e),r=t?I(t):{};return g(()=>({...n.value,...r}))}var L=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},R=new WeakMap,z=new WeakMap,B={},V=0,H=function(e){return e&&(e.host||H(e.parentNode))},he=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=H(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},ge=function(e,t,n,r){var i=he(t,Array.isArray(e)?e:[e]);B[n]||(B[n]=new WeakMap);var a=B[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(R.get(e)||0)+1,l=(a.get(e)||0)+1;R.set(e,c),a.set(e,l),o.push(e),c===1&&i&&z.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),V++,function(){o.forEach(function(e){var t=R.get(e)-1,i=a.get(e)-1;R.set(e,t),a.set(e,i),t||(z.has(e)||e.removeAttribute(r),z.delete(e)),i||e.removeAttribute(n)}),V--,V||(R=new WeakMap,R=new WeakMap,z=new WeakMap,B={})}},_e=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||L(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),ge(r,i,n,`aria-hidden`)):function(){return null}};function ve(e){let t;n(()=>E(e),e=>{e?t=_e(e):t&&t()}),r(()=>{t&&t()})}var ye=0;function be(e,t=`reka`){if(e)return e;if(`useId`in b)return`${t}-${l?.()}`;let n=P({useId:void 0});return n.useId?`${t}-${n.useId()}`:`${t}-${++ye}`}function xe(e,t){let n=x(e);function r(e){return t[n.value][e]??n.value}return{state:n,dispatch:e=>{n.value=r(e)}}}function Se(e,t){let a=x({}),o=x(`none`),s=x(e),c=e.value?`mounted`:`unmounted`,l,u=t.value?.ownerDocument.defaultView??se,{state:d,dispatch:f}=xe(c,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}}),p=e=>{if(O){let n=new CustomEvent(e,{bubbles:!1,cancelable:!1});t.value?.dispatchEvent(n)}};n(e,async(e,n)=>{let r=n!==e;if(await i(),r){let r=o.value,i=U(t.value);e?(f(`MOUNT`),p(`enter`),i===`none`&&p(`after-enter`)):i===`none`||i===`undefined`||a.value?.display===`none`?(f(`UNMOUNT`),p(`leave`),p(`after-leave`)):n&&r!==i?(f(`ANIMATION_OUT`),p(`leave`)):(f(`UNMOUNT`),p(`after-leave`))}},{immediate:!0});let m=e=>{let n=U(t.value),r=n.includes(CSS.escape(e.animationName)),i=d.value===`mounted`?`enter`:`leave`;if(e.target===t.value&&r&&(p(`after-${i}`),f(`ANIMATION_END`),!s.value)){let e=t.value.style.animationFillMode;t.value.style.animationFillMode=`forwards`,l=u?.setTimeout(()=>{t.value?.style.animationFillMode===`forwards`&&(t.value.style.animationFillMode=e)})}e.target===t.value&&n===`none`&&f(`ANIMATION_END`)},h=e=>{e.target===t.value&&(o.value=U(t.value))},_=n(t,(e,t)=>{e?(a.value=getComputedStyle(e),e.addEventListener(`animationstart`,h),e.addEventListener(`animationcancel`,m),e.addEventListener(`animationend`,m)):(f(`ANIMATION_END`),l!==void 0&&u?.clearTimeout(l),t?.removeEventListener(`animationstart`,h),t?.removeEventListener(`animationcancel`,m),t?.removeEventListener(`animationend`,m))},{immediate:!0}),v=n(d,()=>{let e=U(t.value);o.value=d.value===`mounted`?e:`none`});return r(()=>{_(),v()}),{isPresent:g(()=>[`mounted`,`unmountSuspended`].includes(d.value))}}function U(e){return e&&getComputedStyle(e).animationName||`none`}var Ce=C({name:`Presence`,props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(e,{slots:t,expose:n}){let{present:r,forceMount:i}=_(e),a=x(),{isPresent:o}=Se(r,a);n({present:o});let c=t.default({present:o.value});c=ae(c||[]);let l=f();if(c&&c?.length>1){let e=l?.parent?.type.name?`<${l.parent.type.name} />`:`component`;throw Error([`Detected an invalid children for \`${e}\` for \`Presence\` component.`,``,"Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.",`You can apply a few solutions:`,["Provide a single child element so that `presence` directive attach correctly.",`Ensure the first child is an actual element instead of a raw text node or comment node.`].map(e=>` - ${e}`).join(` +`)].join(` +`))}return()=>i.value||r.value||o.value?s(t.default({present:o.value})[0],{ref:e=>{let t=E(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?a.value=t.firstElementChild:a.value=t),t}}):null}}),we=`dismissableLayer.pointerDownOutside`,Te=`dismissableLayer.focusOutside`;function W(e,t){let n=t.closest(`[data-dismissable-layer]`),r=e.dataset.dismissableLayer===``?e:e.querySelector(`[data-dismissable-layer]`),i=Array.from(e.ownerDocument.querySelectorAll(`[data-dismissable-layer]`));return!!(n&&(r===n||i.indexOf(r){});return u(o=>{if(!O||!d(n))return;let s=async n=>{let o=n.target;if(!(!t?.value||!o)){if(W(t.value,o)){i.value=!1;return}if(n.target&&!i.value){let t={originalEvent:n};function i(){M(we,e,t)}n.pointerType===`touch`?(r.removeEventListener(`click`,a.value),a.value=i,r.addEventListener(`click`,a.value,{once:!0})):i()}else r.removeEventListener(`click`,a.value);i.value=!1}},c=window.setTimeout(()=>{r.addEventListener(`pointerdown`,s)},0);o(()=>{window.clearTimeout(c),r.removeEventListener(`pointerdown`,s),r.removeEventListener(`click`,a.value)})}),{onPointerDownCapture:()=>{d(n)&&(i.value=!0)}}}function De(e,t,n=!0){let r=t?.value?.ownerDocument??globalThis?.document,a=x(!1);return u(o=>{if(!O||!d(n))return;let s=async n=>{if(!t?.value)return;await i(),await i();let r=n.target;!t.value||!r||W(t.value,r)||n.target&&!a.value&&M(Te,e,{originalEvent:n})};r.addEventListener(`focusin`,s),o(()=>r.removeEventListener(`focusin`,s))}),{onFocusCapture:()=>{d(n)&&(a.value=!0)},onBlurCapture:()=>{d(n)&&(a.value=!1)}}}var G=h({layersRoot:new Set,layersWithOutsidePointerEventsDisabled:new Set,originalBodyPointerEvents:void 0,branches:new Set}),Oe=C({__name:`DismissableLayer`,props:{disableOutsidePointerEvents:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`dismiss`],setup(n,{emit:r}){let s=n,c=r,{forwardRef:l,currentElement:d}=T(),f=g(()=>d.value?.ownerDocument??globalThis.document),p=g(()=>G.layersRoot),m=g(()=>d.value?Array.from(p.value).indexOf(d.value):-1),h=g(()=>G.layersWithOutsidePointerEventsDisabled.size>0),_=g(()=>{let e=Array.from(p.value),[t]=[...G.layersWithOutsidePointerEventsDisabled].slice(-1),n=e.indexOf(t);return m.value>=n}),v=Ee(async e=>{let t=[...G.branches].some(t=>t?.contains(e.target));!_.value||t||(c(`pointerDownOutside`,e),c(`interactOutside`,e),await i(),e.defaultPrevented||c(`dismiss`))},d),b=De(e=>{[...G.branches].some(t=>t?.contains(e.target))||(c(`focusOutside`,e),c(`interactOutside`,e),e.defaultPrevented||c(`dismiss`))},d);return ne(`Escape`,e=>{m.value===p.value.size-1&&(c(`escapeKeyDown`,e),e.defaultPrevented||c(`dismiss`))}),u(e=>{d.value&&(s.disableOutsidePointerEvents&&(G.layersWithOutsidePointerEventsDisabled.size===0&&(G.originalBodyPointerEvents=f.value.body.style.pointerEvents,f.value.body.style.pointerEvents=`none`),G.layersWithOutsidePointerEventsDisabled.add(d.value)),p.value.add(d.value),e(()=>{s.disableOutsidePointerEvents&&G.layersWithOutsidePointerEventsDisabled.size===1&&!N(G.originalBodyPointerEvents)&&(f.value.body.style.pointerEvents=G.originalBodyPointerEvents)}))}),u(e=>{e(()=>{d.value&&(p.value.delete(d.value),G.layersWithOutsidePointerEventsDisabled.delete(d.value))})}),(n,r)=>(t(),y(w(k),{ref:w(l),"as-child":n.asChild,as:n.as,"data-dismissable-layer":``,style:e({pointerEvents:h.value?_.value?`auto`:`none`:void 0}),onFocusCapture:w(b).onFocusCapture,onBlurCapture:w(b).onBlurCapture,onPointerdownCapture:w(v).onPointerDownCapture},{default:a(()=>[o(n.$slots,`default`)]),_:3},8,[`as-child`,`as`,`style`,`onFocusCapture`,`onBlurCapture`,`onPointerdownCapture`]))}}),ke=te(()=>x([]));function Ae(){let e=ke();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=K(e.value,t),e.value.unshift(t)},remove(t){e.value=K(e.value,t),e.value[0]?.resume()}}}function K(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}var q=`focusScope.autoFocusOnMount`,J=`focusScope.autoFocusOnUnmount`,Y={bubbles:!1,cancelable:!0};function X(e,{select:t=!1}={}){let n=j();for(let r of e)if($(r,{select:t}),j()!==n)return!0}function je(e){let t=Z(e);return[Q(t,e),Q(t.reverse(),e)]}function Z(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;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}function Q(e,t){for(let n of e)if(!Me(n,{upTo:t}))return n}function Me(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Ne(e){return e instanceof HTMLInputElement&&`select`in e}function $(e,{select:t=!1}={}){if(e&&e.focus){let n=j();e.focus({preventScroll:!0}),e!==n&&Ne(e)&&t&&e.select()}}var Pe=C({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:n}){let r=e,s=n,{currentRef:c,currentElement:l}=T(),d=x(null),f=Ae(),p=h({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});u(e=>{if(!O)return;let t=l.value;if(!r.trapped)return;function n(e){if(p.paused||!t)return;let n=e.target;t.contains(n)?d.value=n:$(d.value,{select:!0})}function i(e){if(p.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||$(d.value,{select:!0}))}function a(e){t.contains(d.value)||$(t)}document.addEventListener(`focusin`,n),document.addEventListener(`focusout`,i);let o=new MutationObserver(a);t&&o.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,n),document.removeEventListener(`focusout`,i),o.disconnect()})}),u(async e=>{let t=l.value;if(await i(),!t)return;f.add(p);let n=j();if(!t.contains(n)){let e=new CustomEvent(q,Y);t.addEventListener(q,e=>s(`mountAutoFocus`,e)),t.dispatchEvent(e),e.defaultPrevented||(X(Z(t),{select:!0}),j()===n&&$(t))}e(()=>{t.removeEventListener(q,e=>s(`mountAutoFocus`,e));let e=new CustomEvent(J,Y),r=e=>{s(`unmountAutoFocus`,e)};t.addEventListener(J,r),t.dispatchEvent(e),setTimeout(()=>{e.defaultPrevented||$(n??document.body,{select:!0}),t.removeEventListener(J,r),f.remove(p)},0)})});function m(e){if(!r.loop&&!r.trapped||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=j();if(t&&n){let t=e.currentTarget,[i,a]=je(t);i&&a?!e.shiftKey&&n===a?(e.preventDefault(),r.loop&&$(i,{select:!0})):e.shiftKey&&n===i&&(e.preventDefault(),r.loop&&$(a,{select:!0})):n===t&&e.preventDefault()}}return(e,n)=>(t(),y(w(k),{ref_key:`currentRef`,ref:c,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:m},{default:a(()=>[o(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),Fe=C({__name:`Teleport`,props:{to:{type:null,required:!1,default:`body`},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let n=ee();return(e,r)=>w(n)||e.forceMount?(t(),y(m,{key:0,to:e.to,disabled:e.disabled,defer:e.defer},[o(e.$slots,`default`)],8,[`to`,`disabled`,`defer`])):v(`v-if`,!0)}}),Ie=C({__name:`VisuallyHidden`,props:{feature:{type:String,required:!1,default:`focusable`},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,n)=>(t(),y(w(k),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature===`focusable`?`true`:void 0,"data-hidden":e.feature===`fully-hidden`?``:void 0,tabindex:e.feature===`fully-hidden`?`-1`:void 0,style:{position:`absolute`,border:0,width:`1px`,height:`1px`,padding:0,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`,wordWrap:`normal`,top:`-1px`,left:`-1px`}},{default:a(()=>[o(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`aria-hidden`,`data-hidden`,`tabindex`]))}});const Le=Symbol(`nuxt-ui.portal-target`);function Re(e){let t=S(Le,void 0),n=g(()=>e.value===!0?t?.value:e.value),r=g(()=>typeof n.value==`boolean`?!n.value:!1),i=g(()=>typeof n.value==`boolean`?`body`:n.value);return g(()=>({to:i.value,disabled:r.value}))}export{Oe as a,ve as c,fe as d,P as f,j as h,Pe as i,me as l,M as m,Ie as n,Ce as o,N as p,Fe as r,be as s,Re as t,I as u}; \ No newline at end of file diff --git a/assets/public/dist/assets/useValidation-wBItIFut.js b/assets/public/dist/assets/useValidation-wBItIFut.js new file mode 100644 index 0000000..cdb5982 --- /dev/null +++ b/assets/public/dist/assets/useValidation-wBItIFut.js @@ -0,0 +1 @@ +import{B as e,D as t,F as n,G as r,I as i,J as a,K as o,M as s,N as c,O as l,Q as u,R as d,U as f,_ as p,ct as m,d as h,f as g,g as _,h as v,i as y,lt as b,m as x,p as S,ut as C,w,wt as T,xt as E,y as D,yt as O}from"./vue.runtime.esm-bundler-BM5WPBHd.js";import{n as k,t as A}from"./useForwardExpose-BgPOLLFN.js";import{O as ee,S as j,i as M,n as N,r as P}from"./Icon-Chkiq2IE.js";import{a as F,c as te,d as I,i as L,l as ne,o as R,s as z,u as B}from"./Button-jwL-tYHc.js";var V=D({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(e){let r=e;return A(),(e,i)=>(n(),S(O(M),t(r,{onMousedown:i[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:u(()=>[d(e.$slots,`default`)]),_:3},16))}});function H(e){return`schema`in e&&typeof e.coercer==`function`&&typeof e.validator==`function`&&typeof e.refiner==`function`}function U(e){return`~standard`in e}async function W(e,t){let n=await t[`~standard`].validate(e);return n.issues?{errors:n.issues?.map(e=>({name:e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`)||``,message:e.message}))||[],result:null}:{errors:null,result:n.value}}async function G(e,t){let[n,r]=t.validate(e);return n?{errors:n.failures().map(e=>({message:e.message,name:e.path.join(`.`)})),result:null}:{errors:null,result:r}}function re(e,t){if(U(t))return W(e,t);if(H(t))return G(e,t);throw Error(`Form validation failed: Unsupported form schema`)}function ie(e,t){return t?t.split(`.`).reduce((e,t)=>e?.[t],e):e}function ae(e,t,n){if(!t)return Object.assign(e,n);if(!e)return e;let r=t.split(`.`),i=e;for(let e=0;e!0},nested:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},onSubmit:{type:Function,required:!1}},emits:[`submit`,`error`],setup(t,{expose:r,emit:a}){let p=t,g=a,_=j(),v=N(`form`,p),x=h(()=>P({extend:P(oe),..._.ui?.form||{}})),T=p.id??f(),D=o(`formRef`),k=ee(`form-${T}`),A=p.nested===!0&&w(L,void 0),M=p.nested===!0?w(B,void 0):void 0,I=h(()=>M?.value?p.name?ie(M.value,p.name):M.value:p.state);i(L,k),i(B,I);let R=C(new Map);s(async()=>{A&&(await l(),A.emit({type:`attach`,validate:X,formId:T,name:p.name,api:_e}))}),c(()=>{k.reset(),A&&A.emit({type:`detach`,formId:T})}),s(async()=>{k.on(async e=>{e.type===`attach`?R.value.set(e.formId,{validate:e.validate,name:e.name,api:e.api}):e.type===`detach`?R.value.delete(e.formId):p.validateOn?.includes(e.type)&&!Z.value&&(e.type===`input`?(e.eager||G.has(e.name))&&await X({name:e.name,silent:!0,nested:!1}):await X({name:e.name,silent:!0,nested:!1})),e.type===`blur`&&G.add(e.name),(e.type===`change`||e.type===`input`||e.type===`blur`||e.type===`focus`)&&W.add(e.name),(e.type===`change`||e.type===`input`)&&U.add(e.name)})});let V=C([]);i(F,V);let H=C({});i(z,H);let U=m(new Set),W=m(new Set),G=m(new Set);function q(e){return e.map(e=>({...e,id:e?.name?H.value[e.name]?.id:void 0}))}let J=C(null);async function Y(){let e=p.validate?await p.validate(I.value)??[]:[];if(p.schema){let{errors:t,result:n}=await re(I.value,p.schema);t?e=e.concat(t):J.value=n}return q(e)}async function X(e={silent:!1,nested:!1,transform:!1}){let t=e.name&&!Array.isArray(e.name)?[e.name]:e.name,n=[],r=[];if(!t&&e.nested){let t=Array.from(R.value.values()).map(t=>se(t,e)),i=await Promise.all(t);r=i.filter(e=>e.error).flatMap(e=>e.error.errors.map(t=>ce(t,e.name))),n=i.filter(e=>e.output!==void 0)}let i=[...await Y(),...r];if(t?V.value=me(i,t):V.value=i,V.value?.length){if(e.silent)return!1;throw new K(T,V.value)}return e.transform?(n.forEach(e=>{e.name?ae(J.value,e.name,e.output):Object.assign(J.value,e.output)}),J.value??I.value):I.value}let Z=C(!1);i(te,b(Z));async function Q(e){Z.value=p.loadingAuto&&!0;let t=e;try{t.data=await X({nested:!0,transform:p.transform}),await p.onSubmit?.(t),U.clear()}catch(e){if(!(e instanceof K))throw e;g(`error`,{...t,errors:e.errors})}finally{Z.value=!1}}let $=h(()=>p.disabled||Z.value);i(ne,h(()=>({disabled:$.value,validateOnInputDelay:p.validateOnInputDelay})));async function se(e,t){try{let n=await e.validate({...t,silent:!1});return{name:e.name,output:n}}catch(t){if(!(t instanceof K))throw t;return{name:e.name,error:t}}}function ce(e,t){return!t||!e.name?e:{...e,name:t+`.`+e.name}}function le(e,t){let n=t+`.`,r=e?.name?.startsWith(n)?e.name.substring(n.length):e.name;return{...e,name:r}}function ue(e,t){return t?e.filter(e=>e?.name?.startsWith(t+`.`)).map(e=>le(e,t)):e}function de(e){return e.api.getErrors().map(t=>e.name?{...t,name:e.name+`.`+t.name}:t)}function fe(e,t){return!e||!t?!0:e instanceof RegExp?e.test(t):t===e||typeof e==`string`&&e.startsWith(t+`.`)}function pe(e,t){if(!e||e instanceof RegExp)return e;if(t!==e)return typeof e==`string`&&e.startsWith(t+`.`)?e.substring(t.length+1):e}function me(e,t){let n=new Set(t),r=t.map(e=>H.value?.[e]?.pattern).filter(Boolean),i=e=>e.name?n.has(e.name)?!0:r.some(t=>t.test(e.name)):!1,a=V.value.filter(e=>!i(e)),o=e.filter(i);return[...a,...o]}function he(e,t){return e.filter(e=>t instanceof RegExp?!(e.name&&t.test(e.name)):!e.name||e.name!==t)}function ge(e){return!e.name||!!H.value[e.name]}let _e={validate:X,errors:V,setErrors(e,t){let n=q(e.filter(ge)),r=[];for(let n of R.value.values())if(fe(t,n.name)){let i=ue(e,n.name);n.api.setErrors(i,pe(t,n.name||``)),r.push(...de(n))}t?V.value=[...he(V.value,t),...n,...r]:V.value=[...n,...r]},async submit(){D.value instanceof HTMLFormElement&&D.value.reportValidity()===!1||await Q(new Event(`submit`))},getErrors(e){return e?V.value.filter(t=>e instanceof RegExp?t.name&&e.test(t.name):t.name===e):V.value},clear(e){let t=e?V.value.filter(t=>ge(t)&&(e instanceof RegExp?!(t.name&&e.test(t.name)):t.name!==e)):[],n=[];for(let t of R.value.values())fe(e,t.name)&&t.api.clear(),n.push(...de(t));V.value=[...t,...n]},disabled:$,loading:Z,dirty:h(()=>!!U.size),dirtyFields:b(U),blurredFields:b(G),touchedFields:b(W)};return r(_e),(t,r)=>(n(),S(e(O(A)?`div`:`form`),{id:O(T),ref_key:`formRef`,ref:D,class:E(x.value({class:[O(v)?.base,p.class]})),onSubmit:y(Q,[`prevent`])},{default:u(()=>[d(t.$slots,`default`,{errors:V.value,loading:Z.value})]),_:3},40,[`id`,`class`]))}},J={slots:{root:``,wrapper:``,labelWrapper:`flex content-center items-center justify-between gap-1`,label:`block font-medium text-default`,container:`relative`,description:`text-muted`,error:`mt-2 text-error`,hint:`text-muted`,help:`mt-2 text-muted`},variants:{size:{xs:{root:`text-xs`},sm:{root:`text-xs`},md:{root:`text-sm`},lg:{root:`text-sm`},xl:{root:`text-base`}},required:{true:{label:`after:content-['*'] after:ms-0.5 after:text-error`}},orientation:{vertical:{container:`mt-1`},horizontal:{root:`flex justify-between place-items-baseline gap-2`}}},defaultVariants:{size:`md`,orientation:`vertical`}},Y=[`id`],X=[`id`],Z=[`id`],Q=[`id`],$={__name:`FormField`,props:{as:{type:null,required:!1},name:{type:String,required:!1},errorPattern:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},help:{type:String,required:!1},error:{type:[Boolean,String],required:!1,default:void 0},hint:{type:String,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},eagerValidation:{type:Boolean,required:!1},validateOnInputDelay:{type:Number,required:!1},orientation:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(e){let t=e,o=r(),s=j(),c=N(`formField`,t),l=h(()=>P({extend:P(J),...s.ui?.formField||{}})({size:t.size,required:t.required,orientation:t.orientation})),m=w(F,null),y=h(()=>t.error||m?.value?.find(e=>e.name===t.name||t.errorPattern&&e.name?.match(t.errorPattern))?.message),b=C(f()),D=b.value,k=w(z,void 0);return a(b,()=>{k&&t.name&&(k.value[t.name]={id:b.value,pattern:t.errorPattern})},{immediate:!0}),i(I,b),i(R,h(()=>({error:y.value,name:t.name,size:t.size,eagerValidation:t.eagerValidation,validateOnInputDelay:t.validateOnInputDelay,errorPattern:t.errorPattern,hint:t.hint,description:t.description,help:t.help,ariaId:D}))),(r,i)=>(n(),S(O(M),{as:e.as,"data-orientation":e.orientation,"data-slot":`root`,class:E(l.value.root({class:[O(c)?.root,t.class]}))},{default:u(()=>[g(`div`,{"data-slot":`wrapper`,class:E(l.value.wrapper({class:O(c)?.wrapper}))},[e.label||o.label?(n(),v(`div`,{key:0,"data-slot":`labelWrapper`,class:E(l.value.labelWrapper({class:O(c)?.labelWrapper}))},[p(O(V),{for:b.value,"data-slot":`label`,class:E(l.value.label({class:O(c)?.label}))},{default:u(()=>[d(r.$slots,`label`,{label:e.label},()=>[_(T(e.label),1)])]),_:3},8,[`for`,`class`]),e.hint||o.hint?(n(),v(`span`,{key:0,id:`${O(D)}-hint`,"data-slot":`hint`,class:E(l.value.hint({class:O(c)?.hint}))},[d(r.$slots,`hint`,{hint:e.hint},()=>[_(T(e.hint),1)])],10,Y)):x(``,!0)],2)):x(``,!0),e.description||o.description?(n(),v(`p`,{key:1,id:`${O(D)}-description`,"data-slot":`description`,class:E(l.value.description({class:O(c)?.description}))},[d(r.$slots,`description`,{description:e.description},()=>[_(T(e.description),1)])],10,X)):x(``,!0)],2),g(`div`,{class:E([(e.label||!!o.label||e.description||!!o.description)&&l.value.container({class:O(c)?.container})])},[d(r.$slots,`default`,{error:y.value}),t.error!==!1&&(typeof y.value==`string`&&y.value||o.error)?(n(),v(`div`,{key:0,id:`${O(D)}-error`,"data-slot":`error`,class:E(l.value.error({class:O(c)?.error}))},[d(r.$slots,`error`,{error:y.value},()=>[_(T(y.value),1)])],10,Z)):e.help||o.help?(n(),v(`div`,{key:1,id:`${O(D)}-help`,"data-slot":`help`,class:E(l.value.help({class:O(c)?.help}))},[d(r.$slots,`help`,{help:e.help},()=>[_(T(e.help),1)])],10,Q)):x(``,!0)],2)]),_:3},8,[`as`,`data-orientation`,`class`]))}};const se=()=>{let e=[];function t(){e.length=0}function n(t,n,r){(!t.value||!/^[A-Za-z]{2,}$/.test(t.value))&&e.push({name:n,message:r})}function r(t,n,r){(!t.value||!/^[A-Za-z]{2,}$/.test(t.value))&&e.push({name:n,message:r})}function i(t,n,r){(!t.value||!/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(t.value))&&e.push({name:n,message:r})}function a(t,n,r,i,a){let o=RegExp(`^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+\\-=[\\]{};:'",.<>/?]).{8,}$`);t.value?o.test(t.value)||e.push({name:n,message:k.t(`validate_error.registration_validation_password_requirements`)}):e.push({name:n,message:k.t(`validate_error.password_required`)}),r.value?t.value!==r.value&&e.push({name:i,message:k.t(`validate_error.registration_validation_password_not_same`)}):e.push({name:i,message:a})}return{errors:e,reset:t,validateFirstName:n,validateLastName:r,validateEmail:i,validatePasswords:a}};export{V as i,$ as n,q as r,se as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/utils-ZBSSwpFo.js b/assets/public/dist/assets/utils-ZBSSwpFo.js new file mode 100644 index 0000000..42182eb --- /dev/null +++ b/assets/public/dist/assets/utils-ZBSSwpFo.js @@ -0,0 +1 @@ +import{h as e}from"./usePortal-Zddbph8M.js";var t=[`Enter`,` `],n=[`ArrowDown`,`PageUp`,`Home`],r=[`ArrowUp`,`PageDown`,`End`];[...n,...r],[...t],[...t];function i(e){return e?`open`:`closed`}function a(t){let n=e();for(let r of t)if(r===n||(r.focus(),e()!==n))return}export{i as n,a as t}; \ No newline at end of file diff --git a/assets/public/dist/assets/vue.runtime.esm-bundler-BM5WPBHd.js b/assets/public/dist/assets/vue.runtime.esm-bundler-BM5WPBHd.js new file mode 100644 index 0000000..e788b2f --- /dev/null +++ b/assets/public/dist/assets/vue.runtime.esm-bundler-BM5WPBHd.js @@ -0,0 +1,7 @@ +var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};function n(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var r={},i=[],a=()=>{},o=()=>!1,s=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),c=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,l=e=>e.startsWith(`onUpdate:`),u=Object.assign,d=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},f=Object.prototype.hasOwnProperty,p=(e,t)=>f.call(e,t),m=Array.isArray,h=e=>T(e)===`[object Map]`,g=e=>T(e)===`[object Set]`,_=e=>T(e)===`[object Date]`,v=e=>T(e)===`[object RegExp]`,y=e=>typeof e==`function`,b=e=>typeof e==`string`,x=e=>typeof e==`symbol`,S=e=>typeof e==`object`&&!!e,C=e=>(S(e)||y(e))&&y(e.then)&&y(e.catch),w=Object.prototype.toString,T=e=>w.call(e),E=e=>T(e).slice(8,-1),ee=e=>T(e)===`[object Object]`,te=e=>b(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,ne=n(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),re=n(`slot,component`),ie=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ae=/-(\w)/g,oe=(e,t)=>t?t.toUpperCase():``,D=ie(e=>e.replace(ae,oe)),se=/\B([A-Z])/g,ce=ie(e=>e.replace(se,`-$1`).toLowerCase()),le=ie(e=>e.charAt(0).toUpperCase()+e.slice(1)),ue=ie(e=>e?`on${le(e)}`:``),de=e=>`${e===`modelValue`||e===`model-value`?`model`:e}Modifiers${e===`model`?`$`:``}`,O=(e,t)=>!Object.is(e,t),fe=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},me=e=>{let t=parseFloat(e);return isNaN(t)?e:t},he=e=>{let t=b(e)?Number(e):NaN;return isNaN(t)?e:t},ge,_e=()=>ge||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function ve(e){return e!==`PROGRESS`&&!e.includes(`-`)}var ye=n(`Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol`);function be(e){if(m(e)){let t={};for(let n=0;n{if(e){let n=e.split(Se);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Te(e){let t=``;if(b(e))t=e;else if(m(e))for(let n=0;nIe(e,t))}var Re=e=>!!(e&&e.__v_isRef===!0),ze=e=>{switch(typeof e){case`string`:return e;case`object`:if(e){if(Re(e))return ze(e.value);if(m(e)||e.toString===w||!y(e.toString))return JSON.stringify(e,Be,2)}default:return e==null?``:String(e)}},Be=(e,t)=>Re(t)?Be(e,t.value):h(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Ve(t,r)+` =>`]=n,e),{})}:g(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Ve(e))}:x(t)?Ve(t):S(t)&&!m(t)&&!ee(t)?String(t):t,Ve=(e,t=``)=>x(e)?`Symbol(${e.description??t})`:e;function He(e){let t=e.slice(),n=[0],r,i,a,o,s,c=e.length;for(r=0;r>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}function Ue(e){return e==null?`initial`:typeof e==`string`?e===``?` `:e:String(e)}var k={None:0,0:`None`,Mutable:1,1:`Mutable`,Watching:2,2:`Watching`,RecursedCheck:4,4:`RecursedCheck`,Recursed:8,8:`Recursed`,Dirty:16,16:`Dirty`,Pending:32,32:`Pending`},We=[],Ge=0,Ke=void 0,qe=0,Je=0,Ye=0;function A(e){try{return Ke}finally{Ke=e}}function Xe(){++Ge}function Ze(){!--Ge&&Ye&&rt()}function Qe(e,t){let n=t.depsTail;if(n!==void 0&&n.dep===e)return;let r=n===void 0?t.deps:n.nextDep;if(r!==void 0&&r.dep===e){r.version=qe,t.depsTail=r;return}let i=e.subsTail;if(i!==void 0&&i.version===qe&&i.sub===t)return;let a=t.depsTail=e.subsTail={version:qe,dep:e,sub:t,prevDep:n,nextDep:r,prevSub:i,nextSub:void 0};r!==void 0&&(r.prevDep=a),n===void 0?t.deps=a:n.nextDep=a,i===void 0?e.subs=a:i.nextSub=a}function $e(e,t=e.sub){let n=e.dep,r=e.prevDep,i=e.nextDep,a=e.nextSub,o=e.prevSub;if(i===void 0?t.depsTail=r:i.prevDep=r,r===void 0?t.deps=i:r.nextDep=i,a===void 0?n.subsTail=o:a.prevSub=o,o!==void 0)o.nextSub=a;else if((n.subs=a)===void 0){let e=n.deps;if(e!==void 0){do e=$e(e,n);while(e!==void 0);n.flags|=16}}return i}function et(e){let t=e.nextSub,n;top:do{let r=e.sub,i=r.flags;if(i&3&&(i&60?i&12?i&4?!(i&48)&&ot(e,r)?(r.flags=i|40,i&=1):i=0:r.flags=i&-9|32:i=0:r.flags=i|32,i&2&&(We[Ye++]=r),i&1)){let i=r.subs;if(i!==void 0){e=i,i.nextSub!==void 0&&(n={value:t,prev:n},t=e.nextSub);continue}}if((e=t)!==void 0){t=e.nextSub;continue}for(;n!==void 0;)if(e=n.value,n=n.prev,e!==void 0){t=e.nextSub;continue top}break}while(!0)}function tt(e){return++qe,e.depsTail=void 0,e.flags=e.flags&-57|4,A(e)}function nt(e,t){Ke=t;let n=e.depsTail,r=n===void 0?e.deps:n.nextDep;for(;r!==void 0;)r=$e(r,e);e.flags&=-5}function rt(){for(;Je{e!==void 0&&e.subs!==void 0&&(et(e.subs),at(e.subs))};if(Xe(),t===`clear`)o.forEach(s);else{let i=m(e),a=i&&te(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===dt||!x(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(dt)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(lt)),h(e)&&s(o.get(ut)));break;case`delete`:i||(s(o.get(lt)),h(e)&&s(o.get(ut)));break;case`set`:h(e)&&s(o.get(lt));break}}Ze()}function pt(e,t){let n=ct.get(e);return n&&n.get(t)}function mt(e){let t=M(e);return t===e?t:(j(t,`iterate`,dt),rn(e)?t:t.map(sn))}function ht(e){return j(e=M(e),`iterate`,dt),e}function gt(e,t){return nn(e)?cn(tn(e)?sn(t):t):sn(t)}var _t={__proto__:null,[Symbol.iterator](){return vt(this,Symbol.iterator,e=>gt(this,e))},concat(...e){return mt(this).concat(...e.map(e=>m(e)?mt(e):e))},entries(){return vt(this,`entries`,e=>(e[1]=gt(this,e[1]),e))},every(e,t){return bt(this,`every`,e,t,void 0,arguments)},filter(e,t){return bt(this,`filter`,e,t,e=>e.map(e=>gt(this,e)),arguments)},find(e,t){return bt(this,`find`,e,t,e=>gt(this,e),arguments)},findIndex(e,t){return bt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return bt(this,`findLast`,e,t,e=>gt(this,e),arguments)},findLastIndex(e,t){return bt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return bt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return St(this,`includes`,e)},indexOf(...e){return St(this,`indexOf`,e)},join(e){return mt(this).join(e)},lastIndexOf(...e){return St(this,`lastIndexOf`,e)},map(e,t){return bt(this,`map`,e,t,void 0,arguments)},pop(){return Ct(this,`pop`)},push(...e){return Ct(this,`push`,e)},reduce(e,...t){return xt(this,`reduce`,e,t)},reduceRight(e,...t){return xt(this,`reduceRight`,e,t)},shift(){return Ct(this,`shift`)},some(e,t){return bt(this,`some`,e,t,void 0,arguments)},splice(...e){return Ct(this,`splice`,e)},toReversed(){return mt(this).toReversed()},toSorted(e){return mt(this).toSorted(e)},toSpliced(...e){return mt(this).toSpliced(...e)},unshift(...e){return Ct(this,`unshift`,e)},values(){return vt(this,`values`,e=>gt(this,e))}};function vt(e,t,n){let r=ht(e),i=r[t]();return r!==e&&!rn(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var yt=Array.prototype;function bt(e,t,n,r,i,a){let o=ht(e),s=o!==e&&!rn(e),c=o[t];if(c!==yt[t]){let t=c.apply(e,a);return s?sn(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,gt(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function xt(e,t,n,r){let i=ht(e),a=n;return i!==e&&(rn(e)?n.length>3&&(a=function(t,r,i){return n.call(this,t,r,i,e)}):a=function(t,r,i){return n.call(this,t,gt(e,r),i,e)}),i[t](a,...r)}function St(e,t,n){let r=M(e);j(r,`iterate`,dt);let i=r[t](...n);return(i===-1||i===!1)&&an(n[0])?(n[0]=M(n[0]),r[t](...n)):i}function Ct(e,t,n=[]){Xe();let r=A(),i=M(e)[t].apply(e,n);return A(r),Ze(),i}var wt=n(`__proto__,__v_isRef,__isVue`),Tt=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(x));function Et(e){x(e)||(e=String(e));let t=M(this);return j(t,`has`,e),t.hasOwnProperty(e)}var Dt=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?qt:Kt:i?Gt:Wt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=m(e);if(!r){let e;if(a&&(e=_t[t]))return e;if(t===`hasOwnProperty`)return Et}let o=N(e),s=Reflect.get(e,t,o?e:n);if(o&&t!==`value`||(x(t)?Tt.has(t):wt(t))||(r||j(e,`get`,t),i))return s;if(N(s)){let e=a&&te(t)?s:s.value;return r&&S(e)?Qt(e):e}return S(s)?r?Qt(s):Xt(s):s}},Ot=class extends Dt{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=m(e)&&te(t);if(!this._isShallow){let e=nn(i);if(!rn(n)&&!nn(n)&&(i=M(i),n=M(n)),!a&&N(i)&&!N(n))return e||(i.value=n),!0}let o=a?Number(t)e,Ft=e=>Reflect.getPrototypeOf(e);function It(e,t,n){return function(...r){let i=this.__v_raw,a=M(i),o=h(a),s=e===`entries`||e===Symbol.iterator&&o,c=e===`keys`&&o,l=i[e](...r),d=n?Pt:t?cn:sn;return!t&&j(a,`iterate`,c?ut:lt),u(Object.create(l),{next(){let{value:e,done:t}=l.next();return t?{value:e,done:t}:{value:s?[d(e[0]),d(e[1])]:d(e),done:t}}})}}function Lt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function Rt(e,t){let n={get(n){let r=this.__v_raw,i=M(r),a=M(n);e||(O(n,a)&&j(i,`get`,n),j(i,`get`,a));let{has:o}=Ft(i),s=t?Pt:e?cn:sn;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&j(M(t),`iterate`,lt),t.size},has(t){let n=this.__v_raw,r=M(n),i=M(t);return e||(O(t,i)&&j(r,`has`,t),j(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=M(a),s=t?Pt:e?cn:sn;return!e&&j(o,`iterate`,lt),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return u(n,e?{add:Lt(`add`),set:Lt(`set`),delete:Lt(`delete`),clear:Lt(`clear`)}:{add(e){!t&&!rn(e)&&!nn(e)&&(e=M(e));let n=M(this);return Ft(n).has.call(n,e)||(n.add(e),ft(n,`add`,e,e)),this},set(e,n){!t&&!rn(n)&&!nn(n)&&(n=M(n));let r=M(this),{has:i,get:a}=Ft(r),o=i.call(r,e);o||=(e=M(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?O(n,s)&&ft(r,`set`,e,n,s):ft(r,`add`,e,n),this},delete(e){let t=M(this),{has:n,get:r}=Ft(t),i=n.call(t,e);i||=(e=M(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&ft(t,`delete`,e,void 0,a),o},clear(){let e=M(this),t=e.size!==0,n=e.clear();return t&&ft(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=It(r,e,t)}),n}function zt(e,t){let n=Rt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(p(n,r)&&r in t?n:t,r,i)}var Bt={get:zt(!1,!1)},Vt={get:zt(!1,!0)},Ht={get:zt(!0,!1)},Ut={get:zt(!0,!0)},Wt=new WeakMap,Gt=new WeakMap,Kt=new WeakMap,qt=new WeakMap;function Jt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function Yt(e){return e.__v_skip||!Object.isExtensible(e)?0:Jt(E(e))}function Xt(e){return nn(e)?e:en(e,!1,At,Bt,Wt)}function Zt(e){return en(e,!1,Mt,Vt,Gt)}function Qt(e){return en(e,!0,jt,Ht,Kt)}function $t(e){return en(e,!0,Nt,Ut,qt)}function en(e,t,n,r,i){if(!S(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let a=Yt(e);if(a===0)return e;let o=i.get(e);if(o)return o;let s=new Proxy(e,a===2?r:n);return i.set(e,s),s}function tn(e){return nn(e)?tn(e.__v_raw):!!(e&&e.__v_isReactive)}function nn(e){return!!(e&&e.__v_isReadonly)}function rn(e){return!!(e&&e.__v_isShallow)}function an(e){return e?!!e.__v_raw:!1}function M(e){let t=e&&e.__v_raw;return t?M(t):e}function on(e){return!p(e,`__v_skip`)&&Object.isExtensible(e)&&pe(e,`__v_skip`,!0),e}var sn=e=>S(e)?Xt(e):e,cn=e=>S(e)?Qt(e):e;function N(e){return e?e.__v_isRef===!0:!1}function ln(e){return dn(e,sn)}function un(e){return dn(e)}function dn(e,t){return N(e)?e:new fn(e,t)}var fn=class{constructor(e,t){this.subs=void 0,this.subsTail=void 0,this.flags=k.Mutable,this.__v_isRef=!0,this.__v_isShallow=!1,this._oldValue=this._rawValue=t?M(e):e,this._value=t?t(e):e,this._wrap=t,this.__v_isShallow=!t}get dep(){return this}get value(){if(mn(this),this.flags&k.Dirty&&this.update()){let e=this.subs;e!==void 0&&at(e)}return this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||rn(e)||nn(e);if(e=n?e:M(e),O(e,t)){this.flags|=k.Dirty,this._rawValue=e,this._value=!n&&this._wrap?this._wrap(e):e;let t=this.subs;t!==void 0&&(et(t),Ge||rt())}}update(){return this.flags&=~k.Dirty,O(this._oldValue,this._oldValue=this._rawValue)}};function pn(e){let t=e.dep;t!==void 0&&t.subs!==void 0&&(et(t.subs),at(t.subs),Ge||rt())}function mn(e){Ke!==void 0&&Qe(e,Ke)}function hn(e){return N(e)?e.value:e}function gn(e){return y(e)?e():hn(e)}var _n={get:(e,t,n)=>t===`__v_raw`?e:hn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return N(i)&&!N(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function vn(e){return tn(e)?e:new Proxy(e,_n)}var yn=class{constructor(e){this.subs=void 0,this.subsTail=void 0,this.flags=k.None,this.__v_isRef=!0,this._value=void 0;let{get:t,set:n}=e(()=>mn(this),()=>pn(this));this._get=t,this._set=n}get dep(){return this}get value(){return this._value=this._get()}set value(e){this._set(e)}};function bn(e){return new yn(e)}function xn(e){let t=m(e)?Array(e.length):{};for(let n in e)t[n]=Tn(e,n);return t}var Sn=class{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._raw=M(e);let r=!0,i=e;if(!m(e)||!te(String(t)))do r=!an(i)||rn(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=hn(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&N(this._raw[this._key])){let t=this._object[this._key];if(N(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return pt(this._raw,this._key)}},Cn=class{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}};function wn(e,t,n){return N(e)?e:y(e)?new Cn(e):S(e)&&arguments.length>1?Tn(e,t,n):ln(e)}function Tn(e,t,n){return new Sn(e,t,n)}var En=class{fn(){}constructor(e){this.deps=void 0,this.depsTail=void 0,this.subs=void 0,this.subsTail=void 0,this.flags=18,this.cleanups=[],this.cleanupsLength=0,e!==void 0&&(this.fn=e),Fn&&Qe(this,Fn)}get active(){return!(this.flags&1024)}pause(){this.flags|=256}resume(){(this.flags&=-257)&48&&this.notify()}notify(){!(this.flags&256)&&this.dirty&&this.run()}run(){if(!this.active)return this.fn();Mn(this);let e=tt(this);try{return this.fn()}finally{nt(this,e);let t=this.flags;(t&136)==136&&(this.flags=t&-9,this.notify())}}stop(){if(!this.active)return;this.flags=1024;let e=this.deps;for(;e!==void 0;)e=$e(e,this);let t=this.subs;t!==void 0&&$e(t),Mn(this)}get dirty(){let e=this.flags;if(e&16)return!0;if(e&32){if(it(this.deps,this))return this.flags=e|16,!0;this.flags=e&-33}return!1}};function Dn(e,t){e.effect instanceof En&&(e=e.effect.fn);let n=new En(e);if(t){let{onStop:e,scheduler:r}=t;if(e){t.onStop=void 0;let r=n.stop.bind(n);n.stop=()=>{r(),e()}}r&&(t.scheduler=void 0,n.notify=()=>{n.flags&256||r()}),u(n,t)}try{n.run()}catch(e){throw n.stop(),e}let r=n.run.bind(n);return r.effect=n,r}function On(e){e.effect.stop()}var kn=[];function An(){kn.push(Ke),A()}function jn(){kn.length?A(kn.pop()):A()}function Mn(e){let t=e.cleanupsLength;if(t){for(let n=0;nPn(e))}function Pn(e){let t=A();try{e()}finally{A(t)}}var Fn,In=class{constructor(e=!1){this.deps=void 0,this.depsTail=void 0,this.subs=void 0,this.subsTail=void 0,this.flags=0,this.cleanups=[],this.cleanupsLength=0,!e&&Fn&&Qe(this,Fn)}get active(){return!(this.flags&1024)}pause(){if(!(this.flags&256)){this.flags|=256;for(let e=this.deps;e!==void 0;e=e.nextDep){let t=e.dep;`pause`in t&&t.pause()}}}resume(){let e=this.flags;if(e&256){this.flags=e&-257;for(let e=this.deps;e!==void 0;e=e.nextDep){let t=e.dep;`resume`in t&&t.resume()}}}run(e){let t=Fn;try{return Fn=this,e()}finally{Fn=t}}stop(){if(!this.active)return;this.flags=1024,this.reset();let e=this.subs;e!==void 0&&$e(e)}reset(){let e=this.deps;for(;e!==void 0;){let t=e.dep;`stop`in t?(e=e.nextDep,t.stop()):e=$e(e,this)}Mn(this)}};function Ln(e){return new In(e)}function Rn(){return Fn}function zn(e){try{return Fn}finally{Fn=e}}function Bn(e,t=!1){Fn!==void 0&&(Fn.cleanups[Fn.cleanupsLength++]=e)}var Vn=class{get effect(){return this}get dep(){return this}get _dirty(){let e=this.flags;if(e&k.Dirty)return!0;if(e&k.Pending){if(it(this.deps,this))return this.flags=e|k.Dirty,!0;this.flags=e&~k.Pending}return!1}set _dirty(e){e?this.flags|=k.Dirty:this.flags&=~(k.Dirty|k.Pending)}constructor(e,t){this.fn=e,this.setter=t,this._value=void 0,this.subs=void 0,this.subsTail=void 0,this.deps=void 0,this.depsTail=void 0,this.flags=k.Mutable|k.Dirty,this.__v_isRef=!0,this.__v_isReadonly=!t}get value(){let e=this.flags;if(e&k.Dirty||e&k.Pending&&it(this.deps,this)){if(this.update()){let e=this.subs;e!==void 0&&at(e)}}else e&k.Pending&&(this.flags=e&~k.Pending);return Ke===void 0?Fn!==void 0&&Qe(this,Fn):Qe(this,Ke),this._value}set value(e){this.setter&&this.setter(e)}update(){let e=tt(this);try{let e=this._value,t=this.fn(e);return O(e,t)?(this._value=t,!0):!1}finally{nt(this,e)}}};function Hn(e,t,n=!1){let r,i;return y(e)?r=e:(r=e.get,i=e.set),new Vn(r,i)}var Un={GET:`get`,HAS:`has`,ITERATE:`iterate`},Wn={SET:`set`,ADD:`add`,DELETE:`delete`,CLEAR:`clear`},Gn={},Kn=void 0;function qn(){return Kn}function Jn(e,t=!1,n=Kn){if(n){let{call:t}=n.options;t?n.cleanups[n.cleanupsLength++]=()=>t(e,4):n.cleanups[n.cleanupsLength++]=e}}var Yn=class extends En{constructor(e,t,n=r){let{deep:i,once:o,call:s,onWarn:c}=n,l,u=!1,d=!1;if(N(e)?(l=()=>e.value,u=rn(e)):tn(e)?(l=()=>Xn(e,i),u=!0):m(e)?(d=!0,u=e.some(e=>tn(e)||rn(e)),l=()=>e.map(e=>{if(N(e))return e.value;if(tn(e))return Xn(e,i);if(y(e))return s?s(e,2):e()})):l=y(e)?t?s?()=>s(e,2):e:()=>{if(this.cleanupsLength){let e=A();try{Mn(this)}finally{A(e)}}let t=Kn;Kn=this;try{return s?s(e,3,[this.boundCleanup]):e(this.boundCleanup)}finally{Kn=t}}:a,t&&i){let e=l,t=i===!0?1/0:i;l=()=>Qn(e(),t)}if(super(l),this.cb=t,this.options=n,this.boundCleanup=e=>Jn(e,!1,this),this.forceTrigger=u,this.isMultiSource=d,o&&t){let e=t;t=(...t)=>{e(...t),this.stop()}}this.cb=t,this.oldValue=d?Array(e.length).fill(Gn):Gn}run(e=!1){let t=this.oldValue,n=this.oldValue=super.run();if(!this.cb)return;let{immediate:r,deep:i,call:a}=this.options;if(!(e&&!r)&&(i||this.forceTrigger||(this.isMultiSource?n.some((e,n)=>O(e,t[n])):O(n,t)))){Mn(this);let e=Kn;Kn=this;try{let e=[n,t===Gn?void 0:this.isMultiSource&&t[0]===Gn?[]:t,this.boundCleanup];a?a(this.cb,3,e):this.cb(...e)}finally{Kn=e}}}};function Xn(e,t){return t?e:rn(e)||t===!1||t===0?Qn(e,1):Qn(e)}function Zn(e,t,n=r){let i=new Yn(e,t,n);i.run(!0);let a=i.stop.bind(i);return a.pause=i.pause.bind(i),a.resume=i.resume.bind(i),a.stop=a,a}function Qn(e,t=1/0,n){if(t<=0||!S(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,N(e))Qn(e.value,t,n);else if(m(e))for(let r=0;r{Qn(e,t,n)});else if(ee(e)){for(let r in e)Qn(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Qn(e[r],t,n)}return e}var $n=[];function er(e){$n.push(e)}function tr(){$n.pop()}var nr=!1;function rr(e,...t){if(nr)return;nr=!0;let n=A(),r=$n.length?$n[$n.length-1]:null,i=V(r)?r.component:r,a=i&&i.appContext.config.warnHandler,o=ir();if(a)fr(a,i,11,[e+t.map(e=>e.toString?.call(e)??JSON.stringify(e)).join(``),i&&i.proxy||i,o.map(({ctx:e})=>`at <${Fl(i,e.type)}>`).join(` +`),o]);else{let n=[`[Vue warn]: ${e}`,...t];o.length&&n.push(` +`,...ar(o)),console.warn(...n)}A(n),nr=!1}function ir(){let e=$n[$n.length-1];if(!e)return[];let t=[];for(;e;){let n=t[0];if(n&&n.ctx===e?n.recurseCount++:t.push({ctx:e,recurseCount:0}),V(e)){let t=e.component&&e.component.parent;e=t&&t.vnode||t}else e=e.parent}return t}function ar(e){let t=[];return e.forEach((e,n)=>{t.push(...n===0?[]:[` +`],...or(e))}),t}function or({ctx:e,recurseCount:t}){let n=t>0?`... (${t} recursive calls)`:``,r=V(e)?e.component:e,i=r?r.parent==null:!1,a=` at <${Fl(r,e.type,i)}`,o=`>`+n;return e.props?[a,...sr(e.props),o]:[a+o]}function sr(e){let t=[],n=Object.keys(e);return n.slice(0,3).forEach(n=>{t.push(...cr(n,e[n]))}),n.length>3&&t.push(` ...`),t}function cr(e,t,n){return b(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t==`number`||typeof t==`boolean`||t==null?n?t:[`${e}=${t}`]:N(t)?(t=cr(e,M(t.value),!0),n?t:[`${e}=Ref<`,t,`>`]):y(t)?[`${e}=fn${t.name?`<${t.name}>`:``}`]:(t=M(t),n?t:[`${e}=`,t])}function lr(e,t){}var ur={SETUP_FUNCTION:0,0:`SETUP_FUNCTION`,RENDER_FUNCTION:1,1:`RENDER_FUNCTION`,NATIVE_EVENT_HANDLER:5,5:`NATIVE_EVENT_HANDLER`,COMPONENT_EVENT_HANDLER:6,6:`COMPONENT_EVENT_HANDLER`,VNODE_HOOK:7,7:`VNODE_HOOK`,DIRECTIVE_HOOK:8,8:`DIRECTIVE_HOOK`,TRANSITION_HOOK:9,9:`TRANSITION_HOOK`,APP_ERROR_HANDLER:10,10:`APP_ERROR_HANDLER`,APP_WARN_HANDLER:11,11:`APP_WARN_HANDLER`,FUNCTION_REF:12,12:`FUNCTION_REF`,ASYNC_COMPONENT_LOADER:13,13:`ASYNC_COMPONENT_LOADER`,SCHEDULER:14,14:`SCHEDULER`,COMPONENT_UPDATE:15,15:`COMPONENT_UPDATE`,APP_UNMOUNT_CLEANUP:16,16:`APP_UNMOUNT_CLEANUP`},dr={sp:`serverPrefetch hook`,bc:`beforeCreate hook`,c:`created hook`,bm:`beforeMount hook`,m:`mounted hook`,bu:`beforeUpdate hook`,u:`updated`,bum:`beforeUnmount hook`,um:`unmounted hook`,a:`activated hook`,da:`deactivated hook`,ec:`errorCaptured hook`,rtc:`renderTracked hook`,rtg:`renderTriggered hook`,0:`setup function`,1:`render function`,2:`watcher getter`,3:`watcher callback`,4:`watcher cleanup function`,5:`native event handler`,6:`component event handler`,7:`vnode hook`,8:`directive hook`,9:`transition hook`,10:`app errorHandler`,11:`app warnHandler`,12:`ref function`,13:`async component loader`,14:`scheduler flush`,15:`component update`,16:`app unmount cleanup function`};function fr(e,t,n,r){try{return r?e(...r):e()}catch(e){mr(e,t,n)}}function pr(e,t,n,r){if(y(e)){let i=fr(e,t,n,r);return i&&C(i)&&i.catch(e=>{mr(e,t,n)}),i}if(m(e)){let i=[];for(let a=0;a>>1;t[i].order<=e?n=i+1:r=i}return n}function Er(e,t,n=!1){Dr(e,t===void 0?n?-2:1/0:n?t*2:t*2+1,gr,br,xr)&&(br++,kr())}function Dr(e,t,n,r,i){let a=e.flags;return a&1?!1:(e.flags=a|1,e.order=t,i===r||t>=n[r-1].order?n[r]=e:n.splice(Tr(t,n,i,r),0,e),!0)}var Or=()=>{try{Pr()}catch(e){throw yr=null,e}};function kr(){yr||=Cr.then(Or)}function P(e,t=1/0){if(!m(e))vr&&t===-1?vr.splice(Sr,0,e):Dr(e,t,_r,_r.length,0);else for(let n of e)Dr(n,t,_r,_r.length,0);kr()}function Ar(e,t){for(let t=xr;tBr.emit(e,...t)),Vr=[]):typeof window<`u`&&window.HTMLElement&&!(!((n=window.navigator)==null||(n=n.userAgent)==null)&&n.includes(`jsdom`))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(e=>{Wr(e,t)}),setTimeout(()=>{Br||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Hr=!0,Vr=[])},3e3)):(Hr=!0,Vr=[])}var Gr=Kr(`component:added`);function Kr(e){return t=>{Ur(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}var F=null,qr=null;function Jr(e){let t=F;return F=e,qr=e&&e.type.__scopeId||null,t}function Yr(e){qr=e}function Xr(){qr=null}var Zr=e=>Qr;function Qr(e,t=F,n){if(!t||e._n)return e;let r=(...n)=>{r._d&&Vc(-1);let i=Jr(t),a;try{a=e(...n)}finally{Jr(i),r._d&&Vc(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function $r(e,t){if(F===null)return e;let n=jl(F),i=e.dirs||=[];for(let e=0;e1)return n&&y(t)?t.call(r&&r.proxy):t}}function ni(){return!!(sl()||is)}var ri=Symbol.for(`v-scx`),ii=()=>ti(ri);function ai(e,t){return ui(e,null,t)}function oi(e,t){return ui(e,null,{flush:`post`})}function si(e,t){return ui(e,null,{flush:`sync`})}function ci(e,t,n){return ui(e,t,n)}var li=class extends Yn{constructor(e,t,n,r,i){super(t,n,r),this.flush=i;let a=()=>{this.dirty&&this.run()};n&&(this.flags|=128,a.flags|=2),e&&(a.i=e),this.job=a}notify(){if(!(this.flags&256)){let e=this.flush,t=this.job;e===`post`?R(t,void 0,t.i?t.i.suspense:null):e===`pre`?Er(t,t.i?t.i.uid:void 0,!0):t()}}};function ui(e,t,n=r){let{immediate:i,deep:o,flush:s=`pre`,once:c}=n,l=u({},n),d=t&&i||!t&&s!==`post`,f;if(ll){if(s===`sync`){let e=ii();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=a,e.resume=a,e.pause=a,e}}let p=U;l.call=(e,t,n)=>pr(e,p,t,n);let m=new li(p,e,t,l,s);t?m.run(!0):s===`post`?R(m.job,void 0,p&&p.suspense):m.run(!0);let h=m.stop.bind(m);return h.pause=m.pause.bind(m),h.resume=m.resume.bind(m),h.stop=h,ll&&(f?f.push(h):d&&h()),h}function di(e,t,n){let r=this.proxy,i=b(e)?e.includes(`.`)?fi(r,e):()=>r[e]:e.bind(r,r),a;y(t)?a=t:(a=t.handler,n=t);let o=W(this),s=ui(i,a.bind(r),n);return W(...o),s}function fi(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;ee.__isTeleport,hi=e=>e&&(e.disabled||e.disabled===``),gi=e=>e&&(e.defer||e.defer===``),_i=e=>typeof SVGElement<`u`&&e instanceof SVGElement,vi=e=>typeof MathMLElement==`function`&&e instanceof MathMLElement,yi=(e,t)=>{let n=e&&e.to;return b(n)?t?t(n):null:n},bi={name:`Teleport`,__isTeleport:!0,process(e,t,n,r,i,a,o,s,c,l){let{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:m,createText:h,createComment:g}}=l,_=hi(t.props),{shapeFlag:v,children:y,dynamicChildren:b}=t;if(e==null){let e=t.el=h(``),l=t.anchor=h(``);p(e,n,r),p(l,n,r);let d=(e,t)=>{v&16&&u(y,e,t,i,a,o,s,c)},f=()=>{let e=t.target=yi(t.props,m),n=Ti(e,t,h,p);e&&(o!==`svg`&&_i(e)?o=`svg`:o!==`mathml`&&vi(e)&&(o=`mathml`),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(e),_||(d(e,n),wi(t,!1)))};_&&(d(n,l),wi(t,!0)),gi(t.props)?(t.el.__isMounted=!1,R(()=>{f(),delete t.el.__isMounted},void 0,a)):f()}else{if(gi(t.props)&&e.el.__isMounted===!1){R(()=>{bi.process(e,t,n,r,i,a,o,s,c,l)},void 0,a);return}t.el=e.el,t.targetStart=e.targetStart;let u=t.anchor=e.anchor,p=t.target=e.target,h=t.targetAnchor=e.targetAnchor,g=hi(e.props),v=g?n:p,y=g?u:h;if(o===`svg`||_i(p)?o=`svg`:(o===`mathml`||vi(p))&&(o=`mathml`),b?(f(e.dynamicChildren,b,v,i,a,o,s),dc(e,t,!0)):c||d(e,t,v,y,i,a,o,s,!1),_)g?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):xi(t,n,u,l,i,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=yi(t.props,m);e&&xi(t,e,null,l,i,0)}else g&&xi(t,p,h,l,i,1);wi(t,_)}},remove(e,t,n,{um:r,o:{remove:i}},a){let{shapeFlag:o,children:s,anchor:c,targetStart:l,targetAnchor:u,target:d,props:f}=e;if(d&&(i(l),i(u)),a&&i(c),o&16){let e=a||!hi(f);for(let i=0;i{e.isMounted=!0}),Qa(()=>{e.isUnmounting=!0}),e}var ki=[Function,Array],Ai={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ki,onEnter:ki,onAfterEnter:ki,onEnterCancelled:ki,onBeforeLeave:ki,onLeave:ki,onAfterLeave:ki,onLeaveCancelled:ki,onBeforeAppear:ki,onAppear:ki,onAfterAppear:ki,onAppearCancelled:ki},ji=e=>{let t=_c(e.type)?e.block:e.subTree;return t.component?ji(t.component):t},Mi={name:`BaseTransition`,props:Ai,setup(e,{slots:t}){let n=cl(),r=Oi();return()=>{let i=t.default&&Vi(t.default(),!0);if(!i||!i.length)return;let a=Ni(i),o=M(e),{mode:s}=o;if(r.isLeaving)return Ri(a);let c=zi(a);if(!c)return Ri(a);let l=Ii(c,o,r,n,e=>l=e);c.type!==B&&Bi(c,l);let u=n.subTree&&zi(n.subTree);if(u&&u.type!==B&&!Gc(u,c)&&ji(n).type!==B){let e=Ii(u,o,r,n);if(Bi(u,e),s===`out-in`&&c.type!==B)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&4||n.update(),delete e.afterLeave,u=void 0},Ri(a);s===`in-out`&&c.type!==B?e.delayLeave=(e,t,n)=>{let i=Fi(r,u);i[String(u.key)]=u,e[Ei]=()=>{t(),e[Ei]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function Ni(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==B){t=n;break}}return t}var Pi=Mi;function Fi(e,t){let{leavingNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ii(e,t,n,r,i){let a=String(e.key),o=Fi(n,e);return Li({setLeavingNodeCache:()=>{o[a]=e},unsetLeavingNodeCache:()=>{o[a]===e&&delete o[a]},earlyRemove:()=>{let t=o[a];t&&Gc(e,t)&&t.el[Ei]&&t.el[Ei]()},cloneHooks:e=>{let a=Ii(e,t,n,r,i);return i&&i(a),a}},t,n,r)}function Li(e,t,n,r){let{setLeavingNodeCache:i,unsetLeavingNodeCache:a,earlyRemove:o,cloneHooks:s}=e,{appear:c,mode:l,persisted:u=!1,onBeforeEnter:d,onEnter:f,onAfterEnter:p,onEnterCancelled:h,onBeforeLeave:g,onLeave:_,onAfterLeave:v,onLeaveCancelled:y,onBeforeAppear:b,onAppear:x,onAfterAppear:S,onAppearCancelled:C}=t,w=(e,t)=>{e&&pr(e,r,9,t)},T=(e,t)=>{let n=t[1];w(e,t),m(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},E={mode:l,persisted:u,beforeEnter(e){let t=d;if(!n.isMounted)if(c)t=b||d;else return;e[Ei]&&e[Ei](!0),o(),w(t,[e])},enter(e){let t=f,r=p,i=h;if(!n.isMounted)if(c)t=x||f,r=S||p,i=C||h;else return;let a=!1;e[Di]=t=>{a||(a=!0,w(t?i:r,[e]),E.delayedLeave&&E.delayedLeave(),e[Di]=void 0)};let o=e[Di].bind(null,!1);t?T(t,[e,o]):o()},leave(e,t){if(e[Di]&&e[Di](!0),n.isUnmounting)return t();w(g,[e]);let r=!1;e[Ei]=n=>{r||(r=!0,t(),w(n?y:v,[e]),e[Ei]=void 0,a(e))},i(e);let o=e[Ei].bind(null,!1);_?T(_,[e,o]):o()},clone(e){return s(e)}};return E}function Ri(e){if(Fa(e))return e=Qc(e),e.children=null,e}function zi(e){if(!Fa(e))return mi(e.type)&&e.children?Ni(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&y(n.default))return n.default()}}function Bi(e,t){e.shapeFlag&6&&e.component?_c(e.type)?gc(e.component,e).setTransitionHooks(e.component,t):(e.transition=t,Bi(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Vi(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;en.value,set:e=>n.value=e})}return n}function Ji(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}var Yi=new WeakMap;function Xi(e,t,n,i,a=!1){if(m(e)){e.forEach((e,r)=>Xi(e,t&&(m(t)?t[r]:t),n,i,a));return}if(L(i)&&!a){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Xi(e,t,n,i.component.subTree);return}let o=i.shapeFlag&4?jl(i.component):i.el,s=a?null:o,{i:c,r:l}=e,u=t&&t.r,f=c.refs===r?c.refs={}:c.refs,p=c.setupState,h=Zi(p,f),g=(e,t)=>!(t&&Ji(f,t));if(u!=null&&u!==l){if(Qi(t),b(u))f[u]=null,h(u)&&(p[u]=null);else if(N(u)){let e=t;g(u,e.k)&&(u.value=null),e.k&&(f[e.k]=null)}}if(y(l))fr(l,c,12,[s,f]);else{let t=b(l),r=N(l);if(t||r){let i=()=>{if(e.f){let n=t?h(l)?p[l]:f[l]:g(l)||!e.k?l.value:f[e.k];if(a)m(n)&&d(n,o);else if(m(n))n.includes(o)||n.push(o);else if(t)f[l]=[o],h(l)&&(p[l]=f[l]);else{let t=[o];g(l,e.k)&&(l.value=t),e.k&&(f[e.k]=t)}}else t?(f[l]=s,h(l)&&(p[l]=s)):r&&(g(l,e.k)&&(l.value=s),e.k&&(f[e.k]=s))};if(s){let t=()=>{i(),Yi.delete(e)};Yi.set(e,t),R(t,-1,n)}else Qi(e),i()}}}function Zi(e,t){let n=M(e);return e===void 0||e===r?o:e=>Ji(t,e)?!1:p(n,e)}function Qi(e){let t=Yi.get(e);t&&(t.flags|=4,Yi.delete(e))}var $i=!1;function ea(e){$i=e}var ta=!1,na=!1,ra=()=>{na||=(console.error(`Hydration completed but contains mismatches.`),!0)},ia=e=>e.namespaceURI.includes(`svg`)&&e.tagName!==`foreignObject`,aa=e=>e.namespaceURI.includes(`MathML`),oa=e=>{if(e.nodeType===1){if(ia(e))return`svg`;if(aa(e))return`mathml`}},sa=e=>e.nodeType===8;function ca(e){let{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:a,parentNode:o,remove:c,insert:l,createComment:u}}=e,d=(e,t)=>{if($i){if(!t.hasChildNodes()){n(null,e,t),jr(),t._vnode=e;return}ta=!0,f(t.firstChild,e,null,null,null),ta=!1,jr(),t._vnode=e}},f=(n,r,s,c,u,d=!1)=>{d||=!!r.dynamicChildren;let y=sa(n)&&n.data===`[`,b=()=>g(n,r,s,c,u,y),{type:x,ref:S,shapeFlag:C,patchFlag:w}=r,T=n.nodeType;r.el=n,w===-2&&(d=!1,r.dynamicChildren=null);let E=null;switch(x){case Nc:T===3?(n.data!==r.children&&(ra(),n.data=r.children),E=a(n)):r.children===``?(l(r.el=i(``),o(n),n),E=n):E=b();break;case B:la(n)?(E=a(n),v(r.el=n.content.firstChild,n,s)):E=T!==8||y?b():a(n);break;case Pc:if(y&&(n=a(n),T=n.nodeType),T===1||T===3){E=n;let e=!r.children.length;for(let t=0;t{o||=!!t.dynamicChildren;let{type:l,props:u,patchFlag:d,shapeFlag:f,dirs:p,transition:h}=t,g=l===`input`||l===`option`;if(g||d!==-1){p&&I(t,null,n,`created`);let l=!1;if(la(e)){l=uc(null,h)&&n&&n.vnode.props&&n.vnode.props.appear;let r=e.content.firstChild;if(l){let e=r.getAttribute(`class`);e&&(r.$cls=e),h.beforeEnter(r)}v(r,e,n),t.el=e=r}if(f&16&&!(u&&(u.innerHTML||u.textContent))){let r=m(e.firstChild,t,e,n,i,a,o);for(;r;){ba(e,1)||ra();let t=r;r=r.nextSibling,c(t)}}else if(f&8){let n=t.children;n[0]===` +`&&(e.tagName===`PRE`||e.tagName===`TEXTAREA`)&&(n=n.slice(1));let{textContent:r}=e;r!==n&&r!==n.replace(/\r\n|\r/g,` +`)&&(ba(e,0)||ra(),e.textContent=t.children)}if(u){if(g||!o||d&48){let t=e.tagName.includes(`-`);for(let i in u)(g&&(i.endsWith(`value`)||i===`indeterminate`)||s(i)&&!ne(i)||i[0]===`.`||t&&!ne(i))&&r(e,i,null,u[i],void 0,n)}else if(u.onClick)r(e,`onClick`,null,u.onClick,void 0,n);else if(d&4&&tn(u.style))for(let e in u.style)u.style[e]}let _;(_=u&&u.onVnodeBeforeMount)&&ol(_,n,t),p&&I(t,null,n,`beforeMount`),((_=u&&u.onVnodeMounted)||p||l)&&Ac(()=>{_&&ol(_,n,t),l&&h.enter(e),p&&I(t,null,n,`mounted`)},void 0,i)}return e.nextSibling},m=(e,t,r,o,s,c,u)=>{u||=!!t.dynamicChildren;let d=t.children,p=d.length;for(let t=0;t{let{slotScopeIds:c}=t;c&&(i=i?i.concat(c):c);let d=o(e),f=m(a(e),t,d,n,r,i,s);return f&&sa(f)&&f.data===`]`?a(t.anchor=f):(ra(),l(t.anchor=u(`]`),d,f),f)},g=(e,t,r,i,s,l)=>{if(ba(e.parentElement,1)||ra(),t.el=null,l){let t=_(e);for(;;){let n=a(e);if(n&&n!==t)c(n);else break}}let u=a(e),d=o(e);return c(e),n(null,t,d,u,r,i,oa(d),s),r&&(r.vnode.el=t.el,xs(r,t.el)),u},_=(e,t=`[`,n=`]`)=>{let r=0;for(;e;)if(e=a(e),e&&sa(e)&&(e.data===t&&r++,e.data===n)){if(r===0)return a(e);r--}return e},v=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent};return[d,f]}var la=e=>e.nodeType===1&&e.tagName===`TEMPLATE`;function ua(e,t,n){let r,i;return ke(t)?(r=e.hasAttribute(t),i=Ae(n)):n==null?(r=e.hasAttribute(t),i=!1):(r=e.hasAttribute(t)?e.getAttribute(t):t===`value`&&e.tagName===`TEXTAREA`?e.value:!1,i=Ne(n)?String(n):!1),{actual:r,expected:i}}function da(e,t){return e instanceof SVGElement&&Me(t)||e instanceof HTMLElement&&(ke(t)||je(t))}function fa(e,t,n,r,i){if(n!=null&&!ba(e,n)){let a=e=>e===!1?`(not rendered)`:`${t}="${e}"`;return rr(`Hydration ${ya[n]} mismatch on`,e,`\n - rendered on server: ${a(r)}\n - expected on client: ${a(i)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`),!0}return!1}function pa(e){return new Set(e.trim().split(/\s+/))}function ma(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function ha(e){let t=new Map;for(let n of e.split(`;`)){let[e,r]=n.split(`:`);e=e.trim(),r&&=r.trim(),e&&r&&t.set(e,r)}return t}function ga(e,t){if(e.size!==t.size)return!1;for(let[n,r]of e)if(r!==t.get(n))return!1;return!0}var _a=`data-allow-mismatch`,va={TEXT:0,0:`TEXT`,CHILDREN:1,1:`CHILDREN`,CLASS:2,2:`CLASS`,STYLE:3,3:`STYLE`,ATTRIBUTE:4,4:`ATTRIBUTE`},ya={0:`text`,1:`children`,2:`class`,3:`style`,4:`attribute`};function ba(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(_a);)e=e.parentElement;let n=e&&e.getAttribute(_a);if(n==null)return!1;if(n===``)return!0;{let e=n.split(`,`);return t===0&&e.includes(`children`)?!0:e.includes(ya[t])}}var xa,Sa;function Ca(){if(!xa){let e=_e();xa=e.requestIdleCallback||(e=>setTimeout(e,1)),Sa=e.cancelIdleCallback||(e=>clearTimeout(e))}}var wa=(e=1e4)=>t=>{Ca();let n=xa(t,{timeout:e});return()=>Sa(n)};function Ta(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:o}=window;return(t>0&&t0&&r0&&n0&&i(t,n)=>{let r=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(Ta(e))return t(),r.disconnect(),!1;r.observe(e)}}),()=>r.disconnect()},Da=e=>t=>{if(e){let n=matchMedia(e);if(n.matches)t();else return n.addEventListener(`change`,t,{once:!0}),()=>n.removeEventListener(`change`,t)}},Oa=(e=[])=>(t,n)=>{b(e)&&(e=[e]);let r=!1,i=e=>{r||(r=!0,a(),t(),`$evt${e.type}`in e.target||e.target.dispatchEvent(new e.constructor(e.type,e)))},a=()=>{n(t=>{for(let n of e)t.removeEventListener(n,i)})};return n(t=>{for(let n of e)t.addEventListener(n,i,{once:!0})}),a};function ka(e,t){if(sa(e)&&e.data===`[`){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(sa(r))if(r.data===`]`){if(--n===0)break}else r.data===`[`&&n++;r=r.nextSibling}}else t(e)}var L=e=>!!e.type.__asyncLoader;function Aa(e){let{load:t,getResolvedComp:n,setPendingRequest:r,source:{loadingComponent:i,errorComponent:a,delay:o,hydrate:s,timeout:c,suspensible:l=!0}}=Ma(e);return Ui({name:`AsyncComponentWrapper`,__asyncLoader:t,__asyncHydrate(e,r,i){Pa(e,r,i,n,t,s)},get __asyncResolved(){return n()},setup(){let e=U;Gi(e);let s=n();if(s)return()=>ja(s,e);let u=t=>{r(null),mr(t,e,13,!a)};if(l&&e.suspense||ll)return t().then(t=>()=>ja(t,e)).catch(e=>(u(e),()=>a?H(a,{error:e}):null));let{loaded:d,error:f,delayed:p}=Na(o,c,u);return t().then(()=>{d.value=!0,e.parent&&e.parent.vnode&&Fa(e.parent.vnode)&&e.parent.update()}).catch(e=>{u(e),f.value=e}),()=>{if(s=n(),d.value&&s)return ja(s,e);if(f.value&&a)return H(a,{error:f.value});if(i&&!p.value)return ja(i,e)}}})}function ja(e,t){let{ref:n,props:r,children:i,ce:a}=t.vnode,o=H(e,r,i);return o.ref=n,o.ce=a,delete t.vnode.ce,o}function Ma(e){y(e)&&(e={loader:e});let{loader:t,onError:n}=e,r=null,i,a=0,o=()=>(a++,r=null,s()),s=()=>{let e;return r||(e=r=t().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),n)return new Promise((t,r)=>{n(e,()=>t(o()),()=>r(e),a+1)});throw e}).then(t=>e!==r&&r?r:(t&&(t.__esModule||t[Symbol.toStringTag]===`Module`)&&(t=t.default),i=t,t)))};return{load:s,source:e,getResolvedComp:()=>i,setPendingRequest:e=>r=e}}var Na=(e,t,n)=>{let r=ln(!1),i=ln(),a=ln(!!e);return e&&setTimeout(()=>{a.value=!1},e),t!=null&&setTimeout(()=>{if(!r.value&&!i.value){let e=Error(`Async component timed out after ${t}ms.`);n(e),i.value=e}},t),{loaded:r,error:i,delayed:a}};function Pa(e,t,n,r,i,a){let o=!1;(t.bu||=[]).push(()=>o=!0);let s=()=>{o||n()},c=a?()=>{let n=a(s,t=>ka(e,t));n&&(t.bum||=[]).push(n)}:s;r()?c():i().then(()=>!t.isUnmounted&&c())}var Fa=e=>e.type.__isKeepAlive,Ia={name:`KeepAlive`,__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=cl(),r=n.ctx;if(!r.renderer)return()=>{let e=t.default&&t.default();return e&&e.length===1?e[0]:e};let i=new Map,a=new Set,o=null,s=n.suspense,{renderer:c}=r,{um:l,o:{createElement:u}}=c,d=u(`div`);r.getStorageContainer=()=>d,r.getCachedComponent=e=>{let t=e.key==null?e.type:e.key;return i.get(t)},r.activate=(e,t,r,i,a)=>{Wa(e,t,r,c,n,s,i,a)},r.deactivate=e=>{Ga(e,d,c,n,s)};function f(e){Ha(e),l(e,n,s,!0)}function p(e){i.forEach((t,n)=>{let r=Pl(L(t)?t.type.__asyncResolved||{}:t.type);r&&!e(r)&&m(n)})}function m(e){let t=i.get(e);t&&(!o||!Gc(t,o))?f(t):o&&Ha(o),i.delete(e),a.delete(e)}ci(()=>[e.include,e.exclude],([e,t])=>{e&&p(t=>La(e,t)),t&&p(e=>!La(t,e))},{flush:`post`,deep:!0});let h=null,g=()=>{h!=null&&(bc(n.subTree.type)?R(()=>{i.set(h,Ua(n.subTree))},void 0,n.subTree.suspense):i.set(h,Ua(n.subTree)))};return Ya(g),Za(g),Qa(()=>{i.forEach(e=>{let{subTree:t,suspense:r}=n,i=Ua(t);if(e.type===i.type&&e.key===i.key){Ha(i);let e=i.component.da;e&&R(e,void 0,r);return}f(e)})}),()=>{if(h=null,!t.default)return o=null;let n=t.default(),r=n[0];if(n.length>1)return o=null,n;if(!V(r)||!(r.shapeFlag&4)&&!(r.shapeFlag&128))return o=null,r;let s=Ua(r);if(s.type===B)return o=null,s;let c=s.type,l=Pl(L(s)?s.type.__asyncResolved||{}:c),{include:u,exclude:d,max:f}=e;if(u&&(!l||!La(u,l))||d&&l&&La(d,l))return s.shapeFlag&=-257,o=s,r;let p=s.key==null?c:s.key,g=i.get(p);return s.el&&(s=Qc(s),r.shapeFlag&128&&(r.ssContent=s)),h=p,g?(s.el=g.el,s.component=g.component,s.transition&&Bi(s,s.transition),s.shapeFlag|=512,a.delete(p),a.add(p)):(a.add(p),f&&a.size>parseInt(f,10)&&m(a.values().next().value)),s.shapeFlag|=256,o=s,bc(r.type)?r:s}}};function La(e,t){return m(e)?e.some(e=>La(e,t)):b(e)?e.split(`,`).includes(t):v(e)?(e.lastIndex=0,e.test(t)):!1}function Ra(e,t){Ba(e,`a`,t)}function za(e,t){Ba(e,`da`,t)}function Ba(e,t,n=sl()){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Ka(t,r,n),n){let e=n.parent;for(;e&&e.parent;){let i=e.parent;Fa(i.vapor?i:i.vnode)&&Va(r,t,n,e),e=e.parent}}}function Va(e,t,n,r){let i=Ka(t,e,r,!0);$a(()=>{d(r[t],i)},n)}function Ha(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Ua(e){return e.shapeFlag&128?e.ssContent:e}function Wa(e,t,n,{p:r,m:i},a,o,s,c){let l=e.component;i(e,t,n,0,a,o),r(l.vnode,e,t,n,l,o,s,e.slotScopeIds,c),R(()=>{l.isDeactivated=!1,l.a&&fe(l.a);let t=e.props&&e.props.onVnodeMounted;t&&ol(t,l.parent,e)},void 0,o)}function Ga(e,t,{m:n},r,i){let a=e.component;pc(a.m),pc(a.a),n(e,t,null,1,r,i),R(()=>{a.da&&fe(a.da);let t=e.props&&e.props.onVnodeUnmounted;t&&ol(t,a.parent,e),a.isDeactivated=!0},void 0,i)}function Ka(e,t,n=U,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{let i=A(),a=W(n);try{return pr(t,n,e,r)}finally{W(...a),A(i)}};return r?i.unshift(a):i.push(a),a}}var qa=e=>(t,n=U)=>{(!ll||e===`sp`)&&Ka(e,(...e)=>t(...e),n)},Ja=qa(`bm`),Ya=qa(`m`),Xa=qa(`bu`),Za=qa(`u`),Qa=qa(`bum`),$a=qa(`um`),eo=qa(`sp`),to=qa(`rtg`),no=qa(`rtc`);function ro(e,t=U){Ka(`ec`,e,t)}var io=`components`,ao=`directives`;function oo(e,t){return uo(io,e,!0,t)||e}var so=Symbol.for(`v-ndc`);function co(e){return b(e)?uo(io,e,!1)||e:e||so}function lo(e){return uo(ao,e)}function uo(e,t,n=!0,r=!1){let i=F||U;if(i){let n=i.type;if(e===io){let e=Pl(n,!1);if(e&&(e===t||e===D(t)||e===le(D(t))))return n}let a=fo(i[e]||n[e],t)||fo(i.appContext[e],t);return!a&&r?n:a}}function fo(e,t){return e&&(e[t]||e[D(t)]||e[le(D(t))])}function po(e,t,n,r){let i,a=n&&n[r],o=m(e);if(o||b(e)){let n=o&&tn(e),r=!1,s=!1;n&&(r=!rn(e),s=nn(e),e=ht(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r{let t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function ho(e,t,n={},r,i){let a=e[t],o=a&&(a.__vs||(a.__vapor?a:null));if(o){let e=(Rc(),Wc(Fc,n));return e.vs={slot:o,fallback:r},e}if(F&&(F.ce||F.parent&&L(F.parent)&&F.parent.ce)){let e=Object.keys(n).length>0;return t!==`default`&&(n.name=t),Rc(),Wc(z,null,[H(`slot`,n,r&&r())],e?-2:64)}a&&a._c&&(a._d=!1),Rc();let s=a&&go(a(n));_o(s,r);let c=n.key||s&&s.key,l=Wc(z,{key:(c&&!x(c)?c:`_${t}`)+(!s&&r?`_fb`:``)},s||(r?r():[]),s&&e._===1?64:-2);return!i&&l.scopeId&&(l.slotScopeIds=[l.scopeId+`-s`]),a&&a._c&&(a._d=!0),l}function go(e){return e.some(e=>V(e)?!(e.type===B||e.type===z&&!go(e.children)):!0)?e:null}function _o(e,t){let n;e&&e.length===1&&V(e[0])&&(n=e[0].vs)&&!n.fallback&&t&&(n.fallback=t)}function vo(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:ue(r)]=e[r];return n}var yo=e=>!e||e.vapor?null:yl(e)?jl(e):yo(e.parent),bo,xo=()=>(bo||=u(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>yo(e.parent),$root:e=>yo(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Go(e),$forceUpdate:e=>e.f||=()=>{Er(e.update)},$nextTick:e=>e.n||=wr.bind(e.proxy),$watch:e=>di.bind(e)}),bo),So=(e,t)=>e!==r&&!e.__isScriptSetup&&p(e,t),Co={get({_:e},t){if(t===`__v_skip`)return!0;let{ctx:n,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(t[0]!==`$`){let e=s[t];if(e!==void 0)switch(e){case 1:return i[t];case 2:return a[t];case 4:return n[t];case 3:return o[t]}else if(So(i,t))return s[t]=1,i[t];else if(a!==r&&p(a,t))return s[t]=2,a[t];else if(p(o,t))return s[t]=3,o[t];else if(n!==r&&p(n,t))return s[t]=4,n[t];else Bo&&(s[t]=0)}let u=xo()[t],d,f;if(u)return t===`$attrs`&&j(e.attrs,`get`,``),u(e);if((d=c.__cssModules)&&(d=d[t]))return d;if(n!==r&&p(n,t))return s[t]=4,n[t];if(f=l.config.globalProperties,p(f,t))return f[t]},set({_:e},t,n){let{data:i,setupState:a,ctx:o}=e;return So(a,t)?(a[t]=n,!0):i!==r&&p(i,t)?(i[t]=n,!0):p(e.props,t)||t[0]===`$`&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(n[c]||e!==r&&c[0]!==`$`&&p(e,c)||So(t,c)||p(o,c)||p(i,c)||p(xo(),c)||p(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?p(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}},wo=u({},Co,{get(e,t){if(t!==Symbol.unscopables)return Co.get(e,t,e)},has(e,t){return t[0]!==`_`&&!ye(t)}});function To(){return null}function Eo(){return null}function Do(e){}function Oo(e){}function ko(){return null}function Ao(){}function jo(e,t){return null}function Mo(){return Po(`useSlots`).slots}function No(){return Po(`useAttrs`).attrs}function Po(e){let t=sl();if(t.vapor)return t;{let e=t;return e.setupContext||=kl(e)}}function Fo(e){return m(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function Io(e,t){let n=Fo(e);for(let e in t){if(e.startsWith(`__skip`))continue;let r=n[e];r?m(r)||y(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:r===null&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n}function Lo(e,t){return!e||!t?e||t:m(e)&&m(t)?e.concat(t):u({},Fo(e),Fo(t))}function Ro(e,t){let n={};for(let r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function zo(e){let t=sl(),n=e();return W(null,void 0),C(n)&&(n=n.catch(e=>{throw W(t),e})),[n,()=>W(t)]}var Bo=!0;function Vo(e){let t=Go(e),n=e.proxy,r=e.ctx;Bo=!1,t.beforeCreate&&Uo(t.beforeCreate,e,`bc`);let{data:i,computed:o,methods:s,watch:c,provide:l,inject:u,created:d,beforeMount:f,mounted:p,beforeUpdate:h,updated:g,activated:_,deactivated:v,beforeDestroy:b,beforeUnmount:x,destroyed:C,unmounted:w,render:T,renderTracked:E,renderTriggered:ee,errorCaptured:te,serverPrefetch:ne,expose:re,inheritAttrs:ie,components:ae,directives:oe,filters:D}=t;if(u&&Ho(u,r,null),s)for(let e in s){let t=s[e];y(t)&&(r[e]=t.bind(n))}if(i){let t=i.call(n,n);S(t)&&(e.data=Xt(t))}if(Bo=!0,o)for(let e in o){let t=o[e],i=Ll({get:y(t)?t.bind(n,n):y(t.get)?t.get.bind(n,n):a,set:!y(t)&&y(t.set)?t.set.bind(n):a});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(c)for(let e in c)Wo(c[e],r,n,e);if(l){let e=y(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{ei(t,e[t])})}d&&Uo(d,e,`c`);function se(e,t){m(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(se(Ja,f),se(Ya,p),se(Xa,h),se(Za,g),se(Ra,_),se(za,v),se(ro,te),se(no,E),se(to,ee),se(Qa,x),se($a,w),se(eo,ne),m(re))if(re.length){let t=e.exposed||={};re.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};T&&e.render===a&&(e.render=T),ie!=null&&(e.inheritAttrs=ie),ae&&(e.components=ae),oe&&(e.directives=oe),ne&&Gi(e)}function Ho(e,t,n=a){m(e)&&(e=Xo(e));for(let n in e){let r=e[n],i;i=S(r)?`default`in r?ti(r.from||n,r.default,!0):ti(r.from||n):ti(r),N(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function Uo(e,t,n){pr(m(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Wo(e,t,n,r){let i=r.includes(`.`)?fi(n,r):()=>n[r];if(b(e)){let n=t[e];y(n)&&ci(i,n)}else if(y(e))ci(i,e.bind(n));else if(S(e))if(m(e))e.forEach(e=>Wo(e,t,n,r));else{let r=y(e.handler)?e.handler.bind(n):t[e.handler];y(r)&&ci(i,r,e)}}function Go(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Ko(c,e,o,!0)),Ko(c,t,o)),S(t)&&a.set(t,c),c}function Ko(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&Ko(e,a,n,!0),i&&i.forEach(t=>Ko(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=qo[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var qo={data:Jo,props:$o,emits:$o,methods:Qo,computed:Qo,beforeCreate:Zo,created:Zo,beforeMount:Zo,mounted:Zo,beforeUpdate:Zo,updated:Zo,beforeDestroy:Zo,beforeUnmount:Zo,destroyed:Zo,unmounted:Zo,activated:Zo,deactivated:Zo,errorCaptured:Zo,serverPrefetch:Zo,components:Qo,directives:Qo,watch:es,provide:Jo,inject:Yo};function Jo(e,t){return t?e?function(){return u(y(e)?e.call(this,this):e,y(t)?t.call(this,this):t)}:t:e}function Yo(e,t){return Qo(Xo(e),Xo(t))}function Xo(e){if(m(e)){let t={};for(let n=0;n{let l,u=r,d;return si(()=>{let t=e[a];O(l,t)&&(l=t,c())}),{get(){return s(),n.get?n.get(l):l},set(e){let s=n.set?n.set(e):e;if(!O(s,l)&&!(u!==r&&O(e,u)))return;let f,p=!1,m=!1;if(i.rawKeys)f=i.rawKeys();else{let e=i.vnode.props;f=e&&Object.keys(e)}if(f)for(let e of f)e===t||e===a||e===o?p=!0:(e===`onUpdate:${t}`||e===`onUpdate:${a}`||e===`onUpdate:${o}`)&&(m=!0);(!p||!m)&&(l=e,c()),i.emit(`update:${t}`,s),O(e,s)&&O(e,u)&&!O(s,d)&&c(),u=e,d=s}}});return c[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?s||r:c,done:!1}:{done:!0}}}},c}var os=(e,t,n)=>n(e,de(t))||n(e,`${D(t)}Modifiers`)||n(e,`${ce(t)}Modifiers`);function ss(e,t,...n){return cs(e,e.vnode.props||r,ls,t,...n)}function cs(e,t,n,r,...i){if(e.isUnmounted)return;let a=i,o=r.startsWith(`update:`),s=o&&os(t,r.slice(7),n);s&&(s.trim&&(a=i.map(e=>b(e)?e.trim():e)),s.number&&(a=i.map(me)));let c,l=n(t,c=ue(r))||n(t,c=ue(D(r)));!l&&o&&(l=n(t,c=ue(ce(r)))),l&&pr(l,e,6,a);let u=n(t,c+`Once`);if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,pr(u,e,6,a)}}function ls(e,t){return e[t]}var us=new WeakMap;function ds(e,t,n=!1){let r=n?us:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},s=!1;if(!y(e)){let r=e=>{let n=ds(e,t,!0);n&&(s=!0,u(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!s?(S(e)&&r.set(e,null),null):(m(a)?a.forEach(e=>o[e]=null):u(o,a),S(e)&&r.set(e,o),o)}function fs(e,t){return!e||!s(t)?!1:(t=t.slice(2).replace(/Once$/,``),p(e,t[0].toLowerCase()+t.slice(1))||p(e,ce(t))||p(e,t))}function ps(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:o,attrs:s,emit:c,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=Jr(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=nl(u.call(t,e,d,f,m,p,h)),y=s}else{let e=t;v=nl(e.length>1?e(f,{attrs:s,slots:o,emit:c}):e(f,null)),y=t.props?s:gs(s)}}catch(t){Ic.length=0,mr(t,e,1),v=H(B)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(l)&&(y=_s(y,a)),b=Qc(b,y,!1,!0))}return n.dirs&&(b=Qc(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&Bi(b,n.transition),v=b,Jr(_),v}function ms(e){let t=Object.keys(e),n=[],r=[];for(let e=0,i=t.length;e{let t;for(let n in e)(n===`class`||n===`style`||s(n))&&((t||={})[n]=e[n]);return t},_s=(e,t)=>{let n={};for(let r in e)(!l(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function vs(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?ys(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(Ss),ws=e=>Object.getPrototypeOf(e)===Ss;function Ts(e,t,n,r=!1){let i=e.props={},a=Cs();e.propsDefaults=Object.create(null),Ds(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);n?e.props=r?i:Zt(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function Es(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=M(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{l=!0;let[n,r]=js(e,t,!0);u(s,n),r&&c.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!o&&!l)return S(e)&&r.set(e,i),i;Ms(o,s,c);let d=[s,c];return S(e)&&r.set(e,d),d}function Ms(e,t,n){if(m(e))for(let n=0;nD(e));for(let e in n){let i=n[e];i!=null&&Is(e,t[e],i,t,!r.includes(e))}}function Is(e,t,n,r,i){let{type:a,required:o,validator:s,skipCheck:c}=n;if(o&&i){rr(`Missing required prop: "`+e+`"`);return}if(!(t==null&&!o)){if(a!=null&&a!==!0&&!c){let n=!1,r=m(a)?a:[a],i=[];for(let e=0;ee.toLowerCase()===t)}function Hs(...e){return e.some(e=>e.toLowerCase()===`boolean`)}var Us=e=>e===`_`||e===`_ctx`||e===`$stable`,Ws=e=>m(e)?e.map(nl):[nl(e)],Gs=(e,t,n)=>{if(t._n)return t;let r=Qr((...e)=>Ws(t(...e)),n);return r._c=!1,r},Ks=(e,t,n)=>{let r=e._ctx;for(let n in e){if(Us(n))continue;let i=e[n];if(y(i))t[n]=Gs(n,i,r);else if(i!=null){let e=Ws(i);t[n]=()=>e}}},qs=(e,t)=>{let n=Ws(t);e.slots.default=()=>n},Js=(e,t,n)=>{for(let r in t)(n||!Us(r))&&(e[r]=t[r])},Ys=(e,t,n)=>{let r=e.slots=Cs();if(e.vnode.shapeFlag&32){let i=t._;i?(Js(r,t,n),n&&pe(r,`_`,i,!0)):Ks(t,r,e)}else t&&qs(e,t)},Xs=(e,t,n)=>{let{vnode:i,slots:a}=e,o=!0,s=r;if(i.shapeFlag&32){let r=t._;r?n&&r===1?o=!1:Js(a,t,n):(o=!t.$stable,Ks(t,a,e)),s=t}else t&&(qs(e,t),s={default:1});if(o)for(let e in a)!Us(e)&&s[e]==null&&delete a[e]},Zs,Qs;function $s(e,t){e.appContext.config.performance&&tc()&&Qs.mark(`vue-${t}-${e.uid}`)}function ec(e,t){if(e.appContext.config.performance&&tc()){let n=`vue-${t}-${e.uid}`,r=n+`:end`,i=`<${Fl(e,e.type)}> ${t}`;Qs.mark(r),Qs.measure(i,n,r),Qs.clearMeasures(i),Qs.clearMarks(n),Qs.clearMarks(r)}}function tc(){return Zs===void 0&&(typeof window<`u`&&window.performance?(Zs=!0,Qs=window.performance):Zs=!1),Zs}var nc=!1;function rc(){nc||=!0}var ic={ENTER:0,0:`ENTER`,LEAVE:1,1:`LEAVE`,REORDER:2,2:`REORDER`},R=Ac;function ac(e){return sc(e)}function oc(e){return sc(e,ca)}function sc(e,t){rc();let n=_e();n.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=a,insertStaticContent:_}=e,v=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Gc(e,t)&&(r=xe(e),he(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case Nc:y(e,t,n,r);break;case B:b(e,t,n,r);break;case Pc:e??x(t,n,r,o);break;case z:ae(e,t,n,r,i,a,o,s,c);break;case Fc:gc(i,t).slot(e,t,n,r,i);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?oe(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,Ce)}u!=null&&i?Xi(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&Xi(e.ref,null,a,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)T(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),te(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},T=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&ee(e.children,d,null,r,i,cc(e,a),s,u),_&&I(e,null,r,`created`),E(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!ne(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&ol(f,r,e)}_&&I(e,null,r,`beforeMount`),g?mc(d,g,()=>o(d,t,n),i):o(d,t,n),((f=m&&m.onVnodeMounted)||_)&&R(()=>{f&&ol(f,r,e),_&&I(e,null,r,`mounted`)},void 0,i)},E=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t{for(let l=c;l{let l=t.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=t;u|=e.patchFlag&16;let m=e.props||r,h=t.props||r,g;if(n&&lc(n,!1),(g=h.onVnodeBeforeUpdate)&&ol(g,n,t,e),f&&I(t,e,n,`beforeUpdate`),n&&lc(n,!0),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?re(e.dynamicChildren,d,l,n,i,cc(t,a),o):s||de(e,t,l,null,n,i,cc(t,a),o,!1),u>0){if(u&16)ie(l,m,h,n,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=t.dynamicProps;for(let t=0;t{g&&ol(g,n,t,e),f&&I(t,e,n,`updated`)},void 0,i)},re=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(t!==n){if(t!==r)for(let r in t)!ne(r)&&!(r in n)&&c(e,r,t[r],null,a,i);for(let r in n){if(ne(r))continue;let o=n[r],s=t[r];o!==s&&r!==`value`&&c(e,r,s,o,a,i)}`value`in n&&c(e,`value`,t.value,n.value,a)}},ae=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),ee(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(re(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&dc(e,t,!0)):de(e,t,n,f,i,a,s,c,l)},oe=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,t.type.__vapor?e==null?t.shapeFlag&512?gc(i,t).activate(t,n,r,i):(gc(i,t).mount(t,n,r,i,a,()=>{t.dirs&&(I(t,null,i,`created`),I(t,null,i,`beforeMount`))}),t.dirs&&R(()=>I(t,null,i,`mounted`),void 0,a)):(gc(i,t).update(e,t,vs(e,t,c),()=>{t.dirs&&I(t,e,i,`beforeUpdate`)}),t.dirs&&R(()=>I(t,e,i,`updated`),void 0,a)):e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):D(t,n,r,i,a,o,c):se(e,t,c)},D=(e,t,n,r,i,a,o)=>{let c=e.component=_l(e,r,i);if(Fa(e)&&(c.ctx.renderer=Ce),bl(c,!1,o),c.asyncDep){if(i){let e=c.vnode.el;i.registerDep(c,t=>{let{vnode:n}=c;Sl(c,t,!1),e&&(n.el=e);let r=!e&&c.subTree.el;le(c,n,m(e||c.subTree.el),e?null:xe(c.subTree),i,a,o),r&&(n.placeholder=null,s(r)),xs(c,n.el)})}if(!e.el){let r=c.subTree=H(B);b(null,r,t,n),e.placeholder=r.el}}else le(c,e,t,n,i,a,o)},se=(e,t,n)=>{let r=t.component=e.component;if(vs(e,t,n))if(r.asyncDep&&!r.asyncResolved){ue(r,t,n);return}else r.next=t,r.effect.run();else t.el=e.el,r.vnode=t};class ce extends En{constructor(e,t,n,r,i,a,o){let s=zn(e.scope);super(),this.instance=e,this.initialVNode=t,this.container=n,this.anchor=r,this.parentSuspense=i,this.namespace=a,this.optimized=o,zn(s),this.job=e.job=()=>{this.dirty&&this.run()},this.job.i=e}notify(){if(!(this.flags&256)){let e=this.job;Er(e,e.i.uid)}}fn(){let{instance:e,initialVNode:t,container:n,anchor:r,parentSuspense:i,namespace:a,optimized:o}=this;if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=fc(e);if(n){t&&(t.el=c.el,ue(e,t,o)),n.asyncDep.then(()=>{R(()=>{e.isUnmounted||e.update()},void 0,i)});return}}let l=t,u;lc(e,!1),t?(t.el=c.el,ue(e,t,o)):t=c,n&&fe(n),(u=t.props&&t.props.onVnodeBeforeUpdate)&&ol(u,s,t,c),lc(e,!0);let d=ps(e),f=e.subTree;e.subTree=d,v(f,d,m(f.el),xe(f),e,i,a),t.el=d.el,l===null&&xs(e,d.el),r&&R(r,void 0,i),(u=t.props&&t.props.onVnodeUpdated)&&R(()=>ol(u,s,t,c),void 0,i)}else{let o,{el:s,props:c}=t,{bm:l,parent:u,root:d,type:f}=e,p=L(t);if(lc(e,!1),l&&fe(l),!p&&(o=c&&c.onVnodeBeforeMount)&&ol(o,u,t),lc(e,!0),s&&Te){let t=()=>{e.subTree=ps(e),Te(s,e.subTree,e,i,null)};p&&f.__asyncHydrate?f.__asyncHydrate(s,e,t):t()}else{d.ce&&d.ce._hasShadowRoot()&&d.ce._injectChildStyle(f);let o=e.subTree=ps(e);v(null,o,n,r,e,i,a),t.el=o.el}if(e.m&&R(e.m,void 0,i),!p&&(o=c&&c.onVnodeMounted)){let e=t;R(()=>ol(o,u,e),void 0,i)}(t.shapeFlag&256||u&&u.vnode&&L(u.vnode)&&u.vnode.shapeFlag&256)&&e.a&&R(e.a,void 0,i),e.isMounted=!0,this.initialVNode=this.container=this.anchor=null}}}let le=(e,t,n,r,i,a,o)=>{let s=e.effect=new ce(e,t,n,r,i,a,o);e.update=s.run.bind(s),lc(e,!0),s.run()},ue=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,Es(e,t.props,r,n),Xs(e,t.children,n);let i=A();Ar(e),A(i)},de=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){pe(l,d,n,r,i,a,o,s,c);return}else if(f&256){O(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&be(l,i,a),d!==l&&p(n,d)):u&16?m&16?pe(l,d,n,r,i,a,o,s,c):be(l,i,a,!0):(u&8&&p(n,``),m&16&&ee(d,n,r,i,a,o,s,c))},O=(e,t,n,r,a,o,s,c,l)=>{e||=i,t||=i;let u=e.length,d=t.length,f=Math.min(u,d),p;for(p=0;pd?be(e,a,o,!0,!1,f):ee(t,n,r,a,o,s,c,l,f)},pe=(e,t,n,r,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let r=e[u],i=t[u]=l?rl(t[u]):nl(t[u]);if(Gc(r,i))v(r,i,n,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let r=e[f],i=t[p]=l?rl(t[p]):nl(t[p]);if(Gc(r,i))v(r,i,n,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,i=ep)for(;u<=f;)he(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?rl(t[u]):nl(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,S=0,C=Array(b);for(u=0;u=b){he(r,a,o,!0);continue}let i;if(r.key!=null)i=g.get(r.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&Gc(r,t[_])){i=_;break}i===void 0?he(r,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(r,t[i],n,null,a,o,s,c,l),y++)}let w=x?He(C):i;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,i=t[e],f=t[e+1],p=e+1{let{el:c,type:l,transition:u,children:d,shapeFlag:f}=e;if(_c(l)||l===Fc){gc(i,e).move(e,t,n,r);return}if(f&6){me(e.component.subTree,t,n,r,i);return}if(f&128){e.suspense.move(t,n,r);return}if(f&64){l.move(e,t,n,Ce,i);return}if(l===z){o(c,t,n);for(let e=0;eo(c,t,n),a,!0);else{let{leave:r,delayLeave:i,afterLeave:a}=u,l=()=>{e.ctx.isUnmounted?s(c):o(c,t,n)},d=()=>{c._isLeaving&&c[Ei](!0),r(c,()=>{l(),a&&a()})};i?i(c,l,d):d()}else o(c,t,n)},he=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p}=e;if(d===-2&&(i=!1),s!=null){let t=A();Xi(s,null,n,e,!0),A(t)}if(p!=null&&(t.renderCache[p]=void 0),u&256){_c(e.type)?gc(t,e).deactivate(e,t.ctx.getStorageContainer()):t.ctx.deactivate(e);return}let m=u&1&&f,h=!L(e),g;if(h&&(g=o&&o.onVnodeBeforeUnmount)&&ol(g,t,e),u&6)if(_c(a)){f&&I(e,null,t,`beforeUnmount`),gc(t,e).unmount(e,r),f&&R(()=>I(e,null,t,`unmounted`),void 0,n);return}else ye(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}if(m&&I(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,Ce,r):l&&!l.hasOnce&&(a!==z||d>0&&d&64)?be(l,t,n,!1,!0):(a===z&&d&384||!i&&u&16)&&be(c,t,n),a===Fc){gc(t,e).unmount(e,r);return}r&&ge(e)}(h&&(g=o&&o.onVnodeUnmounted)||m)&&R(()=>{g&&ol(g,t,e),m&&I(e,null,t,`unmounted`)},void 0,n)},ge=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===z){ve(n,r);return}if(t===Pc){C(e);return}i?hc(n,i,()=>s(n),!!(e.shapeFlag&1)):s(n)},ve=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},ye=(e,t,n)=>{let{bum:r,scope:i,effect:a,subTree:o,um:s,m:c,a:l}=e;pc(c),pc(l),r&&fe(r),i.stop(),a&&(a.stop(),he(o,e,t,n)),s&&R(s,void 0,t),R(()=>e.isUnmounted=!0,void 0,t)},be=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return _c(e.type)?h(e.anchor):xe(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[pi];return n?h(n):t},Se=(e,t,n)=>{let r;e==null?t._vnode&&(he(t._vnode,null,null,!0),r=t._vnode.component):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,Nr(r)},Ce={p:v,um:he,m:me,r:ge,mt:D,umt:ye,mc:ee,pc:de,pbc:re,n:xe,o:e},we,Te;return t&&([we,Te]=t(Ce)),{render:Se,hydrate:we,hydrateNode:Te,internals:Ce,createApp:rs((e,t,n,r)=>{let i=e._ceVNode||H(e._component,e._props);return i.appContext=e._context,r===!0?r=`svg`:r===!1&&(r=void 0),n&&we?we(i,t):Se(i,t,r),i.component},e=>{Se(null,e._container)},jl,Se)}}function cc({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function lc({effect:e,job:t,vapor:n},r){n||(r?(e.flags|=128,t.flags|=2):(e.flags&=-129,t.flags&=-3))}function uc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function dc(e,t,n=!1){let r=e.children,i=t.children;if(m(r)&&m(i))for(let e=0;et.enter(e),void 0,r)):n()}function hc(e,t,n,r=!0,i=!1){let a=()=>{n(),t&&!t.persisted&&t.afterLeave&&t.afterLeave()};if(i||r&&t&&!t.persisted){let{leave:n,delayLeave:r}=t,o=()=>{e._isLeaving&&i&&e[Ei](!0),n(e,a)};r?r(e,a,o):o()}else a()}function gc(e,t){let n=e?e.appContext:t.appContext;return n&&n.vapor}function _c(e){return e.__vapor}function vc(e,t){let n=[],r=t,i=e;for(;r;){let e=r.subTree;if(!e)break;if(i===e||bc(e.type)&&(e.ssContent===i||e.ssFallback===i)){let e=r.vnode;e.scopeId&&n.push(e.scopeId),e.slotScopeIds&&n.push(...e.slotScopeIds),i=e,r=r.parent}else break}return n}function yc(e){if(e.placeholder)return e.placeholder;let t=e.component;return t?yc(t.subTree):null}var bc=e=>e.__isSuspense,xc=0,Sc={name:`Suspense`,__isSuspense:!0,process(e,t,n,r,i,a,o,s,c,l){if(e==null)wc(t,n,r,i,a,o,s,c,l);else{if(a&&a.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Tc(e,t,n,r,i,o,s,c,l)}},hydrate:Dc,normalize:Oc};function Cc(e,t){let n=e.props&&e.props[t];y(n)&&n()}function wc(e,t,n,r,i,a,o,s,c){let{p:l,o:{createElement:u}}=c,d=u(`div`),f=e.suspense=Ec(e,i,r,t,d,n,a,o,s,c);l(null,f.pendingBranch=e.ssContent,d,null,r,f,a,o),f.deps>0?(Cc(e,`onPending`),Cc(e,`onFallback`),l(null,e.ssFallback,t,n,r,null,a,o),jc(f,e.ssFallback)):f.resolve(!1,!0)}function Tc(e,t,n,r,i,a,o,s,{p:c,um:l,o:{createElement:u}}){let d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;let f=t.ssContent,p=t.ssFallback,{activeBranch:m,pendingBranch:h,isInFallback:g,isHydrating:_}=d;if(h)d.pendingBranch=f,Gc(h,f)?(c(h,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():g&&(_||(c(m,p,n,r,i,null,a,o,s),jc(d,p)))):(d.pendingId=xc++,_?(d.isHydrating=!1,d.activeBranch=h):l(h,i,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u(`div`),g?(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():(c(m,p,n,r,i,null,a,o,s),jc(d,p))):m&&Gc(m,f)?(c(m,f,n,r,i,d,a,o,s),d.resolve(!0)):(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0&&d.resolve()));else if(m&&Gc(m,f))c(m,f,n,r,i,d,a,o,s),jc(d,f);else if(Cc(t,`onPending`),d.pendingBranch=f,f.shapeFlag&512?d.pendingId=f.component.suspenseId:d.pendingId=xc++,c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0)d.resolve();else{let{timeout:e,pendingId:t}=d;e>0?setTimeout(()=>{d.pendingId===t&&d.fallback(p)},e):e===0&&d.fallback(p)}}function Ec(e,t,n,r,i,a,o,s,c,l,u=!1){let{p:d,m:f,um:p,n:m,o:{parentNode:h}}=l,g,_=Mc(e);_&&t&&t.pendingBranch&&(g=t.pendingId,t.deps++);let v=e.props?he(e.props.timeout):void 0,y=a,b={vnode:e,parent:t,parentComponent:n,namespace:o,container:r,hiddenContainer:i,deps:0,pendingId:xc++,timeout:typeof v==`number`?v:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:r,activeBranch:i,pendingBranch:o,pendingId:s,effects:c,parentComponent:l,container:u,isInFallback:d}=b,v=!1;b.isHydrating?b.isHydrating=!1:e||(v=i&&o.transition&&o.transition.mode===`out-in`,v&&(i.transition.afterLeave=()=>{s===b.pendingId&&(f(o,u,a===y?m(i):a,0,l),P(c),d&&r.ssFallback&&(r.ssFallback.el=null))}),i&&(h(i.el)===u&&(a=m(i)),p(i,l,b,!0),!v&&d&&r.ssFallback&&R(()=>r.ssFallback.el=null,void 0,b)),v||f(o,u,a,0,l)),jc(b,o),b.pendingBranch=null,b.isInFallback=!1;let x=b.parent,S=!1;for(;x;){if(x.pendingBranch){x.effects.push(...c),S=!0;break}x=x.parent}!S&&!v&&P(c),b.effects=[],_&&t&&t.pendingBranch&&g===t.pendingId&&(t.deps--,t.deps===0&&!n&&t.resolve()),Cc(r,`onResolve`)},fallback(e){if(!b.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:r,container:i,namespace:a}=b;Cc(t,`onFallback`);let o=m(n),l=()=>{b.isInFallback&&(d(null,e,i,o,r,null,a,s,c),jc(b,e))},u=e.transition&&e.transition.mode===`out-in`;u&&(n.transition.afterLeave=l),b.isInFallback=!0,p(n,r,null,!0),u||l()},move(e,t,r){b.activeBranch&&f(b.activeBranch,e,t,r,n),b.container=e},next(){return b.activeBranch&&m(b.activeBranch)},registerDep(e,t){let n=!!b.pendingBranch;n&&b.deps++,e.asyncDep.catch(t=>{mr(t,e,0)}).then(r=>{e.isUnmounted||b.isUnmounted||b.pendingId!==e.suspenseId||(e.asyncResolved=!0,t(r),n&&--b.deps===0&&b.resolve())})},unmount(e,t){b.isUnmounted=!0,b.activeBranch&&p(b.activeBranch,n,e,t),b.pendingBranch&&p(b.pendingBranch,n,e,t)}};return b}function Dc(e,t,n,r,i,a,o,s,c){let l=t.suspense=Ec(t,r,n,e.parentNode,document.createElement(`div`),null,i,a,o,s,!0),u=c(e,l.pendingBranch=t.ssContent,n,l,a,o);return l.deps===0&&l.resolve(!1,!0),u}function Oc(e){let{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=kc(r?n.default:n),e.ssFallback=r?kc(n.fallback):H(B)}function kc(e){let t;if(y(e)){let n=Bc&&e._c;n&&(e._d=!1,Rc()),e=e(),n&&(e._d=!0,t=Lc,zc())}return m(e)&&(e=hs(e)),e=nl(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function Ac(e,t,n){n&&n.pendingBranch?m(e)?n.effects.push(...e):n.effects.push(e):P(e,t)}function jc(e,t){e.activeBranch=t;let{vnode:n,parentComponent:r}=e,i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;n.el=i,r&&r.subTree===n&&(r.vnode.el=i,xs(r,i))}function Mc(e){let t=e.props&&e.props.suspensible;return t!=null&&t!==!1}var z=Symbol.for(`v-fgt`),Nc=Symbol.for(`v-txt`),B=Symbol.for(`v-cmt`),Pc=Symbol.for(`v-stc`),Fc=Symbol.for(`v-vps`),Ic=[],Lc=null;function Rc(e=!1){Ic.push(Lc=e?null:[])}function zc(){Ic.pop(),Lc=Ic[Ic.length-1]||null}var Bc=1;function Vc(e,t=!1){Bc+=e,e<0&&Lc&&t&&(Lc.hasOnce=!0)}function Hc(e){return e.dynamicChildren=Bc>0?Lc||i:null,zc(),Bc>0&&Lc&&Lc.push(e),e}function Uc(e,t,n,r,i,a){return Hc(Yc(e,t,n,r,i,a,!0))}function Wc(e,t,n,r,i){return Hc(H(e,t,n,r,i,!0))}function V(e){return e?e.__v_isVNode===!0:!1}function Gc(e,t){return e.type===t.type&&e.key===t.key}function Kc(e){}var qc=({key:e})=>e??null,Jc=({ref:e,ref_key:t,ref_for:n},r=F)=>(typeof e==`number`&&(e=``+e),e==null?null:b(e)||N(e)||y(e)?{i:r,r:e,k:t,f:!!n}:e);function Yc(e,t=null,n=null,r=0,i=null,a=e===z?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&qc(t),ref:t&&Jc(t),scopeId:qr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:F};return s?(il(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=b(n)?8:16),Bc>0&&!o&&Lc&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&Lc.push(c),c}var H=Xc;function Xc(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===so)&&(e=B),V(e)){let r=Qc(e,t,!0);return n&&il(r,n),Bc>0&&!a&&Lc&&(r.shapeFlag&6?Lc[Lc.indexOf(e)]=r:Lc.push(r)),r.patchFlag=-2,r}if(Il(e)&&(e=e.__vccOpts),t){t=Zc(t);let{class:e,style:n}=t;e&&!b(e)&&(t.class=Te(e)),S(n)&&(an(n)&&!m(n)&&(n=u({},n)),t.style=be(n))}let o=b(e)?1:bc(e)?128:mi(e)?64:S(e)?4:y(e)?2:0;return Yc(e,t,n,r,i,o,a,!0)}function Zc(e){return e?an(e)||ws(e)?u({},e):e:null}function Qc(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?al(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&qc(l),ref:t&&t.ref?n&&a?m(a)?a.concat(Jc(t)):[a,Jc(t)]:Jc(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==z?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qc(e.ssContent),ssFallback:e.ssFallback&&Qc(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Bi(u,c.clone(u)),u}function $c(e=` `,t=0){return H(Nc,null,e,t)}function el(e,t){let n=H(Pc,null,e);return n.staticCount=t,n}function tl(e=``,t=!1){return t?(Rc(),Wc(B,null,e)):H(B,null,e)}function nl(e){return e==null||typeof e==`boolean`?H(B):m(e)?H(z,null,e.slice()):V(e)?rl(e):H(Nc,null,String(e))}function rl(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qc(e)}function il(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(m(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),il(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!ws(t)?t._ctx=F:r===3&&F&&(F.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else y(t)?(t={default:t,_ctx:F},n=32):(t=String(t),r&64?(n=16,t=[$c(t)]):n=8);e.children=t,e.shapeFlag|=n}function al(...e){let t={};for(let n=0;nU||F,cl=()=>U&&!U.vapor?U:F,ll=!1,ul,dl;{let e=_e(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};dl=t(`__VUE_INSTANCE_SETTERS__`,e=>U=e),ul=t(`__VUE_SSR_SETTERS__`,e=>ll=e)}var W=(e,t=e===null?void 0:e.scope)=>{try{return[U,zn(t)]}finally{dl(e)}},fl=[`ce`,`type`,`uid`],pl=(e,t=!1)=>{let n=sl();return n?fl.includes(e)?{hasInstance:!0,value:n[e]}:{hasInstance:!0,value:void 0}:{hasInstance:!1,value:void 0}},ml=ts(),hl=0;function gl(){return hl++}function _l(e,t,n){let i=e.type,a=(t?t.appContext:e.appContext)||ml,o={uid:hl++,vnode:e,type:i,parent:t,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new In(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(a.provides),ids:t?t.ids:[``,0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:js(i,a),emitsOptions:ds(i,a),emit:null,emitted:null,propsDefaults:null,inheritAttrs:i.inheritAttrs,ctx:r,data:r,props:r,attrs:r,slots:r,refs:r,setupState:r,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=ss.bind(null,o),e.ce&&e.ce(o),o}function vl(e,{isNativeTag:t}){(re(e)||t(e))&&rr(`Do not use built-in or reserved HTML elements as component id: `+e)}function yl(e){return e.vnode.shapeFlag&4}function bl(e,t=!1,n=!1){t&&ul(t);let{props:r,children:i,vi:a}=e.vnode,o=yl(e);a?a(e):(Ts(e,r,o,t),Ys(e,i,n||t));let s=o?xl(e,t):void 0;return t&&ul(!1),s}function xl(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Co);let{setup:r}=n;if(r){let n=A(),i=e.setupContext=r.length>1?kl(e):null,a=W(e),o=fr(r,e,0,[e.props,i]),s=C(o);if(A(n),W(...a),(s||e.sp)&&!L(e)&&Gi(e),s){let n=()=>{W(null,void 0)};if(o.then(n,n),t)return o.then(n=>{Sl(e,n,t)}).catch(t=>{mr(t,e,0)});e.asyncDep=o}else Sl(e,o,t)}else Dl(e,t)}function Sl(e,t,n){y(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:S(t)&&(e.setupState=vn(t)),Dl(e,n)}var Cl,wl;function Tl(e){Cl=e,wl=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,wo))}}var El=()=>!Cl;function Dl(e,t,n){let r=e.type;if(!e.render){if(!t&&Cl&&!r.render){let t=r.template||Go(e).template;if(t){let{isCustomElement:n,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:o}=r,s=u(u({isCustomElement:n,delimiters:a},i),o);r.render=Cl(t,s)}}e.render=r.render||a,wl&&wl(e)}{let t=W(e),n=A();try{Vo(e)}finally{A(n),W(...t)}}}var Ol={get(e,t){return j(e,`get`,``),e[t]}};function kl(e){return{attrs:new Proxy(e.attrs,Ol),slots:e.slots,emit:e.emit,expose:t=>Al(e,t)}}function Al(e,t){e.exposed=t||{}}function jl(e){return e.exposed?e.exposeProxy||=new Proxy(vn(on(e.exposed)),{get(t,n){if(n in t)return t[n];{let t=xo();if(n in t)return t[n](e)}},has(e,t){let n=xo();return t in e||t in n}}):e.proxy}var Ml=/(?:^|[-_])\w/g,Nl=e=>e.replace(Ml,e=>e.toUpperCase()).replace(/[-_]/g,``);function Pl(e,t=!0){return y(e)?e.displayName||e.name:e.name||t&&e.__name}function Fl(e,t,n=!1){let r=Pl(t);if(!r&&t.__file){let e=t.__file.match(/([^/\\]+)\.\w+$/);e&&(r=e[1])}if(!r&&e){let n=e=>{for(let n in e)if(e[n]===t)return n};r=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return r?Nl(r):n?`App`:`Anonymous`}function Il(e){return y(e)&&`__vccOpts`in e}var Ll=(e,t)=>Hn(e,t,ll);function Rl(e,t,n){try{Vc(-1);let r=arguments.length;return r===2?S(t)&&!m(t)?V(t)?H(e,null,[t]):H(e,t):H(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&V(n)&&(n=[n]),H(e,t,n))}finally{Vc(1)}}function zl(){return;function e(t,n,r){let i=t[r];if(m(i)&&i.includes(n)||S(i)&&n in i||t.extends&&e(t.extends,n,r)||t.mixins&&t.mixins.some(t=>e(t,n,r)))return!0}}function Bl(e,t,n,r){let i=n[r];if(i&&Vl(i,e))return i;let a=t();return a.memo=e.slice(),a.cacheIndex=r,n[r]=a}function Vl(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&Lc&&Lc.push(e),!0}var Hl=`3.6.0-beta.6`,Ul=a,Wl=dr,Gl=Br,Kl=Wr,ql={createComponentInstance:_l,setupComponent:bl,renderComponentRoot:ps,setCurrentRenderingInstance:Jr,isVNode:V,normalizeVNode:nl,getComponentPublicInstance:jl,ensureValidVNode:go,pushWarningContext:er,popWarningContext:tr},Jl=void 0,Yl=typeof window<`u`&&window.trustedTypes;if(Yl)try{Jl=Yl.createPolicy(`vue`,{createHTML:e=>e})}catch{}var Xl=Jl?e=>Jl.createHTML(e):e=>e,Zl=`http://www.w3.org/2000/svg`,Ql=`http://www.w3.org/1998/Math/MathML`,$l=typeof document<`u`?document:null,eu=$l&&$l.createElement(`template`),tu={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?$l.createElementNS(Zl,e):t===`mathml`?$l.createElementNS(Ql,e):n?$l.createElement(e,{is:n}):$l.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>$l.createTextNode(e),createComment:e=>$l.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>$l.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{eu.innerHTML=Xl(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=eu.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},nu=`transition`,ru=`animation`,iu=Symbol(`_vtc`),au={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ou=u({},Ai,au),su=(e=>(e.displayName=`Transition`,e.props=ou,e))((e,{slots:t})=>Rl(Pi,uu(e),t)),cu=(e,t=[])=>{m(e)?e.forEach(e=>e(...t)):e&&e(...t)},lu=e=>e?m(e)?e.some(e=>e.length>1):e.length>1:!1;function uu(e){let t={};for(let n in e)n in au||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:l=o,appearToClass:d=s,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,h=du(i),g=h&&h[0],_=h&&h[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:b,onLeave:x,onLeaveCancelled:S,onBeforeAppear:C=v,onAppear:w=y,onAppearCancelled:T=b}=t,E=(e,t,n,r)=>{e._enterCancelled=r,mu(e,t?d:s),mu(e,t?l:o),n&&n()},ee=(e,t)=>{e._isLeaving=!1,mu(e,f),mu(e,m),mu(e,p),t&&t()},te=e=>(t,n)=>{let i=e?w:y,o=()=>E(t,e,n);cu(i,[t,o]),hu(()=>{mu(t,e?c:a),pu(t,e?d:s),lu(i)||_u(t,r,g,o)})};return u(t,{onBeforeEnter(e){cu(v,[e]),pu(e,a),pu(e,o)},onBeforeAppear(e){cu(C,[e]),pu(e,c),pu(e,l)},onEnter:te(!1),onAppear:te(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>ee(e,t);pu(e,f),e._enterCancelled?(pu(e,p),xu(e)):(xu(e),pu(e,p)),hu(()=>{e._isLeaving&&(mu(e,f),pu(e,m),lu(x)||_u(e,r,_,n))}),cu(x,[e,n])},onEnterCancelled(e){E(e,!1,void 0,!0),cu(b,[e])},onAppearCancelled(e){E(e,!0,void 0,!0),cu(T,[e])},onLeaveCancelled(e){ee(e),cu(S,[e])}})}function du(e){if(e==null)return null;if(S(e))return[fu(e.enter),fu(e.leave)];{let t=fu(e);return[t,t]}}function fu(e){return he(e)}function pu(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[iu]||(e[iu]=new Set)).add(t)}function mu(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[iu];n&&(n.delete(t),n.size||(e[iu]=void 0))}function hu(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var gu=0;function _u(e,t,n,r){let i=e._endId=++gu,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=vu(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${nu}Delay`),a=r(`${nu}Duration`),o=yu(i,a),s=r(`${ru}Delay`),c=r(`${ru}Duration`),l=yu(s,c),u=null,d=0,f=0;t===nu?o>0&&(u=nu,d=o,f=a.length):t===ru?l>0&&(u=ru,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?nu:ru:null,f=u?u===nu?a.length:c.length:0);let p=u===nu&&/\b(?:transform|all)(?:,|$)/.test(r(`${nu}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function yu(e,t){for(;e.lengthbu(t)+bu(e[n])))}function bu(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function xu(e){return(e?e.ownerDocument:document).body.offsetHeight}function Su(e,t,n){let r=e[iu];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var Cu=Symbol(`_vod`),wu=Symbol(`_vsh`),Tu={name:`show`,beforeMount(e,{value:t},{transition:n}){e[Cu]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):Eu(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Eu(e,!0),r.enter(e)):r.leave(e,()=>{Eu(e,!1)}):Eu(e,t))},beforeUnmount(e,{value:t}){Eu(e,t)}};function Eu(e,t){e.style.display=t?e[Cu]:`none`,e[wu]=!t}function Du(){Tu.getSSRProps=({value:e})=>{if(!e)return{style:{display:`none`}}}}var Ou=Symbol(``);function ku(e){let t=cl();ju(t,()=>t.subTree.el.parentNode,()=>e(t.proxy),e=>{t.ce?Mu(t.ce,e):Au(t.subTree,e)})}function Au(e,t){if(e.shapeFlag&128){let n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{Au(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Mu(e.el,t);else if(e.type===z)e.children.forEach(e=>Au(e,t));else if(e.type===Pc){let{el:n,anchor:r}=e;for(;n&&(Mu(n,t),n!==r);)n=n.nextSibling}}function ju(e,t,n,r){if(!e)return;let i=e.ut=(t=n())=>{Array.from(document.querySelectorAll(`[data-v-owner="${e.uid}"]`)).forEach(e=>Mu(e,t))},o=(e=n())=>{r(e),i(e)};Xa(()=>{P(o)}),Ya(()=>{ci(()=>{let e=n();u({},e),o(e)},a,{flush:`post`});let e=new MutationObserver(()=>o());e.observe(t(),{childList:!0}),$a(()=>e.disconnect())})}function Mu(e,t){if(e.nodeType===1){let n=e.style,r=``;for(let e in t){let i=Ue(t[e]);n.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}n[Ou]=r}}var Nu=/(?:^|;)\s*display\s*:/;function Pu(e,t,n){let r=e.style,i=b(n),a=!1;if(n&&!i){if(t)if(b(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??Iu(r,t,``)}else for(let e in t)n[e]??Iu(r,e,``);for(let e in n)e===`display`&&(a=!0),Iu(r,e,n[e])}else if(i){if(t!==n){let e=r[Ou];e&&(n+=`;`+e),r.cssText=n,a=Nu.test(n)}}else t&&e.removeAttribute(`style`);Cu in e&&(e[Cu]=a?r.display:``,e[wu]&&(r.display=`none`))}var Fu=/\s*!important$/;function Iu(e,t,n){if(m(n))n.forEach(n=>Iu(e,t,n));else{let r=n==null?``:String(n);if(t.startsWith(`--`))e.setProperty(t,r);else{let n=zu(e,t);Fu.test(r)?e.setProperty(ce(n),r.replace(Fu,``),`important`):e[n]=r}}}var Lu=[`Webkit`,`Moz`,`ms`],Ru={};function zu(e,t){let n=Ru[t];if(n)return n;let r=D(t);if(r!==`filter`&&r in e)return Ru[t]=r;r=le(r);for(let n=0;nYu||=(Xu.then(()=>Yu=0),Date.now());function Qu(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;pr($u(e,n.value),t,5,[e])};return n.value=e,n.attached=Zu(),n}function $u(e,t){if(m(t)){let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}else return t}var ed=(e,t,n,r,i,a)=>{let o=i===`svg`;t===`class`?Su(e,r,o):t===`style`?Pu(e,n,r):s(t)?l(t)||Ku(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):td(e,t,r,o))?(Hu(e,t,r,a),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&Vu(e,t,r,o,a,t!==`value`)):e._isVueCE&&(/[A-Z]/.test(t)||!b(r))?Hu(e,D(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),Vu(e,t,r,o,a))};function td(e,t,n,r){return r?!!(t===`innerHTML`||t===`textContent`||t in e&&c(t)&&y(n)):Pe(e.tagName,t)||c(t)&&b(n)?!1:t in e}var nd={};function rd(e,t,n){let r=Ui(e,t);ee(r)&&(r=u({},r,t));class i extends sd{constructor(e){super(r,e,n)}}return i.def=r,i}var id=((e,t)=>rd(e,t,rf)),ad=typeof HTMLElement<`u`?HTMLElement:class{},od=class e extends ad{constructor(e,t={},n){super(),this._isVueCE=!0,this._instance=null,this._app=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._patching=!1,this._dirty=!1,this._ob=null,this._def=e,this._props=t,this._createApp=n,this._nonce=e.nonce,this._needsHydration()?this._root=this.shadowRoot:e.shadowRoot===!1?this._root=this:(this.attachShadow(u({},e.shadowRootOptions,{mode:`open`})),this._root=this.shadowRoot)}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t&&=t.parentNode||t.host;)if(t instanceof e){this._parent=t;break}this._instance||(this._resolved?this._mountComponent(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}disconnectedCallback(){this._connected=!1,wr(()=>{this._connected||(this._ob&&=(this._ob.disconnect(),null),this._unmount(),this._teleportTargets&&=(this._teleportTargets.clear(),void 0))})}_setParent(e=this._parent){e&&this._instance&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}_processMutations(e){for(let t of e)this._setAttr(t.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e{this._resolved=!0,this._pendingResolve=void 0;let{props:t,styles:n}=e,r;if(t&&!m(t))for(let e in t){let n=t[e];(n===Number||n&&n.type===Number)&&(e in this._props&&(this._props[e]=he(this._props[e])),(r||=Object.create(null))[D(e)]=!0)}this._numberProps=r,this._resolveProps(e),this.shadowRoot&&this._applyStyles(n),this._mountComponent(e)},t=this._def.__asyncLoader;if(t){let{configureApp:n}=this._def;this._pendingResolve=t().then(t=>{t.configureApp=n,this._def=t,e(t)})}else e(this._def)}_mountComponent(e){this._mount(e),this._processExposed()}_processExposed(){let e=this._instance&&this._instance.exposed;if(e)for(let t in e)p(this,t)||Object.defineProperty(this,t,{get:()=>hn(e[t])})}_processInstance(){this._instance.ce=this,this._instance.isCE=!0;let e=(e,t)=>{this.dispatchEvent(new CustomEvent(e,ee(t[0])?u({detail:t},t[0]):{detail:t}))};this._instance.emit=(t,...n)=>{e(t,n),ce(t)!==t&&e(ce(t),n)},this._setParent()}_resolveProps(e){let{props:t}=e,n=m(t)?t:Object.keys(t||{});for(let e of Object.keys(this))e[0]!==`_`&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(D))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!this._patching)}})}_setAttr(e){if(e.startsWith(`data-v-`))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):nd,r=D(e);t&&this._numberProps&&this._numberProps[r]&&(n=he(n)),this._setProp(r,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!1){if(t!==this._props[e]&&(this._dirty=!0,t===nd?delete this._props[e]:(this._props[e]=t,e===`key`&&this._app&&this._app._ceVNode&&(this._app._ceVNode.key=t)),r&&this._instance&&this._update(),n)){let n=this._ob;n&&(this._processMutations(n.takeRecords()),n.disconnect()),t===!0?this.setAttribute(ce(e),``):typeof t==`string`||typeof t==`number`?this.setAttribute(ce(e),t+``):t||this.removeAttribute(ce(e)),n&&n.observe(this,{attributes:!0})}}_applyStyles(e,t){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let n=this._nonce;for(let t=e.length-1;t>=0;t--){let r=document.createElement(`style`);n&&r.setAttribute(`nonce`,n),r.textContent=e[t],this.shadowRoot.prepend(r)}}_parseSlots(){let e=this._slots={},t;for(;t=this.firstChild;){let n=t.nodeType===1&&t.getAttribute(`slot`)||`default`;(e[n]||(e[n]=[])).push(t),this.removeChild(t)}}_renderSlots(){let e=this._getSlots(),t=this._instance.type.__scopeId,n=new Map;for(let r=0;r{this._instance=e,this._processInstance()}),t}};function cd(e){let{hasInstance:t,value:n}=pl(`ce`,!0);return n||null}function ld(){let e=cd();return e&&e.shadowRoot}function ud(e=`$style`){{let{hasInstance:t,value:n}=pl(`type`,!0);if(!t)return r;let i=n.__cssModules;return i&&i[e]||r}}var dd=new WeakMap,fd=new WeakMap,pd=Symbol(`_moveCb`),md=Symbol(`_enterCb`),hd=(e=>(delete e.props.mode,e))({name:`TransitionGroup`,props:u({},ou,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=cl(),r=Oi(),i,a;return Za(()=>{if(!i.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!xd(i[0].el,n.vnode.el,t)){i=[];return}i.forEach(e=>gd(e.el)),i.forEach(_d);let r=i.filter(vd);xu(n.vnode.el),r.forEach(e=>{let n=e.el;Sd(n,t)}),i=[]}),()=>{let o=M(e),s=uu(o),c=o.tag||z;if(i=[],a)for(let e=0;e{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=vu(r);return a.removeChild(r),o}var Sd=(e,t)=>{let n=e.style;pu(e,t),n.transform=n.webkitTransform=n.transitionDuration=``;let r=e[pd]=n=>{n&&n.target!==e||(!n||n.propertyName.endsWith(`transform`))&&(e.removeEventListener(`transitionend`,r),e[pd]=null,mu(e,t))};e.addEventListener(`transitionend`,r)},Cd=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return m(t)?e=>fe(t,e):t};function wd(e){e.target.composing=!0}function Td(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Ed=Symbol(`_assign`),Dd={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[Ed]=Cd(i),kd(e,n,r||!!(i.props&&i.props.type===`number`),t)},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){e[Ed]=Cd(o),Ad(e,n,t,i,a,r)}};function Od(e,t,n){return t&&(e=e.trim()),n&&(e=me(e)),e}var kd=(e,t,n,r,i)=>{Uu(e,r?`change`:`input`,r=>{r.target.composing||(i||e[Ed])(Od(e.value,t,n||e.type===`number`))}),(t||n)&&Uu(e,`change`,()=>{e.value=Od(e.value,t,n||e.type===`number`)}),r||(Uu(e,`compositionstart`,wd),Uu(e,`compositionend`,Td),Uu(e,`change`,Td))},Ad=(e,t,n,r,i,a)=>{if(e.composing)return;let o=(i||e.type===`number`)&&!/^0\d/.test(e.value)?me(e.value):e.value,s=n??``;o!==s&&(document.activeElement===e&&e.type!==`range`&&(a&&n===t||r&&e.value.trim()===s)||(e.value=s))},jd={deep:!0,created(e,t,n){e[Ed]=Cd(n),Md(e)},mounted(e,t,n){Nd(e,t.oldValue,t.value,n.props.value)},beforeUpdate(e,t,n){e[Ed]=Cd(n),Nd(e,t.oldValue,t.value,n.props.value)}},Md=(e,t)=>{Uu(e,`change`,()=>{let n=t||e[Ed],r=e._modelValue,i=Rd(e),a=e.checked;if(m(r)){let e=Le(r,i),t=e!==-1;if(a&&!t)n(r.concat(i));else if(!a&&t){let t=[...r];t.splice(e,1),n(t)}}else if(g(r)){let e=new Set(r);a?e.add(i):e.delete(i),n(e)}else n(zd(e,a))})},Nd=(e,t,n,r=Rd(e))=>{e._modelValue=n;let i;if(m(n))i=Le(n,r)>-1;else if(g(n))i=n.has(r);else{if(n===t)return;i=Ie(n,zd(e,!0))}e.checked!==i&&(e.checked=i)},Pd={created(e,{value:t},n){e.checked=Ie(t,n.props.value),e[Ed]=Cd(n),Uu(e,`change`,()=>{e[Ed](Rd(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Ed]=Cd(r),t!==n&&(e.checked=Ie(t,r.props.value))}},Fd={deep:!0,created(e,{value:t,modifiers:{number:n}},r){Id(e,t,n),e[Ed]=Cd(r)},mounted(e,{value:t}){Ld(e,t)},beforeUpdate(e,t,n){e[Ed]=Cd(n)},updated(e,{value:t}){Ld(e,t)}},Id=(e,t,n,r)=>{let i=g(t);Uu(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?me(Rd(e)):Rd(e));(r||e[Ed])(e.multiple?i?new Set(t):t:t[0]),e._assigning=!0,wr(()=>{e._assigning=!1})})},Ld=(e,t)=>{if(e._assigning)return;let n=e.multiple,r=m(t);if(!(n&&!r&&!g(t))){for(let i=0,a=e.options.length;iString(e)===String(o)):a.selected=Le(t,o)>-1}else a.selected=t.has(o);else if(Ie(Rd(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}};function Rd(e){return`_value`in e?e._value:e.value}function zd(e,t){let n=t?`_trueValue`:`_falseValue`;if(n in e)return e[n];let r=t?`true-value`:`false-value`;return e.hasAttribute(r)?e.getAttribute(r):t}var Bd={created(e,t,n){Hd(e,t,n,null,`created`)},mounted(e,t,n){Hd(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){Hd(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){Hd(e,t,n,r,`updated`)}};function Vd(e,t){switch(e){case`SELECT`:return Fd;case`TEXTAREA`:return Dd;default:switch(t){case`checkbox`:return jd;case`radio`:return Pd;default:return Dd}}}function Hd(e,t,n,r,i){let a=Vd(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}function Ud(){Dd.getSSRProps=({value:e})=>({value:e}),Pd.getSSRProps=({value:e},t)=>{if(t.props&&Ie(t.props.value,e))return{checked:!0}},jd.getSSRProps=({value:e},t)=>{if(m(e)){if(t.props&&Le(e,t.props.value)>-1)return{checked:!0}}else if(g(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Bd.getSSRProps=(e,t)=>{if(typeof t.type!=`string`)return;let n=Vd(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)}}var Wd=[`ctrl`,`shift`,`alt`,`meta`],Gd={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>Wd.some(n=>e[`${n}Key`]&&!t.includes(n))},Kd=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=ce(n.key);if(t.some(e=>e===r||qd[e]===r))return e(n)}))},Yd=u({patchProp:ed},tu),Xd,Zd=!1;function Qd(){return Xd||=ac(Yd)}function $d(){return Xd=Zd?Xd:oc(Yd),Zd=!0,Xd}var ef=((...e)=>{Qd().render(...e)}),tf=((...e)=>{$d().hydrate(...e)}),nf=((...e)=>{let t=Qd().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=of(e);if(!r)return;let i=t._component;!y(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,af(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t}),rf=((...e)=>{ea(!0);let t=$d().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=of(e);if(t)return n(t,!0,af(t))},t});function af(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function of(e){return b(e)?document.querySelector(e):e}var sf=!1,cf=()=>{sf||(sf=!0,Ud(),Du())},lf,uf,df,ff;function pf(e,t,n,r){lf=e,ff=r,df=n,t===void 0||K?uf=void 0:(uf=t,t===0&&!e.$fc&&(e.$fc=e.firstChild))}function mf(){lf=uf=df=ff=void 0}var hf=!1;function gf(e){hf=e}var G=null,K=!1;function _f(e){if(!hf)return!1;try{return K}finally{K=e}}function vf(e){let t=_f(!1);try{return e()}finally{_f(t)}}var yf=!1;function bf(e,t,n){yf||=(Cf=kf,wf=jf,Comment.prototype.$fe=void 0,Node.prototype.$idx=void 0,Node.prototype.$llc=void 0,!0),$f();let r=_f(!0);t();let i=e();return n(),G=null,_f(r),K||ep(),i}function xf(e,t){return bf(t,()=>pf(e),()=>mf())}function Sf(e,t){return bf(t,()=>G=e,()=>{})}var Cf,wf,Tf=(e,t)=>e.nodeType===8&&e.data===t;function Ef(e){G=e}function Df(e){return e.parentNode?e.parentNode.nextSibling||Df(e.parentNode):null}function Of(e){let t=e.nextSibling||Df(e);t&&Ef(t)}function kf(e,t){if(!(t[0]===`<`&&t[1]===`!`)){for(;e.nodeType===8;)if(e=e.nextSibling,t.trim()===``&&Tf(e,`]`)&&Tf(e.previousSibling,`[`)){e.before(e=q());break}}let n=e.nodeType;return(n===8&&!t.startsWith(`0;)if(e.nodeType===8){if(e.data===t)r.push(e);else if(e.data===n){let t=r.pop();if(t.$fe=e,r.length===0)return e}}return null}function Nf(e=`]`){let t=G;for(;t;){if(Tf(t,e))return t;t=t.nextSibling}return null}function Pf(e,t){ba(e.parentElement,1)||If(),Tf(e,`[`)&&Lf(e);let n=qf(e),r=Bf(e);if(Q(e,r),t[0]!==`<`)return r.insertBefore(q(t),n);let i=Rf(`template`);i.innerHTML=t;let a=Uf(i.content).cloneNode(!0);return a.innerHTML=e.innerHTML,Array.from(e.attributes).forEach(e=>{a.setAttribute(e.name,e.value)}),r.insertBefore(a,n),a}var Ff=!1,If=()=>{Ff||=(console.error(`Hydration completed but contains mismatches.`),!0)};function Lf(e,t){let n=t||Mf(e);for(;;){let t=qf(e);if(t&&t!==n)Q(t,Bf(e));else break}}function Rf(e){return document.createElement(e)}function q(e=``){return document.createTextNode(e)}function zf(e){return document.querySelector(e)}function Bf(e){return e.parentNode}var Vf=Uf,Hf=e=>e.firstChild||e.appendChild(q());function Uf(e){return e.firstChild}function Wf(e,t=0){return tp(e,t)}function Gf(e,t){return e.childNodes[t]}function Kf(e,t){return tp(e,t)}function qf(e){return e.nextSibling}function Jf(e,t){return tp(e.parentNode,t)}var Yf=(...e)=>Yf.impl(...e);Yf.impl=Vf;var Xf=(...e)=>Xf.impl(...e);Xf.impl=Uf;var Zf=(...e)=>Zf.impl(...e);Zf.impl=qf;var Qf=(...e)=>Qf.impl(...e);Qf.impl=Gf;function $f(){Yf.impl=Hf,Xf.impl=Wf,Zf.impl=Jf,Qf.impl=Kf}function ep(){Yf.impl=Vf,Xf.impl=Uf,Zf.impl=qf,Qf.impl=Gf}function tp(e,t){let n=e.$llc||e.firstChild,r=n.$idx||0;for(te.removeEventListener(t,n,r)}function rp(e,t,n,r={}){if(m(n))n.forEach(n=>rp(e,t,n,r));else{if(!n)return;np(e,t,n,r),r.effect&&Nn(()=>{e.removeEventListener(t,n,r)})}}function ip(e,t,n){let r=`$evt${t}`,i=e[r];i?m(i)?i.push(n):e[r]=[i,n]:e[r]=n}var ap=Object.create(null),op=(...e)=>{for(let t of e)ap[t]||(ap[t]=!0,document.addEventListener(t,sp))},sp=e=>{let t=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==t&&Object.defineProperty(e,`target`,{configurable:!0,value:t}),Object.defineProperty(e,`currentTarget`,{configurable:!0,get(){return t||document}});t!==null;){let n=t[`$evt${e.type}`];if(n){if(m(n)){for(let r of n)if(!t.disabled&&(r(e),e.cancelBubble))return}else if(n(e),e.cancelBubble)return}t=t.host&&t.host!==t&&t.host instanceof Node?t.host:t.parentNode}};function cp(e,t){for(let n in t)rp(e,n,t[n],{effect:!0})}function lp(e){let t=U;return(...n)=>pr(e,t,5,n)}var up=e=>U.hasFallthrough&&e in U.attrs;function dp(e,t,n){t in e?pp(e,t,n):fp(e,t,n)}function fp(e,t,n,r=!1){!Dh&&e.$root&&up(t)||(t===`true-value`?e._trueValue=n:t===`false-value`&&(e._falseValue=n),n!==e[`$${t}`]&&(e[`$${t}`]=n,r&&t.startsWith(`xlink:`)?n==null?e.removeAttributeNS(Bu,t.slice(6,t.length)):e.setAttributeNS(Bu,t,n):n==null?e.removeAttribute(t):e.setAttribute(t,n)))}function pp(e,t,n,r=!1,i){if(!Dh&&e.$root&&up(t))return;let a=e[t];if(n===a)return;let o=!1;if(n===``||n==null){let e=typeof a;e===`boolean`?n=Ae(n):n==null&&e===`string`?(n=``,o=!0):e===`number`&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(i||t)}function mp(e,t,n=!1){e.$root?hp(e,t):(t=Te(t),t!==e.$cls&&(n?e.setAttribute(`class`,e.$cls=t):e.className=e.$cls=t))}function hp(e,t){let n=`$clsi${Dh?`$`:``}`,r=Te(t),i=e[n];if((t=e[n]=r)!==i){let n=t.split(/\s+/);if(t&&e.classList.add(...n),i)for(let t of i.split(/\s+/))n.includes(t)||e.classList.remove(t)}}function gp(e,t){if(e.$root)_p(e,t);else{let n=be(t);Pu(e,e.$sty,e.$sty=n)}}function _p(e,t){let n=`$styi${Dh?`$`:``}`,r=b(t)?we(t):be(t);Pu(e,e[n],e[n]=r)}function vp(e,t,n=!1){if(!Dh&&e.$root&&up(`value`))return;e._value=t;let r=e.tagName===`OPTION`?e.getAttribute(`value`):e.value,i=t??``;r!==i&&(e.value=i),t??e.removeAttribute(`value`)}function yp(e,t){if(K){let n=Ap(e.parentNode,t);if(e.nodeValue==n){e.$txt=n;return}If()}e.$txt!==t&&(e.nodeValue=e.$txt=t)}function bp(e,t){if(t=ze(t),K){let n=Ap(e,t);if(e.textContent===n){e.$txt=n;return}ba(e,0)||If()}e.$txt!==t&&(e.textContent=e.$txt=t)}function xp(e,t){t??=``,e.$txt!==t&&Sp(e,e.$txt=t)}function Sp(e,t){e instanceof Node?e instanceof Element&&(e.textContent=t):$(e)?Sp(e.block,t):m(e)||Sp(e.nodes,t)}function Cp(e,t){t=t==null?``:Xl(t),e.$html!==t&&(e.innerHTML=e.$html=t)}function wp(e,t){t=t==null?``:Xl(t),e.$html!==t&&Tp(e,e.$html=t)}function Tp(e,t){e instanceof Node?e instanceof Element&&(e.innerHTML=t):$(e)?Tp(e.block,t):m(e)||Tp(e.nodes,t)}function Ep(e,t,n){let r=t.length>1?al(...t):t[0],i=`$dprops${Dh?`$`:``}`,a=e[i];if(a)for(let t of a)t in r||Dp(e,t,null,n);for(let t of e[i]=Object.keys(r))Dp(e,t,r[t],n)}function Dp(e,t,n,r=!1){let i=!1;return t===`class`?mp(e,n,r):t===`style`?gp(e,n):s(t)?rp(e,t[2].toLowerCase()+t.slice(3),n,{effect:!0}):((i=t[0]===`.`)?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):td(e,t,n,r))?t===`innerHTML`?Cp(e,n):t===`textContent`?bp(e,n):t===`value`&&ve(e.tagName)?vp(e,n,i):pp(e,t,n,i):e._isVueCE&&(/[A-Z]/.test(t)||!b(n))?pp(e,D(t),n,i,t):fp(e,t,n,r),n}var Op=!1;function kp(){if(Op)return;Op=!0;let e=Element.prototype;e.$transition=void 0,e.$key=void 0,e.$fc=e.$evtclick=void 0,e.$root=!1,e.$html=e.$cls=e.$sty=``,Text.prototype.$txt=void 0}function Ap(e,t){return t[0]===` +`&&(e.tagName===`PRE`||e.tagName===`TEXTAREA`)&&(t=t.slice(1)),t}var jp=`VaporTransition`,Mp=!1,Np=()=>{Mp||(Mp=!0,Sh(Rp,zp))},Pp=()=>{if(!G||!la(G))return;let{content:{firstChild:e},parentNode:t}=G;if(e&&(t.replaceChild(e,G),Ef(e),e instanceof HTMLElement||e instanceof SVGElement)){let t=e.style.display;return e.style.display=`none`,n=>{n.beforeEnter(e),e.style.display=t,P(()=>n.enter(e))}}},Fp=(e=>(e.displayName=jp,e.props=ou,e.__vapor=!0,e))((e,{slots:t})=>{Np();let n=K?Pp():void 0,r=t.default&&t.default();if(!r)return[];let i=U,{mode:a}=e,o;J(()=>o=uu(e));let s=Rp(r,{state:Oi(),props:new Proxy({},{get(e,t){return o[t]}}),instance:i});return o.appear&&n&&n(s),r}),Ip=(e,t,n,r,i)=>{let{leavingNodes:a}=n;return{setLeavingNodeCache:t=>{a.set(e,t)},unsetLeavingNodeCache:t=>{a.get(e)===t&&a.delete(e)},earlyRemove:()=>{let t=a.get(e);t&&t[Ei]&&t[Ei]()},cloneHooks:e=>{let a=Lp(e,t,n,r,i);return i&&i(a),a}}};function Lp(e,t,n,r,i){let a=Li(Ip(String(e.$key),t,n,r,i),t,n,r);return a.state=n,a.props=t,a.instance=r,a}function Rp(e,t){if(m(e)){if(e=e.filter(e=>!(e instanceof Comment)),e.length===1)e=e[0];else if(e.length===0)return t}let n=[],r=Bp(e,e=>n.push(e));if(!r)return n.forEach(e=>e.$transition=t),t;let{props:i,instance:a,state:o,delayedLeave:s}=t,c=Lp(r,i,o,a,e=>c=e);return c.delayedLeave=s,r.$transition=c,n.forEach(e=>e.$transition=c),c}function zp(e,t,n){let r=Bp(e);if(!r)return;let{props:i,state:a,instance:o}=t,s=Lp(r,i,a,o);r.$transition=s;let{mode:c}=i;c===`out-in`?(a.isLeaving=!0,s.afterLeave=()=>{a.isLeaving=!1,n(),r.$transition=void 0,delete s.afterLeave}):c===`in-out`&&(s.delayLeave=(e,n,i)=>{a.leavingNodes.set(String(r.$key),r),e[Ei]=()=>{n(),e[Ei]=void 0,r.$transition=void 0,delete t.delayedLeave},t.delayedLeave=()=>{i(),r.$transition=void 0,delete t.delayedLeave}})}function Bp(e,t){let n;if(e instanceof Node)e instanceof Element&&(n=e);else if($(e))if(L(e))e.type.__asyncResolved?n=Bp(e.block.nodes,t):t&&t(e.block);else{if(Pl(e.type)===jp)return;n=Bp(e.block,t),n&&n.$key===void 0&&(n.$key=e.uid)}else if(m(e)){for(let r of e)if(!(r instanceof Comment)){n=Bp(r,t);break}}else X(e)&&(e.insert?n=e:(t&&t(e),n=Bp(e.nodes,t)));return n}function Vp(e,t){if(X(e))e.$transition=t,e.nodes&&X(e.nodes)&&Vp(e.nodes,t);else if(m(e))for(let n=0;na,getCachedComponent:(e,t)=>Up&&V(e)?r.get(em(e.type,e.key,s)):r.get(em(e,t,s)),activate:(e,t,n)=>{c=e,am(e,t,n)},deactivate:e=>{c=void 0,om(e,a)}};let l=(t,n)=>{let{max:a}=e;r.has(t)?(i.delete(t),i.add(t)):(i.add(t),a&&i.size>parseInt(a,10)&&p(i.values().next().value)),r.set(t,n),c=n},u=()=>{let t=n.block;if(Ym(t)){let e=t.$transition;if(e&&e.mode===`out-in`&&e.state.isLeaving)return}let[r,i]=nm(t);!r||!Qp(r,e,i)||l(tm(r,i,s),r)},d=t=>{let[n,i]=nm(t);if(!n||!Qp(n,e,i))return!1;if(i&&Up){let e=tm(n,!0,s);r.has(e)&&(n.vnode.shapeFlag|=512),n.vnode.shapeFlag|=256}else{let e=tm(n,!1,s);r.has(e)&&(n.shapeFlag|=512),n.shapeFlag|=256}return!0},f=e=>{r.forEach((t,n)=>{let r=im(t);if(!r)return;let i=Pl(r.type);i&&!e(i)&&p(n)})},p=e=>{let t=r.get(e);t&&(!c||t!==c)?($p(t),Q(t)):c&&$p(c),r.delete(e),i.delete(e)};ci(()=>[e.include,e.exclude],([e,t])=>{e&&f(t=>La(e,t)),t&&f(e=>!La(t,e))},{flush:`post`,deep:!0}),Ya(u),Za(u),Qa(()=>{r.forEach((e,t)=>{let n=im(e);if(n){if($p(e),r.delete(t),c&&tm(c,!$(c),s)===t){let e=n.da;e&&P(e);return}Q(e,a)}}),o.forEach(e=>e.stop()),o.clear()});let h=qp({processShapeFlag:d,cacheBlock:u,cacheScope(e,t){o.set(e,t)},getScope(e){let t=o.get(e);if(t)return o.delete(e),t},setCurrentBranchKey(e){try{return s}finally{s=e}}}),g=t.default();return qp(h),m(g)&&(g=g.filter(e=>!(e instanceof Comment)),g.length),g}}),Qp=(e,t,n=!1)=>{let r=!n&&L(e),i=n&&Up?e.vnode.type:e.type;if(r&&!i.__asyncResolved)return!1;let{include:a,exclude:o}=t,s=Pl(r?i.__asyncResolved:i);return!(a&&(!s||!La(a,s))||o&&s&&La(o,s))},$p=e=>{$(e)?Ha(e):Up&&Ha(e.vnode)};function em(e,t,n){return t==null?n===void 0?e:Xp(e,n):Xp(e,t)}function tm(e,t,n){if(t&&Up){let t=e;return em(t.vnode.type,t.$key===void 0?t.vnode.key:t.$key,n)}let r=e;return em(r.type,r.key,n)}function nm(e){return $(e)?[e,!1]:Up&&rm(e)?[e,!0]:X(e)?nm(e.nodes):[void 0,!1]}function rm(e){return!!(X(e)&&e.vnode)}function im(e){if($(e))return e;if(Up)return e.vnode.component}function am(e,t,n){ph(e.block,t,n,0,e),P(()=>{e.isDeactivated=!1,e.a&&fe(e.a)})}function om(e,t){ph(e.block,t,null,1,e),P(()=>{e.da&&fe(e.da),e.isDeactivated=!0})}var sm=null;function cm(e){try{return sm}finally{sm=e}}var lm=Symbol(`interop`),um={mount(e,t,n,r,i,a){let o=e.anchor=q();K?P(()=>t.insertBefore(o,n)):(e.el=o,t.insertBefore(o,n));let s=U;dl(r);let c={};for(let t in e.props)ne(t)||(c[t]=e.props[t]);let l=un(c),u=un(e.children),d=null;i&&(d=cm(i));let f=[()=>l.value];f[lm]=!0;let p=e.component=Th(e.type,{$:f},{_:u},void 0,void 0,r?r.appContext:e.appContext);p.rawPropsRef=l,p.rawSlotsRef=u,Fa(r)&&(p.shapeFlag=e.shapeFlag),e.transition&&Hp(p,e.transition),i&&cm(d);let m=Ih(p);return m&&(e.el=m),e.dirs&&(m?a&&a():e.dirs=null),Nh(p,t,o),dl(s),p},update(e,t,n,r){t.component=e.component,t.el=t.anchor=e.anchor;let i=t.component,a=Ih(i);a&&(t.el=a),t.dirs&&(a?r&&r():t.dirs=null),n&&(i.rawPropsRef.value=t.props,i.rawSlotsRef.value=t.children)},unmount(e,t){let n=t?e.anchor.parentNode:void 0,r=e.component;r?r.block&&Ph(r,n):e.vb&&Q(e.vb,n),Q(e.anchor,n)},slot(e,t,n,r,i){if(e)t.el=t.anchor=e.anchor,t.vb=e.vb,(t.vs.ref=e.vs.ref).value=t.props;else{let e=U;dl(i);let a,{slot:o,fallback:s}=t.vs,c=t.vs.ref=un(t.props),l=o(new Proxy(c,dm));if(s){let e=ym(s,i),t=Zm(l,e);fh(l)||(l=Xm(l,e,t))}X(l)&&(a=l.anchor),dl(e),a||=q(),Z(t.el=t.anchor=a,n,r),Z(t.vb=l,n,a)}},move(e,t,n,r){ph(e.vb||e.component,t,n,r),ph(e.anchor,t,n,r)},hydrate(e,t,n,r,i,a){return!K&&!ta?t:(Sf(t,()=>this.mount(e,n,r,i,a)),qf(t))},hydrateSlot(e,t){if(!K&&!ta)return t;let{slot:n}=e.vs,r=e.vs.ref=un(e.props);return Sf(t,()=>{e.vb=n(new Proxy(r,dm)),e.anchor=e.el=G}),e.anchor},setTransitionHooks(e,t){Hp(e,t)},activate(e,t,n,r){let i=r.ctx.getCachedComponent(e);e.el=i.el,e.component=i.component,e.anchor=i.anchor,am(e.component,t,n),Z(e.anchor,t,n)},deactivate(e,t){om(e.component,t),Z(e.anchor,t)}},dm={get(e,t){return e.value[t]},has(e,t){return e.value[t]},ownKeys(e){return Object.keys(e.value)}},fm={get(e,t){let n=e[t];if(y(n)){n.__vapor=!0;let e=e=>[ho({[t]:n},t,e)];return e.__vs=n,e}return n}},pm;function mm(e,t,n){let r=new Km([]);r.vnode=t;let i=!1,a=(r,i)=>{i&&Bi(t,i),t.shapeFlag&256?t.type.__vapor?om(t.component,n.ctx.getStorageContainer()):Ga(t,n.ctx.getStorageContainer(),e,n,null):e.um(t,n,null,!!r)};return r.hydrate=()=>{K&&(vm(t,n),Bn(a,!0),i=!0,r.nodes=t.el)},r.insert=(o,s,c)=>{if(!K){if(t.shapeFlag&512){t.type.__vapor?am(t.component,o,s):Wa(t,o,s,e,n,null,void 0,!1);return}else{let r=U;dl(n),i?e.m(t,o,s,2,n):(c&&Bi(t,c),e.p(null,t,o,s,n,null,void 0,t.slotScopeIds),Bn(a,!0),i=!0),dl(r)}r.nodes=t.el,i&&r.onUpdated&&r.onUpdated.forEach(e=>e())}},r.remove=a,r}function hm(e,t,n,i,a,o){let s=new Km([]),c=s.vnode=H(t,i&&u({},new Proxy(i,Pm)));Kp&&(Kp.processShapeFlag(s),qp(null));let l=new Ah({props:t.props},i,a,n?n.appContext:void 0,void 0);c.vi=e=>{e.props=Zt(l.props);let t=e.attrs=Cs();for(let n in l.attrs)fs(e.emitsOptions,n)||(t[n]=l.attrs[n]);e.slots=l.slots===r?r:new Proxy(l.slots,fm)};let d=null,f=!1,p=(t,r)=>{if(d&&Xi(d,null,null,c,!0),r&&Bi(c,r),c.shapeFlag&256){Ga(c,n.ctx.getStorageContainer(),e,n,null);return}e.umt(c.component,null,!!t)};return s.hydrate=()=>{K&&(vm(c,n,!o),Bn(p,!0),f=!0,s.nodes=c.el)},c.scopeId=zh()||null,c.slotScopeIds=Im,s.insert=(t,r,i)=>{if(!K){if(c.shapeFlag&512)Wa(c,t,r,e,n,null,void 0,!1);else{let a=U;dl(n),f?e.m(c,t,r,2,n):(i&&Bi(c,i),e.mt(c,t,r,n,null,void 0,!1),d&&Xi(d,null,null,c),Bn(p,!0),f=!0),dl(a)}s.nodes=c.el,f&&s.onUpdated&&s.onUpdated.forEach(e=>e())}},s.remove=p,s.setRef=(e,t,n,r)=>{d=Jc({ref:t,ref_for:n,ref_key:r},e),f&&d&&Xi(d,null,null,c)},s}function gm(e,t,n,r,i,a){let o=new Km([]);a&&!o.fallback&&(o.fallback=a);let s=!1,c=null,l=null;o.insert=(t,n)=>{K||(s?l?e.m(l,t,n,2,i):c&&Z(c,t,n):(u(t,n),s=!0),o.remove=t=>{c?Q(c,t):l&&e.um(l,i,null)},s&&o.onUpdated&&o.onUpdated.forEach(e=>e()))};let u=(s,u)=>{J(()=>{let d=o.fallback||a,f,p=!0,m=null;if(t.value)if(f=ho(t.value,y(n)?n():n,r),V(f)){let e=f.children;_o(e,d),p=e.length===0}else d&&f&&(m=Zm(f,()=>d(e,i))),p=!fh(f);let h=f;if(p&&d&&(h=V(f)?d(e,i):f?Xm(f,()=>d(e,i),m):d(e,i)),K){V(h)?(vm(h,i),l=h,c=null,o.nodes=h.el):h?(c=h,l=null,o.nodes=h):(c=null,l=null,o.nodes=[]);return}if(V(h)){c&&=(Q(c,s),null),e.p(l,h,s,u,i,null,void 0,h.slotScopeIds),l=h,o.nodes=h.el;return}if(h){l&&=(e.um(l,i,null,!0),null),c&&Q(c,s),Z(h,s,u),c=h,o.nodes=h;return}c&&=(Q(c,s),null),l&&=(e.um(l,i,null,!0),null),o.nodes=[]})};return o.hydrate=()=>{K&&(u(),s=!0)},o}var _m=e=>{Wp();let t=Qd().internals;e._context.vapor=u(um,{vdomMount:hm.bind(null,t),vdomUnmount:t.umt,vdomSlot:gm.bind(null,t),vdomMountVNode:mm.bind(null,t)});let n=e.mount;e.mount=((...e)=>(kp(),n(...e)))};function vm(e,t,n=!1){wf();let r=G;n&&Tf(r,`[`)&&Ef(r=r.nextSibling),pm||=$d().hydrateNode;let i=pm(r,e,t,null,null,!1);i?Ef(i):Of(r)}function ym(e,t){let n=Qd().internals;return()=>bm(e)(n,t)}var bm=e=>(t,n)=>{let r=e();if(m(r)&&r.every(V)){let e=new Km([]);return e.insert=(e,i)=>{r.forEach(r=>{t.p(null,r,e,i,n)})},e.remove=e=>{r.forEach(e=>{t.um(e,n,null,!0)})},e}return r};function xm(e){let t=e.__emitsOptions;if(t)return t;let n=e.emits;if(!n)return null;let r;if(m(n)){r={};for(let e of n)r[e]=null}else r=n;return e.__emitsOptions=r}function Sm(e,t,...n){cs(e,e.rawProps||r,Cm,t,...n)}function Cm(e,t){let n=e.$;if(n){let e=n.length;for(;e--;){let r=wm(n[e]);if(p(r,t))return n[lm]||s(t)?r[t]:wm(r[t])}}return e[t]&&wm(e[t])}function wm(e){return y(e)?Tm(e):e}function Tm(e){if(e._cache)return e._cache.value;let t=U&&U.parent;return t?(e._cache=Hn(()=>{let n=W(t);try{return e()}finally{W(...n)}}),Bn(()=>e._cache=void 0),e._cache.value):e()}function Em(e,t){if(e.__propsHandlers)return e.__propsHandlers;let n=Am(e)[0],r=xm(e),i=n?e=>b(e)&&p(n,D(e)):o,a=n?e=>b(e)&&e!==`$`&&!i(e)&&!fs(r,e):e=>b(e),s=(e,t)=>{if(t===`__v_isReactive`)return!0;if(!i(t))return;let r=e.rawProps,a=r.$;if(a){let r=a.length,i,o,s;for(;r--;)for(s in i=a[r],o=y(i),i=o?Tm(i):i,i)if(D(s)===t)return Os(n,t,o?i[s]:Tm(i[s]),e,jm)}for(let i in r)if(D(i)===t)return Os(n,t,wm(r[i]),e,jm);return Os(n,t,void 0,e,jm,!0)},c=e=>((t,n)=>{let r=t.oncePropsCache||={};if(!(n in r)){An();try{r[n]=e(t,n)}finally{jn()}}return r[n]}),l=c(s),u=n?{get:(e,n)=>(t?l:s)(e,n),has:(e,t)=>i(t),ownKeys:()=>Object.keys(n),getOwnPropertyDescriptor(e,n){if(i(n))return{configurable:!0,enumerable:!0,get:()=>(t?l:s)(e,n)}}}:null,d=(e,t)=>{if(b(t)&&!i(t)&&!fs(r,t))return Dm(e,t)},f=(e,t)=>a(t)?Om(e,t):!1,m=c((e,t)=>d(e.rawProps,t));return e.__propsHandlers=[u,{get:(e,n)=>t?m(e,n):d(e.rawProps,n),has:(e,t)=>f(e.rawProps,t),ownKeys:e=>km(e.rawProps).filter(a),getOwnPropertyDescriptor(e,n){if(b(n)&&f(e.rawProps,n))return{configurable:!0,enumerable:!0,get:()=>t?m(e,n):d(e.rawProps,n)}}}]}function Dm(e,t){if(t===`$`)return;let n=t===`class`||t===`style`?[]:void 0,r=e.$;if(r){let e=r.length,i,a;for(;e--;)if(i=r[e],a=y(i),i=a?Tm(i):i,i&&p(i,t)){let e=a?i[t]:Tm(i[t]);if(n)n.push(e);else return e}}if(p(e,t)){let r=wm(e[t]);if(n)n.push(r);else return r}if(n&&n.length)return n}function Om(e,t){if(t===`$`)return!1;let n=e.$;if(n){let e=n.length;for(;e--;){let r=wm(n[e]);if(r&&p(r,t))return!0}}return p(e,t)}function km(e){let t=[];for(let n in e)n!==`$`&&t.push(n);let n=e.$;if(n){let e=n.length,r;for(;e--;){r=y(n[e])?Tm(n[e]):n[e];for(let e in r)t.push(e)}}return Array.from(new Set(t))}function Am(e){let t=e.__propsOptions;if(t)return t;let n=e.props;if(!n)return i;let r={},a=[];return Ms(n,r,a),e.__propsOptions=[r,a]}function jm(e,t){let n=W(t),r=e.call(null,t.props);return W(...n),r}function Mm(e,t){if(t){if(t.$||!e.props)return!0;{let n=Am(e)[0];for(let e in t)if(!p(n,D(e)))return!0}}return!1}function Nm(e){let t={};for(let n in e)n!==`$`&&(t[n]=wm(e[n]));if(e.$)for(let n of e.$){let e=y(n),r=e?Tm(n):n;for(let i in r){let a=e?r[i]:Tm(n[i]);if(i===`class`||i===`style`){let e=t[i];m(e)?e.push(a):t[i]=[e,a]}else t[i]=a}}return t}var Pm={get:Dm,has:Om,ownKeys:km,getOwnPropertyDescriptor(e,t){if(Om(e,t))return{configurable:!0,enumerable:!0,get:()=>Dm(e,t)}}},Fm=!1,Im=null;function Lm(e){try{return Im}finally{Im=e}}var Rm={get:zm,has:(e,t)=>!!zm(e,t),getOwnPropertyDescriptor(e,t){let n=zm(e,t);if(n)return{configurable:!0,enumerable:!0,value:n}},ownKeys(e){let t=Object.keys(e),n=e.$;if(n){t=t.filter(e=>e!==`$`);for(let e of n)if(y(e)){let n=Tm(e);if(n)if(m(n))for(let e of n)t.push(String(e.name));else t.push(String(n.name))}else t.push(...Object.keys(e))}return t},set:o,deleteProperty:o};function zm(e,t){if(t===`$`)return;let n=e.$;if(n){let e=n.length,r;for(;e--;)if(r=n[e],y(r)){let e=Tm(r);if(e){if(m(e)){for(let n of e)if(String(n.name)===t)return n.fn}else if(String(e.name)===t)return e.fn}}else if(p(r,t))return r[t]}if(p(e,t))return e[t]}var Bm=null;function Vm(e){try{return Bm}finally{Bm=e}}function Hm(){return Bm||U}function Um(e){let t=Hm();return(...n)=>{let r=Vm(t);try{return e(...n)}finally{Vm(r)}}}function Wm(e,t,n,i,a){let o=lf,s=uf,c=ff;K||mf();let l=Hm(),u=l.rawSlots,d=t?new Proxy(t,Pm):r,f;if(N(u._)&&Up)K&&wf(),f=l.appContext.vapor.vdomSlot(u._,e,d,l,n);else{f=new Jm;let t=y(e),r=[];if(!i){let e=l.type.__scopeId;e&&r.push(`${e}-s`)}let o=()=>{let t=y(e)?e():e;if(l.ce||l.parent&&L(l.parent)&&l.parent.ce){let e=Rf(`slot`);J(()=>{Ep(e,[d,t===`default`?{}:{name:t}])}),n&&Z(n(),e),f.nodes=e;return}let i=zm(u,t);if(i){let e=i._boundMap||=new WeakMap,t=e.get(f);t||(t=()=>{let e=Lm(r.length>0?r:null),t=Fm;try{return a&&(Fm=!0),i(d)}finally{Fm=t,Lm(e)}},e.set(f,t)),f.updateSlot(t,n)}else f.updateSlot(void 0,n)};!a&&(t||u.$)?J(o):o()}if(K)f.insert&&f.hydrate(),c&&Of(o);else{if(!i){let e=l.type.__scopeId;e&&vh(f,[`${e}-s`])}o&&Z(f,o,s)}return f}var Gm=class extends En{constructor(e){super(),this.render=e;let t=U,n=()=>{this.dirty&&this.run()};this.updateJob=()=>{t.isUpdating=!1,t.u&&fe(t.u)},t&&(t.type.ce&&(t.renderEffects||=[]).push(this),n.i=t),this.job=n,this.i=t}fn(){let e=this.i,t=this.subs?this.subs.sub:void 0,n=e&&(e.bu||e.u),r=W(e,t);n&&e.isMounted&&!e.isUpdating?(e.isUpdating=!0,e.bu&&fe(e.bu),this.render(),P(this.updateJob)):this.render(),W(...r)}notify(){this.flags&256||Er(this.job,this.i?this.i.uid:void 0)}};function J(e,t=!1){if(Fm)return e();let n=new Gm(e);t&&(n.fn=e),n.run()}var Km=class{constructor(e){this.vnode=null,this.nodes=e}},qm=class extends Km{constructor(e){super(e)}},Y=class extends Km{constructor(e,t=!1){super([]),this.hydrate=(e=!1)=>{if(!K||this.anchor)return;if(this.anchorLabel===`if`){if(e){this.anchor=Nf(``);return}}else if(this.anchorLabel===`slot`){if(e&&Tf(G,``)){this.anchor=G;return}this.anchor=Nf();return}let{parentNode:t,nextNode:n}=hh(this.nodes);P(()=>{t.insertBefore(this.anchor=q(),n)})},this.keyed=t,this.slotOwner=Bm,this.keepAliveCtx=Kp,K?(this.anchorLabel=e,wf()):this.anchor=q()}update(e,t=e){if(t===this.current){K&&this.hydrate(!0);return}let n=this.$transition;if(n&&n.state.isLeaving){this.current=t,this.pending={render:e,key:t};return}let r=this.current;this.current=t;let i=U,a=A(),o=K?null:this.anchor.parentNode;if(this.scope){let t=!1,s=this.keepAliveCtx;s&&s.processShapeFlag(this.nodes)&&(s.cacheScope(r,this.scope),t=!0),t||this.scope.stop();let c=n&&n.mode;if(c){if(wh(this.nodes,n,()=>{let t=this.pending;t?(this.pending=void 0,this.current=t.key,this.renderBranch(t.render,n,o,i)):this.renderBranch(e,n,o,i)}),o&&Q(this.nodes,o),c===`out-in`){A(a);return}}else o&&Q(this.nodes,o)}this.renderBranch(e,n,o,i),A(a),K&&this.hydrate()}renderBranch(e,t,n,r){if(e){let i=this.keepAliveCtx,a=i&&i.getScope(this.current);a?this.scope=a:this.scope=new In;let o=Vm(this.slotOwner),s=qp(i),c;i&&this.keyed&&(c=i.setCurrentBranchKey(this.current));let l=n&&r?W(r):void 0;this.nodes=this.scope.run(e)||[],l!==void 0&&W(...l),i&&this.keyed&&i.setCurrentBranchKey(c),qp(s),Vm(o),this.keyed&&rh(this.nodes,this.current),t&&(this.$transition=Ch(this.nodes,t)),i&&i.processShapeFlag(this.nodes),n&&(this.attrs&&this.nodes instanceof Element&&this.scope.run(()=>{J(()=>Oh(this.nodes,this.attrs))}),Z(this.nodes,n,this.anchor),i&&t&&t.mode===`out-in`&&i.cacheBlock(),this.onUpdated&&this.onUpdated.forEach(e=>e(this.nodes)))}else this.scope=void 0,this.nodes=[]}},Jm=class extends Y{constructor(){super(K?`slot`:void 0)}updateSlot(e,t,n=e){if(!e||!t){this.update(e||t,n);return}this.update(()=>{let n=e(),r=Zm(n,t);return fh(n)?n:Xm(n,t,r)},n)}};function X(e){return e instanceof Km}function Ym(e){return e instanceof Y}function Xm(e,t,n){let r=n||eh(e);return r?(r instanceof qm?r.nodes[0]=[t()||[]]:r instanceof Y&&r.update(t),e):t()}function Zm(e,t){let n={emptyFrag:null};return $m(e,t,n),n.emptyFrag}var Qm=new WeakMap;function $m(e,t,n){if($(e)){e.block&&$m(e.block,t,n);return}if(m(e)){for(let r of e)$m(r,t,n);return}if(e instanceof qm){e.fallback=nh(e.fallback,t),fh(e.nodes)||(n.emptyFrag=e),$m(e.nodes,t,n);return}if(e instanceof Km&&e.insert){e.fallback=nh(e.fallback,t),fh(e.nodes)||(n.emptyFrag=e),$m(e.nodes,t,n);return}if(e instanceof Y){let r=Qm.get(e);if(r?r.fallback=nh(r.fallback,t):Qm.set(e,r={fallback:t,wrapped:!1}),!r.wrapped){r.wrapped=!0;let t=e.update.bind(e);e.update=(n,i)=>{t(n,i);let a=Zm(e.nodes,r.fallback);n!==r.fallback&&!fh(e.nodes)&&Xm(e,r.fallback,a)}}fh(e.nodes)||(n.emptyFrag=e),$m(e.nodes,t,n)}}function eh(e){let t=null;return th(e,e=>t=e),t}function th(e,t){if($(e)){e.block&&th(e.block,t);return}if(m(e)){for(let n of e)th(n,t);return}X(e)&&(fh(e.nodes)||t(e),th(e.nodes,t))}function nh(e,t){return e?(...n)=>{let r=e(...n);return fh(r)?r:t(...n)}:t}function rh(e,t){if(e instanceof Node)e.$key=t;else if($(e))e.key=t,rh(e.block,t);else if(m(e))for(let n of e)rh(n,t);else e.$key=t,rh(e.nodes,t)}var ih={name:`VaporTeleport`,__isTeleport:!0,__vapor:!0,process(e,t){return new ah(e,t)}},ah=class extends Km{constructor(e,t){super([]),this.__isTeleportFragment=!0,this.isMounted=!1,this.insert=(e,t)=>{K||(this.placeholder=q(),Z(this.placeholder,e,t),Z(this.anchor,e,t),this.handlePropsUpdate())},this.remove=(e=this.parent)=>{this.nodes&&=(Q(this.nodes,this.mountContainer),[]),this.isMounted=!1,this.targetStart&&(Q(this.targetStart,this.target),this.targetStart=void 0,Q(this.targetAnchor,this.target),this.targetAnchor=void 0),this.anchor&&=(Q(this.anchor,this.anchor.parentNode),void 0),this.placeholder&&=(Q(this.placeholder,e),void 0),this.mountContainer=void 0,this.mountAnchor=void 0},this.hydrate=()=>{if(!K)return;let e=this.target=yi(this.resolvedProps,zf),t=hi(this.resolvedProps);if(this.placeholder=G,e){let n=e._lpa||e.firstChild;if(t)this.hydrateDisabledTeleport(n);else{this.anchor=lh(),this.mountContainer=e;let t=n;for(;t;){if(t&&t.nodeType===8){if(t.data===`teleport start anchor`)this.targetStart=t;else if(t.data===`teleport anchor`){this.mountAnchor=this.targetAnchor=t,e._lpa=this.targetAnchor&&this.targetAnchor.nextSibling;break}}t=t.nextSibling}n&&Ef(n.nextSibling),this.targetAnchor?this.initChildren():this.mountChildren(e)}}else t&&this.hydrateDisabledTeleport(G);uh(this),Of(this.anchor)},this.rawProps=e,this.rawSlots=t,this.parentComponent=U,this.anchor=K?void 0:q(),J(()=>{let e=this.resolvedProps&&this.resolvedProps.to,t=this.isDisabled;this.resolvedProps=u({},new Proxy(this.rawProps,Pm)),this.isDisabled=hi(this.resolvedProps),(t!==this.isDisabled||!this.isDisabled&&e!==this.resolvedProps.to)&&this.handlePropsUpdate()}),K||this.initChildren()}get parent(){return this.anchor?this.anchor.parentNode:null}initChildren(){J(()=>{this.handleChildrenUpdate(this.rawSlots.default&&this.rawSlots.default())});let e=this.nodes;this.parentComponent&&this.parentComponent.ut&&this.registerUpdateCssVars(e)}registerUpdateCssVars(e){X(e)?((e.onUpdated||=[]).push(()=>uh(this)),this.registerUpdateCssVars(e.nodes)):$(e)?this.registerUpdateCssVars(e.block):m(e)&&e.forEach(e=>this.registerUpdateCssVars(e))}handleChildrenUpdate(e){if(!this.parent||K){this.nodes=e;return}Q(this.nodes,this.mountContainer),Z(this.nodes=e,this.mountContainer,this.mountAnchor)}mount(e,t){this.$transition&&!this.isMounted&&Ch(this.nodes,this.$transition),this.isMounted?ph(this.nodes,this.mountContainer=e,this.mountAnchor=t,2):(Z(this.nodes,this.mountContainer=e,this.mountAnchor=t),this.isMounted=!0)}mountToTarget(){let e=this.target=yi(this.resolvedProps,zf);e&&((!this.targetAnchor||this.targetAnchor.parentNode!==e)&&(Z(this.targetStart=q(``),e),Z(this.targetAnchor=q(``),e)),this.parentComponent&&this.parentComponent.isCE&&(this.parentComponent.ce._teleportTargets||(this.parentComponent.ce._teleportTargets=new Set)).add(e),this.mount(e,this.targetAnchor),uh(this))}handlePropsUpdate(){!this.parent||K||(this.isDisabled?(this.mount(this.parent,this.anchor),uh(this)):gi(this.resolvedProps)||!this.parent.isConnected?P(this.mountToTarget.bind(this)):this.mountToTarget())}hydrateDisabledTeleport(e){if(!K)return;let t=this.placeholder.nextSibling;Ef(t),this.mountAnchor=this.anchor=lh(t),this.mountContainer=this.anchor.parentNode,this.targetStart=e,this.targetAnchor=e&&e.nextSibling,this.initChildren()}mountChildren(e){K&&(e.appendChild(this.targetStart=q(``)),e.appendChild(this.mountAnchor=this.targetAnchor=q(``)),ba(e,1)||If(),vf(this.initChildren.bind(this)))}},oh=ih;function sh(e){return!!(e&&e.__isTeleport&&e.__vapor)}function ch(e){return!!(e&&e.__isTeleportFragment)}function lh(e=G){for(;e;){if(Tf(e,`teleport end`))return e;e=e.nextSibling}return null}function uh(e){let t=e.parentComponent;if(t&&t.ut){let n,r;for(e.isDisabled?(n=e.placeholder,r=e.anchor):(n=e.targetStart,r=e.targetAnchor);n&&n!==r;)n.nodeType===1&&n.setAttribute(`data-v-owner`,String(t.uid)),n=n.nextSibling;t.ut()}}function dh(e){return e instanceof Node||m(e)||$(e)||X(e)}function fh(e){return e instanceof Node?!(e instanceof Comment):$(e)?fh(e.block):m(e)?e.length>0&&e.some(fh):fh(e.nodes)}function Z(e,t,n=null,r){if(n=n===0?t.$fc||Uf(t):n,e instanceof Node)K||(e instanceof Element&&e.$transition&&!e.$transition.disabled?mc(e,e.$transition,()=>t.insertBefore(e,n),r):t.insertBefore(e,n));else if($(e))e.isMounted&&!e.isDeactivated?Z(e.block,t,n):Nh(e,t,n);else if(m(e))for(let r of e)Z(r,t,n);else e.anchor&&(Z(e.anchor,t,n),n=e.anchor),e.insert?e.insert(t,n,e.$transition):Z(e.nodes,t,n,r)}function ph(e,t,n=null,r=1,i,a){if(n=n===0?t.$fc||Uf(t):n,e instanceof Node)e instanceof Element&&e.$transition&&!e.$transition.disabled&&r!==2?r===0?mc(e,e.$transition,()=>t.insertBefore(e,n),a,!0):hc(e,e.$transition,()=>{r===1&&i&&i.isUnmounted?e.remove():t.insertBefore(e,n)},a,!0):t.insertBefore(e,n);else if($(e))e.isMounted?ph(e.block,t,n,r,i,a):Nh(e,t,n);else if(m(e))for(let o of e)ph(o,t,n,r,i,a);else e.anchor&&(ph(e.anchor,t,n,r,i,a),n=e.anchor),e.insert?e.insert(t,n,e.$transition):ph(e.nodes,t,n,r,i,a)}function mh(e,...t){let n=t.length;for(;n--;)Z(t[n],e,0)}function Q(e,t){if(e instanceof Node)e.$transition&&e instanceof Element?hc(e,e.$transition,()=>t&&t.removeChild(e)):t&&t.removeChild(e);else if($(e))Ph(e,t);else if(m(e))for(let n=0;n1)return;let r=[],i=t&&t.type.__scopeId;if(i===n?i&&r.push(i):r.push(n),t.subTree&&t.subTree.component===e&&t.vnode.scopeId){r.push(t.vnode.scopeId);let e=vc(t.vnode,t.parent);r.push(...e)}r.length>0&&vh(e.block,r)}var bh,xh;function Sh(e,t){bh=e,xh=t}function Ch(e,t){return bh?bh(e,t):t}function wh(e,t,n){xh&&xh(e,t,n)}function Th(e,t,n,i,a,o=U&&U.appContext||kh){let s=lf,c=uf,l=ff;K?wf():mf();let u=null;if(U&&U.suspense&&(u=cm(U.suspense)),(i||U&&Lh(U.type))&&e.inheritAttrs!==!1&&$(U)&&U.hasFallthrough){let e=U.attrs;t&&t!==r?(t.$||=[]).push(()=>e):t={$:[()=>e]}}if(U&&U.vapor&&Fa(U)){let t=U.ctx.getCachedComponent(e);if(t)return t}if(Up&&o.vapor&&!e.__vapor){let r=o.vapor.vdomMount(e,U,t,n,i);return K?(r.hydrate(),l&&Of(s)):s&&Z(r,s,c),r}if(sh(e)){let r=e.process(t,n);return K?(r.hydrate(),l&&Of(s)):s&&Z(r,s,c),r}let d=new Ah(e,t,n,o,a);Kp&&!L(d)&&(Kp.processShapeFlag(d),qp(null));let f=Vm(null);return K&&L(d)&&e.__asyncHydrate&&!e.__asyncResolved?e.__asyncHydrate(G,d,()=>Eh(d,e)):Eh(d,e),U&&U.suspense&&cm(u),Vm(f),Bn(()=>Ph(d),!0),(s||K)&&Nh(d,s,c),K&&c!==void 0&&Of(s),d}function Eh(e,t){let n=W(e),i=A(),a=y(t)?t:t.setup,o=a&&fr(a,e,0,[e.props,e])||r,s=C(o);(s||e.sp)&&!L(e)&&Gi(e),s?e.asyncDep=o:Rh(o,t,e),A(i),W(...n)}var Dh=!1;function Oh(e,t){Dh=!0,Ep(e,[t]),Dh=!1}var kh={app:null,config:{},provides:Object.create(null)},Ah=class{constructor(e,t,n,i,a){if(this.accessedAttrs=!1,this.vapor=!0,this.uid=gl(),this.type=e,this.parent=U,U?(this.root=U.root,this.appContext=U.appContext,this.provides=U.provides,this.ids=U.ids):(this.root=this,this.appContext=i||kh,this.provides=Object.create(this.appContext.provides),this.ids=[``,0,0]),this.block=null,this.scope=new In(!0),this.emit=Sm.bind(null,this),this.expose=Al.bind(null,this),this.refs=r,this.emitted=this.exposed=this.exposeProxy=this.propsDefaults=null,this.suspense=sm,this.suspenseId=sm?sm.pendingId:0,this.asyncDep=null,this.asyncResolved=!1,this.isMounted=this.isUnmounted=this.isUpdating=this.isDeactivated=!1,this.rawProps=t||r,this.hasFallthrough=Mm(e,t),t||e.props){let[t,n]=Em(e,a);this.attrs=new Proxy(this,n),this.props=e.props?new Proxy(this,t):y(e)?this.attrs:r}else this.props=this.attrs=r;this.rawSlots=n||r,this.slots=n?n.$?new Proxy(n,Rm):n:r,this.scopeId=zh(),e.ce&&e.ce(this)}rawKeys(){return km(this.rawProps)}};function $(e){return e instanceof Ah}function jh(e,t,n,r,i,a){return e===so?q(``):b(e)?Mh(e,t,n,r,i):Th(e,t,n,r,i,a)}function Mh(e,t,n,r,i){let a=lf,o=uf,s=ff;K?wf():mf();let c=K?Cf(G,`<${e}/>`):Rf(e);if(c.$root=r,!K){let e=zh();e&&vh(c,[e])}if(t){let e=()=>Ep(c,[Nm(t)]);i?e():J(e)}if(n){let e=null;if(K&&(e=Af(c),Ef(c.firstChild)),n.$){let e=new Y(K?``:void 0);J(()=>e.update(zm(n,`default`))),K||Z(e,c)}else{let e=zm(n,`default`);if(e){let t=e();K||Z(t,c)}}K&&Ef(e)}return K?s&&Of(a):a&&Z(c,a,o),c}function Nh(e,t,n){if(e.suspense&&e.asyncDep&&!e.asyncResolved){let r=e.type;e.suspense.registerDep(e,i=>{Rh(i,r,e),Nh(e,t,n)});return}if(e.shapeFlag&512){e.parent.ctx.activate(e,t,n);return}let{root:r,type:i}=e;r&&r.ce&&r.ce._hasShadowRoot()&&r.ce._injectChildStyle(i),e.bm&&fe(e.bm),K||(Z(e.block,t,n),yh(e)),e.m&&P(e.m),e.shapeFlag&256&&e.a&&P(e.a),e.isMounted=!0}function Ph(e,t){if(e.shapeFlag&256&&e.parent&&e.parent.vapor){t&&e.parent.ctx.deactivate(e);return}e.isMounted&&!e.isUnmounted&&(e.bum&&fe(e.bum),e.scope.stop(),e.um&&P(e.um),e.isUnmounted=!0),t&&Q(e.block,t)}function Fh(e){if(e.exposed)return e.exposeProxy||=new Proxy(on(e.exposed),{get:(e,t)=>hn(e[t])})}function Ih(e,t,n=!0){if(e instanceof Element)return e;if(n&&$(e))return Ih(e.block,t,n);if(X(e)&&!ch(e)){e instanceof Y&&t&&t(e);let{nodes:r}=e;return r instanceof Element&&r.$root?r:Ih(r,t,n)}if(m(e)){let r,i=!1;for(let a of e){if(a instanceof Comment){i=!0;continue}let e=Ih(a,t,n);if(!e||r)return;r=e}return i?r:void 0}}function Lh(e){return Pl(e)===`VaporTransition`}function Rh(e,t,n){if(e===r&&t.render?n.block=fr(t.render,n,1):n.block=e,n.hasFallthrough&&t.inheritAttrs!==!1&&Object.keys(n.attrs).length){let e=Ih(n.block,e=>e.attrs=n.attrs,!1);e&&J(()=>{let r=y(t)&&!Lh(t)?gs(n.attrs):n.attrs;r&&Oh(e,r)})}}function zh(){let e=Hm();return e?e.type.__scopeId:void 0}var Bh,Vh=(e,t)=>{kp(),t.nodeType===1&&(t.textContent=``);let n=e._ceComponent||Th(e._component,e._props,null,!1,!1,e._context);return Nh(n,t),Nr(),n},Hh,Uh=(e,t)=>{kp();let n;return xf(t,()=>{n=e._ceComponent||Th(e._component,e._props,null,!1,!1,e._context),Nh(n,t),Nr()}),n},Wh=e=>{Ph(e._instance,e._container)};function Gh(){rc();let e=_e();e.__VUE__=!0}function Kh(e){e.vapor=!0;let t=e.mount;e.mount=(e,...n)=>{e=of(e);let r=t(e,...n);return e instanceof Element&&(e.removeAttribute(`v-cloak`),e.setAttribute(`data-v-app`,``)),r}}var qh=(e,t)=>{Gh(),Bh||=rs(Vh,Wh,Fh);let n=Bh(e,t);return Kh(n),n},Jh=(e,t)=>{gf(!0),Gh(),Hh||=rs(Uh,Wh,Fh);let n=Hh(e,t);return Kh(n),n};function Yh(e){let{load:t,getResolvedComp:n,setPendingRequest:r,source:{loadingComponent:i,errorComponent:a,delay:o,hydrate:s,timeout:c,suspensible:l=!0}}=Ma(e);return Gp({name:`VaporAsyncComponentWrapper`,__asyncLoader:t,__asyncHydrate(e,r,i){if(!K)return;if(Tf(e,`[`)){let t=qf(Mf(e)),n=r.block=[e],i=e;for(;;){let e=qf(i);if(e&&e!==t)n.push(i=e);else break}}else r.block=e;r.isMounted=!0,Ef(Tf(e,`[`)?Mf(e):e.nextSibling);let a=!1;ci(()=>r.attrs,()=>{if(a)return;r.bu&&fe(r.bu);let n=Bf(e);t().then(()=>{if(!r.isUnmounted)if(i(),Tf(e,`[`)){let t=Mf(e);Lf(e,t),Z(r.block,n,t)}else Z(r.block,n,e),Q(e,n)})},{deep:!0,once:!0}),Pa(e,r,()=>{Sf(e,()=>{i(),Z(r.block,Bf(e),e),a=!0})},n,t,s)},get __asyncResolved(){return n()},setup(){let e=U;Gi(e);let s=K?new Y(`async component`):new Y,u=n();if(u)return s.update(()=>Xh(u,e,s)),s;let d=t=>{r(null),mr(t,e,13,!a)};l&&e.suspense;let{loaded:f,error:p,delayed:m}=Na(o,c,d);return t().then(()=>{f.value=!0}).catch(e=>{d(e),p.value=e}),J(()=>{u=n();let t;f.value&&u?t=()=>Xh(u,e,s):p.value&&a?t=()=>Th(a,{error:()=>p.value}):i&&!m.value&&(t=()=>Th(i)),s.update(t),s.keepAliveCtx&&s.keepAliveCtx.cacheBlock()}),s}})}function Xh(e,t,n){let{rawProps:r,rawSlots:i,appContext:a}=t,o=Th(e,r,i,void 0,void 0,a);return n&&n.setAsyncRef&&n.setAsyncRef(o),o}function Zh(e,t,n){let r=Gp(e,t);ee(r)&&(r=u({},r,t));class i extends $h{constructor(e){super(r,e,n)}}return i.def=r,i}var Qh=((e,t)=>Zh(e,t,Jh)),$h=class extends od{constructor(e,t={},n=qh){super(e,t,n)}_needsHydration(){return!!(this.shadowRoot&&this._createApp!==qh)}_mount(e){this._app=this._createApp(this._def),this._inheritParentContext(),this._def.configureApp&&this._def.configureApp(this._app),this.shadowRoot&&this._createApp===Jh?xf(this._root,this._createComponent.bind(this)):this._createComponent(),this._app.mount(this._root),this.shadowRoot||this._renderSlots()}_update(){if(!this._app)return;let e=this._instance.renderEffects;e&&e.forEach(e=>e.run())}_unmount(){this._app.unmount(),this._instance&&this._instance.ce&&(this._instance.ce=void 0),this._app=this._instance=null}_updateSlotNodes(e){this._updateFragmentNodes(this._instance.block,e)}_updateFragmentNodes(e,t){if(Array.isArray(e)){e.forEach(e=>this._updateFragmentNodes(e,t));return}if(!X(e))return;let{nodes:n}=e;if(Array.isArray(n)){let r=[];for(let e of n)e instanceof HTMLSlotElement?r.push(...t.get(e)):(this._updateFragmentNodes(e,t),r.push(e));e.nodes=r}else n instanceof HTMLSlotElement?e.nodes=t.get(n):this._updateFragmentNodes(n,t)}_createComponent(){this._def.ce=e=>{this._app._ceComponent=this._instance=e,this.shadowRoot||(this._instance.u=[this._renderSlots.bind(this)]),this._processInstance()},Th(this._def,this._props,void 0,void 0,void 0,this._app._context)}},eg;function tg(e,t,n){let r;return()=>{if(K){let n=Cf(G,e);return t&&(n.$root=!0),n}if(e[0]!==`<`)return q(e);if(!r)if(eg||=document.createElement(`template`),n){let t=n===1?`svg`:`math`;eg.innerHTML=`<${t}>${e}`,r=Uf(Uf(eg.content))}else eg.innerHTML=e,r=Uf(eg.content);let i=r.cloneNode(!0);return t&&(i.$root=!0),i}}function ng(e,t,n,r,i){let a=lf,o=uf,s=ff;K||mf();let c;if(r)c=e()?t():n?n():[q()];else{let r=i!=null;c=K?new Y(`if`,r):new Y(void 0,r),J(()=>{let a=e();c.update(a?t:n,r?`${i}${a?0:1}`:void 0)})}return K?s&&Of(a):a&&Z(c,a,o),c}function rg(e,t){let n=lf,r=uf,i=ff;K||mf();let a=new Y(void 0,!0);return J(()=>a.update(t,e())),K?i&&Of(n):n&&Z(a,n,r),a}var ig=class extends Km{constructor(e,t,n,r,i,a){super(e),this.scope=t,this.itemRef=n,this.keyRef=r,this.indexRef=i,this.key=a}},ag=(e,t,n,r=0,i)=>{let a=lf,o=uf,s=df,c=ff;K?wf():mf();let l=!1,u=[],d,f,p,m;K||(m=q());let h=new qm(u),g=!!(r&1),_=!!(r&2),v=[],y=Bm,b=()=>{let t=cg(e()),r=t.values.length,i=u.length;d=Array(r);let o=!1,c=A();if(l){let e=Vm(y);if(f||=m.parentNode,!i){h.fallback&&h.nodes[0].length>0&&Q(h.nodes[0],f);for(let e=0;e=0;e--){let[n,r,i]=o[e],a=y.get(i);if(a!==void 0){y.delete(i);let e=d[n]=u[a];w(e,...r),b[S++]={index:n,block:e}}else x++,b[S++]={source:t,index:n,item:r,key:i}}let E=x===r;for(let e of y.values())T(u[e],!(E&&g),!E);if(E){for(let e of v)e.cleanup();g&&(f.textContent=``,f.appendChild(m))}if(b.length===x)for(let{source:e,index:t,item:n,key:i}of b)C(e,t,te()),A(c)},x=t.length>1,S=t.length>2,C=(e,r,i=m,[a,o,s]=lg(e,r),c=n&&n(a,o,s))=>{let l=un(a),u=x?un(o):void 0,g=S?un(s):void 0;p=c;let v,y;_?v=t(l,u,g):(y=new In,v=y.run(()=>t(l,u,g)));let b=d[r]=new ig(v,y,l,u,g,c);return h.$transition&&Ch(b.nodes,h.$transition),f&&Z(b.nodes,f,i),b},w=({itemRef:e,keyRef:t,indexRef:n},r,i,a)=>{r!==e.value&&(e.value=r),t&&i!==void 0&&i!==t.value&&(t.value=i),n&&a!==void 0&&a!==n.value&&(n.value=a)},T=(e,t=!0,n=!0)=>{if(_||e.scope.stop(),t&&Q(e.nodes,f),n)for(let t of v)t.deregister(e.key)};return i&&i({createSelector:E}),r&4?b():J(b),K?Of(c?a:m):a&&Z(h,a,o),h;function E(e){let t=new Map,n=e(),r;return Zn(e,e=>{if(r!==void 0)for(let e of r)e();P(()=>{if(n=e,r=t.get(e),r!==void 0)for(let e of r)e()})}),v.push({deregister:o,cleanup:i}),a;function i(){t=new Map,r=void 0}function a(e){e();let i=t.get(p);i===void 0?(i=[e],t.set(p,i),p===n&&(r=i)):i.push(e)}function o(e){t.delete(e),e===n&&(r=void 0)}}};function og(e,t,n){let{prev:r,next:i}=e;r&&(r.next=i),i&&(i.prev=r,e.prevAnchor!==e&&(i.prevAnchor=e.prevAnchor)),t&&(t.next=e),n&&(n.prev=e),e.prev=t,e.next=n,e.prevAnchor=e}function sg(e,t){let n=cg(e),r=n.values.length,i=Array(r);for(let e=0;e{t.fn(),mg.delete(e)})),t}function gg(){let e=U,t=new WeakMap;return(n,r,i,a)=>{let o=_g(e,n,r,t.get(n),i,a);return t.set(n,o),o}}function _g(e,t,n,i,a=!1,o){if(!e||e.isUnmounted)return;if(X(t)&&t.setRef){t.setRef(e,n,a,o);return}if($(t)&&L(t)){let r=t.block;if(!t.type.__asyncResolved){r.setAsyncRef=t=>_g(e,t,n,i,a);return}t=r.nodes}let s=vg(t),c=e.refs===r?e.refs={}:e.refs,l=(e,t)=>!(t&&Ji(c,t));if(i!=null&&i!==n&&(b(i)?c[i]=null:N(i)&&l(i)&&(i.value=null)),y(n)){let e=e=>{fr(n,U,12,[e,c])};e(s),hg(t).fn=()=>e(null)}else{let e=b(n),r=N(n),i;(e||r)&&(P(()=>{a?(i=e?c[n]:l(n)||!o?n.value:c[o],m(i)?i.includes(s)||i.push(s):(i=[s],e?c[n]=i:(l(n,o)&&(n.value=i),o&&(c[o]=i)))):e?c[n]=s:r&&(l(n,o)&&(n.value=s),o&&(c[o]=s))},-1),hg(t).fn=()=>{P(()=>{m(i)?d(i,s):e?c[n]=null:r&&(l(n,o)&&(n.value=null),o&&(c[o]=null))})})}return n}var vg=e=>$(e)?Fh(e)||e:e instanceof Y?vg(e.nodes):e;function yg(e){let t=U;ju(t,()=>bg(t.block),e,e=>xg(t,e))}function bg(e){return e instanceof Node?e.parentNode:m(e)?bg(e[e.length-1]):$(e)?bg(e.block):bg(e.anchor||e.nodes)}function xg(e,t){e.ce?Mu(e.ce,t):Sg(e.block,t)}function Sg(e,t){e instanceof Node?Mu(e,t):m(e)?e.forEach(e=>Sg(e,t)):$(e)?Sg(e.block,t):Sg(e.nodes,t)}function Cg(e,t,n,r,i){let a=lf,o=uf,s=ff;K||mf();let c=K?new Y(`dynamic-component`):new Y,l=()=>{let o=e(),l=U&&U.appContext||kh;c.update(()=>{if(dh(o))return o;if(Up&&l.vapor&&V(o)){if(Fa(U)){let e=U.ctx.getCachedComponent(o.type,o.key);if(e)return e}let e=l.vapor.vdomMountVNode(o,U);return K&&(e.hydrate(),s&&Of(a)),e}return jh(co(o),t,n,r,i,l)},o)};return i?l():J(l),K?s&&Of(a):a&&Z(c,a,o),c}function wg(e,t){if($(e))return wg(e.block,t);if(m(e)&&e.length===1)return wg(e[0],t);if(e instanceof Y){let n=e.update;e.update=(r,i)=>{n.call(e,r,i),Tg(e,t())}}else if(e instanceof Km&&e.insert){let n=e.insert;e.insert=(r,i)=>{n.call(e,r,i),Tg(e,t())}}J(()=>Tg(e,t()))}function Tg(e,t){if($(e))return Tg(e.block,t);if(m(e)){if(e.length===0)return;if(e.length===1)return Tg(e[0],t)}if(X(e))return Tg(e.nodes,t);if(e instanceof Element){let n=e;Cu in n||(n[Cu]=n.style.display===`none`?``:n.style.display);let{$transition:r}=e;r?t?(r.beforeEnter(e),n.style.display=n[Cu],r.enter(e)):e.isConnected?r.leave(e,()=>{n.style.display=`none`}):n.style.display=`none`:n.style.display=t?n[Cu]:`none`,n[wu]=!t}}function Eg(e){U.isMounted?e():Ya(e)}var Dg=(e,t,n,{trim:r,number:i,lazy:a}={})=>{kd(e,r,i,a,n),Eg(()=>{let n;J(()=>{Ad(e,n,n=t(),r,i,a)})})},Og=(e,t,n)=>{Md(e,n),Eg(()=>{let n;J(()=>{Nd(e,n,Qn(n=t()))})})},kg=(e,t,n)=>{np(e,`change`,()=>n(Rd(e))),Eg(()=>{let n;J(()=>{n!==(n=t())&&(e.checked=Ie(n,Rd(e)))})})},Ag=(e,t,n,r)=>{Id(e,t(),r&&r.number,n),Eg(()=>{J(()=>Ld(e,Qn(t())))})},jg=(e,t,n,r)=>{let i=Dg;e.tagName===`SELECT`?i=Ag:e.tagName===`TEXTAREA`?i=Dg:e.type===`checkbox`?i=Og:e.type===`radio`&&(i=kg),i(e,t,n,r)};function Mg(e,t){let n=$(e)?Ih(e.block):e;if(n){for(let[e,r,i,a]of t)if(e){let t=e(n,r,i,a);t&&Bn(t)}}}var Ng=new WeakMap,Pg=new WeakMap,Fg=(e=>(delete e.props.mode,e))(Gp({name:`VaporTransitionGroup`,props:u({},ou,{tag:String,moveClass:String}),setup(e,{slots:t}){Np();let n=U,r=Oi(),i=uu(e),a=new Proxy({},{get(e,t){return i[t]}});J(()=>{i=uu(e)});let o,s,c=t.default&&t.default();Xa(()=>{if(o=[],s=Ig(c),s)for(let e=0;e{if(!o.length)return;let t=e.moveClass||`${e.name||`v`}-move`,n=Vg(o);if(!n||!xd(n,n.parentNode,t)){o=[];return}o.forEach(gd),o.forEach(e=>{e.$transition.disabled=!1,zg(e)});let r=o.filter(Bg);xu(),r.forEach(e=>Sd(Rg(e),t)),o=[]}),Vp(c,{props:a,state:r,instance:n}),s=Ig(c);for(let e=0;ee.$key=r.key),t.push(...i)}else X(e)&&(e.insert?t.push(e):t.push(...Ig(e.nodes)));return t}function Lg(e){return!!(e instanceof Element||X(e)&&e.insert)}function Rg(e){return X(e)?e.nodes:e}function zg(e){Pg.set(e,Rg(e).getBoundingClientRect())}function Bg(e){if(yd(Ng.get(e),Pg.get(e),Rg(e)))return e}function Vg(e){for(let t=0;tPi,BaseTransitionPropsValidators:()=>Ai,Comment:()=>B,DeprecationTypes:()=>null,DynamicFragment:()=>Y,EffectScope:()=>In,ErrorCodes:()=>ur,ErrorTypeStrings:()=>Wl,Fragment:()=>z,KeepAlive:()=>Ia,MismatchTypes:()=>va,MoveType:()=>ic,NULL_DYNAMIC_COMPONENT:()=>so,ReactiveEffect:()=>En,Static:()=>Pc,Suspense:()=>Sc,Teleport:()=>Ci,Text:()=>Nc,TrackOpTypes:()=>Un,Transition:()=>su,TransitionGroup:()=>hd,TransitionPropsValidators:()=>ou,TriggerOpTypes:()=>Wn,VaporElement:()=>$h,VaporFragment:()=>Km,VaporKeepAlive:()=>Zp,VaporTeleport:()=>oh,VaporTransition:()=>Fp,VaporTransitionGroup:()=>Fg,VueElement:()=>sd,VueElementBase:()=>od,activate:()=>Wa,applyCheckboxModel:()=>Og,applyDynamicModel:()=>jg,applyRadioModel:()=>kg,applySelectModel:()=>Ag,applyTextModel:()=>Dg,applyVShow:()=>wg,assertNumber:()=>lr,baseApplyTranslation:()=>yd,baseEmit:()=>cs,baseNormalizePropsOptions:()=>Ms,baseResolveTransitionHooks:()=>Li,baseUseCssVars:()=>ju,callPendingCbs:()=>gd,callWithAsyncErrorHandling:()=>pr,callWithErrorHandling:()=>fr,camelize:()=>D,capitalize:()=>le,checkTransitionMode:()=>Hi,child:()=>Xf,cloneVNode:()=>Qc,compatUtils:()=>null,compile:()=>Ug,computed:()=>Ll,createApp:()=>nf,createAppAPI:()=>rs,createAsyncComponentContext:()=>Ma,createBlock:()=>Wc,createCanSetSetupRefChecker:()=>Zi,createCommentVNode:()=>tl,createComponent:()=>Th,createComponentWithFallback:()=>jh,createDynamicComponent:()=>Cg,createElementBlock:()=>Uc,createElementVNode:()=>Yc,createFor:()=>ag,createForSlots:()=>sg,createHydrationRenderer:()=>oc,createIf:()=>ng,createInternalObject:()=>Cs,createInvoker:()=>lp,createKeyedFragment:()=>rg,createPlainElement:()=>Mh,createPropsRestProxy:()=>Ro,createRenderer:()=>ac,createSSRApp:()=>rf,createSlot:()=>Wm,createSlots:()=>mo,createStaticVNode:()=>el,createTemplateRefSetter:()=>gg,createTextNode:()=>q,createTextVNode:()=>$c,createVNode:()=>H,createVaporApp:()=>qh,createVaporSSRApp:()=>Jh,currentInstance:()=>U,customRef:()=>bn,deactivate:()=>Ga,defineAsyncComponent:()=>Aa,defineComponent:()=>Ui,defineCustomElement:()=>rd,defineEmits:()=>Eo,defineExpose:()=>Do,defineModel:()=>Ao,defineOptions:()=>Oo,defineProps:()=>To,defineSSRCustomElement:()=>id,defineSlots:()=>ko,defineVaporAsyncComponent:()=>Yh,defineVaporComponent:()=>Gp,defineVaporCustomElement:()=>Zh,defineVaporSSRCustomElement:()=>Qh,delegate:()=>ip,delegateEvents:()=>op,devtools:()=>Gl,devtoolsComponentAdded:()=>Gr,effect:()=>Dn,effectScope:()=>Ln,endMeasure:()=>ec,ensureHydrationRenderer:()=>$d,ensureRenderer:()=>Qd,ensureVaporSlotFallback:()=>_o,expose:()=>Al,flushOnAppMount:()=>Nr,forceReflow:()=>xu,getAttributeMismatch:()=>ua,getComponentName:()=>Pl,getCurrentInstance:()=>cl,getCurrentScope:()=>Rn,getCurrentWatcher:()=>qn,getDefaultValue:()=>fg,getFunctionalFallthrough:()=>gs,getInheritedScopeIds:()=>vc,getRestElement:()=>dg,getTransitionRawChildren:()=>Vi,guardReactiveProps:()=>Zc,h:()=>Rl,handleError:()=>mr,handleMovedChildren:()=>Sd,hasCSSTransform:()=>xd,hasInjectionContext:()=>ni,hydrate:()=>tf,hydrateOnIdle:()=>wa,hydrateOnInteraction:()=>Oa,hydrateOnMediaQuery:()=>Da,hydrateOnVisible:()=>Ea,initCustomFormatter:()=>zl,initDirectivesForSSR:()=>cf,initFeatureFlags:()=>rc,inject:()=>ti,insert:()=>Z,isAsyncWrapper:()=>L,isEmitListener:()=>fs,isFragment:()=>X,isHydrating:()=>ta,isKeepAlive:()=>Fa,isMapEqual:()=>ga,isMemoSame:()=>Vl,isMismatchAllowed:()=>ba,isProxy:()=>an,isReactive:()=>tn,isReadonly:()=>nn,isRef:()=>N,isRuntimeOnly:()=>El,isSetEqual:()=>ma,isShallow:()=>rn,isTeleportDeferred:()=>gi,isTeleportDisabled:()=>hi,isTemplateNode:()=>la,isTemplateRefKey:()=>Ji,isVNode:()=>V,isValidHtmlOrSvgAttribute:()=>da,isVaporComponent:()=>$,knownTemplateRefs:()=>Ki,leaveCbKey:()=>Ei,markAsyncBoundary:()=>Gi,markRaw:()=>on,matches:()=>La,mergeDefaults:()=>Io,mergeModels:()=>Lo,mergeProps:()=>al,next:()=>Zf,nextTick:()=>wr,nextUid:()=>gl,nodeOps:()=>tu,normalizeClass:()=>Te,normalizeContainer:()=>of,normalizeProps:()=>Ee,normalizeRef:()=>Jc,normalizeStyle:()=>be,nthChild:()=>Qf,on:()=>rp,onActivated:()=>Ra,onBeforeMount:()=>Ja,onBeforeUnmount:()=>Qa,onBeforeUpdate:()=>Xa,onDeactivated:()=>za,onErrorCaptured:()=>ro,onMounted:()=>Ya,onRenderTracked:()=>no,onRenderTriggered:()=>to,onScopeDispose:()=>Bn,onServerPrefetch:()=>eo,onUnmounted:()=>$a,onUpdated:()=>Za,onWatcherCleanup:()=>Jn,openBlock:()=>Rc,patchProp:()=>ed,patchStyle:()=>Pu,performAsyncHydrate:()=>Pa,performTransitionEnter:()=>mc,performTransitionLeave:()=>hc,popScopeId:()=>Xr,popWarningContext:()=>tr,prepend:()=>mh,provide:()=>ei,proxyRefs:()=>vn,pushScopeId:()=>Yr,pushWarningContext:()=>er,queueJob:()=>Er,queuePostFlushCb:()=>P,reactive:()=>Xt,readonly:()=>Qt,ref:()=>ln,registerHMR:()=>Ir,registerRuntimeCompiler:()=>Tl,remove:()=>Q,render:()=>ef,renderEffect:()=>J,renderList:()=>po,renderSlot:()=>ho,resetShapeFlag:()=>Ha,resolveComponent:()=>oo,resolveDirective:()=>lo,resolveDynamicComponent:()=>co,resolveFilter:()=>null,resolvePropValue:()=>Os,resolveTeleportTarget:()=>yi,resolveTransitionHooks:()=>Ii,resolveTransitionProps:()=>uu,setAttr:()=>fp,setBlockHtml:()=>wp,setBlockText:()=>xp,setBlockTracking:()=>Vc,setClass:()=>mp,setCurrentInstance:()=>W,setDOMProp:()=>pp,setDevtoolsHook:()=>Kl,setDynamicEvents:()=>cp,setDynamicProps:()=>Ep,setElementText:()=>bp,setHtml:()=>Cp,setInsertionState:()=>pf,setIsHydratingEnabled:()=>ea,setProp:()=>dp,setRef:()=>Xi,setStyle:()=>gp,setText:()=>yp,setTransitionHooks:()=>Bi,setValue:()=>vp,setVarsOnNode:()=>Mu,shallowReactive:()=>Zt,shallowReadonly:()=>$t,shallowRef:()=>un,shouldSetAsProp:()=>td,simpleSetCurrentInstance:()=>dl,ssrContextKey:()=>ri,ssrUtils:()=>ql,startMeasure:()=>$s,stop:()=>On,svgNS:()=>Zl,template:()=>tg,toClassSet:()=>pa,toDisplayString:()=>ze,toHandlerKey:()=>ue,toHandlers:()=>vo,toRaw:()=>M,toRef:()=>wn,toRefs:()=>xn,toStyleMap:()=>ha,toValue:()=>gn,transformVNodeArgs:()=>Kc,triggerRef:()=>pn,txt:()=>Yf,unref:()=>hn,unregisterHMR:()=>Lr,unsafeToTrustedHTML:()=>Xl,useAsyncComponentState:()=>Na,useAttrs:()=>No,useCssModule:()=>ud,useCssVars:()=>ku,useHost:()=>cd,useId:()=>Wi,useInstanceOption:()=>pl,useModel:()=>as,useSSRContext:()=>ii,useShadowRoot:()=>ld,useSlots:()=>Mo,useTemplateRef:()=>qi,useTransitionState:()=>Oi,useVaporCssVars:()=>yg,vModelCheckbox:()=>jd,vModelCheckboxInit:()=>Md,vModelCheckboxUpdate:()=>Nd,vModelDynamic:()=>Bd,vModelGetValue:()=>Rd,vModelRadio:()=>Pd,vModelSelect:()=>Fd,vModelSelectInit:()=>Id,vModelSetSelected:()=>Ld,vModelText:()=>Dd,vModelTextInit:()=>kd,vModelTextUpdate:()=>Ad,vShow:()=>Tu,vShowHidden:()=>wu,vShowOriginalDisplay:()=>Cu,validateComponentName:()=>vl,validateProps:()=>Fs,vaporInteropPlugin:()=>_m,version:()=>Hl,warn:()=>Ul,warnExtraneousAttributes:()=>ms,warnPropMismatch:()=>fa,watch:()=>ci,watchEffect:()=>ai,watchPostEffect:()=>oi,watchSyncEffect:()=>si,withAsyncContext:()=>zo,withCtx:()=>Qr,withDefaults:()=>jo,withDirectives:()=>$r,withKeys:()=>Jd,withMemo:()=>Bl,withModifiers:()=>Kd,withScopeId:()=>Zr,withVaporCtx:()=>Um,withVaporDirectives:()=>Mg,xlinkNS:()=>Bu}),Ug=e=>a;export{Bl as $,Qa as A,co as B,ni as C,be as Ct,al as D,Lo as E,Rc as F,Mo as G,No as H,ei as I,ci as J,qi as K,po as L,Ya as M,$a as N,wr as O,Za as P,Qr as Q,ho as R,Rl as S,Ee as St,Io as T,ue as Tt,Wi as U,vo as V,as as W,oi as X,ai as Y,si as Z,H as _,gn as _t,B as a,N as at,cl as b,D as bt,Ci as c,Xt as ct,Ll as d,Zt as dt,bn as et,Yc as f,$t as ft,$c as g,xn as gt,Uc as h,wn as ht,Kd as i,tn as it,za as j,Ra as k,Nc as l,Qt as lt,tl as m,M as mt,nf as n,Rn as nt,z as o,on as ot,Wc as p,un as pt,Hl as q,Jd as r,an as rt,Sc as s,Bn as st,Hg as t,Ln as tt,Qc as u,ln as ut,Aa as v,pn as vt,ti as w,ze as wt,Zc as x,Te as xt,Ui as y,hn as yt,oo as z}; \ No newline at end of file diff --git a/assets/public/dist/favicon.ico b/assets/public/dist/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/assets/public/dist/favicon.ico differ diff --git a/assets/public/dist/index.html b/assets/public/dist/index.html new file mode 100644 index 0000000..6b4e61f --- /dev/null +++ b/assets/public/dist/index.html @@ -0,0 +1,38 @@ + + + + + + + TimeTracker + + + + + + + + + + + + + + + + + + +
+ + diff --git a/assets/public/font/inter/inter-v20-latin-100.woff2 b/assets/public/font/inter/inter-v20-latin-100.woff2 new file mode 100644 index 0000000..fbcfb9e Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-100.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-100italic.woff2 b/assets/public/font/inter/inter-v20-latin-100italic.woff2 new file mode 100644 index 0000000..8427f11 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-100italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-200.woff2 b/assets/public/font/inter/inter-v20-latin-200.woff2 new file mode 100644 index 0000000..37267df Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-200.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-200italic.woff2 b/assets/public/font/inter/inter-v20-latin-200italic.woff2 new file mode 100644 index 0000000..cb15f8d Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-200italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-300.woff2 b/assets/public/font/inter/inter-v20-latin-300.woff2 new file mode 100644 index 0000000..ece952c Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-300.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-300italic.woff2 b/assets/public/font/inter/inter-v20-latin-300italic.woff2 new file mode 100644 index 0000000..dd92d3b Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-300italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-500.woff2 b/assets/public/font/inter/inter-v20-latin-500.woff2 new file mode 100644 index 0000000..54f0a59 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-500.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-500italic.woff2 b/assets/public/font/inter/inter-v20-latin-500italic.woff2 new file mode 100644 index 0000000..f4f25da Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-500italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-600.woff2 b/assets/public/font/inter/inter-v20-latin-600.woff2 new file mode 100644 index 0000000..d189794 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-600.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-600italic.woff2 b/assets/public/font/inter/inter-v20-latin-600italic.woff2 new file mode 100644 index 0000000..e882c78 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-600italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-700.woff2 b/assets/public/font/inter/inter-v20-latin-700.woff2 new file mode 100644 index 0000000..a68fb10 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-700.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-700italic.woff2 b/assets/public/font/inter/inter-v20-latin-700italic.woff2 new file mode 100644 index 0000000..48b6e5b Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-700italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-800.woff2 b/assets/public/font/inter/inter-v20-latin-800.woff2 new file mode 100644 index 0000000..74a16d4 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-800.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-800italic.woff2 b/assets/public/font/inter/inter-v20-latin-800italic.woff2 new file mode 100644 index 0000000..e98fa7e Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-800italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-900.woff2 b/assets/public/font/inter/inter-v20-latin-900.woff2 new file mode 100644 index 0000000..4db8333 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-900.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-900italic.woff2 b/assets/public/font/inter/inter-v20-latin-900italic.woff2 new file mode 100644 index 0000000..291eafc Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-900italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-italic.woff2 b/assets/public/font/inter/inter-v20-latin-italic.woff2 new file mode 100644 index 0000000..9e98286 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-italic.woff2 differ diff --git a/assets/public/font/inter/inter-v20-latin-regular.woff2 b/assets/public/font/inter/inter-v20-latin-regular.woff2 new file mode 100644 index 0000000..f15b025 Binary files /dev/null and b/assets/public/font/inter/inter-v20-latin-regular.woff2 differ diff --git a/assets/public/img/favicon.ico b/assets/public/img/favicon.ico new file mode 100644 index 0000000..678a954 Binary files /dev/null and b/assets/public/img/favicon.ico differ diff --git a/assets/public/img/favicon.png b/assets/public/img/favicon.png new file mode 100644 index 0000000..b2b6526 Binary files /dev/null and b/assets/public/img/favicon.png differ diff --git a/bin/timetracker b/bin/timetracker new file mode 100755 index 0000000..bf86d52 Binary files /dev/null and b/bin/timetracker differ diff --git a/bo/.editorconfig b/bo/.editorconfig new file mode 100644 index 0000000..721dd69 --- /dev/null +++ b/bo/.editorconfig @@ -0,0 +1,8 @@ +[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}] +charset = utf-8 +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf +max_line_length = 200 diff --git a/bo/.gitattributes b/bo/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/bo/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/bo/.gitignore b/bo/.gitignore new file mode 100644 index 0000000..cd68f14 --- /dev/null +++ b/bo/.gitignore @@ -0,0 +1,39 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo + +.eslintcache + +# Cypress +/cypress/videos/ +/cypress/screenshots/ + +# Vitest +__screenshots__/ + +# Vite +*.timestamp-*-*.mjs diff --git a/bo/.oxlintrc.json b/bo/.oxlintrc.json new file mode 100644 index 0000000..d5648b9 --- /dev/null +++ b/bo/.oxlintrc.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["eslint", "typescript", "unicorn", "oxc", "vue"], + "env": { + "browser": true + }, + "categories": { + "correctness": "error" + } +} diff --git a/bo/.prettierrc.json b/bo/.prettierrc.json new file mode 100644 index 0000000..bc1a818 --- /dev/null +++ b/bo/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "singleQuote": true, + "printWidth": 160, + "singleAttributePerLine": false +} diff --git a/bo/README.md b/bo/README.md new file mode 100644 index 0000000..d0960dd --- /dev/null +++ b/bo/README.md @@ -0,0 +1,48 @@ +# bo + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Recommended Browser Setup + +- Chromium-based browsers (Chrome, Edge, Brave, etc.): + - [Vue.js devtools](https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd) + - [Turn on Custom Object Formatter in Chrome DevTools](http://bit.ly/object-formatters) +- Firefox: + - [Vue.js devtools](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/) + - [Turn on Custom Object Formatter in Firefox DevTools](https://fxdx.dev/firefox-devtools-custom-object-formatters/) + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +bun install +``` + +### Compile and Hot-Reload for Development + +```sh +bun dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +bun run build +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +bun lint +``` diff --git a/bo/auto-imports.d.ts b/bo/auto-imports.d.ts new file mode 100644 index 0000000..6f9e1e7 --- /dev/null +++ b/bo/auto-imports.d.ts @@ -0,0 +1,74 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +// biome-ignore lint: disable +export {} +declare global { + const avatarGroupInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useAvatarGroup.js').avatarGroupInjectionKey + const defineLocale: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/defineLocale.js').defineLocale + const defineShortcuts: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/defineShortcuts.js').defineShortcuts + const extendLocale: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/defineLocale.js').extendLocale + const extractShortcuts: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/defineShortcuts.js').extractShortcuts + const fieldGroupInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFieldGroup.js').fieldGroupInjectionKey + const formBusInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').formBusInjectionKey + const formErrorsInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').formErrorsInjectionKey + const formFieldInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').formFieldInjectionKey + const formInputsInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').formInputsInjectionKey + const formLoadingInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').formLoadingInjectionKey + const formOptionsInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').formOptionsInjectionKey + const formStateInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').formStateInjectionKey + const inputIdInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').inputIdInjectionKey + const kbdKeysMap: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useKbd.js').kbdKeysMap + const localeContextInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useLocale.js').localeContextInjectionKey + const portalTargetInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/usePortal.js').portalTargetInjectionKey + const provideThemeContext: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useComponentUI.js').provideThemeContext + const toastMaxInjectionKey: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useToast.js').toastMaxInjectionKey + const useAppConfig: typeof import('./node_modules/@nuxt/ui/dist/runtime/vue/composables/useAppConfig.js').useAppConfig + const useAvatarGroup: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useAvatarGroup.js').useAvatarGroup + const useComponentIcons: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useComponentIcons.js').useComponentIcons + const useComponentUI: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useComponentUI.js').useComponentUI + const useContentSearch: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useContentSearch.js').useContentSearch + const useEditorMenu: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useEditorMenu.js').useEditorMenu + const useFieldGroup: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFieldGroup.js').useFieldGroup + const useFileUpload: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFileUpload.js').useFileUpload + const useFormField: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useFormField.js').useFormField + const useKbd: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useKbd.js').useKbd + const useLocale: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useLocale.js').useLocale + const useOverlay: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useOverlay.js').useOverlay + const usePortal: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/usePortal.js').usePortal + const useResizable: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useResizable.js').useResizable + const useScrollspy: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useScrollspy.js').useScrollspy + const useToast: typeof import('./node_modules/@nuxt/ui/dist/runtime/composables/useToast.js').useToast +} +// for type re-export +declare global { + // @ts-ignore + export type { ShortcutConfig, ShortcutsConfig, ShortcutsOptions } from './node_modules/@nuxt/ui/dist/runtime/composables/defineShortcuts.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/defineShortcuts.d') + // @ts-ignore + export type { UseComponentIconsProps } from './node_modules/@nuxt/ui/dist/runtime/composables/useComponentIcons.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useComponentIcons.d') + // @ts-ignore + export type { ThemeUI, ThemeRootContext } from './node_modules/@nuxt/ui/dist/runtime/composables/useComponentUI.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useComponentUI.d') + // @ts-ignore + export type { EditorMenuOptions } from './node_modules/@nuxt/ui/dist/runtime/composables/useEditorMenu.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useEditorMenu.d') + // @ts-ignore + export type { UseFileUploadOptions } from './node_modules/@nuxt/ui/dist/runtime/composables/useFileUpload.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useFileUpload.d') + // @ts-ignore + export type { KbdKey, KbdKeySpecific } from './node_modules/@nuxt/ui/dist/runtime/composables/useKbd.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useKbd.d') + // @ts-ignore + export type { OverlayOptions, Overlay } from './node_modules/@nuxt/ui/dist/runtime/composables/useOverlay.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useOverlay.d') + // @ts-ignore + export type { UseResizableProps, UseResizableReturn } from './node_modules/@nuxt/ui/dist/runtime/composables/useResizable.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useResizable.d') + // @ts-ignore + export type { Toast } from './node_modules/@nuxt/ui/dist/runtime/composables/useToast.d' + import('./node_modules/@nuxt/ui/dist/runtime/composables/useToast.d') +} diff --git a/bo/bun.lock b/bo/bun.lock new file mode 100644 index 0000000..2697514 --- /dev/null +++ b/bo/bun.lock @@ -0,0 +1,1281 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "bo", + "dependencies": { + "@nuxt/ui": "^4.5.0", + "@tailwindcss/vite": "^4.2.0", + "chart.js": "^4.5.1", + "pinia": "^3.0.4", + "tailwindcss": "^4.2.0", + "vue": "beta", + "vue-chartjs": "^5.3.3", + "vue-i18n": "11", + "vue-router": "^5.0.2", + }, + "devDependencies": { + "@tsconfig/node24": "^24.0.4", + "@types/node": "^24.10.13", + "@vitejs/plugin-vue": "^6.0.4", + "@vue/eslint-config-typescript": "^14.6.0", + "@vue/tsconfig": "^0.8.1", + "jiti": "^2.6.1", + "npm-run-all2": "^8.0.4", + "oxlint": "~1.47.0", + "prettier": "3.8.1", + "typescript": "~5.9.3", + "vite": "beta", + "vite-plugin-vue-devtools": "^8.0.6", + "vue-tsc": "^3.2.4", + }, + }, + }, + "overrides": { + "@vue/compat": "beta", + "@vue/compiler-core": "beta", + "@vue/compiler-dom": "beta", + "@vue/compiler-sfc": "beta", + "@vue/compiler-ssr": "beta", + "@vue/compiler-vapor": "beta", + "@vue/reactivity": "beta", + "@vue/runtime-core": "beta", + "@vue/runtime-dom": "beta", + "@vue/runtime-vapor": "beta", + "@vue/server-renderer": "beta", + "@vue/shared": "beta", + "vue": "beta", + }, + "packages": { + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], + + "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], + + "@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="], + + "@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], + + "@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], + + "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], + + "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.28.6", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + + "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.28.5", "", { "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" } }, "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.28.6", "", { "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.6", "", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA=="], + + "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.28.6", "", {}, "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug=="], + + "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.28.6", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg=="], + + "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + + "@babel/helpers": ["@babel/helpers@7.28.6", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw=="], + + "@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + + "@babel/plugin-proposal-decorators": ["@babel/plugin-proposal-decorators@7.29.0", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/plugin-syntax-decorators": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA=="], + + "@babel/plugin-syntax-decorators": ["@babel/plugin-syntax-decorators@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA=="], + + "@babel/plugin-syntax-import-attributes": ["@babel/plugin-syntax-import-attributes@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw=="], + + "@babel/plugin-syntax-import-meta": ["@babel/plugin-syntax-import-meta@7.10.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g=="], + + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A=="], + + "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.28.6", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw=="], + + "@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], + + "@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="], + + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], + + "@capsizecss/unpack": ["@capsizecss/unpack@4.0.0", "", { "dependencies": { "fontkitten": "^1.0.0" } }, "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA=="], + + "@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], + + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], + + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], + + "@eslint/config-array": ["@eslint/config-array@0.23.2", "", { "dependencies": { "@eslint/object-schema": "^3.0.2", "debug": "^4.3.1", "minimatch": "^10.2.1" } }, "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A=="], + + "@eslint/config-helpers": ["@eslint/config-helpers@0.5.2", "", { "dependencies": { "@eslint/core": "^1.1.0" } }, "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ=="], + + "@eslint/core": ["@eslint/core@1.1.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw=="], + + "@eslint/object-schema": ["@eslint/object-schema@3.0.2", "", {}, "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw=="], + + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.6.0", "", { "dependencies": { "@eslint/core": "^1.1.0", "levn": "^0.4.1" } }, "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ=="], + + "@floating-ui/core": ["@floating-ui/core@1.7.4", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg=="], + + "@floating-ui/dom": ["@floating-ui/dom@1.7.5", "", { "dependencies": { "@floating-ui/core": "^1.7.4", "@floating-ui/utils": "^0.2.10" } }, "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], + + "@floating-ui/vue": ["@floating-ui/vue@1.1.10", "", { "dependencies": { "@floating-ui/dom": "^1.7.5", "@floating-ui/utils": "^0.2.10", "vue-demi": ">=0.13.0" } }, "sha512-vdf8f6rHnFPPLRsmL4p12wYl+Ux4mOJOkjzKEMYVnwdf7UFdvBtHlLvQyx8iKG5vhPRbDRgZxdtpmyigDPjzYg=="], + + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], + + "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], + + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], + + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], + + "@iconify/collections": ["@iconify/collections@1.0.654", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-xpxyDlrndFo7z6tRyybLA8U/fzX5b+EZThqqudjbfDRknLWpjQykefbCZLFvp/XMRJCWk75JN0jFtG1Cw+Dbsw=="], + + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@iconify/utils": ["@iconify/utils@3.1.0", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "mlly": "^1.8.0" } }, "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw=="], + + "@iconify/vue": ["@iconify/vue@5.0.0", "", { "dependencies": { "@iconify/types": "^2.0.0" }, "peerDependencies": { "vue": ">=3" } }, "sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg=="], + + "@internationalized/date": ["@internationalized/date@3.11.0", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q=="], + + "@internationalized/number": ["@internationalized/number@3.6.5", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g=="], + + "@intlify/core-base": ["@intlify/core-base@11.2.8", "", { "dependencies": { "@intlify/message-compiler": "11.2.8", "@intlify/shared": "11.2.8" } }, "sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA=="], + + "@intlify/message-compiler": ["@intlify/message-compiler@11.2.8", "", { "dependencies": { "@intlify/shared": "11.2.8", "source-map-js": "^1.0.2" } }, "sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ=="], + + "@intlify/shared": ["@intlify/shared@11.2.8", "", {}, "sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@kurkle/color": ["@kurkle/color@0.3.4", "", {}, "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@nuxt/devtools-kit": ["@nuxt/devtools-kit@3.2.2", "", { "dependencies": { "@nuxt/kit": "^4.3.1", "execa": "^8.0.1" }, "peerDependencies": { "vite": ">=6.0" } }, "sha512-07E1phqoVPNlexlkrYuOMPhTzLIRjcl9iEqyc/vZLH2zWeH/T1X3v+RLTVW5Oio40f/XBp9yQuyihmX34ddjgQ=="], + + "@nuxt/fonts": ["@nuxt/fonts@0.14.0", "", { "dependencies": { "@nuxt/devtools-kit": "^3.2.1", "@nuxt/kit": "^4.2.2", "consola": "^3.4.2", "defu": "^6.1.4", "fontless": "^0.2.1", "h3": "^1.15.5", "magic-regexp": "^0.10.0", "ofetch": "^1.5.1", "pathe": "^2.0.3", "sirv": "^3.0.2", "tinyglobby": "^0.2.15", "ufo": "^1.6.3", "unifont": "^0.7.4", "unplugin": "^3.0.0", "unstorage": "^1.17.4" } }, "sha512-4uXQl9fa5F4ibdgU8zomoOcyMdnwgdem+Pi8JEqeDYI5yPR32Kam6HnuRr47dTb97CstaepAvXPWQUUHMtjsFQ=="], + + "@nuxt/icon": ["@nuxt/icon@2.2.1", "", { "dependencies": { "@iconify/collections": "^1.0.641", "@iconify/types": "^2.0.0", "@iconify/utils": "^3.1.0", "@iconify/vue": "^5.0.0", "@nuxt/devtools-kit": "^3.1.1", "@nuxt/kit": "^4.2.2", "consola": "^3.4.2", "local-pkg": "^1.1.2", "mlly": "^1.8.0", "ohash": "^2.0.11", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^3.10.0", "tinyglobby": "^0.2.15" } }, "sha512-GI840yYGuvHI0BGDQ63d6rAxGzG96jQcWrnaWIQKlyQo/7sx9PjXkSHckXUXyX1MCr9zY6U25Td6OatfY6Hklw=="], + + "@nuxt/kit": ["@nuxt/kit@4.3.1", "", { "dependencies": { "c12": "^3.3.3", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", "errx": "^0.1.0", "exsolve": "^1.0.8", "ignore": "^7.0.5", "jiti": "^2.6.1", "klona": "^2.0.6", "mlly": "^1.8.0", "ohash": "^2.0.11", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "rc9": "^3.0.0", "scule": "^1.3.0", "semver": "^7.7.4", "tinyglobby": "^0.2.15", "ufo": "^1.6.3", "unctx": "^2.5.0", "untyped": "^2.0.0" } }, "sha512-UjBFt72dnpc+83BV3OIbCT0YHLevJtgJCHpxMX0YRKWLDhhbcDdUse87GtsQBrjvOzK7WUNUYLDS/hQLYev5rA=="], + + "@nuxt/schema": ["@nuxt/schema@4.3.1", "", { "dependencies": { "@vue/shared": "^3.5.27", "defu": "^6.1.4", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "std-env": "^3.10.0" } }, "sha512-S+wHJdYDuyk9I43Ej27y5BeWMZgi7R/UVql3b3qtT35d0fbpXW7fUenzhLRCCDC6O10sjguc6fcMcR9sMKvV8g=="], + + "@nuxt/ui": ["@nuxt/ui@4.5.0", "", { "dependencies": { "@floating-ui/dom": "^1.7.5", "@iconify/vue": "^5.0.0", "@internationalized/date": "^3.11.0", "@internationalized/number": "^3.6.5", "@nuxt/fonts": "^0.14.0", "@nuxt/icon": "^2.2.1", "@nuxt/kit": "^4.3.1", "@nuxt/schema": "^4.3.1", "@nuxtjs/color-mode": "^3.5.2", "@standard-schema/spec": "^1.1.0", "@tailwindcss/postcss": "^4.2.1", "@tailwindcss/vite": "^4.2.1", "@tanstack/vue-table": "^8.21.3", "@tanstack/vue-virtual": "^3.13.18", "@tiptap/core": "^3.20.0", "@tiptap/extension-bubble-menu": "^3.20.0", "@tiptap/extension-code": "^3.20.0", "@tiptap/extension-collaboration": "^3.20.0", "@tiptap/extension-drag-handle": "^3.20.0", "@tiptap/extension-drag-handle-vue-3": "^3.20.0", "@tiptap/extension-floating-menu": "^3.20.0", "@tiptap/extension-horizontal-rule": "^3.20.0", "@tiptap/extension-image": "^3.20.0", "@tiptap/extension-mention": "^3.20.0", "@tiptap/extension-node-range": "^3.20.0", "@tiptap/extension-placeholder": "^3.20.0", "@tiptap/markdown": "^3.20.0", "@tiptap/pm": "^3.20.0", "@tiptap/starter-kit": "^3.20.0", "@tiptap/suggestion": "^3.20.0", "@tiptap/vue-3": "^3.20.0", "@unhead/vue": "^2.1.4", "@vueuse/core": "^14.2.1", "@vueuse/integrations": "^14.2.1", "@vueuse/shared": "^14.2.1", "colortranslator": "^5.0.0", "consola": "^3.4.2", "defu": "^6.1.4", "embla-carousel-auto-height": "^8.6.0", "embla-carousel-auto-scroll": "^8.6.0", "embla-carousel-autoplay": "^8.6.0", "embla-carousel-class-names": "^8.6.0", "embla-carousel-fade": "^8.6.0", "embla-carousel-vue": "^8.6.0", "embla-carousel-wheel-gestures": "^8.1.0", "fuse.js": "^7.1.0", "hookable": "^5.5.3", "knitwork": "^1.3.0", "magic-string": "^0.30.21", "mlly": "^1.8.0", "motion-v": "^1.10.3", "ohash": "^2.0.11", "pathe": "^2.0.3", "reka-ui": "2.8.2", "scule": "^1.3.0", "tailwind-merge": "^3.5.0", "tailwind-variants": "^3.2.2", "tailwindcss": "^4.2.1", "tinyglobby": "^0.2.15", "ufo": "^1.6.3", "unplugin": "^3.0.0", "unplugin-auto-import": "^21.0.0", "unplugin-vue-components": "^31.0.0", "vaul-vue": "0.4.1", "vue-component-type-helpers": "^3.2.5" }, "peerDependencies": { "@inertiajs/vue3": "^2.0.7", "@nuxt/content": "^3.0.0", "joi": "^18.0.0", "superstruct": "^2.0.0", "typescript": "^5.9.3", "valibot": "^1.0.0", "vue-router": "^4.5.0", "yup": "^1.7.0", "zod": "^3.24.0 || ^4.0.0" }, "optionalPeers": ["@inertiajs/vue3", "@nuxt/content", "joi", "superstruct", "valibot", "vue-router", "yup", "zod"], "bin": { "nuxt-ui": "cli/index.mjs" } }, "sha512-aUiaeGFUaKvY6DdHSYputSqGCKthQFk2zkHDrkfMrwZPapYnS0N7Vd5fnlPoTBeMVlG+yLB5F7Knw2qcQfnTWQ=="], + + "@nuxtjs/color-mode": ["@nuxtjs/color-mode@3.5.2", "", { "dependencies": { "@nuxt/kit": "^3.13.2", "pathe": "^1.1.2", "pkg-types": "^1.2.1", "semver": "^7.6.3" } }, "sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA=="], + + "@oxc-project/runtime": ["@oxc-project/runtime@0.114.0", "", {}, "sha512-mVGQvr/uFJGQ3hsvgQ1sJfh79t5owyZZZtw+VaH+WhtvsmtgjT6imznB9sz2Q67Q0/4obM9mOOtQscU4aJteSg=="], + + "@oxc-project/types": ["@oxc-project/types@0.114.0", "", {}, "sha512-//nBfbzHQHvJs8oFIjv6coZ6uxQ4alLfiPe6D5vit6c4pmxATHHlVwgB1k+Hv4yoAMyncdxgRBF5K4BYWUCzvA=="], + + "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.47.0", "", { "os": "android", "cpu": "arm" }, "sha512-UHqo3te9K/fh29brCuQdHjN+kfpIi9cnTPABuD5S9wb9ykXYRGTOOMVuSV/CK43sOhU4wwb2nT1RVjcbrrQjFw=="], + + "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.47.0", "", { "os": "android", "cpu": "arm64" }, "sha512-xh02lsTF1TAkR+SZrRMYHR/xCx8Wg2MAHxJNdHVpAKELh9/yE9h4LJeqAOBbIb3YYn8o/D97U9VmkvkfJfrHfw=="], + + "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.47.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-OSOfNJqabOYbkyQDGT5pdoL+05qgyrmlQrvtCO58M4iKGEQ/xf3XkkKj7ws+hO+k8Y4VF4zGlBsJlwqy7qBcHA=="], + + "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.47.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-hP2bOI4IWNS+F6pVXWtRshSTuJ1qCRZgDgVUg6EBUqsRy+ExkEPJkx+YmIuxgdCduYK1LKptLNFuQLJP8voPbQ=="], + + "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.47.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-F55jIEH5xmGu7S661Uho8vGiLFk0bY3A/g4J8CTKiLJnYu/PSMZ2WxFoy5Hji6qvFuujrrM9Q8XXbMO0fKOYPg=="], + + "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.47.0", "", { "os": "linux", "cpu": "arm" }, "sha512-wxmOn/wns/WKPXUC1fo5mu9pMZPVOu8hsynaVDrgmmXMdHKS7on6bA5cPauFFN9tJXNdsjW26AK9lpfu3IfHBQ=="], + + "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.47.0", "", { "os": "linux", "cpu": "arm" }, "sha512-KJTmVIA/GqRlM2K+ZROH30VMdydEU7bDTY35fNg3tOPzQRIs2deLZlY/9JWwdWo1F/9mIYmpbdCmPqtKhWNOPg=="], + + "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.47.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-PF7ELcFg1GVlS0X0ZB6aWiXobjLrAKer3T8YEkwIoO8RwWiAMkL3n3gbleg895BuZkHVlJ2kPRUwfrhHrVkD1A=="], + + "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.47.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-4BezLRO5cu0asf0Jp1gkrnn2OHiXrPPPEfBTxq1k5/yJ2zdGGTmZxHD2KF2voR23wb8Elyu3iQawXo7wvIZq0Q=="], + + "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.47.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-aI5ds9jq2CPDOvjeapiIj48T/vlWp+f4prkxs+FVzrmVN9BWIj0eqeJ/hV8WgXg79HVMIz9PU6deI2ki09bR1w=="], + + "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.47.0", "", { "os": "linux", "cpu": "none" }, "sha512-mO7ycp9Elvgt5EdGkQHCwJA6878xvo9tk+vlMfT1qg++UjvOMB8INsOCQIOH2IKErF/8/P21LULkdIrocMw9xA=="], + + "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.47.0", "", { "os": "linux", "cpu": "none" }, "sha512-24D0wsYT/7hDFn3Ow32m3/+QT/1ZwrUhShx4/wRDAmz11GQHOZ1k+/HBuK/MflebdnalmXWITcPEy4BWTi7TCA=="], + + "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.47.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-8tPzPne882mtML/uy3mApvdCyuVOpthJ7xUv3b67gVfz63hOOM/bwO0cysSkPyYYFDFRn6/FnUb7Jhmsesntvg=="], + + "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.47.0", "", { "os": "linux", "cpu": "x64" }, "sha512-q58pIyGIzeffEBhEgbRxLFHmHfV9m7g1RnkLiahQuEvyjKNiJcvdHOwKH2BdgZxdzc99Cs6hF5xTa86X40WzPw=="], + + "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.47.0", "", { "os": "linux", "cpu": "x64" }, "sha512-e7DiLZtETZUCwTa4EEHg9G+7g3pY+afCWXvSeMG7m0TQ29UHHxMARPaEQUE4mfKgSqIWnJaUk2iZzRPMRdga5g=="], + + "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.47.0", "", { "os": "none", "cpu": "arm64" }, "sha512-3AFPfQ0WKMleT/bKd7zsks3xoawtZA6E/wKf0DjwysH7wUiMMJkNKXOzYq1R/00G98JFgSU1AkrlOQrSdNNhlg=="], + + "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.47.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-cLMVVM6TBxp+N7FldQJ2GQnkcLYEPGgiuEaXdvhgvSgODBk9ov3jed+khIXSAWtnFOW0wOnG3RjwqPh0rCuheA=="], + + "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.47.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-VpFOSzvTnld77/Edje3ZdHgZWnlTb5nVWXyTgjD3/DKF/6t5bRRbwn3z77zOdnGy44xAMvbyAwDNOSeOdVUmRA=="], + + "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.47.0", "", { "os": "win32", "cpu": "x64" }, "sha512-+q8IWptxXx2HMTM6JluR67284t0h8X/oHJgqpxH1siowxPMqZeIpAcWCUq+tY+Rv2iQK8TUugjZnSBQAVV5CmA=="], + + "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], + + "@remirror/core-constants": ["@remirror/core-constants@3.0.0", "", {}, "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg=="], + + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.5", "", { "os": "android", "cpu": "arm64" }, "sha512-zCEmUrt1bggwgBgeKLxNj217J1OrChrp3jJt24VK9jAharSTeVaHODNL+LpcQVhRz+FktYWfT9cjo5oZ99ZLpg=="], + + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ZP9xb9lPAex36pvkNWCjSEJW/Gfdm9I3ssiqOFLmpZ/vosPXgpoGxCmh+dX1Qs+/bWQE6toNFXWWL8vYoKoK9Q=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-7IdrPunf6dp9mywMgTOKMMGDnMHQ6+h5gRl6LW8rhD8WK2kXX0IwzcM5Zc0B5J7xQs8QWOlKjv8BJsU/1CD3pg=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-o/JCk+dL0IN68EBhZ4DqfsfvxPfMeoM6cJtxORC1YYoxGHZyth2Kb2maXDb4oddw2wu8iIbnYXYPEzBtAF5CAg=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.5", "", { "os": "linux", "cpu": "arm" }, "sha512-IIBwTtA6VwxQLcEgq2mfrUgam7VvPZjhd/jxmeS1npM+edWsrrpRLHUdze+sk4rhb8/xpP3flemgcZXXUW6ukw=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-KSol1De1spMZL+Xg7K5IBWXIvRWv7+pveaxFWXpezezAG7CS6ojzRjtCGCiLxQricutTAi/LkNWKMsd2wNhMKQ=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-WFljyDkxtXRlWxMjxeegf7xMYXxUr8u7JdXlOEWKYgDqEgxUnSEsVDxBiNWQ1D5kQKwf8Wo4sVKEYPRhCdsjwA=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.5", "", { "os": "linux", "cpu": "x64" }, "sha512-CUlplTujmbDWp2gamvrqVKi2Or8lmngXT1WxsizJfts7JrvfGhZObciaY/+CbdbS9qNnskvwMZNEhTPrn7b+WA=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.5", "", { "os": "linux", "cpu": "x64" }, "sha512-wdf7g9NbVZCeAo2iGhsjJb7I8ZFfs6X8bumfrWg82VK+8P6AlLXwk48a1ASiJQDTS7Svq2xVzZg3sGO2aXpHRA=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.5", "", { "os": "none", "cpu": "arm64" }, "sha512-0CWY7ubu12nhzz+tkpHjoG3IRSTlWYe0wrfJRf4qqjqQSGtAYgoL9kwzdvlhaFdZ5ffVeyYw9qLsChcjUMEloQ=="], + + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.5", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-LztXnGzv6t2u830mnZrFLRVqT/DPJ9DL4ZTz/y93rqUVkeHjMMYIYaFj+BUthiYxbVH9dH0SZYufETspKY/NhA=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-jUct1XVeGtyjqJXEAfvdFa8xoigYZ2rge7nYEm70ppQxpfH9ze2fbIrpHmP2tNM2vL/F6Dd0CpXhpjPbC6bSxQ=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.5", "", { "os": "win32", "cpu": "x64" }, "sha512-VQ8F9ld5gw29epjnVGdrx8ugiLTe8BMqmhDYy7nGbdeDo4HAt4bgdZvLbViEhg7DZyHLpiEUlO5/jPSUrIuxRQ=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.2", "", {}, "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw=="], + + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "@swc/helpers": ["@swc/helpers@0.5.19", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.2.1", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.31.1", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.1" } }, "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.1", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.1", "@tailwindcss/oxide-darwin-arm64": "4.2.1", "@tailwindcss/oxide-darwin-x64": "4.2.1", "@tailwindcss/oxide-freebsd-x64": "4.2.1", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", "@tailwindcss/oxide-linux-x64-musl": "4.2.1", "@tailwindcss/oxide-wasm32-wasi": "4.2.1", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" } }, "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.1", "", { "os": "android", "cpu": "arm64" }, "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1", "", { "os": "linux", "cpu": "arm" }, "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.1", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.1", "", { "os": "win32", "cpu": "x64" }, "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ=="], + + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.1", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.1", "@tailwindcss/oxide": "4.2.1", "postcss": "^8.5.6", "tailwindcss": "4.2.1" } }, "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.2.1", "", { "dependencies": { "@tailwindcss/node": "4.2.1", "@tailwindcss/oxide": "4.2.1", "tailwindcss": "4.2.1" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w=="], + + "@tanstack/table-core": ["@tanstack/table-core@8.21.3", "", {}, "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg=="], + + "@tanstack/virtual-core": ["@tanstack/virtual-core@3.13.19", "", {}, "sha512-/BMP7kNhzKOd7wnDeB8NrIRNLwkf5AhCYCvtfZV2GXWbBieFm/el0n6LOAXlTi6ZwHICSNnQcIxRCWHrLzDY+g=="], + + "@tanstack/vue-table": ["@tanstack/vue-table@8.21.3", "", { "dependencies": { "@tanstack/table-core": "8.21.3" }, "peerDependencies": { "vue": ">=3.2" } }, "sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw=="], + + "@tanstack/vue-virtual": ["@tanstack/vue-virtual@3.13.19", "", { "dependencies": { "@tanstack/virtual-core": "3.13.19" }, "peerDependencies": { "vue": "^2.7.0 || ^3.0.0" } }, "sha512-07Fp1TYuIziB4zIDA/moeDKHODePy3K1fN4c4VIAGnkxo1+uOvBJP7m54CoxKiQX6Q9a1dZnznrwOg9C86yvvA=="], + + "@tiptap/core": ["@tiptap/core@3.20.0", "", { "peerDependencies": { "@tiptap/pm": "^3.20.0" } }, "sha512-aC9aROgia/SpJqhsXFiX9TsligL8d+oeoI8W3u00WI45s0VfsqjgeKQLDLF7Tu7hC+7F02teC84SAHuup003VQ=="], + + "@tiptap/extension-blockquote": ["@tiptap/extension-blockquote@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-LQzn6aGtL4WXz2+rYshl/7/VnP2qJTpD7fWL96GXAzhqviPEY1bJES7poqJb3MU/gzl8VJUVzVzU1VoVfUKlbA=="], + + "@tiptap/extension-bold": ["@tiptap/extension-bold@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-sQklEWiyf58yDjiHtm5vmkVjfIc/cBuSusmCsQ0q9vGYnEF1iOHKhGpvnCeEXNeqF3fiJQRlquzt/6ymle3Iwg=="], + + "@tiptap/extension-bubble-menu": ["@tiptap/extension-bubble-menu@3.20.0", "", { "dependencies": { "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-MDosUfs8Tj+nwg8RC+wTMWGkLJORXmbR6YZgbiX4hrc7G90Gopdd6kj6ht5/T8t7dLLaX7N0+DEHdUEPGED7dw=="], + + "@tiptap/extension-bullet-list": ["@tiptap/extension-bullet-list@3.20.0", "", { "peerDependencies": { "@tiptap/extension-list": "^3.20.0" } }, "sha512-OcKMeopBbqWzhSi6o8nNz0aayogg1sfOAhto3NxJu3Ya32dwBFqmHXSYM6uW4jOphNvVPyjiq9aNRh3qTdd1dw=="], + + "@tiptap/extension-code": ["@tiptap/extension-code@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-TYDWFeSQ9umiyrqsT6VecbuhL8XIHkUhO+gEk0sVvH67ZLwjFDhAIIgWIr1/dbIGPcvMZM19E7xUUhAdIaXaOQ=="], + + "@tiptap/extension-code-block": ["@tiptap/extension-code-block@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-lBbmNek14aCjrHcBcq3PRqWfNLvC6bcRa2Osc6e/LtmXlcpype4f6n+Yx+WZ+f2uUh0UmDRCz7BEyUETEsDmlQ=="], + + "@tiptap/extension-collaboration": ["@tiptap/extension-collaboration@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0", "@tiptap/y-tiptap": "^3.0.2", "yjs": "^13" } }, "sha512-JItmI4U0i4kqorO114u24hM9k945IdaQ6Uc2DEtPBFFuS8cepJf2zw+ulAT1kAx6ZRiNvNpT9M7w+J0mWRn+Sg=="], + + "@tiptap/extension-document": ["@tiptap/extension-document@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-oJfLIG3vAtZo/wg29WiBcyWt22KUgddpP8wqtCE+kY5Dw8znLR9ehNmVWlSWJA5OJUMO0ntAHx4bBT+I2MBd5w=="], + + "@tiptap/extension-drag-handle": ["@tiptap/extension-drag-handle@3.20.0", "", { "dependencies": { "@floating-ui/dom": "^1.6.13" }, "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/extension-collaboration": "^3.20.0", "@tiptap/extension-node-range": "^3.20.0", "@tiptap/pm": "^3.20.0", "@tiptap/y-tiptap": "^3.0.2" } }, "sha512-CzLRyxZe5QddQey0RUWJUvICyhuRnU/jvzMIYlFvMxM7W97sZ2ggk0cRThlRt2pRUoSr8mmmUnobiorpISmksA=="], + + "@tiptap/extension-drag-handle-vue-3": ["@tiptap/extension-drag-handle-vue-3@3.20.0", "", { "peerDependencies": { "@tiptap/extension-drag-handle": "^3.20.0", "@tiptap/pm": "^3.20.0", "@tiptap/vue-3": "^3.20.0", "vue": "^3.0.0" } }, "sha512-Jx6LHYRI5uRaJVNQGkQsTFQkAM84rYQh3Q+WBePhGF4yPBUJQFn7Nv+5fQhKKV3A5PVQ6kTAjvW6SSUcD6ON8A=="], + + "@tiptap/extension-dropcursor": ["@tiptap/extension-dropcursor@3.20.0", "", { "peerDependencies": { "@tiptap/extensions": "^3.20.0" } }, "sha512-d+cxplRlktVgZPwatnc34IArlppM0IFKS1J5wLk+ba1jidizsbMVh45tP/BTK2flhyfRqcNoB5R0TArhUpbkNQ=="], + + "@tiptap/extension-floating-menu": ["@tiptap/extension-floating-menu@3.20.0", "", { "peerDependencies": { "@floating-ui/dom": "^1.0.0", "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-rYs4Bv5pVjqZ/2vvR6oe7ammZapkAwN51As/WDbemvYDjfOGRqK58qGauUjYZiDzPOEIzI2mxGwsZ4eJhPW4Ig=="], + + "@tiptap/extension-gapcursor": ["@tiptap/extension-gapcursor@3.20.0", "", { "peerDependencies": { "@tiptap/extensions": "^3.20.0" } }, "sha512-P/LasfvG9/qFq43ZAlNbAnPnXC+/RJf49buTrhtFvI9Zg0+Lbpjx1oh6oMHB19T88Y28KtrckfFZ8aTSUWDq6w=="], + + "@tiptap/extension-hard-break": ["@tiptap/extension-hard-break@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-rqvhMOw4f+XQmEthncbvDjgLH6fz8L9splnKZC7OeS0eX8b0qd7+xI1u5kyxF3KA2Z0BnigES++jjWuecqV6mA=="], + + "@tiptap/extension-heading": ["@tiptap/extension-heading@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-JgJhurnCe3eN6a0lEsNQM/46R1bcwzwWWZEFDSb1P9dR8+t1/5v7cMZWsSInpD7R4/74iJn0+M5hcXLwCmBmYA=="], + + "@tiptap/extension-horizontal-rule": ["@tiptap/extension-horizontal-rule@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-6uvcutFMv+9wPZgptDkbRDjAm3YVxlibmkhWD5GuaWwS9L/yUtobpI3GycujRSUZ8D3q6Q9J7LqpmQtQRTalWA=="], + + "@tiptap/extension-image": ["@tiptap/extension-image@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-0t7HYncV0kYEQS79NFczxdlZoZ8zu8X4VavDqt+mbSAUKRq3gCvgtZ5Zyd778sNmtmbz3arxkEYMIVou2swD0g=="], + + "@tiptap/extension-italic": ["@tiptap/extension-italic@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-/DhnKQF8yN8RxtuL8abZ28wd5281EaGoE2Oha35zXSOF1vNYnbyt8Ymkv/7u1BcWEWTvRPgaju0YCGXisPRLYw=="], + + "@tiptap/extension-link": ["@tiptap/extension-link@3.20.0", "", { "dependencies": { "linkifyjs": "^4.3.2" }, "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-qI/5A+R0ZWBxo/8HxSn1uOyr7odr3xHBZ/gzOR1GUJaZqjlJxkWFX0RtXMbLKEGEvT25o345cF7b0wFznEh8qA=="], + + "@tiptap/extension-list": ["@tiptap/extension-list@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-+V0/gsVWAv+7vcY0MAe6D52LYTIicMSHw00wz3ISZgprSb2yQhJ4+4gurOnUrQ4Du3AnRQvxPROaofwxIQ66WQ=="], + + "@tiptap/extension-list-item": ["@tiptap/extension-list-item@3.20.0", "", { "peerDependencies": { "@tiptap/extension-list": "^3.20.0" } }, "sha512-qEtjaaGPuqaFB4VpLrGDoIe9RHnckxPfu6d3rc22ap6TAHCDyRv05CEyJogqccnFceG/v5WN4znUBER8RWnWHA=="], + + "@tiptap/extension-list-keymap": ["@tiptap/extension-list-keymap@3.20.0", "", { "peerDependencies": { "@tiptap/extension-list": "^3.20.0" } }, "sha512-Z4GvKy04Ms4cLFN+CY6wXswd36xYsT2p/YL0V89LYFMZTerOeTjFYlndzn6svqL8NV1PRT5Diw4WTTxJSmcJPA=="], + + "@tiptap/extension-mention": ["@tiptap/extension-mention@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0", "@tiptap/suggestion": "^3.20.0" } }, "sha512-wUjsq7Za0JJdJzrGNG+g8nrCpek/85GQ0Rm9bka3PynIVRwus+xQqW6IyWVPBdl1BSkrbgMAUqtrfoh1ymznbg=="], + + "@tiptap/extension-node-range": ["@tiptap/extension-node-range@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-XeKKTV88VuJ4Mh0Rxvc/PPzG76cb44sE+rB4u0J/ms63R/WFTm6yJQlCgUVGnGeHleSlrWuZY8gGSuoljmQzqg=="], + + "@tiptap/extension-ordered-list": ["@tiptap/extension-ordered-list@3.20.0", "", { "peerDependencies": { "@tiptap/extension-list": "^3.20.0" } }, "sha512-jVKnJvrizLk7etwBMfyoj6H2GE4M+PD4k7Bwp6Bh1ohBWtfIA1TlngdS842Mx5i1VB2e3UWIwr8ZH46gl6cwMA=="], + + "@tiptap/extension-paragraph": ["@tiptap/extension-paragraph@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-mM99zK4+RnEXIMCv6akfNATAs0Iija6FgyFA9J9NZ6N4o8y9QiNLLa6HjLpAC+W+VoCgQIekyoF/Q9ftxmAYDQ=="], + + "@tiptap/extension-placeholder": ["@tiptap/extension-placeholder@3.20.0", "", { "peerDependencies": { "@tiptap/extensions": "^3.20.0" } }, "sha512-ZhYD3L5m16ydSe2z8vqz+RdtAG/iOQaFHHedFct70tKRoLqi2ajF5kgpemu8DwpaRTcyiCN4G99J/+MqehKNjQ=="], + + "@tiptap/extension-strike": ["@tiptap/extension-strike@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-0vcTZRRAiDfon3VM1mHBr9EFmTkkUXMhm0Xtdtn0bGe+sIqufyi+hUYTEw93EQOD9XNsPkrud6jzQNYpX2H3AQ=="], + + "@tiptap/extension-text": ["@tiptap/extension-text@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-tf8bE8tSaOEWabCzPm71xwiUhyMFKqY9jkP5af3Kr1/F45jzZFIQAYZooHI/+zCHRrgJ99MQHKHe1ZNvODrKHQ=="], + + "@tiptap/extension-underline": ["@tiptap/extension-underline@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0" } }, "sha512-LzNXuy2jwR/y+ymoUqC72TiGzbOCjioIjsDu0MNYpHuHqTWPK5aV9Mh0nbZcYFy/7fPlV1q0W139EbJeYBZEAQ=="], + + "@tiptap/extensions": ["@tiptap/extensions@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-HIsXX942w3nbxEQBlMAAR/aa6qiMBEP7CsSMxaxmTIVAmW35p6yUASw6GdV1u0o3lCZjXq2OSRMTskzIqi5uLg=="], + + "@tiptap/markdown": ["@tiptap/markdown@3.20.0", "", { "dependencies": { "marked": "^17.0.1" }, "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-3vUxs8tsVIf/KWKLWjFsTqrjuaTYJY9rawDL5sio9NwlqFWDuWpHEVJcqbQXJUrgQSh12AZoTKyfgiEqkAGI3Q=="], + + "@tiptap/pm": ["@tiptap/pm@3.20.0", "", { "dependencies": { "prosemirror-changeset": "^2.3.0", "prosemirror-collab": "^1.3.1", "prosemirror-commands": "^1.6.2", "prosemirror-dropcursor": "^1.8.1", "prosemirror-gapcursor": "^1.3.2", "prosemirror-history": "^1.4.1", "prosemirror-inputrules": "^1.4.0", "prosemirror-keymap": "^1.2.2", "prosemirror-markdown": "^1.13.1", "prosemirror-menu": "^1.2.4", "prosemirror-model": "^1.24.1", "prosemirror-schema-basic": "^1.2.3", "prosemirror-schema-list": "^1.5.0", "prosemirror-state": "^1.4.3", "prosemirror-tables": "^1.6.4", "prosemirror-trailing-node": "^3.0.0", "prosemirror-transform": "^1.10.2", "prosemirror-view": "^1.38.1" } }, "sha512-jn+2KnQZn+b+VXr8EFOJKsnjVNaA4diAEr6FOazupMt8W8ro1hfpYtZ25JL87Kao/WbMze55sd8M8BDXLUKu1A=="], + + "@tiptap/starter-kit": ["@tiptap/starter-kit@3.20.0", "", { "dependencies": { "@tiptap/core": "^3.20.0", "@tiptap/extension-blockquote": "^3.20.0", "@tiptap/extension-bold": "^3.20.0", "@tiptap/extension-bullet-list": "^3.20.0", "@tiptap/extension-code": "^3.20.0", "@tiptap/extension-code-block": "^3.20.0", "@tiptap/extension-document": "^3.20.0", "@tiptap/extension-dropcursor": "^3.20.0", "@tiptap/extension-gapcursor": "^3.20.0", "@tiptap/extension-hard-break": "^3.20.0", "@tiptap/extension-heading": "^3.20.0", "@tiptap/extension-horizontal-rule": "^3.20.0", "@tiptap/extension-italic": "^3.20.0", "@tiptap/extension-link": "^3.20.0", "@tiptap/extension-list": "^3.20.0", "@tiptap/extension-list-item": "^3.20.0", "@tiptap/extension-list-keymap": "^3.20.0", "@tiptap/extension-ordered-list": "^3.20.0", "@tiptap/extension-paragraph": "^3.20.0", "@tiptap/extension-strike": "^3.20.0", "@tiptap/extension-text": "^3.20.0", "@tiptap/extension-underline": "^3.20.0", "@tiptap/extensions": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-W4+1re35pDNY/7rpXVg+OKo/Fa4Gfrn08Bq3E3fzlJw6gjE3tYU8dY9x9vC2rK9pd9NOp7Af11qCFDaWpohXkw=="], + + "@tiptap/suggestion": ["@tiptap/suggestion@3.20.0", "", { "peerDependencies": { "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0" } }, "sha512-OA9Fe+1Q/Ex0ivTcpRcVFiLnNsVdIBmiEoctt/gu4H2ayCYmZ906veioXNdc1m/3MtVVUIuEnvwwsrOZXlfDEw=="], + + "@tiptap/vue-3": ["@tiptap/vue-3@3.20.0", "", { "optionalDependencies": { "@tiptap/extension-bubble-menu": "^3.20.0", "@tiptap/extension-floating-menu": "^3.20.0" }, "peerDependencies": { "@floating-ui/dom": "^1.0.0", "@tiptap/core": "^3.20.0", "@tiptap/pm": "^3.20.0", "vue": "^3.0.0" } }, "sha512-u8UfDKsbIOF+mVsXwJ946p1jfrLGFUyqp9i/DAeGGg2I85DPOkhZgz67bUPVXkpossoEk+jKCkRN0eBHl9+eZQ=="], + + "@tiptap/y-tiptap": ["@tiptap/y-tiptap@3.0.2", "", { "dependencies": { "lib0": "^0.2.100" }, "peerDependencies": { "prosemirror-model": "^1.7.1", "prosemirror-state": "^1.2.3", "prosemirror-view": "^1.9.10", "y-protocols": "^1.0.1", "yjs": "^13.5.38" } }, "sha512-flMn/YW6zTbc6cvDaUPh/NfLRTXDIqgpBUkYzM74KA1snqQwhOMjnRcnpu4hDFrTnPO6QGzr99vRyXEA7M44WA=="], + + "@tsconfig/node24": ["@tsconfig/node24@24.0.4", "", {}, "sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@types/esrecurse": ["@types/esrecurse@4.3.1", "", {}, "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/linkify-it": ["@types/linkify-it@5.0.0", "", {}, "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="], + + "@types/markdown-it": ["@types/markdown-it@14.1.2", "", { "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" } }, "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog=="], + + "@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="], + + "@types/node": ["@types/node@24.10.13", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg=="], + + "@types/web-bluetooth": ["@types/web-bluetooth@0.0.21", "", {}, "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA=="], + + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.56.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/type-utils": "8.56.1", "@typescript-eslint/utils": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.56.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A=="], + + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.56.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/types": "8.56.1", "@typescript-eslint/typescript-estree": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg=="], + + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.56.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.56.1", "@typescript-eslint/types": "^8.56.1", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ=="], + + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.56.1", "", { "dependencies": { "@typescript-eslint/types": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1" } }, "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w=="], + + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.56.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ=="], + + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.56.1", "", { "dependencies": { "@typescript-eslint/types": "8.56.1", "@typescript-eslint/typescript-estree": "8.56.1", "@typescript-eslint/utils": "8.56.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg=="], + + "@typescript-eslint/types": ["@typescript-eslint/types@8.56.1", "", {}, "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw=="], + + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.56.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.56.1", "@typescript-eslint/tsconfig-utils": "8.56.1", "@typescript-eslint/types": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg=="], + + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.56.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/types": "8.56.1", "@typescript-eslint/typescript-estree": "8.56.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA=="], + + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.56.1", "", { "dependencies": { "@typescript-eslint/types": "8.56.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw=="], + + "@unhead/vue": ["@unhead/vue@2.1.7", "", { "dependencies": { "hookable": "^6.0.1", "unhead": "2.1.7" }, "peerDependencies": { "vue": ">=3.5.18" } }, "sha512-azD4x32BKBDMcKMcCeU+kCBowPFRFSSFJSHP+mr2P1TpPV/4b6UsmMPiTb+gSW8NZ6s0myJ/CaVMoeC5mGKhKg=="], + + "@vitejs/plugin-vue": ["@vitejs/plugin-vue@6.0.4", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.2" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "vue": "^3.2.25" } }, "sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ=="], + + "@volar/language-core": ["@volar/language-core@2.4.28", "", { "dependencies": { "@volar/source-map": "2.4.28" } }, "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ=="], + + "@volar/source-map": ["@volar/source-map@2.4.28", "", {}, "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ=="], + + "@volar/typescript": ["@volar/typescript@2.4.28", "", { "dependencies": { "@volar/language-core": "2.4.28", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw=="], + + "@vue-macros/common": ["@vue-macros/common@3.1.2", "", { "dependencies": { "@vue/compiler-sfc": "^3.5.22", "ast-kit": "^2.1.2", "local-pkg": "^1.1.2", "magic-string-ast": "^1.0.2", "unplugin-utils": "^0.3.0" }, "peerDependencies": { "vue": "^2.7.0 || ^3.2.25" }, "optionalPeers": ["vue"] }, "sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng=="], + + "@vue/babel-helper-vue-transform-on": ["@vue/babel-helper-vue-transform-on@1.5.0", "", {}, "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA=="], + + "@vue/babel-plugin-jsx": ["@vue/babel-plugin-jsx@1.5.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.2", "@vue/babel-helper-vue-transform-on": "1.5.0", "@vue/babel-plugin-resolve-type": "1.5.0", "@vue/shared": "^3.5.18" }, "peerDependencies": { "@babel/core": "^7.0.0-0" }, "optionalPeers": ["@babel/core"] }, "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw=="], + + "@vue/babel-plugin-resolve-type": ["@vue/babel-plugin-resolve-type@1.5.0", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/parser": "^7.28.0", "@vue/compiler-sfc": "^3.5.18" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w=="], + + "@vue/compiler-core": ["@vue/compiler-core@3.6.0-beta.6", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/shared": "3.6.0-beta.6", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-0/YAWFJKJEpYMiMkNaYgUxbf4TWVrCnZ4Pmp898yQUJgQ3B+E2usG8n4tCytniGIIQ3BoLnkUipTNia8g6vp8A=="], + + "@vue/compiler-dom": ["@vue/compiler-dom@3.6.0-beta.6", "", { "dependencies": { "@vue/compiler-core": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6" } }, "sha512-kX9aROGuDCz9YTvPiOltOsZ4lu2lAH9rMc5tFt7zrFs2KNBXON4HDSg5Vnu4kTb5tNhM/8YX1Cv2XjwmaCD6Wg=="], + + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.6.0-beta.6", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/compiler-core": "3.6.0-beta.6", "@vue/compiler-dom": "3.6.0-beta.6", "@vue/compiler-ssr": "3.6.0-beta.6", "@vue/compiler-vapor": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "sha512-hQL0RqB4jNf9QFUvl8xl7nDHZdsWE3IysbMAbgVUmQvhzmFdnP6Bcp8FnyGBhxwo6IJouQoT0HniKudXP13aGA=="], + + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.6.0-beta.6", "", { "dependencies": { "@vue/compiler-dom": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6" } }, "sha512-UkaN+QhSQh4Nc9BiQZvH7fuL+3RDWOvGc+zuHCwUsR8FLOxNbuUKsDe0FlFk914xDDx4IUYzJKyIeSEzqoxCYA=="], + + "@vue/compiler-vapor": ["@vue/compiler-vapor@3.6.0-beta.6", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/compiler-dom": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-U04KIqp/YYRVt+GU2pGZhZ+q4GWm/Ii2SFrwZqCjXFghU4f5+21Ba6Sru9FzuaYzRY4ubdUz9bpKE0BVd2d46Q=="], + + "@vue/devtools-api": ["@vue/devtools-api@7.7.9", "", { "dependencies": { "@vue/devtools-kit": "^7.7.9" } }, "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g=="], + + "@vue/devtools-core": ["@vue/devtools-core@8.0.6", "", { "dependencies": { "@vue/devtools-kit": "^8.0.6", "@vue/devtools-shared": "^8.0.6", "mitt": "^3.0.1", "nanoid": "^5.1.5", "pathe": "^2.0.3", "vite-hot-client": "^2.1.0" }, "peerDependencies": { "vue": "^3.0.0" } }, "sha512-fN7iVtpSQQdtMORWwVZ1JiIAKriinhD+lCHqPw9Rr252ae2TczILEmW0zcAZifPW8HfYcbFkn+h7Wv6kQQCayw=="], + + "@vue/devtools-kit": ["@vue/devtools-kit@8.0.6", "", { "dependencies": { "@vue/devtools-shared": "^8.0.6", "birpc": "^2.6.1", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^2.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-9zXZPTJW72OteDXeSa5RVML3zWDCRcO5t77aJqSs228mdopYj5AiTpihozbsfFJ0IodfNs7pSgOGO3qfCuxDtw=="], + + "@vue/devtools-shared": ["@vue/devtools-shared@8.0.6", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg=="], + + "@vue/eslint-config-typescript": ["@vue/eslint-config-typescript@14.7.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.56.0", "fast-glob": "^3.3.3", "typescript-eslint": "^8.56.0", "vue-eslint-parser": "^10.4.0" }, "peerDependencies": { "eslint": "^9.10.0 || ^10.0.0", "eslint-plugin-vue": "^9.28.0 || ^10.0.0", "typescript": ">=4.8.4" }, "optionalPeers": ["typescript"] }, "sha512-iegbMINVc+seZ/QxtzWiOBozctrHiF2WvGedruu2EbLujg9VuU0FQiNcN2z1ycuaoKKpF4m2qzB5HDEMKbxtIg=="], + + "@vue/language-core": ["@vue/language-core@3.2.5", "", { "dependencies": { "@volar/language-core": "2.4.28", "@vue/compiler-dom": "^3.5.0", "@vue/shared": "^3.5.0", "alien-signals": "^3.0.0", "muggle-string": "^0.4.1", "path-browserify": "^1.0.1", "picomatch": "^4.0.2" } }, "sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g=="], + + "@vue/reactivity": ["@vue/reactivity@3.6.0-beta.6", "", { "dependencies": { "@vue/shared": "3.6.0-beta.6" } }, "sha512-DWpq1Qk23XFWZI0dAho9koJNV+fjOJv5YNmLO2yymyjtDpraRaot+gQQlmyut3dEt4gIUKUHF7H/azi7ub5mZQ=="], + + "@vue/runtime-core": ["@vue/runtime-core@3.6.0-beta.6", "", { "dependencies": { "@vue/reactivity": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6" } }, "sha512-whCWAVoBnac1rlLdAu17IrG4E1t05a44VOpvXWo+mYWgq28ukaoQmr3w7LPLyUU7ehWOh+Gp31fxAbKSArherg=="], + + "@vue/runtime-dom": ["@vue/runtime-dom@3.6.0-beta.6", "", { "dependencies": { "@vue/reactivity": "3.6.0-beta.6", "@vue/runtime-core": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6", "csstype": "^3.2.3" } }, "sha512-auc/UnNwB+Vcydp+HpV63a0WbDSueteT8OZNhcKicWtvRSVfxPAp83pVNtiY+CvRp4myl28Nxewff19XK+u1kw=="], + + "@vue/runtime-vapor": ["@vue/runtime-vapor@3.6.0-beta.6", "", { "dependencies": { "@vue/reactivity": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6" }, "peerDependencies": { "@vue/runtime-dom": "3.6.0-beta.6" } }, "sha512-psN1lh/LJS7FS/KE8+JJYvdFWySq09Ww9xCFnXOaISFwh/2VWs5AvcAAq9dgk6+Z0qMUjrVVbspa6byLVCP/aA=="], + + "@vue/server-renderer": ["@vue/server-renderer@3.6.0-beta.6", "", { "dependencies": { "@vue/compiler-ssr": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6" }, "peerDependencies": { "vue": "3.6.0-beta.6" } }, "sha512-IL8RRjIuNmmh4JZmne48htACrvTAYw+IvvGHezpSmom5uzXUyEW9VJqhda9LBnjEBWFVNImzAJGrQ1IZB9X1vg=="], + + "@vue/shared": ["@vue/shared@3.6.0-beta.6", "", {}, "sha512-CR/Df2m47Ou7mzF4IksSqfLpk5KtP1KBssocpoSSUbS/dUXPDRS/gRKT59LA3XHmluvnrMw+PYKuf5mzJPFt1Q=="], + + "@vue/tsconfig": ["@vue/tsconfig@0.8.1", "", { "peerDependencies": { "typescript": "5.x", "vue": "^3.4.0" }, "optionalPeers": ["typescript", "vue"] }, "sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g=="], + + "@vueuse/core": ["@vueuse/core@14.2.1", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.2.1", "@vueuse/shared": "14.2.1" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ=="], + + "@vueuse/integrations": ["@vueuse/integrations@14.2.1", "", { "dependencies": { "@vueuse/core": "14.2.1", "@vueuse/shared": "14.2.1" }, "peerDependencies": { "async-validator": "^4", "axios": "^1", "change-case": "^5", "drauu": "^0.4", "focus-trap": "^7 || ^8", "fuse.js": "^7", "idb-keyval": "^6", "jwt-decode": "^4", "nprogress": "^0.2", "qrcode": "^1.5", "sortablejs": "^1", "universal-cookie": "^7 || ^8", "vue": "^3.5.0" }, "optionalPeers": ["async-validator", "axios", "change-case", "drauu", "focus-trap", "fuse.js", "idb-keyval", "jwt-decode", "nprogress", "qrcode", "sortablejs", "universal-cookie"] }, "sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA=="], + + "@vueuse/metadata": ["@vueuse/metadata@14.2.1", "", {}, "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw=="], + + "@vueuse/shared": ["@vueuse/shared@14.2.1", "", { "peerDependencies": { "vue": "^3.5.0" } }, "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw=="], + + "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], + + "alien-signals": ["alien-signals@3.1.2", "", {}, "sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw=="], + + "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], + + "ast-kit": ["ast-kit@2.2.0", "", { "dependencies": { "@babel/parser": "^7.28.5", "pathe": "^2.0.3" } }, "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw=="], + + "ast-walker-scope": ["ast-walker-scope@0.8.3", "", { "dependencies": { "@babel/parser": "^7.28.4", "ast-kit": "^2.1.3" } }, "sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg=="], + + "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.0", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA=="], + + "birpc": ["birpc@2.9.0", "", {}, "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw=="], + + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + + "brace-expansion": ["brace-expansion@5.0.3", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + + "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], + + "c12": ["c12@3.3.3", "", { "dependencies": { "chokidar": "^5.0.0", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^17.2.3", "exsolve": "^1.0.8", "giget": "^2.0.0", "jiti": "^2.6.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.0.0", "pkg-types": "^2.3.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "*" }, "optionalPeers": ["magicast"] }, "sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001774", "", {}, "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA=="], + + "chart.js": ["chart.js@4.5.1", "", { "dependencies": { "@kurkle/color": "^0.3.0" } }, "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw=="], + + "chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + + "citty": ["citty@0.1.6", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="], + + "colortranslator": ["colortranslator@5.0.0", "", {}, "sha512-Z3UPUKasUVDFCDYAjP2fmlVRf1jFHJv1izAmPjiOa0OCIw1W7iC8PZ2GsoDa8uZv+mKyWopxxStT9q05+27h7w=="], + + "confbox": ["confbox@0.2.4", "", {}, "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ=="], + + "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="], + + "copy-anything": ["copy-anything@4.0.5", "", { "dependencies": { "is-what": "^5.2.0" } }, "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA=="], + + "crelt": ["crelt@1.0.6", "", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + + "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], + + "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], + + "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="], + + "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], + + "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], + + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "dotenv": ["dotenv@17.3.1", "", {}, "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.302", "", {}, "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg=="], + + "embla-carousel": ["embla-carousel@8.6.0", "", {}, "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA=="], + + "embla-carousel-auto-height": ["embla-carousel-auto-height@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-/HrJQOEM6aol/oF33gd2QlINcXy3e19fJWvHDuHWp2bpyTa+2dm9tVVJak30m2Qy6QyQ6Fc8DkImtv7pxWOJUQ=="], + + "embla-carousel-auto-scroll": ["embla-carousel-auto-scroll@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-WT9fWhNXFpbQ6kP+aS07oF5IHYLZ1Dx4DkwgCY8Hv2ZyYd2KMCPfMV1q/cA3wFGuLO7GMgKiySLX90/pQkcOdQ=="], + + "embla-carousel-autoplay": ["embla-carousel-autoplay@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA=="], + + "embla-carousel-class-names": ["embla-carousel-class-names@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-l1hm1+7GxQ+zwdU2sea/LhD946on7XO2qk3Xq2XWSwBaWfdgchXdK567yzLtYSHn4sWYdiX+x4nnaj+saKnJkw=="], + + "embla-carousel-fade": ["embla-carousel-fade@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg=="], + + "embla-carousel-reactive-utils": ["embla-carousel-reactive-utils@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A=="], + + "embla-carousel-vue": ["embla-carousel-vue@8.6.0", "", { "dependencies": { "embla-carousel": "8.6.0", "embla-carousel-reactive-utils": "8.6.0" }, "peerDependencies": { "vue": "^3.2.37" } }, "sha512-v8UO5UsyLocZnu/LbfQA7Dn2QHuZKurJY93VUmZYP//QRWoCWOsionmvLLAlibkET3pGPs7++03VhJKbWD7vhQ=="], + + "embla-carousel-wheel-gestures": ["embla-carousel-wheel-gestures@8.1.0", "", { "dependencies": { "wheel-gestures": "^2.2.5" }, "peerDependencies": { "embla-carousel": "^8.0.0 || ~8.0.0-rc03" } }, "sha512-J68jkYrxbWDmXOm2n2YHl+uMEXzkGSKjWmjaEgL9xVvPb3HqVmg6rJSKfI3sqIDVvm7mkeTy87wtG/5263XqHQ=="], + + "enhanced-resolve": ["enhanced-resolve@5.19.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg=="], + + "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], + + "error-stack-parser-es": ["error-stack-parser-es@1.0.5", "", {}, "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA=="], + + "errx": ["errx@0.1.0", "", {}, "sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q=="], + + "esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "eslint": ["eslint@10.0.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.2", "@eslint/config-helpers": "^0.5.2", "@eslint/core": "^1.1.0", "@eslint/plugin-kit": "^0.6.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.1", "eslint-visitor-keys": "^5.0.1", "espree": "^11.1.1", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "minimatch": "^10.2.1", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw=="], + + "eslint-plugin-vue": ["eslint-plugin-vue@10.8.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", "postcss-selector-parser": "^7.1.0", "semver": "^7.6.3", "xml-name-validator": "^4.0.0" }, "peerDependencies": { "@stylistic/eslint-plugin": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "vue-eslint-parser": "^10.0.0" }, "optionalPeers": ["@stylistic/eslint-plugin", "@typescript-eslint/parser"] }, "sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA=="], + + "eslint-scope": ["eslint-scope@9.1.1", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw=="], + + "eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], + + "espree": ["espree@11.1.1", "", { "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" } }, "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ=="], + + "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], + + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + + "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], + + "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + + "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], + + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + + "fontaine": ["fontaine@0.8.0", "", { "dependencies": { "@capsizecss/unpack": "^4.0.0", "css-tree": "^3.1.0", "magic-regexp": "^0.10.0", "magic-string": "^0.30.21", "pathe": "^2.0.3", "ufo": "^1.6.1", "unplugin": "^2.3.10" } }, "sha512-eek1GbzOdWIj9FyQH/emqW1aEdfC3lYRCHepzwlFCm5T77fBSRSyNRKE6/antF1/B1M+SfJXVRQTY9GAr7lnDg=="], + + "fontkitten": ["fontkitten@1.0.2", "", { "dependencies": { "tiny-inflate": "^1.0.3" } }, "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q=="], + + "fontless": ["fontless@0.2.1", "", { "dependencies": { "consola": "^3.4.2", "css-tree": "^3.1.0", "defu": "^6.1.4", "esbuild": "^0.27.0", "fontaine": "0.8.0", "jiti": "^2.6.1", "lightningcss": "^1.30.2", "magic-string": "^0.30.21", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1", "unifont": "^0.7.4", "unstorage": "^1.17.1" }, "peerDependencies": { "vite": "*" }, "optionalPeers": ["vite"] }, "sha512-mUWZ8w91/mw2KEcZ6gHNoNNmsAq9Wiw2IypIux5lM03nhXm+WSloXGUNuRETNTLqZexMgpt7Aj/v63qqrsWraQ=="], + + "framer-motion": ["framer-motion@12.34.3", "", { "dependencies": { "motion-dom": "^12.34.3", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-v81ecyZKYO/DfpTwHivqkxSUBzvceOpoI+wLfgCgoUIKxlFKEXdg0oR9imxwXumT4SFy8vRk9xzJ5l3/Du/55Q=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "fuse.js": ["fuse.js@7.1.0", "", {}, "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], + + "giget": ["giget@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="], + + "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "h3": ["h3@1.15.5", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg=="], + + "hey-listen": ["hey-listen@1.0.8", "", {}, "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q=="], + + "hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="], + + "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], + + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + + "iron-webcrypto": ["iron-webcrypto@1.2.1", "", {}, "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg=="], + + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], + + "is-what": ["is-what@5.5.0", "", {}, "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw=="], + + "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], + + "isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], + + "isomorphic.js": ["isomorphic.js@0.2.5", "", {}, "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw=="], + + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-parse-even-better-errors": ["json-parse-even-better-errors@4.0.0", "", {}, "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA=="], + + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "klona": ["klona@2.0.6", "", {}, "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="], + + "knitwork": ["knitwork@1.3.0", "", {}, "sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw=="], + + "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], + + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + + "lib0": ["lib0@0.2.117", "", { "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { "0serve": "bin/0serve.js", "0gentesthtml": "bin/gentesthtml.js", "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js" } }, "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw=="], + + "lightningcss": ["lightningcss@1.31.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.31.1", "lightningcss-darwin-arm64": "1.31.1", "lightningcss-darwin-x64": "1.31.1", "lightningcss-freebsd-x64": "1.31.1", "lightningcss-linux-arm-gnueabihf": "1.31.1", "lightningcss-linux-arm64-gnu": "1.31.1", "lightningcss-linux-arm64-musl": "1.31.1", "lightningcss-linux-x64-gnu": "1.31.1", "lightningcss-linux-x64-musl": "1.31.1", "lightningcss-win32-arm64-msvc": "1.31.1", "lightningcss-win32-x64-msvc": "1.31.1" } }, "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.31.1", "", { "os": "android", "cpu": "arm64" }, "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.31.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.31.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.31.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.31.1", "", { "os": "linux", "cpu": "arm" }, "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.31.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.31.1", "", { "os": "win32", "cpu": "x64" }, "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw=="], + + "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="], + + "linkifyjs": ["linkifyjs@4.3.2", "", {}, "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA=="], + + "local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lru-cache": ["lru-cache@11.2.6", "", {}, "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ=="], + + "magic-regexp": ["magic-regexp@0.10.0", "", { "dependencies": { "estree-walker": "^3.0.3", "magic-string": "^0.30.12", "mlly": "^1.7.2", "regexp-tree": "^0.1.27", "type-level-regexp": "~0.1.17", "ufo": "^1.5.4", "unplugin": "^2.0.0" } }, "sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "magic-string-ast": ["magic-string-ast@1.0.3", "", { "dependencies": { "magic-string": "^0.30.19" } }, "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA=="], + + "markdown-it": ["markdown-it@14.1.1", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA=="], + + "marked": ["marked@17.0.3", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A=="], + + "mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="], + + "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="], + + "memorystream": ["memorystream@0.3.1", "", {}, "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], + + "minimatch": ["minimatch@10.2.3", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg=="], + + "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], + + "mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="], + + "motion-dom": ["motion-dom@12.34.3", "", { "dependencies": { "motion-utils": "^12.29.2" } }, "sha512-sYgFe+pR9aIM7o4fhs2aXtOI+oqlUd33N9Yoxcgo1Fv7M20sRkHtCmzE/VRNIcq7uNJ+qio+Xubt1FXH3pQ+eQ=="], + + "motion-utils": ["motion-utils@12.29.2", "", {}, "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A=="], + + "motion-v": ["motion-v@1.10.3", "", { "dependencies": { "framer-motion": "^12.25.0", "hey-listen": "^1.0.8", "motion-dom": "^12.23.23" }, "peerDependencies": { "@vueuse/core": ">=10.0.0", "vue": ">=3.0.0" } }, "sha512-9Ewo/wwGv7FO3PqYJpllBF/Efc7tbeM1iinVrM73s0RUQrnXHwMZCaRX98u4lu0PQCrZghPPfCsQ14pWKIEbnQ=="], + + "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "muggle-string": ["muggle-string@0.4.1", "", {}, "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], + + "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], + + "node-mock-http": ["node-mock-http@1.0.4", "", {}, "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ=="], + + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + + "npm-normalize-package-bin": ["npm-normalize-package-bin@4.0.0", "", {}, "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w=="], + + "npm-run-all2": ["npm-run-all2@8.0.4", "", { "dependencies": { "ansi-styles": "^6.2.1", "cross-spawn": "^7.0.6", "memorystream": "^0.3.1", "picomatch": "^4.0.2", "pidtree": "^0.6.0", "read-package-json-fast": "^4.0.0", "shell-quote": "^1.7.3", "which": "^5.0.0" }, "bin": { "run-p": "bin/run-p/index.js", "run-s": "bin/run-s/index.js", "npm-run-all": "bin/npm-run-all/index.js", "npm-run-all2": "bin/npm-run-all/index.js" } }, "sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA=="], + + "npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], + + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + + "nypm": ["nypm@0.6.5", "", { "dependencies": { "citty": "^0.2.0", "pathe": "^2.0.3", "tinyexec": "^1.0.2" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ=="], + + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + + "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], + + "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], + + "onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], + + "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], + + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + + "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], + + "oxlint": ["oxlint@1.47.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.47.0", "@oxlint/binding-android-arm64": "1.47.0", "@oxlint/binding-darwin-arm64": "1.47.0", "@oxlint/binding-darwin-x64": "1.47.0", "@oxlint/binding-freebsd-x64": "1.47.0", "@oxlint/binding-linux-arm-gnueabihf": "1.47.0", "@oxlint/binding-linux-arm-musleabihf": "1.47.0", "@oxlint/binding-linux-arm64-gnu": "1.47.0", "@oxlint/binding-linux-arm64-musl": "1.47.0", "@oxlint/binding-linux-ppc64-gnu": "1.47.0", "@oxlint/binding-linux-riscv64-gnu": "1.47.0", "@oxlint/binding-linux-riscv64-musl": "1.47.0", "@oxlint/binding-linux-s390x-gnu": "1.47.0", "@oxlint/binding-linux-x64-gnu": "1.47.0", "@oxlint/binding-linux-x64-musl": "1.47.0", "@oxlint/binding-openharmony-arm64": "1.47.0", "@oxlint/binding-win32-arm64-msvc": "1.47.0", "@oxlint/binding-win32-ia32-msvc": "1.47.0", "@oxlint/binding-win32-x64-msvc": "1.47.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.11.2" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-v7xkK1iv1qdvTxJGclM97QzN8hHs5816AneFAQ0NGji1BMUquhiDAhXpMwp8+ls16uRVJtzVHxP9pAAXblDeGA=="], + + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], + + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "perfect-debounce": ["perfect-debounce@2.1.0", "", {}, "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], + + "pinia": ["pinia@3.0.4", "", { "dependencies": { "@vue/devtools-api": "^7.7.7" }, "peerDependencies": { "typescript": ">=4.5.0", "vue": "^3.5.11" }, "optionalPeers": ["typescript"] }, "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw=="], + + "pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], + + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], + + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + + "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], + + "prosemirror-changeset": ["prosemirror-changeset@2.4.0", "", { "dependencies": { "prosemirror-transform": "^1.0.0" } }, "sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng=="], + + "prosemirror-collab": ["prosemirror-collab@1.3.1", "", { "dependencies": { "prosemirror-state": "^1.0.0" } }, "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ=="], + + "prosemirror-commands": ["prosemirror-commands@1.7.1", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w=="], + + "prosemirror-dropcursor": ["prosemirror-dropcursor@1.8.2", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0", "prosemirror-view": "^1.1.0" } }, "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw=="], + + "prosemirror-gapcursor": ["prosemirror-gapcursor@1.4.0", "", { "dependencies": { "prosemirror-keymap": "^1.0.0", "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-view": "^1.0.0" } }, "sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ=="], + + "prosemirror-history": ["prosemirror-history@1.5.0", "", { "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.31.0", "rope-sequence": "^1.3.0" } }, "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg=="], + + "prosemirror-inputrules": ["prosemirror-inputrules@1.5.1", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.0.0" } }, "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw=="], + + "prosemirror-keymap": ["prosemirror-keymap@1.2.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw=="], + + "prosemirror-markdown": ["prosemirror-markdown@1.13.4", "", { "dependencies": { "@types/markdown-it": "^14.0.0", "markdown-it": "^14.0.0", "prosemirror-model": "^1.25.0" } }, "sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw=="], + + "prosemirror-menu": ["prosemirror-menu@1.3.0", "", { "dependencies": { "crelt": "^1.0.0", "prosemirror-commands": "^1.0.0", "prosemirror-history": "^1.0.0", "prosemirror-state": "^1.0.0" } }, "sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg=="], + + "prosemirror-model": ["prosemirror-model@1.25.4", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA=="], + + "prosemirror-schema-basic": ["prosemirror-schema-basic@1.2.4", "", { "dependencies": { "prosemirror-model": "^1.25.0" } }, "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ=="], + + "prosemirror-schema-list": ["prosemirror-schema-list@1.5.1", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.7.3" } }, "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q=="], + + "prosemirror-state": ["prosemirror-state@1.4.4", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.27.0" } }, "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw=="], + + "prosemirror-tables": ["prosemirror-tables@1.8.5", "", { "dependencies": { "prosemirror-keymap": "^1.2.3", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", "prosemirror-transform": "^1.10.5", "prosemirror-view": "^1.41.4" } }, "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw=="], + + "prosemirror-trailing-node": ["prosemirror-trailing-node@3.0.0", "", { "dependencies": { "@remirror/core-constants": "3.0.0", "escape-string-regexp": "^4.0.0" }, "peerDependencies": { "prosemirror-model": "^1.22.1", "prosemirror-state": "^1.4.2", "prosemirror-view": "^1.33.8" } }, "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ=="], + + "prosemirror-transform": ["prosemirror-transform@1.11.0", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw=="], + + "prosemirror-view": ["prosemirror-view@1.41.6", "", { "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="], + + "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "radix3": ["radix3@1.1.2", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="], + + "rc9": ["rc9@3.0.0", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.5" } }, "sha512-MGOue0VqscKWQ104udASX/3GYDcKyPI4j4F8gu/jHHzglpmy9a/anZK3PNe8ug6aZFl+9GxLtdhe3kVZuMaQbA=="], + + "read-package-json-fast": ["read-package-json-fast@4.0.0", "", { "dependencies": { "json-parse-even-better-errors": "^4.0.0", "npm-normalize-package-bin": "^4.0.0" } }, "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg=="], + + "readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "regexp-tree": ["regexp-tree@0.1.27", "", { "bin": { "regexp-tree": "bin/regexp-tree" } }, "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA=="], + + "reka-ui": ["reka-ui@2.8.2", "", { "dependencies": { "@floating-ui/dom": "^1.6.13", "@floating-ui/vue": "^1.1.6", "@internationalized/date": "^3.5.0", "@internationalized/number": "^3.5.0", "@tanstack/vue-virtual": "^3.12.0", "@vueuse/core": "^14.1.0", "@vueuse/shared": "^14.1.0", "aria-hidden": "^1.2.4", "defu": "^6.1.4", "ohash": "^2.0.11" }, "peerDependencies": { "vue": ">= 3.2.0" } }, "sha512-8lTKcJhmG+D3UyJxhBnNnW/720sLzm0pbA9AC1MWazmJ5YchJAyTSl+O00xP/kxBmEN0fw5JqWVHguiFmsGjzA=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], + + "rolldown": ["rolldown@1.0.0-rc.5", "", { "dependencies": { "@oxc-project/types": "=0.114.0", "@rolldown/pluginutils": "1.0.0-rc.5" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.5", "@rolldown/binding-darwin-arm64": "1.0.0-rc.5", "@rolldown/binding-darwin-x64": "1.0.0-rc.5", "@rolldown/binding-freebsd-x64": "1.0.0-rc.5", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.5", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.5", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.5", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.5", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.5", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.5", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.5", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.5", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.5" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-0AdalTs6hNTioaCYIkAa7+xsmHBfU5hCNclZnM/lp7lGGDuUOb6N4BVNtwiomybbencDjq/waKjTImqiGCs5sw=="], + + "rope-sequence": ["rope-sequence@1.3.4", "", {}, "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="], + + "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "scule": ["scule@1.3.0", "", {}, "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="], + + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "sirv": ["sirv@3.0.2", "", { "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" } }, "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "speakingurl": ["speakingurl@14.0.1", "", {}, "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="], + + "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], + + "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], + + "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], + + "superjson": ["superjson@2.2.6", "", { "dependencies": { "copy-anything": "^4" } }, "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA=="], + + "tailwind-merge": ["tailwind-merge@3.5.0", "", {}, "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A=="], + + "tailwind-variants": ["tailwind-variants@3.2.2", "", { "peerDependencies": { "tailwind-merge": ">=3.0.0", "tailwindcss": "*" }, "optionalPeers": ["tailwind-merge"] }, "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg=="], + + "tailwindcss": ["tailwindcss@4.2.1", "", {}, "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw=="], + + "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], + + "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], + + "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], + + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="], + + "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + + "type-level-regexp": ["type-level-regexp@0.1.17", "", {}, "sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "typescript-eslint": ["typescript-eslint@8.56.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.56.1", "@typescript-eslint/parser": "8.56.1", "@typescript-eslint/typescript-estree": "8.56.1", "@typescript-eslint/utils": "8.56.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ=="], + + "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="], + + "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], + + "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], + + "unctx": ["unctx@2.5.0", "", { "dependencies": { "acorn": "^8.15.0", "estree-walker": "^3.0.3", "magic-string": "^0.30.21", "unplugin": "^2.3.11" } }, "sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + + "unhead": ["unhead@2.1.7", "", { "dependencies": { "hookable": "^6.0.1" } }, "sha512-LZlyHgDnDieyhpBnkd80pn/kVum0P15nNs4DtPUvRwd98uuS1Xqmlc2Ms48P88HI5nLo3nkqHWg2VOs/RgcOWg=="], + + "unifont": ["unifont@0.7.4", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg=="], + + "unimport": ["unimport@5.6.0", "", { "dependencies": { "acorn": "^8.15.0", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.0", "pathe": "^2.0.3", "picomatch": "^4.0.3", "pkg-types": "^2.3.0", "scule": "^1.3.0", "strip-literal": "^3.1.0", "tinyglobby": "^0.2.15", "unplugin": "^2.3.11", "unplugin-utils": "^0.3.1" } }, "sha512-8rqAmtJV8o60x46kBAJKtHpJDJWkA2xcBqWKPI14MgUb05o1pnpnCnXSxedUXyeq7p8fR5g3pTo2BaswZ9lD9A=="], + + "unplugin": ["unplugin@3.0.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg=="], + + "unplugin-auto-import": ["unplugin-auto-import@21.0.0", "", { "dependencies": { "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "picomatch": "^4.0.3", "unimport": "^5.6.0", "unplugin": "^2.3.11", "unplugin-utils": "^0.3.1" }, "peerDependencies": { "@nuxt/kit": "^4.0.0", "@vueuse/core": "*" }, "optionalPeers": ["@nuxt/kit", "@vueuse/core"] }, "sha512-vWuC8SwqJmxZFYwPojhOhOXDb5xFhNNcEVb9K/RFkyk/3VnfaOjzitWN7v+8DEKpMjSsY2AEGXNgt6I0yQrhRQ=="], + + "unplugin-utils": ["unplugin-utils@0.3.1", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog=="], + + "unplugin-vue-components": ["unplugin-vue-components@31.0.0", "", { "dependencies": { "chokidar": "^5.0.0", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.0", "obug": "^2.1.1", "picomatch": "^4.0.3", "tinyglobby": "^0.2.15", "unplugin": "^2.3.11", "unplugin-utils": "^0.3.1" }, "peerDependencies": { "@nuxt/kit": "^3.2.2 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@nuxt/kit"] }, "sha512-4ULwfTZTLuWJ7+S9P7TrcStYLsSRkk6vy2jt/WTfgUEUb0nW9//xxmrfhyHUEVpZ2UKRRwfRb8Yy15PDbVZf+Q=="], + + "unstorage": ["unstorage@1.17.4", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.5", "lru-cache": "^11.2.0", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw=="], + + "untyped": ["untyped@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "defu": "^6.1.4", "jiti": "^2.4.2", "knitwork": "^1.2.0", "scule": "^1.3.0" }, "bin": { "untyped": "dist/cli.mjs" } }, "sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "vaul-vue": ["vaul-vue@0.4.1", "", { "dependencies": { "@vueuse/core": "^10.8.0", "reka-ui": "^2.0.0", "vue": "^3.4.5" } }, "sha512-A6jOWOZX5yvyo1qMn7IveoWN91mJI5L3BUKsIwkg6qrTGgHs1Sb1JF/vyLJgnbN1rH4OOOxFbtqL9A46bOyGUQ=="], + + "vite": ["vite@8.0.0-beta.15", "", { "dependencies": { "@oxc-project/runtime": "0.114.0", "lightningcss": "^1.31.1", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rolldown": "1.0.0-rc.5", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.0.0-alpha.31", "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-RHX7IvsJlEfjyA1rS7MY0UsmF91etdLAamslHR5lfuO3W/BXRdXm2tRE64ztpSPZbKqB4wAAZ0AwtF6QzfKZLA=="], + + "vite-dev-rpc": ["vite-dev-rpc@1.1.0", "", { "dependencies": { "birpc": "^2.4.0", "vite-hot-client": "^2.1.0" }, "peerDependencies": { "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0" } }, "sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A=="], + + "vite-hot-client": ["vite-hot-client@2.1.0", "", { "peerDependencies": { "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" } }, "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ=="], + + "vite-plugin-inspect": ["vite-plugin-inspect@11.3.3", "", { "dependencies": { "ansis": "^4.1.0", "debug": "^4.4.1", "error-stack-parser-es": "^1.0.5", "ohash": "^2.0.11", "open": "^10.2.0", "perfect-debounce": "^2.0.0", "sirv": "^3.0.1", "unplugin-utils": "^0.3.0", "vite-dev-rpc": "^1.1.0" }, "peerDependencies": { "vite": "^6.0.0 || ^7.0.0-0" } }, "sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA=="], + + "vite-plugin-vue-devtools": ["vite-plugin-vue-devtools@8.0.6", "", { "dependencies": { "@vue/devtools-core": "^8.0.6", "@vue/devtools-kit": "^8.0.6", "@vue/devtools-shared": "^8.0.6", "sirv": "^3.0.2", "vite-plugin-inspect": "^11.3.3", "vite-plugin-vue-inspector": "^5.3.2" }, "peerDependencies": { "vite": "^6.0.0 || ^7.0.0-0" } }, "sha512-IiTCIJDb1ZliOT8fPbYXllyfgARzz1+R1r8RN9ScGIDzAB6o8bDME1a9JjrfdSJibL7i8DIPQH+pGv0U7haBeA=="], + + "vite-plugin-vue-inspector": ["vite-plugin-vue-inspector@5.3.2", "", { "dependencies": { "@babel/core": "^7.23.0", "@babel/plugin-proposal-decorators": "^7.23.0", "@babel/plugin-syntax-import-attributes": "^7.22.5", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-transform-typescript": "^7.22.15", "@vue/babel-plugin-jsx": "^1.1.5", "@vue/compiler-dom": "^3.3.4", "kolorist": "^1.8.0", "magic-string": "^0.30.4" }, "peerDependencies": { "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" } }, "sha512-YvEKooQcSiBTAs0DoYLfefNja9bLgkFM7NI2b07bE2SruuvX0MEa9cMaxjKVMkeCp5Nz9FRIdcN1rOdFVBeL6Q=="], + + "vscode-uri": ["vscode-uri@3.1.0", "", {}, "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="], + + "vue": ["vue@3.6.0-beta.6", "", { "dependencies": { "@vue/compiler-dom": "3.6.0-beta.6", "@vue/compiler-sfc": "3.6.0-beta.6", "@vue/runtime-dom": "3.6.0-beta.6", "@vue/runtime-vapor": "3.6.0-beta.6", "@vue/server-renderer": "3.6.0-beta.6", "@vue/shared": "3.6.0-beta.6" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-xtAUa5mT3x8un9Ck8bkuvZYU9Bx0TTjlsrbJe5p/51zcz00+on3QuL0rODYlp+W7QIpGBgZZo/KFIK8SLZoSIQ=="], + + "vue-chartjs": ["vue-chartjs@5.3.3", "", { "peerDependencies": { "chart.js": "^4.1.1", "vue": "^3.0.0-0 || ^2.7.0" } }, "sha512-jqxtL8KZ6YJ5NTv6XzrzLS7osyegOi28UGNZW0h9OkDL7Sh1396ht4Dorh04aKrl2LiSalQ84WtqiG0RIJb0tA=="], + + "vue-component-type-helpers": ["vue-component-type-helpers@3.2.5", "", {}, "sha512-tkvNr+bU8+xD/onAThIe7CHFvOJ/BO6XCOrxMzeytJq40nTfpGDJuVjyCM8ccGZKfAbGk2YfuZyDMXM56qheZQ=="], + + "vue-demi": ["vue-demi@0.14.10", "", { "peerDependencies": { "@vue/composition-api": "^1.0.0-rc.1", "vue": "^3.0.0-0 || ^2.6.0" }, "optionalPeers": ["@vue/composition-api"], "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" } }, "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg=="], + + "vue-eslint-parser": ["vue-eslint-parser@10.4.0", "", { "dependencies": { "debug": "^4.4.0", "eslint-scope": "^8.2.0 || ^9.0.0", "eslint-visitor-keys": "^4.2.0 || ^5.0.0", "espree": "^10.3.0 || ^11.0.0", "esquery": "^1.6.0", "semver": "^7.6.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0" } }, "sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg=="], + + "vue-i18n": ["vue-i18n@11.2.8", "", { "dependencies": { "@intlify/core-base": "11.2.8", "@intlify/shared": "11.2.8", "@vue/devtools-api": "^6.5.0" }, "peerDependencies": { "vue": "^3.0.0" } }, "sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg=="], + + "vue-router": ["vue-router@5.0.3", "", { "dependencies": { "@babel/generator": "^7.28.6", "@vue-macros/common": "^3.1.1", "@vue/devtools-api": "^8.0.6", "ast-walker-scope": "^0.8.3", "chokidar": "^5.0.0", "json5": "^2.2.3", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.0", "muggle-string": "^0.4.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "scule": "^1.3.0", "tinyglobby": "^0.2.15", "unplugin": "^3.0.0", "unplugin-utils": "^0.3.1", "yaml": "^2.8.2" }, "peerDependencies": { "@pinia/colada": ">=0.21.2", "@vue/compiler-sfc": "^3.5.17", "pinia": "^3.0.4", "vue": "^3.5.0" }, "optionalPeers": ["@pinia/colada", "@vue/compiler-sfc", "pinia"] }, "sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw=="], + + "vue-tsc": ["vue-tsc@3.2.5", "", { "dependencies": { "@volar/typescript": "2.4.28", "@vue/language-core": "3.2.5" }, "peerDependencies": { "typescript": ">=5.0.0" }, "bin": { "vue-tsc": "bin/vue-tsc.js" } }, "sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA=="], + + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + + "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], + + "wheel-gestures": ["wheel-gestures@2.2.48", "", {}, "sha512-f+Gy33Oa5Z14XY9679Zze+7VFhbsQfBFXodnU2x589l4kxGM9L5Y8zETTmcMR5pWOPQyRv4Z0lNax6xCO0NSlA=="], + + "which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], + + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + + "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + + "xml-name-validator": ["xml-name-validator@4.0.0", "", {}, "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="], + + "y-protocols": ["y-protocols@1.0.7", "", { "dependencies": { "lib0": "^0.2.85" }, "peerDependencies": { "yjs": "^13.0.0" } }, "sha512-YSVsLoXxO67J6eE/nV4AtFtT3QEotZf5sK5BHxFBXso7VDUT3Tx07IfA6hsu5Q5OmBdMkQVmFZ9QOA7fikWvnw=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], + + "yjs": ["yjs@13.6.29", "", { "dependencies": { "lib0": "^0.2.99" } }, "sha512-kHqDPdltoXH+X4w1lVmMtddE3Oeqq48nM40FD5ojTd8xYhQpzIDcfE2keMSU5bAgRPJBe225WTUdyUgj1DtbiQ=="], + + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "@nuxt/kit/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "@nuxtjs/color-mode/@nuxt/kit": ["@nuxt/kit@3.21.1", "", { "dependencies": { "c12": "^3.3.3", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", "errx": "^0.1.0", "exsolve": "^1.0.8", "ignore": "^7.0.5", "jiti": "^2.6.1", "klona": "^2.0.6", "knitwork": "^1.3.0", "mlly": "^1.8.0", "ohash": "^2.0.11", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "rc9": "^3.0.0", "scule": "^1.3.0", "semver": "^7.7.4", "tinyglobby": "^0.2.15", "ufo": "^1.6.3", "unctx": "^2.5.0", "untyped": "^2.0.0" } }, "sha512-QORZRjcuTKgo++XP1Pc2c2gqwRydkaExrIRfRI9vFsPA3AzuHVn5Gfmbv1ic8y34e78mr5DMBvJlelUaeOuajg=="], + + "@nuxtjs/color-mode/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + + "@nuxtjs/color-mode/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "@unhead/vue/hookable": ["hookable@6.0.1", "", {}, "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw=="], + + "@vue/devtools-api/@vue/devtools-kit": ["@vue/devtools-kit@7.7.9", "", { "dependencies": { "@vue/devtools-shared": "^7.7.9", "birpc": "^2.3.0", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^1.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA=="], + + "@vue/devtools-core/nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="], + + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "c12/rc9": ["rc9@2.1.2", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="], + + "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "eslint/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "fontaine/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "magic-regexp/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + + "magic-regexp/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "markdown-it/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "mlly/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], + + "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + + "nypm/citty": ["citty@0.2.1", "", {}, "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg=="], + + "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.5", "", {}, "sha512-RxlLX/DPoarZ9PtxVrQgZhPoor987YtKQqCo5zkjX+0S0yLJ7Vv515Wk6+xtTL67VONKJKxETWZwuZjss2idYw=="], + + "strip-literal/js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], + + "unctx/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + + "unctx/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "unhead/hookable": ["hookable@6.0.1", "", {}, "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw=="], + + "unimport/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + + "unimport/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + + "unimport/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "unplugin-auto-import/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "unplugin-vue-components/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], + + "vaul-vue/@vueuse/core": ["@vueuse/core@10.11.1", "", { "dependencies": { "@types/web-bluetooth": "^0.0.20", "@vueuse/metadata": "10.11.1", "@vueuse/shared": "10.11.1", "vue-demi": ">=0.14.8" } }, "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww=="], + + "vue-i18n/@vue/devtools-api": ["@vue/devtools-api@6.6.4", "", {}, "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="], + + "vue-router/@vue/devtools-api": ["@vue/devtools-api@8.0.6", "", { "dependencies": { "@vue/devtools-kit": "^8.0.6" } }, "sha512-+lGBI+WTvJmnU2FZqHhEB8J1DXcvNlDeEalz77iYgOdY1jTj1ipSBaKj3sRhYcy+kqA8v/BSuvOz1XJucfQmUA=="], + + "@nuxtjs/color-mode/@nuxt/kit/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "@nuxtjs/color-mode/@nuxt/kit/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "@nuxtjs/color-mode/@nuxt/kit/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], + + "@nuxtjs/color-mode/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "@nuxtjs/color-mode/pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "@vue/devtools-api/@vue/devtools-kit/@vue/devtools-shared": ["@vue/devtools-shared@7.7.9", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA=="], + + "@vue/devtools-api/@vue/devtools-kit/perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], + + "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "vaul-vue/@vueuse/core/@types/web-bluetooth": ["@types/web-bluetooth@0.0.20", "", {}, "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow=="], + + "vaul-vue/@vueuse/core/@vueuse/metadata": ["@vueuse/metadata@10.11.1", "", {}, "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw=="], + + "vaul-vue/@vueuse/core/@vueuse/shared": ["@vueuse/shared@10.11.1", "", { "dependencies": { "vue-demi": ">=0.14.8" } }, "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA=="], + } +} diff --git a/bo/components.d.ts b/bo/components.d.ts new file mode 100644 index 0000000..cc71a3d --- /dev/null +++ b/bo/components.d.ts @@ -0,0 +1,41 @@ +/* eslint-disable */ +// @ts-nocheck +// biome-ignore lint: disable +// oxlint-disable +// ------ +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 + +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + Button: typeof import('./src/components/custom/Button.vue')['default'] + Cs_PrivacyPolicyView: typeof import('./src/components/terms/cs_PrivacyPolicyView.vue')['default'] + Cs_TermsAndConditionsView: typeof import('./src/components/terms/cs_TermsAndConditionsView.vue')['default'] + En_PrivacyPolicyView: typeof import('./src/components/terms/en_PrivacyPolicyView.vue')['default'] + En_TermsAndConditionsView: typeof import('./src/components/terms/en_TermsAndConditionsView.vue')['default'] + Input: typeof import('./src/components/custom/Input.vue')['default'] + LangSwitch: typeof import('./src/components/inner/langSwitch.vue')['default'] + Pl_PrivacyPolicyView: typeof import('./src/components/terms/pl_PrivacyPolicyView.vue')['default'] + Pl_TermsAndConditionsView: typeof import('./src/components/terms/pl_TermsAndConditionsView.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + ThemeSwitch: typeof import('./src/components/inner/themeSwitch.vue')['default'] + TopBarLogin: typeof import('./src/components/TopBarLogin.vue')['default'] + UAlert: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Alert.vue')['default'] + UButton: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Button.vue')['default'] + UCard: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Card.vue')['default'] + UCheckbox: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Checkbox.vue')['default'] + UContainer: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Container.vue')['default'] + UDrawer: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Drawer.vue')['default'] + UForm: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Form.vue')['default'] + UFormField: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/FormField.vue')['default'] + UIcon: typeof import('./node_modules/@nuxt/ui/dist/runtime/vue/components/Icon.vue')['default'] + UInput: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Input.vue')['default'] + UPagination: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Pagination.vue')['default'] + USelect: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Select.vue')['default'] + USelectMenu: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/SelectMenu.vue')['default'] + } +} diff --git a/bo/env.d.ts b/bo/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/bo/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/bo/index.html b/bo/index.html new file mode 100644 index 0000000..7bafb5a --- /dev/null +++ b/bo/index.html @@ -0,0 +1,24 @@ + + + + + + + TimeTracker + + + +
+ + + diff --git a/bo/package.json b/bo/package.json new file mode 100644 index 0000000..8f33741 --- /dev/null +++ b/bo/package.json @@ -0,0 +1,59 @@ +{ + "name": "bo", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build", + "lint:oxlint": "oxlint . --fix", + "format": "prettier --write --experimental-cli src/" + }, + "dependencies": { + "@nuxt/ui": "^4.5.0", + "@tailwindcss/vite": "^4.2.0", + "chart.js": "^4.5.1", + "pinia": "^3.0.4", + "tailwindcss": "^4.2.0", + "vue": "beta", + "vue-chartjs": "^5.3.3", + "vue-i18n": "11", + "vue-router": "^5.0.2" + }, + "devDependencies": { + "@tsconfig/node24": "^24.0.4", + "@types/node": "^24.10.13", + "@vitejs/plugin-vue": "^6.0.4", + "@vue/eslint-config-typescript": "^14.6.0", + "@vue/tsconfig": "^0.8.1", + "jiti": "^2.6.1", + "npm-run-all2": "^8.0.4", + "oxlint": "~1.47.0", + "prettier": "3.8.1", + "typescript": "~5.9.3", + "vite": "beta", + "vite-plugin-vue-devtools": "^8.0.6", + "vue-tsc": "^3.2.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "overrides": { + "vue": "beta", + "@vue/compiler-core": "beta", + "@vue/compiler-dom": "beta", + "@vue/compiler-sfc": "beta", + "@vue/compiler-ssr": "beta", + "@vue/compiler-vapor": "beta", + "@vue/reactivity": "beta", + "@vue/runtime-core": "beta", + "@vue/runtime-dom": "beta", + "@vue/runtime-vapor": "beta", + "@vue/server-renderer": "beta", + "@vue/shared": "beta", + "@vue/compat": "beta" + } +} diff --git a/bo/public/favicon.ico b/bo/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/bo/public/favicon.ico differ diff --git a/bo/src/App.vue b/bo/src/App.vue new file mode 100644 index 0000000..6bc0c10 --- /dev/null +++ b/bo/src/App.vue @@ -0,0 +1,9 @@ + + + diff --git a/bo/src/app.config.ts b/bo/src/app.config.ts new file mode 100644 index 0000000..c97752a --- /dev/null +++ b/bo/src/app.config.ts @@ -0,0 +1,141 @@ +import type { NuxtUIOptions } from '@nuxt/ui/unplugin' + +export const uiOptions: NuxtUIOptions = { + ui: { + colors: { + primary: 'blue', + neutral: 'zink', + }, + pagination: { + slots: { + root: '', + } + }, + // selectMenu: { + // variants: { + // size: { + // xxl: { + // group: 'mt-20!' + // }, + // }, + // }, + button: { + slots: { + base: 'border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', + }, + }, + input: { + slots: { + base: 'text-(--black) dark:text-white border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', + }, + }, + // variants: { + // size: { + // xxl: { + // base: 'h-8 sm:h-[38px] px-[10px] py-[10px] border! border-(--border-light)! dark:border-(--border-dark)!', + // trailingIcon: 'px-6 !text-base', + // root: 'w-full', + // }, + // }, + // }, + // defaultVariants: { + // size: 'xxl', + // }, + // }, + // textarea: { + // slots: { + // base: 'disabled:!opacity-100 text-(--black) dark:text-white disabled:text-(--gray) !text-base placeholder:text-(--gray)/50! dark:placeholder:text-(--gray)!', + // trailingIcon: 'shrink-0 pr-4 !text-base', + // error: 'text-sm! !sm:text-[15px] leading-none! mt-1!', + // }, + // variants: { + // size: { + // xxl: { + // base: 'px-[25px] py-[15px]', + // trailingIcon: 'px-6 !text-base', + // root: 'w-full', + // }, + // }, + // }, + // defaultVariants: { + // size: 'xxl', + // }, + // }, + // formField: { + // slots: { + // base: 'flex !flex-col border! border-(--border-light)! dark:border-(--border-dark)!', + // label: 'text-[15px] text-(--gray)! dark:text-(--gray-dark)! pl-6! leading-none! font-normal! mb-1 sm:mb-1', + // error: 'text-sm! !sm:text-[15px] leading-none! mt-1!', + // }, + // variants: { + // size: { + // xxl: 'w-full', + // label: '!label !mb-1', + // }, + // }, + // defaultVariants: { + // size: 'xxl', + // }, + // }, + + // defaultVariants: { + // size: 'xxl', + // }, + // }, + select: { + slots: { + base: 'w-full! cursor-pointer border! border-(--border-light)! dark:border-(--border-dark)! outline-0! ring-0!', + itemLabel: 'text-black! dark:text-white!', + itemTrailingIcon: 'text-black! dark:text-white!' + }, + // variants: { + // size: { + // xxl: { + // base: ' h-12 sm:h-[54px] px-[25px]', + // item: 'py-2 px-2', + // trailingIcon: 'px-6 !text-base', + // leading: '!px-[25px]', + // itemLabel: 'text-black dark:text-white', + // }, + // }, + // }, + // defaultVariants: { + // size: 'xxl', + // }, + // }, + // inputDate: { + // slots: { + // leadingIcon: 'border-none! outline-0! ring-0!', + // }, + // defaultVariants: { + // size: 'xxl', + // }, + // }, + // checkbox: { + // slots: { + // label: 'block !font-normal', + // indicator: '!bg-(--accent-brown)', + // }, + // }, + // radioGroup: { + // slots: { + // label: 'block !font-normal text-base font-normal leading-none text-(--black) dark:text-(--second-light)', + // indicator: '!bg-(--accent-brown)', + // size: 'xxl', + // }, + + // }, + // modal: { + // slots: { + // overlay: 'dark:bg-(--main-dark)/90', + // }, + // }, + // tooltip: { + // slots: { + // content: 'max-w-60 sm:max-w-100 bg-(--main-light)! dark:bg-(--black)! w-full h-full', + // text: 'whitespace-normal', + // }, + } + } +} + diff --git a/bo/src/assets/main.css b/bo/src/assets/main.css new file mode 100644 index 0000000..e8f89b6 --- /dev/null +++ b/bo/src/assets/main.css @@ -0,0 +1,87 @@ +@import 'tailwindcss'; +@import '@nuxt/ui'; + +body { + font-family: "Inter", sans-serif; +} + +.inter { + font-family: "Inter", sans-serif; +} + +.container{ + max-width: 2100px; + margin: auto; +} + +@theme { + --main-light: #FFFEFB; + --second-light: #F5F6FA; + + --main-dark: #212121; + --black: #1A1A1A; + + /* gray */ + --gray: #6B6B6B; + --gray-dark: #A3A3A3; + + --accent-green: #004F3D; + --accent-green-dark: #00A882; + --accent-brown: #9A7F62; + --accent-red: #B72D2D; + --dark-red: #F94040; + --accent-orange: #E68D2B; + --accent-blue: #002B4F; + + /* borders */ + --border-light: #E8E7E0; + --border-dark: #3F3E3D; + + /* text */ + --text-dark: #FFFEFB; + + /* placeholder */ + --placeholder: #8C8C8A; + + --ui-bg: var(--main-light); + --ui-primary: var(--color-gray-300); + --ui-secondary: var(--accent-green); + --ui-border-accented: var(--border-light); + --ui-text-dimmed: var(--gray); + --ui-bg-elevated: var(--color-gray-300); + --ui-border: var(--border-light); + --ui-color-neutral-700: var(--black); + --ui-error: var(--accent-red); + --border: var(--border-light); + --tw-border-style: var(--border-light); +} + +.dark { + --ui-bg: var(--black); + --ui-primary: var(--color-gray-500); + --ui-secondary: var(--accent-green-dark); + --ui-border-accented: var(--border-dark); + --ui-text-dimmed: var(--gray-dark); + --ui-border: var(--border-dark); + --ui-bg-elevated: var(--color-gray-500); + --ui-error: var(--dark-red); + --border: var(--border-dark); + --tw-border-style: var(--border-dark); +} + + .label-form { + @apply text-(--gray) dark:text-(--gray-dark) pl-0 md:pl-6 leading-none; + } + + .title { + @apply font-medium text-[19px] sm:text-xl md:text-[22px] leading-none text-(--black) dark:text-(--main-light); + } + + .column-title { + @apply md:ml-[25px] mb-[25px] sm:mb-[30px]; + } + + .form-title { + @apply text-(--accent-green) dark:text-(--accent-green-dark) font-medium; + } + diff --git a/bo/src/components/TopBarLogin.vue b/bo/src/components/TopBarLogin.vue new file mode 100644 index 0000000..ea5e09f --- /dev/null +++ b/bo/src/components/TopBarLogin.vue @@ -0,0 +1,38 @@ + + + diff --git a/bo/src/components/custom/Button.vue b/bo/src/components/custom/Button.vue new file mode 100644 index 0000000..fac89d3 --- /dev/null +++ b/bo/src/components/custom/Button.vue @@ -0,0 +1,15 @@ + + + diff --git a/bo/src/components/custom/Input.vue b/bo/src/components/custom/Input.vue new file mode 100644 index 0000000..e69de29 diff --git a/bo/src/components/inner/langSwitch.vue b/bo/src/components/inner/langSwitch.vue new file mode 100644 index 0000000..d08efc6 --- /dev/null +++ b/bo/src/components/inner/langSwitch.vue @@ -0,0 +1,71 @@ + + + diff --git a/bo/src/components/inner/themeSwitch.vue b/bo/src/components/inner/themeSwitch.vue new file mode 100644 index 0000000..c520a38 --- /dev/null +++ b/bo/src/components/inner/themeSwitch.vue @@ -0,0 +1,12 @@ + + + diff --git a/bo/src/components/terms/cs_PrivacyPolicyView.vue b/bo/src/components/terms/cs_PrivacyPolicyView.vue new file mode 100644 index 0000000..7cd0d04 --- /dev/null +++ b/bo/src/components/terms/cs_PrivacyPolicyView.vue @@ -0,0 +1,124 @@ + + + diff --git a/bo/src/components/terms/cs_TermsAndConditionsView.vue b/bo/src/components/terms/cs_TermsAndConditionsView.vue new file mode 100644 index 0000000..dfebb68 --- /dev/null +++ b/bo/src/components/terms/cs_TermsAndConditionsView.vue @@ -0,0 +1,103 @@ + + + diff --git a/bo/src/components/terms/en_PrivacyPolicyView.vue b/bo/src/components/terms/en_PrivacyPolicyView.vue new file mode 100644 index 0000000..ccc3737 --- /dev/null +++ b/bo/src/components/terms/en_PrivacyPolicyView.vue @@ -0,0 +1,122 @@ + + + diff --git a/bo/src/components/terms/en_TermsAndConditionsView.vue b/bo/src/components/terms/en_TermsAndConditionsView.vue new file mode 100644 index 0000000..5b7fb12 --- /dev/null +++ b/bo/src/components/terms/en_TermsAndConditionsView.vue @@ -0,0 +1,103 @@ + + + diff --git a/bo/src/components/terms/pl_PrivacyPolicyView.vue b/bo/src/components/terms/pl_PrivacyPolicyView.vue new file mode 100644 index 0000000..d8fa918 --- /dev/null +++ b/bo/src/components/terms/pl_PrivacyPolicyView.vue @@ -0,0 +1,125 @@ + + + diff --git a/bo/src/components/terms/pl_TermsAndConditionsView.vue b/bo/src/components/terms/pl_TermsAndConditionsView.vue new file mode 100644 index 0000000..dad9191 --- /dev/null +++ b/bo/src/components/terms/pl_TermsAndConditionsView.vue @@ -0,0 +1,104 @@ + + + diff --git a/bo/src/composable/useCookie.ts b/bo/src/composable/useCookie.ts new file mode 100644 index 0000000..269017b --- /dev/null +++ b/bo/src/composable/useCookie.ts @@ -0,0 +1,66 @@ +export const useCookie = () => { + function getCookie(name: string): string | null { + const cookies = document.cookie ? document.cookie.split('; ') : [] + + for (const cookie of cookies) { + const [key, ...rest] = cookie.split('=') + if (key === name) { + return decodeURIComponent(rest.join('=')) + } + } + + return null + } + + function setCookie( + name: string, + value: string, + options?: { + days?: number + path?: string + domain?: string + secure?: boolean + sameSite?: 'Lax' | 'Strict' | 'None' + }, + ) { + let cookie = `${name}=${encodeURIComponent(value)}` + + if (options?.days) { + const date = new Date() + date.setTime(date.getTime() + options.days * 24 * 60 * 60 * 1000) + cookie += `; expires=${date.toUTCString()}` + } + + cookie += `; path=${options?.path ?? '/'}` + + if (options?.domain) { + cookie += `; domain=${options.domain}` + } + + if (options?.secure) { + cookie += `; Secure` + } + + if (options?.sameSite) { + cookie += `; SameSite=${options.sameSite}` + } + + document.cookie = cookie + } + + function deleteCookie(name: string, path: string = '/', domain?: string) { + let cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=${path}` + + if (domain) { + cookie += `; domain=${domain}` + } + + document.cookie = cookie + } + + return { + getCookie, + setCookie, + deleteCookie, + } +} diff --git a/bo/src/composable/useFetchJson.ts b/bo/src/composable/useFetchJson.ts new file mode 100644 index 0000000..b181497 --- /dev/null +++ b/bo/src/composable/useFetchJson.ts @@ -0,0 +1,77 @@ +import type { Resp } from '@/types' + +export async function useFetchJson(url: string, opt?: RequestInit): Promise> { + const prefix = import.meta.env.VITE_API_URL ?? '' + const urlFull = join(prefix, url) + + const headers = new Headers(opt?.headers) + if (!headers.has('Content-Type')) { + headers.set('Content-Type', 'application/json') + } + + const fetchOptions: RequestInit = { + ...opt, + headers, + // Always include cookies so the backend can read the HTTPOnly access_token + credentials: 'same-origin', + } + + try { + const res = await fetch(urlFull, fetchOptions) + + const contentType = res.headers.get('content-type') ?? '' + + if (!contentType.includes('application/json')) { + throw { message: 'this is not proper json format' } as Resp + } + + const data = await res.json() + + // Handle 401 — access token expired; try to refresh via the HTTPOnly refresh_token cookie + if (res.status === 401) { + const { useAuthStore } = await import('@/stores/auth') + const authStore = useAuthStore() + + const refreshed = await authStore.refreshAccessToken() + + if (refreshed) { + // Retry the original request — cookies are updated by the refresh endpoint + const retryRes = await fetch(urlFull, fetchOptions) + + const retryContentType = retryRes.headers.get('content-type') ?? '' + if (!retryContentType.includes('application/json')) { + throw { message: 'this is not proper json format' } as Resp + } + + const retryData = await retryRes.json() + + if (!retryRes.ok) { + throw retryData as Resp + } + + return retryData as Resp + } + + // Refresh failed — logout and propagate the error + authStore.logout() + throw data as Resp + } + + if (!res.ok) { + throw data as Resp + } + + return data as Resp + } catch (error) { + throw error as Resp + } +} + +export function join(...parts: string[]): string { + const path = parts + .filter(Boolean) + .join('/') + .replace(/\/{2,}/g, '/') + + return path.startsWith('/') ? path : `/${path}` +} diff --git a/bo/src/composable/useRepoApi.ts b/bo/src/composable/useRepoApi.ts new file mode 100644 index 0000000..072f76f --- /dev/null +++ b/bo/src/composable/useRepoApi.ts @@ -0,0 +1,87 @@ +import { useFetchJson } from './useFetchJson' +import type { Resp } from '@/types/response' + +const API_PREFIX = '/api/v1/repo' + +export interface QuarterData { + quarter: string + time: number +} + +export interface IssueTimeSummary { + IssueID: number + IssueName: string + UserId: number + Initials: string + CreatedDate: string + TotalHoursSpent: number +} + +export interface IssueResponse { + items: IssueTimeSummary[] + count: number +} + +export interface PagingParams { + page?: number + pageSize?: number +} + +export async function getRepos(): Promise { + const result = await useFetchJson(`${API_PREFIX}/get-repos`) + return result +} + +// export async function getYears(repoID: number): Promise { +// return useFetchJson(`${API_PREFIX}/get-years?repoID=${repoID}`) +// } +// console.log(getYears(), 'leraaaaaa') + +export async function getYears(repoID: number): Promise { + return useFetchJson(`${API_PREFIX}/get-years?repoID=${repoID}`); +} + +// Correct way to log the data + +export async function getQuarters(repoID: number, year: number): Promise { + return useFetchJson(`${API_PREFIX}/get-quarters?repoID=${repoID}&year=${year}`) +} + +// export async function getIssues( +// repoID: number, +// year: number, +// quarter: number, +// page: number = 1, +// pageSize: number = 10 +// ): Promise { +// // The get-issues endpoint uses GET with pagination in query params +// return useFetchJson( +// `${API_PREFIX}/get-issues?repoID=${repoID}&year=${year}&quarter=${quarter}&page_number=${page}&elements_per_page=${pageSize}` +// ) +// } +// async function logYears() { +// const years = await getIssues(7); // pass a repoID +// console.log(years, 'leraaaaaa'); +// } +export async function getIssues( + repoID: number, + year: number, + quarter: number, + page: number = 1, + pageSize: number = 10 +): Promise { + return useFetchJson( + `${API_PREFIX}/get-issues?repoID=${repoID}&year=${year}&quarter=${quarter}&page_number=${page}&elements_per_page=${pageSize}` + ); +} + +// Correct logging function +async function logIssues() { + const repoID = 7; + const year = 2026; // example year + const quarter = 1; // example quarter + const issues = await getIssues(repoID, year, quarter); + console.log(issues, 'leraaaaaa'); +} + +logIssues(); \ No newline at end of file diff --git a/bo/src/composable/useValidation.ts b/bo/src/composable/useValidation.ts new file mode 100644 index 0000000..5cfce47 --- /dev/null +++ b/bo/src/composable/useValidation.ts @@ -0,0 +1,98 @@ +import type { Ref } from 'vue' +import type { FormError } from '@nuxt/ui' +import { settings } from '@/router/settings' +import { i18n } from '@/plugins/i18n' + +export const useValidation = () => { + const errors = [] as FormError[] + + function reset() { + errors.length = 0 + } + + function validateFirstName(first_name_ref: Ref, name: string, message: string) { + if (!first_name_ref.value || !/^[A-Za-z]{2,}$/.test(first_name_ref.value)) { + errors.push({ name: name, message: message }) + } + } + + function validateLastName(last_name_ref: Ref, name: string, message: string) { + if (!last_name_ref.value || !/^[A-Za-z]{2,}$/.test(last_name_ref.value)) { + errors.push({ name: name, message: message }) + } + } + + function validateEmail(email_ref: Ref, name: string, message: string) { + if (!email_ref.value || !/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(email_ref.value)) { + errors.push({ name: name, message: message }) + } + } + + // function validatePasswords( + // password_ref: Ref, + // password_name: string, + // confirm_password_ref: Ref, + // confirm_name: string, + // message_password: string, + // message_confirm_password: string, + // ) { + // const regex = new RegExp(settings.app?.password_regex ?? '^.{8,}$') + + // if (!password_ref.value) { + // errors.push({ name: password_name, message: message_password }) + // } else if (!regex.test(password_ref.value)) { + // errors.push({ + // name: password_name, + // message: 'general.registration_validation_password_requirements' + // }) + // } + + // if (!confirm_password_ref.value) { + // errors.push({ name: confirm_name, message: message_confirm_password }) + // } else if (password_ref.value !== confirm_password_ref.value) { + // errors.push({ + // name: confirm_name, + // message: 'registration_validation_password_not_same' + // }) + // } + // } + + function validatePasswords( + password_ref: Ref, + password_name: string, + confirm_password_ref: Ref, + confirm_name: string, + message_confirm_password: string, + ) { + const regexPass = new RegExp( + '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+\\-=[\\]{};:\'",.<>/?]).{8,}$' + ) + + if (!password_ref.value) { + errors.push({ name: password_name, message: i18n.t('validate_error.password_required') }) + } else if (!regexPass.test(password_ref.value)) { + errors.push({ + name: password_name, + message: i18n.t('validate_error.registration_validation_password_requirements') + }) + } + + if (!confirm_password_ref.value) { + errors.push({ name: confirm_name, message: message_confirm_password }) + } else if (password_ref.value !== confirm_password_ref.value) { + errors.push({ + name: confirm_name, + message: i18n.t('validate_error.registration_validation_password_not_same') + }) + } + } + + return { + errors, + reset, + validateFirstName, + validateLastName, + validateEmail, + validatePasswords, + } +} diff --git a/bo/src/layouts/default.vue b/bo/src/layouts/default.vue new file mode 100644 index 0000000..164d6c7 --- /dev/null +++ b/bo/src/layouts/default.vue @@ -0,0 +1,14 @@ + + + diff --git a/bo/src/layouts/empty.vue b/bo/src/layouts/empty.vue new file mode 100644 index 0000000..8ab8789 --- /dev/null +++ b/bo/src/layouts/empty.vue @@ -0,0 +1,11 @@ + + diff --git a/bo/src/main.ts b/bo/src/main.ts new file mode 100644 index 0000000..6c8ba82 --- /dev/null +++ b/bo/src/main.ts @@ -0,0 +1,17 @@ +import './assets/main.css' +import { i18ninstall } from '@/plugins/i18n' + +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from '@/App.vue' +import ui from '@nuxt/ui/vue-plugin' +import router from './router' + +const app = createApp(App) + +app.use(createPinia()) +app.use(router) +app.use(ui) +app.use(i18ninstall) +app.mount('#app') diff --git a/bo/src/plugins/i18n.ts b/bo/src/plugins/i18n.ts new file mode 100644 index 0000000..1b8262b --- /dev/null +++ b/bo/src/plugins/i18n.ts @@ -0,0 +1,47 @@ +import { useFetchJson } from '@/composable/useFetchJson' +import { langs } from '@/router/langs' +import type { Resp } from '@/types' +import { getLangs } from '@/utils/fake' +import { watch } from 'vue' +import { createI18n, type LocaleMessageValue, type PathValue, type VueMessageType } from 'vue-i18n' + +// const x = + +export const i18ninstall = createI18n({ + legacy: false, // you must set `false`, to use Composition API + locale: 'en', + lazy: true, + messages: {}, + messageResolver: (obj, path) => { + const value = path + .split('.') + // eslint-disable-next-line + .reduce((o, key) => (o as any)?.[key], obj as any) + + if (value === '' || value === null || value === undefined) { + return null + } + + return value as PathValue + }, +}) + +export const i18n = i18ninstall.global + +let downloadedLangs = [] as string[] + +watch( + i18n.locale, + async (l) => { + if (!downloadedLangs.includes(l)) { + const lang = langs.find((x) => x.iso_code == l) + if (!lang) return + downloadedLangs.push(l) + const res = await useFetchJson(`/api/v1/translations?lang_id=${lang?.id}&scope=backoffice`) + // console.log(res.items[lang.id as number]['backoffice']) + + i18n.setLocaleMessage(l, res.items[lang.id]['backoffice']) + } + }, + {}, +) diff --git a/bo/src/router/index.ts b/bo/src/router/index.ts new file mode 100644 index 0000000..d7f1251 --- /dev/null +++ b/bo/src/router/index.ts @@ -0,0 +1,86 @@ +import { createRouter, createWebHistory } from 'vue-router' + +import Default from '@/layouts/default.vue' +import Empty from '@/layouts/empty.vue' +import { currentLang, initLangs, langs } from './langs' +import { getSettings } from './settings' + +// Helper: read the non-HTTPOnly is_authenticated cookie set by the backend. +// The backend sets it to "1" on login and removes it on logout. +function isAuthenticated(): boolean { + if (typeof document === 'undefined') return false + return document.cookie.split('; ').some((c) => c === 'is_authenticated=1') +} + + +await initLangs() +await getSettings() + + +const router = createRouter({ + history: createWebHistory(import.meta.env.VITE_BASE_URL), + routes: [ + { + path: '/', + redirect: () => `/${currentLang.value?.iso_code}`, + }, + { + path: '/:locale', + children: [ + // { + // path: '', + // component: Default, + // children: [ + // ], + // }, + { + path: '', + component: Empty, + children: [ + { path: '', component: () => import('../views/HomeView.vue'), name: 'home' }, + { path: 'chart', component: () => import('../views/RepoChartView.vue'), name: 'chart' }, + { path: 'login', component: () => import('@/views/LoginView.vue'), name: 'login', meta: { guest: true } }, + { path: 'register', component: () => import('@/views/RegisterView.vue'), name: 'register', meta: { guest: true } }, + { path: 'password-recovery', component: () => import('@/views/PasswordRecoveryView.vue'), name: 'password-recovery', meta: { guest: true } }, + { path: 'reset-password', component: () => import('@/views/ResetPasswordForm.vue'), name: 'reset-password', meta: { guest: true } }, + { path: 'verify-email', component: () => import('@/views/VerifyEmailView.vue'), name: 'verify-email', meta: { guest: true } }, + ], + }, + ], + }, + ], +}) + +// Navigation guard: language handling + auth protection +router.beforeEach((to, from, next) => { + const locale = to.params.locale as string + const localeLang = langs.find((x) => x.iso_code == locale) + + // Check if the locale is valid + if (locale && langs.length > 0) { + const validLocale = langs.find((l) => l.lang_code === locale) + + if (validLocale) { + currentLang.value = localeLang + + // Auth guard: if the route does NOT have meta.guest = true, require authentication + if (!to.meta?.guest && !isAuthenticated()) { + return next({ name: 'login', params: { locale } }) + } + + return next() + } else if (locale) { + // Invalid locale - redirect to default language + return next(`/${currentLang.value?.iso_code}${to.path.replace(`/${locale}`, '') || '/'}`) + } + } + + // No locale in URL - redirect to default language + if (!locale && to.path !== '/') { + return next(`/${currentLang.value?.iso_code}${to.path}`) + } + + next() +}) + +export default router diff --git a/bo/src/router/langs.ts b/bo/src/router/langs.ts new file mode 100644 index 0000000..520516f --- /dev/null +++ b/bo/src/router/langs.ts @@ -0,0 +1,30 @@ +import { useCookie } from "@/composable/useCookie" +import { useFetchJson } from "@/composable/useFetchJson" +import type { Language } from "@/types" +import { reactive, ref } from "vue" + +export const langs = reactive([] as Language[]) +export const currentLang = ref() + +const deflang = ref() +const cookie = useCookie() +// Get available language codes for route matching +// export const availableLocales = computed(() => langs.map((l) => l.lang_code)) + +// Initialize languages from API +export async function initLangs() { + try { + const { items } = await useFetchJson('/api/v1/langs') + langs.push(...items) + + let idfromcookie = null + const cc = cookie.getCookie('lang_id') + if (cc) { + idfromcookie = langs.find((x) => x.id == parseInt(cc)) + } + deflang.value = items.find((x) => x.is_default == true) + currentLang.value = idfromcookie ?? deflang.value + } catch (error) { + console.error('Failed to fetch languages:', error) + } +} diff --git a/bo/src/router/settings.ts b/bo/src/router/settings.ts new file mode 100644 index 0000000..2e3b3b2 --- /dev/null +++ b/bo/src/router/settings.ts @@ -0,0 +1,11 @@ +import { useFetchJson } from "@/composable/useFetchJson"; +import type { Resp } from "@/types"; +import type { Settings } from "@/types/settings"; +import { reactive } from "vue"; + +export const settings = reactive({} as Settings) + +export async function getSettings() { + const { items } = await useFetchJson>('/api/v1/settings',) + Object.assign(settings, items) +} diff --git a/bo/src/stores/auth.ts b/bo/src/stores/auth.ts new file mode 100644 index 0000000..b73f0cf --- /dev/null +++ b/bo/src/stores/auth.ts @@ -0,0 +1,204 @@ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' +import { useFetchJson } from '@/composable/useFetchJson' + +export interface User { + id: string + email: string + name: string +} + +interface AuthResponse { + access_token: string + token_type: string + expires_in: number + user: User +} + +// Read the non-HTTPOnly is_authenticated cookie set by the backend. +// The backend sets it to "1" on login and removes it on logout. +function readIsAuthenticatedCookie(): boolean { + if (typeof document === 'undefined') return false + return document.cookie.split('; ').some((c) => c === 'is_authenticated=1') +} + +export const useAuthStore = defineStore('auth', () => { + // useRouter must be called at the top level of the setup function, not inside a method + // We use window.location as a fallback-safe redirect mechanism instead, to avoid + // the "Cannot read properties of undefined" error when the router is not yet available. + const user = ref(null) + const loading = ref(false) + const error = ref(null) + + // Auth state is derived from the is_authenticated cookie (set/cleared by backend). + // We use a ref so Vue reactivity works; it is initialised from the cookie on store creation. + const _isAuthenticated = ref(readIsAuthenticatedCookie()) + + const isAuthenticated = computed(() => _isAuthenticated.value) + + /** Call after any successful login to sync the reactive flag. */ + function _syncAuthState() { + _isAuthenticated.value = readIsAuthenticatedCookie() + } + + async function login(email: string, password: string) { + loading.value = true + error.value = null + + try { + const data = await useFetchJson('/api/v1/auth/login', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email, password }), + }) + + const response = (data as any).items || data + + if (!response.access_token) { + throw new Error('No access token received') + } + + user.value = response.user + _syncAuthState() + + return true + } catch (e: any) { + error.value = e?.error ?? 'An error occurred' + return false + } finally { + loading.value = false + } + } + + async function register( + first_name: string, + last_name: string, + email: string, + password: string, + confirm_password: string, + lang?: string, + ) { + loading.value = true + error.value = null + try { + await useFetchJson('/api/v1/auth/register', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ first_name, last_name, email, password, confirm_password, lang: lang || 'en' }), + }) + + return { success: true, requiresVerification: true } + } catch (e: any) { + error.value = e?.error ?? 'An error occurred' + return { success: false, requiresVerification: false } + } finally { + loading.value = false + } + } + + async function requestPasswordReset(email: string) { + loading.value = true + error.value = null + + try { + await useFetchJson('/api/v1/auth/forgot-password', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email }), + }) + + return true + } catch (e: any) { + error.value = e?.error ?? 'An error occurred' + return false + } finally { + loading.value = false + } + } + + async function resetPassword(token: string, password: string) { + loading.value = true + error.value = null + + try { + await useFetchJson('/api/v1/auth/reset-password', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ token, password }), + }) + + return true + } catch (e: any) { + error.value = e?.error ?? 'An error occurred' + return false + } finally { + loading.value = false + } + } + + function loginWithGoogle() { + window.location.href = '/api/v1/auth/google' + } + + /** + * Logout: calls the backend to revoke the refresh token and clear HTTPOnly cookies, + * clears local reactive state, then redirects to the login page. + */ + async function logout() { + try { + await useFetchJson('/api/v1/auth/logout', { + method: 'POST', + }) + } catch { + // Continue with local cleanup even if the backend call fails + } finally { + user.value = null + _isAuthenticated.value = false + // Use dynamic import to get the router instance safely from outside the setup context + const { default: router } = await import('@/router') + router.push({ name: 'login' }) + } + } + + /** + * Refresh the access token by calling the backend. + * The backend reads the HTTPOnly refresh_token cookie, rotates it, and sets new cookies. + * Returns true on success. + */ + async function refreshAccessToken(): Promise { + try { + await useFetchJson('/api/v1/auth/refresh', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + // No body needed — the backend reads the refresh_token from the HTTPOnly cookie + }) + + _syncAuthState() + return true + } catch { + // Refresh failed — clear local state + user.value = null + _isAuthenticated.value = false + return false + } + } + + function clearError() { + error.value = null + } + + return { + user, + loading, + error, + isAuthenticated, + login, + loginWithGoogle, + register, + requestPasswordReset, + resetPassword, + logout, + refreshAccessToken, + clearError, + } +}) diff --git a/bo/src/stores/settings.ts b/bo/src/stores/settings.ts new file mode 100644 index 0000000..da907cb --- /dev/null +++ b/bo/src/stores/settings.ts @@ -0,0 +1,14 @@ +import { useFetchJson } from '@/composable/useFetchJson' +import type { Resp } from '@/types' +import type { Settings } from '@/types/settings' +import { defineStore } from 'pinia' + +export const useSettingsStore = defineStore('settings', () => { + async function getSettings() { + const { items } = await useFetchJson>('/api/v1/settings',) + console.log(items); + } + + getSettings() + return {} +}) diff --git a/bo/src/stores/theme.ts b/bo/src/stores/theme.ts new file mode 100644 index 0000000..643052a --- /dev/null +++ b/bo/src/stores/theme.ts @@ -0,0 +1,47 @@ +import { defineStore } from 'pinia' +import { computed, ref } from 'vue' + +export const useThemeStore = defineStore('theme', () => { + const vueuseColorScheme = ref(localStorage.getItem('vueuse-color-scheme')) + const themeIcon = computed(() => { + switch (true) { + case vueuseColorScheme.value == 'light': + return 'i-heroicons-sun' + case vueuseColorScheme.value == 'dark': + return 'i-heroicons-moon' + case vueuseColorScheme.value == 'auto': + return 'i-heroicons-computer-desktop' + } + }) + + function setTheme() { + switch (true) { + case localStorage.getItem('vueuse-color-scheme') == 'dark': + vueuseColorScheme.value = 'light' + localStorage.setItem('vueuse-color-scheme', 'light') + document.documentElement.classList.toggle('dark', false) + break + case localStorage.getItem('vueuse-color-scheme') == 'light': + vueuseColorScheme.value = 'dark' + localStorage.setItem('vueuse-color-scheme', 'dark') + document.documentElement.classList.toggle('dark', true) + break + case localStorage.getItem('vueuse-color-scheme') == 'auto': + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + vueuseColorScheme.value = 'light' + localStorage.setItem('vueuse-color-scheme', 'light') + document.documentElement.classList.toggle('dark', false) + } else { + vueuseColorScheme.value = 'light' + localStorage.setItem('vueuse-color-scheme', 'light') + document.documentElement.classList.toggle('dark', false) + } + break + } + } + return { + vueuseColorScheme, + setTheme, + themeIcon, + } +}) diff --git a/bo/src/types/index.d.ts b/bo/src/types/index.d.ts new file mode 100644 index 0000000..ae62d73 --- /dev/null +++ b/bo/src/types/index.d.ts @@ -0,0 +1,2 @@ +export * from '@types/lang' +export * from '@types/response' diff --git a/bo/src/types/lang.d.ts b/bo/src/types/lang.d.ts new file mode 100644 index 0000000..4ee9e08 --- /dev/null +++ b/bo/src/types/lang.d.ts @@ -0,0 +1,14 @@ +export interface Language { + id: number + created_at: string + updated_at: string + name: string + iso_code: string + lang_code: string + date_format: string + date_format_short: string + rtl: boolean + is_default: boolean + active: boolean + flag: string +} diff --git a/bo/src/types/response.d.ts b/bo/src/types/response.d.ts new file mode 100644 index 0000000..c0490cb --- /dev/null +++ b/bo/src/types/response.d.ts @@ -0,0 +1,5 @@ +export interface Resp { + message: string + items: T + count?: number +} diff --git a/bo/src/types/settings.d.ts b/bo/src/types/settings.d.ts new file mode 100644 index 0000000..7982779 --- /dev/null +++ b/bo/src/types/settings.d.ts @@ -0,0 +1,35 @@ +export interface Settings { + app: App + server: Server + auth: Auth + features: Features + version: Version +} + +export interface App { + name: string + environment: string + base_url: string + password_regex: string +} + +export interface Server { + port: number + host: string +} + +export interface Auth { + jwt_expiration: number + refresh_expiration: number +} + +export interface Features { + email_enabled: boolean + oauth_google: boolean +} + +export interface Version { + version: string + commit: string + build_date: string +} diff --git a/bo/src/types/ui-app.config.d.ts b/bo/src/types/ui-app.config.d.ts new file mode 100644 index 0000000..a3282a8 --- /dev/null +++ b/bo/src/types/ui-app.config.d.ts @@ -0,0 +1,293 @@ +import type { AppConfigInput, CustomAppConfig } from 'nuxt/schema' +import type { Defu } from 'defu' +import cfg0 from "../../app/app.config" + +declare global { + const defineAppConfig: (config: C) => C +} + +declare const inlineConfig = { + nuxt: {}, + ui: { + colors: { + primary: "green", + secondary: "blue", + success: "green", + info: "blue", + warning: "yellow", + error: "red", + neutral: "slate" + }, + icons: { + arrowDown: "i-lucide-arrow-down", + arrowLeft: "i-lucide-arrow-left", + arrowRight: "i-lucide-arrow-right", + arrowUp: "i-lucide-arrow-up", + caution: "i-lucide-circle-alert", + check: "i-lucide-check", + chevronDoubleLeft: "i-lucide-chevrons-left", + chevronDoubleRight: "i-lucide-chevrons-right", + chevronDown: "i-lucide-chevron-down", + chevronLeft: "i-lucide-chevron-left", + chevronRight: "i-lucide-chevron-right", + chevronUp: "i-lucide-chevron-up", + close: "i-lucide-x", + copy: "i-lucide-copy", + copyCheck: "i-lucide-copy-check", + dark: "i-lucide-moon", + drag: "i-lucide-grip-vertical", + ellipsis: "i-lucide-ellipsis", + error: "i-lucide-circle-x", + external: "i-lucide-arrow-up-right", + eye: "i-lucide-eye", + eyeOff: "i-lucide-eye-off", + file: "i-lucide-file", + folder: "i-lucide-folder", + folderOpen: "i-lucide-folder-open", + hash: "i-lucide-hash", + info: "i-lucide-info", + light: "i-lucide-sun", + loading: "i-lucide-loader-circle", + menu: "i-lucide-menu", + minus: "i-lucide-minus", + panelClose: "i-lucide-panel-left-close", + panelOpen: "i-lucide-panel-left-open", + plus: "i-lucide-plus", + reload: "i-lucide-rotate-ccw", + search: "i-lucide-search", + stop: "i-lucide-square", + success: "i-lucide-circle-check", + system: "i-lucide-monitor", + tip: "i-lucide-lightbulb", + upload: "i-lucide-upload", + warning: "i-lucide-triangle-alert" + }, + tv: { + twMergeConfig: {} + } + }, + icon: { + provider: "iconify", + class: "", + aliases: {}, + iconifyApiEndpoint: "https://api.iconify.design", + localApiEndpoint: "/api/_nuxt_icon", + fallbackToApi: true, + cssSelectorPrefix: "i-", + cssWherePseudo: true, + cssLayer: "components", + mode: "css", + attrs: { + "aria-hidden": true + }, + collections: [ + "academicons", + "akar-icons", + "ant-design", + "arcticons", + "basil", + "bi", + "bitcoin-icons", + "bpmn", + "brandico", + "bx", + "bxl", + "bxs", + "bytesize", + "carbon", + "catppuccin", + "cbi", + "charm", + "ci", + "cib", + "cif", + "cil", + "circle-flags", + "circum", + "clarity", + "codicon", + "covid", + "cryptocurrency", + "cryptocurrency-color", + "dashicons", + "devicon", + "devicon-plain", + "ei", + "el", + "emojione", + "emojione-monotone", + "emojione-v1", + "entypo", + "entypo-social", + "eos-icons", + "ep", + "et", + "eva", + "f7", + "fa", + "fa-brands", + "fa-regular", + "fa-solid", + "fa6-brands", + "fa6-regular", + "fa6-solid", + "fad", + "fe", + "feather", + "file-icons", + "flag", + "flagpack", + "flat-color-icons", + "flat-ui", + "flowbite", + "fluent", + "fluent-emoji", + "fluent-emoji-flat", + "fluent-emoji-high-contrast", + "fluent-mdl2", + "fontelico", + "fontisto", + "formkit", + "foundation", + "fxemoji", + "gala", + "game-icons", + "geo", + "gg", + "gis", + "gravity-ui", + "gridicons", + "grommet-icons", + "guidance", + "healthicons", + "heroicons", + "heroicons-outline", + "heroicons-solid", + "hugeicons", + "humbleicons", + "ic", + "icomoon-free", + "icon-park", + "icon-park-outline", + "icon-park-solid", + "icon-park-twotone", + "iconamoon", + "iconoir", + "icons8", + "il", + "ion", + "iwwa", + "jam", + "la", + "lets-icons", + "line-md", + "logos", + "ls", + "lucide", + "lucide-lab", + "mage", + "majesticons", + "maki", + "map", + "marketeq", + "material-symbols", + "material-symbols-light", + "mdi", + "mdi-light", + "medical-icon", + "memory", + "meteocons", + "mi", + "mingcute", + "mono-icons", + "mynaui", + "nimbus", + "nonicons", + "noto", + "noto-v1", + "octicon", + "oi", + "ooui", + "openmoji", + "oui", + "pajamas", + "pepicons", + "pepicons-pencil", + "pepicons-pop", + "pepicons-print", + "ph", + "pixelarticons", + "prime", + "ps", + "quill", + "radix-icons", + "raphael", + "ri", + "rivet-icons", + "si-glyph", + "simple-icons", + "simple-line-icons", + "skill-icons", + "solar", + "streamline", + "streamline-emojis", + "subway", + "svg-spinners", + "system-uicons", + "tabler", + "tdesign", + "teenyicons", + "token", + "token-branded", + "topcoat", + "twemoji", + "typcn", + "uil", + "uim", + "uis", + "uit", + "uiw", + "unjs", + "vaadin", + "vs", + "vscode-icons", + "websymbol", + "weui", + "whh", + "wi", + "wpf", + "zmdi", + "zondicons" + ], + fetchTimeout: 1500 + } +} + +type ResolvedAppConfig = Defu + +type IsAny = 0 extends 1 & T ? true : false + +type MergedAppConfig< + Resolved extends Record, + Custom extends Record +> = { + [K in keyof (Resolved & Custom)]: K extends keyof Custom + ? unknown extends Custom[K] + ? Resolved[K] + : IsAny extends true + ? Resolved[K] + : Custom[K] extends Record + ? Resolved[K] extends Record + ? MergedAppConfig + : Exclude + : Exclude + : Resolved[K] +} + +declare module 'nuxt/schema' { + interface AppConfig extends MergedAppConfig {} +} + +declare module '@nuxt/schema' { + interface AppConfig extends MergedAppConfig {} +} \ No newline at end of file diff --git a/bo/src/utils/fake.ts b/bo/src/utils/fake.ts new file mode 100644 index 0000000..f8c3ea2 --- /dev/null +++ b/bo/src/utils/fake.ts @@ -0,0 +1,23 @@ +export const getLangs = async () => { + return new Promise((resolve) => { + setTimeout(() => { + resolve({ + 'some.key': 'this is translated text', + 'key.two': 'this is second key', + 'routing.login': 'Routing Translation', + }) + }, 200) + }) +} + +export const getL = async () => { + return new Promise((resolve) => { + setTimeout(() => { + resolve([ + { code: 'en', name: 'English', flag: '🇬🇧' }, + { code: 'pl', name: 'Polski', flag: '🇵🇱' }, + { code: 'cs', name: 'Čeština', flag: '🇨🇿' }, + ]) + }, Math.random() * 1000) + }) +} diff --git a/bo/src/views/HomeView.vue b/bo/src/views/HomeView.vue new file mode 100644 index 0000000..8dcffda --- /dev/null +++ b/bo/src/views/HomeView.vue @@ -0,0 +1,15 @@ + + + diff --git a/bo/src/views/LoginView.vue b/bo/src/views/LoginView.vue new file mode 100644 index 0000000..b6c0f3f --- /dev/null +++ b/bo/src/views/LoginView.vue @@ -0,0 +1,159 @@ + + + diff --git a/bo/src/views/PasswordRecoveryView.vue b/bo/src/views/PasswordRecoveryView.vue new file mode 100644 index 0000000..84bd52d --- /dev/null +++ b/bo/src/views/PasswordRecoveryView.vue @@ -0,0 +1,101 @@ + + + diff --git a/bo/src/views/RegisterView.vue b/bo/src/views/RegisterView.vue new file mode 100644 index 0000000..afabdf0 --- /dev/null +++ b/bo/src/views/RegisterView.vue @@ -0,0 +1,155 @@ + + + diff --git a/bo/src/views/RepoChartView.vue b/bo/src/views/RepoChartView.vue new file mode 100644 index 0000000..0e33683 --- /dev/null +++ b/bo/src/views/RepoChartView.vue @@ -0,0 +1,250 @@ + + + \ No newline at end of file diff --git a/bo/src/views/ResetPasswordForm.vue b/bo/src/views/ResetPasswordForm.vue new file mode 100644 index 0000000..b257a62 --- /dev/null +++ b/bo/src/views/ResetPasswordForm.vue @@ -0,0 +1,123 @@ + + + diff --git a/bo/src/views/VerifyEmailView.vue b/bo/src/views/VerifyEmailView.vue new file mode 100644 index 0000000..30e7cee --- /dev/null +++ b/bo/src/views/VerifyEmailView.vue @@ -0,0 +1,159 @@ + + + diff --git a/bo/tsconfig.app.json b/bo/tsconfig.app.json new file mode 100644 index 0000000..aec9e67 --- /dev/null +++ b/bo/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "src/app.config.ts"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + "paths": { + "@/*": ["./src/*"], + "@types/*": ["./src/types/*"] + } + } +} diff --git a/bo/tsconfig.json b/bo/tsconfig.json new file mode 100644 index 0000000..b766591 --- /dev/null +++ b/bo/tsconfig.json @@ -0,0 +1,8 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/bo/vite.config.ts b/bo/vite.config.ts new file mode 100644 index 0000000..b31e640 --- /dev/null +++ b/bo/vite.config.ts @@ -0,0 +1,46 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueDevTools from 'vite-plugin-vue-devtools' +import ui from '@nuxt/ui/vite' +import tailwindcss from '@tailwindcss/vite' +import { uiOptions } from './src/app.config' + +var isDev = process.env.NODE_ENV == 'development' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [vue(), tailwindcss(), isDev ? vueDevTools() : false, ui(uiOptions)], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, + base: '/', + publicDir: './public', + build: { + outDir: '../assets/public/dist', + emptyOutDir: true, + }, + server: { + proxy: { + '/api': { + target: 'http://localhost:3000', + changeOrigin: true, + }, + '/health': { + target: 'http://localhost:3000', + changeOrigin: true, + }, + '/swagger': { + target: 'http://localhost:3000', + changeOrigin: true, + }, + '/openapi.json': { + target: 'http://localhost:3000', + changeOrigin: true, + }, + }, + }, +}) diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..2a8b43b --- /dev/null +++ b/go.mod @@ -0,0 +1,63 @@ +module git.ma-al.com/goc_marek/timetracker + +go 1.26.0 + +require ( + github.com/a-h/templ v0.3.1001 + github.com/go-git/go-git/v5 v5.17.0 + github.com/gofiber/fiber/v3 v3.1.0 + github.com/golang-jwt/jwt/v5 v5.3.1 + github.com/joho/godotenv v1.5.1 + golang.org/x/crypto v0.48.0 + gorm.io/driver/postgres v1.6.0 + gorm.io/gorm v1.31.1 +) + +require ( + cloud.google.com/go/compute/metadata v0.3.0 // indirect + dario.cat/mergo v1.0.2 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/ProtonMail/go-crypto v1.4.0 // indirect + github.com/andybalholm/brotli v1.2.0 // indirect + github.com/cloudflare/circl v1.6.3 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/dlclark/regexp2 v1.11.5 // indirect + github.com/elazarl/goproxy v1.8.2 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.8.0 // indirect + github.com/gofiber/schema v1.7.0 // indirect + github.com/gofiber/utils/v2 v2.0.2 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.8.0 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/kevinburke/ssh_config v1.6.0 // indirect + github.com/klauspost/compress v1.18.4 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/onsi/gomega v1.39.1 // indirect + github.com/philhofer/fwd v1.2.0 // indirect + github.com/pjbgf/sha1cd v0.5.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/sergi/go-diff v1.4.0 // indirect + github.com/skeema/knownhosts v1.3.2 // indirect + github.com/tinylib/msgp v1.6.3 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.69.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/xyproto/randomstring v1.2.0 // indirect + golang.org/x/net v0.51.0 // indirect + golang.org/x/oauth2 v0.35.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..42531fb --- /dev/null +++ b/go.sum @@ -0,0 +1,172 @@ +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/ProtonMail/go-crypto v1.4.0 h1:Zq/pbM3F5DFgJiMouxEdSVY44MVoQNEKp5d5QxIQceQ= +github.com/ProtonMail/go-crypto v1.4.0/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= +github.com/a-h/templ v0.3.1001 h1:yHDTgexACdJttyiyamcTHXr2QkIeVF1MukLy44EAhMY= +github.com/a-h/templ v0.3.1001/go.mod h1:oCZcnKRf5jjsGpf2yELzQfodLphd2mwecwG4Crk5HBo= +github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= +github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= +github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= +github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/elazarl/goproxy v1.8.2 h1:keGt9KHFAnrXFEctQuOF9NRxKFCXtd5cQg5PrBdeVW4= +github.com/elazarl/goproxy v1.8.2/go.mod h1:b5xm6W48AUHNpRTCvlnd0YVh+JafCCtsLsJZvvNTz+E= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= +github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= +github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.8.0 h1:I8hjc3LbBlXTtVuFNJuwYuMiHvQJDq1AT6u4DwDzZG0= +github.com/go-git/go-billy/v5 v5.8.0/go.mod h1:RpvI/rw4Vr5QA+Z60c6d6LXH0rYJo0uD5SqfmrrheCY= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.17.0 h1:AbyI4xf+7DsjINHMu35quAh4wJygKBKBuXVjV/pxesM= +github.com/go-git/go-git/v5 v5.17.0/go.mod h1:f82C4YiLx+Lhi8eHxltLeGC5uBTXSFa6PC5WW9o4SjI= +github.com/gofiber/fiber/v3 v3.1.0 h1:1p4I820pIa+FGxfwWuQZ5rAyX0WlGZbGT6Hnuxt6hKY= +github.com/gofiber/fiber/v3 v3.1.0/go.mod h1:n2nYQovvL9z3Too/FGOfgtERjW3GQcAUqgfoezGBZdU= +github.com/gofiber/schema v1.7.0 h1:yNM+FNRZjyYEli9Ey0AXRBrAY9jTnb+kmGs3lJGPvKg= +github.com/gofiber/schema v1.7.0/go.mod h1:A/X5Ffyru4p9eBdp99qu+nzviHzQiZ7odLT+TwxWhbk= +github.com/gofiber/utils/v2 v2.0.2 h1:ShRRssz0F3AhTlAQcuEj54OEDtWF7+HJDwEi/aa6QLI= +github.com/gofiber/utils/v2 v2.0.2/go.mod h1:+9Ub4NqQ+IaJoTliq5LfdmOJAA/Hzwf4pXOxOa3RrJ0= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo= +github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/kevinburke/ssh_config v1.6.0 h1:J1FBfmuVosPHf5GRdltRLhPJtJpTlMdKTBjRgTaQBFY= +github.com/kevinburke/ssh_config v1.6.0/go.mod h1:q2RIzfka+BXARoNexmF9gkxEX7DmvbW9P4hIVx2Kg4M= +github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= +github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= +github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= +github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM= +github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= +github.com/pjbgf/sha1cd v0.5.0 h1:a+UkboSi1znleCDUNT3M5YxjOnN1fz2FhN48FlwCxs0= +github.com/pjbgf/sha1cd v0.5.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/shamaton/msgpack/v3 v3.1.0 h1:jsk0vEAqVvvS9+fTZ5/EcQ9tz860c9pWxJ4Iwecz8gU= +github.com/shamaton/msgpack/v3 v3.1.0/go.mod h1:DcQG8jrdrQCIxr3HlMYkiXdMhK+KfN2CitkyzsQV4uc= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.3.2 h1:EDL9mgf4NzwMXCTfaxSD/o/a5fxDw/xL9nkU28JjdBg= +github.com/skeema/knownhosts v1.3.2/go.mod h1:bEg3iQAuw+jyiw+484wwFJoKSLwcfd7fqRy+N0QTiow= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tinylib/msgp v1.6.3 h1:bCSxiTz386UTgyT1i0MSCvdbWjVW+8sG3PjkGsZQt4s= +github.com/tinylib/msgp v1.6.3/go.mod h1:RSp0LW9oSxFut3KzESt5Voq4GVWyS+PSulT77roAqEA= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.69.0 h1:fNLLESD2SooWeh2cidsuFtOcrEi4uB4m1mPrkJMZyVI= +github.com/valyala/fasthttp v1.69.0/go.mod h1:4wA4PfAraPlAsJ5jMSqCE2ug5tqUPwKXxVj8oNECGcw= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xyproto/randomstring v1.2.0 h1:y7PXAEBM3XlwJjPG2JQg4voxBYZ4+hPgRdGKCfU8wik= +github.com/xyproto/randomstring v1.2.0/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= +golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= +golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/postgres v1.6.0 h1:2dxzU8xJ+ivvqTRph34QX+WrRaJlmfyPqXmoGVjMBa4= +gorm.io/driver/postgres v1.6.0/go.mod h1:vUw0mrGgrTK+uPHEhAdV4sfFELrByKVGnaVRkXDhtWo= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= diff --git a/i18n/config_i18n.yaml b/i18n/config_i18n.yaml new file mode 100644 index 0000000..d72c66e --- /dev/null +++ b/i18n/config_i18n.yaml @@ -0,0 +1,85 @@ +# Database configuration (shared between Vue and Go extractors) +database: + type: postgres # "mysql" (default),sqlite or "postgres" + host: localhost + port: 5432 + user: gitea + password: gitea + database: gitea + max_open_conns: 10 + max_idle_conns: 5 + +# Vue.js extractor configuration +vue: + input: ~/coding/work/maal_aurrie/golden-panel/app + output: vue-keys.json + include: + - "**/*.vue" + - "**/*.js" + - "**/*.ts" + - "**/*.jsx" + - "**/*.tsx" + exclude: + - "**/node_modules/**" + - "**/dist/**" + - "**/.nuxt/**" + - "**/.output/**" + # Vue scope and components + scope_id: 3 + language_ids: + - 1 # English + - 2 # Polish + - 3 # Czech + component_mapping: + general: 300 + validate_error: 301 + repo_chart: 302 + + + save_to_file: true + save_to_db: false + remove_obsolete: false + +# Go extractor configuration +go: + input: ~/coding/work/maal_aurrie + output: go-keys.json + include: + - "**/*.go" + - "**/*.tmpl" + - "**/*.html" + exclude: + - "**/vendor/**" + - "**/.git/**" + - "**/node_modules/**" + # Go scope and components + scope_id: 1 + scope_name: "Backend" + language_ids: + - 1 # English + - 2 # Polish + - 3 # Czech + component_mapping: + be: 100 # backend general + error: 101 + auth: 102 + email: 103 + default_component_id: 100 # Default component for keys without prefix + save_to_file: true + save_to_db: false + remove_obsolete: false + +# Legacy configuration (for backward compatibility) +# Used when vue/go sections are not present +save: + scope_id: 1 + scope_name: "Default" + language_ids: + - 1 + component_mapping: + general: 1 + component_names: + general: "General" + save_to_file: true + save_to_db: false + remove_obsolete: false diff --git a/i18n/go-keys.json b/i18n/go-keys.json new file mode 100644 index 0000000..c4cb63c --- /dev/null +++ b/i18n/go-keys.json @@ -0,0 +1,2395 @@ +{ + "translations": [ + { + "key": "auth_if_account_exists", + "scope_id": 1, + "component_id": 102, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 180, + "column": 25 + } + ] + }, + { + "key": "auth_if_account_exists", + "scope_id": 1, + "component_id": 102, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 180, + "column": 25 + } + ] + }, + { + "key": "auth_if_account_exists", + "scope_id": 1, + "component_id": 102, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 180, + "column": 25 + } + ] + }, + { + "key": "auth_logged_out_successfully", + "scope_id": 1, + "component_id": 102, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 226, + "column": 25 + } + ] + }, + { + "key": "auth_logged_out_successfully", + "scope_id": 1, + "component_id": 102, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 226, + "column": 25 + } + ] + }, + { + "key": "auth_logged_out_successfully", + "scope_id": 1, + "component_id": 102, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 226, + "column": 25 + } + ] + }, + { + "key": "auth_password_reset_successfully", + "scope_id": 1, + "component_id": 102, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 210, + "column": 25 + } + ] + }, + { + "key": "auth_password_reset_successfully", + "scope_id": 1, + "component_id": 102, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 210, + "column": 25 + } + ] + }, + { + "key": "auth_password_reset_successfully", + "scope_id": 1, + "component_id": 102, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 210, + "column": 25 + } + ] + }, + { + "key": "auth_registration_successful", + "scope_id": 1, + "component_id": 102, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 312, + "column": 25 + } + ] + }, + { + "key": "auth_registration_successful", + "scope_id": 1, + "component_id": 102, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 312, + "column": 25 + } + ] + }, + { + "key": "auth_registration_successful", + "scope_id": 1, + "component_id": 102, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 312, + "column": 25 + } + ] + }, + { + "key": "email_admin_notification_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailAdminNotification_templ.go", + "line": 82, + "column": 59 + } + ] + }, + { + "key": "email_admin_notification_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailAdminNotification_templ.go", + "line": 82, + "column": 59 + } + ] + }, + { + "key": "email_admin_notification_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailAdminNotification_templ.go", + "line": 82, + "column": 59 + } + ] + }, + { + "key": "email_footer", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 172, + "column": 91 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 172, + "column": 91 + } + ] + }, + { + "key": "email_footer", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 172, + "column": 91 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 172, + "column": 91 + } + ] + }, + { + "key": "email_footer", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 172, + "column": 91 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 172, + "column": 91 + } + ] + }, + { + "key": "email_greeting", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 55, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 68, + "column": 90 + } + ] + }, + { + "key": "email_greeting", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 55, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 68, + "column": 90 + } + ] + }, + { + "key": "email_greeting", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 55, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 68, + "column": 90 + } + ] + }, + { + "key": "email_ignore", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 159, + "column": 91 + } + ] + }, + { + "key": "email_ignore", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 159, + "column": 91 + } + ] + }, + { + "key": "email_ignore", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 159, + "column": 91 + } + ] + }, + { + "key": "email_ignore_reset", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 159, + "column": 91 + } + ] + }, + { + "key": "email_ignore_reset", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 159, + "column": 91 + } + ] + }, + { + "key": "email_ignore_reset", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 159, + "column": 91 + } + ] + }, + { + "key": "email_or_copy", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 107, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 120, + "column": 90 + } + ] + }, + { + "key": "email_or_copy", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 107, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 120, + "column": 90 + } + ] + }, + { + "key": "email_or_copy", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 107, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 120, + "column": 90 + } + ] + }, + { + "key": "email_password_reset_message1", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 68, + "column": 90 + } + ] + }, + { + "key": "email_password_reset_message1", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 68, + "column": 90 + } + ] + }, + { + "key": "email_password_reset_message1", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 68, + "column": 90 + } + ] + }, + { + "key": "email_password_reset_subject", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/service/emailService/email.go", + "line": 101, + "column": 31 + } + ] + }, + { + "key": "email_password_reset_subject", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/service/emailService/email.go", + "line": 101, + "column": 31 + } + ] + }, + { + "key": "email_password_reset_subject", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/service/emailService/email.go", + "line": 101, + "column": 31 + } + ] + }, + { + "key": "email_password_reset_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 186, + "column": 59 + } + ] + }, + { + "key": "email_password_reset_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 186, + "column": 59 + } + ] + }, + { + "key": "email_password_reset_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 186, + "column": 59 + } + ] + }, + { + "key": "email_password_reset_warning", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 146, + "column": 91 + } + ] + }, + { + "key": "email_password_reset_warning", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 146, + "column": 91 + } + ] + }, + { + "key": "email_password_reset_warning", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 146, + "column": 91 + } + ] + }, + { + "key": "email_reset_button", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 94, + "column": 90 + } + ] + }, + { + "key": "email_reset_button", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 94, + "column": 90 + } + ] + }, + { + "key": "email_reset_button", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 94, + "column": 90 + } + ] + }, + { + "key": "email_verification_message1", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 81, + "column": 90 + } + ] + }, + { + "key": "email_verification_message1", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 81, + "column": 90 + } + ] + }, + { + "key": "email_verification_message1", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 81, + "column": 90 + } + ] + }, + { + "key": "email_verification_note", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 146, + "column": 91 + } + ] + }, + { + "key": "email_verification_note", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 146, + "column": 91 + } + ] + }, + { + "key": "email_verification_note", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 146, + "column": 91 + } + ] + }, + { + "key": "email_verification_subject", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/service/emailService/email.go", + "line": 86, + "column": 31 + } + ] + }, + { + "key": "email_verification_subject", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/service/emailService/email.go", + "line": 86, + "column": 31 + } + ] + }, + { + "key": "email_verification_subject", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/service/emailService/email.go", + "line": 86, + "column": 31 + } + ] + }, + { + "key": "email_verification_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 55, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 186, + "column": 59 + } + ] + }, + { + "key": "email_verification_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 55, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 186, + "column": 59 + } + ] + }, + { + "key": "email_verification_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 55, + "column": 90 + }, + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 186, + "column": 59 + } + ] + }, + { + "key": "email_verify_button", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 107, + "column": 90 + } + ] + }, + { + "key": "email_verify_button", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 107, + "column": 90 + } + ] + }, + { + "key": "email_verify_button", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailVerification_templ.go", + "line": 107, + "column": 90 + } + ] + }, + { + "key": "email_warning_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 133, + "column": 90 + } + ] + }, + { + "key": "email_warning_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 133, + "column": 90 + } + ] + }, + { + "key": "email_warning_title", + "scope_id": 1, + "component_id": 103, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/templ/emails/emailPasswordReset_templ.go", + "line": 133, + "column": 90 + } + ] + }, + { + "key": "err_bad_paging", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 122, + "column": 21 + } + ] + }, + { + "key": "err_bad_paging", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 122, + "column": 21 + } + ] + }, + { + "key": "err_bad_paging", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 122, + "column": 21 + } + ] + }, + { + "key": "err_bad_quarter_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 120, + "column": 21 + } + ] + }, + { + "key": "err_bad_quarter_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 120, + "column": 21 + } + ] + }, + { + "key": "err_bad_quarter_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 120, + "column": 21 + } + ] + }, + { + "key": "err_bad_repo_id_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 116, + "column": 21 + } + ] + }, + { + "key": "err_bad_repo_id_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 116, + "column": 21 + } + ] + }, + { + "key": "err_bad_repo_id_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 116, + "column": 21 + } + ] + }, + { + "key": "err_bad_year_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 118, + "column": 21 + } + ] + }, + { + "key": "err_bad_year_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 118, + "column": 21 + } + ] + }, + { + "key": "err_bad_year_attribute", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 118, + "column": 21 + } + ] + }, + { + "key": "err_email_exists", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 83, + "column": 21 + } + ] + }, + { + "key": "err_email_exists", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 83, + "column": 21 + } + ] + }, + { + "key": "err_email_exists", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 83, + "column": 21 + } + ] + }, + { + "key": "err_email_not_verified", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 81, + "column": 21 + } + ] + }, + { + "key": "err_email_not_verified", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 81, + "column": 21 + } + ] + }, + { + "key": "err_email_not_verified", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 81, + "column": 21 + } + ] + }, + { + "key": "err_email_password_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 93, + "column": 21 + } + ] + }, + { + "key": "err_email_password_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 93, + "column": 21 + } + ] + }, + { + "key": "err_email_password_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 93, + "column": 21 + } + ] + }, + { + "key": "err_email_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 91, + "column": 21 + } + ] + }, + { + "key": "err_email_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 91, + "column": 21 + } + ] + }, + { + "key": "err_email_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 91, + "column": 21 + } + ] + }, + { + "key": "err_first_last_name_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 89, + "column": 21 + } + ] + }, + { + "key": "err_first_last_name_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 89, + "column": 21 + } + ] + }, + { + "key": "err_first_last_name_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 89, + "column": 21 + } + ] + }, + { + "key": "err_internal_server_error", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 353, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 127, + "column": 21 + } + ] + }, + { + "key": "err_internal_server_error", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 353, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 127, + "column": 21 + } + ] + }, + { + "key": "err_internal_server_error", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 353, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 127, + "column": 21 + } + ] + }, + { + "key": "err_invalid_body", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 394, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 71, + "column": 21 + } + ] + }, + { + "key": "err_invalid_body", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 394, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 71, + "column": 21 + } + ] + }, + { + "key": "err_invalid_body", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 394, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 71, + "column": 21 + } + ] + }, + { + "key": "err_invalid_credentials", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 73, + "column": 21 + } + ] + }, + { + "key": "err_invalid_credentials", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 73, + "column": 21 + } + ] + }, + { + "key": "err_invalid_credentials", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 73, + "column": 21 + } + ] + }, + { + "key": "err_invalid_password", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 106, + "column": 21 + } + ] + }, + { + "key": "err_invalid_password", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 106, + "column": 21 + } + ] + }, + { + "key": "err_invalid_password", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 106, + "column": 21 + } + ] + }, + { + "key": "err_invalid_repo_id", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 124, + "column": 21 + } + ] + }, + { + "key": "err_invalid_repo_id", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 124, + "column": 21 + } + ] + }, + { + "key": "err_invalid_repo_id", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 124, + "column": 21 + } + ] + }, + { + "key": "err_invalid_reset_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 100, + "column": 21 + } + ] + }, + { + "key": "err_invalid_reset_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 100, + "column": 21 + } + ] + }, + { + "key": "err_invalid_reset_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 100, + "column": 21 + } + ] + }, + { + "key": "err_invalid_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 377, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 85, + "column": 21 + } + ] + }, + { + "key": "err_invalid_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 377, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 85, + "column": 21 + } + ] + }, + { + "key": "err_invalid_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/delivery/web/public/auth.go", + "line": 377, + "column": 24 + }, + { + "file": "../app/view/errors.go", + "line": 85, + "column": 21 + } + ] + }, + { + "key": "err_invalid_verification_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 111, + "column": 21 + } + ] + }, + { + "key": "err_invalid_verification_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 111, + "column": 21 + } + ] + }, + { + "key": "err_invalid_verification_token", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 111, + "column": 21 + } + ] + }, + { + "key": "err_not_authenticated", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 75, + "column": 21 + } + ] + }, + { + "key": "err_not_authenticated", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 75, + "column": 21 + } + ] + }, + { + "key": "err_not_authenticated", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 75, + "column": 21 + } + ] + }, + { + "key": "err_passwords_do_not_match", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 104, + "column": 21 + } + ] + }, + { + "key": "err_passwords_do_not_match", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 104, + "column": 21 + } + ] + }, + { + "key": "err_passwords_do_not_match", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 104, + "column": 21 + } + ] + }, + { + "key": "err_refresh_token_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 97, + "column": 21 + } + ] + }, + { + "key": "err_refresh_token_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 97, + "column": 21 + } + ] + }, + { + "key": "err_refresh_token_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 97, + "column": 21 + } + ] + }, + { + "key": "err_reset_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 102, + "column": 21 + } + ] + }, + { + "key": "err_reset_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 102, + "column": 21 + } + ] + }, + { + "key": "err_reset_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 102, + "column": 21 + } + ] + }, + { + "key": "err_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 87, + "column": 21 + } + ] + }, + { + "key": "err_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 87, + "column": 21 + } + ] + }, + { + "key": "err_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 87, + "column": 21 + } + ] + }, + { + "key": "err_token_password_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 108, + "column": 21 + } + ] + }, + { + "key": "err_token_password_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 108, + "column": 21 + } + ] + }, + { + "key": "err_token_password_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 108, + "column": 21 + } + ] + }, + { + "key": "err_token_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 95, + "column": 21 + } + ] + }, + { + "key": "err_token_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 95, + "column": 21 + } + ] + }, + { + "key": "err_token_required", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 95, + "column": 21 + } + ] + }, + { + "key": "err_user_inactive", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 79, + "column": 21 + } + ] + }, + { + "key": "err_user_inactive", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 79, + "column": 21 + } + ] + }, + { + "key": "err_user_inactive", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 79, + "column": 21 + } + ] + }, + { + "key": "err_user_not_found", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 77, + "column": 21 + } + ] + }, + { + "key": "err_user_not_found", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 77, + "column": 21 + } + ] + }, + { + "key": "err_user_not_found", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 77, + "column": 21 + } + ] + }, + { + "key": "err_verification_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 113, + "column": 21 + } + ] + }, + { + "key": "err_verification_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 113, + "column": 21 + } + ] + }, + { + "key": "err_verification_token_expired", + "scope_id": 1, + "component_id": 101, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/view/errors.go", + "line": 113, + "column": 21 + } + ] + }, + { + "key": "langs_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 19, + "column": 47 + } + ] + }, + { + "key": "langs_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 19, + "column": 47 + } + ] + }, + { + "key": "langs_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 19, + "column": 47 + } + ] + }, + { + "key": "langs_not_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 20, + "column": 47 + } + ] + }, + { + "key": "langs_not_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 20, + "column": 47 + } + ] + }, + { + "key": "langs_not_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 20, + "column": 47 + } + ] + }, + { + "key": "message_nok", + "scope_id": 1, + "component_id": 100, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/utils/response/messages.go", + "line": 9, + "column": 32 + } + ] + }, + { + "key": "message_nok", + "scope_id": 1, + "component_id": 100, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/utils/response/messages.go", + "line": 9, + "column": 32 + } + ] + }, + { + "key": "message_nok", + "scope_id": 1, + "component_id": 100, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/utils/response/messages.go", + "line": 9, + "column": 32 + } + ] + }, + { + "key": "message_ok", + "scope_id": 1, + "component_id": 100, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/utils/response/messages.go", + "line": 8, + "column": 32 + } + ] + }, + { + "key": "message_ok", + "scope_id": 1, + "component_id": 100, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/utils/response/messages.go", + "line": 8, + "column": 32 + } + ] + }, + { + "key": "message_ok", + "scope_id": 1, + "component_id": 100, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/utils/response/messages.go", + "line": 8, + "column": 32 + } + ] + }, + { + "key": "translations_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 21, + "column": 47 + } + ] + }, + { + "key": "translations_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 21, + "column": 47 + } + ] + }, + { + "key": "translations_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 21, + "column": 47 + } + ] + }, + { + "key": "translations_not_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 22, + "column": 47 + } + ] + }, + { + "key": "translations_not_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 22, + "column": 47 + } + ] + }, + { + "key": "translations_not_loaded", + "scope_id": 1, + "component_id": 100, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../app/service/langs/service.go", + "line": 22, + "column": 47 + } + ] + } + ], + "dynamic": [], + "summary": { + "total_keys": 162, + "static_keys": 54, + "dynamic_keys": 0, + "by_component": { + "100": 6, + "101": 27, + "102": 4, + "103": 17 + }, + "by_component_name": { + "auth": 4, + "be": 6, + "email": 17, + "error": 27 + } + } +} diff --git a/i18n/migrations/20260302163100_routes.sql b/i18n/migrations/20260302163100_routes.sql new file mode 100644 index 0000000..12ebaf0 --- /dev/null +++ b/i18n/migrations/20260302163100_routes.sql @@ -0,0 +1,28 @@ +-- +goose Up +-- create routes table +CREATE TABLE tracker_routes ( + id SERIAL PRIMARY KEY, + name VARCHAR NOT NULL UNIQUE, + path VARCHAR NULL, + component VARCHAR NOT NULL, -- path to component file + layout VARCHAR DEFAULT 'default', -- 'default' | 'empty' + meta JSONB DEFAULT '{}', + is_active BOOLEAN DEFAULT true, + sort_order INT DEFAULT 0, + parent_id INT NULL +); + +INSERT INTO "public"."tracker_routes" ("name", "path", "component", "layout", "meta", "is_active", "sort_order", "parent_id") VALUES +('root', '', '', 'default', '{"trans": "route.root"}', false, 0, 0), +('home', '', '@/views/HomeView.vue', 'default', '{"trans": "route.home"}', true, 0, 0), +('login', 'login', '@/views/LoginView.vue', 'empty', '{"guest":true}', true, 2, NULL), +('register', 'register', '@/views/RegisterView.vue', 'empty', '{"guest":true}', true, 3, NULL), +('password-recovery', 'password-recovery', '@/views/PasswordRecoveryView.vue', 'empty', '{"guest":true}', true, 4, NULL), +('reset-password', 'reset-password', '@/views/ResetPasswordView.vue', 'empty', '{"guest":true}', true, 5, NULL), +('verify-email', 'verify-email', '@/views/VerifyEmailView.vue', 'empty', '{"guest":true}', true, 6, NULL); + + +-- +goose Down + +DROP TABLE IF EXISTS "public"."tracker_routes"; + diff --git a/i18n/migrations/20260302163122_create_tables.sql b/i18n/migrations/20260302163122_create_tables.sql new file mode 100644 index 0000000..5dd5630 --- /dev/null +++ b/i18n/migrations/20260302163122_create_tables.sql @@ -0,0 +1,122 @@ +-- +goose Up + +CREATE TABLE IF NOT EXISTS "public"."language" ( + "id" SERIAL, + "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, + "updated_at" TIMESTAMP WITH TIME ZONE NULL, + "deleted_at" TIMESTAMP WITH TIME ZONE NULL, + "name" VARCHAR(128) NOT NULL, + "iso_code" VARCHAR(2) NOT NULL, + "lang_code" VARCHAR(5) NOT NULL, + "date_format" VARCHAR(32) NOT NULL, + "date_format_short" VARCHAR(32) NOT NULL, + "rtl" BOOLEAN NOT NULL DEFAULT false , + "is_default" BOOLEAN NOT NULL DEFAULT false , + "active" BOOLEAN NOT NULL DEFAULT true , + "flag" VARCHAR(16) NOT NULL, + CONSTRAINT "language_pkey" PRIMARY KEY ("id") +); +CREATE INDEX IF NOT EXISTS "idx_language_deleted_at" +ON "public"."language" ( + "deleted_at" ASC +); + +INSERT INTO "public"."language" ("id", "created_at", "updated_at", "deleted_at", "name", "iso_code", "lang_code", "date_format", "date_format_short", "rtl", "is_default", "active", "flag") VALUES (1, '2022-09-16 17:10:02.837+00', '2026-03-02 21:24:36.77973+00', NULL, 'Polski', 'pl', 'pl', '__-__-____', '__-__', false, false, true, '🇵🇱') ON CONFLICT DO NOTHING; +INSERT INTO "public"."language" ("id", "created_at", "updated_at", "deleted_at", "name", "iso_code", "lang_code", "date_format", "date_format_short", "rtl", "is_default", "active", "flag") VALUES (2, '2022-09-16 17:10:02.852+00', '2026-03-02 21:24:36.77973+00', NULL, 'English', 'en', 'en', '__-__-____', '__-__', false, true, true, '🇬🇧') ON CONFLICT DO NOTHING; +INSERT INTO "public"."language" ("id", "created_at", "updated_at", "deleted_at", "name", "iso_code", "lang_code", "date_format", "date_format_short", "rtl", "is_default", "active", "flag") VALUES (3, '2022-09-16 17:10:02.865+00', '2026-03-02 21:24:36.77973+00', NULL, 'Čeština', 'cs', 'cs', '__-__-____', '__-__', false, false, true, '🇨🇿') ON CONFLICT DO NOTHING; + + +-- components +CREATE TABLE IF NOT EXISTS "public"."components" ( + "id" SERIAL, + "name" VARCHAR(255) NOT NULL, + CONSTRAINT "components_pkey" PRIMARY KEY ("id") +); +CREATE UNIQUE INDEX IF NOT EXISTS "uk_components_name" +ON "public"."components" ( + "name" ASC, + "id" ASC +); + +-- scopes +CREATE TABLE IF NOT EXISTS "public"."scopes" ( + "id" SERIAL, + "name" VARCHAR(255) NOT NULL, + CONSTRAINT "scopes_pkey" PRIMARY KEY ("id") +); +CREATE UNIQUE INDEX IF NOT EXISTS "uk_scopes_name" +ON "public"."scopes" ( + "name" ASC +); + +-- translations +CREATE TABLE IF NOT EXISTS "public"."translations" ( + "lang_id" BIGINT NOT NULL, + "scope_id" BIGINT NOT NULL, + "component_id" BIGINT NOT NULL, + "key" VARCHAR(255) NOT NULL, + "data" TEXT NULL, + CONSTRAINT "translations_pkey" PRIMARY KEY ("lang_id", "scope_id", "component_id", "key"), + CONSTRAINT "fk_translations_language" FOREIGN KEY ("lang_id") REFERENCES "public"."language" ("id") ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT "fk_translations_scope" FOREIGN KEY ("scope_id") REFERENCES "public"."scopes" ("id") ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT "fk_translations_component" FOREIGN KEY ("component_id") REFERENCES "public"."components" ("id") ON DELETE RESTRICT ON UPDATE RESTRICT +); + + + +-- customers +CREATE TABLE IF NOT EXISTS "public"."customers" ( + "id" SERIAL, + "email" VARCHAR(255) NOT NULL, + "password" VARCHAR(255) NULL, + "first_name" VARCHAR(100) NULL, + "last_name" VARCHAR(100) NULL, + "role" VARCHAR(20) NULL DEFAULT 'user'::character varying , + "provider" VARCHAR(20) NULL DEFAULT 'local'::character varying , + "provider_id" VARCHAR(255) NULL, + "avatar_url" VARCHAR(500) NULL, + "is_active" BOOLEAN NULL DEFAULT true , + "email_verified" BOOLEAN NULL DEFAULT false , + "email_verification_token" VARCHAR(255) NULL, + "email_verification_expires" TIMESTAMP WITH TIME ZONE NULL, + "password_reset_token" VARCHAR(255) NULL, + "password_reset_expires" TIMESTAMP WITH TIME ZONE NULL, + "last_password_reset_request" TIMESTAMP WITH TIME ZONE NULL, + "last_login_at" TIMESTAMP WITH TIME ZONE NULL, + "lang" VARCHAR(10) NULL DEFAULT 'en'::character varying , + "created_at" TIMESTAMP WITH TIME ZONE NULL, + "updated_at" TIMESTAMP WITH TIME ZONE NULL, + "deleted_at" TIMESTAMP WITH TIME ZONE NULL, + CONSTRAINT "customers_pkey" PRIMARY KEY ("id") +); +CREATE UNIQUE INDEX IF NOT EXISTS "idx_customers_email" +ON "public"."customers" ( + "email" ASC +); +CREATE INDEX IF NOT EXISTS "idx_customers_deleted_at" +ON "public"."customers" ( + "deleted_at" ASC +); + + +-- customer_repo_accesses +CREATE TABLE IF NOT EXISTS "public"."customer_repo_accesses" ( + "user_id" BIGINT NOT NULL, + "repo_id" BIGINT NOT NULL, + PRIMARY KEY ("user_id", "repo_id"), + FOREIGN KEY ("user_id") REFERENCES "public"."customers" ("id") ON DELETE CASCADE, + FOREIGN KEY ("repo_id") REFERENCES "public"."repository" ("id") ON DELETE CASCADE +); + + +-- insert sample admin user admin@ma-al.com/Maal12345678 +INSERT INTO "public"."customers" ("id", "email", "password", "first_name", "last_name", "role", "provider", "provider_id", "avatar_url", "is_active", "email_verified", "email_verification_token", "email_verification_expires", "password_reset_token", "password_reset_expires", "last_password_reset_request", "last_login_at", "lang", "created_at", "updated_at", "deleted_at") VALUES (1, 'admin@ma-al.com', '$2a$10$Owy9DjrS0l3Fz4XoOvh5pulgmOMqdwXmb7hYE9BovnSuWS2plGr82', 'Super', 'Admin', 'admin', 'local', '', '', true, true, NULL, NULL, '', NULL, NULL, NULL, 'pl', '2026-03-02 16:55:10.25274+00', '2026-03-02 16:55:10.25274+00', NULL) ON CONFLICT DO NOTHING; + + +-- +goose Down + +DROP TABLE IF EXISTS "public"."language"; +DROP TABLE IF EXISTS "public"."components"; +DROP TABLE IF EXISTS "public"."scopes"; +DROP TABLE IF EXISTS "public"."translations"; +DROP TABLE IF EXISTS "public"."customers"; diff --git a/i18n/migrations/20260302163152_translations_backoffice.sql b/i18n/migrations/20260302163152_translations_backoffice.sql new file mode 100644 index 0000000..42ed528 --- /dev/null +++ b/i18n/migrations/20260302163152_translations_backoffice.sql @@ -0,0 +1,228 @@ +-- +goose Up +-- Dump translations from database + +-- Components +INSERT INTO components (id, name) VALUES +(1, 'be'), +(2, 'login'), +(3, 'verify_email'), +(100, 'email'), +(101, 'error'), +(102, 'auth'), +(103, 'email'), +(300, 'general'), +(301, 'validate_error'), +(302, 'repo_chart') ON CONFLICT DO NOTHING; + +-- Scope +INSERT INTO scopes (id, name) VALUES (3, 'backoffice') ON CONFLICT DO NOTHING; + +-- Translations + +-- Component: general +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 3, 300, 'already_have_an_account', 'Masz już konto?'), +(1, 3, 300, 'and', 'i'), +(1, 3, 300, 'back_to_sign_in', 'Powrót do logowania'), +(1, 3, 300, 'by_signing_in_you_agree_to_our', 'Logując się, zgadzasz się z naszymi'), +(1, 3, 300, 'check_your_email', 'Sprawdź swoją skrzynkę e-mail'), +(1, 3, 300, 'confirm_password', 'Potwierdź hasło'), +(1, 3, 300, 'confirm_your_new_password', 'Potwierdź swoje nowe hasło'), +(1, 3, 300, 'confirm_your_password', 'Potwierdź swoje hasło'), +(1, 3, 300, 'continue_with_google', 'Kontynuuj z Google'), +(1, 3, 300, 'create_account', 'Utwórz konto'), +(1, 3, 300, 'create_account_now', 'Utwórz konto teraz'), +(1, 3, 300, 'dont_have_an_account', 'Nie masz konta'), +(1, 3, 300, 'email_address', 'Adres e-mail'), +(1, 3, 300, 'enter_email_for_password_reset', 'Wpisz swój adres e-mail, a wyślemy Ci link do zresetowania hasła.'), +(1, 3, 300, 'enter_your_email', 'Wpisz swój adres e-mail'), +(1, 3, 300, 'enter_your_new_password', 'Wpisz swoje nowe hasło'), +(1, 3, 300, 'enter_your_password', 'Wpisz swoje hasło'), +(1, 3, 300, 'first_name', 'Imię'), +(1, 3, 300, 'forgot_password', 'Zapomniałeś hasła'), +(1, 3, 300, 'i_agree_to_the', 'Zgadzam się z'), +(1, 3, 300, 'last_name', 'Nazwisko'), +(1, 3, 300, 'new_password', 'Nowe hasło'), +(1, 3, 300, 'password', 'Hasło'), +(1, 3, 300, 'password_reset_link_sent_notice', 'Jeśli konto z tym adresem e-mail istnieje, wysłaliśmy link do resetowania hasła. Sprawdź swoją skrzynkę odbiorczą'), +(1, 3, 300, 'password_updated', 'Hasło zaktualizowane'), +(1, 3, 300, 'password_updated_description', 'Twoje hasło zostało pomyślnie zaktualizowane'), +(1, 3, 300, 'privacy_policy', 'Polityka prywatności'), +(1, 3, 300, 'reset_password', 'Resetuj hasło'), +(1, 3, 300, 'send_password_reset_link', 'Wyślij link do resetowania hasła'), +(1, 3, 300, 'sign_in', 'Zaloguj się'), +(1, 3, 300, 'terms_of_service', 'Regulamin'), +(2, 3, 300, 'already_have_an_account', 'Already have an account?'), +(2, 3, 300, 'and', 'and'), +(2, 3, 300, 'back_to_sign_in', 'Back to Sign In'), +(2, 3, 300, 'by_signing_in_you_agree_to_our', 'By signing in, you agree to our terms'), +(2, 3, 300, 'check_your_email', 'Check your email'), +(2, 3, 300, 'confirm_password', 'Confirm password'), +(2, 3, 300, 'confirm_your_new_password', 'Confirm your new password'), +(2, 3, 300, 'confirm_your_password', 'Confirm your password'), +(2, 3, 300, 'continue_with_google', 'Continue with Google'), +(2, 3, 300, 'create_account', 'Create account'), +(2, 3, 300, 'create_account_now', 'Create an account now'), +(2, 3, 300, 'dont_have_an_account', 'Don''t have an account'), +(2, 3, 300, 'email_address', 'Email address'), +(2, 3, 300, 'enter_email_for_password_reset', 'Enter your email address, and we’ll send you a link to reset your password.'), +(2, 3, 300, 'enter_your_email', 'Enter your email'), +(2, 3, 300, 'enter_your_new_password', 'Enter your new password'), +(2, 3, 300, 'enter_your_password', 'Enter your password'), +(2, 3, 300, 'first_name', 'First name'), +(2, 3, 300, 'forgot_password', 'Forgot password'), +(2, 3, 300, 'i_agree_to_the', 'I agree to the'), +(2, 3, 300, 'last_name', 'Last name'), +(2, 3, 300, 'new_password', 'New password'), +(2, 3, 300, 'password', 'Password'), +(2, 3, 300, 'password_reset_link_sent_notice', 'If an account with that email exists, we have sent a password reset link. Please check your inbox.'), +(2, 3, 300, 'password_updated', 'Password updated'), +(2, 3, 300, 'password_updated_description', 'Your password has been successfully updated'), +(2, 3, 300, 'privacy_policy', 'Privacy Policy'), +(2, 3, 300, 'reset_password', 'Reset Password'), +(2, 3, 300, 'send_password_reset_link', 'Send password reset link'), +(2, 3, 300, 'sign_in', 'Sign in'), +(2, 3, 300, 'terms_of_service', 'Terms of Service'), +(3, 3, 300, 'already_have_an_account', 'Už máte účet?'), +(3, 3, 300, 'and', 'a'), +(3, 3, 300, 'back_to_sign_in', 'Zpět k přihlášení'), +(3, 3, 300, 'by_signing_in_you_agree_to_our', 'Přihlášením souhlasíte s našimi'), +(3, 3, 300, 'check_your_email', 'Zkontrolujte svůj e-mail'), +(3, 3, 300, 'confirm_password', 'Potvrzení hesla'), +(3, 3, 300, 'confirm_your_new_password', 'Potvrďte své nové heslo'), +(3, 3, 300, 'confirm_your_password', 'Potvrďte své heslo'), +(3, 3, 300, 'continue_with_google', 'Pokračovat s Googlem'), +(3, 3, 300, 'create_account', 'Vytvořit účet'), +(3, 3, 300, 'create_account_now', 'Vytvořte účet nyní'), +(3, 3, 300, 'dont_have_an_account', 'Nemáte účet'), +(3, 3, 300, 'email_address', 'E-mailová adresa'), +(3, 3, 300, 'enter_email_for_password_reset', 'Zadejte svou e-mailovou adresu a pošleme vám odkaz pro obnovení hesla.'), +(3, 3, 300, 'enter_your_email', 'Zadejte svůj e-mail'), +(3, 3, 300, 'enter_your_new_password', 'Zadejte své nové heslo'), +(3, 3, 300, 'enter_your_password', 'Zadejte své heslo'), +(3, 3, 300, 'first_name', 'Křestní jméno'), +(3, 3, 300, 'forgot_password', 'Zapomněli jste heslo'), +(3, 3, 300, 'i_agree_to_the', 'Souhlasím s'), +(3, 3, 300, 'last_name', 'Příjmení'), +(3, 3, 300, 'new_password', 'Nové heslo'), +(3, 3, 300, 'password', 'Heslo'), +(3, 3, 300, 'password_reset_link_sent_notice', 'Pokud účet s touto e-mailovou adresou existuje, poslali jsme odkaz pro obnovení hesla. Zkontrolujte svůj inbox.'), +(3, 3, 300, 'password_updated', 'Heslo aktualizováno'), +(3, 3, 300, 'password_updated_description', 'Vaše heslo bylo úspěšně aktualizováno'), +(3, 3, 300, 'privacy_policy', 'Zásady ochrany osobních údajů'), +(3, 3, 300, 'reset_password', 'Resetovat heslo'), +(3, 3, 300, 'send_password_reset_link', 'Odeslat odkaz pro obnovení hesla'), +(3, 3, 300, 'sign_in', 'Přihlásit se'), +(3, 3, 300, 'terms_of_service', 'Podmínky služby') ON CONFLICT DO NOTHING; + +-- Component: validate_error +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 3, 301, 'confirm_password_required', 'Potwierdź hasło'), +(1, 3, 301, 'email_required', 'Adres e-mail jest wymagany'), +(1, 3, 301, 'first_name_required', 'Imię jest wymagane'), +(1, 3, 301, 'last_name_required', 'Nazwisko jest wymagane'), +(1, 3, 301, 'no_issues_for_quarter', 'Nie znaleziono zgłoszeń w tym kwartale'), +(1, 3, 301, 'password_required', 'Hasło jest wymagane'), +(1, 3, 301, 'registration_validation_password_not_same', 'Hasła nie są takie same'), +(1, 3, 301, 'registration_validation_password_requirements', 'Wymagania dotyczące hasła przy rejestracji'), +(2, 3, 301, 'confirm_password_required', 'Confirm password is required'), +(2, 3, 301, 'email_required', 'Email is required'), +(2, 3, 301, 'first_name_required', 'First name is required'), +(2, 3, 301, 'last_name_required', 'Last name is required'), +(2, 3, 301, 'no_issues_for_quarter', 'No issues found for this quarter'), +(2, 3, 301, 'password_required', 'Password is required'), +(2, 3, 301, 'registration_validation_password_not_same', 'Passwords do not match'), +(2, 3, 301, 'registration_validation_password_requirements', 'Password requirements for registration'), +(3, 3, 301, 'confirm_password_required', 'Potvrďte heslo'), +(3, 3, 301, 'email_required', 'E-mail je povinný'), +(3, 3, 301, 'first_name_required', 'First name is required'), +(3, 3, 301, 'last_name_required', 'Příjmení je povinné'), +(3, 3, 301, 'no_issues_for_quarter', 'Nebyla nalezena žádná issues pro toto čtvrtletí'), +(3, 3, 301, 'password_required', 'Heslo je povinné'), +(3, 3, 301, 'registration_validation_password_not_same', 'Hesla se neshodují'), +(3, 3, 301, 'registration_validation_password_requirements', 'Požadavky na heslo při registraci') ON CONFLICT DO NOTHING; + +-- Component: repo_chart +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 3, 302, 'all_quarters', 'Wszystkie kwartały'), +(1, 3, 302, 'created_on', 'Utworzono'), +(1, 3, 302, 'failed_to_load_issues', 'Nepodařilo se načíst úlohy'), +(1, 3, 302, 'failed_to_load_quarters', 'Nie udało się załadować kwartałów'), +(1, 3, 302, 'failed_to_load_repositories', 'Nie udało się załadować repozytoriów'), +(1, 3, 302, 'failed_to_load_years', 'Nie udało się załadować lat'), +(1, 3, 302, 'hours', 'Hodiny'), +(1, 3, 302, 'hours_spent', 'Spędzone godziny'), +(1, 3, 302, 'hours_worked', 'Odpracované hodiny'), +(1, 3, 302, 'issue_name', 'Nazwa zadania'), +(1, 3, 302, 'issues_for', 'Úkoly pro'), +(1, 3, 302, 'loading', 'Ładowanie'), +(1, 3, 302, 'login_to_view_charts', 'Zaloguj się, aby zobaczyć wykresy pracy repozytoriów.'), +(1, 3, 302, 'no_work_data_available', 'Brak danych o pracy dla wybranych kryteriów.'), +(1, 3, 302, 'quarter', 'Kwartał'), +(1, 3, 302, 'repository', 'Repozytorium'), +(1, 3, 302, 'repository_work_chart', 'Wykres pracy repozytorium'), +(1, 3, 302, 'select_a_repository', 'Wybierz repozytorium'), +(1, 3, 302, 'select_a_year', 'Vyberte rok'), +(1, 3, 302, 'select_quarter_to_view_issues', 'Proszę wybrać kwartał, aby zobaczyć zadania.'), +(1, 3, 302, 'select_repo_to_view_data', 'Proszę wybrać repozytorium, aby zobaczyć dane o pracy.'), +(1, 3, 302, 'select_year_to_view_data', 'Proszę wybrać rok, aby zobaczyć dane o pracy.'), +(1, 3, 302, 'user_initials', 'Inicjały użytkownika'), +(1, 3, 302, 'work_by_quarter', 'Wykonana praca według kwartałów (godziny)'), +(1, 3, 302, 'work_done_by_quarter', 'Wykonana praca według kwartałów'), +(1, 3, 302, 'year', 'Rok'), +(2, 3, 302, 'all_quarters', 'All Quarters'), +(2, 3, 302, 'created_on', 'Created On'), +(2, 3, 302, 'failed_to_load_issues', 'Failed to load issues'), +(2, 3, 302, 'failed_to_load_quarters', 'Failed to load quarters'), +(2, 3, 302, 'failed_to_load_repositories', 'Failed to load repositories'), +(2, 3, 302, 'failed_to_load_years', 'Failed to load years'), +(2, 3, 302, 'hours', 'Hours'), +(2, 3, 302, 'hours_spent', 'Hours Spent'), +(2, 3, 302, 'hours_worked', 'Hours Worked'), +(2, 3, 302, 'issue_name', 'Issue Name'), +(2, 3, 302, 'issues_for', 'Issues for'), +(2, 3, 302, 'loading', 'Loading'), +(2, 3, 302, 'login_to_view_charts', 'Please log in to view repository work charts.'), +(2, 3, 302, 'no_work_data_available', 'No work data available for the selected criteria.'), +(2, 3, 302, 'quarter', 'Quarter'), +(2, 3, 302, 'repository', 'Repository'), +(2, 3, 302, 'repository_work_chart', 'Repository Work Chart'), +(2, 3, 302, 'select_a_repository', 'Select a repository'), +(2, 3, 302, 'select_a_year', 'Select a year'), +(2, 3, 302, 'select_quarter_to_view_issues', 'Please select a quarter to view issues.'), +(2, 3, 302, 'select_repo_to_view_data', 'Please select a repository to view work data.'), +(2, 3, 302, 'select_year_to_view_data', 'Please select a year to view work data.'), +(2, 3, 302, 'user_initials', 'User Initials'), +(2, 3, 302, 'work_by_quarter', 'Work Done by Quarter (Hours)'), +(2, 3, 302, 'work_done_by_quarter', 'Work Done by Quarter'), +(2, 3, 302, 'year', 'Year'), +(3, 3, 302, 'all_quarters', 'Všechna čtvrtletí'), +(3, 3, 302, 'created_on', 'Vytvořeno'), +(3, 3, 302, 'failed_to_load_issues', 'Nie udało się załadować zgłoszeń'), +(3, 3, 302, 'failed_to_load_quarters', 'Nepodařilo se načíst čtvrtletí'), +(3, 3, 302, 'failed_to_load_repositories', 'Nepodařilo se načíst repozitáře'), +(3, 3, 302, 'failed_to_load_years', 'Nepodařilo se načíst roky'), +(3, 3, 302, 'hours', 'Godziny'), +(3, 3, 302, 'hours_spent', 'Strávené hodiny'), +(3, 3, 302, 'hours_worked', 'Przepracowane godziny'), +(3, 3, 302, 'issue_name', 'Název úkolu'), +(3, 3, 302, 'issues_for', 'Zadania dla'), +(3, 3, 302, 'loading', 'Načítání'), +(3, 3, 302, 'login_to_view_charts', 'Přihlaste se pro zobrazení grafů práce repozitářů.'), +(3, 3, 302, 'no_work_data_available', 'Pro zvolená kritéria nejsou k dispozici žádná pracovní data.'), +(3, 3, 302, 'quarter', 'Čtvrtletí'), +(3, 3, 302, 'repository', 'Repozitář'), +(3, 3, 302, 'repository_work_chart', 'Graf práce úložiště'), +(3, 3, 302, 'select_a_repository', 'Vyberte repozitář'), +(3, 3, 302, 'select_a_year', 'Wybierz rok'), +(3, 3, 302, 'select_quarter_to_view_issues', 'Vyberte prosím čtvrtletí pro zobrazení úkolů.'), +(3, 3, 302, 'select_repo_to_view_data', 'Vyberte prosím repozitář pro zobrazení pracovních dat.'), +(3, 3, 302, 'select_year_to_view_data', 'Vyberte prosím rok pro zobrazení pracovních dat.'), +(3, 3, 302, 'user_initials', 'Iniciály uživatele'), +(3, 3, 302, 'work_by_quarter', 'Práce dokončená po čtvrtletích (hodiny)'), +(3, 3, 302, 'work_done_by_quarter', 'Wykonana praca według kwartałów'), +(3, 3, 302, 'year', 'Rok') ON CONFLICT DO NOTHING; + +-- +goose Down +-- Remove translations for this scope +DELETE FROM translations WHERE scope_id = 3; diff --git a/i18n/migrations/20260302163157_translations_backend.sql b/i18n/migrations/20260302163157_translations_backend.sql new file mode 100644 index 0000000..f5a9c0e --- /dev/null +++ b/i18n/migrations/20260302163157_translations_backend.sql @@ -0,0 +1,219 @@ +-- +goose Up +-- Dump translations from database + +-- Components +INSERT INTO components (id, name) VALUES +(1, 'be'), +(2, 'login'), +(3, 'verify_email'), +(100, 'email'), +(101, 'error'), +(102, 'auth'), +(103, 'email'), +(300, 'general'), +(301, 'validate_error'), +(302, 'repo_chart') ON CONFLICT DO NOTHING; + +-- Scope +INSERT INTO scopes (id, name) VALUES (1, 'Backend') ON CONFLICT DO NOTHING; + +-- Translations + +-- Component: be +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 1, 1, 'langs_loaded', NULL), +(1, 1, 1, 'langs_not_loaded', NULL), +(1, 1, 1, 'message_nok', NULL), +(1, 1, 1, 'message_ok', NULL), +(1, 1, 1, 'translations_loaded', NULL), +(1, 1, 1, 'translations_not_loaded', NULL), +(2, 1, 1, 'langs_loaded', NULL), +(2, 1, 1, 'langs_not_loaded', NULL), +(2, 1, 1, 'message_nok', NULL), +(2, 1, 1, 'message_ok', NULL), +(2, 1, 1, 'translations_loaded', NULL), +(2, 1, 1, 'translations_not_loaded', NULL), +(3, 1, 1, 'langs_loaded', NULL), +(3, 1, 1, 'langs_not_loaded', NULL), +(3, 1, 1, 'message_nok', NULL), +(3, 1, 1, 'message_ok', NULL), +(3, 1, 1, 'translations_loaded', NULL), +(3, 1, 1, 'translations_not_loaded', NULL) ON CONFLICT DO NOTHING; + +-- Component: email +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 1, 100, 'langs_loaded', NULL), +(1, 1, 100, 'langs_not_loaded', NULL), +(1, 1, 100, 'message_nok', NULL), +(1, 1, 100, 'message_ok', NULL), +(1, 1, 100, 'translations_loaded', NULL), +(1, 1, 100, 'translations_not_loaded', NULL), +(2, 1, 100, 'langs_loaded', NULL), +(2, 1, 100, 'langs_not_loaded', NULL), +(2, 1, 100, 'message_nok', NULL), +(2, 1, 100, 'message_ok', NULL), +(2, 1, 100, 'translations_loaded', NULL), +(2, 1, 100, 'translations_not_loaded', NULL), +(3, 1, 100, 'langs_loaded', NULL), +(3, 1, 100, 'langs_not_loaded', NULL), +(3, 1, 100, 'message_nok', NULL), +(3, 1, 100, 'message_ok', NULL), +(3, 1, 100, 'translations_loaded', NULL), +(3, 1, 100, 'translations_not_loaded', NULL) ON CONFLICT DO NOTHING; + +-- Component: error +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 1, 101, 'err_bad_paging', 'zła paginacja'), +(1, 1, 101, 'err_bad_quarter_attribute', 'nieprawidłowy atrybut quarter'), +(1, 1, 101, 'err_bad_repo_id_attribute', 'nieprawidłowy atrybut repoID'), +(1, 1, 101, 'err_bad_year_attribute', 'nieprawidłowy atrybut year'), +(1, 1, 101, 'err_email_exists', 'adres e-mail zajęty'), +(1, 1, 101, 'err_email_not_verified', 'adres e-mail nie został zweryfikowany'), +(1, 1, 101, 'err_email_password_required', 'wymagany jest adres e-mail i hasło'), +(1, 1, 101, 'err_email_required', 'Adres e-mail jest wymagany'), +(1, 1, 101, 'err_first_last_name_required', 'imię i nazwisko są wymagane'), +(1, 1, 101, 'err_internal_server_error', 'błąd wewnętrzny serwera'), +(1, 1, 101, 'err_invalid_body', 'nieprawidłowy tekst zapytania'), +(1, 1, 101, 'err_invalid_credentials', 'nieprawidłowy adres e-mail lub hasło'), +(1, 1, 101, 'err_invalid_password', 'hasło musi mieć co najmniej 10 znaków i zawierać co najmniej jedną małą literę, jedną wielką literę i jedną cyfrę'), +(1, 1, 101, 'err_invalid_repo_id', 'niedostępne repo id'), +(1, 1, 101, 'err_invalid_reset_token', 'nieprawidłowy token'), +(1, 1, 101, 'err_invalid_token', 'nieprawidłowy token'), +(1, 1, 101, 'err_invalid_verification_token', 'nieprawidłowy token'), +(1, 1, 101, 'err_not_authenticated', 'nie uwierzytelniono'), +(1, 1, 101, 'err_passwords_do_not_match', 'hasła nie pasują'), +(1, 1, 101, 'err_refresh_token_required', 'wymagany jest token odświeżania'), +(1, 1, 101, 'err_reset_token_expired', 'token wygasł'), +(1, 1, 101, 'err_token_expired', 'token wygasł'), +(1, 1, 101, 'err_token_password_required', 'wymagane są token i hasło'), +(1, 1, 101, 'err_token_required', 'wymagany jest token'), +(1, 1, 101, 'err_user_inactive', 'konto użytkownika jest nieaktywne'), +(1, 1, 101, 'err_user_not_found', 'użytkownik nie został znaleziony'), +(1, 1, 101, 'err_verification_token_expired', 'token weryfikacyjny wygasł'), +(2, 1, 101, 'err_bad_paging', 'bad paging'), +(2, 1, 101, 'err_bad_quarter_attribute', 'bad quarter attribute'), +(2, 1, 101, 'err_bad_repo_id_attribute', 'bad repoID attribute'), +(2, 1, 101, 'err_bad_year_attribute', 'bad year attribute'), +(2, 1, 101, 'err_email_exists', 'email already exists'), +(2, 1, 101, 'err_email_not_verified', 'email not verified'), +(2, 1, 101, 'err_email_password_required', 'email and password are required'), +(2, 1, 101, 'err_email_required', 'email is required'), +(2, 1, 101, 'err_first_last_name_required', 'first and last name is required'), +(2, 1, 101, 'err_internal_server_error', 'internal server error'), +(2, 1, 101, 'err_invalid_body', 'invalid request body'), +(2, 1, 101, 'err_invalid_credentials', 'invalid email or password'), +(2, 1, 101, 'err_invalid_password', 'password must be at least 10 characters long and contain at least one lowercase letter, one uppercase letter, and one digit'), +(2, 1, 101, 'err_invalid_repo_id', 'inaccessible repo id'), +(2, 1, 101, 'err_invalid_reset_token', 'invalid reset token'), +(2, 1, 101, 'err_invalid_token', 'invalid token'), +(2, 1, 101, 'err_invalid_verification_token', 'invalid verification token'), +(2, 1, 101, 'err_not_authenticated', 'not authenticated'), +(2, 1, 101, 'err_passwords_do_not_match', 'passwords do not match'), +(2, 1, 101, 'err_refresh_token_required', 'refresh token is required'), +(2, 1, 101, 'err_reset_token_expired', 'reset token has expired'), +(2, 1, 101, 'err_token_expired', 'token has expired'), +(2, 1, 101, 'err_token_password_required', 'token and password are required'), +(2, 1, 101, 'err_token_required', 'token is required'), +(2, 1, 101, 'err_user_inactive', 'user account is inactive'), +(2, 1, 101, 'err_user_not_found', 'user not found'), +(2, 1, 101, 'err_verification_token_expired', 'verification token has expired'), +(3, 1, 101, 'err_bad_paging', 'špatné stránkování'), +(3, 1, 101, 'err_bad_quarter_attribute', 'atribut špatné čtvrtiny'), +(3, 1, 101, 'err_bad_repo_id_attribute', 'špatný atribut repoID'), +(3, 1, 101, 'err_bad_year_attribute', 'atribut špatného roku'), +(3, 1, 101, 'err_email_exists', 'e-mail již existuje'), +(3, 1, 101, 'err_email_not_verified', 'e-mail nebyl ověřen'), +(3, 1, 101, 'err_email_password_required', 'je vyžadován e-mail a heslo'), +(3, 1, 101, 'err_email_required', 'e-mail je povinný'), +(3, 1, 101, 'err_first_last_name_required', 'křestní jméno a příjmení je povinné'), +(3, 1, 101, 'err_internal_server_error', 'interní chyba serveru'), +(3, 1, 101, 'err_invalid_body', 'neplatné tělo požadavku'), +(3, 1, 101, 'err_invalid_credentials', 'neplatný e-mail nebo heslo'), +(3, 1, 101, 'err_invalid_password', 'heslo musí mít alespoň 10 znaků a musí obsahovat alespoň jedno malé písmeno, jedno velké písmeno a jednu číslici'), +(3, 1, 101, 'err_invalid_repo_id', 'nepřístupné ID úložiště'), +(3, 1, 101, 'err_invalid_reset_token', 'neplatný resetovací token'), +(3, 1, 101, 'err_invalid_token', 'neplatný token'), +(3, 1, 101, 'err_invalid_verification_token', 'neplatný ověřovací token'), +(3, 1, 101, 'err_not_authenticated', 'neověřeno'), +(3, 1, 101, 'err_passwords_do_not_match', 'hesla se neshodují'), +(3, 1, 101, 'err_refresh_token_required', 'Je vyžadován token pro obnovení'), +(3, 1, 101, 'err_reset_token_expired', 'Platnost resetovacího tokenu vypršela'), +(3, 1, 101, 'err_token_expired', 'platnost tokenu vypršela'), +(3, 1, 101, 'err_token_password_required', 'je vyžadován token a heslo'), +(3, 1, 101, 'err_token_required', 'je vyžadován token'), +(3, 1, 101, 'err_user_inactive', 'uživatelský účet je neaktivní'), +(3, 1, 101, 'err_user_not_found', 'uživatel nenalezen'), +(3, 1, 101, 'err_verification_token_expired', 'platnost ověřovacího tokenu vypršela') ON CONFLICT DO NOTHING; + +-- Component: auth +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 1, 102, 'auth_if_account_exists', 'jeśli konto o tym adresie e-mail istnieje, został wysłany link do resetowania hasła'), +(1, 1, 102, 'auth_logged_out_successfully', 'wylogowano pomyślnie'), +(1, 1, 102, 'auth_password_reset_successfully', 'pomyślnie zresetowano hasło'), +(1, 1, 102, 'auth_registration_successful', 'rejestracja pomyślna, proszę zweryfikować swój adres e-mail'), +(2, 1, 102, 'auth_if_account_exists', 'if an account with that email exists, a password reset link has been sent'), +(2, 1, 102, 'auth_logged_out_successfully', 'logged out successfully'), +(2, 1, 102, 'auth_password_reset_successfully', 'password reset successfully'), +(2, 1, 102, 'auth_registration_successful', 'registration successful, please verify your email'), +(3, 1, 102, 'auth_if_account_exists', 'Pokud účet s danou e-mailovou adresou existuje, byl odeslán odkaz pro resetování hesla.'), +(3, 1, 102, 'auth_logged_out_successfully', 'úspěšně odhlášen/a'), +(3, 1, 102, 'auth_password_reset_successfully', 'úspěšné obnovení hesla'), +(3, 1, 102, 'auth_registration_successful', 'Registrace úspěšná, prosím ověřte svůj e-mail') ON CONFLICT DO NOTHING; + +-- Component: email +INSERT INTO translations (lang_id, scope_id, component_id, "key", data) VALUES +(1, 1, 103, 'email_admin_notification_title', 'Admin notification title'), +(1, 1, 103, 'email_footer', 'Wszelkie prawa zastrzeżone.'), +(1, 1, 103, 'email_greeting', 'Witaj,'), +(1, 1, 103, 'email_ignore', 'Jeśli nie jesteś właścicielem tego konta, prosimy o zignorowanie maila.'), +(1, 1, 103, 'email_ignore_reset', 'Jeśli nie chcesz zmieniać hasła, prosimy o zignorowanie maila. Twoje hasło pozostanie niezmienione.'), +(1, 1, 103, 'email_or_copy', 'Bądź przekopiuj poniższy link do przeglądarki:'), +(1, 1, 103, 'email_password_reset_message1', 'Otrzymaliśmy prośbę o zresetowanie Twojego hasła. Aby utworzyć nowe hasło, kliknij w poniższy przycisk:'), +(1, 1, 103, 'email_password_reset_subject', 'Zresetuj hasło'), +(1, 1, 103, 'email_password_reset_title', 'Zresetuj swoje hasło'), +(1, 1, 103, 'email_password_reset_warning', 'Link na zresesetowanie hasła przedawni się po 1 godzinie.'), +(1, 1, 103, 'email_reset_button', 'Zresetuj hasło'), +(1, 1, 103, 'email_verification_message1', 'Dziękujemy za rejestrację. Aby dokończyć proces rejestracji, zweryfikuj swojego maila klikając w poniższy link:'), +(1, 1, 103, 'email_verification_note', 'Uwaga: link weryfikacyjny przedawni się za 24 godziny.'), +(1, 1, 103, 'email_verification_subject', 'Zweryfikuj swój adres email'), +(1, 1, 103, 'email_verification_title', 'Weryfikacja Adresu email'), +(1, 1, 103, 'email_verify_button', 'Zweryfikuj adres email'), +(1, 1, 103, 'email_warning_title', 'Ważne:'), +(2, 1, 103, 'email_admin_notification_title', 'Admin notification title'), +(2, 1, 103, 'email_footer', 'All rights reserved.'), +(2, 1, 103, 'email_greeting', 'Hello,'), +(2, 1, 103, 'email_ignore', 'If you did not create an account with us, please ignore this email.'), +(2, 1, 103, 'email_ignore_reset', 'If you did not request a password reset, please ignore this email. Your password will remain unchanged.'), +(2, 1, 103, 'email_or_copy', 'Or copy and paste this link into your browser:'), +(2, 1, 103, 'email_password_reset_message1', 'We received a request to reset your password. Click the button below to create a new password:'), +(2, 1, 103, 'email_password_reset_subject', 'Reset Your Password'), +(2, 1, 103, 'email_password_reset_title', 'Reset Your Password'), +(2, 1, 103, 'email_password_reset_warning', 'This password reset link will expire in 1 hour for security reasons.'), +(2, 1, 103, 'email_reset_button', 'Reset Password'), +(2, 1, 103, 'email_verification_message1', 'Thank you for registering with us. To complete your registration and activate your account, please verify your email address by clicking the button below:'), +(2, 1, 103, 'email_verification_note', 'Note: This verification link will expire in 24 hours.'), +(2, 1, 103, 'email_verification_subject', 'Verify Your Email Address'), +(2, 1, 103, 'email_verification_title', 'Verify Your Email Address'), +(2, 1, 103, 'email_verify_button', 'Verify Email Address'), +(2, 1, 103, 'email_warning_title', 'Important:'), +(3, 1, 103, 'email_admin_notification_title', 'Admin notification title'), +(3, 1, 103, 'email_footer', 'Všechna práva vyhrazena.'), +(3, 1, 103, 'email_greeting', 'Ahoj,'), +(3, 1, 103, 'email_ignore', 'Pokud jste si u nás nevytvořili účet, prosím, ignorujte tento e-mail.'), +(3, 1, 103, 'email_ignore_reset', 'Pokud jste nepožádali o obnovení hesla, ignorujte prosím tento e-mail. Vaše heslo zůstane nezměněno.'), +(3, 1, 103, 'email_or_copy', 'Nebo zkopírujte a vložte tento odkaz do prohlížeče:'), +(3, 1, 103, 'email_password_reset_message1', 'Obdrželi jsme žádost o obnovení hesla. Klikněte na tlačítko níže a vytvořte si nové heslo:'), +(3, 1, 103, 'email_password_reset_subject', 'Obnovte si heslo'), +(3, 1, 103, 'email_password_reset_title', 'Obnovte si heslo'), +(3, 1, 103, 'email_password_reset_warning', 'Z bezpečnostních důvodů platnost tohoto odkazu pro obnovení hesla vyprší za 1 hodinu.'), +(3, 1, 103, 'email_reset_button', 'Obnovit heslo'), +(3, 1, 103, 'email_verification_message1', 'Děkujeme za registraci u nás. Chcete-li dokončit registraci a aktivovat svůj účet, ověřte prosím svou e-mailovou adresu kliknutím na tlačítko níže:'), +(3, 1, 103, 'email_verification_note', 'Poznámka: Platnost tohoto ověřovacího odkazu vyprší za 24 hodin.'), +(3, 1, 103, 'email_verification_subject', 'Ověřte svou e-mailovou adresu'), +(3, 1, 103, 'email_verification_title', 'Ověřte svou e-mailovou adresu'), +(3, 1, 103, 'email_verify_button', 'Ověření e-mailové adresy'), +(3, 1, 103, 'email_warning_title', 'Důležité:') ON CONFLICT DO NOTHING; + +-- +goose Down +-- Remove translations for this scope +DELETE FROM translations WHERE scope_id = 1; diff --git a/i18n/vue-keys.json b/i18n/vue-keys.json new file mode 100644 index 0000000..0a67e08 --- /dev/null +++ b/i18n/vue-keys.json @@ -0,0 +1,1914 @@ +{ + "translations": [ + { + "key": "already_have_an_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 87, + "column": 13 + } + ] + }, + { + "key": "already_have_an_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 87, + "column": 13 + } + ] + }, + { + "key": "already_have_an_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 87, + "column": 13 + } + ] + }, + { + "key": "and", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 95, + "column": 9 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 74, + "column": 15 + } + ] + }, + { + "key": "and", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 95, + "column": 9 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 74, + "column": 15 + } + ] + }, + { + "key": "and", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 95, + "column": 9 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 74, + "column": 15 + } + ] + }, + { + "key": "back_to_sign_in", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 14, + "column": 13 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 45, + "column": 13 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 16, + "column": 25 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 62, + "column": 29 + } + ] + }, + { + "key": "back_to_sign_in", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 14, + "column": 13 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 45, + "column": 13 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 16, + "column": 25 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 62, + "column": 29 + } + ] + }, + { + "key": "back_to_sign_in", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 14, + "column": 13 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 45, + "column": 13 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 16, + "column": 25 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 62, + "column": 29 + } + ] + }, + { + "key": "by_signing_in_you_agree_to_our", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 91, + "column": 9 + } + ] + }, + { + "key": "by_signing_in_you_agree_to_our", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 91, + "column": 9 + } + ] + }, + { + "key": "by_signing_in_you_agree_to_our", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 91, + "column": 9 + } + ] + }, + { + "key": "check_your_email", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 9, + "column": 72 + } + ] + }, + { + "key": "check_your_email", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 9, + "column": 72 + } + ] + }, + { + "key": "check_your_email", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 9, + "column": 72 + } + ] + }, + { + "key": "confirm_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 57, + "column": 21 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 43, + "column": 33 + } + ] + }, + { + "key": "confirm_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 57, + "column": 21 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 43, + "column": 33 + } + ] + }, + { + "key": "confirm_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 57, + "column": 21 + }, + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 43, + "column": 33 + } + ] + }, + { + "key": "confirm_your_new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 46, + "column": 29 + } + ] + }, + { + "key": "confirm_your_new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 46, + "column": 29 + } + ] + }, + { + "key": "confirm_your_new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 46, + "column": 29 + } + ] + }, + { + "key": "confirm_your_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 59, + "column": 13 + } + ] + }, + { + "key": "confirm_your_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 59, + "column": 13 + } + ] + }, + { + "key": "confirm_your_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 59, + "column": 13 + } + ] + }, + { + "key": "continue_with_google", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 80, + "column": 9 + } + ] + }, + { + "key": "continue_with_google", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 80, + "column": 9 + } + ] + }, + { + "key": "continue_with_google", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 80, + "column": 9 + } + ] + }, + { + "key": "create_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 82, + "column": 11 + } + ] + }, + { + "key": "create_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 82, + "column": 11 + } + ] + }, + { + "key": "create_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 82, + "column": 11 + } + ] + }, + { + "key": "create_account_now", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 87, + "column": 35 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 49, + "column": 130 + } + ] + }, + { + "key": "create_account_now", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 87, + "column": 35 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 49, + "column": 130 + } + ] + }, + { + "key": "create_account_now", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 87, + "column": 35 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 49, + "column": 130 + } + ] + }, + { + "key": "dont_have_an_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 85, + "column": 11 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 48, + "column": 13 + } + ] + }, + { + "key": "dont_have_an_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 85, + "column": 11 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 48, + "column": 13 + } + ] + }, + { + "key": "dont_have_an_account", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 85, + "column": 11 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 48, + "column": 13 + } + ] + }, + { + "key": "email_address", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 26, + "column": 21 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 32, + "column": 23 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 39, + "column": 21 + } + ] + }, + { + "key": "email_address", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 26, + "column": 21 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 32, + "column": 23 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 39, + "column": 21 + } + ] + }, + { + "key": "email_address", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 26, + "column": 21 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 32, + "column": 23 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 39, + "column": 21 + } + ] + }, + { + "key": "enter_email_for_password_reset", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 23, + "column": 13 + } + ] + }, + { + "key": "enter_email_for_password_reset", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 23, + "column": 13 + } + ] + }, + { + "key": "enter_email_for_password_reset", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 23, + "column": 13 + } + ] + }, + { + "key": "enter_your_email", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 28, + "column": 35 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 33, + "column": 37 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 40, + "column": 35 + } + ] + }, + { + "key": "enter_your_email", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 28, + "column": 35 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 33, + "column": 37 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 40, + "column": 35 + } + ] + }, + { + "key": "enter_your_email", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 28, + "column": 35 + }, + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 33, + "column": 37 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 40, + "column": 35 + } + ] + }, + { + "key": "enter_your_new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 31, + "column": 29 + } + ] + }, + { + "key": "enter_your_new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 31, + "column": 29 + } + ] + }, + { + "key": "enter_your_new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 31, + "column": 29 + } + ] + }, + { + "key": "enter_your_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 33, + "column": 38 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 46, + "column": 38 + } + ] + }, + { + "key": "enter_your_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 33, + "column": 38 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 46, + "column": 38 + } + ] + }, + { + "key": "enter_your_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 33, + "column": 38 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 46, + "column": 38 + } + ] + }, + { + "key": "first_name", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 27, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 28, + "column": 67 + } + ] + }, + { + "key": "first_name", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 27, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 28, + "column": 67 + } + ] + }, + { + "key": "first_name", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 27, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 28, + "column": 67 + } + ] + }, + { + "key": "forgot_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 47, + "column": 13 + } + ] + }, + { + "key": "forgot_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 47, + "column": 13 + } + ] + }, + { + "key": "forgot_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 47, + "column": 13 + } + ] + }, + { + "key": "i_agree_to_the", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 71, + "column": 15 + } + ] + }, + { + "key": "i_agree_to_the", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 71, + "column": 15 + } + ] + }, + { + "key": "i_agree_to_the", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 71, + "column": 15 + } + ] + }, + { + "key": "last_name", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 33, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 34, + "column": 93 + } + ] + }, + { + "key": "last_name", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 33, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 34, + "column": 93 + } + ] + }, + { + "key": "last_name", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/RegisterView.vue", + "line": 33, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 34, + "column": 93 + } + ] + }, + { + "key": "new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 29, + "column": 33 + } + ] + }, + { + "key": "new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 29, + "column": 33 + } + ] + }, + { + "key": "new_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 29, + "column": 33 + } + ] + }, + { + "key": "password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 32, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 44, + "column": 21 + } + ] + }, + { + "key": "password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 32, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 44, + "column": 21 + } + ] + }, + { + "key": "password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 32, + "column": 21 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 44, + "column": 21 + } + ] + }, + { + "key": "password_reset_link_sent_notice", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 11, + "column": 13 + } + ] + }, + { + "key": "password_reset_link_sent_notice", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 11, + "column": 13 + } + ] + }, + { + "key": "password_reset_link_sent_notice", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 11, + "column": 13 + } + ] + }, + { + "key": "password_updated", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 10, + "column": 25 + } + ] + }, + { + "key": "password_updated", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 10, + "column": 25 + } + ] + }, + { + "key": "password_updated", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 10, + "column": 25 + } + ] + }, + { + "key": "password_updated_description", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 13, + "column": 25 + } + ] + }, + { + "key": "password_updated_description", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 13, + "column": 25 + } + ] + }, + { + "key": "password_updated_description", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 13, + "column": 25 + } + ] + }, + { + "key": "privacy_policy", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 97, + "column": 97 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 75, + "column": 143 + } + ] + }, + { + "key": "privacy_policy", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 97, + "column": 97 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 75, + "column": 143 + } + ] + }, + { + "key": "privacy_policy", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 97, + "column": 97 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 75, + "column": 143 + } + ] + }, + { + "key": "reset_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 57, + "column": 25 + } + ] + }, + { + "key": "reset_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 57, + "column": 25 + } + ] + }, + { + "key": "reset_password", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/ResetPasswordForm.vue", + "line": 57, + "column": 25 + } + ] + }, + { + "key": "send_password_reset_link", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 38, + "column": 13 + } + ] + }, + { + "key": "send_password_reset_link", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 38, + "column": 13 + } + ] + }, + { + "key": "send_password_reset_link", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/PasswordRecoveryView.vue", + "line": 38, + "column": 13 + } + ] + }, + { + "key": "sign_in", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 52, + "column": 11 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 90, + "column": 32 + } + ] + }, + { + "key": "sign_in", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 52, + "column": 11 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 90, + "column": 32 + } + ] + }, + { + "key": "sign_in", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 52, + "column": 11 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 90, + "column": 32 + } + ] + }, + { + "key": "terms_of_service", + "scope_id": 3, + "component_id": 300, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 93, + "column": 97 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 72, + "column": 141 + } + ] + }, + { + "key": "terms_of_service", + "scope_id": 3, + "component_id": 300, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 93, + "column": 97 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 72, + "column": 141 + } + ] + }, + { + "key": "terms_of_service", + "scope_id": 3, + "component_id": 300, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "../bo/src/views/LoginView.vue", + "line": 93, + "column": 97 + }, + { + "file": "../bo/src/views/RegisterView.vue", + "line": 72, + "column": 141 + } + ] + }, + { + "key": "confirm_password_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 40, + "column": 103 + }, + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/ResetPasswordForm.vue", + "line": 48, + "column": 16 + } + ] + }, + { + "key": "confirm_password_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 40, + "column": 103 + }, + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/ResetPasswordForm.vue", + "line": 48, + "column": 16 + } + ] + }, + { + "key": "confirm_password_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 40, + "column": 103 + }, + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/ResetPasswordForm.vue", + "line": 48, + "column": 16 + } + ] + }, + { + "key": "email_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/LoginView.vue", + "line": 37, + "column": 51 + }, + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 39, + "column": 51 + } + ] + }, + { + "key": "email_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/LoginView.vue", + "line": 37, + "column": 51 + }, + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 39, + "column": 51 + } + ] + }, + { + "key": "email_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/LoginView.vue", + "line": 37, + "column": 51 + }, + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 39, + "column": 51 + } + ] + }, + { + "key": "first_name_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 37, + "column": 65 + } + ] + }, + { + "key": "first_name_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 37, + "column": 65 + } + ] + }, + { + "key": "first_name_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 37, + "column": 65 + } + ] + }, + { + "key": "last_name_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 38, + "column": 62 + } + ] + }, + { + "key": "last_name_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 38, + "column": 62 + } + ] + }, + { + "key": "last_name_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/views/RegisterView.vue", + "line": 38, + "column": 62 + } + ] + }, + { + "key": "password_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 72, + "column": 64 + } + ] + }, + { + "key": "password_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 72, + "column": 64 + } + ] + }, + { + "key": "password_required", + "scope_id": 3, + "component_id": 301, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 72, + "column": 64 + } + ] + }, + { + "key": "registration_validation_password_not_same", + "scope_id": 3, + "component_id": 301, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 85, + "column": 33 + } + ] + }, + { + "key": "registration_validation_password_not_same", + "scope_id": 3, + "component_id": 301, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 85, + "column": 33 + } + ] + }, + { + "key": "registration_validation_password_not_same", + "scope_id": 3, + "component_id": 301, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 85, + "column": 33 + } + ] + }, + { + "key": "registration_validation_password_requirements", + "scope_id": 3, + "component_id": 301, + "lang_id": 1, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 76, + "column": 33 + } + ] + }, + { + "key": "registration_validation_password_requirements", + "scope_id": 3, + "component_id": 301, + "lang_id": 2, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 76, + "column": 33 + } + ] + }, + { + "key": "registration_validation_password_requirements", + "scope_id": 3, + "component_id": 301, + "lang_id": 3, + "data": "", + "locations": [ + { + "file": "/home/daniel/coding/work/timetracker/bo/src/composable/useValidation.ts", + "line": 76, + "column": 33 + } + ] + } + ], + "dynamic": [], + "summary": { + "total_keys": 114, + "static_keys": 38, + "dynamic_keys": 0, + "by_component": { + "300": 31, + "301": 7 + }, + "by_component_name": { + "general": 31, + "validate_error": 7 + } + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..01724f5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4855 @@ +{ + "name": "timetracker", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@nuxt/ui": "^4.5.1", + "chart.js": "^4.5.1", + "vue-chartjs": "^5.3.3" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@capsizecss/unpack": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.0.tgz", + "integrity": "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@floating-ui/vue": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@floating-ui/vue/-/vue-1.1.11.tgz", + "integrity": "sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6", + "@floating-ui/utils": "^0.2.11", + "vue-demi": ">=0.13.0" + } + }, + "node_modules/@floating-ui/vue/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@iconify/collections": { + "version": "1.0.656", + "resolved": "https://registry.npmjs.org/@iconify/collections/-/collections-1.0.656.tgz", + "integrity": "sha512-X17vsrStihw4gEdgT2+46E+ioM506JJh/Jp/reJGZ2URcWhhS4aMnsi9onoGTQ8ppydZ0GJrPuvOyhySiteKsA==", + "license": "MIT", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" + } + }, + "node_modules/@iconify/vue": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-5.0.0.tgz", + "integrity": "sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "vue": ">=3" + } + }, + "node_modules/@internationalized/date": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.11.0.tgz", + "integrity": "sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.5.tgz", + "integrity": "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@nuxt/devtools-kit": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-3.2.2.tgz", + "integrity": "sha512-07E1phqoVPNlexlkrYuOMPhTzLIRjcl9iEqyc/vZLH2zWeH/T1X3v+RLTVW5Oio40f/XBp9yQuyihmX34ddjgQ==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^4.3.1", + "execa": "^8.0.1" + }, + "peerDependencies": { + "vite": ">=6.0" + } + }, + "node_modules/@nuxt/fonts": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@nuxt/fonts/-/fonts-0.14.0.tgz", + "integrity": "sha512-4uXQl9fa5F4ibdgU8zomoOcyMdnwgdem+Pi8JEqeDYI5yPR32Kam6HnuRr47dTb97CstaepAvXPWQUUHMtjsFQ==", + "license": "MIT", + "dependencies": { + "@nuxt/devtools-kit": "^3.2.1", + "@nuxt/kit": "^4.2.2", + "consola": "^3.4.2", + "defu": "^6.1.4", + "fontless": "^0.2.1", + "h3": "^1.15.5", + "magic-regexp": "^0.10.0", + "ofetch": "^1.5.1", + "pathe": "^2.0.3", + "sirv": "^3.0.2", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unifont": "^0.7.4", + "unplugin": "^3.0.0", + "unstorage": "^1.17.4" + } + }, + "node_modules/@nuxt/icon": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nuxt/icon/-/icon-2.2.1.tgz", + "integrity": "sha512-GI840yYGuvHI0BGDQ63d6rAxGzG96jQcWrnaWIQKlyQo/7sx9PjXkSHckXUXyX1MCr9zY6U25Td6OatfY6Hklw==", + "license": "MIT", + "dependencies": { + "@iconify/collections": "^1.0.641", + "@iconify/types": "^2.0.0", + "@iconify/utils": "^3.1.0", + "@iconify/vue": "^5.0.0", + "@nuxt/devtools-kit": "^3.1.1", + "@nuxt/kit": "^4.2.2", + "consola": "^3.4.2", + "local-pkg": "^1.1.2", + "mlly": "^1.8.0", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinyglobby": "^0.2.15" + } + }, + "node_modules/@nuxt/kit": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.3.1.tgz", + "integrity": "sha512-UjBFt72dnpc+83BV3OIbCT0YHLevJtgJCHpxMX0YRKWLDhhbcDdUse87GtsQBrjvOzK7WUNUYLDS/hQLYev5rA==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.0", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/schema": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-4.3.1.tgz", + "integrity": "sha512-S+wHJdYDuyk9I43Ej27y5BeWMZgi7R/UVql3b3qtT35d0fbpXW7fUenzhLRCCDC6O10sjguc6fcMcR9sMKvV8g==", + "license": "MIT", + "dependencies": { + "@vue/shared": "^3.5.27", + "defu": "^6.1.4", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "std-env": "^3.10.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/ui": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@nuxt/ui/-/ui-4.5.1.tgz", + "integrity": "sha512-5hWgreVPX6EsNCZNoOd2o7m9fTA3fwUMDw+zeYTSAjhSKtAuvkZrBtmez4MUeTv+LO1gknesgvErdIvlUnElTg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.5", + "@iconify/vue": "^5.0.0", + "@internationalized/date": "^3.11.0", + "@internationalized/number": "^3.6.5", + "@nuxt/fonts": "^0.14.0", + "@nuxt/icon": "^2.2.1", + "@nuxt/kit": "^4.3.1", + "@nuxt/schema": "^4.3.1", + "@nuxtjs/color-mode": "^3.5.2", + "@standard-schema/spec": "^1.1.0", + "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/vite": "^4.2.1", + "@tanstack/vue-table": "^8.21.3", + "@tanstack/vue-virtual": "^3.13.19", + "@tiptap/core": "^3.20.0", + "@tiptap/extension-bubble-menu": "^3.20.0", + "@tiptap/extension-code": "^3.20.0", + "@tiptap/extension-collaboration": "^3.20.0", + "@tiptap/extension-drag-handle": "^3.20.0", + "@tiptap/extension-drag-handle-vue-3": "^3.20.0", + "@tiptap/extension-floating-menu": "^3.20.0", + "@tiptap/extension-horizontal-rule": "^3.20.0", + "@tiptap/extension-image": "^3.20.0", + "@tiptap/extension-mention": "^3.20.0", + "@tiptap/extension-node-range": "^3.20.0", + "@tiptap/extension-placeholder": "^3.20.0", + "@tiptap/markdown": "^3.20.0", + "@tiptap/pm": "^3.20.0", + "@tiptap/starter-kit": "^3.20.0", + "@tiptap/suggestion": "^3.20.0", + "@tiptap/vue-3": "^3.20.0", + "@unhead/vue": "^2.1.10", + "@vueuse/core": "^14.2.1", + "@vueuse/integrations": "^14.2.1", + "@vueuse/shared": "^14.2.1", + "colortranslator": "^5.0.0", + "consola": "^3.4.2", + "defu": "^6.1.4", + "embla-carousel-auto-height": "^8.6.0", + "embla-carousel-auto-scroll": "^8.6.0", + "embla-carousel-autoplay": "^8.6.0", + "embla-carousel-class-names": "^8.6.0", + "embla-carousel-fade": "^8.6.0", + "embla-carousel-vue": "^8.6.0", + "embla-carousel-wheel-gestures": "^8.1.0", + "fuse.js": "^7.1.0", + "hookable": "^5.5.3", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "motion-v": "^1.10.3", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "reka-ui": "2.8.2", + "scule": "^1.3.0", + "tailwind-merge": "^3.5.0", + "tailwind-variants": "^3.2.2", + "tailwindcss": "^4.2.1", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unplugin": "^3.0.0", + "unplugin-auto-import": "^21.0.0", + "unplugin-vue-components": "^31.0.0", + "vaul-vue": "0.4.1", + "vue-component-type-helpers": "^3.2.5" + }, + "bin": { + "nuxt-ui": "cli/index.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@inertiajs/vue3": "^2.0.7", + "@nuxt/content": "^3.0.0", + "joi": "^18.0.0", + "superstruct": "^2.0.0", + "tailwindcss": "^4.0.0", + "typescript": "^5.9.3", + "valibot": "^1.0.0", + "vue-router": "^4.5.0", + "yup": "^1.7.0", + "zod": "^3.24.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@inertiajs/vue3": { + "optional": true + }, + "@nuxt/content": { + "optional": true + }, + "joi": { + "optional": true + }, + "superstruct": { + "optional": true + }, + "valibot": { + "optional": true + }, + "vue-router": { + "optional": true + }, + "yup": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/@nuxtjs/color-mode": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/color-mode/-/color-mode-3.5.2.tgz", + "integrity": "sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.13.2", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "semver": "^7.6.3" + } + }, + "node_modules/@nuxtjs/color-mode/node_modules/@nuxt/kit": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.1.tgz", + "integrity": "sha512-QORZRjcuTKgo++XP1Pc2c2gqwRydkaExrIRfRI9vFsPA3AzuHVn5Gfmbv1ic8y34e78mr5DMBvJlelUaeOuajg==", + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.0", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxtjs/color-mode/node_modules/@nuxt/kit/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/@nuxtjs/color-mode/node_modules/@nuxt/kit/node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/@nuxtjs/color-mode/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "license": "MIT" + }, + "node_modules/@nuxtjs/color-mode/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/@nuxtjs/color-mode/node_modules/pkg-types/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/@nuxtjs/color-mode/node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "license": "MIT" + }, + "node_modules/@remirror/core-constants": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", + "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz", + "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.31.1", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.1.tgz", + "integrity": "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-x64": "4.2.1", + "@tailwindcss/oxide-freebsd-x64": "4.2.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-x64-musl": "4.2.1", + "@tailwindcss/oxide-wasm32-wasi": "4.2.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", + "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", + "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", + "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", + "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", + "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", + "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", + "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", + "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", + "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", + "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", + "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", + "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.1.tgz", + "integrity": "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.2.1", + "@tailwindcss/oxide": "4.2.1", + "postcss": "^8.5.6", + "tailwindcss": "4.2.1" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.1.tgz", + "integrity": "sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.1", + "@tailwindcss/oxide": "4.2.1", + "tailwindcss": "4.2.1" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.13.19", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.19.tgz", + "integrity": "sha512-/BMP7kNhzKOd7wnDeB8NrIRNLwkf5AhCYCvtfZV2GXWbBieFm/el0n6LOAXlTi6ZwHICSNnQcIxRCWHrLzDY+g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/vue-table": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/vue-table/-/vue-table-8.21.3.tgz", + "integrity": "sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.21.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "vue": ">=3.2" + } + }, + "node_modules/@tanstack/vue-virtual": { + "version": "3.13.19", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.19.tgz", + "integrity": "sha512-07Fp1TYuIziB4zIDA/moeDKHODePy3K1fN4c4VIAGnkxo1+uOvBJP7m54CoxKiQX6Q9a1dZnznrwOg9C86yvvA==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.13.19" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.0.0" + } + }, + "node_modules/@tiptap/core": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.20.0.tgz", + "integrity": "sha512-aC9aROgia/SpJqhsXFiX9TsligL8d+oeoI8W3u00WI45s0VfsqjgeKQLDLF7Tu7hC+7F02teC84SAHuup003VQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.20.0.tgz", + "integrity": "sha512-LQzn6aGtL4WXz2+rYshl/7/VnP2qJTpD7fWL96GXAzhqviPEY1bJES7poqJb3MU/gzl8VJUVzVzU1VoVfUKlbA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.20.0.tgz", + "integrity": "sha512-sQklEWiyf58yDjiHtm5vmkVjfIc/cBuSusmCsQ0q9vGYnEF1iOHKhGpvnCeEXNeqF3fiJQRlquzt/6ymle3Iwg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.20.0.tgz", + "integrity": "sha512-MDosUfs8Tj+nwg8RC+wTMWGkLJORXmbR6YZgbiX4hrc7G90Gopdd6kj6ht5/T8t7dLLaX7N0+DEHdUEPGED7dw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.20.0.tgz", + "integrity": "sha512-OcKMeopBbqWzhSi6o8nNz0aayogg1sfOAhto3NxJu3Ya32dwBFqmHXSYM6uW4jOphNvVPyjiq9aNRh3qTdd1dw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.20.0.tgz", + "integrity": "sha512-TYDWFeSQ9umiyrqsT6VecbuhL8XIHkUhO+gEk0sVvH67ZLwjFDhAIIgWIr1/dbIGPcvMZM19E7xUUhAdIaXaOQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.20.0.tgz", + "integrity": "sha512-lBbmNek14aCjrHcBcq3PRqWfNLvC6bcRa2Osc6e/LtmXlcpype4f6n+Yx+WZ+f2uUh0UmDRCz7BEyUETEsDmlQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-collaboration": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-3.20.0.tgz", + "integrity": "sha512-JItmI4U0i4kqorO114u24hM9k945IdaQ6Uc2DEtPBFFuS8cepJf2zw+ulAT1kAx6ZRiNvNpT9M7w+J0mWRn+Sg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0", + "@tiptap/y-tiptap": "^3.0.2", + "yjs": "^13" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.20.0.tgz", + "integrity": "sha512-oJfLIG3vAtZo/wg29WiBcyWt22KUgddpP8wqtCE+kY5Dw8znLR9ehNmVWlSWJA5OJUMO0ntAHx4bBT+I2MBd5w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-drag-handle": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-drag-handle/-/extension-drag-handle-3.20.0.tgz", + "integrity": "sha512-CzLRyxZe5QddQey0RUWJUvICyhuRnU/jvzMIYlFvMxM7W97sZ2ggk0cRThlRt2pRUoSr8mmmUnobiorpISmksA==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.6.13" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/extension-collaboration": "^3.20.0", + "@tiptap/extension-node-range": "^3.20.0", + "@tiptap/pm": "^3.20.0", + "@tiptap/y-tiptap": "^3.0.2" + } + }, + "node_modules/@tiptap/extension-drag-handle-vue-3": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-drag-handle-vue-3/-/extension-drag-handle-vue-3-3.20.0.tgz", + "integrity": "sha512-Jx6LHYRI5uRaJVNQGkQsTFQkAM84rYQh3Q+WBePhGF4yPBUJQFn7Nv+5fQhKKV3A5PVQ6kTAjvW6SSUcD6ON8A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-drag-handle": "^3.20.0", + "@tiptap/pm": "^3.20.0", + "@tiptap/vue-3": "^3.20.0", + "vue": "^3.0.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.20.0.tgz", + "integrity": "sha512-d+cxplRlktVgZPwatnc34IArlppM0IFKS1J5wLk+ba1jidizsbMVh45tP/BTK2flhyfRqcNoB5R0TArhUpbkNQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extensions": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.20.0.tgz", + "integrity": "sha512-rYs4Bv5pVjqZ/2vvR6oe7ammZapkAwN51As/WDbemvYDjfOGRqK58qGauUjYZiDzPOEIzI2mxGwsZ4eJhPW4Ig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@floating-ui/dom": "^1.0.0", + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.20.0.tgz", + "integrity": "sha512-P/LasfvG9/qFq43ZAlNbAnPnXC+/RJf49buTrhtFvI9Zg0+Lbpjx1oh6oMHB19T88Y28KtrckfFZ8aTSUWDq6w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extensions": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.20.0.tgz", + "integrity": "sha512-rqvhMOw4f+XQmEthncbvDjgLH6fz8L9splnKZC7OeS0eX8b0qd7+xI1u5kyxF3KA2Z0BnigES++jjWuecqV6mA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.20.0.tgz", + "integrity": "sha512-JgJhurnCe3eN6a0lEsNQM/46R1bcwzwWWZEFDSb1P9dR8+t1/5v7cMZWsSInpD7R4/74iJn0+M5hcXLwCmBmYA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.20.0.tgz", + "integrity": "sha512-6uvcutFMv+9wPZgptDkbRDjAm3YVxlibmkhWD5GuaWwS9L/yUtobpI3GycujRSUZ8D3q6Q9J7LqpmQtQRTalWA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-image": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-3.20.0.tgz", + "integrity": "sha512-0t7HYncV0kYEQS79NFczxdlZoZ8zu8X4VavDqt+mbSAUKRq3gCvgtZ5Zyd778sNmtmbz3arxkEYMIVou2swD0g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.20.0.tgz", + "integrity": "sha512-/DhnKQF8yN8RxtuL8abZ28wd5281EaGoE2Oha35zXSOF1vNYnbyt8Ymkv/7u1BcWEWTvRPgaju0YCGXisPRLYw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-link": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.20.0.tgz", + "integrity": "sha512-qI/5A+R0ZWBxo/8HxSn1uOyr7odr3xHBZ/gzOR1GUJaZqjlJxkWFX0RtXMbLKEGEvT25o345cF7b0wFznEh8qA==", + "license": "MIT", + "dependencies": { + "linkifyjs": "^4.3.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-list": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.20.0.tgz", + "integrity": "sha512-+V0/gsVWAv+7vcY0MAe6D52LYTIicMSHw00wz3ISZgprSb2yQhJ4+4gurOnUrQ4Du3AnRQvxPROaofwxIQ66WQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.20.0.tgz", + "integrity": "sha512-qEtjaaGPuqaFB4VpLrGDoIe9RHnckxPfu6d3rc22ap6TAHCDyRv05CEyJogqccnFceG/v5WN4znUBER8RWnWHA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-list-keymap": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.20.0.tgz", + "integrity": "sha512-Z4GvKy04Ms4cLFN+CY6wXswd36xYsT2p/YL0V89LYFMZTerOeTjFYlndzn6svqL8NV1PRT5Diw4WTTxJSmcJPA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-mention": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-mention/-/extension-mention-3.20.0.tgz", + "integrity": "sha512-wUjsq7Za0JJdJzrGNG+g8nrCpek/85GQ0Rm9bka3PynIVRwus+xQqW6IyWVPBdl1BSkrbgMAUqtrfoh1ymznbg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0", + "@tiptap/suggestion": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-node-range": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-node-range/-/extension-node-range-3.20.0.tgz", + "integrity": "sha512-XeKKTV88VuJ4Mh0Rxvc/PPzG76cb44sE+rB4u0J/ms63R/WFTm6yJQlCgUVGnGeHleSlrWuZY8gGSuoljmQzqg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.20.0.tgz", + "integrity": "sha512-jVKnJvrizLk7etwBMfyoj6H2GE4M+PD4k7Bwp6Bh1ohBWtfIA1TlngdS842Mx5i1VB2e3UWIwr8ZH46gl6cwMA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.20.0.tgz", + "integrity": "sha512-mM99zK4+RnEXIMCv6akfNATAs0Iija6FgyFA9J9NZ6N4o8y9QiNLLa6HjLpAC+W+VoCgQIekyoF/Q9ftxmAYDQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-placeholder": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-3.20.0.tgz", + "integrity": "sha512-ZhYD3L5m16ydSe2z8vqz+RdtAG/iOQaFHHedFct70tKRoLqi2ajF5kgpemu8DwpaRTcyiCN4G99J/+MqehKNjQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extensions": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.20.0.tgz", + "integrity": "sha512-0vcTZRRAiDfon3VM1mHBr9EFmTkkUXMhm0Xtdtn0bGe+sIqufyi+hUYTEw93EQOD9XNsPkrud6jzQNYpX2H3AQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.20.0.tgz", + "integrity": "sha512-tf8bE8tSaOEWabCzPm71xwiUhyMFKqY9jkP5af3Kr1/F45jzZFIQAYZooHI/+zCHRrgJ99MQHKHe1ZNvODrKHQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extension-underline": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.20.0.tgz", + "integrity": "sha512-LzNXuy2jwR/y+ymoUqC72TiGzbOCjioIjsDu0MNYpHuHqTWPK5aV9Mh0nbZcYFy/7fPlV1q0W139EbJeYBZEAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0" + } + }, + "node_modules/@tiptap/extensions": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.20.0.tgz", + "integrity": "sha512-HIsXX942w3nbxEQBlMAAR/aa6qiMBEP7CsSMxaxmTIVAmW35p6yUASw6GdV1u0o3lCZjXq2OSRMTskzIqi5uLg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/markdown": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/markdown/-/markdown-3.20.0.tgz", + "integrity": "sha512-3vUxs8tsVIf/KWKLWjFsTqrjuaTYJY9rawDL5sio9NwlqFWDuWpHEVJcqbQXJUrgQSh12AZoTKyfgiEqkAGI3Q==", + "license": "MIT", + "dependencies": { + "marked": "^17.0.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.20.0.tgz", + "integrity": "sha512-jn+2KnQZn+b+VXr8EFOJKsnjVNaA4diAEr6FOazupMt8W8ro1hfpYtZ25JL87Kao/WbMze55sd8M8BDXLUKu1A==", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.3.0", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.24.1", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.5.0", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.38.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.20.0.tgz", + "integrity": "sha512-W4+1re35pDNY/7rpXVg+OKo/Fa4Gfrn08Bq3E3fzlJw6gjE3tYU8dY9x9vC2rK9pd9NOp7Af11qCFDaWpohXkw==", + "license": "MIT", + "dependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/extension-blockquote": "^3.20.0", + "@tiptap/extension-bold": "^3.20.0", + "@tiptap/extension-bullet-list": "^3.20.0", + "@tiptap/extension-code": "^3.20.0", + "@tiptap/extension-code-block": "^3.20.0", + "@tiptap/extension-document": "^3.20.0", + "@tiptap/extension-dropcursor": "^3.20.0", + "@tiptap/extension-gapcursor": "^3.20.0", + "@tiptap/extension-hard-break": "^3.20.0", + "@tiptap/extension-heading": "^3.20.0", + "@tiptap/extension-horizontal-rule": "^3.20.0", + "@tiptap/extension-italic": "^3.20.0", + "@tiptap/extension-link": "^3.20.0", + "@tiptap/extension-list": "^3.20.0", + "@tiptap/extension-list-item": "^3.20.0", + "@tiptap/extension-list-keymap": "^3.20.0", + "@tiptap/extension-ordered-list": "^3.20.0", + "@tiptap/extension-paragraph": "^3.20.0", + "@tiptap/extension-strike": "^3.20.0", + "@tiptap/extension-text": "^3.20.0", + "@tiptap/extension-underline": "^3.20.0", + "@tiptap/extensions": "^3.20.0", + "@tiptap/pm": "^3.20.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/suggestion": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.20.0.tgz", + "integrity": "sha512-OA9Fe+1Q/Ex0ivTcpRcVFiLnNsVdIBmiEoctt/gu4H2ayCYmZ906veioXNdc1m/3MtVVUIuEnvwwsrOZXlfDEw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0" + } + }, + "node_modules/@tiptap/vue-3": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-3.20.0.tgz", + "integrity": "sha512-u8UfDKsbIOF+mVsXwJ946p1jfrLGFUyqp9i/DAeGGg2I85DPOkhZgz67bUPVXkpossoEk+jKCkRN0eBHl9+eZQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "optionalDependencies": { + "@tiptap/extension-bubble-menu": "^3.20.0", + "@tiptap/extension-floating-menu": "^3.20.0" + }, + "peerDependencies": { + "@floating-ui/dom": "^1.0.0", + "@tiptap/core": "^3.20.0", + "@tiptap/pm": "^3.20.0", + "vue": "^3.0.0" + } + }, + "node_modules/@tiptap/y-tiptap": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@tiptap/y-tiptap/-/y-tiptap-3.0.2.tgz", + "integrity": "sha512-flMn/YW6zTbc6cvDaUPh/NfLRTXDIqgpBUkYzM74KA1snqQwhOMjnRcnpu4hDFrTnPO6QGzr99vRyXEA7M44WA==", + "license": "MIT", + "peer": true, + "dependencies": { + "lib0": "^0.2.100" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.7.1", + "prosemirror-state": "^1.2.3", + "prosemirror-view": "^1.9.10", + "y-protocols": "^1.0.1", + "yjs": "^13.5.38" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, + "node_modules/@unhead/vue": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.1.10.tgz", + "integrity": "sha512-VP78Onh2HNezLPfhYjfHqn4dxlcQsE6PJgTTs61NksO/thvilNswtgBq0N0MWCLtn43N5akEPGW2y2zxM3PWgQ==", + "license": "MIT", + "dependencies": { + "hookable": "^6.0.1", + "unhead": "2.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=3.5.18" + } + }, + "node_modules/@unhead/vue/node_modules/hookable": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.0.1.tgz", + "integrity": "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==", + "license": "MIT" + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz", + "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/shared": "3.5.29", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@vue/compiler-core/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", + "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz", + "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/compiler-core": "3.5.29", + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.29.tgz", + "integrity": "sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.29.tgz", + "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.29.tgz", + "integrity": "sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.29.tgz", + "integrity": "sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.29", + "@vue/runtime-core": "3.5.29", + "@vue/shared": "3.5.29", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.29.tgz", + "integrity": "sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29" + }, + "peerDependencies": { + "vue": "3.5.29" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", + "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.2.1.tgz", + "integrity": "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "14.2.1", + "@vueuse/shared": "14.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/integrations": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-14.2.1.tgz", + "integrity": "sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==", + "license": "MIT", + "dependencies": { + "@vueuse/core": "14.2.1", + "@vueuse/shared": "14.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7 || ^8", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7 || ^8", + "vue": "^3.5.0" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.2.1.tgz", + "integrity": "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.2.1.tgz", + "integrity": "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/c12": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.3.tgz", + "integrity": "sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==", + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "confbox": "^0.2.2", + "defu": "^6.1.4", + "dotenv": "^17.2.3", + "exsolve": "^1.0.8", + "giget": "^2.0.0", + "jiti": "^2.6.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.0.0", + "pkg-types": "^2.3.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "*" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/c12/node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, + "node_modules/chart.js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/colortranslator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/colortranslator/-/colortranslator-5.0.0.tgz", + "integrity": "sha512-Z3UPUKasUVDFCDYAjP2fmlVRf1jFHJv1izAmPjiOa0OCIw1W7iC8PZ2GsoDa8uZv+mKyWopxxStT9q05+27h7w==", + "license": "Apache-2.0" + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "license": "MIT" + }, + "node_modules/embla-carousel-auto-height": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-auto-height/-/embla-carousel-auto-height-8.6.0.tgz", + "integrity": "sha512-/HrJQOEM6aol/oF33gd2QlINcXy3e19fJWvHDuHWp2bpyTa+2dm9tVVJak30m2Qy6QyQ6Fc8DkImtv7pxWOJUQ==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-auto-scroll": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-auto-scroll/-/embla-carousel-auto-scroll-8.6.0.tgz", + "integrity": "sha512-WT9fWhNXFpbQ6kP+aS07oF5IHYLZ1Dx4DkwgCY8Hv2ZyYd2KMCPfMV1q/cA3wFGuLO7GMgKiySLX90/pQkcOdQ==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-autoplay": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.6.0.tgz", + "integrity": "sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-class-names": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-class-names/-/embla-carousel-class-names-8.6.0.tgz", + "integrity": "sha512-l1hm1+7GxQ+zwdU2sea/LhD946on7XO2qk3Xq2XWSwBaWfdgchXdK567yzLtYSHn4sWYdiX+x4nnaj+saKnJkw==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-fade": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.6.0.tgz", + "integrity": "sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-vue": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-vue/-/embla-carousel-vue-8.6.0.tgz", + "integrity": "sha512-v8UO5UsyLocZnu/LbfQA7Dn2QHuZKurJY93VUmZYP//QRWoCWOsionmvLLAlibkET3pGPs7++03VhJKbWD7vhQ==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "vue": "^3.2.37" + } + }, + "node_modules/embla-carousel-wheel-gestures": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/embla-carousel-wheel-gestures/-/embla-carousel-wheel-gestures-8.1.0.tgz", + "integrity": "sha512-J68jkYrxbWDmXOm2n2YHl+uMEXzkGSKjWmjaEgL9xVvPb3HqVmg6rJSKfI3sqIDVvm7mkeTy87wtG/5263XqHQ==", + "license": "MIT", + "dependencies": { + "wheel-gestures": "^2.2.5" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "embla-carousel": "^8.0.0 || ~8.0.0-rc03" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", + "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errx": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/errx/-/errx-0.1.0.tgz", + "integrity": "sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fontaine": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/fontaine/-/fontaine-0.8.0.tgz", + "integrity": "sha512-eek1GbzOdWIj9FyQH/emqW1aEdfC3lYRCHepzwlFCm5T77fBSRSyNRKE6/antF1/B1M+SfJXVRQTY9GAr7lnDg==", + "license": "MIT", + "dependencies": { + "@capsizecss/unpack": "^4.0.0", + "css-tree": "^3.1.0", + "magic-regexp": "^0.10.0", + "magic-string": "^0.30.21", + "pathe": "^2.0.3", + "ufo": "^1.6.1", + "unplugin": "^2.3.10" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/fontaine/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/fontkitten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.2.tgz", + "integrity": "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==", + "license": "MIT", + "dependencies": { + "tiny-inflate": "^1.0.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fontless": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fontless/-/fontless-0.2.1.tgz", + "integrity": "sha512-mUWZ8w91/mw2KEcZ6gHNoNNmsAq9Wiw2IypIux5lM03nhXm+WSloXGUNuRETNTLqZexMgpt7Aj/v63qqrsWraQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.4.2", + "css-tree": "^3.1.0", + "defu": "^6.1.4", + "esbuild": "^0.27.0", + "fontaine": "0.8.0", + "jiti": "^2.6.1", + "lightningcss": "^1.30.2", + "magic-string": "^0.30.21", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "ufo": "^1.6.1", + "unifont": "^0.7.4", + "unstorage": "^1.17.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/framer-motion": { + "version": "12.34.4", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.34.4.tgz", + "integrity": "sha512-q1PwNhc1XJ3qYG7nc9+pEU5P3tnjB6Eh9vv5gGzy61nedDLB4+xk5peMCWhKM0Zn6sfhgunf/q9n0UgCoyKOBA==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.34.3", + "motion-utils": "^12.29.2", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fuse.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/giget": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.6.0", + "pathe": "^2.0.3" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/h3": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz", + "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.5", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "license": "MIT" + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", + "license": "MIT", + "peer": true, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "license": "MIT" + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/knitwork": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.3.0.tgz", + "integrity": "sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==", + "license": "MIT" + }, + "node_modules/lib0": { + "version": "0.2.117", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.117.tgz", + "integrity": "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==", + "license": "MIT", + "peer": true, + "dependencies": { + "isomorphic.js": "^0.2.4" + }, + "bin": { + "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js", + "0gentesthtml": "bin/gentesthtml.js", + "0serve": "bin/0serve.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, + "node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/linkifyjs": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", + "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", + "license": "MIT" + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/magic-regexp": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/magic-regexp/-/magic-regexp-0.10.0.tgz", + "integrity": "sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==", + "license": "MIT", + "dependencies": { + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12", + "mlly": "^1.7.2", + "regexp-tree": "^0.1.27", + "type-level-regexp": "~0.1.17", + "ufo": "^1.5.4", + "unplugin": "^2.0.0" + } + }, + "node_modules/magic-regexp/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/markdown-it": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/marked": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.3.tgz", + "integrity": "sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/motion-dom": { + "version": "12.34.3", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.34.3.tgz", + "integrity": "sha512-sYgFe+pR9aIM7o4fhs2aXtOI+oqlUd33N9Yoxcgo1Fv7M20sRkHtCmzE/VRNIcq7uNJ+qio+Xubt1FXH3pQ+eQ==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.29.2" + } + }, + "node_modules/motion-utils": { + "version": "12.29.2", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz", + "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==", + "license": "MIT" + }, + "node_modules/motion-v": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/motion-v/-/motion-v-1.10.3.tgz", + "integrity": "sha512-9Ewo/wwGv7FO3PqYJpllBF/Efc7tbeM1iinVrM73s0RUQrnXHwMZCaRX98u4lu0PQCrZghPPfCsQ14pWKIEbnQ==", + "license": "MIT", + "dependencies": { + "framer-motion": "^12.25.0", + "hey-listen": "^1.0.8", + "motion-dom": "^12.23.23" + }, + "peerDependencies": { + "@vueuse/core": ">=10.0.0", + "vue": ">=3.0.0" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz", + "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==", + "license": "MIT", + "dependencies": { + "citty": "^0.2.0", + "pathe": "^2.0.3", + "tinyexec": "^1.0.2" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/nypm/node_modules/citty": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.1.tgz", + "integrity": "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==", + "license": "MIT" + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "license": "MIT" + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prosemirror-changeset": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.4.0.tgz", + "integrity": "sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==", + "license": "MIT", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", + "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", + "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.0.tgz", + "integrity": "sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.5.0.tgz", + "integrity": "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", + "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", + "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.4.tgz", + "integrity": "sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw==", + "license": "MIT", + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.3.0.tgz", + "integrity": "sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg==", + "license": "MIT", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.25.4", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", + "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", + "license": "MIT", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", + "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", + "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.5.tgz", + "integrity": "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.2.3", + "prosemirror-model": "^1.25.4", + "prosemirror-state": "^1.4.4", + "prosemirror-transform": "^1.10.5", + "prosemirror-view": "^1.41.4" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", + "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.11.0.tgz", + "integrity": "sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.41.6", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.6.tgz", + "integrity": "sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/rc9": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-3.0.0.tgz", + "integrity": "sha512-MGOue0VqscKWQ104udASX/3GYDcKyPI4j4F8gu/jHHzglpmy9a/anZK3PNe8ug6aZFl+9GxLtdhe3kVZuMaQbA==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.5" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/reka-ui": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/reka-ui/-/reka-ui-2.8.2.tgz", + "integrity": "sha512-8lTKcJhmG+D3UyJxhBnNnW/720sLzm0pbA9AC1MWazmJ5YchJAyTSl+O00xP/kxBmEN0fw5JqWVHguiFmsGjzA==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.6.13", + "@floating-ui/vue": "^1.1.6", + "@internationalized/date": "^3.5.0", + "@internationalized/number": "^3.5.0", + "@tanstack/vue-virtual": "^3.12.0", + "@vueuse/core": "^14.1.0", + "@vueuse/shared": "^14.1.0", + "aria-hidden": "^1.2.4", + "defu": "^6.1.4", + "ohash": "^2.0.11" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/zernonia" + }, + "peerDependencies": { + "vue": ">= 3.2.0" + } + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/tailwind-merge": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", + "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz", + "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==", + "license": "MIT", + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwind-merge": ">=3.0.0", + "tailwindcss": "*" + }, + "peerDependenciesMeta": { + "tailwind-merge": { + "optional": true + } + } + }, + "node_modules/tailwindcss": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz", + "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-level-regexp": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/type-level-regexp/-/type-level-regexp-0.1.17.tgz", + "integrity": "sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/unctx": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.5.0.tgz", + "integrity": "sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21", + "unplugin": "^2.3.11" + } + }, + "node_modules/unctx/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unhead": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.1.10.tgz", + "integrity": "sha512-We8l9uNF8zz6U8lfQaVG70+R/QBfQx1oPIgXin4BtZnK2IQpz6yazQ0qjMNVBDw2ADgF2ea58BtvSK+XX5AS7g==", + "license": "MIT", + "dependencies": { + "hookable": "^6.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/unhead/node_modules/hookable": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.0.1.tgz", + "integrity": "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==", + "license": "MIT" + }, + "node_modules/unifont": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.4.tgz", + "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.1.0", + "ofetch": "^1.5.1", + "ohash": "^2.0.11" + } + }, + "node_modules/unimport": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-5.7.0.tgz", + "integrity": "sha512-njnL6sp8lEA8QQbZrt+52p/g4X0rw3bnGGmUcJnt1jeG8+iiqO779aGz0PirCtydAIVcuTBRlJ52F0u46z309Q==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "pkg-types": "^2.3.0", + "scule": "^1.3.0", + "strip-literal": "^3.1.0", + "tinyglobby": "^0.2.15", + "unplugin": "^2.3.11", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unplugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.0.0.tgz", + "integrity": "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/unplugin-auto-import": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-21.0.0.tgz", + "integrity": "sha512-vWuC8SwqJmxZFYwPojhOhOXDb5xFhNNcEVb9K/RFkyk/3VnfaOjzitWN7v+8DEKpMjSsY2AEGXNgt6I0yQrhRQ==", + "license": "MIT", + "dependencies": { + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "picomatch": "^4.0.3", + "unimport": "^5.6.0", + "unplugin": "^2.3.11", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^4.0.0", + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-import/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unplugin-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/unplugin-vue-components": { + "version": "31.0.0", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-31.0.0.tgz", + "integrity": "sha512-4ULwfTZTLuWJ7+S9P7TrcStYLsSRkk6vy2jt/WTfgUEUb0nW9//xxmrfhyHUEVpZ2UKRRwfRb8Yy15PDbVZf+Q==", + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "obug": "^2.1.1", + "picomatch": "^4.0.3", + "tinyglobby": "^0.2.15", + "unplugin": "^2.3.11", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.2 || ^4.0.0", + "vue": "^3.0.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unstorage": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", + "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.5", + "lru-cache": "^11.2.0", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/untyped": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/untyped/-/untyped-2.0.0.tgz", + "integrity": "sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "defu": "^6.1.4", + "jiti": "^2.4.2", + "knitwork": "^1.2.0", + "scule": "^1.3.0" + }, + "bin": { + "untyped": "dist/cli.mjs" + } + }, + "node_modules/vaul-vue": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/vaul-vue/-/vaul-vue-0.4.1.tgz", + "integrity": "sha512-A6jOWOZX5yvyo1qMn7IveoWN91mJI5L3BUKsIwkg6qrTGgHs1Sb1JF/vyLJgnbN1rH4OOOxFbtqL9A46bOyGUQ==", + "dependencies": { + "@vueuse/core": "^10.8.0", + "reka-ui": "^2.0.0", + "vue": "^3.4.5" + }, + "peerDependencies": { + "reka-ui": "^2.0.0", + "vue": "^3.3.0" + } + }, + "node_modules/vaul-vue/node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, + "node_modules/vaul-vue/node_modules/@vueuse/core": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.11.1.tgz", + "integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/metadata": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.11.1.tgz", + "integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/shared": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.11.1.tgz", + "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vaul-vue/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.29.tgz", + "integrity": "sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-sfc": "3.5.29", + "@vue/runtime-dom": "3.5.29", + "@vue/server-renderer": "3.5.29", + "@vue/shared": "3.5.29" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-chartjs": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.3.tgz", + "integrity": "sha512-jqxtL8KZ6YJ5NTv6XzrzLS7osyegOi28UGNZW0h9OkDL7Sh1396ht4Dorh04aKrl2LiSalQ84WtqiG0RIJb0tA==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "vue": "^3.0.0-0 || ^2.7.0" + } + }, + "node_modules/vue-component-type-helpers": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.2.5.tgz", + "integrity": "sha512-tkvNr+bU8+xD/onAThIe7CHFvOJ/BO6XCOrxMzeytJq40nTfpGDJuVjyCM8ccGZKfAbGk2YfuZyDMXM56qheZQ==", + "license": "MIT" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "license": "MIT" + }, + "node_modules/wheel-gestures": { + "version": "2.2.48", + "resolved": "https://registry.npmjs.org/wheel-gestures/-/wheel-gestures-2.2.48.tgz", + "integrity": "sha512-f+Gy33Oa5Z14XY9679Zze+7VFhbsQfBFXodnU2x589l4kxGM9L5Y8zETTmcMR5pWOPQyRv4Z0lNax6xCO0NSlA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/y-protocols": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.7.tgz", + "integrity": "sha512-YSVsLoXxO67J6eE/nV4AtFtT3QEotZf5sK5BHxFBXso7VDUT3Tx07IfA6hsu5Q5OmBdMkQVmFZ9QOA7fikWvnw==", + "license": "MIT", + "peer": true, + "dependencies": { + "lib0": "^0.2.85" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + }, + "peerDependencies": { + "yjs": "^13.0.0" + } + }, + "node_modules/yjs": { + "version": "13.6.29", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.29.tgz", + "integrity": "sha512-kHqDPdltoXH+X4w1lVmMtddE3Oeqq48nM40FD5ojTd8xYhQpzIDcfE2keMSU5bAgRPJBe225WTUdyUgj1DtbiQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "lib0": "^0.2.99" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..95e04f5 --- /dev/null +++ b/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "@nuxt/ui": "^4.5.1", + "chart.js": "^4.5.1", + "vue-chartjs": "^5.3.3" + } +} diff --git a/taskfiles/build.yml b/taskfiles/build.yml new file mode 100644 index 0000000..68198c7 --- /dev/null +++ b/taskfiles/build.yml @@ -0,0 +1,11 @@ +version: "3" + +tasks: + + prod: + desc: Production build + aliases: [b] + cmds: + - bun --cwd=./bo run build + - templ generate + - go build -tags embed -o {{.BUILD_DIR}}/{{.PROJECT}} ./app/cmd/main.go \ No newline at end of file diff --git a/taskfiles/db.yml b/taskfiles/db.yml new file mode 100644 index 0000000..84295b9 --- /dev/null +++ b/taskfiles/db.yml @@ -0,0 +1,41 @@ +version: "3" + +tasks: + + reset: + desc: Drop and recreate database + cmds: + - | + docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d postgres -c \ + \"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='{{.DB_NAME}}' AND pid<>pg_backend_pid();\"" + - | + docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d postgres -c \"DROP DATABASE IF EXISTS {{.DB_NAME}};\"" + - | + docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d postgres -c \"CREATE DATABASE {{.DB_NAME}};\"" + + + restore: + desc: Restore DB from file + aliases: [r] + preconditions: + - sh: '[ -n "{{index .CLI_ARGS_LIST 0}}" ]' + msg: "Usage: task db:restore -- dump.sql" + cmds: + - task db:reset + - | + cat {{index .CLI_ARGS_LIST 0}} | docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d {{.DB_NAME}}" + - task db:migrate + + + migrate: + desc: Apply SQL migrations + aliases: [m] + cmds: + - | + sed '/-- +goose Down/,$d' i18n/migrations/20260302163100_routes.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}} + sed '/-- +goose Down/,$d' i18n/migrations/20260302163122_create_tables.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}} + sed '/-- +goose Down/,$d' i18n/migrations/20260302163152_translations_backoffice.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}} + sed '/-- +goose Down/,$d' i18n/migrations/20260302163157_translations_backend.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}} + + + \ No newline at end of file diff --git a/taskfiles/dev.yml b/taskfiles/dev.yml new file mode 100644 index 0000000..27054b8 --- /dev/null +++ b/taskfiles/dev.yml @@ -0,0 +1,17 @@ +version: "3" + +tasks: + + run: + desc: Run frontend + backend in watch mode + aliases: [d] + cmds: + - task --parallel dev:bo dev:go + + bo: + cmds: + - cd bo && bun run dev + + go: + cmds: + - EMAIL_SMTP_PORT={{.EMAIL_SMTP_PORT}} EMAIL_SMTP_HOST={{.EMAIL_SMTP_HOST}} air \ No newline at end of file diff --git a/taskfiles/docker.yml b/taskfiles/docker.yml new file mode 100644 index 0000000..3225c1c --- /dev/null +++ b/taskfiles/docker.yml @@ -0,0 +1,33 @@ +version: "3" + +tasks: + + up: + desc: Start containers + aliases: [du] + cmds: + - printf "%s\n" "{{.DOCKER_CONFIG}}" | docker-compose -f - -p {{.PROJECT}} up -d + + down: + desc: Stop containers + aliases: [dd] + cmds: + - docker compose -p {{.PROJECT}} down + + restart: + desc: Restart containers + aliases: [dr] + cmds: + - docker compose -p {{.PROJECT}} restart + + logs: + desc: Tail logs + aliases: [dl] + cmds: + - docker compose -p {{.PROJECT}} logs -f + + clean: + desc: Remove containers and volumes + aliases: [dc] + cmds: + - docker compose -p {{.PROJECT}} down -v \ No newline at end of file diff --git a/taskfiles/gitea.yml b/taskfiles/gitea.yml new file mode 100644 index 0000000..6aa780a --- /dev/null +++ b/taskfiles/gitea.yml @@ -0,0 +1,47 @@ +version: "3" + +tasks: + + pull: + desc: Pull remote Gitea DB into local DB + aliases: [gp] + silent: true + cmds: + - task db:reset + - | + ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} \ + "docker exec {{.GITEA_SERVICE}} pg_dump -U {{.GITEA_USER}} {{.GITEA_DB}}" | docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d {{.DB_NAME}}" + + + dump: + desc: Dump remote Gitea DB to file + aliases: [gd] + silent: true + cmds: + - | + ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} "docker exec {{.GITEA_SERVICE}} pg_dump -U {{.GITEA_USER}} {{.GITEA_DB}}" > {{.DUMP_FILE_NAME}} + + + gitea_pull_db_to_file_ma_al_pl: + desc: Pull remote Gitea DB and upload to file.ma-al.pl + aliases: [rdbtfmpl] + silent: true + vars: + SERVER: https://file.ma-al.pl + TARGET_DIR: maal_internal/timetracker/dumps + TMP_DIR: /tmp + TOKEN: + sh: | + curl -s -u "{{.FILE_MAAL_PL_USER}}:{{.FILE_MAAL_PL_PASSWORD}}" "{{.SERVER}}/api/v2/user/token" | jq -r .access_token + preconditions: + - sh: '[ -n "{{.FILE_MAAL_PL_USER}}" ]' + msg: "Missing FILE_MAAL_PL_USER in .env" + - sh: '[ -n "{{.FILE_MAAL_PL_PASSWORD}}" ]' + msg: "Missing FILE_MAAL_PL_PASSWORD in .env" + cmds: + - | + ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} "docker exec {{.GITEA_REMOTE_SERVICE}} pg_dump -U {{.GITEA_REMOTE_DB_USER}} {{.GITEA_REMOTE_DB_NAME}}" > {{.TMP_DIR}}/{{.DUMP_FILE_NAME}} + - > + curl -X POST "{{.SERVER}}/api/v2/user/files/upload?path={{.TARGET_DIR}}/{{.DUMP_FILE_NAME}}&mkdir_parents=true" -H "Authorization: Bearer {{.TOKEN}}" -H "Content-Type: application/x-tar" --data-binary "@{{.TMP_DIR}}/{{.DUMP_FILE_NAME}}" + - | + rm -f {{.TMP_DIR}}/{{.DUMP_FILE_NAME}} \ No newline at end of file diff --git a/taskfiles/i18n.yml b/taskfiles/i18n.yml new file mode 100644 index 0000000..6f43f9c --- /dev/null +++ b/taskfiles/i18n.yml @@ -0,0 +1,19 @@ +version: "3" + +tasks: + + collect: + desc: Collect translation keys + aliases: [c] + cmds: + - cd i18n && go-extractor -input ../app -config config_i18n.yaml -save-db + - cd i18n && vue-extractor -input ../bo/src -config config_i18n.yaml -save-db + + + dump: + desc: Dump translations + aliases: [d] + cmds: + - cd i18n && go-extractor -input ../app -config config_i18n.yaml -dump ./migrations/20260302163157_translations_backend.sql + - cd i18n && vue-extractor -input ../bo/src -config config_i18n.yaml -dump ./migrations/20260302163152_translations_backoffice.sql + \ No newline at end of file diff --git a/taskfiles/templates.yml b/taskfiles/templates.yml new file mode 100644 index 0000000..b3579af --- /dev/null +++ b/taskfiles/templates.yml @@ -0,0 +1,16 @@ +version: "3" + +tasks: + + watch: + desc: Watch and compile templates + aliases: [w] + cmds: + - templ generate -path app/templ -watch + + build: + desc: Compile templates + aliases: [b] + cmds: + - templ generate -path app/templ + \ No newline at end of file diff --git a/tmp/build-errors.log b/tmp/build-errors.log new file mode 100644 index 0000000..d55b5e0 --- /dev/null +++ b/tmp/build-errors.log @@ -0,0 +1 @@ +exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 \ No newline at end of file diff --git a/tmp/gitea_2026_03_02__13_48_45.sql b/tmp/gitea_2026_03_02__13_48_45.sql new file mode 100644 index 0000000..e69de29 diff --git a/tmp/main b/tmp/main new file mode 100755 index 0000000..cffa105 Binary files /dev/null and b/tmp/main differ