คัมภีร์ UI · สำหรับมือใหม่

รู้จักชิ้นส่วนหน้าจอ

ปุ่ม · Toast · Modal · Alert คืออะไร ใช้เมื่อไหร่ — ซ้ายอธิบาย ขวากดเล่นได้จริง · รู้คำพวกนี้ = สั่ง AI / คุยงานรู้เรื่อง

อ่านยังไง

แต่ละชิ้น: ฝั่งซ้าย บอกว่าคืออะไร · ใช้เมื่อไหร่ (เขียว) · ระวังอะไร (แดง) · ฝั่งขวา เป็นของจริง กดลองได้เลย

ปุ่มข้อความแจ้งป้ายสถานะฟอร์มนำทางแสดงข้อมูลสถานะโหลด
หมวด 1

ปุ่ม (Buttons)

เลือกชนิดให้ตรงกับ "ความสำคัญของการกระทำ"

ชนิดของปุ่ม Button variants

ปุ่มมีหลายระดับ ใช้สีและน้ำหนักบอกว่าอันไหนสำคัญกว่า. ปุ่มเด่นสุด (เข้ม) = การกระทำหลัก, ที่เหลือเบาลงตามความสำคัญ

📊 ตัวอย่างจริงหน้าแก้ไขสินค้า — ปุ่มเข้ม "บันทึก" เด่นอันเดียว ส่วน "ยกเลิก" เป็นปุ่มจาง ๆ ผู้ใช้รู้ทันทีว่าควรกดอะไร ไม่ลังเล
ใช้เมื่อ
หลัก = บันทึก/ยืนยัน (1 อันต่อหน้า) · รอง = ยกเลิก · Ghost = การกระทำเบา ๆ
ระวัง
ปุ่มแดง ใช้กับของอันตราย/ลบเท่านั้น · อย่ามีปุ่มเด่นหลายอันแย่งกัน
หมวด 2

ข้อความแจ้งผู้ใช้

3 แบบที่มือใหม่สับสนบ่อยสุด — Toast · Modal · Alert ใช้คนละสถานการณ์

Toast snackbar · ข้อความเด้งสั้น

ข้อความเล็ก ๆ เด้งขึ้นมุมจอแล้วหายเอง ไม่ขวางการทำงาน — เหมือนป้ายบอก "เรียบร้อยแล้ว" แวบเดียว

📊 ตัวอย่างจริงกดบันทึกการตั้งค่า → toast "บันทึกแล้ว ✓" เด้งล่างจอ 2 วินาทีแล้วหายเอง ผู้ใช้รู้ว่าสำเร็จโดยไม่ต้องกดปิด ไม่ขวางงานต่อ
ใช้เมื่อ
ยืนยันว่าทำสำเร็จสั้น ๆ — บันทึกแล้ว / ส่งแล้ว / คัดลอกแล้ว
อย่าใช้
กับข้อความสำคัญที่ต้องอ่าน/ตัดสินใจ (เพราะมันหายเอง)
Modal / Dialog หน้าต่างซ้อน

หน้าต่างเด้งกลางจอ พื้นหลังมืดลง — บังคับให้ผู้ใช้ทำหรือตอบก่อนถึงจะไปต่อได้

📊 ตัวอย่างจริงกดลบลูกค้า → modal เด้งถาม "ยืนยันลบ?" บังคับให้คิดอีกที กันเผลอลบข้อมูลสำคัญที่กู้คืนไม่ได้
ใช้เมื่อ
กรอกฟอร์มสั้น · ยืนยันก่อนทำสิ่งสำคัญ (ลบ/จ่ายเงิน) · ดูรายละเอียด
อย่าใช้
ซ้อน modal ใน modal · ใส่เนื้อหายาวมาก (ใช้หน้าเต็มแทน)
Alert / Banner แถบแจ้งคาหน้า

กล่องข้อความที่คาอยู่ในหน้า (ไม่หายเอง) — ใช้แจ้งสถานะหรือเตือนที่ต้องเห็นตลอด

