[인프런 워밍업 스터디 1기 디자인] 3주차 발자국
주중에 스케줄이 많이 잡혀서 따라잡기 쉽지 않았다. 때문에 다크모드 배리어블은 오늘 밤에 공부할 예정이라, 피드백과 네비게이션 컴포넌트, 그리고 특강에 대해서만 작성한다. 덧붙여 오늘부터는 강의요약을 좀 더 열심히 작성해봤다! 다른 분들의 발자국을 보고 약간 반성해서…ㅎㅎ 그럼 시작한다. 📖 강의 요약6. 피드백(Feedback) 컴포넌트 만들기피드백 컴포넌트는 사용자에게 행동의 결과를 전달하는 방법을 제공하는 컴포넌트를 말한다. (출처: https://www.geeksforgeeks.org/react-mui-feedback-components/) 강의에서는 Alert, Toast, Skeleton Loader, Loading Spinner, Progress Bar, Modal을 다룬다. AlertAlert는 화면 상단에 눈에 띄는 메시지를 표시하는 컴포넌트다. 새로운 기능을 홍보하거나 피드백 메시지를 제공하는 데 사용된다. ‘Alert’라는 이름으로 42%, ‘Banner’라는 이름으로 31% 사용되어 강의에서는 Alert라 부른다. (출처: UI Guideline/Alert)AnatomyAlertcontentleadingIcontextContainertitledescriptionProperties🔷 Status: brand, neutral, info, warning, success, error🔷 Style: outline, filled, transparent👁 Icon🔹 → Icon (info, warning, success, error 제외)🔠 Title👁 Description🔠 → Description👁 Close ToastToast는 일반적으로 페이지 오른쪽 상단에 떠 있는 상자로 표시되는 컴포넌트다. 토스트는 콘텐츠를 위한 제한된 공간을 제공하므로 콘텐츠가 짧고 간결해야 하며, 사용자 행동에 대한 응답으로 즉각적인 피드백을 제공하거나 앱이 수행했거나 할 프로세스를 사용자에게 알려야 한다. ‘Toast’으로 48%, ‘Notification’으로 22% 사용되므로 강의에서는 Toast를 사용한다. (출처: UI Guideline/Toast)AnatomytextContainertitledescriptionactionItemsiconbuttonbuttonProperties🔷 Type: textonly, text&action, text&longeraction🔷 Status: neutral, info, error, warning, success, inverse🔠 Title👁 Description🔠 → Description👁 Action👁 Close Skeleton LoaderSkeleton은 콘텐츠가 로딩 과정에 있다는 것을 시각적으로 전달하기 위해 UI의 low fidelity 표현을 제공한다. 이름은 ‘Skeleton’으로 38%, ‘Skeleton Loader’으로 31% 사용된다. (출처: UI Guideline/Skeleton)왜 Skeleton Loader로 쓰셨는지가 또 궁금해서 찾아봤다. ChatGPT 3.5가 말하길, 스켈레톤 로더는 스켈레톤과 유사하지만 애니메이션이 추가된 경우가 많아 로딩 중임을 사용자에게 더 명확하게 알려준다고 한다. 따라서 스켈레톤은 단순히 레이아웃의 자리 표시자임을 강조하고 스켈레톤 로더는 로딩 상태를 더 강조한다고 볼 수 있다. 실제로 ‘스켈레톤’ 용어를 사용하는 Polaris는 정적이고, ‘스켈레톤 로더’ 용어를 사용하는 Thumbprint는 동적이었다. 그리고 강의에서도 애니메이션을 제작한다 😎!Anatomy : 도형을 사용할 뿐이라 구조라고 할 것이 없었다. 다만 Linear 사용 값에 신경쓸 필요가 있어보인다!Properties🔷 Type: circle, rect, text🔷 Progress: 0, 33, 66 Loading Spinner스피너는 처리되고 있는 상태를 나타나는 애니메이션이 있는 원의 윤곽이다. (출처: UI Guideline/Spinner)spinnerLoaderProperties🔷 Size: sm-16px, md-24px, lg-32px, xl-48px🔷 Type: primary, secondaryspinnerAnimationProperties🔷 Progress: 0, 25, 50, 75 Progress Bar프로그레스 바는 진행중인 사용자의 과정에 대한 피드백을 제공하기 위한 선형 지표다. (출처: UI Guideline/Progress)AnatomyBarbarprogressbarIndicatorstartingPointendPointProperties🔷 Progress: 0, 25, 50, 75, 100 Modal & SlotModal은 Slot 컴포넌트를 만든 뒤 제작했다. 여기서 Slot 컴포넌트는 잘 몰라서 찾아봤다.Figma에서 컴포넌트를 구축할 때 일부 컴포넌트는 많은 유연성이 필요하다. 이러한 유연성과 자유를 슬롯을 통해 부여할 수 있다. 사용 방법은 다음과 같다. 컴포넌트 내부에 슬롯 컴포넌트를 배치하고, 이후 디자이너는 필요할 때마다 슬롯을 다른 컴포넌트로 교체한다. (2차 출처: [UI자료] Figma 슬롯 구성 요소: 사용 이유 및 사용 방법, 1차 출처: Figma Slot Components: why and how to use them)SlotAnatomytitleicontitle(option) descriptionProperties🔷 Size: default, small SlotGroupAnatomySlot1Slot2Slot3…Slot6Properties🔷 Direction: horizontal, vertical🔷 Size: default, small🔷 Reverse: true, false🔹 Nested Instances ModalAnatomycontenttopContenticon/placeholdertextContainertitledescriptionslotGroupslotGroupcloseIconProperties👁 Leading Icon🔹 → Leading Icon🔠 Title👁 Description🔠 → Description🔹 Nested InstancesModals : 용도에 따라 Modal의 슬롯, 아이콘 등을 조정하여 만들어둔 컴포넌트셋Modals 제작시 참고 → 18 Modals & Popups 7. 네비게이션(Navigation) 컴포넌트 만들어보기내비게이션은 작업을 완료하기 위해 앱의 화면 사이를 이동하는 행위이다. 전용 내비게이션 구성 요소, 콘텐츠에 내비게이션 동작 포함, 플랫폼 어포던스 등 여러 수단을 통해 활성화된다. (출처: M2) Link, Breadcrumbs, Tabs, Bottom Navigation, Pagination, Side Navigation, Header, Carousel을 포함한다.Link링크는 탐색 요소로 사용된다. (출처: UI Guideline/Link)AnatomyiconLabeliconProperties🔷 Type🔷 Style🔷 State🔠 Label👁 Leading Icon🔹 → Leading Icon👁 Trailing Icon🔹 → Trailing Icon Breadcrumbs브레드크럼프는 사용자가 레벨 간의 계층 구조를 이해하고 다시 탐색하는 데 도움이 되는 보조 탐색 패턴이다. (출처: UI Guideline/Breadcrumbs)AnatomyLink-1iconLabeliconLink-2Link-3Link-4current pageProperties🔷 Max Level👁 Level4👁 Level3👁 Level2👁 Level1🔠 Current Page Tabs탭은 사용자가 동일한 컨텍스트 내에서 쉽게 탐색할 수 있도록 돕는 컴포넌트다. (출처: UI Guideline/Tabs)TabsAnatomypart-1part-2part-3…part-8Properties🔷 Items: 8, 7, 6, 5, 4, 3, 2, 1🔹 Nested InstancesTabPartAnatomyIconLabelProperties🔷 Selected: false, true🔷 State: default, hover, press, focus, disabled👁 Leading Icon🔹 → Leading Icon🔠 Label Bottom Navigation바텀 네비게이션은 화면 하단에 3~5개의 목적지를 표시하고, 각 목적지는 아이콘과 선택적 텍스트 라벨로 표시된다. (출처: M2)navbarAnatomynavbarItem-1navbarItem-2…navbarItem-5Properties🔷 Type: icons&label, icononly🔷 Items: 5, 4, 3🔹 Nested InstancesnavbarItemAnatomyIconIconbadgeLabelProperties🔷 Type: icononly, icon&label🔷 Selected: false, true🔷 State: default, hover, focus, press🔹 Icon : 네비게이션에 필요한 아이콘만 선택🔠 Label👁 Badge🔹 Nested Instances Pagination페이지네이션은 다음 또는 이전 페이지로 이동하기 위한 제어와 함께 콘텐츠나 데이터를 여러 페이지로 분할하는 데 사용된다. (출처: UI Guideline/pagination)paginationAnatomyprevpart/paginationControlpart/paginationControlpagepart/paginationPage…nextpart/paginationControlpart/paginationControlProperties🔹 Nested Instancespart/paginationPageProperties🔷 State: default, hover, selected, morepart/paginationControlProperties🔷 State: default, hover, active, disabled🔹 Icon Side Navigation사이드 네비게이션은 사용자가 제품이나 섹션의 콘텐츠 등 페이지 내 탐색을 도와주는 측면 패널이다. (출처: UI Guideline/sidebar)Side NavigationAnatomyTopsidenavMenuGroupsidenavMenuGroupBottomsidenavMenuGroupProperties🔷 Type: full, icononly, icon&labelpart/menuItemAnatomyicontextContainerTitleDescriptionbadgeProperties🔷 Type: full, icononly, icon&label🔷 Selected: false, true🔷 State: default, hover, press, focus🔷 Disabled: false, true🔠 Title:👁 Leading Icon🔹 → Leading Icon👁 Description🔹 → Description👁 Badge🔹 Nested Instancespart/headingAnatomyheadingTextheadingdividerProperties🔠 headingText👁 DividersidenavMenuGroupAnatomypart/headingmenuItem-1menuItem-2menuItem-3…menuItem-8Properties🔷 Type: full, icononly, icon&label👁 Heading🔹 Nested Instances Header헤더는 모든 페이지 상단에 나타나는 요소로 일반적으로 사이트 이름과 기본 탐색을 포함한다. (출처: the component gallery)HeaderAnatomyleadingItemlogonavigationnavItem …functionnavItem …Properties🔹 Nested InstancesnavItem/headerMenuGroupAnatomypart/headerMenuItem …Properties🔹 Nested Instances headerMenuItemAnatomyicontextContainertitledescriptionProperties🔷 Selected: false, true🔷 State: default, hover, press, focus🔷 Disabled: false, true🔠 Title👁 Leading Icon🔹 → Leading Icon👁 Description🔹 → Description👁 Badge👁 HorizontalExpandnavItemAnatomycontainerlabeliconlabeliconProperties🔷 State: default, hover, focus, selected🔷 Type: navigation, setting, user, search, more, help, alert🔷 Sub Menu: false, true👁 Label🔠 → Label👁 Nav Icon🔹 → Nav Icon👁 Badge🔹 Nested Instances Carousel캐러셀은 관련 콘텐츠 항목 세트를 연속으로 표시하기 위한 컴포넌트다. (출처: UI Guideline/carousel)carouselAnatomyparts/imagePlaceholdercarouselArrowcarouselArrowcontainersubtitlecontentscarousel Main Titlecarousel ContentcarouselIndicatorProperties🔹 Nested InstancescarouselArrowProperties🔷 Direction: left, right🔷 State: default, hover, selected, disabled🔷 Size: md, lgcarouselIndicatorAnatomycarouselDot1carouselDot2Properties🔷 Items: 5, 4, 3, 2🔹 Nested InstancescarouselDotProperties🔷 State: default, hover, selected 플러그인Find/Focus : 특정 텍스트가 있는 레이어만 선택할 수 있다.중간점검 : 특강 및 LIVE QnA : 타이포그래피이번 특강은 타이포그래피 배리어블 관련 내용이었다.primitive, sematic 두 가지 모두 사용해야 한다.primitive: font family, font size, font style, font weight, line height, letter spacingsemantic: heading, bodytypeface, font, font family 등 용어의 정의를 정확히 알고 사용할 것(헷갈릴 수 있다)시스템별로 폰트를 지정할 수도 있으나 헤비해질 수 있으므로 고민/논의가 필요하다다른 배리어블과 마찬가지로 스프레드시트에 작성, 정리 후 작업에 들어가야 한다배리어블 적용시 고려사항이 많으므로 잘 정리해야 할 것 같다. 🎯 미션미션 9: 피드백 컴포넌트 전체 만들어보고 점검하기미션 10: 네비게이션 컴포넌트 만들어보기미션 11: 네비게이션 컴포넌트 나머지 만들고 마지막 점검하기미션 12는 시간관계상 진행하지 못했다.슬롯 컴포넌트를 알게 된게 이번주 작업 중 제일 재밌었던 부분이다. 이 컴포넌트를 다른 컴포넌트에서는 어떻게 활용하는지 더 알아보고 싶다.캐러셀 컴포넌트는 바탕 이미지에 따라 제작법이 많이 달라질 것 같아서 이 부분도 더 알고싶다. 네비게이션 컴포넌트를 만드는게 가장 힘들었다. 만드는 과정이 힘들진 않았는데 고려해야 할 요소가 많아서 조금 질렸다.🌼 회고잘 한 점어떻게든 미션을 따라가려고 노력했다!아쉬운 점시간관리를 잘 못해서 공부한 내용을 잘 정리하지 못했다. 그래도 발자국을 작성하면서 정리된 부분들이 많다.보완할 점필기를 열심히 하기..다음주 계획미션 잘 따라가기