@hjmds/design-contracts 0.8.2 → 0.9.1
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/LICENSE +21 -0
- package/README.md +17 -10
- package/dist/aspect-ratio.d.ts +31 -0
- package/dist/aspect-ratio.d.ts.map +1 -0
- package/dist/aspect-ratio.js +42 -0
- package/dist/aspect-ratio.js.map +1 -0
- package/dist/base-recipes.d.ts +1 -1
- package/dist/base-recipes.js +1 -1
- package/dist/base-recipes.js.map +1 -1
- package/dist/catalog.d.ts +102 -10
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +11 -5
- package/dist/catalog.js.map +1 -1
- package/dist/colors.d.ts +5 -1
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +7 -3
- package/dist/colors.js.map +1 -1
- package/dist/component-definitions.d.ts +3 -0
- package/dist/component-definitions.d.ts.map +1 -1
- package/dist/component-definitions.js +3 -0
- package/dist/component-definitions.js.map +1 -1
- package/dist/container.d.ts +40 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +43 -0
- package/dist/container.js.map +1 -0
- package/dist/icon-button-recipe.d.ts +1 -1
- package/dist/icon-button-recipe.js +1 -1
- package/dist/icon-button-recipe.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/recipes.d.ts +3 -0
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +3 -0
- package/dist/recipes.js.map +1 -1
- package/dist/semantic-colors.d.ts +5 -0
- package/dist/semantic-colors.d.ts.map +1 -1
- package/dist/semantic-colors.js +1 -0
- package/dist/semantic-colors.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/dist/visually-hidden.d.ts +21 -0
- package/dist/visually-hidden.d.ts.map +1 -0
- package/dist/visually-hidden.js +20 -0
- package/dist/visually-hidden.js.map +1 -0
- package/docs/architecture.md +3 -2
- package/docs/aspect-ratio.md +25 -0
- package/docs/consumer-policy.md +177 -0
- package/docs/container.md +24 -0
- package/docs/cross-platform-core-normalization.md +24 -7
- package/docs/generated/component-maturity.md +11 -8
- package/docs/generated/renderer-evidence.json +257 -25
- package/docs/generated/renderer-evidence.md +16 -11
- package/docs/generated/showcase-manifest.json +141 -9
- package/docs/identity.md +5 -2
- package/docs/library-gap-analysis.md +65 -0
- package/docs/migration-0.6.md +4 -0
- package/docs/migration-0.9.1.md +15 -0
- package/docs/stable-core.md +26 -0
- package/docs/visually-hidden.md +20 -0
- package/package.json +25 -2
- package/docs/consumer-release-gate.md +0 -90
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 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 * 만들지 않기로 **확정한** 항목의 사유. `status`는 구현 성숙도 축이고 이것은\n * \"만들 것인가\"라는 다른 질문이라 직교 필드로 둔다.\n *\n * 이 필드가 필요한 이유: crosswalk의 `targets`가 이 항목들을 가리키고\n * `targets.length > 0`이 테스트로 강제되므로, 흡수할 다른 이름이 없으면 행을 지울 수\n * 없다. 그렇다고 `planned`로 두면 \"아직 안 만들었지만 만들 것\"이라는 거짓을 말한다.\n * 근거는 `docs/<id>.md`에 있고, 그 문서의 존재를 테스트가 강제한다.\n */\n declinedReason?: string;\n}>;\n\nconst contractReady = (summary: string) => ({\n roadmap: { state: \"contract-ready\", summary },\n} as const);\nconst composed = (summary: string, targets: readonly string[]) => ({\n roadmap: { state: \"composed\", summary, targets },\n} as const);\nconst evidenceNeeded = (summary: string) => ({\n roadmap: { state: \"evidence-needed\", summary },\n} as const);\nconst prerequisite = (summary: string, targets: readonly string[]) => ({\n roadmap: { state: \"prerequisite\", summary, targets },\n} as const);\nconst declined = (reason: string) => ({\n declinedReason: reason,\n roadmap: { state: \"declined\", summary: reason },\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\", category: \"foundation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"textRecipe\" },\n { name: \"Icon\", category: \"foundation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"iconRecipe\" },\n { name: \"Surface\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"surfaceRecipe\" },\n { name: \"Divider\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"dividerRecipe\" },\n { name: \"Section\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"sectionRecipe\" },\n { name: \"Stack\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"stackRecipe\", aliases: [\"Flex\", \"Space\", \"Inline\"] },\n { name: \"Grid\", category: \"layout\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"gridRecipe\", ...evidenceNeeded(\"공통 window class·responsive value·row-major geometry 계약과 공식 Web/RN default renderer 증거가 연결됐습니다. 안정화에는 환경별·제품 사용 증거가 더 필요합니다.\") },\n { name: \"Layout\", category: \"layout\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"AppShell\"], recipe: \"layoutRecipe\", behavior: \"layout\", ...evidenceNeeded(\"공통 descriptor를 소비하는 Web landmark·skip-link renderer와 Native ordered-region renderer가 기본 실행 증거를 제공합니다. 실제 product shell·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Masonry\", category: \"layout\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...evidenceNeeded(\"실제 waterfall 피드가 생기면 측정·패킹의 renderer 경계를 검증합니다.\") },\n { name: \"Splitter\", category: \"layout\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), aliases: [\"SplitPane\"], recipe: \"splitterRecipe\", behavior: \"splitter\", ...contractReady(\"분할 크기·키보드 조절 계약은 준비됐고 Web vertical slice를 기다립니다.\") },\n { name: \"Button\", category: \"action\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"buttonRecipe\" },\n { name: \"IconButton\", category: \"action\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"iconButtonRecipe\" },\n { name: \"Link\", category: \"action\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"linkRecipe\", behavior: \"link\" },\n { name: \"BottomCTA\", category: \"action\", platform: \"native\", status: \"beta\", ...surfaceMaturity(\"unsupported\", \"beta\"), recipe: \"bottomCtaRecipe\" },\n { name: \"FloatingActionButton\", category: \"action\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"floatingActionButtonRecipe\", behavior: \"floatingActionButton\", aliases: [\"FloatButton\", \"FAB\"], ...contractReady(\"배치·확장 action·안전 영역 계약은 준비됐고 제품 적용을 기다립니다.\") },\n { name: \"Field\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"fieldRecipe\", behavior: \"field\" },\n { name: \"SearchField\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"searchFieldRecipe\", behavior: \"searchField\" },\n { name: \"TextArea\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"fieldRecipe\" },\n { name: \"PasswordField\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"Input.Password\"], recipe: \"passwordFieldRecipe\", behavior: \"passwordField\", ...evidenceNeeded(\"Web·Native renderer와 기본 실행·Storybook 증거가 연결됐습니다. 실제 로그인·가입 흐름과 암호 관리자 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"OtpField\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"Input.OTP\"], recipe: \"otpFieldRecipe\", behavior: \"otpField\", ...evidenceNeeded(\"하나의 접근 가능한 입력을 유지하는 Web·Native renderer와 기본 실행·Storybook 증거가 연결됐습니다. 실제 인증 흐름과 보조기기 증거가 더 필요합니다.\") },\n { name: \"Checkbox\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionControlRecipe\", behavior: \"checkbox\" },\n { name: \"Radio\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionControlRecipe\" },\n { name: \"CheckboxGroup\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionGroupRecipe\", behavior: \"checkboxGroup\" },\n { name: \"RadioGroup\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionGroupRecipe\", behavior: \"radioGroup\" },\n { name: \"Switch\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"switchRecipe\", behavior: \"switch\" },\n { name: \"Chip\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"chipRecipe\", behavior: \"chip\" },\n { name: \"SegmentedControl\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"segmentedControlRecipe\", behavior: \"segmentedControl\" },\n { name: \"Slider\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"sliderRecipe\", behavior: \"slider\", ...evidenceNeeded(\"Web range input과 Native adjustable renderer가 같은 범위·step 계약을 실행합니다. 실제 제품 입력과 보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"NumberField\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"numberFieldRecipe\", behavior: \"numberField\", ...evidenceNeeded(\"Web·Native renderer가 동일한 파싱·clamp·증감 계약을 실행합니다. 실제 수량 입력 흐름과 보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Select\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectRecipe\", behavior: \"select\" },\n { name: \"Combobox\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"comboboxRecipe\", behavior: \"combobox\" },\n { name: \"DatePicker\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"datePickerRecipe\", behavior: \"datePicker\", ...evidenceNeeded(\"공통 Calendar grid 계약을 사용하는 Web dialog·Native Sheet renderer와 기본 실행 증거가 연결됐습니다. 실제 날짜 입력 흐름과 보조기기 증거가 더 필요합니다.\") },\n { name: \"TimePicker\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...composed(\"시 Select와 분 Select 조합으로 같은 문제를 완결합니다.\", [\"Select\"]) },\n { name: \"ColorPicker\", category: \"input\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"임의 색 선택이 실제 제품 요구로 확인될 때 색공간·키보드 계약을 엽니다.\") },\n { name: \"FilePicker\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"filePickerRecipe\", behavior: \"filePicker\", aliases: [\"Upload\"], ...evidenceNeeded(\"Web native input·dropzone과 Native picker adapter가 같은 accept·size·count 판정 계약을 사용합니다. 실제 업로드 흐름과 플랫폼 picker 증거가 더 필요합니다.\") },\n { name: \"Cascader\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...prerequisite(\"TreeSelect에 path value와 중간 단계 commit 축을 먼저 추가해야 흡수할 수 있습니다.\", [\"TreeSelect\"]) },\n { name: \"Form\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"formRecipe\", behavior: \"form\", ...evidenceNeeded(\"Web·Native form session renderer와 canonical Storybook 증거가 연결됐습니다. 실제 제출·서버 오류 흐름이 더 쌓이면 stable을 검토합니다.\") },\n { name: \"Mentions\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"comboboxRecipe\", behavior: \"combobox\", ...contractReady(\"trigger 탐색·삽입 범위 계약은 준비됐고 메시지 작성 화면을 기다립니다.\") },\n { name: \"Rating\", category: \"input\", platform: \"shared\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"Rate\"], ...composed(\"입력은 Slider, 읽기 전용 표시는 Statistic 조합으로 해결합니다.\", [\"Slider\", \"Statistic\"]) },\n { name: \"TransferList\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"Transfer\"], recipe: \"transferListRecipe\", behavior: \"transferList\", ...contractReady(\"양쪽 collection·이동·선택 보존 계약은 준비됐고 제품 흐름을 기다립니다.\") },\n { name: \"TreeSelect\", category: \"input\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...contractReady(\"Select·Tree·Checkbox 계약을 합성한 tri-state selection 로직이 준비됐습니다.\") },\n { name: \"UploadItem\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"uploadItemRecipe\", behavior: \"uploadItem\", ...evidenceNeeded(\"Web·Native renderer가 동일한 진행·성공·오류·cancel/retry 계약을 실행합니다. 실제 전송 lifecycle 증거가 더 필요합니다.\") },\n { name: \"Tabs\", category: \"navigation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"tabsRecipe\", behavior: \"tabs\" },\n { name: \"TopBar\", category: \"navigation\", platform: \"native\", status: \"beta\", ...surfaceMaturity(\"unsupported\", \"beta\"), recipe: \"topBarRecipe\" },\n { name: \"BottomNavigation\", category: \"navigation\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"bottomNavigationRecipe\", behavior: \"bottomNavigation\", ...evidenceNeeded(\"Web link landmark와 Native controlled-navigation renderer가 공통 route intent를 소비합니다. 실제 브라우저·기기 릴리스 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Breadcrumb\", category: \"navigation\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"breadcrumbRecipe\", behavior: \"breadcrumb\", ...contractReady(\"현재 위치·축약·링크 의미 계약은 준비됐고 Web 계층 탐색을 기다립니다.\") },\n { name: \"Pagination\", category: \"navigation\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"paginationRecipe\", behavior: \"pagination\", ...contractReady(\"페이지 범위·현재 페이지·키보드 계약은 준비됐고 페이지 탐색 화면을 기다립니다.\") },\n { name: \"LoadMore\", category: \"navigation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"loadMoreRecipe\", behavior: \"loadMore\", ...evidenceNeeded(\"Web observer와 Native FlatList onEndReached adapter가 같은 requestKey gate를 소비합니다. 실제 장시간 목록·보조기기 릴리스 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Steps\", category: \"navigation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"stepsRecipe\", ...evidenceNeeded(\"단일 cursor에서 상태를 파생하는 Web·Native renderer와 기본 실행 증거가 연결됐습니다. 실제 다단계 흐름과 보조기기 증거가 더 필요합니다.\") },\n { name: \"Menu\", category: \"navigation\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"menuRecipe\", behavior: \"menu\", aliases: [\"Dropdown\"] },\n { name: \"Anchor\", category: \"navigation\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"긴 문서 목차와 scroll spy가 실제 제품에 생기면 Web 계약을 엽니다.\") },\n { name: \"Avatar\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"avatarRecipe\" },\n { name: \"Badge\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"badgeRecipe\" },\n { name: \"CounterBadge\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"counterBadgeRecipe\" },\n { name: \"Card\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"cardRecipe\" },\n { name: \"List\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"listRecipe\" },\n { name: \"ListRow\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"listRowRecipe\" },\n { name: \"VirtualList\", category: \"data-display\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"Listy\"], ...evidenceNeeded(\"가상화는 renderer 최적화라 공개 semantic이 필요한 실측 사례를 기다립니다.\") },\n { name: \"Accordion\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"accordionRecipe\", behavior: \"disclosureGroup\" },\n { name: \"Statistic\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"statisticRecipe\" },\n { name: \"Timeline\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"timelineRecipe\", ...evidenceNeeded(\"두 제품의 이력 UI가 공통 descriptor와 Web/RN dot·connector renderer를 소비합니다. 실제 릴리스·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"DataTable\", category: \"data-display\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"dataTableRecipe\", behavior: \"dataTable\", ...contractReady(\"정렬·선택·grid semantics 계약은 준비됐고 상호작용 표를 기다립니다.\") },\n { name: \"Tree\", category: \"data-display\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"treeRecipe\", behavior: \"tree\", ...contractReady(\"계층 flatten·확장·키보드 계약은 준비됐고 Web tree 화면을 기다립니다.\") },\n { name: \"Calendar\", category: \"data-display\", platform: \"shared\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"calendarRecipe\", behavior: \"calendar\", ...contractReady(\"월 격자·날짜 의미·경계 계약은 준비됐고 실제 달력 화면을 기다립니다.\") },\n { name: \"Carousel\", category: \"data-display\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"carouselRecipe\", behavior: \"carousel\", ...contractReady(\"현재 slide·이전/다음·접근성 action 계약은 준비됐고 제품 renderer 보완을 기다립니다.\") },\n { name: \"DescriptionList\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"descriptionListRecipe\", aliases: [\"Descriptions\"], ...evidenceNeeded(\"Web/RN renderer가 공통 descriptor와 responsive column resolver를 소비하고 기본 실행 증거를 제공합니다. 200% text product·기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Image\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"imageRecipe\", ...evidenceNeeded(\"Web load/error/fallback·framework adapter와 Native fallback·optimized-host adapter가 기본 실행 증거를 제공합니다. 실제 network asset·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"QRCode\", category: \"data-display\", platform: \"shared\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...evidenceNeeded(\"스캔 가능한 코드 생성 요구가 실제 제품에서 확인되면 전용 계약을 엽니다.\") },\n { name: \"Tag\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"tagRecipe\" },\n { name: \"Tour\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"tourRecipe\", behavior: \"tour\", aliases: [\"CoachMark\"], ...contractReady(\"단계·초점 복귀·건너뛰기 계약은 준비됐고 onboarding tour를 기다립니다.\") },\n { name: \"EmptyState\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"emptyStateRecipe\" },\n { name: \"Notice\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"noticeRecipe\" },\n { name: \"Progress\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"progressRecipe\" },\n { name: \"Spinner\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"spinnerRecipe\" },\n { name: \"Skeleton\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"skeletonRecipe\" },\n { name: \"Result\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"resultRecipe\", ...evidenceNeeded(\"두 제품의 terminal flow UI가 공통 descriptor와 Web/RN renderer를 소비합니다. 실제 릴리스·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Toast\", category: \"feedback\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"toastRecipe\", behavior: \"toast\", aliases: [\"Notification\"] },\n { name: \"Watermark\", category: \"feedback\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"화면 위 반복 표식이 필요한 제품 요구가 확인되면 의미·인쇄·접근성 경계를 엽니다.\") },\n { name: \"Dialog\", category: \"overlay\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"dialogRecipe\", behavior: \"dialog\" },\n { name: \"AlertDialog\", category: \"overlay\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"alertDialogRecipe\", behavior: \"alertDialog\" },\n { name: \"Sheet\", category: \"overlay\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"sheetRecipe\", behavior: \"sheet\" },\n { name: \"SidePanel\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"sidePanelRecipe\", behavior: \"sidePanel\", ...contractReady(\"비모달 보조 패널·폭·dismiss 계약은 준비됐고 데스크톱 화면을 기다립니다.\") },\n { name: \"Popover\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"popoverRecipe\", behavior: \"popover\", ...contractReady(\"비모달 contextual surface·초점·dismiss 계약은 준비됐고 제품 적용을 기다립니다.\") },\n { name: \"ConfirmPopover\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), aliases: [\"Popconfirm\"], ...composed(\"Popover 표면과 AlertDialog 확인 session 조합으로 해결합니다.\", [\"Popover\", \"AlertDialog\"]) },\n { name: \"Tooltip\", category: \"overlay\", platform: \"web\", status: \"beta\", ...surfaceMaturity(\"beta\", \"unsupported\"), recipe: \"tooltipRecipe\", behavior: \"tooltip\" },\n { name: \"CommandPalette\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"commandPaletteRecipe\", behavior: \"commandPalette\", ...contractReady(\"검색·action commit·초점 복귀 계약은 준비됐고 power-user 화면을 기다립니다.\") },\n { name: \"Affix\", category: \"utility\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"임의 콘텐츠의 scroll threshold 고정 요구가 확인되면 Web 전용 계약을 엽니다.\") },\n { name: \"AppProvider\", category: \"provider\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"App\"], ...declined(\"message·notification·modal 세 표면이 이미 Toast·Dialog·AlertDialog에 있고, 남는 것은 Context 배선뿐이라 값 계약이 없다\") },\n { name: \"BorderBeam\", category: \"utility\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...declined(\"장식으로 브랜드를 증명하지 않는다는 정체성과 충돌하고, reduced motion에서 남는 것이 없으며, 없어도 화면의 뜻이 같다\") },\n { name: \"DesignSystemProvider\", category: \"provider\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"ConfigProvider\"], nonVisualEvidence: \"provider-adapter\", ...evidenceNeeded(\"두 실제 제품의 Web/RN Context adapter가 environment+palette와 parent axis 상속을 소비합니다. 추가 제품 릴리스 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Utility\", category: \"utility\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), aliases: [\"Util\"], ...declined(\"antd Util은 theme.useToken()으로 토큰을 읽는 법을 설명하는 문서 페이지다. 이 패키지는 토큰을 정적 export로 주므로 그 문제가 발생하지 않는다\") },\n] as const satisfies readonly ComponentCatalogEntry[];\n\nexport type ComponentName = (typeof componentCatalog)[number][\"name\"];\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 breadcrumbRecipe,\n calendarRecipe,\n cardRecipe,\n buttonRecipe,\n carouselRecipe,\n chipRecipe,\n comboboxRecipe,\n descriptionListRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dataTableRecipe,\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} from \"./recipes.js\";\nimport { floatingActionButtonRecipe } from \"./floating-action-button.js\";\nimport { gridRecipe } from \"./grid.js\";\n\n/** One typed registry prevents catalog recipe names from drifting into strings. */\nexport const recipeRegistry = {\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\n breadcrumbRecipe,\n calendarRecipe,\n cardRecipe,\n buttonRecipe,\n carouselRecipe,\n chipRecipe,\n comboboxRecipe,\n descriptionListRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dataTableRecipe,\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} 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 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 * 만들지 않기로 **확정한** 항목의 사유. `status`는 구현 성숙도 축이고 이것은\n * \"만들 것인가\"라는 다른 질문이라 직교 필드로 둔다.\n *\n * 이 필드가 필요한 이유: crosswalk의 `targets`가 이 항목들을 가리키고\n * `targets.length > 0`이 테스트로 강제되므로, 흡수할 다른 이름이 없으면 행을 지울 수\n * 없다. 그렇다고 `planned`로 두면 \"아직 안 만들었지만 만들 것\"이라는 거짓을 말한다.\n * 근거는 `docs/<id>.md`에 있고, 그 문서의 존재를 테스트가 강제한다.\n */\n declinedReason?: string;\n}>;\n\nconst contractReady = (summary: string) => ({\n roadmap: { state: \"contract-ready\", summary },\n} as const);\nconst composed = (summary: string, targets: readonly string[]) => ({\n roadmap: { state: \"composed\", summary, targets },\n} as const);\nconst evidenceNeeded = (summary: string) => ({\n roadmap: { state: \"evidence-needed\", summary },\n} as const);\nconst prerequisite = (summary: string, targets: readonly string[]) => ({\n roadmap: { state: \"prerequisite\", summary, targets },\n} as const);\nconst declined = (reason: string) => ({\n declinedReason: reason,\n roadmap: { state: \"declined\", summary: reason },\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\", category: \"foundation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"textRecipe\" },\n { name: \"Icon\", category: \"foundation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"iconRecipe\" },\n { name: \"Surface\", category: \"layout\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"surfaceRecipe\" },\n { name: \"Divider\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"dividerRecipe\" },\n { name: \"Section\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"sectionRecipe\" },\n { name: \"Stack\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"stackRecipe\", aliases: [\"Flex\", \"Space\", \"Inline\"] },\n { name: \"Container\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"containerRecipe\", ...evidenceNeeded(\"Radix·Chakra·MUI·Mantine의 layout inventory를 비교해 공통 content-width primitive로 채택했습니다. Web/RN renderer와 환경 행렬 증거를 연결했고 실제 제품의 넓은 화면 채택 뒤 stable을 검토합니다.\") },\n { name: \"AspectRatio\", category: \"layout\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"aspectRatioRecipe\", ...evidenceNeeded(\"Radix·Chakra·Mantine·Carbon에서 반복되는 media geometry 문제를 shared primitive로 채택했습니다. 제품이 object-fit을 소유하고 renderer는 비율만 보장합니다.\") },\n { name: \"Grid\", category: \"layout\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"gridRecipe\", ...evidenceNeeded(\"공통 window class·responsive value·row-major geometry 계약과 공식 Web/RN default renderer 증거가 연결됐습니다. 안정화에는 환경별·제품 사용 증거가 더 필요합니다.\") },\n { name: \"Layout\", category: \"layout\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"AppShell\"], recipe: \"layoutRecipe\", behavior: \"layout\", ...evidenceNeeded(\"공통 descriptor를 소비하는 Web landmark·skip-link renderer와 Native ordered-region renderer가 기본 실행 증거를 제공합니다. 실제 product shell·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Masonry\", category: \"layout\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...evidenceNeeded(\"실제 waterfall 피드가 생기면 측정·패킹의 renderer 경계를 검증합니다.\") },\n { name: \"Splitter\", category: \"layout\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), aliases: [\"SplitPane\"], recipe: \"splitterRecipe\", behavior: \"splitter\", ...contractReady(\"분할 크기·키보드 조절 계약은 준비됐고 Web vertical slice를 기다립니다.\") },\n { name: \"Button\", category: \"action\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"buttonRecipe\" },\n { name: \"IconButton\", category: \"action\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"iconButtonRecipe\" },\n { name: \"Link\", category: \"action\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"linkRecipe\", behavior: \"link\" },\n { name: \"BottomCTA\", category: \"action\", platform: \"native\", status: \"beta\", ...surfaceMaturity(\"unsupported\", \"beta\"), recipe: \"bottomCtaRecipe\" },\n { name: \"FloatingActionButton\", category: \"action\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"floatingActionButtonRecipe\", behavior: \"floatingActionButton\", aliases: [\"FloatButton\", \"FAB\"], ...contractReady(\"배치·확장 action·안전 영역 계약은 준비됐고 제품 적용을 기다립니다.\") },\n { name: \"Field\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"fieldRecipe\", behavior: \"field\" },\n { name: \"SearchField\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"searchFieldRecipe\", behavior: \"searchField\" },\n { name: \"TextArea\", category: \"input\", platform: \"shared\", status: \"stable\", ...surfaceMaturity(\"stable\", \"stable\"), recipe: \"fieldRecipe\" },\n { name: \"PasswordField\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"Input.Password\"], recipe: \"passwordFieldRecipe\", behavior: \"passwordField\", ...evidenceNeeded(\"Web·Native renderer와 기본 실행·Storybook 증거가 연결됐습니다. 실제 로그인·가입 흐름과 암호 관리자 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"OtpField\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"Input.OTP\"], recipe: \"otpFieldRecipe\", behavior: \"otpField\", ...evidenceNeeded(\"하나의 접근 가능한 입력을 유지하는 Web·Native renderer와 기본 실행·Storybook 증거가 연결됐습니다. 실제 인증 흐름과 보조기기 증거가 더 필요합니다.\") },\n { name: \"Checkbox\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionControlRecipe\", behavior: \"checkbox\" },\n { name: \"Radio\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionControlRecipe\" },\n { name: \"CheckboxGroup\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionGroupRecipe\", behavior: \"checkboxGroup\" },\n { name: \"RadioGroup\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectionGroupRecipe\", behavior: \"radioGroup\" },\n { name: \"Switch\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"switchRecipe\", behavior: \"switch\" },\n { name: \"Chip\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"chipRecipe\", behavior: \"chip\" },\n { name: \"SegmentedControl\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"segmentedControlRecipe\", behavior: \"segmentedControl\" },\n { name: \"Slider\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"sliderRecipe\", behavior: \"slider\", ...evidenceNeeded(\"Web range input과 Native adjustable renderer가 같은 범위·step 계약을 실행합니다. 실제 제품 입력과 보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"NumberField\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"numberFieldRecipe\", behavior: \"numberField\", ...evidenceNeeded(\"Web·Native renderer가 동일한 파싱·clamp·증감 계약을 실행합니다. 실제 수량 입력 흐름과 보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Select\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"selectRecipe\", behavior: \"select\" },\n { name: \"Combobox\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"comboboxRecipe\", behavior: \"combobox\" },\n { name: \"DatePicker\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"datePickerRecipe\", behavior: \"datePicker\", ...evidenceNeeded(\"공통 Calendar grid 계약을 사용하는 Web dialog·Native Sheet renderer와 기본 실행 증거가 연결됐습니다. 실제 날짜 입력 흐름과 보조기기 증거가 더 필요합니다.\") },\n { name: \"TimePicker\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...composed(\"시 Select와 분 Select 조합으로 같은 문제를 완결합니다.\", [\"Select\"]) },\n { name: \"ColorPicker\", category: \"input\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"임의 색 선택이 실제 제품 요구로 확인될 때 색공간·키보드 계약을 엽니다.\") },\n { name: \"FilePicker\", category: \"input\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"filePickerRecipe\", behavior: \"filePicker\", aliases: [\"Upload\"], ...evidenceNeeded(\"Web native input·dropzone과 Native picker adapter가 같은 accept·size·count 판정 계약을 사용합니다. 실제 업로드 흐름과 플랫폼 picker 증거가 더 필요합니다.\") },\n { name: \"Cascader\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...prerequisite(\"TreeSelect에 path value와 중간 단계 commit 축을 먼저 추가해야 흡수할 수 있습니다.\", [\"TreeSelect\"]) },\n { name: \"Form\", category: \"input\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"formRecipe\", behavior: \"form\", ...evidenceNeeded(\"Web·Native form session renderer와 canonical Storybook 증거가 연결됐습니다. 실제 제출·서버 오류 흐름이 더 쌓이면 stable을 검토합니다.\") },\n { name: \"Mentions\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"comboboxRecipe\", behavior: \"combobox\", ...contractReady(\"trigger 탐색·삽입 범위 계약은 준비됐고 메시지 작성 화면을 기다립니다.\") },\n { name: \"Rating\", category: \"input\", platform: \"shared\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"Rate\"], ...composed(\"입력은 Slider, 읽기 전용 표시는 Statistic 조합으로 해결합니다.\", [\"Slider\", \"Statistic\"]) },\n { name: \"TransferList\", category: \"input\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"Transfer\"], recipe: \"transferListRecipe\", behavior: \"transferList\", ...contractReady(\"양쪽 collection·이동·선택 보존 계약은 준비됐고 제품 흐름을 기다립니다.\") },\n { name: \"TreeSelect\", category: \"input\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...contractReady(\"Select·Tree·Checkbox 계약을 합성한 tri-state selection 로직이 준비됐습니다.\") },\n { name: \"UploadItem\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"uploadItemRecipe\", behavior: \"uploadItem\", ...evidenceNeeded(\"Web·Native renderer가 동일한 진행·성공·오류·cancel/retry 계약을 실행합니다. 실제 전송 lifecycle 증거가 더 필요합니다.\") },\n { name: \"Tabs\", category: \"navigation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"tabsRecipe\", behavior: \"tabs\" },\n { name: \"TopBar\", category: \"navigation\", platform: \"native\", status: \"beta\", ...surfaceMaturity(\"unsupported\", \"beta\"), recipe: \"topBarRecipe\" },\n { name: \"BottomNavigation\", category: \"navigation\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"bottomNavigationRecipe\", behavior: \"bottomNavigation\", ...evidenceNeeded(\"Web link landmark와 Native controlled-navigation renderer가 공통 route intent를 소비합니다. 실제 브라우저·기기 릴리스 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Breadcrumb\", category: \"navigation\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"breadcrumbRecipe\", behavior: \"breadcrumb\", ...contractReady(\"현재 위치·축약·링크 의미 계약은 준비됐고 Web 계층 탐색을 기다립니다.\") },\n { name: \"Pagination\", category: \"navigation\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"paginationRecipe\", behavior: \"pagination\", ...contractReady(\"페이지 범위·현재 페이지·키보드 계약은 준비됐고 페이지 탐색 화면을 기다립니다.\") },\n { name: \"LoadMore\", category: \"navigation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"loadMoreRecipe\", behavior: \"loadMore\", ...evidenceNeeded(\"Web observer와 Native FlatList onEndReached adapter가 같은 requestKey gate를 소비합니다. 실제 장시간 목록·보조기기 릴리스 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Steps\", category: \"navigation\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"stepsRecipe\", ...evidenceNeeded(\"단일 cursor에서 상태를 파생하는 Web·Native renderer와 기본 실행 증거가 연결됐습니다. 실제 다단계 흐름과 보조기기 증거가 더 필요합니다.\") },\n { name: \"Menu\", category: \"navigation\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"menuRecipe\", behavior: \"menu\", aliases: [\"Dropdown\"] },\n { name: \"Anchor\", category: \"navigation\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"긴 문서 목차와 scroll spy가 실제 제품에 생기면 Web 계약을 엽니다.\") },\n { name: \"Avatar\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"avatarRecipe\" },\n { name: \"Badge\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"badgeRecipe\" },\n { name: \"CounterBadge\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"counterBadgeRecipe\" },\n { name: \"Card\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"cardRecipe\" },\n { name: \"List\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"listRecipe\" },\n { name: \"ListRow\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"listRowRecipe\" },\n { name: \"VirtualList\", category: \"data-display\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"Listy\"], ...evidenceNeeded(\"가상화는 renderer 최적화라 공개 semantic이 필요한 실측 사례를 기다립니다.\") },\n { name: \"Accordion\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"accordionRecipe\", behavior: \"disclosureGroup\" },\n { name: \"Statistic\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"statisticRecipe\" },\n { name: \"Timeline\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"timelineRecipe\", ...evidenceNeeded(\"두 제품의 이력 UI가 공통 descriptor와 Web/RN dot·connector renderer를 소비합니다. 실제 릴리스·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"DataTable\", category: \"data-display\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"dataTableRecipe\", behavior: \"dataTable\", ...contractReady(\"정렬·선택·grid semantics 계약은 준비됐고 상호작용 표를 기다립니다.\") },\n { name: \"Tree\", category: \"data-display\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"treeRecipe\", behavior: \"tree\", ...contractReady(\"계층 flatten·확장·키보드 계약은 준비됐고 Web tree 화면을 기다립니다.\") },\n { name: \"Calendar\", category: \"data-display\", platform: \"shared\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"calendarRecipe\", behavior: \"calendar\", ...contractReady(\"월 격자·날짜 의미·경계 계약은 준비됐고 실제 달력 화면을 기다립니다.\") },\n { name: \"Carousel\", category: \"data-display\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), recipe: \"carouselRecipe\", behavior: \"carousel\", ...contractReady(\"현재 slide·이전/다음·접근성 action 계약은 준비됐고 제품 renderer 보완을 기다립니다.\") },\n { name: \"DescriptionList\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"descriptionListRecipe\", aliases: [\"Descriptions\"], ...evidenceNeeded(\"Web/RN renderer가 공통 descriptor와 responsive column resolver를 소비하고 기본 실행 증거를 제공합니다. 200% text product·기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Image\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"imageRecipe\", ...evidenceNeeded(\"Web load/error/fallback·framework adapter와 Native fallback·optimized-host adapter가 기본 실행 증거를 제공합니다. 실제 network asset·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"QRCode\", category: \"data-display\", platform: \"shared\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), ...evidenceNeeded(\"스캔 가능한 코드 생성 요구가 실제 제품에서 확인되면 전용 계약을 엽니다.\") },\n { name: \"Tag\", category: \"data-display\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"tagRecipe\" },\n { name: \"Tour\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"tourRecipe\", behavior: \"tour\", aliases: [\"CoachMark\"], ...contractReady(\"단계·초점 복귀·건너뛰기 계약은 준비됐고 onboarding tour를 기다립니다.\") },\n { name: \"EmptyState\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"emptyStateRecipe\" },\n { name: \"Notice\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"noticeRecipe\" },\n { name: \"Progress\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"progressRecipe\" },\n { name: \"Spinner\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"spinnerRecipe\" },\n { name: \"Skeleton\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"skeletonRecipe\" },\n { name: \"Result\", category: \"feedback\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"resultRecipe\", ...evidenceNeeded(\"두 제품의 terminal flow UI가 공통 descriptor와 Web/RN renderer를 소비합니다. 실제 릴리스·보조기기 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Toast\", category: \"feedback\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"toastRecipe\", behavior: \"toast\", aliases: [\"Notification\"] },\n { name: \"Watermark\", category: \"feedback\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"화면 위 반복 표식이 필요한 제품 요구가 확인되면 의미·인쇄·접근성 경계를 엽니다.\") },\n { name: \"Dialog\", category: \"overlay\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"dialogRecipe\", behavior: \"dialog\" },\n { name: \"AlertDialog\", category: \"overlay\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"alertDialogRecipe\", behavior: \"alertDialog\" },\n { name: \"Sheet\", category: \"overlay\", platform: \"adaptive\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), recipe: \"sheetRecipe\", behavior: \"sheet\" },\n { name: \"SidePanel\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"sidePanelRecipe\", behavior: \"sidePanel\", ...contractReady(\"비모달 보조 패널·폭·dismiss 계약은 준비됐고 데스크톱 화면을 기다립니다.\") },\n { name: \"Popover\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"popoverRecipe\", behavior: \"popover\", ...contractReady(\"비모달 contextual surface·초점·dismiss 계약은 준비됐고 제품 적용을 기다립니다.\") },\n { name: \"ConfirmPopover\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), aliases: [\"Popconfirm\"], ...composed(\"Popover 표면과 AlertDialog 확인 session 조합으로 해결합니다.\", [\"Popover\", \"AlertDialog\"]) },\n { name: \"Tooltip\", category: \"overlay\", platform: \"web\", status: \"beta\", ...surfaceMaturity(\"beta\", \"unsupported\"), recipe: \"tooltipRecipe\", behavior: \"tooltip\" },\n { name: \"CommandPalette\", category: \"overlay\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), recipe: \"commandPaletteRecipe\", behavior: \"commandPalette\", ...contractReady(\"검색·action commit·초점 복귀 계약은 준비됐고 power-user 화면을 기다립니다.\") },\n { name: \"Affix\", category: \"utility\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...evidenceNeeded(\"임의 콘텐츠의 scroll threshold 고정 요구가 확인되면 Web 전용 계약을 엽니다.\") },\n { name: \"AppProvider\", category: \"provider\", platform: \"adaptive\", status: \"planned\", ...surfaceMaturity(\"planned\", \"planned\"), aliases: [\"App\"], ...declined(\"message·notification·modal 세 표면이 이미 Toast·Dialog·AlertDialog에 있고, 남는 것은 Context 배선뿐이라 값 계약이 없다\") },\n { name: \"BorderBeam\", category: \"utility\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), ...declined(\"장식으로 브랜드를 증명하지 않는다는 정체성과 충돌하고, reduced motion에서 남는 것이 없으며, 없어도 화면의 뜻이 같다\") },\n { name: \"DesignSystemProvider\", category: \"provider\", platform: \"shared\", status: \"beta\", ...surfaceMaturity(\"beta\", \"beta\"), aliases: [\"ConfigProvider\"], nonVisualEvidence: \"provider-adapter\", ...evidenceNeeded(\"두 실제 제품의 Web/RN Context adapter가 environment+palette와 parent axis 상속을 소비합니다. 추가 제품 릴리스 증거가 쌓이면 stable을 검토합니다.\") },\n { name: \"Utility\", category: \"utility\", platform: \"web\", status: \"planned\", ...surfaceMaturity(\"planned\", \"unsupported\"), aliases: [\"Util\"], ...declined(\"antd Util은 theme.useToken()으로 토큰을 읽는 법을 설명하는 문서 페이지다. 이 패키지는 토큰을 정적 export로 주므로 그 문제가 발생하지 않는다\") },\n { name: \"VisuallyHidden\", category: \"utility\", platform: \"web\", status: \"beta\", ...surfaceMaturity(\"beta\", \"unsupported\"), recipe: \"visuallyHiddenRecipe\", aliases: [\"ScreenReaderOnly\", \"SrOnly\"], ...evidenceNeeded(\"Chakra와 React Aria가 별도 접근성 primitive로 제공하는 문제를 Web에서 채택했습니다. Native는 중복 invisible node 대신 host accessibilityLabel/accessibilityHint를 사용하므로 의도적으로 지원하지 않습니다.\") },\n] as const satisfies readonly ComponentCatalogEntry[];\n\nexport type ComponentName = (typeof componentCatalog)[number][\"name\"];\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 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 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\";\n\n/** One typed registry prevents catalog recipe names from drifting into strings. */\nexport const recipeRegistry = {\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\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 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} as const;\n\nexport type RecipeName = keyof typeof recipeRegistry;\n"]}
|
package/dist/colors.d.ts
CHANGED
|
@@ -37,7 +37,11 @@ export declare const accentTint: {
|
|
|
37
37
|
readonly strong: 0.2;
|
|
38
38
|
readonly border: 0.3;
|
|
39
39
|
};
|
|
40
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* HJM organization surfaces' default signature. Renderers translate the
|
|
42
|
+
* normalized coordinates. Product identity is owned by each product adapter;
|
|
43
|
+
* consumers must not treat this value as every product's automatic brand.
|
|
44
|
+
*/
|
|
41
45
|
export declare const brandGradient: {
|
|
42
46
|
readonly from: "#0369a1";
|
|
43
47
|
readonly to: "#155dfc";
|
package/dist/colors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAwCF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAC3B,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAC3B,CAAC;AAEpB,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEtE,eAAO,MAAM,OAAO,EAAE,QAAQ,CAC5B,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAc5D,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAK3D,CAAC;AAEF,eAAO,MAAM,YAAY,YAAY,CAAC;AAEtC,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAwCF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAC3B,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAC3B,CAAC;AAEpB,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEtE,eAAO,MAAM,OAAO,EAAE,QAAQ,CAC5B,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAc5D,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAK3D,CAAC;AAEF,eAAO,MAAM,YAAY,YAAY,CAAC;AAEtC,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;CAKhB,CAAC;AAEX,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAc5D"}
|
package/dist/colors.js
CHANGED
|
@@ -24,12 +24,12 @@ const dark = {
|
|
|
24
24
|
surface: "#131a36",
|
|
25
25
|
surfaceAlt: "#1e293b",
|
|
26
26
|
surfaceAccent: "#1e3a5f",
|
|
27
|
-
border: "#
|
|
27
|
+
border: "#64748b",
|
|
28
28
|
text: "#f1f5f9",
|
|
29
29
|
textBody: "#e2e8f0",
|
|
30
30
|
textMuted: "#cbd5e1",
|
|
31
31
|
textSub: "#94a3b8",
|
|
32
|
-
textWeak: "#
|
|
32
|
+
textWeak: "#8292a9",
|
|
33
33
|
primary: "#075985",
|
|
34
34
|
contentBrand: "#38bdf8",
|
|
35
35
|
danger: "#f87171",
|
|
@@ -66,7 +66,11 @@ export const accentTint = {
|
|
|
66
66
|
strong: 0.2,
|
|
67
67
|
border: 0.3,
|
|
68
68
|
};
|
|
69
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* HJM organization surfaces' default signature. Renderers translate the
|
|
71
|
+
* normalized coordinates. Product identity is owned by each product adapter;
|
|
72
|
+
* consumers must not treat this value as every product's automatic brand.
|
|
73
|
+
*/
|
|
70
74
|
export const brandGradient = {
|
|
71
75
|
from: "#0369a1",
|
|
72
76
|
to: "#155dfc",
|
package/dist/colors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC;AACrE,CAAC;AAyBD,MAAM,KAAK,GAAG;IACZ,EAAE,EAAE,SAAS;IACb,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;CACW,CAAC;AAEjC,MAAM,IAAI,GAAG;IACX,EAAE,EAAE,SAAS;IACb,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;CACW,CAAC;AAEjC,MAAM,CAAC,MAAM,MAAM,GAEf,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAKpB,MAAM,CAAC,MAAM,OAAO,GAEhB;IACF,KAAK,EAAE;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;KACrB;CACF,CAAC;AAEF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAyC;IAC9D,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;CACH,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC;AACrE,CAAC;AAyBD,MAAM,KAAK,GAAG;IACZ,EAAE,EAAE,SAAS;IACb,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;CACW,CAAC;AAEjC,MAAM,IAAI,GAAG;IACX,EAAE,EAAE,SAAS;IACb,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;CACW,CAAC;AAEjC,MAAM,CAAC,MAAM,MAAM,GAEf,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAKpB,MAAM,CAAC,MAAM,OAAO,GAEhB;IACF,KAAK,EAAE;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;KACrB;CACF,CAAC;AAEF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAyC;IAC9D,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;CACH,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,SAAS;IACf,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACrB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACX,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,qFAAqF;AACrF,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa;IAClD,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CACtD,CAAC;IACF,OAAO,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC;AAC1E,CAAC","sourcesContent":["/** A persisted preference is an application concern; this package only defines valid values. */\nexport type ThemePreference = \"system\" | \"light\" | \"dark\";\nexport type ResolvedTheme = Exclude<ThemePreference, \"system\">;\n\nexport function isThemePreference(value: unknown): value is ThemePreference {\n return value === \"system\" || value === \"light\" || value === \"dark\";\n}\n\n/**\n * Product code chooses colors by meaning, never by a raw palette name.\n * Both themes deliberately expose exactly the same keys.\n */\nexport type ThemeColors = {\n bg: string;\n surface: string;\n surfaceAlt: string;\n surfaceAccent: string;\n border: string;\n text: string;\n textBody: string;\n textMuted: string;\n textSub: string;\n textWeak: string;\n primary: string;\n contentBrand: string;\n danger: string;\n onPrimary: string;\n dangerFill: string;\n onDanger: string;\n};\n\nconst light = {\n bg: \"#ffffff\",\n surface: \"#f2f4f6\",\n surfaceAlt: \"#e5e8eb\",\n surfaceAccent: \"#c9e2ff\",\n border: \"#e5e8eb\",\n text: \"#191f28\",\n textBody: \"#333d4b\",\n textMuted: \"#4e5968\",\n textSub: \"#6b7684\",\n textWeak: \"#8b95a1\",\n primary: \"#0369a1\",\n contentBrand: \"#075985\",\n danger: \"#b71919\",\n onPrimary: \"#ffffff\",\n dangerFill: \"#b91c1c\",\n onDanger: \"#ffffff\",\n} as const satisfies ThemeColors;\n\nconst dark = {\n bg: \"#0b1026\",\n surface: \"#131a36\",\n surfaceAlt: \"#1e293b\",\n surfaceAccent: \"#1e3a5f\",\n border: \"#64748b\",\n text: \"#f1f5f9\",\n textBody: \"#e2e8f0\",\n textMuted: \"#cbd5e1\",\n textSub: \"#94a3b8\",\n textWeak: \"#8292a9\",\n primary: \"#075985\",\n contentBrand: \"#38bdf8\",\n danger: \"#f87171\",\n onPrimary: \"#ffffff\",\n dangerFill: \"#b91c1c\",\n onDanger: \"#ffffff\",\n} as const satisfies ThemeColors;\n\nexport const THEMES: Readonly<\n Record<ResolvedTheme, Readonly<ThemeColors>>\n> = { light, dark };\n\n/** Generic emphasis roles. Product-specific meanings are mapped by each consumer. */\nexport type AccentTone = \"info\" | \"success\" | \"warning\" | \"attention\";\n\nexport const ACCENTS: Readonly<\n Record<ResolvedTheme, Readonly<Record<AccentTone, string>>>\n> = {\n light: {\n info: \"#6d28d9\",\n success: \"#065f46\",\n warning: \"#92400e\",\n attention: \"#9a3412\",\n },\n dark: {\n info: \"#a78bfa\",\n success: \"#34d399\",\n warning: \"#fbbf24\",\n attention: \"#fb923c\",\n },\n};\n\n/** Solid emphasis fills always pair with `onAccentFill`. */\nexport const accentFill: Readonly<Record<AccentTone, string>> = {\n info: \"#6d28d9\",\n success: \"#065f46\",\n warning: \"#92400e\",\n attention: \"#9a3412\",\n};\n\nexport const onAccentFill = \"#ffffff\";\n\nexport const accentTint = {\n weak: 0.1,\n base: 0.15,\n strong: 0.2,\n border: 0.3,\n} as const;\n\n/**\n * HJM organization surfaces' default signature. Renderers translate the\n * normalized coordinates. Product identity is owned by each product adapter;\n * consumers must not treat this value as every product's automatic brand.\n */\nexport const brandGradient = {\n from: \"#0369a1\",\n to: \"#155dfc\",\n start: { x: 0, y: 0 },\n end: { x: 1, y: 1 },\n} as const;\n\nexport const onBrandGradient = \"#ffffff\";\n\n/** Add an alpha channel without coupling callers to a CSS or React Native helper. */\nexport function withAlpha(hex: string, alpha: number): string {\n const match = /^#([0-9a-fA-F]{6})$/.exec(hex);\n if (!match) {\n throw new TypeError(\"A six-digit hex color is required\");\n }\n if (!Number.isFinite(alpha) || alpha < 0 || alpha > 1) {\n throw new RangeError(\"Alpha must be a finite number between 0 and 1\");\n }\n\n const source = match[1]!;\n const channels = [0, 2, 4].map((offset) =>\n Number.parseInt(source.slice(offset, offset + 2), 16),\n );\n return `rgba(${channels[0]}, ${channels[1]}, ${channels[2]}, ${alpha})`;\n}\n"]}
|
|
@@ -12,6 +12,8 @@ export declare const componentIds: {
|
|
|
12
12
|
readonly Divider: "divider";
|
|
13
13
|
readonly Section: "section";
|
|
14
14
|
readonly Stack: "stack";
|
|
15
|
+
readonly Container: "container";
|
|
16
|
+
readonly AspectRatio: "aspect-ratio";
|
|
15
17
|
readonly Grid: "grid";
|
|
16
18
|
readonly Layout: "layout";
|
|
17
19
|
readonly Masonry: "masonry";
|
|
@@ -97,6 +99,7 @@ export declare const componentIds: {
|
|
|
97
99
|
readonly BorderBeam: "border-beam";
|
|
98
100
|
readonly DesignSystemProvider: "design-system-provider";
|
|
99
101
|
readonly Utility: "utility";
|
|
102
|
+
readonly VisuallyHidden: "visually-hidden";
|
|
100
103
|
};
|
|
101
104
|
export type ComponentId = (typeof componentIds)[ComponentName];
|
|
102
105
|
export type ComponentDefinition = Readonly<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-definitions.d.ts","sourceRoot":"","sources":["../src/component-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,IAAI,uBAAuB,EAChD,KAAK,sBAAsB,IAAI,6BAA6B,EAC5D,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAC/E,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAEnE,4DAA4D;AAC5D,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"component-definitions.d.ts","sourceRoot":"","sources":["../src/component-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,IAAI,uBAAuB,EAChD,KAAK,sBAAsB,IAAI,6BAA6B,EAC5D,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAC/E,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAEnE,4DAA4D;AAC5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+FmC,CAAC;AAE7D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,EAAE,EAAE,WAAW,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;QACjB,MAAM,EAAE,eAAe,CAAC;QACxB,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;QAC/B,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;QACnC,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;KAC5C,CAAC,CAAC;IACH,QAAQ,EAAE,QAAQ,CAAC;QACjB,MAAM,EAAE,iBAAiB,CAAC;QAC1B,GAAG,EAAE,QAAQ,CAAC;YAAE,MAAM,EAAE,sBAAsB,CAAA;SAAE,CAAC,CAAC;QAClD,MAAM,EAAE,QAAQ,CAAC;YAAE,MAAM,EAAE,sBAAsB,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC,CAAC;IACH,IAAI,EAAE,QAAQ,CAAC;QACb,2FAA2F;QAC3F,OAAO,EAAE,cAAc,WAAW,EAAE,CAAC;QACrC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;KAC5B,CAAC,CAAC;CACJ,CAAC,CAAC;AAeH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,mBAAmB,EAyB7D,CAAC;AAEH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,WAAW,GAAG,aAAa,GACpC,mBAAmB,GAAG,SAAS,CAIjC"}
|
|
@@ -7,6 +7,8 @@ export const componentIds = {
|
|
|
7
7
|
Divider: "divider",
|
|
8
8
|
Section: "section",
|
|
9
9
|
Stack: "stack",
|
|
10
|
+
Container: "container",
|
|
11
|
+
AspectRatio: "aspect-ratio",
|
|
10
12
|
Grid: "grid",
|
|
11
13
|
Layout: "layout",
|
|
12
14
|
Masonry: "masonry",
|
|
@@ -92,6 +94,7 @@ export const componentIds = {
|
|
|
92
94
|
BorderBeam: "border-beam",
|
|
93
95
|
DesignSystemProvider: "design-system-provider",
|
|
94
96
|
Utility: "utility",
|
|
97
|
+
VisuallyHidden: "visually-hidden",
|
|
95
98
|
};
|
|
96
99
|
const kindByCategory = {
|
|
97
100
|
foundation: "primitive",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-definitions.js","sourceRoot":"","sources":["../src/component-definitions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"component-definitions.js","sourceRoot":"","sources":["../src/component-definitions.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n componentCatalog,\n getComponentSurfaceStatus,\n type ComponentCatalogEntry,\n type ComponentCategory,\n type ComponentName,\n type ComponentPlatform,\n type ComponentStatus,\n type ComponentSurface as CatalogComponentSurface,\n type ComponentSurfaceStatus as CatalogComponentSurfaceStatus,\n type RecipeName,\n} from \"./catalog.js\";\nimport type { BehaviorName } from \"./behaviors.js\";\n\nexport type ComponentKind = \"primitive\" | \"component\" | \"provider\" | \"utility\";\n/** Kept here as aliases for existing `component-definitions` consumers. */\nexport type ComponentSurface = CatalogComponentSurface;\nexport type ComponentSurfaceStatus = CatalogComponentSurfaceStatus;\n\n/** Stable IDs survive display-name and category changes. */\nexport const componentIds = {\n Text: \"text\",\n Icon: \"icon\",\n Surface: \"surface\",\n Divider: \"divider\",\n Section: \"section\",\n Stack: \"stack\",\n Container: \"container\",\n AspectRatio: \"aspect-ratio\",\n Grid: \"grid\",\n Layout: \"layout\",\n Masonry: \"masonry\",\n Splitter: \"splitter\",\n Button: \"button\",\n IconButton: \"icon-button\",\n Link: \"link\",\n BottomCTA: \"bottom-cta\",\n FloatingActionButton: \"floating-action-button\",\n Field: \"field\",\n SearchField: \"search-field\",\n TextArea: \"text-area\",\n PasswordField: \"password-field\",\n OtpField: \"otp-field\",\n Checkbox: \"checkbox\",\n Radio: \"radio\",\n CheckboxGroup: \"checkbox-group\",\n RadioGroup: \"radio-group\",\n Switch: \"switch\",\n Chip: \"chip\",\n SegmentedControl: \"segmented-control\",\n Slider: \"slider\",\n NumberField: \"number-field\",\n Select: \"select\",\n Combobox: \"combobox\",\n DatePicker: \"date-picker\",\n TimePicker: \"time-picker\",\n ColorPicker: \"color-picker\",\n FilePicker: \"file-picker\",\n Cascader: \"cascader\",\n Form: \"form\",\n Mentions: \"mentions\",\n Rating: \"rating\",\n TransferList: \"transfer-list\",\n TreeSelect: \"tree-select\",\n UploadItem: \"upload-item\",\n Tabs: \"tabs\",\n TopBar: \"top-bar\",\n BottomNavigation: \"bottom-navigation\",\n Breadcrumb: \"breadcrumb\",\n Pagination: \"pagination\",\n LoadMore: \"load-more\",\n Steps: \"steps\",\n Menu: \"menu\",\n Anchor: \"anchor\",\n Avatar: \"avatar\",\n Badge: \"badge\",\n CounterBadge: \"counter-badge\",\n Card: \"card\",\n List: \"list\",\n ListRow: \"list-row\",\n VirtualList: \"virtual-list\",\n Accordion: \"accordion\",\n Statistic: \"statistic\",\n Timeline: \"timeline\",\n DataTable: \"data-table\",\n Tree: \"tree\",\n Calendar: \"calendar\",\n Carousel: \"carousel\",\n DescriptionList: \"description-list\",\n Image: \"image\",\n QRCode: \"qr-code\",\n Tag: \"tag\",\n Tour: \"tour\",\n EmptyState: \"empty-state\",\n Notice: \"notice\",\n Progress: \"progress\",\n Spinner: \"spinner\",\n Skeleton: \"skeleton\",\n Result: \"result\",\n Toast: \"toast\",\n Watermark: \"watermark\",\n Dialog: \"dialog\",\n AlertDialog: \"alert-dialog\",\n Sheet: \"sheet\",\n SidePanel: \"side-panel\",\n Popover: \"popover\",\n ConfirmPopover: \"confirm-popover\",\n Tooltip: \"tooltip\",\n CommandPalette: \"command-palette\",\n Affix: \"affix\",\n AppProvider: \"app-provider\",\n BorderBeam: \"border-beam\",\n DesignSystemProvider: \"design-system-provider\",\n Utility: \"utility\",\n VisuallyHidden: \"visually-hidden\",\n} as const satisfies Readonly<Record<ComponentName, string>>;\n\nexport type ComponentId = (typeof componentIds)[ComponentName];\n\nexport type ComponentDefinition = Readonly<{\n id: ComponentId;\n name: ComponentName;\n category: ComponentCategory;\n kind: ComponentKind;\n contract: Readonly<{\n status: ComponentStatus;\n recipes: readonly RecipeName[];\n behaviors: readonly BehaviorName[];\n roadmap?: ComponentCatalogEntry[\"roadmap\"];\n }>;\n surfaces: Readonly<{\n parity: ComponentPlatform;\n web: Readonly<{ status: ComponentSurfaceStatus }>;\n native: Readonly<{ status: ComponentSurfaceStatus }>;\n }>;\n docs: Readonly<{\n /** New stable documentation key. Legacy Showcase IDs remain supported during migration. */\n storyId: `components/${ComponentId}`;\n aliases: readonly string[];\n }>;\n}>;\n\nconst kindByCategory: Readonly<Record<ComponentCategory, ComponentKind>> = {\n foundation: \"primitive\",\n layout: \"primitive\",\n action: \"component\",\n input: \"component\",\n navigation: \"component\",\n \"data-display\": \"component\",\n feedback: \"component\",\n overlay: \"component\",\n provider: \"provider\",\n utility: \"utility\",\n};\n\n/**\n * Backward-compatible normalized view over the v0.2 catalog. New consumers\n * should prefer this shape so a component can evolve to multiple recipes,\n * behaviors, and different Web/Native maturity without another API rewrite.\n */\nexport const componentDefinitions: readonly ComponentDefinition[] = componentCatalog.map((rawEntry) => {\n const entry: ComponentCatalogEntry = rawEntry;\n const name = entry.name as ComponentName;\n const id = componentIds[name];\n return {\n id,\n name,\n category: entry.category,\n kind: kindByCategory[entry.category],\n contract: {\n status: entry.status,\n recipes: entry.recipe ? [entry.recipe] : [],\n behaviors: entry.behavior ? [entry.behavior] : [],\n roadmap: entry.roadmap,\n },\n surfaces: {\n parity: entry.platform,\n web: { status: getComponentSurfaceStatus(entry, \"web\") },\n native: { status: getComponentSurfaceStatus(entry, \"native\") },\n },\n docs: {\n storyId: `components/${id}`,\n aliases: entry.aliases ?? [],\n },\n };\n});\n\nexport function getComponentDefinition(\n idOrName: ComponentId | ComponentName,\n): ComponentDefinition | undefined {\n return componentDefinitions.find(\n (definition) => definition.id === idOrName || definition.name === idOrName,\n );\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type ContainerSize = "reading" | "content" | "full";
|
|
2
|
+
export type ContainerGutter = "none" | "compact" | "regular" | "spacious";
|
|
3
|
+
export type ContainerDescriptor = Readonly<{
|
|
4
|
+
/** Reading measure, general product content, or an intentionally fluid region. */
|
|
5
|
+
size?: ContainerSize;
|
|
6
|
+
/** Logical inline padding; never a physical left/right value. */
|
|
7
|
+
gutter?: ContainerGutter;
|
|
8
|
+
}>;
|
|
9
|
+
export type ResolvedContainerDescriptor = Readonly<{
|
|
10
|
+
size: ContainerSize;
|
|
11
|
+
gutter: ContainerGutter;
|
|
12
|
+
maxWidth: number | null;
|
|
13
|
+
paddingInline: number;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const containerDefaults: {
|
|
16
|
+
readonly size: "content";
|
|
17
|
+
readonly gutter: "regular";
|
|
18
|
+
};
|
|
19
|
+
export declare const containerRecipe: {
|
|
20
|
+
readonly slots: readonly ["root"];
|
|
21
|
+
readonly defaults: {
|
|
22
|
+
readonly size: "content";
|
|
23
|
+
readonly gutter: "regular";
|
|
24
|
+
};
|
|
25
|
+
readonly maxWidths: {
|
|
26
|
+
readonly reading: 720;
|
|
27
|
+
readonly content: 1200;
|
|
28
|
+
readonly full: null;
|
|
29
|
+
};
|
|
30
|
+
readonly gutters: {
|
|
31
|
+
readonly none: 0;
|
|
32
|
+
readonly compact: 16;
|
|
33
|
+
readonly regular: 20;
|
|
34
|
+
readonly spacious: 24;
|
|
35
|
+
};
|
|
36
|
+
readonly alignment: "inline-center";
|
|
37
|
+
};
|
|
38
|
+
export declare function validateContainerDescriptor(descriptor: ContainerDescriptor): void;
|
|
39
|
+
export declare function resolveContainerDescriptor(descriptor?: ContainerDescriptor): ResolvedContainerDescriptor;
|
|
40
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAE1E,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,kFAAkF;IAClF,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,iEAAiE;IACjE,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;CAGoB,CAAC;AAEnD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;CAelB,CAAC;AAKX,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAOjF;AAED,wBAAgB,0BAA0B,CACxC,UAAU,GAAE,mBAAwB,GACnC,2BAA2B,CAU7B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { layout, spacing } from "./foundations.js";
|
|
2
|
+
export const containerDefaults = {
|
|
3
|
+
size: "content",
|
|
4
|
+
gutter: "regular",
|
|
5
|
+
};
|
|
6
|
+
export const containerRecipe = {
|
|
7
|
+
slots: ["root"],
|
|
8
|
+
defaults: containerDefaults,
|
|
9
|
+
maxWidths: {
|
|
10
|
+
reading: layout.readingMaxWidth,
|
|
11
|
+
content: layout.contentMaxWidth,
|
|
12
|
+
full: null,
|
|
13
|
+
},
|
|
14
|
+
gutters: {
|
|
15
|
+
none: 0,
|
|
16
|
+
compact: spacing.md,
|
|
17
|
+
regular: spacing.lg,
|
|
18
|
+
spacious: spacing.xl,
|
|
19
|
+
},
|
|
20
|
+
alignment: "inline-center",
|
|
21
|
+
};
|
|
22
|
+
const sizes = new Set(["reading", "content", "full"]);
|
|
23
|
+
const gutters = new Set(["none", "compact", "regular", "spacious"]);
|
|
24
|
+
export function validateContainerDescriptor(descriptor) {
|
|
25
|
+
if (descriptor.size !== undefined && !sizes.has(descriptor.size)) {
|
|
26
|
+
throw new TypeError(`Unsupported Container size: ${String(descriptor.size)}`);
|
|
27
|
+
}
|
|
28
|
+
if (descriptor.gutter !== undefined && !gutters.has(descriptor.gutter)) {
|
|
29
|
+
throw new TypeError(`Unsupported Container gutter: ${String(descriptor.gutter)}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function resolveContainerDescriptor(descriptor = {}) {
|
|
33
|
+
validateContainerDescriptor(descriptor);
|
|
34
|
+
const size = descriptor.size ?? containerDefaults.size;
|
|
35
|
+
const gutter = descriptor.gutter ?? containerDefaults.gutter;
|
|
36
|
+
return {
|
|
37
|
+
size,
|
|
38
|
+
gutter,
|
|
39
|
+
maxWidth: containerRecipe.maxWidths[size],
|
|
40
|
+
paddingInline: containerRecipe.gutters[gutter],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAmBnD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;CAC+B,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC,MAAM,CAAU;IACxB,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC,eAAe;QAC/B,OAAO,EAAE,MAAM,CAAC,eAAe;QAC/B,IAAI,EAAE,IAAI;KACX;IACD,OAAO,EAAE;QACP,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,QAAQ,EAAE,OAAO,CAAC,EAAE;KACrB;IACD,SAAS,EAAE,eAAe;CAClB,CAAC;AAEX,MAAM,KAAK,GAAG,IAAI,GAAG,CAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAErF,MAAM,UAAU,2BAA2B,CAAC,UAA+B;IACzE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CAAC,+BAA+B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,SAAS,CAAC,iCAAiC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,aAAkC,EAAE;IAEpC,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC;IAC7D,OAAO;QACL,IAAI;QACJ,MAAM;QACN,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;QACzC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;KAC/C,CAAC;AACJ,CAAC","sourcesContent":["import { layout, spacing } from \"./foundations.js\";\n\nexport type ContainerSize = \"reading\" | \"content\" | \"full\";\nexport type ContainerGutter = \"none\" | \"compact\" | \"regular\" | \"spacious\";\n\nexport type ContainerDescriptor = Readonly<{\n /** Reading measure, general product content, or an intentionally fluid region. */\n size?: ContainerSize;\n /** Logical inline padding; never a physical left/right value. */\n gutter?: ContainerGutter;\n}>;\n\nexport type ResolvedContainerDescriptor = Readonly<{\n size: ContainerSize;\n gutter: ContainerGutter;\n maxWidth: number | null;\n paddingInline: number;\n}>;\n\nexport const containerDefaults = {\n size: \"content\",\n gutter: \"regular\",\n} as const satisfies Required<ContainerDescriptor>;\n\nexport const containerRecipe = {\n slots: [\"root\"] as const,\n defaults: containerDefaults,\n maxWidths: {\n reading: layout.readingMaxWidth,\n content: layout.contentMaxWidth,\n full: null,\n },\n gutters: {\n none: 0,\n compact: spacing.md,\n regular: spacing.lg,\n spacious: spacing.xl,\n },\n alignment: \"inline-center\",\n} as const;\n\nconst sizes = new Set<ContainerSize>([\"reading\", \"content\", \"full\"]);\nconst gutters = new Set<ContainerGutter>([\"none\", \"compact\", \"regular\", \"spacious\"]);\n\nexport function validateContainerDescriptor(descriptor: ContainerDescriptor): void {\n if (descriptor.size !== undefined && !sizes.has(descriptor.size)) {\n throw new TypeError(`Unsupported Container size: ${String(descriptor.size)}`);\n }\n if (descriptor.gutter !== undefined && !gutters.has(descriptor.gutter)) {\n throw new TypeError(`Unsupported Container gutter: ${String(descriptor.gutter)}`);\n }\n}\n\nexport function resolveContainerDescriptor(\n descriptor: ContainerDescriptor = {},\n): ResolvedContainerDescriptor {\n validateContainerDescriptor(descriptor);\n const size = descriptor.size ?? containerDefaults.size;\n const gutter = descriptor.gutter ?? containerDefaults.gutter;\n return {\n size,\n gutter,\n maxWidth: containerRecipe.maxWidths[size],\n paddingInline: containerRecipe.gutters[gutter],\n };\n}\n"]}
|
|
@@ -13,7 +13,7 @@ export const iconButtonRecipe = {
|
|
|
13
13
|
secondary: {
|
|
14
14
|
background: semanticColors.action.neutral.background,
|
|
15
15
|
content: semanticColors.action.neutral.content,
|
|
16
|
-
border: semanticColors.border
|
|
16
|
+
border: semanticColors.action.neutral.border,
|
|
17
17
|
},
|
|
18
18
|
ghost: {
|
|
19
19
|
background: null,
|