@hjmds/design-contracts 0.8.2

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 (353) hide show
  1. package/README.md +208 -0
  2. package/dist/alert-dialog.d.ts +102 -0
  3. package/dist/alert-dialog.d.ts.map +1 -0
  4. package/dist/alert-dialog.js +136 -0
  5. package/dist/alert-dialog.js.map +1 -0
  6. package/dist/base-recipes.d.ts +184 -0
  7. package/dist/base-recipes.d.ts.map +1 -0
  8. package/dist/base-recipes.js +129 -0
  9. package/dist/base-recipes.js.map +1 -0
  10. package/dist/behaviors.d.ts +1254 -0
  11. package/dist/behaviors.d.ts.map +1 -0
  12. package/dist/behaviors.js +972 -0
  13. package/dist/behaviors.js.map +1 -0
  14. package/dist/bottom-navigation-defaults.d.ts +13 -0
  15. package/dist/bottom-navigation-defaults.d.ts.map +1 -0
  16. package/dist/bottom-navigation-defaults.js +10 -0
  17. package/dist/bottom-navigation-defaults.js.map +1 -0
  18. package/dist/bottom-navigation.d.ts +114 -0
  19. package/dist/bottom-navigation.d.ts.map +1 -0
  20. package/dist/bottom-navigation.js +223 -0
  21. package/dist/bottom-navigation.js.map +1 -0
  22. package/dist/breadcrumb.d.ts +97 -0
  23. package/dist/breadcrumb.d.ts.map +1 -0
  24. package/dist/breadcrumb.js +99 -0
  25. package/dist/breadcrumb.js.map +1 -0
  26. package/dist/calendar.d.ts +285 -0
  27. package/dist/calendar.d.ts.map +1 -0
  28. package/dist/calendar.js +297 -0
  29. package/dist/calendar.js.map +1 -0
  30. package/dist/card.d.ts +39 -0
  31. package/dist/card.d.ts.map +1 -0
  32. package/dist/card.js +50 -0
  33. package/dist/card.js.map +1 -0
  34. package/dist/carousel.d.ts +180 -0
  35. package/dist/carousel.d.ts.map +1 -0
  36. package/dist/carousel.js +172 -0
  37. package/dist/carousel.js.map +1 -0
  38. package/dist/catalog.d.ts +7158 -0
  39. package/dist/catalog.d.ts.map +1 -0
  40. package/dist/catalog.js +220 -0
  41. package/dist/catalog.js.map +1 -0
  42. package/dist/collection.d.ts +123 -0
  43. package/dist/collection.d.ts.map +1 -0
  44. package/dist/collection.js +211 -0
  45. package/dist/collection.js.map +1 -0
  46. package/dist/color-references.d.ts +46 -0
  47. package/dist/color-references.d.ts.map +1 -0
  48. package/dist/color-references.js +39 -0
  49. package/dist/color-references.js.map +1 -0
  50. package/dist/colors.d.ts +56 -0
  51. package/dist/colors.d.ts.map +1 -0
  52. package/dist/colors.js +90 -0
  53. package/dist/colors.js.map +1 -0
  54. package/dist/command-palette.d.ts +240 -0
  55. package/dist/command-palette.d.ts.map +1 -0
  56. package/dist/command-palette.js +97 -0
  57. package/dist/command-palette.js.map +1 -0
  58. package/dist/component-contracts.d.ts +137 -0
  59. package/dist/component-contracts.d.ts.map +1 -0
  60. package/dist/component-contracts.js +53 -0
  61. package/dist/component-contracts.js.map +1 -0
  62. package/dist/component-definitions.d.ts +135 -0
  63. package/dist/component-definitions.d.ts.map +1 -0
  64. package/dist/component-definitions.js +142 -0
  65. package/dist/component-definitions.js.map +1 -0
  66. package/dist/component-recipes.d.ts +3583 -0
  67. package/dist/component-recipes.d.ts.map +1 -0
  68. package/dist/component-recipes.js +1503 -0
  69. package/dist/component-recipes.js.map +1 -0
  70. package/dist/component-references.d.ts +416 -0
  71. package/dist/component-references.d.ts.map +1 -0
  72. package/dist/component-references.js +140 -0
  73. package/dist/component-references.js.map +1 -0
  74. package/dist/content-state.d.ts +104 -0
  75. package/dist/content-state.d.ts.map +1 -0
  76. package/dist/content-state.js +116 -0
  77. package/dist/content-state.js.map +1 -0
  78. package/dist/counter-badge-recipe.d.ts +80 -0
  79. package/dist/counter-badge-recipe.d.ts.map +1 -0
  80. package/dist/counter-badge-recipe.js +44 -0
  81. package/dist/counter-badge-recipe.js.map +1 -0
  82. package/dist/counter-badge.d.ts +12 -0
  83. package/dist/counter-badge.d.ts.map +1 -0
  84. package/dist/counter-badge.js +21 -0
  85. package/dist/counter-badge.js.map +1 -0
  86. package/dist/data-table.d.ts +203 -0
  87. package/dist/data-table.d.ts.map +1 -0
  88. package/dist/data-table.js +182 -0
  89. package/dist/data-table.js.map +1 -0
  90. package/dist/date-picker.d.ts +268 -0
  91. package/dist/date-picker.d.ts.map +1 -0
  92. package/dist/date-picker.js +168 -0
  93. package/dist/date-picker.js.map +1 -0
  94. package/dist/description-list.d.ts +68 -0
  95. package/dist/description-list.d.ts.map +1 -0
  96. package/dist/description-list.js +85 -0
  97. package/dist/description-list.js.map +1 -0
  98. package/dist/design-system-provider.d.ts +80 -0
  99. package/dist/design-system-provider.d.ts.map +1 -0
  100. package/dist/design-system-provider.js +147 -0
  101. package/dist/design-system-provider.js.map +1 -0
  102. package/dist/evidence.d.ts +49 -0
  103. package/dist/evidence.d.ts.map +1 -0
  104. package/dist/evidence.js +133 -0
  105. package/dist/evidence.js.map +1 -0
  106. package/dist/file-picker.d.ts +183 -0
  107. package/dist/file-picker.d.ts.map +1 -0
  108. package/dist/file-picker.js +224 -0
  109. package/dist/file-picker.js.map +1 -0
  110. package/dist/floating-action-button.d.ts +143 -0
  111. package/dist/floating-action-button.d.ts.map +1 -0
  112. package/dist/floating-action-button.js +149 -0
  113. package/dist/floating-action-button.js.map +1 -0
  114. package/dist/form.d.ts +143 -0
  115. package/dist/form.d.ts.map +1 -0
  116. package/dist/form.js +206 -0
  117. package/dist/form.js.map +1 -0
  118. package/dist/foundations.d.ts +300 -0
  119. package/dist/foundations.d.ts.map +1 -0
  120. package/dist/foundations.js +238 -0
  121. package/dist/foundations.js.map +1 -0
  122. package/dist/grid.d.ts +75 -0
  123. package/dist/grid.d.ts.map +1 -0
  124. package/dist/grid.js +133 -0
  125. package/dist/grid.js.map +1 -0
  126. package/dist/icon-button-recipe.d.ts +99 -0
  127. package/dist/icon-button-recipe.d.ts.map +1 -0
  128. package/dist/icon-button-recipe.js +53 -0
  129. package/dist/icon-button-recipe.js.map +1 -0
  130. package/dist/icon.d.ts +41 -0
  131. package/dist/icon.d.ts.map +1 -0
  132. package/dist/icon.js +147 -0
  133. package/dist/icon.js.map +1 -0
  134. package/dist/image.d.ts +82 -0
  135. package/dist/image.d.ts.map +1 -0
  136. package/dist/image.js +100 -0
  137. package/dist/image.js.map +1 -0
  138. package/dist/index.d.ts +58 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +66 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/layout.d.ts +118 -0
  143. package/dist/layout.d.ts.map +1 -0
  144. package/dist/layout.js +118 -0
  145. package/dist/layout.js.map +1 -0
  146. package/dist/link.d.ts +57 -0
  147. package/dist/link.d.ts.map +1 -0
  148. package/dist/link.js +142 -0
  149. package/dist/link.js.map +1 -0
  150. package/dist/load-more.d.ts +64 -0
  151. package/dist/load-more.d.ts.map +1 -0
  152. package/dist/load-more.js +124 -0
  153. package/dist/load-more.js.map +1 -0
  154. package/dist/mentions.d.ts +67 -0
  155. package/dist/mentions.d.ts.map +1 -0
  156. package/dist/mentions.js +107 -0
  157. package/dist/mentions.js.map +1 -0
  158. package/dist/number-field.d.ts +208 -0
  159. package/dist/number-field.d.ts.map +1 -0
  160. package/dist/number-field.js +247 -0
  161. package/dist/number-field.js.map +1 -0
  162. package/dist/otp-field.d.ts +152 -0
  163. package/dist/otp-field.d.ts.map +1 -0
  164. package/dist/otp-field.js +117 -0
  165. package/dist/otp-field.js.map +1 -0
  166. package/dist/pagination.d.ts +181 -0
  167. package/dist/pagination.d.ts.map +1 -0
  168. package/dist/pagination.js +226 -0
  169. package/dist/pagination.js.map +1 -0
  170. package/dist/password-field.d.ts +187 -0
  171. package/dist/password-field.d.ts.map +1 -0
  172. package/dist/password-field.js +120 -0
  173. package/dist/password-field.js.map +1 -0
  174. package/dist/popover.d.ts +152 -0
  175. package/dist/popover.d.ts.map +1 -0
  176. package/dist/popover.js +137 -0
  177. package/dist/popover.js.map +1 -0
  178. package/dist/progress-recipe.d.ts +43 -0
  179. package/dist/progress-recipe.d.ts.map +1 -0
  180. package/dist/progress-recipe.js +16 -0
  181. package/dist/progress-recipe.js.map +1 -0
  182. package/dist/recipes.d.ts +31 -0
  183. package/dist/recipes.d.ts.map +1 -0
  184. package/dist/recipes.js +46 -0
  185. package/dist/recipes.js.map +1 -0
  186. package/dist/responsive.d.ts +27 -0
  187. package/dist/responsive.d.ts.map +1 -0
  188. package/dist/responsive.js +66 -0
  189. package/dist/responsive.js.map +1 -0
  190. package/dist/result.d.ts +111 -0
  191. package/dist/result.d.ts.map +1 -0
  192. package/dist/result.js +97 -0
  193. package/dist/result.js.map +1 -0
  194. package/dist/selection-helpers.d.ts +16 -0
  195. package/dist/selection-helpers.d.ts.map +1 -0
  196. package/dist/selection-helpers.js +52 -0
  197. package/dist/selection-helpers.js.map +1 -0
  198. package/dist/semantic-colors.d.ts +275 -0
  199. package/dist/semantic-colors.d.ts.map +1 -0
  200. package/dist/semantic-colors.js +84 -0
  201. package/dist/semantic-colors.js.map +1 -0
  202. package/dist/sheet.d.ts +51 -0
  203. package/dist/sheet.d.ts.map +1 -0
  204. package/dist/sheet.js +69 -0
  205. package/dist/sheet.js.map +1 -0
  206. package/dist/showcase.d.ts +153 -0
  207. package/dist/showcase.d.ts.map +1 -0
  208. package/dist/showcase.js +210 -0
  209. package/dist/showcase.js.map +1 -0
  210. package/dist/side-panel.d.ts +199 -0
  211. package/dist/side-panel.d.ts.map +1 -0
  212. package/dist/side-panel.js +111 -0
  213. package/dist/side-panel.js.map +1 -0
  214. package/dist/slider.d.ts +138 -0
  215. package/dist/slider.d.ts.map +1 -0
  216. package/dist/slider.js +150 -0
  217. package/dist/slider.js.map +1 -0
  218. package/dist/splitter.d.ts +113 -0
  219. package/dist/splitter.d.ts.map +1 -0
  220. package/dist/splitter.js +99 -0
  221. package/dist/splitter.js.map +1 -0
  222. package/dist/statistic.d.ts +41 -0
  223. package/dist/statistic.d.ts.map +1 -0
  224. package/dist/statistic.js +76 -0
  225. package/dist/statistic.js.map +1 -0
  226. package/dist/steps.d.ts +196 -0
  227. package/dist/steps.d.ts.map +1 -0
  228. package/dist/steps.js +160 -0
  229. package/dist/steps.js.map +1 -0
  230. package/dist/tag.d.ts +128 -0
  231. package/dist/tag.d.ts.map +1 -0
  232. package/dist/tag.js +93 -0
  233. package/dist/tag.js.map +1 -0
  234. package/dist/timeline.d.ts +147 -0
  235. package/dist/timeline.d.ts.map +1 -0
  236. package/dist/timeline.js +127 -0
  237. package/dist/timeline.js.map +1 -0
  238. package/dist/toast.d.ts +164 -0
  239. package/dist/toast.d.ts.map +1 -0
  240. package/dist/toast.js +529 -0
  241. package/dist/toast.js.map +1 -0
  242. package/dist/tokens.d.ts +9 -0
  243. package/dist/tokens.d.ts.map +1 -0
  244. package/dist/tokens.js +9 -0
  245. package/dist/tokens.js.map +1 -0
  246. package/dist/tooltip.d.ts +44 -0
  247. package/dist/tooltip.d.ts.map +1 -0
  248. package/dist/tooltip.js +88 -0
  249. package/dist/tooltip.js.map +1 -0
  250. package/dist/tour.d.ts +218 -0
  251. package/dist/tour.d.ts.map +1 -0
  252. package/dist/tour.js +211 -0
  253. package/dist/tour.js.map +1 -0
  254. package/dist/transfer-list.d.ts +207 -0
  255. package/dist/transfer-list.d.ts.map +1 -0
  256. package/dist/transfer-list.js +193 -0
  257. package/dist/transfer-list.js.map +1 -0
  258. package/dist/tree-select.d.ts +78 -0
  259. package/dist/tree-select.d.ts.map +1 -0
  260. package/dist/tree-select.js +132 -0
  261. package/dist/tree-select.js.map +1 -0
  262. package/dist/tree.d.ts +206 -0
  263. package/dist/tree.d.ts.map +1 -0
  264. package/dist/tree.js +223 -0
  265. package/dist/tree.js.map +1 -0
  266. package/dist/upload-item.d.ts +173 -0
  267. package/dist/upload-item.d.ts.map +1 -0
  268. package/dist/upload-item.js +156 -0
  269. package/dist/upload-item.js.map +1 -0
  270. package/dist/version.d.ts +3 -0
  271. package/dist/version.d.ts.map +1 -0
  272. package/dist/version.js +3 -0
  273. package/dist/version.js.map +1 -0
  274. package/docs/affix.md +63 -0
  275. package/docs/anchor.md +59 -0
  276. package/docs/ant-design-coverage.md +119 -0
  277. package/docs/app-provider.md +50 -0
  278. package/docs/app-rn-adoption.md +227 -0
  279. package/docs/architecture.md +320 -0
  280. package/docs/authoring-brief.md +87 -0
  281. package/docs/border-beam.md +66 -0
  282. package/docs/bottom-navigation.md +127 -0
  283. package/docs/breadcrumb.md +82 -0
  284. package/docs/calendar.md +154 -0
  285. package/docs/carousel.md +130 -0
  286. package/docs/cascader.md +93 -0
  287. package/docs/catalog-decision-status.md +306 -0
  288. package/docs/color-picker.md +72 -0
  289. package/docs/command-palette.md +116 -0
  290. package/docs/confirm-popover.md +93 -0
  291. package/docs/consistency-audit.md +383 -0
  292. package/docs/consumer-release-gate.md +90 -0
  293. package/docs/content-state.md +156 -0
  294. package/docs/context-panel.md +88 -0
  295. package/docs/cross-platform-core-normalization.md +118 -0
  296. package/docs/data-table.md +79 -0
  297. package/docs/date-picker.md +84 -0
  298. package/docs/description-list.md +75 -0
  299. package/docs/design-system-provider.md +139 -0
  300. package/docs/dropdown.md +78 -0
  301. package/docs/expansion-roadmap.md +285 -0
  302. package/docs/file-picker.md +59 -0
  303. package/docs/floating-action-button.md +111 -0
  304. package/docs/form.md +134 -0
  305. package/docs/generated/component-maturity.md +103 -0
  306. package/docs/generated/renderer-evidence.json +5597 -0
  307. package/docs/generated/renderer-evidence.md +132 -0
  308. package/docs/generated/showcase-manifest.json +3732 -0
  309. package/docs/icon.md +22 -0
  310. package/docs/identity.md +121 -0
  311. package/docs/image.md +84 -0
  312. package/docs/implementation-0.5.md +85 -0
  313. package/docs/layout-primitives.md +107 -0
  314. package/docs/layout.md +83 -0
  315. package/docs/library-reference-decisions.md +123 -0
  316. package/docs/link.md +67 -0
  317. package/docs/load-more.md +31 -0
  318. package/docs/mentions.md +82 -0
  319. package/docs/migration-0.2.md +108 -0
  320. package/docs/migration-0.3.md +72 -0
  321. package/docs/migration-0.5.md +82 -0
  322. package/docs/migration-0.6.md +197 -0
  323. package/docs/notification.md +54 -0
  324. package/docs/number-field.md +82 -0
  325. package/docs/otp-field.md +103 -0
  326. package/docs/pagination.md +139 -0
  327. package/docs/password-field.md +98 -0
  328. package/docs/popover.md +124 -0
  329. package/docs/promotion-candidates.md +169 -0
  330. package/docs/qr-code.md +69 -0
  331. package/docs/rating.md +58 -0
  332. package/docs/responsive-grid.md +90 -0
  333. package/docs/result.md +96 -0
  334. package/docs/showcase.md +97 -0
  335. package/docs/side-panel.md +71 -0
  336. package/docs/slider.md +79 -0
  337. package/docs/splitter.md +55 -0
  338. package/docs/statistic.md +16 -0
  339. package/docs/steps.md +115 -0
  340. package/docs/tag.md +57 -0
  341. package/docs/time-picker.md +88 -0
  342. package/docs/timeline.md +146 -0
  343. package/docs/toast.md +127 -0
  344. package/docs/tooltip.md +58 -0
  345. package/docs/tour.md +136 -0
  346. package/docs/transfer-list.md +94 -0
  347. package/docs/tree-select.md +101 -0
  348. package/docs/tree.md +123 -0
  349. package/docs/upload-item.md +68 -0
  350. package/docs/utility.md +53 -0
  351. package/docs/virtual-list.md +70 -0
  352. package/docs/watermark.md +58 -0
  353. package/package.json +402 -0
