๐Ÿ”จ ํ”„๋กœ์ ํŠธ ์ผ์ง€

์ •๋ณด ์ „๋‹ฌ๋ณด๋‹จ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฒช์€ ์ ๋“ค, ๋Š๋‚€ ์ ๋“ค์„ ๊ธฐ๋กํ•œ ์ผ์ง€

Project: Jayden-Design-System(feat. Challengers)

ํ”„๋ก ํŠธ์—”๋“œ ์ทจ์ค€์ƒ์˜ ๋ญฃ๋„ ๋ชจ๋ฅด๊ณ  ์‹œ์ž‘ํ•ด๋ณด๋Š” ๋””์ž์ธ ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ.

์‹œ์ž‘ํ•˜๊ฒŒ ๋œ ์ด์œ ?

๋ณธ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ์ฑŒ๋ฆฐ์ ธ์Šค ์•ฑ์„ ์›น์œผ๋กœ ๋ฆฌ๋ธŒ๋žœ๋”ฉํ•ด๋ณด๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘ ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ๋””์ž์ธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด์ฃผ์‹  ๊ฒƒ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋‹ค. ๋ฐฑ์—”๋“œ ์—†์ด api๋ฅผ ์–ด๋–ป๊ฒŒ๋ผ๋„ ์งœ๋Š” ๊ฒŒ ์‰ฝ์ง€ ์•Š์•˜๊ณ , ์ด์— ์ข€๋” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์— ํฌ์ปค์‹ฑ์„ ๋‘˜ ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์‹œ์ž‘์œผ๋กœ ์ฑŒ๋ฆฐ์ ธ์Šค ๋ชจํ‚น ์›น๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
์ด ํ”„๋กœ์ ํŠธ์˜ 1์ฐจ์ ์ธ ์ตœ์ข… ๋ชฉํ‘œ๋Š” ๋‚˜๋งŒ์˜ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๊ณ  npm ๋ผ์ด๋ฒ„๋ฅด๋Ÿฌ๋กœ ๋ฐฐํฌ๊นŒ์ง€ ํ•˜๋Š” ๊ฒƒ!!!

๋ชฉํ‘œ ์„ค์ •

primary : ๋‚˜๋งŒ์˜ ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ๋ฐ ๋ฐฐํฌ
secondary : ๋””์ž์ธ ์‹œ์Šคํ…œ ๋ฐ mock data๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ challengers ์›น ์„œ๋น„์Šค ๊ตฌํ˜„

๊ทธ๋ž˜์„œ ๋ฌด์—‡๋ถ€ํ„ฐ ํ•ด์•ผํ• ๊นŒ?

์ด์ œ ๋””์ž์ธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด์„œ ๋Œ€๋žต์ ์œผ๋กœ ๊ฐ์€ ์™”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์˜ค์งˆ ์•Š์•˜๋‹ค. ์ผ๋‹จ์€ ๋จผ์ € UI ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜์—๋Š” ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ๊ณต๋ถ€๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.(๊ทธ๋ž˜์•ผ ๋‚ด๊ฐ€ ๋งŒ๋“ค ์„œ๋น„์Šค์—์„œ ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋””์ž์ธ ์‹œ์Šคํ…œ์— ๋…น์ผ์ง€ ์•Œ ์ˆ˜ ์žˆ์„ํ…Œ๋‹ˆ๊นŒ)

UI์˜ ์ข…๋ฅ˜

