Tailwind CSS Academy · บทเรียน

เอกสารและการส่งต่องานให้ทีม

จัดทำเอกสารของแต่ละคอมโพเนนต์พร้อมตัวอย่างการใช้งาน ตารางพร็อพ และหมายเหตุด้านการเข้าถึง จากนั้นเผยแพร่ระบบการออกแบบเป็นแพ็กเกจ npm ให้ทีมใช้งาน

บทเรียน 4 จาก 413 ขั้นตอน

เอกสารและการส่งต่องานให้ทีม เป็นบทเรียน Tailwind CSS Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Tailwind CSS Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Tailwind CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดเอกสารจึงเป็นเรื่องสำคัญระดับแรก

ระบบการออกแบบที่ไม่มีเอกสารก็เป็นเพียงชุดไฟล์ที่มีแค่ผู้สร้างเท่านั้นที่เข้าใจ เอกสารจะเปลี่ยนระบบให้เป็น ผลิตภัณฑ์ที่ทีมอื่นนำไปใช้ได้อย่างอิสระ เอกสารที่ดีช่วยลดภาระการสนับสนุนของทีมระบบการออกแบบ ทำให้วิศวกรใหม่เริ่มงานได้เร็วขึ้น และป้องกันการใช้ส่วนประกอบอย่างไม่ถูกต้องจนทำให้ผลิตภัณฑ์ต่าง ๆ ขาดความสอดคล้องกัน

เอกสารการใช้งานส่วนประกอบ

ส่วนประกอบแต่ละรายการต้องมีหน้าการใช้งานที่ครอบคลุม: ควรใช้ส่วนประกอบเมื่อใด ตัวอย่างแบบโต้ตอบได้ของทุกตัวแปร ตาราง พร็อพส์ที่มีชื่อ ชนิด ค่าเริ่มต้น และคำอธิบาย รวมถึง หมายเหตุด้านการเข้าถึงได้ ตัวอย่างแบบโต้ตอบได้สามารถดึงจากสตอรีของ Storybook ได้โดยตรง ทำให้เอกสารและการนำไปใช้งานยังสอดคล้องกันโดยไม่ต้องเขียนโค้ดซ้ำ

/* Example component documentation structure */

# Button

## When to use
Use Button for primary actions (Save, Submit), secondary actions
(Cancel, Back), and destructive actions (Delete, Remove).
Do NOT use Button for navigation — use a Link component instead.

## Variants
[Live Storybook iframe: AllVariants story]

## Props
| Prop     | Type                              | Default   | Description |
|----------|-----------------------------------|-----------|-------------|
| variant  | primary|secondary|ghost|danger   | primary   | Visual style |
| size     | sm|md|lg                        | md        | Button size  |
| disabled | boolean                          | false     | Disable state |

## Accessibility
Icon-only buttons must include aria-label.

Storybook ในฐานะเอกสารที่มีชีวิต

กำหนดค่า Storybook ด้วยส่วนเสริม Docs เพื่อสร้างหน้าเอกสารสำหรับแต่ละส่วนประกอบโดยอัตโนมัติจากความคิดเห็น JSDoc และข้อมูลเมตาของสตอรี แท็ก autodocs บนออบเจ็กต์ meta ของสตอรีจะเปิดใช้ความสามารถนี้ เพิ่ม JSDoc ให้กับอินเทอร์เฟซพร็อพส์ของส่วนประกอบ แล้วส่วนเสริม Docs จะดึงข้อมูลเหล่านั้นมาเป็นตารางพร็อพส์ที่อ่านง่าย — ไม่จำเป็นต้องมีไฟล์เอกสารแยกสำหรับส่วนพร็อพส์

// Button.stories.tsx
const meta: Meta<typeof Button> = {
  component: Button,
  title: 'Primitives/Button',
  tags: ['autodocs'],  // ← enables auto-generated docs page
  parameters: {
    docs: {
      description: {
        component: 'Primary action trigger. Supports four visual variants and three sizes.',
      },
    },
  },
};
export default meta;

// In Button.tsx — JSDoc populates the props table:
interface ButtonProps {
  /** Visual style variant */
  variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
  /** Button size — controls padding and font size */
  size?: 'sm' | 'md' | 'lg';
}

