@ankhorage/zora 1.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +125 -123
  3. package/dist/components/app-bar/AppBar.js +4 -4
  4. package/dist/components/app-bar/AppBar.js.map +1 -1
  5. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  6. package/dist/components/avatar/Avatar.js +19 -9
  7. package/dist/components/avatar/Avatar.js.map +1 -1
  8. package/dist/components/avatar/types.d.ts +2 -2
  9. package/dist/components/avatar/types.d.ts.map +1 -1
  10. package/dist/components/avatar/types.js.map +1 -1
  11. package/dist/components/avatar-group/AvatarGroup.js +2 -2
  12. package/dist/components/avatar-group/AvatarGroup.js.map +1 -1
  13. package/dist/components/avatar-group/types.d.ts +2 -2
  14. package/dist/components/avatar-group/types.d.ts.map +1 -1
  15. package/dist/components/avatar-group/types.js.map +1 -1
  16. package/dist/components/badge/Badge.js +3 -3
  17. package/dist/components/badge/Badge.js.map +1 -1
  18. package/dist/components/badge/types.d.ts +4 -4
  19. package/dist/components/badge/types.d.ts.map +1 -1
  20. package/dist/components/badge/types.js.map +1 -1
  21. package/dist/components/button/Button.js +3 -3
  22. package/dist/components/button/Button.js.map +1 -1
  23. package/dist/components/button/meta.d.ts +7 -7
  24. package/dist/components/button/meta.d.ts.map +1 -1
  25. package/dist/components/button/meta.js +8 -7
  26. package/dist/components/button/meta.js.map +1 -1
  27. package/dist/components/button/types.d.ts +4 -4
  28. package/dist/components/button/types.d.ts.map +1 -1
  29. package/dist/components/button/types.js.map +1 -1
  30. package/dist/components/card/Card.js +2 -2
  31. package/dist/components/card/Card.js.map +1 -1
  32. package/dist/components/checkbox/CheckboxGroup.js +5 -5
  33. package/dist/components/checkbox/CheckboxGroup.js.map +1 -1
  34. package/dist/components/checkbox/types.d.ts +1 -1
  35. package/dist/components/checkbox/types.d.ts.map +1 -1
  36. package/dist/components/checkbox/types.js.map +1 -1
  37. package/dist/components/chip/Chip.d.ts.map +1 -1
  38. package/dist/components/chip/Chip.js +9 -10
  39. package/dist/components/chip/Chip.js.map +1 -1
  40. package/dist/components/chip/resolveChipColors.d.ts +3 -3
  41. package/dist/components/chip/resolveChipColors.d.ts.map +1 -1
  42. package/dist/components/chip/resolveChipColors.js +14 -4
  43. package/dist/components/chip/resolveChipColors.js.map +1 -1
  44. package/dist/components/chip/types.d.ts +2 -2
  45. package/dist/components/chip/types.d.ts.map +1 -1
  46. package/dist/components/chip/types.js.map +1 -1
  47. package/dist/components/chip-group/ChipGroup.js +2 -2
  48. package/dist/components/chip-group/ChipGroup.js.map +1 -1
  49. package/dist/components/chip-group/types.d.ts +2 -2
  50. package/dist/components/chip-group/types.d.ts.map +1 -1
  51. package/dist/components/chip-group/types.js.map +1 -1
  52. package/dist/components/drawer/Drawer.js +1 -1
  53. package/dist/components/drawer/Drawer.js.map +1 -1
  54. package/dist/components/form/FormError.js +1 -1
  55. package/dist/components/form/FormError.js.map +1 -1
  56. package/dist/components/form/FormField.js +1 -1
  57. package/dist/components/form/FormField.js.map +1 -1
  58. package/dist/components/heading/Heading.d.ts.map +1 -1
  59. package/dist/components/heading/Heading.js +5 -3
  60. package/dist/components/heading/Heading.js.map +1 -1
  61. package/dist/components/heading/index.d.ts +1 -1
  62. package/dist/components/heading/index.d.ts.map +1 -1
  63. package/dist/components/heading/index.js.map +1 -1
  64. package/dist/components/heading/meta.d.ts +9 -3
  65. package/dist/components/heading/meta.d.ts.map +1 -1
  66. package/dist/components/heading/meta.js +10 -3
  67. package/dist/components/heading/meta.js.map +1 -1
  68. package/dist/components/heading/resolveHeadingRecipe.d.ts +4 -3
  69. package/dist/components/heading/resolveHeadingRecipe.d.ts.map +1 -1
  70. package/dist/components/heading/resolveHeadingRecipe.js +33 -12
  71. package/dist/components/heading/resolveHeadingRecipe.js.map +1 -1
  72. package/dist/components/heading/types.d.ts +5 -2
  73. package/dist/components/heading/types.d.ts.map +1 -1
  74. package/dist/components/heading/types.js.map +1 -1
  75. package/dist/components/icon-button/IconButton.js +3 -3
  76. package/dist/components/icon-button/IconButton.js.map +1 -1
  77. package/dist/components/icon-button/types.d.ts +3 -3
  78. package/dist/components/icon-button/types.d.ts.map +1 -1
  79. package/dist/components/icon-button/types.js.map +1 -1
  80. package/dist/components/input/Input.js +1 -1
  81. package/dist/components/input/Input.js.map +1 -1
  82. package/dist/components/media-card/MediaCard.js +2 -2
  83. package/dist/components/media-card/MediaCard.js.map +1 -1
  84. package/dist/components/metric-card/MetricCard.js +5 -5
  85. package/dist/components/metric-card/MetricCard.js.map +1 -1
  86. package/dist/components/metric-card/types.d.ts +2 -2
  87. package/dist/components/metric-card/types.d.ts.map +1 -1
  88. package/dist/components/metric-card/types.js.map +1 -1
  89. package/dist/components/modal/Modal.js +1 -1
  90. package/dist/components/modal/Modal.js.map +1 -1
  91. package/dist/components/progress/Progress.js +2 -2
  92. package/dist/components/progress/Progress.js.map +1 -1
  93. package/dist/components/progress/types.d.ts +3 -3
  94. package/dist/components/progress/types.d.ts.map +1 -1
  95. package/dist/components/progress/types.js +12 -2
  96. package/dist/components/progress/types.js.map +1 -1
  97. package/dist/components/radio/RadioGroup.js +5 -5
  98. package/dist/components/radio/RadioGroup.js.map +1 -1
  99. package/dist/components/radio/types.d.ts +1 -1
  100. package/dist/components/radio/types.d.ts.map +1 -1
  101. package/dist/components/radio/types.js.map +1 -1
  102. package/dist/components/rating/Rating.js +2 -2
  103. package/dist/components/rating/Rating.js.map +1 -1
  104. package/dist/components/rating/types.d.ts +3 -3
  105. package/dist/components/rating/types.d.ts.map +1 -1
  106. package/dist/components/rating/types.js +12 -2
  107. package/dist/components/rating/types.js.map +1 -1
  108. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  109. package/dist/components/tabs/Tabs.js +4 -4
  110. package/dist/components/tabs/Tabs.js.map +1 -1
  111. package/dist/components/text/Text.d.ts.map +1 -1
  112. package/dist/components/text/Text.js +3 -2
  113. package/dist/components/text/Text.js.map +1 -1
  114. package/dist/components/text/index.d.ts +1 -1
  115. package/dist/components/text/index.d.ts.map +1 -1
  116. package/dist/components/text/index.js.map +1 -1
  117. package/dist/components/text/meta.d.ts +10 -4
  118. package/dist/components/text/meta.d.ts.map +1 -1
  119. package/dist/components/text/meta.js +11 -4
  120. package/dist/components/text/meta.js.map +1 -1
  121. package/dist/components/text/resolveTextRecipe.d.ts +4 -3
  122. package/dist/components/text/resolveTextRecipe.d.ts.map +1 -1
  123. package/dist/components/text/resolveTextRecipe.js +35 -13
  124. package/dist/components/text/resolveTextRecipe.js.map +1 -1
  125. package/dist/components/text/types.d.ts +5 -2
  126. package/dist/components/text/types.d.ts.map +1 -1
  127. package/dist/components/text/types.js.map +1 -1
  128. package/dist/components/toolbar/ToolbarAction.js +1 -1
  129. package/dist/components/toolbar/ToolbarAction.js.map +1 -1
  130. package/dist/index.d.ts +4 -2
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +1 -0
  133. package/dist/index.js.map +1 -1
  134. package/dist/internal/colorModel.d.ts +10 -0
  135. package/dist/internal/colorModel.d.ts.map +1 -0
  136. package/dist/internal/colorModel.js +25 -0
  137. package/dist/internal/colorModel.js.map +1 -0
  138. package/dist/internal/recipes.d.ts +12 -11
  139. package/dist/internal/recipes.d.ts.map +1 -1
  140. package/dist/internal/recipes.js +6 -6
  141. package/dist/internal/recipes.js.map +1 -1
  142. package/dist/layout/screen/Screen.d.ts.map +1 -1
  143. package/dist/layout/screen/Screen.js +7 -3
  144. package/dist/layout/screen/Screen.js.map +1 -1
  145. package/dist/patterns/auth/ForgotPasswordForm.js +2 -2
  146. package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -1
  147. package/dist/patterns/auth/OtpForm.js +2 -2
  148. package/dist/patterns/auth/OtpForm.js.map +1 -1
  149. package/dist/patterns/auth/SignInForm.js +4 -4
  150. package/dist/patterns/auth/SignInForm.js.map +1 -1
  151. package/dist/patterns/auth/SignUpForm.js +2 -2
  152. package/dist/patterns/auth/SignUpForm.js.map +1 -1
  153. package/dist/patterns/chat-list-item/ChatListItem.d.ts.map +1 -1
  154. package/dist/patterns/chat-list-item/ChatListItem.js +6 -6
  155. package/dist/patterns/chat-list-item/ChatListItem.js.map +1 -1
  156. package/dist/patterns/chat-list-item/types.d.ts +2 -2
  157. package/dist/patterns/chat-list-item/types.d.ts.map +1 -1
  158. package/dist/patterns/chat-list-item/types.js.map +1 -1
  159. package/dist/patterns/collection-editor/CollectionEditor.js +5 -5
  160. package/dist/patterns/collection-editor/CollectionEditor.js.map +1 -1
  161. package/dist/patterns/confirm-dialog/ConfirmDialog.js +3 -3
  162. package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
  163. package/dist/patterns/confirm-dialog/types.d.ts +3 -3
  164. package/dist/patterns/confirm-dialog/types.d.ts.map +1 -1
  165. package/dist/patterns/confirm-dialog/types.js.map +1 -1
  166. package/dist/patterns/disclosure-section/DisclosureSection.js +1 -1
  167. package/dist/patterns/disclosure-section/DisclosureSection.js.map +1 -1
  168. package/dist/patterns/empty-state/EmptyState.js +2 -2
  169. package/dist/patterns/empty-state/EmptyState.js.map +1 -1
  170. package/dist/patterns/empty-state/types.d.ts +3 -3
  171. package/dist/patterns/empty-state/types.d.ts.map +1 -1
  172. package/dist/patterns/empty-state/types.js.map +1 -1
  173. package/dist/patterns/form-field/FormField.js +1 -1
  174. package/dist/patterns/form-field/FormField.js.map +1 -1
  175. package/dist/patterns/hero/Hero.js +3 -3
  176. package/dist/patterns/hero/Hero.js.map +1 -1
  177. package/dist/patterns/hero/types.d.ts +3 -3
  178. package/dist/patterns/hero/types.d.ts.map +1 -1
  179. package/dist/patterns/hero/types.js.map +1 -1
  180. package/dist/patterns/image-preview/ImagePreview.js +1 -1
  181. package/dist/patterns/image-preview/ImagePreview.js.map +1 -1
  182. package/dist/patterns/image-upload-field/ImageUploadField.js +7 -7
  183. package/dist/patterns/image-upload-field/ImageUploadField.js.map +1 -1
  184. package/dist/patterns/list/ListRow.js +2 -2
  185. package/dist/patterns/list/ListRow.js.map +1 -1
  186. package/dist/patterns/message-bubble/MessageBubble.d.ts.map +1 -1
  187. package/dist/patterns/message-bubble/MessageBubble.js +6 -6
  188. package/dist/patterns/message-bubble/MessageBubble.js.map +1 -1
  189. package/dist/patterns/message-bubble/types.d.ts +2 -2
  190. package/dist/patterns/message-bubble/types.d.ts.map +1 -1
  191. package/dist/patterns/message-bubble/types.js.map +1 -1
  192. package/dist/patterns/notice/Notice.js +2 -2
  193. package/dist/patterns/notice/Notice.js.map +1 -1
  194. package/dist/patterns/notice/types.d.ts +2 -2
  195. package/dist/patterns/notice/types.d.ts.map +1 -1
  196. package/dist/patterns/notice/types.js.map +1 -1
  197. package/dist/patterns/post-card/PostCard.js +4 -4
  198. package/dist/patterns/post-card/PostCard.js.map +1 -1
  199. package/dist/patterns/post-card/types.d.ts +2 -2
  200. package/dist/patterns/post-card/types.d.ts.map +1 -1
  201. package/dist/patterns/post-card/types.js.map +1 -1
  202. package/dist/patterns/section-header/SectionHeader.js +2 -2
  203. package/dist/patterns/section-header/SectionHeader.js.map +1 -1
  204. package/dist/patterns/settings-row/SettingsRow.js +1 -1
  205. package/dist/patterns/settings-row/SettingsRow.js.map +1 -1
  206. package/dist/patterns/theme-composer/ThemeComposer.js +14 -14
  207. package/dist/patterns/theme-composer/ThemeComposer.js.map +1 -1
  208. package/dist/patterns/tile-grid/PaletteItem.js +1 -1
  209. package/dist/patterns/tile-grid/PaletteItem.js.map +1 -1
  210. package/dist/patterns/timeline/Timeline.d.ts.map +1 -1
  211. package/dist/patterns/timeline/Timeline.js +14 -4
  212. package/dist/patterns/timeline/Timeline.js.map +1 -1
  213. package/dist/patterns/timeline/types.d.ts +2 -2
  214. package/dist/patterns/timeline/types.d.ts.map +1 -1
  215. package/dist/patterns/timeline/types.js.map +1 -1
  216. package/dist/patterns/tree-view/TreeItem.js +1 -1
  217. package/dist/patterns/tree-view/TreeItem.js.map +1 -1
  218. package/dist/patterns/zora-tab-bar/ZoraTabBar.d.ts.map +1 -1
  219. package/dist/patterns/zora-tab-bar/ZoraTabBar.js +64 -15
  220. package/dist/patterns/zora-tab-bar/ZoraTabBar.js.map +1 -1
  221. package/package.json +2 -2
  222. package/src/components/app-bar/AppBar.tsx +6 -6
  223. package/src/components/avatar/Avatar.tsx +21 -11
  224. package/src/components/avatar/types.ts +2 -2
  225. package/src/components/avatar-group/AvatarGroup.tsx +2 -2
  226. package/src/components/avatar-group/types.ts +2 -2
  227. package/src/components/badge/Badge.tsx +4 -4
  228. package/src/components/badge/types.ts +4 -4
  229. package/src/components/button/Button.tsx +4 -4
  230. package/src/components/button/meta.ts +8 -7
  231. package/src/components/button/types.ts +4 -4
  232. package/src/components/card/Card.tsx +2 -2
  233. package/src/components/checkbox/CheckboxGroup.tsx +6 -6
  234. package/src/components/checkbox/types.ts +1 -1
  235. package/src/components/chip/Chip.tsx +9 -10
  236. package/src/components/chip/resolveChipColors.ts +16 -6
  237. package/src/components/chip/types.ts +2 -2
  238. package/src/components/chip-group/ChipGroup.tsx +2 -2
  239. package/src/components/chip-group/types.ts +2 -2
  240. package/src/components/drawer/Drawer.tsx +1 -1
  241. package/src/components/form/FormError.tsx +1 -1
  242. package/src/components/form/FormField.tsx +1 -1
  243. package/src/components/heading/Heading.tsx +6 -3
  244. package/src/components/heading/index.ts +2 -1
  245. package/src/components/heading/meta.ts +10 -3
  246. package/src/components/heading/resolveHeadingRecipe.test.ts +13 -10
  247. package/src/components/heading/resolveHeadingRecipe.ts +58 -15
  248. package/src/components/heading/types.ts +5 -10
  249. package/src/components/icon-button/IconButton.tsx +4 -4
  250. package/src/components/icon-button/types.ts +3 -3
  251. package/src/components/input/Input.tsx +2 -2
  252. package/src/components/media-card/MediaCard.tsx +2 -2
  253. package/src/components/metric-card/MetricCard.tsx +6 -6
  254. package/src/components/metric-card/types.ts +2 -2
  255. package/src/components/modal/Modal.tsx +1 -1
  256. package/src/components/progress/Progress.tsx +2 -2
  257. package/src/components/progress/types.ts +14 -4
  258. package/src/components/radio/RadioGroup.tsx +6 -6
  259. package/src/components/radio/types.ts +1 -1
  260. package/src/components/rating/Rating.tsx +2 -2
  261. package/src/components/rating/types.ts +14 -4
  262. package/src/components/tabs/Tabs.tsx +11 -7
  263. package/src/components/text/Text.tsx +4 -2
  264. package/src/components/text/index.ts +8 -1
  265. package/src/components/text/meta.ts +11 -4
  266. package/src/components/text/resolveTextRecipe.test.ts +18 -14
  267. package/src/components/text/resolveTextRecipe.ts +42 -15
  268. package/src/components/text/types.ts +5 -10
  269. package/src/components/toolbar/ToolbarAction.tsx +2 -2
  270. package/src/index.ts +22 -2
  271. package/src/internal/colorModel.ts +39 -0
  272. package/src/internal/recipes.test.ts +2 -2
  273. package/src/internal/recipes.ts +18 -18
  274. package/src/layout/screen/Screen.tsx +11 -3
  275. package/src/patterns/auth/ForgotPasswordForm.tsx +2 -2
  276. package/src/patterns/auth/OtpForm.tsx +2 -2
  277. package/src/patterns/auth/SignInForm.tsx +4 -4
  278. package/src/patterns/auth/SignUpForm.tsx +2 -2
  279. package/src/patterns/chat-list-item/ChatListItem.tsx +7 -6
  280. package/src/patterns/chat-list-item/types.ts +2 -2
  281. package/src/patterns/collection-editor/CollectionEditor.tsx +6 -6
  282. package/src/patterns/confirm-dialog/ConfirmDialog.tsx +4 -4
  283. package/src/patterns/confirm-dialog/types.ts +3 -3
  284. package/src/patterns/disclosure-section/DisclosureSection.tsx +2 -2
  285. package/src/patterns/empty-state/EmptyState.tsx +4 -4
  286. package/src/patterns/empty-state/types.ts +3 -3
  287. package/src/patterns/form-field/FormField.tsx +1 -1
  288. package/src/patterns/hero/Hero.tsx +4 -4
  289. package/src/patterns/hero/types.ts +3 -3
  290. package/src/patterns/image-preview/ImagePreview.tsx +1 -1
  291. package/src/patterns/image-upload-field/ImageUploadField.tsx +8 -8
  292. package/src/patterns/list/ListRow.tsx +2 -2
  293. package/src/patterns/message-bubble/MessageBubble.tsx +10 -6
  294. package/src/patterns/message-bubble/types.ts +2 -2
  295. package/src/patterns/notice/Notice.tsx +2 -2
  296. package/src/patterns/notice/types.ts +2 -2
  297. package/src/patterns/post-card/PostCard.tsx +5 -5
  298. package/src/patterns/post-card/types.ts +2 -2
  299. package/src/patterns/section-header/SectionHeader.tsx +2 -2
  300. package/src/patterns/settings-row/SettingsRow.tsx +1 -1
  301. package/src/patterns/theme-composer/ThemeComposer.tsx +15 -15
  302. package/src/patterns/tile-grid/PaletteItem.tsx +1 -1
  303. package/src/patterns/timeline/Timeline.tsx +15 -5
  304. package/src/patterns/timeline/types.ts +2 -2
  305. package/src/patterns/tree-view/TreeItem.tsx +1 -1
  306. package/src/patterns/zora-tab-bar/ZoraTabBar.tsx +104 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - b832d62: Replace ZORA `tone` APIs with Surface-derived `color` and `emphasis` models across components, patterns, and recipes.
