CHONGGOU
@@ -1,24 +0,0 @@
|
||||
---
|
||||
description: 杜康好客官网项目总览与改动边界
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# 项目总览
|
||||
|
||||
杜康好客品牌官网 / 发布会展项单页:「你请客,我买单」。无路由、无后端、无 UI 库。
|
||||
|
||||
## 改哪里
|
||||
|
||||
- 逻辑与文案:`src/App.tsx`
|
||||
- 视觉与布局:`src/App.css`
|
||||
- 根排版 / scroll-snap:`src/index.css`
|
||||
- 站点图:`public/assets/`(路径 `/assets/...`)
|
||||
- 更完整说明见根目录 `AGENTS.md`
|
||||
|
||||
## 必须遵守
|
||||
|
||||
- 保持技术栈精简;非必要不新增依赖、路由或状态库
|
||||
- 章节 `id` 须与 `sections`、`navItems`、DOM、展控 dots/panel 同步
|
||||
- `public/assets/pdf-ref/` 仅设计参考,勿挂进生产 UI
|
||||
- 保留合规文案(理性饮酒、无收益承诺、细则以政策为准、ICP)
|
||||
- 布局或章节改动后,同时验证普通浏览与 `?mode=stage`
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
description: 发布会展控模式(stage)行为与样式约定
|
||||
globs: src/App.tsx,src/App.css
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# 展控模式
|
||||
|
||||
## 入口与状态
|
||||
|
||||
- URL:`?mode=stage` 或 `?mode=stage#sectionId`
|
||||
- DOM:`body.stage-mode`、`.site.is-stage`
|
||||
- 翻页依赖 `sections` 数组顺序与 `id`;改章节数或 id 时同步 stage 逻辑
|
||||
|
||||
## 行为
|
||||
|
||||
- 键盘:←/→、↑/↓、Space、PageUp/PageDown、Home/End
|
||||
- UI:圆点、可折叠面板、进度、可选自动播放
|
||||
- 展控下隐藏普通顶栏导航 / CTA 的行为勿随意破坏
|
||||
|
||||
## 样式
|
||||
|
||||
- 大量 `.is-stage …` 覆盖负责更密排版与展项布局
|
||||
- 普通模式改完后,必须用 `?mode=stage` 再验一遍各 LP
|
||||
- 本地自测:`http://localhost:5173/?mode=stage#hero`
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
description: 双主题视觉与 LP 章节结构约定
|
||||
globs: src/App.tsx,src/App.css,src/index.css
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# UI 与章节
|
||||
|
||||
## 双主题
|
||||
|
||||
- `hero`~`system`:`.poetic-section`(宣纸/国风:`--paper`、`--ink`、`--red`、`--gold`)
|
||||
- `tech`~`contact`:`.tech-section`(深色科技:`--tech`、`--tech-card`、`--tech-line`)
|
||||
- 普通模式 `activeIndex >= tech` 时顶栏加 `is-tech-theme`;展控(`?mode=stage`)不加
|
||||
- 新增章节必须选对主题族;勿混用两套配色令牌
|
||||
|
||||
## 改章节
|
||||
|
||||
1. 更新 `sections` 常量(id / label / title / summary)
|
||||
2. 更新 `navItems`(hero 通常不进顶栏)
|
||||
3. 增加带正确 `id` 的 `<section className="page-section …">`
|
||||
4. 同步展控 UI(dots、panel、进度)
|
||||
|
||||
## 视觉原则
|
||||
|
||||
- 首屏品牌优先;章节多为 full-bleed 背景,保持 scroll-snap
|
||||
- 动效沿用 `fadeRise`、`reveal-*`、`.is-entered`、`--slide-i`,勿堆叠无关徽章/卡片装饰
|
||||
- 静态资源用 `/assets/...`;勿引用 `pdf-ref/`
|
||||
- 响应式断点已有约 `1100px`、`760px`,优先扩展现有规则
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
||||
"plugins": ["react", "typescript", "oxc"],
|
||||
"rules": {
|
||||
"react/rules-of-hooks": "error",
|
||||
"react/only-export-components": ["warn", { "allowConstantExport": true }]
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
# 杜康好客官网 — Agent 指南
|
||||
|
||||
面向后续开发者与 Cursor Agent:快速了解项目定位、改哪里、不能破坏什么。
|
||||
|
||||
## 项目定位
|
||||
|
||||
杜康好客品牌官网 / 发布会展项**单页**。核心主张「你请客,我买单」:买酒送等价好客权益,到合作门店抵餐。面向城市合伙人、合作门店与用户。
|
||||
|
||||
包名:`dukangguanwang`。无后端、无留资表单;联系方式为二维码 + 电话。
|
||||
|
||||
## 技术栈
|
||||
|
||||
| 层 | 选型 |
|
||||
|----|------|
|
||||
| UI | React 19 |
|
||||
| 构建 | Vite 8 + `@vitejs/plugin-react` |
|
||||
| 语言 | TypeScript(`tsc -b` 后构建) |
|
||||
| Lint | Oxlint |
|
||||
| 路由 / 状态库 / UI 库 | **无** — 保持精简,非必要不新增依赖 |
|
||||
|
||||
React Compiler 未启用(见 README)。
|
||||
|
||||
## 关键入口
|
||||
|
||||
| 文件 | 职责 |
|
||||
|------|------|
|
||||
| [`src/App.tsx`](src/App.tsx) | 全部章节 DOM、文案常量、导航、展控逻辑 |
|
||||
| [`src/App.css`](src/App.css) | 设计 token、章节样式、展控覆盖 |
|
||||
| [`src/index.css`](src/index.css) | 根排版、scroll-snap、`stage-mode` body |
|
||||
| [`src/main.tsx`](src/main.tsx) | StrictMode 挂载 |
|
||||
| [`index.html`](index.html) | `zh-CN`、站点 meta |
|
||||
|
||||
产品表面几乎全集中在 `App.tsx` + `App.css`。`src/assets/` 为模板残留,站点图请用 `public/assets/`。
|
||||
|
||||
## LP 章节(顺序固定)
|
||||
|
||||
`sections`、DOM `id`、`navItems`(及展控 dots/panel)**必须同步**。
|
||||
|
||||
| id | 标签 | 视觉族 |
|
||||
|----|------|--------|
|
||||
| `hero` | LP-H 首屏 | `poetic-section` |
|
||||
| `brand` | LP-01 品牌传承 | `poetic-section` |
|
||||
| `poetry` | LP-02 诗酒文化 | `poetic-section` |
|
||||
| `qingxiang` | LP-03 清香宝典 | `poetic-section` |
|
||||
| `haoke` | LP-04 好客模式 | `poetic-section` |
|
||||
| `system` | LP-05 三端协同 | `poetic-section` |
|
||||
| `tech` | LP-06 科技驱动 | `tech-section` |
|
||||
| `subsidy` | LP-07 酒厂实力 | `tech-section` |
|
||||
| `partner` | LP-08 城市合伙人 | `tech-section` |
|
||||
| `tech-detail` | LP-09 科技板块 | `tech-section` |
|
||||
| `contact` | LP-10 联系我们 | `tech-section` |
|
||||
|
||||
锚点导航:固定 `.topbar` + hash。普通模式用 IntersectionObserver 更新 `activeIndex`。
|
||||
|
||||
## 展控模式
|
||||
|
||||
- 入口:`?mode=stage` 或 `?mode=stage#sectionId`
|
||||
- 行为:键盘翻页、点击区、圆点、可折叠面板、可选自动播放
|
||||
- 样式:`body.stage-mode`、`.site.is-stage`,以及大量 `.is-stage …` 覆盖
|
||||
|
||||
**改布局或章节后,须同时验证普通浏览与展控。**
|
||||
|
||||
本地示例:`http://localhost:5173/?mode=stage#hero`
|
||||
|
||||
## 视觉语言(摘要)
|
||||
|
||||
`:root` 变量在 `App.css`:
|
||||
|
||||
- 国风:`--paper` / `--ink` / `--red` / `--gold`
|
||||
- 科技:`--tech` / `--tech-card` / `--tech-line`
|
||||
- 内容宽:`--max`
|
||||
|
||||
字体:标题偏宋体系(Noto Serif SC / Songti);正文 Inter + 雅黑/苹方。设计基准约 1920 宽(`html` rem clamp)。章节多为 full-bleed 背景 + 纵向 scroll-snap。
|
||||
|
||||
## 静态资源
|
||||
|
||||
- 生产图:[`public/assets/`](public/assets/)(`bg-*.png`、T30 瓶身、印章/logo、二维码等)
|
||||
- 引用路径:`/assets/...`
|
||||
- [`public/assets/pdf-ref/`](public/assets/pdf-ref/):PDF/设计参考,**不要挂进生产 UI**
|
||||
|
||||
## 常用命令
|
||||
|
||||
```bash
|
||||
npm run dev # Vite 开发
|
||||
npm run build # tsc -b && vite build
|
||||
npm run preview # 预览 dist
|
||||
npm run lint # oxlint
|
||||
```
|
||||
|
||||
## 合规与文案
|
||||
|
||||
- 文案以中文为主,集中在 `App.tsx` 顶部常量与各 section JSX
|
||||
- 保留页脚合规表述:理性饮酒、未成年人禁止饮酒、不构成收益承诺、细则以合作政策为准、ICP(`晋ICP备2026004970号`)
|
||||
- 合作/补贴类表述勿写成收益承诺
|
||||
|
||||
## 开发约定(速查)
|
||||
|
||||
1. 优先改 `App.tsx` / `App.css`,不要为单页硬上路由或组件库。
|
||||
2. 新增章节:选对 `poetic-section` 或 `tech-section`,并更新 `sections`、`navItems`、DOM `id`、展控 UI。
|
||||
3. 动效沿用现有 `fadeRise` / `reveal-*` / `.is-entered`,勿堆无关装饰。
|
||||
4. 更细的 Cursor 规则见 [`.cursor/rules/`](.cursor/rules/)。
|
||||
@@ -1,32 +0,0 @@
|
||||
# React + TypeScript + Vite
|
||||
|
||||
This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules.
|
||||
|
||||
Currently, two official plugins are available:
|
||||
|
||||
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
|
||||
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
|
||||
|
||||
## React Compiler
|
||||
|
||||
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
||||
|
||||
## Expanding the Oxlint configuration
|
||||
|
||||
If you are developing a production application, we recommend enabling type-aware lint rules by installing `oxlint-tsgolint` and editing `.oxlintrc.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
||||
"plugins": ["react", "typescript", "oxc"],
|
||||
"options": {
|
||||
"typeAware": true
|
||||
},
|
||||
"rules": {
|
||||
"react/rules-of-hooks": "error",
|
||||
"react/only-export-components": ["warn", { "allowConstantExport": true }]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
See the [Oxlint rules documentation](https://oxc.rs/docs/guide/usage/linter/rules) for the full list of rules and categories.
|
||||
@@ -1,17 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta
|
||||
name="description"
|
||||
content="杜康好客品牌官网,你请客我买单。发布会展项单页展示,支持展控模式。"
|
||||
/>
|
||||
<title>杜康好客品牌官网|你请客,我买单</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"name": "dukangguanwang",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "tsc -b && vite build",
|
||||
"lint": "oxlint",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "^19.2.7",
|
||||
"react-dom": "^19.2.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.13.2",
|
||||
"@types/react": "^19.2.17",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"@vitejs/plugin-react": "^6.0.3",
|
||||
"oxlint": "^1.71.0",
|
||||
"typescript": "~6.0.2",
|
||||
"vite": "^8.1.1"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 835 KiB |
|
Before Width: | Height: | Size: 58 KiB |
@@ -1,27 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="1000" viewBox="0 0 1600 1000">
|
||||
<defs>
|
||||
<filter id="paperNoise">
|
||||
<feTurbulence type="fractalNoise" baseFrequency="0.012" numOctaves="5" seed="8"/>
|
||||
<feColorMatrix type="matrix" values="0.22 0 0 0 0.72 0 0.18 0 0 0.58 0 0 0.12 0 0.38 0 0 0 0.16 0"/>
|
||||
</filter>
|
||||
<radialGradient id="warm" cx="26%" cy="18%" r="74%">
|
||||
<stop offset="0" stop-color="#fff8e8"/>
|
||||
<stop offset="0.58" stop-color="#f4e2c3"/>
|
||||
<stop offset="1" stop-color="#e7cfaa"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="ink" x1="0" x2="1" y1="0" y2="1">
|
||||
<stop offset="0" stop-color="#24160f" stop-opacity="0.18"/>
|
||||
<stop offset="1" stop-color="#24160f" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1600" height="1000" fill="url(#warm)"/>
|
||||
<rect width="1600" height="1000" filter="url(#paperNoise)" opacity="0.62"/>
|
||||
<path d="M-90 640C180 470 310 845 560 690C755 568 808 254 1086 276C1298 293 1368 496 1700 382" fill="none" stroke="#7d6a55" stroke-opacity="0.13" stroke-width="68" stroke-linecap="round"/>
|
||||
<path d="M1220 64c80 30 148 96 182 172 31 68 21 132-26 158-54 30-134-8-190-78-75-93-67-217 34-252Z" fill="url(#ink)"/>
|
||||
<path d="M112 178c180-76 286-68 346 22 50 75-8 161-148 202-112 32-250 6-316-60-48-48-17-116 118-164Z" fill="#a71922" opacity="0.045"/>
|
||||
<g opacity="0.2" stroke="#c99a45" stroke-width="1">
|
||||
<path d="M120 120h420"/><path d="M120 160h360"/><path d="M120 200h280"/>
|
||||
<path d="M1040 780h380"/><path d="M1120 820h300"/><path d="M1180 860h240"/>
|
||||
</g>
|
||||
<text x="1340" y="248" writing-mode="tb" font-family="serif" font-size="76" font-weight="800" fill="#a71922" opacity="0.08">酒祖杜康</text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 4.9 MiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 4.9 MiB |
|
Before Width: | Height: | Size: 7.9 MiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 329 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 245 KiB |
|
Before Width: | Height: | Size: 300 KiB |
|
Before Width: | Height: | Size: 242 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 317 KiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 317 KiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 3.0 MiB |
|
Before Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 329 KiB |
|
Before Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 319 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 319 KiB |
|
Before Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 329 KiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 557 KiB |
|
Before Width: | Height: | Size: 319 KiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 273 KiB |
|
Before Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 234 KiB |
|
Before Width: | Height: | Size: 42 KiB |