Browse Source

fix: 1.2.12 官网更新

version/1.2.11
leiyuee 6 days ago
parent
commit
0f564f2558
  1. 4
      .cursor/skills/figma-ui-implementation/SKILL.md
  2. 3
      src/api/api.ts
  3. BIN
      src/assets/images/index/brand_logo.png
  4. BIN
      src/assets/images/index/brand_logo2.png
  5. BIN
      src/assets/images/index/cloud_auto_match_icon.png
  6. BIN
      src/assets/images/index/cloud_ip_asset_reuse_icon.png
  7. BIN
      src/assets/images/index/cloud_one_prompt_icon.png
  8. BIN
      src/assets/images/index/cloud_team_collaboration_icon.png
  9. BIN
      src/assets/images/index/feature_check_icon.png
  10. BIN
      src/assets/images/index/header_login_arrow_icon.png
  11. BIN
      src/assets/images/index/hero_creator_lifestyle_bg.png
  12. BIN
      src/assets/images/index/hero_download_arrow_icon.png
  13. BIN
      src/assets/images/index/popi_art_assets_preview.png
  14. BIN
      src/assets/images/index/popi_art_workspace_preview.png
  15. BIN
      src/assets/images/index/popi_mcn_agent_preview.png
  16. BIN
      src/assets/images/index/popi_tv_canvas_preview.png
  17. BIN
      src/assets/images/index/product_download_arrow_icon.png
  18. BIN
      src/assets/images/index/product_open_arrow_icon.png
  19. BIN
      src/assets/images/index/product_popi_art_icon.png
  20. BIN
      src/assets/images/index/product_popi_cloud_icon.png
  21. BIN
      src/assets/images/index/product_popi_mcn_icon.png
  22. BIN
      src/assets/images/index/product_popi_tv_icon.png
  23. 9
      src/components/VoiceLibraryPicker/index.scss
  24. 26
      src/locales/en-US.json
  25. 26
      src/locales/zh-CN.json
  26. 26
      src/locales/zh-TW.json
  27. 2568
      src/pages/index/index.scss
  28. 839
      src/pages/index/index.tsx
  29. 57
      打包dist-Windows.bat
  30. 95
      打包dist.command

4
.cursor/skills/figma-ui-implementation/SKILL.md

@ -40,6 +40,8 @@ Hard Constraints
图片资源必须使用设计稿中导出的真实图片文件(如 PNG、JPG、WebP 等),禁止使用 SVG、CSS 绘制(如 ::before、::after、background 渐变模拟)、或任何其他技术手段来替代或模拟图片内容。图片的视觉内容(产品图、人物头像、图标等)必须与设计稿保持一致。
当当前 Codex 环境无法从 Figma 临时资源链接下载图片到本地时,不要阻塞实现流程;所有图片资源先直接使用 Figma MCP 返回的临时资源地址,并在代码或交付说明中标明后续可替换为本地导出文件。
Implementation Rules
Prefer project design tokens and existing components when they match the Figma values exactly.
@ -71,4 +73,6 @@ Basic responsive behavior works on common screen widths.
All images are using real exported assets (PNG/JPG/WebP), not SVG substitutions or CSS-drawn alternatives.
When local Figma asset download is unavailable in Codex, images temporarily use the Figma MCP asset URLs and are clearly noted for later local replacement.
SCSS nested structure strictly mirrors the HTML structure, with no use of abbreviated class name selectors like &_.

3
src/api/api.ts

@ -455,6 +455,9 @@ export type ParamConfigResponse = {
musicStyleSugList?: unknown;
servicePhone?: string;
serviceQrCode?: string;
businessCooperation?: string;
joinUs?: string;
officialPublicAccount?: string;
userFileFolderMaxLevel?: number;
};
};

BIN
src/assets/images/index/brand_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/assets/images/index/brand_logo2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
src/assets/images/index/cloud_auto_match_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
src/assets/images/index/cloud_ip_asset_reuse_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
src/assets/images/index/cloud_one_prompt_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
src/assets/images/index/cloud_team_collaboration_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
src/assets/images/index/feature_check_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

