up
This commit is contained in:
+17
-11
@@ -1,17 +1,23 @@
|
||||
# ---- Build stage ----
|
||||
FROM node:22-alpine AS build
|
||||
|
||||
# ---- Frontend build ----
|
||||
FROM node:22-alpine AS frontend-build
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
COPY package.json pnpm-lock.yaml .npmrc ./
|
||||
RUN corepack enable && corepack prepare pnpm@10 --activate && pnpm install
|
||||
|
||||
COPY . .
|
||||
RUN pnpm build
|
||||
|
||||
# ---- Serve stage ----
|
||||
FROM nginx:alpine
|
||||
# ---- Backend runtime ----
|
||||
FROM python:3.11-slim
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=build /app/dist /usr/share/nginx/html
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends gcc \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
EXPOSE 3015
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
COPY backend/requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY backend/ .
|
||||
COPY --from=frontend-build /app/dist ./dist
|
||||
|
||||
EXPOSE 8000
|
||||
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
||||
+8
-1
@@ -1,5 +1,7 @@
|
||||
import os
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from contextlib import asynccontextmanager
|
||||
from dotenv import load_dotenv
|
||||
|
||||
@@ -15,7 +17,7 @@ async def lifespan(app: FastAPI):
|
||||
yield
|
||||
|
||||
|
||||
app = FastAPI(title="A股走势追踪 API", version="1.0.0", lifespan=lifespan)
|
||||
app = FastAPI(title="AUV API", version="1.0.0", lifespan=lifespan)
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
@@ -29,3 +31,8 @@ app.include_router(stock.router, prefix="/api/stock")
|
||||
app.include_router(collections.router, prefix="/api/collections")
|
||||
app.include_router(shares.router, prefix="/api/share")
|
||||
app.include_router(sectors.router, prefix="/api/sectors")
|
||||
|
||||
# 生产模式:后端同时托管前端静态文件
|
||||
dist_path = os.path.join(os.path.dirname(__file__), "dist")
|
||||
if os.path.isdir(dist_path):
|
||||
app.mount("/", StaticFiles(directory=dist_path, html=True), name="static")
|
||||
|
||||
+7
-30
@@ -1,24 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# ============================================
|
||||
# 多架构构建 & 推送脚本
|
||||
# 用法:
|
||||
# DOCKER_USER=yourname ./buildx-push.sh
|
||||
# DOCKER_USER=yourname VERSION=v1.0.0 ./buildx-push.sh
|
||||
# ============================================
|
||||
|
||||
DOCKER_USER="${DOCKER_USER:-DOCKER_USER}"
|
||||
DOCKER_USER="${DOCKER_USER:-mirrors2}"
|
||||
VERSION="${VERSION:-$(git describe --tags --always 2>/dev/null || echo latest)}"
|
||||
PLATFORMS="linux/amd64,linux/arm64"
|
||||
|
||||
# 确保 buildx 可用
|
||||
if ! docker buildx version &>/dev/null; then
|
||||
echo "❌ docker buildx 不可用,请安装或升级 Docker"
|
||||
echo "❌ docker buildx 不可用"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建/复用 multiarch builder
|
||||
if ! docker buildx inspect multiarch &>/dev/null 2>&1; then
|
||||
echo "🔧 创建 multiarch builder..."
|
||||
docker buildx create --name multiarch --driver docker-container --use
|
||||
@@ -29,29 +20,15 @@ docker buildx inspect --bootstrap
|
||||
|
||||
echo ""
|
||||
echo "========================================"
|
||||
echo "🚀 构建 backend (${PLATFORMS})"
|
||||
echo " tag: ${DOCKER_USER}/meoo-backend:${VERSION}"
|
||||
echo "🚀 构建 app (${PLATFORMS})"
|
||||
echo " tag: ${DOCKER_USER}/auv:${VERSION}"
|
||||
echo "========================================"
|
||||
docker buildx build \
|
||||
--platform "${PLATFORMS}" \
|
||||
-t "${DOCKER_USER}/meoo-backend:${VERSION}" \
|
||||
-t "${DOCKER_USER}/meoo-backend:latest" \
|
||||
--push \
|
||||
./backend
|
||||
|
||||
echo ""
|
||||
echo "========================================"
|
||||
echo "🚀 构建 frontend (${PLATFORMS})"
|
||||
echo " tag: ${DOCKER_USER}/meoo-frontend:${VERSION}"
|
||||
echo "========================================"
|
||||
docker buildx build \
|
||||
--platform "${PLATFORMS}" \
|
||||
-t "${DOCKER_USER}/meoo-frontend:${VERSION}" \
|
||||
-t "${DOCKER_USER}/meoo-frontend:latest" \
|
||||
-t "${DOCKER_USER}/auv:${VERSION}" \
|
||||
-t "${DOCKER_USER}/auv:latest" \
|
||||
--push \
|
||||
.
|
||||
|
||||
echo ""
|
||||
echo "✅ 完成!"
|
||||
echo " backend: ${DOCKER_USER}/meoo-backend:${VERSION}"
|
||||
echo " frontend: ${DOCKER_USER}/meoo-frontend:${VERSION}"
|
||||
echo "✅ 完成!${DOCKER_USER}/auv:${VERSION}"
|
||||
|
||||
+3
-22
@@ -1,29 +1,10 @@
|
||||
services:
|
||||
backend:
|
||||
app:
|
||||
image: ${DOCKER_USER:-mirrors2}/meoo:${VERSION:-latest}
|
||||
build:
|
||||
context: ./backend
|
||||
# 构建时指定架构,docker buildx 自动处理
|
||||
x-bake:
|
||||
platforms:
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
image: ${DOCKER_USER:-DOCKER_USER}/meoo-backend:${VERSION:-latest}
|
||||
context: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
env_file:
|
||||
- ./backend/.env
|
||||
restart: unless-stopped
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: .
|
||||
x-bake:
|
||||
platforms:
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
image: ${DOCKER_USER:-DOCKER_USER}/meoo-frontend:${VERSION:-latest}
|
||||
ports:
|
||||
- "3015:3015"
|
||||
depends_on:
|
||||
- backend
|
||||
restart: unless-stopped
|
||||
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
server {
|
||||
listen 3015;
|
||||
server_name localhost;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
location /api/ {
|
||||
proxy_pass http://backend:8000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
+48
-48
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "a-share-tracker",
|
||||
"name": "auv",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
@@ -10,65 +10,65 @@
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hookform/resolvers": "^5.2.2",
|
||||
"@radix-ui/react-accordion": "^1.2.12",
|
||||
"@radix-ui/react-alert-dialog": "^1.1.15",
|
||||
"@radix-ui/react-aspect-ratio": "^1.1.8",
|
||||
"@radix-ui/react-avatar": "^1.1.11",
|
||||
"@radix-ui/react-checkbox": "^1.3.3",
|
||||
"@radix-ui/react-collapsible": "^1.1.12",
|
||||
"@radix-ui/react-context-menu": "^2.2.16",
|
||||
"@radix-ui/react-dialog": "^1.1.15",
|
||||
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
||||
"@radix-ui/react-hover-card": "^1.1.15",
|
||||
"@radix-ui/react-label": "^2.1.8",
|
||||
"@radix-ui/react-menubar": "^1.1.16",
|
||||
"@radix-ui/react-navigation-menu": "^1.2.14",
|
||||
"@radix-ui/react-popover": "^1.1.15",
|
||||
"@radix-ui/react-progress": "^1.1.8",
|
||||
"@radix-ui/react-radio-group": "^1.3.8",
|
||||
"@radix-ui/react-scroll-area": "^1.2.10",
|
||||
"@radix-ui/react-select": "^2.2.6",
|
||||
"@radix-ui/react-separator": "^1.1.8",
|
||||
"@radix-ui/react-slider": "^1.3.6",
|
||||
"@radix-ui/react-slot": "^1.2.4",
|
||||
"@radix-ui/react-switch": "^1.2.6",
|
||||
"@radix-ui/react-tabs": "^1.1.13",
|
||||
"@radix-ui/react-toggle": "^1.1.10",
|
||||
"@radix-ui/react-toggle-group": "^1.1.11",
|
||||
"@radix-ui/react-tooltip": "^1.2.8",
|
||||
"@tailwindcss/vite": "^4.2.1",
|
||||
"@tanstack/react-query": "^5.83.0",
|
||||
"@tanstack/react-router": "^1.168.25",
|
||||
"@tanstack/router-plugin": "^1.167.28",
|
||||
"@hookform/resolvers": "^5.4.0",
|
||||
"@radix-ui/react-accordion": "^1.2.15",
|
||||
"@radix-ui/react-alert-dialog": "^1.1.18",
|
||||
"@radix-ui/react-aspect-ratio": "^1.1.11",
|
||||
"@radix-ui/react-avatar": "^1.2.1",
|
||||
"@radix-ui/react-checkbox": "^1.3.6",
|
||||
"@radix-ui/react-collapsible": "^1.1.15",
|
||||
"@radix-ui/react-context-menu": "^2.3.2",
|
||||
"@radix-ui/react-dialog": "^1.1.18",
|
||||
"@radix-ui/react-dropdown-menu": "^2.1.19",
|
||||
"@radix-ui/react-hover-card": "^1.1.18",
|
||||
"@radix-ui/react-label": "^2.1.11",
|
||||
"@radix-ui/react-menubar": "^1.1.19",
|
||||
"@radix-ui/react-navigation-menu": "^1.2.17",
|
||||
"@radix-ui/react-popover": "^1.1.18",
|
||||
"@radix-ui/react-progress": "^1.1.11",
|
||||
"@radix-ui/react-radio-group": "^1.4.2",
|
||||
"@radix-ui/react-scroll-area": "^1.2.13",
|
||||
"@radix-ui/react-select": "^2.3.2",
|
||||
"@radix-ui/react-separator": "^1.1.11",
|
||||
"@radix-ui/react-slider": "^1.4.2",
|
||||
"@radix-ui/react-slot": "^1.3.0",
|
||||
"@radix-ui/react-switch": "^1.3.2",
|
||||
"@radix-ui/react-tabs": "^1.1.16",
|
||||
"@radix-ui/react-toggle": "^1.1.13",
|
||||
"@radix-ui/react-toggle-group": "^1.1.14",
|
||||
"@radix-ui/react-tooltip": "^1.2.11",
|
||||
"@tailwindcss/vite": "^4.3.2",
|
||||
"@tanstack/react-query": "^5.101.2",
|
||||
"@tanstack/react-router": "^1.170.17",
|
||||
"@tanstack/router-plugin": "^1.168.19",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"cmdk": "^1.1.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"date-fns": "^4.4.0",
|
||||
"embla-carousel-react": "^8.6.0",
|
||||
"framer-motion": "^11.18.2",
|
||||
"input-otp": "^1.4.2",
|
||||
"lucide-react": "^0.575.0",
|
||||
"react": "^19.2.0",
|
||||
"react": "^19.2.7",
|
||||
"react-day-picker": "^9.14.0",
|
||||
"react-dom": "^19.2.0",
|
||||
"react-hook-form": "^7.71.2",
|
||||
"react-resizable-panels": "^4.6.5",
|
||||
"react-dom": "^19.2.7",
|
||||
"react-hook-form": "^7.81.0",
|
||||
"react-resizable-panels": "^4.12.1",
|
||||
"recharts": "^2.15.4",
|
||||
"sonner": "^2.0.7",
|
||||
"tailwind-merge": "^3.5.0",
|
||||
"tailwindcss": "^4.2.1",
|
||||
"tw-animate-css": "^1.3.4",
|
||||
"tailwind-merge": "^3.6.0",
|
||||
"tailwindcss": "^4.3.2",
|
||||
"tw-animate-css": "^1.4.0",
|
||||
"vaul": "^1.1.2",
|
||||
"vite-tsconfig-paths": "^6.0.2",
|
||||
"zod": "^3.24.2"
|
||||
"vite-tsconfig-paths": "^6.1.1",
|
||||
"zod": "^3.25.76"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.16.5",
|
||||
"@types/react": "^19.2.0",
|
||||
"@types/react-dom": "^19.2.0",
|
||||
"@vitejs/plugin-react": "^5.0.4",
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "^7.3.1"
|
||||
"@types/node": "^22.20.0",
|
||||
"@types/react": "^19.2.17",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"@vitejs/plugin-react": "^5.2.0",
|
||||
"typescript": "^5.9.3",
|
||||
"vite": "^7.3.6"
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+66
-66
@@ -9,97 +9,97 @@ importers:
|
||||
.:
|
||||
dependencies:
|
||||
'@hookform/resolvers':
|
||||
specifier: ^5.2.2
|
||||
version: 5.4.0(react-hook-form@7.80.0(react@19.2.7))
|
||||
specifier: ^5.4.0
|
||||
version: 5.4.0(react-hook-form@7.81.0(react@19.2.7))
|
||||
'@radix-ui/react-accordion':
|
||||
specifier: ^1.2.12
|
||||
specifier: ^1.2.15
|
||||
version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-alert-dialog':
|
||||
specifier: ^1.1.15
|
||||
specifier: ^1.1.18
|
||||
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-aspect-ratio':
|
||||
specifier: ^1.1.8
|
||||
specifier: ^1.1.11
|
||||
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-avatar':
|
||||
specifier: ^1.1.11
|
||||
specifier: ^1.2.1
|
||||
version: 1.2.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-checkbox':
|
||||
specifier: ^1.3.3
|
||||
specifier: ^1.3.6
|
||||
version: 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-collapsible':
|
||||
specifier: ^1.1.12
|
||||
specifier: ^1.1.15
|
||||
version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-context-menu':
|
||||
specifier: ^2.2.16
|
||||
specifier: ^2.3.2
|
||||
version: 2.3.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-dialog':
|
||||
specifier: ^1.1.15
|
||||
specifier: ^1.1.18
|
||||
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-dropdown-menu':
|
||||
specifier: ^2.1.16
|
||||
specifier: ^2.1.19
|
||||
version: 2.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-hover-card':
|
||||
specifier: ^1.1.15
|
||||
specifier: ^1.1.18
|
||||
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-label':
|
||||
specifier: ^2.1.8
|
||||
specifier: ^2.1.11
|
||||
version: 2.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-menubar':
|
||||
specifier: ^1.1.16
|
||||
specifier: ^1.1.19
|
||||
version: 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-navigation-menu':
|
||||
specifier: ^1.2.14
|
||||
specifier: ^1.2.17
|
||||
version: 1.2.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-popover':
|
||||
specifier: ^1.1.15
|
||||
specifier: ^1.1.18
|
||||
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-progress':
|
||||
specifier: ^1.1.8
|
||||
specifier: ^1.1.11
|
||||
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-radio-group':
|
||||
specifier: ^1.3.8
|
||||
specifier: ^1.4.2
|
||||
version: 1.4.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-scroll-area':
|
||||
specifier: ^1.2.10
|
||||
specifier: ^1.2.13
|
||||
version: 1.2.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-select':
|
||||
specifier: ^2.2.6
|
||||
specifier: ^2.3.2
|
||||
version: 2.3.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-separator':
|
||||
specifier: ^1.1.8
|
||||
specifier: ^1.1.11
|
||||
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-slider':
|
||||
specifier: ^1.3.6
|
||||
specifier: ^1.4.2
|
||||
version: 1.4.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-slot':
|
||||
specifier: ^1.2.4
|
||||
specifier: ^1.3.0
|
||||
version: 1.3.0(@types/react@19.2.17)(react@19.2.7)
|
||||
'@radix-ui/react-switch':
|
||||
specifier: ^1.2.6
|
||||
specifier: ^1.3.2
|
||||
version: 1.3.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-tabs':
|
||||
specifier: ^1.1.13
|
||||
specifier: ^1.1.16
|
||||
version: 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-toggle':
|
||||
specifier: ^1.1.10
|
||||
specifier: ^1.1.13
|
||||
version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-toggle-group':
|
||||
specifier: ^1.1.11
|
||||
specifier: ^1.1.14
|
||||
version: 1.1.14(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@radix-ui/react-tooltip':
|
||||
specifier: ^1.2.8
|
||||
specifier: ^1.2.11
|
||||
version: 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@tailwindcss/vite':
|
||||
specifier: ^4.2.1
|
||||
specifier: ^4.3.2
|
||||
version: 4.3.2(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
|
||||
'@tanstack/react-query':
|
||||
specifier: ^5.83.0
|
||||
specifier: ^5.101.2
|
||||
version: 5.101.2(react@19.2.7)
|
||||
'@tanstack/react-router':
|
||||
specifier: ^1.168.25
|
||||
specifier: ^1.170.17
|
||||
version: 1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@tanstack/router-plugin':
|
||||
specifier: ^1.167.28
|
||||
specifier: ^1.168.19
|
||||
version: 1.168.19(@tanstack/react-router@1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
|
||||
class-variance-authority:
|
||||
specifier: ^0.7.1
|
||||
@@ -111,7 +111,7 @@ importers:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
date-fns:
|
||||
specifier: ^4.1.0
|
||||
specifier: ^4.4.0
|
||||
version: 4.4.0
|
||||
embla-carousel-react:
|
||||
specifier: ^8.6.0
|
||||
@@ -126,20 +126,20 @@ importers:
|
||||
specifier: ^0.575.0
|
||||
version: 0.575.0(react@19.2.7)
|
||||
react:
|
||||
specifier: ^19.2.0
|
||||
specifier: ^19.2.7
|
||||
version: 19.2.7
|
||||
react-day-picker:
|
||||
specifier: ^9.14.0
|
||||
version: 9.14.0(react@19.2.7)
|
||||
react-dom:
|
||||
specifier: ^19.2.0
|
||||
specifier: ^19.2.7
|
||||
version: 19.2.7(react@19.2.7)
|
||||
react-hook-form:
|
||||
specifier: ^7.71.2
|
||||
version: 7.80.0(react@19.2.7)
|
||||
specifier: ^7.81.0
|
||||
version: 7.81.0(react@19.2.7)
|
||||
react-resizable-panels:
|
||||
specifier: ^4.6.5
|
||||
version: 4.12.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
specifier: ^4.12.1
|
||||
version: 4.12.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
recharts:
|
||||
specifier: ^2.15.4
|
||||
version: 2.15.4(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
@@ -147,41 +147,41 @@ importers:
|
||||
specifier: ^2.0.7
|
||||
version: 2.0.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
tailwind-merge:
|
||||
specifier: ^3.5.0
|
||||
specifier: ^3.6.0
|
||||
version: 3.6.0
|
||||
tailwindcss:
|
||||
specifier: ^4.2.1
|
||||
specifier: ^4.3.2
|
||||
version: 4.3.2
|
||||
tw-animate-css:
|
||||
specifier: ^1.3.4
|
||||
specifier: ^1.4.0
|
||||
version: 1.4.0
|
||||
vaul:
|
||||
specifier: ^1.1.2
|
||||
version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
vite-tsconfig-paths:
|
||||
specifier: ^6.0.2
|
||||
specifier: ^6.1.1
|
||||
version: 6.1.1(typescript@5.9.3)(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
|
||||
zod:
|
||||
specifier: ^3.24.2
|
||||
specifier: ^3.25.76
|
||||
version: 3.25.76
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^22.16.5
|
||||
specifier: ^22.20.0
|
||||
version: 22.20.0
|
||||
'@types/react':
|
||||
specifier: ^19.2.0
|
||||
specifier: ^19.2.17
|
||||
version: 19.2.17
|
||||
'@types/react-dom':
|
||||
specifier: ^19.2.0
|
||||
specifier: ^19.2.3
|
||||
version: 19.2.3(@types/react@19.2.17)
|
||||
'@vitejs/plugin-react':
|
||||
specifier: ^5.0.4
|
||||
specifier: ^5.2.0
|
||||
version: 5.2.0(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
|
||||
typescript:
|
||||
specifier: ^5.8.3
|
||||
specifier: ^5.9.3
|
||||
version: 5.9.3
|
||||
vite:
|
||||
specifier: ^7.3.1
|
||||
specifier: ^7.3.6
|
||||
version: 7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5)
|
||||
|
||||
packages:
|
||||
@@ -1448,8 +1448,8 @@ packages:
|
||||
babel-dead-code-elimination@1.0.12:
|
||||
resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==}
|
||||
|
||||
baseline-browser-mapping@2.10.41:
|
||||
resolution: {integrity: sha512-WwS7MHhqGHHlaVsqRZnhvCEMS0owDX+SxRlve7JkuH7My1Ara3ZriTmCQupPfYjxMZ8I/tgxtJYr2t7taHaH4A==}
|
||||
baseline-browser-mapping@2.10.42:
|
||||
resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -1563,8 +1563,8 @@ packages:
|
||||
dom-helpers@5.2.1:
|
||||
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
|
||||
|
||||
electron-to-chromium@1.5.385:
|
||||
resolution: {integrity: sha512-78sa/M08MNAYHQfjoWMvOlKQqZ0ElhSm/L5HNUc96VZ3b+KvDVnngFm8sYQy0XrhTRgAhggHr5abA7yTvRdo4Q==}
|
||||
electron-to-chromium@1.5.387:
|
||||
resolution: {integrity: sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==}
|
||||
|
||||
embla-carousel-react@8.6.0:
|
||||
resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==}
|
||||
@@ -1819,8 +1819,8 @@ packages:
|
||||
peerDependencies:
|
||||
react: ^19.2.7
|
||||
|
||||
react-hook-form@7.80.0:
|
||||
resolution: {integrity: sha512-4P+fk6oXsxY+6xSj7Euhc2sumQD8zQqCuVHoJwoyp9EchP+IUW9OESB7uHFJOKsIBQ4MQqYE84INJFqUCYNoOg==}
|
||||
react-hook-form@7.81.0:
|
||||
resolution: {integrity: sha512-ocbmr2p5KBMoAfj4WCUvped33lVi1Kd5DuDUvQDnB6VEAacOjPI/jMbtDdbhco4y9ct4xUuCmMY0b/C9L0QHjw==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17 || ^18 || ^19
|
||||
@@ -1855,8 +1855,8 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
react-resizable-panels@4.12.0:
|
||||
resolution: {integrity: sha512-t/Gp57qSCxGQ52ckhz+8lM7dnuymeU95TEzl2U203qEbGkSLHrtm7US2/ANzq/zOlja3CwPTAfCDuh1unv9mfw==}
|
||||
react-resizable-panels@4.12.1:
|
||||
resolution: {integrity: sha512-ElE/UpOvMLRWtAqbCgyizHXcbws8RPMyN3cBqmdY17Nxr5f01+DEwzOLqhgcy68GSnjtIUFgKWKl8aIgx5aypQ==}
|
||||
peerDependencies:
|
||||
react: ^18.0.0 || ^19.0.0
|
||||
react-dom: ^18.0.0 || ^19.0.0
|
||||
@@ -2322,10 +2322,10 @@ snapshots:
|
||||
|
||||
'@floating-ui/utils@0.2.11': {}
|
||||
|
||||
'@hookform/resolvers@5.4.0(react-hook-form@7.80.0(react@19.2.7))':
|
||||
'@hookform/resolvers@5.4.0(react-hook-form@7.81.0(react@19.2.7))':
|
||||
dependencies:
|
||||
'@standard-schema/utils': 0.3.0
|
||||
react-hook-form: 7.80.0(react@19.2.7)
|
||||
react-hook-form: 7.81.0(react@19.2.7)
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.13':
|
||||
dependencies:
|
||||
@@ -3310,13 +3310,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
baseline-browser-mapping@2.10.41: {}
|
||||
baseline-browser-mapping@2.10.42: {}
|
||||
|
||||
browserslist@4.28.4:
|
||||
dependencies:
|
||||
baseline-browser-mapping: 2.10.41
|
||||
baseline-browser-mapping: 2.10.42
|
||||
caniuse-lite: 1.0.30001800
|
||||
electron-to-chromium: 1.5.385
|
||||
electron-to-chromium: 1.5.387
|
||||
node-releases: 2.0.50
|
||||
update-browserslist-db: 1.2.3(browserslist@4.28.4)
|
||||
|
||||
@@ -3409,7 +3409,7 @@ snapshots:
|
||||
'@babel/runtime': 7.29.7
|
||||
csstype: 3.2.3
|
||||
|
||||
electron-to-chromium@1.5.385: {}
|
||||
electron-to-chromium@1.5.387: {}
|
||||
|
||||
embla-carousel-react@8.6.0(react@19.2.7):
|
||||
dependencies:
|
||||
@@ -3618,7 +3618,7 @@ snapshots:
|
||||
react: 19.2.7
|
||||
scheduler: 0.27.0
|
||||
|
||||
react-hook-form@7.80.0(react@19.2.7):
|
||||
react-hook-form@7.81.0(react@19.2.7):
|
||||
dependencies:
|
||||
react: 19.2.7
|
||||
|
||||
@@ -3647,7 +3647,7 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.17
|
||||
|
||||
react-resizable-panels@4.12.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
|
||||
react-resizable-panels@4.12.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
|
||||
dependencies:
|
||||
react: 19.2.7
|
||||
react-dom: 19.2.7(react@19.2.7)
|
||||
|
||||
Reference in New Issue
Block a user