chore: initialize deployable website and CMS

This commit is contained in:
Codex User
2026-09-08 11:57:17 +08:00
commit 3a99ae30c5
57 changed files with 11205 additions and 0 deletions
+176
View File
@@ -0,0 +1,176 @@
import { useState } from 'react'
import { Link } from 'react-router-dom'
import { FOUR_VALUES as FALLBACK_FOUR, AMB_STATUS_META } from '@/data/mock'
import { useCMS, getCMSFourValues, getCMSAmb } from '@/services/cms'
import GlobalCTA from '@/components/Layout/GlobalCTA'
export default function Evolution() {
const { data: FOUR_VALUES } = useCMS(getCMSFourValues, FALLBACK_FOUR)
const { data: AMB_META } = useCMS(getCMSAmb, AMB_STATUS_META)
const [foldValues, setFoldValues] = useState(false)
const [foldAmb, setFoldAmb] = useState(false)
return (
<div>
<div className="page-header">
<div className="container">
<div className="breadcrumb">
<Link to="/" style={{ color: 'rgba(255,255,255,0.8)' }}>
</Link>{' '}
/
</div>
<h1></h1>
<p>
<strong> A/M/B </strong>
</p>
<p style={{ fontSize: 12, color: 'rgba(255,255,255,0.6)', marginTop: 8 }}>
V1.1 FINAL
</p>
</div>
</div>
{/* 1. 企业进化思想 */}
<section className="section" id="idea">
<div className="container">
<p className="eyebrow">01 </p>
<h2 className="h2"></h2>
<p className="desc">
</p>
<div className="card" style={{ marginTop: 16 }}>
<h3></h3>
<ul style={{ paddingLeft: 18, fontSize: 14, color: '#475569', lineHeight: 2 }}>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<div className="placeholder" style={{ marginTop: 12 }}>
</div>
</div>
</div>
</section>
{/* 2. 四大价值坐标 */}
<section className="section section-muted" id="values">
<div className="container">
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: 12 }}>
<div>
<p className="eyebrow">02 </p>
<h2 className="h2"></h2>
<p className="desc"></p>
</div>
<button className="foldable-trigger" onClick={() => setFoldValues(!foldValues)} style={{ width: 'auto' }}>
{foldValues ? '收起' : '展开'} <span>{foldValues ? '' : '+'}</span>
</button>
</div>
<div className={`foldable-content ${foldValues ? 'expanded' : 'collapsed'}`} style={{ display: foldValues ? 'block' : undefined }}>
<div className="grid-2" style={{ marginTop: 20 }}>
{FOUR_VALUES.map(v => (
<div key={v.id} className="card">
<h3>{v.name}</h3>
<p style={{ fontSize: 13, color: '#64748b' }}>{v.summary}</p>
<div style={{ marginTop: 10, display: 'flex', flexWrap: 'wrap', gap: 6 }}>
{v.observationDimensions.map(d => (
<span key={d} style={{ fontSize: 11, background: '#f1f5f9', padding: '4px 8px', borderRadius: 999 }}>
{d}
</span>
))}
</div>
<div className="placeholder" style={{ marginTop: 12, fontSize: 12 }}>
{v.description}
</div>
<Link to={`/evolution/values/${v.key}`} className="btn btn-ghost" style={{ marginTop: 12, width: '100%' }}>
</Link>
</div>
))}
</div>
{/* 始终显示在桌面端 */}
<div className="grid-2" style={{ marginTop: 20 }} data-desktop-only>
{/* 兼容:桌面端始终展开,移动端由折叠控制 */}
</div>
</div>
{/* 桌面端强制展开 */}
<div className="grid-2" style={{ marginTop: 20 }}>
{FOUR_VALUES.map(v => (
<div key={v.id} className="card" data-desktop-card>
<h3>{v.name}</h3>
<p style={{ fontSize: 13, color: '#64748b' }}>{v.summary}</p>
<div style={{ marginTop: 10, display: 'flex', flexWrap: 'wrap', gap: 6 }}>
{v.observationDimensions.map(d => (
<span key={d} style={{ fontSize: 11, background: '#f1f5f9', padding: '4px 8px', borderRadius: 999 }}>
{d}
</span>
))}
</div>
<Link to={`/evolution/values/${v.key}`} className="btn btn-ghost" style={{ marginTop: 12, width: '100%' }}>
</Link>
</div>
))}
</div>
<style>{`@media(max-width:768px){ [data-desktop-card]{display:none} } @media(min-width:769px){ .foldable-trigger{display:none} .foldable-content{display:none!important} }`}</style>
</div>
</section>
{/* 3. A/M/B 状态坐标 */}
<section className="section" id="amb">
<div className="container">
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: 12 }}>
<div>
<p className="eyebrow">03 A/M/B </p>
<h2 className="h2">A / M / B </h2>
<p className="desc"></p>
</div>
<button className="foldable-trigger" onClick={() => setFoldAmb(!foldAmb)} style={{ width: 'auto' }}>
{foldAmb ? '收起' : '展开'} <span>{foldAmb ? '' : '+'}</span>
</button>
</div>
<div className="grid-3" style={{ marginTop: 20 }}>
{Object.values(AMB_META).map(m => (
<div key={m.status} className="card">
<h3>{m.label}</h3>
<p style={{ fontSize: 13 }}>{m.description}</p>
<ul style={{ fontSize: 13, color: '#475569', paddingLeft: 18, marginTop: 8 }}>
{m.traits.map(t => (
<li key={t}>{t}</li>
))}
</ul>
<Link to={`/evolution/amb/${m.status}`} className="btn btn-secondary" style={{ marginTop: 12, width: '100%' }}>
{m.status}
</Link>
</div>
))}
</div>
<div className="card" style={{ marginTop: 20, background: '#f8fafc' }}>
<h3></h3>
<p style={{ fontSize: 13, color: '#64748b' }}>
· A / M / B / M
</p>
<div className="placeholder" style={{ marginTop: 10 }}>
</div>
</div>
<div style={{ marginTop: 16, display: 'flex', gap: 10, flexWrap: 'wrap' }}>
<Link to="/self-check" className="btn btn-primary">
</Link>
<Link to="/contact" className="btn btn-ghost">
</Link>
</div>
</div>
</section>
<GlobalCTA title="看清坐标,再谈行动" desc="先完成轻量对照,定位你的价值×状态矩阵,再选择陪跑路径。" />
</div>
)
}