react-native-unistyles 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -38
  3. package/android/CMakeLists.txt +27 -0
  4. package/android/build.gradle +75 -0
  5. package/android/src/main/cxx/cpp-adapter.cpp +132 -0
  6. package/android/src/main/java/com/unistyles/UnistylesModule.kt +189 -0
  7. package/android/src/main/java/com/unistyles/UnistylesPackage.kt +18 -0
  8. package/cxx/UnistylesRuntime.cpp +318 -0
  9. package/cxx/UnistylesRuntime.h +74 -0
  10. package/ios/UnistylesHelpers.h +3 -0
  11. package/ios/UnistylesHelpers.mm +5 -0
  12. package/ios/UnistylesModule.h +16 -0
  13. package/ios/UnistylesModule.mm +138 -0
  14. package/ios/platform/Platform_iOS.h +21 -0
  15. package/ios/platform/Platform_iOS.mm +132 -0
  16. package/ios/platform/Platform_macOS.h +20 -0
  17. package/ios/platform/Platform_macOS.mm +83 -0
  18. package/lib/commonjs/common.js +60 -0
  19. package/lib/commonjs/common.js.map +1 -0
  20. package/lib/commonjs/core/UnistyleRegistry.js +94 -0
  21. package/lib/commonjs/core/UnistyleRegistry.js.map +1 -0
  22. package/lib/commonjs/core/Unistyles.js +32 -0
  23. package/lib/commonjs/core/Unistyles.js.map +1 -0
  24. package/lib/commonjs/core/UnistylesModule.js +197 -0
  25. package/lib/commonjs/core/UnistylesModule.js.map +1 -0
  26. package/lib/commonjs/core/UnistylesModule.native.js +9 -0
  27. package/lib/commonjs/core/UnistylesModule.native.js.map +1 -0
  28. package/lib/commonjs/core/UnistylesRuntime.js +140 -0
  29. package/lib/commonjs/core/UnistylesRuntime.js.map +1 -0
  30. package/lib/commonjs/core/index.js +13 -0
  31. package/lib/commonjs/core/index.js.map +1 -0
  32. package/lib/commonjs/createStyleSheet.js +14 -0
  33. package/lib/commonjs/createStyleSheet.js.map +1 -0
  34. package/lib/commonjs/global.js +2 -0
  35. package/lib/commonjs/global.js.map +1 -0
  36. package/lib/commonjs/hooks/index.js +24 -3
  37. package/lib/commonjs/hooks/index.js.map +1 -1
  38. package/lib/commonjs/hooks/useCSS.js +44 -0
  39. package/lib/commonjs/hooks/useCSS.js.map +1 -0
  40. package/lib/commonjs/hooks/useCSS.native.js +9 -0
  41. package/lib/commonjs/hooks/useCSS.native.js.map +1 -0
  42. package/lib/commonjs/hooks/useInitialTheme.js +17 -0
  43. package/lib/commonjs/hooks/useInitialTheme.js.map +1 -0
  44. package/lib/commonjs/hooks/useUnistyles.js +64 -0
  45. package/lib/commonjs/hooks/useUnistyles.js.map +1 -0
  46. package/lib/commonjs/hooks/useVariants.js +14 -0
  47. package/lib/commonjs/hooks/useVariants.js.map +1 -0
  48. package/lib/commonjs/index.js +63 -6
  49. package/lib/commonjs/index.js.map +1 -1
  50. package/lib/commonjs/normalizer/index.js +32 -0
  51. package/lib/commonjs/normalizer/index.js.map +1 -0
  52. package/lib/commonjs/normalizer/module.d.js.map +1 -0
  53. package/lib/commonjs/{utils/normalizeStyles.web.js → normalizer/normalizeStyle.js} +5 -5
  54. package/lib/commonjs/normalizer/normalizeStyle.js.map +1 -0
  55. package/lib/commonjs/{utils → normalizer}/normalizer.js +2 -3
  56. package/lib/commonjs/normalizer/normalizer.js.map +1 -0
  57. package/lib/commonjs/normalizer/normalizer.macos.js +3 -0
  58. package/lib/commonjs/normalizer/normalizer.macos.js.map +1 -0
  59. package/lib/commonjs/plugins/cssMediaQueriesPlugin.js +14 -0
  60. package/lib/commonjs/plugins/cssMediaQueriesPlugin.js.map +1 -0
  61. package/lib/commonjs/plugins/index.js +20 -0
  62. package/lib/commonjs/plugins/index.js.map +1 -0
  63. package/lib/commonjs/plugins/normalizeWebStylesPlugin.js +12 -0
  64. package/lib/commonjs/plugins/normalizeWebStylesPlugin.js.map +1 -0
  65. package/lib/commonjs/types/common.js +2 -0
  66. package/lib/{module/utils/module.d.js.map → commonjs/types/common.js.map} +1 -1
  67. package/lib/commonjs/types/index.js +11 -0
  68. package/lib/commonjs/types/index.js.map +1 -1
  69. package/lib/commonjs/types/plugin.js +6 -0
  70. package/lib/commonjs/{utils/module.d.js.map → types/plugin.js.map} +1 -1
  71. package/lib/commonjs/types/stylesheet.js +6 -0
  72. package/lib/commonjs/types/{mediaQueries.js.map → stylesheet.js.map} +1 -1
  73. package/lib/commonjs/types/unistyles.js +6 -0
  74. package/lib/{module/types/mediaQueries.js.map → commonjs/types/unistyles.js.map} +1 -1
  75. package/lib/commonjs/types/variants.js +2 -0
  76. package/lib/commonjs/types/variants.js.map +1 -0
  77. package/lib/commonjs/useStyles.js +47 -0
  78. package/lib/commonjs/useStyles.js.map +1 -0
  79. package/lib/commonjs/utils/breakpoints.js +20 -122
  80. package/lib/commonjs/utils/breakpoints.js.map +1 -1
  81. package/lib/commonjs/utils/cssMediaQuery.js +244 -0
  82. package/lib/commonjs/utils/cssMediaQuery.js.map +1 -0
  83. package/lib/commonjs/utils/generateId.js +15 -0
  84. package/lib/commonjs/utils/generateId.js.map +1 -0
  85. package/lib/commonjs/utils/hash32.js +43 -0
  86. package/lib/commonjs/utils/hash32.js.map +1 -0
  87. package/lib/commonjs/utils/index.js +22 -54
  88. package/lib/commonjs/utils/index.js.map +1 -1
  89. package/lib/commonjs/utils/mq.js +38 -0
  90. package/lib/commonjs/utils/mq.js.map +1 -0
  91. package/lib/commonjs/utils/mqParser.js +89 -0
  92. package/lib/commonjs/utils/mqParser.js.map +1 -0
  93. package/lib/commonjs/utils/styles.js +45 -72
  94. package/lib/commonjs/utils/styles.js.map +1 -1
  95. package/lib/commonjs/utils/withPlugins.js +15 -0
  96. package/lib/commonjs/utils/withPlugins.js.map +1 -0
  97. package/lib/module/common.js +53 -0
  98. package/lib/module/common.js.map +1 -0
  99. package/lib/module/core/UnistyleRegistry.js +87 -0
  100. package/lib/module/core/UnistyleRegistry.js.map +1 -0
  101. package/lib/module/core/Unistyles.js +26 -0
  102. package/lib/module/core/Unistyles.js.map +1 -0
  103. package/lib/module/core/UnistylesModule.js +190 -0
  104. package/lib/module/core/UnistylesModule.js.map +1 -0
  105. package/lib/module/core/UnistylesModule.native.js +3 -0
  106. package/lib/module/core/UnistylesModule.native.js.map +1 -0
  107. package/lib/module/core/UnistylesRuntime.js +133 -0
  108. package/lib/module/core/UnistylesRuntime.js.map +1 -0
  109. package/lib/module/core/index.js +2 -0
  110. package/lib/module/core/index.js.map +1 -0
  111. package/lib/module/createStyleSheet.js +7 -0
  112. package/lib/module/createStyleSheet.js.map +1 -0
  113. package/lib/module/global.js +2 -0
  114. package/lib/module/global.js.map +1 -0
  115. package/lib/module/hooks/index.js +4 -1
  116. package/lib/module/hooks/index.js.map +1 -1
  117. package/lib/module/hooks/useCSS.js +37 -0
  118. package/lib/module/hooks/useCSS.js.map +1 -0
  119. package/lib/module/hooks/useCSS.native.js +2 -0
  120. package/lib/module/hooks/useCSS.native.js.map +1 -0
  121. package/lib/module/hooks/useInitialTheme.js +10 -0
  122. package/lib/module/hooks/useInitialTheme.js.map +1 -0
  123. package/lib/module/hooks/useUnistyles.js +57 -0
  124. package/lib/module/hooks/useUnistyles.js.map +1 -0
  125. package/lib/module/hooks/useVariants.js +7 -0
  126. package/lib/module/hooks/useVariants.js.map +1 -0
  127. package/lib/module/index.js +30 -2
  128. package/lib/module/index.js.map +1 -1
  129. package/lib/module/normalizer/index.js +3 -0
  130. package/lib/module/normalizer/index.js.map +1 -0
  131. package/lib/module/normalizer/module.d.js.map +1 -0
  132. package/lib/module/{utils/normalizeStyles.web.js → normalizer/normalizeStyle.js} +3 -3
  133. package/lib/module/normalizer/normalizeStyle.js.map +1 -0
  134. package/lib/module/{utils → normalizer}/normalizer.js +2 -3
  135. package/lib/module/normalizer/normalizer.js.map +1 -0
  136. package/lib/module/normalizer/normalizer.macos.js +2 -0
  137. package/lib/module/normalizer/normalizer.macos.js.map +1 -0
  138. package/lib/module/plugins/cssMediaQueriesPlugin.js +7 -0
  139. package/lib/module/plugins/cssMediaQueriesPlugin.js.map +1 -0
  140. package/lib/module/plugins/index.js +3 -0
  141. package/lib/module/plugins/index.js.map +1 -0
  142. package/lib/module/plugins/normalizeWebStylesPlugin.js +6 -0
  143. package/lib/module/plugins/normalizeWebStylesPlugin.js.map +1 -0
  144. package/lib/module/types/common.js +2 -0
  145. package/lib/module/types/common.js.map +1 -0
  146. package/lib/module/types/index.js +1 -0
  147. package/lib/module/types/index.js.map +1 -1
  148. package/lib/module/types/plugin.js +2 -0
  149. package/lib/module/types/plugin.js.map +1 -0
  150. package/lib/module/types/stylesheet.js +2 -0
  151. package/lib/module/types/stylesheet.js.map +1 -0
  152. package/lib/module/types/unistyles.js +2 -0
  153. package/lib/module/types/unistyles.js.map +1 -0
  154. package/lib/module/types/variants.js +2 -0
  155. package/lib/module/types/variants.js.map +1 -0
  156. package/lib/module/useStyles.js +40 -0
  157. package/lib/module/useStyles.js.map +1 -0
  158. package/lib/module/utils/breakpoints.js +19 -120
  159. package/lib/module/utils/breakpoints.js.map +1 -1
  160. package/lib/module/utils/cssMediaQuery.js +237 -0
  161. package/lib/module/utils/cssMediaQuery.js.map +1 -0
  162. package/lib/module/utils/generateId.js +7 -0
  163. package/lib/module/utils/generateId.js.map +1 -0
  164. package/lib/module/utils/hash32.js +36 -0
  165. package/lib/module/utils/hash32.js.map +1 -0
  166. package/lib/module/utils/index.js +6 -6
  167. package/lib/module/utils/index.js.map +1 -1
  168. package/lib/module/utils/mq.js +32 -0
  169. package/lib/module/utils/mq.js.map +1 -0
  170. package/lib/module/utils/mqParser.js +78 -0
  171. package/lib/module/utils/mqParser.js.map +1 -0
  172. package/lib/module/utils/styles.js +44 -72
  173. package/lib/module/utils/styles.js.map +1 -1
  174. package/lib/module/utils/withPlugins.js +8 -0
  175. package/lib/module/utils/withPlugins.js.map +1 -0
  176. package/lib/typescript/src/common.d.ts +46 -0
  177. package/lib/typescript/src/common.d.ts.map +1 -0
  178. package/lib/typescript/src/core/UnistyleRegistry.d.ts +56 -0
  179. package/lib/typescript/src/core/UnistyleRegistry.d.ts.map +1 -0
  180. package/lib/typescript/src/core/Unistyles.d.ts +13 -0
  181. package/lib/typescript/src/core/Unistyles.d.ts.map +1 -0
  182. package/lib/typescript/src/core/UnistylesModule.d.ts +19 -0
  183. package/lib/typescript/src/core/UnistylesModule.d.ts.map +1 -0
  184. package/lib/typescript/src/core/UnistylesModule.native.d.ts +6 -0
  185. package/lib/typescript/src/core/UnistylesModule.native.d.ts.map +1 -0
  186. package/lib/typescript/src/core/UnistylesRuntime.d.ts +81 -0
  187. package/lib/typescript/src/core/UnistylesRuntime.d.ts.map +1 -0
  188. package/lib/typescript/src/core/index.d.ts +3 -0
  189. package/lib/typescript/src/core/index.d.ts.map +1 -0
  190. package/lib/typescript/src/createStyleSheet.d.ts +8 -0
  191. package/lib/typescript/src/createStyleSheet.d.ts.map +1 -0
  192. package/lib/typescript/src/global.d.ts +7 -0
  193. package/lib/typescript/src/global.d.ts.map +1 -0
  194. package/lib/typescript/src/hooks/index.d.ts +4 -1
  195. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  196. package/lib/typescript/src/hooks/useCSS.d.ts +3 -0
  197. package/lib/typescript/src/hooks/useCSS.d.ts.map +1 -0
  198. package/lib/typescript/src/hooks/useCSS.native.d.ts +3 -0
  199. package/lib/typescript/src/hooks/useCSS.native.d.ts.map +1 -0
  200. package/lib/typescript/src/hooks/useInitialTheme.d.ts +3 -0
  201. package/lib/typescript/src/hooks/useInitialTheme.d.ts.map +1 -0
  202. package/lib/typescript/src/hooks/useUnistyles.d.ts +14 -0
  203. package/lib/typescript/src/hooks/useUnistyles.d.ts.map +1 -0
  204. package/lib/typescript/src/hooks/useVariants.d.ts +3 -0
  205. package/lib/typescript/src/hooks/useVariants.d.ts.map +1 -0
  206. package/lib/typescript/src/index.d.ts +76 -2
  207. package/lib/typescript/src/index.d.ts.map +1 -1
  208. package/lib/typescript/src/normalizer/index.d.ts +3 -0
  209. package/lib/typescript/src/normalizer/index.d.ts.map +1 -0
  210. package/lib/typescript/src/normalizer/normalizeStyle.d.ts +3 -0
  211. package/lib/typescript/src/normalizer/normalizeStyle.d.ts.map +1 -0
  212. package/lib/typescript/src/normalizer/normalizer.d.ts.map +1 -0
  213. package/lib/typescript/src/normalizer/normalizer.macos.d.ts +1 -0
  214. package/lib/typescript/src/normalizer/normalizer.macos.d.ts.map +1 -0
  215. package/lib/typescript/src/plugins/cssMediaQueriesPlugin.d.ts +3 -0
  216. package/lib/typescript/src/plugins/cssMediaQueriesPlugin.d.ts.map +1 -0
  217. package/lib/typescript/src/plugins/index.d.ts +3 -0
  218. package/lib/typescript/src/plugins/index.d.ts.map +1 -0
  219. package/lib/typescript/src/plugins/normalizeWebStylesPlugin.d.ts +3 -0
  220. package/lib/typescript/src/plugins/normalizeWebStylesPlugin.d.ts.map +1 -0
  221. package/lib/typescript/src/types/breakpoints.d.ts +25 -17
  222. package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
  223. package/lib/typescript/src/types/common.d.ts +3 -0
  224. package/lib/typescript/src/types/common.d.ts.map +1 -0
  225. package/lib/typescript/src/types/core.d.ts +11 -25
  226. package/lib/typescript/src/types/core.d.ts.map +1 -1
  227. package/lib/typescript/src/types/index.d.ts +7 -2
  228. package/lib/typescript/src/types/index.d.ts.map +1 -1
  229. package/lib/typescript/src/types/plugin.d.ts +7 -0
  230. package/lib/typescript/src/types/plugin.d.ts.map +1 -0
  231. package/lib/typescript/src/types/stylesheet.d.ts +40 -0
  232. package/lib/typescript/src/types/stylesheet.d.ts.map +1 -0
  233. package/lib/typescript/src/types/unistyles.d.ts +53 -0
  234. package/lib/typescript/src/types/unistyles.d.ts.map +1 -0
  235. package/lib/typescript/src/types/variants.d.ts +14 -0
  236. package/lib/typescript/src/types/variants.d.ts.map +1 -0
  237. package/lib/typescript/src/useStyles.d.ts +16 -0
  238. package/lib/typescript/src/useStyles.d.ts.map +1 -0
  239. package/lib/typescript/src/utils/breakpoints.d.ts +2 -62
  240. package/lib/typescript/src/utils/breakpoints.d.ts.map +1 -1
  241. package/lib/typescript/src/utils/cssMediaQuery.d.ts +4 -0
  242. package/lib/typescript/src/utils/cssMediaQuery.d.ts.map +1 -0
  243. package/lib/typescript/src/utils/generateId.d.ts +2 -0
  244. package/lib/typescript/src/utils/generateId.d.ts.map +1 -0
  245. package/lib/typescript/src/utils/hash32.d.ts +2 -0
  246. package/lib/typescript/src/utils/hash32.d.ts.map +1 -0
  247. package/lib/typescript/src/utils/index.d.ts +7 -6
  248. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  249. package/lib/typescript/src/utils/mq.d.ts +26 -0
  250. package/lib/typescript/src/utils/mq.d.ts.map +1 -0
  251. package/lib/typescript/src/utils/mqParser.d.ts +16 -0
  252. package/lib/typescript/src/utils/mqParser.d.ts.map +1 -0
  253. package/lib/typescript/src/utils/styles.d.ts +3 -49
  254. package/lib/typescript/src/utils/styles.d.ts.map +1 -1
  255. package/lib/typescript/src/utils/withPlugins.d.ts +3 -0
  256. package/lib/typescript/src/utils/withPlugins.d.ts.map +1 -0
  257. package/package.json +46 -25
  258. package/react-native-unistyles.podspec +22 -0
  259. package/src/__tests__/mocks.ts +24 -0
  260. package/src/common.ts +55 -0
  261. package/src/core/UnistyleRegistry.ts +108 -0
  262. package/src/core/Unistyles.ts +35 -0
  263. package/src/core/UnistylesModule.native.ts +7 -0
  264. package/src/core/UnistylesModule.ts +230 -0
  265. package/src/core/UnistylesRuntime.ts +135 -0
  266. package/src/core/index.ts +2 -0
  267. package/src/createStyleSheet.ts +8 -0
  268. package/src/global.ts +6 -0
  269. package/src/hooks/index.ts +4 -1
  270. package/src/hooks/useCSS.native.ts +3 -0
  271. package/src/hooks/useCSS.ts +51 -0
  272. package/src/hooks/useInitialTheme.ts +11 -0
  273. package/src/hooks/useUnistyles.ts +64 -0
  274. package/src/hooks/useVariants.ts +10 -0
  275. package/src/index.ts +50 -2
  276. package/src/normalizer/index.ts +2 -0
  277. package/src/{utils/normalizeStyles.web.ts → normalizer/normalizeStyle.ts} +3 -3
  278. package/src/normalizer/normalizer.macos.ts +1 -0
  279. package/src/{utils → normalizer}/normalizer.ts +5 -4
  280. package/src/plugins/cssMediaQueriesPlugin.ts +8 -0
  281. package/src/plugins/index.ts +2 -0
  282. package/src/plugins/normalizeWebStylesPlugin.ts +7 -0
  283. package/src/types/breakpoints.ts +58 -33
  284. package/src/types/common.ts +2 -0
  285. package/src/types/core.ts +11 -36
  286. package/src/types/index.ts +12 -7
  287. package/src/types/plugin.ts +7 -0
  288. package/src/types/stylesheet.ts +49 -0
  289. package/src/types/unistyles.ts +63 -0
  290. package/src/types/variants.ts +19 -0
  291. package/src/useStyles.ts +60 -0
  292. package/src/utils/breakpoints.ts +28 -124
  293. package/src/utils/cssMediaQuery.ts +268 -0
  294. package/src/utils/generateId.ts +10 -0
  295. package/src/utils/hash32.ts +53 -0
  296. package/src/utils/index.ts +7 -13
  297. package/src/utils/mq.ts +57 -0
  298. package/src/utils/mqParser.ts +99 -0
  299. package/src/utils/styles.ts +54 -102
  300. package/src/utils/withPlugins.ts +13 -0
  301. package/lib/commonjs/UnistylesTheme.js +0 -21
  302. package/lib/commonjs/UnistylesTheme.js.map +0 -1
  303. package/lib/commonjs/createUnistyles.js +0 -57
  304. package/lib/commonjs/createUnistyles.js.map +0 -1
  305. package/lib/commonjs/hooks/useDimensions.js +0 -10
  306. package/lib/commonjs/hooks/useDimensions.js.map +0 -1
  307. package/lib/commonjs/hooks/useDimensions.web.js +0 -34
  308. package/lib/commonjs/hooks/useDimensions.web.js.map +0 -1
  309. package/lib/commonjs/types/mediaQueries.js +0 -2
  310. package/lib/commonjs/utils/common.js +0 -20
  311. package/lib/commonjs/utils/common.js.map +0 -1
  312. package/lib/commonjs/utils/mediaQueries.js +0 -189
  313. package/lib/commonjs/utils/mediaQueries.js.map +0 -1
  314. package/lib/commonjs/utils/normalizeStyles.js +0 -10
  315. package/lib/commonjs/utils/normalizeStyles.js.map +0 -1
  316. package/lib/commonjs/utils/normalizeStyles.web.js.map +0 -1
  317. package/lib/commonjs/utils/normalizer.js.map +0 -1
  318. package/lib/module/UnistylesTheme.js +0 -12
  319. package/lib/module/UnistylesTheme.js.map +0 -1
  320. package/lib/module/createUnistyles.js +0 -50
  321. package/lib/module/createUnistyles.js.map +0 -1
  322. package/lib/module/hooks/useDimensions.js +0 -3
  323. package/lib/module/hooks/useDimensions.js.map +0 -1
  324. package/lib/module/hooks/useDimensions.web.js +0 -27
  325. package/lib/module/hooks/useDimensions.web.js.map +0 -1
  326. package/lib/module/types/mediaQueries.js +0 -2
  327. package/lib/module/utils/common.js +0 -12
  328. package/lib/module/utils/common.js.map +0 -1
  329. package/lib/module/utils/mediaQueries.js +0 -176
  330. package/lib/module/utils/mediaQueries.js.map +0 -1
  331. package/lib/module/utils/normalizeStyles.js +0 -3
  332. package/lib/module/utils/normalizeStyles.js.map +0 -1
  333. package/lib/module/utils/normalizeStyles.web.js.map +0 -1
  334. package/lib/module/utils/normalizer.js.map +0 -1
  335. package/lib/typescript/examples/expo/src/App.d.ts +0 -3
  336. package/lib/typescript/examples/expo/src/App.d.ts.map +0 -1
  337. package/lib/typescript/examples/expo/src/examples/Breakpoints.d.ts +0 -3
  338. package/lib/typescript/examples/expo/src/examples/Breakpoints.d.ts.map +0 -1
  339. package/lib/typescript/examples/expo/src/examples/EmptyStyles.d.ts +0 -3
  340. package/lib/typescript/examples/expo/src/examples/EmptyStyles.d.ts.map +0 -1
  341. package/lib/typescript/examples/expo/src/examples/Extreme.d.ts +0 -7
  342. package/lib/typescript/examples/expo/src/examples/Extreme.d.ts.map +0 -1
  343. package/lib/typescript/examples/expo/src/examples/MediaQueries.d.ts +0 -3
  344. package/lib/typescript/examples/expo/src/examples/MediaQueries.d.ts.map +0 -1
  345. package/lib/typescript/examples/expo/src/examples/Memoization.d.ts +0 -3
  346. package/lib/typescript/examples/expo/src/examples/Memoization.d.ts.map +0 -1
  347. package/lib/typescript/examples/expo/src/examples/Minimal.d.ts +0 -3
  348. package/lib/typescript/examples/expo/src/examples/Minimal.d.ts.map +0 -1
  349. package/lib/typescript/examples/expo/src/examples/MinimalWithCreateStyleSheet.d.ts +0 -3
  350. package/lib/typescript/examples/expo/src/examples/MinimalWithCreateStyleSheet.d.ts.map +0 -1
  351. package/lib/typescript/examples/expo/src/examples/PlatformColors.d.ts +0 -3
  352. package/lib/typescript/examples/expo/src/examples/PlatformColors.d.ts.map +0 -1
  353. package/lib/typescript/examples/expo/src/examples/Theme.d.ts +0 -3
  354. package/lib/typescript/examples/expo/src/examples/Theme.d.ts.map +0 -1
  355. package/lib/typescript/examples/expo/src/examples/index.d.ts +0 -9
  356. package/lib/typescript/examples/expo/src/examples/index.d.ts.map +0 -1
  357. package/lib/typescript/examples/expo/src/index.d.ts +0 -2
  358. package/lib/typescript/examples/expo/src/index.d.ts.map +0 -1
  359. package/lib/typescript/examples/expo/src/styles/breakpoints.d.ts +0 -8
  360. package/lib/typescript/examples/expo/src/styles/breakpoints.d.ts.map +0 -1
  361. package/lib/typescript/examples/expo/src/styles/index.d.ts +0 -46
  362. package/lib/typescript/examples/expo/src/styles/index.d.ts.map +0 -1
  363. package/lib/typescript/examples/expo/src/styles/theme.d.ts +0 -24
  364. package/lib/typescript/examples/expo/src/styles/theme.d.ts.map +0 -1
  365. package/lib/typescript/src/UnistylesTheme.d.ts +0 -9
  366. package/lib/typescript/src/UnistylesTheme.d.ts.map +0 -1
  367. package/lib/typescript/src/createUnistyles.d.ts +0 -10
  368. package/lib/typescript/src/createUnistyles.d.ts.map +0 -1
  369. package/lib/typescript/src/hooks/useDimensions.d.ts +0 -3
  370. package/lib/typescript/src/hooks/useDimensions.d.ts.map +0 -1
  371. package/lib/typescript/src/hooks/useDimensions.web.d.ts +0 -3
  372. package/lib/typescript/src/hooks/useDimensions.web.d.ts.map +0 -1
  373. package/lib/typescript/src/types/mediaQueries.d.ts +0 -8
  374. package/lib/typescript/src/types/mediaQueries.d.ts.map +0 -1
  375. package/lib/typescript/src/utils/common.d.ts +0 -7
  376. package/lib/typescript/src/utils/common.d.ts.map +0 -1
  377. package/lib/typescript/src/utils/mediaQueries.d.ts +0 -130
  378. package/lib/typescript/src/utils/mediaQueries.d.ts.map +0 -1
  379. package/lib/typescript/src/utils/normalizeStyles.d.ts +0 -2
  380. package/lib/typescript/src/utils/normalizeStyles.d.ts.map +0 -1
  381. package/lib/typescript/src/utils/normalizeStyles.web.d.ts +0 -5
  382. package/lib/typescript/src/utils/normalizeStyles.web.d.ts.map +0 -1
  383. package/lib/typescript/src/utils/normalizer.d.ts.map +0 -1
  384. package/src/UnistylesTheme.tsx +0 -17
  385. package/src/__tests__/createUnistyles.spec.tsx +0 -192
  386. package/src/createUnistyles.ts +0 -70
  387. package/src/hooks/useDimensions.ts +0 -4
  388. package/src/hooks/useDimensions.web.ts +0 -34
  389. package/src/types/mediaQueries.ts +0 -10
  390. package/src/utils/common.ts +0 -14
  391. package/src/utils/mediaQueries.ts +0 -201
  392. package/src/utils/normalizeStyles.ts +0 -2
  393. /package/lib/commonjs/{utils → normalizer}/module.d.js +0 -0
  394. /package/lib/module/{utils → normalizer}/module.d.js +0 -0
  395. /package/lib/typescript/src/{utils → normalizer}/normalizer.d.ts +0 -0
  396. /package/src/{utils → normalizer}/module.d.ts +0 -0
