@oxyhq/bloom 0.35.8 → 0.37.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 (310) hide show
  1. package/lib/commonjs/frosted-icon-button/FrostedIconButton.js +148 -0
  2. package/lib/commonjs/frosted-icon-button/FrostedIconButton.js.map +1 -0
  3. package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js +166 -0
  4. package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js.map +1 -0
  5. package/lib/commonjs/frosted-icon-button/index.js +13 -0
  6. package/lib/commonjs/frosted-icon-button/index.js.map +1 -0
  7. package/lib/commonjs/frosted-icon-button/index.web.js +13 -0
  8. package/lib/commonjs/frosted-icon-button/index.web.js.map +1 -0
  9. package/lib/commonjs/frosted-icon-button/shared.js +112 -0
  10. package/lib/commonjs/frosted-icon-button/shared.js.map +1 -0
  11. package/lib/commonjs/frosted-icon-button/types.js +6 -0
  12. package/lib/commonjs/frosted-icon-button/types.js.map +1 -0
  13. package/lib/commonjs/index.js +10 -1
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/index.web.js +46 -37
  16. package/lib/commonjs/index.web.js.map +1 -1
  17. package/lib/commonjs/theme/build-theme.js +31 -43
  18. package/lib/commonjs/theme/build-theme.js.map +1 -1
  19. package/lib/commonjs/theme/color-engine/cam16.js +161 -0
  20. package/lib/commonjs/theme/color-engine/cam16.js.map +1 -0
  21. package/lib/commonjs/theme/color-engine/color-role.js +183 -0
  22. package/lib/commonjs/theme/color-engine/color-role.js.map +1 -0
  23. package/lib/commonjs/theme/color-engine/color-roles.js +416 -0
  24. package/lib/commonjs/theme/color-engine/color-roles.js.map +1 -0
  25. package/lib/commonjs/theme/color-engine/color-utils.js +157 -0
  26. package/lib/commonjs/theme/color-engine/color-utils.js.map +1 -0
  27. package/lib/commonjs/theme/color-engine/contrast-curve.js +32 -0
  28. package/lib/commonjs/theme/color-engine/contrast-curve.js.map +1 -0
  29. package/lib/commonjs/theme/color-engine/contrast.js +70 -0
  30. package/lib/commonjs/theme/color-engine/contrast.js.map +1 -0
  31. package/lib/commonjs/theme/color-engine/dislike-analyzer.js +26 -0
  32. package/lib/commonjs/theme/color-engine/dislike-analyzer.js.map +1 -0
  33. package/lib/commonjs/theme/color-engine/dynamic-scheme.js +70 -0
  34. package/lib/commonjs/theme/color-engine/dynamic-scheme.js.map +1 -0
  35. package/lib/commonjs/theme/color-engine/hct-solver.js +236 -0
  36. package/lib/commonjs/theme/color-engine/hct-solver.js.map +1 -0
  37. package/lib/commonjs/theme/color-engine/hct.js +67 -0
  38. package/lib/commonjs/theme/color-engine/hct.js.map +1 -0
  39. package/lib/commonjs/theme/color-engine/index.js +173 -0
  40. package/lib/commonjs/theme/color-engine/index.js.map +1 -0
  41. package/lib/commonjs/theme/color-engine/lab-point-provider.js +32 -0
  42. package/lib/commonjs/theme/color-engine/lab-point-provider.js.map +1 -0
  43. package/lib/commonjs/theme/color-engine/math-utils.js +77 -0
  44. package/lib/commonjs/theme/color-engine/math-utils.js.map +1 -0
  45. package/lib/commonjs/theme/color-engine/quantizer-map.js +24 -0
  46. package/lib/commonjs/theme/color-engine/quantizer-map.js.map +1 -0
  47. package/lib/commonjs/theme/color-engine/quantizer-wu.js +266 -0
  48. package/lib/commonjs/theme/color-engine/quantizer-wu.js.map +1 -0
  49. package/lib/commonjs/theme/color-engine/scheme-variants.js +102 -0
  50. package/lib/commonjs/theme/color-engine/scheme-variants.js.map +1 -0
  51. package/lib/commonjs/theme/color-engine/score.js +80 -0
  52. package/lib/commonjs/theme/color-engine/score.js.map +1 -0
  53. package/lib/commonjs/theme/color-engine/seed-from-image.js +73 -0
  54. package/lib/commonjs/theme/color-engine/seed-from-image.js.map +1 -0
  55. package/lib/commonjs/theme/color-engine/tonal-palette.js +95 -0
  56. package/lib/commonjs/theme/color-engine/tonal-palette.js.map +1 -0
  57. package/lib/commonjs/theme/color-engine/tone-delta-pair.js +26 -0
  58. package/lib/commonjs/theme/color-engine/tone-delta-pair.js.map +1 -0
  59. package/lib/commonjs/theme/color-engine/variant.js +26 -0
  60. package/lib/commonjs/theme/color-engine/variant.js.map +1 -0
  61. package/lib/commonjs/theme/color-engine/viewing-conditions.js +61 -0
  62. package/lib/commonjs/theme/color-engine/viewing-conditions.js.map +1 -0
  63. package/lib/commonjs/theme/color-presets.js +44 -572
  64. package/lib/commonjs/theme/color-presets.js.map +1 -1
  65. package/lib/commonjs/theme/preset-vars.js +64 -47
  66. package/lib/commonjs/theme/preset-vars.js.map +1 -1
  67. package/lib/module/frosted-icon-button/FrostedIconButton.js +143 -0
  68. package/lib/module/frosted-icon-button/FrostedIconButton.js.map +1 -0
  69. package/lib/module/frosted-icon-button/FrostedIconButton.web.js +161 -0
  70. package/lib/module/frosted-icon-button/FrostedIconButton.web.js.map +1 -0
  71. package/lib/module/frosted-icon-button/index.js +4 -0
  72. package/lib/module/frosted-icon-button/index.js.map +1 -0
  73. package/lib/module/frosted-icon-button/index.web.js +11 -0
  74. package/lib/module/frosted-icon-button/index.web.js.map +1 -0
  75. package/lib/module/frosted-icon-button/shared.js +107 -0
  76. package/lib/module/frosted-icon-button/shared.js.map +1 -0
  77. package/lib/module/frosted-icon-button/types.js +4 -0
  78. package/lib/module/frosted-icon-button/types.js.map +1 -0
  79. package/lib/module/index.js +1 -0
  80. package/lib/module/index.js.map +1 -1
  81. package/lib/module/index.web.js +1 -0
  82. package/lib/module/index.web.js.map +1 -1
  83. package/lib/module/theme/build-theme.js +32 -44
  84. package/lib/module/theme/build-theme.js.map +1 -1
  85. package/lib/module/theme/color-engine/cam16.js +155 -0
  86. package/lib/module/theme/color-engine/cam16.js.map +1 -0
  87. package/lib/module/theme/color-engine/color-role.js +177 -0
  88. package/lib/module/theme/color-engine/color-role.js.map +1 -0
  89. package/lib/module/theme/color-engine/color-roles.js +411 -0
  90. package/lib/module/theme/color-engine/color-roles.js.map +1 -0
  91. package/lib/module/theme/color-engine/color-utils.js +135 -0
  92. package/lib/module/theme/color-engine/color-utils.js.map +1 -0
  93. package/lib/module/theme/color-engine/contrast-curve.js +26 -0
  94. package/lib/module/theme/color-engine/contrast-curve.js.map +1 -0
  95. package/lib/module/theme/color-engine/contrast.js +61 -0
  96. package/lib/module/theme/color-engine/contrast.js.map +1 -0
  97. package/lib/module/theme/color-engine/dislike-analyzer.js +20 -0
  98. package/lib/module/theme/color-engine/dislike-analyzer.js.map +1 -0
  99. package/lib/module/theme/color-engine/dynamic-scheme.js +65 -0
  100. package/lib/module/theme/color-engine/dynamic-scheme.js.map +1 -0
  101. package/lib/module/theme/color-engine/hct-solver.js +231 -0
  102. package/lib/module/theme/color-engine/hct-solver.js.map +1 -0
  103. package/lib/module/theme/color-engine/hct.js +61 -0
  104. package/lib/module/theme/color-engine/hct.js.map +1 -0
  105. package/lib/module/theme/color-engine/index.js +57 -0
  106. package/lib/module/theme/color-engine/index.js.map +1 -0
  107. package/lib/module/theme/color-engine/lab-point-provider.js +25 -0
  108. package/lib/module/theme/color-engine/lab-point-provider.js.map +1 -0
  109. package/lib/module/theme/color-engine/math-utils.js +65 -0
  110. package/lib/module/theme/color-engine/math-utils.js.map +1 -0
  111. package/lib/module/theme/color-engine/quantizer-map.js +20 -0
  112. package/lib/module/theme/color-engine/quantizer-map.js.map +1 -0
  113. package/lib/module/theme/color-engine/quantizer-wu.js +261 -0
  114. package/lib/module/theme/color-engine/quantizer-wu.js.map +1 -0
  115. package/lib/module/theme/color-engine/scheme-variants.js +93 -0
  116. package/lib/module/theme/color-engine/scheme-variants.js.map +1 -0
  117. package/lib/module/theme/color-engine/score.js +75 -0
  118. package/lib/module/theme/color-engine/score.js.map +1 -0
  119. package/lib/module/theme/color-engine/seed-from-image.js +67 -0
  120. package/lib/module/theme/color-engine/seed-from-image.js.map +1 -0
  121. package/lib/module/theme/color-engine/tonal-palette.js +89 -0
  122. package/lib/module/theme/color-engine/tonal-palette.js.map +1 -0
  123. package/lib/module/theme/color-engine/tone-delta-pair.js +21 -0
  124. package/lib/module/theme/color-engine/tone-delta-pair.js.map +1 -0
  125. package/lib/module/theme/color-engine/variant.js +22 -0
  126. package/lib/module/theme/color-engine/variant.js.map +1 -0
  127. package/lib/module/theme/color-engine/viewing-conditions.js +55 -0
  128. package/lib/module/theme/color-engine/viewing-conditions.js.map +1 -0
  129. package/lib/module/theme/color-presets.js +44 -572
  130. package/lib/module/theme/color-presets.js.map +1 -1
  131. package/lib/module/theme/preset-vars.js +64 -46
  132. package/lib/module/theme/preset-vars.js.map +1 -1
  133. package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.d.ts +5 -0
  134. package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.web.d.ts +5 -0
  136. package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/frosted-icon-button/index.d.ts +3 -0
  138. package/lib/typescript/commonjs/frosted-icon-button/index.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/frosted-icon-button/index.web.d.ts +3 -0
  140. package/lib/typescript/commonjs/frosted-icon-button/index.web.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/frosted-icon-button/shared.d.ts +60 -0
  142. package/lib/typescript/commonjs/frosted-icon-button/shared.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/frosted-icon-button/types.d.ts +69 -0
  144. package/lib/typescript/commonjs/frosted-icon-button/types.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/index.d.ts +2 -0
  146. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/index.web.d.ts +2 -0
  148. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/theme/color-engine/cam16.d.ts +26 -0
  151. package/lib/typescript/commonjs/theme/color-engine/cam16.d.ts.map +1 -0
  152. package/lib/typescript/commonjs/theme/color-engine/color-role.d.ts +36 -0
  153. package/lib/typescript/commonjs/theme/color-engine/color-role.d.ts.map +1 -0
  154. package/lib/typescript/commonjs/theme/color-engine/color-roles.d.ts +58 -0
  155. package/lib/typescript/commonjs/theme/color-engine/color-roles.d.ts.map +1 -0
  156. package/lib/typescript/commonjs/theme/color-engine/color-utils.d.ts +32 -0
  157. package/lib/typescript/commonjs/theme/color-engine/color-utils.d.ts.map +1 -0
  158. package/lib/typescript/commonjs/theme/color-engine/contrast-curve.d.ts +9 -0
  159. package/lib/typescript/commonjs/theme/color-engine/contrast-curve.d.ts.map +1 -0
  160. package/lib/typescript/commonjs/theme/color-engine/contrast.d.ts +12 -0
  161. package/lib/typescript/commonjs/theme/color-engine/contrast.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/theme/color-engine/dislike-analyzer.d.ts +11 -0
  163. package/lib/typescript/commonjs/theme/color-engine/dislike-analyzer.d.ts.map +1 -0
  164. package/lib/typescript/commonjs/theme/color-engine/dynamic-scheme.d.ts +47 -0
  165. package/lib/typescript/commonjs/theme/color-engine/dynamic-scheme.d.ts.map +1 -0
  166. package/lib/typescript/commonjs/theme/color-engine/hct-solver.d.ts +6 -0
  167. package/lib/typescript/commonjs/theme/color-engine/hct-solver.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/theme/color-engine/hct.d.ts +20 -0
  169. package/lib/typescript/commonjs/theme/color-engine/hct.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/theme/color-engine/index.d.ts +44 -0
  171. package/lib/typescript/commonjs/theme/color-engine/index.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/theme/color-engine/lab-point-provider.d.ts +6 -0
  173. package/lib/typescript/commonjs/theme/color-engine/lab-point-provider.d.ts.map +1 -0
  174. package/lib/typescript/commonjs/theme/color-engine/math-utils.d.ts +46 -0
  175. package/lib/typescript/commonjs/theme/color-engine/math-utils.d.ts.map +1 -0
  176. package/lib/typescript/commonjs/theme/color-engine/quantizer-map.d.ts +3 -0
  177. package/lib/typescript/commonjs/theme/color-engine/quantizer-map.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/theme/color-engine/quantizer-wu.d.ts +3 -0
  179. package/lib/typescript/commonjs/theme/color-engine/quantizer-wu.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts +23 -0
  181. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/theme/color-engine/score.d.ts +8 -0
  183. package/lib/typescript/commonjs/theme/color-engine/score.d.ts.map +1 -0
  184. package/lib/typescript/commonjs/theme/color-engine/seed-from-image.d.ts +13 -0
  185. package/lib/typescript/commonjs/theme/color-engine/seed-from-image.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/theme/color-engine/tonal-palette.d.ts +24 -0
  187. package/lib/typescript/commonjs/theme/color-engine/tonal-palette.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/theme/color-engine/tone-delta-pair.d.ts +19 -0
  189. package/lib/typescript/commonjs/theme/color-engine/tone-delta-pair.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/theme/color-engine/variant.d.ts +19 -0
  191. package/lib/typescript/commonjs/theme/color-engine/variant.d.ts.map +1 -0
  192. package/lib/typescript/commonjs/theme/color-engine/viewing-conditions.d.ts +18 -0
  193. package/lib/typescript/commonjs/theme/color-engine/viewing-conditions.d.ts.map +1 -0
  194. package/lib/typescript/commonjs/theme/color-presets.d.ts +25 -20
  195. package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
  196. package/lib/typescript/commonjs/theme/preset-vars.d.ts +16 -12
  197. package/lib/typescript/commonjs/theme/preset-vars.d.ts.map +1 -1
  198. package/lib/typescript/module/frosted-icon-button/FrostedIconButton.d.ts +5 -0
  199. package/lib/typescript/module/frosted-icon-button/FrostedIconButton.d.ts.map +1 -0
  200. package/lib/typescript/module/frosted-icon-button/FrostedIconButton.web.d.ts +5 -0
  201. package/lib/typescript/module/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -0
  202. package/lib/typescript/module/frosted-icon-button/index.d.ts +3 -0
  203. package/lib/typescript/module/frosted-icon-button/index.d.ts.map +1 -0
  204. package/lib/typescript/module/frosted-icon-button/index.web.d.ts +3 -0
  205. package/lib/typescript/module/frosted-icon-button/index.web.d.ts.map +1 -0
  206. package/lib/typescript/module/frosted-icon-button/shared.d.ts +60 -0
  207. package/lib/typescript/module/frosted-icon-button/shared.d.ts.map +1 -0
  208. package/lib/typescript/module/frosted-icon-button/types.d.ts +69 -0
  209. package/lib/typescript/module/frosted-icon-button/types.d.ts.map +1 -0
  210. package/lib/typescript/module/index.d.ts +2 -0
  211. package/lib/typescript/module/index.d.ts.map +1 -1
  212. package/lib/typescript/module/index.web.d.ts +2 -0
  213. package/lib/typescript/module/index.web.d.ts.map +1 -1
  214. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
  215. package/lib/typescript/module/theme/color-engine/cam16.d.ts +26 -0
  216. package/lib/typescript/module/theme/color-engine/cam16.d.ts.map +1 -0
  217. package/lib/typescript/module/theme/color-engine/color-role.d.ts +36 -0
  218. package/lib/typescript/module/theme/color-engine/color-role.d.ts.map +1 -0
  219. package/lib/typescript/module/theme/color-engine/color-roles.d.ts +58 -0
  220. package/lib/typescript/module/theme/color-engine/color-roles.d.ts.map +1 -0
  221. package/lib/typescript/module/theme/color-engine/color-utils.d.ts +32 -0
  222. package/lib/typescript/module/theme/color-engine/color-utils.d.ts.map +1 -0
  223. package/lib/typescript/module/theme/color-engine/contrast-curve.d.ts +9 -0
  224. package/lib/typescript/module/theme/color-engine/contrast-curve.d.ts.map +1 -0
  225. package/lib/typescript/module/theme/color-engine/contrast.d.ts +12 -0
  226. package/lib/typescript/module/theme/color-engine/contrast.d.ts.map +1 -0
  227. package/lib/typescript/module/theme/color-engine/dislike-analyzer.d.ts +11 -0
  228. package/lib/typescript/module/theme/color-engine/dislike-analyzer.d.ts.map +1 -0
  229. package/lib/typescript/module/theme/color-engine/dynamic-scheme.d.ts +47 -0
  230. package/lib/typescript/module/theme/color-engine/dynamic-scheme.d.ts.map +1 -0
  231. package/lib/typescript/module/theme/color-engine/hct-solver.d.ts +6 -0
  232. package/lib/typescript/module/theme/color-engine/hct-solver.d.ts.map +1 -0
  233. package/lib/typescript/module/theme/color-engine/hct.d.ts +20 -0
  234. package/lib/typescript/module/theme/color-engine/hct.d.ts.map +1 -0
  235. package/lib/typescript/module/theme/color-engine/index.d.ts +44 -0
  236. package/lib/typescript/module/theme/color-engine/index.d.ts.map +1 -0
  237. package/lib/typescript/module/theme/color-engine/lab-point-provider.d.ts +6 -0
  238. package/lib/typescript/module/theme/color-engine/lab-point-provider.d.ts.map +1 -0
  239. package/lib/typescript/module/theme/color-engine/math-utils.d.ts +46 -0
  240. package/lib/typescript/module/theme/color-engine/math-utils.d.ts.map +1 -0
  241. package/lib/typescript/module/theme/color-engine/quantizer-map.d.ts +3 -0
  242. package/lib/typescript/module/theme/color-engine/quantizer-map.d.ts.map +1 -0
  243. package/lib/typescript/module/theme/color-engine/quantizer-wu.d.ts +3 -0
  244. package/lib/typescript/module/theme/color-engine/quantizer-wu.d.ts.map +1 -0
  245. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts +23 -0
  246. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts.map +1 -0
  247. package/lib/typescript/module/theme/color-engine/score.d.ts +8 -0
  248. package/lib/typescript/module/theme/color-engine/score.d.ts.map +1 -0
  249. package/lib/typescript/module/theme/color-engine/seed-from-image.d.ts +13 -0
  250. package/lib/typescript/module/theme/color-engine/seed-from-image.d.ts.map +1 -0
  251. package/lib/typescript/module/theme/color-engine/tonal-palette.d.ts +24 -0
  252. package/lib/typescript/module/theme/color-engine/tonal-palette.d.ts.map +1 -0
  253. package/lib/typescript/module/theme/color-engine/tone-delta-pair.d.ts +19 -0
  254. package/lib/typescript/module/theme/color-engine/tone-delta-pair.d.ts.map +1 -0
  255. package/lib/typescript/module/theme/color-engine/variant.d.ts +19 -0
  256. package/lib/typescript/module/theme/color-engine/variant.d.ts.map +1 -0
  257. package/lib/typescript/module/theme/color-engine/viewing-conditions.d.ts +18 -0
  258. package/lib/typescript/module/theme/color-engine/viewing-conditions.d.ts.map +1 -0
  259. package/lib/typescript/module/theme/color-presets.d.ts +25 -20
  260. package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
  261. package/lib/typescript/module/theme/preset-vars.d.ts +16 -12
  262. package/lib/typescript/module/theme/preset-vars.d.ts.map +1 -1
  263. package/package.json +17 -1
  264. package/src/__tests__/BloomThemeProvider.test.tsx +9 -4
  265. package/src/__tests__/FrostedIconButton.test.tsx +137 -0
  266. package/src/__tests__/FrostedIconButton.web.test.tsx +246 -0
  267. package/src/__tests__/native-root-vars.test.ts +8 -4
  268. package/src/__tests__/preset-vars.test.ts +66 -37
  269. package/src/__tests__/theme.test.ts +20 -12
  270. package/src/frosted-icon-button/FrostedIconButton.stories.tsx +65 -0
  271. package/src/frosted-icon-button/FrostedIconButton.tsx +156 -0
  272. package/src/frosted-icon-button/FrostedIconButton.web.tsx +207 -0
  273. package/src/frosted-icon-button/index.ts +2 -0
  274. package/src/frosted-icon-button/index.web.ts +9 -0
  275. package/src/frosted-icon-button/shared.ts +118 -0
  276. package/src/frosted-icon-button/types.ts +81 -0
  277. package/src/index.ts +2 -0
  278. package/src/index.web.ts +2 -0
  279. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +509 -509
  280. package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +613 -613
  281. package/src/theme/__tests__/color-engine-golden.test.ts +81 -0
  282. package/src/theme/__tests__/fixtures/color-engine-golden.json +1 -0
  283. package/src/theme/__tests__/golden-tokens.test.ts +6 -7
  284. package/src/theme/__tests__/runtime-contract.test.ts +8 -8
  285. package/src/theme/__tests__/theme-colors-parity.test.ts +44 -88
  286. package/src/theme/build-theme.ts +32 -44
  287. package/src/theme/color-engine/cam16.ts +179 -0
  288. package/src/theme/color-engine/color-role.ts +217 -0
  289. package/src/theme/color-engine/color-roles.ts +435 -0
  290. package/src/theme/color-engine/color-utils.ts +157 -0
  291. package/src/theme/color-engine/contrast-curve.ts +25 -0
  292. package/src/theme/color-engine/contrast.ts +59 -0
  293. package/src/theme/color-engine/dislike-analyzer.ts +19 -0
  294. package/src/theme/color-engine/dynamic-scheme.ts +90 -0
  295. package/src/theme/color-engine/hct-solver.ts +263 -0
  296. package/src/theme/color-engine/hct.ts +69 -0
  297. package/src/theme/color-engine/index.ts +73 -0
  298. package/src/theme/color-engine/lab-point-provider.ts +26 -0
  299. package/src/theme/color-engine/math-utils.ts +69 -0
  300. package/src/theme/color-engine/quantizer-map.ts +17 -0
  301. package/src/theme/color-engine/quantizer-wu.ts +320 -0
  302. package/src/theme/color-engine/scheme-variants.ts +113 -0
  303. package/src/theme/color-engine/score.ts +82 -0
  304. package/src/theme/color-engine/seed-from-image.ts +64 -0
  305. package/src/theme/color-engine/tonal-palette.ts +94 -0
  306. package/src/theme/color-engine/tone-delta-pair.ts +21 -0
  307. package/src/theme/color-engine/variant.ts +18 -0
  308. package/src/theme/color-engine/viewing-conditions.ts +77 -0
  309. package/src/theme/color-presets.ts +54 -631
  310. package/src/theme/preset-vars.ts +65 -49
