@ankhorage/zora 1.5.1 → 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 (298) hide show
  1. package/CHANGELOG.md +23 -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/patterns/auth/ForgotPasswordForm.js +2 -2
  143. package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -1
  144. package/dist/patterns/auth/OtpForm.js +2 -2
  145. package/dist/patterns/auth/OtpForm.js.map +1 -1
  146. package/dist/patterns/auth/SignInForm.js +4 -4
  147. package/dist/patterns/auth/SignInForm.js.map +1 -1
  148. package/dist/patterns/auth/SignUpForm.js +2 -2
  149. package/dist/patterns/auth/SignUpForm.js.map +1 -1
  150. package/dist/patterns/chat-list-item/ChatListItem.d.ts.map +1 -1
  151. package/dist/patterns/chat-list-item/ChatListItem.js +6 -6
  152. package/dist/patterns/chat-list-item/ChatListItem.js.map +1 -1
  153. package/dist/patterns/chat-list-item/types.d.ts +2 -2
  154. package/dist/patterns/chat-list-item/types.d.ts.map +1 -1
  155. package/dist/patterns/chat-list-item/types.js.map +1 -1
  156. package/dist/patterns/collection-editor/CollectionEditor.js +5 -5
  157. package/dist/patterns/collection-editor/CollectionEditor.js.map +1 -1
  158. package/dist/patterns/confirm-dialog/ConfirmDialog.js +3 -3
  159. package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
  160. package/dist/patterns/confirm-dialog/types.d.ts +3 -3
  161. package/dist/patterns/confirm-dialog/types.d.ts.map +1 -1
  162. package/dist/patterns/confirm-dialog/types.js.map +1 -1
  163. package/dist/patterns/disclosure-section/DisclosureSection.js +1 -1
  164. package/dist/patterns/disclosure-section/DisclosureSection.js.map +1 -1
  165. package/dist/patterns/empty-state/EmptyState.js +2 -2
  166. package/dist/patterns/empty-state/EmptyState.js.map +1 -1
  167. package/dist/patterns/empty-state/types.d.ts +3 -3
  168. package/dist/patterns/empty-state/types.d.ts.map +1 -1
  169. package/dist/patterns/empty-state/types.js.map +1 -1
  170. package/dist/patterns/form-field/FormField.js +1 -1
  171. package/dist/patterns/form-field/FormField.js.map +1 -1
  172. package/dist/patterns/hero/Hero.js +3 -3
  173. package/dist/patterns/hero/Hero.js.map +1 -1
  174. package/dist/patterns/hero/types.d.ts +3 -3
  175. package/dist/patterns/hero/types.d.ts.map +1 -1
  176. package/dist/patterns/hero/types.js.map +1 -1
  177. package/dist/patterns/image-preview/ImagePreview.js +1 -1
  178. package/dist/patterns/image-preview/ImagePreview.js.map +1 -1
  179. package/dist/patterns/image-upload-field/ImageUploadField.js +7 -7
  180. package/dist/patterns/image-upload-field/ImageUploadField.js.map +1 -1
  181. package/dist/patterns/list/ListRow.js +2 -2
  182. package/dist/patterns/list/ListRow.js.map +1 -1
  183. package/dist/patterns/message-bubble/MessageBubble.d.ts.map +1 -1
  184. package/dist/patterns/message-bubble/MessageBubble.js +6 -6
  185. package/dist/patterns/message-bubble/MessageBubble.js.map +1 -1
  186. package/dist/patterns/message-bubble/types.d.ts +2 -2
  187. package/dist/patterns/message-bubble/types.d.ts.map +1 -1
  188. package/dist/patterns/message-bubble/types.js.map +1 -1
  189. package/dist/patterns/notice/Notice.js +2 -2
  190. package/dist/patterns/notice/Notice.js.map +1 -1
  191. package/dist/patterns/notice/types.d.ts +2 -2
  192. package/dist/patterns/notice/types.d.ts.map +1 -1
  193. package/dist/patterns/notice/types.js.map +1 -1
  194. package/dist/patterns/post-card/PostCard.js +4 -4
  195. package/dist/patterns/post-card/PostCard.js.map +1 -1
  196. package/dist/patterns/post-card/types.d.ts +2 -2
  197. package/dist/patterns/post-card/types.d.ts.map +1 -1
  198. package/dist/patterns/post-card/types.js.map +1 -1
  199. package/dist/patterns/section-header/SectionHeader.js +2 -2
  200. package/dist/patterns/section-header/SectionHeader.js.map +1 -1
  201. package/dist/patterns/settings-row/SettingsRow.js +1 -1
  202. package/dist/patterns/settings-row/SettingsRow.js.map +1 -1
  203. package/dist/patterns/theme-composer/ThemeComposer.js +14 -14
  204. package/dist/patterns/theme-composer/ThemeComposer.js.map +1 -1
  205. package/dist/patterns/tile-grid/PaletteItem.js +1 -1
  206. package/dist/patterns/tile-grid/PaletteItem.js.map +1 -1
  207. package/dist/patterns/timeline/Timeline.d.ts.map +1 -1
  208. package/dist/patterns/timeline/Timeline.js +14 -4
  209. package/dist/patterns/timeline/Timeline.js.map +1 -1
  210. package/dist/patterns/timeline/types.d.ts +2 -2
  211. package/dist/patterns/timeline/types.d.ts.map +1 -1
  212. package/dist/patterns/timeline/types.js.map +1 -1
  213. package/dist/patterns/tree-view/TreeItem.js +1 -1
  214. package/dist/patterns/tree-view/TreeItem.js.map +1 -1
  215. package/package.json +2 -2
  216. package/src/components/app-bar/AppBar.tsx +6 -6
  217. package/src/components/avatar/Avatar.tsx +21 -11
  218. package/src/components/avatar/types.ts +2 -2
  219. package/src/components/avatar-group/AvatarGroup.tsx +2 -2
  220. package/src/components/avatar-group/types.ts +2 -2
  221. package/src/components/badge/Badge.tsx +4 -4
  222. package/src/components/badge/types.ts +4 -4
  223. package/src/components/button/Button.tsx +4 -4
  224. package/src/components/button/meta.ts +8 -7
  225. package/src/components/button/types.ts +4 -4
  226. package/src/components/card/Card.tsx +2 -2
  227. package/src/components/checkbox/CheckboxGroup.tsx +6 -6
  228. package/src/components/checkbox/types.ts +1 -1
  229. package/src/components/chip/Chip.tsx +9 -10
  230. package/src/components/chip/resolveChipColors.ts +16 -6
  231. package/src/components/chip/types.ts +2 -2
  232. package/src/components/chip-group/ChipGroup.tsx +2 -2
  233. package/src/components/chip-group/types.ts +2 -2
  234. package/src/components/drawer/Drawer.tsx +1 -1
  235. package/src/components/form/FormError.tsx +1 -1
  236. package/src/components/form/FormField.tsx +1 -1
  237. package/src/components/heading/Heading.tsx +6 -3
  238. package/src/components/heading/index.ts +2 -1
  239. package/src/components/heading/meta.ts +10 -3
  240. package/src/components/heading/resolveHeadingRecipe.test.ts +13 -10
  241. package/src/components/heading/resolveHeadingRecipe.ts +58 -15
  242. package/src/components/heading/types.ts +5 -10
  243. package/src/components/icon-button/IconButton.tsx +4 -4
  244. package/src/components/icon-button/types.ts +3 -3
  245. package/src/components/input/Input.tsx +2 -2
  246. package/src/components/media-card/MediaCard.tsx +2 -2
  247. package/src/components/metric-card/MetricCard.tsx +6 -6
  248. package/src/components/metric-card/types.ts +2 -2
  249. package/src/components/modal/Modal.tsx +1 -1
  250. package/src/components/progress/Progress.tsx +2 -2
  251. package/src/components/progress/types.ts +14 -4
  252. package/src/components/radio/RadioGroup.tsx +6 -6
  253. package/src/components/radio/types.ts +1 -1
  254. package/src/components/rating/Rating.tsx +2 -2
  255. package/src/components/rating/types.ts +14 -4
  256. package/src/components/tabs/Tabs.tsx +11 -7
  257. package/src/components/text/Text.tsx +4 -2
  258. package/src/components/text/index.ts +8 -1
  259. package/src/components/text/meta.ts +11 -4
  260. package/src/components/text/resolveTextRecipe.test.ts +18 -14
  261. package/src/components/text/resolveTextRecipe.ts +42 -15
  262. package/src/components/text/types.ts +5 -10
  263. package/src/components/toolbar/ToolbarAction.tsx +2 -2
  264. package/src/index.ts +22 -2
  265. package/src/internal/colorModel.ts +39 -0
  266. package/src/internal/recipes.test.ts +2 -2
  267. package/src/internal/recipes.ts +18 -18
  268. package/src/patterns/auth/ForgotPasswordForm.tsx +2 -2
  269. package/src/patterns/auth/OtpForm.tsx +2 -2
  270. package/src/patterns/auth/SignInForm.tsx +4 -4
  271. package/src/patterns/auth/SignUpForm.tsx +2 -2
  272. package/src/patterns/chat-list-item/ChatListItem.tsx +7 -6
  273. package/src/patterns/chat-list-item/types.ts +2 -2
  274. package/src/patterns/collection-editor/CollectionEditor.tsx +6 -6
  275. package/src/patterns/confirm-dialog/ConfirmDialog.tsx +4 -4
  276. package/src/patterns/confirm-dialog/types.ts +3 -3
  277. package/src/patterns/disclosure-section/DisclosureSection.tsx +2 -2
  278. package/src/patterns/empty-state/EmptyState.tsx +4 -4
  279. package/src/patterns/empty-state/types.ts +3 -3
  280. package/src/patterns/form-field/FormField.tsx +1 -1
  281. package/src/patterns/hero/Hero.tsx +4 -4
  282. package/src/patterns/hero/types.ts +3 -3
  283. package/src/patterns/image-preview/ImagePreview.tsx +1 -1
  284. package/src/patterns/image-upload-field/ImageUploadField.tsx +8 -8
  285. package/src/patterns/list/ListRow.tsx +2 -2
  286. package/src/patterns/message-bubble/MessageBubble.tsx +10 -6
  287. package/src/patterns/message-bubble/types.ts +2 -2
  288. package/src/patterns/notice/Notice.tsx +2 -2
  289. package/src/patterns/notice/types.ts +2 -2
  290. package/src/patterns/post-card/PostCard.tsx +5 -5
  291. package/src/patterns/post-card/types.ts +2 -2
  292. package/src/patterns/section-header/SectionHeader.tsx +2 -2
  293. package/src/patterns/settings-row/SettingsRow.tsx +1 -1
  294. package/src/patterns/theme-composer/ThemeComposer.tsx +15 -15
  295. package/src/patterns/tile-grid/PaletteItem.tsx +1 -1
  296. package/src/patterns/timeline/Timeline.tsx +15 -5
  297. package/src/patterns/timeline/types.ts +2 -2
  298. package/src/patterns/tree-view/TreeItem.tsx +1 -1
