'props = variants' 원칙을 통해 디자인(variants)과 개발(props) 간의 일관성을 유지합니다.
또 이런 정보도 있습니다.
컴포넌트의 필수 요구사항은 '접근성 및 기본 기능, 논리적 상태, 시각 옵션, 인터랙션 상태, 콘텐츠'이다.
여기서 논리적 상태와 인터랙션 상태가 구분되어 있다는 것에 집중했습니다.
•
논리적 상태란?
◦
주로 개발 로직에 따라 결정되는 상태
◦
예시) disabled, selected, invailed, loading
•
인터랙션 상태란?
◦
유저의 상호작용에서만 발생하는 일시적인 피드백
◦
예시) hover, active, focus
•
얻은 정보
◦
지금까지 내가 상태값에 뭉쳐놓은 'default, hover, focus, disabled, selected'는 개발 로직에 따라 결정되는지, 아니면 유저의 상호작용에서 발생하는지에 따라 구분할 수 있다.
그렇다면 왜 구분하면 좋을까?
•
1) 개발자와의 협업에 도움이 됩니다.
◦
디자이너와 개발자의 시선 차이는 다양하게 발생하기 마련입니다. 디자이너에게는 하나의 'State'로 정의되었던 것들이, 개발자에게는 왜 하나로 뭉쳐둔 거지? 라는 생각이 들게 할 수 있어요. 디자인과 개발 사이 간격을 줄여가며 구현 과정을 더 자세히 이해할 수 있게 됩니다.
◦
인터랙션과 개발 로직을 구분해 가는 과정에서 더욱 컴포넌트에 대한 이해도가 높아지고, 반복되는 스타일을 하위 컴포넌트로 간편하게 처리할 수 있어요.
◦
그리고 디자인 시스템은 디자이너만 사용하는 방식으로 멈춰두었을 때 팀 전체의 효율이 떨어져요. 개발과의 자동 연동을 목표로 두고 있다면, 결코 무시할 수 없는 장점입니다.
•
2) 컴포넌트 상태값을 수정하거나 추가할 경우 간단해집니다.
◦
버튼의 hover 상태에서 사용하는 컬러를 gray/100 → gray/200 으로 변경한다고 하면, 인터랙션 레이어를 따로 컴포넌트화 했을 경우에는 해당 컴포넌트를 한 번만 수정하면 자동으로 공통적용됩니다. 그렇지만 컴포넌트 되지 않았을 때는 직접 하나하나 수정해야 하는 상황이 생겨요.
◦
동시에 인터랙션 레이어를 분리하여 하위 컴포넌트로 합성 컴포넌트를 제작하여, 작업 시 가독성이 훨씬(!) 좋아집니다.
▪
디자인 시스템을 제작하며 느끼는 것 중 가장 큰 한 가지는 다음과 같습니다. 개발과 디자인의 경계를 허물고 서로 이해해갈수록 얻을 수 있는 장점은 생각보다 많다!
앞으로는 이렇게
•
디자이너 입장에서는 단순히 스타일이 바뀌었기 때문에 상태값으로 구분했던 것들을 자세하게 뜯어보며 해당 상태가 단순 인터랙션 상태인지, 아니면 논리적 상태값인지 구분하며 작업하려고 합니다.
Subscribe to '박은서의 노트'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to '박은서의 노트'!