titicacadev / triple-frontend

Monorepo for Triple Frontend Components and Libraries
https://storybook.triple-corp.com
MIT License
151 stars 9 forks source link

[제안] `css` prop 추가 #1582

Closed drakang4 closed 2 years ago

drakang4 commented 3 years ago

컴포넌트 스타일링의 유연성을 제공하기 위한 css prop을 추가해보면 어떨까 합니다. 모든 컴포넌트에 최소한의 API만 표면에 노출시켜서 유연한 커스터마이징이 가능한 디자인 시스템 구현을 달성해보는 목적입니다.

why

예시: https://codesandbox.io/s/silent-fast-ngmy8

giwan-dev commented 3 years ago

저는 완전 찬성입니다! props는 UI의 기능에만 집중하고, 스타일링은 css로 관리하는 패턴도 가능하겠네요.

컴포넌트가 nesting 되어있을 때 내부 컴포넌트의 스타일을 바꾸기 위해 prop을 추가하는 일이 있을 것 같아요. 개인적으로 이런 것은 부모에서 결정하도록 바꾸는 게 좋을 것 같은데 어떻게 생각하시나요?

예를 들어 POI 목록 요소 컴포넌트의 스크랩 버튼 스타일이 변동된다면, POIListElementscrapButtonCss prop을 추가하는 게 아니라 scrapButton prop을 추가해서 스크랩 버튼의 스타일을 통째로 부모에게 위임하는 것이죠.

<POIListElement scrapButtonCss={{ /* */ }} />
// 이게 아니라

<POIListElement scrapButton={<ScrapButton />} />
// 이렇게

구체적인 고민은 현실 세계에서 하더라도 스타일 변경을 위한 props을 최대한 넣지 말자는 컨벤션을 가지면 어떨까 싶습니다.

dddeok commented 3 years ago

저도 우디 의견에 찬성합니다. 간단한 CSS 변경으로 인한 사이클이 길어질때도 많았고, 불편한 부분 이있었던 부분을 해소 시킬 수 있을거 같습니다. 하지만 다소 걱정 되는 부분은 공통 모듈에 대한 의미가 희미 해질 수 도 있다고 생각이 드는데, 그부분은 우디가 제시해주신 부분 처럼 내부적인 컨벤션 룰을 통해 해소가 될 수 있을 거같습니다.

drakang4 commented 3 years ago

@zprime0920 저도 두 개 놓고 보면 후자 방법이 더 나아 보이네요.

drakang4 commented 2 years ago

요즘 다른 컴포넌트 라이브러리에서는 sx prop 이라고 theme에 직접적으로 접근할 수 있는 컨셉을 쓰기도 합니다.