BIN
src/assets/images/index/header_login_arrow_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

BIN
src/assets/images/index/hero_creator_lifestyle_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

BIN
src/assets/images/index/hero_download_arrow_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/assets/images/index/popi_art_assets_preview.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 MiB

BIN
src/assets/images/index/popi_art_workspace_preview.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 MiB

BIN
src/assets/images/index/popi_mcn_agent_preview.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

BIN
src/assets/images/index/popi_tv_canvas_preview.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

BIN
src/assets/images/index/product_download_arrow_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
src/assets/images/index/product_open_arrow_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/assets/images/index/product_popi_art_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
src/assets/images/index/product_popi_cloud_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
src/assets/images/index/product_popi_mcn_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
src/assets/images/index/product_popi_tv_icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

9
src/components/VoiceLibraryPicker/index.scss

@ -196,12 +196,15 @@
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 30px;
height: 30px;
width: 100%;
height: 100%;
padding: 0;
border: none;
background: transparent;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
.voiceLibraryPicker__coverPlayIcon {
@ -510,4 +513,4 @@
.voiceLibraryPickerDropdown .voiceLibraryPicker__actions {
gap: 10px;
margin-right: 4px;
}
}

26
src/locales/en-US.json

@ -258,6 +258,17 @@
"pages.create.filters.template": "Templates",
"pages.create.filters.character": "Characters",
"pages.create.batchAction": "Batch actions",
"pages.create.batch.manage": "Manage",
"pages.create.batch.actionsAria": "Batch actions",
"pages.create.batch.selected": "Selected",
"pages.create.batch.like": "Like",
"pages.create.batch.cancelSelection": "Cancel selection",
"pages.create.batch.likeSuccess": "Added to favorites",
"pages.create.batch.likeFailed": "Could not like selected items. Please try again later",
"pages.create.batch.downloadFailed": "Download failed. Please try again later",
"pages.create.batch.confirmDeleteTitle": "Confirm delete",
"pages.create.batch.confirmDeleteContent": "Delete {{count}} selected works? This cannot be undone.",
"pages.create.batch.confirmDeleteAction": "Confirm delete",
"pages.create.inspiration.filtersAria": "Inspiration categories",
"pages.create.inspiration.filters.character": "Characters",
"pages.create.inspiration.filters.characterAssets": "Character assets",
@ -1022,6 +1033,20 @@
"pages.voice.speech.create.modelRequired": "Please select a model first",
"index.2026.header.nav_aria": "Homepage navigation",
"index.2026.header.login": "Log in",
"index.2026.header.features.image": "AI Images",
"index.2026.header.features.video": "AI Video",
"index.2026.header.features.music": "AI Music",
"index.2026.header.features.character": "AI Characters",
"index.2026.header.support.contact": "Contact support",
"index.2026.header.support.business": "Business",
"index.2026.header.support.career": "Join us",
"index.2026.header.support.official": "Official account",
"index.2026.header.support.contact_tip": "Scan the QR code to contact official support",
"index.2026.header.support.business_tip": "Scan the QR code for business cooperation. Replace this with the dedicated QR code later.",
"index.2026.header.support.career_tip": "Scan the QR code to learn about hiring and collaboration. Replace this with the dedicated QR code later.",
"index.2026.header.support.official_tip": "Scan the QR code to follow the official account. Replace this with the official account QR code later.",
"index.2026.header.support.qr_alt": "{{title}} QR code",
"index.2026.header.support.qr_pending": "QR code pending",
"index.2026.hero.brand": "Popi.art",
"index.2026.hero.title1": "Record your life and generate IP",
"index.2026.hero.title2": "Social images, video, music, and games",
@ -1047,6 +1072,7 @@
"index.2026.products.cloud.title": "Cloud IP asset cloud",
"index.2026.products.cloud.description": "Upload original assets and build characters, voices, and styles. Reuse them reliably for videos, games, music, and derivatives.",
"index.2026.products.cloud.cta": "Learn Popi.Cloud",
"index.2026.products.coming_soon": "Coming soon",
"index.2026.popiart.eyebrow": "POPILART",
"index.2026.popiart.title": "Website features help you learn simply and get started quickly",
"index.2026.popiart.description": "Popi.art organizes characters, templates, style assets, and curated content into a workspace creators can browse, choose, and use directly. Users can start from a character and content goal without first understanding models, parameters, or switching logic.",

