@utilitywarehouse/hearth-react-native 0.1.0 → 0.3.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 (658) hide show
  1. package/.storybook/preview.tsx +5 -0
  2. package/.storybook/prism-setup.ts +104 -0
  3. package/.turbo/turbo-build.log +1 -1
  4. package/.turbo/turbo-lint.log +1 -1
  5. package/CHANGELOG.md +42 -0
  6. package/build/components/Accordion/Accordion.d.ts +1 -1
  7. package/build/components/Accordion/Accordion.js +7 -7
  8. package/build/components/Accordion/Accordion.props.d.ts +2 -2
  9. package/build/components/Accordion/AccordionIcon.js +2 -2
  10. package/build/components/Accordion/AccordionItemRoot.js +2 -2
  11. package/build/components/Accordion/AccordionTrigger.js +4 -4
  12. package/build/components/Accordion/index.d.ts +1 -2
  13. package/build/components/Accordion/index.js +1 -2
  14. package/build/components/Alert/Alert.js +21 -21
  15. package/build/components/Alert/Alert.props.d.ts +3 -3
  16. package/build/components/Alert/AlertCloseButton.js +2 -2
  17. package/build/components/Alert/AlertIcon.js +5 -5
  18. package/build/components/Badge/Badge.context.d.ts +4 -0
  19. package/build/components/Badge/Badge.js +179 -33
  20. package/build/components/Badge/Badge.props.d.ts +3 -2
  21. package/build/components/Badge/BadgeIcon.js +29 -19
  22. package/build/components/Badge/BadgeText.js +30 -19
  23. package/build/components/BodyText/BodyText.js +2 -2
  24. package/build/components/BottomSheet/BottomSheet.d.ts +1 -1
  25. package/build/components/BottomSheet/BottomSheet.js +3 -3
  26. package/build/components/BottomSheet/BottomSheetHandle.js +1 -1
  27. package/build/components/BottomSheet/BottomSheetModal.js +1 -1
  28. package/build/components/BottomSheet/BottomSheetScrollView.js +3 -1
  29. package/build/components/BottomSheet/BottomSheetView.js +1 -1
  30. package/build/components/Button/Button.d.ts +2 -2
  31. package/build/components/Button/Button.props.d.ts +7 -7
  32. package/build/components/Button/ButtonGroupRoot.d.ts +3 -2
  33. package/build/components/Button/ButtonGroupRoot.js +9 -0
  34. package/build/components/Button/ButtonIcon.js +29 -29
  35. package/build/components/Button/ButtonRoot.js +79 -88
  36. package/build/components/Button/ButtonSpinner.js +28 -31
  37. package/build/components/Button/ButtonText.js +40 -26
  38. package/build/components/Card/Card.props.d.ts +3 -3
  39. package/build/components/Card/CardRoot.js +56 -56
  40. package/build/components/Checkbox/CheckboxIcon.js +3 -3
  41. package/build/components/Checkbox/CheckboxIndicator.js +3 -3
  42. package/build/components/Checkbox/CheckboxTileRoot.js +3 -3
  43. package/build/components/CurrencyInput/CurrencyInput.d.ts +6 -0
  44. package/build/components/CurrencyInput/CurrencyInput.js +47 -0
  45. package/build/components/CurrencyInput/CurrencyInput.props.d.ts +14 -0
  46. package/build/components/CurrencyInput/index.d.ts +1 -0
  47. package/build/components/CurrencyInput/index.js +1 -0
  48. package/build/components/DescriptionList/DescriptionList.context.d.ts +6 -0
  49. package/build/components/DescriptionList/DescriptionList.context.js +9 -0
  50. package/build/components/DescriptionList/DescriptionList.d.ts +6 -0
  51. package/build/components/DescriptionList/DescriptionList.js +25 -0
  52. package/build/components/DescriptionList/DescriptionList.props.d.ts +18 -0
  53. package/build/components/DescriptionList/DescriptionListItem.d.ts +6 -0
  54. package/build/components/DescriptionList/DescriptionListItem.js +49 -0
  55. package/build/components/DescriptionList/DescriptionListItem.props.d.ts +17 -0
  56. package/build/components/DescriptionList/DescriptionListItem.props.js +1 -0
  57. package/build/components/DescriptionList/index.d.ts +4 -0
  58. package/build/components/DescriptionList/index.js +2 -0
  59. package/build/components/DetailText/DetailText.js +2 -2
  60. package/build/components/Divider/Divider.js +47 -1
  61. package/build/components/Divider/Divider.props.d.ts +2 -2
  62. package/build/components/Flex/Flex.props.d.ts +3 -2
  63. package/build/components/Grid/Grid.props.d.ts +2 -2
  64. package/build/components/Heading/Heading.js +2 -2
  65. package/build/components/Heading/Heading.props.d.ts +3 -1
  66. package/build/components/Helper/HelperIcon.js +3 -3
  67. package/build/components/Helper/HelperText.js +4 -4
  68. package/build/components/IconButton/IconButtonIcon.js +29 -29
  69. package/build/components/IconButton/IconButtonRoot.js +94 -88
  70. package/build/components/IconButton/IconButtonSpinner.js +27 -30
  71. package/build/components/IconContainer/IconContainer.d.ts +5 -0
  72. package/build/components/IconContainer/IconContainer.js +161 -0
  73. package/build/components/IconContainer/IconContainer.props.d.ts +15 -0
  74. package/build/components/IconContainer/IconContainer.props.js +1 -0
  75. package/build/components/IconContainer/index.d.ts +2 -0
  76. package/build/components/IconContainer/index.js +1 -0
  77. package/build/components/Icons/CircleIcon.js +3 -3
  78. package/build/components/InlineLink/InlineLinkRoot.js +2 -2
  79. package/build/components/Input/Input.d.ts +9 -3
  80. package/build/components/Input/Input.js +11 -43
  81. package/build/components/Input/Input.props.d.ts +2 -17
  82. package/build/components/Input/InputField.d.ts +3 -1
  83. package/build/components/Input/InputField.js +9 -46
  84. package/build/components/Input/InputIcon.js +1 -1
  85. package/build/components/Input/InputRoot.js +9 -9
  86. package/build/components/Label/Label.js +1 -1
  87. package/build/components/Link/LinkRoot.js +2 -2
  88. package/build/components/List/List.d.ts +1 -1
  89. package/build/components/List/List.js +6 -4
  90. package/build/components/List/List.props.d.ts +9 -10
  91. package/build/components/List/ListItem/ListItemHelperText.js +1 -1
  92. package/build/components/List/ListItem/ListItemIcon.js +1 -1
  93. package/build/components/List/ListItem/ListItemRoot.js +15 -6
  94. package/build/components/List/ListItem/ListItemTrailingIcon.js +1 -1
  95. package/build/components/List/index.d.ts +0 -1
  96. package/build/components/List/index.js +0 -1
  97. package/build/components/Modal/Modal.d.ts +7 -0
  98. package/build/components/Modal/Modal.js +180 -0
  99. package/build/components/Modal/Modal.props.d.ts +24 -0
  100. package/build/components/Modal/Modal.props.js +1 -0
  101. package/build/components/Modal/Modal.web.d.ts +7 -0
  102. package/build/components/Modal/Modal.web.js +164 -0
  103. package/build/components/Modal/index.d.ts +2 -0
  104. package/build/components/Modal/index.js +1 -0
  105. package/build/components/Radio/RadioIndicator.js +2 -2
  106. package/build/components/Radio/RadioTileRoot.js +3 -3
  107. package/build/components/RadioCard/RadioCardIndicator.js +2 -2
  108. package/build/components/RadioCard/RadioCardRoot.js +3 -3
  109. package/build/components/SectionHeader/SectionHeader.d.ts +6 -0
  110. package/build/components/SectionHeader/SectionHeader.js +20 -0
  111. package/build/components/{List/ListHeading/ListHeading.props.d.ts → SectionHeader/SectionHeader.props.d.ts} +7 -9
  112. package/build/components/SectionHeader/SectionHeader.props.js +1 -0
  113. package/build/components/SectionHeader/SectionHeaderHeading.d.ts +6 -0
  114. package/build/components/SectionHeader/SectionHeaderHeading.js +7 -0
  115. package/build/components/SectionHeader/SectionHeaderHelperText.d.ts +6 -0
  116. package/build/components/{List/ListHeading/ListHeadingHelperText.js → SectionHeader/SectionHeaderHelperText.js} +5 -5
  117. package/build/components/{List/ListHeading/ListHeadingTextContent.d.ts → SectionHeader/SectionHeaderTextContent.d.ts} +2 -2
  118. package/build/components/{List/ListHeading/ListHeadingTextContent.js → SectionHeader/SectionHeaderTextContent.js} +4 -4
  119. package/build/components/SectionHeader/index.d.ts +4 -0
  120. package/build/components/SectionHeader/index.js +4 -0
  121. package/build/components/Select/Select.js +10 -10
  122. package/build/components/Select/SelectOption.js +6 -6
  123. package/build/components/Spinner/Spinner.web.js +3 -3
  124. package/build/components/Switch/Switch.js +10 -7
  125. package/build/components/Switch/Switch.web.js +10 -8
  126. package/build/components/Tabs/Tab.d.ts +18 -0
  127. package/build/components/Tabs/Tab.js +74 -0
  128. package/build/components/Tabs/Tab.props.d.ts +14 -0
  129. package/build/components/Tabs/Tab.props.js +1 -0
  130. package/build/components/Tabs/TabPanel.d.ts +3 -0
  131. package/build/components/Tabs/TabPanel.js +34 -0
  132. package/build/components/Tabs/TabPanel.props.d.ts +8 -0
  133. package/build/components/Tabs/TabPanel.props.js +1 -0
  134. package/build/components/Tabs/Tabs.context.d.ts +23 -0
  135. package/build/components/Tabs/Tabs.context.js +8 -0
  136. package/build/components/Tabs/Tabs.d.ts +6 -0
  137. package/build/components/Tabs/Tabs.js +114 -0
  138. package/build/components/Tabs/Tabs.props.d.ts +19 -0
  139. package/build/components/Tabs/Tabs.props.js +1 -0
  140. package/build/components/Tabs/TabsList.d.ts +6 -0
  141. package/build/components/Tabs/TabsList.js +112 -0
  142. package/build/components/Tabs/TabsList.props.d.ts +6 -0
  143. package/build/components/Tabs/TabsList.props.js +1 -0
  144. package/build/components/Tabs/index.d.ts +8 -0
  145. package/build/components/Tabs/index.js +4 -0
  146. package/build/components/Textarea/TextareaField.js +5 -5
  147. package/build/components/Textarea/TextareaRoot.js +9 -9
  148. package/build/components/ToggleButton/ToggleButtonIcon.js +3 -3
  149. package/build/components/ToggleButton/ToggleButtonRoot.js +9 -9
  150. package/build/components/ToggleButton/ToggleButtonText.js +2 -2
  151. package/build/components/ToggleButtonCard/ToggleButtonCardRoot.js +3 -3
  152. package/build/components/index.d.ts +9 -3
  153. package/build/components/index.js +9 -3
  154. package/build/core/themes.d.ts +1442 -258
  155. package/build/core/themes.js +59 -3
  156. package/build/tokens/color.d.ts +1010 -86
  157. package/build/tokens/color.js +505 -43
  158. package/build/tokens/components/dark/accordion.d.ts +0 -2
  159. package/build/tokens/components/dark/accordion.js +0 -2
  160. package/build/tokens/components/dark/alert.d.ts +0 -16
  161. package/build/tokens/components/dark/alert.js +0 -16
  162. package/build/tokens/components/dark/avatar.d.ts +19 -0
  163. package/build/tokens/components/dark/avatar.js +18 -0
  164. package/build/tokens/components/dark/badge.d.ts +7 -34
  165. package/build/tokens/components/dark/badge.js +7 -34
  166. package/build/tokens/components/dark/banner.d.ts +1 -10
  167. package/build/tokens/components/dark/banner.js +1 -10
  168. package/build/tokens/components/dark/bottom-navigation.d.ts +2 -7
  169. package/build/tokens/components/dark/bottom-navigation.js +2 -7
  170. package/build/tokens/components/dark/bottom-sheet.d.ts +1 -2
  171. package/build/tokens/components/dark/bottom-sheet.js +1 -2
  172. package/build/tokens/components/dark/breadcrumb.d.ts +0 -1
  173. package/build/tokens/components/dark/breadcrumb.js +0 -1
  174. package/build/tokens/components/dark/button.d.ts +1 -86
  175. package/build/tokens/components/dark/button.js +1 -86
  176. package/build/tokens/components/dark/card.d.ts +0 -28
  177. package/build/tokens/components/dark/card.js +0 -28
  178. package/build/tokens/components/dark/carousel-control.d.ts +0 -8
  179. package/build/tokens/components/dark/carousel-control.js +0 -8
  180. package/build/tokens/components/dark/checkbox.d.ts +2 -11
  181. package/build/tokens/components/dark/checkbox.js +2 -11
  182. package/build/tokens/components/dark/date-picker.d.ts +0 -12
  183. package/build/tokens/components/dark/date-picker.js +0 -12
  184. package/build/tokens/components/dark/description-list.d.ts +20 -0
  185. package/build/tokens/components/dark/description-list.js +19 -0
  186. package/build/tokens/components/dark/dialog.d.ts +0 -1
  187. package/build/tokens/components/dark/dialog.js +0 -1
  188. package/build/tokens/components/dark/divider.d.ts +4 -1
  189. package/build/tokens/components/dark/divider.js +4 -1
  190. package/build/tokens/components/dark/expandable-card.d.ts +11 -0
  191. package/build/tokens/components/dark/expandable-card.js +10 -0
  192. package/build/tokens/components/dark/icon-button.d.ts +5 -5
  193. package/build/tokens/components/dark/icon-button.js +5 -5
  194. package/build/tokens/components/dark/icon-container.d.ts +0 -17
  195. package/build/tokens/components/dark/icon-container.js +0 -17
  196. package/build/tokens/components/dark/index.d.ts +10 -4
  197. package/build/tokens/components/dark/index.js +10 -4
  198. package/build/tokens/components/dark/indicator-icon-button.d.ts +11 -0
  199. package/build/tokens/components/dark/indicator-icon-button.js +10 -0
  200. package/build/tokens/components/dark/inline-link.d.ts +1 -1
  201. package/build/tokens/components/dark/inline-link.js +1 -1
  202. package/build/tokens/components/dark/input.d.ts +1 -9
  203. package/build/tokens/components/dark/input.js +1 -9
  204. package/build/tokens/components/dark/link.d.ts +2 -2
  205. package/build/tokens/components/dark/link.js +2 -2
  206. package/build/tokens/components/dark/list.d.ts +20 -20
  207. package/build/tokens/components/dark/list.js +20 -20
  208. package/build/tokens/components/dark/menu.d.ts +0 -12
  209. package/build/tokens/components/dark/menu.js +0 -12
  210. package/build/tokens/components/dark/modal.d.ts +0 -1
  211. package/build/tokens/components/dark/modal.js +0 -1
  212. package/build/tokens/components/dark/navigation.d.ts +1 -6
  213. package/build/tokens/components/dark/navigation.js +1 -6
  214. package/build/tokens/components/dark/pagination.d.ts +12 -0
  215. package/build/tokens/components/dark/pagination.js +11 -0
  216. package/build/tokens/components/dark/parts.d.ts +14 -4
  217. package/build/tokens/components/dark/parts.js +14 -4
  218. package/build/tokens/components/dark/pill.d.ts +0 -10
  219. package/build/tokens/components/dark/pill.js +0 -10
  220. package/build/tokens/components/dark/progress-stepper.d.ts +0 -8
  221. package/build/tokens/components/dark/progress-stepper.js +0 -8
  222. package/build/tokens/components/dark/radio.d.ts +2 -9
  223. package/build/tokens/components/dark/radio.js +2 -9
  224. package/build/tokens/components/dark/{focus.d.ts → section-header.d.ts} +4 -2
  225. package/build/tokens/components/dark/{focus.js → section-header.js} +4 -2
  226. package/build/tokens/components/dark/segmented-control.d.ts +0 -8
  227. package/build/tokens/components/dark/segmented-control.js +0 -8
  228. package/build/tokens/components/dark/select.d.ts +0 -10
  229. package/build/tokens/components/dark/select.js +0 -10
  230. package/build/tokens/components/dark/spinner.d.ts +1 -1
  231. package/build/tokens/components/dark/spinner.js +1 -1
  232. package/build/tokens/components/dark/switch.d.ts +1 -11
  233. package/build/tokens/components/dark/switch.js +1 -11
  234. package/build/tokens/components/dark/table.d.ts +23 -0
  235. package/build/tokens/components/dark/table.js +22 -0
  236. package/build/tokens/components/dark/tabs.d.ts +26 -0
  237. package/build/tokens/components/dark/tabs.js +25 -0
  238. package/build/tokens/components/dark/toast.d.ts +10 -0
  239. package/build/tokens/components/dark/toast.js +9 -0
  240. package/build/tokens/components/dark/toggle-button.d.ts +0 -11
  241. package/build/tokens/components/dark/toggle-button.js +0 -11
  242. package/build/tokens/components/dark/tooltip.d.ts +12 -0
  243. package/build/tokens/components/dark/tooltip.js +11 -0
  244. package/build/tokens/components/dark/top-navigation.d.ts +0 -8
  245. package/build/tokens/components/dark/top-navigation.js +0 -8
  246. package/build/tokens/components/light/accordion.d.ts +0 -2
  247. package/build/tokens/components/light/accordion.js +0 -2
  248. package/build/tokens/components/light/alert.d.ts +0 -16
  249. package/build/tokens/components/light/alert.js +0 -16
  250. package/build/tokens/components/light/avatar.d.ts +19 -0
  251. package/build/tokens/components/light/avatar.js +18 -0
  252. package/build/tokens/components/light/badge.d.ts +7 -34
  253. package/build/tokens/components/light/badge.js +7 -34
  254. package/build/tokens/components/light/banner.d.ts +2 -11
  255. package/build/tokens/components/light/banner.js +2 -11
  256. package/build/tokens/components/light/bottom-navigation.d.ts +0 -5
  257. package/build/tokens/components/light/bottom-navigation.js +0 -5
  258. package/build/tokens/components/light/bottom-sheet.d.ts +1 -2
  259. package/build/tokens/components/light/bottom-sheet.js +1 -2
  260. package/build/tokens/components/light/breadcrumb.d.ts +0 -1
  261. package/build/tokens/components/light/breadcrumb.js +0 -1
  262. package/build/tokens/components/light/button.d.ts +1 -86
  263. package/build/tokens/components/light/button.js +1 -86
  264. package/build/tokens/components/light/card.d.ts +0 -28
  265. package/build/tokens/components/light/card.js +0 -28
  266. package/build/tokens/components/light/carousel-control.d.ts +0 -8
  267. package/build/tokens/components/light/carousel-control.js +0 -8
  268. package/build/tokens/components/light/checkbox.d.ts +3 -12
  269. package/build/tokens/components/light/checkbox.js +3 -12
  270. package/build/tokens/components/light/date-picker.d.ts +0 -12
  271. package/build/tokens/components/light/date-picker.js +0 -12
  272. package/build/tokens/components/light/description-list.d.ts +20 -0
  273. package/build/tokens/components/light/description-list.js +19 -0
  274. package/build/tokens/components/light/dialog.d.ts +0 -1
  275. package/build/tokens/components/light/dialog.js +0 -1
  276. package/build/tokens/components/light/divider.d.ts +4 -1
  277. package/build/tokens/components/light/divider.js +4 -1
  278. package/build/tokens/components/light/expandable-card.d.ts +11 -0
  279. package/build/tokens/components/light/expandable-card.js +10 -0
  280. package/build/tokens/components/light/icon-button.d.ts +5 -5
  281. package/build/tokens/components/light/icon-button.js +5 -5
  282. package/build/tokens/components/light/icon-container.d.ts +0 -17
  283. package/build/tokens/components/light/icon-container.js +0 -17
  284. package/build/tokens/components/light/index.d.ts +10 -4
  285. package/build/tokens/components/light/index.js +10 -4
  286. package/build/tokens/components/light/indicator-icon-button.d.ts +11 -0
  287. package/build/tokens/components/light/indicator-icon-button.js +10 -0
  288. package/build/tokens/components/light/input.d.ts +1 -9
  289. package/build/tokens/components/light/input.js +1 -9
  290. package/build/tokens/components/light/link.d.ts +2 -2
  291. package/build/tokens/components/light/link.js +2 -2
  292. package/build/tokens/components/light/list.d.ts +20 -20
  293. package/build/tokens/components/light/list.js +20 -20
  294. package/build/tokens/components/light/menu.d.ts +0 -12
  295. package/build/tokens/components/light/menu.js +0 -12
  296. package/build/tokens/components/light/modal.d.ts +0 -1
  297. package/build/tokens/components/light/modal.js +0 -1
  298. package/build/tokens/components/light/navigation.d.ts +1 -6
  299. package/build/tokens/components/light/navigation.js +1 -6
  300. package/build/tokens/components/light/pagination.d.ts +12 -0
  301. package/build/tokens/components/light/pagination.js +11 -0
  302. package/build/tokens/components/light/parts.d.ts +11 -1
  303. package/build/tokens/components/light/parts.js +11 -1
  304. package/build/tokens/components/light/pill.d.ts +0 -10
  305. package/build/tokens/components/light/pill.js +0 -10
  306. package/build/tokens/components/light/progress-stepper.d.ts +0 -8
  307. package/build/tokens/components/light/progress-stepper.js +0 -8
  308. package/build/tokens/components/light/radio.d.ts +3 -10
  309. package/build/tokens/components/light/radio.js +3 -10
  310. package/build/tokens/components/light/section-header.d.ts +10 -0
  311. package/build/tokens/components/light/section-header.js +9 -0
  312. package/build/tokens/components/light/segmented-control.d.ts +0 -8
  313. package/build/tokens/components/light/segmented-control.js +0 -8
  314. package/build/tokens/components/light/select.d.ts +0 -10
  315. package/build/tokens/components/light/select.js +0 -10
  316. package/build/tokens/components/light/switch.d.ts +1 -11
  317. package/build/tokens/components/light/switch.js +1 -11
  318. package/build/tokens/components/light/table.d.ts +23 -0
  319. package/build/tokens/components/light/table.js +22 -0
  320. package/build/tokens/components/light/tabs.d.ts +26 -0
  321. package/build/tokens/components/light/tabs.js +25 -0
  322. package/build/tokens/components/light/toast.d.ts +10 -0
  323. package/build/tokens/components/light/toast.js +9 -0
  324. package/build/tokens/components/light/toggle-button.d.ts +0 -11
  325. package/build/tokens/components/light/toggle-button.js +0 -11
  326. package/build/tokens/components/light/tooltip.d.ts +12 -0
  327. package/build/tokens/components/light/tooltip.js +11 -0
  328. package/build/tokens/components/light/top-navigation.d.ts +0 -8
  329. package/build/tokens/components/light/top-navigation.js +0 -8
  330. package/build/tokens/index.d.ts +1 -0
  331. package/build/tokens/index.js +1 -0
  332. package/build/tokens/layout.d.ts +48 -30
  333. package/build/tokens/layout.js +24 -15
  334. package/build/tokens/semantic-dark.d.ts +242 -13
  335. package/build/tokens/semantic-dark.js +242 -13
  336. package/build/tokens/semantic-light.d.ts +242 -13
  337. package/build/tokens/semantic-light.js +242 -13
  338. package/build/tokens/{components/light/focus.d.ts → semantic.d.ts} +3 -2
  339. package/build/tokens/{components/light/focus.js → semantic.js} +3 -2
  340. package/build/types/values.d.ts +12 -7
  341. package/build/utils/coloursAsArray.d.ts +8 -0
  342. package/build/utils/coloursAsArray.js +37 -2
  343. package/build/utils/formatThousands.d.ts +2 -0
  344. package/build/utils/formatThousands.js +16 -0
  345. package/build/utils/getFlattenedColorValue.d.ts +3 -1
  346. package/build/utils/hexWithOpacity.d.ts +2 -0
  347. package/build/utils/hexWithOpacity.js +15 -0
  348. package/build/utils/index.d.ts +3 -1
  349. package/build/utils/index.js +3 -1
  350. package/build/utils/styleUtils.js +33 -1
  351. package/docs/assets/modal-android.mp4 +0 -0
  352. package/docs/assets/modal-ios.mp4 +0 -0
  353. package/docs/assets/pigs.png +0 -0
  354. package/docs/components/AllComponents.web.tsx +135 -9
  355. package/docs/components/BadgeList.tsx +8 -8
  356. package/docs/components/NextPrevPage.tsx +11 -3
  357. package/docs/components/UsageWrap.tsx +2 -2
  358. package/docs/components/ViewFigmaButton.tsx +3 -3
  359. package/docs/heplers/addReactNativePrefix.ts +8 -0
  360. package/docs/heplers/index.ts +1 -0
  361. package/docs/introduction.mdx +2 -2
  362. package/docs/llm-docs/unistyles-llms-full.txt +1 -1
  363. package/docs/theme-tokens.mdx +91 -26
  364. package/package.json +21 -19
  365. package/src/components/Accordion/Accordion.docs.mdx +25 -39
  366. package/src/components/Accordion/Accordion.props.ts +2 -2
  367. package/src/components/Accordion/Accordion.stories.tsx +10 -10
  368. package/src/components/Accordion/Accordion.tsx +14 -14
  369. package/src/components/Accordion/AccordionIcon.tsx +2 -2
  370. package/src/components/Accordion/AccordionItemRoot.tsx +3 -3
  371. package/src/components/Accordion/AccordionTrigger.tsx +4 -4
  372. package/src/components/Accordion/index.ts +3 -4
  373. package/src/components/Alert/Alert.docs.mdx +25 -25
  374. package/src/components/Alert/Alert.props.ts +3 -3
  375. package/src/components/Alert/Alert.stories.tsx +11 -11
  376. package/src/components/Alert/Alert.tsx +22 -22
  377. package/src/components/Alert/AlertCloseButton.tsx +3 -3
  378. package/src/components/Alert/AlertIcon.tsx +7 -7
  379. package/src/components/Badge/Badge.context.ts +2 -0
  380. package/src/components/Badge/Badge.docs.mdx +16 -15
  381. package/src/components/Badge/Badge.props.ts +15 -2
  382. package/src/components/Badge/Badge.stories.tsx +101 -54
  383. package/src/components/Badge/Badge.tsx +189 -35
  384. package/src/components/Badge/BadgeIcon.tsx +29 -19
  385. package/src/components/Badge/BadgeText.tsx +30 -19
  386. package/src/components/BodyText/BodyText.tsx +4 -4
  387. package/src/components/BottomSheet/BottomSheet.docs.mdx +23 -5
  388. package/src/components/BottomSheet/BottomSheet.stories.tsx +9 -9
  389. package/src/components/BottomSheet/BottomSheet.tsx +5 -5
  390. package/src/components/BottomSheet/BottomSheetHandle.tsx +1 -1
  391. package/src/components/BottomSheet/BottomSheetModal.tsx +1 -1
  392. package/src/components/BottomSheet/BottomSheetScrollView.tsx +4 -2
  393. package/src/components/BottomSheet/BottomSheetView.tsx +1 -1
  394. package/src/components/Box/Box.stories.tsx +3 -3
  395. package/src/components/Button/Button.docs.mdx +35 -35
  396. package/src/components/Button/Button.props.tsx +7 -7
  397. package/src/components/Button/Button.stories.tsx +16 -16
  398. package/src/components/Button/ButtonGroupRoot.tsx +12 -2
  399. package/src/components/Button/ButtonIcon.tsx +29 -29
  400. package/src/components/Button/ButtonRoot.tsx +79 -89
  401. package/src/components/Button/ButtonSpinner.tsx +30 -33
  402. package/src/components/Button/ButtonText.tsx +40 -26
  403. package/src/components/Card/Card.docs.mdx +22 -22
  404. package/src/components/Card/Card.props.ts +11 -11
  405. package/src/components/Card/Card.stories.tsx +34 -34
  406. package/src/components/Card/CardRoot.tsx +56 -56
  407. package/src/components/Checkbox/CheckboxIcon.tsx +4 -4
  408. package/src/components/Checkbox/CheckboxIndicator.tsx +3 -3
  409. package/src/components/Checkbox/CheckboxTileRoot.tsx +3 -3
  410. package/src/components/CurrencyInput/CurrencyInput.docs.mdx +120 -0
  411. package/src/components/CurrencyInput/CurrencyInput.props.ts +19 -0
  412. package/src/components/CurrencyInput/CurrencyInput.stories.tsx +116 -0
  413. package/src/components/CurrencyInput/CurrencyInput.tsx +91 -0
  414. package/src/components/CurrencyInput/index.ts +1 -0
  415. package/src/components/DescriptionList/DescriptionList.context.ts +18 -0
  416. package/src/components/DescriptionList/DescriptionList.docs.mdx +98 -0
  417. package/src/components/DescriptionList/DescriptionList.props.ts +20 -0
  418. package/src/components/DescriptionList/DescriptionList.stories.tsx +154 -0
  419. package/src/components/DescriptionList/DescriptionList.tsx +64 -0
  420. package/src/components/DescriptionList/DescriptionListItem.props.ts +19 -0
  421. package/src/components/DescriptionList/DescriptionListItem.tsx +101 -0
  422. package/src/components/DescriptionList/index.ts +4 -0
  423. package/src/components/DetailText/DetailText.tsx +3 -3
  424. package/src/components/Divider/Divider.props.ts +2 -2
  425. package/src/components/Divider/Divider.stories.tsx +3 -3
  426. package/src/components/Divider/Divider.tsx +47 -1
  427. package/src/components/Flex/Flex.docs.mdx +4 -4
  428. package/src/components/Flex/Flex.props.ts +3 -2
  429. package/src/components/Flex/Flex.stories.tsx +1 -1
  430. package/src/components/Grid/Grid.docs.mdx +12 -12
  431. package/src/components/Grid/Grid.props.ts +2 -2
  432. package/src/components/Grid/Grid.stories.tsx +2 -2
  433. package/src/components/Heading/Heading.props.ts +3 -1
  434. package/src/components/Heading/Heading.tsx +2 -2
  435. package/src/components/Helper/HelperIcon.tsx +3 -3
  436. package/src/components/Helper/HelperText.tsx +4 -4
  437. package/src/components/Icon/Icon.stories.tsx +2 -2
  438. package/src/components/IconButton/IconButton.docs.mdx +21 -16
  439. package/src/components/IconButton/IconButton.figma.tsx +1 -1
  440. package/src/components/IconButton/IconButton.stories.tsx +14 -14
  441. package/src/components/IconButton/IconButtonIcon.tsx +29 -29
  442. package/src/components/IconButton/IconButtonRoot.tsx +94 -88
  443. package/src/components/IconButton/IconButtonSpinner.tsx +27 -30
  444. package/src/components/IconContainer/IconContainer.docs.mdx +90 -0
  445. package/src/components/IconContainer/IconContainer.props.ts +17 -0
  446. package/src/components/IconContainer/IconContainer.stories.tsx +130 -0
  447. package/src/components/IconContainer/IconContainer.tsx +180 -0
  448. package/src/components/IconContainer/index.tsx +2 -0
  449. package/src/components/Icons/CircleIcon.tsx +9 -11
  450. package/src/components/InlineLink/InlineLinkRoot.tsx +2 -2
  451. package/src/components/Input/Input.docs.mdx +19 -17
  452. package/src/components/Input/Input.props.ts +1 -20
  453. package/src/components/Input/Input.stories.tsx +5 -10
  454. package/src/components/Input/Input.tsx +16 -61
  455. package/src/components/Input/InputField.tsx +25 -59
  456. package/src/components/Input/InputIcon.tsx +1 -1
  457. package/src/components/Input/InputRoot.tsx +10 -10
  458. package/src/components/Label/Label.tsx +2 -2
  459. package/src/components/Link/LinkRoot.tsx +2 -2
  460. package/src/components/List/List.docs.mdx +35 -56
  461. package/src/components/List/List.props.ts +9 -10
  462. package/src/components/List/List.stories.tsx +8 -8
  463. package/src/components/List/List.tsx +25 -25
  464. package/src/components/List/ListItem/ListItemHelperText.tsx +1 -1
  465. package/src/components/List/ListItem/ListItemIcon.tsx +1 -1
  466. package/src/components/List/ListItem/ListItemRoot.tsx +15 -6
  467. package/src/components/List/ListItem/ListItemTrailingIcon.tsx +1 -1
  468. package/src/components/List/index.ts +0 -1
  469. package/src/components/Modal/Modal.docs.mdx +547 -0
  470. package/src/components/Modal/Modal.props.ts +26 -0
  471. package/src/components/Modal/Modal.stories.tsx +222 -0
  472. package/src/components/Modal/Modal.tsx +351 -0
  473. package/src/components/Modal/Modal.web.tsx +333 -0
  474. package/src/components/Modal/index.ts +2 -0
  475. package/src/components/Radio/RadioIndicator.tsx +2 -2
  476. package/src/components/Radio/RadioTileRoot.tsx +3 -3
  477. package/src/components/RadioCard/RadioCardIndicator.tsx +2 -2
  478. package/src/components/RadioCard/RadioCardRoot.tsx +3 -3
  479. package/src/components/{List/ListHeading/ListHeading.figma.tsx → SectionHeader/SectionHeader.figma.tsx} +3 -3
  480. package/src/components/{List/ListHeading/ListHeading.props.ts → SectionHeader/SectionHeader.props.ts} +7 -9
  481. package/src/components/SectionHeader/SectionHeader.stories.tsx +76 -0
  482. package/src/components/{List/ListHeading/ListHeading.tsx → SectionHeader/SectionHeader.tsx} +17 -19
  483. package/src/components/SectionHeader/SectionHeaderHeading.tsx +14 -0
  484. package/src/components/SectionHeader/SectionHeaderHelperText.tsx +21 -0
  485. package/src/components/{List/ListHeading/ListHeadingTextContent.tsx → SectionHeader/SectionHeaderTextContent.tsx} +4 -4
  486. package/src/components/SectionHeader/Sectionheader.docs.mdx +83 -0
  487. package/src/components/SectionHeader/index.ts +4 -0
  488. package/src/components/Select/Select.tsx +10 -10
  489. package/src/components/Select/SelectOption.tsx +7 -7
  490. package/src/components/Spinner/Spinner.tsx +3 -3
  491. package/src/components/Spinner/Spinner.web.tsx +12 -12
  492. package/src/components/Switch/Switch.tsx +10 -7
  493. package/src/components/Switch/Switch.web.tsx +10 -12
  494. package/src/components/Tabs/Tab.props.ts +16 -0
  495. package/src/components/Tabs/Tab.tsx +113 -0
  496. package/src/components/Tabs/TabPanel.props.ts +10 -0
  497. package/src/components/Tabs/TabPanel.tsx +46 -0
  498. package/src/components/Tabs/Tabs.context.ts +26 -0
  499. package/src/components/Tabs/Tabs.docs.mdx +214 -0
  500. package/src/components/Tabs/Tabs.props.ts +21 -0
  501. package/src/components/Tabs/Tabs.stories.tsx +270 -0
  502. package/src/components/Tabs/Tabs.tsx +139 -0
  503. package/src/components/Tabs/TabsList.props.ts +8 -0
  504. package/src/components/Tabs/TabsList.tsx +194 -0
  505. package/src/components/Tabs/index.ts +8 -0
  506. package/src/components/Textarea/TextareaField.tsx +5 -5
  507. package/src/components/Textarea/TextareaRoot.tsx +10 -10
  508. package/src/components/ToggleButton/ToggleButtonIcon.tsx +3 -3
  509. package/src/components/ToggleButton/ToggleButtonRoot.tsx +11 -11
  510. package/src/components/ToggleButton/ToggleButtonText.tsx +2 -2
  511. package/src/components/ToggleButtonCard/ToggleButtonCardRoot.tsx +3 -3
  512. package/src/components/index.ts +11 -5
  513. package/src/core/themes.ts +59 -3
  514. package/src/tokens/color.ts +505 -43
  515. package/src/tokens/components/dark/accordion.ts +0 -2
  516. package/src/tokens/components/dark/alert.ts +0 -16
  517. package/src/tokens/components/dark/avatar.ts +19 -0
  518. package/src/tokens/components/dark/badge.ts +7 -34
  519. package/src/tokens/components/dark/banner.ts +1 -10
  520. package/src/tokens/components/dark/bottom-navigation.ts +2 -7
  521. package/src/tokens/components/dark/bottom-sheet.ts +1 -2
  522. package/src/tokens/components/dark/breadcrumb.ts +0 -1
  523. package/src/tokens/components/dark/button.ts +1 -86
  524. package/src/tokens/components/dark/card.ts +0 -28
  525. package/src/tokens/components/dark/carousel-control.ts +0 -8
  526. package/src/tokens/components/dark/checkbox.ts +2 -11
  527. package/src/tokens/components/dark/date-picker.ts +0 -12
  528. package/src/tokens/components/dark/description-list.ts +20 -0
  529. package/src/tokens/components/dark/dialog.ts +0 -1
  530. package/src/tokens/components/dark/divider.ts +4 -1
  531. package/src/tokens/components/{light/footer.ts → dark/expandable-card.ts} +4 -5
  532. package/src/tokens/components/dark/icon-button.ts +5 -5
  533. package/src/tokens/components/dark/icon-container.ts +0 -17
  534. package/src/tokens/components/dark/index.ts +10 -4
  535. package/src/tokens/components/dark/{footer.ts → indicator-icon-button.ts} +4 -5
  536. package/src/tokens/components/dark/inline-link.ts +1 -1
  537. package/src/tokens/components/dark/input.ts +1 -9
  538. package/src/tokens/components/dark/link.ts +2 -2
  539. package/src/tokens/components/dark/list.ts +20 -20
  540. package/src/tokens/components/dark/menu.ts +0 -12
  541. package/src/tokens/components/dark/modal.ts +0 -1
  542. package/src/tokens/components/dark/navigation.ts +1 -6
  543. package/src/tokens/components/dark/pagination.ts +12 -0
  544. package/src/tokens/components/dark/parts.ts +14 -4
  545. package/src/tokens/components/dark/pill.ts +0 -10
  546. package/src/tokens/components/dark/progress-stepper.ts +0 -8
  547. package/src/tokens/components/dark/radio.ts +2 -9
  548. package/src/tokens/components/dark/{focus.ts → section-header.ts} +4 -2
  549. package/src/tokens/components/dark/segmented-control.ts +0 -8
  550. package/src/tokens/components/dark/select.ts +0 -10
  551. package/src/tokens/components/dark/spinner.ts +1 -1
  552. package/src/tokens/components/dark/switch.ts +1 -11
  553. package/src/tokens/components/dark/table.ts +23 -0
  554. package/src/tokens/components/dark/tabs.ts +26 -0
  555. package/src/tokens/components/dark/toast.ts +10 -0
  556. package/src/tokens/components/dark/toggle-button.ts +0 -11
  557. package/src/tokens/components/dark/tooltip.ts +12 -0
  558. package/src/tokens/components/dark/top-navigation.ts +0 -8
  559. package/src/tokens/components/light/accordion.ts +0 -2
  560. package/src/tokens/components/light/alert.ts +0 -16
  561. package/src/tokens/components/light/avatar.ts +19 -0
  562. package/src/tokens/components/light/badge.ts +7 -34
  563. package/src/tokens/components/light/banner.ts +2 -11
  564. package/src/tokens/components/light/bottom-navigation.ts +0 -5
  565. package/src/tokens/components/light/bottom-sheet.ts +1 -2
  566. package/src/tokens/components/light/breadcrumb.ts +0 -1
  567. package/src/tokens/components/light/button.ts +1 -86
  568. package/src/tokens/components/light/card.ts +0 -28
  569. package/src/tokens/components/light/carousel-control.ts +0 -8
  570. package/src/tokens/components/light/checkbox.ts +3 -12
  571. package/src/tokens/components/light/date-picker.ts +0 -12
  572. package/src/tokens/components/light/description-list.ts +20 -0
  573. package/src/tokens/components/light/dialog.ts +0 -1
  574. package/src/tokens/components/light/divider.ts +4 -1
  575. package/src/tokens/components/light/expandable-card.ts +11 -0
  576. package/src/tokens/components/light/icon-button.ts +5 -5
  577. package/src/tokens/components/light/icon-container.ts +0 -17
  578. package/src/tokens/components/light/index.ts +10 -4
  579. package/src/tokens/components/light/indicator-icon-button.ts +11 -0
  580. package/src/tokens/components/light/input.ts +1 -9
  581. package/src/tokens/components/light/link.ts +2 -2
  582. package/src/tokens/components/light/list.ts +20 -20
  583. package/src/tokens/components/light/menu.ts +0 -12
  584. package/src/tokens/components/light/modal.ts +0 -1
  585. package/src/tokens/components/light/navigation.ts +1 -6
  586. package/src/tokens/components/light/pagination.ts +12 -0
  587. package/src/tokens/components/light/parts.ts +11 -1
  588. package/src/tokens/components/light/pill.ts +0 -10
  589. package/src/tokens/components/light/progress-stepper.ts +0 -8
  590. package/src/tokens/components/light/radio.ts +3 -10
  591. package/src/tokens/components/light/{focus.ts → section-header.ts} +4 -2
  592. package/src/tokens/components/light/segmented-control.ts +0 -8
  593. package/src/tokens/components/light/select.ts +0 -10
  594. package/src/tokens/components/light/switch.ts +1 -11
  595. package/src/tokens/components/light/table.ts +23 -0
  596. package/src/tokens/components/light/tabs.ts +26 -0
  597. package/src/tokens/components/light/toast.ts +10 -0
  598. package/src/tokens/components/light/toggle-button.ts +0 -11
  599. package/src/tokens/components/light/tooltip.ts +12 -0
  600. package/src/tokens/components/light/top-navigation.ts +0 -8
  601. package/src/tokens/index.ts +1 -0
  602. package/src/tokens/layout.ts +24 -15
  603. package/src/tokens/semantic-dark.ts +242 -13
  604. package/src/tokens/semantic-light.ts +242 -13
  605. package/src/tokens/semantic.ts +9 -0
  606. package/src/types/values.ts +31 -7
  607. package/src/utils/coloursAsArray.ts +44 -2
  608. package/src/utils/formatThousands.ts +14 -0
  609. package/src/utils/getFlattenedColorValue.ts +1 -1
  610. package/src/utils/hexWithOpacity.ts +19 -0
  611. package/src/utils/index.ts +3 -1
  612. package/src/utils/styleUtils.ts +39 -1
  613. package/src/vite-env.d.ts +5 -0
  614. package/build/components/Accordion/AccordionHeading/AccordionHeading.d.ts +0 -6
  615. package/build/components/Accordion/AccordionHeading/AccordionHeading.js +0 -16
  616. package/build/components/Accordion/AccordionHeading/AccordionHeading.props.d.ts +0 -14
  617. package/build/components/Accordion/AccordionHeading/AccordionHeadingHelperText.d.ts +0 -6
  618. package/build/components/Accordion/AccordionHeading/AccordionHeadingHelperText.js +0 -13
  619. package/build/components/Accordion/AccordionHeading/AccordionHeadingTextContent.d.ts +0 -6
  620. package/build/components/Accordion/AccordionHeading/AccordionHeadingTextContent.js +0 -14
  621. package/build/components/Accordion/AccordionHeading/AccordionHeadingTitle.d.ts +0 -6
  622. package/build/components/Accordion/AccordionHeading/AccordionHeadingTitle.js +0 -7
  623. package/build/components/Accordion/AccordionHeading/index.d.ts +0 -4
  624. package/build/components/Accordion/AccordionHeading/index.js +0 -4
  625. package/build/components/List/ListHeading/ListHeading.d.ts +0 -6
  626. package/build/components/List/ListHeading/ListHeading.js +0 -20
  627. package/build/components/List/ListHeading/ListHeadingHelperText.d.ts +0 -6
  628. package/build/components/List/ListHeading/ListHeadingTitle.d.ts +0 -6
  629. package/build/components/List/ListHeading/ListHeadingTitle.js +0 -7
  630. package/build/components/List/ListHeading/index.d.ts +0 -4
  631. package/build/components/List/ListHeading/index.js +0 -4
  632. package/build/tokens/components/dark/footer.d.ts +0 -12
  633. package/build/tokens/components/dark/footer.js +0 -11
  634. package/build/tokens/components/dark/icon.d.ts +0 -15
  635. package/build/tokens/components/dark/icon.js +0 -14
  636. package/build/tokens/components/dark/text.d.ts +0 -11
  637. package/build/tokens/components/dark/text.js +0 -10
  638. package/build/tokens/components/light/footer.d.ts +0 -12
  639. package/build/tokens/components/light/footer.js +0 -11
  640. package/build/tokens/components/light/icon.d.ts +0 -15
  641. package/build/tokens/components/light/icon.js +0 -14
  642. package/build/tokens/components/light/text.d.ts +0 -11
  643. package/build/tokens/components/light/text.js +0 -10
  644. package/src/components/Accordion/AccordionHeading/AccordionHeading.props.ts +0 -19
  645. package/src/components/Accordion/AccordionHeading/AccordionHeading.tsx +0 -38
  646. package/src/components/Accordion/AccordionHeading/AccordionHeadingHelperText.tsx +0 -22
  647. package/src/components/Accordion/AccordionHeading/AccordionHeadingTextContent.tsx +0 -21
  648. package/src/components/Accordion/AccordionHeading/AccordionHeadingTitle.tsx +0 -14
  649. package/src/components/Accordion/AccordionHeading/index.ts +0 -4
  650. package/src/components/List/ListHeading/ListHeadingHelperText.tsx +0 -21
  651. package/src/components/List/ListHeading/ListHeadingTitle.tsx +0 -14
  652. package/src/components/List/ListHeading/index.ts +0 -4
  653. package/src/tokens/components/dark/icon.ts +0 -15
  654. package/src/tokens/components/dark/text.ts +0 -11
  655. package/src/tokens/components/light/icon.ts +0 -15
  656. package/src/tokens/components/light/text.ts +0 -11
  657. /package/build/components/{Accordion/AccordionHeading/AccordionHeading.props.js → CurrencyInput/CurrencyInput.props.js} +0 -0
  658. /package/build/components/{List/ListHeading/ListHeading.props.js → DescriptionList/DescriptionList.props.js} +0 -0
