@hjmds/design-contracts 1.12.1 → 1.13.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.
Files changed (288) hide show
  1. package/dist/avatar-fallback.d.ts +11 -0
  2. package/dist/avatar-fallback.d.ts.map +1 -1
  3. package/dist/avatar-fallback.js +21 -0
  4. package/dist/avatar-fallback.js.map +1 -1
  5. package/dist/base-recipes.d.ts +17 -0
  6. package/dist/base-recipes.d.ts.map +1 -1
  7. package/dist/base-recipes.js +17 -0
  8. package/dist/base-recipes.js.map +1 -1
  9. package/dist/catalog.d.ts +25 -0
  10. package/dist/catalog.d.ts.map +1 -1
  11. package/dist/command-palette.d.ts +14 -9
  12. package/dist/command-palette.d.ts.map +1 -1
  13. package/dist/command-palette.js +8 -9
  14. package/dist/command-palette.js.map +1 -1
  15. package/dist/component-recipes.d.ts +17 -0
  16. package/dist/component-recipes.d.ts.map +1 -1
  17. package/dist/component-recipes.js +5 -0
  18. package/dist/component-recipes.js.map +1 -1
  19. package/dist/provider-button.d.ts.map +1 -1
  20. package/dist/provider-button.js +3 -0
  21. package/dist/provider-button.js.map +1 -1
  22. package/dist/reactions.d.ts +10 -0
  23. package/dist/reactions.d.ts.map +1 -1
  24. package/dist/reactions.js +7 -0
  25. package/dist/reactions.js.map +1 -1
  26. package/dist/screen-patterns.d.ts +147 -0
  27. package/dist/screen-patterns.d.ts.map +1 -0
  28. package/dist/screen-patterns.js +149 -0
  29. package/dist/screen-patterns.js.map +1 -0
  30. package/dist/slider.d.ts +8 -0
  31. package/dist/slider.d.ts.map +1 -1
  32. package/dist/slider.js +6 -1
  33. package/dist/slider.js.map +1 -1
  34. package/dist/upload-item.d.ts +5 -0
  35. package/dist/upload-item.d.ts.map +1 -1
  36. package/dist/upload-item.js +5 -0
  37. package/dist/upload-item.js.map +1 -1
  38. package/dist/version.d.ts +1 -1
  39. package/dist/version.js +1 -1
  40. package/dist/version.js.map +1 -1
  41. package/docs/action-session.md +3 -3
  42. package/docs/agreement.md +5 -0
  43. package/docs/avatar-fallback.md +7 -0
  44. package/docs/bottom-navigation.md +6 -0
  45. package/docs/brand-boundary.md +1 -1
  46. package/docs/button-label.md +6 -0
  47. package/docs/clipboard.md +3 -0
  48. package/docs/command-palette.md +45 -2
  49. package/docs/consumer-policy.md +5 -1
  50. package/docs/data-table.md +6 -4
  51. package/docs/dialog.md +8 -2
  52. package/docs/form.md +51 -0
  53. package/docs/generated/component-maturity.md +1 -1
  54. package/docs/generated/renderer-evidence.json +3 -3
  55. package/docs/generated/renderer-evidence.md +1 -1
  56. package/docs/generated/showcase-manifest.json +1 -1
  57. package/docs/link.md +8 -0
  58. package/docs/migration-native-legacy-removal.md +45 -1
  59. package/docs/optional-adapters.md +1 -1
  60. package/docs/password-field.md +5 -0
  61. package/docs/product-composition-adoption.md +40 -0
  62. package/docs/progress.md +19 -1
  63. package/docs/provider-button.md +13 -0
  64. package/docs/result.md +3 -0
  65. package/docs/screen-chrome.md +10 -0
  66. package/docs/screen-patterns.md +376 -0
  67. package/docs/sheet.md +12 -0
  68. package/docs/splitter.md +8 -2
  69. package/docs/theming.md +36 -29
  70. package/docs/toggle-group.md +7 -0
  71. package/docs/tour.md +7 -1
  72. package/docs/tree.md +5 -2
  73. package/docs/upload-item.md +7 -0
  74. package/docs/usage/README.md +236 -0
  75. package/docs/usage/STANDARD.md +108 -0
  76. package/docs/usage/components/accordion.md +107 -0
  77. package/docs/usage/components/activity-heatmap.md +104 -0
  78. package/docs/usage/components/affix.md +86 -0
  79. package/docs/usage/components/agreement.md +129 -0
  80. package/docs/usage/components/alert-dialog.md +130 -0
  81. package/docs/usage/components/anchor.md +96 -0
  82. package/docs/usage/components/aspect-ratio.md +89 -0
  83. package/docs/usage/components/asset.md +126 -0
  84. package/docs/usage/components/auth-provider-button.md +116 -0
  85. package/docs/usage/components/auth-screen-layout.md +129 -0
  86. package/docs/usage/components/avatar.md +114 -0
  87. package/docs/usage/components/badge.md +84 -0
  88. package/docs/usage/components/bottom-cta.md +125 -0
  89. package/docs/usage/components/bottom-info.md +99 -0
  90. package/docs/usage/components/bottom-navigation.md +136 -0
  91. package/docs/usage/components/breadcrumb.md +81 -0
  92. package/docs/usage/components/button.md +118 -0
  93. package/docs/usage/components/calendar.md +122 -0
  94. package/docs/usage/components/card.md +110 -0
  95. package/docs/usage/components/carousel.md +113 -0
  96. package/docs/usage/components/celebration.md +96 -0
  97. package/docs/usage/components/chat-message.md +122 -0
  98. package/docs/usage/components/chat-screen.md +112 -0
  99. package/docs/usage/components/checkbox-group.md +104 -0
  100. package/docs/usage/components/checkbox.md +103 -0
  101. package/docs/usage/components/chip.md +104 -0
  102. package/docs/usage/components/code-block.md +111 -0
  103. package/docs/usage/components/collapsible.md +112 -0
  104. package/docs/usage/components/color-picker.md +86 -0
  105. package/docs/usage/components/combobox.md +137 -0
  106. package/docs/usage/components/command-palette.md +125 -0
  107. package/docs/usage/components/comment-thread-screen.md +125 -0
  108. package/docs/usage/components/container.md +98 -0
  109. package/docs/usage/components/content-transition.md +101 -0
  110. package/docs/usage/components/context-menu.md +136 -0
  111. package/docs/usage/components/counter-badge.md +107 -0
  112. package/docs/usage/components/data-table.md +122 -0
  113. package/docs/usage/components/date-picker.md +142 -0
  114. package/docs/usage/components/date-range-picker.md +111 -0
  115. package/docs/usage/components/description-list.md +103 -0
  116. package/docs/usage/components/design-system-provider.md +124 -0
  117. package/docs/usage/components/dialog.md +176 -0
  118. package/docs/usage/components/divider.md +89 -0
  119. package/docs/usage/components/editor-screen.md +126 -0
  120. package/docs/usage/components/effect-surface.md +120 -0
  121. package/docs/usage/components/empty-state.md +114 -0
  122. package/docs/usage/components/field.md +129 -0
  123. package/docs/usage/components/file-picker.md +114 -0
  124. package/docs/usage/components/floating-action-button.md +138 -0
  125. package/docs/usage/components/form.md +162 -0
  126. package/docs/usage/components/grid.md +99 -0
  127. package/docs/usage/components/heading.md +87 -0
  128. package/docs/usage/components/icon-button.md +126 -0
  129. package/docs/usage/components/icon.md +105 -0
  130. package/docs/usage/components/image.md +122 -0
  131. package/docs/usage/components/keyboard-avoiding.md +93 -0
  132. package/docs/usage/components/keyboard-dock.md +110 -0
  133. package/docs/usage/components/keyboard-form-scroll-view.md +95 -0
  134. package/docs/usage/components/keyboard-motion-provider.md +86 -0
  135. package/docs/usage/components/layout.md +117 -0
  136. package/docs/usage/components/link.md +121 -0
  137. package/docs/usage/components/list-detail-screen.md +103 -0
  138. package/docs/usage/components/list-row.md +124 -0
  139. package/docs/usage/components/list.md +119 -0
  140. package/docs/usage/components/load-more.md +115 -0
  141. package/docs/usage/components/masonry.md +109 -0
  142. package/docs/usage/components/media-selection-screen.md +119 -0
  143. package/docs/usage/components/mentions.md +119 -0
  144. package/docs/usage/components/menu.md +129 -0
  145. package/docs/usage/components/menubar.md +93 -0
  146. package/docs/usage/components/message-composer.md +124 -0
  147. package/docs/usage/components/moderation-screen.md +113 -0
  148. package/docs/usage/components/notice.md +106 -0
  149. package/docs/usage/components/notification-inbox-screen.md +97 -0
  150. package/docs/usage/components/notification-item.md +98 -0
  151. package/docs/usage/components/number-field.md +131 -0
  152. package/docs/usage/components/onboarding-screen.md +106 -0
  153. package/docs/usage/components/otp-field.md +101 -0
  154. package/docs/usage/components/pagination.md +82 -0
  155. package/docs/usage/components/password-field.md +137 -0
  156. package/docs/usage/components/permission-screen.md +107 -0
  157. package/docs/usage/components/photo-source-sheet.md +119 -0
  158. package/docs/usage/components/popover.md +108 -0
  159. package/docs/usage/components/profile-screen.md +89 -0
  160. package/docs/usage/components/progress.md +122 -0
  161. package/docs/usage/components/qr-code.md +122 -0
  162. package/docs/usage/components/radio-group.md +124 -0
  163. package/docs/usage/components/radio.md +104 -0
  164. package/docs/usage/components/result.md +116 -0
  165. package/docs/usage/components/saved-items-screen.md +126 -0
  166. package/docs/usage/components/screen-layout.md +119 -0
  167. package/docs/usage/components/search-field.md +120 -0
  168. package/docs/usage/components/search-screen.md +215 -0
  169. package/docs/usage/components/section.md +111 -0
  170. package/docs/usage/components/segmented-control.md +138 -0
  171. package/docs/usage/components/select.md +142 -0
  172. package/docs/usage/components/settings-screen.md +126 -0
  173. package/docs/usage/components/shared-transition-element.md +111 -0
  174. package/docs/usage/components/shared-transition-screen.md +86 -0
  175. package/docs/usage/components/sheet.md +151 -0
  176. package/docs/usage/components/side-panel.md +104 -0
  177. package/docs/usage/components/sidebar.md +107 -0
  178. package/docs/usage/components/skeleton.md +105 -0
  179. package/docs/usage/components/skip-nav.md +76 -0
  180. package/docs/usage/components/slider.md +121 -0
  181. package/docs/usage/components/sortable-collection.md +127 -0
  182. package/docs/usage/components/spinner.md +86 -0
  183. package/docs/usage/components/splitter.md +103 -0
  184. package/docs/usage/components/stack.md +93 -0
  185. package/docs/usage/components/statistic.md +123 -0
  186. package/docs/usage/components/steps.md +110 -0
  187. package/docs/usage/components/surface.md +91 -0
  188. package/docs/usage/components/swipe-actions.md +124 -0
  189. package/docs/usage/components/switch.md +120 -0
  190. package/docs/usage/components/tabs.md +134 -0
  191. package/docs/usage/components/tag.md +84 -0
  192. package/docs/usage/components/tags-input.md +111 -0
  193. package/docs/usage/components/text-area.md +112 -0
  194. package/docs/usage/components/text-format.md +75 -0
  195. package/docs/usage/components/text-transition.md +104 -0
  196. package/docs/usage/components/text.md +101 -0
  197. package/docs/usage/components/thinking-orb.md +105 -0
  198. package/docs/usage/components/timeline.md +105 -0
  199. package/docs/usage/components/toast.md +145 -0
  200. package/docs/usage/components/toggle-group.md +95 -0
  201. package/docs/usage/components/tooltip.md +103 -0
  202. package/docs/usage/components/top-bar.md +124 -0
  203. package/docs/usage/components/top.md +89 -0
  204. package/docs/usage/components/tour.md +118 -0
  205. package/docs/usage/components/transfer-list.md +115 -0
  206. package/docs/usage/components/tree.md +91 -0
  207. package/docs/usage/components/upload-item.md +99 -0
  208. package/docs/usage/components/virtual-list.md +105 -0
  209. package/docs/usage/components/visually-hidden.md +72 -0
  210. package/docs/usage/components/watermark.md +78 -0
  211. package/docs/usage/compositions/action-recovery-optimistic.md +180 -0
  212. package/docs/usage/compositions/action-recovery-save.md +235 -0
  213. package/docs/usage/compositions/action-recovery-undo.md +193 -0
  214. package/docs/usage/compositions/common-message.md +132 -0
  215. package/docs/usage/compositions/common-notification.md +101 -0
  216. package/docs/usage/compositions/compound-controls.md +186 -0
  217. package/docs/usage/compositions/data-layouts.md +157 -0
  218. package/docs/usage/compositions/disclosure.md +144 -0
  219. package/docs/usage/compositions/environment-matrix.md +139 -0
  220. package/docs/usage/compositions/expo-interactions.md +149 -0
  221. package/docs/usage/compositions/family-drawer.md +201 -0
  222. package/docs/usage/compositions/floating-action-button.md +197 -0
  223. package/docs/usage/compositions/input-sheet.md +148 -0
  224. package/docs/usage/compositions/interaction-adapters.md +190 -0
  225. package/docs/usage/compositions/interaction-flow-apply.md +205 -0
  226. package/docs/usage/compositions/interaction-flow-draft.md +188 -0
  227. package/docs/usage/compositions/interaction-flow-search.md +171 -0
  228. package/docs/usage/compositions/native-renderers.md +106 -0
  229. package/docs/usage/compositions/navigation-bar-collection.md +164 -0
  230. package/docs/usage/compositions/optional-adapters.md +169 -0
  231. package/docs/usage/compositions/optional-motion.md +109 -0
  232. package/docs/usage/compositions/photo-source.md +104 -0
  233. package/docs/usage/compositions/purpose-input-comment.md +110 -0
  234. package/docs/usage/compositions/purpose-input-message.md +119 -0
  235. package/docs/usage/compositions/reference-first.md +96 -0
  236. package/docs/usage/compositions/reference-review.md +107 -0
  237. package/docs/usage/compositions/reference-settings.md +107 -0
  238. package/docs/usage/compositions/selection-scope.md +174 -0
  239. package/docs/usage/compositions/stea-event-ticket.md +166 -0
  240. package/docs/usage/compositions/stea-flip-card.md +162 -0
  241. package/docs/usage/compositions/stea-order-progress.md +184 -0
  242. package/docs/usage/compositions/stea-otp-verify.md +215 -0
  243. package/docs/usage/compositions/stea-pixel-empty.md +140 -0
  244. package/docs/usage/compositions/stea-schedule-card.md +169 -0
  245. package/docs/usage/compositions/stea-stat-summary.md +154 -0
  246. package/docs/usage/compositions/time-selection.md +174 -0
  247. package/docs/usage/compositions/toast-layout.md +128 -0
  248. package/docs/usage/compositions/visual-foundations.md +185 -0
  249. package/docs/usage/compositions/web-additions.md +146 -0
  250. package/docs/usage/compositions/web-navigation.md +143 -0
  251. package/docs/usage/screens/common-chat.md +127 -0
  252. package/docs/usage/screens/common-comments.md +108 -0
  253. package/docs/usage/screens/common-inbox.md +110 -0
  254. package/docs/usage/screens/common-login.md +98 -0
  255. package/docs/usage/screens/common-profile.md +221 -0
  256. package/docs/usage/screens/common-saved.md +127 -0
  257. package/docs/usage/screens/common-search.md +274 -0
  258. package/docs/usage/screens/common-settings.md +126 -0
  259. package/docs/usage/screens/common-shell.md +108 -0
  260. package/docs/usage/screens/dashboard.md +245 -0
  261. package/docs/usage/screens/discovery-gallery.md +306 -0
  262. package/docs/usage/screens/flow-collection.md +96 -0
  263. package/docs/usage/screens/flow-editor.md +120 -0
  264. package/docs/usage/screens/flow-media.md +111 -0
  265. package/docs/usage/screens/flow-moderation.md +120 -0
  266. package/docs/usage/screens/flow-onboarding.md +193 -0
  267. package/docs/usage/screens/flow-permission.md +103 -0
  268. package/docs/usage/screens/landing.md +347 -0
  269. package/docs/usage/screens/mockup-studio.md +190 -0
  270. package/docs/usage/screens/notification-settings.md +206 -0
  271. package/docs/usage/screens/reference-comparison.md +159 -0
  272. package/docs/usage/templates/component.md +61 -0
  273. package/docs/usage/templates/composition.md +47 -0
  274. package/docs/usage/templates/screen.md +56 -0
  275. package/docs/usage/templates/token.md +32 -0
  276. package/docs/usage/tokens/color.md +142 -0
  277. package/docs/usage/tokens/elevation-opacity.md +86 -0
  278. package/docs/usage/tokens/layers.md +98 -0
  279. package/docs/usage/tokens/layout.md +114 -0
  280. package/docs/usage/tokens/motion.md +88 -0
  281. package/docs/usage/tokens/radius.md +53 -0
  282. package/docs/usage/tokens/size.md +74 -0
  283. package/docs/usage/tokens/spacing.md +73 -0
  284. package/docs/usage/tokens/stroke.md +50 -0
  285. package/docs/usage/tokens/theme-studio.md +70 -0
  286. package/docs/usage/tokens/typography-studio.md +70 -0
  287. package/docs/usage/tokens/typography.md +89 -0
  288. package/package.json +7 -1