8
+
9
+ Breaking changes:
10
+ - Removed `ZoraTone` from the public API.
11
+ - Added Surface-derived public color model exports:
12
+ - `ZoraPaletteColor`, `ZoraStatusColor`, `ZoraColor`, `ZoraEmphasis`
13
+ - `ZORA_PALETTE_COLORS`, `ZORA_STATUS_COLORS`, `ZORA_COLORS`, `ZORA_EMPHASES`
14
+ - Updated semantic props from `tone` to `color` for components and patterns that select semantic color roles.
15
+ - Updated text-like APIs to use `emphasis` for content contrast.
16
+
17
+ Migration:
18
+ - Replace semantic `tone` props with `color`.
19
+ - Replace text/heading contrast values (`default`, `muted`, `subtle`, `inverse`) to `emphasis`.
20
+ - Keep `tone` only where it represents card-style visual treatment (`ZoraCardTone`).
21
+
22
+ ### Patch Changes
23
+
24
+ - 02629b6: Update SURFACE
25
+
26
+ ## 1.5.1
27
+
28
+ ### Patch Changes
29
+
30
+ - 07e9d96: Improve realistic example app chrome by adding compact AppBars with dark-mode toggles, applying semantic Screen backgrounds, and fixing native ZoraTabBar icon/label rendering.
31
+
3
32
  ## 1.5.0