@@ -1,7 +1,28 @@
1
1
  import { color } from '../tokens';
2
2
 
3
+ const { light, dark, ...restOfColors } = color;
4
+
5
+ /**
6
+ * Recursively flatten nested color objects into camelCase keys
7
+ */
8
+ function flattenColorObject(obj: Record<string, any>, prefix = ''): Record<string, string> {
9
+ const result: Record<string, string> = {};
10
+
11
+ Object.entries(obj).forEach(([key, value]) => {
12
+ const camelKey = prefix ? `${prefix}${key.charAt(0).toUpperCase()}${key.slice(1)}` : key;
13
+
14
+ if (typeof value === 'string') {
15
+ result[camelKey] = value;
16
+ } else if (value && typeof value === 'object') {
17
+ Object.assign(result, flattenColorObject(value, camelKey));
18
+ }
19
+ });
20
+
21
+ return result;
22
+ }
23
+
3
24
  export function extractLightColorValues(): Record<string, string> {
4
- return Object.entries(color).reduce(
25
+ return Object.entries(restOfColors).reduce(
5
26
  (acc, [colorName, variants]) => {
6
27
  Object.entries(variants).forEach(([variantName, hexValue]) => {
7
28
  acc[`${colorName}${variantName}`] = hexValue;
@@ -12,6 +33,27 @@ export function extractLightColorValues(): Record<string, string> {
12
33
  );
13
34
  }
14
35
 
36
+ /**
37
+ * Extract flattened semantic color values from light theme
38
+ */
39
+ export function extractSemanticColorValues(): Record<string, string> {
40
+ return flattenColorObject(light);
41
+ }
42
+
43
+ /**
44
+ * Extract all flattened color values (primitive + semantic)
45
+ */
46
+ export function extractAllColorValues(): Record<string, string> {
47
+ return {
48
+ ...extractLightColorValues(),
49
+ ...extractSemanticColorValues(),
50
+ };
51
+ }
52
+
15
53
  export default function coloursAsArray(): Array<string> {
16
- return [...Object.keys(color), ...Object.keys(extractLightColorValues())];
54
+ const primitiveColors = Object.keys(restOfColors);
55
+ const primitiveColorValues = Object.keys(extractLightColorValues());
56
+ const semanticColorValues = Object.keys(extractSemanticColorValues());
57
+
58
+ return [...primitiveColors, ...primitiveColorValues, ...semanticColorValues];
17
59
  }
@@ -0,0 +1,14 @@
1
+ const formatThousands = (value: string) => {
2
+ if (!value) return value;
3
+ // Remove existing commas first
4
+ const cleaned = value.replace(/,/g, '');
5
+ // Allow leading minus, digits, optional decimal part
6
+ const match = cleaned.match(/^(-)?(\d*)(\.\d*)?$/);
7
+ if (!match) return value; // If it doesn't match a numeric pattern, return original (lets user continue typing)
8
+ const [, sign = '', intPart = '', decimalPart = ''] = match;
9
+ if (!intPart) return sign + intPart + decimalPart; // nothing to format yet
10
+ const withCommas = intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
11
+ return sign + withCommas + (decimalPart || '');
12
+ };
13
+
14
+ export default formatThousands;
@@ -1,6 +1,6 @@
1
1
  import { ColorValue } from '../types';
2
2
 
3
- type ThemeColor = string | Record<string, string>;
3
+ type ThemeColor = string | { [key: string]: string | ThemeColor };
4
4
 
5
5
  export default function getFlattenedColorValue(
6
6
  value?: string,
@@ -0,0 +1,19 @@
1
+ const hexWithOpacity = (hex: string, opacity: number): string => {
2
+ 'worklet';
3
+ // Remove # if present
4
+ const cleanHex = hex.replace('#', '');
5
+
6
+ // Validate hex string format
7
+ if (cleanHex.length !== 6 || !/^[0-9A-Fa-f]{6}$/.test(cleanHex)) {
8
+ throw new Error(`Invalid hex color format: ${hex}. Expected format: #RRGGBB or RRGGBB`);
9
+ }
10
+
11
+ // Convert hex to RGB
12
+ const r = parseInt(cleanHex.substring(0, 2), 16);
13
+ const g = parseInt(cleanHex.substring(2, 4), 16);
14
+ const b = parseInt(cleanHex.substring(4, 6), 16);
15
+
16
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
17
+ };
18
+
19
+ export default hexWithOpacity;
@@ -1,4 +1,6 @@
1
+ export { default as coloursAsArray, extractLightColorValues } from './coloursAsArray';
2
+ export { default as formatThousands } from './formatThousands';
1
3
  export { default as getFlattenedColorValue } from './getFlattenedColorValue';
2
4
  export { default as getStyleValue } from './getStyleValue';
3
- export { default as coloursAsArray, extractLightColorValues } from './coloursAsArray';
5
+ export { default as hexWithOpacity } from './hexWithOpacity';
4
6
  export * from './styleUtils';
@@ -232,6 +232,25 @@ export const viewStyleProps = new Set<string>([
232
232
  'zIndex',
233
233
  ]);
234
234
 
235
+ /**
236
+ * Helper function to convert camelCase back to nested object path
237
+ * e.g., feedbackDangerSurfaceDefault -> ['feedback', 'danger', 'surface', 'default']
238
+ */
239
+ const camelCaseToPath = (camelCased: string): string[] => {
240
+ // Split on uppercase letters but keep them
241
+ const parts = camelCased.split(/(?=[A-Z])/).map(part => part.toLowerCase());
242
+ return parts;
243
+ };
244
+
245
+ /**
246
+ * Helper function to get nested value from object using path array
247
+ */
248
+ const getNestedValue = (obj: any, path: string[]): any => {
249
+ return path.reduce((current, key) => {
250
+ return current && typeof current === 'object' ? current[key] : undefined;
251
+ }, obj);
252
+ };
253
+
235
254
  /**
236
255
  * Helper function to resolve a theme value
237
256
  */
@@ -239,6 +258,23 @@ export const resolveThemeValue = (value: any, themeMapping: any): any => {
239
258
  if (typeof value !== 'string' || !themeMapping || typeof themeMapping !== 'object') {
240
259
  return value;
241
260
  }
261
+
262
+ // First, try direct lookup for simple values
263
+ if (themeMapping[value] !== undefined) {
264
+ return themeMapping[value];
265
+ }
266
+
267
+ // Try camelCase to nested path conversion (e.g., feedbackDangerSurfaceDefault)
268
+ if (/^[a-z][a-zA-Z]*$/.test(value)) {
269
+ // Only camelCase strings without numbers
270
+ const path = camelCaseToPath(value);
271
+ const nestedValue = getNestedValue(themeMapping, path);
272
+ if (nestedValue !== undefined) {
273
+ return nestedValue;
274
+ }
275
+ }
276
+
277
+ // Then, try the existing numeric suffix pattern (e.g., broadbandBlue100)
242
278
  const shadeMatch = value.match(/\d+$/);
243
279
  if (shadeMatch) {
244
280
  const shade = shadeMatch[0];
@@ -248,5 +284,7 @@ export const resolveThemeValue = (value: any, themeMapping: any): any => {
248
284
  return nested[shade] ?? value;
249
285
  }
250
286
  }
251
- return themeMapping[value] ?? value;
287
+
288
+ // If none of the approaches work, return the original value
289
+ return value;
252
290
  };
package/src/vite-env.d.ts CHANGED
@@ -1 +1,6 @@
1
1
  /// <reference types="vite/client" />
2
+
3
+ declare module '*.png' {
4
+ const value: any;
5
+ export default value;
6
+ }
@@ -1,6 +0,0 @@
1
- import AccordionHeadingProps from './AccordionHeading.props';
2
- declare const AccordionHeading: {
3
- ({ text, helperText, children, style, ...props }: AccordionHeadingProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- };
6
- export default AccordionHeading;
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { View } from 'react-native';
3
- import { StyleSheet } from 'react-native-unistyles';
4
- import AccordionHeadingTitle from './AccordionHeadingTitle';
5
- import AccordionHeadingHelperText from './AccordionHeadingHelperText';
6
- import AccordionHeadingTextContent from './AccordionHeadingTextContent';
7
- const AccordionHeading = ({ text, helperText, children, style, ...props }) => (_jsx(View, { ...props, style: [styles.container, style], children: children ? (children) : (_jsxs(AccordionHeadingTextContent, { children: [_jsx(AccordionHeadingTitle, { children: text }), !!helperText && _jsx(AccordionHeadingHelperText, { children: helperText })] })) }));
8
- const styles = StyleSheet.create(theme => ({
9
- container: {
10
- flexDirection: 'row',
11
- gap: theme.components.accordion.heading.gap,
12
- paddingBottom: theme.components.accordion.gap,
13
- },
14
- }));
15
- AccordionHeading.displayName = 'AccordionHeading';
16
- export default AccordionHeading;
@@ -1,14 +0,0 @@
1
- import type { ViewProps } from 'react-native';
2
- type AccordionHeadingBaseProps = Omit<ViewProps, 'children'>;
3
- export interface AccordionHeadingWithChildren extends AccordionHeadingBaseProps {
4
- children: ViewProps['children'];
5
- text?: never;
6
- helperText?: never;
7
- }
8
- export interface AccordionHeadingWithoutChildren extends AccordionHeadingBaseProps {
9
- children?: never;
10
- text: string;
11
- helperText?: string;
12
- }
13
- type AccordionHeadingProps = AccordionHeadingWithChildren | AccordionHeadingWithoutChildren;
14
- export default AccordionHeadingProps;
@@ -1,6 +0,0 @@
1
- import TextProps from '../../BodyText/BodyText.props';
2
- declare const AccordionHeadingHelperText: {
3
- ({ children, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- };
6
- export default AccordionHeadingHelperText;
@@ -1,13 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { StyleSheet } from 'react-native-unistyles';
3
- import { BodyText } from '../../BodyText';
4
- const AccordionHeadingHelperText = ({ children, ...props }) => {
5
- return (_jsx(BodyText, { size: "md", ...props, style: [styles.helperText, props.style], children: children }));
6
- };
7
- const styles = StyleSheet.create(theme => ({
8
- helperText: {
9
- color: theme.components.text.colorSecondary,
10
- },
11
- }));
12
- AccordionHeadingHelperText.displayName = 'AccordionHeadingHelperText';
13
- export default AccordionHeadingHelperText;
@@ -1,6 +0,0 @@
1
- import { type ViewProps } from 'react-native';
2
- declare const AccordionHeadingTextContent: {
3
- ({ children, ...props }: ViewProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- };
6
- export default AccordionHeadingTextContent;
@@ -1,14 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { View } from 'react-native';
3
- import { StyleSheet } from 'react-native-unistyles';
4
- const AccordionHeadingTextContent = ({ children, ...props }) => {
5
- return (_jsx(View, { ...props, style: [styles.container, props.style], children: children }));
6
- };
7
- const styles = StyleSheet.create(theme => ({
8
- container: {
9
- gap: theme.components.list.heading.textContentGap,
10
- flex: 1,
11
- },
12
- }));
13
- AccordionHeadingTextContent.displayName = 'AccordionHeadingTextContent';
14
- export default AccordionHeadingTextContent;
@@ -1,6 +0,0 @@
1
- import TextProps from '../../DetailText/DetailText.props';
2
- declare const AccordionHeadingTitle: {
3
- ({ children, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- };
6
- export default AccordionHeadingTitle;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { DetailText } from '../../DetailText';
3
- const AccordionHeadingTitle = ({ children, ...props }) => {
4
- return (_jsx(DetailText, { size: "lg", ...props, children: children }));
5
- };
6
- AccordionHeadingTitle.displayName = 'AccordionHeadingTitle';
7
- export default AccordionHeadingTitle;
@@ -1,4 +0,0 @@
1
- export { default as AccordionHeading } from './AccordionHeading';
2
- export { default as AccordionHeadingTitle } from './AccordionHeadingTitle';
3
- export { default as AccordionHeadingHelperText } from './AccordionHeadingHelperText';
4
- export { default as AccordionHeadingTextContent } from './AccordionHeadingTextContent';
@@ -1,4 +0,0 @@
1
- export { default as AccordionHeading } from './AccordionHeading';
2
- export { default as AccordionHeadingTitle } from './AccordionHeadingTitle';
3
- export { default as AccordionHeadingHelperText } from './AccordionHeadingHelperText';
4
- export { default as AccordionHeadingTextContent } from './AccordionHeadingTextContent';
@@ -1,6 +0,0 @@
1
- import ListHeadingProps from './ListHeading.props';
2
- declare const ListHeading: {
3
- ({ text, helperText, children, style, linkDisabled, linkHref, linkIcon, linkIconPosition, linkOnPress, linkShowIcon, linkTarget, linkText, ...props }: ListHeadingProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- };
6
- export default ListHeading;
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { View } from 'react-native';
3
- import { StyleSheet } from 'react-native-unistyles';
4
- import ListHeadingTitle from './ListHeadingTitle';
5
- import ListHeadingHelperText from './ListHeadingHelperText';
6
- import ListHeadingTextContent from './ListHeadingTextContent';
7
- import { Link } from '../../Link';
8
- import { useListContext } from '../List.context';
9
- const ListHeading = ({ text, helperText, children, style, linkDisabled, linkHref, linkIcon, linkIconPosition, linkOnPress, linkShowIcon, linkTarget, linkText, ...props }) => {
10
- const { disabled } = useListContext();
11
- return (_jsx(View, { ...props, style: [styles.container, style], children: children ? (children) : (_jsxs(_Fragment, { children: [_jsxs(ListHeadingTextContent, { children: [_jsx(ListHeadingTitle, { children: text }), !!helperText && _jsx(ListHeadingHelperText, { children: helperText })] }), !!linkText && (_jsx(Link, { href: linkHref, disabled: disabled ?? linkDisabled, onPress: linkOnPress, icon: linkIcon, showIcon: linkShowIcon, iconPosition: linkIconPosition, target: linkTarget, children: linkText }))] })) }));
12
- };
13
- ListHeading.displayName = 'ListHeading';
14
- const styles = StyleSheet.create(theme => ({
15
- container: {
16
- flexDirection: 'row',
17
- gap: theme.components.list.heading.gap,
18
- },
19
- }));
20
- export default ListHeading;
@@ -1,6 +0,0 @@
1
- import TextProps from '../../BodyText/BodyText.props';
2
- declare const ListHeadingHelperText: {
3
- ({ children, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- };
6
- export default ListHeadingHelperText;
@@ -1,6 +0,0 @@
1
- import TextProps from '../../DetailText/DetailText.props';
2
- declare const ListHeadingTitle: {
3
- ({ children, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- };
6
- export default ListHeadingTitle;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { DetailText } from '../../DetailText';
3
- const ListHeadingTitle = ({ children, ...props }) => {
4
- return (_jsx(DetailText, { size: "lg", ...props, children: children }));
5
- };
6
- ListHeadingTitle.displayName = 'ListHeadingTitle';
7
- export default ListHeadingTitle;
@@ -1,4 +0,0 @@
1
- export { default as ListHeading } from './ListHeading';
2
- export { default as ListHeadingTitle } from './ListHeadingTitle';
3
- export { default as ListHeadingHelperText } from './ListHeadingHelperText';
4
- export { default as ListHeadingTextContent } from './ListHeadingTextContent';
@@ -1,4 +0,0 @@
1
- export { default as ListHeading } from './ListHeading';
2
- export { default as ListHeadingTitle } from './ListHeadingTitle';
3
- export { default as ListHeadingHelperText } from './ListHeadingHelperText';
4
- export { default as ListHeadingTextContent } from './ListHeadingTextContent';
@@ -1,12 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- declare const _default: {
5
- readonly calendar: {
6
- readonly footer: {
7
- readonly gap: 8;
8
- };
9
- };
10
- readonly backgroundColor: "#fcfbf2";
11
- };
12
- export default _default;
@@ -1,11 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- export default {
5
- calendar: {
6
- footer: {
7
- gap: 8,
8
- },
9
- },
10
- backgroundColor: '#fcfbf2',
11
- };
@@ -1,15 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- declare const _default: {
5
- readonly item: {
6
- readonly icon: {
7
- readonly colorActive: "#7a42c8";
8
- readonly colorDefault: "#e7e6e6";
9
- };
10
- };
11
- readonly color: "#e7e6e6";
12
- readonly colorInvalid: "#ff7964";
13
- readonly colorValid: "#58ca93";
14
- };
15
- export default _default;
@@ -1,14 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- export default {
5
- item: {
6
- icon: {
7
- colorActive: '#7a42c8',
8
- colorDefault: '#e7e6e6',
9
- },
10
- },
11
- color: '#e7e6e6',
12
- colorInvalid: '#ff7964',
13
- colorValid: '#58ca93',
14
- };
@@ -1,11 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- declare const _default: {
5
- readonly color: "#e7e6e6";
6
- readonly colorInvalid: "#ff7964";
7
- readonly colorInverted: "#f6f5f5";
8
- readonly colorSecondary: "#b2afae";
9
- readonly colorValid: "#58ca93";
10
- };
11
- export default _default;
@@ -1,10 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- export default {
5
- color: '#e7e6e6',
6
- colorInvalid: '#ff7964',
7
- colorInverted: '#f6f5f5',
8
- colorSecondary: '#b2afae',
9
- colorValid: '#58ca93',
10
- };
@@ -1,12 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- declare const _default: {
5
- readonly calendar: {
6
- readonly footer: {
7
- readonly gap: 8;
8
- };
9
- };
10
- readonly backgroundColor: "#fcfbf2";
11
- };
12
- export default _default;
@@ -1,11 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- export default {
5
- calendar: {
6
- footer: {
7
- gap: 8,
8
- },
9
- },
10
- backgroundColor: '#fcfbf2',
11
- };
@@ -1,15 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- declare const _default: {
5
- readonly item: {
6
- readonly icon: {
7
- readonly colorActive: "#7a42c8";
8
- readonly colorDefault: "#101010";
9
- };
10
- };
11
- readonly color: "#101010";
12
- readonly colorInvalid: "#de2612";
13
- readonly colorValid: "#0f834a";
14
- };
15
- export default _default;
@@ -1,14 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- export default {
5
- item: {
6
- icon: {
7
- colorActive: '#7a42c8',
8
- colorDefault: '#101010',
9
- },
10
- },
11
- color: '#101010',
12
- colorInvalid: '#de2612',
13
- colorValid: '#0f834a',
14
- };
@@ -1,11 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- declare const _default: {
5
- readonly color: "#101010";
6
- readonly colorInvalid: "#de2612";
7
- readonly colorInverted: "#f6f5f5";
8
- readonly colorSecondary: "#6f6c6b";
9
- readonly colorValid: "#0f834a";
10
- };
11
- export default _default;
@@ -1,10 +0,0 @@
1
- /**
2
- * Do not edit directly, this file was auto-generated.
3
- */
4
- export default {
5
- color: '#101010',
6
- colorInvalid: '#de2612',
7
- colorInverted: '#f6f5f5',
8
- colorSecondary: '#6f6c6b',
9
- colorValid: '#0f834a',
10
- };
@@ -1,19 +0,0 @@
1
- import type { ViewProps } from 'react-native';
2
-
3
- type AccordionHeadingBaseProps = Omit<ViewProps, 'children'>;
4
-
5
- export interface AccordionHeadingWithChildren extends AccordionHeadingBaseProps {
6
- children: ViewProps['children'];
7
- text?: never;
8
- helperText?: never;
9
- }
10
-
11
- export interface AccordionHeadingWithoutChildren extends AccordionHeadingBaseProps {
12
- children?: never;
13
- text: string;
14
- helperText?: string;
15
- }
16
-
17
- type AccordionHeadingProps = AccordionHeadingWithChildren | AccordionHeadingWithoutChildren;
18
-
19
- export default AccordionHeadingProps;
@@ -1,38 +0,0 @@
1
- import { View } from 'react-native';
2
- import { StyleSheet } from 'react-native-unistyles';
3
- import AccordionHeadingTitle from './AccordionHeadingTitle';
4
- import AccordionHeadingHelperText from './AccordionHeadingHelperText';
5
- import AccordionHeadingProps from './AccordionHeading.props';
6
- import AccordionHeadingTextContent from './AccordionHeadingTextContent';
7
-
8
- const AccordionHeading = ({
9
- text,
10
- helperText,
11
- children,
12
- style,
13
-
14
- ...props
15
- }: AccordionHeadingProps) => (
16
- <View {...props} style={[styles.container, style]}>
17
- {children ? (
18
- children
19
- ) : (
20
- <AccordionHeadingTextContent>
21
- <AccordionHeadingTitle>{text}</AccordionHeadingTitle>
22
- {!!helperText && <AccordionHeadingHelperText>{helperText}</AccordionHeadingHelperText>}
23
- </AccordionHeadingTextContent>
24
- )}
25
- </View>
26
- );
27
-
28
- const styles = StyleSheet.create(theme => ({
29
- container: {
30
- flexDirection: 'row',
31
- gap: theme.components.accordion.heading.gap,
32
- paddingBottom: theme.components.accordion.gap,
33
- },
34
- }));
35
-
36
- AccordionHeading.displayName = 'AccordionHeading';
37
-
38
- export default AccordionHeading;
@@ -1,22 +0,0 @@
1
- import { StyleSheet } from 'react-native-unistyles';
2
-
3
- import TextProps from '../../BodyText/BodyText.props';
4
- import { BodyText } from '../../BodyText';
5
-
6
- const AccordionHeadingHelperText = ({ children, ...props }: TextProps) => {
7
- return (
8
- <BodyText size="md" {...props} style={[styles.helperText, props.style]}>
9
- {children}
10
- </BodyText>
11
- );
12
- };
13
-
14
- const styles = StyleSheet.create(theme => ({
15
- helperText: {
16
- color: theme.components.text.colorSecondary,
17
- },
18
- }));
19
-
20
- AccordionHeadingHelperText.displayName = 'AccordionHeadingHelperText';
21
-
22
- export default AccordionHeadingHelperText;
@@ -1,21 +0,0 @@
1
- import { View, type ViewProps } from 'react-native';
2
- import { StyleSheet } from 'react-native-unistyles';
3
-
4
- const AccordionHeadingTextContent = ({ children, ...props }: ViewProps) => {
5
- return (
6
- <View {...props} style={[styles.container, props.style]}>
7
- {children}
8
- </View>
9
- );
10
- };
11
-
12
- const styles = StyleSheet.create(theme => ({
13
- container: {
14
- gap: theme.components.list.heading.textContentGap,
15
- flex: 1,
16
- },
17
- }));
18
-
19
- AccordionHeadingTextContent.displayName = 'AccordionHeadingTextContent';
20
-
21
- export default AccordionHeadingTextContent;
@@ -1,14 +0,0 @@
1
- import TextProps from '../../DetailText/DetailText.props';
2
- import { DetailText } from '../../DetailText';
3
-
4
- const AccordionHeadingTitle = ({ children, ...props }: TextProps) => {
5
- return (
6
- <DetailText size="lg" {...props}>
7
- {children}
8
- </DetailText>
9
- );
10
- };
11
-
12
- AccordionHeadingTitle.displayName = 'AccordionHeadingTitle';
13
-
14
- export default AccordionHeadingTitle;