react-native-css 0.0.0-nightly.d6f42ab → 0.0.0-nightly.eda2b28

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 (524) hide show
  1. package/README.md +5 -5
  2. package/dist/commonjs/babel/import-plugin.js +9 -3
  3. package/dist/commonjs/babel/import-plugin.js.map +1 -1
  4. package/dist/commonjs/babel/react-native-web.js +16 -3
  5. package/dist/commonjs/babel/react-native-web.js.map +1 -1
  6. package/dist/commonjs/babel/react-native.js +7 -2
  7. package/dist/commonjs/babel/react-native.js.map +1 -1
  8. package/dist/commonjs/compiler/atRules.js +35 -0
  9. package/dist/commonjs/compiler/atRules.js.map +1 -1
  10. package/dist/commonjs/compiler/compiler.js +92 -31
  11. package/dist/commonjs/compiler/compiler.js.map +1 -1
  12. package/dist/commonjs/compiler/container-query.js +6 -1
  13. package/dist/commonjs/compiler/container-query.js.map +1 -1
  14. package/dist/commonjs/compiler/declarations.js +148 -56
  15. package/dist/commonjs/compiler/declarations.js.map +1 -1
  16. package/dist/commonjs/compiler/lightningcss-loader.js +15 -2
  17. package/dist/commonjs/compiler/lightningcss-loader.js.map +1 -1
  18. package/dist/commonjs/compiler/media-query.js +16 -6
  19. package/dist/commonjs/compiler/media-query.js.map +1 -1
  20. package/dist/commonjs/compiler/selector-builder.js +13 -3
  21. package/dist/commonjs/compiler/selector-builder.js.map +1 -1
  22. package/dist/commonjs/compiler/stylesheet.js +5 -0
  23. package/dist/commonjs/compiler/stylesheet.js.map +1 -1
  24. package/dist/commonjs/compiler/supports.js +2 -2
  25. package/dist/commonjs/compiler/supports.js.map +1 -1
  26. package/dist/commonjs/components/FlatList.js +1 -0
  27. package/dist/commonjs/components/FlatList.js.map +1 -1
  28. package/dist/commonjs/components/ImageBackground.js +2 -6
  29. package/dist/commonjs/components/ImageBackground.js.map +1 -1
  30. package/dist/commonjs/components/KeyboardAvoidingView.js +2 -3
  31. package/dist/commonjs/components/KeyboardAvoidingView.js.map +1 -1
  32. package/dist/commonjs/components/SafeAreaProvider.js +13 -0
  33. package/dist/commonjs/components/SafeAreaProvider.js.map +1 -0
  34. package/dist/commonjs/components/index.cjs +46 -1
  35. package/dist/commonjs/components/index.cjs.map +1 -1
  36. package/dist/commonjs/jest/index.js +1 -1
  37. package/dist/commonjs/jest/index.js.map +1 -1
  38. package/dist/commonjs/metro/cache-version.js +43 -0
  39. package/dist/commonjs/metro/cache-version.js.map +1 -0
  40. package/dist/commonjs/metro/index.js +2 -0
  41. package/dist/commonjs/metro/index.js.map +1 -1
  42. package/dist/commonjs/metro/metro-transformer.js +1 -1
  43. package/dist/commonjs/metro/metro-transformer.js.map +1 -1
  44. package/dist/commonjs/metro/typescript.js +26 -6
  45. package/dist/commonjs/metro/typescript.js.map +1 -1
  46. package/dist/commonjs/native/api.js +12 -8
  47. package/dist/commonjs/native/api.js.map +1 -1
  48. package/dist/commonjs/native/conditions/attributes.js +16 -9
  49. package/dist/commonjs/native/conditions/attributes.js.map +1 -1
  50. package/dist/commonjs/native/conditions/container-query.js +11 -11
  51. package/dist/commonjs/native/conditions/container-query.js.map +1 -1
  52. package/dist/commonjs/native/conditions/media-query.js +1 -1
  53. package/dist/commonjs/native/conditions/media-query.js.map +1 -1
  54. package/dist/commonjs/native/react/interaction.js +10 -5
  55. package/dist/commonjs/native/react/interaction.js.map +1 -1
  56. package/dist/commonjs/native/react/rules.js +12 -5
  57. package/dist/commonjs/native/react/rules.js.map +1 -1
  58. package/dist/commonjs/native/react/useNativeCss.js +70 -15
  59. package/dist/commonjs/native/react/useNativeCss.js.map +1 -1
  60. package/dist/commonjs/native/react/usePassthrough.js +5 -2
  61. package/dist/commonjs/native/react/usePassthrough.js.map +1 -1
  62. package/dist/commonjs/native/reactivity.js +47 -23
  63. package/dist/commonjs/native/reactivity.js.map +1 -1
  64. package/dist/commonjs/native/reanimated.js +15 -3
  65. package/dist/commonjs/native/reanimated.js.map +1 -1
  66. package/dist/commonjs/native/styles/functions/color-mix.js +64 -0
  67. package/dist/commonjs/native/styles/functions/color-mix.js.map +1 -0
  68. package/dist/commonjs/native/styles/functions/filters.js +18 -5
  69. package/dist/commonjs/native/styles/functions/filters.js.map +1 -1
  70. package/dist/commonjs/native/styles/functions/index.js +11 -0
  71. package/dist/commonjs/native/styles/functions/index.js.map +1 -1
  72. package/dist/commonjs/native/styles/functions/numeric-functions.js +4 -3
  73. package/dist/commonjs/native/styles/functions/numeric-functions.js.map +1 -1
  74. package/dist/commonjs/native/styles/functions/string-functions.js +16 -1
  75. package/dist/commonjs/native/styles/functions/string-functions.js.map +1 -1
  76. package/dist/commonjs/native/styles/functions/transform-functions.js +5 -4
  77. package/dist/commonjs/native/styles/functions/transform-functions.js.map +1 -1
  78. package/dist/commonjs/native/styles/index.js +382 -28
  79. package/dist/commonjs/native/styles/index.js.map +1 -1
  80. package/dist/commonjs/native/styles/resolve.js +10 -6
  81. package/dist/commonjs/native/styles/resolve.js.map +1 -1
  82. package/dist/commonjs/native/styles/scale-factor.js +13 -0
  83. package/dist/commonjs/native/styles/scale-factor.js.map +1 -0
  84. package/dist/commonjs/native/styles/shorthands/_handler.js +10 -0
  85. package/dist/commonjs/native/styles/shorthands/_handler.js.map +1 -1
  86. package/dist/commonjs/native/styles/shorthands/animation.js +6 -3
  87. package/dist/commonjs/native/styles/shorthands/animation.js.map +1 -1
  88. package/dist/commonjs/native/styles/shorthands/box-shadow.js +45 -12
  89. package/dist/commonjs/native/styles/shorthands/box-shadow.js.map +1 -1
  90. package/dist/commonjs/native/styles/shorthands/index.js +11 -0
  91. package/dist/commonjs/native/styles/shorthands/index.js.map +1 -1
  92. package/dist/commonjs/native/styles/shorthands/logical-border-width.js +22 -0
  93. package/dist/commonjs/native/styles/shorthands/logical-border-width.js.map +1 -0
  94. package/dist/commonjs/native/styles/variables.js +55 -43
  95. package/dist/commonjs/native/styles/variables.js.map +1 -1
  96. package/dist/commonjs/native-internal/style-collection.js +1 -1
  97. package/dist/commonjs/native-internal/style-collection.js.map +1 -1
  98. package/dist/commonjs/utilities/dot-notation.types.js +4 -0
  99. package/dist/commonjs/utilities/style-descriptor.js +4 -9
  100. package/dist/commonjs/utilities/style-descriptor.js.map +1 -1
  101. package/dist/commonjs/web/api.js +2 -2
  102. package/dist/commonjs/web/api.js.map +1 -1
  103. package/dist/commonjs/web/assign-style.js +4 -1
  104. package/dist/commonjs/web/assign-style.js.map +1 -1
  105. package/dist/module/babel/import-plugin.js +11 -5
  106. package/dist/module/babel/import-plugin.js.map +1 -1
  107. package/dist/module/babel/react-native-web.js +16 -4
  108. package/dist/module/babel/react-native-web.js.map +1 -1
  109. package/dist/module/babel/react-native.js +7 -2
  110. package/dist/module/babel/react-native.js.map +1 -1
  111. package/dist/module/compiler/atRules.js +33 -0
  112. package/dist/module/compiler/atRules.js.map +1 -1
  113. package/dist/module/compiler/compiler.js +94 -33
  114. package/dist/module/compiler/compiler.js.map +1 -1
  115. package/dist/module/compiler/container-query.js +6 -1
  116. package/dist/module/compiler/container-query.js.map +1 -1
  117. package/dist/module/compiler/declarations.js +147 -56
  118. package/dist/module/compiler/declarations.js.map +1 -1
  119. package/dist/module/compiler/lightningcss-loader.js +14 -2
  120. package/dist/module/compiler/lightningcss-loader.js.map +1 -1
  121. package/dist/module/compiler/media-query.js +16 -6
  122. package/dist/module/compiler/media-query.js.map +1 -1
  123. package/dist/module/compiler/selector-builder.js +13 -3
  124. package/dist/module/compiler/selector-builder.js.map +1 -1
  125. package/dist/module/compiler/stylesheet.js +5 -0
  126. package/dist/module/compiler/stylesheet.js.map +1 -1
  127. package/dist/module/compiler/supports.js +2 -2
  128. package/dist/module/compiler/supports.js.map +1 -1
  129. package/dist/module/components/FlatList.js +1 -0
  130. package/dist/module/components/FlatList.js.map +1 -1
  131. package/dist/module/components/ImageBackground.js +2 -6
  132. package/dist/module/components/ImageBackground.js.map +1 -1
  133. package/dist/module/components/KeyboardAvoidingView.js +2 -3
  134. package/dist/module/components/KeyboardAvoidingView.js.map +1 -1
  135. package/dist/module/components/SafeAreaProvider.js +4 -0
  136. package/dist/module/components/SafeAreaProvider.js.map +1 -0
  137. package/dist/module/components/index.cjs +46 -1
  138. package/dist/module/components/index.cjs.map +1 -1
  139. package/dist/module/jest/index.js +1 -1
  140. package/dist/module/jest/index.js.map +1 -1
  141. package/dist/module/metro/cache-version.js +39 -0
  142. package/dist/module/metro/cache-version.js.map +1 -0
  143. package/dist/module/metro/index.js +2 -0
  144. package/dist/module/metro/index.js.map +1 -1
  145. package/dist/module/metro/metro-transformer.js +1 -1
  146. package/dist/module/metro/metro-transformer.js.map +1 -1
  147. package/dist/module/metro/typescript.js +26 -6
  148. package/dist/module/metro/typescript.js.map +1 -1
  149. package/dist/module/native/api.js +14 -10
  150. package/dist/module/native/api.js.map +1 -1
  151. package/dist/module/native/conditions/attributes.js +16 -9
  152. package/dist/module/native/conditions/attributes.js.map +1 -1
  153. package/dist/module/native/conditions/container-query.js +11 -11
  154. package/dist/module/native/conditions/container-query.js.map +1 -1
  155. package/dist/module/native/conditions/media-query.js +1 -1
  156. package/dist/module/native/conditions/media-query.js.map +1 -1
  157. package/dist/module/native/react/interaction.js +10 -5
  158. package/dist/module/native/react/interaction.js.map +1 -1
  159. package/dist/module/native/react/rules.js +13 -6
  160. package/dist/module/native/react/rules.js.map +1 -1
  161. package/dist/module/native/react/useNativeCss.js +73 -18
  162. package/dist/module/native/react/useNativeCss.js.map +1 -1
  163. package/dist/module/native/react/usePassthrough.js +5 -2
  164. package/dist/module/native/react/usePassthrough.js.map +1 -1
  165. package/dist/module/native/reactivity.js +44 -22
  166. package/dist/module/native/reactivity.js.map +1 -1
  167. package/dist/module/native/reanimated.js +15 -3
  168. package/dist/module/native/reanimated.js.map +1 -1
  169. package/dist/module/native/styles/functions/color-mix.js +59 -0
  170. package/dist/module/native/styles/functions/color-mix.js.map +1 -0
  171. package/dist/module/native/styles/functions/filters.js +16 -4
  172. package/dist/module/native/styles/functions/filters.js.map +1 -1
  173. package/dist/module/native/styles/functions/index.js +1 -0
  174. package/dist/module/native/styles/functions/index.js.map +1 -1
  175. package/dist/module/native/styles/functions/numeric-functions.js +4 -3
  176. package/dist/module/native/styles/functions/numeric-functions.js.map +1 -1
  177. package/dist/module/native/styles/functions/string-functions.js +13 -0
  178. package/dist/module/native/styles/functions/string-functions.js.map +1 -1
  179. package/dist/module/native/styles/functions/transform-functions.js +5 -4
  180. package/dist/module/native/styles/functions/transform-functions.js.map +1 -1
  181. package/dist/module/native/styles/index.js +383 -28
  182. package/dist/module/native/styles/index.js.map +1 -1
  183. package/dist/module/native/styles/resolve.js +10 -6
  184. package/dist/module/native/styles/resolve.js.map +1 -1
  185. package/dist/module/native/styles/scale-factor.js +9 -0
  186. package/dist/module/native/styles/scale-factor.js.map +1 -0
  187. package/dist/module/native/styles/shorthands/_handler.js +11 -1
  188. package/dist/module/native/styles/shorthands/_handler.js.map +1 -1
  189. package/dist/module/native/styles/shorthands/animation.js +6 -3
  190. package/dist/module/native/styles/shorthands/animation.js.map +1 -1
  191. package/dist/module/native/styles/shorthands/box-shadow.js +46 -12
  192. package/dist/module/native/styles/shorthands/box-shadow.js.map +1 -1
  193. package/dist/module/native/styles/shorthands/index.js +1 -0
  194. package/dist/module/native/styles/shorthands/index.js.map +1 -1
  195. package/dist/module/native/styles/shorthands/logical-border-width.js +18 -0
  196. package/dist/module/native/styles/shorthands/logical-border-width.js.map +1 -0
  197. package/dist/module/native/styles/variables.js +55 -43
  198. package/dist/module/native/styles/variables.js.map +1 -1
  199. package/dist/module/native-internal/style-collection.js +1 -1
  200. package/dist/module/native-internal/style-collection.js.map +1 -1
  201. package/dist/module/utilities/dot-notation.types.js +2 -0
  202. package/dist/module/utilities/style-descriptor.js +4 -9
  203. package/dist/module/utilities/style-descriptor.js.map +1 -1
  204. package/dist/module/web/api.js +2 -2
  205. package/dist/module/web/api.js.map +1 -1
  206. package/dist/module/web/assign-style.js +4 -1
  207. package/dist/module/web/assign-style.js.map +1 -1
  208. package/dist/typescript/commonjs/src/babel/import-plugin.d.ts.map +1 -1
  209. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts +2 -1
  210. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts.map +1 -1
  211. package/dist/typescript/commonjs/src/babel/react-native.d.ts.map +1 -1
  212. package/dist/typescript/commonjs/src/compiler/atRules.d.ts +4 -1
  213. package/dist/typescript/commonjs/src/compiler/atRules.d.ts.map +1 -1
  214. package/dist/typescript/commonjs/src/compiler/compiler.d.ts.map +1 -1
  215. package/dist/typescript/commonjs/src/compiler/declarations.d.ts +3 -2
  216. package/dist/typescript/commonjs/src/compiler/declarations.d.ts.map +1 -1
  217. package/dist/typescript/commonjs/src/compiler/lightningcss-loader.d.ts.map +1 -1
  218. package/dist/typescript/commonjs/src/compiler/media-query.d.ts +1 -1
  219. package/dist/typescript/commonjs/src/compiler/media-query.d.ts.map +1 -1
  220. package/dist/typescript/commonjs/src/compiler/selector-builder.d.ts.map +1 -1
  221. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts +1 -0
  222. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts.map +1 -1
  223. package/dist/typescript/commonjs/src/components/FlatList.d.ts.map +1 -1
  224. package/dist/typescript/commonjs/src/components/ImageBackground.d.ts.map +1 -1
  225. package/dist/typescript/commonjs/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  226. package/dist/typescript/commonjs/src/components/SafeAreaProvider.d.ts +2 -0
  227. package/dist/typescript/commonjs/src/components/SafeAreaProvider.d.ts.map +1 -0
  228. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts +1 -1
  229. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  230. package/dist/typescript/commonjs/src/metro/cache-version.d.ts +8 -0
  231. package/dist/typescript/commonjs/src/metro/cache-version.d.ts.map +1 -0
  232. package/dist/typescript/commonjs/src/metro/index.d.ts.map +1 -1
  233. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts +5 -3
  234. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts.map +1 -1
  235. package/dist/typescript/commonjs/src/metro/typescript.d.ts.map +1 -1
  236. package/dist/typescript/commonjs/src/native/api.d.ts +4 -8
  237. package/dist/typescript/commonjs/src/native/api.d.ts.map +1 -1
  238. package/dist/typescript/commonjs/src/native/conditions/container-query.d.ts.map +1 -1
  239. package/dist/typescript/commonjs/src/native/react/interaction.d.ts +1 -1
  240. package/dist/typescript/commonjs/src/native/react/interaction.d.ts.map +1 -1
  241. package/dist/typescript/commonjs/src/native/react/rules.d.ts.map +1 -1
  242. package/dist/typescript/commonjs/src/native/react/useNativeCss.d.ts.map +1 -1
  243. package/dist/typescript/commonjs/src/native/react/usePassthrough.d.ts.map +1 -1
  244. package/dist/typescript/commonjs/src/native/reactivity.d.ts +13 -3
  245. package/dist/typescript/commonjs/src/native/reactivity.d.ts.map +1 -1
  246. package/dist/typescript/commonjs/src/native/reanimated.d.ts.map +1 -1
  247. package/dist/typescript/commonjs/src/native/styles/functions/color-mix.d.ts +3 -0
  248. package/dist/typescript/commonjs/src/native/styles/functions/color-mix.d.ts.map +1 -0
  249. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts +2 -0
  250. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts.map +1 -1
  251. package/dist/typescript/commonjs/src/native/styles/functions/index.d.ts +1 -0
  252. package/dist/typescript/commonjs/src/native/styles/functions/index.d.ts.map +1 -1
  253. package/dist/typescript/commonjs/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  254. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts +2 -0
  255. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts.map +1 -1
  256. package/dist/typescript/commonjs/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  257. package/dist/typescript/commonjs/src/native/styles/index.d.ts +2 -2
  258. package/dist/typescript/commonjs/src/native/styles/index.d.ts.map +1 -1
  259. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts +1 -0
  260. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts.map +1 -1
  261. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts +2 -0
  262. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts.map +1 -0
  263. package/dist/typescript/commonjs/src/native/styles/shorthands/_handler.d.ts.map +1 -1
  264. package/dist/typescript/commonjs/src/native/styles/shorthands/animation.d.ts.map +1 -1
  265. package/dist/typescript/commonjs/src/native/styles/shorthands/box-shadow.d.ts.map +1 -1
  266. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts +1 -0
  267. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts.map +1 -1
  268. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  269. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  270. package/dist/typescript/commonjs/src/native/styles/variables.d.ts.map +1 -1
  271. package/dist/typescript/commonjs/src/native-internal/variables.d.ts +1 -1
  272. package/dist/typescript/commonjs/src/native-internal/variables.d.ts.map +1 -1
  273. package/dist/typescript/commonjs/src/runtime.types.d.ts +11 -6
  274. package/dist/typescript/commonjs/src/runtime.types.d.ts.map +1 -1
  275. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts +2 -1
  276. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts.map +1 -1
  277. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts +1 -1
  278. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts.map +1 -1
  279. package/dist/typescript/commonjs/src/web/api.d.ts +5 -5
  280. package/dist/typescript/commonjs/src/web/api.d.ts.map +1 -1
  281. package/dist/typescript/commonjs/src/web/assign-style.d.ts.map +1 -1
  282. package/dist/typescript/module/src/babel/import-plugin.d.ts +1 -1
  283. package/dist/typescript/module/src/babel/import-plugin.d.ts.map +1 -1
  284. package/dist/typescript/module/src/babel/react-native-web.d.ts +2 -1
  285. package/dist/typescript/module/src/babel/react-native-web.d.ts.map +1 -1
  286. package/dist/typescript/module/src/babel/react-native.d.ts.map +1 -1
  287. package/dist/typescript/module/src/compiler/atRules.d.ts +6 -3
  288. package/dist/typescript/module/src/compiler/atRules.d.ts.map +1 -1
  289. package/dist/typescript/module/src/compiler/compiler.d.ts +2 -2
  290. package/dist/typescript/module/src/compiler/compiler.d.ts.map +1 -1
  291. package/dist/typescript/module/src/compiler/compiler.types.d.ts +1 -1
  292. package/dist/typescript/module/src/compiler/compiler.types.d.ts.map +1 -1
  293. package/dist/typescript/module/src/compiler/container-query.d.ts +2 -2
  294. package/dist/typescript/module/src/compiler/container-query.d.ts.map +1 -1
  295. package/dist/typescript/module/src/compiler/declarations.d.ts +5 -4
  296. package/dist/typescript/module/src/compiler/declarations.d.ts.map +1 -1
  297. package/dist/typescript/module/src/compiler/index.d.ts +2 -2
  298. package/dist/typescript/module/src/compiler/index.d.ts.map +1 -1
  299. package/dist/typescript/module/src/compiler/inline-variables.d.ts +1 -1
  300. package/dist/typescript/module/src/compiler/inline-variables.d.ts.map +1 -1
  301. package/dist/typescript/module/src/compiler/keyframes.d.ts +2 -2
  302. package/dist/typescript/module/src/compiler/keyframes.d.ts.map +1 -1
  303. package/dist/typescript/module/src/compiler/lightningcss-loader.d.ts.map +1 -1
  304. package/dist/typescript/module/src/compiler/media-query.d.ts +3 -3
  305. package/dist/typescript/module/src/compiler/media-query.d.ts.map +1 -1
  306. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts +1 -1
  307. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts.map +1 -1
  308. package/dist/typescript/module/src/compiler/selector-builder.d.ts +1 -1
  309. package/dist/typescript/module/src/compiler/selector-builder.d.ts.map +1 -1
  310. package/dist/typescript/module/src/compiler/selectors.d.ts +2 -2
  311. package/dist/typescript/module/src/compiler/selectors.d.ts.map +1 -1
  312. package/dist/typescript/module/src/compiler/stylesheet.d.ts +2 -1
  313. package/dist/typescript/module/src/compiler/stylesheet.d.ts.map +1 -1
  314. package/dist/typescript/module/src/components/FlatList.d.ts.map +1 -1
  315. package/dist/typescript/module/src/components/ImageBackground.d.ts.map +1 -1
  316. package/dist/typescript/module/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  317. package/dist/typescript/module/src/components/SafeAreaProvider.d.ts +2 -0
  318. package/dist/typescript/module/src/components/SafeAreaProvider.d.ts.map +1 -0
  319. package/dist/typescript/module/src/components/index.d.ts +16 -16
  320. package/dist/typescript/module/src/components/index.d.ts.map +1 -1
  321. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts +1 -1
  322. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  323. package/dist/typescript/module/src/metro/cache-version.d.ts +8 -0
  324. package/dist/typescript/module/src/metro/cache-version.d.ts.map +1 -0
  325. package/dist/typescript/module/src/metro/index.d.ts +1 -1
  326. package/dist/typescript/module/src/metro/index.d.ts.map +1 -1
  327. package/dist/typescript/module/src/metro/metro-transformer.d.ts +6 -4
  328. package/dist/typescript/module/src/metro/metro-transformer.d.ts.map +1 -1
  329. package/dist/typescript/module/src/metro/typescript.d.ts.map +1 -1
  330. package/dist/typescript/module/src/native/api.d.ts +5 -9
  331. package/dist/typescript/module/src/native/api.d.ts.map +1 -1
  332. package/dist/typescript/module/src/native/conditions/attributes.d.ts +1 -1
  333. package/dist/typescript/module/src/native/conditions/attributes.d.ts.map +1 -1
  334. package/dist/typescript/module/src/native/conditions/container-query.d.ts +2 -2
  335. package/dist/typescript/module/src/native/conditions/container-query.d.ts.map +1 -1
  336. package/dist/typescript/module/src/native/conditions/guards.d.ts +2 -2
  337. package/dist/typescript/module/src/native/conditions/guards.d.ts.map +1 -1
  338. package/dist/typescript/module/src/native/conditions/index.d.ts +3 -3
  339. package/dist/typescript/module/src/native/conditions/index.d.ts.map +1 -1
  340. package/dist/typescript/module/src/native/conditions/media-query.d.ts +1 -1
  341. package/dist/typescript/module/src/native/conditions/media-query.d.ts.map +1 -1
  342. package/dist/typescript/module/src/native/index.d.ts +3 -3
  343. package/dist/typescript/module/src/native/index.d.ts.map +1 -1
  344. package/dist/typescript/module/src/native/react/interaction.d.ts +2 -2
  345. package/dist/typescript/module/src/native/react/interaction.d.ts.map +1 -1
  346. package/dist/typescript/module/src/native/react/rules.d.ts +2 -2
  347. package/dist/typescript/module/src/native/react/rules.d.ts.map +1 -1
  348. package/dist/typescript/module/src/native/react/useNativeCss.d.ts +4 -4
  349. package/dist/typescript/module/src/native/react/useNativeCss.d.ts.map +1 -1
  350. package/dist/typescript/module/src/native/react/usePassthrough.d.ts +1 -1
  351. package/dist/typescript/module/src/native/react/usePassthrough.d.ts.map +1 -1
  352. package/dist/typescript/module/src/native/reactivity.d.ts +13 -3
  353. package/dist/typescript/module/src/native/reactivity.d.ts.map +1 -1
  354. package/dist/typescript/module/src/native/reanimated.d.ts.map +1 -1
  355. package/dist/typescript/module/src/native/styles/calculate-props.d.ts +2 -2
  356. package/dist/typescript/module/src/native/styles/calculate-props.d.ts.map +1 -1
  357. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts +1 -1
  358. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts.map +1 -1
  359. package/dist/typescript/module/src/native/styles/functions/calc.d.ts +1 -1
  360. package/dist/typescript/module/src/native/styles/functions/calc.d.ts.map +1 -1
  361. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts +3 -0
  362. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts.map +1 -0
  363. package/dist/typescript/module/src/native/styles/functions/filters.d.ts +3 -1
  364. package/dist/typescript/module/src/native/styles/functions/filters.d.ts.map +1 -1
  365. package/dist/typescript/module/src/native/styles/functions/index.d.ts +8 -7
  366. package/dist/typescript/module/src/native/styles/functions/index.d.ts.map +1 -1
  367. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts +1 -1
  368. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  369. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts +1 -1
  370. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts.map +1 -1
  371. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts +3 -1
  372. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts.map +1 -1
  373. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts +1 -1
  374. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  375. package/dist/typescript/module/src/native/styles/index.d.ts +7 -7
  376. package/dist/typescript/module/src/native/styles/index.d.ts.map +1 -1
  377. package/dist/typescript/module/src/native/styles/line-height.d.ts +1 -1
  378. package/dist/typescript/module/src/native/styles/line-height.d.ts.map +1 -1
  379. package/dist/typescript/module/src/native/styles/resolve.d.ts +4 -3
  380. package/dist/typescript/module/src/native/styles/resolve.d.ts.map +1 -1
  381. package/dist/typescript/module/src/native/styles/scale-factor.d.ts +2 -0
  382. package/dist/typescript/module/src/native/styles/scale-factor.d.ts.map +1 -0
  383. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts +1 -1
  384. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts.map +1 -1
  385. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts +2 -2
  386. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts.map +1 -1
  387. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts +1 -1
  388. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts.map +1 -1
  389. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts +1 -1
  390. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts.map +1 -1
  391. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts +6 -5
  392. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts.map +1 -1
  393. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  394. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  395. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts +1 -1
  396. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts.map +1 -1
  397. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts +1 -1
  398. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts.map +1 -1
  399. package/dist/typescript/module/src/native/styles/units.d.ts +1 -1
  400. package/dist/typescript/module/src/native/styles/units.d.ts.map +1 -1
  401. package/dist/typescript/module/src/native/styles/variables.d.ts +2 -2
  402. package/dist/typescript/module/src/native/styles/variables.d.ts.map +1 -1
  403. package/dist/typescript/module/src/native-internal/index.d.ts +3 -3
  404. package/dist/typescript/module/src/native-internal/index.d.ts.map +1 -1
  405. package/dist/typescript/module/src/native-internal/root.d.ts +1 -1
  406. package/dist/typescript/module/src/native-internal/root.d.ts.map +1 -1
  407. package/dist/typescript/module/src/native-internal/style-collection.d.ts +2 -2
  408. package/dist/typescript/module/src/native-internal/style-collection.d.ts.map +1 -1
  409. package/dist/typescript/module/src/native-internal/variables.d.ts +2 -2
  410. package/dist/typescript/module/src/native-internal/variables.d.ts.map +1 -1
  411. package/dist/typescript/module/src/runtime.d.ts +1 -1
  412. package/dist/typescript/module/src/runtime.d.ts.map +1 -1
  413. package/dist/typescript/module/src/runtime.native.d.ts +1 -1
  414. package/dist/typescript/module/src/runtime.native.d.ts.map +1 -1
  415. package/dist/typescript/module/src/runtime.types.d.ts +11 -6
  416. package/dist/typescript/module/src/runtime.types.d.ts.map +1 -1
  417. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts +2 -1
  418. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts.map +1 -1
  419. package/dist/typescript/module/src/utilities/index.d.ts +3 -3
  420. package/dist/typescript/module/src/utilities/index.d.ts.map +1 -1
  421. package/dist/typescript/module/src/utilities/specificity.d.ts +2 -2
  422. package/dist/typescript/module/src/utilities/specificity.d.ts.map +1 -1
  423. package/dist/typescript/module/src/utilities/style-descriptor.d.ts +1 -1
  424. package/dist/typescript/module/src/utilities/style-descriptor.d.ts.map +1 -1
  425. package/dist/typescript/module/src/web/api.d.ts +5 -5
  426. package/dist/typescript/module/src/web/api.d.ts.map +1 -1
  427. package/dist/typescript/module/src/web/assign-style.d.ts.map +1 -1
  428. package/dist/typescript/module/src/web/index.d.ts +3 -3
  429. package/dist/typescript/module/src/web/index.d.ts.map +1 -1
  430. package/node/babel.mjs +4 -0
  431. package/node/compiler.mjs +2 -0
  432. package/node/metro.mjs +2 -0
  433. package/package.json +78 -29
  434. package/src/babel/import-plugin.ts +15 -4
  435. package/src/babel/react-native-web.ts +32 -3
  436. package/src/babel/react-native.ts +7 -1
  437. package/src/compiler/atRules.ts +44 -0
  438. package/src/compiler/compiler.ts +140 -42
  439. package/src/compiler/container-query.ts +8 -3
  440. package/src/compiler/declarations.ts +279 -94
  441. package/src/compiler/lightningcss-loader.ts +21 -1
  442. package/src/compiler/media-query.ts +20 -9
  443. package/src/compiler/selector-builder.ts +29 -3
  444. package/src/compiler/stylesheet.ts +6 -0
  445. package/src/compiler/supports.ts +2 -2
  446. package/src/components/FlatList.tsx +1 -0
  447. package/src/components/ImageBackground.tsx +2 -6
  448. package/src/components/KeyboardAvoidingView.tsx +2 -3
  449. package/src/components/SafeAreaProvider.tsx +1 -0
  450. package/src/components/index.cts +46 -1
  451. package/src/jest/index.ts +1 -1
  452. package/src/metro/cache-version.ts +48 -0
  453. package/src/metro/index.ts +2 -0
  454. package/src/metro/metro-transformer.ts +9 -6
  455. package/src/metro/typescript.ts +53 -6
  456. package/src/native/api.tsx +20 -14
  457. package/src/native/conditions/attributes.ts +26 -9
  458. package/src/native/conditions/container-query.ts +11 -9
  459. package/src/native/conditions/media-query.ts +1 -1
  460. package/src/native/react/interaction.ts +11 -6
  461. package/src/native/react/rules.ts +13 -5
  462. package/src/native/react/useNativeCss.ts +79 -17
  463. package/src/native/react/usePassthrough.ts +3 -2
  464. package/src/native/reactivity.ts +61 -24
  465. package/src/native/reanimated.ts +24 -5
  466. package/src/native/styles/functions/color-mix.ts +74 -0
  467. package/src/native/styles/functions/filters.ts +20 -6
  468. package/src/native/styles/functions/index.ts +1 -0
  469. package/src/native/styles/functions/numeric-functions.ts +7 -6
  470. package/src/native/styles/functions/string-functions.ts +18 -0
  471. package/src/native/styles/functions/transform-functions.ts +5 -4
  472. package/src/native/styles/index.ts +443 -36
  473. package/src/native/styles/resolve.ts +15 -11
  474. package/src/native/styles/scale-factor.ts +6 -0
  475. package/src/native/styles/shorthands/_handler.ts +14 -1
  476. package/src/native/styles/shorthands/animation.ts +8 -2
  477. package/src/native/styles/shorthands/box-shadow.ts +50 -15
  478. package/src/native/styles/shorthands/index.ts +1 -0
  479. package/src/native/styles/shorthands/logical-border-width.ts +32 -0
  480. package/src/native/styles/variables.ts +48 -38
  481. package/src/native-internal/style-collection.ts +1 -1
  482. package/src/runtime.types.ts +17 -15
  483. package/src/utilities/dot-notation.types.ts +4 -3
  484. package/src/utilities/style-descriptor.ts +11 -16
  485. package/src/web/api.tsx +7 -12
  486. package/src/web/assign-style.ts +2 -1
  487. package/types.d.ts +3 -20
  488. package/dist/commonjs/compiler/inheritance.test.js +0 -78
  489. package/dist/commonjs/compiler/inheritance.test.js.map +0 -1
  490. package/dist/module/compiler/inheritance.test.js +0 -78
  491. package/dist/module/compiler/inheritance.test.js.map +0 -1
  492. package/dist/typescript/commonjs/.config/eslint.config.d.mts +0 -3
  493. package/dist/typescript/commonjs/.config/eslint.config.d.mts.map +0 -1
  494. package/dist/typescript/commonjs/eslint.config.d.mts +0 -2
  495. package/dist/typescript/commonjs/eslint.config.d.mts.map +0 -1
  496. package/dist/typescript/commonjs/example/app.config.d.ts +0 -4
  497. package/dist/typescript/commonjs/example/app.config.d.ts.map +0 -1
  498. package/dist/typescript/commonjs/example/index.d.ts +0 -2
  499. package/dist/typescript/commonjs/example/index.d.ts.map +0 -1
  500. package/dist/typescript/commonjs/example/metro.config.d.ts +0 -3
  501. package/dist/typescript/commonjs/example/metro.config.d.ts.map +0 -1
  502. package/dist/typescript/commonjs/example/postcss.config.d.mts +0 -7
  503. package/dist/typescript/commonjs/example/postcss.config.d.mts.map +0 -1
  504. package/dist/typescript/commonjs/example/src/App.d.ts +0 -3
  505. package/dist/typescript/commonjs/example/src/App.d.ts.map +0 -1
  506. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts +0 -2
  507. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts.map +0 -1
  508. package/dist/typescript/module/.config/eslint.config.d.mts +0 -3
  509. package/dist/typescript/module/.config/eslint.config.d.mts.map +0 -1
  510. package/dist/typescript/module/eslint.config.d.mts +0 -2
  511. package/dist/typescript/module/eslint.config.d.mts.map +0 -1
  512. package/dist/typescript/module/example/app.config.d.ts +0 -4
  513. package/dist/typescript/module/example/app.config.d.ts.map +0 -1
  514. package/dist/typescript/module/example/index.d.ts +0 -2
  515. package/dist/typescript/module/example/index.d.ts.map +0 -1
  516. package/dist/typescript/module/example/metro.config.d.ts +0 -3
  517. package/dist/typescript/module/example/metro.config.d.ts.map +0 -1
  518. package/dist/typescript/module/example/postcss.config.d.mts +0 -7
  519. package/dist/typescript/module/example/postcss.config.d.mts.map +0 -1
  520. package/dist/typescript/module/example/src/App.d.ts +0 -3
  521. package/dist/typescript/module/example/src/App.d.ts.map +0 -1
  522. package/dist/typescript/module/src/compiler/inheritance.test.d.ts +0 -2
  523. package/dist/typescript/module/src/compiler/inheritance.test.d.ts.map +0 -1
  524. package/src/compiler/inheritance.test.ts +0 -121
