지원 컴포넌트 & 생성 결과
무엇이 자동 변환되고 무엇이 안 되는지, 생성된 코드의 모습
코드에서 생성한 지원 현황
현재 publish 스냅샷 기준, ids-use가 다룰 수 있는 컴포넌트를 분류별로 집계한 수치입니다.
발행 스냅샷 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선언형 | 드래그로 순서를 바꿀 수 있는 박스형 탭. 순서 변경이 필요 없으면 Tabs | size=sm|md|lgdefaultValue |
Breadcrumb선언형 | 현재 위치와 상위 경로를 보여주는 계층 내비게이션 | size=sm|md|lgdefaultValue |
Button선언형 | 폼 제출 저장·삭제처럼 결과가 분명한 행동 화면에서 우선순위가 있는 CTA | size=xl|lg|md|sm|xsvariant=primary|impact|secondary|tertiary|quaternarydisabled=유무loading=유무labelTextstartIconendIcon |
ButtonRadioGroup선언형 | 배타 선택지를 버튼 모양으로 나란히 제공하고 선택 결과를 즉시 강조할 때 사용한다. | orientation=horizontal|verticalnameoptionsvaluedefaultValuedisabledgridTemplateColumns |
CalloutBox선언형 | 본문 흐름 안에 끼워 넣는 상태 안내(info/success/warning/error). 입력 아래 검증 문구는 HelpText, 잠깐 뜨고 사라지는 알림은 toast | status=error|warning|success|info|basicshowIcon=유무titlemessage |
Checkbox선언형 | 동의 여부 입력 복수 선택 목록 테이블 행 선택 | size=sm|mdchecked=유무disabled=유무indeterminate=유무endIcondescriptionlabelTextlabel |
CheckboxGroup선언형 | 복수 선택 체크박스 묶음 — 그룹 라벨·배치 방향을 함께 다룰 때. 낱개면 Checkbox | size=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선언형 | 화면 좌우 가장자리에서 열려 본문 위에 겹치는 임시 표면. 본문과 공간을 나눠 갖고 계속 열려 있어야 하면 SidePanel | size=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선언형 | 호버/포커스로 가볍게 띄우는 부가 정보 패널(배경 스크롤을 막지 않음). 눌러서 조작하는 패널은 Popover | placement=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, 한 줄 설명은 Tooltip | placement=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선언형 | 좁은 자리에서 진행률을 원형으로. 진행률을 모르면 Spinner | type=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선언형 | 본문과 공간을 나눠 갖는 레이아웃 표면(목록+상세, 편집 사이드바). 본문을 덮는 임시 표면은 Drawer | divider=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선언형 | 여러 줄 텍스트 입력(메모·사유·설명). 한 줄이면 Input | size=sm|md|lg|xlsuccess=유무warning=유무error=유무disabled=유무defaultValueplaceholder |
timeField명령형 | 시간 입력 (value·onChange 런타임) | 런타임 호출 |
TitleButton선언형 | 페이지 헤더의 제목 자체를 눌러 메뉴를 여는 트리거(제목 + chevron) | open=유무defaultOpen=유무labelTextendIcon |
toast명령형 | 일시적 알림 메시지 (명령형 호출) | 런타임 호출 |
ToggleButton선언형 | 눌린 상태가 유지되는 버튼(단일은 pressed, 배타 그룹은 ToggleButton.Group). 2~5개 배타 전환 자체가 목적이면 SegmentedControl | type=text|icon_onlymode=single|groupmultiple=유무labelTextoutline=유무disabled=유무defaultValue |
ToggleSwitch선언형 | 단일 항목의 켜기/끄기를 즉시 적용(폼 전송 없이). 설정·기능 on/off | labelPlacement=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=유무 |