- primary 换成 Indigo 阶(600 即 #4F46E5),中性色转 Slate 轴、纸面更冷更白 - 实心主色面(主按钮、工作区选中)用 600,链接/浅底文字仍用 700 保对比度 - 信息色 sky 调深到 #16697C,与靛蓝同屏能分清 - Logo / favicon / PWA 图标 / 安卓自适应图标统一为靛蓝底 + 白线 + 淡紫点,tools/make-icons.py 重新生成 - 文档与 e2e 断言同步(主题色 #4f46e5)
@@ -118,7 +118,7 @@ async function main() {
|
||||
check("页面骨架已预缓存", shellCached);
|
||||
|
||||
const themeColor = await page.getAttribute('meta[name="theme-color"]', "content");
|
||||
check("主题色是景泰蓝", themeColor === "#274b73", String(themeColor));
|
||||
check("主题色是品牌靛蓝", themeColor === "#4f46e5", String(themeColor));
|
||||
check("桌面尺寸没有控制台报错", errors.length === 0, errors.join(" | "));
|
||||
await desktop.close();
|
||||
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
||||
<title>达道Task</title>
|
||||
<meta name="description" content="达道Task:任务、工单、知识库,一条道走到底" />
|
||||
<!-- 和 App 内左上角、安卓桌面同一枚图标:三段浅蓝白线 + 一点亮蓝 -->
|
||||
<!-- 和 App 内左上角、安卓桌面同一枚图标:靛蓝底 + 三条白线 + 一点淡紫 -->
|
||||
<link
|
||||
rel="icon"
|
||||
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='18' fill='%23274B73'/%3E%3Cg stroke='%23EAF3FB' stroke-width='4' stroke-linecap='round'%3E%3Cpath d='M18 23h28'/%3E%3Cpath d='M18 32h19'/%3E%3Cpath d='M18 41h12'/%3E%3C/g%3E%3Ccircle cx='46' cy='41' r='6' fill='%235CA8E8'/%3E%3C/svg%3E"
|
||||
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='18' fill='%234F46E5'/%3E%3Cg stroke='%23FFFFFF' stroke-width='4' stroke-linecap='round'%3E%3Cpath d='M18 23h28'/%3E%3Cpath d='M18 32h19'/%3E%3Cpath d='M18 41h12'/%3E%3C/g%3E%3Ccircle cx='46' cy='41' r='6' fill='%23C7D2FE'/%3E%3C/svg%3E"
|
||||
/>
|
||||
<!-- 装到手机主屏之后:状态栏跟品牌色走,iOS 用不透明底图 -->
|
||||
<meta name="theme-color" content="#274b73" />
|
||||
<meta name="theme-color" content="#4f46e5" />
|
||||
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-title" content="达道Task" />
|
||||
|
||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 8.7 KiB |
@@ -290,13 +290,13 @@ export const Spinner = ({ size = 16, className = "" }: { size?: number; classNam
|
||||
|
||||
export const Logo = ({ size = 28 }: { size?: number }) => (
|
||||
<svg width={size} height={size} viewBox="0 0 32 32" aria-hidden>
|
||||
<rect width="32" height="32" rx="9" fill="#274B73" />
|
||||
<rect width="32" height="32" rx="9" fill="#4F46E5" />
|
||||
<path
|
||||
d="M9 11.5h14M9 16h9.5M9 20.5h6"
|
||||
stroke="#EAF3FB"
|
||||
stroke="#FFFFFF"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
/>
|
||||
<circle cx="23" cy="20.5" r="3" fill="#5CA8E8" />
|
||||
<circle cx="23" cy="20.5" r="3" fill="#C7D2FE" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
disabled:pointer-events-none disabled:opacity-40;
|
||||
}
|
||||
.btn-primary {
|
||||
@apply btn bg-primary-700 text-white shadow-sm hover:bg-primary-800 active:translate-y-px;
|
||||
@apply btn bg-primary-600 text-white shadow-sm hover:bg-primary-700 active:translate-y-px;
|
||||
}
|
||||
.btn-ghost {
|
||||
@apply btn border border-line-200 bg-white text-ink-700 hover:border-line-300 hover:bg-paper-50;
|
||||
@@ -157,8 +157,8 @@
|
||||
scrollbar-width: none;
|
||||
}
|
||||
.grid-lines {
|
||||
background-image: linear-gradient(to right, rgba(22, 28, 26, 0.04) 1px, transparent 1px),
|
||||
linear-gradient(to bottom, rgba(22, 28, 26, 0.04) 1px, transparent 1px);
|
||||
background-image: linear-gradient(to right, rgba(15, 23, 42, 0.04) 1px, transparent 1px),
|
||||
linear-gradient(to bottom, rgba(15, 23, 42, 0.04) 1px, transparent 1px);
|
||||
background-size: 32px 32px;
|
||||
}
|
||||
}
|
||||
@@ -443,6 +443,6 @@
|
||||
.rich-text .vditor-hint {
|
||||
border-color: theme("colors.line.200");
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 12px 32px -12px rgba(31, 42, 40, 0.28);
|
||||
box-shadow: 0 12px 32px -12px rgba(15, 23, 42, 0.28);
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
@@ -157,7 +157,7 @@ export function WorkspacePage() {
|
||||
<span
|
||||
className={`pill ${
|
||||
m.role === "owner"
|
||||
? "bg-primary-700 text-white"
|
||||
? "bg-primary-600 text-white"
|
||||
: m.role === "admin"
|
||||
? "bg-primary-50 text-primary-700"
|
||||
: "bg-paper-200 text-ink-600"
|
||||
|
||||
@@ -4,44 +4,44 @@ export default {
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
// 底色:暖白纸面,不用纯白,避免刺眼、也让卡片有层次
|
||||
// 底色:近白的冷调纸面,不用纯白,避免刺眼、也让卡片有层次
|
||||
paper: {
|
||||
50: "#F9FAFC",
|
||||
100: "#F3F5F9",
|
||||
200: "#E9EDF3",
|
||||
300: "#DFE5ED",
|
||||
50: "#FAFAFC",
|
||||
100: "#F4F5F9",
|
||||
200: "#EBEDF3",
|
||||
300: "#E0E4EC",
|
||||
},
|
||||
// 分隔线与描边(冷灰,跟蓝主色同一个中性轴)
|
||||
// 分隔线与描边(冷灰,跟靛蓝同一个中性轴)
|
||||
line: {
|
||||
100: "#EDEFF3",
|
||||
200: "#E2E6EC",
|
||||
300: "#D3D9E1",
|
||||
100: "#EEF0F5",
|
||||
200: "#E3E7EF",
|
||||
300: "#D5DAE4",
|
||||
},
|
||||
// 文字与中性
|
||||
// 文字与中性(Slate 轴:比纯灰更冷一点,和靛蓝同屏不打架)
|
||||
ink: {
|
||||
50: "#F6F8FA",
|
||||
100: "#E9EEF3",
|
||||
200: "#D7DEE7",
|
||||
300: "#B8C2CE",
|
||||
400: "#929EAD",
|
||||
500: "#5F6B7C",
|
||||
600: "#4E5867",
|
||||
700: "#3A4352",
|
||||
800: "#262D39",
|
||||
900: "#161C25",
|
||||
400: "#94A3B8",
|
||||
500: "#64748B",
|
||||
600: "#475569",
|
||||
700: "#334155",
|
||||
800: "#1E293B",
|
||||
900: "#0F172A",
|
||||
},
|
||||
// 主色:景泰蓝(沉一点的靛蓝),克制、有"工作台"气质,避开任务工具常见的荧光蓝
|
||||
// 主色:靛蓝 #4F46E5(Indigo 600)。饱和度足、明度高,压在按钮/链接/选中态上不发灰。
|
||||
primary: {
|
||||
50: "#EFF5FB",
|
||||
100: "#DCE9F7",
|
||||
200: "#B9D3EC",
|
||||
300: "#8FB6DD",
|
||||
400: "#6094C8",
|
||||
500: "#3E76AC",
|
||||
600: "#2E5D8D",
|
||||
700: "#274B73",
|
||||
800: "#1F3B5B",
|
||||
900: "#1A2F48",
|
||||
50: "#EEF2FF",
|
||||
100: "#E0E7FF",
|
||||
200: "#C7D2FE",
|
||||
300: "#A5B4FC",
|
||||
400: "#818CF8",
|
||||
500: "#6366F1",
|
||||
600: "#4F46E5",
|
||||
700: "#4338CA",
|
||||
800: "#3730A3",
|
||||
900: "#312E81",
|
||||
},
|
||||
// 强调色:陶土橙,只用在"需要人注意"的地方
|
||||
clay: {
|
||||
@@ -59,8 +59,8 @@ export default {
|
||||
sage: { 500: "#2F7D5E", 50: "#EAF4EF" },
|
||||
wheat: { 500: "#A97C25", 50: "#F8F1E2" },
|
||||
rust: { 500: "#B04A32", 50: "#FAEDE9" },
|
||||
// 信息色:往青绿方向拉开一档,和 primary 的「进行中」在同一屏里也能分清
|
||||
sky: { 500: "#1E7F94", 50: "#E6F4F6" },
|
||||
// 信息色:往青绿方向拉开一大档,和靛蓝主色在同一屏里一眼分得清
|
||||
sky: { 500: "#16697C", 50: "#E6F4F6" },
|
||||
},
|
||||
fontFamily: {
|
||||
sans: [
|
||||
@@ -94,8 +94,8 @@ export default {
|
||||
"3xl": "24px",
|
||||
},
|
||||
boxShadow: {
|
||||
card: "0 1px 2px rgba(20,27,36,0.04), 0 8px 24px -16px rgba(20,27,36,0.35)",
|
||||
pop: "0 2px 6px rgba(20,27,36,0.06), 0 20px 48px -24px rgba(20,27,36,0.35)",
|
||||
card: "0 1px 2px rgba(15,23,42,0.04), 0 8px 24px -16px rgba(15,23,42,0.30)",
|
||||
pop: "0 2px 6px rgba(15,23,42,0.06), 0 20px 48px -24px rgba(15,23,42,0.32)",
|
||||
inset: "inset 0 1px 0 rgba(255,255,255,0.6)",
|
||||
},
|
||||
keyframes: {
|
||||
|
||||
@@ -22,8 +22,8 @@ export default defineConfig({
|
||||
scope: "/",
|
||||
display: "standalone",
|
||||
orientation: "any",
|
||||
background_color: "#f3f5f9",
|
||||
theme_color: "#274b73",
|
||||
background_color: "#f4f5f9",
|
||||
theme_color: "#4f46e5",
|
||||
categories: ["productivity", "business"],
|
||||
icons: [
|
||||
{ src: "/icons/icon-192.png", sizes: "192x192", type: "image/png", purpose: "any" },
|
||||
|
||||