26
src/locales/zh-CN.json

@ -258,6 +258,17 @@
"pages.create.filters.template": "模板",
"pages.create.filters.character": "角色",
"pages.create.batchAction": "批量操作",
"pages.create.batch.manage": "批量管理",
"pages.create.batch.actionsAria": "批量操作",
"pages.create.batch.selected": "已选",
"pages.create.batch.like": "喜欢",
"pages.create.batch.cancelSelection": "取消选择",
"pages.create.batch.likeSuccess": "已添加到喜欢",
"pages.create.batch.likeFailed": "喜欢失败,请稍后重试",
"pages.create.batch.downloadFailed": "下载失败,请稍后重试",
"pages.create.batch.confirmDeleteTitle": "确认删除",
"pages.create.batch.confirmDeleteContent": "确定删除已选中的 {{count}} 个作品吗?删除后无法恢复。",
"pages.create.batch.confirmDeleteAction": "确认删除",
"pages.create.inspiration.filtersAria": "灵感库分类",
"pages.create.inspiration.filters.character": "角色",
"pages.create.inspiration.filters.characterAssets": "角色素材",
@ -1022,6 +1033,20 @@
"pages.voice.speech.create.modelRequired": "请先选择模型",
"index.2026.header.nav_aria": "首页导航",
"index.2026.header.login": "登录",
"index.2026.header.features.image": "AI生图",
"index.2026.header.features.video": "AI视频",
"index.2026.header.features.music": "AI音乐",
"index.2026.header.features.character": "AI角色",
"index.2026.header.support.contact": "联系客服",
"index.2026.header.support.business": "商务合作",
"index.2026.header.support.career": "加入我们",
"index.2026.header.support.official": "官方公众号",
"index.2026.header.support.contact_tip": "扫描二维码添加官方客服号咨询",
"index.2026.header.support.business_tip": "扫描二维码联系商务合作,后续可替换为专属商务合作二维码",
"index.2026.header.support.career_tip": "扫描二维码了解招聘与合作机会,后续可替换为专属加入我们二维码",
"index.2026.header.support.official_tip": "扫描二维码关注官方公众号,后续可替换为公众号二维码",
"index.2026.header.support.qr_alt": "{{title}}二维码",
"index.2026.header.support.qr_pending": "二维码待补充",
"index.2026.hero.brand": "Popi.art",
"index.2026.hero.title1": "记录你的生活,生成 IP",
"index.2026.hero.title2": "社交图片、视频、音乐和游戏",
@ -1047,6 +1072,7 @@
"index.2026.products.cloud.title": "Cloud IP资产云",
"index.2026.products.cloud.description": "上传原创素材,沉淀角色、声纹和画风。之后做视频、游戏、音乐和衍生内容都能稳定调用",
"index.2026.products.cloud.cta": "了解Popi.Cloud",
"index.2026.products.coming_soon": "暂未开放",
"index.2026.popiart.eyebrow": "POPILART",
"index.2026.popiart.title": "网站功能帮你简单学习,轻松进入",
"index.2026.popiart.description": "Popi.art把角色、模板、风格素材和精选内容组织成创作者可以直接浏览、选择和使用的工作台。用户无需先理解背后的模型、参数和切换逻辑,只需要围绕角色和内容目标开始创作",

26
src/locales/zh-TW.json

