@oxyhq/bloom 0.6.24 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. package/lib/commonjs/alert-dialog/AlertDialog.js +109 -0
  2. package/lib/commonjs/alert-dialog/AlertDialog.js.map +1 -0
  3. package/lib/commonjs/alert-dialog/AlertDialogHost.js +50 -0
  4. package/lib/commonjs/alert-dialog/AlertDialogHost.js.map +1 -0
  5. package/lib/commonjs/alert-dialog/confirm-store.js +80 -0
  6. package/lib/commonjs/alert-dialog/confirm-store.js.map +1 -0
  7. package/lib/commonjs/alert-dialog/index.js +19 -0
  8. package/lib/commonjs/alert-dialog/index.js.map +1 -0
  9. package/lib/commonjs/alert-dialog/index.web.js +19 -0
  10. package/lib/commonjs/alert-dialog/index.web.js.map +1 -0
  11. package/lib/commonjs/alert-dialog/types.js +6 -0
  12. package/lib/commonjs/alert-dialog/types.js.map +1 -0
  13. package/lib/commonjs/combobox/Combobox.js +227 -0
  14. package/lib/commonjs/combobox/Combobox.js.map +1 -0
  15. package/lib/commonjs/combobox/index.js +11 -0
  16. package/lib/commonjs/combobox/index.js.map +1 -0
  17. package/lib/commonjs/combobox/index.web.js +11 -0
  18. package/lib/commonjs/combobox/index.web.js.map +1 -0
  19. package/lib/commonjs/combobox/types.js +6 -0
  20. package/lib/commonjs/combobox/types.js.map +1 -0
  21. package/lib/commonjs/command/Command.js +256 -0
  22. package/lib/commonjs/command/Command.js.map +1 -0
  23. package/lib/commonjs/command/index.js +10 -0
  24. package/lib/commonjs/command/index.js.map +1 -0
  25. package/lib/commonjs/command/index.web.js +10 -0
  26. package/lib/commonjs/command/index.web.js.map +1 -0
  27. package/lib/commonjs/command/types.js +6 -0
  28. package/lib/commonjs/command/types.js.map +1 -0
  29. package/lib/commonjs/field/Field.js +68 -0
  30. package/lib/commonjs/field/Field.js.map +1 -0
  31. package/lib/commonjs/field/index.js +13 -0
  32. package/lib/commonjs/field/index.js.map +1 -0
  33. package/lib/commonjs/field/types.js +6 -0
  34. package/lib/commonjs/field/types.js.map +1 -0
  35. package/lib/commonjs/index.js +117 -25
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/commonjs/index.web.js +117 -25
  38. package/lib/commonjs/index.web.js.map +1 -1
  39. package/lib/commonjs/input-group/InputGroup.js +172 -0
  40. package/lib/commonjs/input-group/InputGroup.js.map +1 -0
  41. package/lib/commonjs/input-group/index.js +19 -0
  42. package/lib/commonjs/input-group/index.js.map +1 -0
  43. package/lib/commonjs/input-group/types.js +6 -0
  44. package/lib/commonjs/input-group/types.js.map +1 -0
  45. package/lib/commonjs/item/Item.js +172 -0
  46. package/lib/commonjs/item/Item.js.map +1 -0
  47. package/lib/commonjs/item/index.js +13 -0
  48. package/lib/commonjs/item/index.js.map +1 -0
  49. package/lib/commonjs/item/types.js +6 -0
  50. package/lib/commonjs/item/types.js.map +1 -0
  51. package/lib/commonjs/kbd/Kbd.js +79 -0
  52. package/lib/commonjs/kbd/Kbd.js.map +1 -0
  53. package/lib/commonjs/kbd/index.js +13 -0
  54. package/lib/commonjs/kbd/index.js.map +1 -0
  55. package/lib/commonjs/kbd/types.js +6 -0
  56. package/lib/commonjs/kbd/types.js.map +1 -0
  57. package/lib/commonjs/label/Label.js +60 -0
  58. package/lib/commonjs/label/Label.js.map +1 -0
  59. package/lib/commonjs/label/index.js +13 -0
  60. package/lib/commonjs/label/index.js.map +1 -0
  61. package/lib/commonjs/label/types.js +6 -0
  62. package/lib/commonjs/label/types.js.map +1 -0
  63. package/lib/commonjs/popover/context.js +18 -0
  64. package/lib/commonjs/popover/context.js.map +1 -0
  65. package/lib/commonjs/popover/index.js +111 -0
  66. package/lib/commonjs/popover/index.js.map +1 -0
  67. package/lib/commonjs/popover/index.web.js +286 -0
  68. package/lib/commonjs/popover/index.web.js.map +1 -0
  69. package/lib/commonjs/popover/types.js +6 -0
  70. package/lib/commonjs/popover/types.js.map +1 -0
  71. package/lib/commonjs/react-native-css.d.js +2 -0
  72. package/lib/commonjs/react-native-css.d.js.map +1 -0
  73. package/lib/commonjs/slider/Slider.js +255 -0
  74. package/lib/commonjs/slider/Slider.js.map +1 -0
  75. package/lib/commonjs/slider/index.js +13 -0
  76. package/lib/commonjs/slider/index.js.map +1 -0
  77. package/lib/commonjs/slider/types.js +6 -0
  78. package/lib/commonjs/slider/types.js.map +1 -0
  79. package/lib/commonjs/theme/BloomThemeProvider.js +39 -7
  80. package/lib/commonjs/theme/BloomThemeProvider.js.map +1 -1
  81. package/lib/commonjs/theme/color-presets.js +118 -118
  82. package/lib/commonjs/theme/color-presets.js.map +1 -1
  83. package/lib/commonjs/theme/color-scope/index.js +28 -6
  84. package/lib/commonjs/theme/color-scope/index.js.map +1 -1
  85. package/lib/commonjs/theme/color-scope/style-builder.js +35 -0
  86. package/lib/commonjs/theme/color-scope/style-builder.js.map +1 -1
  87. package/lib/commonjs/theme/native-root-vars.js +105 -0
  88. package/lib/commonjs/theme/native-root-vars.js.map +1 -0
  89. package/lib/commonjs/theme/native-root-vars.web.js +27 -0
  90. package/lib/commonjs/theme/native-root-vars.web.js.map +1 -0
  91. package/lib/commonjs/theme/preset-vars.js +4 -1
  92. package/lib/commonjs/theme/preset-vars.js.map +1 -1
  93. package/lib/module/alert-dialog/AlertDialog.js +104 -0
  94. package/lib/module/alert-dialog/AlertDialog.js.map +1 -0
  95. package/lib/module/alert-dialog/AlertDialogHost.js +45 -0
  96. package/lib/module/alert-dialog/AlertDialogHost.js.map +1 -0
  97. package/lib/module/alert-dialog/confirm-store.js +73 -0
  98. package/lib/module/alert-dialog/confirm-store.js.map +1 -0
  99. package/lib/module/alert-dialog/index.js +9 -0
  100. package/lib/module/alert-dialog/index.js.map +1 -0
  101. package/lib/module/alert-dialog/index.web.js +9 -0
  102. package/lib/module/alert-dialog/index.web.js.map +1 -0
  103. package/lib/module/alert-dialog/types.js +4 -0
  104. package/lib/module/alert-dialog/types.js.map +1 -0
  105. package/lib/module/combobox/Combobox.js +222 -0
  106. package/lib/module/combobox/Combobox.js.map +1 -0
  107. package/lib/module/combobox/index.js +6 -0
  108. package/lib/module/combobox/index.js.map +1 -0
  109. package/lib/module/combobox/index.web.js +6 -0
  110. package/lib/module/combobox/index.web.js.map +1 -0
  111. package/lib/module/combobox/types.js +4 -0
  112. package/lib/module/combobox/types.js.map +1 -0
  113. package/lib/module/command/Command.js +251 -0
  114. package/lib/module/command/Command.js.map +1 -0
  115. package/lib/module/command/index.js +6 -0
  116. package/lib/module/command/index.js.map +1 -0
  117. package/lib/module/command/index.web.js +6 -0
  118. package/lib/module/command/index.web.js.map +1 -0
  119. package/lib/module/command/types.js +4 -0
  120. package/lib/module/command/types.js.map +1 -0
  121. package/lib/module/field/Field.js +63 -0
  122. package/lib/module/field/Field.js.map +1 -0
  123. package/lib/module/field/index.js +4 -0
  124. package/lib/module/field/index.js.map +1 -0
  125. package/lib/module/field/types.js +4 -0
  126. package/lib/module/field/types.js.map +1 -0
  127. package/lib/module/index.js +10 -3
  128. package/lib/module/index.js.map +1 -1
  129. package/lib/module/index.web.js +10 -3
  130. package/lib/module/index.web.js.map +1 -1
  131. package/lib/module/input-group/InputGroup.js +167 -0
  132. package/lib/module/input-group/InputGroup.js.map +1 -0
  133. package/lib/module/input-group/index.js +4 -0
  134. package/lib/module/input-group/index.js.map +1 -0
  135. package/lib/module/input-group/types.js +4 -0
  136. package/lib/module/input-group/types.js.map +1 -0
  137. package/lib/module/item/Item.js +167 -0
  138. package/lib/module/item/Item.js.map +1 -0
  139. package/lib/module/item/index.js +4 -0
  140. package/lib/module/item/index.js.map +1 -0
  141. package/lib/module/item/types.js +4 -0
  142. package/lib/module/item/types.js.map +1 -0
  143. package/lib/module/kbd/Kbd.js +74 -0
  144. package/lib/module/kbd/Kbd.js.map +1 -0
  145. package/lib/module/kbd/index.js +4 -0
  146. package/lib/module/kbd/index.js.map +1 -0
  147. package/lib/module/kbd/types.js +4 -0
  148. package/lib/module/kbd/types.js.map +1 -0
  149. package/lib/module/label/Label.js +55 -0
  150. package/lib/module/label/Label.js.map +1 -0
  151. package/lib/module/label/index.js +4 -0
  152. package/lib/module/label/index.js.map +1 -0
  153. package/lib/module/label/types.js +4 -0
  154. package/lib/module/label/types.js.map +1 -0
  155. package/lib/module/popover/context.js +13 -0
  156. package/lib/module/popover/context.js.map +1 -0
  157. package/lib/module/popover/index.js +95 -0
  158. package/lib/module/popover/index.js.map +1 -0
  159. package/lib/module/popover/index.web.js +274 -0
  160. package/lib/module/popover/index.web.js.map +1 -0
  161. package/lib/module/popover/types.js +4 -0
  162. package/lib/module/popover/types.js.map +1 -0
  163. package/lib/module/react-native-css.d.js +2 -0
  164. package/lib/module/react-native-css.d.js.map +1 -0
  165. package/lib/module/slider/Slider.js +250 -0
  166. package/lib/module/slider/Slider.js.map +1 -0
  167. package/lib/module/slider/index.js +4 -0
  168. package/lib/module/slider/index.js.map +1 -0
  169. package/lib/module/slider/types.js +4 -0
  170. package/lib/module/slider/types.js.map +1 -0
  171. package/lib/module/theme/BloomThemeProvider.js +40 -8
  172. package/lib/module/theme/BloomThemeProvider.js.map +1 -1
  173. package/lib/module/theme/color-presets.js +118 -118
  174. package/lib/module/theme/color-presets.js.map +1 -1
  175. package/lib/module/theme/color-scope/index.js +29 -7
  176. package/lib/module/theme/color-scope/index.js.map +1 -1
  177. package/lib/module/theme/color-scope/style-builder.js +35 -0
  178. package/lib/module/theme/color-scope/style-builder.js.map +1 -1
  179. package/lib/module/theme/native-root-vars.js +101 -0
  180. package/lib/module/theme/native-root-vars.js.map +1 -0
  181. package/lib/module/theme/native-root-vars.web.js +23 -0
  182. package/lib/module/theme/native-root-vars.web.js.map +1 -0
  183. package/lib/module/theme/preset-vars.js +4 -1
  184. package/lib/module/theme/preset-vars.js.map +1 -1
  185. package/lib/typescript/commonjs/alert-dialog/AlertDialog.d.ts +21 -0
  186. package/lib/typescript/commonjs/alert-dialog/AlertDialog.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/alert-dialog/AlertDialogHost.d.ts +15 -0
  188. package/lib/typescript/commonjs/alert-dialog/AlertDialogHost.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/alert-dialog/confirm-store.d.ts +31 -0
  190. package/lib/typescript/commonjs/alert-dialog/confirm-store.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/alert-dialog/index.d.ts +8 -0
  192. package/lib/typescript/commonjs/alert-dialog/index.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/alert-dialog/index.web.d.ts +8 -0
  194. package/lib/typescript/commonjs/alert-dialog/index.web.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/alert-dialog/types.d.ts +44 -0
  196. package/lib/typescript/commonjs/alert-dialog/types.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/combobox/Combobox.d.ts +33 -0
  198. package/lib/typescript/commonjs/combobox/Combobox.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/combobox/index.d.ts +6 -0
  200. package/lib/typescript/commonjs/combobox/index.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/combobox/index.web.d.ts +6 -0
  202. package/lib/typescript/commonjs/combobox/index.web.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/combobox/types.d.ts +40 -0
  204. package/lib/typescript/commonjs/combobox/types.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/command/Command.d.ts +22 -0
  206. package/lib/typescript/commonjs/command/Command.d.ts.map +1 -0
  207. package/lib/typescript/commonjs/command/index.d.ts +6 -0
  208. package/lib/typescript/commonjs/command/index.d.ts.map +1 -0
  209. package/lib/typescript/commonjs/command/index.web.d.ts +6 -0
  210. package/lib/typescript/commonjs/command/index.web.d.ts.map +1 -0
  211. package/lib/typescript/commonjs/command/types.d.ts +46 -0
  212. package/lib/typescript/commonjs/command/types.d.ts.map +1 -0
  213. package/lib/typescript/commonjs/field/Field.d.ts +4 -0
  214. package/lib/typescript/commonjs/field/Field.d.ts.map +1 -0
  215. package/lib/typescript/commonjs/field/index.d.ts +3 -0
  216. package/lib/typescript/commonjs/field/index.d.ts.map +1 -0
  217. package/lib/typescript/commonjs/field/types.d.ts +26 -0
  218. package/lib/typescript/commonjs/field/types.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/icons/common.d.ts +8 -8
  220. package/lib/typescript/commonjs/index.d.ts +19 -0
  221. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  222. package/lib/typescript/commonjs/index.web.d.ts +19 -0
  223. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  224. package/lib/typescript/commonjs/input-group/InputGroup.d.ts +9 -0
  225. package/lib/typescript/commonjs/input-group/InputGroup.d.ts.map +1 -0
  226. package/lib/typescript/commonjs/input-group/index.d.ts +3 -0
  227. package/lib/typescript/commonjs/input-group/index.d.ts.map +1 -0
  228. package/lib/typescript/commonjs/input-group/types.d.ts +35 -0
  229. package/lib/typescript/commonjs/input-group/types.d.ts.map +1 -0
  230. package/lib/typescript/commonjs/item/Item.d.ts +4 -0
  231. package/lib/typescript/commonjs/item/Item.d.ts.map +1 -0
  232. package/lib/typescript/commonjs/item/index.d.ts +3 -0
  233. package/lib/typescript/commonjs/item/index.d.ts.map +1 -0
  234. package/lib/typescript/commonjs/item/types.d.ts +45 -0
  235. package/lib/typescript/commonjs/item/types.d.ts.map +1 -0
  236. package/lib/typescript/commonjs/kbd/Kbd.d.ts +4 -0
  237. package/lib/typescript/commonjs/kbd/Kbd.d.ts.map +1 -0
  238. package/lib/typescript/commonjs/kbd/index.d.ts +3 -0
  239. package/lib/typescript/commonjs/kbd/index.d.ts.map +1 -0
  240. package/lib/typescript/commonjs/kbd/types.d.ts +13 -0
  241. package/lib/typescript/commonjs/kbd/types.d.ts.map +1 -0
  242. package/lib/typescript/commonjs/label/Label.d.ts +4 -0
  243. package/lib/typescript/commonjs/label/Label.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/label/index.d.ts +3 -0
  245. package/lib/typescript/commonjs/label/index.d.ts.map +1 -0
  246. package/lib/typescript/commonjs/label/types.d.ts +27 -0
  247. package/lib/typescript/commonjs/label/types.d.ts.map +1 -0
  248. package/lib/typescript/commonjs/popover/context.d.ts +15 -0
  249. package/lib/typescript/commonjs/popover/context.d.ts.map +1 -0
  250. package/lib/typescript/commonjs/popover/index.d.ts +14 -0
  251. package/lib/typescript/commonjs/popover/index.d.ts.map +1 -0
  252. package/lib/typescript/commonjs/popover/index.web.d.ts +14 -0
  253. package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -0
  254. package/lib/typescript/commonjs/popover/types.d.ts +54 -0
  255. package/lib/typescript/commonjs/popover/types.d.ts.map +1 -0
  256. package/lib/typescript/commonjs/slider/Slider.d.ts +4 -0
  257. package/lib/typescript/commonjs/slider/Slider.d.ts.map +1 -0
  258. package/lib/typescript/commonjs/slider/index.d.ts +3 -0
  259. package/lib/typescript/commonjs/slider/index.d.ts.map +1 -0
  260. package/lib/typescript/commonjs/slider/types.d.ts +30 -0
  261. package/lib/typescript/commonjs/slider/types.d.ts.map +1 -0
  262. package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts.map +1 -1
  263. package/lib/typescript/commonjs/theme/color-scope/index.d.ts +9 -2
  264. package/lib/typescript/commonjs/theme/color-scope/index.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts +32 -0
  266. package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts.map +1 -1
  267. package/lib/typescript/commonjs/theme/native-root-vars.d.ts +89 -0
  268. package/lib/typescript/commonjs/theme/native-root-vars.d.ts.map +1 -0
  269. package/lib/typescript/commonjs/theme/native-root-vars.web.d.ts +20 -0
  270. package/lib/typescript/commonjs/theme/native-root-vars.web.d.ts.map +1 -0
  271. package/lib/typescript/commonjs/theme/preset-vars.d.ts.map +1 -1
  272. package/lib/typescript/module/alert-dialog/AlertDialog.d.ts +21 -0
  273. package/lib/typescript/module/alert-dialog/AlertDialog.d.ts.map +1 -0
  274. package/lib/typescript/module/alert-dialog/AlertDialogHost.d.ts +15 -0
  275. package/lib/typescript/module/alert-dialog/AlertDialogHost.d.ts.map +1 -0
  276. package/lib/typescript/module/alert-dialog/confirm-store.d.ts +31 -0
  277. package/lib/typescript/module/alert-dialog/confirm-store.d.ts.map +1 -0
  278. package/lib/typescript/module/alert-dialog/index.d.ts +8 -0
  279. package/lib/typescript/module/alert-dialog/index.d.ts.map +1 -0
  280. package/lib/typescript/module/alert-dialog/index.web.d.ts +8 -0
  281. package/lib/typescript/module/alert-dialog/index.web.d.ts.map +1 -0
  282. package/lib/typescript/module/alert-dialog/types.d.ts +44 -0
  283. package/lib/typescript/module/alert-dialog/types.d.ts.map +1 -0
  284. package/lib/typescript/module/combobox/Combobox.d.ts +33 -0
  285. package/lib/typescript/module/combobox/Combobox.d.ts.map +1 -0
  286. package/lib/typescript/module/combobox/index.d.ts +6 -0
  287. package/lib/typescript/module/combobox/index.d.ts.map +1 -0
  288. package/lib/typescript/module/combobox/index.web.d.ts +6 -0
  289. package/lib/typescript/module/combobox/index.web.d.ts.map +1 -0
  290. package/lib/typescript/module/combobox/types.d.ts +40 -0
  291. package/lib/typescript/module/combobox/types.d.ts.map +1 -0
  292. package/lib/typescript/module/command/Command.d.ts +22 -0
  293. package/lib/typescript/module/command/Command.d.ts.map +1 -0
  294. package/lib/typescript/module/command/index.d.ts +6 -0
  295. package/lib/typescript/module/command/index.d.ts.map +1 -0
  296. package/lib/typescript/module/command/index.web.d.ts +6 -0
  297. package/lib/typescript/module/command/index.web.d.ts.map +1 -0
  298. package/lib/typescript/module/command/types.d.ts +46 -0
  299. package/lib/typescript/module/command/types.d.ts.map +1 -0
  300. package/lib/typescript/module/field/Field.d.ts +4 -0
  301. package/lib/typescript/module/field/Field.d.ts.map +1 -0
  302. package/lib/typescript/module/field/index.d.ts +3 -0
  303. package/lib/typescript/module/field/index.d.ts.map +1 -0
  304. package/lib/typescript/module/field/types.d.ts +26 -0
  305. package/lib/typescript/module/field/types.d.ts.map +1 -0
  306. package/lib/typescript/module/icons/common.d.ts +8 -8
  307. package/lib/typescript/module/index.d.ts +19 -0
  308. package/lib/typescript/module/index.d.ts.map +1 -1
  309. package/lib/typescript/module/index.web.d.ts +19 -0
  310. package/lib/typescript/module/index.web.d.ts.map +1 -1
  311. package/lib/typescript/module/input-group/InputGroup.d.ts +9 -0
  312. package/lib/typescript/module/input-group/InputGroup.d.ts.map +1 -0
  313. package/lib/typescript/module/input-group/index.d.ts +3 -0
  314. package/lib/typescript/module/input-group/index.d.ts.map +1 -0
  315. package/lib/typescript/module/input-group/types.d.ts +35 -0
  316. package/lib/typescript/module/input-group/types.d.ts.map +1 -0
  317. package/lib/typescript/module/item/Item.d.ts +4 -0
  318. package/lib/typescript/module/item/Item.d.ts.map +1 -0
  319. package/lib/typescript/module/item/index.d.ts +3 -0
  320. package/lib/typescript/module/item/index.d.ts.map +1 -0
  321. package/lib/typescript/module/item/types.d.ts +45 -0
  322. package/lib/typescript/module/item/types.d.ts.map +1 -0
  323. package/lib/typescript/module/kbd/Kbd.d.ts +4 -0
  324. package/lib/typescript/module/kbd/Kbd.d.ts.map +1 -0
  325. package/lib/typescript/module/kbd/index.d.ts +3 -0
  326. package/lib/typescript/module/kbd/index.d.ts.map +1 -0
  327. package/lib/typescript/module/kbd/types.d.ts +13 -0
  328. package/lib/typescript/module/kbd/types.d.ts.map +1 -0
  329. package/lib/typescript/module/label/Label.d.ts +4 -0
  330. package/lib/typescript/module/label/Label.d.ts.map +1 -0
  331. package/lib/typescript/module/label/index.d.ts +3 -0
  332. package/lib/typescript/module/label/index.d.ts.map +1 -0
  333. package/lib/typescript/module/label/types.d.ts +27 -0
  334. package/lib/typescript/module/label/types.d.ts.map +1 -0
  335. package/lib/typescript/module/popover/context.d.ts +15 -0
  336. package/lib/typescript/module/popover/context.d.ts.map +1 -0
  337. package/lib/typescript/module/popover/index.d.ts +14 -0
  338. package/lib/typescript/module/popover/index.d.ts.map +1 -0
  339. package/lib/typescript/module/popover/index.web.d.ts +14 -0
  340. package/lib/typescript/module/popover/index.web.d.ts.map +1 -0
  341. package/lib/typescript/module/popover/types.d.ts +54 -0
  342. package/lib/typescript/module/popover/types.d.ts.map +1 -0
  343. package/lib/typescript/module/slider/Slider.d.ts +4 -0
  344. package/lib/typescript/module/slider/Slider.d.ts.map +1 -0
  345. package/lib/typescript/module/slider/index.d.ts +3 -0
  346. package/lib/typescript/module/slider/index.d.ts.map +1 -0
  347. package/lib/typescript/module/slider/types.d.ts +30 -0
  348. package/lib/typescript/module/slider/types.d.ts.map +1 -0
  349. package/lib/typescript/module/theme/BloomThemeProvider.d.ts.map +1 -1
  350. package/lib/typescript/module/theme/color-scope/index.d.ts +9 -2
  351. package/lib/typescript/module/theme/color-scope/index.d.ts.map +1 -1
  352. package/lib/typescript/module/theme/color-scope/style-builder.d.ts +32 -0
  353. package/lib/typescript/module/theme/color-scope/style-builder.d.ts.map +1 -1
  354. package/lib/typescript/module/theme/native-root-vars.d.ts +89 -0
  355. package/lib/typescript/module/theme/native-root-vars.d.ts.map +1 -0
  356. package/lib/typescript/module/theme/native-root-vars.web.d.ts +20 -0
  357. package/lib/typescript/module/theme/native-root-vars.web.d.ts.map +1 -0
  358. package/lib/typescript/module/theme/preset-vars.d.ts.map +1 -1
  359. package/package.json +141 -1
  360. package/src/__tests__/Field.test.tsx +55 -0
  361. package/src/__tests__/InputGroup.test.tsx +44 -0
  362. package/src/__tests__/Item.test.tsx +73 -0
  363. package/src/__tests__/Kbd.test.tsx +27 -0
  364. package/src/__tests__/Label.test.tsx +30 -0
  365. package/src/__tests__/Slider.test.tsx +38 -0
  366. package/src/__tests__/confirm-store.test.ts +58 -0
  367. package/src/__tests__/native-root-vars.test.ts +125 -0
  368. package/src/alert-dialog/AlertDialog.stories.tsx +61 -0
  369. package/src/alert-dialog/AlertDialog.tsx +120 -0
  370. package/src/alert-dialog/AlertDialogHost.tsx +51 -0
  371. package/src/alert-dialog/confirm-store.ts +77 -0
  372. package/src/alert-dialog/index.ts +13 -0
  373. package/src/alert-dialog/index.web.ts +13 -0
  374. package/src/alert-dialog/types.ts +46 -0
  375. package/src/combobox/Combobox.stories.tsx +40 -0
  376. package/src/combobox/Combobox.tsx +274 -0
  377. package/src/combobox/index.ts +6 -0
  378. package/src/combobox/index.web.ts +6 -0
  379. package/src/combobox/types.ts +41 -0
  380. package/src/command/Command.stories.tsx +60 -0
  381. package/src/command/Command.tsx +276 -0
  382. package/src/command/index.ts +6 -0
  383. package/src/command/index.web.ts +6 -0
  384. package/src/command/types.ts +47 -0
  385. package/src/field/Field.stories.tsx +54 -0
  386. package/src/field/Field.tsx +77 -0
  387. package/src/field/index.ts +2 -0
  388. package/src/field/types.ts +26 -0
  389. package/src/index.ts +23 -0
  390. package/src/index.web.ts +23 -0
  391. package/src/input-group/InputGroup.stories.tsx +65 -0
  392. package/src/input-group/InputGroup.tsx +184 -0
  393. package/src/input-group/index.ts +2 -0
  394. package/src/input-group/types.ts +36 -0
  395. package/src/item/Item.stories.tsx +43 -0
  396. package/src/item/Item.tsx +180 -0
  397. package/src/item/index.ts +2 -0
  398. package/src/item/types.ts +45 -0
  399. package/src/kbd/Kbd.stories.tsx +36 -0
  400. package/src/kbd/Kbd.tsx +76 -0
  401. package/src/kbd/index.ts +2 -0
  402. package/src/kbd/types.ts +13 -0
  403. package/src/label/Label.stories.tsx +32 -0
  404. package/src/label/Label.tsx +64 -0
  405. package/src/label/index.ts +2 -0
  406. package/src/label/types.ts +27 -0
  407. package/src/popover/Popover.stories.tsx +61 -0
  408. package/src/popover/context.ts +26 -0
  409. package/src/popover/index.tsx +104 -0
  410. package/src/popover/index.web.tsx +325 -0
  411. package/src/popover/types.ts +60 -0
  412. package/src/react-native-css.d.ts +69 -0
  413. package/src/slider/Slider.stories.tsx +46 -0
  414. package/src/slider/Slider.tsx +275 -0
  415. package/src/slider/index.ts +2 -0
  416. package/src/slider/types.ts +30 -0
  417. package/src/theme/BloomThemeProvider.tsx +32 -6
  418. package/src/theme/color-presets.ts +118 -118
  419. package/src/theme/color-scope/index.tsx +30 -8
  420. package/src/theme/color-scope/style-builder.ts +40 -0
  421. package/src/theme/native-root-vars.ts +102 -0
  422. package/src/theme/native-root-vars.web.ts +22 -0
  423. package/src/theme/preset-vars.ts +4 -1
@@ -1,16 +1,48 @@
1
+ import type React from 'react';
1
2
  import { type StyleProp, type ViewStyle } from 'react-native';
2
3
  import type { AppColorName } from '../color-presets';
4
+ /**
5
+ * Component that provides inline CSS variables to a subtree via NativeWind's
6
+ * (react-native-css's) real `VariableContext`. The runtime strips the leading
7
+ * `--` from each key internally, so we feed it the full `--name -> value`
8
+ * record produced by `buildScopeVars`.
9
+ */
10
+ export type VariableContextProviderComponent = React.ComponentType<{
11
+ value: Record<string, string>;
12
+ children: React.ReactNode;
13
+ }>;
3
14
  /**
4
15
  * Build the CSS custom-property map for a preset, ready to be applied to a
5
16
  * subtree. Always includes the resolved `--color-*` vars so Tailwind v4
6
17
  * `@theme` utilities (e.g. `bg-background`) honour the scope.
7
18
  */
8
19
  export declare function buildScopeVars(colorPreset: AppColorName, mode: 'light' | 'dark'): Record<string, string>;
20
+ /**
21
+ * Resolve NativeWind's `VariableContextProvider` — the canonical, non-deprecated
22
+ * react-native-css v3 API for providing inline CSS variables to a subtree. It
23
+ * reads the same `VariableContext` that interop className components consume, so
24
+ * descendants resolve `var(--primary)` etc. correctly. Returns `null` on web or
25
+ * when `nativewind` is not installed.
26
+ *
27
+ * This replaces the deprecated `vars()`-on-a-plain-`<View>`-style mechanism:
28
+ * under react-native-css@3, `vars()` returns an inline-vars marker that is only
29
+ * propagated to children when the host element matches className style rules
30
+ * (`usesVariables`/`variables`). A plain `<View>` with no `className` drops the
31
+ * vars silently, so the subtree renders without the preset palette.
32
+ */
33
+ export declare function getVariableContextProvider(): VariableContextProviderComponent | null;
9
34
  /**
10
35
  * Build a native style object carrying every CSS var of the preset, using
11
36
  * NativeWind's `vars()` when available. Returns `undefined` on web (where the
12
37
  * provider writes vars to `documentElement` instead) or when `nativewind` is
13
38
  * not installed.
39
+ *
40
+ * @deprecated Under react-native-css@3, `vars()` only propagates to a subtree
41
+ * when applied to an interop className component (the runtime gates propagation
42
+ * on matched className style rules). Applied to a plain `<View>` the vars are
43
+ * dropped silently. Prefer wrapping children in `getVariableContextProvider()`.
44
+ * Retained only as the escape-hatch contract of `useColorScopeStyle`, where the
45
+ * caller owns the host element and is expected to be a className component.
14
46
  */
15
47
  export declare function buildNativePresetStyle(colorPreset: AppColorName, mode: 'light' | 'dark'): StyleProp<ViewStyle>;
16
48
  //# sourceMappingURL=style-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style-builder.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/style-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,YAAY,EACzB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,YAAY,EACzB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,SAAS,CAAC,SAAS,CAAC,CAKtB"}
1
+ {"version":3,"file":"style-builder.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/style-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;;;;GAKG;AACH,MAAM,MAAM,gCAAgC,GAAG,KAAK,CAAC,aAAa,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC,CAAC;AASH;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,YAAY,EACzB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,IAAI,gCAAgC,GAAG,IAAI,CAKpF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,YAAY,EACzB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,SAAS,CAAC,SAAS,CAAC,CAKtB"}
@@ -0,0 +1,89 @@
1
+ import { type AppColorName } from './color-presets';
2
+ /**
3
+ * Publish the active color preset's CSS custom properties into react-native-css's
4
+ * GLOBAL root-variable family so they reach the ENTIRE native app tree — including
5
+ * content rendered outside the React subtree of `BloomThemeProvider`: expo-router
6
+ * navigator screens, `Portal`s, `Dialog`/`BottomSheet` overlays, and any other host
7
+ * that paints through a separate React root.
8
+ *
9
+ * Why a global write is required (native only)
10
+ * --------------------------------------------
11
+ * react-native-css resolves a `var(--x)` reference (its `varResolver`) in this order:
12
+ * 1. `name in inheritedVariables` — the React-context-inherited vars. This is what
13
+ * `VariableContextProvider` populates, but it is React-context-scoped, so it only
14
+ * reaches *direct descendants* of the provider in the React tree.
15
+ * 2. `inlineVariables[name]` — same-component inline vars.
16
+ * 3. `variables[name]` — resolved inherited vars.
17
+ * 4. `universalVariables(name)` — a GLOBAL observable family.
18
+ * 5. `rootVariables(name)` — a GLOBAL observable family.
19
+ * 6. the declared fallback.
20
+ *
21
+ * `BloomThemeProvider`'s `VariableContextProvider` only feeds path #1, so the navigator
22
+ * host and every portal/modal — which render outside that subtree — never see the
23
+ * preset vars and fall through to `rootVariables`/`universalVariables`. By default those
24
+ * families hold only react-native-css's own `__rn-css-rem`/`__rn-css-color` entries
25
+ * (Bloom's `global.css` defines the `hsl(var(--primary))` indirection but not the HSL
26
+ * triples themselves — those are injected at runtime), so the whole tree below the
27
+ * navigator renders monochrome. Writing the triples into `rootVariables` here is the
28
+ * exact same mechanism react-native-css uses for compiled `:root {}` / `@theme` vars
29
+ * (`StyleCollection.inject` does `rootVariables(name).set(valueArray)`), so portaled
30
+ * content resolves the palette identically regardless of React-tree position.
31
+ *
32
+ * Why a STATIC `import`, not a runtime `require` (critical)
33
+ * ---------------------------------------------------------
34
+ * react-native-css@3.0.7 ships both a `dist/commonjs` and a `dist/module` build, and
35
+ * Metro bundles BOTH. In `native-internal/root.js` the variable families are plain
36
+ * module-local consts — NOT `globalThis`-guarded the way `StyleCollection` is — so the
37
+ * commonjs `root.js` and the module `root.js` each instantiate their OWN separate
38
+ * `rootVariables` family. The react-native-css renderer (`react-native-css/src/components/View.tsx`
39
+ * → `varResolver`) imports its `root.js` via ESM `import`, i.e. the MODULE build. A
40
+ * runtime `require('react-native-css/native-internal')` resolves the package's `require`
41
+ * export condition → the COMMONJS build → a DIFFERENT family the renderer never
42
+ * subscribes to, so the writes are a silent no-op on device. A static top-level
43
+ * `import` resolves the `import` condition → the MODULE build → the renderer's instance.
44
+ *
45
+ * This plain file is the NATIVE/default variant (Metro selects it on iOS/Android,
46
+ * which have no `.native` override here); the web variant lives in the sibling
47
+ * `native-root-vars.web.ts` no-op, which web bundlers pick over this one. So the
48
+ * static `react-native-css/native-internal` import below is never pulled into a web
49
+ * bundle — only into native. This mirrors Bloom's existing platform-split convention
50
+ * (`color-scope/index.tsx` + `color-scope/index.web.tsx`, `FontLoader.native.tsx`).
51
+ *
52
+ * Keying contract (verified against react-native-css@3.0.7)
53
+ * ---------------------------------------------------------
54
+ * The `rootVariables` family is keyed by the BARE variable name, WITHOUT the leading
55
+ * `--`. The compiler strips it uniformly: a `:root { --primary: ... }` declaration is
56
+ * stored via `rule.v.push([property.slice(2), value])` then routed into
57
+ * `shared.rootVariables[name]`, and `@property --x` goes through
58
+ * `name.startsWith("--") ? name.slice(2) : name`. The lookup side matches: a `var(--x)`
59
+ * reference compiles to `[{}, "var", ident.slice(2)]`, so `varResolver` looks up the
60
+ * bare name. `buildScopeVars` returns keys WITH the `--` prefix, so we strip it before
61
+ * writing each entry.
62
+ *
63
+ * Value shape
64
+ * -----------
65
+ * Each entry is a `VariableValue[]` — an array of `[value, mediaCondition?]` tuples.
66
+ * Bloom's preset vars are unconditional, so each is a single-element `[[value]]`, e.g.
67
+ * `rootVariables('primary').set([['205 87% 53%']])`. This is the same shape the compiler
68
+ * emits for unconditional `:root` vars.
69
+ *
70
+ * This is native-only and additive: the `VariableContextProvider` wrapper stays (it is
71
+ * the correct, scoped mechanism for `BloomColorScope` subtree overrides and harmlessly
72
+ * covers direct descendants). The web fork (`native-root-vars.web.ts`) no-ops — web
73
+ * writes the same vars to `document.documentElement` via `applyColorPresetVars`.
74
+ */
75
+ /**
76
+ * Write the preset's CSS vars to react-native-css's global `rootVariables` family
77
+ * so the whole native tree (navigator screens + portals/modals/bottom-sheets)
78
+ * resolves the active palette.
79
+ *
80
+ * Each `.set` notifies its own observers synchronously (react-native-css only
81
+ * batches notifications inside its own `StyleCollection.inject`; outside it,
82
+ * `observableBatch.current` is unset so every `.set` runs observers immediately),
83
+ * so sequential writes correctly trigger a re-render when the preset/mode changes.
84
+ *
85
+ * Defensive guard: if a host ships a react-native-css build that doesn't expose
86
+ * `rootVariables` as a callable (it always does on @3), we bail rather than throw.
87
+ */
88
+ export declare function applyNativeRootVars(colorPreset: AppColorName, mode: 'light' | 'dark'): void;
89
+ //# sourceMappingURL=native-root-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-root-vars.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-root-vars.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAS3F"}
@@ -0,0 +1,20 @@
1
+ import { type AppColorName } from './color-presets';
2
+ /**
3
+ * Web fork of `applyNativeRootVars` — a no-op.
4
+ *
5
+ * On web, `BloomThemeProvider` already writes the active preset's CSS vars to
6
+ * `document.documentElement` via `applyColorPresetVars`, which the browser /
7
+ * react-native-web resolve natively. The native/default variant — the plain
8
+ * sibling `native-root-vars.ts` — instead publishes those vars into
9
+ * react-native-css's GLOBAL `rootVariables` family.
10
+ *
11
+ * Keeping the native variant's `react-native-css/native-internal` import out of
12
+ * the web bundle is the whole reason this is a platform-split module: web (and
13
+ * any non-NativeWind host) picks this `.web` fork over the plain file and so
14
+ * never statically pulls react-native-css internals.
15
+ *
16
+ * The signature is intentionally identical to the plain variant so the import
17
+ * site in `BloomThemeProvider` is platform-agnostic.
18
+ */
19
+ export declare function applyNativeRootVars(_colorPreset: AppColorName, _mode: 'light' | 'dark'): void;
20
+ //# sourceMappingURL=native-root-vars.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-root-vars.web.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-root-vars.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE7F"}
@@ -1 +1 @@
1
- {"version":3,"file":"preset-vars.d.ts","sourceRoot":"","sources":["../../../../src/theme/preset-vars.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiC1F,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,YAAY,EACvB,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,OAAO,GAAE,iBAAsB,GAC9B,YAAY,CAqCd;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,YAAY,EACvB,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAQN"}
1
+ {"version":3,"file":"preset-vars.d.ts","sourceRoot":"","sources":["../../../../src/theme/preset-vars.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiC1F,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,YAAY,EACvB,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,OAAO,GAAE,iBAAsB,GAC9B,YAAY,CAwCd;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,YAAY,EACvB,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAQN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.6.24",
3
+ "version": "0.7.1",
4
4
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -431,6 +431,136 @@
431
431
  "default": "./lib/commonjs/context-menu/index.js"
432
432
  }
433
433
  },
434
+ "./popover": {
435
+ "react-native": "./src/popover/index.tsx",
436
+ "browser": {
437
+ "types": "./lib/typescript/module/popover/index.web.d.ts",
438
+ "import": "./lib/module/popover/index.web.js",
439
+ "require": "./lib/commonjs/popover/index.web.js"
440
+ },
441
+ "import": {
442
+ "types": "./lib/typescript/module/popover/index.d.ts",
443
+ "default": "./lib/module/popover/index.js"
444
+ },
445
+ "require": {
446
+ "types": "./lib/typescript/commonjs/popover/index.d.ts",
447
+ "default": "./lib/commonjs/popover/index.js"
448
+ }
449
+ },
450
+ "./alert-dialog": {
451
+ "react-native": "./src/alert-dialog/index.ts",
452
+ "browser": {
453
+ "types": "./lib/typescript/module/alert-dialog/index.web.d.ts",
454
+ "import": "./lib/module/alert-dialog/index.web.js",
455
+ "require": "./lib/commonjs/alert-dialog/index.web.js"
456
+ },
457
+ "import": {
458
+ "types": "./lib/typescript/module/alert-dialog/index.d.ts",
459
+ "default": "./lib/module/alert-dialog/index.js"
460
+ },
461
+ "require": {
462
+ "types": "./lib/typescript/commonjs/alert-dialog/index.d.ts",
463
+ "default": "./lib/commonjs/alert-dialog/index.js"
464
+ }
465
+ },
466
+ "./combobox": {
467
+ "react-native": "./src/combobox/index.ts",
468
+ "browser": {
469
+ "types": "./lib/typescript/module/combobox/index.web.d.ts",
470
+ "import": "./lib/module/combobox/index.web.js",
471
+ "require": "./lib/commonjs/combobox/index.web.js"
472
+ },
473
+ "import": {
474
+ "types": "./lib/typescript/module/combobox/index.d.ts",
475
+ "default": "./lib/module/combobox/index.js"
476
+ },
477
+ "require": {
478
+ "types": "./lib/typescript/commonjs/combobox/index.d.ts",
479
+ "default": "./lib/commonjs/combobox/index.js"
480
+ }
481
+ },
482
+ "./command": {
483
+ "react-native": "./src/command/index.ts",
484
+ "browser": {
485
+ "types": "./lib/typescript/module/command/index.web.d.ts",
486
+ "import": "./lib/module/command/index.web.js",
487
+ "require": "./lib/commonjs/command/index.web.js"
488
+ },
489
+ "import": {
490
+ "types": "./lib/typescript/module/command/index.d.ts",
491
+ "default": "./lib/module/command/index.js"
492
+ },
493
+ "require": {
494
+ "types": "./lib/typescript/commonjs/command/index.d.ts",
495
+ "default": "./lib/commonjs/command/index.js"
496
+ }
497
+ },
498
+ "./label": {
499
+ "react-native": "./src/label/index.ts",
500
+ "import": {
501
+ "types": "./lib/typescript/module/label/index.d.ts",
502
+ "default": "./lib/module/label/index.js"
503
+ },
504
+ "require": {
505
+ "types": "./lib/typescript/commonjs/label/index.d.ts",
506
+ "default": "./lib/commonjs/label/index.js"
507
+ }
508
+ },
509
+ "./kbd": {
510
+ "react-native": "./src/kbd/index.ts",
511
+ "import": {
512
+ "types": "./lib/typescript/module/kbd/index.d.ts",
513
+ "default": "./lib/module/kbd/index.js"
514
+ },
515
+ "require": {
516
+ "types": "./lib/typescript/commonjs/kbd/index.d.ts",
517
+ "default": "./lib/commonjs/kbd/index.js"
518
+ }
519
+ },
520
+ "./item": {
521
+ "react-native": "./src/item/index.ts",
522
+ "import": {
523
+ "types": "./lib/typescript/module/item/index.d.ts",
524
+ "default": "./lib/module/item/index.js"
525
+ },
526
+ "require": {
527
+ "types": "./lib/typescript/commonjs/item/index.d.ts",
528
+ "default": "./lib/commonjs/item/index.js"
529
+ }
530
+ },
531
+ "./field": {
532
+ "react-native": "./src/field/index.ts",
533
+ "import": {
534
+ "types": "./lib/typescript/module/field/index.d.ts",
535
+ "default": "./lib/module/field/index.js"
536
+ },
537
+ "require": {
538
+ "types": "./lib/typescript/commonjs/field/index.d.ts",
539
+ "default": "./lib/commonjs/field/index.js"
540
+ }
541
+ },
542
+ "./input-group": {
543
+ "react-native": "./src/input-group/index.ts",
544
+ "import": {
545
+ "types": "./lib/typescript/module/input-group/index.d.ts",
546
+ "default": "./lib/module/input-group/index.js"
547
+ },
548
+ "require": {
549
+ "types": "./lib/typescript/commonjs/input-group/index.d.ts",
550
+ "default": "./lib/commonjs/input-group/index.js"
551
+ }
552
+ },
553
+ "./slider": {
554
+ "react-native": "./src/slider/index.ts",
555
+ "import": {
556
+ "types": "./lib/typescript/module/slider/index.d.ts",
557
+ "default": "./lib/module/slider/index.js"
558
+ },
559
+ "require": {
560
+ "types": "./lib/typescript/commonjs/slider/index.d.ts",
561
+ "default": "./lib/commonjs/slider/index.js"
562
+ }
563
+ },
434
564
  "./card": {
435
565
  "react-native": "./src/card/index.ts",
436
566
  "import": {
@@ -594,6 +724,16 @@
594
724
  "accordion",
595
725
  "code",
596
726
  "fonts",
727
+ "popover",
728
+ "command",
729
+ "combobox",
730
+ "alert-dialog",
731
+ "slider",
732
+ "field",
733
+ "input-group",
734
+ "label",
735
+ "kbd",
736
+ "item",
597
737
  "ai"
598
738
  ],
599
739
  "repository": {
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { Text } from 'react-native';
3
+ import { render } from '@testing-library/react-native';
4
+
5
+ import { BloomThemeProvider } from '../theme/BloomThemeProvider';
6
+ import { Field } from '../field';
7
+
8
+ function renderWithTheme(ui: React.ReactElement) {
9
+ return render(
10
+ <BloomThemeProvider mode="light" colorPreset="teal">
11
+ {ui}
12
+ </BloomThemeProvider>,
13
+ );
14
+ }
15
+
16
+ describe('Field', () => {
17
+ it('renders label, children and description', () => {
18
+ const { getByText } = renderWithTheme(
19
+ <Field label="Username" description="Pick something unique">
20
+ <Text>input</Text>
21
+ </Field>,
22
+ );
23
+ expect(getByText('Username')).toBeTruthy();
24
+ expect(getByText('input')).toBeTruthy();
25
+ expect(getByText('Pick something unique')).toBeTruthy();
26
+ });
27
+
28
+ it('renders the error and hides the description when invalid', () => {
29
+ const { getByText, queryByText } = renderWithTheme(
30
+ <Field label="Email" description="We never share it" error="Invalid email">
31
+ <Text>input</Text>
32
+ </Field>,
33
+ );
34
+ expect(getByText('Invalid email')).toBeTruthy();
35
+ expect(queryByText('We never share it')).toBeNull();
36
+ });
37
+
38
+ it('marks the error message with the alert role', () => {
39
+ const { getByText } = renderWithTheme(
40
+ <Field label="Email" error="Required">
41
+ <Text>input</Text>
42
+ </Field>,
43
+ );
44
+ expect(getByText('Required').props.accessibilityRole).toBe('alert');
45
+ });
46
+
47
+ it('renders the required marker through the label', () => {
48
+ const { getByLabelText } = renderWithTheme(
49
+ <Field label="Email" required>
50
+ <Text>input</Text>
51
+ </Field>,
52
+ );
53
+ expect(getByLabelText('required')).toBeTruthy();
54
+ });
55
+ });
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { Text } from 'react-native';
3
+ import { render } from '@testing-library/react-native';
4
+
5
+ import { BloomThemeProvider } from '../theme/BloomThemeProvider';
6
+ import { InputGroup } from '../input-group';
7
+
8
+ function renderWithTheme(ui: React.ReactElement) {
9
+ return render(
10
+ <BloomThemeProvider mode="light" colorPreset="teal">
11
+ {ui}
12
+ </BloomThemeProvider>,
13
+ );
14
+ }
15
+
16
+ describe('InputGroup', () => {
17
+ it('renders addons and the input', () => {
18
+ const { getByText } = renderWithTheme(
19
+ <InputGroup>
20
+ <InputGroup.Addon>https://</InputGroup.Addon>
21
+ <Text>field</Text>
22
+ <InputGroup.Addon divider>
23
+ <Text>Go</Text>
24
+ </InputGroup.Addon>
25
+ </InputGroup>,
26
+ );
27
+ expect(getByText('https://')).toBeTruthy();
28
+ expect(getByText('field')).toBeTruthy();
29
+ expect(getByText('Go')).toBeTruthy();
30
+ });
31
+
32
+ it('exposes Addon as a static member', () => {
33
+ expect(InputGroup.Addon).toBeTruthy();
34
+ });
35
+
36
+ it('marks disabled state for accessibility', () => {
37
+ const { getByTestId } = renderWithTheme(
38
+ <InputGroup disabled testID="group">
39
+ <Text>field</Text>
40
+ </InputGroup>,
41
+ );
42
+ expect(getByTestId('group').props.accessibilityState).toEqual({ disabled: true });
43
+ });
44
+ });
@@ -0,0 +1,73 @@
1
+ import React from 'react';
2
+ import { Text } from 'react-native';
3
+ import { fireEvent, render } from '@testing-library/react-native';
4
+
5
+ import { BloomThemeProvider } from '../theme/BloomThemeProvider';
6
+ import { Item } from '../item';
7
+
8
+ function renderWithTheme(ui: React.ReactElement) {
9
+ return render(
10
+ <BloomThemeProvider mode="light" colorPreset="teal">
11
+ {ui}
12
+ </BloomThemeProvider>,
13
+ );
14
+ }
15
+
16
+ describe('Item', () => {
17
+ it('renders title and subtitle', () => {
18
+ const { getByText } = renderWithTheme(
19
+ <Item title="Profile" subtitle="Manage your details" />,
20
+ );
21
+ expect(getByText('Profile')).toBeTruthy();
22
+ expect(getByText('Manage your details')).toBeTruthy();
23
+ });
24
+
25
+ it('renders custom children in place of the text column', () => {
26
+ const { getByText, queryByText } = renderWithTheme(
27
+ <Item title="ignored">
28
+ <Text>Custom body</Text>
29
+ </Item>,
30
+ );
31
+ expect(getByText('Custom body')).toBeTruthy();
32
+ expect(queryByText('ignored')).toBeNull();
33
+ });
34
+
35
+ it('is pressable when onPress is provided and fires the handler', () => {
36
+ const onPress = jest.fn();
37
+ const { getByText } = renderWithTheme(
38
+ <Item title="Tap me" onPress={onPress} />,
39
+ );
40
+ fireEvent.press(getByText('Tap me'));
41
+ expect(onPress).toHaveBeenCalledTimes(1);
42
+ });
43
+
44
+ it('marks the disabled state for accessibility and strips the press handler', () => {
45
+ const onPress = jest.fn();
46
+ const { getByLabelText } = renderWithTheme(
47
+ <Item title="Disabled" onPress={onPress} disabled accessibilityLabel="Disabled" />,
48
+ );
49
+ const node = getByLabelText('Disabled');
50
+ expect(node.props.accessibilityState).toEqual({ disabled: true, selected: false });
51
+ // The Pressable receives no press handler while disabled.
52
+ expect(node.props.onPress).toBeUndefined();
53
+ });
54
+
55
+ it('uses button role by default when pressable', () => {
56
+ const { getByLabelText } = renderWithTheme(
57
+ <Item title="Row" onPress={() => {}} accessibilityLabel="Row" />,
58
+ );
59
+ expect(getByLabelText('Row').props.accessibilityRole).toBe('button');
60
+ });
61
+
62
+ it('renders leading and trailing slots', () => {
63
+ const { getByText } = renderWithTheme(
64
+ <Item
65
+ title="With slots"
66
+ leading={<Text>L</Text>}
67
+ trailing={<Text>R</Text>}
68
+ />,
69
+ );
70
+ expect(getByText('L')).toBeTruthy();
71
+ expect(getByText('R')).toBeTruthy();
72
+ });
73
+ });
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react-native';
3
+
4
+ import { BloomThemeProvider } from '../theme/BloomThemeProvider';
5
+ import { Kbd } from '../kbd';
6
+
7
+ function renderWithTheme(ui: React.ReactElement) {
8
+ return render(
9
+ <BloomThemeProvider mode="light" colorPreset="teal">
10
+ {ui}
11
+ </BloomThemeProvider>,
12
+ );
13
+ }
14
+
15
+ describe('Kbd', () => {
16
+ it('renders the key label', () => {
17
+ const { getByText } = renderWithTheme(<Kbd>K</Kbd>);
18
+ expect(getByText('K')).toBeTruthy();
19
+ });
20
+
21
+ it('renders both sizes', () => {
22
+ const sm = renderWithTheme(<Kbd size="sm">Esc</Kbd>);
23
+ expect(sm.getByText('Esc')).toBeTruthy();
24
+ const md = renderWithTheme(<Kbd size="md">⌘</Kbd>);
25
+ expect(md.getByText('⌘')).toBeTruthy();
26
+ });
27
+ });
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react-native';
3
+
4
+ import { BloomThemeProvider } from '../theme/BloomThemeProvider';
5
+ import { Label } from '../label';
6
+
7
+ function renderWithTheme(ui: React.ReactElement) {
8
+ return render(
9
+ <BloomThemeProvider mode="light" colorPreset="teal">
10
+ {ui}
11
+ </BloomThemeProvider>,
12
+ );
13
+ }
14
+
15
+ describe('Label', () => {
16
+ it('renders its text', () => {
17
+ const { getByText } = renderWithTheme(<Label>Email</Label>);
18
+ expect(getByText('Email')).toBeTruthy();
19
+ });
20
+
21
+ it('renders a required marker when required', () => {
22
+ const { getByLabelText } = renderWithTheme(<Label required>Email</Label>);
23
+ expect(getByLabelText('required')).toBeTruthy();
24
+ });
25
+
26
+ it('does not render a required marker by default', () => {
27
+ const { queryByLabelText } = renderWithTheme(<Label>Email</Label>);
28
+ expect(queryByLabelText('required')).toBeNull();
29
+ });
30
+ });
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react-native';
3
+
4
+ import { BloomThemeProvider } from '../theme/BloomThemeProvider';
5
+ import { Slider } from '../slider';
6
+
7
+ function renderWithTheme(ui: React.ReactElement) {
8
+ return render(
9
+ <BloomThemeProvider mode="light" colorPreset="teal">
10
+ {ui}
11
+ </BloomThemeProvider>,
12
+ );
13
+ }
14
+
15
+ describe('Slider', () => {
16
+ it('renders with the adjustable accessibility role and value', () => {
17
+ const { getByTestId } = renderWithTheme(
18
+ <Slider value={40} min={0} max={100} onValueChange={() => {}} testID="slider" />,
19
+ );
20
+ const node = getByTestId('slider');
21
+ expect(node.props.accessibilityRole).toBe('adjustable');
22
+ expect(node.props.accessibilityValue).toEqual({ min: 0, max: 100, now: 40 });
23
+ });
24
+
25
+ it('reflects the disabled state', () => {
26
+ const { getByTestId } = renderWithTheme(
27
+ <Slider value={0} onValueChange={() => {}} disabled testID="slider" />,
28
+ );
29
+ expect(getByTestId('slider').props.accessibilityState).toEqual({ disabled: true });
30
+ });
31
+
32
+ it('renders without crashing for fractional steps', () => {
33
+ const { getByTestId } = renderWithTheme(
34
+ <Slider value={0.5} min={0} max={1} step={0.1} onValueChange={() => {}} testID="slider" />,
35
+ );
36
+ expect(getByTestId('slider')).toBeTruthy();
37
+ });
38
+ });