@utilitywarehouse/hearth-react-native 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-lint.log +3 -1
  3. package/CHANGELOG.md +34 -0
  4. package/build/components/Alert/AlertCloseButton.js +25 -3
  5. package/build/components/Alert/AlertIcon.js +17 -1
  6. package/build/components/Alert/AlertIconButton.js +27 -1
  7. package/build/components/Alert/AlertLink.js +47 -1
  8. package/build/components/Alert/AlertText.d.ts +1 -1
  9. package/build/components/Alert/AlertText.js +26 -2
  10. package/build/components/Alert/AlertTitle.d.ts +1 -1
  11. package/build/components/Alert/AlertTitle.js +26 -2
  12. package/build/components/Badge/Badge.js +101 -14
  13. package/build/components/Badge/Badge.props.d.ts +2 -2
  14. package/build/components/Badge/BadgeIcon.js +27 -29
  15. package/build/components/Badge/BadgeText.js +29 -31
  16. package/build/components/Button/Button.d.ts +2 -2
  17. package/build/components/Button/ButtonGroupRoot.d.ts +3 -2
  18. package/build/components/Button/ButtonGroupRoot.js +9 -0
  19. package/build/components/Button/ButtonRoot.js +1 -0
  20. package/build/components/Card/Card.props.d.ts +2 -2
  21. package/build/components/Checkbox/Checkbox.d.ts +2 -2
  22. package/build/components/Checkbox/Checkbox.js +11 -10
  23. package/build/components/Checkbox/Checkbox.props.d.ts +3 -1
  24. package/build/components/Checkbox/CheckboxIcon.js +1 -1
  25. package/build/components/Checkbox/CheckboxImage.d.ts +6 -0
  26. package/build/components/Checkbox/CheckboxImage.js +5 -0
  27. package/build/components/Checkbox/CheckboxTileRoot.js +1 -1
  28. package/build/components/Checkbox/index.d.ts +3 -2
  29. package/build/components/Checkbox/index.js +2 -1
  30. package/build/components/CurrencyInput/CurrencyInput.d.ts +6 -0
  31. package/build/components/CurrencyInput/CurrencyInput.js +47 -0
  32. package/build/components/CurrencyInput/CurrencyInput.props.d.ts +14 -0
  33. package/build/components/CurrencyInput/CurrencyInput.props.js +1 -0
  34. package/build/components/CurrencyInput/index.d.ts +1 -0
  35. package/build/components/CurrencyInput/index.js +1 -0
  36. package/build/components/DescriptionList/DescriptionList.context.d.ts +6 -0
  37. package/build/components/DescriptionList/DescriptionList.context.js +9 -0
  38. package/build/components/DescriptionList/DescriptionList.d.ts +6 -0
  39. package/build/components/DescriptionList/DescriptionList.js +25 -0
  40. package/build/components/DescriptionList/DescriptionList.props.d.ts +18 -0
  41. package/build/components/DescriptionList/DescriptionList.props.js +1 -0
  42. package/build/components/DescriptionList/DescriptionListItem.d.ts +6 -0
  43. package/build/components/DescriptionList/DescriptionListItem.js +49 -0
  44. package/build/components/DescriptionList/DescriptionListItem.props.d.ts +17 -0
  45. package/build/components/DescriptionList/DescriptionListItem.props.js +1 -0
  46. package/build/components/DescriptionList/index.d.ts +4 -0
  47. package/build/components/DescriptionList/index.js +2 -0
  48. package/build/components/Divider/Divider.js +46 -0
  49. package/build/components/Divider/Divider.props.d.ts +2 -2
  50. package/build/components/Flex/Flex.props.d.ts +3 -2
  51. package/build/components/Grid/Grid.props.d.ts +2 -2
  52. package/build/components/IconContainer/IconContainer.d.ts +5 -0
  53. package/build/components/IconContainer/IconContainer.js +161 -0
  54. package/build/components/IconContainer/IconContainer.props.d.ts +15 -0
  55. package/build/components/IconContainer/IconContainer.props.js +1 -0
  56. package/build/components/IconContainer/index.d.ts +2 -0
  57. package/build/components/IconContainer/index.js +1 -0
  58. package/build/components/Icons/CircleIcon.js +3 -3
  59. package/build/components/Input/Input.js +2 -34
  60. package/build/components/Input/Input.props.d.ts +1 -17
  61. package/build/components/Input/InputField.js +0 -7
  62. package/build/components/Link/Link.d.ts +1 -1
  63. package/build/components/Link/Link.js +4 -4
  64. package/build/components/Link/Link.props.d.ts +3 -0
  65. package/build/components/Modal/Modal.js +17 -1
  66. package/build/components/Radio/Radio.d.ts +2 -2
  67. package/build/components/Radio/Radio.js +9 -8
  68. package/build/components/Radio/Radio.props.d.ts +3 -1
  69. package/build/components/Radio/RadioImage.d.ts +6 -0
  70. package/build/components/Radio/RadioImage.js +5 -0
  71. package/build/components/Radio/RadioTileRoot.js +1 -1
  72. package/build/components/Radio/index.d.ts +3 -2
  73. package/build/components/Radio/index.js +2 -1
  74. package/build/components/SectionHeader/SectionHeader.js +1 -0
  75. package/build/components/Select/SelectOption.js +1 -7
  76. package/build/components/Tabs/Tab.d.ts +18 -0
  77. package/build/components/Tabs/Tab.js +74 -0
  78. package/build/components/Tabs/Tab.props.d.ts +14 -0
  79. package/build/components/Tabs/Tab.props.js +1 -0
  80. package/build/components/Tabs/TabPanel.d.ts +3 -0
  81. package/build/components/Tabs/TabPanel.js +34 -0
  82. package/build/components/Tabs/TabPanel.props.d.ts +8 -0
  83. package/build/components/Tabs/TabPanel.props.js +1 -0
  84. package/build/components/Tabs/Tabs.context.d.ts +23 -0
  85. package/build/components/Tabs/Tabs.context.js +8 -0
  86. package/build/components/Tabs/Tabs.d.ts +6 -0
  87. package/build/components/Tabs/Tabs.js +114 -0
  88. package/build/components/Tabs/Tabs.props.d.ts +19 -0
  89. package/build/components/Tabs/Tabs.props.js +1 -0
  90. package/build/components/Tabs/TabsList.d.ts +6 -0
  91. package/build/components/Tabs/TabsList.js +112 -0
  92. package/build/components/Tabs/TabsList.props.d.ts +6 -0
  93. package/build/components/Tabs/TabsList.props.js +1 -0
  94. package/build/components/Tabs/index.d.ts +8 -0
  95. package/build/components/Tabs/index.js +4 -0
  96. package/build/components/UnstyledIconButton/UnstyledIconButton.d.ts +1 -1
  97. package/build/components/UnstyledIconButton/UnstyledIconButton.js +4 -4
  98. package/build/components/UnstyledIconButton/UnstyledIconButton.props.d.ts +2 -1
  99. package/build/components/index.d.ts +4 -0
  100. package/build/components/index.js +4 -0
  101. package/build/core/themes.d.ts +428 -160
  102. package/build/core/themes.js +57 -1
  103. package/build/tokens/color.d.ts +88 -80
  104. package/build/tokens/color.js +44 -40
  105. package/build/tokens/components/dark/alert.d.ts +13 -0
  106. package/build/tokens/components/dark/alert.js +13 -0
  107. package/build/tokens/components/dark/button.d.ts +1 -0
  108. package/build/tokens/components/dark/button.js +1 -0
  109. package/build/tokens/components/dark/checkbox.d.ts +4 -1
  110. package/build/tokens/components/dark/checkbox.js +4 -1
  111. package/build/tokens/components/dark/icon-button.d.ts +10 -3
  112. package/build/tokens/components/dark/icon-button.js +10 -3
  113. package/build/tokens/components/dark/index.d.ts +1 -0
  114. package/build/tokens/components/dark/index.js +1 -0
  115. package/build/tokens/components/dark/link.d.ts +5 -0
  116. package/build/tokens/components/dark/link.js +5 -0
  117. package/build/tokens/components/dark/progress-bar.d.ts +41 -0
  118. package/build/tokens/components/dark/progress-bar.js +40 -0
  119. package/build/tokens/components/dark/radio.d.ts +1 -1
  120. package/build/tokens/components/dark/radio.js +1 -1
  121. package/build/tokens/components/dark/tabs.d.ts +2 -0
  122. package/build/tokens/components/dark/tabs.js +2 -0
  123. package/build/tokens/components/light/alert.d.ts +13 -0
  124. package/build/tokens/components/light/alert.js +13 -0
  125. package/build/tokens/components/light/badge.d.ts +1 -1
  126. package/build/tokens/components/light/badge.js +1 -1
  127. package/build/tokens/components/light/button.d.ts +1 -0
  128. package/build/tokens/components/light/button.js +1 -0
  129. package/build/tokens/components/light/checkbox.d.ts +6 -3
  130. package/build/tokens/components/light/checkbox.js +6 -3
  131. package/build/tokens/components/light/icon-button.d.ts +8 -1
  132. package/build/tokens/components/light/icon-button.js +8 -1
  133. package/build/tokens/components/light/index.d.ts +1 -0
  134. package/build/tokens/components/light/index.js +1 -0
  135. package/build/tokens/components/light/link.d.ts +5 -0
  136. package/build/tokens/components/light/link.js +5 -0
  137. package/build/tokens/components/light/progress-bar.d.ts +41 -0
  138. package/build/tokens/components/light/progress-bar.js +40 -0
  139. package/build/tokens/components/light/radio.d.ts +3 -3
  140. package/build/tokens/components/light/radio.js +3 -3
  141. package/build/tokens/components/light/tabs.d.ts +2 -0
  142. package/build/tokens/components/light/tabs.js +2 -0
  143. package/build/tokens/index.d.ts +1 -0
  144. package/build/tokens/index.js +1 -0
  145. package/build/tokens/layout.d.ts +48 -30
  146. package/build/tokens/layout.js +24 -15
  147. package/build/tokens/motion.d.ts +23 -0
  148. package/build/tokens/motion.js +22 -0
  149. package/build/tokens/primitive.d.ts +19 -0
  150. package/build/tokens/primitive.js +19 -0
  151. package/build/tokens/semantic-dark.d.ts +26 -24
  152. package/build/tokens/semantic-dark.js +26 -24
  153. package/build/tokens/semantic-light.d.ts +18 -16
  154. package/build/tokens/semantic-light.js +18 -16
  155. package/build/types/values.d.ts +2 -1
  156. package/build/utils/formatThousands.d.ts +2 -0
  157. package/build/utils/formatThousands.js +16 -0
  158. package/build/utils/index.d.ts +1 -0
  159. package/build/utils/index.js +1 -0
  160. package/docs/assets/bank-logo.png +0 -0
  161. package/docs/assets/bank-logo1.png +0 -0
  162. package/docs/components/AllComponents.web.tsx +97 -8
  163. package/docs/components/NextPrevPage.tsx +11 -3
  164. package/docs/components/UsageWrap.tsx +2 -2
  165. package/docs/components/index.ts +6 -7
  166. package/docs/heplers/addReactNativePrefix.ts +8 -0
  167. package/docs/heplers/index.ts +1 -0
  168. package/docs/introduction.mdx +3 -3
  169. package/docs/theme-tokens.mdx +42 -0
  170. package/package.json +13 -13
  171. package/src/components/Alert/AlertCloseButton.tsx +33 -5
  172. package/src/components/Alert/AlertIcon.tsx +17 -1
  173. package/src/components/Alert/AlertIconButton.tsx +37 -4
  174. package/src/components/Alert/AlertLink.tsx +52 -1
  175. package/src/components/Alert/AlertText.tsx +28 -3
  176. package/src/components/Alert/AlertTitle.tsx +28 -3
  177. package/src/components/Badge/Badge.docs.mdx +7 -7
  178. package/src/components/Badge/Badge.props.ts +3 -2
  179. package/src/components/Badge/Badge.stories.tsx +81 -92
  180. package/src/components/Badge/Badge.tsx +101 -14
  181. package/src/components/Badge/BadgeIcon.tsx +27 -29
  182. package/src/components/Badge/BadgeText.tsx +29 -31
  183. package/src/components/Button/ButtonGroupRoot.tsx +12 -2
  184. package/src/components/Button/ButtonRoot.tsx +1 -0
  185. package/src/components/Card/Card.docs.mdx +1 -1
  186. package/src/components/Card/Card.props.ts +2 -2
  187. package/src/components/Checkbox/Checkbox.docs.mdx +45 -7
  188. package/src/components/Checkbox/Checkbox.props.ts +3 -1
  189. package/src/components/Checkbox/Checkbox.stories.tsx +37 -1
  190. package/src/components/Checkbox/Checkbox.tsx +12 -9
  191. package/src/components/Checkbox/CheckboxIcon.tsx +1 -1
  192. package/src/components/Checkbox/CheckboxImage.tsx +9 -0
  193. package/src/components/Checkbox/CheckboxTileRoot.tsx +1 -1
  194. package/src/components/Checkbox/index.ts +3 -2
  195. package/src/components/CurrencyInput/CurrencyInput.docs.mdx +120 -0
  196. package/src/components/CurrencyInput/CurrencyInput.props.ts +19 -0
  197. package/src/components/CurrencyInput/CurrencyInput.stories.tsx +116 -0
  198. package/src/components/CurrencyInput/CurrencyInput.tsx +91 -0
  199. package/src/components/CurrencyInput/index.ts +1 -0
  200. package/src/components/DescriptionList/DescriptionList.context.ts +18 -0
  201. package/src/components/DescriptionList/DescriptionList.docs.mdx +98 -0
  202. package/src/components/DescriptionList/DescriptionList.props.ts +20 -0
  203. package/src/components/DescriptionList/DescriptionList.stories.tsx +154 -0
  204. package/src/components/DescriptionList/DescriptionList.tsx +64 -0
  205. package/src/components/DescriptionList/DescriptionListItem.props.ts +19 -0
  206. package/src/components/DescriptionList/DescriptionListItem.tsx +101 -0
  207. package/src/components/DescriptionList/index.ts +4 -0
  208. package/src/components/Divider/Divider.props.ts +2 -2
  209. package/src/components/Divider/Divider.stories.tsx +3 -3
  210. package/src/components/Divider/Divider.tsx +46 -0
  211. package/src/components/Flex/Flex.docs.mdx +4 -4
  212. package/src/components/Flex/Flex.props.ts +3 -2
  213. package/src/components/Flex/Flex.stories.tsx +1 -1
  214. package/src/components/Grid/Grid.docs.mdx +12 -12
  215. package/src/components/Grid/Grid.props.ts +2 -2
  216. package/src/components/Grid/Grid.stories.tsx +2 -2
  217. package/src/components/IconContainer/IconContainer.docs.mdx +90 -0
  218. package/src/components/IconContainer/IconContainer.props.ts +17 -0
  219. package/src/components/IconContainer/IconContainer.stories.tsx +130 -0
  220. package/src/components/IconContainer/IconContainer.tsx +180 -0
  221. package/src/components/IconContainer/index.tsx +2 -0
  222. package/src/components/Icons/CircleIcon.tsx +9 -11
  223. package/src/components/Input/Input.docs.mdx +3 -3
  224. package/src/components/Input/Input.props.ts +0 -20
  225. package/src/components/Input/Input.stories.tsx +0 -6
  226. package/src/components/Input/Input.tsx +2 -49
  227. package/src/components/Input/InputField.tsx +0 -7
  228. package/src/components/Link/Link.props.ts +3 -0
  229. package/src/components/Link/Link.tsx +12 -6
  230. package/src/components/List/List.docs.mdx +24 -23
  231. package/src/components/Modal/Modal.tsx +18 -0
  232. package/src/components/Radio/Radio.docs.mdx +96 -124
  233. package/src/components/Radio/Radio.props.ts +3 -1
  234. package/src/components/Radio/Radio.stories.tsx +47 -0
  235. package/src/components/Radio/Radio.tsx +10 -7
  236. package/src/components/Radio/RadioImage.tsx +9 -0
  237. package/src/components/Radio/RadioTileRoot.tsx +1 -1
  238. package/src/components/Radio/index.ts +3 -2
  239. package/src/components/SectionHeader/SectionHeader.tsx +1 -0
  240. package/src/components/Select/Select.docs.mdx +6 -6
  241. package/src/components/Select/Select.stories.tsx +7 -7
  242. package/src/components/Select/SelectOption.tsx +4 -10
  243. package/src/components/Tabs/Tab.props.ts +16 -0
  244. package/src/components/Tabs/Tab.tsx +113 -0
  245. package/src/components/Tabs/TabPanel.props.ts +10 -0
  246. package/src/components/Tabs/TabPanel.tsx +46 -0
  247. package/src/components/Tabs/Tabs.context.ts +26 -0
  248. package/src/components/Tabs/Tabs.docs.mdx +214 -0
  249. package/src/components/Tabs/Tabs.props.ts +21 -0
  250. package/src/components/Tabs/Tabs.stories.tsx +270 -0
  251. package/src/components/Tabs/Tabs.tsx +139 -0
  252. package/src/components/Tabs/TabsList.props.ts +8 -0
  253. package/src/components/Tabs/TabsList.tsx +194 -0
  254. package/src/components/Tabs/index.ts +8 -0
  255. package/src/components/UnstyledIconButton/UnstyledIconButton.props.ts +2 -1
  256. package/src/components/UnstyledIconButton/UnstyledIconButton.tsx +9 -3
  257. package/src/components/index.ts +4 -0
  258. package/src/core/themes.ts +57 -1
  259. package/src/tokens/color.ts +44 -40
  260. package/src/tokens/components/dark/alert.ts +13 -0
  261. package/src/tokens/components/dark/button.ts +1 -0
  262. package/src/tokens/components/dark/checkbox.ts +4 -1
  263. package/src/tokens/components/dark/icon-button.ts +10 -3
  264. package/src/tokens/components/dark/index.ts +1 -0
  265. package/src/tokens/components/dark/link.ts +5 -0
  266. package/src/tokens/components/dark/progress-bar.ts +41 -0
  267. package/src/tokens/components/dark/radio.ts +1 -1
  268. package/src/tokens/components/dark/tabs.ts +2 -0
  269. package/src/tokens/components/light/alert.ts +13 -0
  270. package/src/tokens/components/light/badge.ts +1 -1
  271. package/src/tokens/components/light/button.ts +1 -0
  272. package/src/tokens/components/light/checkbox.ts +6 -3
  273. package/src/tokens/components/light/icon-button.ts +8 -1
  274. package/src/tokens/components/light/index.ts +1 -0
  275. package/src/tokens/components/light/link.ts +5 -0
  276. package/src/tokens/components/light/progress-bar.ts +41 -0
  277. package/src/tokens/components/light/radio.ts +3 -3
  278. package/src/tokens/components/light/tabs.ts +2 -0
  279. package/src/tokens/index.ts +1 -0
  280. package/src/tokens/layout.ts +24 -15
  281. package/src/tokens/motion.ts +23 -0
  282. package/src/tokens/primitive.ts +19 -0
  283. package/src/tokens/semantic-dark.ts +26 -24
  284. package/src/tokens/semantic-light.ts +18 -16
  285. package/src/types/values.ts +3 -1
  286. package/src/utils/formatThousands.ts +14 -0
  287. package/src/utils/index.ts +1 -0
  288. package/docs/assets/react-native-pig.png +0 -0
  289. package/docs/components/AdvancedRadioExample.tsx +0 -126
