@hjmds/design-contracts 1.30.0 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/behaviors.d.ts +3 -0
- package/dist/behaviors.d.ts.map +1 -1
- package/dist/bottom-navigation.d.ts +43 -0
- package/dist/bottom-navigation.d.ts.map +1 -1
- package/dist/bottom-navigation.js +55 -0
- package/dist/bottom-navigation.js.map +1 -1
- package/dist/carousel.d.ts +30 -0
- package/dist/carousel.d.ts.map +1 -1
- package/dist/carousel.js +32 -0
- package/dist/carousel.js.map +1 -1
- package/dist/catalog.d.ts +178 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +16 -6
- package/dist/catalog.js.map +1 -1
- package/dist/component-recipes.d.ts +126 -0
- package/dist/component-recipes.d.ts.map +1 -1
- package/dist/component-recipes.js +71 -2
- package/dist/component-recipes.js.map +1 -1
- package/dist/icon.d.ts +58 -1
- package/dist/icon.d.ts.map +1 -1
- package/dist/icon.js +69 -0
- package/dist/icon.js.map +1 -1
- package/dist/image-choice.d.ts +47 -0
- package/dist/image-choice.d.ts.map +1 -1
- package/dist/image-choice.js +56 -0
- package/dist/image-choice.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/pagination.d.ts +53 -0
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +48 -0
- package/dist/pagination.js.map +1 -1
- package/dist/recipes.d.ts +1 -1
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js.map +1 -1
- package/dist/screen-patterns.d.ts +152 -2
- package/dist/screen-patterns.d.ts.map +1 -1
- package/dist/screen-patterns.js +132 -4
- package/dist/screen-patterns.js.map +1 -1
- package/dist/showcase.d.ts.map +1 -1
- package/dist/showcase.js +3 -0
- package/dist/showcase.js.map +1 -1
- package/dist/steps.d.ts +16 -7
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +6 -1
- package/dist/steps.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/docs/authoring-tools.md +1 -0
- package/docs/bottom-navigation.md +28 -0
- package/docs/carousel.md +8 -0
- package/docs/data-workflows.md +1 -0
- package/docs/dialog.md +23 -0
- package/docs/generated/component-maturity.md +7 -4
- package/docs/generated/renderer-evidence.json +317 -19
- package/docs/generated/renderer-evidence.md +9 -3
- package/docs/generated/showcase-manifest.json +164 -6
- package/docs/icon.md +9 -0
- package/docs/pagination.md +17 -0
- package/docs/screen-patterns.md +55 -1
- package/docs/steps.md +4 -3
- package/docs/toast.md +10 -0
- package/docs/usage/README.md +5 -2
- package/docs/usage/SELECTION.md +1 -1
- package/docs/usage/components/auth-screen-layout.md +15 -5
- package/docs/usage/components/bottom-cta.md +11 -0
- package/docs/usage/components/bottom-navigation.md +99 -2
- package/docs/usage/components/card.md +36 -5
- package/docs/usage/components/carousel.md +1 -0
- package/docs/usage/components/chat-date-separator.md +86 -0
- package/docs/usage/components/chat-message.md +13 -1
- package/docs/usage/components/chat-screen.md +3 -2
- package/docs/usage/components/comment-thread-row.md +11 -3
- package/docs/usage/components/comment-thread-screen.md +1 -1
- package/docs/usage/components/dialog.md +69 -0
- package/docs/usage/components/editor-screen.md +6 -2
- package/docs/usage/components/field.md +13 -0
- package/docs/usage/components/icon-tile.md +19 -3
- package/docs/usage/components/icon.md +45 -6
- package/docs/usage/components/image-choice-group.md +35 -4
- package/docs/usage/components/media-selection-screen.md +20 -1
- package/docs/usage/components/message-composer.md +4 -1
- package/docs/usage/components/moderation-screen.md +107 -2
- package/docs/usage/components/page-indicator.md +102 -0
- package/docs/usage/components/pagination.md +28 -4
- package/docs/usage/components/profile-screen.md +9 -3
- package/docs/usage/components/profile-summary.md +3 -3
- package/docs/usage/components/screen-layout.md +15 -3
- package/docs/usage/components/search-screen.md +5 -3
- package/docs/usage/components/steps.md +14 -7
- package/docs/usage/components/tabs.md +21 -1
- package/docs/usage/components/text.md +30 -1
- package/docs/usage/components/toast.md +5 -0
- package/docs/usage/components/typing-indicator.md +89 -0
- package/docs/usage/screens/common-login.md +3 -1
- package/docs/usage/screens/common-profile.md +3 -3
- package/docs/usage/screens/flow-editor.md +13 -2
- package/docs/usage/screens/flow-moderation.md +31 -3
- package/package.json +1 -1
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import { affixRecipe } from \"./affix.js\";\nimport { watermarkRecipe } from \"./watermark.js\";\nimport { colorPickerRecipe } from \"./color-picker.js\";\nimport { masonryRecipe } from \"./masonry.js\";\nimport { imageChoiceRecipe } from \"./image-choice.js\";\nimport { virtualListRecipe } from \"./virtual-list.js\";\nimport { qrCodeRecipe } from \"./qr-code-recipe.js\";\nimport { thinkingOrbRecipe } from \"./thinking-orb-recipe.js\";\nimport type { BehaviorName } from \"./behaviors.js\";\n\nexport type ComponentCategory =\n | \"foundation\"\n | \"layout\"\n | \"action\"\n | \"input\"\n | \"navigation\"\n | \"data-display\"\n | \"feedback\"\n | \"overlay\"\n | \"provider\"\n | \"utility\";\n\nexport type ComponentPlatform = \"shared\" | \"adaptive\" | \"web\" | \"native\";\nexport type ComponentStatus = \"stable\" | \"beta\" | \"planned\" | \"deprecated\";\nexport type ComponentSurface = \"web\" | \"native\";\nexport type ComponentSurfaceStatus = ComponentStatus | \"unsupported\";\nexport type ComponentSurfaceMaturity = Readonly<\n Record<ComponentSurface, ComponentSurfaceStatus>\n>;\nexport type ComponentRoadmapState =\n | \"contract-ready\"\n | \"composed\"\n | \"evidence-needed\"\n | \"prerequisite\"\n | \"declined\";\n\nexport type ComponentRoadmap = Readonly<{\n state: ComponentRoadmapState;\n summary: string;\n /** Canonical components that solve this reference problem together. */\n targets?: readonly string[];\n}>;\n\nexport type ComponentNonVisualEvidence = \"provider-adapter\";\n\nexport type ComponentCatalogEntry = Readonly<{\n name: string;\n category: ComponentCategory;\n platform: ComponentPlatform;\n /** Contract maturity. Renderer maturity is tracked independently per surface. */\n status: ComponentStatus;\n /**\n * Renderer evidence for each surface. Built-in entries always provide this\n * matrix. It stays optional so catalog entries authored against the pre-0.6\n * shape can still be passed to public helpers during migration.\n */\n surfaceStatus?: ComponentSurfaceMaturity;\n /** Search terms and familiar ecosystem names; never an API compatibility promise. */\n aliases?: readonly string[];\n recipe?: RecipeName;\n behavior?: BehaviorName;\n /** Explicit evidence for a mature contract whose value is not a visual recipe. */\n nonVisualEvidence?: ComponentNonVisualEvidence;\n /** Why the row exists at its current maturity and what event moves it forward. */\n roadmap?: ComponentRoadmap;\n /*\n 2026-10-18 registration input consolidated here. Adding one component used to touch eight hand-kept\n registries (ids, Korean labels, evidence claims, Web preview names, Native example index, story groups,\n public API map, platform-only Storybook exceptions); the 22 screen compositions needed 86 files. The\n fields below are the only authored facts those projections need; everything else derives from this row.\n */\n /**\n * Stable kebab-case id. Defaults to the kebab form of `name` (`componentIdOf`). Set it only when a row\n * was renamed after its id shipped, so documentation keys and consumer catalog snapshots survive.\n */\n id?: string;\n /** Purpose-based Korean item name used by both Storybooks (docs/STORYBOOK_NAVIGATION.md §1.3). */\n label?: string;\n /** Public renderer symbols that are named regions or variants of this contract, not rows of their own. */\n companions?: readonly string[];\n /** Optional extensions that reuse this contract without inheriting its maturity (public-component-map.md). */\n extensions?: readonly string[];\n /**\n * 만들지 않기로 **확정한** 항목의 사유. `status`는 구현 성숙도 축이고 이것은\n * \"만들 것인가\"라는 다른 질문이라 직교 필드로 둔다.\n *\n * 이 필드가 필요한 이유: crosswalk의 `targets`가 이 항목들을 가리키고\n * `targets.length > 0`이 테스트로 강제되므로, 흡수할 다른 이름이 없으면 행을 지울 수\n * 없다. 그렇다고 `planned`로 두면 \"아직 안 만들었지만 만들 것\"이라는 거짓을 말한다.\n * 근거는 `docs/<id>.md`에 있고, 그 문서의 존재를 테스트가 강제한다.\n */\n declinedReason?: string;\n}>;\n\n/*\n 2026-09-18 현재 이 상태를 쓰는 행이 없다 — 계약만 준비돼 있던 항목이 모두 renderer나\n 조합으로 닫혔다. `prerequisite`와 같은 이유로 helper는 남긴다: 다음에 계약만 먼저\n 들어오는 컴포넌트가 생기면 바로 쓴다.\n*/\nexport const contractReady = (summary: string) => ({\n roadmap: { state: \"contract-ready\", summary },\n} as const);\n// Compositions live in Showcase patterns and map to their implemented primitives in the\n// reference crosswalk; reserving Planned rows incorrectly counted them as missing work.\n// Promotion uses renderer requirements; adoption notes are not gates (docs/stable-promotion.md).\nconst evidenceNeeded = (summary: string) => ({\n roadmap: { state: \"evidence-needed\", summary },\n} as const);\n/*\n 2026-09-18 현재 사용하는 행이 없다(Cascader가 마지막이었고 조합으로 풀렸다). 상태 값\n 자체는 타입과 문서에 남아 있으므로 helper도 함께 둔다 — 다음에 선행 조건이 실제로 생기면\n 다시 쓰고, 지금은 export로 미사용 오류만 피한다. 상태 값을 지우는 결정은 별도 판단이다.\n*/\nexport const prerequisite = (summary: string, targets: readonly string[]) => ({\n roadmap: { state: \"prerequisite\", summary, targets },\n} as const);\n\nconst surfaceMaturity = <\n const Web extends ComponentSurfaceStatus,\n const Native extends ComponentSurfaceStatus,\n>(web: Web, native: Native) => ({ surfaceStatus: { web, native } } as const);\n\n/**\n * Resolves renderer maturity without conflating it with contract maturity.\n * The fallback preserves custom catalog entries authored before\n * `surfaceStatus`; every built-in entry uses the explicit matrix.\n */\nexport function getComponentSurfaceStatus(\n entry: ComponentCatalogEntry,\n surface: ComponentSurface,\n): ComponentSurfaceStatus {\n if (entry.surfaceStatus) return entry.surfaceStatus[surface];\n if (entry.platform === \"shared\" || entry.platform === \"adaptive\") return entry.status;\n if (entry.platform === surface) return entry.status;\n return \"unsupported\";\n}\n\n/**\n * The catalog is a scope and maturity contract, not an implementation claim.\n * `shared` means API/visual parity. `adaptive` means shared intent with native\n * platform behavior. Web/native entries are intentionally platform-specific.\n */\nexport const componentCatalog = [\n { name: \"Text\", label: \"본문 글자\", companions: [\"StatusText\"], extensions: [\"GravityLetters\"], category: \"foundation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"textRecipe\" },\n // Web semantic element is stable; React Native has no equivalent semantic elements.\n { name: \"TextFormat\", label: \"글자 서식\", category: \"foundation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"Kbd\", \"Code\", \"Blockquote\"], recipe: \"textFormatRecipe\", behavior: \"textFormat\" },\n { name: \"Heading\", label: \"제목\", category: \"foundation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"headingRecipe\", behavior: \"heading\" },\n { name: \"Icon\", label: \"아이콘\", category: \"foundation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"iconRecipe\" },\n { name: \"Surface\", label: \"배경 영역\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"surfaceRecipe\" },\n // Display promotions use renderer evidence, not product adoption counts (docs/stable-core.md).\n { name: \"Divider\", label: \"구분선\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"dividerRecipe\" },\n { name: \"Section\", label: \"섹션\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sectionRecipe\" },\n { name: \"Stack\", label: \"가로·세로 배치\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"stackRecipe\", aliases: [\"Flex\", \"Space\", \"Inline\"] },\n { name: \"Container\", label: \"컨테이너\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"containerRecipe\" },\n // Both renderers now pass the required scenario matrix, including long child copy; the product keeps media semantics.\n { name: \"AspectRatio\", label: \"화면 비율\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"aspectRatioRecipe\", ...evidenceNeeded(\"Radix·Chakra·Mantine·Carbon에서 반복되는 media geometry 문제를 shared primitive로 채택했습니다. 제품이 object-fit을 소유하고 renderer는 비율만 보장합니다.\") },\n // Both renderers now exercise long child content in addition to the responsive geometry contract.\n { name: \"Grid\", label: \"격자\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"gridRecipe\", ...evidenceNeeded(\"공통 window class·responsive value·row-major geometry 계약과 공식 Web/RN default renderer 증거가 연결됐습니다. 남은 환경 증거는 generated 보고서에서 추적합니다.\") },\n // Interaction evidence belongs to its declared surface; inventing a Native skip-link only to mirror Web would add unsupported behavior.\n { name: \"Layout\", label: \"화면 기본 구조\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"AppShell\"], recipe: \"layoutRecipe\", behavior: \"layout\", ...evidenceNeeded(\"Web skip-link and renderer scenarios verified.\") },\n { name: \"Top\", label: \"화면 제목과 설명\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"topRecipe\", behavior: \"top\" },\n { name: \"Masonry\", label: \"높이가 다른 카드 배치\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"masonryRecipe\" },\n // Stable after the real Web matrix and focused separator keyboard proof pass; collapse and N-pane stay out of the contract.\n { name: \"Splitter\", label: \"분할 영역 조절\", category: \"layout\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"SplitPane\"], recipe: \"splitterRecipe\", behavior: \"splitter\", ...evidenceNeeded(\"Web long-copy, environment, accessibility, drag and focused keyboard proofs pass.\") },\n { name: \"Button\", label: \"버튼\", companions: [\"ClipboardButton\"], extensions: [\"ReactionPicker\", \"InlineConfirm\"], category: \"action\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"buttonRecipe\" },\n { name: \"IconButton\", label: \"아이콘 버튼\", companions: [\"ClipboardIconButton\"], extensions: [\"NotificationBell\"], category: \"action\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"iconButtonRecipe\" },\n // Web anchor Enter activation and Native router activation are now asserted at the renderer boundary.\n { name: \"Link\", label: \"링크\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"linkRecipe\", behavior: \"link\" },\n { name: \"BottomCTA\", label: \"하단 실행 버튼\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"bottomCtaRecipe\" },\n { name: \"FloatingActionButton\", label: \"플로팅 실행 버튼\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"floatingActionButtonRecipe\", behavior: \"floatingActionButton\", aliases: [\"FloatButton\", \"FAB\"], ...evidenceNeeded(\"Web/RN의 고정 생성 행동, 스크롤 방향 hook, 실제 높이·safe area 여백을 제공합니다. docs/floating-action-button.md에서 전체 이름·focus 유지와 목록 가림을 검증합니다.\") },\n // Product-owned auth copy stays in slots; both renderer matrices now exercise long hero text.\n { name: \"AuthScreenLayout\", label: \"로그인 화면\", id: \"auth-screen\", companions: [\"AuthScreenHero\", \"AuthScreenFooter\"], category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"SignInLayout\"], recipe: \"authScreenRecipe\", behavior: \"authScreen\", ...evidenceNeeded(\"로그인 화면의 두 영역 골격입니다. 히어로와 주 행동을 세로 중앙에 한 덩어리로 두고 동의 고지·정책 링크를 바닥에 붙입니다. 문구·마크·제공자 목록·링크 목적지는 제품이 슬롯으로 넘기며, 인증 흐름은 이 계약에 없습니다.\") },\n // Enter/Space and Native host press now invoke the explicit product-owned action.\n { name: \"AuthProviderButton\", label: \"소셜 로그인 버튼\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"SocialLoginButton\"], recipe: \"authProviderButtonRecipe\", behavior: \"authProviderButton\", ...evidenceNeeded(\"Google·Kakao·Naver·Apple 로그인 버튼입니다. 색은 제공자 가이드라인 값이고 테마가 다시 칠하지 않으며, 로고 자산과 문구는 제품이 넘깁니다. 실제 제공자 심사 통과는 제품 소유입니다.\") },\n { name: \"Field\", label: \"입력 필드\", companions: [\"TextField\"], extensions: [\"FieldGroup\", \"DateEntry\", \"GestureSheetInput\"], category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"fieldRecipe\", behavior: \"field\" },\n // Long labels wrap and Web typing/clear plus Native input/clear actions are covered.\n { name: \"SearchField\", label: \"검색 입력\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"searchFieldRecipe\", behavior: \"searchField\" },\n { name: \"TextArea\", label: \"여러 줄 입력\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"fieldRecipe\" },\n // Web Enter/Space and Native host reveal actions are now verified on both renderers.\n { name: \"PasswordField\", label: \"비밀번호 입력\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Input.Password\"], recipe: \"passwordFieldRecipe\", behavior: \"passwordField\" },\n // One accessible text input, numeric sanitization, wrapping label, and input actions are covered per renderer.\n { name: \"OtpField\", label: \"인증번호 입력\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Input.OTP\"], recipe: \"otpFieldRecipe\", behavior: \"otpField\" },\n // Web Space and Native host press now verify the single checkbox state transition.\n { name: \"Checkbox\", label: \"체크박스\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionControlRecipe\", behavior: \"checkbox\" },\n // Long option labels now have matrix coverage on both renderers.\n { name: \"Radio\", label: \"라디오 버튼\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionControlRecipe\" },\n // Web Space and Native host press now prove the choice update on each renderer.\n { name: \"CheckboxGroup\", label: \"체크박스 그룹\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionGroupRecipe\", behavior: \"checkboxGroup\" },\n // Web Space and Native host press now verify the selected option transition.\n { name: \"RadioGroup\", label: \"라디오 버튼 그룹\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionGroupRecipe\", behavior: \"radioGroup\" },\n // Web Space and Native host press now prove the checked state transition.\n { name: \"Switch\", label: \"스위치\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"switchRecipe\", behavior: \"switch\" },\n // Web Space and Native host press now verify selectable Chip state changes.\n { name: \"Chip\", label: \"선택 칩\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"chipRecipe\", behavior: \"chip\" },\n // Image tile single/multiple selection (2026-10-17 registration: independent radio/checkbox semantics).\n // Beta until renderer behavior matrices cover it; unit tests cover toggle and validation only.\n { name: \"ImageChoiceGroup\", label: \"이미지 선택\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"imageChoiceRecipe\" },\n // Web arrow-key selection and Native host press now prove option changes.\n { name: \"SegmentedControl\", label: \"버튼형 선택\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"segmentedControlRecipe\", behavior: \"segmentedControl\" },\n // Web Space and Native host press now verify the pressed-id set transition.\n { name: \"ToggleGroup\", label: \"토글 그룹\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"toggleGroupRecipe\", behavior: \"toggleGroup\", ...evidenceNeeded(\"여러 개를 동시에 켜는 버튼 묶음입니다. 하나만 고르는 자리는 SegmentedControl이 그대로 갖습니다.\") },\n // Both renderer matrices and the surface-specific commit/remove regressions pass; Native intentionally commits on Return, not blur.\n { name: \"TagsInput\", label: \"태그 입력\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"TagField\", \"ChipsInput\"], recipe: \"tagsInputRecipe\", behavior: \"tagsInput\", ...evidenceNeeded(\"자유 입력 다중값 계약입니다. 정책 판정은 공통이며 Web Enter와 Native Return 확정, 위치 기반 삭제 action을 각 renderer에서 검증합니다. Web-only 후보 키 탐색과 2단계 Backspace는 Native 동등 동작으로 주장하지 않습니다.\") },\n // Web ArrowRight and Native adjustable increment now prove the same step transition.\n { name: \"Slider\", label: \"슬라이더\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sliderRecipe\", behavior: \"slider\", ...evidenceNeeded(\"Web range input과 Native adjustable renderer가 같은 범위·step 계약을 실행합니다.\") },\n // Long labels, Web ArrowUp, and Native adjustable increment now have renderer proofs.\n { name: \"NumberField\", label: \"숫자 입력\", extensions: [\"DurationField\"], category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"numberFieldRecipe\", behavior: \"numberField\" },\n // Long labels and Web arrow/Enter plus Native host option activation now have renderer proofs.\n { name: \"Select\", label: \"목록에서 선택\", companions: [\"NativeSelect\"], category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectRecipe\", behavior: \"select\" },\n // Long labels and Web filter/ArrowDown/Enter plus Native option/after-dismiss actions now have renderer proofs.\n { name: \"Combobox\", label: \"검색형 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"comboboxRecipe\", behavior: \"combobox\", ...evidenceNeeded(\"걸러진 목록에서 고르는 동작을 웹·앱 각각 검증했습니다. 앱은 시트가 닫힌 뒤 선택한 값을 확정하고, 웹 키보드 선택은 별도 상호작용 계약으로 남습니다.\") },\n // Product adoption and device QA follow the consumer release; both renderer contracts now have complete required proofs.\n { name: \"DatePicker\", label: \"날짜 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"datePickerRecipe\", behavior: \"datePicker\" },\n { name: \"DateRangePicker\", label: \"기간 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"DateRange\"], recipe: \"calendarRecipe\", behavior: \"dateRange\" },\n { name: \"ColorPicker\", label: \"색상 선택기\", category: \"input\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"colorPickerRecipe\" },\n { name: \"FilePicker\", label: \"파일 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"filePickerRecipe\", behavior: \"filePicker\", aliases: [\"Upload\"], ...evidenceNeeded(\"Web은 native file input과 dropzone 선택을, Native는 제품 소유 picker adapter 연결을 제공하고 양쪽이 같은 accept·size·count resolver를 사용합니다. 실제 OS picker 동작은 소비 앱 QA에서 확인합니다.\") },\n // Both renderers now focus the product-selected first invalid field; field ordering and validation stay product-owned (docs/form.md).\n { name: \"Form\", label: \"입력 양식\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"formRecipe\", behavior: \"form\" },\n { name: \"Agreement\", label: \"약관 동의\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"agreementRecipe\", behavior: \"agreement\", ...evidenceNeeded(\"전체 동의는 항목의 합에서 파생하고 필수 항목만 제출 가능 여부를 정합니다. 전문 열기는 동의와 분리된 별도 tab stop입니다. 제품의 문구·링크·법적 검토와 동의 기록은 제품 소유입니다.\") },\n // Both renderer matrices now prove caret insertion, named candidate actions, and long-copy behavior; IME device certification stays consumer QA because this contract does not control composition.\n { name: \"Mentions\", label: \"사용자 언급\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"comboboxRecipe\", behavior: \"combobox\" },\n { name: \"TransferList\", label: \"목록 간 항목 이동\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Transfer\"], recipe: \"transferListRecipe\", behavior: \"transferList\" },\n // Upload/network lifecycle belongs to consuming products; both renderers verify the caller-owned status/action contract.\n { name: \"UploadItem\", label: \"업로드 항목\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"uploadItemRecipe\", behavior: \"uploadItem\" },\n { name: \"Tabs\", label: \"탭\", companions: [\"TabPanel\"], category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"tabsRecipe\", behavior: \"tabs\", ...evidenceNeeded(\"웹은 화살표 키 이동이 비활성 탭을 건너뛰고 활성화 전까지 수동 선택을 유지하며 초점 탭을 보이게 스크롤합니다(동작 줄이기는 즉시 스크롤). 앱은 계약 이름의 activate 동작과 이름 붙은 패널을 노출합니다.\") },\n // Public API/Web are stable; Native long-copy evidence remains open (docs/stable-core.md).\n // Native title text now passes the long-copy scenario matrix, completing its renderer maturity.\n { name: \"TopBar\", label: \"상단 탐색 막대\", companions: [\"NavigationBar\", \"TopBarAction\"], category: \"navigation\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"topBarRecipe\" },\n // Web keyboard and long-copy renderer proofs now pass; Native remains unsupported because its navigation pattern is product-owned.\n { name: \"Sidebar\", label: \"사이드바\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"NavigationRail\", \"SideNav\"], recipe: \"sidebarRecipe\", behavior: \"sidebar\" },\n { name: \"BottomNavigation\", label: \"하단 탐색\", category: \"navigation\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"bottomNavigationRecipe\", behavior: \"bottomNavigation\", ...evidenceNeeded(\"Web Tab·Enter link와 Native route/reselect host action이 navigator 소유 선택 상태를 보존하고, 긴 목적지 label을 보이는 문구와 접근성 이름에 유지합니다.\") },\n // Product routes and device QA remain consumer-owned; the Web renderer and route-link proofs now pass.\n { name: \"Breadcrumb\", label: \"이동 경로\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"breadcrumbRecipe\", behavior: \"breadcrumb\" },\n // Numeric-only rendering has no visible prose slot; four-digit page layout remains in the 320px/2x/RTL proof.\n { name: \"Pagination\", label: \"페이지 이동\", category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"beta\"), recipe: \"paginationRecipe\", behavior: \"pagination\" },\n { name: \"LoadMore\", label: \"더 보기\", category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"loadMoreRecipe\", behavior: \"loadMore\", ...evidenceNeeded(\"Web keyboard fallback·viewport observer와 Native onEndReached·retry action에서 requestKey 중복 방지, busy/error/complete 상태와 긴 현지화 문구를 검증했습니다. Native FlatList/device 통합은 소비 앱 QA입니다.\") },\n // This non-interactive progress summary now has long-label matrix coverage on both renderers.\n { name: \"Steps\", label: \"단계 탐색\", extensions: [\"StepPlayer\"], category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"stepsRecipe\", ...evidenceNeeded(\"단일 cursor에서 상태를 파생하는 Web·Native renderer와 기본 실행 증거가 연결됐습니다. 실제 다단계 흐름과 보조기기 증거가 더 필요합니다.\") },\n // The Web interaction, disabled-item handling, long labels, and environment matrix have executable evidence; Native is unsupported by design.\n { name: \"Menubar\", label: \"메뉴 막대\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"menubarRecipe\", behavior: \"menubar\" },\n { name: \"ContextMenu\", label: \"상황별 메뉴\", extensions: [\"NativeContextMenu\"], category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"menuRecipe\", behavior: \"contextMenu\" },\n { name: \"Menu\", label: \"메뉴\", extensions: [\"MorphingMenu\"], category: \"navigation\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"menuRecipe\", behavior: \"menu\", aliases: [\"Dropdown\"] },\n { name: \"Anchor\", label: \"문서 내 바로가기\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"anchorRecipe\", behavior: \"anchor\" },\n // Visible content is initials or media; accessible names and fallback states have dedicated proofs.\n { name: \"Avatar\", label: \"아바타\", companions: [\"AvatarGroup\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"avatarRecipe\" },\n { name: \"Asset\", label: \"이미지·영상 표시\", companions: [\"AssetGroup\"], extensions: [\"VoiceNote\"], category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Media\", \"Artwork\"], recipe: \"assetRecipe\", behavior: \"asset\", ...evidenceNeeded(\"아이콘·이미지·Lottie·비디오를 한 액자 규칙으로 묶습니다. 재생기는 슬롯으로 받아 이 패키지가 의존하지 않습니다.\") },\n { name: \"Badge\", label: \"배지\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"badgeRecipe\" },\n // This component renders a bounded number or dot, not arbitrary visible prose.\n { name: \"CounterBadge\", label: \"숫자 배지\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"counterBadgeRecipe\" },\n { name: \"Card\", label: \"카드\", extensions: [\"DocumentResource\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"cardRecipe\" },\n // The list's visible rows own variable-length titles, now covered by each renderer's matrix.\n { name: \"List\", label: \"목록\", companions: [\"CollectionRail\"], extensions: [\"TaskList\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"listRecipe\" },\n { name: \"ListRow\", label: \"목록 행\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"listRowRecipe\" },\n { name: \"VirtualList\", label: \"가상 목록\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Listy\"], recipe: \"virtualListRecipe\" },\n { name: \"Collapsible\", label: \"접기와 펼치기\", companions: [\"CollapsibleMarker\"], extensions: [\"FolderPreview\"], category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Disclosure\"], recipe: \"collapsibleRecipe\", behavior: \"collapsible\" },\n { name: \"Accordion\", label: \"아코디언\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"accordionRecipe\", behavior: \"disclosureGroup\", ...evidenceNeeded(\"묶음 안의 펼침 상태와 제목·내용의 접근성 연결을 웹 키보드와 앱 누르기 회귀 검사로 확인했습니다.\") },\n { name: \"Statistic\", label: \"수치 표시\", companions: [\"StatisticGroup\"], extensions: [\"AnimatedStatistic\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"statisticRecipe\" },\n // Timeline labels are visible prose and now have long-copy matrix coverage on both renderers.\n { name: \"Timeline\", label: \"타임라인\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"timelineRecipe\", ...evidenceNeeded(\"두 제품의 이력 화면이 같은 항목 설명과 웹·앱의 점·연결선 렌더러를 씁니다. 남은 렌더러 증거는 자동 생성 보고서에서 추적합니다.\") },\n // 2026-10-14: Native DataTable renderer added (pinned columns, sortDescFirst, summary row); beta until device evidence.\n { name: \"DataTable\", label: \"데이터 표\", companions: [\"Table\", \"LineScore\", \"MatrixTable\", \"ComparisonTable\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"beta\"), recipe: \"dataTableRecipe\", behavior: \"dataTable\" },\n // 2026-10-14 user request: chart drawing absorbed from product libraries (docs/chart.md); one family for all chart types.\n { name: \"Chart\", label: \"차트\", companions: [\"LineChart\", \"BarChart\", \"PieChart\", \"RadarChart\", \"ScatterChart\", \"Sparkline\", \"ChartLegend\"], category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"chartRecipe\", behavior: \"chart\" },\n { name: \"Tree\", label: \"트리 목록\", category: \"data-display\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"treeRecipe\", behavior: \"tree\" },\n { name: \"Calendar\", label: \"달력\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"calendarRecipe\", behavior: \"calendar\" },\n { name: \"Carousel\", label: \"캐러셀\", extensions: [\"CarouselMotion\"], category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"carouselRecipe\", behavior: \"carousel\" },\n { name: \"DescriptionList\", label: \"설명 목록\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"descriptionListRecipe\", aliases: [\"Descriptions\"] },\n // Image alt is accessibility copy, not visible renderer text; load and fallback behavior remain covered.\n { name: \"Image\", label: \"이미지\", extensions: [\"GridReveal\", \"ImageViewer\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"imageRecipe\", ...evidenceNeeded(\"웹은 불러오기·실패·대체 표시와 프레임워크 연결, 앱은 대체 표시와 최적화 호스트 연결이 기본 실행 증거입니다. 남은 렌더러 증거는 자동 생성 보고서에서 추적합니다.\") },\n { name: \"QRCode\", label: \"큐알 코드\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"qrCodeRecipe\" },\n { name: \"Tag\", label: \"태그\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"tagRecipe\" },\n { name: \"Tour\", label: \"사용 안내 둘러보기\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"tourRecipe\", behavior: \"tour\", aliases: [\"CoachMark\"] },\n { name: \"EmptyState\", label: \"빈 상태\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"emptyStateRecipe\" },\n { name: \"Notice\", label: \"안내 메시지\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"noticeRecipe\" },\n { name: \"Progress\", label: \"진행 표시\", extensions: [\"ScrollProgress\"], category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"progressRecipe\" },\n // Both renderer matrices and installed iOS/Android Skia smoke pass; optional host linkage remains explicit (docs/thinking-orb.md).\n { name: \"ThinkingOrb\", label: \"생각 중 표시\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"thinkingOrbRecipe\" },\n { name: \"Spinner\", label: \"로딩 표시\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"spinnerRecipe\" },\n { name: \"Skeleton\", label: \"스켈레톤\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"skeletonRecipe\" },\n // Product adoption is tracked separately from the complete renderer matrix (docs/stable-core.md).\n { name: \"Result\", label: \"결과 안내\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"resultRecipe\" },\n // Product-owned notice copy is an intended visible text slot; both renderers now prove long-copy wrapping.\n { name: \"BottomInfo\", label: \"하단 안내\", category: \"feedback\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"bottomInfoRecipe\", behavior: \"bottomInfo\", ...evidenceNeeded(\"주 행동 아래의 상시 안내 문장입니다. 상태를 알리는 Notice와 달리 tone·아이콘이 없고 사라지지 않습니다.\") },\n // Liquid is an opt-in presentation; Web close/Escape and Native close actions are covered separately.\n { name: \"Toast\", label: \"토스트\", companions: [\"ToastProvider\", \"ToastRegion\"], category: \"feedback\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"toastRecipe\", behavior: \"toast\", aliases: [\"Notification\"] },\n { name: \"Watermark\", label: \"워터마크\", category: \"feedback\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"watermarkRecipe\" },\n { name: \"Dialog\", label: \"대화상자\", companions: [\"OverlayStackProvider\"], category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"dialogRecipe\", behavior: \"dialog\" },\n { name: \"AlertDialog\", label: \"확인 대화상자\", category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"alertDialogRecipe\", behavior: \"alertDialog\" },\n { name: \"Sheet\", label: \"시트\", extensions: [\"GestureSheet\", \"GestureSheetProvider\"], category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sheetRecipe\", behavior: \"sheet\" },\n { name: \"SidePanel\", label: \"측면 패널\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"sidePanelRecipe\", behavior: \"sidePanel\" },\n { name: \"Popover\", label: \"팝오버\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"popoverRecipe\", behavior: \"popover\" },\n { name: \"Tooltip\", label: \"툴팁\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"tooltipRecipe\", behavior: \"tooltip\" },\n { name: \"CommandPalette\", label: \"명령 검색\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"commandPaletteRecipe\", behavior: \"commandPalette\" },\n { name: \"Affix\", label: \"고정 배치\", category: \"utility\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"affixRecipe\" },\n { name: \"DesignSystemProvider\", label: \"디자인 시스템 설정\", category: \"provider\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"ConfigProvider\"], nonVisualEvidence: \"provider-adapter\" },\n { name: \"SkipNav\", label: \"본문 바로가기\", category: \"utility\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"SkipLink\"], recipe: \"skipNavRecipe\", behavior: \"skipNav\" },\n // Hidden copy is validated as an accessible node; visual long-copy overflow is inapplicable by design.\n { name: \"VisuallyHidden\", label: \"화면 읽기 도구용 글자\", category: \"utility\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"visuallyHiddenRecipe\", aliases: [\"ScreenReaderOnly\", \"SrOnly\"], ...evidenceNeeded(\"Chakra와 React Aria가 별도 접근성 primitive로 제공하는 문제를 Web에서 채택했습니다. Native는 중복 invisible node 대신 host accessibilityLabel/accessibilityHint를 사용하므로 의도적으로 지원하지 않습니다.\") },\n /*\n 2026-10-17 screen compositions registered. These screen compositions ship from the renderers' ./screens and ./screen-flows\n subpaths and products use them as the common screen structure (2026-10-15 user rule), but they were\n classified as supplemental to keep the catalog frozen. The consumer checker resolves imported symbols\n only against canonical catalog ids, so 606 of 690 unresolved-symbol findings across six products (88%)\n were these names (STANDARD_SCOPE_REVIEW_2026-10 §1.2). The freeze ended on 2026-10-17\n (docs/stable-promotion.md), so they register as canonical rows. On 2026-10-18 both renderer default\n proofs and applicable environment matrices passed after repairing the host harness, screen body naming\n and fixtures. Stable promises the public contract, not device QA or consumer adoption (docs/stable-core.md).\n */\n { name: \"ScreenLayout\", label: \"화면 골격\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"CompositionLayout\", label: \"구성 골격\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"SettingsScreen\", label: \"설정 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"SearchScreen\", label: \"검색 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"searchScreenRecipe\" },\n { name: \"EditorScreen\", label: \"편집 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"PermissionScreen\", label: \"권한 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"OnboardingScreen\", label: \"온보딩 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"ModerationScreen\", label: \"신고 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"ChatScreen\", label: \"채팅 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"NotificationInboxScreen\", label: \"알림함 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"CommentThreadScreen\", label: \"댓글 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"commentThreadRecipe\" },\n { name: \"ListDetailScreen\", label: \"목록 상세 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"MediaSelectionScreen\", label: \"미디어 선택 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"ProfileScreen\", label: \"프로필 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"ChatMessage\", label: \"채팅 말풍선\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"chatMessageRecipe\" },\n { name: \"NotificationRow\", label: \"알림 미리보기 행\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"notificationRowRecipe\" },\n { name: \"NotificationItem\", label: \"알림 목록 항목\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"listRowRecipe\" },\n { name: \"CommentThreadRow\", label: \"댓글 행\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"commentThreadRecipe\" },\n { name: \"ProfileSummary\", label: \"프로필 요약\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"profileSummaryRecipe\" },\n { name: \"IconTile\", label: \"아이콘 타일\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"iconTileRecipe\" },\n { name: \"MessageComposer\", label: \"메시지 작성창\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"composerQuickInsertRecipe\" },\n { name: \"PhotoSourceSheet\", label: \"사진 출처 시트\", category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sheetRecipe\" },\n] as const satisfies readonly ComponentCatalogEntry[];\n\nexport type ComponentName = (typeof componentCatalog)[number][\"name\"];\n\n/**\n * Kebab id of a catalog row: the explicit `id` override, else the kebab form of `name`\n * (QRCode → qr-code, BottomCTA → bottom-cta). `component-definitions.ts` mirrors this at the type level.\n */\nexport function componentIdOf(entry: Pick<ComponentCatalogEntry, \"name\" | \"id\">): string {\n return entry.id ?? entry.name.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\").toLowerCase();\n}\n\nexport function summarizeComponentRoadmap(\n entries: readonly ComponentCatalogEntry[] = componentCatalog,\n): Readonly<Record<ComponentRoadmapState, number>> {\n return entries.reduce<Record<ComponentRoadmapState, number>>(\n (summary, entry) => {\n if (entry.roadmap) summary[entry.roadmap.state] += 1;\n return summary;\n },\n {\n \"contract-ready\": 0,\n composed: 0,\n \"evidence-needed\": 0,\n prerequisite: 0,\n declined: 0,\n },\n );\n}\nimport {\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\n anchorRecipe,\n agreementRecipe,\n topRecipe,\n authProviderButtonRecipe,\n authScreenRecipe,\n headingRecipe,\n toggleGroupRecipe,\n tagsInputRecipe,\n skipNavRecipe,\n bottomInfoRecipe,\n sidebarRecipe,\n textFormatRecipe,\n collapsibleRecipe,\n menubarRecipe,\n assetRecipe,\n breadcrumbRecipe,\n aspectRatioRecipe,\n containerRecipe,\n calendarRecipe,\n cardRecipe,\n buttonRecipe,\n carouselRecipe,\n chipRecipe,\n comboboxRecipe,\n descriptionListRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dataTableRecipe,\n chartRecipe,\n datePickerRecipe,\n dividerRecipe,\n formRecipe,\n emptyStateRecipe,\n fieldRecipe,\n filePickerRecipe,\n iconButtonRecipe,\n iconRecipe,\n imageRecipe,\n linkRecipe,\n listRecipe,\n listRowRecipe,\n loadMoreRecipe,\n menuRecipe,\n noticeRecipe,\n paginationRecipe,\n popoverRecipe,\n numberFieldRecipe,\n progressRecipe,\n resultRecipe,\n searchFieldRecipe,\n selectRecipe,\n selectionGroupRecipe,\n sectionRecipe,\n segmentedControlRecipe,\n selectionControlRecipe,\n sheetRecipe,\n sidePanelRecipe,\n commandPaletteRecipe,\n layoutRecipe,\n otpFieldRecipe,\n passwordFieldRecipe,\n splitterRecipe,\n tourRecipe,\n transferListRecipe,\n skeletonRecipe,\n sliderRecipe,\n spinnerRecipe,\n stackRecipe,\n statisticRecipe,\n stepsRecipe,\n surfaceRecipe,\n switchRecipe,\n tabsRecipe,\n tagRecipe,\n textRecipe,\n timelineRecipe,\n toastRecipe,\n tooltipRecipe,\n topBarRecipe,\n treeRecipe,\n uploadItemRecipe,\n visuallyHiddenRecipe,\n} from \"./recipes.js\";\nimport { floatingActionButtonRecipe } from \"./floating-action-button.js\";\nimport { gridRecipe } from \"./grid.js\";\nimport { screenPatternRecipe, searchScreenRecipe, chatMessageRecipe, commentThreadRecipe, notificationRowRecipe, profileSummaryRecipe, iconTileRecipe, composerQuickInsertRecipe } from \"./screen-patterns.js\";\n\n/** One typed registry prevents catalog recipe names from drifting into strings. */\nexport const recipeRegistry = {\n imageChoiceRecipe,\n affixRecipe,\n watermarkRecipe,\n colorPickerRecipe,\n thinkingOrbRecipe,\n masonryRecipe,\n virtualListRecipe,\n qrCodeRecipe,\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\n anchorRecipe,\n agreementRecipe,\n topRecipe,\n authProviderButtonRecipe,\n authScreenRecipe,\n headingRecipe,\n toggleGroupRecipe,\n tagsInputRecipe,\n skipNavRecipe,\n bottomInfoRecipe,\n sidebarRecipe,\n textFormatRecipe,\n collapsibleRecipe,\n menubarRecipe,\n assetRecipe,\n breadcrumbRecipe,\n aspectRatioRecipe,\n containerRecipe,\n calendarRecipe,\n cardRecipe,\n buttonRecipe,\n carouselRecipe,\n chipRecipe,\n comboboxRecipe,\n descriptionListRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dataTableRecipe,\n chartRecipe,\n datePickerRecipe,\n dividerRecipe,\n formRecipe,\n gridRecipe,\n emptyStateRecipe,\n fieldRecipe,\n filePickerRecipe,\n iconButtonRecipe,\n iconRecipe,\n imageRecipe,\n linkRecipe,\n listRecipe,\n listRowRecipe,\n loadMoreRecipe,\n menuRecipe,\n noticeRecipe,\n paginationRecipe,\n popoverRecipe,\n numberFieldRecipe,\n progressRecipe,\n resultRecipe,\n searchFieldRecipe,\n selectRecipe,\n selectionGroupRecipe,\n sectionRecipe,\n segmentedControlRecipe,\n selectionControlRecipe,\n sheetRecipe,\n sidePanelRecipe,\n commandPaletteRecipe,\n layoutRecipe,\n otpFieldRecipe,\n passwordFieldRecipe,\n splitterRecipe,\n floatingActionButtonRecipe,\n tourRecipe,\n transferListRecipe,\n skeletonRecipe,\n sliderRecipe,\n spinnerRecipe,\n stackRecipe,\n statisticRecipe,\n stepsRecipe,\n surfaceRecipe,\n switchRecipe,\n tabsRecipe,\n tagRecipe,\n textRecipe,\n timelineRecipe,\n toastRecipe,\n tooltipRecipe,\n topBarRecipe,\n treeRecipe,\n uploadItemRecipe,\n visuallyHiddenRecipe,\n // Screen composition recipes (2026-10-17): registered so the screen catalog rows can bind their own values.\n screenPatternRecipe,\n searchScreenRecipe,\n chatMessageRecipe,\n commentThreadRecipe,\n notificationRowRecipe,\n profileSummaryRecipe,\n iconTileRecipe,\n composerQuickInsertRecipe,\n} as const;\n\nexport type RecipeName = keyof typeof recipeRegistry;\n"]}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import { affixRecipe } from \"./affix.js\";\nimport { watermarkRecipe } from \"./watermark.js\";\nimport { colorPickerRecipe } from \"./color-picker.js\";\nimport { masonryRecipe } from \"./masonry.js\";\nimport { imageChoiceRecipe } from \"./image-choice.js\";\nimport { virtualListRecipe } from \"./virtual-list.js\";\nimport { qrCodeRecipe } from \"./qr-code-recipe.js\";\nimport { thinkingOrbRecipe } from \"./thinking-orb-recipe.js\";\nimport type { BehaviorName } from \"./behaviors.js\";\n\nexport type ComponentCategory =\n | \"foundation\"\n | \"layout\"\n | \"action\"\n | \"input\"\n | \"navigation\"\n | \"data-display\"\n | \"feedback\"\n | \"overlay\"\n | \"provider\"\n | \"utility\";\n\nexport type ComponentPlatform = \"shared\" | \"adaptive\" | \"web\" | \"native\";\nexport type ComponentStatus = \"stable\" | \"beta\" | \"planned\" | \"deprecated\";\nexport type ComponentSurface = \"web\" | \"native\";\nexport type ComponentSurfaceStatus = ComponentStatus | \"unsupported\";\nexport type ComponentSurfaceMaturity = Readonly<\n Record<ComponentSurface, ComponentSurfaceStatus>\n>;\nexport type ComponentRoadmapState =\n | \"contract-ready\"\n | \"composed\"\n | \"evidence-needed\"\n | \"prerequisite\"\n | \"declined\";\n\nexport type ComponentRoadmap = Readonly<{\n state: ComponentRoadmapState;\n summary: string;\n /** Canonical components that solve this reference problem together. */\n targets?: readonly string[];\n}>;\n\nexport type ComponentNonVisualEvidence = \"provider-adapter\";\n\nexport type ComponentCatalogEntry = Readonly<{\n name: string;\n category: ComponentCategory;\n platform: ComponentPlatform;\n /** Contract maturity. Renderer maturity is tracked independently per surface. */\n status: ComponentStatus;\n /**\n * Renderer evidence for each surface. Built-in entries always provide this\n * matrix. It stays optional so catalog entries authored against the pre-0.6\n * shape can still be passed to public helpers during migration.\n */\n surfaceStatus?: ComponentSurfaceMaturity;\n /** Search terms and familiar ecosystem names; never an API compatibility promise. */\n aliases?: readonly string[];\n recipe?: RecipeName;\n behavior?: BehaviorName;\n /** Explicit evidence for a mature contract whose value is not a visual recipe. */\n nonVisualEvidence?: ComponentNonVisualEvidence;\n /** Why the row exists at its current maturity and what event moves it forward. */\n roadmap?: ComponentRoadmap;\n /*\n 2026-10-18 registration input consolidated here. Adding one component used to touch eight hand-kept\n registries (ids, Korean labels, evidence claims, Web preview names, Native example index, story groups,\n public API map, platform-only Storybook exceptions); the 22 screen compositions needed 86 files. The\n fields below are the only authored facts those projections need; everything else derives from this row.\n */\n /**\n * Stable kebab-case id. Defaults to the kebab form of `name` (`componentIdOf`). Set it only when a row\n * was renamed after its id shipped, so documentation keys and consumer catalog snapshots survive.\n */\n id?: string;\n /** Purpose-based Korean item name used by both Storybooks (docs/STORYBOOK_NAVIGATION.md §1.3). */\n label?: string;\n /** Public renderer symbols that are named regions or variants of this contract, not rows of their own. */\n companions?: readonly string[];\n /** Optional extensions that reuse this contract without inheriting its maturity (public-component-map.md). */\n extensions?: readonly string[];\n /**\n * 만들지 않기로 **확정한** 항목의 사유. `status`는 구현 성숙도 축이고 이것은\n * \"만들 것인가\"라는 다른 질문이라 직교 필드로 둔다.\n *\n * 이 필드가 필요한 이유: crosswalk의 `targets`가 이 항목들을 가리키고\n * `targets.length > 0`이 테스트로 강제되므로, 흡수할 다른 이름이 없으면 행을 지울 수\n * 없다. 그렇다고 `planned`로 두면 \"아직 안 만들었지만 만들 것\"이라는 거짓을 말한다.\n * 근거는 `docs/<id>.md`에 있고, 그 문서의 존재를 테스트가 강제한다.\n */\n declinedReason?: string;\n}>;\n\n/*\n 2026-09-18 현재 이 상태를 쓰는 행이 없다 — 계약만 준비돼 있던 항목이 모두 renderer나\n 조합으로 닫혔다. `prerequisite`와 같은 이유로 helper는 남긴다: 다음에 계약만 먼저\n 들어오는 컴포넌트가 생기면 바로 쓴다.\n*/\nexport const contractReady = (summary: string) => ({\n roadmap: { state: \"contract-ready\", summary },\n} as const);\n// Compositions live in Showcase patterns and map to their implemented primitives in the\n// reference crosswalk; reserving Planned rows incorrectly counted them as missing work.\n// Promotion uses renderer requirements; adoption notes are not gates (docs/stable-promotion.md).\nconst evidenceNeeded = (summary: string) => ({\n roadmap: { state: \"evidence-needed\", summary },\n} as const);\n/*\n 2026-09-18 현재 사용하는 행이 없다(Cascader가 마지막이었고 조합으로 풀렸다). 상태 값\n 자체는 타입과 문서에 남아 있으므로 helper도 함께 둔다 — 다음에 선행 조건이 실제로 생기면\n 다시 쓰고, 지금은 export로 미사용 오류만 피한다. 상태 값을 지우는 결정은 별도 판단이다.\n*/\nexport const prerequisite = (summary: string, targets: readonly string[]) => ({\n roadmap: { state: \"prerequisite\", summary, targets },\n} as const);\n\nconst surfaceMaturity = <\n const Web extends ComponentSurfaceStatus,\n const Native extends ComponentSurfaceStatus,\n>(web: Web, native: Native) => ({ surfaceStatus: { web, native } } as const);\n\n/**\n * Resolves renderer maturity without conflating it with contract maturity.\n * The fallback preserves custom catalog entries authored before\n * `surfaceStatus`; every built-in entry uses the explicit matrix.\n */\nexport function getComponentSurfaceStatus(\n entry: ComponentCatalogEntry,\n surface: ComponentSurface,\n): ComponentSurfaceStatus {\n if (entry.surfaceStatus) return entry.surfaceStatus[surface];\n if (entry.platform === \"shared\" || entry.platform === \"adaptive\") return entry.status;\n if (entry.platform === surface) return entry.status;\n return \"unsupported\";\n}\n\n/**\n * The catalog is a scope and maturity contract, not an implementation claim.\n * `shared` means API/visual parity. `adaptive` means shared intent with native\n * platform behavior. Web/native entries are intentionally platform-specific.\n */\nexport const componentCatalog = [\n { name: \"Text\", label: \"본문 글자\", companions: [\"StatusText\"], extensions: [\"GravityLetters\"], category: \"foundation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"textRecipe\" },\n // Web semantic element is stable; React Native has no equivalent semantic elements.\n { name: \"TextFormat\", label: \"글자 서식\", category: \"foundation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"Kbd\", \"Code\", \"Blockquote\"], recipe: \"textFormatRecipe\", behavior: \"textFormat\" },\n { name: \"Heading\", label: \"제목\", category: \"foundation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"headingRecipe\", behavior: \"heading\" },\n { name: \"Icon\", label: \"아이콘\", category: \"foundation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"iconRecipe\" },\n { name: \"Surface\", label: \"배경 영역\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"surfaceRecipe\" },\n // Display promotions use renderer evidence, not product adoption counts (docs/stable-core.md).\n { name: \"Divider\", label: \"구분선\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"dividerRecipe\" },\n { name: \"Section\", label: \"섹션\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sectionRecipe\" },\n { name: \"Stack\", label: \"가로·세로 배치\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"stackRecipe\", aliases: [\"Flex\", \"Space\", \"Inline\"] },\n { name: \"Container\", label: \"컨테이너\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"containerRecipe\" },\n // Both renderers now pass the required scenario matrix, including long child copy; the product keeps media semantics.\n { name: \"AspectRatio\", label: \"화면 비율\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"aspectRatioRecipe\", ...evidenceNeeded(\"Radix·Chakra·Mantine·Carbon에서 반복되는 media geometry 문제를 shared primitive로 채택했습니다. 제품이 object-fit을 소유하고 renderer는 비율만 보장합니다.\") },\n // Both renderers now exercise long child content in addition to the responsive geometry contract.\n { name: \"Grid\", label: \"격자\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"gridRecipe\", ...evidenceNeeded(\"공통 window class·responsive value·row-major geometry 계약과 공식 Web/RN default renderer 증거가 연결됐습니다. 남은 환경 증거는 generated 보고서에서 추적합니다.\") },\n // Interaction evidence belongs to its declared surface; inventing a Native skip-link only to mirror Web would add unsupported behavior.\n { name: \"Layout\", label: \"화면 기본 구조\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"AppShell\"], recipe: \"layoutRecipe\", behavior: \"layout\", ...evidenceNeeded(\"Web skip-link and renderer scenarios verified.\") },\n { name: \"Top\", label: \"화면 제목과 설명\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"topRecipe\", behavior: \"top\" },\n { name: \"Masonry\", label: \"높이가 다른 카드 배치\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"masonryRecipe\" },\n // Stable after the real Web matrix and focused separator keyboard proof pass; collapse and N-pane stay out of the contract.\n { name: \"Splitter\", label: \"분할 영역 조절\", category: \"layout\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"SplitPane\"], recipe: \"splitterRecipe\", behavior: \"splitter\", ...evidenceNeeded(\"Web long-copy, environment, accessibility, drag and focused keyboard proofs pass.\") },\n { name: \"Button\", label: \"버튼\", companions: [\"ClipboardButton\"], extensions: [\"ReactionPicker\", \"InlineConfirm\"], category: \"action\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"buttonRecipe\" },\n { name: \"IconButton\", label: \"아이콘 버튼\", companions: [\"ClipboardIconButton\"], extensions: [\"NotificationBell\"], category: \"action\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"iconButtonRecipe\" },\n // Web anchor Enter activation and Native router activation are now asserted at the renderer boundary.\n { name: \"Link\", label: \"링크\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"linkRecipe\", behavior: \"link\" },\n { name: \"BottomCTA\", label: \"하단 실행 버튼\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"bottomCtaRecipe\" },\n { name: \"FloatingActionButton\", label: \"플로팅 실행 버튼\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"floatingActionButtonRecipe\", behavior: \"floatingActionButton\", aliases: [\"FloatButton\", \"FAB\"], ...evidenceNeeded(\"Web/RN의 고정 생성 행동, 스크롤 방향 hook, 실제 높이·safe area 여백을 제공합니다. docs/floating-action-button.md에서 전체 이름·focus 유지와 목록 가림을 검증합니다.\") },\n // Product-owned auth copy stays in slots; both renderer matrices now exercise long hero text.\n { name: \"AuthScreenLayout\", label: \"로그인 화면\", id: \"auth-screen\", companions: [\"AuthScreenHero\", \"AuthScreenFooter\"], category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"SignInLayout\"], recipe: \"authScreenRecipe\", behavior: \"authScreen\", ...evidenceNeeded(\"로그인 화면의 두 영역 골격입니다. 히어로와 주 행동을 세로 중앙에 한 덩어리로 두고 동의 고지·정책 링크를 바닥에 붙입니다. 문구·마크·제공자 목록·링크 목적지는 제품이 슬롯으로 넘기며, 인증 흐름은 이 계약에 없습니다.\") },\n // Enter/Space and Native host press now invoke the explicit product-owned action.\n { name: \"AuthProviderButton\", label: \"소셜 로그인 버튼\", category: \"action\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"SocialLoginButton\"], recipe: \"authProviderButtonRecipe\", behavior: \"authProviderButton\", ...evidenceNeeded(\"Google·Kakao·Naver·Apple 로그인 버튼입니다. 색은 제공자 가이드라인 값이고 테마가 다시 칠하지 않으며, 로고 자산과 문구는 제품이 넘깁니다. 실제 제공자 심사 통과는 제품 소유입니다.\") },\n { name: \"Field\", label: \"입력 필드\", companions: [\"TextField\"], extensions: [\"FieldGroup\", \"DateEntry\", \"GestureSheetInput\"], category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"fieldRecipe\", behavior: \"field\" },\n // Long labels wrap and Web typing/clear plus Native input/clear actions are covered.\n { name: \"SearchField\", label: \"검색 입력\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"searchFieldRecipe\", behavior: \"searchField\" },\n { name: \"TextArea\", label: \"여러 줄 입력\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"fieldRecipe\" },\n // Web Enter/Space and Native host reveal actions are now verified on both renderers.\n { name: \"PasswordField\", label: \"비밀번호 입력\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Input.Password\"], recipe: \"passwordFieldRecipe\", behavior: \"passwordField\" },\n // One accessible text input, numeric sanitization, wrapping label, and input actions are covered per renderer.\n { name: \"OtpField\", label: \"인증번호 입력\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Input.OTP\"], recipe: \"otpFieldRecipe\", behavior: \"otpField\" },\n // Web Space and Native host press now verify the single checkbox state transition.\n { name: \"Checkbox\", label: \"체크박스\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionControlRecipe\", behavior: \"checkbox\" },\n // Long option labels now have matrix coverage on both renderers.\n { name: \"Radio\", label: \"라디오 버튼\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionControlRecipe\" },\n // Web Space and Native host press now prove the choice update on each renderer.\n { name: \"CheckboxGroup\", label: \"체크박스 그룹\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionGroupRecipe\", behavior: \"checkboxGroup\" },\n // Web Space and Native host press now verify the selected option transition.\n { name: \"RadioGroup\", label: \"라디오 버튼 그룹\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectionGroupRecipe\", behavior: \"radioGroup\" },\n // Web Space and Native host press now prove the checked state transition.\n { name: \"Switch\", label: \"스위치\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"switchRecipe\", behavior: \"switch\" },\n // Web Space and Native host press now verify selectable Chip state changes.\n { name: \"Chip\", label: \"선택 칩\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"chipRecipe\", behavior: \"chip\" },\n // Image tile single/multiple selection (2026-10-17 registration: independent radio/checkbox semantics).\n // Beta until renderer behavior matrices cover it; unit tests cover toggle and validation only.\n { name: \"ImageChoiceGroup\", label: \"이미지 선택\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"imageChoiceRecipe\" },\n // Web arrow-key selection and Native host press now prove option changes.\n { name: \"SegmentedControl\", label: \"버튼형 선택\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"segmentedControlRecipe\", behavior: \"segmentedControl\" },\n // Web Space and Native host press now verify the pressed-id set transition.\n { name: \"ToggleGroup\", label: \"토글 그룹\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"toggleGroupRecipe\", behavior: \"toggleGroup\", ...evidenceNeeded(\"여러 개를 동시에 켜는 버튼 묶음입니다. 하나만 고르는 자리는 SegmentedControl이 그대로 갖습니다.\") },\n // Both renderer matrices and the surface-specific commit/remove regressions pass; Native intentionally commits on Return, not blur.\n { name: \"TagsInput\", label: \"태그 입력\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"TagField\", \"ChipsInput\"], recipe: \"tagsInputRecipe\", behavior: \"tagsInput\", ...evidenceNeeded(\"자유 입력 다중값 계약입니다. 정책 판정은 공통이며 Web Enter와 Native Return 확정, 위치 기반 삭제 action을 각 renderer에서 검증합니다. Web-only 후보 키 탐색과 2단계 Backspace는 Native 동등 동작으로 주장하지 않습니다.\") },\n // Web ArrowRight and Native adjustable increment now prove the same step transition.\n { name: \"Slider\", label: \"슬라이더\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sliderRecipe\", behavior: \"slider\", ...evidenceNeeded(\"Web range input과 Native adjustable renderer가 같은 범위·step 계약을 실행합니다.\") },\n // Long labels, Web ArrowUp, and Native adjustable increment now have renderer proofs.\n { name: \"NumberField\", label: \"숫자 입력\", extensions: [\"DurationField\"], category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"numberFieldRecipe\", behavior: \"numberField\" },\n // Long labels and Web arrow/Enter plus Native host option activation now have renderer proofs.\n { name: \"Select\", label: \"목록에서 선택\", companions: [\"NativeSelect\"], category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"selectRecipe\", behavior: \"select\" },\n // Long labels and Web filter/ArrowDown/Enter plus Native option/after-dismiss actions now have renderer proofs.\n { name: \"Combobox\", label: \"검색형 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"comboboxRecipe\", behavior: \"combobox\", ...evidenceNeeded(\"걸러진 목록에서 고르는 동작을 웹·앱 각각 검증했습니다. 앱은 시트가 닫힌 뒤 선택한 값을 확정하고, 웹 키보드 선택은 별도 상호작용 계약으로 남습니다.\") },\n // Product adoption and device QA follow the consumer release; both renderer contracts now have complete required proofs.\n { name: \"DatePicker\", label: \"날짜 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"datePickerRecipe\", behavior: \"datePicker\" },\n { name: \"DateRangePicker\", label: \"기간 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"DateRange\"], recipe: \"calendarRecipe\", behavior: \"dateRange\" },\n { name: \"ColorPicker\", label: \"색상 선택기\", category: \"input\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"colorPickerRecipe\" },\n { name: \"FilePicker\", label: \"파일 선택\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"filePickerRecipe\", behavior: \"filePicker\", aliases: [\"Upload\"], ...evidenceNeeded(\"Web은 native file input과 dropzone 선택을, Native는 제품 소유 picker adapter 연결을 제공하고 양쪽이 같은 accept·size·count resolver를 사용합니다. 실제 OS picker 동작은 소비 앱 QA에서 확인합니다.\") },\n // Both renderers now focus the product-selected first invalid field; field ordering and validation stay product-owned (docs/form.md).\n { name: \"Form\", label: \"입력 양식\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"formRecipe\", behavior: \"form\" },\n { name: \"Agreement\", label: \"약관 동의\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"agreementRecipe\", behavior: \"agreement\", ...evidenceNeeded(\"전체 동의는 항목의 합에서 파생하고 필수 항목만 제출 가능 여부를 정합니다. 전문 열기는 동의와 분리된 별도 tab stop입니다. 제품의 문구·링크·법적 검토와 동의 기록은 제품 소유입니다.\") },\n // Both renderer matrices now prove caret insertion, named candidate actions, and long-copy behavior; IME device certification stays consumer QA because this contract does not control composition.\n { name: \"Mentions\", label: \"사용자 언급\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"comboboxRecipe\", behavior: \"combobox\" },\n { name: \"TransferList\", label: \"목록 간 항목 이동\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Transfer\"], recipe: \"transferListRecipe\", behavior: \"transferList\" },\n // Upload/network lifecycle belongs to consuming products; both renderers verify the caller-owned status/action contract.\n { name: \"UploadItem\", label: \"업로드 항목\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"uploadItemRecipe\", behavior: \"uploadItem\" },\n { name: \"Tabs\", label: \"탭\", companions: [\"TabPanel\"], category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"tabsRecipe\", behavior: \"tabs\", ...evidenceNeeded(\"웹은 화살표 키 이동이 비활성 탭을 건너뛰고 활성화 전까지 수동 선택을 유지하며 초점 탭을 보이게 스크롤합니다(동작 줄이기는 즉시 스크롤). 앱은 계약 이름의 activate 동작과 이름 붙은 패널을 노출합니다.\") },\n // Public API/Web are stable; Native long-copy evidence remains open (docs/stable-core.md).\n // Native title text now passes the long-copy scenario matrix, completing its renderer maturity.\n { name: \"TopBar\", label: \"상단 탐색 막대\", companions: [\"NavigationBar\", \"TopBarAction\"], category: \"navigation\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"topBarRecipe\" },\n // Web keyboard and long-copy renderer proofs now pass; Native remains unsupported because its navigation pattern is product-owned.\n { name: \"Sidebar\", label: \"사이드바\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"NavigationRail\", \"SideNav\"], recipe: \"sidebarRecipe\", behavior: \"sidebar\" },\n { name: \"BottomNavigation\", label: \"하단 탐색\", companions: [\"BottomNavigationInsetProvider\"], category: \"navigation\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"bottomNavigationRecipe\", behavior: \"bottomNavigation\", ...evidenceNeeded(\"Web Tab·Enter link와 Native route/reselect host action이 navigator 소유 선택 상태를 보존하고, 긴 목적지 label을 보이는 문구와 접근성 이름에 유지합니다.\") },\n // Product routes and device QA remain consumer-owned; the Web renderer and route-link proofs now pass.\n { name: \"Breadcrumb\", label: \"이동 경로\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"breadcrumbRecipe\", behavior: \"breadcrumb\" },\n // Numeric-only rendering has no visible prose slot; four-digit page layout remains in the 320px/2x/RTL proof.\n // Carousel's dot row on its own for a product-owned pager (Utilverse launcher, 2026-10-18); same recipe, no new visuals.\n { name: \"PageIndicator\", label: \"페이지 위치 표시\", category: \"navigation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"carouselRecipe\" },\n { name: \"Pagination\", label: \"페이지 이동\", category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"beta\"), recipe: \"paginationRecipe\", behavior: \"pagination\" },\n { name: \"LoadMore\", label: \"더 보기\", category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"loadMoreRecipe\", behavior: \"loadMore\", ...evidenceNeeded(\"Web keyboard fallback·viewport observer와 Native onEndReached·retry action에서 requestKey 중복 방지, busy/error/complete 상태와 긴 현지화 문구를 검증했습니다. Native FlatList/device 통합은 소비 앱 QA입니다.\") },\n // This non-interactive progress summary now has long-label matrix coverage on both renderers.\n { name: \"Steps\", label: \"단계 탐색\", extensions: [\"StepPlayer\"], category: \"navigation\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"stepsRecipe\", ...evidenceNeeded(\"단일 cursor에서 상태를 파생하는 Web·Native renderer와 기본 실행 증거가 연결됐습니다. 실제 다단계 흐름과 보조기기 증거가 더 필요합니다.\") },\n // The Web interaction, disabled-item handling, long labels, and environment matrix have executable evidence; Native is unsupported by design.\n { name: \"Menubar\", label: \"메뉴 막대\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"menubarRecipe\", behavior: \"menubar\" },\n { name: \"ContextMenu\", label: \"상황별 메뉴\", extensions: [\"NativeContextMenu\"], category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"menuRecipe\", behavior: \"contextMenu\" },\n { name: \"Menu\", label: \"메뉴\", extensions: [\"MorphingMenu\"], category: \"navigation\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"menuRecipe\", behavior: \"menu\", aliases: [\"Dropdown\"] },\n { name: \"Anchor\", label: \"문서 내 바로가기\", category: \"navigation\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"anchorRecipe\", behavior: \"anchor\" },\n // Visible content is initials or media; accessible names and fallback states have dedicated proofs.\n { name: \"Avatar\", label: \"아바타\", companions: [\"AvatarGroup\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"avatarRecipe\" },\n { name: \"Asset\", label: \"이미지·영상 표시\", companions: [\"AssetGroup\"], extensions: [\"VoiceNote\"], category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Media\", \"Artwork\"], recipe: \"assetRecipe\", behavior: \"asset\", ...evidenceNeeded(\"아이콘·이미지·Lottie·비디오를 한 액자 규칙으로 묶습니다. 재생기는 슬롯으로 받아 이 패키지가 의존하지 않습니다.\") },\n { name: \"Badge\", label: \"배지\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"badgeRecipe\" },\n // This component renders a bounded number or dot, not arbitrary visible prose.\n { name: \"CounterBadge\", label: \"숫자 배지\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"counterBadgeRecipe\" },\n { name: \"Card\", label: \"카드\", extensions: [\"DocumentResource\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"cardRecipe\" },\n // The list's visible rows own variable-length titles, now covered by each renderer's matrix.\n { name: \"List\", label: \"목록\", companions: [\"CollectionRail\"], extensions: [\"TaskList\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"listRecipe\" },\n { name: \"ListRow\", label: \"목록 행\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"listRowRecipe\" },\n { name: \"VirtualList\", label: \"가상 목록\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Listy\"], recipe: \"virtualListRecipe\" },\n { name: \"Collapsible\", label: \"접기와 펼치기\", companions: [\"CollapsibleMarker\"], extensions: [\"FolderPreview\"], category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"Disclosure\"], recipe: \"collapsibleRecipe\", behavior: \"collapsible\" },\n { name: \"Accordion\", label: \"아코디언\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"accordionRecipe\", behavior: \"disclosureGroup\", ...evidenceNeeded(\"묶음 안의 펼침 상태와 제목·내용의 접근성 연결을 웹 키보드와 앱 누르기 회귀 검사로 확인했습니다.\") },\n { name: \"Statistic\", label: \"수치 표시\", companions: [\"StatisticGroup\"], extensions: [\"AnimatedStatistic\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"statisticRecipe\" },\n // Timeline labels are visible prose and now have long-copy matrix coverage on both renderers.\n { name: \"Timeline\", label: \"타임라인\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"timelineRecipe\", ...evidenceNeeded(\"두 제품의 이력 화면이 같은 항목 설명과 웹·앱의 점·연결선 렌더러를 씁니다. 남은 렌더러 증거는 자동 생성 보고서에서 추적합니다.\") },\n // 2026-10-14: Native DataTable renderer added (pinned columns, sortDescFirst, summary row); beta until device evidence.\n { name: \"DataTable\", label: \"데이터 표\", companions: [\"Table\", \"LineScore\", \"MatrixTable\", \"ComparisonTable\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"beta\"), recipe: \"dataTableRecipe\", behavior: \"dataTable\" },\n // 2026-10-14 user request: chart drawing absorbed from product libraries (docs/chart.md); one family for all chart types.\n { name: \"Chart\", label: \"차트\", companions: [\"LineChart\", \"BarChart\", \"PieChart\", \"RadarChart\", \"ScatterChart\", \"Sparkline\", \"ChartLegend\"], category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"chartRecipe\", behavior: \"chart\" },\n { name: \"Tree\", label: \"트리 목록\", category: \"data-display\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"treeRecipe\", behavior: \"tree\" },\n { name: \"Calendar\", label: \"달력\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"calendarRecipe\", behavior: \"calendar\" },\n { name: \"Carousel\", label: \"캐러셀\", extensions: [\"CarouselMotion\"], category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"carouselRecipe\", behavior: \"carousel\" },\n { name: \"DescriptionList\", label: \"설명 목록\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"descriptionListRecipe\", aliases: [\"Descriptions\"] },\n // Image alt is accessibility copy, not visible renderer text; load and fallback behavior remain covered.\n { name: \"Image\", label: \"이미지\", extensions: [\"GridReveal\", \"ImageViewer\"], category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"imageRecipe\", ...evidenceNeeded(\"웹은 불러오기·실패·대체 표시와 프레임워크 연결, 앱은 대체 표시와 최적화 호스트 연결이 기본 실행 증거입니다. 남은 렌더러 증거는 자동 생성 보고서에서 추적합니다.\") },\n { name: \"QRCode\", label: \"큐알 코드\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"qrCodeRecipe\" },\n { name: \"Tag\", label: \"태그\", category: \"data-display\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"tagRecipe\" },\n { name: \"Tour\", label: \"사용 안내 둘러보기\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"tourRecipe\", behavior: \"tour\", aliases: [\"CoachMark\"] },\n { name: \"EmptyState\", label: \"빈 상태\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"emptyStateRecipe\" },\n { name: \"Notice\", label: \"안내 메시지\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"noticeRecipe\" },\n { name: \"Progress\", label: \"진행 표시\", extensions: [\"ScrollProgress\"], category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"progressRecipe\" },\n // Both renderer matrices and installed iOS/Android Skia smoke pass; optional host linkage remains explicit (docs/thinking-orb.md).\n { name: \"ThinkingOrb\", label: \"생각 중 표시\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"thinkingOrbRecipe\" },\n { name: \"Spinner\", label: \"로딩 표시\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"spinnerRecipe\" },\n { name: \"Skeleton\", label: \"스켈레톤\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"skeletonRecipe\" },\n // Product adoption is tracked separately from the complete renderer matrix (docs/stable-core.md).\n { name: \"Result\", label: \"결과 안내\", category: \"feedback\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"resultRecipe\" },\n // Product-owned notice copy is an intended visible text slot; both renderers now prove long-copy wrapping.\n { name: \"BottomInfo\", label: \"하단 안내\", category: \"feedback\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"bottomInfoRecipe\", behavior: \"bottomInfo\", ...evidenceNeeded(\"주 행동 아래의 상시 안내 문장입니다. 상태를 알리는 Notice와 달리 tone·아이콘이 없고 사라지지 않습니다.\") },\n // Liquid is an opt-in presentation; Web close/Escape and Native close actions are covered separately.\n { name: \"Toast\", label: \"토스트\", companions: [\"ToastProvider\", \"ToastRegion\"], category: \"feedback\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"toastRecipe\", behavior: \"toast\", aliases: [\"Notification\"] },\n { name: \"Watermark\", label: \"워터마크\", category: \"feedback\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"watermarkRecipe\" },\n { name: \"Dialog\", label: \"대화상자\", companions: [\"OverlayStackProvider\", \"ImmersiveOverlay\"], category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"dialogRecipe\", behavior: \"dialog\" },\n { name: \"AlertDialog\", label: \"확인 대화상자\", category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"alertDialogRecipe\", behavior: \"alertDialog\" },\n { name: \"Sheet\", label: \"시트\", extensions: [\"GestureSheet\", \"GestureSheetProvider\"], category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sheetRecipe\", behavior: \"sheet\" },\n { name: \"SidePanel\", label: \"측면 패널\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"sidePanelRecipe\", behavior: \"sidePanel\" },\n { name: \"Popover\", label: \"팝오버\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"popoverRecipe\", behavior: \"popover\" },\n { name: \"Tooltip\", label: \"툴팁\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"tooltipRecipe\", behavior: \"tooltip\" },\n { name: \"CommandPalette\", label: \"명령 검색\", category: \"overlay\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"commandPaletteRecipe\", behavior: \"commandPalette\" },\n { name: \"Affix\", label: \"고정 배치\", category: \"utility\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"affixRecipe\" },\n { name: \"DesignSystemProvider\", label: \"디자인 시스템 설정\", category: \"provider\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), aliases: [\"ConfigProvider\"], nonVisualEvidence: \"provider-adapter\" },\n { name: \"SkipNav\", label: \"본문 바로가기\", category: \"utility\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), aliases: [\"SkipLink\"], recipe: \"skipNavRecipe\", behavior: \"skipNav\" },\n // Hidden copy is validated as an accessible node; visual long-copy overflow is inapplicable by design.\n { name: \"VisuallyHidden\", label: \"화면 읽기 도구용 글자\", category: \"utility\", platform: \"web\", status: \"stable\", ...surfaceMaturity(\"stable\", \"unsupported\"), recipe: \"visuallyHiddenRecipe\", aliases: [\"ScreenReaderOnly\", \"SrOnly\"], ...evidenceNeeded(\"Chakra와 React Aria가 별도 접근성 primitive로 제공하는 문제를 Web에서 채택했습니다. Native는 중복 invisible node 대신 host accessibilityLabel/accessibilityHint를 사용하므로 의도적으로 지원하지 않습니다.\") },\n /*\n 2026-10-17 screen compositions registered. These screen compositions ship from the renderers' ./screens and ./screen-flows\n subpaths and products use them as the common screen structure (2026-10-15 user rule), but they were\n classified as supplemental to keep the catalog frozen. The consumer checker resolves imported symbols\n only against canonical catalog ids, so 606 of 690 unresolved-symbol findings across six products (88%)\n were these names (STANDARD_SCOPE_REVIEW_2026-10 §1.2). The freeze ended on 2026-10-17\n (docs/stable-promotion.md), so they register as canonical rows. On 2026-10-18 both renderer default\n proofs and applicable environment matrices passed after repairing the host harness, screen body naming\n and fixtures. Stable promises the public contract, not device QA or consumer adoption (docs/stable-core.md).\n */\n { name: \"ScreenLayout\", label: \"화면 골격\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"CompositionLayout\", label: \"구성 골격\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"SettingsScreen\", label: \"설정 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"SearchScreen\", label: \"검색 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"searchScreenRecipe\" },\n { name: \"EditorScreen\", label: \"편집 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"PermissionScreen\", label: \"권한 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"OnboardingScreen\", label: \"온보딩 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"ModerationScreen\", label: \"신고 화면\", companions: [\"ModerationForm\"], category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"ChatScreen\", label: \"채팅 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"NotificationInboxScreen\", label: \"알림함 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"CommentThreadScreen\", label: \"댓글 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"commentThreadRecipe\" },\n { name: \"ListDetailScreen\", label: \"목록 상세 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n // MediaSelectionCell (2026-10-18): the screen's own item cell, exported so virtualized hosts render the same cell.\n { name: \"MediaSelectionScreen\", label: \"미디어 선택 화면\", companions: [\"MediaSelectionCell\"], category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n { name: \"ProfileScreen\", label: \"프로필 화면\", category: \"layout\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"screenPatternRecipe\" },\n // MediaAlbumPageStatus (2026-10-18): loading/failed page of ChatMessage/CommentThreadRow `mediaAlbum`.\n { name: \"ChatMessage\", label: \"채팅 말풍선\", companions: [\"MediaAlbumPageStatus\"], category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"chatMessageRecipe\" },\n // 2026-10-18 timeline pieces that products drew themselves (BurnTok DM typing row, Utilverse chat time row).\n // New public API, so beta until both renderer proofs pass (docs/stable-promotion.md).\n { name: \"TypingIndicator\", label: \"입력 중 표시\", category: \"feedback\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"typingIndicatorRecipe\" },\n { name: \"ChatDateSeparator\", label: \"대화 날짜 구분\", category: \"data-display\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"chatDateSeparatorRecipe\" },\n { name: \"NotificationRow\", label: \"알림 미리보기 행\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"notificationRowRecipe\" },\n { name: \"NotificationItem\", label: \"알림 목록 항목\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"listRowRecipe\" },\n { name: \"CommentThreadRow\", label: \"댓글 행\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"commentThreadRecipe\" },\n { name: \"ProfileSummary\", label: \"프로필 요약\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"profileSummaryRecipe\" },\n { name: \"IconTile\", label: \"아이콘 타일\", category: \"data-display\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"iconTileRecipe\" },\n { name: \"MessageComposer\", label: \"메시지 작성창\", category: \"input\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"composerQuickInsertRecipe\" },\n { name: \"PhotoSourceSheet\", label: \"사진 출처 시트\", category: \"overlay\", platform: \"adaptive\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"sheetRecipe\" },\n] as const satisfies readonly ComponentCatalogEntry[];\n\nexport type ComponentName = (typeof componentCatalog)[number][\"name\"];\n\n/**\n * Kebab id of a catalog row: the explicit `id` override, else the kebab form of `name`\n * (QRCode → qr-code, BottomCTA → bottom-cta). `component-definitions.ts` mirrors this at the type level.\n */\nexport function componentIdOf(entry: Pick<ComponentCatalogEntry, \"name\" | \"id\">): string {\n return entry.id ?? entry.name.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\").toLowerCase();\n}\n\nexport function summarizeComponentRoadmap(\n entries: readonly ComponentCatalogEntry[] = componentCatalog,\n): Readonly<Record<ComponentRoadmapState, number>> {\n return entries.reduce<Record<ComponentRoadmapState, number>>(\n (summary, entry) => {\n if (entry.roadmap) summary[entry.roadmap.state] += 1;\n return summary;\n },\n {\n \"contract-ready\": 0,\n composed: 0,\n \"evidence-needed\": 0,\n prerequisite: 0,\n declined: 0,\n },\n );\n}\nimport {\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\n anchorRecipe,\n agreementRecipe,\n topRecipe,\n authProviderButtonRecipe,\n authScreenRecipe,\n headingRecipe,\n toggleGroupRecipe,\n tagsInputRecipe,\n skipNavRecipe,\n bottomInfoRecipe,\n sidebarRecipe,\n textFormatRecipe,\n collapsibleRecipe,\n menubarRecipe,\n assetRecipe,\n breadcrumbRecipe,\n aspectRatioRecipe,\n containerRecipe,\n calendarRecipe,\n cardRecipe,\n buttonRecipe,\n carouselRecipe,\n chipRecipe,\n comboboxRecipe,\n descriptionListRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dataTableRecipe,\n chartRecipe,\n datePickerRecipe,\n dividerRecipe,\n formRecipe,\n emptyStateRecipe,\n fieldRecipe,\n filePickerRecipe,\n iconButtonRecipe,\n iconRecipe,\n imageRecipe,\n linkRecipe,\n listRecipe,\n listRowRecipe,\n loadMoreRecipe,\n menuRecipe,\n noticeRecipe,\n paginationRecipe,\n popoverRecipe,\n numberFieldRecipe,\n progressRecipe,\n resultRecipe,\n searchFieldRecipe,\n selectRecipe,\n selectionGroupRecipe,\n sectionRecipe,\n segmentedControlRecipe,\n selectionControlRecipe,\n sheetRecipe,\n sidePanelRecipe,\n commandPaletteRecipe,\n layoutRecipe,\n otpFieldRecipe,\n passwordFieldRecipe,\n splitterRecipe,\n tourRecipe,\n transferListRecipe,\n skeletonRecipe,\n sliderRecipe,\n spinnerRecipe,\n stackRecipe,\n statisticRecipe,\n stepsRecipe,\n surfaceRecipe,\n switchRecipe,\n tabsRecipe,\n tagRecipe,\n textRecipe,\n timelineRecipe,\n toastRecipe,\n tooltipRecipe,\n topBarRecipe,\n treeRecipe,\n uploadItemRecipe,\n visuallyHiddenRecipe,\n} from \"./recipes.js\";\nimport { floatingActionButtonRecipe } from \"./floating-action-button.js\";\nimport { gridRecipe } from \"./grid.js\";\nimport { screenPatternRecipe, searchScreenRecipe, chatMessageRecipe, commentThreadRecipe, notificationRowRecipe, profileSummaryRecipe, iconTileRecipe, composerQuickInsertRecipe, typingIndicatorRecipe, chatDateSeparatorRecipe } from \"./screen-patterns.js\";\n\n/** One typed registry prevents catalog recipe names from drifting into strings. */\nexport const recipeRegistry = {\n imageChoiceRecipe,\n affixRecipe,\n watermarkRecipe,\n colorPickerRecipe,\n thinkingOrbRecipe,\n masonryRecipe,\n virtualListRecipe,\n qrCodeRecipe,\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\n anchorRecipe,\n agreementRecipe,\n topRecipe,\n authProviderButtonRecipe,\n authScreenRecipe,\n headingRecipe,\n toggleGroupRecipe,\n tagsInputRecipe,\n skipNavRecipe,\n bottomInfoRecipe,\n sidebarRecipe,\n textFormatRecipe,\n collapsibleRecipe,\n menubarRecipe,\n assetRecipe,\n breadcrumbRecipe,\n aspectRatioRecipe,\n containerRecipe,\n calendarRecipe,\n cardRecipe,\n buttonRecipe,\n carouselRecipe,\n chipRecipe,\n comboboxRecipe,\n descriptionListRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dataTableRecipe,\n chartRecipe,\n datePickerRecipe,\n dividerRecipe,\n formRecipe,\n gridRecipe,\n emptyStateRecipe,\n fieldRecipe,\n filePickerRecipe,\n iconButtonRecipe,\n iconRecipe,\n imageRecipe,\n linkRecipe,\n listRecipe,\n listRowRecipe,\n loadMoreRecipe,\n menuRecipe,\n noticeRecipe,\n paginationRecipe,\n popoverRecipe,\n numberFieldRecipe,\n progressRecipe,\n resultRecipe,\n searchFieldRecipe,\n selectRecipe,\n selectionGroupRecipe,\n sectionRecipe,\n segmentedControlRecipe,\n selectionControlRecipe,\n sheetRecipe,\n sidePanelRecipe,\n commandPaletteRecipe,\n layoutRecipe,\n otpFieldRecipe,\n passwordFieldRecipe,\n splitterRecipe,\n floatingActionButtonRecipe,\n tourRecipe,\n transferListRecipe,\n skeletonRecipe,\n sliderRecipe,\n spinnerRecipe,\n stackRecipe,\n statisticRecipe,\n stepsRecipe,\n surfaceRecipe,\n switchRecipe,\n tabsRecipe,\n tagRecipe,\n textRecipe,\n timelineRecipe,\n toastRecipe,\n tooltipRecipe,\n topBarRecipe,\n treeRecipe,\n uploadItemRecipe,\n visuallyHiddenRecipe,\n // Screen composition recipes (2026-10-17): registered so the screen catalog rows can bind their own values.\n screenPatternRecipe,\n searchScreenRecipe,\n chatMessageRecipe,\n commentThreadRecipe,\n notificationRowRecipe,\n profileSummaryRecipe,\n iconTileRecipe,\n composerQuickInsertRecipe,\n typingIndicatorRecipe,\n chatDateSeparatorRecipe,\n} as const;\n\nexport type RecipeName = keyof typeof recipeRegistry;\n"]}
|
|
@@ -2317,6 +2317,65 @@ export declare const bottomNavigationRecipe: {
|
|
|
2317
2317
|
alpha?: number;
|
|
2318
2318
|
}>;
|
|
2319
2319
|
};
|
|
2320
|
+
/**
|
|
2321
|
+
* Raised center destination (`prominent` item, Diairy write tab, 2026-10-18). The circle is the large control
|
|
2322
|
+
* height plus one 4pt step so it outranks the 40pt indicators beside it. Renderers lift it by
|
|
2323
|
+
* `diameter - indicator.minHeight` so its label stays on the same line as the other labels. It keeps brand
|
|
2324
|
+
* fill in both states because a dimmed circle would read as a large idle icon, not the product's main entry;
|
|
2325
|
+
* selection evidence stays on the label (weight and color), as for other items.
|
|
2326
|
+
*/
|
|
2327
|
+
readonly prominentDestination: {
|
|
2328
|
+
readonly diameter: number;
|
|
2329
|
+
readonly icon: "lg";
|
|
2330
|
+
readonly background: Readonly<{
|
|
2331
|
+
source: "theme";
|
|
2332
|
+
key: "primary";
|
|
2333
|
+
alpha?: number;
|
|
2334
|
+
}>;
|
|
2335
|
+
readonly content: Readonly<{
|
|
2336
|
+
source: "theme";
|
|
2337
|
+
key: "onPrimary";
|
|
2338
|
+
alpha?: number;
|
|
2339
|
+
}>;
|
|
2340
|
+
readonly shadow: {
|
|
2341
|
+
readonly color: "#000000";
|
|
2342
|
+
readonly opacity: 0.12;
|
|
2343
|
+
readonly radius: 12;
|
|
2344
|
+
readonly offsetY: 4;
|
|
2345
|
+
};
|
|
2346
|
+
};
|
|
2347
|
+
/**
|
|
2348
|
+
* App-icon slots for `configuration.iconSize` (Utilverse dock artwork, 2026-10-18). `standard` keeps the
|
|
2349
|
+
* density glyph; 44 is the minimum touch target and 52 the large control height, the sizes the dock used.
|
|
2350
|
+
*/
|
|
2351
|
+
readonly iconSizes: {
|
|
2352
|
+
readonly large: 44;
|
|
2353
|
+
readonly xlarge: 52;
|
|
2354
|
+
};
|
|
2355
|
+
/**
|
|
2356
|
+
* Floating frames for `configuration.shape` (Utilverse home shells, 2026-10-18). `surfacePadding` is the inner
|
|
2357
|
+
* gap between the frame and the destination row; the two tighter frames pair with `density: "compact"` for the
|
|
2358
|
+
* desktop-shell docks. Radii are theme radius tokens, so a design profile's radius scale still applies.
|
|
2359
|
+
* `standard` is absent on purpose: it keeps `presentations.floating`.
|
|
2360
|
+
*/
|
|
2361
|
+
readonly shapes: {
|
|
2362
|
+
readonly rounded: {
|
|
2363
|
+
readonly radius: "xl";
|
|
2364
|
+
readonly surfacePadding: 8;
|
|
2365
|
+
};
|
|
2366
|
+
readonly pill: {
|
|
2367
|
+
readonly radius: "full";
|
|
2368
|
+
readonly surfacePadding: 8;
|
|
2369
|
+
};
|
|
2370
|
+
readonly compact: {
|
|
2371
|
+
readonly radius: "lg";
|
|
2372
|
+
readonly surfacePadding: 4;
|
|
2373
|
+
};
|
|
2374
|
+
readonly square: {
|
|
2375
|
+
readonly radius: "sm";
|
|
2376
|
+
readonly surfacePadding: 4;
|
|
2377
|
+
};
|
|
2378
|
+
};
|
|
2320
2379
|
readonly adaptive: {
|
|
2321
2380
|
readonly web: "fixed-compact-viewport";
|
|
2322
2381
|
readonly native: "navigator-tab-bar";
|
|
@@ -2471,6 +2530,15 @@ export declare const bottomNavigationRecipe: {
|
|
|
2471
2530
|
readonly selected: 1.06;
|
|
2472
2531
|
};
|
|
2473
2532
|
};
|
|
2533
|
+
/**
|
|
2534
|
+
* `configuration.iconEmphasis: "lift"` (Utilverse dock artwork, 2026-10-18): the selected icon rises one 4pt
|
|
2535
|
+
* step on top of the selected scale, and idle icons dim. Full-color artwork cannot take the selected tint, so
|
|
2536
|
+
* without the dim only the label would mark the current destination. 0.82 is the dock's measured idle opacity.
|
|
2537
|
+
*/
|
|
2538
|
+
readonly liftEmphasis: {
|
|
2539
|
+
readonly translateY: number;
|
|
2540
|
+
readonly idleOpacity: 0.82;
|
|
2541
|
+
};
|
|
2474
2542
|
};
|
|
2475
2543
|
readonly label: {
|
|
2476
2544
|
readonly fontWeight: "500";
|
|
@@ -2550,6 +2618,38 @@ export declare const tabsRecipe: {
|
|
|
2550
2618
|
readonly size: "medium";
|
|
2551
2619
|
readonly layout: "content";
|
|
2552
2620
|
readonly overflow: "scroll";
|
|
2621
|
+
readonly indicator: "underline";
|
|
2622
|
+
};
|
|
2623
|
+
/**
|
|
2624
|
+
* Selection mark. `filled` paints the selected tab as a brand-tinted pill instead of the 2pt underline and
|
|
2625
|
+
* drops the list divider, which only anchors underlines (Diairy nest tabs, 2026-10-18: the app's tab bar
|
|
2626
|
+
* already marks the current place with this pill, so in-screen tabs looked like a second product).
|
|
2627
|
+
*/
|
|
2628
|
+
readonly indicators: {
|
|
2629
|
+
readonly underline: {
|
|
2630
|
+
readonly listDivider: true;
|
|
2631
|
+
readonly background: null;
|
|
2632
|
+
readonly selectedContent: Readonly<{
|
|
2633
|
+
source: "theme";
|
|
2634
|
+
key: "text";
|
|
2635
|
+
alpha?: number;
|
|
2636
|
+
}>;
|
|
2637
|
+
readonly radius: null;
|
|
2638
|
+
};
|
|
2639
|
+
readonly filled: {
|
|
2640
|
+
readonly listDivider: false;
|
|
2641
|
+
readonly background: Readonly<{
|
|
2642
|
+
source: "theme";
|
|
2643
|
+
key: "surfaceAccent";
|
|
2644
|
+
alpha?: number;
|
|
2645
|
+
}>;
|
|
2646
|
+
readonly selectedContent: Readonly<{
|
|
2647
|
+
source: "theme";
|
|
2648
|
+
key: "contentBrand";
|
|
2649
|
+
alpha?: number;
|
|
2650
|
+
}>;
|
|
2651
|
+
readonly radius: "full";
|
|
2652
|
+
};
|
|
2553
2653
|
};
|
|
2554
2654
|
readonly sizes: {
|
|
2555
2655
|
readonly small: {
|
|
@@ -3296,6 +3396,25 @@ export declare const dialogRecipe: {
|
|
|
3296
3396
|
readonly reducedMotion: "instant";
|
|
3297
3397
|
};
|
|
3298
3398
|
};
|
|
3399
|
+
/**
|
|
3400
|
+
* ImmersiveOverlay (Dialog companion, 1.31.0): an edge-to-edge stage with a control bar and no card, scrim or
|
|
3401
|
+
* header, for presentations such as a display board (utilverse used a raw RN Modal because Dialog/Sheet always
|
|
3402
|
+
* framed their content). The stage is product-drawn; the bar reuses screen spacing so it matches a screen footer.
|
|
3403
|
+
*/
|
|
3404
|
+
readonly immersive: {
|
|
3405
|
+
readonly background: Readonly<{
|
|
3406
|
+
source: "theme";
|
|
3407
|
+
key: "bg";
|
|
3408
|
+
alpha?: number;
|
|
3409
|
+
}>;
|
|
3410
|
+
readonly controls: {
|
|
3411
|
+
readonly padding: 16;
|
|
3412
|
+
readonly gap: 8;
|
|
3413
|
+
readonly actionGap: 12;
|
|
3414
|
+
};
|
|
3415
|
+
readonly orientations: readonly ["portrait", "landscape-left", "landscape-right"];
|
|
3416
|
+
readonly statusBarHidden: true;
|
|
3417
|
+
};
|
|
3299
3418
|
};
|
|
3300
3419
|
/**
|
|
3301
3420
|
* Tone is the dialog's reason for interrupting, not its decoration.
|
|
@@ -3669,6 +3788,12 @@ export declare const toastRecipe: {
|
|
|
3669
3788
|
readonly anchor: {
|
|
3670
3789
|
readonly blockSize: 32;
|
|
3671
3790
|
};
|
|
3791
|
+
/**
|
|
3792
|
+
* @deprecated Toast has no edge stripe: the tinted icon badge (or product media) carries tone. Retired in 1.10.0
|
|
3793
|
+
* (width 0); since 1.32.0 neither renderer draws an element for it, so there is nothing for a product to hide
|
|
3794
|
+
* (2026-10-18 BurnTok still hid a strip that no longer existed). Kept only so the published recipe shape stays
|
|
3795
|
+
* compatible; remove in the next major.
|
|
3796
|
+
*/
|
|
3672
3797
|
readonly toneMark: {
|
|
3673
3798
|
readonly width: 0;
|
|
3674
3799
|
readonly radius: "full";
|
|
@@ -3969,6 +4094,7 @@ export type SelectionControlPresentation = keyof typeof selectionControlRecipe.p
|
|
|
3969
4094
|
export type TabSize = keyof typeof tabsRecipe.sizes;
|
|
3970
4095
|
export type TabsLayout = keyof typeof tabsRecipe.layouts;
|
|
3971
4096
|
export type TabsOverflow = keyof typeof tabsRecipe.overflow;
|
|
4097
|
+
export type TabsIndicator = keyof typeof tabsRecipe.indicators;
|
|
3972
4098
|
export type SpinnerSize = keyof typeof spinnerRecipe.sizes;
|
|
3973
4099
|
export type SpinnerTone = keyof typeof spinnerRecipe.tones;
|
|
3974
4100
|
export type AvatarSize = keyof typeof avatarRecipe.sizes;
|