@ -259,6 +259,17 @@
"pages.create.filters.template": "模板",
"pages.create.filters.character": "角色",
"pages.create.batchAction": "批次操作",
"pages.create.batch.manage": "批量管理",
"pages.create.batch.actionsAria": "批次操作",
"pages.create.batch.selected": "已選",
"pages.create.batch.like": "喜歡",
"pages.create.batch.cancelSelection": "取消選擇",
"pages.create.batch.likeSuccess": "已加入喜歡",
"pages.create.batch.likeFailed": "喜歡失敗,請稍後重試",
"pages.create.batch.downloadFailed": "下載失敗,請稍後重試",
"pages.create.batch.confirmDeleteTitle": "確認刪除",
"pages.create.batch.confirmDeleteContent": "確定刪除已選中的 {{count}} 個作品嗎?刪除後無法恢復。",
"pages.create.batch.confirmDeleteAction": "確認刪除",
"pages.create.inspiration.filtersAria": "靈感庫分類",
"pages.create.inspiration.filters.character": "角色",
"pages.create.inspiration.filters.characterAssets": "角色素材",
@ -1000,6 +1011,20 @@
"pages.voice.speech.create.modelRequired": "請先選擇模型",
"index.2026.header.nav_aria": "首頁導覽",
"index.2026.header.login": "登入",
"index.2026.header.features.image": "AI生圖",
"index.2026.header.features.video": "AI影片",
"index.2026.header.features.music": "AI音樂",
"index.2026.header.features.character": "AI角色",
"index.2026.header.support.contact": "聯絡客服",
"index.2026.header.support.business": "商務合作",
"index.2026.header.support.career": "加入我們",
"index.2026.header.support.official": "官方公眾號",
"index.2026.header.support.contact_tip": "掃描二維碼添加官方客服號諮詢",
"index.2026.header.support.business_tip": "掃描二維碼聯絡商務合作,後續可替換為專屬商務合作二維碼",
"index.2026.header.support.career_tip": "掃描二維碼了解招聘與合作機會,後續可替換為專屬加入我們二維碼",
"index.2026.header.support.official_tip": "掃描二維碼關注官方公眾號,後續可替換為公眾號二維碼",
"index.2026.header.support.qr_alt": "{{title}}二維碼",
"index.2026.header.support.qr_pending": "二維碼待補充",
"index.2026.hero.brand": "Popi.art",
"index.2026.hero.title1": "記錄你的生活,生成 IP",
"index.2026.hero.title2": "社交圖片、影片、音樂和遊戲",
@ -1025,6 +1050,7 @@
"index.2026.products.cloud.title": "Cloud IP資產雲",
"index.2026.products.cloud.description": "上傳原創素材,沉澱角色、聲紋和畫風。之後做影片、遊戲、音樂和衍生內容都能穩定調用",
"index.2026.products.cloud.cta": "了解Popi.Cloud",
"index.2026.products.coming_soon": "暫未開放",
"index.2026.popiart.eyebrow": "POPILART",
"index.2026.popiart.title": "網站功能幫你簡單學習,輕鬆進入",
"index.2026.popiart.description": "Popi.art把角色、模板、風格素材和精選內容組織成創作者可以直接瀏覽、選擇和使用的工作台。用戶無需先理解背後的模型、參數和切換邏輯,只需要圍繞角色和內容目標開始創作",

2568
src/pages/index/index.scss

File diff suppressed because it is too large

839
src/pages/index/index.tsx

File diff suppressed because it is too large

57
打包dist-Windows.bat

@ -0,0 +1,57 @@
@echo off
setlocal
set "SCRIPT_DIR=%~dp0"
set "DIST_DIR=%SCRIPT_DIR%dist"
echo Building and packaging dist...
echo Project folder: %SCRIPT_DIR%
cd /d "%SCRIPT_DIR%"
if errorlevel 1 (
echo Error: could not enter project folder.
pause
exit /b 1
)
where npm >nul 2>nul
if errorlevel 1 (
echo Error: npm was not found. Please install Node.js first.
pause
exit /b 1
)
echo.
echo Running npm run build:prod...
call npm run build:prod
if errorlevel 1 (
echo Error: build:prod failed. Package was not created.
pause
exit /b 1
)
if not exist "%DIST_DIR%\" (
echo Error: dist folder was not found after build.
pause
exit /b 1
)
where powershell >nul 2>nul
if errorlevel 1 (
echo Error: PowerShell was not found.
pause
exit /b 1
)
powershell -NoProfile -ExecutionPolicy Bypass -Command "$ErrorActionPreference='Stop'; $scriptDir=$env:SCRIPT_DIR; $distDir=Join-Path $scriptDir 'dist'; $packageName='popiart-website-new'; $outputZip=Join-Path $scriptDir ($packageName + '.zip'); $tmpRoot=Join-Path ([IO.Path]::GetTempPath()) ('popiart-package-' + [guid]::NewGuid().ToString('N')); try { $packageDir=Join-Path $tmpRoot $packageName; New-Item -ItemType Directory -Path $packageDir -Force | Out-Null; Get-ChildItem -LiteralPath $distDir -Force | Copy-Item -Destination $packageDir -Recurse -Force; Get-ChildItem -LiteralPath $packageDir -Recurse -Force -Filter '.DS_Store' | Remove-Item -Force; if (Test-Path -LiteralPath $outputZip) { Remove-Item -LiteralPath $outputZip -Force }; Compress-Archive -LiteralPath $packageDir -DestinationPath $outputZip -Force; Write-Host 'Done:' $outputZip; Get-Item -LiteralPath $outputZip | Format-List FullName,Length } finally { if (Test-Path -LiteralPath $tmpRoot) { Remove-Item -LiteralPath $tmpRoot -Recurse -Force } }"
if errorlevel 1 (
echo Error: package failed.
pause
exit /b 1
)
echo.
echo Package complete.
echo Closing this window in 3 seconds...
timeout /t 3 /nobreak >nul

95
打包dist.command

@ -0,0 +1,95 @@
#!/bin/bash
set -u
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
DIST_DIR="$SCRIPT_DIR/dist"
PACKAGE_NAME="popiart-website-new"
OUTPUT_ZIP="$SCRIPT_DIR/$PACKAGE_NAME.zip"
TMP_DIR="$(mktemp -d)"
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
if [ -s "$HOME/.nvm/nvm.sh" ]; then
. "$HOME/.nvm/nvm.sh"
fi
cleanup() {
if [ -n "${TMP_DIR:-}" ] && [ -d "$TMP_DIR" ]; then
rm -rf "$TMP_DIR"
fi
}
pause_before_exit() {
echo
read -r -p "按回车键关闭窗口..."
}
close_after_success() {
echo
echo "3 秒后自动关闭窗口..."
sleep 3
}
trap cleanup EXIT
echo "开始打包 dist..."
echo "项目目录: $SCRIPT_DIR"
cd "$SCRIPT_DIR" || {
echo "错误: 无法进入项目目录。"
pause_before_exit
exit 1
}
if ! command -v npm >/dev/null 2>&1; then
echo "错误: 没有找到 npm,请先确认 Node.js 已安装。"
pause_before_exit
exit 1
fi
echo
echo "正在执行 npm run build:prod..."
npm run build:prod
if [ $? -ne 0 ]; then
echo "错误: build:prod 执行失败,已停止打包。"
pause_before_exit
exit 1
fi
if [ ! -d "$DIST_DIR" ]; then
echo "错误: build 完成后没有找到 dist 目录。"
pause_before_exit
exit 1
fi
echo
echo "正在打包新的 dist..."
if ! command -v zip >/dev/null 2>&1; then
echo "错误: 当前系统没有找到 zip 命令。"
pause_before_exit
exit 1
fi
mkdir "$TMP_DIR/$PACKAGE_NAME"
cp -R "$DIST_DIR/." "$TMP_DIR/$PACKAGE_NAME/"
(
cd "$TMP_DIR" || exit 1
zip -qry -X "$OUTPUT_ZIP" "$PACKAGE_NAME" -x "*/.DS_Store" "__MACOSX/*"
)
if [ $? -ne 0 ]; then
echo "错误: 打包失败。"
pause_before_exit
exit 1
fi
echo "打包完成:"
echo "$OUTPUT_ZIP"
echo
ls -lh "$OUTPUT_ZIP"
close_after_success
Loading…
Cancel
Save