@@ -0,0 +1,230 @@
1
+ import { NativeEventEmitter, NativeModules } from 'react-native'
2
+ import type { UnistylesThemes, UnistylesBreakpoints } from 'react-native-unistyles'
3
+ import type { ColorSchemeName } from '../types'
4
+ import { normalizeWebStylesPlugin } from '../plugins'
5
+ import { isServer } from '../common'
6
+
7
+ export class UnistylesBridgeWeb {
8
+ #timerRef?: ReturnType<typeof setTimeout> = undefined
9
+ #hasAdaptiveThemes: boolean = false
10
+ #supportsAutomaticColorScheme = false
11
+ #screenWidth = isServer ? undefined : window.innerWidth
12
+ #screenHeight = isServer ? undefined : window.innerHeight
13
+ #themes: Array<keyof UnistylesThemes> = []
14
+ #breakpoints: UnistylesBreakpoints = {} as UnistylesBreakpoints
15
+ #colorScheme: ColorSchemeName = this.getPreferredColorScheme()
16
+ #themeName: keyof UnistylesThemes = '' as keyof UnistylesThemes
17
+ #enabledPlugins: Array<string> = [normalizeWebStylesPlugin.name]
18
+ #unistylesEvents = new NativeEventEmitter(NativeModules.Unistyles)
19
+ #sortedBreakpointPairs: Array<[keyof UnistylesBreakpoints, number]> = []
20
+ #breakpoint: keyof UnistylesBreakpoints = '' as keyof UnistylesBreakpoints
21
+ #contentSizeCategory: string = 'unspecified'
22
+
23
+ constructor() {
24
+ if (!isServer) {
25
+ this.setupListeners()
26
+ this.#screenWidth = window.innerWidth
27
+ this.#screenHeight = window.innerHeight
28
+ }
29
+ }
30
+
31
+ public install() {
32
+ // @ts-ignore
33
+ // eslint-disable-next-line no-undef
34
+ globalThis.__UNISTYLES__ = new Proxy({}, {
35
+ get: (_target, prop) => {
36
+ switch (prop) {
37
+ case 'themeName':
38
+ return this.getTheme()
39
+ case 'screenWidth':
40
+ return this.#screenWidth
41
+ case 'screenHeight':
42
+ return this.#screenHeight
43
+ case 'contentSizeCategory':
44
+ return this.#contentSizeCategory
45
+ case 'breakpoint':
46
+ return this.#breakpoint || undefined
47
+ case 'breakpoints':
48
+ return this.#breakpoints
49
+ case 'hasAdaptiveThemes':
50
+ return this.#hasAdaptiveThemes
51
+ case 'sortedBreakpointPairs':
52
+ return this.#sortedBreakpointPairs
53
+ case 'enabledPlugins':
54
+ return this.#enabledPlugins
55
+ case 'colorScheme':
56
+ return this.#colorScheme
57
+ case 'useTheme':
58
+ return (themeName: keyof UnistylesThemes) => this.useTheme(themeName)
59
+ case 'useBreakpoints':
60
+ return (breakpoints: UnistylesBreakpoints) => this.useBreakpoints(breakpoints)
61
+ case 'useAdaptiveThemes':
62
+ return (enable: boolean) => this.useAdaptiveThemes(enable)
63
+ case 'addPlugin':
64
+ return (pluginName: string, notify: boolean) => this.addPlugin(pluginName, notify)
65
+ case 'removePlugin':
66
+ return (pluginName: string) => this.removePlugin(pluginName)
67
+ default:
68
+ return Reflect.get(this, prop)
69
+ }
70
+ },
71
+ set: (target, prop, newValue, receiver) => {
72
+ switch (prop) {
73
+ case 'themes': {
74
+ this.#themes = newValue
75
+ this.#supportsAutomaticColorScheme = newValue.includes('light') && newValue.includes('dark')
76
+
77
+ return true
78
+ }
79
+ case 'themeName': {
80
+ this.#themeName = newValue as keyof UnistylesThemes
81
+ this.emitThemeChange()
82
+
83
+ return true
84
+ }
85
+ default:
86
+ return Reflect.set(target, prop, newValue, receiver)
87
+ }
88
+ }
89
+ })
90
+
91
+ return true
92
+ }
93
+
94
+ private useTheme(themeName: keyof UnistylesThemes) {
95
+ this.#themeName = themeName
96
+ this.emitThemeChange()
97
+ }
98
+
99
+ private useBreakpoints(breakpoints: UnistylesBreakpoints) {
100
+ this.#breakpoints = breakpoints
101
+ this.#sortedBreakpointPairs = Object
102
+ .entries(breakpoints)
103
+ .sort(([, a], [, b]) => (a ?? 0) - (b ?? 0)) as Array<[keyof UnistylesBreakpoints, number]>
104
+
105
+ if (!isServer) {
106
+ this.#breakpoint = this.getBreakpointFromScreenWidth(this.#screenWidth as number)
107
+ }
108
+ }
109
+
110
+ private useAdaptiveThemes(enable: boolean) {
111
+ this.#hasAdaptiveThemes = enable
112
+
113
+ if (!this.#hasAdaptiveThemes || !this.#supportsAutomaticColorScheme) {
114
+ return
115
+ }
116
+
117
+ if (this.#themeName !== this.#colorScheme) {
118
+ this.#themeName = this.#colorScheme as keyof UnistylesThemes
119
+ this.emitThemeChange()
120
+ }
121
+ }
122
+
123
+ private addPlugin(pluginName: string, notify: boolean) {
124
+ this.#enabledPlugins = [pluginName].concat(this.#enabledPlugins)
125
+
126
+ if (notify) {
127
+ this.emitPluginChange()
128
+ }
129
+ }
130
+
131
+ private removePlugin(pluginName: string) {
132
+ this.#enabledPlugins = this.#enabledPlugins.filter(name => name !== pluginName)
133
+ this.emitPluginChange()
134
+ }
135
+
136
+ private getTheme(): keyof UnistylesThemes {
137
+
138
+ if (this.#themes.length === 1) {
139
+ return this.#themes.at(0) as keyof UnistylesThemes
140
+ }
141
+
142
+ return this.#themeName
143
+ }
144
+
145
+ private setupListeners() {
146
+ window.addEventListener('resize', () => {
147
+ clearTimeout(this.#timerRef)
148
+
149
+ this.#timerRef = setTimeout(() => {
150
+ this.#screenWidth = window.innerWidth
151
+ this.#screenHeight = window.innerHeight
152
+ this.#breakpoint = this.getBreakpointFromScreenWidth(this.#screenWidth)
153
+
154
+ this.emitLayoutChange()
155
+ }, 100)
156
+ })
157
+
158
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
159
+ this.#colorScheme = event.matches
160
+ ? 'dark'
161
+ : 'light'
162
+
163
+ if (!this.#supportsAutomaticColorScheme || !this.#hasAdaptiveThemes) {
164
+ return
165
+ }
166
+
167
+ if (this.#colorScheme !== this.#themeName) {
168
+ this.#themeName = this.#colorScheme as keyof UnistylesThemes
169
+ this.emitThemeChange()
170
+ }
171
+ })
172
+ }
173
+
174
+ private getBreakpointFromScreenWidth(width: number): keyof UnistylesBreakpoints {
175
+ const breakpoint = this.#sortedBreakpointPairs
176
+ .find(([, value], index, otherBreakpoints) => {
177
+ const minVal = value
178
+ const maxVal = otherBreakpoints[index + 1]?.[1]
179
+
180
+ if (!maxVal) {
181
+ return true
182
+ }
183
+
184
+ return width >= minVal && width < maxVal
185
+ })
186
+
187
+ return breakpoint?.at(0) as keyof UnistylesBreakpoints
188
+ }
189
+
190
+ private getPreferredColorScheme() {
191
+ if (!isServer && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
192
+ return 'dark'
193
+ }
194
+
195
+ return 'light'
196
+ }
197
+
198
+ private emitPluginChange() {
199
+ this.#unistylesEvents.emit('__unistylesOnChange', {
200
+ type: 'plugin'
201
+ })
202
+ }
203
+
204
+ private emitThemeChange() {
205
+ this.#unistylesEvents.emit('__unistylesOnChange', {
206
+ type: 'theme',
207
+ payload: {
208
+ themeName: this.#themeName
209
+ }
210
+ })
211
+ }
212
+
213
+ private emitLayoutChange() {
214
+ this.#unistylesEvents.emit('__unistylesOnChange', {
215
+ type: 'layout',
216
+ payload: {
217
+ breakpoint: this.#breakpoint,
218
+ orientation: (this.#screenWidth as number) > (this.#screenHeight as number)
219
+ ? 'landscape'
220
+ : 'portrait',
221
+ screen: {
222
+ width: this.#screenWidth,
223
+ height: this.#screenHeight
224
+ }
225
+ }
226
+ })
227
+ }
228
+ }
229
+
230
+ export const UnistylesModule = new UnistylesBridgeWeb()
@@ -0,0 +1,135 @@
1
+ import { ScreenOrientation, UnistylesError } from '../common'
2
+ import type { UnistylesBridge, UnistylesPlugin } from '../types'
3
+ import type { UnistylesThemes } from '../global'
4
+ import type { UnistyleRegistry } from './UnistyleRegistry'
5
+
6
+ /**
7
+ * Utility to interact with the Unistyles during runtime
8
+ */
9
+ export class UnistylesRuntime {
10
+ constructor(private unistylesBridge: UnistylesBridge, private unistylesRegistry: UnistyleRegistry) {}
11
+
12
+ /**
13
+ * Get the current color scheme
14
+ * @returns - The current color scheme
15
+ */
16
+ public get colorScheme() {
17
+ return this.unistylesBridge.colorScheme
18
+ }
19
+
20
+ /**
21
+ * Get info about adaptive themes
22
+ * @returns - boolean indicating if the adaptive themes are enabled
23
+ */
24
+ public get hasAdaptiveThemes() {
25
+ return this.unistylesBridge.hasAdaptiveThemes
26
+ }
27
+
28
+ /**
29
+ * Get the current theme name
30
+ * @returns - The current theme name
31
+ */
32
+ public get themeName() {
33
+ return this.unistylesBridge.themeName
34
+ }
35
+
36
+ /**
37
+ * Get the current content size category
38
+ * @returns - The current content size category
39
+ */
40
+ public get contentSizeCategory() {
41
+ return this.unistylesBridge.contentSizeCategory
42
+ }
43
+
44
+ /**
45
+ * Get the current breakpoint based on device size
46
+ * @returns - The current breakpoint
47
+ */
48
+ public get breakpoint() {
49
+ return this.unistylesBridge.breakpoint
50
+ }
51
+
52
+ /**
53
+ * Get registered breakpoints with UnitylesRegistry
54
+ * @returns - The registered breakpoints
55
+ */
56
+ public get breakpoints() {
57
+ return this.unistylesRegistry.breakpoints
58
+ }
59
+
60
+ /**
61
+ * Get the names of currently enabled plugins
62
+ * @returns - The names of currently enabled plugins
63
+ */
64
+ public get enabledPlugins() {
65
+ return this.unistylesBridge.enabledPlugins
66
+ }
67
+
68
+ /**
69
+ * Get the screen size
70
+ * @returns - The screen size { width, height }
71
+ */
72
+ public get screen() {
73
+ return {
74
+ width: this.unistylesBridge.screenWidth,
75
+ height: this.unistylesBridge.screenHeight
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Get the screen orientation
81
+ * @returns - The screen orientation
82
+ */
83
+ public get orientation() {
84
+ const { width, height } = this.screen
85
+
86
+ if (width > height) {
87
+ return ScreenOrientation.Landscape
88
+ }
89
+
90
+ return ScreenOrientation.Portrait
91
+ }
92
+
93
+ /**
94
+ * Switch to a different theme
95
+ * @param name - The name of the theme to switch to
96
+ * @returns - boolean indicating if the theme was switched
97
+ */
98
+ public setTheme = (name: keyof UnistylesThemes) => {
99
+ if (name === this.themeName) {
100
+ return
101
+ }
102
+
103
+ if (this.unistylesRegistry.hasTheme(name)) {
104
+ this.unistylesBridge.useTheme(name)
105
+
106
+ return true
107
+ }
108
+
109
+ throw new Error(UnistylesError.ThemeNotRegistered)
110
+ }
111
+
112
+ /**
113
+ * Enable or disable adaptive themes
114
+ * @param enable - boolean indicating if adaptive themes should be enabled
115
+ */
116
+ public setAdaptiveThemes = (enable: boolean) => {
117
+ this.unistylesBridge.useAdaptiveThemes(enable)
118
+ }
119
+
120
+ /**
121
+ * Enable a plugin
122
+ * @param plugin - Plugin that conforms to UnistylesPlugin interface
123
+ */
124
+ public addPlugin = (plugin: UnistylesPlugin) => {
125
+ this.unistylesRegistry.addPlugin(plugin)
126
+ }
127
+
128
+ /**
129
+ * Disable a plugin
130
+ * @param plugin - Plugin that conforms to UnistylesPlugin interface
131
+ */
132
+ public removePlugin = (plugin: UnistylesPlugin) => {
133
+ this.unistylesRegistry.removePlugin(plugin)
134
+ }
135
+ }
@@ -0,0 +1,2 @@
1
+ export { unistyles } from './Unistyles'
2
+ export type { UnistylesRuntime } from './UnistylesRuntime'
@@ -0,0 +1,8 @@
1
+ import type { StyleSheetWithSuperPowers } from './types'
2
+
3
+ /**
4
+ * Utility to create a stylesheet with superpowers
5
+ * Compatible with React Native StyleSheet.create
6
+ * @param stylesheet - The stylesheet with superpowers to be used
7
+ */
8
+ export const createStyleSheet = <S extends StyleSheetWithSuperPowers>(stylesheet: S): S => stylesheet
package/src/global.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface UnistylesThemes {}
2
+ export interface UnistylesBreakpoints {
3
+ // these breakpoints are only available on mobile, when you didn't specify any breakpoints
4
+ landscape?: number,
5
+ portrait?: number,
6
+ }
@@ -1 +1,4 @@
1
- export { useDimensions } from './useDimensions'
1
+ export { useInitialTheme } from './useInitialTheme'
2
+ export { useUnistyles } from './useUnistyles'
3
+ export { useVariants } from './useVariants'
4
+ export { useCSS } from './useCSS'
@@ -0,0 +1,3 @@
1
+ import type { ReactNativeStyleSheet } from '../types'
2
+
3
+ export const useCSS = <T>(_stylesheet: ReactNativeStyleSheet<T>): void => {}
@@ -0,0 +1,51 @@
1
+ import { useInsertionEffect, useRef } from 'react'
2
+ import { unistyles } from '../core'
3
+ import type { ReactNativeStyleSheet } from '../types'
4
+ import { generateReactNativeWebId } from '../utils'
5
+
6
+ export const useCSS = <T>(stylesheet: ReactNativeStyleSheet<T>) => {
7
+ const insertedIds = useRef<Array<string>>([])
8
+
9
+ useInsertionEffect(() => {
10
+ if (!unistyles.registry.config.experimentalCSSMediaQueries) {
11
+ return
12
+ }
13
+
14
+ Object
15
+ .entries(stylesheet)
16
+ .forEach(([_key, value]) => {
17
+ Object.entries(value!)
18
+ .forEach(([prop, val]) => {
19
+ if (!val.toString().includes('@media')) {
20
+ return
21
+ }
22
+
23
+ const id = generateReactNativeWebId(prop, '""')
24
+
25
+ if (insertedIds.current.includes(id)) {
26
+ return
27
+ }
28
+
29
+ const style = document.createElement('style')
30
+
31
+ style.id = id
32
+ style.innerHTML = val
33
+
34
+ document.head.appendChild(style)
35
+ insertedIds.current = [...insertedIds.current, id]
36
+ })
37
+ })
38
+
39
+ return () => {
40
+ insertedIds.current.forEach(id => {
41
+ const style = document.getElementById(id)
42
+
43
+ if (style) {
44
+ style.remove()
45
+ }
46
+ })
47
+
48
+ insertedIds.current = []
49
+ }
50
+ }, [stylesheet])
51
+ }
@@ -0,0 +1,11 @@
1
+ import { useMemo } from 'react'
2
+ import { unistyles } from '../core'
3
+ import type { UnistylesThemes } from '../global'
4
+
5
+ export const useInitialTheme = (forName: keyof UnistylesThemes) => {
6
+ useMemo(() => {
7
+ if (!unistyles.runtime.themeName) {
8
+ unistyles.runtime.setTheme(forName)
9
+ }
10
+ }, [])
11
+ }
@@ -0,0 +1,64 @@
1
+ import { NativeEventEmitter, NativeModules } from 'react-native'
2
+ import { useEffect, useState } from 'react'
3
+ import { unistyles } from '../core'
4
+ import { UnistylesEventType } from '../common'
5
+ import type { UnistylesDynamicTypeSizeEvent, UnistylesEvents, UnistylesMobileLayoutEvent, UnistylesThemeEvent } from '../types'
6
+
7
+ const unistylesEvents = new NativeEventEmitter(NativeModules.Unistyles)
8
+
9
+ export const useUnistyles = () => {
10
+ const [plugins, setPlugins] = useState(unistyles.runtime.enabledPlugins)
11
+ const [theme, setTheme] = useState(unistyles.registry.getTheme(unistyles.runtime.themeName))
12
+ const [contentSizeCategory, setContentSizeCategory] = useState(unistyles.runtime.contentSizeCategory)
13
+ const [layout, setLayout] = useState({
14
+ breakpoint: unistyles.runtime.breakpoint,
15
+ orientation: unistyles.runtime.orientation,
16
+ screenSize: {
17
+ width: unistyles.runtime.screen.width,
18
+ height: unistyles.runtime.screen.height
19
+ }
20
+ })
21
+
22
+ useEffect(() => {
23
+ const subscription = unistylesEvents.addListener(
24
+ '__unistylesOnChange',
25
+ (event: UnistylesEvents) => {
26
+ switch (event.type) {
27
+ case UnistylesEventType.Theme: {
28
+ const themeEvent = event as UnistylesThemeEvent
29
+
30
+ return setTheme(unistyles.registry.getTheme(themeEvent.payload.themeName))
31
+ }
32
+ case UnistylesEventType.Layout: {
33
+ const layoutEvent = event as UnistylesMobileLayoutEvent
34
+
35
+ return setLayout({
36
+ breakpoint: layoutEvent.payload.breakpoint,
37
+ orientation: layoutEvent.payload.orientation,
38
+ screenSize: layoutEvent.payload.screen
39
+ })
40
+ }
41
+ case UnistylesEventType.Plugin: {
42
+ return setPlugins(unistyles.runtime.enabledPlugins)
43
+ }
44
+ case UnistylesEventType.DynamicTypeSize: {
45
+ const dynamicTypeSizeEvent = event as UnistylesDynamicTypeSizeEvent
46
+
47
+ return setContentSizeCategory(dynamicTypeSizeEvent.payload.contentSizeCategory)
48
+ }
49
+ default:
50
+ return
51
+ }
52
+ }
53
+ )
54
+
55
+ return subscription.remove
56
+ }, [])
57
+
58
+ return {
59
+ plugins,
60
+ theme,
61
+ layout,
62
+ contentSizeCategory
63
+ }
64
+ }
@@ -0,0 +1,10 @@
1
+ import { useRef } from 'react'
2
+ import type { Optional } from '../types'
3
+
4
+ export const useVariants = (variantsMap?: Record<string, Optional<string>>) => {
5
+ const variantsRef = useRef<Optional<Record<string, Optional<string>>>>(variantsMap)
6
+
7
+ variantsRef.current = variantsMap
8
+
9
+ return variantsRef.current
10
+ }
package/src/index.ts CHANGED
@@ -1,2 +1,50 @@
1
- export { UnistylesTheme } from './UnistylesTheme'
2
- export { createUnistyles } from './createUnistyles'
1
+ import { unistyles } from './core'
2
+ import { mq } from './utils'
3
+ import { useInitialTheme } from './hooks'
4
+ import type { UnistylesPlugin } from './types'
5
+ import type { UnistylesThemes, UnistylesBreakpoints } from './global'
6
+ import { ScreenOrientation, AndroidContentSizeCategory, IOSContentSizeCategory } from './common'
7
+ import { useStyles } from './useStyles'
8
+ import { createStyleSheet } from './createStyleSheet'
9
+
10
+ /**
11
+ * Utility to interact with the Unistyles
12
+ * (should be called only once)
13
+ */
14
+ const UnistylesRegistry = {
15
+ /**
16
+ * Register themes to be used in the app
17
+ * @param themes - Key value pair of themes
18
+ */
19
+ addThemes: unistyles.registry.addThemes,
20
+ /**
21
+ * Register breakpoints to be used in the app
22
+ * @param breakpoints - Key value pair of breakpoints
23
+ */
24
+ addBreakpoints: unistyles.registry.addBreakpoints,
25
+ /**
26
+ * Register additional config to customize the Unistyles
27
+ * @param config - Key value pair of config
28
+ */
29
+ addConfig: unistyles.registry.addConfig
30
+ }
31
+
32
+ const UnistylesRuntime = unistyles.runtime
33
+
34
+ export {
35
+ mq,
36
+ useStyles,
37
+ useInitialTheme,
38
+ createStyleSheet,
39
+ ScreenOrientation,
40
+ AndroidContentSizeCategory,
41
+ IOSContentSizeCategory,
42
+ UnistylesRegistry,
43
+ UnistylesRuntime
44
+ }
45
+
46
+ export type {
47
+ UnistylesThemes,
48
+ UnistylesBreakpoints,
49
+ UnistylesPlugin
50
+ }
@@ -0,0 +1,2 @@
1
+ export { normalizeStyle } from './normalizeStyle'
2
+ export { preprocessor, normalizeNumericValue, normalizeColor } from './normalizer'
@@ -1,6 +1,6 @@
1
- import { warn } from './common'
2
1
  import { preprocessor } from './normalizer'
3
- import type { NormalizedBoxShadow, NormalizedTextShadow, BoxShadow, TextShadow, Transforms } from '../types'
2
+ import { warn } from '../common'
3
+ import type { NormalizedBoxShadow, NormalizedTextShadow, BoxShadow, TextShadow, RNStyle } from '../types'
4
4
 
5
5
  const normalizeBoxShadow = <T extends BoxShadow>(style: T): NormalizedBoxShadow => {
6
6
  const requiredBoxShadowProperties = [
@@ -55,7 +55,7 @@ const normalizeTextShadow = <T extends TextShadow>(style: T): NormalizedTextShad
55
55
  }
56
56
  }
57
57
 
58
- export const normalizeStyles = <T extends BoxShadow | TextShadow | { transform: Transforms }>(style: T): T => {
58
+ export const normalizeStyle = <T extends RNStyle>(style: T): T => {
59
59
  const normalizedTransform = ('transform' in style && Array.isArray(style.transform))
60
60
  ? { transform: preprocessor.createTransformValue(style.transform) }
61
61
  : {}
@@ -0,0 +1 @@
1
+ // keep it empty for macOS
@@ -1,7 +1,7 @@
1
1
  // based on react-native-web normalizer
2
2
  // https://github.com/necolas/react-native-web
3
3
  import normalizeColors from '@react-native/normalize-colors'
4
- import type { TextShadow, Transforms, BoxShadow } from '../types'
4
+ import type { TextShadow, Transforms, BoxShadow, Nullable } from '../types'
5
5
 
6
6
  type Preprocessor = {
7
7
  createTextShadowValue(style: TextShadow): string,
@@ -15,9 +15,9 @@ export const normalizeColor = (color: string, opacity: number = 1) => {
15
15
  return color
16
16
  }
17
17
 
18
- const integer = normalizeColors(color) as number | null
18
+ const integer = normalizeColors(color) as Nullable<number>
19
19
 
20
- // If the colour is an unknown format, the return value is null
20
+ // If the color is an unknown format, the return value is null
21
21
  if (integer === null) {
22
22
  return color
23
23
  }
@@ -37,7 +37,8 @@ export const normalizeColor = (color: string, opacity: number = 1) => {
37
37
  }
38
38
 
39
39
  export const normalizeNumericValue = (value: number) => value ? `${value}px` : value
40
- const normalizeTransform = (key: string, value: number | string) => {
40
+
41
+ const normalizeTransform = <T>(key: string, value: T) => {
41
42
  if (key.includes('scale')) {
42
43
  return value
43
44
  }
@@ -0,0 +1,8 @@
1
+ // prevent recursive import
2
+ import { createMediaQueryForStyles } from '../utils/cssMediaQuery'
3
+ import type { UnistylesPlugin } from '../types'
4
+
5
+ export const cssMediaQueriesPlugin: UnistylesPlugin = {
6
+ name: '__unistylesCSSMediaQueries',
7
+ onParsedStyle: (_key, styles, runtime) => createMediaQueryForStyles(styles, runtime)
8
+ }
@@ -0,0 +1,2 @@
1
+ export { normalizeWebStylesPlugin } from './normalizeWebStylesPlugin'
2
+ export { cssMediaQueriesPlugin } from './cssMediaQueriesPlugin'
@@ -0,0 +1,7 @@
1
+ import type { UnistylesPlugin } from '../types'
2
+ import { normalizeStyle } from '../normalizer'
3
+
4
+ export const normalizeWebStylesPlugin: UnistylesPlugin = {
5
+ name: '__unistylesNormalizeWebStyles',
6
+ onParsedStyle: (_key, styles) => normalizeStyle(styles)
7
+ }