📊 ตัวอย่างจริงลูกค้า trial เหลือ 5 วัน → แถบเหลือง คาบนหน้าตลอด เตือนให้ต่ออายุ ไม่หายไปจนกว่าจะจัดการ (ต่างจาก toast ที่หายเอง)
ใช้เมื่อ
เตือนก่อนหมดอายุ · error ของฟอร์ม · ประกาศสำคัญ
ℹ️
ข้อมูล — ทดลองใช้เหลืออีก 5 วัน
⚠️
เตือน — ยังไม่ได้ผูกบัญชีธนาคาร
ผิดพลาด — กรอกข้อมูลไม่ครบ 2 ช่อง

⭐ สรุป: เลือกอันไหน?

บอกว่าสำเร็จ แล้วจบToast
ให้ผู้ใช้ยืนยัน/กรอกก่อนไปต่อModal
สถานะที่ต้องเห็นค้างไว้Alert / Banner
หมวด 3

ป้ายสถานะ

ป้ายเล็ก ๆ บอกสถานะหรือจัดหมวด

Badge · Chip ป้ายสถานะ · แท็ก

Badge = ป้ายบอกสถานะของรายการ (มีสีตามความหมาย). Chip = แท็กจัดหมวด/กรอง มักลบได้

📊 ตัวอย่างจริงหน้ารายการบิล — แต่ละแถวมี badge สี เขียว=จ่ายแล้ว แดง=เกินกำหนด กวาดตาเห็นทันทีว่าใบไหนต้องตามเก็บเงิน
ใช้เมื่อ
Badge บอกสถานะในตาราง (จ่ายแล้ว/ค้าง) · Chip ทำแท็กลูกค้า/ตัวกรอง
จ่ายแล้วรอชำระเกินกำหนดร่าง VIP ✕ลูกค้าเก่า ✕
หมวด 4

ฟอร์ม (รับข้อมูล)

ช่องให้ผู้ใช้กรอก/เลือก

ช่องกรอก & รายการเลือก Input · Select

Input = ช่องพิมพ์ข้อความ. Select/Dropdown = เลือกจากรายการที่มี (กันพิมพ์ผิด)

📊 ตัวอย่างจริงฟอร์มเพิ่มพนักงาน — ช่อง "ชื่อ" พิมพ์อิสระ ส่วน "แผนก" เป็น dropdown เลือกจากที่มี กันพิมพ์ผิดเป็น "ฝ่ายขาย" บ้าง "ฝ่ายขายฯ" บ้าง จนข้อมูลกระจัดกระจาย
ใช้เมื่อ
Input กับข้อมูลอิสระ (ชื่อ/ที่อยู่) · Select กับตัวเลือกตายตัว (จังหวัด/แผนก)
ระวัง
ช่องบังคับใส่ * · error โชว์ใต้ช่อง ไม่ใช่ลอย ๆ
ตัวเลือก Checkbox · Radio · Toggle

3 แบบที่ต่างกันชัด: Checkbox เลือกได้หลายอัน · Radio เลือกได้อันเดียว · Toggle เปิด/ปิดทันที (ไม่ต้องกดบันทึก)

📊 ตัวอย่างจริงหน้าตั้งค่าแจ้งเตือน — "เปิดแจ้งเตือน" ใช้ toggle (กดแล้วเปลี่ยนทันที) ส่วน "เลือกวันที่สนใจ" ใช้ checkbox (ติ๊กได้หลายวัน)
ใช้เมื่อ
Checkbox = "เลือกบริการที่สนใจ" · Radio = "เพศ" · Toggle = "เปิดแจ้งเตือน"
Toggle
หมวด 5

นำทาง (Navigation)

ช่วยให้ผู้ใช้รู้ว่าอยู่ไหน + ไปต่อยังไง

Tabs แท็บสลับมุมมอง

สลับเนื้อหาหลายชุดในพื้นที่เดียว โดยไม่ต้องเปลี่ยนหน้า — กดแท็บไหน เห็นเนื้อหานั้น

