Skip to content

어포던스: 제품 최전선을 API와 사용법으로 연다 #456

Description

@developer-1px

배경

/widgets는 Toolbar·Listbox·Tree 같은 화면 데모 선반이다. 손의 문법은 Adapter keymap과 useEditing에 흩어져 있고, 둘 다 정책을 호스트에 남긴다. 제품이 json-document를 만지는 최전선은 화면 위젯이 아니라 30년짜리 키보드·마우스 어포던스다. 입구는 데모가 아니라 API와 쓰는 법이다.

Goal Anchor

  • Outcome: 제품이 json-document를 만지는 최전선이 어포던스다. 입구는 API와 쓰는 법이고, 이름은 손동작이다.
  • Done: 어포던스 사용법·API가 공개 입구다. 선반이 고르기·접기·드래그·되돌리기처럼 행동으로 설명된다. 라이브는 usage의 증명이다. 호스트는 마크업과 장르 Intent만 가진다. 키보드·마우스 문법은 제품마다 열리지 않는다.
  • Don't: Listbox/Tree를 가져가는 상품으로 두지 않는다. 데모 카탈로그를 입구로 두지 않는다. Adapter의 chord 번역과 Connector의 구독을 어포던스에 합치지 않는다. 손의 문법을 호스트 정책으로 남겨 두지 않는다.

Canonical Mapping

  • 고르기 = select (pointer replace/extend/toggle, 키보드 이웃 이동)
  • 접기 = fold (나무 왼쪽 접힘, 오른쪽 펼침)
  • 드래그 = drag (고른 대상을 포인터로 옮김)
  • 되돌리기 = undo/redo

Canonical Vocabulary

  • 어포던스: 제품과 json-document 사이 최전선의 키보드·마우스 손. 화면 컴포넌트가 아니다.
  • 위젯: 호스트가 그리는 화면. 이 층의 상품이 아니다.

Target Structure

Affordance
|-- 고르기
|-- 접기
|-- 드래그
`-- 되돌리기

Guardrails

  • 호스트는 마크업과 장르 Intent만 가진다.
  • 단축키와 마우스 문법은 패키지가 닫는다. 제품별 keymap을 열지 않는다.
  • 라이브 화면은 usage가 맞는지 확인하는 증명이다.
  • Keyboard Adapter는 chord → command 번역을 유지한다. React Connector는 구독·질의를 유지한다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions