Skip to contentข้ามไปเนื้อหา

Thaimart: One system, after four versions without one.ระบบกลาง หลังสี่เวอร์ชันที่ไม่มี

The central design system for version 5 of Thaimart, a Thai marketplace on the web and in an app. I built it alone: fifteen colour scales, a type scale made for Thai, spacing, corners, depth and a grid, and components with every state.ดีไซน์ซิสเต็มกลางของไทยมาร์ทเวอร์ชัน 5 มาร์เก็ตเพลสสัญชาติไทยทั้งบนเว็บและแอป ผมสร้างคนเดียว ทั้งชุดสี 15 ชุด ขนาดตัวอักษรที่ทำมาเพื่อภาษาไทย ระยะห่าง มุมโค้ง ความลึก และกริด พร้อมคอมโพเนนต์ครบทุกสถานะ

Design systemดีไซน์ซิสเต็ม · 7 Solutions

  • Toolsเครื่องมือ
  • Screensหน้าจอที่ออกแบบ
  • Design system
  • Figma

The system, liveระบบตัวจริง

Design system V.5.0ดีไซน์ซิสเต็ม V.5.0

#E32321Primary: Thaimart redสีหลัก แดงไทยมาร์ท
#2B348ESecondary: navyสีรอง น้ำเงิน

primary · lg · Defaultปกติ

Filledกรอกแล้ว

  • 15colour scales, 010 → 975ชุดสี ไล่ 010 → 975
  • 480button variantsรูปแบบปุ่ม
  • 21input variantsรูปแบบช่องกรอก
  • 19spacing stepsขั้นระยะห่าง

Drawn live from the file's own tokens, not a screenshot. Set in this site's Thai font; the app itself uses Sukhumvit Tadmai.วาดสดจาก token ในไฟล์ ไม่ใช่ภาพแคป ใช้ฟอนต์ไทยของเว็บนี้ ส่วนในแอปจริงใช้ Sukhumvit Tadmai

How I workedผมทำงานยังไง

Who did what, step by step. The highlighted lane is mine.ใครทำอะไร ในแต่ละขั้น เลนที่ไฮไลต์คือส่วนของผม

Who did what, a step a card: swipe through. The highlighted rows are mine.ใครทำอะไร ขั้นละการ์ด ปัดดูได้ แถวที่ไฮไลต์คือส่วนของผม

The team at 7 Solutionsทีมที่ 7 SolutionsThe briefโจทย์: Four versions, no system: assigns version 5สี่เวอร์ชันยังไม่มีระบบ มอบหมายเวอร์ชัน 5
MeผมOn my ownทำคนเดียวThe briefโจทย์: Build it as the whole project's system, aloneสร้างเป็นระบบกลางของทั้งโปรเจกต์ คนเดียวFoundationsพื้นฐาน: Logo, colour, Thai type, spacingโลโก้ สี ตัวอักษรไทย ระยะห่างComponentsคอมโพเนนต์: Buttons and inputs, in every stateปุ่มและช่องกรอก ครบทุกสถานะSupportซัพพอร์ต: Help the team on some featuresช่วยซัพพอร์ตทีมในบางฟีเจอร์
  1. 01The briefโจทย์

    • The team at 7 Solutionsทีมที่ 7 SolutionsFour versions, no system: assigns version 5สี่เวอร์ชันยังไม่มีระบบ มอบหมายเวอร์ชัน 5
    • MeผมBuild it as the whole project's system, aloneสร้างเป็นระบบกลางของทั้งโปรเจกต์ คนเดียว
  2. 02Foundationsพื้นฐาน

    • MeผมLogo, colour, Thai type, spacingโลโก้ สี ตัวอักษรไทย ระยะห่าง
  3. 03Componentsคอมโพเนนต์

    • MeผมButtons and inputs, in every stateปุ่มและช่องกรอก ครบทุกสถานะ
  4. 04Supportซัพพอร์ต

    • MeผมHelp the team on some featuresช่วยซัพพอร์ตทีมในบางฟีเจอร์

The whole pictureภาพรวมงานทั้งหมด