📊 ตัวอย่างจริงหน้าใบแจ้งหนี้ — แท็บ "ทั้งหมด / รอชำระ / จ่ายแล้ว" สลับดูได้ในหน้าเดียว ไม่ต้องเปิดหลายหน้าให้วุ่น
ใช้เมื่อ
เนื้อหาแยกกลุ่มชัด ในเรื่องเดียวกัน (ทั้งหมด / รอชำระ / จ่ายแล้ว)
↑ กดสลับแท็บได้
Breadcrumb · Pagination เส้นทาง · แบ่งหน้า

Breadcrumb = บอกว่าตอนนี้อยู่ตรงไหนของเว็บ กดย้อนได้. Pagination = แบ่งข้อมูลเยอะ ๆ เป็นหน้า ๆ

📊 ตัวอย่างจริงอยู่ลึกในแฟ้มลูกค้า → breadcrumb "หน้าแรก › ลูกค้า › บจก.เอ" กดย้อนกลับได้ · มีลูกค้า 500 ราย → pagination แบ่งหน้าละ 20 ไม่ต้องโหลดทีเดียวจนช้า
ใช้เมื่อ
Breadcrumb ในหน้าที่ซ้อนลึก · Pagination เมื่อรายการยาวเกินจอ
🏠 หน้าแรก › ลูกค้าบจก. เอ
123
หมวด 6

แสดงข้อมูล

ข้อมูลชุดเดียว แสดงได้หลายแบบ เลือกให้ถูก

Table · Card ตาราง · การ์ด

Table = หลายแถวหลายคอลัมน์ เทียบค่ากันได้ (เหมาะจอคอม). Card = รวมข้อมูล 1 ชิ้นเป็นกล่อง (เหมาะมือถือ/มีรูป)

📊 ตัวอย่างจริงรายชื่อพนักงานใช้ table (เทียบเงินเดือน/แผนกเป็นคอลัมน์) · หน้าสินค้าใช้ card (โชว์รูป ราคา เด่น ๆ น่ากด)
ใช้เมื่อ
Table = รายการบิล/พนักงาน · Card = สินค้า/โปรไฟล์
ชื่อสถานะ
สมชายใช้งาน
สมหญิงพัก
กาแฟดริป
คงเหลือ 240 · ฿120
Empty state หน้าว่าง

เมื่อยังไม่มีข้อมูล อย่าปล่อยหน้าโล่ง ๆ — บอกว่าทำไมว่าง + ปุ่มให้เริ่มต้น

📊 ตัวอย่างจริงลูกค้าเพิ่งสมัคร เปิดมาหน้าออเดอร์ว่าง → แทนหน้าโล่ง ๆ โชว์ "📭 ยังไม่มีออเดอร์ กด + เพิ่ม" ผู้ใช้รู้ว่าต้องทำอะไรต่อ ไม่งงว่าเว็บเสีย
ใช้เมื่อ
รายการว่าง ครั้งแรกที่เข้าใช้ · ผลค้นหาไม่เจอ
📭
ยังไม่มีรายการ
กด "เพิ่ม" เพื่อเริ่ม
หมวด 7

สถานะกำลังโหลด

ระหว่างรอ ต้องบอกผู้ใช้ว่า "ระบบกำลังทำงาน"

Spinner · Skeleton · Progress หมุน · โครงเทา · แถบ%

Spinner = วงหมุนสั้น ๆ. Skeleton = โครงเทา ๆ แทนเนื้อหาที่กำลังโหลด (รู้สึกเร็วกว่า). Progress = แถบบอก % เมื่อรู้ความคืบหน้า

📊 ตัวอย่างจริงเปิดหน้ารายงานที่ดึงข้อมูลเยอะ → โชว์ skeleton โครงเทา ๆ ก่อน ผู้ใช้รู้ว่ากำลังโหลด ไม่คิดว่าเว็บค้างแล้วปิดหนี
ใช้เมื่อ
Spinner งานสั้น · Skeleton โหลดหน้า/รายการ · Progress อัปโหลด/งานที่รู้ %
กำลังโหลด…
อัปโหลด 64%
กลับห้องสมุดออกแบบ