Closed hyesungoh closed 1 week ago
panda.config.ts ํ์ผ์์
syntax: 'template-literal',
์ด ์ต์ ์ ๋ฃ์ ํน๋ณํ ์ด์ ๊ฐ ์์๊น์?
panda.config.ts ํ์ผ์์
syntax: 'template-literal',
์ด ์ต์ ์ ๋ฃ์ ํน๋ณํ ์ด์ ๊ฐ ์์๊น์?
์๊ฒ ๋ฐฑํฑ์ผ๋ก ์์ํ๋ ๋ฌธ๋ฒ์ ์ง์ํ๋ ๊ฑฐ์ฌ์!!!
css''
ํด๋น PR์ ์ด์ด์ ๋์์ธ ์์คํ
์ Button์ cva๋ก ๊ตฌํํด๋ณด๋ ค๊ณ ํ์์ด์.
๊ทธ๋ฐ๋ฐ ์์ํ๋๋ก cva, jsx๊ฐ ๋์ํ์ง ์์๊ณ ์ด์ ๋ฅผ ์ฐพ์๋ณด๋ ์ค panda/css/cva
ํด๋, panda/css/sva
ํด๋๋ฑ์ด ์์ฑ๋์ง ์๊ณ ์๋ ๊ฒ์ ๋ฐ๊ฒฌํ์์ต๋๋ค.
์ด๋ถ๋ถ์ ์ถ๊ฐํ์ template-literals ์ต์ ๊ณผ ๊ด๋ จ์ด ์๋๊ฒ ๊ฐ์๋ฐ, ํด๋น ์ต์ ์ ์ง์ฐ๋ฉด ์ ์์ ์ผ๋ก cva, sva, jsx ํด๋๋ค์ด ์์ฑ๋ฉ๋๋ค. https://panda-css.com/docs/concepts/template-literals
syntax: 'template-literal',
[์ง์ด ํ]
template-literal ์ต์ ์ ์ฌ์ฉํ๋ค๋ฉด, emotion.js ๋ฑ๊ณผ ๊ฐ์ด ๋ฐ๊ณผ ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์๊ณ , ๋์ sva, cva ๋ฑ์ ๋ฐฉ์์ ์ฌ์ฉ ๋ชปํ๋๊ฒ์ผ๋ก ํ์ ํ์ต๋๋ค.
css`
display: flex;
align-items: center;
`
๊ทธ๋ ๋ค๋ฉด template-literal ์ต์
์ ์ฌ์ฉํ ์ง ๋ง์ง์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๋๊ฒ ์ข์ ๊ฒ ๊ฐ์๋ฐ ํ์ฑ๋์ ์ด๋ป๊ฒ ์๊ฐํ์๋์?
์๋ํด๋ณด์ง๋ ์์์ง๋ง cva์ ๋์ฒด์ ์ธ receipt๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ ์์๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก๋ cva ๊ธฐ๋ฅ ์์ฒด๋ฅผ ์ฌ์ฉํ์ง ์๋๊ฒ์ panda css๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ์๋ ๊ฒ ๊ฐ์์. ๊ทธ๋ด๊ฑฐ๋ฉด emotion์ด๋ styled-component๋ฅผ ์ฌ์ฉํ๋๊ฑฐ๋ ์ฐจ์ด๊ฐ ์์๊น ์ถ์ด์
๊ทธ๋ฐ๋ฐ receipt ๊ธฐ๋ฅ์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ฉด ๊ตณ์ด cva ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์ด ๋น์ทํ ๋ฐฉ์์ผ๋ก ์๊ณ ์์ด์์.
@sumi-0011 ๋ง์ํ์ https://github.com/git-goods/git-animal-client/pull/82#discussion_r1648687638 ์ ์ฝ๋ฉํธ๋ ์ดํ ์ฝ๋ฉํธ๊ฐ ์ข ์์ถฉํ๋๋ฐ์ ~
https://panda-css.com/docs/concepts/template-literals#caveats
๋ง์ํ์ ๊ฒ์ฒ๋ผ, ์ ๊ณต์๋ฌธ์์์ css''
์ ๊ฐ์ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ํจํด๊ณผ ๋ ์ํผ๊ฐ ์์ฑ๋์ง ์๋๋ค๊ณ ์ค๋ช
ํ๊ณ ์์ด์ฉ
panda-css๋ฅผ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ์ค์ ๊ณผ ํจ๊ป ์ฌ์ฉ ์ด์ ์ ๋ํด์๋ DX ๊ด์ ๊ณผ ๊ฒฐ๊ณผ๋ฌผ ๊ด์ ์ผ๋ก ๋๋ ๊ฑฐ ๊ฐ์๋ฐ
DX(๊ฐ๋ฐ์ ๊ฒฝํ) ๊ด์ ์์๋ ๋ง์ํ์ ๋๊ตฌ๋ค๊ณผ ๋ณ๋ก ๋ค๋ฅด๊ฒ ๋๊ปด์ง์ง ์์ ๊ฑฐ ๊ฐ๊ธดํด์ฉ
๊ทธ์น๋ง, ๊ฒฐ๊ณผ๋ฌผ ๊ด์ ์์๋ css ํ ํฐ ํ์์ผ๋ก ๋์ํ๋ ๊ฒ, ์ ๋ก ๋ฐํ์์ธ ๊ฒ ์ ๋์ ์ฐจ์ด๊ฐ ์์ ๊ฑฐ ๊ฐ๋ค์ฉ
๊ฒฐ๊ตญ์ ํธ๋ ์ด๋์คํ์ผ ๊ฑฐ ๊ฐ์๋ฐ,
์ต์ํ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ
๋ง์ํ์ cva, ๋ ์ํผ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ค๋ธ์ ํธ ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํํด์ผ ํ ๊ฑฐ ๊ฐ์์.
๊ณต์ ๋ฌธ์ ์์์๋ ์ค๋ธ์ ํธ ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ ๊ถ์ฅํ๊ณ ์์ด์
@sumi-0011
์ถ๊ฐ์ ์ผ๋ก recipes(๋ ์ํผ)๋ cva๋ฅผ ํฌํจํ๋ ๊ฐ๋ ์ผ๋ก ์ดํดํ์๋ฉด ์ข์ ๊ฑฐ ๊ฐ์์
๋ ์ํผ๋ ๋ ์ข์ ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ์ฑ๋ฅ์ ์ํด ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ธ๋ฐ์
๋ฏธ๋ฆฌ ์ ์ํ๊ณ ๋น๋ํ ์คํ์ผ์ ๋ฐํ์์์ ํ์ ์ธ์ดํํ๊ฒ ๋น์ฅฌ์ผ์ ์ ํํ๋ค ... ์ ๋๋ก ๊ธฐ์ ๋์ด ์๋ค์ https://panda-css.com/docs/concepts/recipes
์๋ฌดํผ ๋ ์ํผ๋ ์ํ ๋ฏน ๋ ์ํผ์ ์ปจํผ๊ทธ ๋ ์ํผ๋ก ๋๋์ด์
์ด์ค์์ ์ํ ๋ฏน ๋ ์ํผ๊ฐ ๋ง์ํ์ cva์ ๋๋ค
cva๋ Class Variance Authority์ ์ฝ์๋ก, ๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์๊ฐ์ ๋ฐ์๋ค๊ณ ๊ธฐ์ ๋์ด ์์ด์ https://cva.style/docs
์ปจํผ๊ทธ ๋ ์ํผ์ ๊ฒฝ์ฐ defineRecipe
ํจ์๋ฅผ ์ด์ฉํด์ ์ ์ธํ๊ณ , ํ๋ค css์ ์ค์ ํ์ผ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๋ฐฉ๋ฒ์
๋๋ค
https://panda-css.com/docs/concepts/recipes#defining-the-recipe-1
๊ฐ์ธ์ ์ธ ์๊ฒฌ์ผ๋ก๋, ์ ํฌ ๋์์ธ ์์คํ ์ด ์ ๋ฐํ์ง ์๊ณ ๋ณ๊ฒฝ์ด ์ฆ์ ๊ฑฐ๋ผ ์์ํด์ (์ฌ์ด๋ ํ๋ก์ ํธ์ด๋ค ๋ณด๋)
๊ทธ๋ฌ๋ ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์์ผ๋ฉด์ + ๊ฐ๋ฐ์์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ฉด ๋๋ค๊ณ ์๊ฐ๋ผ์
๋ฌผ๋ก ๊ฐ์ฅ ์ค์ํ ๊ฑด ํ๋ก์ ํธ์ ๋ชฉํ์ธ ์ ํฌ๊ฐ ์ฐพ๋ ๊ฒฝํ์ด๋ผ ์๊ฐํด ์ ๋ ์ค๋ธ์ ํธ ๋ฆฌํฐ๋ด + ์ํ ๋ฏน ๋ ์ํผ๋ฅผ ํด๋ณด๋ ๊ฒ ์ข๋ค๊ณ ํ๋จ์ด ๋๋ค์ฉ
๊ทธ๋์ ์ค๋ธ์ ํธ ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ผ๋ก ๋ณ๊ฒฝํด https://github.com/git-goods/git-animal-client/pull/82/commits/a427259e3b96a5f18314372eccb5ebe92c4d2a99 ์ถ๊ฐ ์ปค๋ฐ ์ฌ๋ ธ์ต๋๋ค ๐
๊ทธ๋์ ์ค๋ธ์ ํธ ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ผ๋ก ๋ณ๊ฒฝํด a427259 ์ถ๊ฐ ์ปค๋ฐ ์ฌ๋ ธ์ต๋๋ค ๐
๊ทธ๋ผ ์ต์ข
์ ์ผ๋ก ์ ๋ฆฌํ์๋ฉด,
emotion.js์ฒ๋ผ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ
panda css์์ ๋ณดํต ์ฌ์ฉํ๋ css({}) ์ด๋ ๊ฒ ์ฌ์ฉํ๊ฑฐ๋, cva , sva, jsx๋ฑ์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ธ ์ค๋ธ์ ํธ ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ผ๋ก ๋ณ๊ฒฝํ๊ฒ์ผ๋ก ์ดํดํ์ต๋๋ค.
์ด์ ์ ์์ ์ผ๋ก cva ๋ฑ์ด ๋์ํ๋ค์! ๊ฐ์ฌํฉ๋๋ค :D ๊ธฐ์กด์ ์ปดํฌ๋ํธ๋ค๋ ์์ ํด์ ์ฌ๋ ค๋๊ฒ ์ต๋๋ค!
๐ก ๊ธฐ๋ฅ
close #65
๐ ๊ธฐํ
prepare
ํน์pnpm panda codegen --clean
์ปค๋งจ๋๋ฅผ ์คํํด์ฃผ์ธ์~