@@ -1,4 +1,4 @@
1
- import { resolve } from "path";
1
+ import { basename, dirname, resolve, sep } from "path";
2
2
 
3
3
  import { type PluginObj } from "@babel/core";
4
4
  import type { Statement } from "@babel/types";
@@ -16,6 +16,7 @@ import {
16
16
  import {
17
17
  handleReactNativeWebIdentifierRequire,
18
18
  handleReactNativeWebImport,
19
+ handleReactNativeWebInteropRequireDefault,
19
20
  handleReactNativeWebObjectPatternRequire,
20
21
  } from "./react-native-web";
21
22
 
@@ -26,8 +27,12 @@ export default function ({
26
27
  }): PluginObj<PluginState> {
27
28
  const processed = new WeakSet();
28
29
 
29
- const thisModuleDist = resolve(__dirname, "../../../dist");
30
- const thisModuleSrc = resolve(__dirname, "../../../src");
30
+ const packageRoot = resolve(
31
+ __dirname,
32
+ basename(dirname(__dirname)) === "src" ? "../.." : "../../..",
33
+ );
34
+ const thisModuleDist = resolve(packageRoot, "dist") + sep;
35
+ const thisModuleSrc = resolve(packageRoot, "src") + sep;
31
36
 
32
37
  function isFromThisModule(filename: string): boolean {
33
38
  return (
@@ -94,6 +99,11 @@ export default function ({
94
99
  return;
95
100
  }
96
101
 
102
+ // A local function called require is not the module loader.
103
+ if (path.scope.getBinding("require")) {
104
+ return;
105
+ }
106
+
97
107
  const initArg = init.arguments.at(0);
98
108
 
99
109
  if (!initArg) {
@@ -152,10 +162,11 @@ export default function ({
152
162
  if (!source) {
153
163
  return;
154
164
  }
155
- statements = handleReactNativeWebIdentifierRequire(
165
+ statements = handleReactNativeWebInteropRequireDefault(
156
166
  path,
157
167
  t,
158
168
  id.name,
169
+ init,
159
170
  source,
160
171
  state.filename,
161
172
  );
@@ -1,7 +1,8 @@
1
- import { resolve } from "path";
1
+ import { dirname, resolve } from "path";
2
2
 
3
3
  import { type NodePath } from "@babel/traverse";
4
4
  import tBabelTypes, {
5
+ type CallExpression,
5
6
  type ImportDeclaration,
6
7
  type ObjectPattern,
7
8
  type Statement,
@@ -14,7 +15,7 @@ type BabelTypes = typeof tBabelTypes;
14
15
 
15
16
  function parseReactNativeWebSource(source: string, filename: string) {
16
17
  if (source.startsWith(".")) {
17
- source = resolve(filename, source);
18
+ source = resolve(dirname(filename), source);
18
19
 
19
20
  const internalPath = source.split("react-native-web/dist")[1];
20
21
  if (!internalPath) {
@@ -48,6 +49,7 @@ export function handleReactNativeWebImport(
48
49
  filename: string,
49
50
  ): Statement[] | undefined {
50
51
  const { specifiers, source } = declaration;
52
+ if (declaration.importKind && declaration.importKind !== "value") return;
51
53
 
52
54
  const rnwSource = parseReactNativeWebSource(source.value, filename);
53
55
  if (!rnwSource) {
@@ -76,7 +78,7 @@ export function handleReactNativeWebImport(
76
78
  } else {
77
79
  statements.push(
78
80
  t.importDeclaration(
79
- [t.importSpecifier(specifier.local, specifier.local)],
81
+ [t.importSpecifier(specifier.local, t.identifier(name))],
80
82
  t.stringLiteral(`react-native-css/components/${name}`),
81
83
  ),
82
84
  );
@@ -89,6 +91,10 @@ export function handleReactNativeWebImport(
89
91
  ),
90
92
  );
91
93
  } else {
94
+ if (specifier.importKind && specifier.importKind !== "value") {
95
+ statements.push(t.importDeclaration([specifier], source));
96
+ continue;
97
+ }
92
98
  const localName = t.isStringLiteral(specifier.imported)
93
99
  ? specifier.imported.value
94
100
  : specifier.imported.name;
@@ -158,6 +164,28 @@ export function handleReactNativeWebIdentifierRequire(
158
164
  }
159
165
  }
160
166
 
167
+ export function handleReactNativeWebInteropRequireDefault(
168
+ path: NodePath<VariableDeclaration>,
169
+ t: BabelTypes,
170
+ id: string,
171
+ init: CallExpression,
172
+ source: string,
173
+ filename: string,
174
+ ) {
175
+ const parsed = parseReactNativeWebSource(source, filename);
176
+ if (!parsed) return;
177
+
178
+ const wrapped = t.cloneNode(init);
179
+ wrapped.arguments = [
180
+ t.callExpression(t.identifier("require"), [t.stringLiteral(parsed.source)]),
181
+ ];
182
+ return [
183
+ t.variableDeclaration(path.node.kind, [
184
+ t.variableDeclarator(t.identifier(id), wrapped),
185
+ ]),
186
+ ];
187
+ }
188
+
161
189
  export function handleReactNativeWebObjectPatternRequire(
162
190
  path: NodePath<VariableDeclaration>,
163
191
  t: BabelTypes,
@@ -180,6 +208,7 @@ export function handleReactNativeWebObjectPatternRequire(
180
208
  // We need to exit as we do not handle `const { Text, ...rest } = require('react-native-web');`
181
209
  return;
182
210
  } else if (
211
+ identifier.computed ||
183
212
  !(t.isIdentifier(identifier.value) && t.isIdentifier(identifier.key))
184
213
  ) {
185
214
  // Bail out on anything that isn't `const { <key>: <identifier> } = require('react-native-web');`
@@ -48,6 +48,7 @@ export function handleReactNativeImport(
48
48
  filename: string,
49
49
  ): Statement[] | undefined {
50
50
  const { specifiers, source } = declaration;
51
+ if (declaration.importKind && declaration.importKind !== "value") return;
51
52
 
52
53
  const rnwSource = parseReactNativeSource(source.value, filename);
53
54
  if (!rnwSource) {
@@ -76,7 +77,7 @@ export function handleReactNativeImport(
76
77
  } else {
77
78
  statements.push(
78
79
  t.importDeclaration(
79
- [t.importSpecifier(specifier.local, specifier.local)],
80
+ [t.importSpecifier(specifier.local, t.identifier(name))],
80
81
  t.stringLiteral(`react-native-css/components/${name}`),
81
82
  ),
82
83
  );
@@ -89,6 +90,10 @@ export function handleReactNativeImport(
89
90
  ),
90
91
  );
91
92
  } else {
93
+ if (specifier.importKind && specifier.importKind !== "value") {
94
+ statements.push(t.importDeclaration([specifier], source));
95
+ continue;
96
+ }
92
97
  const localName = t.isStringLiteral(specifier.imported)
93
98
  ? specifier.imported.value
94
99
  : specifier.imported.name;
@@ -180,6 +185,7 @@ export function handleReactNativeObjectPatternRequire(
180
185
  // We need to exit as we do not handle `const { Text, ...rest } = require('react-native');`
181
186
  return;
182
187
  } else if (
188
+ identifier.computed ||
183
189
  !(t.isIdentifier(identifier.value) && t.isIdentifier(identifier.key))
184
190
  ) {
185
191
  // Bail out on anything that isn't `const { <key>: <identifier> } = require('react-native');`
@@ -1,4 +1,5 @@
1
1
  import type {
2
+ Declaration,
2
3
  DeclarationBlock,
3
4
  ParsedComponent,
4
5
  Rule,
@@ -99,6 +100,49 @@ export function parsePropAtRule(rules?: (Rule | PropAtRule)[]) {
99
100
  return mapping;
100
101
  }
101
102
 
103
+ const mappingProperty = "-rn-native-mapping";
104
+
105
+ export function isMappingProperty(name: string) {
106
+ return name === mappingProperty || name.startsWith(`${mappingProperty}-`);
107
+ }
108
+
109
+ /** Declaration metadata survives the optimizer flattening nested at rules. */
110
+ export function parsePropDeclarations(declarations: Declaration[] = []) {
111
+ const mapping: StyleRuleMapping = {};
112
+ for (const declaration of declarations) {
113
+ if (
114
+ declaration.property !== "custom" ||
115
+ !isMappingProperty(declaration.value.name)
116
+ ) {
117
+ continue;
118
+ }
119
+ const { name, value } = declaration.value;
120
+ const target = value.filter(
121
+ (item): item is Extract<TokenOrValue, { type: "token" }> =>
122
+ item.type === "token" && item.value.type !== "white-space",
123
+ );
124
+ if (target.length === 0) continue;
125
+ nativeMappingAtRuleBlock(
126
+ [
127
+ {
128
+ type: "token",
129
+ value: {
130
+ type: "ident",
131
+ value:
132
+ name === mappingProperty
133
+ ? "*"
134
+ : name.slice(mappingProperty.length + 1),
135
+ },
136
+ },
137
+ { type: "token", value: { type: "colon" } },
138
+ ...target,
139
+ ],
140
+ mapping,
141
+ );
142
+ }
143
+ return mapping;
144
+ }
145
+
102
146
  function nativeMappingAtRuleBlock(
103
147
  token: Extract<TokenOrValue, { type: "token" }>[],
104
148
  mapping: StyleRuleMapping = {},
@@ -4,22 +4,35 @@ import { inspect } from "node:util";
4
4
  import { debug } from "debug";
5
5
  import {
6
6
  type ContainerRule,
7
- type MediaQuery as CSSMediaQuery,
8
7
  type CustomAtRules,
9
8
  type MediaRule,
9
+ type ParsedComponent,
10
+ type PropertyRule,
10
11
  type Rule,
11
12
  type Visitor,
12
13
  } from "lightningcss";
13
14
 
14
- import { maybeMutateReactNativeOptions, parsePropAtRule } from "./atRules";
15
+ import {
16
+ maybeMutateReactNativeOptions,
17
+ parsePropAtRule,
18
+ parsePropDeclarations,
19
+ } from "./atRules";
15
20
  import type {
16
21
  CompilerOptions,
17
22
  ContainerQuery,
23
+ StyleDescriptor,
18
24
  StyleRuleMapping,
19
25
  UniqueVarInfo,
20
26
  } from "./compiler.types";
21
27
  import { parseContainerCondition } from "./container-query";
22
- import { parseDeclaration, round } from "./declarations";
28
+ import {
29
+ parseAngle,
30
+ parseColor,
31
+ parseDeclaration,
32
+ parseLength,
33
+ reduceParseUnparsed,
34
+ round,
35
+ } from "./declarations";
23
36
  import { inlineVariables } from "./inline-variables";
24
37
  import { extractKeyFrames } from "./keyframes";
25
38
  import { lightningcssLoader } from "./lightningcss-loader";
@@ -74,17 +87,60 @@ export function compile(code: Buffer | string, options: CompilerOptions = {}) {
74
87
 
75
88
  const vars = new Map<string, UniqueVarInfo>();
76
89
 
77
- const firstPassVisitor: Visitor<CustomAtRules> = {};
90
+ // Determine the effective rem multiplier for compile-time inlining.
91
+ // If inlineRem is explicitly set, use that. Otherwise, scan for
92
+ // :root { font-size: Npx } in the CSS to allow CSS-based configuration.
93
+ let effectiveRem: number | false = options.inlineRem ?? undefined!;
94
+ if (effectiveRem === undefined) {
95
+ const css = typeof code === "string" ? code : code.toString();
96
+ const match = css.match(/:root\s*\{[^}]*font-size:\s*([\d.]+)px/);
97
+ effectiveRem = match?.[1] ? parseFloat(match[1]) : 14;
98
+ options.inlineRem = effectiveRem;
99
+ }
78
100
 
79
- if (options.inlineRem !== false) {
101
+ const firstPassVisitor: Visitor<CustomAtRules> = {
102
+ Rule(rule) {
103
+ if (
104
+ rule.type === "unknown" &&
105
+ ["cssInterop", "react-native"].includes(rule.value.name)
106
+ ) {
107
+ throw new Error(
108
+ `Unsupported @${rule.value.name} configuration. Use the compiler inlineVariables.exclude option to preserve variables, @media (prefers-color-scheme: dark) for dark mode, and React Native Appearance.setColorScheme() for manual selection.`,
109
+ );
110
+ }
111
+ // Reject before variable inlining can erase an unsupported condition and
112
+ // accidentally turn its values into unconditional declarations.
113
+ if (
114
+ rule.type === "style" &&
115
+ rule.value.selectors.some(
116
+ (selector) =>
117
+ selector.some(
118
+ (part) => part.type === "pseudo-class" && part.kind === "root",
119
+ ) &&
120
+ selector.some(
121
+ (part) =>
122
+ part.type === "class" ||
123
+ (part.type === "attribute" && part.name === "class"),
124
+ ),
125
+ )
126
+ ) {
127
+ throw new Error(
128
+ "Class-qualified :root selectors are unsupported on native. Use @media (prefers-color-scheme: dark) for dark mode, and React Native Appearance.setColorScheme() for manual selection.",
129
+ );
130
+ }
131
+ },
132
+ };
133
+
134
+ if (effectiveRem !== false) {
135
+ const remMultiplier = effectiveRem;
80
136
  firstPassVisitor.Length = (length) => {
81
- if (length.unit !== "rem" || options.inlineRem === false) {
137
+ if (length.unit !== "rem") {
82
138
  return length;
83
139
  }
84
140
 
85
141
  return {
86
142
  unit: "px",
87
- value: round(length.value * (options.inlineRem ?? 14)),
143
+ value: round(length.value * remMultiplier),
88
144
  };
89
145
  };
90
146
  }
@@ -233,7 +289,12 @@ function extractRule(
233
289
  const value = rule.value;
234
290
 
235
291
  const declarationBlock = value.declarations;
236
- mapping = { ...mapping, ...parsePropAtRule(value.rules) };
292
+ mapping = {
293
+ ...mapping,
294
+ ...parsePropAtRule(value.rules),
295
+ ...parsePropDeclarations(declarationBlock?.declarations),
296
+ ...parsePropDeclarations(declarationBlock?.importantDeclarations),
297
+ };
237
298
 
238
299
  // If the rule is a style declaration, extract it with the `getExtractedStyle` function and store it in the `declarations` map
239
300
  builder = builder.fork("style", value.selectors);
@@ -276,13 +337,15 @@ function extractRule(
276
337
  }
277
338
  }
278
339
  break;
340
+ case "property":
341
+ extractPropertyRule(rule.value, builder);
342
+ break;
279
343
  case "custom":
280
344
  case "font-face":
281
345
  case "font-palette-values":
282
346
  case "font-feature-values":
283
347
  case "namespace":
284
348
  case "layer-statement":
285
- case "property":
286
349
  case "view-transition":
287
350
  case "ignored":
288
351
  case "unknown":
@@ -314,39 +377,16 @@ function extractMedia(
314
377
  builder: StylesheetBuilder,
315
378
  mapping: StyleRuleMapping,
316
379
  ) {
317
- builder = builder.fork("media");
318
-
319
- // Initialize an empty array to store screen media queries
320
- const media: CSSMediaQuery[] = [];
321
-
322
- // Iterate over all media queries in the mediaRule
380
+ // Comma separated queries are alternatives. Each branch inherits the outer
381
+ // conditions without adding its siblings as required conjunctions.
323
382
  for (const mediaQuery of mediaRule.query.mediaQueries) {
324
- if (
325
- // If this is only a media query
326
- (mediaQuery.mediaType === "print" && mediaQuery.qualifier !== "not") ||
327
- // If this is a @media not print {}
328
- // We can only do this if there are no conditions, as @media not print and (min-width: 100px) could be valid
329
- (mediaQuery.mediaType !== "print" &&
330
- mediaQuery.qualifier === "not" &&
331
- mediaQuery.condition === null)
332
- ) {
383
+ const queryBuilder = builder.fork("media");
384
+ if (!parseMediaQuery(mediaQuery, queryBuilder)) {
333
385
  continue;
334
386
  }
335
-
336
- media.push(mediaQuery);
337
- }
338
-
339
- if (media.length === 0) {
340
- return;
341
- }
342
-
343
- for (const m of media) {
344
- parseMediaQuery(m, builder);
345
- }
346
-
347
- // Iterate over all rules in the mediaRule and extract their styles using the updated CompilerCollection
348
- for (const rule of mediaRule.rules) {
349
- extractRule(rule, builder, mapping);
387
+ for (const rule of mediaRule.rules) {
388
+ extractRule(rule, queryBuilder, mapping);
389
+ }
350
390
  }
351
391
  }
352
392
 
@@ -363,9 +403,12 @@ function extractContainer(
363
403
  builder = builder.fork("container");
364
404
 
365
405
  // Iterate over all rules inside the containerRule and extract their styles using the updated CompilerCollection
366
- const query: ContainerQuery = {
367
- m: parseContainerCondition(containerRule.condition, builder),
368
- };
406
+ const condition = parseContainerCondition(containerRule.condition, builder);
407
+ if (!condition) {
408
+ // An unsupported condition must not turn into an unconditional container.
409
+ return;
410
+ }
411
+ const query: ContainerQuery = { m: condition };
369
412
 
370
413
  if (containerRule.name) {
371
414
  query.n = `c:${containerRule.name}`;
@@ -377,3 +420,58 @@ function extractContainer(
377
420
  extractRule(rule, builder, mapping);
378
421
  }
379
422
  }
423
+
424
+ function extractPropertyRule(
425
+ propertyRule: PropertyRule,
426
+ builder: StylesheetBuilder,
427
+ ) {
428
+ const { initialValue, name } = propertyRule;
429
+
430
+ if (initialValue == null) {
431
+ return;
432
+ }
433
+
434
+ const varName = name.startsWith("--") ? name.slice(2) : name;
435
+ const value = parsePropertyInitialValue(initialValue, builder);
436
+
437
+ if (value !== undefined) {
438
+ builder.addRootVariable(varName, value);
439
+ }
440
+ }
441
+
442
+ function parsePropertyInitialValue(
443
+ component: ParsedComponent,
444
+ builder: StylesheetBuilder,
445
+ ): StyleDescriptor {
446
+ switch (component.type) {
447
+ case "length":
448
+ return parseLength(component.value, builder);
449
+ case "number":
450
+ case "integer":
451
+ return round(component.value);
452
+ case "percentage":
453
+ return `${round(component.value * 100)}%`;
454
+ case "color":
455
+ return parseColor(component.value, builder);
456
+ case "angle":
457
+ return parseAngle(component.value, builder);
458
+ case "length-percentage":
459
+ return parseLength(component.value, builder);
460
+ case "token-list":
461
+ return reduceParseUnparsed(component.value, builder, "@property", false);
462
+ case "custom-ident":
463
+ case "literal":
464
+ return component.value;
465
+ case "repeated": {
466
+ const results = component.value.components
467
+ .map((c) => parsePropertyInitialValue(c, builder))
468
+ .filter((v): v is NonNullable<StyleDescriptor> => v !== undefined);
469
+ // Unwrap single-child repeated values so downstream consumers get a
470
+ // scalar instead of a 1-element array. For example, `<length>+` with
471
+ // initial-value `10px` should produce the same shape as `<length>`.
472
+ return results.length === 1 ? results[0] : results;
473
+ }
474
+ default:
475
+ return undefined;
476
+ }
477
+ }
@@ -36,9 +36,14 @@ function parseContainerQueryCondition(
36
36
  const query = parseContainerCondition(condition.value, builder);
37
37
  return query ? ["!", query] : undefined;
38
38
  case "operation":
39
- const conditions = condition.conditions
40
- .map((c) => parseContainerQueryCondition(c, builder))
41
- .filter((v): v is MediaCondition => !!v);
39
+ const parsed = condition.conditions.map((c) =>
40
+ parseContainerCondition(c, builder),
41
+ );
42
+ if (condition.operator === "and" && parsed.some((c) => !c)) {
43
+ // Dropping a conjunct would broaden the query to unrelated containers.
44
+ return;
45
+ }
46
+ const conditions = parsed.filter((c): c is MediaCondition => !!c);
42
47
 
43
48
  if (conditions.length === 0) {
44
49
  return;