4
33
 
5
34
  ### Minor Changes
package/README.md CHANGED
@@ -62,7 +62,7 @@ export function App() {
62
62
  title="Welcome"
63
63
  >
64
64
  <Heading level={3}>Next steps</Heading>
65
- <Text tone="muted">Structured text comes from ZORA too.</Text>
65
+ <Text emphasis="muted">Structured text comes from ZORA too.</Text>
66
66
  </Card>
67
67
  </Screen>
68
68
  </AppShell>
@@ -231,9 +231,9 @@ export default function Layout() {
231
231
 
232
232
  These unions appear across the catalogue:
233
233
 
234
- - `ZoraTone` comes from Surface `ButtonProps['tone']`.
235
- - `ZoraEmphasis` comes from Surface `ButtonProps['variant']`.
236
- - `ZoraBadgeEmphasis` comes from Surface `BadgeProps['variant']`.
234
+ - `ZoraColor` comes from Surface `ButtonProps['color']`.
235
+ - `ZoraEmphasis` comes from Surface `SurfaceEmphasis` (`default | muted | subtle | inverse`).
236
+ - `ButtonProps['variant']` and `BadgeProps['variant']` control visual treatment.
237
237
  - `ZoraControlSize` comes from Surface `ButtonProps['size']`.
238
238
  - `ZoraCardTone = 'default' | 'subtle' | 'outline'`.
239
239
  - `ZoraContentWidth = 'narrow' | 'default' | 'wide'`.
@@ -385,7 +385,7 @@ Metadata model overview:
385
385
 
386
386
  ### `Heading`
387
387
 
388
- Structured titles with semantic levels, visual sizes, semantic tones, and
388
+ Structured titles with semantic levels, visual sizes, semantic color, and
389
389
  responsive props. Use `Heading` for titles and `Text` for body copy.
390
390
 
391
391
  ```tsx
@@ -393,7 +393,7 @@ responsive props. Use `Heading` for titles and `Text` for body copy.
393
393
  Build faster with ZORA
394
394
  </Heading>
395
395
 
396
- <Heading level={2} tone="primary">
396
+ <Heading level={2} color="primary">
397
397
  Create consistent screens
398
398
  </Heading>
399
399
  ```
@@ -413,7 +413,8 @@ ZORA props:
413
413
  | `i18nKey` | `string` | - | Runtime-resolved fallback key when no content prop is provided. |
414
414
  | `level` | `HeadingLevel` | `2` | Semantic heading level from `1` through `6`. |
415
415
  | `size` | `Responsive<HeadingSize>` | level size | Visual scale: `display`, `h1` through `h6`. |
416
- | `tone` | `Responsive<HeadingTone>` | `'default'` | Semantic text color. |
416
+ | `color` | `Responsive<HeadingColor>` | - | Semantic text color role. |
417
+ | `emphasis` | `Responsive<HeadingEmphasis>` | `'default'` | Content emphasis / contrast. |
417
418
  | `align` | `Responsive<HeadingAlign>` | - | Text alignment. |
418
419
  | `weight` | `Responsive<HeadingWeight>` | recipe | Optional structured weight override. |
419
420
  | `italic` | `boolean` | `false` | Italic style. |
@@ -429,11 +430,11 @@ usage structured and template-safe.
429
430
 
430
431
  ### `Text`
431
432
 
432
- Structured body text with ZORA typography variants, semantic tones, and
433
+ Structured body text with ZORA typography variants, semantic color, and
433
434
  responsive props.
434
435
 
435
436
  ```tsx
436
- <Text variant="lead" tone="muted">
437
+ <Text variant="lead" emphasis="muted">
437
438
  Build product screens with structured, theme-aware copy.
438
439
  </Text>
439
440
 
@@ -453,7 +454,8 @@ ZORA props:
453
454
  | `text` | `string` | - | Manifest-friendly content prop. |
454
455
  | `i18nKey` | `string` | - | Runtime-resolved fallback key when no content prop is provided. |
455
456
  | `variant` | `Responsive<TextVariant>` | `'body'` | Typography recipe. |
456
- | `tone` | `Responsive<TextTone>` | `'default'` | Semantic text color. |
457
+ | `color` | `Responsive<TextColor>` | - | Semantic text color role. |
458
+ | `emphasis` | `Responsive<TextEmphasis>` | `'default'` | Content emphasis / contrast. |
457
459
  | `align` | `Responsive<TextAlign>` | - | Text alignment. |
458
460
  | `weight` | `Responsive<TextWeight>` | recipe | Optional structured weight override. |
459
461
  | `italic` | `boolean` | `false` | Italic style. |
@@ -469,7 +471,7 @@ structured and template-safe.
469
471
 
470
472
  ### `Button`
471
473
 
472
- Action button with ZORA defaults for tone, emphasis, size, and icons.
474
+ Action button with ZORA defaults for color, variant, size, and icons.
473
475
 
474
476
  ```tsx
475
477
  <Button leadingIcon={{ name: 'checkmark-circle-outline' }}>Save</Button>
@@ -480,18 +482,18 @@ Action button with ZORA defaults for tone, emphasis, size, and icons.
480
482
 
481
483
  ZORA props:
482
484
 
483
- | Prop | Type | Default | Notes |
484
- | -------------- | ----------------- | ----------- | ------------------------------------------ |
485
- | `children` | `React.ReactNode` | - | Button label or content. |
486
- | `tone` | `ZoraTone` | `'primary'` | Passed to Surface as `tone`. |
487
- | `emphasis` | `ZoraEmphasis` | `'solid'` | Passed to Surface as `variant`. |
488
- | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
489
- | `leadingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered before content. |
490
- | `trailingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered after content. |
485
+ | Prop | Type | Default | Notes |
486
+ | -------------- | ------------------------ | ----------- | ------------------------------------------ |
487
+ | `children` | `React.ReactNode` | - | Button label or content. |
488
+ | `color` | `ZoraColor` | `'primary'` | Passed to Surface as `color`. |
489
+ | `variant` | `ButtonProps['variant']` | `'solid'` | Visual treatment variant. |
490
+ | `size` | `ZoraControlSize` | `'l'` | Passed to Surface as `size`. |
491
+ | `leadingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered before content. |
492
+ | `trailingIcon` | `ButtonIconSpec` | - | Surface icon spec rendered after content. |
491
493
 
492
494
  Inherited props:
493
495
 
494
- Inherits all Surface `ButtonProps` except `children`, `size`, `tone`, and
496
+ Inherits all Surface `ButtonProps` except `children`, `size`, `color`, and
495
497
  `variant`. This includes Surface button behavior such as `loading`,
496
498
  `fullWidth`, pressability props, disabled state, accessibility props allowed by
497
499
  Surface, and `testID`.
@@ -503,7 +505,7 @@ Surface, and `testID`.
503
505
  Compact icon-only button for toolbars, rows, and actions.
504
506
 
505
507
  ```tsx
506
- <IconButton icon={{ name: 'trash-outline' }} label="Delete" tone="danger" />
508
+ <IconButton icon={{ name: 'trash-outline' }} label="Delete" color="danger" />
507
509
  ```
508
510
 
509
511
  <details>
@@ -511,13 +513,13 @@ Compact icon-only button for toolbars, rows, and actions.
511
513
 
512
514
  ZORA props:
513
515
 
514
- | Prop | Type | Default | Notes |
515
- | ---------- | ----------------- | ----------- | ---------------------------------- |
516
- | `icon` | `ButtonIconSpec` | - | Required icon to render. |
517
- | `label` | `string` | - | Required for `accessibilityLabel`. |
518
- | `tone` | `ZoraTone` | `'neutral'` | Button tone. |
519
- | `emphasis` | `ZoraEmphasis` | `'ghost'` | Button emphasis. |
520
- | `size` | `ZoraControlSize` | `'m'` | Button size. |
516
+ | Prop | Type | Default | Notes |
517
+ | --------- | ---------------------------- | ----------- | ---------------------------------- |
518
+ | `icon` | `ButtonIconSpec` | - | Required icon to render. |
519
+ | `label` | `string` | - | Required for `accessibilityLabel`. |
520
+ | `color` | `ZoraColor` | `'neutral'` | Button color role. |
521
+ | `variant` | `IconButtonProps['variant']` | `'ghost'` | Visual treatment variant. |
522
+ | `size` | `ZoraControlSize` | `'m'` | Button size. |
521
523
 
522
524
  Inherited props:
523
525
 
@@ -532,7 +534,7 @@ User/profile image with name-based initials and optional icon fallback.
532
534
 
533
535
  ```tsx
534
536
  <Avatar name="Zora Kit" />
535
- <Avatar size="l" tone="primary" name="Fabio Gartenmann" />
537
+ <Avatar size="l" color="primary" name="Fabio Gartenmann" />
536
538
  ```
537
539
 
538
540
  <details>
@@ -549,7 +551,7 @@ ZORA props:
549
551
  | `label` | `string` | - | Accessibility label for the rendered content. |
550
552
  | `size` | `AvatarSize` | `'m'` | `xs`..`xl` size preset. |
551
553
  | `shape` | `AvatarShape` | `'circle'` | `circle` or `rounded`. |
552
- | `tone` | `ZoraTone` | `'neutral'` | Drives background and fallback content tone. |
554
+ | `color` | `ZoraColor` | `'neutral'` | Drives background and fallback content color. |
553
555
  | `testID` | `string` | - | Test id. |
554
556
 
555
557
  Inherited props:
@@ -566,7 +568,7 @@ Overlapping avatar stack with optional overflow label.
566
568
  <AvatarGroup
567
569
  items={[
568
570
  { id: '1', name: 'Ada Lovelace' },
569
- { id: '2', name: 'Grace Hopper', tone: 'success' },
571
+ { id: '2', name: 'Grace Hopper', color: 'success' },
570
572
  ]}
571
573
  />
572
574
  ```
@@ -587,15 +589,15 @@ ZORA props:
587
589
 
588
590
  `AvatarGroupItem`:
589
591
 
590
- | Prop | Type | Notes |
591
- | -------------- | --------------------- | ------------------------------- |
592
- | `id` | `string` | Optional stable key. |
593
- | `source` | `ImageSourcePropType` | Image source for the avatar. |
594
- | `name` | `string` | Used to derive initials. |
595
- | `initials` | `string` | Explicit initials override. |
596
- | `iconFallback` | `ButtonIconSpec` | Optional icon fallback. |
597
- | `label` | `string` | Accessibility label. |
598
- | `tone` | `ZoraTone` | Overrides avatar tone per item. |
592
+ | Prop | Type | Notes |
593
+ | -------------- | --------------------- | -------------------------------- |
594
+ | `id` | `string` | Optional stable key. |
595
+ | `source` | `ImageSourcePropType` | Image source for the avatar. |
596
+ | `name` | `string` | Used to derive initials. |
597
+ | `initials` | `string` | Explicit initials override. |
598
+ | `iconFallback` | `ButtonIconSpec` | Optional icon fallback. |
599
+ | `label` | `string` | Accessibility label. |
600
+ | `color` | `ZoraColor` | Overrides avatar color per item. |
599
601
 
600
602
  Inherited props:
601
603
 
@@ -605,10 +607,10 @@ No inherited props. `AvatarGroupProps` is declared directly by ZORA.
605
607
 
606
608
  ### `Badge`
607
609
 
608
- Small status label with ZORA tone, emphasis, and size defaults.
610
+ Small status label with ZORA color, variant, and size defaults.
609
611
 
610
612
  ```tsx
611
- <Badge tone="success">Active</Badge>
613
+ <Badge color="success">Active</Badge>
612
614
  ```
613
615
 
614
616
  <details>
@@ -616,16 +618,16 @@ Small status label with ZORA tone, emphasis, and size defaults.
616
618
 
617
619
  ZORA props:
618
620
 
619
- | Prop | Type | Default | Notes |
620
- | ---------- | ------------------- | ----------- | ------------------------------------ |
621
- | `children` | `React.ReactNode` | - | Rendered as Surface badge `content`. |
622
- | `tone` | `ZoraTone` | `'primary'` | Passed to Surface as `tone`. |
623
- | `emphasis` | `ZoraBadgeEmphasis` | `'soft'` | Passed to Surface as `variant`. |
624
- | `size` | `ZoraControlSize` | `'m'` | Passed to Surface as `size`. |
621
+ | Prop | Type | Default | Notes |
622
+ | ---------- | ----------------------- | ----------- | ------------------------------------ |
623
+ | `children` | `React.ReactNode` | - | Rendered as Surface badge `content`. |
624
+ | `color` | `ZoraColor` | `'primary'` | Passed to Surface as `color`. |
625
+ | `variant` | `BadgeProps['variant']` | `'soft'` | Visual treatment variant. |
626
+ | `size` | `ZoraControlSize` | `'m'` | Passed to Surface as `size`. |
625
627
 
626
628
  Inherited props:
627
629
 
628
- Inherits all Surface `BadgeProps` except `content`, `size`, `tone`, and
630
+ Inherits all Surface `BadgeProps` except `content`, `size`, `color`, and
629
631
  `variant`. The remaining inherited prop is `testID`.
630
632
 
631
633
  </details>
@@ -672,7 +674,7 @@ Media-first card surface for listings, content previews, and catalog items.
672
674
  imageLabel="Cover image"
673
675
  title="MediaCard"
674
676
  description="Composes an image slot, header content, badges, actions, and footer metadata."
675
- badges={<Badge tone="primary">Featured</Badge>}
677
+ badges={<Badge color="primary">Featured</Badge>}
676
678
  footer={<Rating value={4.5} />}
677
679
  onPress={() => undefined}
678
680
  />
@@ -745,7 +747,7 @@ Compact metric surface for dashboards, stats, and summary cards.
745
747
  label="Monthly active users"
746
748
  value="14.2k"
747
749
  delta="+4.1%"
748
- deltaTone="success"
750
+ deltaColor="success"
749
751
  description="Last 30 days"
750
752
  />
751
753
  ```
@@ -762,7 +764,7 @@ ZORA props:
762
764
  | `description` | `React.ReactNode` | - | Optional supporting copy. |
763
765
  | `icon` | `ButtonIconSpec` | - | Optional icon shown next to the label. |
764
766
  | `delta` | `React.ReactNode` | - | Optional delta badge content. |
765
- | `deltaTone` | `ZoraTone` | `'neutral'` | Tone used for the delta `Badge`. |
767
+ | `deltaColor` | `ZoraColor` | `'neutral'` | Color used for the delta `Badge`. |
766
768
  | `actions` | `React.ReactNode` | - | Optional trailing action area; disables `onPress`. |
767
769
  | `tone` | `ZoraCardTone` | `'default'` | Passed to the underlying `Card`. |
768
770
  | `compact` | `boolean` | `false` | Uses tighter spacing. |
@@ -777,11 +779,11 @@ No inherited props. `MetricCardProps` is declared directly by ZORA.
777
779
 
778
780
  ### `Progress`
779
781
 
780
- Linear progress bar with semantic tone.
782
+ Linear progress bar with semantic color.
781
783
 
782
784
  ```tsx
783
785
  <Progress value={72} />
784
- <Progress tone="success" value={38} />
786
+ <Progress color="success" value={38} />
785
787
  ```
786
788
 
787
789
  <details>
@@ -793,7 +795,7 @@ ZORA props:
793
795
  | -------- | ----------------- | ----------- | ----------------------------- |
794
796
  | `value` | `number` | - | Current progress value. |
795
797
  | `max` | `number` | `100` | Maximum value for completion. |
796
- | `tone` | `ZoraTone` | `'primary'` | Fill tone. |
798
+ | `color` | `ZoraColor` | `'primary'` | Fill color role. |
797
799
  | `size` | `ZoraControlSize` | `'m'` | Controls bar height. |
798
800
  | `testID` | `string` | - | Test id. |
799
801
 
@@ -820,7 +822,7 @@ ZORA props:
820
822
  | -------- | ----------------- | ----------- | ---------------------- |
821
823
  | `value` | `number` | - | Current rating value. |
822
824
  | `max` | `number` | `5` | Maximum rating value. |
823
- | `tone` | `ZoraTone` | `'warning'` | Tone for filled icons. |
825
+ | `color` | `ZoraColor` | `'warning'` | Tone for filled icons. |
824
826
  | `size` | `ZoraControlSize` | `'m'` | Icon sizing preset. |
825
827
  | `testID` | `string` | - | Test id. |
826
828
 
@@ -941,7 +943,7 @@ type RadioGroupOption = {
941
943
 
942
944
  Inherited props:
943
945
 
944
- Passes `tone`, `size`, `invalid`, `readOnly`, `disabled`, and `testID`
946
+ Passes `color`, `size`, `invalid`, `readOnly`, `disabled`, and `testID`
945
947
  to underlying Surface `Radio` components.
946
948
 
947
949
  </details>
@@ -991,7 +993,7 @@ type CheckboxGroupOption = {
991
993
 
992
994
  Inherited props:
993
995
 
994
- Passes `tone`, `size`, `invalid`, `readOnly`, `disabled`, and `testID`
996
+ Passes `color`, `size`, `invalid`, `readOnly`, `disabled`, and `testID`
995
997
  to underlying Surface `Checkbox` components.
996
998
 
997
999
  </details>
@@ -1001,7 +1003,7 @@ to underlying Surface `Checkbox` components.
1001
1003
  Compact filter/action token with optional icon and selected state.
1002
1004
 
1003
1005
  ```tsx
1004
- <Chip selected tone="primary" onPress={() => undefined}>
1006
+ <Chip selected color="primary" onPress={() => undefined}>
1005
1007
  Selected
1006
1008
  </Chip>
1007
1009
  ```
@@ -1011,16 +1013,16 @@ Compact filter/action token with optional icon and selected state.
1011
1013
 
1012
1014
  ZORA props:
1013
1015
 
1014
- | Prop | Type | Default | Notes |
1015
- | ---------- | ----------------- | ----------- | ------------------------------------ |
1016
- | `children` | `React.ReactNode` | - | Chip label content. |
1017
- | `icon` | `ButtonIconSpec` | - | Optional leading icon spec. |
1018
- | `selected` | `boolean` | `false` | Selected styling state. |
1019
- | `tone` | `ZoraTone` | `'neutral'` | Selected tone. |
1020
- | `size` | `ZoraControlSize` | `'s'` | Padding and icon sizing. |
1021
- | `disabled` | `boolean` | `false` | Disables interaction and mutes tone. |
1022
- | `onPress` | `() => void` | - | Optional press handler. |
1023
- | `testID` | `string` | - | Test id. |
1016
+ | Prop | Type | Default | Notes |
1017
+ | ---------- | ----------------- | ----------- | ------------------------------------- |
1018
+ | `children` | `React.ReactNode` | - | Chip label content. |
1019
+ | `icon` | `ButtonIconSpec` | - | Optional leading icon spec. |
1020
+ | `selected` | `boolean` | `false` | Selected styling state. |
1021
+ | `color` | `ZoraColor` | `'neutral'` | Selected color. |
1022
+ | `size` | `ZoraControlSize` | `'s'` | Padding and icon sizing. |
1023
+ | `disabled` | `boolean` | `false` | Disables interaction and mutes color. |
1024
+ | `onPress` | `() => void` | - | Optional press handler. |
1025
+ | `testID` | `string` | - | Test id. |
1024
1026
 
1025
1027
  Inherited props:
1026
1028
 
@@ -1054,7 +1056,7 @@ ZORA props:
1054
1056
  | `value` | `string \| string[]` | - | Selected value(s). |
1055
1057
  | `onValueChange` | `(value) => void` | - | Selection change handler. |
1056
1058
  | `multiple` | `boolean` | `false` | Enables multi-select mode. |
1057
- | `tone` | `ZoraTone` | `'neutral'` | Tone for selected chips. |
1059
+ | `color` | `ZoraColor` | `'neutral'` | Color for selected chips. |
1058
1060
  | `size` | `ZoraControlSize` | `'s'` | Chip size. |
1059
1061
  | `wrap` | `boolean` | `true` | Wrap chips on smaller screens. |
1060
1062
  | `disabled` | `boolean` | - | Disables all chips. |
@@ -1149,7 +1151,7 @@ Selection mode is generic and prop-driven:
1149
1151
  <AppBar
1150
1152
  appMode={{ type: 'selection', label: 'Selected', count: 3, onCancel: exitSelection }}
1151
1153
  actions={
1152
- <IconButton icon={{ name: 'trash-outline' }} label="Delete" tone="danger" onPress={del} />
1154
+ <IconButton icon={{ name: 'trash-outline' }} label="Delete" color="danger" onPress={del} />
1153
1155
  }
1154
1156
  />
1155
1157
  ```
@@ -1585,7 +1587,7 @@ export function ChatsPreview() {
1585
1587
  <Stack gap="none">
1586
1588
  <ChatListItem
1587
1589
  accessibilityLabel="Ada Lovelace, unread, 3 new messages, Can you review the new PostCard API?, 2 minutes ago"
1588
- avatar={{ name: 'Ada Lovelace', tone: 'primary' }}
1590
+ avatar={{ name: 'Ada Lovelace', color: 'primary' }}
1589
1591
  preview="Can you review the new PostCard API?"
1590
1592
  timestamp="2m"
1591
1593
  title="Ada Lovelace"
@@ -1595,7 +1597,7 @@ export function ChatsPreview() {
1595
1597
  />
1596
1598
 
1597
1599
  <ChatListItem
1598
- avatar={{ name: 'Grace Hopper', tone: 'success' }}
1600
+ avatar={{ name: 'Grace Hopper', color: 'success' }}
1599
1601
  preview="The build is green."
1600
1602
  timestamp="1h"
1601
1603
  title="Grace Hopper"
@@ -1603,7 +1605,7 @@ export function ChatsPreview() {
1603
1605
  />
1604
1606
 
1605
1607
  <ChatListItem
1606
- avatar={{ initials: 'CI', label: 'Build system', tone: 'neutral' }}
1608
+ avatar={{ initials: 'CI', label: 'Build system', color: 'neutral' }}
1607
1609
  compact
1608
1610
  meta="Release automation"
1609
1611
  preview="Version packages completed for @ankhorage/zora."
@@ -1675,7 +1677,7 @@ ZORA props:
1675
1677
  | `label` | `string` | Accessibility label. |
1676
1678
  | `size` | `AvatarSize` | Optional avatar size override. |
1677
1679
  | `shape` | `AvatarShape` | Optional avatar shape override. |
1678
- | `tone` | `ZoraTone` | Optional fallback tone. |
1680
+ | `color` | `ZoraColor` | Optional fallback color. |
1679
1681
 
1680
1682
  Inherited props:
1681
1683
 
@@ -1740,7 +1742,7 @@ With media:
1740
1742
  secondaryAction={{ label: 'Browse patterns', onPress: () => undefined }}
1741
1743
  media={
1742
1744
  <Card title="Theme-aware by default" tone="outline">
1743
- <Text tone="muted">
1745
+ <Text emphasis="muted">
1744
1746
  Use the media slot for previews, screenshots, metrics, or illustration cards.
1745
1747
  </Text>
1746
1748
  </Card>
@@ -1770,13 +1772,13 @@ ZORA props:
1770
1772
 
1771
1773
  `HeroAction`:
1772
1774
 
1773
- | Prop | Type | Default | Notes |
1774
- | ---------- | ----------------- | ------------------------- | ---------------------------------- |
1775
- | `label` | `React.ReactNode` | - | Button label/content. |
1776
- | `onPress` | `() => void` | - | Press handler. |
1777
- | `tone` | `ZoraTone` | primary / neutral by role | Optional button tone override. |
1778
- | `emphasis` | `ZoraEmphasis` | solid / soft by role | Optional button emphasis override. |
1779
- | `disabled` | `boolean` | `false` | Disables the rendered action. |
1775
+ | Prop | Type | Default | Notes |
1776
+ | ---------- | ------------------------ | ------------------------- | --------------------------------- |
1777
+ | `label` | `React.ReactNode` | - | Button label/content. |
1778
+ | `onPress` | `() => void` | - | Press handler. |
1779
+ | `color` | `ZoraColor` | primary / neutral by role | Optional button color override. |
1780
+ | `variant` | `ButtonProps['variant']` | solid / soft by role | Optional button variant override. |
1781
+ | `disabled` | `boolean` | `false` | Disables the rendered action. |
1780
1782
 
1781
1783
  Inherited props:
1782
1784
 
@@ -1868,7 +1870,7 @@ No inherited props. `ImageUploadFieldProps` is declared directly by ZORA.
1868
1870
  Semantic notice surface with badge eyebrow, optional body, and actions.
1869
1871
 
1870
1872
  ```tsx
1871
- <Notice actions={<Button>Review</Button>} title="Publish pipeline ready" tone="success" />
1873
+ <Notice actions={<Button>Review</Button>} title="Publish pipeline ready" color="success" />
1872
1874
  ```
1873
1875
 
1874
1876
  <details>
@@ -1882,7 +1884,7 @@ ZORA props:
1882
1884
  | `description` | `React.ReactNode` | - | Notice description. |
1883
1885
  | `children` | `React.ReactNode` | - | Optional body content. |
1884
1886
  | `actions` | `React.ReactNode` | - | Optional action area. |
1885
- | `tone` | `ZoraTone` | `'primary'` | Drives the badge eyebrow tone. |
1887
+ | `color` | `ZoraColor` | `'primary'` | Drives the badge eyebrow color. |
1886
1888
  | `testID` | `string` | - | Forwarded to the underlying `Card`. |
1887
1889
 
1888
1890
  Inherited props:
@@ -1944,7 +1946,7 @@ export function PostsPreview() {
1944
1946
  author={{
1945
1947
  name: 'Ada Lovelace',
1946
1948
  subtitle: '@ada · 2h',
1947
- avatar: { name: 'Ada Lovelace', tone: 'primary' },
1949
+ avatar: { name: 'Ada Lovelace', color: 'primary' },
1948
1950
  }}
1949
1951
  headerAction={
1950
1952
  <IconButton icon={{ name: 'ellipsis-horizontal-outline' }} label="More post options" />
@@ -1966,7 +1968,7 @@ export function PostsPreview() {
1966
1968
  author: {
1967
1969
  name: 'Grace Hopper',
1968
1970
  subtitle: '1h',
1969
- avatar: { name: 'Grace Hopper', tone: 'success' },
1971
+ avatar: { name: 'Grace Hopper', color: 'success' },
1970
1972
  },
1971
1973
  text: 'The card/list boundary feels right.',
1972
1974
  },
@@ -1979,7 +1981,7 @@ export function PostsPreview() {
1979
1981
  author={{
1980
1982
  name: 'Build system',
1981
1983
  subtitle: 'Today · release notes',
1982
- avatar: { initials: 'CI', label: 'Build system', tone: 'neutral' },
1984
+ avatar: { initials: 'CI', label: 'Build system', color: 'neutral' },
1983
1985
  }}
1984
1986
  text="Compact density works well for notification-style posts."
1985
1987
  />
@@ -2026,7 +2028,7 @@ ZORA props:
2026
2028
  | `label` | `string` | Accessibility label. |
2027
2029
  | `size` | `AvatarSize` | Optional avatar size override. |
2028
2030
  | `shape` | `AvatarShape` | Optional avatar shape override. |
2029
- | `tone` | `ZoraTone` | Optional fallback tone. |
2031
+ | `color` | `ZoraColor` | Optional fallback color. |
2030
2032
 
2031
2033
  `PostCardMedia`:
2032
2034
 
@@ -2328,7 +2330,7 @@ type TimelineItem = {
2328
2330
  title: React.ReactNode;
2329
2331
  description?: React.ReactNode;
2330
2332
  meta?: React.ReactNode;
2331
- status?: ZoraTone;
2333
+ status?: ZoraColor;
2332
2334
  icon?: ButtonIconSpec;
2333
2335
  };
2334
2336
  ```
@@ -2384,24 +2386,24 @@ No-data surface with title, optional supporting text, actions, and footer.
2384
2386
 
2385
2387
  ZORA props:
2386
2388
 
2387
- | Prop | Type | Default | Notes |
2388
- | ----------------- | ------------------ | ------- | ------------------------------------------------------------------------------------------------------- |
2389
- | `title` | `React.ReactNode` | - | Required empty-state title. |
2390
- | `description` | `React.ReactNode` | - | Supporting copy. |
2391
- | `eyebrow` | `React.ReactNode` | - | Card eyebrow. |
2392
- | `primaryAction` | `EmptyStateAction` | - | Primary action button. |
2393
- | `secondaryAction` | `EmptyStateAction` | - | Secondary action button; defaults to `tone="neutral"` and `emphasis="soft"` when omitted on the action. |
2394
- | `footer` | `React.ReactNode` | - | Footer content below actions. |
2395
- | `testID` | `string` | - | Forwarded to the underlying card. |
2389
+ | Prop | Type | Default | Notes |
2390
+ | ----------------- | ------------------ | ------- | -------------------------------------------------------------------------------------------------------- |
2391
+ | `title` | `React.ReactNode` | - | Required empty-state title. |
2392
+ | `description` | `React.ReactNode` | - | Supporting copy. |
2393
+ | `eyebrow` | `React.ReactNode` | - | Card eyebrow. |
2394
+ | `primaryAction` | `EmptyStateAction` | - | Primary action button. |
2395
+ | `secondaryAction` | `EmptyStateAction` | - | Secondary action button; defaults to `color="neutral"` and `emphasis="soft"` when omitted on the action. |
2396
+ | `footer` | `React.ReactNode` | - | Footer content below actions. |
2397
+ | `testID` | `string` | - | Forwarded to the underlying card. |
2396
2398
 
2397
2399
  `EmptyStateAction`:
2398
2400
 
2399
- | Prop | Type | Default | Notes |
2400
- | ---------- | ----------------- | ------- | ---------------- |
2401
- | `label` | `React.ReactNode` | - | Button label. |
2402
- | `onPress` | `() => void` | - | Button handler. |
2403
- | `tone` | `ZoraTone` | - | Button tone. |
2404
- | `emphasis` | `ZoraEmphasis` | - | Button emphasis. |
2401
+ | Prop | Type | Default | Notes |
2402
+ | --------- | ------------------------ | ------- | --------------- |
2403
+ | `label` | `React.ReactNode` | - | Button label. |
2404
+ | `onPress` | `() => void` | - | Button handler. |
2405
+ | `color` | `ZoraColor` | - | Button color. |
2406
+ | `variant` | `ButtonProps['variant']` | - | Button variant. |
2405
2407
 
2406
2408
  Inherited props:
2407
2409
 
@@ -2417,7 +2419,7 @@ Narrow confirmation modal for destructive or high-signal decisions.
2417
2419
  ```tsx
2418
2420
  <ConfirmDialog
2419
2421
  confirmLabel="Archive"
2420
- confirmTone="danger"
2422
+ confirmColor="danger"
2421
2423
  onCancel={close}
2422
2424
  onConfirm={archive}
2423
2425
  title="Archive project?"
@@ -2430,21 +2432,21 @@ Narrow confirmation modal for destructive or high-signal decisions.
2430
2432
 
2431
2433
  ZORA props:
2432
2434
 
2433
- | Prop | Type | Default | Notes |
2434
- | ----------------- | ----------------- | ----------- | ------------------------------------------ |
2435
- | `visible` | `boolean` | - | Required modal visibility. |
2436
- | `title` | `React.ReactNode` | - | Required dialog title. |
2437
- | `description` | `React.ReactNode` | - | Dialog description. |
2438
- | `children` | `React.ReactNode` | - | Dialog body. |
2439
- | `confirmLabel` | `React.ReactNode` | `'Confirm'` | Confirm button label. |
2440
- | `cancelLabel` | `React.ReactNode` | `'Cancel'` | Cancel button label. |
2441
- | `confirmTone` | `ZoraTone` | `'danger'` | Confirm button tone. |
2442
- | `confirmEmphasis` | `ZoraEmphasis` | `'solid'` | Confirm button emphasis. |
2443
- | `busy` | `boolean` | `false` | Passed to the confirm button as `loading`. |
2444
- | `closeOnBackdrop` | `boolean` | `true` | Passed to the underlying modal. |
2445
- | `onConfirm` | `() => void` | - | Confirm button handler. |
2446
- | `onCancel` | `() => void` | - | Cancel button and modal dismiss handler. |
2447
- | `testID` | `string` | - | Forwarded to the underlying modal. |
2435
+ | Prop | Type | Default | Notes |
2436
+ | ----------------- | ------------------------ | ----------- | ------------------------------------------ |
2437
+ | `visible` | `boolean` | - | Required modal visibility. |
2438
+ | `title` | `React.ReactNode` | - | Required dialog title. |
2439
+ | `description` | `React.ReactNode` | - | Dialog description. |
2440
+ | `children` | `React.ReactNode` | - | Dialog body. |
2441
+ | `confirmLabel` | `React.ReactNode` | `'Confirm'` | Confirm button label. |
2442
+ | `cancelLabel` | `React.ReactNode` | `'Cancel'` | Cancel button label. |
2443
+ | `confirmColor` | `ZoraColor` | `'danger'` | Confirm button color. |
2444
+ | `confirmVariant` | `ButtonProps['variant']` | `'solid'` | Confirm button variant. |
2445
+ | `busy` | `boolean` | `false` | Passed to the confirm button as `loading`. |
2446
+ | `closeOnBackdrop` | `boolean` | `true` | Passed to the underlying modal. |
2447
+ | `onConfirm` | `() => void` | - | Confirm button handler. |
2448
+ | `onCancel` | `() => void` | - | Cancel button and modal dismiss handler. |
2449
+ | `testID` | `string` | - | Forwarded to the underlying modal. |
2448
2450
 
2449
2451
  Confirm dialogs always use `Modal` with `width="narrow"`.
2450
2452
 
@@ -2545,7 +2547,7 @@ import { MessageBubble, Stack } from '@ankhorage/zora';
2545
2547
  direction="incoming"
2546
2548
  author={{
2547
2549
  name: 'Ada Lovelace',
2548
- avatar: { name: 'Ada Lovelace', tone: 'primary' },
2550
+ avatar: { name: 'Ada Lovelace', color: 'primary' },
2549
2551
  }}
2550
2552
  text="Can you review the new ChatListItem API?"
2551
2553
  timestamp="10:41"
@@ -2626,7 +2628,7 @@ type MessageBubbleStatus = 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
2626
2628
  | `label` | `string` | Accessibility label. |
2627
2629
  | `size` | `AvatarSize` | Optional avatar size override. |
2628
2630
  | `shape` | `AvatarShape` | Optional avatar shape override. |
2629
- | `tone` | `ZoraTone` | Optional avatar tone. |
2631
+ | `color` | `ZoraColor` | Optional avatar color. |
2630
2632
 
2631
2633
  Inherited props:
2632
2634