UI๋Š” ํฌ๊ฒŒ 4๊ฐ€์ง€ ๋ถ„๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • Input Controls : ์œ ์ €๊ฐ€ ์‹œ์Šคํ…œ์— ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  • Navigation Components : ์œ ์ €์˜ ์„œ๋น„์Šค ๋‚ด์—์„œ์˜ ์ด๋™์„ ์•ˆ๋‚ดํ•˜๊ณ  ๋•๋Š”๋‹ค. ex) ํ–„๋ฒ„๊ฑฐ ๋ฉ”๋‰ด, ๋„ค๋ธŒ๋ฐ”
  • Informational Componens : ์œ ์ €์—๊ฒŒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • Containers : ๊ด€๋ จ ์ปจํ…์ธ ๋“ค์„ ํ•œ ๊ณณ์— ๋ฌถ์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ž, ๊ทธ๋Ÿผ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ UI์š”์†Œ๋“ค์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์ž. ์ฐธ๊ณ ๋กœ ์ด ๋‚ด์šฉ๋“ค์€ ๊ฑฐ์ง„ ์•„๋ž˜ ๋ ˆํผ๋Ÿฐ์Šค์˜ ๋‚ด์šฉ๋“ค์„ ์š”์•ฝ/์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค! ์ด๋Ÿฐ ๊ธ€์„ ์ž‘์„ฑํ•ด์ฃผ์‹  ๊ฐœ๋ฐœ์ž๋ถ„๊ป˜ ์ •๋ง์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฐ๋‹ค.

์•„์ฝ”๋””์–ธ(Accordian)
  • ํด๋ฆญ ์‹œ ์•„์ฝ”๋””์–ธ ์•…๊ธฐ์ฒ˜๋Ÿผ ๋‚ด์šฉ๋“ค์ด ํŽผ์ณ์ ธ์„œ ๋‚˜์˜ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • ์ฆ‰, ์ปจํ…์ธ ์˜ ์˜์—ญ์ด ํ™•์žฅ๋œ๋‹ค.(๋’ค์— ๋‚˜์˜ฌ Dropdown๊ณผ์˜ ์ฐจ์ด์ )
๋ฒคํ†  ๋ฉ”๋‰ด(Bento Menu)
  • 9๊ฐœ์˜ ์‚ฌ๊ฐํ˜• ๋ชจ์–‘์œผ๋กœ, ํด๋ฆญ ์‹œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฉ”๋‰ด๊ฐ€ (์ฃผ๋กœ ๋ชจ๋‹ฌํ˜•ํƒœ๋กœ) ๋‚˜์˜ค๊ฒŒ ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค. ํ”ํžˆ ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” ํ–„๋ฒ„๊ฑฐ ๋ฒ„ํŠผ๋„ ๋ฒคํ†  ๋ฉ”๋‰ด์˜ ํ•œ ์ข…๋ฅ˜
๋ธŒ๋ ˆ๋“œํฌ๋Ÿผ(Breadcrumb)
  • ์œ ์ €๊ฐ€ ์‚ฌ์ดํŠธ์˜ ์–ด๋””์— ์œ„์น˜ํ•ด์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค. ํ•ธ์ ค๊ณผ ๊ทธ๋ ˆํ…”์˜ ๋นต ๋ถ€์Šค๋Ÿฌ๊ธฐ์—์„œ ์œ ๋ž˜ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.
๋ฒ„ํŠผ(Button)
  • ์šฐ๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ์ž˜ ์•Œ๊ณ  ์ž์ฃผ ๋ณด๋Š” ์ธํ„ฐํŽ˜์ด์Šค. ํด๋ฆญ ์‹œ, ํŠน์ • ๋™์ž‘์ด ์ˆ˜ํ–‰๋œ๋‹ค.(๋ณดํ†ต์€ ์œ ์ €์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌ)
์นด๋“œ(Card)
  • ์ž‘์€ ์‚ฌ๊ฐํ˜•์— ๊ฐ™์€ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ •๋ณด๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ผ์ข…์˜ ๋ชจ๋“ˆ
์บ๋Ÿฌ์…€(Carousel)
  • ์ด๋ฏธ์ง€๋‚˜ ์นด๋“œ์™€ ๊ฐ™์€ ์ปจํ…์ธ ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค. ํšŒ์ „๋ชฉ๋งˆ๋ฅผ ์ •๋ฉด์—์„œ ๋ณด๋Š” ๋Š๋‚Œ.

์บ๋Ÿฌ์…€

์ฒดํฌ๋ฐ•์Šค(Checkbox)
  • ์ฒดํฌ๊ฐ€ ๋˜์–ด์žˆ๊ฑฐ๋‚˜(true) ์•„๋‹ˆ๊ฑฐ๋‚˜(false)
์ฝ”๋ฉ˜ํŠธ(Comment)
  • ๋ง ๊ทธ๋Œ€๋กœ ๋Œ“๊ธ€
๋“œ๋กญ๋‹ค์šด(Dropdown)
  • ์•„์ฝ”๋””์–ธ๊ณผ ๊ต‰์žฅํžˆ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋“œ๋กญ๋‹ค์šด์€ ์ปจํ…์ธ  ์ž์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€์ง€ ์•Š๋Š”๋‹ค.
  • ์•„๋ž˜ ์ปจํ…์ธ ๋ฅผ ๋ฎ์–ด์„œ ๋ณด์—ฌ์ง€๋Š” ๋Š๋‚Œ
ํผ(Form)
  • ์œ ์ €๊ฐ€ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ œ์ถœํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค. ํšŒ์›๊ฐ€์ž… ์‹œ, ์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ/์ฃผ์†Œ ๋“ฑ๋“ฑ
์•„์ด์ฝ˜(Icon)
  • ์œ ์ €์—๊ฒŒ ์ง๊ด€์ ์œผ๋กœ ์ •๋ณผ๋ฅด ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๋‹จํ•œ ์ด๋ฏธ์ง€
์ธํ’‹ ํ•„๋“œ(Input Field)
  • ์œ ์ €๊ฐ€ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์‹œ์Šคํ…œ์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค. Form๊ณผ ๊ฐ™์€ ์ œ์ถœ ์–‘์‹๋ถ€ํ„ฐ ํฌํ„ธ์˜ ๊ฒ€์ƒ‰์ฐฝ ๋“ฑ ๋‹ค์–‘ํ•œ ํ•„๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
์ผ€๋ฐฅ ๋ฉ”๋‰ด(Kebab Menu)
  • ์„ธ๋กœ๋กœ ์  3๊ฐœ๊ฐ€ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค. ์ฃผ๋กœ ์„ค์ • ์˜ต์…˜ ๋“ฑ์„ ๋‹ด๊ณ  ์žˆ๋‹ค.(ํฌ๋กฌ์—๋„ ์˜ค๋ฅธ์ชฝ ์œ„์— ์žˆ์Œ)
๋กœ๋”(Loader)
  • ๋ง ๊ทธ๋Œ€๋กœ ๋กœ๋”ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” UI ์š”์†Œ! ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜„์žฌ ์‹œ์Šคํ…œ์ด ์ž‘์—… ์ค‘์ธ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
๋ฏธํŠธ๋ณผ ๋ฉ”๋‰ด(Meatballs Menu)
  • ๊ฐ€๋กœ๋กœ ์  3๊ฐœ๊ฐ€ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค. ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ ์™ธ์— ์ˆจ๊ฒจ์ง„ ์˜ต์…˜์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๋ชจ๋‹ฌ(Modal)
  • ์œ ์ €์™€ ์ƒํ˜ธ์ž‘์šฉ ํ˜น์€ ํŠน์ • ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ œ๊ณต๋˜๋Š” ์ถ”๊ฐ€ ๋ ˆ์ด์–ด ์ฐฝ.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ web์ด ์ œ๊ณตํ•˜๋Š” api์ธ alert, propmt, confirm๋„ ๋ชจ๋‹ฌ ํ˜•์‹
๋ฑƒ์ง€(Badge)
  • ์š”์ฆ˜ ์ž์ฃผ ๋ณด์ด๋Š” UI๋กœ, ์•Œ๋ฆผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž‘์€ ๋นจ๊ฐ„ ์ ๊ฐ™์€ ๋…€์„๋“ค!!!
  • ์œ ์ €์—๊ฒŒ ์•Œ๋ฆผ์„ ์ฃผ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.(๋ฑƒ์ง€๋ฅผ ๋ณด๋ฉด ํด๋ฆญ ์•ˆํ•  ์ˆ˜๊ฐ€ ์—†์Œ)