@@ -56,13 +56,13 @@ function OtpFormInner({
56
56
  <Stack direction="row" gap="s" wrap="wrap">
57
57
  <Button
58
58
  disabled={disabled || loading || resendDisabled}
59
- emphasis="ghost"
59
+ variant="ghost"
60
60
  loading={resendLoading}
61
61
  onPress={() => {
62
62
  void onResend();
63
63
  }}
64
64
  size="s"
65
- tone="neutral"
65
+ color="neutral"
66
66
  >
67
67
  {resendLabel}
68
68
  </Button>
@@ -74,12 +74,12 @@ function SignInFormInner({
74
74
  {onForgotPassword ? (
75
75
  <Button
76
76
  disabled={disabled || loading}
77
- emphasis="ghost"
77
+ variant="ghost"
78
78
  onPress={() => {
79
79
  void onForgotPassword();
80
80
  }}
81
81
  size="s"
82
- tone="neutral"
82
+ color="neutral"
83
83
  >
84
84
  {forgotPasswordLabel}
85
85
  </Button>
@@ -87,12 +87,12 @@ function SignInFormInner({
87
87
  {onSignUp ? (
88
88
  <Button
89
89
  disabled={disabled || loading}
90
- emphasis="ghost"
90
+ variant="ghost"
91
91
  onPress={() => {
92
92
  void onSignUp();
93
93
  }}
94
94
  size="s"
95
- tone="neutral"
95
+ color="neutral"
96
96
  >
97
97
  {signUpLabel}
98
98
  </Button>
@@ -53,12 +53,12 @@ function SignUpFormInner({
53
53
  <Stack direction="row" gap="s" wrap="wrap">
54
54
  <Button
55
55
  disabled={disabled || loading}
56
- emphasis="ghost"
56
+ variant="ghost"
57
57
  onPress={() => {
58
58
  void onSignIn();
59
59
  }}
60
60
  size="s"
61
- tone="neutral"
61
+ color="neutral"
62
62
  >
63
63
  {signInLabel}
64
64
  </Button>
@@ -62,7 +62,7 @@ function renderUnreadCount(unreadCount: React.ReactNode) {
62
62
  }
63
63
 
64
64
  return (
65
- <Badge size="s" tone="primary">
65
+ <Badge size="s" color="primary">
66
66
  {unreadCount}
67
67
  </Badge>
68
68
  );
@@ -126,7 +126,7 @@ function ChatListItemInner({
126
126
  shape={avatar?.shape}
127
127
  size={avatar?.size ?? (compact ? 's' : 'm')}
128
128
  source={avatar?.source}
129
- tone={avatar?.tone}
129
+ color={avatar?.color}
130
130
  />
131
131
  )}
132
132
 
@@ -136,7 +136,7 @@ function ChatListItemInner({
136
136
  <Box flex={1}>
137
137
  <Text
138
138
  numberOfLines={1}
139
- tone={disabled ? 'muted' : 'default'}
139
+ emphasis={disabled ? 'muted' : 'default'}
140
140
  variant="bodySmall"
141
141
  weight={unread || selected ? 'semiBold' : 'medium'}
142
142
  >
@@ -146,7 +146,8 @@ function ChatListItemInner({
146
146
  {hasTimestamp ? (
147
147
  <Text
148
148
  numberOfLines={1}
149
- tone={unread ? 'primary' : 'subtle'}
149
+ color={unread ? 'primary' : undefined}
150
+ emphasis={unread ? 'default' : 'subtle'}
150
151
  variant="caption"
151
152
  weight={unread ? 'semiBold' : 'regular'}
152
153
  >
@@ -162,7 +163,7 @@ function ChatListItemInner({
162
163
  {hasPreview ? (
163
164
  <Text
164
165
  numberOfLines={1}
165
- tone={unread ? 'default' : 'muted'}
166
+ emphasis={unread ? 'default' : 'muted'}
166
167
  variant="bodySmall"
167
168
  weight={unread ? 'medium' : 'regular'}
168
169
  >
@@ -170,7 +171,7 @@ function ChatListItemInner({
170
171
  </Text>
171
172
  ) : null}
172
173
  {hasMeta ? (
173
- <Text numberOfLines={1} tone="subtle" variant="caption">
174
+ <Text numberOfLines={1} emphasis="subtle" variant="caption">
174
175
  {meta}
175
176
  </Text>
176
177
  ) : null}
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import type { ImageSourcePropType } from 'react-native';
3
3
 
4
4
  import type { AvatarShape, AvatarSize } from '../../components/avatar';
5
- import type { ZoraTone } from '../../internal/recipes';
5
+ import type { ZoraColor } from '../../internal/recipes';
6
6
  import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
7
7
 
8
8
  export interface ChatListAvatar {
@@ -12,7 +12,7 @@ export interface ChatListAvatar {
12
12
  label?: string;
13
13
  size?: AvatarSize;
14
14
  shape?: AvatarShape;
15
- tone?: ZoraTone;
15
+ color?: ZoraColor;
16
16
  }
17
17
 
18
18
  export interface ChatListItemProps extends ZoraBaseProps {
@@ -33,7 +33,7 @@ function CollectionEditorInner<TItem>({
33
33
  title={title}
34
34
  actions={
35
35
  onAdd ? (
36
- <Button emphasis="soft" size="s" disabled={disabled} onPress={onAdd}>
36
+ <Button variant="soft" size="s" disabled={disabled} onPress={onAdd}>
37
37
  {addLabel}
38
38
  </Button>
39
39
  ) : null
@@ -42,7 +42,7 @@ function CollectionEditorInner<TItem>({
42
42
  <Stack gap="s">
43
43
  {isEmpty ? (
44
44
  <Box py="m">
45
- <Text align="center" tone="muted">
45
+ <Text align="center" emphasis="muted">
46
46
  {emptyLabel}
47
47
  </Text>
48
48
  </Box>
@@ -70,7 +70,7 @@ function CollectionEditorInner<TItem>({
70
70
  disabled={disabled ?? index === 0}
71
71
  onPress={() => onMove(index, index - 1)}
72
72
  size="s"
73
- emphasis="ghost"
73
+ variant="ghost"
74
74
  />
75
75
  <IconButton
76
76
  icon={{ name: 'arrow-down-outline' }}
@@ -78,7 +78,7 @@ function CollectionEditorInner<TItem>({
78
78
  disabled={disabled ?? index === items.length - 1}
79
79
  onPress={() => onMove(index, index + 1)}
80
80
  size="s"
81
- emphasis="ghost"
81
+ variant="ghost"
82
82
  />
83
83
  </>
84
84
  ) : null}
@@ -86,11 +86,11 @@ function CollectionEditorInner<TItem>({
86
86
  <IconButton
87
87
  icon={{ name: 'trash-outline' }}
88
88
  label="Remove"
89
- tone="danger"
89
+ color="danger"
90
90
  disabled={disabled}
91
91
  onPress={() => onRemove(index)}
92
92
  size="s"
93
- emphasis="ghost"
93
+ variant="ghost"
94
94
  />
95
95
  ) : null}
96
96
  </Stack>
@@ -15,8 +15,8 @@ function ConfirmDialogInner({
15
15
  children,
16
16
  confirmLabel = 'Confirm',
17
17
  cancelLabel = 'Cancel',
18
- confirmTone = 'danger',
19
- confirmEmphasis = 'solid',
18
+ confirmColor = 'danger',
19
+ confirmVariant = 'solid',
20
20
  busy = false,
21
21
  closeOnBackdrop = true,
22
22
  onConfirm,
@@ -29,10 +29,10 @@ function ConfirmDialogInner({
29
29
  description={description}
30
30
  footer={
31
31
  <Stack direction={{ base: 'column', md: 'row' }} gap="s" justify="flex-end">
32
- <Button emphasis="soft" onPress={onCancel} tone="neutral">
32
+ <Button variant="soft" onPress={onCancel} color="neutral">
33
33
  {cancelLabel}
34
34
  </Button>
35
- <Button emphasis={confirmEmphasis} loading={busy} onPress={onConfirm} tone={confirmTone}>
35
+ <Button variant={confirmVariant} loading={busy} onPress={onConfirm} color={confirmColor}>
36
36
  {confirmLabel}
37
37
  </Button>
38
38
  </Stack>
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
 
3
- import type { ZoraEmphasis, ZoraTone } from '../../internal/recipes';
3
+ import type { ZoraButtonVariant, ZoraColor } from '../../internal/recipes';
4
4
  import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
5
5
 
6
6
  export interface ConfirmDialogProps extends ZoraBaseProps {
@@ -10,8 +10,8 @@ export interface ConfirmDialogProps extends ZoraBaseProps {
10
10
  children?: React.ReactNode;
11
11
  confirmLabel?: React.ReactNode;
12
12
  cancelLabel?: React.ReactNode;
13
- confirmTone?: ZoraTone;
14
- confirmEmphasis?: ZoraEmphasis;
13
+ confirmColor?: ZoraColor;
14
+ confirmVariant?: ZoraButtonVariant;
15
15
  busy?: boolean;
16
16
  closeOnBackdrop?: boolean;
17
17
  onConfirm?: () => void;
@@ -49,8 +49,8 @@ function DisclosureSectionInner({
49
49
  <IconButton
50
50
  icon={{ name: isOpen ? 'chevron-up-outline' : 'chevron-down-outline' }}
51
51
  label={isOpen ? 'Collapse' : 'Expand'}
52
- emphasis="ghost"
53
- tone="neutral"
52
+ variant="ghost"
53
+ color="neutral"
54
54
  size="s"
55
55
  disabled={disabled}
56
56
  onPress={toggleOpen}
@@ -31,18 +31,18 @@ function EmptyStateInner({
31
31
  <Stack direction={{ base: 'column', md: 'row' }} gap="s">
32
32
  {primaryAction ? (
33
33
  <Button
34
- emphasis={primaryAction.emphasis}
34
+ variant={primaryAction.variant}
35
35
  onPress={primaryAction.onPress}
36
- tone={primaryAction.tone}
36
+ color={primaryAction.color}
37
37
  >
38
38
  {primaryAction.label}
39
39
  </Button>
40
40
  ) : null}
41
41
  {secondaryAction ? (
42
42
  <Button
43
- emphasis={secondaryAction.emphasis ?? 'soft'}
43
+ variant={secondaryAction.variant ?? 'soft'}
44
44
  onPress={secondaryAction.onPress}
45
- tone={secondaryAction.tone ?? 'neutral'}
45
+ color={secondaryAction.color ?? 'neutral'}
46
46
  >
47
47
  {secondaryAction.label}
48
48
  </Button>
@@ -1,13 +1,13 @@
1
1
  import type React from 'react';
2
2
 
3
- import type { ZoraEmphasis, ZoraTone } from '../../internal/recipes';
3
+ import type { ZoraButtonVariant, ZoraColor } from '../../internal/recipes';
4
4
  import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
5
5
 
6
6
  export interface EmptyStateAction {
7
7
  label: React.ReactNode;
8
8
  onPress: () => void;
9
- tone?: ZoraTone;
10
- emphasis?: ZoraEmphasis;
9
+ color?: ZoraColor;
10
+ variant?: ZoraButtonVariant;
11
11
  }
12
12
 
13
13
  export interface EmptyStateProps extends ZoraBaseProps {
@@ -25,7 +25,7 @@ function FormFieldInner({
25
25
  {label}
26
26
  </Text>
27
27
  {description ? (
28
- <Text tone="muted" variant="bodySmall">
28
+ <Text emphasis="muted" variant="bodySmall">
29
29
  {description}
30
30
  </Text>
31
31
  ) : null}
@@ -35,7 +35,7 @@ function HeroInner({
35
35
  <Stack align={contentAlign} gap={compact ? 's' : 'm'}>
36
36
  <Stack align={contentAlign} gap="xs">
37
37
  {eyebrow !== undefined ? (
38
- <Text align={textAlign} tone="primary" variant="eyebrow">
38
+ <Text align={textAlign} color="primary" variant="eyebrow">
39
39
  {eyebrow}
40
40
  </Text>
41
41
  ) : null}
@@ -49,7 +49,7 @@ function HeroInner({
49
49
  {description !== undefined ? (
50
50
  <Text
51
51
  align={textAlign}
52
- tone="muted"
52
+ emphasis="muted"
53
53
  variant={{ base: 'body', md: compact ? 'body' : 'lead' }}
54
54
  >
55
55
  {description}
@@ -100,9 +100,9 @@ function renderAction(action: HeroAction, role: 'primary' | 'secondary') {
100
100
  return (
101
101
  <Button
102
102
  disabled={action.disabled}
103
- emphasis={action.emphasis ?? (role === 'primary' ? 'solid' : 'soft')}
103
+ variant={action.variant ?? (role === 'primary' ? 'solid' : 'soft')}
104
104
  onPress={action.onPress}
105
- tone={action.tone ?? (role === 'primary' ? 'primary' : 'neutral')}
105
+ color={action.color ?? (role === 'primary' ? 'primary' : 'neutral')}
106
106
  >
107
107
  {action.label}
108
108
  </Button>
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
 
3
- import type { ZoraEmphasis, ZoraTone } from '../../internal/recipes';
3
+ import type { ZoraButtonVariant, ZoraColor } from '../../internal/recipes';
4
4
  import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
5
5
 
6
6
  export type HeroAlign = 'start' | 'center';
@@ -10,8 +10,8 @@ export type HeroTone = 'default' | 'subtle' | 'outline';
10
10
  export interface HeroAction {
11
11
  label: React.ReactNode;
12
12
  onPress: () => void;
13
- tone?: ZoraTone;
14
- emphasis?: ZoraEmphasis;
13
+ color?: ZoraColor;
14
+ variant?: ZoraButtonVariant;
15
15
  disabled?: boolean;
16
16
  }
17
17
 
@@ -63,7 +63,7 @@ function ImagePreviewInner({
63
63
  <Text variant="label" weight="semiBold">
64
64
  {emptyTitle}
65
65
  </Text>
66
- <Text tone="muted" variant="bodySmall">
66
+ <Text emphasis="muted" variant="bodySmall">
67
67
  {emptyDescription}
68
68
  </Text>
69
69
  </Stack>
@@ -206,12 +206,12 @@ function ImageUploadFieldInner({
206
206
  {acceptHint || maxSizeHint ? (
207
207
  <Stack gap="xs">
208
208
  {acceptHint ? (
209
- <Text tone="muted" variant="caption">
209
+ <Text emphasis="muted" variant="caption">
210
210
  {acceptHint}
211
211
  </Text>
212
212
  ) : null}
213
213
  {maxSizeHint ? (
214
- <Text tone="muted" variant="caption">
214
+ <Text emphasis="muted" variant="caption">
215
215
  {maxSizeHint}
216
216
  </Text>
217
217
  ) : null}
@@ -220,7 +220,7 @@ function ImageUploadFieldInner({
220
220
 
221
221
  {uploading ? (
222
222
  <Stack gap="xs">
223
- <Text tone="muted" variant="caption">
223
+ <Text emphasis="muted" variant="caption">
224
224
  Uploading…
225
225
  </Text>
226
226
  {progress !== null ? <Progress max={1} value={progress} /> : null}
@@ -240,9 +240,9 @@ function ImageUploadFieldInner({
240
240
  {value ? (
241
241
  <Button
242
242
  disabled={actionsDisabled || uploading || removing}
243
- emphasis="outline"
243
+ variant="outline"
244
244
  loading={removing}
245
- tone="danger"
245
+ color="danger"
246
246
  onPress={() => {
247
247
  void handleRemove();
248
248
  }}
@@ -252,7 +252,7 @@ function ImageUploadFieldInner({
252
252
  ) : null}
253
253
 
254
254
  {isRenderable ? (
255
- <Button disabled={false} emphasis="soft" tone="neutral" onPress={handlePreview}>
255
+ <Button disabled={false} variant="soft" color="neutral" onPress={handlePreview}>
256
256
  Preview
257
257
  </Button>
258
258
  ) : null}
@@ -260,7 +260,7 @@ function ImageUploadFieldInner({
260
260
 
261
261
  {!isRenderable && value?.kind === 'storage' && value.publicUrl === undefined ? (
262
262
  <Box>
263
- <Text tone="muted" variant="caption">
263
+ <Text emphasis="muted" variant="caption">
264
264
  This image is stored, but no preview URL is available yet.
265
265
  </Text>
266
266
  </Box>
@@ -279,7 +279,7 @@ function ImageUploadFieldInner({
279
279
  <Stack gap="m">
280
280
  <ImagePreview asset={value} aspectRatio={aspectRatio} />
281
281
  <Stack direction="row" justify="flex-end">
282
- <Button emphasis="soft" tone="neutral" onPress={closePreview}>
282
+ <Button variant="soft" color="neutral" onPress={closePreview}>
283
283
  Close
284
284
  </Button>
285
285
  </Stack>
@@ -99,12 +99,12 @@ function ListRowInner({
99
99
  {title}
100
100
  </Text>
101
101
  {description ? (
102
- <Text tone="muted" variant="bodySmall">
102
+ <Text emphasis="muted" variant="bodySmall">
103
103
  {description}
104
104
  </Text>
105
105
  ) : null}
106
106
  {meta ? (
107
- <Text tone="subtle" variant="caption">
107
+ <Text emphasis="subtle" variant="caption">
108
108
  {meta}
109
109
  </Text>
110
110
  ) : null}
@@ -123,7 +123,7 @@ function MessageAvatar({
123
123
  shape={avatar.shape}
124
124
  size={avatar.size ?? (compact ? 'xs' : 's')}
125
125
  source={avatar.source}
126
- tone={avatar.tone}
126
+ color={avatar.color}
127
127
  />
128
128
  );
129
129
  }
@@ -175,12 +175,12 @@ function MessageBubbleInner({
175
175
  >
176
176
  <Stack align={isSystem ? 'center' : 'flex-start'} gap={compact ? 'xxs' : 'xs'}>
177
177
  {hasAuthorName ? (
178
- <Text tone="muted" variant="caption" weight="semiBold">
178
+ <Text emphasis="muted" variant="caption" weight="semiBold">
179
179
  {authorName}
180
180
  </Text>
181
181
  ) : null}
182
182
  {text != null ? (
183
- <Text align={isSystem ? 'center' : undefined} tone={disabled ? 'muted' : 'default'}>
183
+ <Text align={isSystem ? 'center' : undefined} emphasis={disabled ? 'muted' : 'default'}>
184
184
  {text}
185
185
  </Text>
186
186
  ) : null}
@@ -193,17 +193,21 @@ function MessageBubbleInner({
193
193
  wrap="wrap"
194
194
  >
195
195
  {timestamp != null ? (
196
- <Text tone="subtle" variant="caption">
196
+ <Text emphasis="subtle" variant="caption">
197
197
  {timestamp}
198
198
  </Text>
199
199
  ) : null}
200
200
  {meta != null ? (
201
- <Text tone="subtle" variant="caption">
201
+ <Text emphasis="subtle" variant="caption">
202
202
  {meta}
203
203
  </Text>
204
204
  ) : null}
205
205
  {renderedStatus != null ? (
206
- <Text tone={status === 'failed' ? 'danger' : 'subtle'} variant="caption">
206
+ <Text
207
+ color={status === 'failed' ? 'danger' : undefined}
208
+ emphasis={status === 'failed' ? 'default' : 'subtle'}
209
+ variant="caption"
210
+ >
207
211
  {renderedStatus}
208
212
  </Text>
209
213
  ) : null}
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import type { ImageSourcePropType } from 'react-native';
3
3
 
4
4
  import type { AvatarShape, AvatarSize } from '../../components/avatar';
5
- import type { ZoraTone } from '../../internal/recipes';
5
+ import type { ZoraColor } from '../../internal/recipes';
6
6
  import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
7
7
 
8
8
  export type MessageBubbleDirection = 'incoming' | 'outgoing' | 'system';
@@ -16,7 +16,7 @@ export interface MessageBubbleAvatar {
16
16
  label?: string;
17
17
  size?: AvatarSize;
18
18
  shape?: AvatarShape;
19
- tone?: ZoraTone;
19
+ color?: ZoraColor;
20
20
  }
21
21
 
22
22
  export interface MessageBubbleAuthor {
@@ -13,13 +13,13 @@ function NoticeInner({
13
13
  description,
14
14
  children,
15
15
  actions,
16
- tone = 'primary',
16
+ color = 'primary',
17
17
  testID,
18
18
  }: NoticeProps) {
19
19
  return (
20
20
  <Card
21
21
  description={description}
22
- eyebrow={<Badge tone={tone}>{String(tone).toUpperCase()}</Badge>}
22
+ eyebrow={<Badge color={color}>{String(color).toUpperCase()}</Badge>}
23
23
  testID={testID}
24
24
  title={title}
25
25
  tone="subtle"
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
 
3
- import type { ZoraTone } from '../../internal/recipes';
3
+ import type { ZoraColor } from '../../internal/recipes';
4
4
  import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
5
5
 
6
6
  export interface NoticeProps extends ZoraBaseProps {
@@ -8,5 +8,5 @@ export interface NoticeProps extends ZoraBaseProps {
8
8
  description?: React.ReactNode;
9
9
  children?: React.ReactNode;
10
10
  actions?: React.ReactNode;
11
- tone?: ZoraTone;
11
+ color?: ZoraColor;
12
12
  }
@@ -59,7 +59,7 @@ function PostCardAuthor({ author, compact = false }: { author: PostAuthor; compa
59
59
  shape={avatar?.shape}
60
60
  size={avatar?.size ?? (compact ? 's' : 'm')}
61
61
  source={avatar?.source}
62
- tone={avatar?.tone}
62
+ color={avatar?.color}
63
63
  />
64
64
  <Box flex={1}>
65
65
  <Stack gap="xxs">
@@ -67,7 +67,7 @@ function PostCardAuthor({ author, compact = false }: { author: PostAuthor; compa
67
67
  {author.name}
68
68
  </Text>
69
69
  {author.subtitle ? (
70
- <Text tone="muted" variant="caption">
70
+ <Text emphasis="muted" variant="caption">
71
71
  {author.subtitle}
72
72
  </Text>
73
73
  ) : null}
@@ -125,11 +125,11 @@ function PostCardActions({ actions }: { actions: readonly PostAction[] }) {
125
125
  <Button
126
126
  key={action.id}
127
127
  disabled={action.disabled}
128
- emphasis={action.selected ? 'soft' : 'ghost'}
128
+ variant={action.selected ? 'soft' : 'ghost'}
129
129
  leadingIcon={action.icon}
130
130
  onPress={action.onPress}
131
131
  size="s"
132
- tone={action.selected ? 'primary' : 'neutral'}
132
+ color={action.selected ? 'primary' : 'neutral'}
133
133
  >
134
134
  <PostActionLabel action={action} />
135
135
  </Button>
@@ -146,7 +146,7 @@ function PostCommentPreviewItem({ comment }: { comment: PostCommentPreview }) {
146
146
  <Stack gap="xxs">
147
147
  <Text variant="bodySmall">{comment.text}</Text>
148
148
  {comment.meta ? (
149
- <Text tone="subtle" variant="caption">
149
+ <Text emphasis="subtle" variant="caption">
150
150
  {comment.meta}
151
151
  </Text>
152
152
  ) : null}
@@ -3,7 +3,7 @@ import type React from 'react';
3
3
  import type { ImageSourcePropType } from 'react-native';
4
4
 
5
5
  import type { AvatarShape, AvatarSize } from '../../components/avatar';
6
- import type { ZoraCardTone, ZoraTone } from '../../internal/recipes';
6
+ import type { ZoraCardTone, ZoraColor } from '../../internal/recipes';
7
7
  import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
8
8
 
9
9
  export interface PostAuthorAvatar {
@@ -13,7 +13,7 @@ export interface PostAuthorAvatar {
13
13
  label?: string;
14
14
  size?: AvatarSize;
15
15
  shape?: AvatarShape;
16
- tone?: ZoraTone;
16
+ color?: ZoraColor;
17
17
  }
18
18
 
19
19
  export interface PostAuthor {
@@ -26,13 +26,13 @@ function SectionHeaderInner({
26
26
  <Box flex={{ md: 1 }} width={{ base: '100%', md: 'auto' }}>
27
27
  <Stack gap="xs">
28
28
  {eyebrow ? (
29
- <Text tone="muted" variant="caption" weight="semiBold">
29
+ <Text emphasis="muted" variant="caption" weight="semiBold">
30
30
  {eyebrow}
31
31
  </Text>
32
32
  ) : null}
33
33
  <Heading level={3}>{title}</Heading>
34
34
  {description ? (
35
- <Text tone="muted" variant="bodySmall">
35
+ <Text emphasis="muted" variant="bodySmall">
36
36
  {description}
37
37
  </Text>
38
38
  ) : null}
@@ -34,7 +34,7 @@ function SettingsRowInner({
34
34
  >
35
35
  {meta ? (
36
36
  <Box pt="xs">
37
- <Text tone="muted" variant="caption">
37
+ <Text emphasis="muted" variant="caption">
38
38
  {meta}
39
39
  </Text>
40
40
  </Box>