- Design Token์ ๋์์ธ ๊ฒฐ์ ์ ํ๋ซํผ์ ์์กดํ์ง ์๋ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ํํํ ์ต์ ๋จ์
- ์์, ๊ฐ๊ฒฉ, ๊ธ๊ผด, ๋ฐ๊ฒฝ, ๊ทธ๋ฆผ์ ๊ฐ์ ์๊ฐ ๊ท์น์ ์ฝ๋์ ๋์์ธ ๋๊ตฌ ์ฌ์ด์์ ๊ณต์ ํ๊ธฐ ์ํ ๊ณตํต ์ธ์ด
- ํน์ ํ๋ฉด์ UI ๊ตฌ์กฐ๊ฐ ์๋๋ผ ์ฌ๋ฌ ํ๋ฉด๊ณผ ํ๋ซํผ์์ ๋ฐ๋ณต ์ฌ์ฉ๋๋ ์คํ์ผ ๊ฒฐ์ ์ ๋ด๋ ๋์์ธ ์์คํ ๋ฐ์ดํฐ
ํด๋น ๊ฐ๋ ์ด ํ์ํ ์ด์
- ๋์์ด๋๊ฐ ์ ํ ์์, spacing, typography๋ฅผ Flutter, Web, iOS, Android์์ ๊ฐ์ ์๋ฏธ๋ก ์ฐ๊ธฐ ์ํด ํ์ํ๋ค.
#ff8a65๊ฐ์ ์์๊ฐ์ ์ฝ๋ ๊ณณ๊ณณ์ ์ง์ ์ฐ์ง ์๊ณcolor.background.brand๊ฐ์ ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ํ์ํ๋ค.- light/dark mode, ๋ธ๋๋ ํ ๋ง, ์ ๊ทผ์ฑ ์์ ์ฒ๋ผ ์ ์ญ ๋์์ธ ๋ณ๊ฒฝ์ด ์๊ฒผ์ ๋ ํ ๊ณณ์์ ๊ฐฑ์ ํ๊ธฐ ์ํด ํ์ํ๋ค.
AS-IS
Container(
color: const Color(0xffff8a65),
padding: const EdgeInsets.all(16),
child: Text(
'๋ก๊ทธ์ธ',
style: TextStyle(
color: Color(0xff222222),
fontSize: 20,
),
),
)TO-BE
Container(
color: PencilTokensLight.colorBackgroundBrand,
padding: EdgeInsets.all(PencilTokensLight.dimensionSpacingMd),
child: Text(
'๋ก๊ทธ์ธ',
style: TextStyle(
color: PencilTokensLight.colorTextPrimary,
fontSize: PencilTokensLight.dimensionFontTitle,
),
),
)Design Token์ด ๋ด๋ ๊ฒ
Design Token์ โ๋ฒํผ์ ์ด๋์ ๋์งโ ๊ฐ์ ํ๋ฉด ๋ฐฐ์น ์์ฒด๋ณด๋ค, โ๋ธ๋๋ ๋ฐฐ๊ฒฝ์์ ๋ฌด์์ธ์งโ, โ์นด๋ ๋ฐ๊ฒฝ์ ๋ช px์ธ์งโ, โ๋ณธ๋ฌธ ๊ธ๊ผด์ ๋ฌด์์ธ์งโ ๊ฐ์ ๋ฐ๋ณต ๊ฐ๋ฅํ ๋์์ธ ๊ฒฐ์ ์ ๋ด๋๋ค.
์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
{
"color.background.brand": "#ff8a65",
"color.text.primary": "#222222",
"dimension.card.radius": 12,
"font.family.ui": "Pretendard"
}์ด ๊ฐ๋ค์ ๊ทธ๋๋ก ์ฑ์ ๋ค์ด๊ฐ๊ธฐ๋ณด๋ค, ๋ณดํต DTCG ๊ฐ์ ํ์คํ ํฌ๋งท์ผ๋ก ์ ๊ทํ๋ ๋ค ํ๋ซํผ ์ฝ๋๋ก ๋ณํ๋๋ค.
ํ์ฌ ํ๋ก์ ํธ์์์ Design Token
ํ์ฌ ํ๋ก์ ํธ์์๋ design/ohmybaby.pen ์์ variables๊ฐ ๋์์ธ ํ ํฐ์ ์๋ณธ์ ๊ฐ๊น๋ค. extract-pencil-tokens.mjs๊ฐ Pencil variables๋ฅผ ์ฝ๊ณ , color/number/string ๊ฐ์ token JSON์ผ๋ก ๋ณํํ๋ค.
์ดํ Style Dictionary๊ฐ ๊ทธ token JSON์ ์ฝ์ด Flutter์์ ์ฌ์ฉํ Dart ์์ ํ์ผ์ ๋ง๋ ๋ค.
sequenceDiagram autonumber participant Pen as ohmybaby.pen variables participant Extractor as extract-pencil-tokens.mjs participant Json as DTCG token JSON participant SD as Style Dictionary participant Dart as Flutter Dart constants Pen->>Extractor: ๋์์ธ ๋ณ์ ์ฝ๊ธฐ Extractor->>Json: ํ ํฐ JSON ์์ฑ Json->>SD: ํ๋ซํผ ๋ณํ ์ ๋ ฅ SD->>Dart: Dart ์์ ์์ฑ