genesis+worker: design system Genesis ทั้งชุด + patch pdf.worker แก้ fake-space ไทย + ปิด review design/responsive/quality รอบ 2026-09-24 — (1) Genesis: ฟอนต์ General Sans self-host + DM Sans + Sarabun, AppNav 56px backdrop-blur แทน SessionBar, DotGrid หน้า login, palette/รัศมี/เงา/focus ตาม docs/DESIGN.md ครบทุกหน้า (2) postinstall scripts/patch-pdf-worker.mjs ถอด if (scaledDim) รอบ prevTransform ให้อัปเดตทุก glyph — กัน addFakeSpaces แทรก space กลางคำไทยใน PDF ที่ justify ด้วย letter-spacing + test กัน regression (tests/scripts/ + fixture thai_letterspacing.pdf, invariant #6) (3) ฟอร์มอัปโหลด + ช่องกลุ่ม typeId ทางเลือก — normDocumentGroup ที่ utils/external-file.ts เป็น single source ร่วมกับ N8 (4) token fixes: focus ring ปุ่ม pin + แถว bookmark ตามหน้า, ปุ่ม action ใน popup/composer/dialog เป็น rounded-md ทั้งคู่, selection preview เป็น tint ของ primary แทน blue-500 ดิบ, default สี shape/highlight รวมที่ utils/annotation-display, loading animate-pulse + จดข้อยกเว้น (เงา pin, font weights ของ viewer) ลง DESIGN.md (5) responsive: Export PDF max-lg:order-first ให้เห็นบน iPad, แถวบน header แถวเดียวเลื่อนได้บนจอแคบ, re-fit ความกว้างตอน toggle sidebar เฉพาะเมื่อยังไม่ซูมเอง, pin popover flip ขึ้นบนเมื่อใกล้ท้ายหน้า, toast hint ตอนสลับ tool กลางเอกสาร, ป้าย "ชนิด · ผู้ทำ" ของรายการผู้อื่นสำหรับจอสัมผัส (6) คุณภาพ: @layer ครอบ @media กันกฎ touch รั่ยไป desktop (Tailwind v3 ยก @layer ออกจาก media ทิ้ง wrapper — ยืนยันด้วย build จริง + วัดบนจอ), กฎ M5 ครอบ contenteditable กัน Safari zoom ตอนแก้ไข TEXTBOX บน iPad, COMMENT ใช้ box มาตราฐานเดียวตาม pin px จริง (render/scroll target/move-clamp/bookmark), ตัดหัวการ์ดซ้ำกับ h2 หน้ารายการ — พร้อมไฟล์ untracked ที่ postinstall/โค้ดอ้างถึงครบชุด (app/fonts/, AppNav, DotGrid, tests/) กัน fresh clone fail ที่ npm install (คำขอผู้ใช้ 2026-09-24)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
parent
e254b935ce
commit
c5c6b65bd2
42 changed files with 1429 additions and 745 deletions
|
|
@ -6,7 +6,69 @@ const config: Config = {
|
|||
extend: {
|
||||
colors: {
|
||||
// สีหลักของระบบ (accent ทุกจุด: ปุ่ม active/action, กรอบ selection, หัวข้อหลัก)
|
||||
// ห้ามเปลี่ยนโดยไม่เช็ค contrast บนขาว/canvas ≥3:1 — เป็นสี focus outline ทึบ
|
||||
// ของ Genesis (.focus-ring ใน globals.css; #0033A1 ปัจจุบัน ≈10.6:1)
|
||||
primary: "rgb(0 51 161 / <alpha-value>)",
|
||||
// Genesis (docs/DESIGN.md 2026-09-23): palette ส่วนที่เหลือของ design system —
|
||||
// naming หลีก "primary/secondary" ของข้อความเพื่อไม่ชนกับ primary น้ำเงินด้านบน
|
||||
"primary-hover": "#002780",
|
||||
success: "#10B981",
|
||||
warning: "#F59E0B",
|
||||
error: "#EF4444",
|
||||
// ระดับข้อความ/ไอคอนสถานะบนพื้นขาว (UX review 2026-09-23): ตัว 500 บนขาวได้แค่
|
||||
// 2.2–3.8:1 ไม่ผ่าน WCAG 4.5:1 ของตัวอักษร — ข้อความ/ไอคอนสถานะใช้ค่า -ink
|
||||
// (ผ่าน 5:1 ขึ้นไปทั้งชุด) ส่วน 500 คงไว้สำหรับ border/bg tint (เช่น bg-warning/15)
|
||||
"success-ink": "#047857",
|
||||
"warning-ink": "#B45309",
|
||||
"error-ink": "#B91C1C",
|
||||
canvas: "#FAFAFA",
|
||||
line: "#E8E8EC",
|
||||
ink: "#0A0A0A",
|
||||
"ink-soft": "#6B6B6B",
|
||||
"ink-faint": "#9C9C9C",
|
||||
},
|
||||
fontFamily: {
|
||||
// Genesis: display = General Sans, body = DM Sans — ทั้งคู่ Latin เท่านั้น
|
||||
// ใส่ Sarabun ต่อท้ายเป็น fallback ไทย (glyph ไทยตกไป Sarabun อัตโนมัติ)
|
||||
display: [
|
||||
"var(--font-general-sans)",
|
||||
"var(--font-sarabun)",
|
||||
"-apple-system",
|
||||
"Segoe UI",
|
||||
"Leelawadee UI",
|
||||
"Thonburi",
|
||||
"Noto Sans Thai",
|
||||
"sans-serif",
|
||||
],
|
||||
body: [
|
||||
"var(--font-dm-sans)",
|
||||
"var(--font-sarabun)",
|
||||
"-apple-system",
|
||||
"Segoe UI",
|
||||
"Leelawadee UI",
|
||||
"Thonburi",
|
||||
"Noto Sans Thai",
|
||||
"sans-serif",
|
||||
],
|
||||
},
|
||||
fontSize: {
|
||||
// Genesis type scale: Display 72 / Headline 60 / Section 32 / Subhead 24 /
|
||||
// Body 15 / Small 13 / Caption 12 / Overline 11 — heading ผูก bold + tracking
|
||||
// แน่นตาม spec (-0.03em ถึง -0.04em) ให้ไทย (Sarabun) ได้ weight 700 ตาม
|
||||
display: ["4.5rem", { lineHeight: "1.02", letterSpacing: "-0.04em", fontWeight: "700" }],
|
||||
headline: ["3.75rem", { lineHeight: "1.05", letterSpacing: "-0.04em", fontWeight: "700" }],
|
||||
"section-title": ["2rem", { lineHeight: "1.2", letterSpacing: "-0.03em", fontWeight: "700" }],
|
||||
subhead: ["1.5rem", { lineHeight: "1.3", letterSpacing: "-0.02em", fontWeight: "700" }],
|
||||
body: ["0.9375rem", { lineHeight: "1.65" }],
|
||||
small: ["0.8125rem", { lineHeight: "1.55" }],
|
||||
caption: ["0.75rem", { lineHeight: "1.5" }],
|
||||
overline: ["0.6875rem", { lineHeight: "1.4", letterSpacing: "0.08em", fontWeight: "500" }],
|
||||
},
|
||||
boxShadow: {
|
||||
// Genesis elevation: card ได้เงาเฉพาะตอน hover (static ไม่มีเงา) +
|
||||
// ปุ่ม primary ได้ glow ฟ้าตอน hover / dropdown ใช้ shadow-lg ของ default
|
||||
"card-hover": "0 8px 30px rgba(0,0,0,0.08)",
|
||||
"btn-glow": "0 4px 12px rgba(0,51,161,0.35)",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue