Repository navigation
Architecture vi
github-actions[bot] edited this page Nov 3, 2026
·
2 revisions
English: Architecture.
src/
styles/tokens.css, charts.css token Global + Alias (light / dark / high contrast, brand) — nguồn giá trị duy nhất
index.css tắt scale mặc định Tailwind, @theme bridge, @utility, keyframes
lib/ cn(), brandRamp, tokenExport, deprecate
components/ui/<Name>/ 1 component = 1 thư mục; barrel index.ts theo nhóm
lib.ts entry gói npm
docs/ site docs (không thuộc gói)
registry/*.tsx trang component (ComponentDoc) — nạp lười theo file
concepts/, block-library/ trang khái niệm, block
i18n/ VI / EN
scripts/ build CSS, registry shadcn, các bước check
templates/ starter template sinh từ block + src/docs/template-library (sync-templates)
wiki/ nguồn của GitHub Wiki này
e2e/ Playwright (a11y, visual, touch)
Global --brand-80, --grey-14, --shared-teal (giá trị thô, chỉ tokens.css dùng)
↓
Alias --colorBrandBackground, --spacingM, --shadow16 (tên Fluent UI v9)
↓
Utility bg-brand-background, p-3, shadow-16 (component chỉ dùng lớp này)
Theme / brand đổi bằng data-theme / data-brand trên bất kỳ phần tử nào → lồng theme được. Chi tiết: Design.md §2–§4.
| Lệnh | Ra | Ghi chú |
|---|---|---|
npm run build:lib |
dist/ |
ESM preserveModules, .d.ts, "use client" trên mỗi file component; theme.css, styles.css, tokens.css (scripts/build-css.mjs) |
npm run build:docs |
dist-docs/ + public/r/
|
Chạy npm run registry (item shadcn) rồi Vite build site docs |
| Pages workflow | GitHub Pages | Thêm docs các minor cũ vào /vX.Y/ từ tag (scripts/build-versioned-docs.mjs) |
-
Metadata trích lúc build: plugin
yugenDocsMeta(vite.plugins.ts) đọcslug / name / category / leadcủa mọiComponentDocbằng parser Oxc đi kèm Vite (parseSync; TypeScript 7 không có JavaScript API) → sidebar, tìm kiếm, trang chủ hiện ngay; demo nạp lười theo file registry. Vì vậy 4 trường này phải là chuỗi literal. -
Demo tiếng Việt: demo, code mẫu và block chỉ viết một lần, bằng tiếng Anh. Plugin
yugenDemoLangphục vụ<file>.tsx?lang=vivới chuỗi đã thay theoregistry/vi/<file>.json(block:block-library/vi/), chỉ khớp nguyên văn. Trang/vi/nạp module đó thay cho file gốc, nên HTML prerender đã là tiếng Việt. Một lượt build client chạy trước ghi lại module nào vào chunkcommon/icons, để module tiếng Việt không làm đổi chunk tiếng Anh; vì vậy build client lâu gấp khoảng hai lần. -
Chunk (
vite.config.ts): React,shell(những gì entry import),messages,icons(họ icon dùng ở 4+ trang) vàcommon(code thư viện dùng ở 16+ trang). Phần còn lại tách theo route. Gom cả thư viện từng làm trang nào cũng tải ~465 kB, nên đừng thêm nhóm theo package.vite.perf.ts › fluentIconAtomsđổi import@fluentui/react-iconssang file theo họ icon để shell không kéo theo mọi icon. -
Prefetch (
src/docs/prefetch.ts): rê chuột, focus hoặc chạm vào link nội bộ thì nạp chunk, demo và bản dịch của trang đó một lần. Bỏ qua khi bật Save-Data hoặc mạng 2G. -
Service worker (
src/docs/sw/sw.js): file có hash lấy từ cache trước, trang lấy từ mạng trước và giữ bản offline. Tắt: Operations Handbook › Service worker của docs. -
virtual:yugen-type-exports: danh sách type export, để converter StackBlitz tự thêmimport { type X }. -
Ví dụ chạy độc lập:
Example.code(+setupdùng chung) →exampleToApp()(src/docs/stackblitz.ts). Cùng hàm này dùng cho nút StackBlitz vànpm run check:examples. -
Registry shadcn:
scripts/build-registry.mjssuy ra dependency npm và component phụ thuộc từ import của từng file.
| Quyết định | Lý do |
|---|---|
| Tailwind v4 CSS-first, reset scale mặc định | Buộc dùng token, không lẫn bg-blue-500
|
Spacing theo thang số của Tailwind (p-3) |
Ramp Fluent trùng thang 4px của Tailwind; code từ shadcn/ui dùng thẳng được. Alias viết hoa (p-M) deprecated từ 0.10 (#42) |
| Radix + cmdk + react-day-picker | Hành vi & a11y đã được kiểm chứng |
| Chart SVG tự viết | Kiểm soát màu theo token, a11y (bảng dữ liệu, bàn phím), không thêm dependency nặng |
Logical properties + rtl:
|
RTL không cần code riêng |
| Chỉ dùng TypeScript 7 | Trình biên dịch native kiểm tra kiểu nhanh ~5 lần. Script build parse bằng Oxc (từ Vite); check:props dùng API đồng bộ của TypeScript 7 |
| Demo tiếng Anh + từ điển tiếng Việt theo file | Code demo chỉ một bản; trang /vi/ vẫn đọc tự nhiên, test liệt kê chuỗi chưa dịch |
Yugen UI © trandat1114 · MIT · Inspired by Microsoft Fluent 2, not a Microsoft product · Edit the wiki through the wiki/ folder · Lấy cảm hứng từ Microsoft Fluent 2, không phải sản phẩm của Microsoft · Sửa wiki qua thư mục wiki/
Use
Develop
Project
Tiếng Việt
- Trang chủ
- Bắt đầu
- Theme & token
- Câu hỏi thường gặp
- Kiến trúc
- Viết component
- Kiểm thử & CI
- Viết nội dung
- Nhánh & kênh phát hành
- Phát hành
- Cộng đồng & phân loại
- Sổ tay vận hành
Links