@rnative/ui 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/README.md +1 -3
  2. package/dist/components/accordion/Accordion.d.ts +31 -0
  3. package/dist/components/accordion/Accordion.d.ts.map +1 -0
  4. package/dist/components/accordion/Accordion.js +121 -0
  5. package/dist/components/accordion/Accordion.js.map +1 -0
  6. package/dist/components/accordion/Accordion.styles.d.ts +8 -0
  7. package/dist/components/accordion/Accordion.styles.d.ts.map +1 -0
  8. package/dist/components/accordion/Accordion.styles.js +48 -0
  9. package/dist/components/accordion/Accordion.styles.js.map +1 -0
  10. package/dist/components/accordion/Accordion.types.d.ts +45 -0
  11. package/dist/components/accordion/Accordion.types.d.ts.map +1 -0
  12. package/dist/components/accordion/Accordion.types.js +9 -0
  13. package/dist/components/accordion/Accordion.types.js.map +1 -0
  14. package/dist/components/accordion/index.d.ts +6 -0
  15. package/dist/components/accordion/index.d.ts.map +1 -0
  16. package/dist/components/accordion/index.js +12 -0
  17. package/dist/components/accordion/index.js.map +1 -0
  18. package/dist/components/alert/Alert.d.ts +16 -0
  19. package/dist/components/alert/Alert.d.ts.map +1 -0
  20. package/dist/components/alert/Alert.js +28 -0
  21. package/dist/components/alert/Alert.js.map +1 -0
  22. package/dist/components/alert/Alert.styles.d.ts +8 -0
  23. package/dist/components/alert/Alert.styles.d.ts.map +1 -0
  24. package/dist/components/alert/Alert.styles.js +36 -0
  25. package/dist/components/alert/Alert.styles.js.map +1 -0
  26. package/dist/components/alert/Alert.types.d.ts +22 -0
  27. package/dist/components/alert/Alert.types.d.ts.map +1 -0
  28. package/dist/components/alert/Alert.types.js +9 -0
  29. package/dist/components/alert/Alert.types.js.map +1 -0
  30. package/dist/components/alert/Alert.variants.d.ts +19 -0
  31. package/dist/components/alert/Alert.variants.d.ts.map +1 -0
  32. package/dist/components/alert/Alert.variants.js +51 -0
  33. package/dist/components/alert/Alert.variants.js.map +1 -0
  34. package/dist/components/alert/index.d.ts +6 -0
  35. package/dist/components/alert/index.d.ts.map +1 -0
  36. package/dist/components/alert/index.js +9 -0
  37. package/dist/components/alert/index.js.map +1 -0
  38. package/dist/components/avatar/Avatar.d.ts +13 -0
  39. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  40. package/dist/components/avatar/Avatar.js +31 -0
  41. package/dist/components/avatar/Avatar.js.map +1 -0
  42. package/dist/components/avatar/Avatar.styles.d.ts +8 -0
  43. package/dist/components/avatar/Avatar.styles.d.ts.map +1 -0
  44. package/dist/components/avatar/Avatar.styles.js +22 -0
  45. package/dist/components/avatar/Avatar.styles.js.map +1 -0
  46. package/dist/components/avatar/Avatar.types.d.ts +21 -0
  47. package/dist/components/avatar/Avatar.types.d.ts.map +1 -0
  48. package/dist/components/avatar/Avatar.types.js +9 -0
  49. package/dist/components/avatar/Avatar.types.js.map +1 -0
  50. package/dist/components/avatar/Avatar.variants.d.ts +23 -0
  51. package/dist/components/avatar/Avatar.variants.d.ts.map +1 -0
  52. package/dist/components/avatar/Avatar.variants.js +48 -0
  53. package/dist/components/avatar/Avatar.variants.js.map +1 -0
  54. package/dist/components/avatar/index.d.ts +6 -0
  55. package/dist/components/avatar/index.d.ts.map +1 -0
  56. package/dist/components/avatar/index.js +9 -0
  57. package/dist/components/avatar/index.js.map +1 -0
  58. package/dist/components/badge/Badge.d.ts +12 -0
  59. package/dist/components/badge/Badge.d.ts.map +1 -0
  60. package/dist/components/badge/Badge.js +25 -0
  61. package/dist/components/badge/Badge.js.map +1 -0
  62. package/dist/components/badge/Badge.styles.d.ts +8 -0
  63. package/dist/components/badge/Badge.styles.d.ts.map +1 -0
  64. package/dist/components/badge/Badge.styles.js +32 -0
  65. package/dist/components/badge/Badge.styles.js.map +1 -0
  66. package/dist/components/badge/Badge.types.d.ts +16 -0
  67. package/dist/components/badge/Badge.types.d.ts.map +1 -0
  68. package/dist/components/badge/Badge.types.js +8 -0
  69. package/dist/components/badge/Badge.types.js.map +1 -0
  70. package/dist/components/badge/Badge.variants.d.ts +23 -0
  71. package/dist/components/badge/Badge.variants.d.ts.map +1 -0
  72. package/dist/components/badge/Badge.variants.js +48 -0
  73. package/dist/components/badge/Badge.variants.js.map +1 -0
  74. package/dist/components/badge/index.d.ts +6 -0
  75. package/dist/components/badge/index.d.ts.map +1 -0
  76. package/dist/components/badge/index.js +9 -0
  77. package/dist/components/badge/index.js.map +1 -0
  78. package/dist/components/button/Button.d.ts +16 -0
  79. package/dist/components/button/Button.d.ts.map +1 -0
  80. package/dist/components/button/Button.js +61 -0
  81. package/dist/components/button/Button.js.map +1 -0
  82. package/dist/components/button/Button.styles.d.ts +8 -0
  83. package/dist/components/button/Button.styles.d.ts.map +1 -0
  84. package/dist/components/button/Button.styles.js +18 -0
  85. package/dist/components/button/Button.styles.js.map +1 -0
  86. package/dist/components/button/Button.types.d.ts +23 -0
  87. package/dist/components/button/Button.types.d.ts.map +1 -0
  88. package/dist/components/button/Button.types.js +6 -0
  89. package/dist/components/button/Button.types.js.map +1 -0
  90. package/dist/components/button/Button.variants.d.ts +11 -0
  91. package/dist/components/button/Button.variants.d.ts.map +1 -0
  92. package/dist/components/button/Button.variants.js +65 -0
  93. package/dist/components/button/Button.variants.js.map +1 -0
  94. package/dist/components/button/index.d.ts +6 -0
  95. package/dist/components/button/index.d.ts.map +1 -0
  96. package/dist/components/button/index.js +9 -0
  97. package/dist/components/button/index.js.map +1 -0
  98. package/dist/components/card/Card.d.ts +36 -0
  99. package/dist/components/card/Card.d.ts.map +1 -0
  100. package/dist/components/card/Card.js +53 -0
  101. package/dist/components/card/Card.js.map +1 -0
  102. package/dist/components/card/Card.styles.d.ts +8 -0
  103. package/dist/components/card/Card.styles.d.ts.map +1 -0
  104. package/dist/components/card/Card.styles.js +30 -0
  105. package/dist/components/card/Card.styles.js.map +1 -0
  106. package/dist/components/card/Card.types.d.ts +22 -0
  107. package/dist/components/card/Card.types.d.ts.map +1 -0
  108. package/dist/components/card/Card.types.js +9 -0
  109. package/dist/components/card/Card.types.js.map +1 -0
  110. package/dist/components/card/Card.variants.d.ts +14 -0
  111. package/dist/components/card/Card.variants.d.ts.map +1 -0
  112. package/dist/components/card/Card.variants.js +32 -0
  113. package/dist/components/card/Card.variants.js.map +1 -0
  114. package/dist/components/card/index.d.ts +6 -0
  115. package/dist/components/card/index.d.ts.map +1 -0
  116. package/dist/components/card/index.js +14 -0
  117. package/dist/components/card/index.js.map +1 -0
  118. package/dist/components/checkbox/CheckBox.d.ts +14 -0
  119. package/dist/components/checkbox/CheckBox.d.ts.map +1 -0
  120. package/dist/components/checkbox/CheckBox.js +40 -0
  121. package/dist/components/checkbox/CheckBox.js.map +1 -0
  122. package/dist/components/checkbox/CheckBox.styles.d.ts +8 -0
  123. package/dist/components/checkbox/CheckBox.styles.d.ts.map +1 -0
  124. package/dist/components/checkbox/CheckBox.styles.js +32 -0
  125. package/dist/components/checkbox/CheckBox.styles.js.map +1 -0
  126. package/dist/components/checkbox/CheckBox.types.d.ts +24 -0
  127. package/dist/components/checkbox/CheckBox.types.d.ts.map +1 -0
  128. package/dist/components/checkbox/CheckBox.types.js +9 -0
  129. package/dist/components/checkbox/CheckBox.types.js.map +1 -0
  130. package/dist/components/checkbox/CheckBox.variants.d.ts +14 -0
  131. package/dist/components/checkbox/CheckBox.variants.d.ts.map +1 -0
  132. package/dist/components/checkbox/CheckBox.variants.js +19 -0
  133. package/dist/components/checkbox/CheckBox.variants.js.map +1 -0
  134. package/dist/components/checkbox/index.d.ts +6 -0
  135. package/dist/components/checkbox/index.d.ts.map +1 -0
  136. package/dist/components/checkbox/index.js +9 -0
  137. package/dist/components/checkbox/index.js.map +1 -0
  138. package/dist/components/combobox/ComboBox.d.ts +16 -0
  139. package/dist/components/combobox/ComboBox.d.ts.map +1 -0
  140. package/dist/components/combobox/ComboBox.js +79 -0
  141. package/dist/components/combobox/ComboBox.js.map +1 -0
  142. package/dist/components/combobox/ComboBox.styles.d.ts +8 -0
  143. package/dist/components/combobox/ComboBox.styles.d.ts.map +1 -0
  144. package/dist/components/combobox/ComboBox.styles.js +57 -0
  145. package/dist/components/combobox/ComboBox.styles.js.map +1 -0
  146. package/dist/components/combobox/ComboBox.types.d.ts +46 -0
  147. package/dist/components/combobox/ComboBox.types.d.ts.map +1 -0
  148. package/dist/components/combobox/ComboBox.types.js +9 -0
  149. package/dist/components/combobox/ComboBox.types.js.map +1 -0
  150. package/dist/components/combobox/ComboBox.variants.d.ts +22 -0
  151. package/dist/components/combobox/ComboBox.variants.d.ts.map +1 -0
  152. package/dist/components/combobox/ComboBox.variants.js +68 -0
  153. package/dist/components/combobox/ComboBox.variants.js.map +1 -0
  154. package/dist/components/combobox/index.d.ts +6 -0
  155. package/dist/components/combobox/index.d.ts.map +1 -0
  156. package/dist/components/combobox/index.js +9 -0
  157. package/dist/components/combobox/index.js.map +1 -0
  158. package/dist/components/dialog/Dialog.d.ts +36 -0
  159. package/dist/components/dialog/Dialog.d.ts.map +1 -0
  160. package/dist/components/dialog/Dialog.js +84 -0
  161. package/dist/components/dialog/Dialog.js.map +1 -0
  162. package/dist/components/dialog/Dialog.styles.d.ts +8 -0
  163. package/dist/components/dialog/Dialog.styles.d.ts.map +1 -0
  164. package/dist/components/dialog/Dialog.styles.js +52 -0
  165. package/dist/components/dialog/Dialog.styles.js.map +1 -0
  166. package/dist/components/dialog/Dialog.types.d.ts +48 -0
  167. package/dist/components/dialog/Dialog.types.d.ts.map +1 -0
  168. package/dist/components/dialog/Dialog.types.js +10 -0
  169. package/dist/components/dialog/Dialog.types.js.map +1 -0
  170. package/dist/components/dialog/Dialog.variants.d.ts +13 -0
  171. package/dist/components/dialog/Dialog.variants.d.ts.map +1 -0
  172. package/dist/components/dialog/Dialog.variants.js +19 -0
  173. package/dist/components/dialog/Dialog.variants.js.map +1 -0
  174. package/dist/components/dialog/index.d.ts +6 -0
  175. package/dist/components/dialog/index.d.ts.map +1 -0
  176. package/dist/components/dialog/index.js +14 -0
  177. package/dist/components/dialog/index.js.map +1 -0
  178. package/dist/components/fab/FAB.d.ts +14 -0
  179. package/dist/components/fab/FAB.d.ts.map +1 -0
  180. package/dist/components/fab/FAB.js +46 -0
  181. package/dist/components/fab/FAB.js.map +1 -0
  182. package/dist/components/fab/FAB.styles.d.ts +8 -0
  183. package/dist/components/fab/FAB.styles.d.ts.map +1 -0
  184. package/dist/components/fab/FAB.styles.js +51 -0
  185. package/dist/components/fab/FAB.styles.js.map +1 -0
  186. package/dist/components/fab/FAB.types.d.ts +23 -0
  187. package/dist/components/fab/FAB.types.d.ts.map +1 -0
  188. package/dist/components/fab/FAB.types.js +8 -0
  189. package/dist/components/fab/FAB.types.js.map +1 -0
  190. package/dist/components/fab/FAB.variants.d.ts +48 -0
  191. package/dist/components/fab/FAB.variants.d.ts.map +1 -0
  192. package/dist/components/fab/FAB.variants.js +43 -0
  193. package/dist/components/fab/FAB.variants.js.map +1 -0
  194. package/dist/components/fab/index.d.ts +6 -0
  195. package/dist/components/fab/index.d.ts.map +1 -0
  196. package/dist/components/fab/index.js +9 -0
  197. package/dist/components/fab/index.js.map +1 -0
  198. package/dist/components/index.d.ts +30 -0
  199. package/dist/components/index.d.ts.map +1 -0
  200. package/dist/components/index.js +46 -0
  201. package/dist/components/index.js.map +1 -0
  202. package/dist/components/input/Input.d.ts +17 -0
  203. package/dist/components/input/Input.d.ts.map +1 -0
  204. package/dist/components/input/Input.js +59 -0
  205. package/dist/components/input/Input.js.map +1 -0
  206. package/dist/components/input/Input.styles.d.ts +8 -0
  207. package/dist/components/input/Input.styles.d.ts.map +1 -0
  208. package/dist/components/input/Input.styles.js +25 -0
  209. package/dist/components/input/Input.styles.js.map +1 -0
  210. package/dist/components/input/Input.types.d.ts +25 -0
  211. package/dist/components/input/Input.types.d.ts.map +1 -0
  212. package/dist/components/input/Input.types.js +9 -0
  213. package/dist/components/input/Input.types.js.map +1 -0
  214. package/dist/components/input/Input.variants.d.ts +23 -0
  215. package/dist/components/input/Input.variants.d.ts.map +1 -0
  216. package/dist/components/input/Input.variants.js +61 -0
  217. package/dist/components/input/Input.variants.js.map +1 -0
  218. package/dist/components/input/index.d.ts +6 -0
  219. package/dist/components/input/index.d.ts.map +1 -0
  220. package/dist/components/input/index.js +9 -0
  221. package/dist/components/input/index.js.map +1 -0
  222. package/dist/components/separator/Separator.d.ts +17 -0
  223. package/dist/components/separator/Separator.d.ts.map +1 -0
  224. package/dist/components/separator/Separator.js +46 -0
  225. package/dist/components/separator/Separator.js.map +1 -0
  226. package/dist/components/separator/Separator.styles.d.ts +8 -0
  227. package/dist/components/separator/Separator.styles.d.ts.map +1 -0
  228. package/dist/components/separator/Separator.styles.js +25 -0
  229. package/dist/components/separator/Separator.styles.js.map +1 -0
  230. package/dist/components/separator/Separator.types.d.ts +25 -0
  231. package/dist/components/separator/Separator.types.d.ts.map +1 -0
  232. package/dist/components/separator/Separator.types.js +8 -0
  233. package/dist/components/separator/Separator.types.js.map +1 -0
  234. package/dist/components/separator/index.d.ts +6 -0
  235. package/dist/components/separator/index.d.ts.map +1 -0
  236. package/dist/components/separator/index.js +9 -0
  237. package/dist/components/separator/index.js.map +1 -0
  238. package/dist/components/text/Text.d.ts +18 -0
  239. package/dist/components/text/Text.d.ts.map +1 -0
  240. package/dist/components/text/Text.js +45 -0
  241. package/dist/components/text/Text.js.map +1 -0
  242. package/dist/components/text/Text.types.d.ts +14 -0
  243. package/dist/components/text/Text.types.d.ts.map +1 -0
  244. package/dist/components/text/Text.types.js +10 -0
  245. package/dist/components/text/Text.types.js.map +1 -0
  246. package/dist/components/text/Text.variants.d.ts +23 -0
  247. package/dist/components/text/Text.variants.d.ts.map +1 -0
  248. package/dist/components/text/Text.variants.js +32 -0
  249. package/dist/components/text/Text.variants.js.map +1 -0
  250. package/dist/components/text/index.d.ts +6 -0
  251. package/dist/components/text/index.d.ts.map +1 -0
  252. package/dist/components/text/index.js +9 -0
  253. package/dist/components/text/index.js.map +1 -0
  254. package/dist/design-tokens/animation.d.ts +22 -0
  255. package/dist/design-tokens/animation.d.ts.map +1 -0
  256. package/dist/design-tokens/animation.js +23 -0
  257. package/dist/design-tokens/animation.js.map +1 -0
  258. package/dist/design-tokens/border-radius.d.ts +15 -0
  259. package/dist/design-tokens/border-radius.d.ts.map +1 -0
  260. package/dist/design-tokens/border-radius.js +17 -0
  261. package/dist/design-tokens/border-radius.js.map +1 -0
  262. package/dist/design-tokens/colors.d.ts +179 -0
  263. package/dist/design-tokens/colors.d.ts.map +1 -0
  264. package/dist/design-tokens/colors.js +109 -0
  265. package/dist/design-tokens/colors.js.map +1 -0
  266. package/dist/design-tokens/index.d.ts +16 -0
  267. package/dist/design-tokens/index.d.ts.map +1 -0
  268. package/dist/design-tokens/index.js +32 -0
  269. package/dist/design-tokens/index.js.map +1 -0
  270. package/dist/design-tokens/shadows.d.ts +103 -0
  271. package/dist/design-tokens/shadows.d.ts.map +1 -0
  272. package/dist/design-tokens/shadows.js +75 -0
  273. package/dist/design-tokens/shadows.js.map +1 -0
  274. package/dist/design-tokens/spacing.d.ts +30 -0
  275. package/dist/design-tokens/spacing.d.ts.map +1 -0
  276. package/dist/design-tokens/spacing.js +32 -0
  277. package/dist/design-tokens/spacing.js.map +1 -0
  278. package/dist/design-tokens/typography.d.ts +40 -0
  279. package/dist/design-tokens/typography.d.ts.map +1 -0
  280. package/dist/design-tokens/typography.js +40 -0
  281. package/dist/design-tokens/typography.js.map +1 -0
  282. package/dist/primitives/Box.d.ts +38 -0
  283. package/dist/primitives/Box.d.ts.map +1 -0
  284. package/dist/primitives/Box.js +70 -0
  285. package/dist/primitives/Box.js.map +1 -0
  286. package/dist/primitives/Pressable.d.ts +30 -0
  287. package/dist/primitives/Pressable.d.ts.map +1 -0
  288. package/dist/primitives/Pressable.js +48 -0
  289. package/dist/primitives/Pressable.js.map +1 -0
  290. package/dist/primitives/Text.d.ts +23 -0
  291. package/dist/primitives/Text.d.ts.map +1 -0
  292. package/dist/primitives/Text.js +42 -0
  293. package/dist/primitives/Text.js.map +1 -0
  294. package/dist/primitives/index.d.ts +14 -0
  295. package/dist/primitives/index.d.ts.map +1 -0
  296. package/dist/primitives/index.js +16 -0
  297. package/dist/primitives/index.js.map +1 -0
  298. package/dist/theme/ThemeContext.d.ts +10 -0
  299. package/dist/theme/ThemeContext.d.ts.map +1 -0
  300. package/dist/theme/ThemeContext.js +19 -0
  301. package/dist/theme/ThemeContext.js.map +1 -0
  302. package/dist/theme/ThemeProvider.d.ts +23 -0
  303. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  304. package/dist/theme/ThemeProvider.js +87 -0
  305. package/dist/theme/ThemeProvider.js.map +1 -0
  306. package/dist/theme/index.d.ts +9 -0
  307. package/dist/theme/index.d.ts.map +1 -0
  308. package/dist/theme/index.js +14 -0
  309. package/dist/theme/index.js.map +1 -0
  310. package/dist/theme/themes.d.ts +20 -0
  311. package/dist/theme/themes.d.ts.map +1 -0
  312. package/dist/theme/themes.js +65 -0
  313. package/dist/theme/themes.js.map +1 -0
  314. package/dist/theme/types.d.ts +92 -0
  315. package/dist/theme/types.d.ts.map +1 -0
  316. package/dist/theme/types.js +9 -0
  317. package/dist/theme/types.js.map +1 -0
  318. package/dist/theme/useTheme.d.ts +7 -0
  319. package/dist/theme/useTheme.d.ts.map +1 -0
  320. package/dist/theme/useTheme.js +9 -0
  321. package/dist/theme/useTheme.js.map +1 -0
  322. package/dist/utils/cn.d.ts +16 -0
  323. package/dist/utils/cn.d.ts.map +1 -0
  324. package/dist/utils/cn.js +33 -0
  325. package/dist/utils/cn.js.map +1 -0
  326. package/dist/utils/createVariants.d.ts +32 -0
  327. package/dist/utils/createVariants.d.ts.map +1 -0
  328. package/dist/utils/createVariants.js +26 -0
  329. package/dist/utils/createVariants.js.map +1 -0
  330. package/dist/utils/index.d.ts +7 -0
  331. package/dist/utils/index.d.ts.map +1 -0
  332. package/dist/utils/index.js +13 -0
  333. package/dist/utils/index.js.map +1 -0
  334. package/dist/utils/mergeProps.d.ts +10 -0
  335. package/dist/utils/mergeProps.d.ts.map +1 -0
  336. package/dist/utils/mergeProps.js +31 -0
  337. package/dist/utils/mergeProps.js.map +1 -0
  338. package/package.json +46 -3
  339. package/src/components/accordion/Accordion.styles.ts +46 -0
  340. package/src/components/accordion/Accordion.tsx +247 -0
  341. package/src/components/accordion/Accordion.types.ts +52 -0
  342. package/src/components/accordion/index.ts +17 -0
  343. package/src/components/alert/Alert.styles.ts +34 -0
  344. package/src/components/alert/Alert.tsx +87 -0
  345. package/src/components/alert/Alert.types.ts +24 -0
  346. package/src/components/alert/Alert.variants.ts +57 -0
  347. package/src/components/alert/index.ts +6 -0
  348. package/src/components/avatar/Avatar.styles.ts +20 -0
  349. package/src/components/avatar/Avatar.tsx +74 -0
  350. package/src/components/avatar/Avatar.types.ts +24 -0
  351. package/src/components/avatar/Avatar.variants.ts +55 -0
  352. package/src/components/avatar/index.ts +6 -0
  353. package/src/components/badge/Badge.styles.ts +30 -0
  354. package/src/components/badge/Badge.tsx +47 -0
  355. package/src/components/badge/Badge.types.ts +24 -0
  356. package/src/components/badge/Badge.variants.ts +62 -0
  357. package/src/components/badge/index.ts +6 -0
  358. package/src/components/button/Button.styles.ts +16 -0
  359. package/src/components/button/Button.tsx +108 -0
  360. package/src/components/button/Button.types.ts +30 -0
  361. package/src/components/button/Button.variants.ts +68 -0
  362. package/src/components/button/index.ts +6 -0
  363. package/src/components/card/Card.styles.ts +28 -0
  364. package/src/components/card/Card.tsx +112 -0
  365. package/src/components/card/Card.types.ts +26 -0
  366. package/src/components/card/Card.variants.ts +38 -0
  367. package/src/components/card/index.ts +18 -0
  368. package/src/components/checkbox/CheckBox.styles.ts +30 -0
  369. package/src/components/checkbox/CheckBox.tsx +98 -0
  370. package/src/components/checkbox/CheckBox.types.ts +26 -0
  371. package/src/components/checkbox/CheckBox.variants.ts +25 -0
  372. package/src/components/checkbox/index.ts +6 -0
  373. package/src/components/combobox/ComboBox.styles.ts +55 -0
  374. package/src/components/combobox/ComboBox.tsx +224 -0
  375. package/src/components/combobox/ComboBox.types.ts +51 -0
  376. package/src/components/combobox/ComboBox.variants.ts +82 -0
  377. package/src/components/combobox/index.ts +6 -0
  378. package/src/components/dialog/Dialog.styles.ts +50 -0
  379. package/src/components/dialog/Dialog.tsx +221 -0
  380. package/src/components/dialog/Dialog.types.ts +55 -0
  381. package/src/components/dialog/Dialog.variants.ts +24 -0
  382. package/src/components/dialog/index.ts +20 -0
  383. package/src/components/fab/FAB.styles.ts +49 -0
  384. package/src/components/fab/FAB.tsx +84 -0
  385. package/src/components/fab/FAB.types.ts +31 -0
  386. package/src/components/fab/FAB.variants.ts +55 -0
  387. package/src/components/fab/index.ts +6 -0
  388. package/src/components/index.ts +88 -0
  389. package/src/components/input/Input.styles.ts +23 -0
  390. package/src/components/input/Input.tsx +139 -0
  391. package/src/components/input/Input.types.ts +28 -0
  392. package/src/components/input/Input.variants.ts +71 -0
  393. package/src/components/input/index.ts +6 -0
  394. package/src/components/separator/Separator.styles.ts +23 -0
  395. package/src/components/separator/Separator.tsx +70 -0
  396. package/src/components/separator/Separator.types.ts +28 -0
  397. package/src/components/separator/index.ts +10 -0
  398. package/src/components/text/Text.tsx +75 -0
  399. package/src/components/text/Text.types.ts +27 -0
  400. package/src/components/text/Text.variants.ts +44 -0
  401. package/src/components/text/index.ts +6 -0
  402. package/src/design-tokens/animation.ts +23 -0
  403. package/src/design-tokens/border-radius.ts +16 -0
  404. package/src/design-tokens/colors.ts +120 -0
  405. package/src/design-tokens/index.ts +21 -0
  406. package/src/design-tokens/shadows.ts +78 -0
  407. package/src/design-tokens/spacing.ts +31 -0
  408. package/src/design-tokens/typography.ts +45 -0
  409. package/src/primitives/Box.tsx +121 -0
  410. package/src/primitives/Pressable.tsx +106 -0
  411. package/src/primitives/Text.tsx +84 -0
  412. package/src/primitives/index.ts +15 -0
  413. package/src/theme/ThemeContext.ts +20 -0
  414. package/src/theme/ThemeProvider.tsx +152 -0
  415. package/src/theme/index.ts +9 -0
  416. package/src/theme/themes.ts +71 -0
  417. package/src/theme/types.ts +89 -0
  418. package/src/theme/useTheme.ts +7 -0
  419. package/src/utils/cn.ts +37 -0
  420. package/src/utils/createVariants.ts +47 -0
  421. package/src/utils/index.ts +7 -0
  422. package/src/utils/mergeProps.ts +35 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * ANAN-UI — Component: Input