หน้าเอกสารโทเค็น

จัดทำเอกสารโทเค็นการออกแบบด้วยหน้าอ้างอิงแบบภาพที่แสดงโทเค็นสี ระยะห่าง ตัวอักษร และเงาทั้งหมด แสดงชื่อโทเค็น ตัวแปร CSS ค่าพื้นฐานที่คำนวณได้ และตัวอย่างสีด้วยภาพ หน้านี้คือแหล่งข้อมูลจริงเพียงแหล่งเดียวที่นักออกแบบและวิศวกรใช้ตรวจสอบว่าโทเค็นนั้นมีอยู่แล้วหรือไม่ ก่อนเพิ่มโทเค็นใหม่

/* Token documentation page example */

# Color Tokens

## Semantic Colors

| Token              | CSS Variable           | Value       | Swatch |
|--------------------|------------------------|-------------|--------|
| color.primary      | --color-primary        | #2563eb     |   ■    |
| color.surface      | --color-surface        | #ffffff     |   □    |
| color.text.primary | --color-text-primary   | #111827     |   ■    |

## Usage
Always use semantic tokens in components:
`bg-primary` ✅ not `bg-blue-600` ❌

การเขียนคู่มือเริ่มต้นใช้งาน

คู่มือเริ่มต้นใช้งานจะพานักพัฒนาจากศูนย์ไปจนถึงการแสดงผลส่วนประกอบแรกภายในเวลาไม่ถึงห้านาที เนื้อหาครอบคลุม: การติดตั้งแพ็กเกจ การนำเข้าแบบตั้งค่า Tailwindในไฟล์กำหนดค่าแอป การนำเข้า CSS ส่วนกลาง และการแสดงผล Button เพื่อยืนยันว่าการตั้งค่าทำงานถูกต้อง ควรทำให้กระชับ — เก็บการใช้งานขั้นสูงไว้ในหน้าเฉพาะของแต่ละส่วนประกอบ

# Getting Started

## 1. Install the package
npm install @acme/ui