@@ -1,14 +1,39 @@
1
- import type { TextProps } from 'react-native';
1
+ import type { TextProps, TextStyle } from 'react-native';
2
+ import { StyleSheet } from 'react-native-unistyles';
2
3
  import { DetailText } from '../DetailText';
4
+ import { useAlertContext } from './Alert.context';
3
5
 
4
- const AlertTitle = ({ children, ...props }: TextProps) => {
6
+ const AlertTitle = ({ children, style, ...props }: TextProps) => {
7
+ const { colorScheme } = useAlertContext();
8
+ styles.useVariants({ colorScheme });
5
9
  return (
6
- <DetailText size="md" {...props}>
10
+ <DetailText size="md" style={[styles.title as TextStyle, style]} {...props}>
7
11
  {children}
8
12
  </DetailText>
9
13
  );
10
14
  };
11
15
 
16
+ const styles = StyleSheet.create(theme => ({
17
+ title: {
18
+ variants: {
19
+ colorScheme: {
20
+ info: {
21
+ color: theme.color.feedback.info.foreground,
22
+ },
23
+ positive: {
24
+ color: theme.color.feedback.positive.foreground,
25
+ },
26
+ danger: {
27
+ color: theme.color.feedback.danger.foreground,
28
+ },
29
+ warning: {
30
+ color: theme.color.feedback.warning.foreground,
31
+ },
32
+ },
33
+ },
34
+ },
35
+ }));
36
+
12
37
  AlertTitle.displayName = 'AlertTitle';
13
38
 
14
39
  export default AlertTitle;
@@ -61,13 +61,13 @@ const MyComponent = () => (
61
61
 
62
62
  ## Props
63
63
 
64
- | Property | Type | Description | Default |
65
- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ------- |
66
- | `variant` | `'solid' \| 'outline'` | The variant of the badge. | `solid` |
67
- | `colorScheme` | `'info' \| 'positive' \| 'danger' \| 'warning' \| 'functional' \|`<br />`'energy' \| 'broadband' \| 'mobile' \| 'insurance' \|`<br />`'cashback' \| 'pig'` | The color scheme to use for the badge. | `info` |
68
- | `size` | `'sm' \| 'md'` | The size of the badge. | `sm` |
69
- | `flatBase` | `boolean` | Whether the badge has a flat base. | `false` |
70
- | `icon` | `ReactNode` | The icon to display in the badge. | |
64
+ | Property | Type | Description | Default |
65
+ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | -------- |
66
+ | `variant` | `'subtle' \| 'emphasis' \| 'outline'` | The variant of the badge. | `subtle` |
67
+ | `colorScheme` | `'info' \| 'positive' \| 'danger' \| 'warning' \| 'functional' \|`<br />`'energy' \| 'broadband' \| 'mobile' \| 'insurance' \|`<br />`'cashback' \| 'pig' \| 'highlight'` | The color scheme to use for the badge. | `info` |
68
+ | `size` | `'sm' \| 'md'` | The size of the badge. | `sm` |
69
+ | `flatBase` | `boolean` | Whether the badge has a flat base. | `false` |
70
+ | `icon` | `ReactNode` | The icon to display in the badge. | |
71
71
 
72
72
  ## Color Schemes
73
73
 
@@ -2,7 +2,7 @@ import type { ComponentType } from 'react';
2
2
  import type { ViewProps } from 'react-native';
3
3
 
4
4
  interface BadgeProps extends ViewProps {
5
- variant?: 'solid' | 'outline';
5
+ variant?: 'subtle' | 'emphasis' | 'outline';
6
6
  colorScheme?:
7
7
  | 'info'
8
8
  | 'positive'
@@ -14,7 +14,8 @@ interface BadgeProps extends ViewProps {
14
14
  | 'mobile'
15
15
  | 'insurance'
16
16
  | 'cashback'
17
- | 'pig';
17
+ | 'pig'
18
+ | 'highlight';
18
19
  size?: 'sm' | 'md';
19
20
  icon?: ComponentType;
20
21
  flatBase?: boolean;
@@ -5,6 +5,7 @@ import { Badge } from '.';
5
5
  import { VariantTitle } from '../../../docs/components';
6
6
  import { Box } from '../Box';
7
7
  import { Flex } from '../Flex';
8
+ import type BadgeProps from './Badge.props';
8
9
 
9
10
  // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
10
11
  const meta = {
@@ -18,7 +19,7 @@ const meta = {
18
19
  argTypes: {
19
20
  children: { control: 'text' },
20
21
  variant: {
21
- options: ['solid', 'outline'],
22
+ options: ['subtle', 'emphasis', 'outline'],
22
23
  control: 'radio',
23
24
  description: 'Variant of the badge.',
24
25
  },
@@ -35,6 +36,7 @@ const meta = {
35
36
  'insurance',
36
37
  'cashback',
37
38
  'pig',
39
+ 'highlight',
38
40
  ],
39
41
  control: 'select',
40
42
  description: 'Color scheme of the badge.',
@@ -53,7 +55,7 @@ const meta = {
53
55
  // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
54
56
  args: {
55
57
  children: 'Badge',
56
- variant: 'solid',
58
+ variant: 'subtle',
57
59
  colorScheme: 'info',
58
60
  flatBase: false,
59
61
  size: 'sm',
@@ -71,12 +73,21 @@ export const Playground: Story = {
71
73
  },
72
74
  };
73
75
 
74
- export const Solid: Story = {
76
+ export const Subtle: Story = {
75
77
  parameters: {
76
78
  controls: { exclude: ['variant'] },
77
79
  },
78
80
  args: {
79
- variant: 'solid',
81
+ variant: 'subtle',
82
+ },
83
+ };
84
+
85
+ export const Emphasis: Story = {
86
+ parameters: {
87
+ controls: { exclude: ['variant'] },
88
+ },
89
+ args: {
90
+ variant: 'emphasis',
80
91
  },
81
92
  };
82
93
 
@@ -103,93 +114,71 @@ export const Icon: Story = {
103
114
  };
104
115
 
105
116
  export const KitchenSink: Story = {
106
- render: () => (
107
- <Flex direction="row" wrap="wrap" space="md">
108
- {['sm', 'md'].map(size => (
109
- <Box gap="200">
110
- <VariantTitle title={`Info - Solid - ${size}`}>
111
- <Badge colorScheme="info" size={size as 'sm' | 'md'}>
112
- Info badge
113
- </Badge>
114
- </VariantTitle>
115
- <VariantTitle title={`Positive - Solid - ${size}`}>
116
- <Badge colorScheme="positive" size={size as 'sm' | 'md'}>
117
- Positive badge
118
- </Badge>
119
- </VariantTitle>
120
- <VariantTitle title={`Danger - Solid - ${size}`}>
121
- <Badge colorScheme="danger" size={size as 'sm' | 'md'}>
122
- Danger badge
123
- </Badge>
124
- </VariantTitle>
125
- <VariantTitle title={`Warning - Solid - ${size}`}>
126
- <Badge colorScheme="warning" size={size as 'sm' | 'md'}>
127
- Warning badge
128
- </Badge>
129
- </VariantTitle>
130
- <VariantTitle title={`Functional - Solid - ${size}`}>
131
- <Badge colorScheme="functional" size={size as 'sm' | 'md'}>
132
- Functional badge
133
- </Badge>
134
- </VariantTitle>
135
- <VariantTitle title={`Energy - Solid - ${size}`}>
136
- <Badge colorScheme="energy" size={size as 'sm' | 'md'}>
137
- Energy badge
138
- </Badge>
139
- </VariantTitle>
140
- <VariantTitle title={`Broadband - Solid - ${size}`}>
141
- <Badge colorScheme="broadband" size={size as 'sm' | 'md'}>
142
- Broadband badge
143
- </Badge>
144
- </VariantTitle>
145
- <VariantTitle title={`Mobile - Solid - ${size}`}>
146
- <Badge colorScheme="mobile" size={size as 'sm' | 'md'}>
147
- Mobile badge
148
- </Badge>
149
- </VariantTitle>
150
- <VariantTitle title={`Insurance - Solid - ${size}`}>
151
- <Badge colorScheme="insurance" size={size as 'sm' | 'md'}>
152
- Insurance badge
153
- </Badge>
154
- </VariantTitle>
155
- <VariantTitle title={`Cashback - Solid - ${size}`}>
156
- <Badge colorScheme="cashback" size={size as 'sm' | 'md'}>
157
- Cashback badge
158
- </Badge>
159
- </VariantTitle>
160
- <VariantTitle title={`Pig - Solid - ${size}`}>
161
- <Badge colorScheme="pig" size={size as 'sm' | 'md'}>
162
- Pig badge
163
- </Badge>
164
- </VariantTitle>
117
+ render: () => {
118
+ const colorSchemes: NonNullable<BadgeProps['colorScheme']>[] = [
119
+ 'info',
120
+ 'positive',
121
+ 'danger',
122
+ 'warning',
123
+ 'functional',
124
+ 'energy',
125
+ 'broadband',
126
+ 'mobile',
127
+ 'insurance',
128
+ 'cashback',
129
+ 'pig',
130
+ 'highlight',
131
+ ];
132
+ const sizes: Array<BadgeProps['size']> = ['sm', 'md'];
133
+
134
+ return (
135
+ <Flex direction="column" space="lg" style={{ width: '100%' }}>
136
+ {colorSchemes.map(cs => {
137
+ // Determine allowed variants per color scheme based on design constraints:
138
+ // - Remove 'outline' for energy, broadband, mobile, insurance, cashback, pig, highlight
139
+ // - For highlight only show 'subtle'
140
+ const noOutlineSchemes: Array<BadgeProps['colorScheme']> = [
141
+ 'energy',
142
+ 'broadband',
143
+ 'mobile',
144
+ 'insurance',
145
+ 'cashback',
146
+ 'pig',
147
+ 'highlight',
148
+ ];
149
+ let variantsForScheme: Array<BadgeProps['variant']> = ['subtle', 'emphasis', 'outline'];
165
150
 
166
- <VariantTitle title={`Info - Outline - ${size}`}>
167
- <Badge colorScheme="info" size={size as 'sm' | 'md'} variant="outline">
168
- Info badge
169
- </Badge>
170
- </VariantTitle>
171
- <VariantTitle title={`Positive - Outline - ${size}`}>
172
- <Badge colorScheme="positive" size={size as 'sm' | 'md'} variant="outline">
173
- Positive badge
174
- </Badge>
175
- </VariantTitle>
176
- <VariantTitle title={`Danger - Outline - ${size}`}>
177
- <Badge colorScheme="danger" size={size as 'sm' | 'md'} variant="outline">
178
- Danger badge
179
- </Badge>
180
- </VariantTitle>
181
- <VariantTitle title={`Warning - Outline - ${size}`}>
182
- <Badge colorScheme="warning" size={size as 'sm' | 'md'} variant="outline">
183
- Warning badge
184
- </Badge>
185
- </VariantTitle>
186
- <VariantTitle title={`Functional - Outline - ${size}`}>
187
- <Badge colorScheme="functional" size={size as 'sm' | 'md'} variant="outline">
188
- Functional badge
189
- </Badge>
190
- </VariantTitle>
191
- </Box>
192
- ))}
193
- </Flex>
194
- ),
151
+ if (noOutlineSchemes.includes(cs)) {
152
+ variantsForScheme = ['subtle', 'emphasis'];
153
+ }
154
+ if (cs === 'highlight') {
155
+ variantsForScheme = ['subtle'];
156
+ }
157
+
158
+ return (
159
+ <Box key={cs} gap="200">
160
+ <VariantTitle title={cs.charAt(0).toUpperCase() + cs.slice(1)}>
161
+ <Flex direction="column" space="sm">
162
+ {sizes.map(sz => (
163
+ <Flex key={sz} direction="row" align="center" space="md">
164
+ {variantsForScheme.map(variant => (
165
+ <Badge
166
+ key={`${cs}-${sz}-${variant}`}
167
+ colorScheme={cs}
168
+ size={sz}
169
+ variant={variant}
170
+ >
171
+ {`${variant} ${sz}`}
172
+ </Badge>
173
+ ))}
174
+ </Flex>
175
+ ))}
176
+ </Flex>
177
+ </VariantTitle>
178
+ </Box>
179
+ );
180
+ })}
181
+ </Flex>
182
+ );
183
+ },
195
184
  };
@@ -8,7 +8,7 @@ import BadgeText from './BadgeText';
8
8
 
9
9
  const Badge = ({ children, ...props }: BadgeProps) => {
10
10
  const {
11
- variant = 'solid',
11
+ variant = 'subtle',
12
12
  icon,
13
13
  colorScheme = 'info',
14
14
  flatBase = false,
@@ -59,9 +59,11 @@ const styles = StyleSheet.create(theme => ({
59
59
  insurance: {},
60
60
  cashback: {},
61
61
  pig: {},
62
+ highlight: {},
62
63
  },
63
64
  variant: {
64
- solid: {},
65
+ subtle: {},
66
+ emphasis: {},
65
67
  outline: {
66
68
  borderWidth: theme.components.badge.outline.borderWidth,
67
69
  borderColor: theme.color.border.subtle,
@@ -86,84 +88,169 @@ const styles = StyleSheet.create(theme => ({
86
88
  },
87
89
  },
88
90
  compoundVariants: [
89
- // Solid
91
+ // Emphasis
90
92
  {
91
93
  colorScheme: 'info',
92
- variant: 'solid',
94
+ variant: 'emphasis',
93
95
  styles: {
94
96
  backgroundColor: theme.color.feedback.info.surface.default,
95
97
  },
96
98
  },
97
99
  {
98
100
  colorScheme: 'danger',
99
- variant: 'solid',
101
+ variant: 'emphasis',
100
102
  styles: {
101
103
  backgroundColor: theme.color.feedback.danger.surface.default,
102
104
  },
103
105
  },
104
106
  {
105
107
  colorScheme: 'positive',
106
- variant: 'solid',
108
+ variant: 'emphasis',
107
109
  styles: {
108
110
  backgroundColor: theme.color.feedback.positive.surface.default,
109
111
  },
110
112
  },
111
113
  {
112
114
  colorScheme: 'warning',
113
- variant: 'solid',
115
+ variant: 'emphasis',
114
116
  styles: {
115
117
  backgroundColor: theme.color.feedback.warning.surface.default,
116
118
  },
117
119
  },
118
120
  {
119
121
  colorScheme: 'functional',
120
- variant: 'solid',
122
+ variant: 'emphasis',
121
123
  styles: {
122
124
  backgroundColor: theme.color.feedback.functional.surface.default,
123
125
  },
124
126
  },
125
127
  {
126
128
  colorScheme: 'energy',
127
- variant: 'solid',
129
+ variant: 'emphasis',
128
130
  styles: {
129
131
  backgroundColor: theme.color.surface.energy.default,
130
132
  },
131
133
  },
132
134
  {
133
135
  colorScheme: 'broadband',
134
- variant: 'solid',
136
+ variant: 'emphasis',
135
137
  styles: {
136
138
  backgroundColor: theme.color.surface.broadband.default,
137
139
  },
138
140
  },
139
141
  {
140
142
  colorScheme: 'mobile',
141
- variant: 'solid',
143
+ variant: 'emphasis',
142
144
  styles: {
143
145
  backgroundColor: theme.color.surface.mobile.default,
144
146
  },
145
147
  },
146
148
  {
147
149
  colorScheme: 'insurance',
148
- variant: 'solid',
150
+ variant: 'emphasis',
149
151
  styles: {
150
152
  backgroundColor: theme.color.surface.insurance.default,
151
153
  },
152
154
  },
153
155
  {
154
156
  colorScheme: 'cashback',
155
- variant: 'solid',
157
+ variant: 'emphasis',
156
158
  styles: {
157
159
  backgroundColor: theme.color.surface.cashback.default,
158
160
  },
159
161
  },
160
162
  {
161
163
  colorScheme: 'pig',
162
- variant: 'solid',
164
+ variant: 'emphasis',
163
165
  styles: {
164
166
  backgroundColor: theme.color.surface.pig.default,
165
167
  },
166
168
  },
169
+ // Subtle
170
+ {
171
+ colorScheme: 'info',
172
+ variant: 'subtle',
173
+ styles: {
174
+ backgroundColor: theme.color.feedback.info.surface.subtle,
175
+ },
176
+ },
177
+ {
178
+ colorScheme: 'danger',
179
+ variant: 'subtle',
180
+ styles: {
181
+ backgroundColor: theme.color.feedback.danger.surface.subtle,
182
+ },
183
+ },
184
+ {
185
+ colorScheme: 'positive',
186
+ variant: 'subtle',
187
+ styles: {
188
+ backgroundColor: theme.color.feedback.positive.surface.subtle,
189
+ },
190
+ },
191
+ {
192
+ colorScheme: 'warning',
193
+ variant: 'subtle',
194
+ styles: {
195
+ backgroundColor: theme.color.feedback.warning.surface.subtle,
196
+ },
197
+ },
198
+ {
199
+ colorScheme: 'functional',
200
+ variant: 'subtle',
201
+ styles: {
202
+ backgroundColor: theme.color.feedback.functional.surface.subtle,
203
+ },
204
+ },
205
+ {
206
+ colorScheme: 'energy',
207
+ variant: 'subtle',
208
+ styles: {
209
+ backgroundColor: theme.color.surface.energy.subtle,
210
+ },
211
+ },
212
+ {
213
+ colorScheme: 'broadband',
214
+ variant: 'subtle',
215
+ styles: {
216
+ backgroundColor: theme.color.surface.broadband.subtle,
217
+ },
218
+ },
219
+ {
220
+ colorScheme: 'mobile',
221
+ variant: 'subtle',
222
+ styles: {
223
+ backgroundColor: theme.color.surface.mobile.subtle,
224
+ },
225
+ },
226
+ {
227
+ colorScheme: 'insurance',
228
+ variant: 'subtle',
229
+ styles: {
230
+ backgroundColor: theme.color.surface.insurance.subtle,
231
+ },
232
+ },
233
+ {
234
+ colorScheme: 'cashback',
235
+ variant: 'subtle',
236
+ styles: {
237
+ backgroundColor: theme.color.surface.cashback.subtle,
238
+ },
239
+ },
240
+ {
241
+ colorScheme: 'pig',
242
+ variant: 'subtle',
243
+ styles: {
244
+ backgroundColor: theme.color.surface.pig.subtle,
245
+ },
246
+ },
247
+ {
248
+ colorScheme: 'highlight',
249
+ variant: 'subtle',
250
+ styles: {
251
+ backgroundColor: theme.color.surface.highlight.subtle,
252
+ },
253
+ },
167
254
  // Outline
168
255
  {
169
256
  colorScheme: 'info',
@@ -30,91 +30,89 @@ const styles = StyleSheet.create(theme => ({
30
30
  insurance: {},
31
31
  cashback: {},
32
32
  pig: {},
33
+ highlight: {},
33
34
  },
34
35
  variant: {
35
- solid: {
36
+ emphasis: {
37
+ color: theme.color.text.primary,
38
+ },
39
+ subtle: {
36
40
  color: theme.color.text.primary,
37
41
  },
38
42
  outline: {},
39
43
  },
40
44
  },
41
45
  compoundVariants: [
42
- // Solid
46
+ // Emphasis
43
47
  {
44
48
  colorScheme: 'info',
45
- variant: 'solid',
49
+ variant: 'emphasis',
46
50
  styles: {
47
51
  color: theme.color.feedback.info.foreground.default,
48
52
  },
49
53
  },
50
54
  {
51
55
  colorScheme: 'danger',
52
- variant: 'solid',
56
+ variant: 'emphasis',
53
57
  styles: {
54
58
  color: theme.color.feedback.danger.foreground.default,
55
59
  },
56
60
  },
57
61
  {
58
62
  colorScheme: 'positive',
59
- variant: 'solid',
63
+ variant: 'emphasis',
60
64
  styles: {
61
65
  color: theme.color.feedback.positive.foreground.default,
62
66
  },
63
67
  },
64
68
  {
65
69
  colorScheme: 'warning',
66
- variant: 'solid',
70
+ variant: 'emphasis',
67
71
  styles: {
68
72
  color: theme.color.feedback.warning.foreground.default,
69
73
  },
70
74
  },
71
75
  {
72
76
  colorScheme: 'functional',
73
- variant: 'solid',
77
+ variant: 'emphasis',
74
78
  styles: {
75
79
  color: theme.color.feedback.functional.foreground.default,
76
80
  },
77
81
  },
82
+ // Subtle
78
83
  {
79
- colorScheme: 'energy',
80
- variant: 'solid',
81
- styles: {
82
- color: theme.color.icon.primary,
83
- },
84
- },
85
- {
86
- colorScheme: 'broadband',
87
- variant: 'solid',
84
+ colorScheme: 'info',
85
+ variant: 'subtle',
88
86
  styles: {
89
- color: theme.color.icon.primary,
87
+ color: theme.color.feedback.info.foreground.default,
90
88
  },
91
89
  },
92
90
  {
93
- colorScheme: 'mobile',
94
- variant: 'solid',
91
+ colorScheme: 'danger',
92
+ variant: 'subtle',
95
93
  styles: {
96
- color: theme.color.icon.primary,
94
+ color: theme.color.feedback.danger.foreground.default,
97
95
  },
98
96
  },
99
97
  {
100
- colorScheme: 'insurance',
101
- variant: 'solid',
98
+ colorScheme: 'positive',
99
+ variant: 'subtle',
102
100
  styles: {
103
- color: theme.color.icon.primary,
101
+ color: theme.color.feedback.positive.foreground.default,
104
102
  },
105
103
  },
106
104
  {
107
- colorScheme: 'cashback',
108
- variant: 'solid',
105
+ colorScheme: 'warning',
106
+ variant: 'subtle',
109
107
  styles: {
110
- color: theme.color.icon.primary,
108
+ color: theme.color.feedback.warning.foreground.default,
111
109
  },
112
110
  },
113
111
  {
114
- colorScheme: 'pig',
115
- variant: 'solid',
112
+ colorScheme: 'functional',
113
+ variant: 'subtle',
116
114
  styles: {
117
- color: theme.color.icon.primary,
115
+ color: theme.color.feedback.functional.foreground.default,
118
116
  },
119
117
  },
120
118
  // Outline