3
+ *
4
+ * A labeled text input with variant/size support, focus and error states, and
5
+ * full accessibility. Built on React Native's TextInput.
6
+ *
7
+ * The border reflects focus (ring) and error (destructive) states. The label
8
+ * doubles as the accessibility label when none is provided, and errors are
9
+ * announced to screen readers via `accessibilityHint`.
10
+ */
11
+
12
+ import { useState } from 'react';
13
+ import { View, TextInput, StyleSheet } from 'react-native';
14
+ import type { StyleProp, ViewStyle, TextStyle, TextInputFocusEventData, NativeSyntheticEvent } from 'react-native';
15
+ import { useTheme } from '../../theme';
16
+ import { cn } from '../../utils/cn';
17
+ import { TextPrimitive } from '../../primitives/Text';
18
+ import { getInputVariants } from './Input.variants';
19
+ import { inputStyles } from './Input.styles';
20
+ import type { InputProps, InputVariant, InputSize } from './Input.types';
21
+
22
+ export function Input({
23
+ label,
24
+ hint,
25
+ error,
26
+ variant: variantProp,
27
+ size: sizeProp,
28
+ disabled = false,
29
+ style,
30
+ inputStyle,
31
+ onFocus,
32
+ onBlur,
33
+ editable,
34
+ accessibilityLabel,
35
+ accessibilityHint,
36
+ ...rest
37
+ }: InputProps) {
38
+ const { theme } = useTheme();
39
+ const [focused, setFocused] = useState(false);
40
+
41
+ const { variants, text, defaultVariants } = getInputVariants(theme);
42
+ const variant: InputVariant = variantProp ?? defaultVariants.variant;
43
+ const size: InputSize = sizeProp ?? defaultVariants.size;
44
+
45
+ const hasError = error !== undefined && error.length > 0;
46
+
47
+ // Base border color from the variant (transparent for filled/ghost).
48
+ const baseBorder =
49
+ variants.variant[variant].borderColor ?? 'transparent';
50
+
51
+ // Border reflects error > focus > base variant.
52
+ const borderColor = hasError
53
+ ? theme.colors.destructive
54
+ : focused
55
+ ? theme.colors.ring
56
+ : baseBorder;
57
+
58
+ const handleFocus = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
59
+ setFocused(true);
60
+ onFocus?.(e);
61
+ };
62
+
63
+ const handleBlur = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
64
+ setFocused(false);
65
+ onBlur?.(e);
66
+ };
67
+
68
+ const fieldStyle: StyleProp<ViewStyle> = cn(
69
+ inputStyles.field,
70
+ variants.variant[variant],
71
+ variants.size[size],
72
+ { borderColor },
73
+ disabled && { opacity: 0.5 },
74
+ style,
75
+ );
76
+
77
+ const resolvedInputStyle: StyleProp<TextStyle> = cn(
78
+ styles.input,
79
+ text[size],
80
+ { color: disabled ? theme.colors.mutedForeground : theme.colors.foreground },
81
+ inputStyle,
82
+ );
83
+
84
+ const message = hasError ? error : hint;
85
+ const messageColor = hasError ? 'destructive' : 'mutedForeground';
86
+
87
+ return (
88
+ <View style={inputStyles.container}>
89
+ {label !== undefined && (
90
+ <TextPrimitive
91
+ color={disabled ? 'mutedForeground' : 'foreground'}
92
+ fontSize="sm"
93
+ fontWeight="medium"
94
+ style={inputStyles.label}
95
+ accessibilityRole="text"
96
+ >
97
+ {label}
98
+ </TextPrimitive>
99
+ )}
100
+
101
+ <View style={fieldStyle}>
102
+ <TextInput
103
+ {...rest}
104
+ editable={editable !== undefined ? editable : !disabled}
105
+ onFocus={handleFocus}
106
+ onBlur={handleBlur}
107
+ placeholderTextColor={theme.colors.mutedForeground}
108
+ accessibilityLabel={accessibilityLabel ?? label}
109
+ accessibilityHint={accessibilityHint ?? (hasError ? error : undefined)}
110
+ accessibilityState={{ disabled }}
111
+ style={resolvedInputStyle}
112
+ />
113
+ </View>
114
+
115
+ {message !== undefined && (
116
+ <TextPrimitive
117
+ color={messageColor}
118
+ fontSize="sm"
119
+ style={inputStyles.message}
120
+ accessibilityRole={hasError ? 'alert' : 'text'}
121
+ >
122
+ {message}
123
+ </TextPrimitive>
124
+ )}
125
+ </View>
126
+ );
127
+ }
128
+
129
+ Input.displayName = 'Input';
130
+
131
+ const styles = StyleSheet.create({
132
+ input: {
133
+ padding: 0,
134
+ borderWidth: 0,
135
+ backgroundColor: 'transparent',
136
+ },
137
+ });
138
+
139
+ export type { InputProps, InputVariant, InputSize };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * ANAN-UI — Component: Input Types
3
+ *
4
+ * A labeled text input with variant/size support, focus + error states, and
5
+ * full accessibility. Built on React Native's TextInput.
6
+ */
7
+
8
+ import type { TextInputProps, StyleProp, ViewStyle, TextStyle } from 'react-native';
9
+
10
+ export type InputVariant = 'outline' | 'filled' | 'ghost';
11
+
12
+ export type InputSize = 'sm' | 'default' | 'lg';
13
+
14
+ export interface InputProps extends Omit<TextInputProps, 'style'> {
15
+ /** Visible label rendered above the field. Used as the accessibility label when none is given. */
16
+ label?: string;
17
+ /** Helper text rendered below the field (hidden when `error` is set). */
18
+ hint?: string;
19
+ /** Error message. When present the field shows the destructive border and announces the error. */
20
+ error?: string;
21
+ variant?: InputVariant;
22
+ size?: InputSize;
23
+ disabled?: boolean;
24
+ /** Style applied to the outer container (label + field + messages). */
25
+ style?: StyleProp<ViewStyle>;
26
+ /** Style applied to the underlying TextInput. */
27
+ inputStyle?: StyleProp<TextStyle>;
28
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * ANAN-UI — Component: Input Variants
3
+ *
4
+ * Variant/size style definitions resolved against the active theme at render
5
+ * time. Border/background colors are base values; focus and error states are
6
+ * layered in Input.tsx.
7
+ */
8
+
9
+ import type { TextStyle, ViewStyle } from 'react-native';
10
+ import type { Theme } from '../../theme/types';
11
+ import type { InputVariant, InputSize } from './Input.types';
12
+ import { spacing, borderRadius } from '../../design-tokens';
13
+
14
+ export interface InputVariantConfig {
15
+ variants: {
16
+ variant: Record<InputVariant, ViewStyle>;
17
+ size: Record<InputSize, ViewStyle>;
18
+ };
19
+ text: Record<InputSize, TextStyle>;
20
+ defaultVariants: { variant: InputVariant; size: InputSize };
21
+ }
22
+
23
+ export function getInputVariants(theme: Theme): InputVariantConfig {
24
+ return {
25
+ variants: {
26
+ variant: {
27
+ outline: {
28
+ borderWidth: 1,
29
+ borderColor: theme.colors.border,
30
+ backgroundColor: theme.colors.card,
31
+ },
32
+ filled: {
33
+ borderWidth: 1,
34
+ borderColor: 'transparent',
35
+ backgroundColor: theme.colors.muted,
36
+ },
37
+ ghost: {
38
+ borderWidth: 1,
39
+ borderColor: 'transparent',
40
+ backgroundColor: 'transparent',
41
+ },
42
+ },
43
+ size: {
44
+ sm: {
45
+ minHeight: 32,
46
+ paddingHorizontal: spacing[2],
47
+ paddingVertical: spacing[1],
48
+ borderRadius: borderRadius.md,
49
+ },
50
+ default: {
51
+ minHeight: 40,
52
+ paddingHorizontal: spacing[3],
53
+ paddingVertical: spacing[2],
54
+ borderRadius: borderRadius.md,
55
+ },
56
+ lg: {
57
+ minHeight: 48,
58
+ paddingHorizontal: spacing[4],
59
+ paddingVertical: spacing[3],
60
+ borderRadius: borderRadius.lg,
61
+ },
62
+ },
63
+ },
64
+ text: {
65
+ sm: { fontSize: theme.typography.fontSize.sm },
66
+ default: { fontSize: theme.typography.fontSize.base },
67
+ lg: { fontSize: theme.typography.fontSize.lg },
68
+ },
69
+ defaultVariants: { variant: 'outline', size: 'default' },
70
+ };
71
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * ANAN-UI — Component: Input Barrel Export
3
+ */
4
+
5
+ export { Input } from './Input';
6
+ export type { InputProps, InputVariant, InputSize } from './Input.types';
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ANAN-UI — Component: Separator Styles
3
+ *
4
+ * Static styles created with StyleSheet.create. The line color and thickness
5
+ * are resolved at render time in Separator.tsx.
6
+ */
7
+
8
+ import { StyleSheet } from 'react-native';
9
+
10
+ export const separatorStyles = StyleSheet.create({
11
+ base: {
12
+ flexGrow: 0,
13
+ flexShrink: 0,
14
+ },
15
+ horizontal: {
16
+ alignSelf: 'stretch',
17
+ height: 0,
18
+ },
19
+ vertical: {
20
+ alignSelf: 'stretch',
21
+ width: 0,
22
+ },
23
+ });
@@ -0,0 +1,70 @@
1
+ /**
2
+ * ANAN-UI — Component: Separator
3
+ *
4
+ * A themed divider, horizontal or vertical. The line color and thickness come
5
+ * from the design tokens/theme. Decorative by default: it is hidden from
6
+ * screen readers unless `decorative={false}` is set.
7
+ *
8
+ * `solid` lines are drawn with a background fill; `dashed`/`dotted` lines use a
9
+ * one-sided border (React Native applies `borderStyle` per-side on iOS and
10
+ * falls back to a solid line on Android).
11
+ */
12
+
13
+ import { View, StyleSheet } from 'react-native';
14
+ import { useTheme } from '../../theme';
15
+ import { cn } from '../../utils/cn';
16
+ import { separatorStyles } from './Separator.styles';
17
+ import type { SeparatorProps } from './Separator.types';
18
+
19
+ export function Separator({
20
+ orientation = 'horizontal',
21
+ variant = 'solid',
22
+ thickness = StyleSheet.hairlineWidth,
23
+ color = 'border',
24
+ decorative = true,
25
+ style,
26
+ ...rest
27
+ }: SeparatorProps) {
28
+ const { theme } = useTheme();
29
+
30
+ const lineColor = theme.colors[color];
31
+ const isHorizontal = orientation === 'horizontal';
32
+
33
+ // Solid: fill the cross axis with the line color. Dashed/dotted: use a
34
+ // one-sided border so RN can apply the dash pattern.
35
+ const lineStyle =
36
+ variant === 'solid'
37
+ ? isHorizontal
38
+ ? { height: thickness, backgroundColor: lineColor }
39
+ : { width: thickness, backgroundColor: lineColor }
40
+ : isHorizontal
41
+ ? {
42
+ height: thickness,
43
+ borderBottomWidth: thickness,
44
+ borderBottomColor: lineColor,
45
+ borderStyle: variant,
46
+ }
47
+ : {
48
+ width: thickness,
49
+ borderRightWidth: thickness,
50
+ borderRightColor: lineColor,
51
+ borderStyle: variant,
52
+ };
53
+
54
+ return (
55
+ <View
56
+ aria-hidden={decorative}
57
+ importantForAccessibility={decorative ? 'no-hide-descendants' : 'auto'}
58
+ accessibilityElementsHidden={decorative}
59
+ {...rest}
60
+ style={cn(
61
+ separatorStyles.base,
62
+ isHorizontal ? separatorStyles.horizontal : separatorStyles.vertical,
63
+ lineStyle,
64
+ style,
65
+ )}
66
+ />
67
+ );
68
+ }
69
+
70
+ Separator.displayName = 'Separator';
@@ -0,0 +1,28 @@
1
+ /**
2
+ * ANAN-UI — Component: Separator Types
3
+ *
4
+ * A divider line, horizontal or vertical, themed from the design tokens.
5
+ */
6
+
7
+ import type { ViewProps, StyleProp, ViewStyle } from 'react-native';
8
+
9
+ export type SeparatorOrientation = 'horizontal' | 'vertical';
10
+
11
+ export type SeparatorVariant = 'solid' | 'dashed' | 'dotted';
12
+
13
+ export interface SeparatorProps extends Omit<ViewProps, 'style'> {
14
+ /** Line direction. Defaults to `horizontal`. */
15
+ orientation?: SeparatorOrientation;
16
+ /** Line pattern. Defaults to `solid`. */
17
+ variant?: SeparatorVariant;
18
+ /** Line thickness in dp (a token-independent number; defaults to hairline). */
19
+ thickness?: number;
20
+ /** Semantic color role for the line. Defaults to `border`. */
21
+ color?: keyof import('../../theme/types').ThemeColors;
22
+ /**
23
+ * Whether the separator is purely decorative. Decorative separators are
24
+ * hidden from screen readers (the default). Set to `false` to expose it.
25
+ */
26
+ decorative?: boolean;
27
+ style?: StyleProp<ViewStyle>;
28
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ANAN-UI — Component: Separator Barrel Export
3
+ */
4
+
5
+ export { Separator } from './Separator';
6
+ export type {
7
+ SeparatorProps,
8
+ SeparatorOrientation,
9
+ SeparatorVariant,
10
+ } from './Separator.types';
@@ -0,0 +1,75 @@
1
+ /**
2
+ * ANAN-UI — Component: Text
3
+ *
4
+ * A semantic typography component built on top of the TextPrimitive.
5
+ * Maps a `variant` (h1..h4, body, caption, ...) to design-token font sizes,
6
+ * weights, colors and line-height ratios, resolved against the active theme.
7
+ *
8
+ * Explicit primitive props (color/fontSize/fontWeight/...) override the
9
+ * variant defaults. Headings automatically expose `accessibilityRole="header"`
10
+ * unless a role is provided.
11
+ */
12
+
13
+ import { StyleSheet } from 'react-native';
14
+ import type { StyleProp, TextStyle } from 'react-native';
15
+ import { useTheme } from '../../theme';
16
+ import { TextPrimitive } from '../../primitives/Text';
17
+ import { textVariantStyles } from './Text.variants';
18
+ import type { TextProps } from './Text.types';
19
+
20
+ const HEADING_VARIANTS = new Set(['h1', 'h2', 'h3', 'h4']);
21
+
22
+ export function Text({
23
+ variant = 'body',
24
+ color,
25
+ fontSize,
26
+ fontWeight,
27
+ lineHeight,
28
+ style,
29
+ accessibilityRole,
30
+ ...rest
31
+ }: TextProps) {
32
+ const { theme } = useTheme();
33
+
34
+ const preset = textVariantStyles[variant];
35
+
36
+ // Explicit primitive props take precedence over the variant preset.
37
+ const resolvedFontSize = fontSize ?? preset.fontSize;
38
+ const resolvedFontWeight = fontWeight ?? preset.fontWeight;
39
+ const resolvedColor = color ?? preset.color;
40
+
41
+ const sizePx = theme.typography.fontSize[resolvedFontSize];
42
+
43
+ // RN requires absolute px line-height, so the preset's ratio is multiplied
44
+ // by the resolved font size. An explicit `lineHeight` token (also a ratio)
45
+ // wins over the preset ratio.
46
+ const ratio = lineHeight !== undefined
47
+ ? theme.typography.lineHeight[lineHeight]
48
+ : preset.lineHeightRatio;
49
+
50
+ const variantStyle: StyleProp<TextStyle> = [
51
+ ratio !== undefined ? { lineHeight: Math.round(sizePx * ratio) } : null,
52
+ preset.fontFamily !== undefined
53
+ ? { fontFamily: theme.typography.fontFamily[preset.fontFamily] }
54
+ : null,
55
+ ];
56
+
57
+ const isHeading = HEADING_VARIANTS.has(variant);
58
+
59
+ return (
60
+ <TextPrimitive
61
+ {...rest}
62
+ color={resolvedColor}
63
+ fontSize={resolvedFontSize}
64
+ fontWeight={resolvedFontWeight}
65
+ accessibilityRole={
66
+ accessibilityRole ?? (isHeading ? 'header' : undefined)
67
+ }
68
+ style={StyleSheet.compose(variantStyle, style)}
69
+ />
70
+ );
71
+ }
72
+
73
+ Text.displayName = 'Text';
74
+
75
+ export type { TextProps };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ANAN-UI — Component: Text Types
3
+ *
4
+ * The public Text component composes the TextPrimitive and adds semantic
5
+ * typography presets (variants). Explicit primitive props override variant
6
+ * defaults.
7
+ */
8
+
9
+ import type { TextPrimitiveProps } from '../../primitives/Text';
10
+
11
+ export type TextVariant =
12
+ | 'h1'
13
+ | 'h2'
14
+ | 'h3'
15
+ | 'h4'
16
+ | 'bodyLg'
17
+ | 'body'
18
+ | 'bodySm'
19
+ | 'label'
20
+ | 'caption'
21
+ | 'overline'
22
+ | 'mono';
23
+
24
+ export interface TextProps extends TextPrimitiveProps {
25
+ /** Semantic typography preset. Explicit primitives props take precedence. */
26
+ variant?: TextVariant;
27
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * ANAN-UI — Component: Text Variants
3
+ *
4
+ * Static typography presets. Values are design-token references resolved at
5
+ * render time in Text.tsx via the theme context. Line heights are expressed as
6
+ * ratios of the resolved font size (RN requires absolute px, so they are
7
+ * multiplied at render).
8
+ */
9
+
10
+ import type { FontSize, FontWeight } from '../../design-tokens/typography';
11
+ import type { ThemeColors } from '../../theme/types';
12
+ import type { TextVariant } from './Text.types';
13
+ import { letterSpacing } from '../../design-tokens';
14
+
15
+ export interface TextVariantStyle {
16
+ fontSize: FontSize;
17
+ fontWeight: FontWeight;
18
+ /** Line height as a ratio of font size (e.g. 1.5). */
19
+ lineHeightRatio?: number;
20
+ /** Default semantic color role (overridable via the `color` prop). */
21
+ color?: keyof ThemeColors;
22
+ fontFamily?: 'sans' | 'mono';
23
+ letterSpacing?: number;
24
+ }
25
+
26
+ export const textVariantStyles: Record<TextVariant, TextVariantStyle> = {
27
+ h1: { fontSize: '3xl', fontWeight: 'bold', lineHeightRatio: 1.2, color: 'foreground' },
28
+ h2: { fontSize: '2xl', fontWeight: 'bold', lineHeightRatio: 1.25, color: 'foreground' },
29
+ h3: { fontSize: 'xl', fontWeight: 'semibold', lineHeightRatio: 1.3, color: 'foreground' },
30
+ h4: { fontSize: 'lg', fontWeight: 'semibold', lineHeightRatio: 1.4, color: 'foreground' },
31
+ bodyLg: { fontSize: 'lg', fontWeight: 'normal', lineHeightRatio: 1.5, color: 'foreground' },
32
+ body: { fontSize: 'base', fontWeight: 'normal', lineHeightRatio: 1.5, color: 'foreground' },
33
+ bodySm: { fontSize: 'sm', fontWeight: 'normal', lineHeightRatio: 1.5, color: 'foreground' },
34
+ label: { fontSize: 'sm', fontWeight: 'medium', lineHeightRatio: 1.4, color: 'foreground' },
35
+ caption: { fontSize: 'xs', fontWeight: 'normal', lineHeightRatio: 1.4, color: 'mutedForeground' },
36
+ overline: {
37
+ fontSize: 'xs',
38
+ fontWeight: 'semibold',
39
+ lineHeightRatio: 1.4,
40
+ color: 'mutedForeground',
41
+ letterSpacing: letterSpacing.wider,
42
+ },
43
+ mono: { fontSize: 'sm', fontWeight: 'normal', lineHeightRatio: 1.5, color: 'foreground', fontFamily: 'mono' },
44
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * ANAN-UI — Component: Text Barrel Export
3
+ */
4
+
5
+ export { Text } from './Text';
6
+ export type { TextProps, TextVariant } from './Text.types';
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ANAN-UI — Design Tokens: Animation
3
+ */
4
+
5
+ export const animation = {
6
+ duration: {
7
+ instant: 0,
8
+ fast: 150,
9
+ normal: 300,
10
+ slow: 500,
11
+ slower: 750,
12
+ } as const,
13
+ easing: {
14
+ linear: 'linear',
15
+ easeIn: 'ease-in',
16
+ easeOut: 'ease-out',
17
+ easeInOut: 'ease-in-out',
18
+ bounce: 'ease-in-out',
19
+ } as const,
20
+ } as const;
21
+
22
+ export type AnimationDuration = keyof typeof animation.duration;
23
+ export type AnimationEasing = keyof typeof animation.easing;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ANAN-UI — Design Tokens: Border Radius
3
+ */
4
+
5
+ export const borderRadius = {
6
+ none: 0,
7
+ sm: 4,
8
+ md: 6,
9
+ lg: 8,
10
+ xl: 12,
11
+ '2xl': 16,
12
+ '3xl': 24,
13
+ full: 9999,
14
+ } as const;
15
+
16
+ export type BorderRadius = keyof typeof borderRadius;