@@ -0,0 +1,3583 @@
1
+ import { control, spacing } from "./foundations.js";
2
+ export { iconButtonRecipe, resolveIconButtonPresentation, type IconButtonShape, type IconButtonSize, type IconButtonTone, type ResolvedIconButtonPresentation, } from "./icon-button-recipe.js";
3
+ export { counterBadgeDefaults, counterBadgeRecipe, formatCounterBadgeCount, type CounterBadgeSize, type CounterBadgeTone, type CounterBadgeVariant, } from "./counter-badge-recipe.js";
4
+ export { progressRecipe, type ProgressSize, type ProgressTone, } from "./progress-recipe.js";
5
+ export type { BottomNavigationDensity, BottomNavigationDistribution, BottomNavigationPresentation, } from "./bottom-navigation-defaults.js";
6
+ export type TextTone = "primary" | "body" | "muted" | "subtle" | "weak" | "brand" | "danger" | "inverse";
7
+ export type TextEmphasis = "regular" | "medium" | "strong";
8
+ export declare const textRecipe: {
9
+ readonly slots: readonly ["root"];
10
+ readonly defaults: {
11
+ readonly variant: "body";
12
+ readonly tone: "primary";
13
+ readonly emphasis: "regular";
14
+ };
15
+ readonly tones: {
16
+ readonly primary: Readonly<{
17
+ source: "theme";
18
+ key: "text";
19
+ alpha?: number;
20
+ }>;
21
+ readonly body: Readonly<{
22
+ source: "theme";
23
+ key: "textBody";
24
+ alpha?: number;
25
+ }>;
26
+ readonly muted: Readonly<{
27
+ source: "theme";
28
+ key: "textMuted";
29
+ alpha?: number;
30
+ }>;
31
+ readonly subtle: Readonly<{
32
+ source: "theme";
33
+ key: "textSub";
34
+ alpha?: number;
35
+ }>;
36
+ readonly weak: Readonly<{
37
+ source: "theme";
38
+ key: "textWeak";
39
+ alpha?: number;
40
+ }>;
41
+ readonly brand: Readonly<{
42
+ source: "theme";
43
+ key: "contentBrand";
44
+ alpha?: number;
45
+ }>;
46
+ readonly danger: Readonly<{
47
+ source: "theme";
48
+ key: "danger";
49
+ alpha?: number;
50
+ }>;
51
+ readonly inverse: Readonly<{
52
+ source: "theme";
53
+ key: "onPrimary";
54
+ alpha?: number;
55
+ }>;
56
+ };
57
+ readonly emphasis: {
58
+ readonly regular: "400";
59
+ readonly medium: "600";
60
+ readonly strong: "700";
61
+ };
62
+ };
63
+ export type IconTone = "primary" | "secondary" | "decorative" | "brand" | "info" | "success" | "warning" | "danger" | "inverse";
64
+ export type IconWeight = "regular" | "strong";
65
+ export declare const iconRecipe: {
66
+ readonly slots: readonly ["root"];
67
+ readonly defaults: {
68
+ readonly size: "md";
69
+ readonly tone: "secondary";
70
+ readonly weight: "regular";
71
+ readonly decorative: true;
72
+ };
73
+ readonly sizes: {
74
+ readonly xs: 14;
75
+ readonly sm: 20;
76
+ readonly md: 24;
77
+ readonly lg: 28;
78
+ readonly xl: 32;
79
+ readonly xxl: 44;
80
+ readonly xxxl: 48;
81
+ };
82
+ readonly tones: {
83
+ readonly primary: Readonly<{
84
+ source: "theme";
85
+ key: "text";
86
+ alpha?: number;
87
+ }>;
88
+ readonly secondary: Readonly<{
89
+ source: "theme";
90
+ key: "textMuted";
91
+ alpha?: number;
92
+ }>;
93
+ readonly decorative: Readonly<{
94
+ source: "theme";
95
+ key: "textWeak";
96
+ alpha?: number;
97
+ }>;
98
+ readonly brand: Readonly<{
99
+ source: "theme";
100
+ key: "contentBrand";
101
+ alpha?: number;
102
+ }>;
103
+ readonly info: Readonly<{
104
+ source: "accent";
105
+ key: "info";
106
+ alpha?: number;
107
+ }>;
108
+ readonly success: Readonly<{
109
+ source: "accent";
110
+ key: "success";
111
+ alpha?: number;
112
+ }>;
113
+ readonly warning: Readonly<{
114
+ source: "accent";
115
+ key: "warning";
116
+ alpha?: number;
117
+ }>;
118
+ readonly danger: Readonly<{
119
+ source: "theme";
120
+ key: "danger";
121
+ alpha?: number;
122
+ }>;
123
+ readonly inverse: Readonly<{
124
+ source: "theme";
125
+ key: "onPrimary";
126
+ alpha?: number;
127
+ }>;
128
+ };
129
+ readonly weights: {
130
+ readonly regular: 2;
131
+ readonly strong: 2.5;
132
+ };
133
+ readonly stroke: {
134
+ readonly lineCap: "round";
135
+ readonly lineJoin: "round";
136
+ readonly scaling: "proportional";
137
+ };
138
+ };
139
+ export type StackAxis = "block" | "inline";
140
+ export type StackGap = keyof typeof spacing;
141
+ export type StackAlign = "start" | "center" | "end" | "stretch";
142
+ export type StackJustify = "start" | "center" | "end" | "between";
143
+ export declare const stackRecipe: {
144
+ readonly slots: readonly ["root"];
145
+ readonly defaults: {
146
+ readonly axis: "block";
147
+ readonly gap: "md";
148
+ readonly align: "stretch";
149
+ readonly justify: "start";
150
+ readonly wrap: false;
151
+ };
152
+ readonly axes: {
153
+ readonly block: "column";
154
+ readonly inline: "row";
155
+ };
156
+ readonly gaps: {
157
+ readonly xxs: 4;
158
+ readonly xs: 8;
159
+ readonly sm: 12;
160
+ readonly md: 16;
161
+ readonly lg: 20;
162
+ readonly xl: 24;
163
+ readonly xxl: 32;
164
+ readonly xxxl: 40;
165
+ };
166
+ readonly align: readonly ["start", "center", "end", "stretch"];
167
+ readonly justify: readonly ["start", "center", "end", "between"];
168
+ };
169
+ export type LinkTone = "brand" | "neutral";
170
+ export type LinkVariant = "inline" | "standalone";
171
+ export declare const linkRecipe: {
172
+ readonly slots: readonly ["root", "leading", "label", "trailing"];
173
+ readonly defaults: {
174
+ readonly tone: "brand";
175
+ readonly variant: "inline";
176
+ };
177
+ readonly tones: {
178
+ readonly brand: Readonly<{
179
+ source: "theme";
180
+ key: "contentBrand";
181
+ alpha?: number;
182
+ }>;
183
+ readonly neutral: Readonly<{
184
+ source: "theme";
185
+ key: "textBody";
186
+ alpha?: number;
187
+ }>;
188
+ };
189
+ readonly variants: {
190
+ readonly inline: {
191
+ readonly textVariant: "body";
192
+ readonly fontWeight: "600";
193
+ readonly underline: "always";
194
+ readonly minHeight: null;
195
+ };
196
+ readonly standalone: {
197
+ readonly textVariant: "body";
198
+ readonly fontWeight: "700";
199
+ readonly underline: "hover";
200
+ readonly minHeight: 44;
201
+ };
202
+ };
203
+ readonly gap: 4;
204
+ readonly icon: {
205
+ readonly glyph: "xs";
206
+ readonly inheritsTone: true;
207
+ };
208
+ readonly states: {
209
+ readonly pressedOpacity: 0.86;
210
+ readonly focus: {
211
+ readonly color: Readonly<{
212
+ source: "theme";
213
+ key: "contentBrand";
214
+ alpha?: number;
215
+ }>;
216
+ readonly width: 2;
217
+ readonly offset: 2;
218
+ };
219
+ };
220
+ };
221
+ export declare const selectionGroupRecipe: {
222
+ readonly slots: readonly ["root", "label", "requiredIndicator", "description", "items", "error"];
223
+ readonly defaults: {
224
+ readonly orientation: "vertical";
225
+ readonly presentation: "card";
226
+ };
227
+ readonly orientations: {
228
+ readonly vertical: {
229
+ readonly direction: "column";
230
+ readonly gap: {
231
+ readonly plain: 4;
232
+ readonly card: 8;
233
+ readonly grouped: 0;
234
+ };
235
+ };
236
+ readonly horizontal: {
237
+ readonly direction: "row";
238
+ readonly gap: {
239
+ readonly plain: 12;
240
+ readonly card: 16;
241
+ readonly grouped: 0;
242
+ };
243
+ };
244
+ };
245
+ readonly label: {
246
+ readonly color: Readonly<{
247
+ source: "theme";
248
+ key: "textBody";
249
+ alpha?: number;
250
+ }>;
251
+ readonly textVariant: "body";
252
+ readonly fontWeight: "600";
253
+ };
254
+ readonly requiredIndicator: {
255
+ readonly color: Readonly<{
256
+ source: "theme";
257
+ key: "danger";
258
+ alpha?: number;
259
+ }>;
260
+ };
261
+ readonly description: {
262
+ readonly color: Readonly<{
263
+ source: "theme";
264
+ key: "textMuted";
265
+ alpha?: number;
266
+ }>;
267
+ readonly textVariant: "label";
268
+ };
269
+ readonly error: {
270
+ readonly color: Readonly<{
271
+ source: "theme";
272
+ key: "danger";
273
+ alpha?: number;
274
+ }>;
275
+ readonly textVariant: "label";
276
+ };
277
+ readonly supportGap: 8;
278
+ readonly states: {
279
+ readonly disabledOpacity: 0.5;
280
+ };
281
+ };
282
+ export type SelectionGroupOrientation = keyof typeof selectionGroupRecipe.orientations;
283
+ export type SelectionGroupPresentation = keyof typeof selectionGroupRecipe.orientations.vertical.gap;
284
+ export type BadgeTone = "neutral"
285
+ /**
286
+ * One step stronger than `neutral`: solid ink plate instead of a muted
287
+ * label + sunken plate. A product author needed this for a result screen
288
+ * where win/loss is the fact itself, not a side note, and `neutral` plus
289
+ * its `outline` variant read as nearly the same grey — the one place the
290
+ * distinction had to be unmistakable at a glance. Use it where a badge must
291
+ * outrank `neutral` without borrowing an accent or the brand tint (both of
292
+ * which already carry other meanings — see the `brand` tone below).
293
+ */
294
+ | "strong" | "brand" | "info" | "success" | "warning" | "attention" | "danger";
295
+ export type BadgeSize = "small" | "medium";
296
+ export type BadgeVariant = "filled" | "outline";
297
+ export declare const badgeRecipe: {
298
+ readonly slots: readonly ["root", "icon", "label"];
299
+ readonly defaults: {
300
+ readonly tone: "neutral";
301
+ readonly size: "medium";
302
+ readonly variant: "filled";
303
+ };
304
+ readonly variants: {
305
+ readonly filled: {
306
+ readonly usesToneBackground: true;
307
+ readonly borderFallback: null;
308
+ };
309
+ readonly outline: {
310
+ readonly usesToneBackground: false;
311
+ readonly borderFallback: Readonly<{
312
+ source: "theme";
313
+ key: "border";
314
+ alpha?: number;
315
+ }>;
316
+ };
317
+ };
318
+ readonly tones: {
319
+ readonly neutral: {
320
+ readonly content: Readonly<{
321
+ source: "theme";
322
+ key: "textMuted";
323
+ alpha?: number;
324
+ }>;
325
+ readonly outlineContent: Readonly<{
326
+ source: "theme";
327
+ key: "textMuted";
328
+ alpha?: number;
329
+ }>;
330
+ readonly background: Readonly<{
331
+ source: "theme";
332
+ key: "surfaceAlt";
333
+ alpha?: number;
334
+ }>;
335
+ readonly border: null;
336
+ };
337
+ readonly strong: {
338
+ readonly content: Readonly<{
339
+ source: "theme";
340
+ key: "onPrimary";
341
+ alpha?: number;
342
+ }>;
343
+ readonly outlineContent: Readonly<{
344
+ source: "theme";
345
+ key: "text";
346
+ alpha?: number;
347
+ }>;
348
+ readonly background: Readonly<{
349
+ source: "theme";
350
+ key: "text";
351
+ alpha?: number;
352
+ }>;
353
+ readonly border: null;
354
+ };
355
+ readonly brand: {
356
+ readonly content: Readonly<{
357
+ source: "theme";
358
+ key: "contentBrand";
359
+ alpha?: number;
360
+ }>;
361
+ readonly outlineContent: Readonly<{
362
+ source: "theme";
363
+ key: "contentBrand";
364
+ alpha?: number;
365
+ }>;
366
+ readonly background: Readonly<{
367
+ source: "theme";
368
+ key: "surfaceAlt";
369
+ alpha?: number;
370
+ }>;
371
+ readonly border: null;
372
+ };
373
+ readonly info: {
374
+ readonly content: Readonly<{
375
+ source: "accent";
376
+ key: "info";
377
+ alpha?: number;
378
+ }>;
379
+ readonly outlineContent: Readonly<{
380
+ source: "accent";
381
+ key: "info";
382
+ alpha?: number;
383
+ }>;
384
+ readonly background: Readonly<{
385
+ source: "accent";
386
+ key: "info";
387
+ alpha?: number;
388
+ }>;
389
+ readonly border: Readonly<{
390
+ source: "accent";
391
+ key: "info";
392
+ alpha?: number;
393
+ }>;
394
+ };
395
+ readonly success: {
396
+ readonly content: Readonly<{
397
+ source: "accent";
398
+ key: "success";
399
+ alpha?: number;
400
+ }>;
401
+ readonly outlineContent: Readonly<{
402
+ source: "accent";
403
+ key: "success";
404
+ alpha?: number;
405
+ }>;
406
+ readonly background: Readonly<{
407
+ source: "accent";
408
+ key: "success";
409
+ alpha?: number;
410
+ }>;
411
+ readonly border: Readonly<{
412
+ source: "accent";
413
+ key: "success";
414
+ alpha?: number;
415
+ }>;
416
+ };
417
+ readonly warning: {
418
+ readonly content: Readonly<{
419
+ source: "accent";
420
+ key: "warning";
421
+ alpha?: number;
422
+ }>;
423
+ readonly outlineContent: Readonly<{
424
+ source: "accent";
425
+ key: "warning";
426
+ alpha?: number;
427
+ }>;
428
+ readonly background: Readonly<{
429
+ source: "accent";
430
+ key: "warning";
431
+ alpha?: number;
432
+ }>;
433
+ readonly border: Readonly<{
434
+ source: "accent";
435
+ key: "warning";
436
+ alpha?: number;
437
+ }>;
438
+ };
439
+ readonly attention: {
440
+ readonly content: Readonly<{
441
+ source: "accent";
442
+ key: "attention";
443
+ alpha?: number;
444
+ }>;
445
+ readonly outlineContent: Readonly<{
446
+ source: "accent";
447
+ key: "attention";
448
+ alpha?: number;
449
+ }>;
450
+ readonly background: Readonly<{
451
+ source: "accent";
452
+ key: "attention";
453
+ alpha?: number;
454
+ }>;
455
+ readonly border: Readonly<{
456
+ source: "accent";
457
+ key: "attention";
458
+ alpha?: number;
459
+ }>;
460
+ };
461
+ readonly danger: {
462
+ readonly content: Readonly<{
463
+ source: "theme";
464
+ key: "danger";
465
+ alpha?: number;
466
+ }>;
467
+ readonly outlineContent: Readonly<{
468
+ source: "theme";
469
+ key: "danger";
470
+ alpha?: number;
471
+ }>;
472
+ readonly background: Readonly<{
473
+ source: "theme";
474
+ key: "danger";
475
+ alpha?: number;
476
+ }>;
477
+ readonly border: Readonly<{
478
+ source: "theme";
479
+ key: "danger";
480
+ alpha?: number;
481
+ }>;
482
+ };
483
+ };
484
+ readonly sizes: {
485
+ readonly small: {
486
+ readonly minHeight: 20;
487
+ readonly paddingHorizontal: 4;
488
+ readonly gap: 4;
489
+ readonly textVariant: "caption";
490
+ };
491
+ readonly medium: {
492
+ readonly minHeight: 24;
493
+ readonly paddingHorizontal: 8;
494
+ readonly gap: 4;
495
+ readonly textVariant: "caption";
496
+ };
497
+ };
498
+ readonly radius: "full";
499
+ readonly borderWidth: 1;
500
+ readonly fontWeight: "700";
501
+ };
502
+ export type SearchFieldSize = "medium" | "large";
503
+ /** Search is a field specialization with stable affordance and clear targets. */
504
+ export declare const searchFieldRecipe: {
505
+ readonly slots: readonly ["root", "leading", "input", "trailing", "clear", "spinner"];
506
+ readonly defaults: {
507
+ readonly size: "medium";
508
+ readonly shape: "medium";
509
+ };
510
+ readonly sizes: {
511
+ readonly medium: {
512
+ readonly minHeight: 44;
513
+ readonly paddingHorizontal: 12;
514
+ readonly gap: 8;
515
+ readonly glyph: "sm";
516
+ readonly clearDiameter: 36;
517
+ readonly clearHitSlop: 4;
518
+ readonly textVariant: "body";
519
+ };
520
+ readonly large: {
521
+ readonly minHeight: 52;
522
+ readonly paddingHorizontal: 16;
523
+ readonly gap: 12;
524
+ readonly glyph: "sm";
525
+ readonly clearDiameter: 44;
526
+ readonly clearHitSlop: 0;
527
+ readonly textVariant: "bodyLarge";
528
+ };
529
+ };
530
+ readonly colors: {
531
+ readonly background: Readonly<{
532
+ source: "theme";
533
+ key: "surface";
534
+ alpha?: number;
535
+ }>;
536
+ readonly content: Readonly<{
537
+ source: "theme";
538
+ key: "text";
539
+ alpha?: number;
540
+ }>;
541
+ readonly placeholder: Readonly<{
542
+ source: "theme";
543
+ key: "textMuted";
544
+ alpha?: number;
545
+ }>;
546
+ readonly leading: Readonly<{
547
+ source: "theme";
548
+ key: "textWeak";
549
+ alpha?: number;
550
+ }>;
551
+ readonly clear: Readonly<{
552
+ source: "theme";
553
+ key: "textMuted";
554
+ alpha?: number;
555
+ }>;
556
+ readonly border: Readonly<{
557
+ source: "theme";
558
+ key: "textMuted";
559
+ alpha?: number;
560
+ }>;
561
+ readonly focus: Readonly<{
562
+ source: "theme";
563
+ key: "contentBrand";
564
+ alpha?: number;
565
+ }>;
566
+ readonly invalid: Readonly<{
567
+ source: "theme";
568
+ key: "danger";
569
+ alpha?: number;
570
+ }>;
571
+ };
572
+ /**
573
+ * 모양은 **축이다** — 값 하나로 못 박지 않는다.
574
+ *
575
+ * 원래 여기는 `radius: "full"` 하나였다. 그런데 `fieldRecipe`는 같은 결정을
576
+ * `shapes: { medium, large, full }` 축으로 열어 두고 있었고, 그래서 **한 앱 안에서
577
+ * 평범한 입력과 찾기 입력이 서로 다른 모양이 되는 것을 계약이 막지 못했다.** 실제로
578
+ * 갈라졌다 — app-rn은 `"md"`로 그리고 있었는데 이 계약은 `"full"`이라고 말하고
579
+ * 있었고, 어느 쪽이 옳은지 양쪽 문서 어디에도 없었다.
580
+ *
581
+ * 찾기 입력이 알약이어야 하는지는 **제품이 정할 일**이고(iOS 관례는 알약, 이 앱은
582
+ * 사각), 계약이 할 일은 그 선택지를 `fieldRecipe`와 **같은 이름으로** 주는 것이다.
583
+ * 그러면 두 입력의 모양을 나란히 맞추는 것과 일부러 다르게 하는 것이 둘 다 표현된다.
584
+ */
585
+ readonly shapes: {
586
+ readonly medium: "md";
587
+ readonly large: "lg";
588
+ readonly full: "full";
589
+ };
590
+ readonly borderWidth: 1;
591
+ readonly focusRingWidth: 2;
592
+ readonly focusRingOffset: 2;
593
+ readonly states: {
594
+ readonly disabledOpacity: 0.5;
595
+ readonly pressedOpacity: 0.86;
596
+ };
597
+ };
598
+ export type ChipSize = keyof typeof control.chipHeight;
599
+ export declare const chipRecipe: {
600
+ readonly slots: readonly ["root", "leading", "indicator", "label", "trailing"];
601
+ readonly defaults: {
602
+ readonly size: "small";
603
+ readonly selected: false;
604
+ };
605
+ readonly sizes: {
606
+ readonly small: {
607
+ readonly height: 36;
608
+ readonly hitSlop: 4;
609
+ readonly paddingHorizontal: 12;
610
+ readonly gap: 4;
611
+ readonly textVariant: "body";
612
+ };
613
+ readonly medium: {
614
+ readonly height: 44;
615
+ readonly hitSlop: 0;
616
+ readonly paddingHorizontal: 16;
617
+ readonly gap: 8;
618
+ readonly textVariant: "body";
619
+ };
620
+ };
621
+ readonly states: {
622
+ readonly idle: {
623
+ readonly background: Readonly<{
624
+ source: "theme";
625
+ key: "surface";
626
+ alpha?: number;
627
+ }>;
628
+ readonly content: Readonly<{
629
+ source: "theme";
630
+ key: "textMuted";
631
+ alpha?: number;
632
+ }>;
633
+ readonly border: Readonly<{
634
+ source: "theme";
635
+ key: "border";
636
+ alpha?: number;
637
+ }>;
638
+ };
639
+ readonly selected: {
640
+ readonly background: Readonly<{
641
+ source: "theme";
642
+ key: "surfaceAccent";
643
+ alpha?: number;
644
+ }>;
645
+ readonly content: Readonly<{
646
+ source: "theme";
647
+ key: "contentBrand";
648
+ alpha?: number;
649
+ }>;
650
+ readonly border: Readonly<{
651
+ source: "theme";
652
+ key: "contentBrand";
653
+ alpha?: number;
654
+ }>;
655
+ };
656
+ readonly pressedOpacity: 0.86;
657
+ readonly disabledOpacity: 0.5;
658
+ };
659
+ readonly radius: "full";
660
+ readonly borderWidth: 1;
661
+ readonly label: {
662
+ readonly fontWeight: "600";
663
+ readonly selectedFontWeight: "700";
664
+ };
665
+ readonly selectionIndicator: {
666
+ readonly color: Readonly<{
667
+ source: "theme";
668
+ key: "contentBrand";
669
+ alpha?: number;
670
+ }>;
671
+ readonly glyph: "xs";
672
+ };
673
+ readonly focus: {
674
+ readonly color: Readonly<{
675
+ source: "theme";
676
+ key: "contentBrand";
677
+ alpha?: number;
678
+ }>;
679
+ readonly width: 2;
680
+ readonly offset: 2;
681
+ };
682
+ };
683
+ export declare const dividerRecipe: {
684
+ readonly slots: readonly ["root", "label"];
685
+ readonly defaults: {
686
+ readonly orientation: "horizontal";
687
+ readonly inset: "none";
688
+ };
689
+ readonly color: Readonly<{
690
+ source: "theme";
691
+ key: "border";
692
+ alpha?: number;
693
+ }>;
694
+ readonly thickness: 1;
695
+ readonly insets: {
696
+ readonly none: 0;
697
+ readonly start: 16;
698
+ readonly both: 16;
699
+ };
700
+ };
701
+ export declare const listRecipe: {
702
+ readonly slots: readonly ["root", "item", "separator"];
703
+ readonly defaults: {
704
+ readonly separator: "indented";
705
+ };
706
+ readonly separators: {
707
+ readonly none: null;
708
+ readonly full: {
709
+ readonly insetStart: 0;
710
+ readonly insetEnd: 0;
711
+ };
712
+ readonly indented: {
713
+ readonly insetStart: number;
714
+ readonly insetEnd: 0;
715
+ };
716
+ };
717
+ readonly background: null;
718
+ };
719
+ export type ListRowDensity = "comfortable" | "compact";
720
+ export declare const listRowRecipe: {
721
+ readonly slots: readonly ["root", "leading", "content", "title", "description", "trailing"];
722
+ readonly defaults: {
723
+ readonly density: "comfortable";
724
+ readonly selected: false;
725
+ };
726
+ readonly density: {
727
+ readonly compact: {
728
+ readonly oneLineMinHeight: 44;
729
+ readonly twoLineMinHeight: 60;
730
+ readonly paddingHorizontal: 8;
731
+ readonly paddingVertical: 4;
732
+ };
733
+ readonly comfortable: {
734
+ readonly oneLineMinHeight: 56;
735
+ readonly twoLineMinHeight: 68;
736
+ readonly paddingHorizontal: 8;
737
+ readonly paddingVertical: 8;
738
+ };
739
+ };
740
+ readonly gap: 12;
741
+ readonly leadingSize: 40;
742
+ readonly title: {
743
+ readonly color: Readonly<{
744
+ source: "theme";
745
+ key: "textBody";
746
+ alpha?: number;
747
+ }>;
748
+ readonly textVariant: "bodyLarge";
749
+ readonly fontWeight: "700";
750
+ };
751
+ readonly description: {
752
+ readonly color: Readonly<{
753
+ source: "theme";
754
+ key: "textMuted";
755
+ alpha?: number;
756
+ }>;
757
+ readonly textVariant: "body";
758
+ };
759
+ readonly trailing: {
760
+ readonly textColor: Readonly<{
761
+ source: "theme";
762
+ key: "textMuted";
763
+ alpha?: number;
764
+ }>;
765
+ readonly iconColor: Readonly<{
766
+ source: "theme";
767
+ key: "textWeak";
768
+ alpha?: number;
769
+ }>;
770
+ readonly glyph: "sm";
771
+ readonly textVariant: "caption";
772
+ };
773
+ readonly states: {
774
+ readonly pressedBackground: Readonly<{
775
+ source: "theme";
776
+ key: "text";
777
+ alpha?: number;
778
+ }>;
779
+ readonly selectedBackground: Readonly<{
780
+ source: "theme";
781
+ key: "surfaceAccent";
782
+ alpha?: number;
783
+ }>;
784
+ readonly disabledOpacity: 0.5;
785
+ };
786
+ };
787
+ export type AccordionDensity = "compact" | "comfortable";
788
+ export declare const accordionRecipe: {
789
+ readonly slots: readonly ["root", "item", "header", "trigger", "title", "indicator", "panel", "divider"];
790
+ readonly defaults: {
791
+ readonly density: "comfortable";
792
+ readonly allowsMultipleExpanded: false;
793
+ };
794
+ readonly density: {
795
+ readonly compact: {
796
+ readonly triggerMinHeight: 44;
797
+ readonly paddingVertical: 8;
798
+ };
799
+ readonly comfortable: {
800
+ readonly triggerMinHeight: 56;
801
+ readonly paddingVertical: 12;
802
+ };
803
+ };
804
+ readonly paddingHorizontal: 8;
805
+ readonly gap: 12;
806
+ readonly title: {
807
+ readonly color: Readonly<{
808
+ source: "theme";
809
+ key: "textBody";
810
+ alpha?: number;
811
+ }>;
812
+ readonly textVariant: "bodyLarge";
813
+ readonly fontWeight: "700";
814
+ };
815
+ readonly indicator: {
816
+ readonly color: Readonly<{
817
+ source: "theme";
818
+ key: "textMuted";
819
+ alpha?: number;
820
+ }>;
821
+ readonly glyph: "sm";
822
+ };
823
+ readonly panel: {
824
+ readonly color: Readonly<{
825
+ source: "theme";
826
+ key: "textBody";
827
+ alpha?: number;
828
+ }>;
829
+ readonly textVariant: "body";
830
+ readonly paddingBottom: 16;
831
+ readonly paddingInlineStart: 8;
832
+ };
833
+ readonly divider: Readonly<{
834
+ source: "theme";
835
+ key: "border";
836
+ alpha?: number;
837
+ }>;
838
+ readonly states: {
839
+ readonly pressedBackground: Readonly<{
840
+ source: "theme";
841
+ key: "text";
842
+ alpha?: number;
843
+ }>;
844
+ readonly focus: {
845
+ readonly color: Readonly<{
846
+ source: "theme";
847
+ key: "contentBrand";
848
+ alpha?: number;
849
+ }>;
850
+ readonly width: 2;
851
+ readonly offset: 2;
852
+ };
853
+ readonly disabledOpacity: 0.5;
854
+ };
855
+ readonly transition: {
856
+ readonly duration: 200;
857
+ readonly easing: "enter";
858
+ readonly reducedMotion: "opacity";
859
+ };
860
+ };
861
+ export type MenuItemTone = "neutral" | "danger";
862
+ export declare const menuRecipe: {
863
+ readonly slots: readonly ["trigger", "content", "viewport", "section", "sectionLabel", "item", "leading", "copy", "label", "description", "trailing", "shortcut", "indicator", "dangerIndicator", "separator"];
864
+ readonly defaults: {
865
+ readonly density: "comfortable";
866
+ readonly itemTone: "neutral";
867
+ };
868
+ readonly surface: {
869
+ readonly background: Readonly<{
870
+ source: "theme";
871
+ key: "bg";
872
+ alpha?: number;
873
+ }>;
874
+ readonly border: Readonly<{
875
+ source: "theme";
876
+ key: "border";
877
+ alpha?: number;
878
+ }>;
879
+ readonly borderWidth: 1;
880
+ readonly radius: "md";
881
+ readonly shadow: {
882
+ readonly color: "#000000";
883
+ readonly opacity: 0.12;
884
+ readonly radius: 12;
885
+ readonly offsetY: 4;
886
+ };
887
+ readonly padding: 8;
888
+ };
889
+ readonly density: {
890
+ readonly compact: {
891
+ readonly minHeight: 44;
892
+ readonly paddingHorizontal: 12;
893
+ readonly gap: 12;
894
+ readonly radius: "md";
895
+ readonly label: {
896
+ readonly color: Readonly<{
897
+ source: "theme";
898
+ key: "textBody";
899
+ alpha?: number;
900
+ }>;
901
+ readonly textVariant: "body";
902
+ };
903
+ readonly description: {
904
+ readonly color: Readonly<{
905
+ source: "theme";
906
+ key: "textMuted";
907
+ alpha?: number;
908
+ }>;
909
+ readonly textVariant: "label";
910
+ };
911
+ readonly highlightedBackground: Readonly<{
912
+ source: "theme";
913
+ key: "text";
914
+ alpha?: number;
915
+ }>;
916
+ readonly focus: {
917
+ readonly color: Readonly<{
918
+ source: "theme";
919
+ key: "contentBrand";
920
+ alpha?: number;
921
+ }>;
922
+ readonly width: 2;
923
+ readonly offset: 2;
924
+ };
925
+ readonly selectedBackground: Readonly<{
926
+ source: "theme";
927
+ key: "primary";
928
+ alpha?: number;
929
+ }>;
930
+ readonly selectedIndicator: Readonly<{
931
+ source: "theme";
932
+ key: "contentBrand";
933
+ alpha?: number;
934
+ }>;
935
+ readonly danger: Readonly<{
936
+ source: "theme";
937
+ key: "danger";
938
+ alpha?: number;
939
+ }>;
940
+ };
941
+ readonly comfortable: {
942
+ readonly minHeight: 56;
943
+ readonly paddingHorizontal: 12;
944
+ readonly gap: 12;
945
+ readonly radius: "md";
946
+ readonly label: {
947
+ readonly color: Readonly<{
948
+ source: "theme";
949
+ key: "textBody";
950
+ alpha?: number;
951
+ }>;
952
+ readonly textVariant: "body";
953
+ };
954
+ readonly description: {
955
+ readonly color: Readonly<{
956
+ source: "theme";
957
+ key: "textMuted";
958
+ alpha?: number;
959
+ }>;
960
+ readonly textVariant: "label";
961
+ };
962
+ readonly highlightedBackground: Readonly<{
963
+ source: "theme";
964
+ key: "text";
965
+ alpha?: number;
966
+ }>;
967
+ readonly focus: {
968
+ readonly color: Readonly<{
969
+ source: "theme";
970
+ key: "contentBrand";
971
+ alpha?: number;
972
+ }>;
973
+ readonly width: 2;
974
+ readonly offset: 2;
975
+ };
976
+ readonly selectedBackground: Readonly<{
977
+ source: "theme";
978
+ key: "primary";
979
+ alpha?: number;
980
+ }>;
981
+ readonly selectedIndicator: Readonly<{
982
+ source: "theme";
983
+ key: "contentBrand";
984
+ alpha?: number;
985
+ }>;
986
+ readonly danger: Readonly<{
987
+ source: "theme";
988
+ key: "danger";
989
+ alpha?: number;
990
+ }>;
991
+ };
992
+ };
993
+ readonly tones: {
994
+ readonly neutral: Readonly<{
995
+ source: "theme";
996
+ key: "textBody";
997
+ alpha?: number;
998
+ }>;
999
+ readonly danger: Readonly<{
1000
+ source: "theme";
1001
+ key: "danger";
1002
+ alpha?: number;
1003
+ }>;
1004
+ };
1005
+ readonly sectionLabel: {
1006
+ readonly color: Readonly<{
1007
+ source: "theme";
1008
+ key: "textMuted";
1009
+ alpha?: number;
1010
+ }>;
1011
+ readonly textVariant: "label";
1012
+ readonly paddingHorizontal: 12;
1013
+ readonly paddingVertical: 8;
1014
+ };
1015
+ readonly leading: {
1016
+ readonly color: Readonly<{
1017
+ source: "theme";
1018
+ key: "textMuted";
1019
+ alpha?: number;
1020
+ }>;
1021
+ readonly glyph: "sm";
1022
+ };
1023
+ readonly shortcut: {
1024
+ readonly color: Readonly<{
1025
+ source: "theme";
1026
+ key: "textMuted";
1027
+ alpha?: number;
1028
+ }>;
1029
+ readonly textVariant: "caption";
1030
+ };
1031
+ readonly indicator: {
1032
+ readonly color: Readonly<{
1033
+ source: "theme";
1034
+ key: "contentBrand";
1035
+ alpha?: number;
1036
+ }>;
1037
+ readonly glyph: "sm";
1038
+ };
1039
+ readonly separator: Readonly<{
1040
+ source: "theme";
1041
+ key: "border";
1042
+ alpha?: number;
1043
+ }>;
1044
+ readonly dangerIndicator: {
1045
+ readonly color: Readonly<{
1046
+ source: "theme";
1047
+ key: "danger";
1048
+ alpha?: number;
1049
+ }>;
1050
+ readonly glyph: "sm";
1051
+ readonly mark: "alert";
1052
+ };
1053
+ readonly minWidth: 220;
1054
+ readonly maxWidth: 320;
1055
+ readonly maxHeight: 360;
1056
+ readonly sideOffset: 8;
1057
+ readonly collisionPadding: 8;
1058
+ readonly states: {
1059
+ readonly disabledOpacity: 0.5;
1060
+ };
1061
+ readonly transition: {
1062
+ readonly enter: {
1063
+ readonly duration: 200;
1064
+ readonly easing: "enter";
1065
+ readonly reducedMotion: "opacity";
1066
+ };
1067
+ readonly exit: {
1068
+ readonly duration: 120;
1069
+ readonly easing: "exit";
1070
+ readonly reducedMotion: "instant";
1071
+ };
1072
+ };
1073
+ };
1074
+ export type MenuDensity = keyof typeof menuRecipe.density;
1075
+ export type SelectSize = "medium" | "large";
1076
+ export type SelectDensity = "compact" | "comfortable";
1077
+ /**
1078
+ * Select is visually one field plus one collection, even though Web renders
1079
+ * the collection in a popover and Native renders it in a modal sheet.
1080
+ */
1081
+ export declare const selectRecipe: {
1082
+ readonly slots: readonly ["root", "label", "trigger", "leading", "value", "placeholder", "busyIndicator", "indicator", "description", "error", "popover", "viewport", "section", "sectionLabel", "option", "optionLeading", "optionCopy", "optionLabel", "optionDescription", "selectionIndicator", "stateMessage"];
1083
+ readonly defaults: {
1084
+ readonly size: "medium";
1085
+ readonly density: "comfortable";
1086
+ };
1087
+ readonly adaptive: {
1088
+ readonly web: "popover";
1089
+ readonly native: "sheet";
1090
+ };
1091
+ readonly frame: {
1092
+ readonly background: Readonly<{
1093
+ source: "theme";
1094
+ key: "surface";
1095
+ alpha?: number;
1096
+ }>;
1097
+ readonly border: Readonly<{
1098
+ source: "theme";
1099
+ key: "textMuted";
1100
+ alpha?: number;
1101
+ }>;
1102
+ readonly focusBorder: Readonly<{
1103
+ source: "theme";
1104
+ key: "contentBrand";
1105
+ alpha?: number;
1106
+ }>;
1107
+ readonly invalidBorder: Readonly<{
1108
+ source: "theme";
1109
+ key: "danger";
1110
+ alpha?: number;
1111
+ }>;
1112
+ readonly radius: "md";
1113
+ readonly borderWidth: 1;
1114
+ readonly minHeight: 44;
1115
+ readonly paddingHorizontal: 16;
1116
+ };
1117
+ readonly sizes: {
1118
+ readonly medium: {
1119
+ readonly minHeight: 44;
1120
+ readonly paddingHorizontal: 16;
1121
+ readonly textVariant: "body";
1122
+ readonly glyph: "sm";
1123
+ };
1124
+ readonly large: {
1125
+ readonly minHeight: 52;
1126
+ readonly paddingHorizontal: 20;
1127
+ readonly textVariant: "bodyLarge";
1128
+ readonly glyph: "md";
1129
+ };
1130
+ };
1131
+ readonly support: {
1132
+ readonly label: {
1133
+ readonly color: Readonly<{
1134
+ source: "theme";
1135
+ key: "textBody";
1136
+ alpha?: number;
1137
+ }>;
1138
+ readonly textVariant: "body";
1139
+ readonly fontWeight: "600";
1140
+ };
1141
+ readonly hint: {
1142
+ readonly color: Readonly<{
1143
+ source: "theme";
1144
+ key: "textMuted";
1145
+ alpha?: number;
1146
+ }>;
1147
+ readonly textVariant: "label";
1148
+ };
1149
+ readonly error: {
1150
+ readonly color: Readonly<{
1151
+ source: "theme";
1152
+ key: "danger";
1153
+ alpha?: number;
1154
+ }>;
1155
+ readonly textVariant: "label";
1156
+ };
1157
+ readonly gap: 8;
1158
+ };
1159
+ readonly value: {
1160
+ readonly color: Readonly<{
1161
+ source: "theme";
1162
+ key: "textBody";
1163
+ alpha?: number;
1164
+ }>;
1165
+ readonly placeholderColor: Readonly<{
1166
+ source: "theme";
1167
+ key: "textMuted";
1168
+ alpha?: number;
1169
+ }>;
1170
+ readonly gap: 12;
1171
+ };
1172
+ readonly leading: {
1173
+ readonly color: Readonly<{
1174
+ source: "theme";
1175
+ key: "textMuted";
1176
+ alpha?: number;
1177
+ }>;
1178
+ };
1179
+ readonly indicator: {
1180
+ readonly color: Readonly<{
1181
+ source: "theme";
1182
+ key: "textMuted";
1183
+ alpha?: number;
1184
+ }>;
1185
+ };
1186
+ readonly busyIndicator: {
1187
+ readonly color: Readonly<{
1188
+ source: "theme";
1189
+ key: "contentBrand";
1190
+ alpha?: number;
1191
+ }>;
1192
+ readonly glyph: "sm";
1193
+ };
1194
+ readonly popover: {
1195
+ readonly minWidth: 220;
1196
+ readonly maxWidth: 420;
1197
+ readonly maxHeight: 360;
1198
+ readonly sideOffset: 8;
1199
+ readonly collisionPadding: 8;
1200
+ readonly background: Readonly<{
1201
+ source: "theme";
1202
+ key: "bg";
1203
+ alpha?: number;
1204
+ }>;
1205
+ readonly border: Readonly<{
1206
+ source: "theme";
1207
+ key: "border";
1208
+ alpha?: number;
1209
+ }>;
1210
+ readonly borderWidth: 1;
1211
+ readonly radius: "md";
1212
+ readonly shadow: {
1213
+ readonly color: "#000000";
1214
+ readonly opacity: 0.12;
1215
+ readonly radius: 12;
1216
+ readonly offsetY: 4;
1217
+ };
1218
+ readonly padding: 8;
1219
+ };
1220
+ readonly density: {
1221
+ readonly compact: {
1222
+ readonly minHeight: 44;
1223
+ readonly paddingHorizontal: 12;
1224
+ readonly gap: 12;
1225
+ readonly radius: "md";
1226
+ readonly label: {
1227
+ readonly color: Readonly<{
1228
+ source: "theme";
1229
+ key: "textBody";
1230
+ alpha?: number;
1231
+ }>;
1232
+ readonly textVariant: "body";
1233
+ };
1234
+ readonly description: {
1235
+ readonly color: Readonly<{
1236
+ source: "theme";
1237
+ key: "textMuted";
1238
+ alpha?: number;
1239
+ }>;
1240
+ readonly textVariant: "label";
1241
+ };
1242
+ readonly highlightedBackground: Readonly<{
1243
+ source: "theme";
1244
+ key: "text";
1245
+ alpha?: number;
1246
+ }>;
1247
+ readonly focus: {
1248
+ readonly color: Readonly<{
1249
+ source: "theme";
1250
+ key: "contentBrand";
1251
+ alpha?: number;
1252
+ }>;
1253
+ readonly width: 2;
1254
+ readonly offset: 2;
1255
+ };
1256
+ readonly selectedBackground: Readonly<{
1257
+ source: "theme";
1258
+ key: "primary";
1259
+ alpha?: number;
1260
+ }>;
1261
+ readonly selectedIndicator: Readonly<{
1262
+ source: "theme";
1263
+ key: "contentBrand";
1264
+ alpha?: number;
1265
+ }>;
1266
+ readonly danger: Readonly<{
1267
+ source: "theme";
1268
+ key: "danger";
1269
+ alpha?: number;
1270
+ }>;
1271
+ };
1272
+ readonly comfortable: {
1273
+ readonly minHeight: 56;
1274
+ readonly paddingHorizontal: 12;
1275
+ readonly gap: 12;
1276
+ readonly radius: "md";
1277
+ readonly label: {
1278
+ readonly color: Readonly<{
1279
+ source: "theme";
1280
+ key: "textBody";
1281
+ alpha?: number;
1282
+ }>;
1283
+ readonly textVariant: "body";
1284
+ };
1285
+ readonly description: {
1286
+ readonly color: Readonly<{
1287
+ source: "theme";
1288
+ key: "textMuted";
1289
+ alpha?: number;
1290
+ }>;
1291
+ readonly textVariant: "label";
1292
+ };
1293
+ readonly highlightedBackground: Readonly<{
1294
+ source: "theme";
1295
+ key: "text";
1296
+ alpha?: number;
1297
+ }>;
1298
+ readonly focus: {
1299
+ readonly color: Readonly<{
1300
+ source: "theme";
1301
+ key: "contentBrand";
1302
+ alpha?: number;
1303
+ }>;
1304
+ readonly width: 2;
1305
+ readonly offset: 2;
1306
+ };
1307
+ readonly selectedBackground: Readonly<{
1308
+ source: "theme";
1309
+ key: "primary";
1310
+ alpha?: number;
1311
+ }>;
1312
+ readonly selectedIndicator: Readonly<{
1313
+ source: "theme";
1314
+ key: "contentBrand";
1315
+ alpha?: number;
1316
+ }>;
1317
+ readonly danger: Readonly<{
1318
+ source: "theme";
1319
+ key: "danger";
1320
+ alpha?: number;
1321
+ }>;
1322
+ };
1323
+ };
1324
+ readonly sectionLabel: {
1325
+ readonly color: Readonly<{
1326
+ source: "theme";
1327
+ key: "textMuted";
1328
+ alpha?: number;
1329
+ }>;
1330
+ readonly textVariant: "label";
1331
+ readonly paddingHorizontal: 12;
1332
+ readonly paddingVertical: 8;
1333
+ };
1334
+ readonly optionLeading: {
1335
+ readonly color: Readonly<{
1336
+ source: "theme";
1337
+ key: "textMuted";
1338
+ alpha?: number;
1339
+ }>;
1340
+ readonly glyph: "sm";
1341
+ };
1342
+ readonly optionLabel: {
1343
+ readonly fontWeight: "600";
1344
+ readonly selectedFontWeight: "700";
1345
+ };
1346
+ readonly selectionIndicator: {
1347
+ readonly color: Readonly<{
1348
+ source: "theme";
1349
+ key: "contentBrand";
1350
+ alpha?: number;
1351
+ }>;
1352
+ readonly glyph: "sm";
1353
+ };
1354
+ readonly stateMessage: {
1355
+ readonly color: Readonly<{
1356
+ source: "theme";
1357
+ key: "textMuted";
1358
+ alpha?: number;
1359
+ }>;
1360
+ readonly textVariant: "body";
1361
+ readonly minHeight: 44;
1362
+ readonly paddingHorizontal: 12;
1363
+ readonly paddingVertical: 12;
1364
+ };
1365
+ readonly states: {
1366
+ readonly hoverBackground: Readonly<{
1367
+ source: "theme";
1368
+ key: "text";
1369
+ alpha?: number;
1370
+ }>;
1371
+ readonly pressedBackground: Readonly<{
1372
+ source: "theme";
1373
+ key: "text";
1374
+ alpha?: number;
1375
+ }>;
1376
+ readonly focus: {
1377
+ readonly color: Readonly<{
1378
+ source: "theme";
1379
+ key: "contentBrand";
1380
+ alpha?: number;
1381
+ }>;
1382
+ readonly width: 2;
1383
+ readonly offset: 2;
1384
+ };
1385
+ readonly invalidBorder: Readonly<{
1386
+ source: "theme";
1387
+ key: "danger";
1388
+ alpha?: number;
1389
+ }>;
1390
+ readonly disabledOpacity: 0.5;
1391
+ };
1392
+ readonly transition: {
1393
+ readonly web: {
1394
+ readonly enter: {
1395
+ readonly duration: 120;
1396
+ readonly easing: "standard";
1397
+ readonly reducedMotion: "instant";
1398
+ };
1399
+ readonly exit: {
1400
+ readonly duration: 120;
1401
+ readonly easing: "exit";
1402
+ readonly reducedMotion: "instant";
1403
+ };
1404
+ };
1405
+ readonly native: {
1406
+ readonly enter: {
1407
+ readonly duration: 200;
1408
+ readonly easing: "enter";
1409
+ readonly reducedMotion: "opacity";
1410
+ };
1411
+ readonly exit: {
1412
+ readonly duration: 120;
1413
+ readonly easing: "exit";
1414
+ readonly reducedMotion: "instant";
1415
+ };
1416
+ };
1417
+ };
1418
+ };
1419
+ /** Editable input anatomy layered on the exact same collection grammar. */
1420
+ export declare const comboboxRecipe: {
1421
+ readonly slots: readonly ["root", "label", "field", "leading", "input", "indicator", "clear", "loadingIndicator", "description", "error", "popover", "viewport", "section", "sectionLabel", "option", "optionLeading", "optionCopy", "optionLabel", "optionDescription", "selectionIndicator", "stateMessage"];
1422
+ readonly defaults: {
1423
+ readonly size: "medium";
1424
+ readonly density: "comfortable";
1425
+ };
1426
+ readonly adaptive: {
1427
+ readonly web: "popover";
1428
+ readonly native: "sheet";
1429
+ };
1430
+ readonly frame: {
1431
+ readonly background: Readonly<{
1432
+ source: "theme";
1433
+ key: "surface";
1434
+ alpha?: number;
1435
+ }>;
1436
+ readonly border: Readonly<{
1437
+ source: "theme";
1438
+ key: "textMuted";
1439
+ alpha?: number;
1440
+ }>;
1441
+ readonly focusBorder: Readonly<{
1442
+ source: "theme";
1443
+ key: "contentBrand";
1444
+ alpha?: number;
1445
+ }>;
1446
+ readonly invalidBorder: Readonly<{
1447
+ source: "theme";
1448
+ key: "danger";
1449
+ alpha?: number;
1450
+ }>;
1451
+ readonly radius: "md";
1452
+ readonly borderWidth: 1;
1453
+ readonly minHeight: 44;
1454
+ readonly paddingHorizontal: 16;
1455
+ };
1456
+ readonly sizes: {
1457
+ readonly medium: {
1458
+ readonly minHeight: 44;
1459
+ readonly paddingHorizontal: 16;
1460
+ readonly textVariant: "body";
1461
+ readonly glyph: "sm";
1462
+ };
1463
+ readonly large: {
1464
+ readonly minHeight: 52;
1465
+ readonly paddingHorizontal: 20;
1466
+ readonly textVariant: "bodyLarge";
1467
+ readonly glyph: "md";
1468
+ };
1469
+ };
1470
+ readonly support: {
1471
+ readonly label: {
1472
+ readonly color: Readonly<{
1473
+ source: "theme";
1474
+ key: "textBody";
1475
+ alpha?: number;
1476
+ }>;
1477
+ readonly textVariant: "body";
1478
+ readonly fontWeight: "600";
1479
+ };
1480
+ readonly hint: {
1481
+ readonly color: Readonly<{
1482
+ source: "theme";
1483
+ key: "textMuted";
1484
+ alpha?: number;
1485
+ }>;
1486
+ readonly textVariant: "label";
1487
+ };
1488
+ readonly error: {
1489
+ readonly color: Readonly<{
1490
+ source: "theme";
1491
+ key: "danger";
1492
+ alpha?: number;
1493
+ }>;
1494
+ readonly textVariant: "label";
1495
+ };
1496
+ readonly gap: 8;
1497
+ };
1498
+ readonly input: {
1499
+ readonly color: Readonly<{
1500
+ source: "theme";
1501
+ key: "textBody";
1502
+ alpha?: number;
1503
+ }>;
1504
+ readonly placeholderColor: Readonly<{
1505
+ source: "theme";
1506
+ key: "textMuted";
1507
+ alpha?: number;
1508
+ }>;
1509
+ readonly gap: 12;
1510
+ };
1511
+ readonly leading: {
1512
+ readonly color: Readonly<{
1513
+ source: "theme";
1514
+ key: "textMuted";
1515
+ alpha?: number;
1516
+ }>;
1517
+ };
1518
+ readonly indicator: {
1519
+ readonly color: Readonly<{
1520
+ source: "theme";
1521
+ key: "textMuted";
1522
+ alpha?: number;
1523
+ }>;
1524
+ };
1525
+ readonly clear: {
1526
+ readonly diameter: 36;
1527
+ readonly hitSlop: 4;
1528
+ readonly glyph: "xs";
1529
+ readonly color: Readonly<{
1530
+ source: "theme";
1531
+ key: "textMuted";
1532
+ alpha?: number;
1533
+ }>;
1534
+ };
1535
+ readonly loadingIndicator: {
1536
+ readonly color: Readonly<{
1537
+ source: "theme";
1538
+ key: "contentBrand";
1539
+ alpha?: number;
1540
+ }>;
1541
+ readonly glyph: "sm";
1542
+ };
1543
+ readonly popover: {
1544
+ readonly minWidth: 220;
1545
+ readonly maxWidth: 420;
1546
+ readonly maxHeight: 360;
1547
+ readonly sideOffset: 8;
1548
+ readonly collisionPadding: 8;
1549
+ readonly background: Readonly<{
1550
+ source: "theme";
1551
+ key: "bg";
1552
+ alpha?: number;
1553
+ }>;
1554
+ readonly border: Readonly<{
1555
+ source: "theme";
1556
+ key: "border";
1557
+ alpha?: number;
1558
+ }>;
1559
+ readonly borderWidth: 1;
1560
+ readonly radius: "md";
1561
+ readonly shadow: {
1562
+ readonly color: "#000000";
1563
+ readonly opacity: 0.12;
1564
+ readonly radius: 12;
1565
+ readonly offsetY: 4;
1566
+ };
1567
+ readonly padding: 8;
1568
+ };
1569
+ readonly density: {
1570
+ readonly compact: {
1571
+ readonly minHeight: 44;
1572
+ readonly paddingHorizontal: 12;
1573
+ readonly gap: 12;
1574
+ readonly radius: "md";
1575
+ readonly label: {
1576
+ readonly color: Readonly<{
1577
+ source: "theme";
1578
+ key: "textBody";
1579
+ alpha?: number;
1580
+ }>;
1581
+ readonly textVariant: "body";
1582
+ };
1583
+ readonly description: {
1584
+ readonly color: Readonly<{
1585
+ source: "theme";
1586
+ key: "textMuted";
1587
+ alpha?: number;
1588
+ }>;
1589
+ readonly textVariant: "label";
1590
+ };
1591
+ readonly highlightedBackground: Readonly<{
1592
+ source: "theme";
1593
+ key: "text";
1594
+ alpha?: number;
1595
+ }>;
1596
+ readonly focus: {
1597
+ readonly color: Readonly<{
1598
+ source: "theme";
1599
+ key: "contentBrand";
1600
+ alpha?: number;
1601
+ }>;
1602
+ readonly width: 2;
1603
+ readonly offset: 2;
1604
+ };
1605
+ readonly selectedBackground: Readonly<{
1606
+ source: "theme";
1607
+ key: "primary";
1608
+ alpha?: number;
1609
+ }>;
1610
+ readonly selectedIndicator: Readonly<{
1611
+ source: "theme";
1612
+ key: "contentBrand";
1613
+ alpha?: number;
1614
+ }>;
1615
+ readonly danger: Readonly<{
1616
+ source: "theme";
1617
+ key: "danger";
1618
+ alpha?: number;
1619
+ }>;
1620
+ };
1621
+ readonly comfortable: {
1622
+ readonly minHeight: 56;
1623
+ readonly paddingHorizontal: 12;
1624
+ readonly gap: 12;
1625
+ readonly radius: "md";
1626
+ readonly label: {
1627
+ readonly color: Readonly<{
1628
+ source: "theme";
1629
+ key: "textBody";
1630
+ alpha?: number;
1631
+ }>;
1632
+ readonly textVariant: "body";
1633
+ };
1634
+ readonly description: {
1635
+ readonly color: Readonly<{
1636
+ source: "theme";
1637
+ key: "textMuted";
1638
+ alpha?: number;
1639
+ }>;
1640
+ readonly textVariant: "label";
1641
+ };
1642
+ readonly highlightedBackground: Readonly<{
1643
+ source: "theme";
1644
+ key: "text";
1645
+ alpha?: number;
1646
+ }>;
1647
+ readonly focus: {
1648
+ readonly color: Readonly<{
1649
+ source: "theme";
1650
+ key: "contentBrand";
1651
+ alpha?: number;
1652
+ }>;
1653
+ readonly width: 2;
1654
+ readonly offset: 2;
1655
+ };
1656
+ readonly selectedBackground: Readonly<{
1657
+ source: "theme";
1658
+ key: "primary";
1659
+ alpha?: number;
1660
+ }>;
1661
+ readonly selectedIndicator: Readonly<{
1662
+ source: "theme";
1663
+ key: "contentBrand";
1664
+ alpha?: number;
1665
+ }>;
1666
+ readonly danger: Readonly<{
1667
+ source: "theme";
1668
+ key: "danger";
1669
+ alpha?: number;
1670
+ }>;
1671
+ };
1672
+ };
1673
+ readonly sectionLabel: {
1674
+ readonly color: Readonly<{
1675
+ source: "theme";
1676
+ key: "textMuted";
1677
+ alpha?: number;
1678
+ }>;
1679
+ readonly textVariant: "label";
1680
+ readonly paddingHorizontal: 12;
1681
+ readonly paddingVertical: 8;
1682
+ };
1683
+ readonly optionLeading: {
1684
+ readonly color: Readonly<{
1685
+ source: "theme";
1686
+ key: "textMuted";
1687
+ alpha?: number;
1688
+ }>;
1689
+ readonly glyph: "sm";
1690
+ };
1691
+ readonly optionLabel: {
1692
+ readonly fontWeight: "600";
1693
+ readonly selectedFontWeight: "700";
1694
+ };
1695
+ readonly selectionIndicator: {
1696
+ readonly color: Readonly<{
1697
+ source: "theme";
1698
+ key: "contentBrand";
1699
+ alpha?: number;
1700
+ }>;
1701
+ readonly glyph: "sm";
1702
+ };
1703
+ readonly stateMessage: {
1704
+ readonly color: Readonly<{
1705
+ source: "theme";
1706
+ key: "textMuted";
1707
+ alpha?: number;
1708
+ }>;
1709
+ readonly textVariant: "body";
1710
+ readonly minHeight: 44;
1711
+ readonly paddingHorizontal: 12;
1712
+ readonly paddingVertical: 12;
1713
+ };
1714
+ readonly states: {
1715
+ readonly hoverBackground: Readonly<{
1716
+ source: "theme";
1717
+ key: "text";
1718
+ alpha?: number;
1719
+ }>;
1720
+ readonly pressedBackground: Readonly<{
1721
+ source: "theme";
1722
+ key: "text";
1723
+ alpha?: number;
1724
+ }>;
1725
+ readonly focus: {
1726
+ readonly color: Readonly<{
1727
+ source: "theme";
1728
+ key: "contentBrand";
1729
+ alpha?: number;
1730
+ }>;
1731
+ readonly width: 2;
1732
+ readonly offset: 2;
1733
+ };
1734
+ readonly invalidBorder: Readonly<{
1735
+ source: "theme";
1736
+ key: "danger";
1737
+ alpha?: number;
1738
+ }>;
1739
+ readonly disabledOpacity: 0.5;
1740
+ };
1741
+ readonly transition: {
1742
+ readonly web: {
1743
+ readonly enter: {
1744
+ readonly duration: 120;
1745
+ readonly easing: "standard";
1746
+ readonly reducedMotion: "instant";
1747
+ };
1748
+ readonly exit: {
1749
+ readonly duration: 120;
1750
+ readonly easing: "exit";
1751
+ readonly reducedMotion: "instant";
1752
+ };
1753
+ };
1754
+ readonly native: {
1755
+ readonly enter: {
1756
+ readonly duration: 200;
1757
+ readonly easing: "enter";
1758
+ readonly reducedMotion: "opacity";
1759
+ };
1760
+ readonly exit: {
1761
+ readonly duration: 120;
1762
+ readonly easing: "exit";
1763
+ readonly reducedMotion: "instant";
1764
+ };
1765
+ };
1766
+ };
1767
+ };
1768
+ export declare const segmentedControlRecipe: {
1769
+ readonly slots: readonly ["root", "item", "label", "indicator"];
1770
+ readonly defaults: {
1771
+ readonly size: "medium";
1772
+ };
1773
+ readonly adaptive: {
1774
+ readonly largeTextLayout: "stacked";
1775
+ readonly stackAtFontScale: 1.6;
1776
+ };
1777
+ /**
1778
+ * A recessed track with a raised white thumb. The fills used to be
1779
+ * inverted — a white track with a canvas-coloured selected segment — so the
1780
+ * chosen option read as the recessed, disabled-looking one. `surface.sunken`
1781
+ * is too close to white to carry the step, so the track takes the canvas
1782
+ * tone and a border keeps the control legible when it sits on that canvas.
1783
+ */
1784
+ readonly container: {
1785
+ readonly background: Readonly<{
1786
+ source: "theme";
1787
+ key: "bg";
1788
+ alpha?: number;
1789
+ }>;
1790
+ readonly border: Readonly<{
1791
+ source: "theme";
1792
+ key: "border";
1793
+ alpha?: number;
1794
+ }>;
1795
+ readonly borderWidth: 1;
1796
+ readonly radius: "lg";
1797
+ readonly padding: 4;
1798
+ readonly gap: 4;
1799
+ };
1800
+ readonly sizes: {
1801
+ readonly small: {
1802
+ readonly minHeight: 36;
1803
+ readonly hitSlop: 4;
1804
+ readonly paddingHorizontal: 12;
1805
+ readonly textVariant: "label";
1806
+ };
1807
+ readonly medium: {
1808
+ readonly minHeight: 44;
1809
+ readonly hitSlop: 0;
1810
+ readonly paddingHorizontal: 16;
1811
+ readonly textVariant: "body";
1812
+ };
1813
+ };
1814
+ readonly item: {
1815
+ readonly radius: "md";
1816
+ readonly gap: 4;
1817
+ readonly idleContent: Readonly<{
1818
+ source: "theme";
1819
+ key: "textMuted";
1820
+ alpha?: number;
1821
+ }>;
1822
+ readonly fontWeight: "600";
1823
+ readonly selectedBackground: Readonly<{
1824
+ source: "theme";
1825
+ key: "surfaceAccent";
1826
+ alpha?: number;
1827
+ }>;
1828
+ readonly selectedContent: Readonly<{
1829
+ source: "theme";
1830
+ key: "contentBrand";
1831
+ alpha?: number;
1832
+ }>;
1833
+ /**
1834
+ * The ring stays the selection signal so the control keeps a non-text
1835
+ * contrast of at least 3:1; a fill-only thumb cannot reach that against a
1836
+ * neutral track.
1837
+ */
1838
+ readonly selectedBorder: Readonly<{
1839
+ source: "theme";
1840
+ key: "contentBrand";
1841
+ alpha?: number;
1842
+ }>;
1843
+ readonly selectedBorderWidth: 2;
1844
+ readonly selectedFontWeight: "700";
1845
+ readonly focusRing: Readonly<{
1846
+ source: "theme";
1847
+ key: "contentBrand";
1848
+ alpha?: number;
1849
+ }>;
1850
+ readonly pressedOpacity: 0.86;
1851
+ readonly disabledOpacity: 0.5;
1852
+ };
1853
+ };
1854
+ export declare const switchRecipe: {
1855
+ readonly slots: readonly ["root", "track", "thumb", "label", "description"];
1856
+ readonly defaults: {
1857
+ readonly size: "medium";
1858
+ };
1859
+ readonly sizes: {
1860
+ readonly small: {
1861
+ readonly width: 44;
1862
+ readonly height: 26;
1863
+ readonly thumb: 22;
1864
+ readonly inset: 2;
1865
+ };
1866
+ readonly medium: {
1867
+ readonly width: 52;
1868
+ readonly height: 32;
1869
+ readonly thumb: 28;
1870
+ readonly inset: 2;
1871
+ };
1872
+ };
1873
+ readonly colors: {
1874
+ readonly trackOff: Readonly<{
1875
+ source: "theme";
1876
+ key: "surfaceAlt";
1877
+ alpha?: number;
1878
+ }>;
1879
+ readonly trackOffBorder: Readonly<{
1880
+ source: "theme";
1881
+ key: "textMuted";
1882
+ alpha?: number;
1883
+ }>;
1884
+ readonly trackOn: Readonly<{
1885
+ source: "theme";
1886
+ key: "contentBrand";
1887
+ alpha?: number;
1888
+ }>;
1889
+ readonly trackOnBorder: Readonly<{
1890
+ source: "theme";
1891
+ key: "contentBrand";
1892
+ alpha?: number;
1893
+ }>;
1894
+ readonly thumbOff: Readonly<{
1895
+ source: "theme";
1896
+ key: "bg";
1897
+ alpha?: number;
1898
+ }>;
1899
+ readonly thumbOffBorder: Readonly<{
1900
+ source: "theme";
1901
+ key: "textMuted";
1902
+ alpha?: number;
1903
+ }>;
1904
+ readonly thumbOn: Readonly<{
1905
+ source: "theme";
1906
+ key: "bg";
1907
+ alpha?: number;
1908
+ }>;
1909
+ readonly trackOffDisabled: Readonly<{
1910
+ source: "theme";
1911
+ key: "border";
1912
+ alpha?: number;
1913
+ }>;
1914
+ readonly trackOffBorderDisabled: Readonly<{
1915
+ source: "theme";
1916
+ key: "border";
1917
+ alpha?: number;
1918
+ }>;
1919
+ readonly trackOnDisabled: {
1920
+ readonly alpha: 0.38;
1921
+ readonly source: "theme";
1922
+ readonly key: "contentBrand";
1923
+ };
1924
+ readonly trackOnBorderDisabled: {
1925
+ readonly alpha: 0.38;
1926
+ readonly source: "theme";
1927
+ readonly key: "contentBrand";
1928
+ };
1929
+ readonly thumbDisabled: Readonly<{
1930
+ source: "theme";
1931
+ key: "bg";
1932
+ alpha?: number;
1933
+ }>;
1934
+ readonly thumbDisabledBorder: Readonly<{
1935
+ source: "theme";
1936
+ key: "textWeak";
1937
+ alpha?: number;
1938
+ }>;
1939
+ };
1940
+ readonly states: {
1941
+ readonly disabledOpacity: 0.5;
1942
+ readonly pressedOpacity: 0.86;
1943
+ };
1944
+ readonly rowMinHeight: 44;
1945
+ readonly rowTwoLineMinHeight: 68;
1946
+ };
1947
+ export type SelectionControlKind = "checkbox" | "radio";
1948
+ export declare const selectionControlRecipe: {
1949
+ readonly slots: readonly ["root", "control", "indicator", "leading", "content", "label", "description"];
1950
+ readonly defaults: {
1951
+ readonly kind: "checkbox";
1952
+ readonly size: "medium";
1953
+ readonly presentation: "card";
1954
+ };
1955
+ readonly sizes: {
1956
+ readonly small: {
1957
+ readonly rowMinHeight: 44;
1958
+ readonly control: 20;
1959
+ readonly hitSlop: 12;
1960
+ readonly glyph: "xs";
1961
+ readonly gap: 8;
1962
+ readonly paddingHorizontal: 12;
1963
+ readonly paddingVertical: 8;
1964
+ readonly labelVariant: "label";
1965
+ readonly descriptionVariant: "caption";
1966
+ };
1967
+ readonly medium: {
1968
+ readonly rowMinHeight: 56;
1969
+ readonly control: 24;
1970
+ readonly hitSlop: 10;
1971
+ readonly glyph: "sm";
1972
+ readonly gap: 12;
1973
+ readonly paddingHorizontal: 16;
1974
+ readonly paddingVertical: 12;
1975
+ readonly labelVariant: "body";
1976
+ readonly descriptionVariant: "label";
1977
+ };
1978
+ };
1979
+ readonly shapes: {
1980
+ readonly checkbox: "sm";
1981
+ readonly radio: "full";
1982
+ };
1983
+ readonly presentations: {
1984
+ readonly plain: {
1985
+ readonly background: null;
1986
+ readonly border: null;
1987
+ readonly borderWidth: 0;
1988
+ readonly radius: "md";
1989
+ readonly useSizePadding: false;
1990
+ readonly labelColor: null;
1991
+ };
1992
+ readonly card: {
1993
+ readonly background: Readonly<{
1994
+ source: "theme";
1995
+ key: "surface";
1996
+ alpha?: number;
1997
+ }>;
1998
+ readonly border: Readonly<{
1999
+ source: "theme";
2000
+ key: "border";
2001
+ alpha?: number;
2002
+ }>;
2003
+ readonly borderWidth: 1;
2004
+ readonly radius: "md";
2005
+ readonly useSizePadding: true;
2006
+ readonly labelColor: null;
2007
+ };
2008
+ readonly grouped: {
2009
+ readonly background: null;
2010
+ readonly border: null;
2011
+ readonly borderWidth: 0;
2012
+ readonly radius: "lg";
2013
+ readonly useSizePadding: true;
2014
+ readonly labelColor: Readonly<{
2015
+ source: "theme";
2016
+ key: "text";
2017
+ alpha?: number;
2018
+ }>;
2019
+ };
2020
+ };
2021
+ readonly label: {
2022
+ readonly color: Readonly<{
2023
+ source: "theme";
2024
+ key: "textBody";
2025
+ alpha?: number;
2026
+ }>;
2027
+ readonly fontWeight: "600";
2028
+ readonly checkedFontWeight: "700";
2029
+ };
2030
+ readonly leading: {
2031
+ readonly size: "md";
2032
+ readonly color: Readonly<{
2033
+ source: "theme";
2034
+ key: "textMuted";
2035
+ alpha?: number;
2036
+ }>;
2037
+ };
2038
+ readonly description: {
2039
+ readonly color: Readonly<{
2040
+ source: "theme";
2041
+ key: "textMuted";
2042
+ alpha?: number;
2043
+ }>;
2044
+ };
2045
+ readonly indicators: {
2046
+ readonly checkbox: {
2047
+ readonly checked: "check";
2048
+ readonly mixed: "dash";
2049
+ };
2050
+ readonly radio: {
2051
+ readonly checked: "dot";
2052
+ readonly mixed: null;
2053
+ };
2054
+ };
2055
+ readonly radioDotRatio: 0.42;
2056
+ readonly states: {
2057
+ readonly idleBackground: Readonly<{
2058
+ source: "theme";
2059
+ key: "bg";
2060
+ alpha?: number;
2061
+ }>;
2062
+ readonly idleBorder: Readonly<{
2063
+ source: "theme";
2064
+ key: "textMuted";
2065
+ alpha?: number;
2066
+ }>;
2067
+ readonly checkedBackground: Readonly<{
2068
+ source: "theme";
2069
+ key: "primary";
2070
+ alpha?: number;
2071
+ }>;
2072
+ readonly checkedBorder: Readonly<{
2073
+ source: "theme";
2074
+ key: "contentBrand";
2075
+ alpha?: number;
2076
+ }>;
2077
+ readonly indicator: Readonly<{
2078
+ source: "theme";
2079
+ key: "onPrimary";
2080
+ alpha?: number;
2081
+ }>;
2082
+ readonly selectedBackground: Readonly<{
2083
+ source: "theme";
2084
+ key: "surfaceAccent";
2085
+ alpha?: number;
2086
+ }>;
2087
+ readonly selectedBorder: Readonly<{
2088
+ source: "theme";
2089
+ key: "contentBrand";
2090
+ alpha?: number;
2091
+ }>;
2092
+ readonly hoverBackground: Readonly<{
2093
+ source: "theme";
2094
+ key: "text";
2095
+ alpha?: number;
2096
+ }>;
2097
+ readonly pressedBackground: Readonly<{
2098
+ source: "theme";
2099
+ key: "text";
2100
+ alpha?: number;
2101
+ }>;
2102
+ readonly invalidBorder: Readonly<{
2103
+ source: "theme";
2104
+ key: "danger";
2105
+ alpha?: number;
2106
+ }>;
2107
+ readonly focus: {
2108
+ readonly color: Readonly<{
2109
+ source: "theme";
2110
+ key: "contentBrand";
2111
+ alpha?: number;
2112
+ }>;
2113
+ readonly width: 2;
2114
+ readonly offset: 2;
2115
+ };
2116
+ readonly disabledOpacity: 0.5;
2117
+ };
2118
+ };
2119
+ /**
2120
+ * Persistent top-level navigation. The recipe reserves an optional center gap
2121
+ * for a sibling primary action but never treats that action as a destination.
2122
+ */
2123
+ export declare const bottomNavigationRecipe: {
2124
+ readonly slots: readonly ["root", "surface", "list", "item", "indicator", "icon", "label", "badge"];
2125
+ readonly defaults: {
2126
+ readonly presentation: "bar";
2127
+ readonly distribution: "equal";
2128
+ readonly density: "regular";
2129
+ };
2130
+ readonly adaptive: {
2131
+ readonly web: "fixed-compact-viewport";
2132
+ readonly native: "navigator-tab-bar";
2133
+ };
2134
+ readonly presentations: {
2135
+ readonly bar: {
2136
+ readonly background: Readonly<{
2137
+ source: "theme";
2138
+ key: "bg";
2139
+ alpha?: number;
2140
+ }>;
2141
+ readonly border: Readonly<{
2142
+ source: "theme";
2143
+ key: "border";
2144
+ alpha?: number;
2145
+ }>;
2146
+ readonly borderWidth: 1;
2147
+ readonly borderEdges: readonly ["block-start"];
2148
+ readonly radius: null;
2149
+ readonly shadow: null;
2150
+ readonly maxWidth: null;
2151
+ readonly outerPaddingHorizontal: 0;
2152
+ readonly outerPaddingTop: 0;
2153
+ };
2154
+ readonly floating: {
2155
+ readonly background: Readonly<{
2156
+ source: "theme";
2157
+ key: "bg";
2158
+ alpha?: number;
2159
+ }>;
2160
+ readonly border: Readonly<{
2161
+ source: "theme";
2162
+ key: "border";
2163
+ alpha?: number;
2164
+ }>;
2165
+ readonly borderWidth: 1;
2166
+ readonly borderEdges: readonly ["all"];
2167
+ readonly radius: "xl";
2168
+ readonly shadow: {
2169
+ readonly color: "#000000";
2170
+ readonly opacity: 0.12;
2171
+ readonly radius: 12;
2172
+ readonly offsetY: 4;
2173
+ };
2174
+ readonly maxWidth: 384;
2175
+ readonly outerPaddingHorizontal: 16;
2176
+ readonly outerPaddingTop: 8;
2177
+ };
2178
+ };
2179
+ readonly distributions: {
2180
+ readonly equal: {
2181
+ readonly centerGap: 0;
2182
+ readonly requiresEvenItemCount: false;
2183
+ };
2184
+ readonly "center-gap": {
2185
+ readonly centerGap: number;
2186
+ readonly requiresEvenItemCount: true;
2187
+ };
2188
+ };
2189
+ readonly density: {
2190
+ readonly compact: {
2191
+ readonly itemMinWidth: 52;
2192
+ readonly itemMinHeight: 52;
2193
+ readonly padding: 4;
2194
+ readonly gap: 2;
2195
+ readonly icon: "sm";
2196
+ readonly label: "caption";
2197
+ };
2198
+ readonly regular: {
2199
+ readonly itemMinWidth: 56;
2200
+ readonly itemMinHeight: 64;
2201
+ readonly padding: 8;
2202
+ readonly gap: 4;
2203
+ readonly icon: "md";
2204
+ readonly label: "caption";
2205
+ };
2206
+ };
2207
+ readonly colors: {
2208
+ readonly idle: Readonly<{
2209
+ source: "theme";
2210
+ key: "textMuted";
2211
+ alpha?: number;
2212
+ }>;
2213
+ readonly selectedIcon: Readonly<{
2214
+ source: "theme";
2215
+ key: "contentBrand";
2216
+ alpha?: number;
2217
+ }>;
2218
+ readonly selectedLabel: Readonly<{
2219
+ source: "theme";
2220
+ key: "contentBrand";
2221
+ alpha?: number;
2222
+ }>;
2223
+ };
2224
+ /**
2225
+ * Stable icon/badge layout anchor. Selection never paints this slot as a
2226
+ * pill: the icon and label below own the non-color selected evidence.
2227
+ */
2228
+ readonly indicator: {
2229
+ readonly minWidth: 40;
2230
+ readonly minHeight: 28;
2231
+ readonly radius: "full";
2232
+ readonly visual: "none";
2233
+ readonly background: null;
2234
+ readonly border: null;
2235
+ readonly borderWidth: 0;
2236
+ };
2237
+ readonly icon: {
2238
+ /**
2239
+ * Adapters apply at least one supported emphasis. Stroke-oriented glyphs
2240
+ * use strokeWidth; renderers without stroke control use scale instead.
2241
+ */
2242
+ readonly selectedEmphasis: {
2243
+ readonly minimumAdaptations: 1;
2244
+ readonly strokeWidth: {
2245
+ readonly idle: 2;
2246
+ readonly selected: 3;
2247
+ };
2248
+ readonly scale: {
2249
+ readonly idle: 1;
2250
+ readonly selected: 1.06;
2251
+ };
2252
+ };
2253
+ };
2254
+ readonly label: {
2255
+ readonly fontWeight: "600";
2256
+ readonly selectedFontWeight: "700";
2257
+ readonly textAlign: "center";
2258
+ readonly wrap: true;
2259
+ readonly fixedLines: null;
2260
+ };
2261
+ readonly badge: {
2262
+ readonly size: "small";
2263
+ readonly variant: "floating";
2264
+ readonly anchor: {
2265
+ readonly blockStart: number;
2266
+ readonly inlineEnd: number;
2267
+ };
2268
+ readonly subtreeHiddenFromAccessibility: true;
2269
+ };
2270
+ readonly safeArea: {
2271
+ readonly mode: "additive";
2272
+ readonly minimumBottomPadding: 8;
2273
+ };
2274
+ readonly keyboard: {
2275
+ readonly defaultBehavior: "hide";
2276
+ readonly movesAboveKeyboard: false;
2277
+ };
2278
+ readonly largeText: {
2279
+ readonly allowFontScaling: true;
2280
+ readonly maxFontSizeMultiplier: 1.4;
2281
+ readonly fixedItemHeight: false;
2282
+ readonly labelWraps: true;
2283
+ };
2284
+ readonly direction: {
2285
+ readonly itemOrder: "logical";
2286
+ readonly badgeAnchor: "inline-end";
2287
+ };
2288
+ readonly states: {
2289
+ readonly hoverBackground: Readonly<{
2290
+ source: "theme";
2291
+ key: "text";
2292
+ alpha?: number;
2293
+ }>;
2294
+ readonly pressedBackground: Readonly<{
2295
+ source: "theme";
2296
+ key: "text";
2297
+ alpha?: number;
2298
+ }>;
2299
+ readonly focus: {
2300
+ readonly color: Readonly<{
2301
+ source: "theme";
2302
+ key: "contentBrand";
2303
+ alpha?: number;
2304
+ }>;
2305
+ readonly width: 2;
2306
+ readonly offset: 2;
2307
+ };
2308
+ readonly disabledOpacity: 0.5;
2309
+ readonly selectedNonColorEvidence: {
2310
+ readonly target: "icon-and-label";
2311
+ readonly label: "font-weight";
2312
+ readonly icon: "emphasis";
2313
+ };
2314
+ readonly selectedFocusSeparation: {
2315
+ readonly selectedTarget: "icon-and-label";
2316
+ readonly focusTarget: "item";
2317
+ readonly minimumGap: 2;
2318
+ };
2319
+ };
2320
+ readonly transition: {
2321
+ readonly duration: 120;
2322
+ readonly easing: "standard";
2323
+ readonly reducedMotion: "instant";
2324
+ };
2325
+ };
2326
+ export declare const tabsRecipe: {
2327
+ readonly slots: readonly ["root", "list", "tab", "label", "indicator", "panel"];
2328
+ readonly defaults: {
2329
+ readonly size: "medium";
2330
+ readonly layout: "content";
2331
+ readonly overflow: "scroll";
2332
+ };
2333
+ readonly sizes: {
2334
+ readonly small: {
2335
+ readonly minHeight: 44;
2336
+ readonly paddingHorizontal: 12;
2337
+ readonly textVariant: "label";
2338
+ };
2339
+ readonly medium: {
2340
+ readonly minHeight: 48;
2341
+ readonly paddingHorizontal: 16;
2342
+ readonly textVariant: "body";
2343
+ };
2344
+ };
2345
+ readonly colors: {
2346
+ readonly idle: Readonly<{
2347
+ source: "theme";
2348
+ key: "textMuted";
2349
+ alpha?: number;
2350
+ }>;
2351
+ readonly selected: Readonly<{
2352
+ source: "theme";
2353
+ key: "text";
2354
+ alpha?: number;
2355
+ }>;
2356
+ readonly indicator: Readonly<{
2357
+ source: "theme";
2358
+ key: "contentBrand";
2359
+ alpha?: number;
2360
+ }>;
2361
+ readonly divider: Readonly<{
2362
+ source: "theme";
2363
+ key: "border";
2364
+ alpha?: number;
2365
+ }>;
2366
+ };
2367
+ readonly gap: 8;
2368
+ readonly icon: {
2369
+ readonly glyph: "xs";
2370
+ };
2371
+ readonly label: {
2372
+ readonly fontWeight: "600";
2373
+ readonly selectedFontWeight: "700";
2374
+ };
2375
+ readonly layouts: {
2376
+ readonly content: {
2377
+ readonly fitted: false;
2378
+ };
2379
+ readonly fitted: {
2380
+ readonly fitted: true;
2381
+ };
2382
+ };
2383
+ readonly overflow: {
2384
+ readonly scroll: {
2385
+ readonly scrollable: true;
2386
+ readonly wrap: false;
2387
+ };
2388
+ readonly clip: {
2389
+ readonly scrollable: false;
2390
+ readonly wrap: false;
2391
+ };
2392
+ };
2393
+ readonly indicatorHeight: 2;
2394
+ readonly states: {
2395
+ readonly pressedBackground: Readonly<{
2396
+ source: "theme";
2397
+ key: "text";
2398
+ alpha?: number;
2399
+ }>;
2400
+ readonly focus: {
2401
+ readonly color: Readonly<{
2402
+ source: "theme";
2403
+ key: "contentBrand";
2404
+ alpha?: number;
2405
+ }>;
2406
+ readonly width: 2;
2407
+ readonly offset: 2;
2408
+ };
2409
+ readonly disabledOpacity: 0.5;
2410
+ };
2411
+ };
2412
+ export type NoticeTone = "info" | "success" | "warning" | "attention" | "danger";
2413
+ export declare const noticeRecipe: {
2414
+ readonly slots: readonly ["root", "icon", "content", "title", "description", "action"];
2415
+ readonly defaults: {
2416
+ readonly tone: "info";
2417
+ };
2418
+ readonly tones: {
2419
+ readonly info: {
2420
+ readonly background: Readonly<{
2421
+ source: "theme";
2422
+ key: "surfaceAlt";
2423
+ alpha?: number;
2424
+ }>;
2425
+ readonly foreground: Readonly<{
2426
+ source: "accent";
2427
+ key: "info";
2428
+ alpha?: number;
2429
+ }>;
2430
+ readonly badgeBackground: Readonly<{
2431
+ source: "accent";
2432
+ key: "info";
2433
+ alpha?: number;
2434
+ }>;
2435
+ readonly border: Readonly<{
2436
+ source: "accent";
2437
+ key: "info";
2438
+ alpha?: number;
2439
+ }>;
2440
+ };
2441
+ readonly success: {
2442
+ readonly foreground: Readonly<{
2443
+ source: "accent";
2444
+ key: "success";
2445
+ alpha?: number;
2446
+ }>;
2447
+ readonly background: Readonly<{
2448
+ source: "accent";
2449
+ key: "success";
2450
+ alpha?: number;
2451
+ }>;
2452
+ readonly badgeBackground: Readonly<{
2453
+ source: "accent";
2454
+ key: "success";
2455
+ alpha?: number;
2456
+ }>;
2457
+ readonly border: Readonly<{
2458
+ source: "accent";
2459
+ key: "success";
2460
+ alpha?: number;
2461
+ }>;
2462
+ };
2463
+ readonly warning: {
2464
+ readonly foreground: Readonly<{
2465
+ source: "accent";
2466
+ key: "warning";
2467
+ alpha?: number;
2468
+ }>;
2469
+ readonly background: Readonly<{
2470
+ source: "accent";
2471
+ key: "warning";
2472
+ alpha?: number;
2473
+ }>;
2474
+ readonly badgeBackground: Readonly<{
2475
+ source: "accent";
2476
+ key: "warning";
2477
+ alpha?: number;
2478
+ }>;
2479
+ readonly border: Readonly<{
2480
+ source: "accent";
2481
+ key: "warning";
2482
+ alpha?: number;
2483
+ }>;
2484
+ };
2485
+ readonly attention: {
2486
+ readonly foreground: Readonly<{
2487
+ source: "accent";
2488
+ key: "attention";
2489
+ alpha?: number;
2490
+ }>;
2491
+ readonly background: Readonly<{
2492
+ source: "accent";
2493
+ key: "attention";
2494
+ alpha?: number;
2495
+ }>;
2496
+ readonly badgeBackground: Readonly<{
2497
+ source: "accent";
2498
+ key: "attention";
2499
+ alpha?: number;
2500
+ }>;
2501
+ readonly border: Readonly<{
2502
+ source: "accent";
2503
+ key: "attention";
2504
+ alpha?: number;
2505
+ }>;
2506
+ };
2507
+ readonly danger: {
2508
+ readonly foreground: Readonly<{
2509
+ source: "theme";
2510
+ key: "danger";
2511
+ alpha?: number;
2512
+ }>;
2513
+ readonly background: Readonly<{
2514
+ source: "theme";
2515
+ key: "danger";
2516
+ alpha?: number;
2517
+ }>;
2518
+ readonly badgeBackground: Readonly<{
2519
+ source: "theme";
2520
+ key: "danger";
2521
+ alpha?: number;
2522
+ }>;
2523
+ readonly border: Readonly<{
2524
+ source: "theme";
2525
+ key: "danger";
2526
+ alpha?: number;
2527
+ }>;
2528
+ };
2529
+ };
2530
+ readonly radius: "md";
2531
+ readonly padding: 16;
2532
+ readonly gap: 12;
2533
+ readonly contentGap: 4;
2534
+ readonly iconSize: "sm";
2535
+ readonly borderWidth: 1;
2536
+ readonly title: {
2537
+ readonly textVariant: "body";
2538
+ readonly fontWeight: "700";
2539
+ };
2540
+ readonly description: {
2541
+ readonly color: Readonly<{
2542
+ source: "theme";
2543
+ key: "textBody";
2544
+ alpha?: number;
2545
+ }>;
2546
+ readonly textVariant: "body";
2547
+ };
2548
+ };
2549
+ export declare const skeletonRecipe: {
2550
+ readonly slots: readonly ["root"];
2551
+ readonly defaults: {
2552
+ readonly shape: "block";
2553
+ readonly animated: false;
2554
+ };
2555
+ readonly background: Readonly<{
2556
+ source: "theme";
2557
+ key: "surfaceAlt";
2558
+ alpha?: number;
2559
+ }>;
2560
+ readonly shapes: {
2561
+ readonly block: {
2562
+ readonly radius: "md";
2563
+ readonly defaultHeight: 32;
2564
+ };
2565
+ readonly text: {
2566
+ readonly radius: "sm";
2567
+ readonly defaultHeight: 16;
2568
+ };
2569
+ readonly circle: {
2570
+ readonly radius: "full";
2571
+ readonly defaultHeight: 44;
2572
+ };
2573
+ };
2574
+ readonly animation: {
2575
+ readonly duration: number;
2576
+ readonly easing: "standard";
2577
+ readonly fromOpacity: 0.56;
2578
+ readonly toOpacity: 1;
2579
+ readonly reducedMotion: "static";
2580
+ };
2581
+ };
2582
+ export declare const emptyStateRecipe: {
2583
+ readonly slots: readonly ["root", "icon", "title", "description", "action"];
2584
+ readonly defaults: {
2585
+ readonly density: "regular";
2586
+ };
2587
+ readonly density: {
2588
+ readonly compact: {
2589
+ readonly paddingVertical: 24;
2590
+ };
2591
+ readonly regular: {
2592
+ readonly paddingVertical: 40;
2593
+ };
2594
+ };
2595
+ readonly paddingHorizontal: 24;
2596
+ readonly gap: 8;
2597
+ readonly icon: {
2598
+ readonly size: "lg";
2599
+ readonly color: Readonly<{
2600
+ source: "theme";
2601
+ key: "textWeak";
2602
+ alpha?: number;
2603
+ }>;
2604
+ };
2605
+ readonly title: {
2606
+ readonly textVariant: "body";
2607
+ readonly color: Readonly<{
2608
+ source: "theme";
2609
+ key: "text";
2610
+ alpha?: number;
2611
+ }>;
2612
+ readonly fontWeight: "600";
2613
+ };
2614
+ readonly description: {
2615
+ readonly textVariant: "label";
2616
+ readonly color: Readonly<{
2617
+ source: "theme";
2618
+ key: "textMuted";
2619
+ alpha?: number;
2620
+ }>;
2621
+ };
2622
+ };
2623
+ export declare const spinnerRecipe: {
2624
+ readonly slots: readonly ["root"];
2625
+ readonly defaults: {
2626
+ readonly size: "medium";
2627
+ readonly tone: "brand";
2628
+ };
2629
+ readonly sizes: {
2630
+ readonly small: 14;
2631
+ readonly medium: 20;
2632
+ readonly large: 28;
2633
+ };
2634
+ readonly tones: {
2635
+ readonly brand: Readonly<{
2636
+ source: "theme";
2637
+ key: "contentBrand";
2638
+ alpha?: number;
2639
+ }>;
2640
+ readonly neutral: Readonly<{
2641
+ source: "theme";
2642
+ key: "textMuted";
2643
+ alpha?: number;
2644
+ }>;
2645
+ readonly inverse: Readonly<{
2646
+ source: "theme";
2647
+ key: "onPrimary";
2648
+ alpha?: number;
2649
+ }>;
2650
+ };
2651
+ readonly strokeWidth: 2;
2652
+ readonly animation: {
2653
+ readonly duration: 800;
2654
+ readonly easing: "standard";
2655
+ readonly reducedMotion: "static";
2656
+ };
2657
+ };
2658
+ export type LoadMoreDensity = "compact" | "regular";
2659
+ export declare const loadMoreRecipe: {
2660
+ readonly slots: readonly ["root", "status", "spinner", "trigger", "error", "retry", "end"];
2661
+ readonly defaults: {
2662
+ readonly mode: "automatic";
2663
+ readonly density: "regular";
2664
+ };
2665
+ readonly density: {
2666
+ readonly compact: {
2667
+ readonly paddingVertical: 12;
2668
+ readonly gap: 8;
2669
+ };
2670
+ readonly regular: {
2671
+ readonly paddingVertical: 20;
2672
+ readonly gap: 12;
2673
+ };
2674
+ };
2675
+ readonly status: {
2676
+ readonly color: Readonly<{
2677
+ source: "theme";
2678
+ key: "textMuted";
2679
+ alpha?: number;
2680
+ }>;
2681
+ readonly textVariant: "label";
2682
+ };
2683
+ readonly error: {
2684
+ readonly color: Readonly<{
2685
+ source: "theme";
2686
+ key: "danger";
2687
+ alpha?: number;
2688
+ }>;
2689
+ readonly textVariant: "label";
2690
+ };
2691
+ readonly end: {
2692
+ readonly color: Readonly<{
2693
+ source: "theme";
2694
+ key: "textMuted";
2695
+ alpha?: number;
2696
+ }>;
2697
+ readonly textVariant: "caption";
2698
+ };
2699
+ readonly trigger: {
2700
+ readonly minHeight: 44;
2701
+ readonly paddingHorizontal: 16;
2702
+ readonly radius: "md";
2703
+ readonly color: Readonly<{
2704
+ source: "theme";
2705
+ key: "contentBrand";
2706
+ alpha?: number;
2707
+ }>;
2708
+ readonly textVariant: "label";
2709
+ readonly fontWeight: "700";
2710
+ };
2711
+ readonly spinner: {
2712
+ readonly size: "small";
2713
+ readonly tone: "brand";
2714
+ };
2715
+ readonly states: {
2716
+ readonly focus: {
2717
+ readonly color: Readonly<{
2718
+ source: "theme";
2719
+ key: "contentBrand";
2720
+ alpha?: number;
2721
+ }>;
2722
+ readonly width: 2;
2723
+ readonly offset: 2;
2724
+ };
2725
+ readonly pressedOpacity: 0.86;
2726
+ readonly disabledOpacity: 0.5;
2727
+ };
2728
+ };
2729
+ export declare const avatarRecipe: {
2730
+ readonly slots: readonly ["root", "image", "fallback", "badge"];
2731
+ readonly defaults: {
2732
+ readonly size: "medium";
2733
+ readonly shape: "circle";
2734
+ };
2735
+ readonly sizes: {
2736
+ readonly small: 32;
2737
+ readonly medium: 40;
2738
+ readonly large: 48;
2739
+ readonly xlarge: 64;
2740
+ };
2741
+ readonly shapes: {
2742
+ readonly rounded: "md";
2743
+ readonly circle: "full";
2744
+ };
2745
+ readonly background: Readonly<{
2746
+ source: "theme";
2747
+ key: "surfaceAlt";
2748
+ alpha?: number;
2749
+ }>;
2750
+ readonly content: Readonly<{
2751
+ source: "theme";
2752
+ key: "textMuted";
2753
+ alpha?: number;
2754
+ }>;
2755
+ readonly border: Readonly<{
2756
+ source: "theme";
2757
+ key: "border";
2758
+ alpha?: number;
2759
+ }>;
2760
+ };
2761
+ export type StatisticDensity = "compact" | "comfortable";
2762
+ export type StatisticPresentation = "plain" | "surface";
2763
+ export declare const statisticRecipe: {
2764
+ readonly slots: readonly ["group", "root", "label", "valueRow", "prefix", "value", "suffix", "trend", "trendMark", "hint"];
2765
+ readonly defaults: {
2766
+ readonly density: "comfortable";
2767
+ readonly presentation: "plain";
2768
+ readonly columns: 3;
2769
+ };
2770
+ readonly density: {
2771
+ readonly compact: {
2772
+ readonly padding: 12;
2773
+ readonly gap: 4;
2774
+ readonly labelVariant: "caption";
2775
+ readonly valueVariant: "title";
2776
+ };
2777
+ readonly comfortable: {
2778
+ readonly padding: 16;
2779
+ readonly gap: 8;
2780
+ readonly labelVariant: "label";
2781
+ readonly valueVariant: "heading";
2782
+ };
2783
+ };
2784
+ readonly presentations: {
2785
+ readonly plain: {
2786
+ readonly background: null;
2787
+ readonly border: null;
2788
+ readonly borderWidth: 0;
2789
+ readonly radius: "md";
2790
+ };
2791
+ readonly surface: {
2792
+ readonly background: Readonly<{
2793
+ source: "theme";
2794
+ key: "surface";
2795
+ alpha?: number;
2796
+ }>;
2797
+ readonly border: Readonly<{
2798
+ source: "theme";
2799
+ key: "border";
2800
+ alpha?: number;
2801
+ }>;
2802
+ readonly borderWidth: 1;
2803
+ readonly radius: "md";
2804
+ };
2805
+ };
2806
+ readonly group: {
2807
+ readonly gap: 8;
2808
+ readonly minItemWidth: 120;
2809
+ readonly columns: readonly [1, 2, 3, 4];
2810
+ };
2811
+ readonly label: {
2812
+ readonly color: Readonly<{
2813
+ source: "theme";
2814
+ key: "textMuted";
2815
+ alpha?: number;
2816
+ }>;
2817
+ readonly fontWeight: "600";
2818
+ };
2819
+ readonly value: {
2820
+ readonly color: Readonly<{
2821
+ source: "theme";
2822
+ key: "text";
2823
+ alpha?: number;
2824
+ }>;
2825
+ readonly fontWeight: "800";
2826
+ readonly numericVariant: "tabular";
2827
+ readonly maxLines: null;
2828
+ };
2829
+ readonly affix: {
2830
+ readonly color: Readonly<{
2831
+ source: "theme";
2832
+ key: "textBody";
2833
+ alpha?: number;
2834
+ }>;
2835
+ readonly textVariant: "body";
2836
+ readonly fontWeight: "600";
2837
+ };
2838
+ readonly hint: {
2839
+ readonly color: Readonly<{
2840
+ source: "theme";
2841
+ key: "textMuted";
2842
+ alpha?: number;
2843
+ }>;
2844
+ readonly textVariant: "caption";
2845
+ };
2846
+ readonly trend: {
2847
+ readonly textVariant: "caption";
2848
+ readonly fontWeight: "700";
2849
+ readonly gap: 4;
2850
+ readonly marks: {
2851
+ readonly up: "trendUp";
2852
+ readonly down: "trendDown";
2853
+ readonly flat: "trendFlat";
2854
+ };
2855
+ readonly tones: {
2856
+ readonly neutral: Readonly<{
2857
+ source: "theme";
2858
+ key: "textMuted";
2859
+ alpha?: number;
2860
+ }>;
2861
+ readonly success: Readonly<{
2862
+ source: "accent";
2863
+ key: "success";
2864
+ alpha?: number;
2865
+ }>;
2866
+ readonly warning: Readonly<{
2867
+ source: "accent";
2868
+ key: "warning";
2869
+ alpha?: number;
2870
+ }>;
2871
+ readonly danger: Readonly<{
2872
+ source: "theme";
2873
+ key: "danger";
2874
+ alpha?: number;
2875
+ }>;
2876
+ };
2877
+ };
2878
+ };
2879
+ export declare const sheetRecipe: {
2880
+ readonly slots: readonly ["backdrop", "positioner", "content", "handle", "header", "title", "body", "footer", "close"];
2881
+ readonly defaults: {
2882
+ readonly placement: "bottom";
2883
+ };
2884
+ readonly backdrop: {
2885
+ readonly color: "#000000";
2886
+ readonly opacity: 0.6;
2887
+ };
2888
+ readonly content: {
2889
+ readonly background: Readonly<{
2890
+ source: "theme";
2891
+ key: "bg";
2892
+ alpha?: number;
2893
+ }>;
2894
+ readonly border: Readonly<{
2895
+ source: "theme";
2896
+ key: "border";
2897
+ alpha?: number;
2898
+ }>;
2899
+ readonly borderWidth: 1;
2900
+ readonly radius: "xl";
2901
+ readonly shadow: {
2902
+ readonly color: "#000000";
2903
+ readonly opacity: 0.12;
2904
+ readonly radius: 12;
2905
+ readonly offsetY: 4;
2906
+ };
2907
+ readonly maxHeightRatio: 0.9;
2908
+ readonly paddingHorizontal: 20;
2909
+ readonly paddingTop: 12;
2910
+ readonly paddingBottom: 12;
2911
+ };
2912
+ readonly web: {
2913
+ readonly maxWidth: 640;
2914
+ };
2915
+ readonly safeArea: {
2916
+ readonly edge: "bottom";
2917
+ readonly mode: "additive";
2918
+ readonly minimumPadding: 12;
2919
+ };
2920
+ readonly handle: {
2921
+ readonly width: 36;
2922
+ readonly height: 4;
2923
+ readonly radius: "full";
2924
+ readonly color: Readonly<{
2925
+ source: "theme";
2926
+ key: "textMuted";
2927
+ alpha?: number;
2928
+ }>;
2929
+ readonly visibleByDefault: false;
2930
+ readonly showWhen: "swipe-dismiss-enabled";
2931
+ };
2932
+ readonly header: {
2933
+ readonly minHeight: 44;
2934
+ readonly gap: 12;
2935
+ };
2936
+ readonly title: {
2937
+ readonly color: Readonly<{
2938
+ source: "theme";
2939
+ key: "text";
2940
+ alpha?: number;
2941
+ }>;
2942
+ readonly textVariant: "title";
2943
+ readonly fontWeight: "700";
2944
+ readonly gap: 4;
2945
+ };
2946
+ readonly body: {
2947
+ readonly color: Readonly<{
2948
+ source: "theme";
2949
+ key: "textBody";
2950
+ alpha?: number;
2951
+ }>;
2952
+ readonly textVariant: "body";
2953
+ readonly gap: 16;
2954
+ };
2955
+ readonly footer: {
2956
+ readonly color: Readonly<{
2957
+ source: "theme";
2958
+ key: "textBody";
2959
+ alpha?: number;
2960
+ }>;
2961
+ readonly textVariant: "body";
2962
+ readonly gap: 12;
2963
+ readonly paddingTop: 12;
2964
+ };
2965
+ readonly transition: {
2966
+ readonly enter: {
2967
+ readonly duration: 200;
2968
+ readonly easing: "enter";
2969
+ readonly reducedMotion: "opacity";
2970
+ };
2971
+ readonly exit: {
2972
+ readonly duration: 120;
2973
+ readonly easing: "exit";
2974
+ readonly reducedMotion: "instant";
2975
+ };
2976
+ };
2977
+ };
2978
+ export declare const dialogRecipe: {
2979
+ readonly slots: readonly ["backdrop", "positioner", "content", "header", "title", "description", "body", "footer", "close"];
2980
+ readonly defaults: {
2981
+ readonly size: "medium";
2982
+ readonly dismissible: true;
2983
+ };
2984
+ readonly sizes: {
2985
+ readonly small: {
2986
+ readonly maxWidth: 320;
2987
+ readonly padding: 20;
2988
+ };
2989
+ readonly medium: {
2990
+ readonly maxWidth: 420;
2991
+ readonly padding: 24;
2992
+ };
2993
+ readonly large: {
2994
+ readonly maxWidth: 640;
2995
+ readonly padding: 24;
2996
+ };
2997
+ };
2998
+ readonly backdrop: {
2999
+ readonly color: "#000000";
3000
+ readonly opacity: 0.6;
3001
+ };
3002
+ readonly content: {
3003
+ readonly background: Readonly<{
3004
+ source: "theme";
3005
+ key: "bg";
3006
+ alpha?: number;
3007
+ }>;
3008
+ readonly border: Readonly<{
3009
+ source: "theme";
3010
+ key: "border";
3011
+ alpha?: number;
3012
+ }>;
3013
+ readonly borderWidth: 1;
3014
+ readonly radius: "lg";
3015
+ readonly gap: 16;
3016
+ readonly shadow: {
3017
+ readonly color: "#000000";
3018
+ readonly opacity: 0.12;
3019
+ readonly radius: 12;
3020
+ readonly offsetY: 4;
3021
+ };
3022
+ };
3023
+ readonly transition: {
3024
+ readonly enter: {
3025
+ readonly duration: 200;
3026
+ readonly easing: "enter";
3027
+ readonly reducedMotion: "opacity";
3028
+ };
3029
+ readonly exit: {
3030
+ readonly duration: 120;
3031
+ readonly easing: "exit";
3032
+ readonly reducedMotion: "instant";
3033
+ };
3034
+ };
3035
+ };
3036
+ export type AlertDialogTone = "attention" | "danger";
3037
+ export declare const alertDialogRecipe: {
3038
+ readonly slots: readonly ["backdrop", "positioner", "content", "icon", "title", "description", "status", "error", "actions", "cancel", "confirm"];
3039
+ readonly defaults: {
3040
+ readonly tone: "attention";
3041
+ readonly size: "small";
3042
+ };
3043
+ readonly sizes: {
3044
+ readonly small: {
3045
+ readonly maxWidth: 320;
3046
+ readonly padding: 20;
3047
+ };
3048
+ readonly medium: {
3049
+ readonly maxWidth: 420;
3050
+ readonly padding: 24;
3051
+ };
3052
+ readonly large: {
3053
+ readonly maxWidth: 640;
3054
+ readonly padding: 24;
3055
+ };
3056
+ };
3057
+ readonly backdrop: {
3058
+ readonly color: "#000000";
3059
+ readonly opacity: 0.6;
3060
+ };
3061
+ readonly content: {
3062
+ readonly background: Readonly<{
3063
+ source: "theme";
3064
+ key: "bg";
3065
+ alpha?: number;
3066
+ }>;
3067
+ readonly border: Readonly<{
3068
+ source: "theme";
3069
+ key: "border";
3070
+ alpha?: number;
3071
+ }>;
3072
+ readonly borderWidth: 1;
3073
+ readonly radius: "lg";
3074
+ readonly gap: 16;
3075
+ readonly shadow: {
3076
+ readonly color: "#000000";
3077
+ readonly opacity: 0.12;
3078
+ readonly radius: 12;
3079
+ readonly offsetY: 4;
3080
+ };
3081
+ };
3082
+ readonly tones: {
3083
+ readonly attention: {
3084
+ readonly icon: Readonly<{
3085
+ source: "accent";
3086
+ key: "attention";
3087
+ alpha?: number;
3088
+ }>;
3089
+ readonly iconBackground: Readonly<{
3090
+ source: "accent";
3091
+ key: "attention";
3092
+ alpha?: number;
3093
+ }>;
3094
+ readonly confirm: Readonly<{
3095
+ source: "theme";
3096
+ key: "primary";
3097
+ alpha?: number;
3098
+ }>;
3099
+ readonly confirmContent: Readonly<{
3100
+ source: "theme";
3101
+ key: "onPrimary";
3102
+ alpha?: number;
3103
+ }>;
3104
+ };
3105
+ readonly danger: {
3106
+ readonly icon: Readonly<{
3107
+ source: "theme";
3108
+ key: "danger";
3109
+ alpha?: number;
3110
+ }>;
3111
+ readonly iconBackground: Readonly<{
3112
+ source: "theme";
3113
+ key: "danger";
3114
+ alpha?: number;
3115
+ }>;
3116
+ readonly confirm: Readonly<{
3117
+ source: "theme";
3118
+ key: "dangerFill";
3119
+ alpha?: number;
3120
+ }>;
3121
+ readonly confirmContent: Readonly<{
3122
+ source: "theme";
3123
+ key: "onDanger";
3124
+ alpha?: number;
3125
+ }>;
3126
+ };
3127
+ };
3128
+ readonly icon: {
3129
+ readonly containerSize: 44;
3130
+ readonly glyph: "md";
3131
+ readonly radius: "full";
3132
+ };
3133
+ readonly title: {
3134
+ readonly color: Readonly<{
3135
+ source: "theme";
3136
+ key: "text";
3137
+ alpha?: number;
3138
+ }>;
3139
+ readonly textVariant: "title";
3140
+ readonly fontWeight: "700";
3141
+ };
3142
+ readonly description: {
3143
+ readonly color: Readonly<{
3144
+ source: "theme";
3145
+ key: "textMuted";
3146
+ alpha?: number;
3147
+ }>;
3148
+ readonly textVariant: "body";
3149
+ };
3150
+ readonly error: {
3151
+ readonly color: Readonly<{
3152
+ source: "theme";
3153
+ key: "danger";
3154
+ alpha?: number;
3155
+ }>;
3156
+ readonly textVariant: "label";
3157
+ };
3158
+ readonly actions: {
3159
+ readonly gap: 12;
3160
+ readonly stackBelow: 600;
3161
+ readonly minButtonWidth: 96;
3162
+ };
3163
+ readonly transition: {
3164
+ readonly enter: {
3165
+ readonly duration: 200;
3166
+ readonly easing: "enter";
3167
+ readonly reducedMotion: "opacity";
3168
+ };
3169
+ readonly exit: {
3170
+ readonly duration: 120;
3171
+ readonly easing: "exit";
3172
+ readonly reducedMotion: "instant";
3173
+ };
3174
+ };
3175
+ };
3176
+ export type ToastPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end";
3177
+ export type ToastTone = "neutral" | "info" | "success" | "warning" | "danger";
3178
+ export type ToastToneMark = "notifications" | "info" | "success" | "warning" | "alert";
3179
+ export declare const toastRecipe: {
3180
+ readonly slots: readonly ["viewport", "root", "toneMark", "icon", "content", "title", "description", "action", "close"];
3181
+ readonly defaults: {
3182
+ readonly tone: "neutral";
3183
+ readonly placement: "bottom";
3184
+ readonly durationMs: 5000;
3185
+ };
3186
+ readonly adaptive: {
3187
+ readonly web: "fixed-viewport";
3188
+ readonly native: "safe-area-overlay";
3189
+ };
3190
+ readonly viewport: {
3191
+ readonly layer: 1000;
3192
+ readonly gap: 12;
3193
+ readonly inset: 16;
3194
+ readonly maxWidth: 420;
3195
+ readonly safeAreaMode: "additive";
3196
+ };
3197
+ readonly placements: {
3198
+ readonly top: {
3199
+ readonly blockEdge: "top";
3200
+ readonly inlineEdge: "center";
3201
+ readonly stackFrom: "top";
3202
+ };
3203
+ readonly "top-start": {
3204
+ readonly blockEdge: "top";
3205
+ readonly inlineEdge: "start";
3206
+ readonly stackFrom: "top";
3207
+ };
3208
+ readonly "top-end": {
3209
+ readonly blockEdge: "top";
3210
+ readonly inlineEdge: "end";
3211
+ readonly stackFrom: "top";
3212
+ };
3213
+ readonly bottom: {
3214
+ readonly blockEdge: "bottom";
3215
+ readonly inlineEdge: "center";
3216
+ readonly stackFrom: "bottom";
3217
+ };
3218
+ readonly "bottom-start": {
3219
+ readonly blockEdge: "bottom";
3220
+ readonly inlineEdge: "start";
3221
+ readonly stackFrom: "bottom";
3222
+ };
3223
+ readonly "bottom-end": {
3224
+ readonly blockEdge: "bottom";
3225
+ readonly inlineEdge: "end";
3226
+ readonly stackFrom: "bottom";
3227
+ };
3228
+ };
3229
+ readonly tones: {
3230
+ readonly neutral: {
3231
+ readonly foreground: Readonly<{
3232
+ source: "theme";
3233
+ key: "text";
3234
+ alpha?: number;
3235
+ }>;
3236
+ readonly accent: Readonly<{
3237
+ source: "theme";
3238
+ key: "textMuted";
3239
+ alpha?: number;
3240
+ }>;
3241
+ readonly mark: "notifications";
3242
+ };
3243
+ readonly info: {
3244
+ readonly foreground: Readonly<{
3245
+ source: "theme";
3246
+ key: "text";
3247
+ alpha?: number;
3248
+ }>;
3249
+ readonly accent: Readonly<{
3250
+ source: "accent";
3251
+ key: "info";
3252
+ alpha?: number;
3253
+ }>;
3254
+ readonly mark: "info";
3255
+ };
3256
+ readonly success: {
3257
+ readonly foreground: Readonly<{
3258
+ source: "theme";
3259
+ key: "text";
3260
+ alpha?: number;
3261
+ }>;
3262
+ readonly accent: Readonly<{
3263
+ source: "accent";
3264
+ key: "success";
3265
+ alpha?: number;
3266
+ }>;
3267
+ readonly mark: "success";
3268
+ };
3269
+ readonly warning: {
3270
+ readonly foreground: Readonly<{
3271
+ source: "theme";
3272
+ key: "text";
3273
+ alpha?: number;
3274
+ }>;
3275
+ readonly accent: Readonly<{
3276
+ source: "accent";
3277
+ key: "warning";
3278
+ alpha?: number;
3279
+ }>;
3280
+ readonly mark: "warning";
3281
+ };
3282
+ readonly danger: {
3283
+ readonly foreground: Readonly<{
3284
+ source: "theme";
3285
+ key: "text";
3286
+ alpha?: number;
3287
+ }>;
3288
+ readonly accent: Readonly<{
3289
+ source: "theme";
3290
+ key: "danger";
3291
+ alpha?: number;
3292
+ }>;
3293
+ readonly mark: "alert";
3294
+ };
3295
+ };
3296
+ readonly surface: {
3297
+ readonly background: Readonly<{
3298
+ source: "theme";
3299
+ key: "bg";
3300
+ alpha?: number;
3301
+ }>;
3302
+ readonly border: Readonly<{
3303
+ source: "theme";
3304
+ key: "textWeak";
3305
+ alpha?: number;
3306
+ }>;
3307
+ readonly borderWidth: 1;
3308
+ readonly radius: "md";
3309
+ readonly shadow: {
3310
+ readonly color: "#000000";
3311
+ readonly opacity: 0.12;
3312
+ readonly radius: 12;
3313
+ readonly offsetY: 4;
3314
+ };
3315
+ readonly minHeight: 56;
3316
+ readonly padding: 16;
3317
+ readonly gap: 12;
3318
+ readonly maxWidth: 420;
3319
+ };
3320
+ readonly toneMark: {
3321
+ readonly width: 2;
3322
+ readonly radius: "full";
3323
+ };
3324
+ readonly icon: {
3325
+ readonly glyph: "sm";
3326
+ };
3327
+ readonly content: {
3328
+ readonly gap: 4;
3329
+ };
3330
+ readonly title: {
3331
+ readonly color: Readonly<{
3332
+ source: "theme";
3333
+ key: "text";
3334
+ alpha?: number;
3335
+ }>;
3336
+ readonly textVariant: "body";
3337
+ readonly fontWeight: "700";
3338
+ };
3339
+ readonly description: {
3340
+ readonly color: Readonly<{
3341
+ source: "theme";
3342
+ key: "textBody";
3343
+ alpha?: number;
3344
+ }>;
3345
+ readonly textVariant: "body";
3346
+ };
3347
+ readonly action: {
3348
+ readonly color: Readonly<{
3349
+ source: "theme";
3350
+ key: "contentBrand";
3351
+ alpha?: number;
3352
+ }>;
3353
+ readonly textVariant: "body";
3354
+ readonly fontWeight: "700";
3355
+ readonly minHeight: 44;
3356
+ readonly paddingHorizontal: 8;
3357
+ };
3358
+ readonly close: {
3359
+ readonly color: Readonly<{
3360
+ source: "theme";
3361
+ key: "textMuted";
3362
+ alpha?: number;
3363
+ }>;
3364
+ readonly diameter: 44;
3365
+ readonly glyph: "xs";
3366
+ };
3367
+ readonly states: {
3368
+ readonly pressedOpacity: 0.86;
3369
+ readonly draggedOpacity: 0.64;
3370
+ readonly focus: {
3371
+ readonly color: Readonly<{
3372
+ source: "theme";
3373
+ key: "contentBrand";
3374
+ alpha?: number;
3375
+ }>;
3376
+ readonly width: 2;
3377
+ readonly offset: 2;
3378
+ };
3379
+ };
3380
+ readonly gesture: {
3381
+ readonly dismissThreshold: 50;
3382
+ };
3383
+ readonly transition: {
3384
+ readonly web: {
3385
+ readonly enter: {
3386
+ readonly duration: 120;
3387
+ readonly easing: "standard";
3388
+ readonly reducedMotion: "instant";
3389
+ };
3390
+ readonly exit: {
3391
+ readonly duration: 120;
3392
+ readonly easing: "exit";
3393
+ readonly reducedMotion: "instant";
3394
+ };
3395
+ };
3396
+ readonly native: {
3397
+ readonly enter: {
3398
+ readonly duration: 200;
3399
+ readonly easing: "enter";
3400
+ readonly reducedMotion: "opacity";
3401
+ };
3402
+ readonly exit: {
3403
+ readonly duration: 120;
3404
+ readonly easing: "exit";
3405
+ readonly reducedMotion: "instant";
3406
+ };
3407
+ };
3408
+ };
3409
+ };
3410
+ export declare const tooltipRecipe: {
3411
+ readonly slots: readonly ["provider", "trigger", "content", "arrow"];
3412
+ readonly defaults: {
3413
+ readonly placement: "top";
3414
+ readonly align: "center";
3415
+ };
3416
+ readonly layer: 950;
3417
+ readonly surface: {
3418
+ readonly background: Readonly<{
3419
+ source: "theme";
3420
+ key: "text";
3421
+ alpha?: number;
3422
+ }>;
3423
+ readonly border: Readonly<{
3424
+ source: "theme";
3425
+ key: "text";
3426
+ alpha?: number;
3427
+ }>;
3428
+ readonly radius: "sm";
3429
+ readonly padding: 8;
3430
+ readonly borderWidth: 1;
3431
+ readonly shadow: {
3432
+ readonly color: "#000000";
3433
+ readonly opacity: 0.12;
3434
+ readonly radius: 12;
3435
+ readonly offsetY: 4;
3436
+ };
3437
+ };
3438
+ readonly content: {
3439
+ readonly color: Readonly<{
3440
+ source: "theme";
3441
+ key: "bg";
3442
+ alpha?: number;
3443
+ }>;
3444
+ readonly textVariant: "label";
3445
+ readonly maxWidth: 280;
3446
+ };
3447
+ readonly arrow: {
3448
+ readonly width: 10;
3449
+ readonly height: 5;
3450
+ readonly color: Readonly<{
3451
+ source: "theme";
3452
+ key: "text";
3453
+ alpha?: number;
3454
+ }>;
3455
+ readonly padding: 8;
3456
+ };
3457
+ readonly positioning: {
3458
+ readonly sideOffset: 4;
3459
+ readonly collisionPadding: 12;
3460
+ };
3461
+ readonly transition: {
3462
+ readonly enter: {
3463
+ readonly duration: 120;
3464
+ readonly easing: "standard";
3465
+ readonly reducedMotion: "instant";
3466
+ };
3467
+ readonly exit: {
3468
+ readonly duration: 120;
3469
+ readonly easing: "exit";
3470
+ readonly reducedMotion: "instant";
3471
+ };
3472
+ };
3473
+ };
3474
+ export declare const topBarRecipe: {
3475
+ readonly slots: readonly ["root", "leading", "title", "titleLeading", "titleAction", "trailing", "action", "actionLabel"];
3476
+ readonly defaults: {
3477
+ readonly centered: true;
3478
+ };
3479
+ readonly minHeight: 52;
3480
+ readonly sideMinWidth: 44;
3481
+ readonly paddingHorizontal: 16;
3482
+ readonly gap: 8;
3483
+ readonly largeTextThreshold: 1.6;
3484
+ readonly title: {
3485
+ readonly textVariant: "bodyLarge";
3486
+ readonly color: Readonly<{
3487
+ source: "theme";
3488
+ key: "text";
3489
+ alpha?: number;
3490
+ }>;
3491
+ readonly fontWeight: "700";
3492
+ };
3493
+ readonly titleAction: {
3494
+ readonly minHeight: 44;
3495
+ readonly minWidth: 44;
3496
+ readonly gap: 8;
3497
+ readonly pressedOpacity: 0.86;
3498
+ };
3499
+ readonly action: {
3500
+ readonly minHeight: 44;
3501
+ readonly minWidth: 44;
3502
+ readonly gap: 4;
3503
+ readonly paddingHorizontal: 4;
3504
+ readonly pressedOpacity: 0.86;
3505
+ readonly disabledOpacity: 0.5;
3506
+ };
3507
+ readonly actionLabel: {
3508
+ readonly textVariant: "caption";
3509
+ readonly color: Readonly<{
3510
+ source: "theme";
3511
+ key: "text";
3512
+ alpha?: number;
3513
+ }>;
3514
+ readonly fontWeight: "500";
3515
+ };
3516
+ readonly background: Readonly<{
3517
+ source: "theme";
3518
+ key: "bg";
3519
+ alpha?: number;
3520
+ }>;
3521
+ };
3522
+ export declare const bottomCtaRecipe: {
3523
+ readonly slots: readonly ["root", "description", "secondaryAction", "primaryAction"];
3524
+ readonly minHeight: 64;
3525
+ readonly paddingHorizontal: 20;
3526
+ readonly paddingTop: 12;
3527
+ readonly paddingBottom: 12;
3528
+ readonly gap: 12;
3529
+ readonly background: Readonly<{
3530
+ source: "theme";
3531
+ key: "surface";
3532
+ alpha?: number;
3533
+ }>;
3534
+ readonly border: Readonly<{
3535
+ source: "theme";
3536
+ key: "border";
3537
+ alpha?: number;
3538
+ }>;
3539
+ readonly borderWidth: 1;
3540
+ readonly shadow: {
3541
+ readonly color: "#000000";
3542
+ readonly opacity: 0.08;
3543
+ readonly radius: 8;
3544
+ readonly offsetY: -2;
3545
+ readonly elevation: 8;
3546
+ };
3547
+ };
3548
+ export declare const sectionRecipe: {
3549
+ readonly slots: readonly ["root", "header", "copy", "title", "description", "action", "content"];
3550
+ readonly gap: 8;
3551
+ readonly headerGap: 12;
3552
+ readonly copyGap: 4;
3553
+ readonly title: {
3554
+ readonly textVariant: "title";
3555
+ readonly color: Readonly<{
3556
+ source: "theme";
3557
+ key: "textBody";
3558
+ alpha?: number;
3559
+ }>;
3560
+ readonly fontWeight: "700";
3561
+ };
3562
+ readonly description: {
3563
+ readonly textVariant: "caption";
3564
+ readonly color: Readonly<{
3565
+ source: "theme";
3566
+ key: "textMuted";
3567
+ alpha?: number;
3568
+ }>;
3569
+ };
3570
+ };
3571
+ export type SegmentedControlSize = keyof typeof segmentedControlRecipe.sizes;
3572
+ export type SwitchSize = keyof typeof switchRecipe.sizes;
3573
+ export type SelectionControlSize = keyof typeof selectionControlRecipe.sizes;
3574
+ export type SelectionControlPresentation = keyof typeof selectionControlRecipe.presentations;
3575
+ export type TabSize = keyof typeof tabsRecipe.sizes;
3576
+ export type TabsLayout = keyof typeof tabsRecipe.layouts;
3577
+ export type TabsOverflow = keyof typeof tabsRecipe.overflow;
3578
+ export type SpinnerSize = keyof typeof spinnerRecipe.sizes;
3579
+ export type SpinnerTone = keyof typeof spinnerRecipe.tones;
3580
+ export type AvatarSize = keyof typeof avatarRecipe.sizes;
3581
+ export type AvatarShape = keyof typeof avatarRecipe.shapes;
3582
+ export type DialogSize = keyof typeof dialogRecipe.sizes;
3583
+ //# sourceMappingURL=component-recipes.d.ts.map