@@ -1 +1 @@
1
- {"version":3,"file":"component-recipes.js","sourceRoot":"","sources":["../src/component-recipes.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColorReference } from \"./color-references.js\";\nimport {\n collectionItemContract,\n fieldFrameContract,\n floatingSurfaceContract,\n focusIndicatorContract,\n formSupportContract,\n} from \"./component-contracts.js\";\nimport {\n backdrop,\n breakpoint,\n control,\n glyph,\n layer,\n largeTextThreshold,\n layout,\n fontWeight,\n motion,\n motionPreset,\n opacity,\n radius,\n spacing,\n stroke,\n type FontWeightValue,\n type GlyphSize,\n type TextVariant,\n} from \"./foundations.js\";\nimport { semanticColors } from \"./semantic-colors.js\";\nimport { tooltipDescriptorDefaults } from \"./tooltip.js\";\nimport { bottomNavigationRecipeDefaults } from \"./bottom-navigation-defaults.js\";\n\nexport {\n iconButtonRecipe,\n resolveIconButtonPresentation,\n type IconButtonShape,\n type IconButtonSize,\n type IconButtonTone,\n type ResolvedIconButtonPresentation,\n} from \"./icon-button-recipe.js\";\nexport {\n counterBadgeDefaults,\n counterBadgeRecipe,\n formatCounterBadgeCount,\n type CounterBadgeSize,\n type CounterBadgeTone,\n type CounterBadgeVariant,\n} from \"./counter-badge-recipe.js\";\nexport {\n progressRecipe,\n type ProgressShape,\n type ProgressSize,\n type ProgressTone,\n} from \"./progress-recipe.js\";\nexport type {\n BottomNavigationDensity,\n BottomNavigationDistribution,\n BottomNavigationPresentation,\n} from \"./bottom-navigation-defaults.js\";\n\nexport type TextTone =\n | \"primary\"\n | \"body\"\n | \"muted\"\n | \"subtle\"\n | \"weak\"\n | \"brand\"\n | \"danger\"\n | \"inverse\";\nexport type TextEmphasis = \"regular\" | \"medium\" | \"strong\";\n\nexport const textRecipe = {\n slots: [\"root\"] as const,\n defaults: { variant: \"body\", tone: \"primary\", emphasis: \"regular\" },\n tones: {\n primary: semanticColors.content.primary,\n body: semanticColors.content.body,\n muted: semanticColors.content.secondary,\n subtle: semanticColors.content.tertiary,\n weak: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n emphasis: {\n regular: fontWeight.regular,\n medium: fontWeight.semibold,\n strong: fontWeight.bold,\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n variant: TextVariant;\n tone: TextTone;\n emphasis: TextEmphasis;\n };\n tones: Record<TextTone, ColorReference>;\n emphasis: Record<TextEmphasis, FontWeightValue>;\n};\n\nexport type IconTone =\n | \"primary\"\n | \"secondary\"\n | \"decorative\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"inverse\";\nexport type IconWeight = \"regular\" | \"strong\";\n\nexport const iconRecipe = {\n slots: [\"root\"] as const,\n defaults: {\n size: \"md\",\n tone: \"secondary\",\n weight: \"regular\",\n decorative: true,\n },\n sizes: glyph,\n tones: {\n primary: semanticColors.content.primary,\n secondary: semanticColors.content.secondary,\n decorative: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n info: semanticColors.feedback.info.foreground,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n weights: { regular: 2, strong: 2.5 },\n stroke: {\n lineCap: \"round\",\n lineJoin: \"round\",\n scaling: \"proportional\",\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n size: GlyphSize;\n tone: IconTone;\n weight: IconWeight;\n decorative: boolean;\n };\n sizes: Record<GlyphSize, number>;\n tones: Record<IconTone, ColorReference>;\n weights: Record<IconWeight, number>;\n stroke: {\n lineCap: \"round\";\n lineJoin: \"round\";\n scaling: \"proportional\";\n };\n};\n\nexport type StackAxis = \"block\" | \"inline\";\nexport type StackGap = keyof typeof spacing;\nexport type StackAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\nexport type StackJustify = \"start\" | \"center\" | \"end\" | \"between\";\n\nexport const stackRecipe = {\n slots: [\"root\"] as const,\n defaults: { axis: \"block\", gap: \"md\", align: \"stretch\", justify: \"start\", wrap: false },\n axes: { block: \"column\", inline: \"row\" },\n gaps: spacing,\n align: [\"start\", \"center\", \"end\", \"stretch\"] as const,\n justify: [\"start\", \"center\", \"end\", \"between\"] as const,\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n axis: StackAxis;\n gap: StackGap;\n align: StackAlign;\n justify: StackJustify;\n wrap: boolean;\n };\n axes: Record<StackAxis, \"column\" | \"row\">;\n gaps: Record<StackGap, number>;\n align: readonly StackAlign[];\n justify: readonly StackJustify[];\n};\n\nexport type LinkTone = \"brand\" | \"neutral\";\nexport type LinkVariant = \"inline\" | \"standalone\";\n\nexport const linkRecipe = {\n slots: [\"root\", \"leading\", \"label\", \"trailing\"] as const,\n defaults: { tone: \"brand\", variant: \"inline\" },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.body,\n },\n variants: {\n inline: {\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n underline: \"always\",\n minHeight: null,\n minWidth: null,\n },\n /** 그 자체가 동작이므로 두 축 모두 최소 터치 타깃. 높이만 잡으면 짧은 라벨이 좁아진다. */\n standalone: {\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n underline: \"hover\",\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n },\n },\n gap: spacing.xxs,\n icon: { glyph: \"xs\", inheritsTone: true },\n states: {\n pressedOpacity: opacity.pressed,\n focus: focusIndicatorContract,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"label\", \"trailing\"];\n defaults: { tone: LinkTone; variant: LinkVariant };\n tones: Record<LinkTone, ColorReference>;\n variants: Record<\n LinkVariant,\n {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n underline: \"always\" | \"hover\";\n minHeight: number | null;\n minWidth: number | null;\n }\n >;\n gap: number;\n icon: { glyph: GlyphSize; inheritsTone: true };\n states: {\n pressedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n};\n\nexport const selectionGroupRecipe = {\n slots: [\"root\", \"label\", \"requiredIndicator\", \"description\", \"items\", \"error\"] as const,\n defaults: { orientation: \"vertical\", presentation: \"card\" },\n orientations: {\n vertical: {\n direction: \"column\",\n // `grouped` rows sit flush inside one shared card, so the group owns\n // the only outer radius and the rows share edges instead of floating\n // apart with their own gap — the same shape as `selectionControlRecipe`'s\n // `grouped` presentation, which this gap pairs with.\n gap: { plain: spacing.xxs, card: spacing.xs, grouped: 0 },\n },\n horizontal: {\n direction: \"row\",\n gap: { plain: spacing.sm, card: spacing.md, grouped: 0 },\n },\n },\n label: formSupportContract.label,\n requiredIndicator: { color: semanticColors.content.danger },\n description: formSupportContract.hint,\n error: formSupportContract.error,\n supportGap: formSupportContract.gap,\n states: { disabledOpacity: opacity.disabled },\n} as const;\n\nexport type SelectionGroupOrientation = keyof typeof selectionGroupRecipe.orientations;\nexport type SelectionGroupPresentation = keyof typeof selectionGroupRecipe.orientations.vertical.gap;\n\nexport type BadgeTone =\n | \"neutral\"\n /**\n * One step stronger than `neutral`: solid ink plate instead of a muted\n * label + sunken plate. A product author needed this for a result screen\n * where win/loss is the fact itself, not a side note, and `neutral` plus\n * its `outline` variant read as nearly the same grey — the one place the\n * distinction had to be unmistakable at a glance. Use it where a badge must\n * outrank `neutral` without borrowing an accent or the brand tint (both of\n * which already carry other meanings — see the `brand` tone below).\n */\n | \"strong\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"attention\"\n | \"danger\";\nexport type BadgeSize = \"small\" | \"medium\";\nexport type BadgeVariant = \"filled\" | \"outline\";\n\nexport const badgeRecipe = {\n slots: [\"root\", \"icon\", \"label\"] as const,\n defaults: { tone: \"neutral\", size: \"medium\", variant: \"filled\" },\n variants: {\n filled: {\n usesToneBackground: true,\n borderFallback: null,\n },\n outline: {\n usesToneBackground: false,\n borderFallback: semanticColors.border.default,\n },\n },\n tones: {\n neutral: {\n content: semanticColors.content.secondary,\n outlineContent: semanticColors.content.secondary,\n background: semanticColors.canvas,\n border: null,\n },\n strong: {\n content: semanticColors.content.inverse,\n outlineContent: semanticColors.content.primary,\n background: semanticColors.content.primary,\n border: null,\n },\n brand: {\n content: semanticColors.content.brand,\n outlineContent: semanticColors.content.brand,\n // The brand tint now means \"selected\" everywhere (see\n // `selectionControlRecipe`/`segmentedControlRecipe`), so a badge that\n // only labels something — a season, a grade, a question number —\n // cannot wear it: rows of static badges started reading as a filter\n // with one option switched on. The plate goes neutral and the brand\n // stays in the copy.\n background: semanticColors.canvas,\n border: null,\n },\n info: {\n content: semanticColors.feedback.info.foreground,\n outlineContent: semanticColors.feedback.info.foreground,\n background: semanticColors.canvas,\n border: semanticColors.feedback.info.border,\n },\n success: {\n content: semanticColors.feedback.success.foreground,\n outlineContent: semanticColors.feedback.success.foreground,\n background: semanticColors.feedback.success.badgeBackground,\n border: semanticColors.feedback.success.border,\n },\n warning: {\n content: semanticColors.feedback.warning.foreground,\n outlineContent: semanticColors.feedback.warning.foreground,\n background: semanticColors.feedback.warning.badgeBackground,\n border: semanticColors.feedback.warning.border,\n },\n attention: {\n content: semanticColors.feedback.attention.foreground,\n outlineContent: semanticColors.feedback.attention.foreground,\n background: semanticColors.feedback.attention.badgeBackground,\n border: semanticColors.feedback.attention.border,\n },\n danger: {\n content: semanticColors.feedback.danger.foreground,\n outlineContent: semanticColors.feedback.danger.foreground,\n background: semanticColors.feedback.danger.badgeBackground,\n border: semanticColors.feedback.danger.border,\n },\n },\n sizes: {\n small: {\n minHeight: 20,\n paddingHorizontal: spacing.xxs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n medium: {\n minHeight: 24,\n paddingHorizontal: spacing.xs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n },\n radius: \"full\",\n borderWidth: stroke.default,\n fontWeight: fontWeight.bold,\n} as const;\n\nexport type SearchFieldSize = \"medium\" | \"large\";\n\n/** Search is a field specialization with stable affordance and clear targets. */\nexport const searchFieldRecipe = {\n slots: [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"] as const,\n defaults: { size: \"medium\", shape: \"medium\" },\n sizes: {\n medium: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n gap: spacing.xs,\n glyph: \"sm\",\n clearDiameter: 36,\n clearHitSlop: 4,\n textVariant: \"body\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.md,\n gap: spacing.sm,\n glyph: \"sm\",\n clearDiameter: control.minTouchTarget,\n clearHitSlop: 0,\n textVariant: \"bodyLarge\",\n },\n },\n colors: {\n background: semanticColors.canvas,\n content: semanticColors.content.primary,\n placeholder: semanticColors.content.secondary,\n leading: semanticColors.content.decorative,\n clear: semanticColors.content.secondary,\n border: semanticColors.border.control,\n focus: focusIndicatorContract.color,\n invalid: semanticColors.border.danger,\n },\n /**\n * 모양은 **축이다** — 값 하나로 못 박지 않는다.\n *\n * 원래 여기는 `radius: \"full\"` 하나였다. 그런데 `fieldRecipe`는 같은 결정을\n * `shapes: { medium, large, full }` 축으로 열어 두고 있었고, 그래서 **한 앱 안에서\n * 평범한 입력과 찾기 입력이 서로 다른 모양이 되는 것을 계약이 막지 못했다.** 실제로\n * 갈라졌다 — app-rn은 `\"md\"`로 그리고 있었는데 이 계약은 `\"full\"`이라고 말하고\n * 있었고, 어느 쪽이 옳은지 양쪽 문서 어디에도 없었다.\n *\n * 찾기 입력이 알약이어야 하는지는 **제품이 정할 일**이고(iOS 관례는 알약, 이 앱은\n * 사각), 계약이 할 일은 그 선택지를 `fieldRecipe`와 **같은 이름으로** 주는 것이다.\n * 그러면 두 입력의 모양을 나란히 맞추는 것과 일부러 다르게 하는 것이 둘 다 표현된다.\n */\n shapes: { medium: \"md\", large: \"lg\", full: \"full\" },\n borderWidth: stroke.default,\n focusRingWidth: focusIndicatorContract.width,\n focusRingOffset: focusIndicatorContract.offset,\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"];\n defaults: { size: SearchFieldSize; shape: \"medium\" | \"large\" | \"full\" };\n sizes: Record<\n SearchFieldSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n gap: number;\n glyph: GlyphSize;\n clearDiameter: number;\n clearHitSlop: number;\n textVariant: TextVariant;\n }\n >;\n colors: Record<\n \"background\" | \"content\" | \"placeholder\" | \"leading\" | \"clear\" | \"border\" | \"focus\" | \"invalid\",\n ColorReference\n >;\n shapes: Record<\"medium\" | \"large\" | \"full\", keyof typeof radius>;\n borderWidth: number;\n focusRingWidth: number;\n focusRingOffset: number;\n states: { disabledOpacity: number; pressedOpacity: number };\n};\n\nexport type ChipSize = keyof typeof control.chipHeight;\n\nexport const chipRecipe = {\n slots: [\"root\", \"leading\", \"indicator\", \"label\", \"trailing\"] as const,\n defaults: { size: \"small\", selected: false },\n sizes: {\n small: {\n height: control.chipHeight.small,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n gap: spacing.xxs,\n textVariant: \"body\",\n },\n medium: {\n height: control.chipHeight.medium,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n textVariant: \"body\",\n },\n },\n states: {\n idle: {\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n // A resting chip wears the shared hairline, not a text-strength\n // outline. Drawing it in `content.secondary` made an unselected chip\n // read heavier than the selected one beside it, inverting the one\n // signal that matters in a filter row.\n border: semanticColors.border.default,\n },\n selected: {\n background: semanticColors.canvas,\n content: semanticColors.content.brand,\n border: semanticColors.border.focus,\n },\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n radius: \"full\",\n borderWidth: stroke.default,\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: {\n color: semanticColors.content.brand,\n glyph: \"xs\",\n },\n focus: focusIndicatorContract,\n} as const;\n\nexport const dividerRecipe = {\n slots: [\"root\", \"label\"] as const,\n defaults: { orientation: \"horizontal\", inset: \"none\" },\n color: semanticColors.border.default,\n thickness: stroke.subtle,\n insets: {\n none: 0,\n start: spacing.md,\n both: spacing.md,\n },\n} as const;\n\nexport const listRecipe = {\n slots: [\"root\", \"item\", \"separator\"] as const,\n defaults: { separator: \"indented\" },\n separators: {\n none: null,\n full: { insetStart: 0, insetEnd: 0 },\n indented: { insetStart: 40 + spacing.sm, insetEnd: 0 },\n },\n background: null,\n} as const;\n\nexport type ListRowDensity = \"compact\" | \"comfortable\" | \"relaxed\" | \"spacious\";\n/** Frame geometry the ListRow paints around its leading slot. */\nexport type ListRowLeadingShape = \"square\" | \"circle\";\n\nexport const listRowRecipe = {\n slots: [\"root\", \"leading\", \"content\", \"title\", \"description\", \"trailing\"] as const,\n defaults: { density: \"comfortable\", selected: false },\n density: {\n compact: {\n oneLineMinHeight: control.minTouchTarget,\n twoLineMinHeight: 60,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xxs,\n },\n comfortable: {\n oneLineMinHeight: layout.rowHeight.singleLine,\n twoLineMinHeight: layout.rowHeight.twoLine,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xs,\n },\n /*\n 토스 TDS의 ListRow는 세로 여백을 네 단계로 둔다. HJM이 두 단계만 갖고 있던 동안\n 제품은 그 사이 값을 제품 CSS로 만들었다(설정 목록은 넓게, 검색 결과는 좁게).\n 숫자는 이미 있는 spacing 스케일(sm/md)을 그대로 쓰고 새 값을 만들지 않는다.\n 최소 높이는 여백에 맞춰 함께 올라간다 — 여백만 키우면 한 줄 행이 위아래로 치우친다.\n */\n relaxed: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.xs,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.xs,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.sm,\n },\n spacious: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.md,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.md,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.md,\n },\n },\n gap: spacing.sm,\n leadingSize: 40,\n /**\n * Frame geometry for the leading slot. The size was already declared here but\n * no renderer bound it, so every consumer re-derived the avatar box (radius,\n * clipping, centering) in product styles.\n */\n leadingShapes: { square: null, circle: \"full\" },\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.secondary, textVariant: \"body\" },\n trailing: {\n textColor: semanticColors.content.secondary,\n iconColor: semanticColors.content.decorative,\n glyph: \"sm\",\n textVariant: \"caption\",\n },\n states: {\n pressedBackground: semanticColors.canvas,\n selectedBackground: semanticColors.canvas,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: ListRowDensity; selected: boolean };\n density: Record<ListRowDensity, {\n oneLineMinHeight: number;\n twoLineMinHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n }>;\n gap: number;\n leadingSize: number;\n leadingShapes: Record<ListRowLeadingShape, keyof typeof radius | null>;\n title: unknown;\n description: unknown;\n trailing: unknown;\n states: unknown;\n};\n\nexport type AccordionDensity = \"compact\" | \"comfortable\";\n\nexport const accordionRecipe = {\n slots: [\"root\", \"item\", \"header\", \"trigger\", \"title\", \"indicator\", \"panel\", \"divider\"] as const,\n defaults: { density: \"comfortable\", allowsMultipleExpanded: false },\n density: {\n compact: { triggerMinHeight: control.minTouchTarget, paddingVertical: spacing.xs },\n comfortable: { triggerMinHeight: layout.rowHeight.singleLine, paddingVertical: spacing.sm },\n },\n paddingHorizontal: spacing.xs,\n gap: spacing.sm,\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n indicator: { color: semanticColors.content.secondary, glyph: \"sm\" },\n panel: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n paddingBottom: spacing.md,\n paddingInlineStart: spacing.xs,\n },\n divider: semanticColors.border.default,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n transition: motionPreset.enter,\n} as const;\n\nexport type MenuItemTone = \"neutral\" | \"danger\";\n\nexport const menuRecipe = {\n slots: [\n \"trigger\",\n \"content\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"item\",\n \"leading\",\n \"copy\",\n \"label\",\n \"description\",\n \"trailing\",\n \"shortcut\",\n \"indicator\",\n \"dangerIndicator\",\n \"separator\",\n ] as const,\n defaults: { density: \"comfortable\", itemTone: \"neutral\" },\n surface: floatingSurfaceContract,\n density: {\n compact: { ...collectionItemContract, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, minHeight: layout.rowHeight.singleLine },\n },\n tones: {\n neutral: collectionItemContract.label.color,\n danger: collectionItemContract.danger,\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n leading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n shortcut: { color: semanticColors.content.secondary, textVariant: \"caption\" },\n indicator: { color: collectionItemContract.selectedIndicator, glyph: \"sm\" },\n separator: semanticColors.border.default,\n dangerIndicator: {\n color: collectionItemContract.danger,\n glyph: \"sm\",\n mark: \"alert\",\n },\n minWidth: 220,\n maxWidth: 320,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n states: { disabledOpacity: opacity.disabled },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: \"compact\" | \"comfortable\"; itemTone: MenuItemTone };\n surface: typeof floatingSurfaceContract;\n density: Record<\n \"compact\" | \"comfortable\",\n Omit<typeof collectionItemContract, \"minHeight\"> & { minHeight: number }\n >;\n tones: Record<MenuItemTone, ColorReference>;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n leading: { color: ColorReference; glyph: GlyphSize };\n shortcut: { color: ColorReference; textVariant: TextVariant };\n indicator: { color: ColorReference; glyph: GlyphSize };\n separator: ColorReference;\n dangerIndicator: {\n color: ColorReference;\n glyph: GlyphSize;\n mark: \"alert\";\n };\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n states: { disabledOpacity: number };\n transition: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n};\n\nexport type MenuDensity = keyof typeof menuRecipe.density;\n\nexport type SelectSize = \"medium\" | \"large\";\nexport type SelectDensity = \"compact\" | \"comfortable\";\n\n/**\n * Select is visually one field plus one collection, even though Web renders\n * the collection in a popover and Native renders it in a modal sheet.\n */\nexport const selectRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"trigger\",\n \"leading\",\n \"value\",\n \"placeholder\",\n \"busyIndicator\",\n \"indicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: { size: \"medium\", density: \"comfortable\" },\n adaptive: { web: \"popover\", native: \"sheet\" },\n frame: fieldFrameContract,\n sizes: {\n medium: {\n minHeight: fieldFrameContract.minHeight,\n paddingHorizontal: fieldFrameContract.paddingHorizontal,\n textVariant: \"body\",\n glyph: \"sm\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.lg,\n textVariant: \"bodyLarge\",\n glyph: \"md\",\n },\n },\n support: formSupportContract,\n value: {\n color: semanticColors.content.body,\n placeholderColor: semanticColors.content.secondary,\n gap: spacing.sm,\n },\n leading: { color: semanticColors.content.secondary },\n indicator: { color: semanticColors.content.secondary },\n busyIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: {\n ...floatingSurfaceContract,\n minWidth: 220,\n maxWidth: 420,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n },\n density: {\n compact: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: layout.rowHeight.singleLine },\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n optionLeading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n optionLabel: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: { color: semanticColors.border.focus, glyph: \"sm\" },\n stateMessage: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.sm,\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n invalidBorder: semanticColors.border.danger,\n disabledOpacity: opacity.disabled,\n },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { size: SelectSize; density: SelectDensity };\n adaptive: { web: \"popover\"; native: \"sheet\" };\n frame: typeof fieldFrameContract;\n sizes: Record<\n SelectSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n textVariant: TextVariant;\n glyph: GlyphSize;\n }\n >;\n support: typeof formSupportContract;\n value: { color: ColorReference; placeholderColor: ColorReference; gap: number };\n leading: { color: ColorReference };\n indicator: { color: ColorReference };\n busyIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof floatingSurfaceContract & {\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n };\n density: Record<\n SelectDensity,\n Omit<typeof collectionItemContract, \"minHeight\" | \"selectedBackground\" | \"highlightedBackground\"> & { minHeight: number; selectedBackground: ColorReference; highlightedBackground: ColorReference }\n >;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n optionLeading: { color: ColorReference; glyph: GlyphSize };\n optionLabel: { fontWeight: FontWeightValue; selectedFontWeight: FontWeightValue };\n selectionIndicator: { color: ColorReference; glyph: GlyphSize };\n stateMessage: {\n color: ColorReference;\n textVariant: TextVariant;\n minHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n states: {\n hoverBackground: ColorReference;\n pressedBackground: ColorReference;\n focus: typeof focusIndicatorContract;\n invalidBorder: ColorReference;\n disabledOpacity: number;\n };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\n/** Editable input anatomy layered on the exact same collection grammar. */\nexport const comboboxRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"field\",\n \"leading\",\n \"input\",\n \"indicator\",\n \"clear\",\n \"loadingIndicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: selectRecipe.defaults,\n adaptive: selectRecipe.adaptive,\n frame: selectRecipe.frame,\n sizes: selectRecipe.sizes,\n support: selectRecipe.support,\n input: selectRecipe.value,\n leading: selectRecipe.leading,\n indicator: selectRecipe.indicator,\n clear: {\n diameter: control.buttonHeight.small,\n hitSlop: control.buttonHitSlop.small,\n glyph: \"xs\",\n color: semanticColors.content.secondary,\n },\n loadingIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: selectRecipe.popover,\n density: selectRecipe.density,\n sectionLabel: selectRecipe.sectionLabel,\n optionLeading: selectRecipe.optionLeading,\n optionLabel: selectRecipe.optionLabel,\n selectionIndicator: selectRecipe.selectionIndicator,\n stateMessage: selectRecipe.stateMessage,\n states: selectRecipe.states,\n transition: selectRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: typeof selectRecipe.defaults;\n adaptive: typeof selectRecipe.adaptive;\n frame: typeof selectRecipe.frame;\n sizes: typeof selectRecipe.sizes;\n support: typeof selectRecipe.support;\n input: typeof selectRecipe.value;\n leading: typeof selectRecipe.leading;\n indicator: typeof selectRecipe.indicator;\n clear: { diameter: number; hitSlop: number; glyph: GlyphSize; color: ColorReference };\n loadingIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof selectRecipe.popover;\n density: typeof selectRecipe.density;\n sectionLabel: typeof selectRecipe.sectionLabel;\n optionLeading: typeof selectRecipe.optionLeading;\n optionLabel: typeof selectRecipe.optionLabel;\n selectionIndicator: typeof selectRecipe.selectionIndicator;\n stateMessage: typeof selectRecipe.stateMessage;\n states: typeof selectRecipe.states;\n transition: typeof selectRecipe.transition;\n};\n\nexport const segmentedControlRecipe = {\n slots: [\"root\", \"item\", \"label\", \"indicator\"] as const,\n defaults: { size: \"medium\" },\n adaptive: {\n // Equal-width rows stop being comparable when every short label wraps one\n // Hangul syllable per line. Native renderers stack the options before that\n // point so each choice remains a readable phrase and a 44pt target.\n largeTextLayout: \"stacked\" as const,\n stackAtFontScale: largeTextThreshold,\n },\n // Track and selected segment share the canvas; the blue ring identifies the chosen option.\n container: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.subtle,\n radius: \"lg\",\n padding: spacing.xxs,\n gap: spacing.xxs,\n },\n sizes: {\n small: {\n minHeight: 36,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: control.minTouchTarget,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n item: {\n radius: \"md\",\n gap: spacing.xxs,\n idleContent: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n selectedBackground: semanticColors.canvas,\n selectedContent: semanticColors.content.brand,\n /**\n * The ring stays the selection signal so the control keeps a non-text\n * contrast of at least 3:1; a fill-only thumb cannot reach that against a\n * neutral track.\n */\n selectedBorder: semanticColors.border.focus,\n selectedBorderWidth: stroke.strong,\n selectedFontWeight: fontWeight.bold,\n focusRing: semanticColors.border.focus,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport const switchRecipe = {\n slots: [\"root\", \"track\", \"thumb\", \"label\", \"description\"] as const,\n defaults: { size: \"medium\" },\n // Preserve existing inline Web and full-row Native layouts. Settings can opt in\n // to one shared row without wrapping a switch in a second interactive target.\n presentationDefaults: { web: \"inline\", native: \"row\" },\n // Descriptions beside a fixed track become a narrow column at larger text sizes.\n // Reuse the provider's large-text boundary so Web CSS and Native reflow together.\n stackedTextScale: largeTextThreshold,\n sizes: {\n small: { width: 44, height: 26, thumb: 22, inset: 2 },\n medium: { width: 52, height: 32, thumb: 28, inset: 2 },\n },\n colors: {\n // The off state is two unsaturated planes — a `surfaceAlt` track holding a `bg`\n // thumb — so on a dark palette both collapse into the card behind them: measured\n // 1.10:1 track-to-surface and 1.20:1 thumb-to-track on the canonical dark theme,\n // where the thumb is actually *darker* than its own track. The `*OffBorder`\n // hairlines are what keep the shape readable, so they are part of the contract\n // rather than a renderer flourish. A consumer settings screen shipped with the web\n // renderer ignoring them and the control was invisible (2026-09-14); the web\n // stylesheet now paints them and `action-contrast.browser.test.tsx` holds the line.\n trackOff: semanticColors.surface.sunken,\n trackOffBorder: semanticColors.content.secondary,\n // A lit track is a filled brand plate, same role as a checked checkbox\n // (`selectionControlRecipe.states.checkedBackground`). Was `content.brand`, a\n // content role; both renderers painted `primary` anyway, so this is a no-op.\n trackOn: semanticColors.action.brand.background,\n trackOnBorder: semanticColors.border.focus,\n thumbOff: semanticColors.canvas,\n thumbOffBorder: semanticColors.content.secondary,\n thumbOn: semanticColors.canvas,\n // A disabled switch still has to report what it is set to, so disabled\n // state changes hue instead of fading uniformly with `states.disabledOpacity`\n // — a product author found that a flat opacity made \"on\" and \"off\" nearly\n // identical, turning a saved setting unreadable while its backing request\n // was in flight. The on track keeps a recognisable (if muted) brand wash,\n // the off track and both thumbs drop to neutral tones, and every part\n // keeps a hairline border so the shape stays legible at reduced contrast.\n trackOffDisabled: semanticColors.border.default,\n trackOffBorderDisabled: semanticColors.border.default,\n trackOnDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n trackOnBorderDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n thumbDisabled: semanticColors.canvas,\n thumbDisabledBorder: semanticColors.content.decorative,\n },\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n rowMinHeight: control.minTouchTarget,\n // A switch with a description is a two-line row like any other list row,\n // and a product author found that letting content decide the height gave\n // neighbouring rows different heights — this pins it to the same value as\n // `listRowRecipe.density.comfortable.twoLineMinHeight`.\n rowTwoLineMinHeight: 68,\n} as const;\n\nexport type SelectionControlKind = \"checkbox\" | \"radio\";\n\nexport const selectionControlRecipe = {\n slots: [\n \"root\",\n \"control\",\n \"indicator\",\n \"leading\",\n \"content\",\n \"label\",\n \"description\",\n ] as const,\n defaults: { kind: \"checkbox\", size: \"medium\", presentation: \"card\" },\n sizes: {\n small: {\n rowMinHeight: control.minTouchTarget,\n control: 20,\n hitSlop: 12,\n glyph: \"xs\",\n gap: spacing.xs,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n labelVariant: \"label\",\n descriptionVariant: \"caption\",\n },\n medium: {\n rowMinHeight: layout.rowHeight.singleLine,\n control: control.selectionIndicator,\n hitSlop: 10,\n glyph: \"sm\",\n gap: spacing.sm,\n paddingHorizontal: spacing.md,\n paddingVertical: spacing.sm,\n labelVariant: \"body\",\n descriptionVariant: \"label\",\n },\n },\n shapes: { checkbox: \"sm\", radio: \"full\" },\n presentations: {\n plain: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"md\",\n useSizePadding: false,\n labelColor: null,\n },\n card: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n useSizePadding: true,\n labelColor: null,\n },\n // A row inside a card shared by the whole group (paired with\n // `selectionGroupRecipe.orientations.*.gap.grouped`). The item owns its\n // own padding so the selected fill runs the full width of the group, and\n // only the first and last rows round — an item-level radius on every row\n // left a visible white sliver in the group's corners. `labelColor` is\n // pinned here (rather than left to the row) because a grouped row's\n // label sits directly on the shared card background, not on its own\n // plate — the row needs to know the label reads correctly there.\n grouped: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"lg\",\n useSizePadding: true,\n labelColor: semanticColors.content.primary,\n },\n },\n label: {\n color: semanticColors.content.body,\n fontWeight: fontWeight.semibold,\n checkedFontWeight: fontWeight.bold,\n },\n leading: { size: \"md\", color: semanticColors.content.secondary },\n description: { color: semanticColors.content.secondary },\n indicators: {\n checkbox: { checked: \"check\", mixed: \"dash\" },\n radio: { checked: \"dot\", mixed: null },\n },\n radioDotRatio: 0.42,\n states: {\n idleBackground: semanticColors.canvas,\n idleBorder: semanticColors.content.secondary,\n checkedBackground: semanticColors.action.brand.background,\n checkedBorder: semanticColors.border.focus,\n indicator: semanticColors.action.brand.content,\n // Keep the entire choice plate white; border and checked indicator carry selection.\n selectedBackground: semanticColors.canvas,\n selectedBorder: semanticColors.border.focus,\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n invalidBorder: semanticColors.border.danger,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\n/**\n * Persistent top-level navigation. The recipe reserves an optional center gap\n * for a sibling primary action but never treats that action as a destination.\n */\nexport const bottomNavigationRecipe = {\n slots: [\n \"root\",\n \"surface\",\n \"list\",\n \"item\",\n \"indicator\",\n \"icon\",\n \"label\",\n \"badge\",\n ] as const,\n defaults: bottomNavigationRecipeDefaults,\n adaptive: {\n web: \"fixed-compact-viewport\",\n native: \"navigator-tab-bar\",\n },\n presentations: {\n capsule: {\n background: semanticColors.surface.default,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"full\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 480,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n bar: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"block-start\"] as const,\n radius: null,\n shadow: null,\n maxWidth: null,\n outerPaddingHorizontal: 0,\n outerPaddingTop: 0,\n },\n floating: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"xl\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 384,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n },\n distributions: {\n equal: { centerGap: 0, requiresEvenItemCount: false },\n \"center-gap\": {\n centerGap: control.buttonHeight.large + spacing.md,\n requiresEvenItemCount: true,\n },\n },\n density: {\n compact: {\n itemMinWidth: 52,\n itemMinHeight: 52,\n padding: spacing.xxs,\n gap: 2,\n icon: \"sm\" as const,\n label: \"caption\" as const,\n },\n regular: {\n itemMinWidth: 56,\n itemMinHeight: 64,\n padding: spacing.xs,\n gap: spacing.xxs,\n icon: \"md\" as const,\n label: \"caption\" as const,\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selectedIcon: semanticColors.content.brand,\n selectedLabel: semanticColors.content.brand,\n },\n /**\n * Stable icon/badge layout anchor. Selection never paints this slot as a\n * pill: the icon and label below own the non-color selected evidence.\n */\n indicator: {\n minWidth: 40,\n minHeight: 28,\n radius: \"full\" as const,\n visual: \"none\" as const,\n background: null,\n border: null,\n borderWidth: 0,\n },\n icon: {\n /**\n * Adapters apply at least one supported emphasis. Stroke-oriented glyphs\n * use strokeWidth; renderers without stroke control use scale instead.\n */\n selectedEmphasis: {\n minimumAdaptations: 1,\n strokeWidth: { idle: stroke.strong, selected: 3 },\n scale: { idle: 1, selected: 1.06 },\n },\n },\n label: {\n fontWeight: fontWeight.semibold,\n selectedFontWeight: fontWeight.bold,\n textAlign: \"center\",\n wrap: true,\n fixedLines: null,\n },\n badge: {\n size: \"small\" as const,\n variant: \"floating\" as const,\n anchor: { blockStart: -spacing.xxs, inlineEnd: -spacing.xs },\n subtreeHiddenFromAccessibility: true,\n },\n safeArea: {\n mode: \"additive\",\n minimumBottomPadding: spacing.xs,\n },\n keyboard: { defaultBehavior: \"hide\", movesAboveKeyboard: false },\n largeText: {\n allowFontScaling: true,\n // Persistent navigation has to keep every destination visible at once.\n // Let labels respond to Dynamic Type, but cap the visual chrome before a\n // three-character destination turns into a three-line column. The full,\n // uncapped label remains the item's accessible name.\n maxFontSizeMultiplier: 1.4,\n fixedItemHeight: false,\n labelWraps: true,\n },\n direction: {\n itemOrder: \"logical\",\n badgeAnchor: \"inline-end\",\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n selectedNonColorEvidence: {\n target: \"icon-and-label\" as const,\n label: \"font-weight\" as const,\n icon: \"emphasis\" as const,\n },\n selectedFocusSeparation: {\n selectedTarget: \"icon-and-label\" as const,\n focusTarget: \"item\",\n minimumGap: focusIndicatorContract.offset,\n },\n },\n transition: motionPreset.micro,\n} as const;\n\nexport const tabsRecipe = {\n slots: [\"root\", \"list\", \"tab\", \"label\", \"indicator\", \"panel\"] as const,\n defaults: { size: \"medium\", layout: \"content\", overflow: \"scroll\" },\n sizes: {\n small: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: 48,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selected: semanticColors.content.primary,\n indicator: semanticColors.border.focus,\n divider: semanticColors.border.default,\n },\n gap: spacing.xs,\n icon: { glyph: \"xs\" },\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n layouts: {\n content: { fitted: false },\n fitted: { fitted: true },\n },\n overflow: {\n scroll: { scrollable: true, wrap: false },\n clip: { scrollable: false, wrap: false },\n },\n indicatorHeight: stroke.strong,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport type NoticeTone = \"info\" | \"success\" | \"warning\" | \"attention\" | \"danger\";\n\nexport const noticeRecipe = {\n slots: [\"root\", \"icon\", \"content\", \"title\", \"description\", \"action\"] as const,\n defaults: { tone: \"info\" },\n tones: {\n ...semanticColors.feedback,\n info: {\n ...semanticColors.feedback.info,\n // The informational wash landed bluer and darker than the selection\n // tint itself over canvas, so a banner outranked the control the\n // reader was supposed to act on. `info` alone goes neutral — its\n // accent stays in the icon, the title, and the border; `success`/\n // `warning`/`attention`/`danger` keep the tinted surface because a\n // product author confirmed those readings didn't have the same\n // conflict with a selection state.\n background: semanticColors.canvas,\n },\n },\n radius: \"md\",\n padding: spacing.md,\n gap: spacing.sm,\n contentGap: spacing.xxs,\n iconSize: \"sm\",\n borderWidth: stroke.default,\n title: { textVariant: \"body\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.body, textVariant: \"body\" },\n} as const;\n\nexport const skeletonRecipe = {\n slots: [\"root\"] as const,\n // animated는 0.9.12까지 false였다. 정지한 블록은 로딩이 아니라 깨진 화면으로\n // 읽힌다. 전환 근거와 소비 측 migration은\n // .changeset/skeleton-pulse-by-default.md에 있다.\n defaults: { shape: \"block\", animated: true },\n background: semanticColors.canvas,\n shapes: {\n block: { radius: \"md\", defaultHeight: spacing.xxl },\n text: { radius: \"sm\", defaultHeight: spacing.md },\n circle: { radius: \"full\", defaultHeight: glyph.xxl },\n },\n animation: {\n duration: motion.slow * 4,\n easing: \"standard\",\n fromOpacity: 0.56,\n toOpacity: 1,\n reducedMotion: \"static\",\n },\n} as const;\n\nexport const emptyStateRecipe = {\n slots: [\"root\", \"icon\", \"title\", \"description\", \"action\"] as const,\n defaults: { density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.xl },\n regular: { paddingVertical: spacing.xxxl },\n },\n paddingHorizontal: spacing.xl,\n gap: spacing.xs,\n icon: { size: \"lg\", color: semanticColors.content.decorative },\n title: { textVariant: \"body\", color: semanticColors.content.primary, fontWeight: fontWeight.semibold },\n description: { textVariant: \"label\", color: semanticColors.content.secondary },\n} as const;\n\nexport const spinnerRecipe = {\n slots: [\"root\"] as const,\n defaults: { size: \"medium\", tone: \"brand\" },\n sizes: { small: glyph.xs, medium: glyph.sm, large: glyph.lg },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.secondary,\n inverse: semanticColors.content.inverse,\n },\n strokeWidth: stroke.strong,\n animation: {\n duration: 800,\n easing: \"standard\",\n reducedMotion: \"static\",\n },\n} as const;\n\nexport type LoadMoreDensity = \"compact\" | \"regular\";\n\nexport const loadMoreRecipe = {\n slots: [\n \"root\",\n \"status\",\n \"spinner\",\n \"trigger\",\n \"error\",\n \"retry\",\n \"end\",\n ] as const,\n defaults: { mode: \"automatic\", density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.sm, gap: spacing.xs },\n regular: { paddingVertical: spacing.lg, gap: spacing.sm },\n },\n status: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n },\n error: {\n color: semanticColors.content.danger,\n textVariant: \"label\",\n },\n end: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trigger: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n radius: \"md\",\n color: semanticColors.content.brand,\n textVariant: \"label\",\n fontWeight: fontWeight.bold,\n },\n spinner: { size: \"small\", tone: \"brand\" },\n states: {\n focus: focusIndicatorContract,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { mode: \"automatic\" | \"manual\"; density: LoadMoreDensity };\n density: Record<LoadMoreDensity, { paddingVertical: number; gap: number }>;\n status: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n end: { color: ColorReference; textVariant: TextVariant };\n trigger: {\n minHeight: number;\n paddingHorizontal: number;\n radius: keyof typeof radius;\n color: ColorReference;\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n };\n spinner: { size: SpinnerSize; tone: SpinnerTone };\n states: {\n focus: typeof focusIndicatorContract;\n pressedOpacity: number;\n disabledOpacity: number;\n };\n};\n\nexport const avatarRecipe = {\n slots: [\"root\", \"image\", \"fallback\", \"badge\", \"group\"] as const,\n /**\n * 겹쳐 쌓은 아바타 묶음이 얼마나 겹치는가. 비율로 두는 이유는 크기 축이 이미 네 단계라\n * 픽셀로 적으면 네 벌이 되기 때문이다. 남은 인원은 제품이 문구로 만든다(\"+3\").\n */\n overlapRatio: 0.3,\n defaults: { size: \"medium\", shape: \"circle\" },\n sizes: { small: 32, medium: 40, large: 48, xlarge: 64 },\n shapes: { rounded: \"md\", circle: \"full\" },\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n border: semanticColors.border.default,\n} as const;\n\nexport type StatisticDensity = \"compact\" | \"comfortable\";\nexport type StatisticPresentation = \"plain\" | \"surface\";\n\nexport const statisticRecipe = {\n slots: [\n \"group\",\n \"root\",\n \"label\",\n \"valueRow\",\n \"prefix\",\n \"value\",\n \"suffix\",\n \"trend\",\n \"trendMark\",\n \"hint\",\n ] as const,\n defaults: { density: \"comfortable\", presentation: \"plain\", columns: 3 },\n density: {\n compact: {\n padding: spacing.sm,\n gap: spacing.xxs,\n labelVariant: \"caption\",\n valueVariant: \"title\",\n },\n comfortable: {\n padding: spacing.md,\n gap: spacing.xs,\n labelVariant: \"label\",\n valueVariant: \"heading\",\n },\n },\n presentations: {\n plain: { background: null, border: null, borderWidth: 0, radius: \"md\" },\n surface: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n },\n },\n group: {\n gap: spacing.xs,\n minItemWidth: 120,\n columns: [1, 2, 3, 4] as const,\n },\n label: {\n color: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n },\n value: {\n color: semanticColors.content.primary,\n fontWeight: fontWeight.heavy,\n numericVariant: \"tabular\",\n maxLines: null,\n },\n affix: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n },\n hint: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trend: {\n textVariant: \"caption\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n marks: {\n up: \"trendUp\",\n down: \"trendDown\",\n flat: \"trendFlat\",\n },\n tones: {\n neutral: semanticColors.content.secondary,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: {\n density: StatisticDensity;\n presentation: StatisticPresentation;\n columns: 1 | 2 | 3 | 4;\n };\n density: Record<\n StatisticDensity,\n {\n padding: number;\n gap: number;\n labelVariant: TextVariant;\n valueVariant: TextVariant;\n }\n >;\n presentations: Record<\n StatisticPresentation,\n {\n background: ColorReference | null;\n border: ColorReference | null;\n borderWidth: number;\n radius: keyof typeof radius;\n }\n >;\n group: {\n gap: number;\n minItemWidth: number;\n columns: readonly (1 | 2 | 3 | 4)[];\n };\n label: { color: ColorReference; fontWeight: FontWeightValue };\n value: {\n color: ColorReference;\n fontWeight: FontWeightValue;\n numericVariant: \"tabular\";\n maxLines: null;\n };\n affix: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n hint: { color: ColorReference; textVariant: TextVariant };\n trend: {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n gap: number;\n marks: Record<\"up\" | \"down\" | \"flat\", string>;\n tones: Record<\"neutral\" | \"success\" | \"warning\" | \"danger\", ColorReference>;\n };\n};\n\nexport const sheetRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"handle\", \"header\", \"title\", \"body\", \"footer\", \"close\"] as const,\n defaults: { placement: \"bottom\", size: \"auto\" },\n /**\n * How tall the sheet opens. `auto` keeps the content-driven height that the\n * recipe already caps with `maxHeightRatio`. The fixed steps exist because\n * consumers otherwise reach for `contentStyle={{ height }}`, which moves a\n * recipe-owned dimension into product code.\n */\n sizes: {\n auto: null,\n medium: 0.6,\n large: 0.85,\n full: 1,\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"xl\",\n shadow: floatingSurfaceContract.shadow,\n maxHeightRatio: 0.9,\n paddingHorizontal: spacing.lg,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n },\n web: { maxWidth: 640 },\n safeArea: {\n edge: \"bottom\",\n mode: \"additive\",\n minimumPadding: spacing.sm,\n },\n handle: {\n width: 36,\n height: 4,\n radius: \"full\",\n color: semanticColors.content.secondary,\n visibleByDefault: false,\n showWhen: \"swipe-dismiss-enabled\",\n },\n header: { minHeight: control.minTouchTarget, gap: spacing.sm },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n },\n body: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.md,\n },\n footer: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.sm,\n paddingTop: spacing.sm,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\nexport const dialogRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"header\", \"title\", \"description\", \"body\", \"footer\", \"close\"] as const,\n defaults: { size: \"medium\", dismissible: true },\n sizes: {\n small: { maxWidth: 320, padding: spacing.lg },\n medium: { maxWidth: 420, padding: spacing.xl },\n large: { maxWidth: 640, padding: spacing.xl },\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"lg\",\n gap: spacing.md,\n shadow: floatingSurfaceContract.shadow,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\n/**\n * Tone is the dialog's reason for interrupting, not its decoration.\n *\n * `attention` and `danger` covered \"are you sure?\" and \"this destroys\n * something\", but consumers also stop the user to *explain* an action before\n * running it — an intro before a button that copies content into the account,\n * or a confirmation that something finished. Those were shipping with the\n * attention mark, so a neutral explanation read as a warning (reported by a\n * product team on 2026-09-15). `info` and `success` carry the existing feedback\n * accents so the axis stays one token lookup per renderer.\n */\nexport type AlertDialogTone = \"attention\" | \"danger\" | \"info\" | \"success\";\n\nexport const alertDialogRecipe = {\n slots: [\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"icon\",\n \"title\",\n \"description\",\n \"status\",\n \"error\",\n \"actions\",\n \"cancel\",\n \"confirm\",\n ] as const,\n defaults: { tone: \"attention\", size: \"small\" },\n sizes: dialogRecipe.sizes,\n backdrop: dialogRecipe.backdrop,\n content: dialogRecipe.content,\n tones: {\n attention: {\n icon: semanticColors.feedback.attention.foreground,\n iconBackground: semanticColors.feedback.attention.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n danger: {\n icon: semanticColors.content.danger,\n iconBackground: semanticColors.feedback.danger.background,\n confirm: semanticColors.action.danger.background,\n confirmContent: semanticColors.action.danger.content,\n },\n // Explanation and completion keep the brand confirm button: the action they\n // introduce is the ordinary one, only the mark and its wash change.\n info: {\n icon: semanticColors.feedback.info.foreground,\n iconBackground: semanticColors.feedback.info.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n success: {\n icon: semanticColors.feedback.success.foreground,\n iconBackground: semanticColors.feedback.success.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n },\n icon: { containerSize: control.minTouchTarget, glyph: \"md\", radius: \"full\" },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n },\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n error: formSupportContract.error,\n // Stacked: confirm on top, cancel below, tighter gap (reported 2026-09-27). Row stays [cancel][confirm].\n actions: {\n gap: spacing.sm,\n stackedGap: spacing.xs,\n stackedOrder: \"confirm-first\",\n stackBelow: breakpoint.medium,\n minButtonWidth: 96,\n },\n transition: dialogRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: AlertDialogTone; size: DialogSize };\n sizes: typeof dialogRecipe.sizes;\n backdrop: typeof dialogRecipe.backdrop;\n content: typeof dialogRecipe.content;\n tones: Record<\n AlertDialogTone,\n {\n icon: ColorReference;\n iconBackground: ColorReference;\n confirm: ColorReference;\n confirmContent: ColorReference;\n }\n >;\n icon: { containerSize: number; glyph: GlyphSize; radius: keyof typeof radius };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n actions: {\n gap: number;\n stackedGap: number;\n stackedOrder: \"confirm-first\";\n stackBelow: number;\n minButtonWidth: number;\n };\n transition: typeof dialogRecipe.transition;\n};\n\nexport type ToastPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\";\nexport type ToastTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type ToastToneMark =\n | \"notifications\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"alert\";\n\nexport const toastRecipe = {\n slots: [\n \"viewport\",\n \"root\",\n \"toneMark\",\n \"icon\",\n \"content\",\n \"title\",\n \"description\",\n \"action\",\n \"close\",\n ] as const,\n defaults: { tone: \"neutral\", placement: \"bottom\", durationMs: 3000 },\n adaptive: { web: \"fixed-viewport\", native: \"safe-area-overlay\" },\n viewport: {\n layer: layer.toast,\n gap: spacing.sm,\n inset: spacing.md,\n maxWidth: 420,\n safeAreaMode: \"additive\",\n },\n placements: {\n top: { blockEdge: \"top\", inlineEdge: \"center\", stackFrom: \"top\" },\n \"top-start\": { blockEdge: \"top\", inlineEdge: \"start\", stackFrom: \"top\" },\n \"top-end\": { blockEdge: \"top\", inlineEdge: \"end\", stackFrom: \"top\" },\n bottom: { blockEdge: \"bottom\", inlineEdge: \"center\", stackFrom: \"bottom\" },\n \"bottom-start\": { blockEdge: \"bottom\", inlineEdge: \"start\", stackFrom: \"bottom\" },\n \"bottom-end\": { blockEdge: \"bottom\", inlineEdge: \"end\", stackFrom: \"bottom\" },\n },\n // 1.10.0: tone is carried by a tinted icon badge, not a 2px edge strip — the strip plus a bare glyph read\n // as a grey dot on neutral toasts (BurnTok 2026-09-30 feedback \"알림 ui 구려\"). `badge` is the badge fill.\n tones: {\n neutral: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.secondary,\n badge: semanticColors.surface.sunken,\n mark: \"notifications\",\n },\n info: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.info.foreground,\n badge: semanticColors.feedback.info.badgeBackground,\n mark: \"info\",\n },\n success: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.success.foreground,\n badge: semanticColors.feedback.success.badgeBackground,\n mark: \"success\",\n },\n warning: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.warning.foreground,\n badge: semanticColors.feedback.warning.badgeBackground,\n mark: \"warning\",\n },\n danger: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.danger,\n badge: semanticColors.feedback.danger.badgeBackground,\n mark: \"alert\",\n },\n },\n surface: {\n background: semanticColors.canvas,\n // Strong border stays: the card boundary must keep 3:1 against the page (toast.test.ts, WCAG 1.4.11).\n // 1.10.0 only softens the shape (lg radius).\n border: semanticColors.border.strong,\n borderWidth: stroke.default,\n radius: \"lg\",\n shadow: floatingSurfaceContract.shadow,\n minHeight: layout.rowHeight.singleLine,\n padding: spacing.md,\n gap: spacing.sm,\n maxWidth: 420,\n },\n // Retired in 1.10.0 (width 0): the icon badge carries tone. Kept so the slot contract stays additive.\n toneMark: { width: 0, radius: \"full\" },\n icon: { glyph: \"sm\", badgeDiameter: 32, badgeRadius: \"full\" },\n content: { gap: spacing.xxs },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n },\n // Secondary copy so the title leads; body-on-body read as one grey block.\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n // 1.10.0: a tinted pill button aligned to the end instead of a bare text link, so the one thing a toast\n // asks for is recognisable as a control. Hit area stays the 44pt touch target.\n action: {\n color: semanticColors.content.brand,\n background: semanticColors.surface.brand,\n radius: \"full\",\n align: \"end\",\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n },\n close: {\n color: semanticColors.content.secondary,\n diameter: control.minTouchTarget,\n glyph: \"xs\",\n },\n states: {\n pressedOpacity: opacity.pressed,\n draggedOpacity: opacity.dragged,\n focus: focusIndicatorContract,\n },\n gesture: { dismissThreshold: 50 },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: ToastTone; placement: ToastPlacement; durationMs: number };\n adaptive: { web: \"fixed-viewport\"; native: \"safe-area-overlay\" };\n viewport: {\n layer: number;\n gap: number;\n inset: number;\n maxWidth: number;\n safeAreaMode: \"additive\";\n };\n placements: Record<\n ToastPlacement,\n {\n blockEdge: \"top\" | \"bottom\";\n inlineEdge: \"start\" | \"center\" | \"end\";\n stackFrom: \"top\" | \"bottom\";\n }\n >;\n tones: Record<\n ToastTone,\n { foreground: ColorReference; accent: ColorReference; badge: ColorReference; mark: ToastToneMark }\n >;\n surface: {\n background: ColorReference;\n border: ColorReference;\n borderWidth: number;\n radius: keyof typeof radius;\n shadow: typeof floatingSurfaceContract.shadow;\n minHeight: number;\n padding: number;\n gap: number;\n maxWidth: number;\n };\n toneMark: { width: number; radius: keyof typeof radius };\n icon: { glyph: GlyphSize; badgeDiameter: number; badgeRadius: keyof typeof radius };\n content: { gap: number };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n action: {\n color: ColorReference;\n background: ColorReference;\n radius: keyof typeof radius;\n align: \"start\" | \"end\";\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n minHeight: number;\n paddingHorizontal: number;\n };\n close: { color: ColorReference; diameter: number; glyph: GlyphSize };\n states: {\n pressedOpacity: number;\n draggedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n gesture: { dismissThreshold: number };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\nexport const tooltipRecipe = {\n slots: [\"provider\", \"trigger\", \"content\", \"arrow\"] as const,\n defaults: tooltipDescriptorDefaults,\n layer: layer.tooltip,\n surface: {\n ...floatingSurfaceContract,\n background: semanticColors.content.primary,\n border: semanticColors.content.primary,\n radius: \"sm\" as const,\n padding: spacing.xs,\n },\n content: {\n color: semanticColors.canvas,\n textVariant: \"label\",\n maxWidth: 280,\n },\n arrow: {\n width: 10,\n height: 5,\n color: semanticColors.content.primary,\n padding: spacing.xs,\n },\n positioning: {\n sideOffset: spacing.xxs,\n collisionPadding: spacing.sm,\n },\n transition: { enter: motionPreset.micro, exit: motionPreset.exit },\n} as const;\n\nexport const topBarRecipe = {\n slots: [\n \"root\",\n \"leading\",\n \"title\",\n \"titleLeading\",\n \"titleAction\",\n \"trailing\",\n \"action\",\n \"actionLabel\",\n ] as const,\n defaults: { centered: true },\n minHeight: control.buttonHeight.large,\n sideMinWidth: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n largeTextThreshold,\n title: { textVariant: \"bodyLarge\", color: semanticColors.content.primary, fontWeight: fontWeight.bold },\n titleAction: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xs,\n pressedOpacity: opacity.pressed,\n },\n action: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xxs,\n paddingHorizontal: spacing.xxs,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n actionLabel: {\n textVariant: \"caption\",\n color: semanticColors.content.primary,\n fontWeight: fontWeight.medium,\n },\n background: semanticColors.canvas,\n} as const;\n\nexport const bottomCtaRecipe = {\n slots: [\"root\", \"description\", \"secondaryAction\", \"primaryAction\"] as const,\n minHeight: 64,\n paddingHorizontal: layout.pagePadding.regular,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n gap: spacing.sm,\n // A footer painted in the canvas tone left only a 1pt hairline between it\n // and the content scrolling underneath — a product author found that the\n // line cut a glyph in half at whatever scroll position the reader stopped\n // at, reading as a broken card rather than a footer. Layering by surface\n // (one step up from canvas) instead of by shadow alone is how this\n // component builds the separation; `shadow` below is reserved for the one\n // case that still needs it — see its comment.\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n // The cut described above is the scroll viewport's edge, not a spacing\n // problem — content clips mid-glyph, and a hairline between two\n // similarly-light planes can't carry that on its own. The footer casts\n // upward instead: the one case where a shadow, rather than a surface step,\n // is the right tool, because the footer genuinely overlaps the content\n // beneath it.\n shadow: {\n color: \"#000000\",\n opacity: 0.08,\n radius: 8,\n offsetY: -2,\n elevation: 8,\n },\n} as const;\n\nexport const sectionRecipe = {\n slots: [\"root\", \"header\", \"copy\", \"title\", \"description\", \"action\", \"content\"] as const,\n gap: spacing.xs,\n headerGap: spacing.sm,\n copyGap: spacing.xxs,\n title: { textVariant: \"title\", color: semanticColors.content.body, fontWeight: fontWeight.bold },\n description: { textVariant: \"caption\", color: semanticColors.content.secondary },\n} as const;\n\nexport type SegmentedControlSize = keyof typeof segmentedControlRecipe.sizes;\nexport type SwitchPresentation = \"inline\" | \"row\";\nexport type SwitchSize = keyof typeof switchRecipe.sizes;\nexport type SelectionControlSize = keyof typeof selectionControlRecipe.sizes;\nexport type SelectionControlPresentation = keyof typeof selectionControlRecipe.presentations;\nexport type TabSize = keyof typeof tabsRecipe.sizes;\nexport type TabsLayout = keyof typeof tabsRecipe.layouts;\nexport type TabsOverflow = keyof typeof tabsRecipe.overflow;\nexport type SpinnerSize = keyof typeof spinnerRecipe.sizes;\nexport type SpinnerTone = keyof typeof spinnerRecipe.tones;\nexport type AvatarSize = keyof typeof avatarRecipe.sizes;\nexport type AvatarShape = keyof typeof avatarRecipe.shapes;\nexport type DialogSize = keyof typeof dialogRecipe.sizes;\n"]}
1
+ {"version":3,"file":"component-recipes.js","sourceRoot":"","sources":["../src/component-recipes.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColorReference } from \"./color-references.js\";\nimport {\n collectionItemContract,\n fieldFrameContract,\n floatingSurfaceContract,\n focusIndicatorContract,\n formSupportContract,\n} from \"./component-contracts.js\";\nimport {\n backdrop,\n breakpoint,\n control,\n glyph,\n layer,\n largeTextThreshold,\n layout,\n fontWeight,\n motion,\n motionPreset,\n opacity,\n radius,\n spacing,\n stroke,\n type FontWeightValue,\n type GlyphSize,\n type TextVariant,\n} from \"./foundations.js\";\nimport { semanticColors } from \"./semantic-colors.js\";\nimport { tooltipDescriptorDefaults } from \"./tooltip.js\";\nimport { bottomNavigationRecipeDefaults } from \"./bottom-navigation-defaults.js\";\n\nexport {\n iconButtonRecipe,\n resolveIconButtonPresentation,\n type IconButtonShape,\n type IconButtonSize,\n type IconButtonTone,\n type ResolvedIconButtonPresentation,\n} from \"./icon-button-recipe.js\";\nexport {\n counterBadgeDefaults,\n counterBadgeRecipe,\n formatCounterBadgeCount,\n type CounterBadgeSize,\n type CounterBadgeTone,\n type CounterBadgeVariant,\n} from \"./counter-badge-recipe.js\";\nexport {\n progressRecipe,\n type ProgressShape,\n type ProgressSize,\n type ProgressTone,\n} from \"./progress-recipe.js\";\nexport type {\n BottomNavigationDensity,\n BottomNavigationDistribution,\n BottomNavigationPresentation,\n} from \"./bottom-navigation-defaults.js\";\n\nexport type TextTone =\n | \"primary\"\n | \"body\"\n | \"muted\"\n | \"subtle\"\n | \"weak\"\n | \"brand\"\n | \"danger\"\n | \"inverse\";\nexport type TextEmphasis = \"regular\" | \"medium\" | \"strong\";\n\nexport const textRecipe = {\n slots: [\"root\"] as const,\n defaults: { variant: \"body\", tone: \"primary\", emphasis: \"regular\" },\n tones: {\n primary: semanticColors.content.primary,\n body: semanticColors.content.body,\n muted: semanticColors.content.secondary,\n subtle: semanticColors.content.tertiary,\n weak: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n emphasis: {\n regular: fontWeight.regular,\n medium: fontWeight.semibold,\n strong: fontWeight.bold,\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n variant: TextVariant;\n tone: TextTone;\n emphasis: TextEmphasis;\n };\n tones: Record<TextTone, ColorReference>;\n emphasis: Record<TextEmphasis, FontWeightValue>;\n};\n\nexport type IconTone =\n | \"primary\"\n | \"secondary\"\n | \"decorative\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"inverse\";\nexport type IconWeight = \"regular\" | \"strong\";\n\nexport const iconRecipe = {\n slots: [\"root\"] as const,\n defaults: {\n size: \"md\",\n tone: \"secondary\",\n weight: \"regular\",\n decorative: true,\n },\n sizes: glyph,\n tones: {\n primary: semanticColors.content.primary,\n secondary: semanticColors.content.secondary,\n decorative: semanticColors.content.decorative,\n brand: semanticColors.content.brand,\n info: semanticColors.feedback.info.foreground,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n inverse: semanticColors.content.inverse,\n },\n weights: { regular: 2, strong: 2.5 },\n stroke: {\n lineCap: \"round\",\n lineJoin: \"round\",\n scaling: \"proportional\",\n },\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n size: GlyphSize;\n tone: IconTone;\n weight: IconWeight;\n decorative: boolean;\n };\n sizes: Record<GlyphSize, number>;\n tones: Record<IconTone, ColorReference>;\n weights: Record<IconWeight, number>;\n stroke: {\n lineCap: \"round\";\n lineJoin: \"round\";\n scaling: \"proportional\";\n };\n};\n\nexport type StackAxis = \"block\" | \"inline\";\nexport type StackGap = keyof typeof spacing;\nexport type StackAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\nexport type StackJustify = \"start\" | \"center\" | \"end\" | \"between\";\n\nexport const stackRecipe = {\n slots: [\"root\"] as const,\n defaults: { axis: \"block\", gap: \"md\", align: \"stretch\", justify: \"start\", wrap: false },\n axes: { block: \"column\", inline: \"row\" },\n gaps: spacing,\n align: [\"start\", \"center\", \"end\", \"stretch\"] as const,\n justify: [\"start\", \"center\", \"end\", \"between\"] as const,\n} as const satisfies {\n slots: readonly [\"root\"];\n defaults: {\n axis: StackAxis;\n gap: StackGap;\n align: StackAlign;\n justify: StackJustify;\n wrap: boolean;\n };\n axes: Record<StackAxis, \"column\" | \"row\">;\n gaps: Record<StackGap, number>;\n align: readonly StackAlign[];\n justify: readonly StackJustify[];\n};\n\nexport type LinkTone = \"brand\" | \"neutral\";\nexport type LinkVariant = \"inline\" | \"standalone\";\n\nexport const linkRecipe = {\n slots: [\"root\", \"leading\", \"label\", \"trailing\"] as const,\n defaults: { tone: \"brand\", variant: \"inline\" },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.body,\n },\n variants: {\n inline: {\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n underline: \"always\",\n minHeight: null,\n minWidth: null,\n },\n /** 그 자체가 동작이므로 두 축 모두 최소 터치 타깃. 높이만 잡으면 짧은 라벨이 좁아진다. */\n standalone: {\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n underline: \"hover\",\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n },\n },\n gap: spacing.xxs,\n icon: { glyph: \"xs\", inheritsTone: true },\n states: {\n pressedOpacity: opacity.pressed,\n focus: focusIndicatorContract,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"label\", \"trailing\"];\n defaults: { tone: LinkTone; variant: LinkVariant };\n tones: Record<LinkTone, ColorReference>;\n variants: Record<\n LinkVariant,\n {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n underline: \"always\" | \"hover\";\n minHeight: number | null;\n minWidth: number | null;\n }\n >;\n gap: number;\n icon: { glyph: GlyphSize; inheritsTone: true };\n states: {\n pressedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n};\n\nexport const selectionGroupRecipe = {\n slots: [\"root\", \"label\", \"requiredIndicator\", \"description\", \"items\", \"error\"] as const,\n defaults: { orientation: \"vertical\", presentation: \"card\" },\n orientations: {\n vertical: {\n direction: \"column\",\n // `grouped` rows sit flush inside one shared card, so the group owns\n // the only outer radius and the rows share edges instead of floating\n // apart with their own gap — the same shape as `selectionControlRecipe`'s\n // `grouped` presentation, which this gap pairs with.\n gap: { plain: spacing.xxs, card: spacing.xs, grouped: 0 },\n },\n horizontal: {\n direction: \"row\",\n gap: { plain: spacing.sm, card: spacing.md, grouped: 0 },\n },\n },\n label: formSupportContract.label,\n requiredIndicator: { color: semanticColors.content.danger },\n description: formSupportContract.hint,\n error: formSupportContract.error,\n supportGap: formSupportContract.gap,\n states: { disabledOpacity: opacity.disabled },\n} as const;\n\nexport type SelectionGroupOrientation = keyof typeof selectionGroupRecipe.orientations;\nexport type SelectionGroupPresentation = keyof typeof selectionGroupRecipe.orientations.vertical.gap;\n\nexport type BadgeTone =\n | \"neutral\"\n /**\n * One step stronger than `neutral`: solid ink plate instead of a muted\n * label + sunken plate. A product author needed this for a result screen\n * where win/loss is the fact itself, not a side note, and `neutral` plus\n * its `outline` variant read as nearly the same grey — the one place the\n * distinction had to be unmistakable at a glance. Use it where a badge must\n * outrank `neutral` without borrowing an accent or the brand tint (both of\n * which already carry other meanings — see the `brand` tone below).\n */\n | \"strong\"\n | \"brand\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"attention\"\n | \"danger\";\nexport type BadgeSize = \"small\" | \"medium\";\nexport type BadgeVariant = \"filled\" | \"outline\";\n\nexport const badgeRecipe = {\n slots: [\"root\", \"icon\", \"label\"] as const,\n defaults: { tone: \"neutral\", size: \"medium\", variant: \"filled\" },\n variants: {\n filled: {\n usesToneBackground: true,\n borderFallback: null,\n },\n outline: {\n usesToneBackground: false,\n borderFallback: semanticColors.border.default,\n },\n },\n tones: {\n neutral: {\n content: semanticColors.content.secondary,\n outlineContent: semanticColors.content.secondary,\n background: semanticColors.canvas,\n border: null,\n },\n strong: {\n content: semanticColors.content.inverse,\n outlineContent: semanticColors.content.primary,\n background: semanticColors.content.primary,\n border: null,\n },\n brand: {\n content: semanticColors.content.brand,\n outlineContent: semanticColors.content.brand,\n // The brand tint now means \"selected\" everywhere (see\n // `selectionControlRecipe`/`segmentedControlRecipe`), so a badge that\n // only labels something — a season, a grade, a question number —\n // cannot wear it: rows of static badges started reading as a filter\n // with one option switched on. The plate goes neutral and the brand\n // stays in the copy.\n background: semanticColors.canvas,\n border: null,\n },\n info: {\n content: semanticColors.feedback.info.foreground,\n outlineContent: semanticColors.feedback.info.foreground,\n background: semanticColors.canvas,\n border: semanticColors.feedback.info.border,\n },\n success: {\n content: semanticColors.feedback.success.foreground,\n outlineContent: semanticColors.feedback.success.foreground,\n background: semanticColors.feedback.success.badgeBackground,\n border: semanticColors.feedback.success.border,\n },\n warning: {\n content: semanticColors.feedback.warning.foreground,\n outlineContent: semanticColors.feedback.warning.foreground,\n background: semanticColors.feedback.warning.badgeBackground,\n border: semanticColors.feedback.warning.border,\n },\n attention: {\n content: semanticColors.feedback.attention.foreground,\n outlineContent: semanticColors.feedback.attention.foreground,\n background: semanticColors.feedback.attention.badgeBackground,\n border: semanticColors.feedback.attention.border,\n },\n danger: {\n content: semanticColors.feedback.danger.foreground,\n outlineContent: semanticColors.feedback.danger.foreground,\n background: semanticColors.feedback.danger.badgeBackground,\n border: semanticColors.feedback.danger.border,\n },\n },\n sizes: {\n small: {\n minHeight: 20,\n paddingHorizontal: spacing.xxs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n medium: {\n minHeight: 24,\n paddingHorizontal: spacing.xs,\n gap: spacing.xxs,\n textVariant: \"caption\",\n },\n },\n radius: \"full\",\n borderWidth: stroke.default,\n fontWeight: fontWeight.bold,\n} as const;\n\nexport type SearchFieldSize = \"medium\" | \"large\";\n\n/** Search is a field specialization with stable affordance and clear targets. */\nexport const searchFieldRecipe = {\n slots: [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"] as const,\n defaults: { size: \"medium\", shape: \"medium\" },\n sizes: {\n medium: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n gap: spacing.xs,\n glyph: \"sm\",\n clearDiameter: 36,\n clearHitSlop: 4,\n textVariant: \"body\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.md,\n gap: spacing.sm,\n glyph: \"sm\",\n clearDiameter: control.minTouchTarget,\n clearHitSlop: 0,\n textVariant: \"bodyLarge\",\n },\n },\n colors: {\n background: semanticColors.canvas,\n content: semanticColors.content.primary,\n placeholder: semanticColors.content.secondary,\n leading: semanticColors.content.decorative,\n clear: semanticColors.content.secondary,\n border: semanticColors.border.control,\n focus: focusIndicatorContract.color,\n invalid: semanticColors.border.danger,\n },\n /**\n * 모양은 **축이다** — 값 하나로 못 박지 않는다.\n *\n * 원래 여기는 `radius: \"full\"` 하나였다. 그런데 `fieldRecipe`는 같은 결정을\n * `shapes: { medium, large, full }` 축으로 열어 두고 있었고, 그래서 **한 앱 안에서\n * 평범한 입력과 찾기 입력이 서로 다른 모양이 되는 것을 계약이 막지 못했다.** 실제로\n * 갈라졌다 — app-rn은 `\"md\"`로 그리고 있었는데 이 계약은 `\"full\"`이라고 말하고\n * 있었고, 어느 쪽이 옳은지 양쪽 문서 어디에도 없었다.\n *\n * 찾기 입력이 알약이어야 하는지는 **제품이 정할 일**이고(iOS 관례는 알약, 이 앱은\n * 사각), 계약이 할 일은 그 선택지를 `fieldRecipe`와 **같은 이름으로** 주는 것이다.\n * 그러면 두 입력의 모양을 나란히 맞추는 것과 일부러 다르게 하는 것이 둘 다 표현된다.\n */\n shapes: { medium: \"md\", large: \"lg\", full: \"full\" },\n borderWidth: stroke.default,\n focusRingWidth: focusIndicatorContract.width,\n focusRingOffset: focusIndicatorContract.offset,\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n} as const satisfies {\n slots: readonly [\"root\", \"leading\", \"input\", \"trailing\", \"clear\", \"spinner\"];\n defaults: { size: SearchFieldSize; shape: \"medium\" | \"large\" | \"full\" };\n sizes: Record<\n SearchFieldSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n gap: number;\n glyph: GlyphSize;\n clearDiameter: number;\n clearHitSlop: number;\n textVariant: TextVariant;\n }\n >;\n colors: Record<\n \"background\" | \"content\" | \"placeholder\" | \"leading\" | \"clear\" | \"border\" | \"focus\" | \"invalid\",\n ColorReference\n >;\n shapes: Record<\"medium\" | \"large\" | \"full\", keyof typeof radius>;\n borderWidth: number;\n focusRingWidth: number;\n focusRingOffset: number;\n states: { disabledOpacity: number; pressedOpacity: number };\n};\n\nexport type ChipSize = keyof typeof control.chipHeight;\n\nexport const chipRecipe = {\n slots: [\"root\", \"leading\", \"indicator\", \"label\", \"trailing\"] as const,\n defaults: { size: \"small\", selected: false },\n sizes: {\n small: {\n height: control.chipHeight.small,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n gap: spacing.xxs,\n textVariant: \"body\",\n },\n medium: {\n height: control.chipHeight.medium,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n textVariant: \"body\",\n },\n },\n states: {\n idle: {\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n // A resting chip wears the shared hairline, not a text-strength\n // outline. Drawing it in `content.secondary` made an unselected chip\n // read heavier than the selected one beside it, inverting the one\n // signal that matters in a filter row.\n border: semanticColors.border.default,\n },\n selected: {\n background: semanticColors.canvas,\n content: semanticColors.content.brand,\n border: semanticColors.border.focus,\n },\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n radius: \"full\",\n borderWidth: stroke.default,\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: {\n color: semanticColors.content.brand,\n glyph: \"xs\",\n },\n focus: focusIndicatorContract,\n} as const;\n\nexport const dividerRecipe = {\n slots: [\"root\", \"label\"] as const,\n defaults: { orientation: \"horizontal\", inset: \"none\" },\n color: semanticColors.border.default,\n thickness: stroke.subtle,\n insets: {\n none: 0,\n start: spacing.md,\n both: spacing.md,\n },\n} as const;\n\nexport const listRecipe = {\n slots: [\"root\", \"item\", \"separator\"] as const,\n defaults: { separator: \"indented\" },\n separators: {\n none: null,\n full: { insetStart: 0, insetEnd: 0 },\n indented: { insetStart: 40 + spacing.sm, insetEnd: 0 },\n },\n background: null,\n} as const;\n\nexport type ListRowDensity = \"compact\" | \"comfortable\" | \"relaxed\" | \"spacious\";\n/** Frame geometry the ListRow paints around its leading slot. */\nexport type ListRowLeadingShape = \"square\" | \"circle\";\n\nexport const listRowRecipe = {\n slots: [\"root\", \"leading\", \"content\", \"title\", \"description\", \"trailing\"] as const,\n defaults: { density: \"comfortable\", selected: false },\n density: {\n compact: {\n oneLineMinHeight: control.minTouchTarget,\n twoLineMinHeight: 60,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xxs,\n },\n comfortable: {\n oneLineMinHeight: layout.rowHeight.singleLine,\n twoLineMinHeight: layout.rowHeight.twoLine,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xs,\n },\n /*\n 토스 TDS의 ListRow는 세로 여백을 네 단계로 둔다. HJM이 두 단계만 갖고 있던 동안\n 제품은 그 사이 값을 제품 CSS로 만들었다(설정 목록은 넓게, 검색 결과는 좁게).\n 숫자는 이미 있는 spacing 스케일(sm/md)을 그대로 쓰고 새 값을 만들지 않는다.\n 최소 높이는 여백에 맞춰 함께 올라간다 — 여백만 키우면 한 줄 행이 위아래로 치우친다.\n */\n relaxed: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.xs,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.xs,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.sm,\n },\n spacious: {\n oneLineMinHeight: layout.rowHeight.singleLine + spacing.md,\n twoLineMinHeight: layout.rowHeight.twoLine + spacing.md,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.md,\n },\n },\n gap: spacing.sm,\n leadingSize: 40,\n /**\n * Frame geometry for the leading slot. The size was already declared here but\n * no renderer bound it, so every consumer re-derived the avatar box (radius,\n * clipping, centering) in product styles.\n */\n leadingShapes: { square: null, circle: \"full\" },\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.secondary, textVariant: \"body\" },\n trailing: {\n textColor: semanticColors.content.secondary,\n iconColor: semanticColors.content.decorative,\n glyph: \"sm\",\n textVariant: \"caption\",\n },\n states: {\n pressedBackground: semanticColors.canvas,\n selectedBackground: semanticColors.canvas,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: ListRowDensity; selected: boolean };\n density: Record<ListRowDensity, {\n oneLineMinHeight: number;\n twoLineMinHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n }>;\n gap: number;\n leadingSize: number;\n leadingShapes: Record<ListRowLeadingShape, keyof typeof radius | null>;\n title: unknown;\n description: unknown;\n trailing: unknown;\n states: unknown;\n};\n\nexport type AccordionDensity = \"compact\" | \"comfortable\";\n\nexport const accordionRecipe = {\n slots: [\"root\", \"item\", \"header\", \"trigger\", \"title\", \"indicator\", \"panel\", \"divider\"] as const,\n defaults: { density: \"comfortable\", allowsMultipleExpanded: false },\n density: {\n compact: { triggerMinHeight: control.minTouchTarget, paddingVertical: spacing.xs },\n comfortable: { triggerMinHeight: layout.rowHeight.singleLine, paddingVertical: spacing.sm },\n },\n paddingHorizontal: spacing.xs,\n gap: spacing.sm,\n title: { color: semanticColors.content.body, textVariant: \"bodyLarge\", fontWeight: fontWeight.bold },\n indicator: { color: semanticColors.content.secondary, glyph: \"sm\" },\n panel: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n paddingBottom: spacing.md,\n paddingInlineStart: spacing.xs,\n },\n divider: semanticColors.border.default,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n transition: motionPreset.enter,\n} as const;\n\nexport type MenuItemTone = \"neutral\" | \"danger\";\n\nexport const menuRecipe = {\n slots: [\n \"trigger\",\n \"content\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"item\",\n \"leading\",\n \"copy\",\n \"label\",\n \"description\",\n \"trailing\",\n \"shortcut\",\n \"indicator\",\n \"dangerIndicator\",\n \"separator\",\n ] as const,\n defaults: { density: \"comfortable\", itemTone: \"neutral\" },\n surface: floatingSurfaceContract,\n density: {\n compact: { ...collectionItemContract, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, minHeight: layout.rowHeight.singleLine },\n },\n tones: {\n neutral: collectionItemContract.label.color,\n danger: collectionItemContract.danger,\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n leading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n shortcut: { color: semanticColors.content.secondary, textVariant: \"caption\" },\n indicator: { color: collectionItemContract.selectedIndicator, glyph: \"sm\" },\n separator: semanticColors.border.default,\n dangerIndicator: {\n color: collectionItemContract.danger,\n glyph: \"sm\",\n mark: \"alert\",\n },\n minWidth: 220,\n maxWidth: 320,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n states: { disabledOpacity: opacity.disabled },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const satisfies {\n slots: readonly string[];\n defaults: { density: \"compact\" | \"comfortable\"; itemTone: MenuItemTone };\n surface: typeof floatingSurfaceContract;\n density: Record<\n \"compact\" | \"comfortable\",\n Omit<typeof collectionItemContract, \"minHeight\"> & { minHeight: number }\n >;\n tones: Record<MenuItemTone, ColorReference>;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n leading: { color: ColorReference; glyph: GlyphSize };\n shortcut: { color: ColorReference; textVariant: TextVariant };\n indicator: { color: ColorReference; glyph: GlyphSize };\n separator: ColorReference;\n dangerIndicator: {\n color: ColorReference;\n glyph: GlyphSize;\n mark: \"alert\";\n };\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n states: { disabledOpacity: number };\n transition: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n};\n\nexport type MenuDensity = keyof typeof menuRecipe.density;\n\nexport type SelectSize = \"medium\" | \"large\";\nexport type SelectDensity = \"compact\" | \"comfortable\";\n\n/**\n * Select is visually one field plus one collection, even though Web renders\n * the collection in a popover and Native renders it in a modal sheet.\n */\nexport const selectRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"trigger\",\n \"leading\",\n \"value\",\n \"placeholder\",\n \"busyIndicator\",\n \"indicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: { size: \"medium\", density: \"comfortable\" },\n adaptive: { web: \"popover\", native: \"sheet\" },\n frame: fieldFrameContract,\n sizes: {\n medium: {\n minHeight: fieldFrameContract.minHeight,\n paddingHorizontal: fieldFrameContract.paddingHorizontal,\n textVariant: \"body\",\n glyph: \"sm\",\n },\n large: {\n minHeight: control.buttonHeight.large,\n paddingHorizontal: spacing.lg,\n textVariant: \"bodyLarge\",\n glyph: \"md\",\n },\n },\n support: formSupportContract,\n value: {\n color: semanticColors.content.body,\n placeholderColor: semanticColors.content.secondary,\n gap: spacing.sm,\n },\n leading: { color: semanticColors.content.secondary },\n indicator: { color: semanticColors.content.secondary },\n busyIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: {\n ...floatingSurfaceContract,\n minWidth: 220,\n maxWidth: 420,\n maxHeight: 360,\n sideOffset: spacing.xs,\n collisionPadding: spacing.xs,\n },\n density: {\n compact: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: control.minTouchTarget },\n comfortable: { ...collectionItemContract, selectedBackground: semanticColors.canvas, highlightedBackground: semanticColors.canvas, minHeight: layout.rowHeight.singleLine },\n },\n sectionLabel: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n },\n optionLeading: { color: semanticColors.content.secondary, glyph: \"sm\" },\n optionLabel: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n selectionIndicator: { color: semanticColors.border.focus, glyph: \"sm\" },\n stateMessage: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.sm,\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n invalidBorder: semanticColors.border.danger,\n disabledOpacity: opacity.disabled,\n },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { size: SelectSize; density: SelectDensity };\n adaptive: { web: \"popover\"; native: \"sheet\" };\n frame: typeof fieldFrameContract;\n sizes: Record<\n SelectSize,\n {\n minHeight: number;\n paddingHorizontal: number;\n textVariant: TextVariant;\n glyph: GlyphSize;\n }\n >;\n support: typeof formSupportContract;\n value: { color: ColorReference; placeholderColor: ColorReference; gap: number };\n leading: { color: ColorReference };\n indicator: { color: ColorReference };\n busyIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof floatingSurfaceContract & {\n minWidth: number;\n maxWidth: number;\n maxHeight: number;\n sideOffset: number;\n collisionPadding: number;\n };\n density: Record<\n SelectDensity,\n Omit<typeof collectionItemContract, \"minHeight\" | \"selectedBackground\" | \"highlightedBackground\"> & { minHeight: number; selectedBackground: ColorReference; highlightedBackground: ColorReference }\n >;\n sectionLabel: {\n color: ColorReference;\n textVariant: TextVariant;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n optionLeading: { color: ColorReference; glyph: GlyphSize };\n optionLabel: { fontWeight: FontWeightValue; selectedFontWeight: FontWeightValue };\n selectionIndicator: { color: ColorReference; glyph: GlyphSize };\n stateMessage: {\n color: ColorReference;\n textVariant: TextVariant;\n minHeight: number;\n paddingHorizontal: number;\n paddingVertical: number;\n };\n states: {\n hoverBackground: ColorReference;\n pressedBackground: ColorReference;\n focus: typeof focusIndicatorContract;\n invalidBorder: ColorReference;\n disabledOpacity: number;\n };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\n/** Editable input anatomy layered on the exact same collection grammar. */\nexport const comboboxRecipe = {\n slots: [\n \"root\",\n \"label\",\n \"field\",\n \"leading\",\n \"input\",\n \"indicator\",\n \"clear\",\n \"loadingIndicator\",\n \"description\",\n \"error\",\n \"popover\",\n \"viewport\",\n \"section\",\n \"sectionLabel\",\n \"option\",\n \"optionLeading\",\n \"optionCopy\",\n \"optionLabel\",\n \"optionDescription\",\n \"selectionIndicator\",\n \"stateMessage\",\n ] as const,\n defaults: selectRecipe.defaults,\n adaptive: selectRecipe.adaptive,\n frame: selectRecipe.frame,\n sizes: selectRecipe.sizes,\n support: selectRecipe.support,\n input: selectRecipe.value,\n leading: selectRecipe.leading,\n indicator: selectRecipe.indicator,\n clear: {\n diameter: control.buttonHeight.small,\n hitSlop: control.buttonHitSlop.small,\n glyph: \"xs\",\n color: semanticColors.content.secondary,\n },\n loadingIndicator: { color: semanticColors.content.brand, glyph: \"sm\" },\n popover: selectRecipe.popover,\n density: selectRecipe.density,\n sectionLabel: selectRecipe.sectionLabel,\n optionLeading: selectRecipe.optionLeading,\n optionLabel: selectRecipe.optionLabel,\n selectionIndicator: selectRecipe.selectionIndicator,\n stateMessage: selectRecipe.stateMessage,\n states: selectRecipe.states,\n transition: selectRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: typeof selectRecipe.defaults;\n adaptive: typeof selectRecipe.adaptive;\n frame: typeof selectRecipe.frame;\n sizes: typeof selectRecipe.sizes;\n support: typeof selectRecipe.support;\n input: typeof selectRecipe.value;\n leading: typeof selectRecipe.leading;\n indicator: typeof selectRecipe.indicator;\n clear: { diameter: number; hitSlop: number; glyph: GlyphSize; color: ColorReference };\n loadingIndicator: { color: ColorReference; glyph: GlyphSize };\n popover: typeof selectRecipe.popover;\n density: typeof selectRecipe.density;\n sectionLabel: typeof selectRecipe.sectionLabel;\n optionLeading: typeof selectRecipe.optionLeading;\n optionLabel: typeof selectRecipe.optionLabel;\n selectionIndicator: typeof selectRecipe.selectionIndicator;\n stateMessage: typeof selectRecipe.stateMessage;\n states: typeof selectRecipe.states;\n transition: typeof selectRecipe.transition;\n};\n\nexport const segmentedControlRecipe = {\n slots: [\"root\", \"item\", \"label\", \"indicator\"] as const,\n defaults: { size: \"medium\" },\n // Category filters share the single-selection engine, with a compact surface inside a 44 target.\n // See usage/components/segmented-control.md; no separate filter-selection state is introduced.\n pills: { gap: spacing.xs, radius: radius.full, inset: spacing.xs, minHeight: control.minTouchTarget,\n selectedBackground: semanticColors.content.body, selectedContent: semanticColors.canvas },\n adaptive: {\n // Equal-width rows stop being comparable when every short label wraps one\n // Hangul syllable per line. Native renderers stack the options before that\n // point so each choice remains a readable phrase and a 44pt target.\n largeTextLayout: \"stacked\" as const,\n stackAtFontScale: largeTextThreshold,\n },\n // Track and selected segment share the canvas; the blue ring identifies the chosen option.\n container: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.subtle,\n radius: \"lg\",\n padding: spacing.xxs,\n gap: spacing.xxs,\n },\n sizes: {\n small: {\n minHeight: 36,\n hitSlop: 4,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: control.minTouchTarget,\n hitSlop: 0,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n item: {\n radius: \"md\",\n gap: spacing.xxs,\n idleContent: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n selectedBackground: semanticColors.canvas,\n selectedContent: semanticColors.content.brand,\n /**\n * The ring stays the selection signal so the control keeps a non-text\n * contrast of at least 3:1; a fill-only thumb cannot reach that against a\n * neutral track.\n */\n selectedBorder: semanticColors.border.focus,\n selectedBorderWidth: stroke.strong,\n selectedFontWeight: fontWeight.bold,\n focusRing: semanticColors.border.focus,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport const switchRecipe = {\n slots: [\"root\", \"track\", \"thumb\", \"label\", \"description\"] as const,\n defaults: { size: \"medium\" },\n // Preserve existing inline Web and full-row Native layouts. Settings can opt in\n // to one shared row without wrapping a switch in a second interactive target.\n presentationDefaults: { web: \"inline\", native: \"row\" },\n // Descriptions beside a fixed track become a narrow column at larger text sizes.\n // Reuse the provider's large-text boundary so Web CSS and Native reflow together.\n stackedTextScale: largeTextThreshold,\n sizes: {\n small: { width: 44, height: 26, thumb: 22, inset: 2 },\n medium: { width: 52, height: 32, thumb: 28, inset: 2 },\n },\n colors: {\n // The off state is two unsaturated planes — a `surfaceAlt` track holding a `bg`\n // thumb — so on a dark palette both collapse into the card behind them: measured\n // 1.10:1 track-to-surface and 1.20:1 thumb-to-track on the canonical dark theme,\n // where the thumb is actually *darker* than its own track. The `*OffBorder`\n // hairlines are what keep the shape readable, so they are part of the contract\n // rather than a renderer flourish. A consumer settings screen shipped with the web\n // renderer ignoring them and the control was invisible (2026-09-14); the web\n // stylesheet now paints them and `action-contrast.browser.test.tsx` holds the line.\n trackOff: semanticColors.surface.sunken,\n trackOffBorder: semanticColors.content.secondary,\n // A lit track is a filled brand plate, same role as a checked checkbox\n // (`selectionControlRecipe.states.checkedBackground`). Was `content.brand`, a\n // content role; both renderers painted `primary` anyway, so this is a no-op.\n trackOn: semanticColors.action.brand.background,\n trackOnBorder: semanticColors.border.focus,\n thumbOff: semanticColors.canvas,\n thumbOffBorder: semanticColors.content.secondary,\n thumbOn: semanticColors.canvas,\n // A disabled switch still has to report what it is set to, so disabled\n // state changes hue instead of fading uniformly with `states.disabledOpacity`\n // — a product author found that a flat opacity made \"on\" and \"off\" nearly\n // identical, turning a saved setting unreadable while its backing request\n // was in flight. The on track keeps a recognisable (if muted) brand wash,\n // the off track and both thumbs drop to neutral tones, and every part\n // keeps a hairline border so the shape stays legible at reduced contrast.\n trackOffDisabled: semanticColors.border.default,\n trackOffBorderDisabled: semanticColors.border.default,\n trackOnDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n trackOnBorderDisabled: { ...semanticColors.action.brand.background, alpha: 0.38 },\n thumbDisabled: semanticColors.canvas,\n thumbDisabledBorder: semanticColors.content.decorative,\n },\n states: {\n disabledOpacity: opacity.disabled,\n pressedOpacity: opacity.pressed,\n },\n rowMinHeight: control.minTouchTarget,\n // A switch with a description is a two-line row like any other list row,\n // and a product author found that letting content decide the height gave\n // neighbouring rows different heights — this pins it to the same value as\n // `listRowRecipe.density.comfortable.twoLineMinHeight`.\n rowTwoLineMinHeight: 68,\n} as const;\n\nexport type SelectionControlKind = \"checkbox\" | \"radio\";\n\nexport const selectionControlRecipe = {\n slots: [\n \"root\",\n \"control\",\n \"indicator\",\n \"leading\",\n \"content\",\n \"label\",\n \"description\",\n ] as const,\n defaults: { kind: \"checkbox\", size: \"medium\", presentation: \"card\" },\n sizes: {\n small: {\n rowMinHeight: control.minTouchTarget,\n control: 20,\n hitSlop: 12,\n glyph: \"xs\",\n gap: spacing.xs,\n paddingHorizontal: spacing.sm,\n paddingVertical: spacing.xs,\n labelVariant: \"label\",\n descriptionVariant: \"caption\",\n },\n medium: {\n rowMinHeight: layout.rowHeight.singleLine,\n control: control.selectionIndicator,\n hitSlop: 10,\n glyph: \"sm\",\n gap: spacing.sm,\n paddingHorizontal: spacing.md,\n paddingVertical: spacing.sm,\n labelVariant: \"body\",\n descriptionVariant: \"label\",\n },\n },\n shapes: { checkbox: \"sm\", radio: \"full\" },\n presentations: {\n plain: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"md\",\n useSizePadding: false,\n labelColor: null,\n },\n card: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n useSizePadding: true,\n labelColor: null,\n },\n // A row inside a card shared by the whole group (paired with\n // `selectionGroupRecipe.orientations.*.gap.grouped`). The item owns its\n // own padding so the selected fill runs the full width of the group, and\n // only the first and last rows round — an item-level radius on every row\n // left a visible white sliver in the group's corners. `labelColor` is\n // pinned here (rather than left to the row) because a grouped row's\n // label sits directly on the shared card background, not on its own\n // plate — the row needs to know the label reads correctly there.\n grouped: {\n background: null,\n border: null,\n borderWidth: 0,\n radius: \"lg\",\n useSizePadding: true,\n labelColor: semanticColors.content.primary,\n },\n },\n label: {\n color: semanticColors.content.body,\n fontWeight: fontWeight.semibold,\n checkedFontWeight: fontWeight.bold,\n },\n leading: { size: \"md\", color: semanticColors.content.secondary },\n description: { color: semanticColors.content.secondary },\n indicators: {\n checkbox: { checked: \"check\", mixed: \"dash\" },\n radio: { checked: \"dot\", mixed: null },\n },\n radioDotRatio: 0.42,\n states: {\n idleBackground: semanticColors.canvas,\n idleBorder: semanticColors.content.secondary,\n checkedBackground: semanticColors.action.brand.background,\n checkedBorder: semanticColors.border.focus,\n indicator: semanticColors.action.brand.content,\n // Keep the entire choice plate white; border and checked indicator carry selection.\n selectedBackground: semanticColors.canvas,\n selectedBorder: semanticColors.border.focus,\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n invalidBorder: semanticColors.border.danger,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\n/**\n * Persistent top-level navigation. The recipe reserves an optional center gap\n * for a sibling primary action but never treats that action as a destination.\n */\nexport const bottomNavigationRecipe = {\n slots: [\n \"root\",\n \"surface\",\n \"list\",\n \"item\",\n \"indicator\",\n \"icon\",\n \"label\",\n \"badge\",\n ] as const,\n defaults: bottomNavigationRecipeDefaults,\n adaptive: {\n web: \"fixed-compact-viewport\",\n native: \"navigator-tab-bar\",\n },\n presentations: {\n capsule: {\n background: semanticColors.surface.default,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"full\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 480,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n bar: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"block-start\"] as const,\n radius: null,\n shadow: null,\n maxWidth: null,\n outerPaddingHorizontal: 0,\n outerPaddingTop: 0,\n },\n floating: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n borderEdges: [\"all\"] as const,\n radius: \"xl\" as const,\n shadow: floatingSurfaceContract.shadow,\n maxWidth: 384,\n outerPaddingHorizontal: spacing.md,\n outerPaddingTop: spacing.xs,\n },\n },\n distributions: {\n equal: { centerGap: 0, requiresEvenItemCount: false },\n \"center-gap\": {\n centerGap: control.buttonHeight.large + spacing.md,\n requiresEvenItemCount: true,\n },\n },\n density: {\n compact: {\n itemMinWidth: 52,\n itemMinHeight: 52,\n padding: spacing.xxs,\n gap: 2,\n icon: \"sm\" as const,\n label: \"caption\" as const,\n },\n regular: {\n itemMinWidth: 56,\n itemMinHeight: 64,\n padding: spacing.xs,\n gap: spacing.xxs,\n icon: \"md\" as const,\n label: \"caption\" as const,\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selectedIcon: semanticColors.content.brand,\n selectedLabel: semanticColors.content.brand,\n },\n /**\n * Stable icon/badge layout anchor. Selection never paints this slot as a\n * pill: the icon and label below own the non-color selected evidence.\n */\n indicator: {\n minWidth: 40,\n minHeight: 28,\n radius: \"full\" as const,\n visual: \"none\" as const,\n background: null,\n border: null,\n borderWidth: 0,\n },\n icon: {\n /**\n * Adapters apply at least one supported emphasis. Stroke-oriented glyphs\n * use strokeWidth; renderers without stroke control use scale instead.\n */\n selectedEmphasis: {\n minimumAdaptations: 1,\n strokeWidth: { idle: stroke.strong, selected: 3 },\n scale: { idle: 1, selected: 1.06 },\n },\n },\n label: {\n fontWeight: fontWeight.semibold,\n selectedFontWeight: fontWeight.bold,\n textAlign: \"center\",\n wrap: true,\n fixedLines: null,\n },\n badge: {\n size: \"small\" as const,\n variant: \"floating\" as const,\n anchor: { blockStart: -spacing.xxs, inlineEnd: -spacing.xs },\n subtreeHiddenFromAccessibility: true,\n },\n safeArea: {\n mode: \"additive\",\n minimumBottomPadding: spacing.xs,\n },\n keyboard: { defaultBehavior: \"hide\", movesAboveKeyboard: false },\n largeText: {\n allowFontScaling: true,\n // Persistent navigation has to keep every destination visible at once.\n // Let labels respond to Dynamic Type, but cap the visual chrome before a\n // three-character destination turns into a three-line column. The full,\n // uncapped label remains the item's accessible name.\n maxFontSizeMultiplier: 1.4,\n fixedItemHeight: false,\n labelWraps: true,\n },\n direction: {\n itemOrder: \"logical\",\n badgeAnchor: \"inline-end\",\n },\n states: {\n hoverBackground: semanticColors.canvas,\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n selectedNonColorEvidence: {\n target: \"icon-and-label\" as const,\n label: \"font-weight\" as const,\n icon: \"emphasis\" as const,\n },\n selectedFocusSeparation: {\n selectedTarget: \"icon-and-label\" as const,\n focusTarget: \"item\",\n minimumGap: focusIndicatorContract.offset,\n },\n },\n transition: motionPreset.micro,\n} as const;\n\nexport const tabsRecipe = {\n slots: [\"root\", \"list\", \"tab\", \"label\", \"indicator\", \"panel\"] as const,\n defaults: { size: \"medium\", layout: \"content\", overflow: \"scroll\" },\n sizes: {\n small: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.sm,\n textVariant: \"label\",\n },\n medium: {\n minHeight: 48,\n paddingHorizontal: spacing.md,\n textVariant: \"body\",\n },\n },\n colors: {\n idle: semanticColors.content.secondary,\n selected: semanticColors.content.primary,\n indicator: semanticColors.border.focus,\n divider: semanticColors.border.default,\n },\n gap: spacing.xs,\n icon: { glyph: \"xs\" },\n label: { fontWeight: fontWeight.semibold, selectedFontWeight: fontWeight.bold },\n layouts: {\n content: { fitted: false },\n fitted: { fitted: true },\n },\n overflow: {\n scroll: { scrollable: true, wrap: false },\n clip: { scrollable: false, wrap: false },\n },\n indicatorHeight: stroke.strong,\n states: {\n pressedBackground: semanticColors.canvas,\n focus: focusIndicatorContract,\n disabledOpacity: opacity.disabled,\n },\n} as const;\n\nexport type NoticeTone = \"info\" | \"success\" | \"warning\" | \"attention\" | \"danger\";\n\nexport const noticeRecipe = {\n slots: [\"root\", \"icon\", \"content\", \"title\", \"description\", \"action\"] as const,\n defaults: { tone: \"info\" },\n tones: {\n ...semanticColors.feedback,\n info: {\n ...semanticColors.feedback.info,\n // The informational wash landed bluer and darker than the selection\n // tint itself over canvas, so a banner outranked the control the\n // reader was supposed to act on. `info` alone goes neutral — its\n // accent stays in the icon, the title, and the border; `success`/\n // `warning`/`attention`/`danger` keep the tinted surface because a\n // product author confirmed those readings didn't have the same\n // conflict with a selection state.\n background: semanticColors.canvas,\n },\n },\n radius: \"md\",\n padding: spacing.md,\n gap: spacing.sm,\n contentGap: spacing.xxs,\n iconSize: \"sm\",\n borderWidth: stroke.default,\n title: { textVariant: \"body\", fontWeight: fontWeight.bold },\n description: { color: semanticColors.content.body, textVariant: \"body\" },\n} as const;\n\nexport const skeletonRecipe = {\n slots: [\"root\"] as const,\n // animated는 0.9.12까지 false였다. 정지한 블록은 로딩이 아니라 깨진 화면으로\n // 읽힌다. 전환 근거와 소비 측 migration은\n // .changeset/skeleton-pulse-by-default.md에 있다.\n defaults: { shape: \"block\", animated: true },\n background: semanticColors.canvas,\n shapes: {\n block: { radius: \"md\", defaultHeight: spacing.xxl },\n text: { radius: \"sm\", defaultHeight: spacing.md },\n circle: { radius: \"full\", defaultHeight: glyph.xxl },\n },\n animation: {\n duration: motion.slow * 4,\n easing: \"standard\",\n fromOpacity: 0.56,\n toOpacity: 1,\n reducedMotion: \"static\",\n },\n} as const;\n\nexport const emptyStateRecipe = {\n slots: [\"root\", \"icon\", \"title\", \"description\", \"action\"] as const,\n defaults: { density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.xl },\n regular: { paddingVertical: spacing.xxxl },\n },\n paddingHorizontal: spacing.xl,\n gap: spacing.xs,\n icon: { size: \"lg\", color: semanticColors.content.decorative },\n title: { textVariant: \"body\", color: semanticColors.content.primary, fontWeight: fontWeight.semibold },\n description: { textVariant: \"label\", color: semanticColors.content.secondary },\n} as const;\n\nexport const spinnerRecipe = {\n slots: [\"root\"] as const,\n defaults: { size: \"medium\", tone: \"brand\" },\n sizes: { small: glyph.xs, medium: glyph.sm, large: glyph.lg },\n tones: {\n brand: semanticColors.content.brand,\n neutral: semanticColors.content.secondary,\n inverse: semanticColors.content.inverse,\n },\n strokeWidth: stroke.strong,\n animation: {\n duration: 800,\n easing: \"standard\",\n reducedMotion: \"static\",\n },\n} as const;\n\nexport type LoadMoreDensity = \"compact\" | \"regular\";\n\nexport const loadMoreRecipe = {\n slots: [\n \"root\",\n \"status\",\n \"spinner\",\n \"trigger\",\n \"error\",\n \"retry\",\n \"end\",\n ] as const,\n defaults: { mode: \"automatic\", density: \"regular\" },\n density: {\n compact: { paddingVertical: spacing.sm, gap: spacing.xs },\n regular: { paddingVertical: spacing.lg, gap: spacing.sm },\n },\n status: {\n color: semanticColors.content.secondary,\n textVariant: \"label\",\n },\n error: {\n color: semanticColors.content.danger,\n textVariant: \"label\",\n },\n end: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trigger: {\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n radius: \"md\",\n color: semanticColors.content.brand,\n textVariant: \"label\",\n fontWeight: fontWeight.bold,\n },\n spinner: { size: \"small\", tone: \"brand\" },\n states: {\n focus: focusIndicatorContract,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { mode: \"automatic\" | \"manual\"; density: LoadMoreDensity };\n density: Record<LoadMoreDensity, { paddingVertical: number; gap: number }>;\n status: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n end: { color: ColorReference; textVariant: TextVariant };\n trigger: {\n minHeight: number;\n paddingHorizontal: number;\n radius: keyof typeof radius;\n color: ColorReference;\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n };\n spinner: { size: SpinnerSize; tone: SpinnerTone };\n states: {\n focus: typeof focusIndicatorContract;\n pressedOpacity: number;\n disabledOpacity: number;\n };\n};\n\nexport const avatarRecipe = {\n slots: [\"root\", \"image\", \"fallback\", \"badge\", \"group\"] as const,\n /**\n * 겹쳐 쌓은 아바타 묶음이 얼마나 겹치는가. 비율로 두는 이유는 크기 축이 이미 네 단계라\n * 픽셀로 적으면 네 벌이 되기 때문이다. 남은 인원은 제품이 문구로 만든다(\"+3\").\n */\n overlapRatio: 0.3,\n defaults: { size: \"medium\", shape: \"circle\" },\n sizes: { small: 32, medium: 40, large: 48, xlarge: 64 },\n shapes: { rounded: \"md\", circle: \"full\" },\n background: semanticColors.canvas,\n content: semanticColors.content.secondary,\n border: semanticColors.border.default,\n} as const;\n\nexport type StatisticDensity = \"compact\" | \"comfortable\";\nexport type StatisticPresentation = \"plain\" | \"surface\";\n\nexport const statisticRecipe = {\n slots: [\n \"group\",\n \"root\",\n \"label\",\n \"valueRow\",\n \"prefix\",\n \"value\",\n \"suffix\",\n \"trend\",\n \"trendMark\",\n \"hint\",\n ] as const,\n defaults: { density: \"comfortable\", presentation: \"plain\", columns: 3 },\n density: {\n compact: {\n padding: spacing.sm,\n gap: spacing.xxs,\n labelVariant: \"caption\",\n valueVariant: \"title\",\n },\n comfortable: {\n padding: spacing.md,\n gap: spacing.xs,\n labelVariant: \"label\",\n valueVariant: \"heading\",\n },\n },\n presentations: {\n plain: { background: null, border: null, borderWidth: 0, radius: \"md\" },\n surface: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n radius: \"md\",\n },\n },\n group: {\n gap: spacing.xs,\n minItemWidth: 120,\n columns: [1, 2, 3, 4] as const,\n },\n label: {\n color: semanticColors.content.secondary,\n fontWeight: fontWeight.semibold,\n },\n value: {\n color: semanticColors.content.primary,\n fontWeight: fontWeight.heavy,\n numericVariant: \"tabular\",\n maxLines: null,\n },\n affix: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n fontWeight: fontWeight.semibold,\n },\n hint: {\n color: semanticColors.content.secondary,\n textVariant: \"caption\",\n },\n trend: {\n textVariant: \"caption\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n marks: {\n up: \"trendUp\",\n down: \"trendDown\",\n flat: \"trendFlat\",\n },\n tones: {\n neutral: semanticColors.content.secondary,\n success: semanticColors.feedback.success.foreground,\n warning: semanticColors.feedback.warning.foreground,\n danger: semanticColors.content.danger,\n },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: {\n density: StatisticDensity;\n presentation: StatisticPresentation;\n columns: 1 | 2 | 3 | 4;\n };\n density: Record<\n StatisticDensity,\n {\n padding: number;\n gap: number;\n labelVariant: TextVariant;\n valueVariant: TextVariant;\n }\n >;\n presentations: Record<\n StatisticPresentation,\n {\n background: ColorReference | null;\n border: ColorReference | null;\n borderWidth: number;\n radius: keyof typeof radius;\n }\n >;\n group: {\n gap: number;\n minItemWidth: number;\n columns: readonly (1 | 2 | 3 | 4)[];\n };\n label: { color: ColorReference; fontWeight: FontWeightValue };\n value: {\n color: ColorReference;\n fontWeight: FontWeightValue;\n numericVariant: \"tabular\";\n maxLines: null;\n };\n affix: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n hint: { color: ColorReference; textVariant: TextVariant };\n trend: {\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n gap: number;\n marks: Record<\"up\" | \"down\" | \"flat\", string>;\n tones: Record<\"neutral\" | \"success\" | \"warning\" | \"danger\", ColorReference>;\n };\n};\n\nexport const sheetRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"handle\", \"header\", \"title\", \"body\", \"footer\", \"close\"] as const,\n defaults: { placement: \"bottom\", size: \"auto\" },\n /**\n * How tall the sheet opens. `auto` keeps the content-driven height that the\n * recipe already caps with `maxHeightRatio`. The fixed steps exist because\n * consumers otherwise reach for `contentStyle={{ height }}`, which moves a\n * recipe-owned dimension into product code.\n */\n sizes: {\n auto: null,\n medium: 0.6,\n large: 0.85,\n full: 1,\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"xl\",\n shadow: floatingSurfaceContract.shadow,\n /** Caps `size=\"auto\"` only; fixed `sizes` (medium/large/full) are bounded by the safe-area viewport instead. */\n maxHeightRatio: 0.9,\n paddingHorizontal: spacing.lg,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n },\n web: { maxWidth: 640 },\n safeArea: {\n edge: \"bottom\",\n mode: \"additive\",\n minimumPadding: spacing.sm,\n },\n handle: {\n width: 36,\n height: 4,\n radius: \"full\",\n color: semanticColors.content.secondary,\n visibleByDefault: false,\n showWhen: \"swipe-dismiss-enabled\",\n },\n header: { minHeight: control.minTouchTarget, gap: spacing.sm },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n gap: spacing.xxs,\n },\n body: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.md,\n },\n footer: {\n color: semanticColors.content.body,\n textVariant: \"body\",\n gap: spacing.sm,\n paddingTop: spacing.sm,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\nexport const dialogRecipe = {\n slots: [\"backdrop\", \"positioner\", \"content\", \"header\", \"title\", \"description\", \"body\", \"footer\", \"close\"] as const,\n defaults: { size: \"medium\", dismissible: true },\n sizes: {\n small: { maxWidth: 320, padding: spacing.lg },\n medium: { maxWidth: 420, padding: spacing.xl },\n large: { maxWidth: 640, padding: spacing.xl },\n },\n backdrop: backdrop.modal,\n content: {\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: floatingSurfaceContract.borderWidth,\n radius: \"lg\",\n gap: spacing.md,\n shadow: floatingSurfaceContract.shadow,\n },\n transition: { enter: motionPreset.enter, exit: motionPreset.exit },\n} as const;\n\n/**\n * Tone is the dialog's reason for interrupting, not its decoration.\n *\n * `attention` and `danger` covered \"are you sure?\" and \"this destroys\n * something\", but consumers also stop the user to *explain* an action before\n * running it — an intro before a button that copies content into the account,\n * or a confirmation that something finished. Those were shipping with the\n * attention mark, so a neutral explanation read as a warning (reported by a\n * product team on 2026-09-15). `info` and `success` carry the existing feedback\n * accents so the axis stays one token lookup per renderer.\n */\nexport type AlertDialogTone = \"attention\" | \"danger\" | \"info\" | \"success\";\n\nexport const alertDialogRecipe = {\n slots: [\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"icon\",\n \"title\",\n \"description\",\n \"status\",\n \"error\",\n \"actions\",\n \"cancel\",\n \"confirm\",\n ] as const,\n defaults: { tone: \"attention\", size: \"small\" },\n sizes: dialogRecipe.sizes,\n backdrop: dialogRecipe.backdrop,\n content: dialogRecipe.content,\n tones: {\n attention: {\n icon: semanticColors.feedback.attention.foreground,\n iconBackground: semanticColors.feedback.attention.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n danger: {\n icon: semanticColors.content.danger,\n iconBackground: semanticColors.feedback.danger.background,\n confirm: semanticColors.action.danger.background,\n confirmContent: semanticColors.action.danger.content,\n },\n // Explanation and completion keep the brand confirm button: the action they\n // introduce is the ordinary one, only the mark and its wash change.\n info: {\n icon: semanticColors.feedback.info.foreground,\n iconBackground: semanticColors.feedback.info.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n success: {\n icon: semanticColors.feedback.success.foreground,\n iconBackground: semanticColors.feedback.success.background,\n confirm: semanticColors.action.brand.background,\n confirmContent: semanticColors.action.brand.content,\n },\n },\n icon: { containerSize: control.minTouchTarget, glyph: \"md\", radius: \"full\" },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"title\",\n fontWeight: fontWeight.bold,\n },\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n error: formSupportContract.error,\n // Stacked: confirm on top, cancel below, tighter gap (reported 2026-09-27). Row stays [cancel][confirm].\n actions: {\n gap: spacing.sm,\n stackedGap: spacing.xs,\n stackedOrder: \"confirm-first\",\n stackBelow: breakpoint.medium,\n minButtonWidth: 96,\n },\n transition: dialogRecipe.transition,\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: AlertDialogTone; size: DialogSize };\n sizes: typeof dialogRecipe.sizes;\n backdrop: typeof dialogRecipe.backdrop;\n content: typeof dialogRecipe.content;\n tones: Record<\n AlertDialogTone,\n {\n icon: ColorReference;\n iconBackground: ColorReference;\n confirm: ColorReference;\n confirmContent: ColorReference;\n }\n >;\n icon: { containerSize: number; glyph: GlyphSize; radius: keyof typeof radius };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n error: { color: ColorReference; textVariant: TextVariant };\n actions: {\n gap: number;\n stackedGap: number;\n stackedOrder: \"confirm-first\";\n stackBelow: number;\n minButtonWidth: number;\n };\n transition: typeof dialogRecipe.transition;\n};\n\nexport type ToastPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\";\nexport type ToastTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type ToastToneMark =\n | \"notifications\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"alert\";\n\nexport const toastRecipe = {\n slots: [\n \"viewport\",\n \"root\",\n \"toneMark\",\n \"icon\",\n \"content\",\n \"title\",\n \"description\",\n \"action\",\n \"close\",\n ] as const,\n defaults: { tone: \"neutral\", placement: \"bottom\", durationMs: 3000 },\n adaptive: { web: \"fixed-viewport\", native: \"safe-area-overlay\" },\n viewport: {\n layer: layer.toast,\n gap: spacing.sm,\n inset: spacing.md,\n maxWidth: 420,\n safeAreaMode: \"additive\",\n },\n placements: {\n top: { blockEdge: \"top\", inlineEdge: \"center\", stackFrom: \"top\" },\n \"top-start\": { blockEdge: \"top\", inlineEdge: \"start\", stackFrom: \"top\" },\n \"top-end\": { blockEdge: \"top\", inlineEdge: \"end\", stackFrom: \"top\" },\n bottom: { blockEdge: \"bottom\", inlineEdge: \"center\", stackFrom: \"bottom\" },\n \"bottom-start\": { blockEdge: \"bottom\", inlineEdge: \"start\", stackFrom: \"bottom\" },\n \"bottom-end\": { blockEdge: \"bottom\", inlineEdge: \"end\", stackFrom: \"bottom\" },\n },\n // 1.10.0: tone is carried by a tinted icon badge, not a 2px edge strip — the strip plus a bare glyph read\n // as a grey dot on neutral toasts (BurnTok 2026-09-30 feedback \"알림 ui 구려\"). `badge` is the badge fill.\n tones: {\n neutral: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.secondary,\n badge: semanticColors.surface.sunken,\n mark: \"notifications\",\n },\n info: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.info.foreground,\n badge: semanticColors.feedback.info.badgeBackground,\n mark: \"info\",\n },\n success: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.success.foreground,\n badge: semanticColors.feedback.success.badgeBackground,\n mark: \"success\",\n },\n warning: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.feedback.warning.foreground,\n badge: semanticColors.feedback.warning.badgeBackground,\n mark: \"warning\",\n },\n danger: {\n foreground: semanticColors.content.primary,\n accent: semanticColors.content.danger,\n badge: semanticColors.feedback.danger.badgeBackground,\n mark: \"alert\",\n },\n },\n surface: {\n background: semanticColors.canvas,\n // Strong border stays: the card boundary must keep 3:1 against the page (toast.test.ts, WCAG 1.4.11).\n // 1.10.0 only softens the shape (lg radius).\n border: semanticColors.border.strong,\n borderWidth: stroke.default,\n radius: \"lg\",\n shadow: floatingSurfaceContract.shadow,\n minHeight: layout.rowHeight.singleLine,\n padding: spacing.md,\n gap: spacing.sm,\n maxWidth: 420,\n },\n // Retired in 1.10.0 (width 0): the icon badge carries tone. Kept so the slot contract stays additive.\n toneMark: { width: 0, radius: \"full\" },\n icon: { glyph: \"sm\", badgeDiameter: 32, badgeRadius: \"full\" },\n content: { gap: spacing.xxs },\n title: {\n color: semanticColors.content.primary,\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n },\n // Secondary copy so the title leads; body-on-body read as one grey block.\n description: {\n color: semanticColors.content.secondary,\n textVariant: \"body\",\n },\n // 1.10.0: a tinted pill button aligned to the end instead of a bare text link, so the one thing a toast\n // asks for is recognisable as a control. Hit area stays the 44pt touch target.\n action: {\n color: semanticColors.content.brand,\n background: semanticColors.surface.brand,\n radius: \"full\",\n align: \"end\",\n textVariant: \"body\",\n fontWeight: fontWeight.bold,\n minHeight: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n },\n close: {\n color: semanticColors.content.secondary,\n diameter: control.minTouchTarget,\n glyph: \"xs\",\n },\n states: {\n pressedOpacity: opacity.pressed,\n draggedOpacity: opacity.dragged,\n focus: focusIndicatorContract,\n },\n gesture: { dismissThreshold: 50 },\n transition: {\n web: { enter: motionPreset.micro, exit: motionPreset.exit },\n native: { enter: motionPreset.enter, exit: motionPreset.exit },\n },\n} as const satisfies {\n slots: readonly string[];\n defaults: { tone: ToastTone; placement: ToastPlacement; durationMs: number };\n adaptive: { web: \"fixed-viewport\"; native: \"safe-area-overlay\" };\n viewport: {\n layer: number;\n gap: number;\n inset: number;\n maxWidth: number;\n safeAreaMode: \"additive\";\n };\n placements: Record<\n ToastPlacement,\n {\n blockEdge: \"top\" | \"bottom\";\n inlineEdge: \"start\" | \"center\" | \"end\";\n stackFrom: \"top\" | \"bottom\";\n }\n >;\n tones: Record<\n ToastTone,\n { foreground: ColorReference; accent: ColorReference; badge: ColorReference; mark: ToastToneMark }\n >;\n surface: {\n background: ColorReference;\n border: ColorReference;\n borderWidth: number;\n radius: keyof typeof radius;\n shadow: typeof floatingSurfaceContract.shadow;\n minHeight: number;\n padding: number;\n gap: number;\n maxWidth: number;\n };\n toneMark: { width: number; radius: keyof typeof radius };\n icon: { glyph: GlyphSize; badgeDiameter: number; badgeRadius: keyof typeof radius };\n content: { gap: number };\n title: { color: ColorReference; textVariant: TextVariant; fontWeight: FontWeightValue };\n description: { color: ColorReference; textVariant: TextVariant };\n action: {\n color: ColorReference;\n background: ColorReference;\n radius: keyof typeof radius;\n align: \"start\" | \"end\";\n textVariant: TextVariant;\n fontWeight: FontWeightValue;\n minHeight: number;\n paddingHorizontal: number;\n };\n close: { color: ColorReference; diameter: number; glyph: GlyphSize };\n states: {\n pressedOpacity: number;\n draggedOpacity: number;\n focus: typeof focusIndicatorContract;\n };\n gesture: { dismissThreshold: number };\n transition: {\n web: { enter: typeof motionPreset.micro; exit: typeof motionPreset.exit };\n native: { enter: typeof motionPreset.enter; exit: typeof motionPreset.exit };\n };\n};\n\nexport const tooltipRecipe = {\n slots: [\"provider\", \"trigger\", \"content\", \"arrow\"] as const,\n defaults: tooltipDescriptorDefaults,\n layer: layer.tooltip,\n surface: {\n ...floatingSurfaceContract,\n background: semanticColors.content.primary,\n border: semanticColors.content.primary,\n radius: \"sm\" as const,\n padding: spacing.xs,\n },\n content: {\n color: semanticColors.canvas,\n textVariant: \"label\",\n maxWidth: 280,\n },\n arrow: {\n width: 10,\n height: 5,\n color: semanticColors.content.primary,\n padding: spacing.xs,\n },\n positioning: {\n sideOffset: spacing.xxs,\n collisionPadding: spacing.sm,\n },\n transition: { enter: motionPreset.micro, exit: motionPreset.exit },\n} as const;\n\nexport const topBarRecipe = {\n slots: [\n \"root\",\n \"leading\",\n \"title\",\n \"titleLeading\",\n \"titleAction\",\n \"trailing\",\n \"action\",\n \"actionLabel\",\n ] as const,\n defaults: { centered: true },\n minHeight: control.buttonHeight.large,\n sideMinWidth: control.minTouchTarget,\n paddingHorizontal: spacing.md,\n gap: spacing.xs,\n largeTextThreshold,\n title: { textVariant: \"bodyLarge\", color: semanticColors.content.primary, fontWeight: fontWeight.bold },\n titleAction: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xs,\n pressedOpacity: opacity.pressed,\n },\n action: {\n minHeight: control.minTouchTarget,\n minWidth: control.minTouchTarget,\n gap: spacing.xxs,\n paddingHorizontal: spacing.xxs,\n pressedOpacity: opacity.pressed,\n disabledOpacity: opacity.disabled,\n },\n actionLabel: {\n textVariant: \"caption\",\n color: semanticColors.content.primary,\n fontWeight: fontWeight.medium,\n },\n background: semanticColors.canvas,\n} as const;\n\nexport const bottomCtaRecipe = {\n slots: [\"root\", \"description\", \"secondaryAction\", \"primaryAction\"] as const,\n minHeight: 64,\n paddingHorizontal: layout.pagePadding.regular,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n gap: spacing.sm,\n // A footer painted in the canvas tone left only a 1pt hairline between it\n // and the content scrolling underneath — a product author found that the\n // line cut a glyph in half at whatever scroll position the reader stopped\n // at, reading as a broken card rather than a footer. Layering by surface\n // (one step up from canvas) instead of by shadow alone is how this\n // component builds the separation; `shadow` below is reserved for the one\n // case that still needs it — see its comment.\n background: semanticColors.canvas,\n border: semanticColors.border.default,\n borderWidth: stroke.default,\n // The cut described above is the scroll viewport's edge, not a spacing\n // problem — content clips mid-glyph, and a hairline between two\n // similarly-light planes can't carry that on its own. The footer casts\n // upward instead: the one case where a shadow, rather than a surface step,\n // is the right tool, because the footer genuinely overlaps the content\n // beneath it.\n shadow: {\n color: \"#000000\",\n opacity: 0.08,\n radius: 8,\n offsetY: -2,\n elevation: 8,\n },\n} as const;\n\nexport const sectionRecipe = {\n slots: [\"root\", \"header\", \"copy\", \"title\", \"description\", \"action\", \"content\"] as const,\n gap: spacing.xs,\n headerGap: spacing.sm,\n copyGap: spacing.xxs,\n title: { textVariant: \"title\", color: semanticColors.content.body, fontWeight: fontWeight.bold },\n description: { textVariant: \"caption\", color: semanticColors.content.secondary },\n} as const;\n\nexport type SegmentedControlSize = keyof typeof segmentedControlRecipe.sizes;\nexport type SwitchPresentation = \"inline\" | \"row\";\nexport type SwitchSize = keyof typeof switchRecipe.sizes;\nexport type SelectionControlSize = keyof typeof selectionControlRecipe.sizes;\nexport type SelectionControlPresentation = keyof typeof selectionControlRecipe.presentations;\nexport type TabSize = keyof typeof tabsRecipe.sizes;\nexport type TabsLayout = keyof typeof tabsRecipe.layouts;\nexport type TabsOverflow = keyof typeof tabsRecipe.overflow;\nexport type SpinnerSize = keyof typeof spinnerRecipe.sizes;\nexport type SpinnerTone = keyof typeof spinnerRecipe.tones;\nexport type AvatarSize = keyof typeof avatarRecipe.sizes;\nexport type AvatarShape = keyof typeof avatarRecipe.shapes;\nexport type DialogSize = keyof typeof dialogRecipe.sizes;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-button.d.ts","sourceRoot":"","sources":["../src/provider-button.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,mBAAmB,CAAC;IAC3B;;;OAGG;IACH,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ByC,CAAC;AAE3E,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,QAAQ,EAAE,cAAc,CAAC;IACzB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,4BAA4B,GACvC,IAAI,CAUN;AAED,qDAAqD;AACrD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,OAAO,GAAG,MAAM,GACtB,mBAAmB,CAErB;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;IAUnC,sCAAsC;;CAE9B,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;CAmBF,CAAC"}
1
+ {"version":3,"file":"provider-button.d.ts","sourceRoot":"","sources":["../src/provider-button.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,mBAAmB,CAAC;IAC3B;;;OAGG;IACH,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ByC,CAAC;AAE3E,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,QAAQ,EAAE,cAAc,CAAC;IACzB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,4BAA4B,GACvC,IAAI,CAUN;AAED,qDAAqD;AACrD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,OAAO,GAAG,MAAM,GACtB,mBAAmB,CAErB;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;IAanC,sCAAsC;;CAE9B,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;CAmBF,CAAC"}
@@ -61,6 +61,9 @@ export const authProviderButtonRecipe = {
61
61
  paddingHorizontal: spacing.md,
62
62
  gap: spacing.sm,
63
63
  logoSize: 20,
64
+ // 제공자 가이드가 라벨·색 표현을 소유한다(2026-10-06 사용자 위임 결정). 네이버 녹색·흰 글자
65
+ // 대비 3.09:1은 제공자 색 예외로 기록하고(docs/provider-button.md), titleLarge(20 heavy)로 키워
66
+ // 3:1 큰 글자 기준을 맞추는 대안은 가이드 밖의 라벨 표현이라 버렸다.
64
67
  label: typography.body,
65
68
  borderWidth: 1,
66
69
  /** 제공자 색 위에서도 보이도록 포커스 링은 바깥에 그린다. */