@@ -1 +1 @@
1
- {"version":3,"names":["APP_COLOR_NAMES","exports","PREMIUM_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","light","dark","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["APP_COLOR_NAMES","exports","PREMIUM_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","variant","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":";;;;;;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAGO,MAAMA,eAAwC,GAAAC,OAAA,CAAAD,eAAA,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;;AAEzK;AACO,MAAME,mBAA4C,GAAAD,OAAA,CAAAC,mBAAA,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;AAExE,MAAMC,gBAA8C,GAAAF,OAAA,CAAAE,gBAAA,GAAG;EAC5D,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE;AACb,CAAC;AAEM,SAASC,iBAAiBA,CAACC,GAAW,EAAgB;EAC3D,OAAOF,gBAAgB,CAACE,GAAG,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iBAAuD,GAAAN,OAAA,CAAAM,iBAAA,GAAG;EACrEC,IAAI,EAAE;IAAEC,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DC,IAAI,EAAE;IAAEF,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DE,KAAK,EAAE;IAAEH,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC5DG,KAAK,EAAE;IAAEJ,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC5DI,MAAM,EAAE;IAAEL,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC9DK,GAAG,EAAE;IAAEN,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EACxDM,MAAM,EAAE;IAAEP,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC9DO,IAAI,EAAE;IAAER,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DQ,GAAG,EAAE;IAAET,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EACxDS,MAAM,EAAE;IAAEV,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC9DU,IAAI,EAAE;IAAEX,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DW,GAAG,EAAE;IAAEZ,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EACxDY,QAAQ,EAAE;IAAEb,IAAI,EAAE,UAAU;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU;AACnE,CAAC","ignoreList":[]}
@@ -7,63 +7,80 @@ exports.applyPresetVarsToDocument = applyPresetVarsToDocument;
7
7
  exports.getPresetVars = getPresetVars;
8
8
  var _reactNative = require("react-native");
9
9
  var _colorPresets = require("./color-presets.js");
10
+ var _index = require("./color-engine/index.js");
10
11
  var _tokenRegistry = require("./token-registry.js");
11
12
  // Circular at the module graph level (`token-registry` imports `getPresetVars`
12
13
  // from here), but safe: `getResolvedTokens` is only referenced inside the
13
14
  // `applyPresetVarsToDocument` function body — i.e. at call time, after both
14
15
  // modules have finished evaluating — never during module initialization.
15
16
 
16
- function extractHue(hslVar) {
17
- return parseInt(hslVar.split(' ')[0] ?? '0', 10);
18
- }
19
- function extractSat(hslVar) {
20
- return parseInt(hslVar.split(' ')[1] ?? '0', 10);
21
- }
22
-
23
17
  /**
24
- * Bloom's base preset tokens extended with the surface/card/chart/sidebar
25
- * tokens that apps layer on top of the core shadcn palette. Synthesized from
26
- * the preset's primary hue so every preset stays in sync automatically.
18
+ * Map a preset (seed + variant) and mode onto Bloom's canonical CSS-var token
19
+ * set, sourcing EVERY colour from the colour engine's Material-3 role output.
20
+ *
21
+ * This replaces the old hand-authored HSL triples: the engine derives a full,
22
+ * self-consistent, WCAG-legible role set from the seed for light and dark, and
23
+ * this function assigns those roles to Bloom's token names. The token NAMES are
24
+ * unchanged (see `CANONICAL_TOKENS` in `token-registry.ts`) — only the SOURCE of
25
+ * each colour moved to the engine, so every downstream consumer keeps working.
26
+ *
27
+ * Values are full `rgb(r g b)` strings straight from the engine. `getResolvedTokens`
28
+ * passes non-HSL-triple values through untouched, so these flow through the whole
29
+ * pipeline (web document writes, native `rootVariables`, JS `ThemeColors`) unchanged.
27
30
  *
28
31
  * This is the single source of truth for extended theming vars — consumer apps
29
32
  * must not redefine these per-app.
30
- *
31
- * Values are platform-agnostic **raw HSL triples** (`'185 100% 20%'`, optionally
32
- * with a `/ A` alpha tail). The single canonical resolver `getResolvedTokens`
33
- * (in `token-registry.ts`) converts these to sRGB `rgb(...)` for BOTH web and
34
- * native runtime writes — this function only produces the raw triple map.
35
33
  */
36
34
  function getPresetVars(colorName, mode) {
37
35
  const preset = _colorPresets.APP_COLOR_PRESETS[colorName];
38
- const base = mode === 'light' ? preset.light : preset.dark;
39
- const get = key => base[key] ?? '0 0% 0%';
40
- const primary = get('--primary');
41
- const foreground = get('--foreground');
42
- const hue = extractHue(primary);
43
- const sat = Math.min(extractSat(primary), 80);
44
- const isDark = mode === 'dark';
45
- const extended = {
46
- ...base,
47
- // Light cards carry the same bold preset tint as `--popover` (H 55% 97%)
48
- // so they read as part of the preset family rather than a pure-white slab —
49
- // mirroring how dark cards (H 30% 10%) carry the accent hue into near-black.
50
- '--card': isDark ? `${hue} 30% 10%` : `${hue} 55% 97%`,
51
- '--card-foreground': foreground,
52
- '--chart-1': `${hue} ${sat}% 85%`,
53
- '--chart-2': `${hue} ${sat}% 75%`,
54
- '--chart-3': `${hue} ${sat}% 65%`,
55
- '--chart-4': `${hue} ${sat}% ${isDark ? 55 : 75}%`,
56
- '--chart-5': `${hue} ${sat}% ${isDark ? 45 : 65}%`,
57
- '--content-area': isDark ? `${hue} 30% 8%` : get('--surface'),
58
- '--sidebar-foreground': foreground,
59
- '--sidebar-primary': primary,
60
- '--sidebar-primary-foreground': get('--primary-foreground'),
61
- '--sidebar-accent': isDark ? get('--sidebar') : get('--accent'),
62
- '--sidebar-accent-foreground': isDark ? foreground : get('--accent-foreground'),
63
- '--sidebar-border': get('--border'),
64
- '--sidebar-ring': get('--ring')
36
+ const r = (0, _index.generateRoleColors)({
37
+ seed: preset.hex,
38
+ variant: preset.variant,
39
+ isDark: mode === 'dark'
40
+ });
41
+ return {
42
+ // --- base shadcn palette ---
43
+ '--background': r.background,
44
+ '--foreground': r.onBackground,
45
+ '--surface': r.surfaceContainerLow,
46
+ '--surface-foreground': r.onSurface,
47
+ '--popover': r.surfaceContainer,
48
+ '--popover-foreground': r.onSurface,
49
+ '--primary': r.primary,
50
+ '--primary-foreground': r.onPrimary,
51
+ // The FIX: `secondary` is now a REAL contrast colour (the engine's secondary
52
+ // role), not a mirror of `primary`.
53
+ '--secondary': r.secondary,
54
+ '--secondary-foreground': r.onSecondary,
55
+ '--muted': r.surfaceContainerHigh,
56
+ '--muted-foreground': r.onSurfaceVariant,
57
+ '--accent': r.secondaryContainer,
58
+ '--accent-foreground': r.onSecondaryContainer,
59
+ '--destructive': r.error,
60
+ '--border': r.outlineVariant,
61
+ '--input': r.outlineVariant,
62
+ '--ring': r.primary,
63
+ '--sidebar': r.surfaceContainerLow,
64
+ // --- extended tokens ---
65
+ // The FIX: `card` is the LIGHTEST surface (lighter than `background` in
66
+ // light, correctly darker than `background` in dark) via `surfaceContainerLowest`.
67
+ '--card': r.surfaceContainerLowest,
68
+ '--card-foreground': r.onSurface,
69
+ // Chart series: a sensible 5-step ramp across the accent trio + containers.
70
+ '--chart-1': r.primary,
71
+ '--chart-2': r.secondary,
72
+ '--chart-3': r.tertiary,
73
+ '--chart-4': r.primaryContainer,
74
+ '--chart-5': r.tertiaryContainer,
75
+ '--content-area': r.background,
76
+ '--sidebar-foreground': r.onSurface,
77
+ '--sidebar-primary': r.primary,
78
+ '--sidebar-primary-foreground': r.onPrimary,
79
+ '--sidebar-accent': r.secondaryContainer,
80
+ '--sidebar-accent-foreground': r.onSecondaryContainer,
81
+ '--sidebar-border': r.outlineVariant,
82
+ '--sidebar-ring': r.primary
65
83
  };
66
- return extended;
67
84
  }
68
85
 
69
86
  /**
@@ -72,10 +89,10 @@ function getPresetVars(colorName, mode) {
72
89
  * call this only when an app needs the extended (card/chart/sidebar) tokens on
73
90
  * the document root.
74
91
  *
75
- * Tokens are resolved to sRGB `rgb(...)` via the single canonical
76
- * `getResolvedTokens` pipeline, so `var(--x)` — the form Tailwind v4
77
- * `@theme inline` compiles its color utilities to — resolves directly to a
78
- * valid color on web.
92
+ * Tokens are resolved via the single canonical `getResolvedTokens` pipeline
93
+ * (already full `rgb(...)` colours from the engine), so `var(--x)` — the form
94
+ * Tailwind v4 `@theme inline` compiles its color utilities to — resolves
95
+ * directly to a valid color on web.
79
96
  */
80
97
  function applyPresetVarsToDocument(colorName, mode) {
81
98
  if (_reactNative.Platform.OS !== 'web' || typeof document === 'undefined') return;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_colorPresets","_tokenRegistry","extractHue","hslVar","parseInt","split","extractSat","getPresetVars","colorName","mode","preset","APP_COLOR_PRESETS","base","light","dark","get","key","primary","foreground","hue","sat","Math","min","isDark","extended","applyPresetVarsToDocument","Platform","OS","document","vars","getResolvedTokens","root","documentElement","style","value","Object","entries","setProperty"],"sourceRoot":"../../../src","sources":["theme/preset-vars.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_colorPresets","_index","_tokenRegistry","getPresetVars","colorName","mode","preset","APP_COLOR_PRESETS","r","generateRoleColors","seed","hex","variant","isDark","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondary","onSecondary","surfaceContainerHigh","onSurfaceVariant","secondaryContainer","onSecondaryContainer","error","outlineVariant","surfaceContainerLowest","tertiary","primaryContainer","tertiaryContainer","applyPresetVarsToDocument","Platform","OS","document","vars","getResolvedTokens","root","documentElement","style","key","value","Object","entries","setProperty"],"sourceRoot":"../../../src","sources":["theme/preset-vars.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ import React, { memo, useMemo } from 'react';
4
+ import { Animated, Pressable, StyleSheet, View } from 'react-native';
5
+ import { BlurView } from 'expo-blur';
6
+ import { useTheme } from "../theme/use-theme.js";
7
+ import { usePressAnimation } from "../hooks/usePressAnimation.js";
8
+ import { useInteractionState } from "../hooks/useInteractionState.js";
9
+ import { applyIconColor, resolveFrostedPalette, resolveFrostedSize } from "./shared.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const RADIUS = 999;
12
+ const PRESS_SCALE = 0.94;
13
+ const DEFAULT_HIT_SLOP = {
14
+ top: 8,
15
+ bottom: 8,
16
+ left: 8,
17
+ right: 8
18
+ };
19
+
20
+ // BlurView intensity (0–100). A gentle frost so the chip reads over an image
21
+ // without smearing the content behind it. The `active` (solid) state has none.
22
+ const BLUR_INTENSITY = 24;
23
+ const FrostedIconButtonComponent = ({
24
+ onPress,
25
+ icon,
26
+ children,
27
+ active = false,
28
+ disabled = false,
29
+ size = 'md',
30
+ accessibilityLabel,
31
+ accessibilityHint,
32
+ style,
33
+ className,
34
+ testID,
35
+ hitSlop
36
+ }) => {
37
+ const theme = useTheme();
38
+ const geo = useMemo(() => resolveFrostedSize(size), [size]);
39
+ const palette = useMemo(() => resolveFrostedPalette(theme.colors, theme.isDark), [theme.colors, theme.isDark]);
40
+ const {
41
+ scaleAnim,
42
+ onPressIn: onScalePressIn,
43
+ onPressOut: onScalePressOut
44
+ } = usePressAnimation(disabled ? undefined : PRESS_SCALE);
45
+ const {
46
+ state: pressed,
47
+ onIn: onPressedIn,
48
+ onOut: onPressedOut
49
+ } = useInteractionState();
50
+ const handlePressIn = disabled ? undefined : () => {
51
+ onScalePressIn();
52
+ onPressedIn();
53
+ };
54
+ const handlePressOut = disabled ? undefined : () => {
55
+ onScalePressOut();
56
+ onPressedOut();
57
+ };
58
+ const highlighted = pressed && !disabled;
59
+ const surface = active ? palette.activeSurface : highlighted ? palette.surfaceHover : palette.surface;
60
+ const ring = highlighted ? palette.ringHover : palette.ring;
61
+ const iconColor = active ? palette.activeIcon : palette.icon;
62
+ const containerStyle = useMemo(() => {
63
+ return {
64
+ width: geo.diameter,
65
+ height: geo.diameter,
66
+ borderRadius: RADIUS,
67
+ alignItems: 'center',
68
+ justifyContent: 'center',
69
+ borderWidth: StyleSheet.hairlineWidth * 2,
70
+ borderColor: ring,
71
+ // Soft shadow lives on the (non-clipping) Pressable so it renders on iOS —
72
+ // the blur/tint are clipped by an inner overflow:hidden layer instead.
73
+ shadowColor: palette.shadow,
74
+ shadowOffset: {
75
+ width: 0,
76
+ height: 2
77
+ },
78
+ shadowOpacity: 1,
79
+ shadowRadius: 8,
80
+ elevation: 4
81
+ };
82
+ }, [geo.diameter, ring, palette.shadow]);
83
+ const content = icon ?? children;
84
+ return /*#__PURE__*/_jsx(Animated.View, {
85
+ style: [{
86
+ transform: [{
87
+ scale: scaleAnim
88
+ }]
89
+ }, style],
90
+ children: /*#__PURE__*/_jsxs(Pressable, {
91
+ ...(className ? {
92
+ className
93
+ } : {}),
94
+ style: [containerStyle, disabled && styles.disabled],
95
+ onPress: disabled ? undefined : onPress,
96
+ onPressIn: handlePressIn,
97
+ onPressOut: handlePressOut,
98
+ disabled: disabled,
99
+ hitSlop: hitSlop ?? DEFAULT_HIT_SLOP,
100
+ accessibilityRole: "button",
101
+ accessibilityLabel: accessibilityLabel,
102
+ accessibilityHint: accessibilityHint,
103
+ accessibilityState: {
104
+ disabled,
105
+ selected: active
106
+ },
107
+ testID: testID,
108
+ children: [/*#__PURE__*/_jsxs(View, {
109
+ style: [StyleSheet.absoluteFill, styles.clip],
110
+ children: [!active && /*#__PURE__*/_jsx(BlurView, {
111
+ intensity: BLUR_INTENSITY,
112
+ tint: theme.isDark ? 'dark' : 'light',
113
+ experimentalBlurMethod: "dimezisBlurView",
114
+ style: StyleSheet.absoluteFill
115
+ }), /*#__PURE__*/_jsx(View, {
116
+ style: [StyleSheet.absoluteFill, {
117
+ backgroundColor: surface
118
+ }]
119
+ })]
120
+ }), content != null && /*#__PURE__*/_jsx(View, {
121
+ style: {
122
+ width: geo.iconBox,
123
+ height: geo.iconBox,
124
+ alignItems: 'center',
125
+ justifyContent: 'center'
126
+ },
127
+ children: applyIconColor(content, iconColor)
128
+ })]
129
+ })
130
+ });
131
+ };
132
+ const styles = StyleSheet.create({
133
+ clip: {
134
+ borderRadius: RADIUS,
135
+ overflow: 'hidden'
136
+ },
137
+ disabled: {
138
+ opacity: 0.5
139
+ }
140
+ });
141
+ export const FrostedIconButton = /*#__PURE__*/memo(FrostedIconButtonComponent);
142
+ FrostedIconButton.displayName = 'FrostedIconButton';
143
+ //# sourceMappingURL=FrostedIconButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","memo","useMemo","Animated","Pressable","StyleSheet","View","BlurView","useTheme","usePressAnimation","useInteractionState","applyIconColor","resolveFrostedPalette","resolveFrostedSize","jsx","_jsx","jsxs","_jsxs","RADIUS","PRESS_SCALE","DEFAULT_HIT_SLOP","top","bottom","left","right","BLUR_INTENSITY","FrostedIconButtonComponent","onPress","icon","children","active","disabled","size","accessibilityLabel","accessibilityHint","style","className","testID","hitSlop","theme","geo","palette","colors","isDark","scaleAnim","onPressIn","onScalePressIn","onPressOut","onScalePressOut","undefined","state","pressed","onIn","onPressedIn","onOut","onPressedOut","handlePressIn","handlePressOut","highlighted","surface","activeSurface","surfaceHover","ring","ringHover","iconColor","activeIcon","containerStyle","width","diameter","height","borderRadius","alignItems","justifyContent","borderWidth","hairlineWidth","borderColor","shadowColor","shadow","shadowOffset","shadowOpacity","shadowRadius","elevation","content","transform","scale","styles","accessibilityRole","accessibilityState","selected","absoluteFill","clip","intensity","tint","experimentalBlurMethod","backgroundColor","iconBox","create","overflow","opacity","FrostedIconButton","displayName"],"sourceRoot":"../../../src","sources":["frosted-icon-button/FrostedIconButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ import React, { memo, useCallback, useEffect, useId, useMemo } from 'react';
4
+ import { useTheme } from "../theme/use-theme.js";
5
+ import { flattenWebStyle } from "../styles/flatten-web-style.js";
6
+ import { applyIconColor, resolveFrostedPalette, resolveFrostedSize } from "./shared.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const RADIUS = 999;
9
+ const PRESS_SCALE = 0.94;
10
+
11
+ // ---------------------------------------------------------------------------
12
+ // Per-state CSS injection
13
+ //
14
+ // Inline styles cannot express `:hover` / `:focus-visible` / `:active`. We
15
+ // inject one static stylesheet (keyed by id, once) defining the interaction
16
+ // behavior for the base `bloom-frosted-icon-btn` class; per-instance resolved
17
+ // colors are passed in as inline CSS custom properties. Self-injecting the CSS
18
+ // (rather than exporting a string for consumers to paste) is the Bloom web-fork
19
+ // convention — an unresolvable rule would fail silently otherwise.
20
+ // ---------------------------------------------------------------------------
21
+
22
+ const STYLE_ID = 'bloom-frosted-icon-button-web-css';
23
+ const BLOOM_FROSTED_ICON_BUTTON_CSS = `
24
+ .bloom-frosted-icon-btn {
25
+ appearance: none;
26
+ -webkit-appearance: none;
27
+ box-sizing: border-box;
28
+ display: inline-flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ padding: 0;
32
+ margin: 0;
33
+ border-style: solid;
34
+ border-width: 1px;
35
+ font-family: inherit;
36
+ cursor: pointer;
37
+ user-select: none;
38
+ outline: none;
39
+ transition: background-color 140ms ease, border-color 140ms ease,
40
+ box-shadow 160ms ease, transform 120ms ease;
41
+ }
42
+ .bloom-frosted-icon-btn:disabled,
43
+ .bloom-frosted-icon-btn[aria-disabled="true"] {
44
+ cursor: default;
45
+ opacity: 0.5;
46
+ }
47
+ .bloom-frosted-icon-btn:not(:disabled):not([aria-disabled="true"]):not([data-active="true"]):hover {
48
+ background-color: var(--bloom-frosted-hover-bg);
49
+ border-color: var(--bloom-frosted-hover-ring);
50
+ }
51
+ .bloom-frosted-icon-btn:not(:disabled):not([aria-disabled="true"]):active {
52
+ transform: scale(var(--bloom-frosted-press-scale, 1));
53
+ }
54
+ .bloom-frosted-icon-btn:focus-visible {
55
+ outline: 2px solid var(--bloom-frosted-ring-focus, currentColor);
56
+ outline-offset: 2px;
57
+ }
58
+ `;
59
+ function useFrostedIconButtonCss() {
60
+ useEffect(() => {
61
+ if (typeof document === 'undefined') return;
62
+ if (document.getElementById(STYLE_ID)) return;
63
+ const style = document.createElement('style');
64
+ style.id = STYLE_ID;
65
+ style.textContent = BLOOM_FROSTED_ICON_BUTTON_CSS;
66
+ document.head.appendChild(style);
67
+ }, []);
68
+ }
69
+ const FrostedIconButtonWebComponent = ({
70
+ onPress,
71
+ onClick,
72
+ icon,
73
+ children,
74
+ active = false,
75
+ disabled = false,
76
+ size = 'md',
77
+ accessibilityLabel,
78
+ 'aria-label': ariaLabelProp,
79
+ accessibilityHint,
80
+ style,
81
+ className,
82
+ testID,
83
+ id,
84
+ title,
85
+ type = 'button'
86
+ }) => {
87
+ useFrostedIconButtonCss();
88
+ const theme = useTheme();
89
+ const reactId = useId();
90
+ const resolvedId = id ?? `bloom-frosted-icon-btn-${reactId}`;
91
+ const geo = useMemo(() => resolveFrostedSize(size), [size]);
92
+ const palette = useMemo(() => resolveFrostedPalette(theme.colors, theme.isDark), [theme.colors, theme.isDark]);
93
+ const iconColor = active ? palette.activeIcon : palette.icon;
94
+ const blur = `blur(${geo.blur}px)`;
95
+ const containerStyle = useMemo(() => {
96
+ return {
97
+ width: geo.diameter,
98
+ height: geo.diameter,
99
+ borderRadius: RADIUS,
100
+ backgroundColor: active ? palette.activeSurface : palette.surface,
101
+ borderColor: palette.ring,
102
+ color: iconColor,
103
+ // Real CSS backdrop blur so the chip frosts over content behind it. The
104
+ // solid `active` state drops the blur. Both prefixed forms for Safari.
105
+ backdropFilter: active ? 'none' : blur,
106
+ WebkitBackdropFilter: active ? 'none' : blur,
107
+ // Soft shadow kept in BOTH modes so the chip has an edge on a solid bg.
108
+ boxShadow: `0 2px 8px ${palette.shadow}`,
109
+ ['--bloom-frosted-hover-bg']: palette.surfaceHover,
110
+ ['--bloom-frosted-hover-ring']: palette.ringHover,
111
+ ['--bloom-frosted-ring-focus']: palette.focusRing,
112
+ ['--bloom-frosted-press-scale']: PRESS_SCALE
113
+ };
114
+ }, [geo.diameter, active, palette.activeSurface, palette.surface, palette.ring, palette.surfaceHover, palette.ringHover, palette.focusRing, palette.shadow, iconColor, blur]);
115
+ const handleClick = useCallback(event => {
116
+ if (disabled) {
117
+ event.preventDefault();
118
+ return;
119
+ }
120
+ onClick?.(event);
121
+ onPress?.();
122
+ }, [disabled, onClick, onPress]);
123
+ const ariaLabel = ariaLabelProp ?? accessibilityLabel;
124
+ const composedClassName = ['bloom-frosted-icon-btn'].concat(className ? [className] : []).join(' ');
125
+
126
+ // `style` is an RN `StyleProp` (array-capable). Flatten before spreading into
127
+ // the raw DOM `style` object so an array form never leaks numeric keys onto
128
+ // the element's CSSStyleDeclaration. See `flattenWebStyle` for the rationale.
129
+ const resolvedStyle = flattenWebStyle(style);
130
+ const content = icon ?? children;
131
+ return /*#__PURE__*/_jsx("button", {
132
+ id: resolvedId,
133
+ type: type,
134
+ className: composedClassName,
135
+ style: {
136
+ ...containerStyle,
137
+ ...resolvedStyle
138
+ },
139
+ onClick: handleClick,
140
+ disabled: disabled,
141
+ "aria-disabled": disabled || undefined,
142
+ "aria-label": ariaLabel,
143
+ "aria-pressed": active,
144
+ "data-active": active || undefined,
145
+ title: title ?? accessibilityHint,
146
+ "data-testid": testID,
147
+ children: content != null && /*#__PURE__*/_jsx("span", {
148
+ style: {
149
+ display: 'inline-flex',
150
+ alignItems: 'center',
151
+ justifyContent: 'center',
152
+ width: geo.iconBox,
153
+ height: geo.iconBox
154
+ },
155
+ children: applyIconColor(content, iconColor)
156
+ })
157
+ });
158
+ };
159
+ export const FrostedIconButton = /*#__PURE__*/memo(FrostedIconButtonWebComponent);
160
+ FrostedIconButton.displayName = 'FrostedIconButton';
161
+ //# sourceMappingURL=FrostedIconButton.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","memo","useCallback","useEffect","useId","useMemo","useTheme","flattenWebStyle","applyIconColor","resolveFrostedPalette","resolveFrostedSize","jsx","_jsx","RADIUS","PRESS_SCALE","STYLE_ID","BLOOM_FROSTED_ICON_BUTTON_CSS","useFrostedIconButtonCss","document","getElementById","style","createElement","id","textContent","head","appendChild","FrostedIconButtonWebComponent","onPress","onClick","icon","children","active","disabled","size","accessibilityLabel","ariaLabelProp","accessibilityHint","className","testID","title","type","theme","reactId","resolvedId","geo","palette","colors","isDark","iconColor","activeIcon","blur","containerStyle","width","diameter","height","borderRadius","backgroundColor","activeSurface","surface","borderColor","ring","color","backdropFilter","WebkitBackdropFilter","boxShadow","shadow","surfaceHover","ringHover","focusRing","handleClick","event","preventDefault","ariaLabel","composedClassName","concat","join","resolvedStyle","content","undefined","display","alignItems","justifyContent","iconBox","FrostedIconButton","displayName"],"sourceRoot":"../../../src","sources":["frosted-icon-button/FrostedIconButton.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { FrostedIconButton } from './FrostedIconButton';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FrostedIconButton"],"sourceRoot":"../../../src","sources":["frosted-icon-button/index.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,qBAAqB","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ // Web variant of the `./frosted-icon-button` barrel.
4
+ //
5
+ // The default barrel (`./index.ts`) re-exports the React Native implementation,
6
+ // which frosts via `expo-blur`'s `BlurView`. The web fork (`./FrostedIconButton.web`)
7
+ // renders a real HTML `<button>` and frosts via a real CSS `backdrop-filter` —
8
+ // no `expo-blur` import ever reaches a web bundler. Web bundlers select this
9
+ // file via the `"browser"` export condition in `package.json`.
10
+ export { FrostedIconButton } from "./FrostedIconButton.web.js";
11
+ //# sourceMappingURL=index.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FrostedIconButton"],"sourceRoot":"../../../src","sources":["frosted-icon-button/index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,iBAAiB,QAAQ,4BAAyB","ignoreList":[]}