ํŽ˜์ด์ง€๋„ค์ด์…˜(Pagenamtion)
  • ํ™”๋ฉด ๋งจ ์•„๋ž˜์— 1, 2, 3, 4, 5 โ€ฆ 101๊ณผ ๊ฐ™์ด ํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • ํ˜„์žฌ ์œ ์ €์˜ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๊ณ  ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
ํ”ฝ์ปค(Picker)

ํ”„๋กœ๊ทธ๋ž˜์Šค ๋ฐ”(Progress Bar)
  • ํŠน์ • ์ž‘์—…์˜ ์ง„์ฒ™๋„ ๋˜๋Š” ๋‹จ๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค.
๋ผ๋””์˜ค ๋ฒ„ํŠผ(Radio Buttons)
  • ์ฒดํฌ๋ฐ•์Šค์™€ ์œ ์‚ฌํ•˜๋ฉด์„œ๋„(๊ฐ™์ด ์“ฐ์ด๋Š”๊ฑด๊ฐ€..?) ๋ฌ˜ํ•˜๊ฒŒ ๋‹ค๋ฅธ ๋…€์„
  • ์ฒดํฌ๋ฐ•์Šค๋Š” ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด์„œ ๋ชจ๋‘ ์„ ํƒํ•œ๋‹ค๋ฉด, ๋ผ๋””์˜ค ๋ฒ„ํŠผ์€ ์—ฌ๋Ÿฌ ์„ ํƒ์ง€ ์ค‘์—์„œ 1๊ฐœ๋ฅผ ๊ณ ๋ฅผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
์„œ์น˜ ํ•„๋“œ(Search Field)
  • ๋ณดํ†ต ๋‚ด๋ถ€์— ์ž‘์€ ๋‹๋ณด๊ธฐ ์•„์ด์ฝ˜๊ณผ ํ•จ๊ป˜ ์ •๋ณด๋ฅผ ์ฐพ์„ ๋•Œ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
์‚ฌ์ด๋“œ๋ฐ”(Sidebar)
  • ํŽ˜์ด์ง€ ์ธก๋ฉด์—์„œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค. ํ•ญ์ƒ ๋ณด์—ฌ์ง€๊ธฐ๋„ ํ•˜๊ณ  ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋“ค์–ด๊ฐ”๋‹ค ๋‚˜์™”๋‹ค ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
์Šฌ๋ผ์ด๋” ์ปจํŠธ๋กค(Slider Controls)
  • ์Œ๋Ÿ‰ ์กฐ์ ˆํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค! ๋กœ ๊ธฐ์–ตํ•˜๋ฉด ํŽธํ•˜๋‹ค.
์Šคํ…ํผ(Stepper)
  • ์ฃผ๋กœ ์ฆ๊ฐ€, ๊ฐ์†Œ 2๊ฐ€์ง€ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ, ์œ ์ €๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ’๋“ค ์ค‘์—์„œ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
ํƒญ ๋ฐ”(Tab Bar)

ํˆดํŒ(Tooltip)
  • ๋ณดํ†ต ๋™๊ทธ๋ผ๋ฏธ์— i๊ฐ€ ๋“ค์–ด๊ฐ€์žˆ์–ด์„œ ํด๋ฆญ ์‹œ, ์œ ์ €์—๊ฒŒ ๋„์›€๋ง ํ˜น์€ ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
ํ† ๊ธ€(Toggle)
  • ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ๋Š” ์Šค์œ„์น˜. ON/OFF ์Šค์œ„์น˜.

๊ทธ ๋™์•ˆ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ”์—ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ UI๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐ์–ด์„œ ๋ณด๊ณ  ์ธ์ง€ํ•˜๋‹ˆ๊นŒ ์ƒˆ์‚ผ UI์— ๋Œ€ํ•ด์„œ ์ •๋ง ๋ชฐ๋ž๊ตฌ๋‚˜ ์‹ถ์—ˆ๋‹ค.

Reference

32๊ฐ€์ง€ UI์š”์†Œ