Everything I did on this project, one row each. Tap a row for the detail.ทุกอย่างที่ผมทำในโปรเจกต์นี้ แถวละเรื่อง กดเพื่ออ่านรายละเอียด

Everything I did on this project. Swipe through, tap one for the detail.ทุกอย่างที่ผมทำในโปรเจกต์นี้ ปัดดูทีละเรื่อง แตะเพื่ออ่านรายละเอียด

  1. Four versions, no systemสี่เวอร์ชัน ไม่มีระบบProblemปัญหาVersions 1 to 4: parts used wrongly, mixed, everyone making their ownเวอร์ชัน 1 ถึง 4 ใช้ผิด ใช้ปน ต่างคนต่างทำของตัวเองWhat I didสิ่งที่ทำGiven version 5 to build as the whole project's central system, and built it aloneได้รับมอบหมายให้สร้างเวอร์ชัน 5 เป็นระบบกลางของทั้งโปรเจกต์ และทำคนเดียวResultผลลัพธ์One source for colour, type, space and componentsต้นทางเดียวสำหรับสี ตัวอักษร ระยะห่าง และคอมโพเนนต์
  2. The logo, as a componentโลโก้ ที่เป็นคอมโพเนนต์ProblemปัญหาA logo copied around as loose files drifts in size and colourโลโก้ที่ก๊อปไปมาเป็นไฟล์ลอย ๆ จะเพี้ยนทั้งขนาดและสีWhat I didสิ่งที่ทำOne Logo component: 3 layouts × 4 colours × 10 sizes, from 48 down to 12คอมโพเนนต์โลโก้ตัวเดียว: 3 รูปแบบ × 4 สี × 10 ขนาด ตั้งแต่ 48 ถึง 12Resultผลลัพธ์120 variants; every screen picks the logo by name120 แบบ ทุกหน้าจอเลือกโลโก้จากชื่อ
  3. Colour that means somethingสีที่มีความหมายProblemปัญหาRaw colours picked by eye, one screen at a timeสีดิบที่เลือกด้วยตา ทีละหน้าWhat I didสิ่งที่ทำFifteen scales, 010 → 975, each with see-through steps; the brand red and navy on topสีครบ 15 ชุด ไล่ 010 → 975 พร้อมแบบโปร่งแสง สีแดงและน้ำเงินแบรนด์อยู่บนสุดResultผลลัพธ์Every colour on screen comes from one named stepทุกสีบนจอมาจากขั้นสีที่มีชื่อ
  4. Type that holds Thaiตัวอักษรที่รองรับภาษาไทยProblemปัญหาThai needs more line height than Latin, or its marks collideภาษาไทยต้องการระยะบรรทัดมากกว่าอังกฤษ ไม่งั้นสระและวรรณยุกต์ชนกันWhat I didสิ่งที่ทำA scale from display to caption, with generous line heightsสเกลตั้งแต่ display ถึง caption พร้อมระยะบรรทัดที่เผื่อพอResultผลลัพธ์Headlines and body text that read in both languagesหัวข้อและเนื้อความที่อ่านได้ดีทั้งสองภาษา
  5. Space, corners and depthระยะห่าง มุมโค้ง และความลึกProblemปัญหาSpacing and corners decided by feel drift between screensระยะห่างและมุมที่กะเอา จะค่อย ๆ ต่างกันในแต่ละหน้าWhat I didสิ่งที่ทำ19 spacing steps, 12 radii, 4 elevations and a grid for mobile and desktopระยะห่าง 19 ขั้น มุมโค้ง 12 ค่า เงา 4 ระดับ และกริดสำหรับมือถือและเดสก์ท็อปResultผลลัพธ์Layouts that line up without measuringเลย์เอาต์ที่ตรงกันโดยไม่ต้องวัด
  6. Components with every stateคอมโพเนนต์ ครบทุกสถานะProblemปัญหาA component with a missing state gets improvised in codeคอมโพเนนต์ที่ขาดสถานะ จะถูกด้นเอาเองในโค้ดWhat I didสิ่งที่ทำButton: 8 types × 3 icon layouts × 4 sizes × 5 states; Input: 7 states × 3 sizes, 7 hintsปุ่ม: 8 ประเภท × 3 แบบไอคอน × 4 ขนาด × 5 สถานะ · ช่องกรอก: 7 สถานะ × 3 ขนาด และ hint 7 แบบResultผลลัพธ์480 button variants and 21 inputs, each bound to the colours aboveปุ่ม 480 แบบ และช่องกรอก 21 แบบ ทุกแบบผูกกับสีด้านบน

