fix all bug
This commit is contained in:
parent
61a2d332dd
commit
b12474a232
|
|
@ -31,7 +31,7 @@ B 未過關前,不大寫業務後端。
|
||||||
|
|
||||||
- 新殼在 `apps/web`;不引入 MUI/Ant/Chakra。
|
- 新殼在 `apps/web`;不引入 MUI/Ant/Chakra。
|
||||||
- 不複製任天堂 / Nook UI;不用 emoji 當主 icon。
|
- 不複製任天堂 / Nook UI;不用 emoji 當主 icon。
|
||||||
- 字體:Inter + Taipei Sans TC。
|
- 字體:Inter + Noto Sans TC(中文單一家族,可變字重 400–700)。
|
||||||
- mock | live 同一 repository 介面。
|
- mock | live 同一 repository 介面。
|
||||||
- 詳見 `docs/product/haixun-console/spec.md`。
|
- 詳見 `docs/product/haixun-console/spec.md`。
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,11 +27,11 @@
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<!-- Inter (Latin); 中文由 Taipei Sans TC(npm)承接 -->
|
<!-- Inter(拉丁)+ Noto Sans TC(中文,可變 400–700:含 500/600/650) -->
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400..700&family=Noto+Sans+TC:wght@400..700&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
</head>
|
</head>
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.7",
|
||||||
"react-dom": "^19.2.7",
|
"react-dom": "^19.2.7",
|
||||||
"react-router-dom": "^7.18.1",
|
"react-router-dom": "^7.18.1"
|
||||||
"taipei-sans-tc": "^0.1.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@testing-library/jest-dom": "^6.9.1",
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
|
|
@ -3120,12 +3119,6 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/taipei-sans-tc": {
|
|
||||||
"version": "0.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/taipei-sans-tc/-/taipei-sans-tc-0.1.1.tgz",
|
|
||||||
"integrity": "sha512-GCvdO+SATITfm128bT+fFmbpVW8+o0zLMVlNskSOk3CBghNzfqj4tvwTbIQ9vmvftd31s5UNypLA3aIw/IG6RQ==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/tinybench": {
|
"node_modules/tinybench": {
|
||||||
"version": "2.9.0",
|
"version": "2.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -15,15 +15,14 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"react": "^19.2.7",
|
"react": "^19.2.7",
|
||||||
"react-dom": "^19.2.7",
|
"react-dom": "^19.2.7",
|
||||||
"react-router-dom": "^7.18.1",
|
"react-router-dom": "^7.18.1"
|
||||||
"taipei-sans-tc": "^0.1.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
|
"@testing-library/react": "^16.3.2",
|
||||||
"@types/node": "^24.13.2",
|
"@types/node": "^24.13.2",
|
||||||
"@types/react": "^19.2.17",
|
"@types/react": "^19.2.17",
|
||||||
"@types/react-dom": "^19.2.3",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@testing-library/jest-dom": "^6.9.1",
|
|
||||||
"@testing-library/react": "^16.3.2",
|
|
||||||
"@vitejs/plugin-react": "^6.0.3",
|
"@vitejs/plugin-react": "^6.0.3",
|
||||||
"jsdom": "^26.1.0",
|
"jsdom": "^26.1.0",
|
||||||
"oxlint": "^1.71.0",
|
"oxlint": "^1.71.0",
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ export function SidebarNav() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<aside className="hb-sidebar" aria-label={t("nav.navigate")}>
|
<aside className="hb-sidebar" aria-label={t("nav.navigate")}>
|
||||||
<p className="hb-sidebar__label display-en">{t("nav.navigate")}</p>
|
<p className="hb-sidebar__label">{t("nav.navigate")}</p>
|
||||||
{groups.map(({ group, items }) => (
|
{groups.map(({ group, items }) => (
|
||||||
<div className="hb-nav__group" key={group.key}>
|
<div className="hb-nav__group" key={group.key}>
|
||||||
<p className="hb-nav__group-label">{t(group.labelKey)}</p>
|
<p className="hb-nav__group-label">{t(group.labelKey)}</p>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ export function Topbar() {
|
||||||
{locale === "zh-TW" ? (
|
{locale === "zh-TW" ? (
|
||||||
<span className="hb-topbar__en display-en">{t("app.nameEn")}</span>
|
<span className="hb-topbar__en display-en">{t("app.nameEn")}</span>
|
||||||
) : (
|
) : (
|
||||||
<span className="hb-topbar__en display-en">{t("app.nameZh")}</span>
|
<span className="hb-topbar__en">{t("app.nameZh")}</span>
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,7 @@
|
||||||
@import "./ui.css";
|
@import "./ui.css";
|
||||||
@import "./layout.css";
|
@import "./layout.css";
|
||||||
|
|
||||||
/* Taipei Sans TC: Regular + Bold only (avoid thin weights at small sizes). */
|
/* 中文:Noto Sans TC 由 index.html 以可變字重 400–700 載入。 */
|
||||||
@import "taipei-sans-tc/dist/Regular/TaipeiSansTCBeta-Regular.css";
|
|
||||||
@import "taipei-sans-tc/dist/Bold/TaipeiSansTCBeta-Bold.css";
|
|
||||||
|
|
||||||
*,
|
*,
|
||||||
*::before,
|
*::before,
|
||||||
|
|
@ -33,6 +31,7 @@ body {
|
||||||
font-size: var(--hb-text-base);
|
font-size: var(--hb-text-base);
|
||||||
line-height: 1.58;
|
line-height: 1.58;
|
||||||
letter-spacing: -0.011em;
|
letter-spacing: -0.011em;
|
||||||
|
font-synthesis: none;
|
||||||
color: var(--hb-ink);
|
color: var(--hb-ink);
|
||||||
/* 星圖網格 + 潮汐法光,低對比避免干擾資訊。 */
|
/* 星圖網格 + 潮汐法光,低對比避免干擾資訊。 */
|
||||||
background:
|
background:
|
||||||
|
|
@ -126,7 +125,7 @@ svg {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* English decorative labels */
|
/* English decorative labels — same Inter + Noto Sans TC stack as body */
|
||||||
.display-en {
|
.display-en {
|
||||||
font-family: var(--hb-font-en);
|
font-family: var(--hb-font-en);
|
||||||
letter-spacing: 0.02em;
|
letter-spacing: 0.02em;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
* 巡樓 · Lapras — Harbor Desk UI
|
* 巡樓 · Lapras — Harbor Desk UI
|
||||||
* 色:pale blue 主色 / cream 次色 / burnt orange 點綴(Pokémon Palette)
|
* 色:pale blue 主色 / cream 次色 / burnt orange 點綴(Pokémon Palette)
|
||||||
* 字體:Inter + Taipei Sans TC
|
* 字體:Inter(拉丁)+ Noto Sans TC(中文,可變字重 400–700)
|
||||||
*
|
*
|
||||||
* 唯一真相:顏色、字級、間距只在這個檔案定義。其他 css 與 tsx 一律吃 var(),
|
* 唯一真相:顏色、字級、間距只在這個檔案定義。其他 css 與 tsx 一律吃 var(),
|
||||||
* 不寫死色碼與 font-size —— 否則深淺模式會有一半的畫面不跟著切。
|
* 不寫死色碼與 font-size —— 否則深淺模式會有一半的畫面不跟著切。
|
||||||
|
|
@ -87,9 +87,9 @@
|
||||||
--hb-shadow-float: 0 16px 48px rgb(21 38 40 / 0.12);
|
--hb-shadow-float: 0 16px 48px rgb(21 38 40 / 0.12);
|
||||||
--hb-shadow-glow: 0 0 24px rgb(139 197 205 / 0.4);
|
--hb-shadow-glow: 0 0 24px rgb(139 197 205 / 0.4);
|
||||||
|
|
||||||
--hb-font-sans: "Inter", "Taipei Sans TC", system-ui, -apple-system, "Segoe UI",
|
/* Latin → Inter;中文只走 Noto Sans TC(400–700,含 500/600/650)。 */
|
||||||
"Noto Sans TC", sans-serif;
|
--hb-font-sans: "Inter", "Noto Sans TC", system-ui, -apple-system, "Segoe UI", sans-serif;
|
||||||
--hb-font-en: "Inter", system-ui, -apple-system, sans-serif;
|
--hb-font-en: var(--hb-font-sans);
|
||||||
--hb-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
--hb-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
||||||
|
|
||||||
/* 字階只有這 7 級,之間沒有中間值 —— 0.8 / 0.82 / 0.85 併存看不出差別,
|
/* 字階只有這 7 級,之間沒有中間值 —— 0.8 / 0.82 / 0.85 併存看不出差別,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "thread-master",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
Loading…
Reference in New Issue