Tahta — Design System Cho Slidev, 13 Biến Thể 1 Dòng
Tahta là design system cho Slidev — tokens, components, layouts, 13 biến thể thiết kế, đổi style toàn bộ deck chỉ với 1 dòng config.
Làm slide thuyết trình đẹp luôn là một cuộc chiến. Bạn có thể dùng PowerPoint và mất hàng giờ căn chỉnh. Hoặc dùng Slidev — viết slide bằng Markdown — nhưng rồi vẫn phải lo chuyện theme, màu sắc, bố cục.
Tahta giải quyết vấn đề này triệt để. Nó không chỉ là một theme Slidev — nó là một design system hoàn chỉnh: tokens, components, layouts, với 13 biến thể thiết kế khác nhau, và bạn chuyển đổi giữa chúng chỉ bằng một dòng config.
Tahta Là Gì?#
Tahta (tác giả: Cagdas Salur ↗) là một design system mã nguồn mở (MIT) cho Slidev. Nó cung cấp:
- Token foundation — hệ thống thiết kế 3 tầng (primitives → semantic → variants)
- Component library — Stat, Plot (ECharts), Callout, Badge, Icon, Reveal…
- 30+ layouts — cover, stats, chart, timeline, compare, code, agenda…
- 13 variants — 6 dark / 7 light, mỗi variant là một phong cách hoàn toàn khác
Khác với theme Slidev thông thường (chỉ là stylesheet + vài layout), Tahta là một hệ thống có ràng buộc — tokens được định nghĩa bằng dữ liệu, components đọc token, và variants là một remap của token layer.
13 Variants — 13 Phong Cách#
Điểm ấn tượng nhất của Tahta: bạn đổi toàn bộ diện mạo deck chỉ bằng một dòng:
themeConfig:
variant: brutalist # đổi style toàn bộ slideyaml13 variants có sẵn:
| Variant | Scheme | Font | Cảm giác |
|---|---|---|---|
| editorial (mặc định) | dark | Fraunces + Hanken | Keynote tinh tế |
| brutalist | dark | Space Mono | Thô, kỹ thuật |
| soft | light | Plus Jakarta | Thân thiện, product |
| minimal | light | Archivo heavy | Editorial tương phản cao |
| paper | light | Fraunces serif | Ấm áp, vintage |
| atelier | dark | Hanken gradient | Studio, premium |
| notebook | light | Hanken bold | Vở học sinh, vui tươi |
| lagoon | dark | Hanken heavy | Teal pastel, moody |
| press | light | Fraunces serif | Tạp chí editorial |
| boardroom | dark | Hanken | Navy + cam, corporate |
| signal | dark | Hanken heavy | True black + glow, launch |
| muse | light | Fraunces serif | Đá xám, trí thức |
| poster | light | Anton condensed | Cream + accent nóng, athletic |
Mỗi variant thay đổi toàn bộ: typeface, shapes, textures, density, motion, palette — không chỉ đổi màu.
Cài Đặt#
npm i slidev-theme-tahta echartsbash(ECharts chỉ cần nếu bạn dùng chart layout.)
Sử Dụng#
Khai báo theme trong frontmatter của file .md:
---
theme: slidev-theme-tahta
title: Bài nói của tôi
themeConfig:
variant: editorial
layout: cover
kicker: Team · 2026
subtitle: Một dòng, 13 phong cách
---yamlMỗi layout đọc structured frontmatter — bạn điền dữ liệu, không dàn trang:
---
layout: stats
kicker: Con số
title: Những gì đã thay đổi
stats:
- { value: 80, unit: "%", label: Giảm latency }
- { value: 33, unit: "%", label: Tiết kiệm chi phí }
- { value: 0, label: Giây downtime }
---yamlChín dòng, zero markup, một slide stats hoàn chỉnh.
Layouts#
Tahta cung cấp 30+ layouts chia làm 2 nhóm:
Keynote / Pitch: cover, lead, section, default, statement, bigtype, quote, stats, fact, metric, compare, chart, steps, feature, timeline, logos, code, two-cols, image, showcase, bleed, embed, end
Teaching / Technical: agenda, define, columns, panels, reference, vs, code-explain, diagram (Mermaid) + các components <Kbd>, <Terminal>, <FileTree>
Charts hỗ trợ bar, line, area, donut (ECharts) với bảng màu categorical sinh tự động từ accent color. Code layout hỗ trợ Magic Move.
Theme Đi Sâu#
Tahta có 3 cấp độ tuỳ chỉnh, tất cả đều declarative:
1. Variant#
themeConfig:
variant: brutalistyamlĐổi toàn bộ style bundle — type, shape, texture, density, motion, palette.
2. Accent#
themeConfig:
variant: soft
accent: '#c8f135' # override brand coloryamlChỉ override hue — lightness/chroma tự normalize vào variant envelope, đảm bảo màu lúc nào cũng hài hoà, không chói.
3. Tokens#
Hệ thống 3 tầng trong packages/theme/styles/tokens.css:
- Primitives — giá trị gốc (màu, spacing, font size…)
- Semantic tokens — components chỉ đọc tầng này
- Variant bundles — mỗi variant là một
:root[data-variant='…']remap
Muốn custom sâu? Thêm variant mới: viết một block :root[data-variant='…'] là xong.
Branding & Imagery#
themeConfig:
logo: /path/to/logo.svg
logoInvert: /path/to/logo-dark.svgyamlLogo hiển thị lớn trên slide mở đầu, small mark ở footer slide nội dung. Có thể tắt bằng mark: false.
Tahta còn ship module tahta-imagine — crop → duotone theo palette variant → grain. Agent AI có thể dùng nó để tạo ảnh tự động.
Kiến Trúc Hệ Thống#
packages/
theme/ # slidev-theme-tahta
tokens.json # primitives → semantic → variants
layouts.json # published contract: mọi layout + field
variants.json # published contract: mọi variant
components/ # Stat, Plot, Callout, Badge...
layouts/ # 30+ layouts
modules/ # agent capability modules (branding, imagery)
grade/ # @zcag/tahta-grade — CLI visual gradingplaintextĐiểm đặc biệt: layouts.json và variants.json ship trong package như một published contract — máy đọc được. AGENTS.md của theme được generate từ những file này.
Quality Enforcement#
Tahta có CI pipeline kiểm tra:
- Token contract — không có hardcoded values
- WCAG-AA contrast — mọi variant đều pass
- Render test — CI render mọi layout × mọi variant
Công cụ tahta-grade export từng slide ra PNG, flag lỗi blank/broken/overflow, serve side-by-side report với tab cho từng variant.
Tahta vs Theme Thường#
| Tiêu chí | Theme Slidev thường | Tahta |
|---|---|---|
| Thay đổi style | Sửa CSS thủ công | 1 dòng variant: |
| Components | Rất ít hoặc không | Stat, Plot, Callout, Badge, Icon… |
| Tokens | Không | 3-tier token system |
| Published contract | Không | layouts.json + variants.json |
| Testing | Thủ công | CI render × grade |
| Agent support | Không | Modules cho AI agent |
Kết Luận#
Tahta không phải là một theme — nó là một design system cho Slidev. Token-driven, component-based, variant-powered. 13 phong cách, 30+ layouts, zero CSS, một dòng config để đổi toàn bộ diện mạo.
Nếu bạn dùng Slidev và muốn slide đẹp mà không tốn thời gian dàn trang, Tahta là lựa chọn đáng thử.
Live explorer: tahta.cagdas.io ↗ — xem mọi layout × mọi variant.