Part 1ตอนที่ 1

Four versions, no systemสี่เวอร์ชัน ไม่มีระบบ

  1. Thaimart is 7 Solutions' own marketplace for Thai brands, OTOP goods, food, herbs and fashion, on the web and in an app, with checked sellers and a ranking that rewards quality and reviews over ad spend. Its first four versions had no system to speak of: parts were used wrongly and mixed together, and each designer made their own. For version 5 I was given the job of building one design system for the whole project, and I built it alone. It carried version 5 until the product was later redesigned.ไทยมาร์ทคือมาร์เก็ตเพลสของ 7 Solutions เอง สำหรับแบรนด์ไทย สินค้า OTOP อาหาร สมุนไพร และแฟชั่น มีทั้งเว็บและแอป ร้านค้าผ่านการยืนยันตัวตน และการจัดอันดับให้น้ำหนักกับคุณภาพและรีวิวมากกว่าเงินโฆษณา สี่เวอร์ชันแรกไม่มีระบบที่เป็นระเบียบ ใช้ผิด ใช้ปนกันไปหมด ต่างคนต่างทำของตัวเอง ในเวอร์ชัน 5 ผมได้รับมอบหมายให้สร้างดีไซน์ซิสเต็มกลางของทั้งโปรเจกต์ และทำคนเดียว ระบบนี้ใช้กับเวอร์ชัน 5 จนภายหลังโปรดักต์ถูกรีดีไซน์ใหม่

    • 4

      versions before it, without a systemเวอร์ชันก่อนหน้า ที่ไม่มีระบบ

    • 1

      designer on the system: meคนทำระบบ คือผม

    • 15

      colour scales in one sourceชุดสีในต้นทางเดียว

Part 3ตอนที่ 3

Colour that means somethingสีที่มีความหมาย

  1. Two brand colours (Thaimart red and navy), then twelve hues and a neutral, each as a scale from 010 to 975, each with six see-through steps for hovers and overlays. On top of them sit semantic colours named for what they do: surface, content, border, and for every state a control can be in.สองสีแบรนด์ คือแดง Thaimart และน้ำเงิน ตามด้วยอีก 12 เฉดและสีกลาง แต่ละชุดไล่จาก 010 ถึง 975 และมีแบบโปร่งแสงอีก 6 ขั้นสำหรับ hover และ overlay ชั้นบนเป็นสีตามความหมาย ตั้งชื่อตามหน้าที่ ได้แก่ พื้นผิว เนื้อหา เส้นขอบ และครบทุกสถานะของคอนโทรล

  2. palette/primary/500#E32321Tap a colour for its valueแตะสีเพื่อดูค่า

    primary
    secondary
    red
    orange
    yellow
    lime
    green
    teal
    sky
    blue
    indigo
    violet
    purple
    pink
    nevada

Part 4ตอนที่ 4