## 2. Add the Tailwind preset
```js
// tailwind.config.js
module.exports = {
  presets: [require('@acme/tailwind-config')],
  content: ['./src/**/*.{js,ts,jsx,tsx}'],
};

## 3. Import global styles
import '@acme/ui/styles/globals.css';

## 4. Use a component
import { Button } from '@acme/ui';
export default function App() {
  return <Button variant='primary'>Hello design system!</Button>;
}

บันทึกการเปลี่ยนแปลงและหมายเหตุการเผยแพร่

การเผยแพร่ระบบการออกแบบทุกครั้งควรมี รายการบันทึกการเปลี่ยนแปลงใน CHANGELOG.md ตามรูปแบบ Keep a Changelog จัดกลุ่มการเปลี่ยนแปลงเป็น: เพิ่ม, เปลี่ยนแปลง, เลิกใช้, นำออก, แก้ไข ใช้เครื่องมืออย่าง changesets หรือ conventional-commits เพื่อสร้างบันทึกการเปลี่ยนแปลงจากข้อความคอมมิตโดยอัตโนมัติ ช่วยลดงานจัดทำเอกสารด้วยตนเอง

# Changelog

## [2.0.0] — 2026-06-20
### Breaking Changes
- Button: renamed `variant='danger'` to `variant='destructive'`
- Input: `errorText` prop renamed to `error`

## [1.3.0] — 2026-06-01
### Added
- Toast component with success/error/warning/info variants
- Tooltip component (CSS-only)
- Avatar component with size variants and initials fallback

## [1.2.1] — 2026-05-15
### Fixed
- Button: missing focus-visible ring in Safari

การเผยแพร่เป็นแพ็กเกจ npm

เผยแพร่ระบบการออกแบบเป็นแพ็กเกจ npm ส่วนตัวเพื่อให้ทีมใช้งาน กำหนดค่า exports ใน package.json เพื่อเปิดให้เข้าถึงชุดส่วนประกอบ ชนิดข้อมูล และสไตล์แยกจากกัน ใช้ tsup หรือ Rollup เพื่อรวมซอร์ส TypeScript ให้อยู่ในรูปแบบ ESM และ CJS รวมช่อง types ที่ชี้ไปยังไฟล์ประกาศ .d.ts ด้วย

// packages/ui/package.json
{
  "name": "@acme/ui",
  "version": "1.3.0",
  "main": "./dist/index.cjs",
  "module": "./dist/index.esm.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "import": "./dist/index.esm.js",
      "require": "./dist/index.cjs",
      "types": "./dist/index.d.ts"
    },
    "./styles/globals.css": "./dist/styles/globals.css"
  },
  "scripts": {
    "build": "tsup src/index.ts --format esm,cjs --dts --out-dir dist"
  }
}

การกำหนดเวอร์ชันตามความหมายและ Codemod

สำหรับการเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้ ให้จัดเตรียม codemod ที่ย้ายโค้ดของผู้ใช้ไปยังรูปแบบใหม่โดยอัตโนมัติ เครื่องมืออย่าง jscodeshift สามารถเปลี่ยนชื่อพร็อพส์ สลับชื่อส่วนประกอบ หรือเขียนเส้นทางการนำเข้าใหม่ทั่วทั้งฐานโค้ดด้วยคำสั่งเดียว Codemod เปลี่ยนการอัปเกรดจากการค้นหาและแทนที่ด้วยตนเองที่เสี่ยงเกิดข้อผิดพลาด ให้เป็นกระบวนการอัตโนมัติที่มั่นใจได้ — ช่วยเพิ่มอัตราการนำเวอร์ชันใหม่ไปใช้อย่างมาก

// codemods/2.0.0-rename-danger-variant.js (jscodeshift)
export default function transform(file, api) {
  const j = api.jscodeshift;
  return j(file.source)
    .find(j.JSXAttribute, {
      name: { name: 'variant' },
      value: { value: 'danger' },
    })
    .replaceWith(() =>
      j.jsxAttribute(
        j.jsxIdentifier('variant'),
        j.stringLiteral('destructive')
      )
    )
    .toSource();
}

// Run:
npx jscodeshift -t codemods/2.0.0-rename-danger-variant.js src/

กระบวนการตรวจทานการออกแบบส่วนประกอบ

ก่อนเผยแพร่ส่วนประกอบใหม่ ให้นำส่วนประกอบนั้นเข้าสู่การตรวจทานการออกแบบอย่างเป็นทางการ รายการตรวจทานประกอบด้วย: โทเค็น (ใช้โทเค็นเชิงความหมาย ไม่ใช่ค่าพื้นฐานหรือค่าที่กำหนดตายตัวหรือไม่), ตัวแปร (API สอดคล้องกับหลักการตั้งชื่อที่กำหนดไว้หรือไม่), การเข้าถึงได้ (ผ่าน axe-core โดยไม่มีการละเมิดเลยหรือไม่), การตอบสนอง (แสดงผลถูกต้องในทุกจุดเปลี่ยนภาพหรือไม่) และโหมดมืด (พื้นผิวทั้งหมดมีตัวแปรสำหรับโหมดมืดหรือไม่)

/* New Component Review Checklist */

Token Usage:
  [ ] No hardcoded hex colors — only semantic token utilities
  [ ] No arbitrary spacing values — only theme scale

API Conventions:
  [ ] Variant prop uses established names (primary/secondary/etc)
  [ ] Size prop uses sm/md/lg
  [ ] className forwarding enabled for extension

Accessibility:
  [ ] axe-core in Storybook a11y addon shows 0 violations
  [ ] Focus visible ring present
  [ ] Screen reader announcement verified

Dark Mode:
  [ ] All bg-* utilities have dark: equivalents or use semantic tokens

การเริ่มต้นใช้งานระบบการออกแบบสำหรับทีม

จัด เซสชันเริ่มต้นใช้งานระบบการออกแบบสำหรับนักพัฒนาที่เข้ามาใหม่ และจัดอีกครั้งสำหรับนักพัฒนาปัจจุบันทุกครั้งที่มีการเผยแพร่เวอร์ชันหลัก พาชมเว็บไซต์เอกสารของส่วนประกอบ สาธิตระบบโทเค็นและการทำงานของโหมดมืด แสดงวิธีค้นหาส่วนประกอบที่ถูกต้องก่อนสร้างส่วนประกอบแบบกำหนดเอง และอธิบายกระบวนการมีส่วนร่วมสำหรับการเสนอส่วนประกอบใหม่หรือรายงานข้อบกพร่อง

/* Onboarding session agenda (60 min) */

10min: Design system philosophy
  — Why we have a system (consistency, speed, accessibility)
  — What it covers and what it does not

20min: Token and config layer
  — Primitive vs semantic tokens
  — How to use bg-primary, text-text-primary
  — Dark mode switching demo

20min: Component library walkthrough
  — Finding the right component in docs
  — Using CVA variants: <Button variant='danger'>
  — Extending with className prop

10min: Contribution process
  — How to propose a new component
  — PR review and acceptance criteria

การวัดการนำระบบการออกแบบไปใช้

ติดตามตัวชี้วัดการนำไปใช้เพื่อทำความเข้าใจว่าระบบการออกแบบถูกใช้อย่างแพร่หลายเพียงใด และจุดใดที่วิศวกรยังคงพึ่งพาสไตล์ที่สร้างขึ้นเฉพาะกิจ ให้เรียกใช้สคริปต์ที่นับการนำเข้าส่วนประกอบในแต่ละคลัง และทำเครื่องหมายไฟล์ที่มีอัตราการใช้ชุดคลาส Tailwind แบบกำหนดเองสูง ซึ่งอาจแทนที่ด้วยส่วนประกอบของระบบการออกแบบได้ แดชบอร์ดการนำไปใช้ช่วยกระตุ้นการปรับปรุงและสนับสนุนเหตุผลในการลงทุนสร้างส่วนประกอบใหม่

// scripts/measure-adoption.js
const glob = require('glob');
const fs = require('fs');

const files = glob.sync('apps/**/*.{jsx,tsx}');
let importCount = 0;
let buttonCount = 0;

files.forEach(f => {
  const src = fs.readFileSync(f, 'utf8');
  if (src.includes('@acme/ui')) importCount++;
  if (src.includes('<Button')) buttonCount++;
});

console.log(`Files using @acme/ui: ${importCount} / ${files.length}`);
console.log(`Button component uses: ${buttonCount}`);

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด Tailwind CSS Mastery จากบทเรียนนี้

ทบทวนบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้เรื่อง: การใช้แท็ก autodocs ของ Storybook เพื่อสร้างเอกสารที่มีชีวิตจาก JSDoc และสตอรี การเผยแพร่ระบบการออกแบบเป็นแพ็กเกจ npm พร้อมการส่งออกและการประกาศชนิดข้อมูลที่ถูกต้อง รวมถึง การจัดเตรียม codemod และการเริ่มต้นใช้งานเพื่อสนับสนุนทีมที่อัปเกรดและนำระบบไปใช้ ยินดีด้วย — คุณเรียนจบหลักสูตร Tailwind CSS Mastery ครบทั้งเส้นทางแล้ว!

เริ่มต้นได้ฟรี

เรียนรู้ HTML ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “เอกสารและการส่งต่องานให้ทีม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เอกสารและการส่งต่องานให้ทีม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Tailwind CSS Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Tailwind CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เอกสารและการส่งต่องานให้ทีม”

จัดทำเอกสารของแต่ละคอมโพเนนต์พร้อมตัวอย่างการใช้งาน ตารางพร็อพ และหมายเหตุด้านการเข้าถึง จากนั้นเผยแพร่ระบบการออกแบบเป็นแพ็กเกจ npm ให้ทีมใช้งาน คุณปฏิบัติ Tailwind CSS Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Tailwind CSS Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Tailwind CSS Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “เอกสารและการส่งต่องานให้ทีม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Tailwind CSS Academy นี้ได้ไหม

ได้ บทเรียน Tailwind CSS Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การวางแผนระบบการออกแบบ
  2. การสร้างชั้นโทเค็นและคอนฟิก
  3. การสร้างไลบรารีคอมโพเนนต์
  4. เอกสารและการส่งต่องานให้ทีม
← กลับไปที่ Tailwind CSS Academy