지원 컴포넌트 & 생성 결과

무엇이 자동 변환되고 무엇이 안 되는지, 생성된 코드의 모습

코드에서 생성한 지원 현황

현재 publish 스냅샷 기준, ids-use가 다룰 수 있는 컴포넌트를 분류별로 집계한 수치입니다.

선언형 48
명령형 5
왕복 fixture 66
아이콘 273
그래픽 132

발행 스냅샷 2026-08-31 · 발행 컴포넌트 1272

ids-use가 무엇을 자동 변환하고, export가 어떤 코드를 만드는지 정리했습니다.

1. 지원 목록 확인

이 문서는 분류 기준을 설명합니다. 실제 목록은 수동으로 관리하지 않으며, defs/가 단일 소스이고 아래 명령이 이를 그대로 읽어 옵니다.

bash

ids-use list              # def가 등록된 컴포넌트 전체
ids-use search <키워>    # 이름으로 찾기
ids-use get <comp>        # 해당 컴포넌트의 props·슬롯 상세

AI(MCP)로 연결했다면 list_components·search_components·get_component 도구가 같은 일을 합니다.

이 문서 아래쪽 5. 지원 컴포넌트 목록에서 같은 목록을 표로 검색해 볼 수도 있습니다.

2. 자동화 분류

Figma가 담는 것은 구조와 스타일, 담지 않는 것은 데이터와 행동·로직(함수·데이터 배열·콜백)입니다. 이 경계가 자동화 가능 여부를 가릅니다.

선언형: 완전 자동

  • 무엇: 화면에 보이는 것이 곧 JSX prop·children·slot인 컴포넌트입니다.
  • 지원: create·export·update·render를 모두 지원하고 CDP 왕복 검증까지 통과합니다.
  • 대상: button·checkbox·chip·dialog·input·select·popover·tooltip 등 대부분의 DS 컴포넌트. compound(tab·toggleButton·boxTab·treeListItem 등 슬롯에 반복 아이템을 조립하는 부류)도 같은 def 체계로 슬롯을 수집해 조립합니다.

명령형·데이터: 스캐폴드로 핸드오프

  • 무엇: data·columns·filter 함수·toast.warning() 같은 런타임 코드를 받는 컴포넌트입니다.
  • 자동이 안 되는 이유: Figma에는 그 런타임 정보가 없어 완성 코드를 만들 수 없습니다.
  • 대신 하는 것: ids-use reference <comp>가 스캐폴드 + API 요약을 내고, export<Table/>과 레퍼런스 포인터 주석을 생성합니다.
  • 대상: Table(TanStack data·columns), Combobox(ark-ui filter·async), Toast·dialogConfirm(명령형 호출), DatePicker·TimeField(value·onChange 런타임)

def 대상 아님

  • 무엇: 자동 변환 def를 만들지 않는 부류입니다.
  • 대상:
대상이유
base·부품 (*Base·*Item·selectTrigger·menuItem 등)부모 def가 흡수합니다
페이지·장식 (errorPage·dotIndicator·sticker·scrollBar 등)자동 변환 가치가 낮습니다
stepper브라우저 native를 쓰기로 합의해 DS 컴포넌트로 만들지 않습니다

아이콘·그래픽은 컴포넌트 변환(def)이 아니라 카탈로그로 관리되는 별도 자산입니다. Figma에서 컴포넌트의 아이콘 자리를 instance swap(인스턴스 교체)으로 원하는 자산으로 바꾸면, export@mildang/icons·@mildang/graphics에서 자동으로 import합니다. 쓸 수 있는 전체 목록은 아이콘 · 그래픽 갤러리에서 확인하세요.

3. 생성 결과

export가 만드는 코드의 형태를 알아 두면, 생성 후 무엇을 손봐야 하는지 빠르게 판단할 수 있습니다.

DS 컴포넌트 자동 변환

지원 컴포넌트에 해당하는 Figma 인스턴스는 DS import와 props가 자동으로 적용됩니다.

tsx

// Figma의 Button 인스턴스 → 자동 변환
import { Button } from '@mildang/design-system/Button';

<Button variant="primary" size="md">저장하기</Button>
매핑 없는 노드 폴백

def가 없는 노드는 HTML 요소 + Panda CSS css()로 생성됩니다.

tsx

import { css } from '@mildang/styled-system/css';

<div className={css({ display: 'flex', gap: '8', p: '16' })}>…</div>

생성 후 체크리스트

아래 항목을 하나씩 확인해 보세요.

  • import 경로가 올바른지 확인
  • 불필요한 중첩 div 제거
  • 필요 시 반응형 스타일 추가
  • 이벤트 핸들러·상태 관리 로직 추가

4. 새 컴포넌트 매핑 추가

어떤 컴포넌트가 DS 컴포넌트로 변환되지 않고 매번 일반 HTML로 생성된다면(3. 생성 결과의 "매핑 없는 노드 폴백" 참고), def를 추가해 자동 변환 대상으로 만들 수 있습니다.

새 컴포넌트 지원은 @mildang/figma core의 defs/def 하나를 추가하는 일입니다. def를 등록하면 create·export·update·render가 한 번에 인식하고, 왕복 검증(roundtrip)으로 확인합니다. 구체적인 파일 위치·명령어는 아래를 따르세요.

  • 상세 절차: def 정의 파일 위치와 등록 방법, 검증까지 단계별로 안내합니다. packages/figma/ids-use/CLAUDE.md의 "새 컴포넌트·변환 추가하기" 표를 보세요.
  • 요약 절차: 위 과정을 짧게 정리한 체크리스트입니다. /figma-mapping 스킬(.agents/skills/figma-mapping/SKILL.md)에 있습니다.

5. 지원 컴포넌트 목록

현재 publish 스냅샷 기준으로 자동 변환되는 컴포넌트입니다. 이름·용도·주요 props로 검색할 수 있습니다.

53개 컴포넌트

이름용도주요 props
Avatar선언형
사용자/엔터티를 이미지·이니셜·상태점으로 식별size=xs|sm|md|lg|xlvariant=circle|squarecontentType=image|textbadge=유무initialfallback
AvatarGroup선언형
여러 아바타를 겹쳐 인원을 요약(참여자·담당자 목록)size=sm|mdmax
BottomSheet선언형
모바일 화면 아래에서 선택지나 짧은 작업 표면을 올려 보여 줄 때 사용한다.hasHeader=유무hasFooter=유무opendefaultOpen
BoxTab선언형
드래그로 순서를 바꿀 수 있는 박스형 탭. 순서 변경이 필요 없으면 Tabssize=sm|md|lgdefaultValue
Breadcrumb선언형
현재 위치와 상위 경로를 보여주는 계층 내비게이션size=sm|md|lgdefaultValue
Button선언형
폼 제출 저장·삭제처럼 결과가 분명한 행동 화면에서 우선순위가 있는 CTAsize=xl|lg|md|sm|xsvariant=primary|impact|secondary|tertiary|quaternarydisabled=유무loading=유무labelTextstartIconendIcon
ButtonRadioGroup선언형
배타 선택지를 버튼 모양으로 나란히 제공하고 선택 결과를 즉시 강조할 때 사용한다.orientation=horizontal|verticalnameoptionsvaluedefaultValuedisabledgridTemplateColumns
CalloutBox선언형
본문 흐름 안에 끼워 넣는 상태 안내(info/success/warning/error). 입력 아래 검증 문구는 HelpText, 잠깐 뜨고 사라지는 알림은 toaststatus=error|warning|success|info|basicshowIcon=유무titlemessage
Checkbox선언형
동의 여부 입력 복수 선택 목록 테이블 행 선택size=sm|mdchecked=유무disabled=유무indeterminate=유무endIcondescriptionlabelTextlabel
CheckboxGroup선언형
복수 선택 체크박스 묶음 — 그룹 라벨·배치 방향을 함께 다룰 때. 낱개면 Checkboxsize=sm|mdorientation=horizontal|verticaldefaultValue
Chip선언형
짧은 텍스트/상태/분류를 작게 표시하고 선택·제거·실행. 필터·태그·키워드type=fill|outlined|text|transparentcolor=brand|neutral|green|orange|blue|redsize=xs|sm|md|lgstate=default|hoverlabelTextstartIcondeleteIcon
comboBox명령형
검색·필터가 있는 선택 입력 (async 로딩 지원)런타임 호출
ConfirmDialog선언형
삭제·제출처럼 되돌리기 어려운 행동을 실행하기 전에 확인받을 때 사용한다.type=delete|delete_confirm|exit|savetitledescription
datePicker명령형
날짜 선택 (value·onChange 런타임)런타임 호출
Dialog선언형
사용자의 확인이 필요한 중요한 행동 현재 화면을 벗어나지 않는 짧은 입력 작업size=xs|sm|md|lg|xl|fullpreview=modal|bottom_sheetopendefaultOpentitledescriptionisResponsive=유무
dialogConfirm명령형
확인·취소 확인 다이얼로그 (명령형 호출)런타임 호출
Divider선언형
콘텐츠 사이 구분선(line) 또는 점(dot)type=dot|verticalBar|horizontalBar
Drawer선언형
화면 좌우 가장자리에서 열려 본문 위에 겹치는 임시 표면. 본문과 공간을 나눠 갖고 계속 열려 있어야 하면 SidePanelsize=lg|md|custompreview=default|full-pagehasHeader=유무hasFooter=유무panelWidth=유무modalfullPageAtopendefaultOpen
EmptyState선언형
데이터/결과가 없을 때 안내 그래픽·설명·액션 제시emptyImageType=box|paper|barricade|lock|rene|symbols|brokenPencil|fallingAirplanedescriptionbuttonTextshowEmptyImage=유무
ExpansionPanel선언형
제목을 눌러 상세 콘텐츠를 접고 펼침. 아코디언·FAQ·설정 그룹position=top|bottomsize=sm|md|lgarrowPosition=left|rightdefaultValue=유무value=유무expandedtitlenumleftDescriptionicon
field.Field선언형
완성형 field.XField 로 표현되지 않는 조합(컨트롤 여러 개, 컨트롤 + 액션 버튼, 반복 행)을 한 필드로 묶을 때 사용한다. 라벨과 컨트롤의 접근성 연결(id · aria-describedby)을 컴포넌트에 맡기고 컨트롤은 순수하게 두고 싶을 때 사용한다. 폼 밖 정적 화면에서 폼과 똑같은 라벨·도움말 레이아웃이 필요할 때 사용한다.labelTextlabelrequireddescriptionhelperTexthelpTexthelpVarianthelpIcon=유무
field.InputField선언형
폼 입력 필드labelTextlabelrequireddescriptionhelperTexthelpTexthelpVarianthelpIcon=유무size=xs|sm|md|lg|xldisabled=유무defaultValueendAdornmentplaceholder
field.SelectField선언형
폼 입력 필드labelTextlabelrequireddescriptionhelperTexthelpTexthelpVarianthelpIcon=유무size=sm|md|lg|xlplaceholderstartAdornment=유무disabled=유무
field.TextAreaField선언형
폼 입력 필드labelTextlabelrequireddescriptionhelperTexthelpTexthelpVarianthelpIcon=유무size=sm|md|lg|xldisabled=유무defaultValueplaceholder
field.ToggleSwitchField선언형
폼 입력 필드labelTextlabelrequireddescriptionhelperTexthelpTexthelpVarianthelpIcon=유무size=sm|mdchecked=유무disabled=유무
FloatingButton선언형
화면에 떠 있는 주요 액션(FAB). 스크롤과 무관하게 항상 노출size=md|smcolor=impact|primary|secondary|tertiarycontentType=text_only|icon_only|icon_leftdisabled=유무loading=유무iconlabellabelText
form.ExpandableField선언형
긴 입력 영역을 평소에는 접고 필요할 때만 한 필드 안에서 펼쳐 입력하게 할 때 사용한다.requireddescriptionhelperTexthelpTextdefaultExpanded=유무labelTexthelpVarianthelpIcon=유무
GhostTextField선언형
테두리 없는 인라인 텍스트 입력. 제목·인라인 편집 등 배경에 녹는 입력size=md|smdefaultValueplaceholder
HelpText선언형
입력·선택 필드의 규칙이나 예시를 짧게 안내할 때 사용한다. 입력 중 검증 결과를 error·warning·success 상태로 즉시 알려야 할 때 사용한다. 최대 글자 수나 남은 글자 수처럼 입력 제한 정보를 표시할 때 사용한다. 자세한 가이드나 정책으로 이어지는 보조 링크가 필요할 때 사용한다.variant=link|info|error|warning|successshowIcon=yes|nolabelText
HoverCard선언형
호버/포커스로 가볍게 띄우는 부가 정보 패널(배경 스크롤을 막지 않음). 눌러서 조작하는 패널은 Popoverplacement=top|bottom|right|left|bottom_end|bottom_start|left_end|left_start|right_end|right_start|top_end|top_startshowBlank=유무
IconButton선언형
공간이 좁고 아이콘의 의미가 명확한 도구 모음 닫기·검색·삭제처럼 익숙한 단일 행동variant=impact|primary|secondary|tertiarysize=xl|lg|md|sm|xsdisabled=유무loading=유무icon
Input선언형
단일 라인 텍스트 입력. 이름·검색어·짧은 값size=sm|md|lg|xlsuccess=유무warning=유무error=유무disabled=유무defaultValueendAdornmentplaceholder
MenuButton선언형
한 버튼 아래에 서로 관련된 여러 행동을 제공할 때 도구 모음에서 보조 행동을 압축할 때size=xs|sm|md|lg|xlvariant=primary|impact|secondary|tertiary|quaternaryopen=유무labeldisabled=유무startIconendIcon
Pagination선언형
많은 항목을 페이지 단위로 나눠 이동size=md|smdisabled=유무hidePrevButton=유무hideNextButton=유무countpageSizepagedefaultPagesiblingCount
Popover선언형
클릭으로 열어 그 자리에서 짧은 정보·간단한 설정을 끝내고 닫는 작은 패널. 호버로 띄우는 부가 정보는 HoverCard, 한 줄 설명은 Tooltipplacement=top|bottom|right|left|bottom_end|bottom_start|left_end|left_start|right_end|right_start|top_end|top_startshowBlank=유무
ProgressBar선언형
완료까지 남은 정도를 가로 막대로(업로드·단계 진행)size=sm|md|lgtype=static|conditionallabelPosition=none|left|right|toptextColor=black|greenloading=유무value
ProgressCircle선언형
좁은 자리에서 진행률을 원형으로. 진행률을 모르면 Spinnertype=static|conditionalcontentType=string|iconsize=md|smvalue
RadioGroup선언형
배타 선택 묶음. 자식으로 Radio(기본)·RadioBox·RadioCard 중 하나를 골라 밀도를 정한다orientation=horizontal|verticaldefaultValuevaluedisabled
SegmentedControl선언형
2~5개 배타 옵션을 가로로 배치해 즉시 전환(보기/상태/정렬). 페이지 이동 없음size=sm|md|lgdefaultValue
Select선언형
선택지가 미리 정해져 있을 때 라디오보다 선택지가 많아 공간을 줄여야 할 때size=sm|md|lg|xlopen=유무placeholdersubTextmultiple=유무startAdornment=유무hideClearButton=유무disabled=유무
SidePanel선언형
본문과 공간을 나눠 갖는 레이아웃 표면(목록+상세, 편집 사이드바). 본문을 덮는 임시 표면은 Drawerdivider=line|gapsize=md|sm|customanchor=right|left|bothpanelWidth=유무drawerAtfullPageAtdefaultOpenopenhasHeader=유무hasFooter=유무
SidePanel.Trigger선언형
asChildanchorlabelTextcontentdisabled=유무sizeiconendIcon
Spinner선언형
짧은 로딩 상태를 원형 인디케이터로 표시할 때 진행률을 알 수 없는 불확정(Indeterminate) 대기를 표시할 때 (알 수 있으면 Progress Bar)color=green|white|neutralsize=2xl|xl|lg|md|sm|xs|2xs
Table선언형
행·열 데이터를 정렬·선택·페이지네이션과 함께 표로. 단순 나열이면 표가 아니라 목록으로showHeader=유무showFooter=유무
Tabs선언형
같은 맥락의 콘텐츠를 여러 패널로 나눠 전환. 페이지 내 섹션 전환type=scroll|stretchshowLine=유무defaultValue
TextArea선언형
여러 줄 텍스트 입력(메모·사유·설명). 한 줄이면 Inputsize=sm|md|lg|xlsuccess=유무warning=유무error=유무disabled=유무defaultValueplaceholder
timeField명령형
시간 입력 (value·onChange 런타임)런타임 호출
TitleButton선언형
페이지 헤더의 제목 자체를 눌러 메뉴를 여는 트리거(제목 + chevron)open=유무defaultOpen=유무labelTextendIcon
toast명령형
일시적 알림 메시지 (명령형 호출)런타임 호출
ToggleButton선언형
눌린 상태가 유지되는 버튼(단일은 pressed, 배타 그룹은 ToggleButton.Group). 2~5개 배타 전환 자체가 목적이면 SegmentedControltype=text|icon_onlymode=single|groupmultiple=유무labelTextoutline=유무disabled=유무defaultValue
ToggleSwitch선언형
단일 항목의 켜기/끄기를 즉시 적용(폼 전송 없이). 설정·기능 on/offlabelPlacement=left|rightsize=sm|mdcontentType=icon_only|label_left|label_right|desc_vertical|desc_horizontaldescriptionchecked=유무disabled=유무labelText
Tooltip선언형
hover/포커스 시 짧은 보조 설명을 잠깐 표시. 화면 이동 없이 부연placement=top-start|top|top-end|bottom-start|bottom|bottom-end|right-start|right|right-end|left-start|left|left-endshowBlank=유무content
TreeListItem선언형
Tree 문서의 composition 예제에서 사용한다.size=sm|mdtitlecountselected=유무active=유무disabled=유무dragHandle=유무checkbox=유무icon=유무toolbar=유무chipStart=유무chipEnd=유무complete=유무empty=유무