Type that holds Thaiตัวอักษรที่รองรับภาษาไทย

  1. Display, heading, body and caption, each with its size and line height: 58 on 96 down to 12 on 20. The lines run about 1.6 to 1.8 times the size, so Thai above- and below-line marks never touch the next line.display, heading, body และ caption แต่ละขนาดมีระยะบรรทัดของตัวเอง ตั้งแต่ 58/96 ถึง 12/20 ระยะบรรทัดราว 1.6–1.8 เท่าของขนาดตัวอักษร สระบนล่างของภาษาไทยจึงไม่ชนบรรทัดถัดไป

    1. display-158 / 96Every screen, one systemทุกหน้าจอ ระบบเดียว
    2. display-252 / 86Every screen, one systemทุกหน้าจอ ระบบเดียว
    3. display-346 / 76Every screen, one systemทุกหน้าจอ ระบบเดียว
    4. display-442 / 68Every screen, one systemทุกหน้าจอ ระบบเดียว
    5. heading-228 / 50Every screen, one systemทุกหน้าจอ ระบบเดียว
    6. heading-424 / 40Every screen, one systemทุกหน้าจอ ระบบเดียว
    7. heading-618 / 30Every screen, one systemทุกหน้าจอ ระบบเดียว
    8. heading-814 / 24Every screen, one systemทุกหน้าจอ ระบบเดียว
    9. body-116 / 26Every screen, one systemทุกหน้าจอ ระบบเดียว
    10. body-214 / 24Every screen, one systemทุกหน้าจอ ระบบเดียว
    11. caption12 / 20Every screen, one systemทุกหน้าจอ ระบบเดียว

Part 5ตอนที่ 5

Space, corners and depthระยะห่าง มุมโค้ง และความลึก

  1. Spacing from 0 to 80 in small steps for components and large ones for layouts; radius from none to fully rounded, with small for forms and buttons, medium for menus, large for popups; four elevations, each a hairline edge and a soft drop; and a grid of 2 columns on mobile, 12 on desktop.ระยะห่างตั้งแต่ 0 ถึง 80 ขั้นเล็กสำหรับคอมโพเนนต์ ขั้นใหญ่สำหรับเลย์เอาต์ มุมโค้งตั้งแต่ไม่โค้งจนโค้งเต็ม เล็กสำหรับฟอร์มและปุ่ม กลางสำหรับเมนู ใหญ่สำหรับป๊อปอัป เงา 4 ระดับ แต่ละระดับมีเส้นขอบบางกับเงานุ่ม และกริด 2 คอลัมน์บนมือถือ 12 คอลัมน์บนเดสก์ท็อป

  2. Spacing

    1. 0
    2. 2
    3. 4
    4. 6
    5. 8
    6. 10
    7. 12
    8. 16
    9. 20
    10. 24
    11. 28
    12. 32
    13. 36
    14. 40
    15. 44
    16. 48
    17. 56
    18. 64
    19. 80

    Radius

    1. none0px
    2. 2-extra-small1px
    3. extra-small2px
    4. small4px
    5. small-nudge6px
    6. medium8px
    7. medium-nudge10px
    8. large12px
    9. large-nudge16px
    10. extra-large20px
    11. extra-large-nudge24px
    12. rounded9999px

    Shadow

    1. shadow-xs
    2. shadow-sm
    3. shadow-md
    4. shadow-lg

    Grid

    Breakpointขนาดจอ
    mobile
    Viewportความกว้าง
    375–479
    Columnsคอลัมน์
    2
    Gutterช่องไฟ
    12
    Marginขอบ
    16
    Breakpointขนาดจอ
    desktop
    Viewportความกว้าง
    864+
    Columnsคอลัมน์
    12
    Gutterช่องไฟ
    16
    Marginขอบ
    32

Part 6ตอนที่ 6

Components with every stateคอมโพเนนต์ ครบทุกสถานะ

  1. Every Button and Input state is drawn and bound to a semantic colour, so hover, focus, pressed and disabled are designed, not guessed: the focus ring, the error border, the disabled fill. Play with them below: they're drawn from the same values as the file.ทุกสถานะของปุ่มและช่องกรอกถูกวาดไว้และผูกกับสีตามความหมาย ทั้ง hover, focus, กด และปิดใช้งาน จึงเป็นสิ่งที่ออกแบบแล้ว ไม่ใช่เดา ทั้งวงโฟกัส เส้นขอบตอนผิดพลาด และพื้นตอนปิดใช้งาน ลองเล่นด้านล่างได้ วาดจากค่าเดียวกับในไฟล์

  2. primary · lg · Defaultปกติ

    Typeประเภท
    Sizeขนาด
    Stateสถานะ
    Iconไอคอน

    Filledกรอกแล้ว

    Stateสถานะ

Keep exploringดูต่อ

PoppaDesign systemดีไซน์ซิสเต็ม