@tamagui/style-grammar 0.0.0-bootstrap.0 → 3.0.0-beta.643.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -1
  3. package/dist/cjs/backgroundFamily.cjs +176 -0
  4. package/dist/cjs/backgroundFamily.native.cjs +195 -0
  5. package/dist/cjs/backgroundFamily.native.js +197 -0
  6. package/dist/cjs/backgroundFamily.native.js.map +1 -0
  7. package/dist/cjs/borderFamily.cjs +169 -0
  8. package/dist/cjs/borderFamily.native.cjs +247 -0
  9. package/dist/cjs/borderFamily.native.js +249 -0
  10. package/dist/cjs/borderFamily.native.js.map +1 -0
  11. package/dist/cjs/candidate.cjs +608 -0
  12. package/dist/cjs/candidate.native.cjs +821 -0
  13. package/dist/cjs/candidate.native.js +823 -0
  14. package/dist/cjs/candidate.native.js.map +1 -0
  15. package/dist/cjs/candidateTarget.cjs +50 -0
  16. package/dist/cjs/candidateTarget.native.cjs +88 -0
  17. package/dist/cjs/candidateTarget.native.js +90 -0
  18. package/dist/cjs/candidateTarget.native.js.map +1 -0
  19. package/dist/cjs/clauseCapability.cjs +130 -0
  20. package/dist/cjs/clauseCapability.native.cjs +152 -0
  21. package/dist/cjs/clauseCapability.native.js +154 -0
  22. package/dist/cjs/clauseCapability.native.js.map +1 -0
  23. package/dist/cjs/clausePrecedence.cjs +153 -0
  24. package/dist/cjs/clausePrecedence.native.cjs +204 -0
  25. package/dist/cjs/clausePrecedence.native.js +206 -0
  26. package/dist/cjs/clausePrecedence.native.js.map +1 -0
  27. package/dist/cjs/clauseSources.cjs +47 -0
  28. package/dist/cjs/clauseSources.native.cjs +49 -0
  29. package/dist/cjs/clauseSources.native.js +51 -0
  30. package/dist/cjs/clauseSources.native.js.map +1 -0
  31. package/dist/cjs/config.cjs +130 -0
  32. package/dist/cjs/config.native.cjs +185 -0
  33. package/dist/cjs/config.native.js +187 -0
  34. package/dist/cjs/config.native.js.map +1 -0
  35. package/dist/cjs/evaluateProgram.cjs +65 -0
  36. package/dist/cjs/evaluateProgram.native.cjs +70 -0
  37. package/dist/cjs/evaluateProgram.native.js +72 -0
  38. package/dist/cjs/evaluateProgram.native.js.map +1 -0
  39. package/dist/cjs/fontShorthand.cjs +207 -0
  40. package/dist/cjs/fontShorthand.native.cjs +260 -0
  41. package/dist/cjs/fontShorthand.native.js +262 -0
  42. package/dist/cjs/fontShorthand.native.js.map +1 -0
  43. package/dist/cjs/geometricShorthand.cjs +122 -0
  44. package/dist/cjs/geometricShorthand.native.cjs +128 -0
  45. package/dist/cjs/geometricShorthand.native.js +130 -0
  46. package/dist/cjs/geometricShorthand.native.js.map +1 -0
  47. package/dist/cjs/index.cjs +19 -0
  48. package/dist/cjs/index.native.cjs +21 -0
  49. package/dist/cjs/index.native.js +23 -0
  50. package/dist/cjs/index.native.js.map +1 -0
  51. package/dist/cjs/lowerProgram.cjs +205 -0
  52. package/dist/cjs/lowerProgram.native.cjs +257 -0
  53. package/dist/cjs/lowerProgram.native.js +259 -0
  54. package/dist/cjs/lowerProgram.native.js.map +1 -0
  55. package/dist/cjs/mergeFlatValues.cjs +50 -0
  56. package/dist/cjs/mergeFlatValues.native.cjs +71 -0
  57. package/dist/cjs/mergeFlatValues.native.js +73 -0
  58. package/dist/cjs/mergeFlatValues.native.js.map +1 -0
  59. package/dist/cjs/modifierRegistry.cjs +246 -0
  60. package/dist/cjs/modifierRegistry.native.cjs +426 -0
  61. package/dist/cjs/modifierRegistry.native.js +428 -0
  62. package/dist/cjs/modifierRegistry.native.js.map +1 -0
  63. package/dist/cjs/payloadShape.cjs +69 -0
  64. package/dist/cjs/payloadShape.native.cjs +71 -0
  65. package/dist/cjs/payloadShape.native.js +73 -0
  66. package/dist/cjs/payloadShape.native.js.map +1 -0
  67. package/dist/cjs/programEligibility.cjs +46 -0
  68. package/dist/cjs/programEligibility.native.cjs +48 -0
  69. package/dist/cjs/programEligibility.native.js +50 -0
  70. package/dist/cjs/programEligibility.native.js.map +1 -0
  71. package/dist/cjs/programHash.cjs +86 -0
  72. package/dist/cjs/programHash.native.cjs +106 -0
  73. package/dist/cjs/programHash.native.js +108 -0
  74. package/dist/cjs/programHash.native.js.map +1 -0
  75. package/dist/cjs/programs.cjs +128 -0
  76. package/dist/cjs/programs.native.cjs +220 -0
  77. package/dist/cjs/programs.native.js +222 -0
  78. package/dist/cjs/programs.native.js.map +1 -0
  79. package/dist/cjs/registry.cjs +629 -0
  80. package/dist/cjs/registry.native.cjs +635 -0
  81. package/dist/cjs/registry.native.js +637 -0
  82. package/dist/cjs/registry.native.js.map +1 -0
  83. package/dist/cjs/resolvePayload.cjs +296 -0
  84. package/dist/cjs/resolvePayload.native.cjs +302 -0
  85. package/dist/cjs/resolvePayload.native.js +304 -0
  86. package/dist/cjs/resolvePayload.native.js.map +1 -0
  87. package/dist/cjs/runtime.cjs +50 -0
  88. package/dist/cjs/runtime.native.cjs +52 -0
  89. package/dist/cjs/runtime.native.js +54 -0
  90. package/dist/cjs/runtime.native.js.map +1 -0
  91. package/dist/cjs/safeAreaVariables.cjs +42 -0
  92. package/dist/cjs/safeAreaVariables.native.cjs +44 -0
  93. package/dist/cjs/safeAreaVariables.native.js +46 -0
  94. package/dist/cjs/safeAreaVariables.native.js.map +1 -0
  95. package/dist/cjs/scanFlatValue.cjs +181 -0
  96. package/dist/cjs/scanFlatValue.native.cjs +183 -0
  97. package/dist/cjs/scanFlatValue.native.js +185 -0
  98. package/dist/cjs/scanFlatValue.native.js.map +1 -0
  99. package/dist/cjs/serializePayload.cjs +149 -0
  100. package/dist/cjs/serializePayload.native.cjs +187 -0
  101. package/dist/cjs/serializePayload.native.js +189 -0
  102. package/dist/cjs/serializePayload.native.js.map +1 -0
  103. package/dist/cjs/stateModifiers.cjs +43 -0
  104. package/dist/cjs/stateModifiers.native.cjs +45 -0
  105. package/dist/cjs/stateModifiers.native.js +47 -0
  106. package/dist/cjs/stateModifiers.native.js.map +1 -0
  107. package/dist/cjs/states.cjs +97 -0
  108. package/dist/cjs/states.native.cjs +131 -0
  109. package/dist/cjs/states.native.js +133 -0
  110. package/dist/cjs/states.native.js.map +1 -0
  111. package/dist/cjs/table.cjs +54 -0
  112. package/dist/cjs/table.native.cjs +135 -0
  113. package/dist/cjs/table.native.js +137 -0
  114. package/dist/cjs/table.native.js.map +1 -0
  115. package/dist/cjs/textDecorationFamily.cjs +129 -0
  116. package/dist/cjs/textDecorationFamily.native.cjs +199 -0
  117. package/dist/cjs/textDecorationFamily.native.js +201 -0
  118. package/dist/cjs/textDecorationFamily.native.js.map +1 -0
  119. package/dist/cjs/tooling.cjs +26 -0
  120. package/dist/cjs/tooling.native.cjs +28 -0
  121. package/dist/cjs/tooling.native.js +30 -0
  122. package/dist/cjs/tooling.native.js.map +1 -0
  123. package/dist/cjs/toolingAnnotations.cjs +105 -0
  124. package/dist/cjs/toolingAnnotations.native.cjs +133 -0
  125. package/dist/cjs/toolingAnnotations.native.js +135 -0
  126. package/dist/cjs/toolingAnnotations.native.js.map +1 -0
  127. package/dist/cjs/toolingDiagnostics.cjs +459 -0
  128. package/dist/cjs/toolingDiagnostics.native.cjs +788 -0
  129. package/dist/cjs/toolingDiagnostics.native.js +790 -0
  130. package/dist/cjs/toolingDiagnostics.native.js.map +1 -0
  131. package/dist/cjs/toolingRegistry.cjs +159 -0
  132. package/dist/cjs/toolingRegistry.native.cjs +164 -0
  133. package/dist/cjs/toolingRegistry.native.js +166 -0
  134. package/dist/cjs/toolingRegistry.native.js.map +1 -0
  135. package/dist/cjs/transformFamily.cjs +425 -0
  136. package/dist/cjs/transformFamily.native.cjs +517 -0
  137. package/dist/cjs/transformFamily.native.js +519 -0
  138. package/dist/cjs/transformFamily.native.js.map +1 -0
  139. package/dist/cjs/transition.cjs +459 -0
  140. package/dist/cjs/transition.native.cjs +499 -0
  141. package/dist/cjs/transition.native.js +501 -0
  142. package/dist/cjs/transition.native.js.map +1 -0
  143. package/dist/cjs/transitionAlign.cjs +115 -0
  144. package/dist/cjs/transitionAlign.native.cjs +154 -0
  145. package/dist/cjs/transitionAlign.native.js +156 -0
  146. package/dist/cjs/transitionAlign.native.js.map +1 -0
  147. package/dist/cjs/transitionLegacy.cjs +217 -0
  148. package/dist/cjs/transitionLegacy.native.cjs +260 -0
  149. package/dist/cjs/transitionLegacy.native.js +262 -0
  150. package/dist/cjs/transitionLegacy.native.js.map +1 -0
  151. package/dist/cjs/transitionNative.cjs +281 -0
  152. package/dist/cjs/transitionNative.native.cjs +285 -0
  153. package/dist/cjs/transitionNative.native.js +287 -0
  154. package/dist/cjs/transitionNative.native.js.map +1 -0
  155. package/dist/cjs/unitlessNumbers.cjs +86 -0
  156. package/dist/cjs/unitlessNumbers.native.cjs +106 -0
  157. package/dist/cjs/unitlessNumbers.native.js +108 -0
  158. package/dist/cjs/unitlessNumbers.native.js.map +1 -0
  159. package/dist/cjs/v6ThemeNames.cjs +47 -0
  160. package/dist/cjs/v6ThemeNames.native.cjs +53 -0
  161. package/dist/cjs/v6ThemeNames.native.js +55 -0
  162. package/dist/cjs/v6ThemeNames.native.js.map +1 -0
  163. package/dist/cjs/valueParser.cjs +148 -0
  164. package/dist/cjs/valueParser.native.cjs +150 -0
  165. package/dist/cjs/valueParser.native.js +152 -0
  166. package/dist/cjs/valueParser.native.js.map +1 -0
  167. package/dist/cjs/valueTypes.cjs +38 -0
  168. package/dist/cjs/valueTypes.native.cjs +40 -0
  169. package/dist/cjs/valueTypes.native.js +42 -0
  170. package/dist/cjs/valueTypes.native.js.map +1 -0
  171. package/dist/esm/backgroundFamily.mjs +150 -0
  172. package/dist/esm/backgroundFamily.mjs.map +1 -0
  173. package/dist/esm/backgroundFamily.native.js +167 -0
  174. package/dist/esm/backgroundFamily.native.js.map +1 -0
  175. package/dist/esm/borderFamily.mjs +146 -0
  176. package/dist/esm/borderFamily.mjs.map +1 -0
  177. package/dist/esm/borderFamily.native.js +222 -0
  178. package/dist/esm/borderFamily.native.js.map +1 -0
  179. package/dist/esm/candidate.mjs +581 -0
  180. package/dist/esm/candidate.mjs.map +1 -0
  181. package/dist/esm/candidate.native.js +792 -0
  182. package/dist/esm/candidate.native.js.map +1 -0
  183. package/dist/esm/candidateTarget.mjs +29 -0
  184. package/dist/esm/candidateTarget.mjs.map +1 -0
  185. package/dist/esm/candidateTarget.native.js +65 -0
  186. package/dist/esm/candidateTarget.native.js.map +1 -0
  187. package/dist/esm/clauseCapability.mjs +107 -0
  188. package/dist/esm/clauseCapability.mjs.map +1 -0
  189. package/dist/esm/clauseCapability.native.js +127 -0
  190. package/dist/esm/clauseCapability.native.js.map +1 -0
  191. package/dist/esm/clausePrecedence.mjs +121 -0
  192. package/dist/esm/clausePrecedence.mjs.map +1 -0
  193. package/dist/esm/clausePrecedence.native.js +170 -0
  194. package/dist/esm/clausePrecedence.native.js.map +1 -0
  195. package/dist/esm/clauseSources.mjs +23 -0
  196. package/dist/esm/clauseSources.mjs.map +1 -0
  197. package/dist/esm/clauseSources.native.js +23 -0
  198. package/dist/esm/clauseSources.native.js.map +1 -0
  199. package/dist/esm/config.mjs +103 -0
  200. package/dist/esm/config.mjs.map +1 -0
  201. package/dist/esm/config.native.js +156 -0
  202. package/dist/esm/config.native.js.map +1 -0
  203. package/dist/esm/evaluateProgram.mjs +45 -0
  204. package/dist/esm/evaluateProgram.mjs.map +1 -0
  205. package/dist/esm/evaluateProgram.native.js +48 -0
  206. package/dist/esm/evaluateProgram.native.js.map +1 -0
  207. package/dist/esm/fontShorthand.mjs +184 -0
  208. package/dist/esm/fontShorthand.mjs.map +1 -0
  209. package/dist/esm/fontShorthand.native.js +235 -0
  210. package/dist/esm/fontShorthand.native.js.map +1 -0
  211. package/dist/esm/geometricShorthand.mjs +102 -0
  212. package/dist/esm/geometricShorthand.mjs.map +1 -0
  213. package/dist/esm/geometricShorthand.native.js +106 -0
  214. package/dist/esm/geometricShorthand.native.js.map +1 -0
  215. package/dist/esm/index.mjs +1 -0
  216. package/dist/esm/index.native.js +1 -0
  217. package/dist/esm/lowerProgram.mjs +182 -0
  218. package/dist/esm/lowerProgram.mjs.map +1 -0
  219. package/dist/esm/lowerProgram.native.js +232 -0
  220. package/dist/esm/lowerProgram.native.js.map +1 -0
  221. package/dist/esm/mergeFlatValues.mjs +27 -0
  222. package/dist/esm/mergeFlatValues.mjs.map +1 -0
  223. package/dist/esm/mergeFlatValues.native.js +46 -0
  224. package/dist/esm/mergeFlatValues.native.js.map +1 -0
  225. package/dist/esm/modifierRegistry.mjs +219 -0
  226. package/dist/esm/modifierRegistry.mjs.map +1 -0
  227. package/dist/esm/modifierRegistry.native.js +397 -0
  228. package/dist/esm/modifierRegistry.native.js.map +1 -0
  229. package/dist/esm/payloadShape.mjs +49 -0
  230. package/dist/esm/payloadShape.mjs.map +1 -0
  231. package/dist/esm/payloadShape.native.js +49 -0
  232. package/dist/esm/payloadShape.native.js.map +1 -0
  233. package/dist/esm/programEligibility.mjs +22 -0
  234. package/dist/esm/programEligibility.mjs.map +1 -0
  235. package/dist/esm/programEligibility.native.js +22 -0
  236. package/dist/esm/programEligibility.native.js.map +1 -0
  237. package/dist/esm/programHash.mjs +62 -0
  238. package/dist/esm/programHash.mjs.map +1 -0
  239. package/dist/esm/programHash.native.js +80 -0
  240. package/dist/esm/programHash.native.js.map +1 -0
  241. package/dist/esm/programs.mjs +103 -0
  242. package/dist/esm/programs.mjs.map +1 -0
  243. package/dist/esm/programs.native.js +193 -0
  244. package/dist/esm/programs.native.js.map +1 -0
  245. package/dist/esm/registry.mjs +595 -0
  246. package/dist/esm/registry.mjs.map +1 -0
  247. package/dist/esm/registry.native.js +599 -0
  248. package/dist/esm/registry.native.js.map +1 -0
  249. package/dist/esm/resolvePayload.mjs +273 -0
  250. package/dist/esm/resolvePayload.mjs.map +1 -0
  251. package/dist/esm/resolvePayload.native.js +277 -0
  252. package/dist/esm/resolvePayload.native.js.map +1 -0
  253. package/dist/esm/runtime.mjs +63 -0
  254. package/dist/esm/runtime.native.js +63 -0
  255. package/dist/esm/safeAreaVariables.mjs +18 -0
  256. package/dist/esm/safeAreaVariables.mjs.map +1 -0
  257. package/dist/esm/safeAreaVariables.native.js +18 -0
  258. package/dist/esm/safeAreaVariables.native.js.map +1 -0
  259. package/dist/esm/scanFlatValue.mjs +160 -0
  260. package/dist/esm/scanFlatValue.mjs.map +1 -0
  261. package/dist/esm/scanFlatValue.native.js +160 -0
  262. package/dist/esm/scanFlatValue.native.js.map +1 -0
  263. package/dist/esm/serializePayload.mjs +125 -0
  264. package/dist/esm/serializePayload.mjs.map +1 -0
  265. package/dist/esm/serializePayload.native.js +161 -0
  266. package/dist/esm/serializePayload.native.js.map +1 -0
  267. package/dist/esm/stateModifiers.mjs +19 -0
  268. package/dist/esm/stateModifiers.mjs.map +1 -0
  269. package/dist/esm/stateModifiers.native.js +19 -0
  270. package/dist/esm/stateModifiers.native.js.map +1 -0
  271. package/dist/esm/states.mjs +69 -0
  272. package/dist/esm/states.mjs.map +1 -0
  273. package/dist/esm/states.native.js +101 -0
  274. package/dist/esm/states.native.js.map +1 -0
  275. package/dist/esm/table.mjs +31 -0
  276. package/dist/esm/table.mjs.map +1 -0
  277. package/dist/esm/table.native.js +110 -0
  278. package/dist/esm/table.native.js.map +1 -0
  279. package/dist/esm/textDecorationFamily.mjs +106 -0
  280. package/dist/esm/textDecorationFamily.mjs.map +1 -0
  281. package/dist/esm/textDecorationFamily.native.js +174 -0
  282. package/dist/esm/textDecorationFamily.native.js.map +1 -0
  283. package/dist/esm/tooling.mjs +15 -0
  284. package/dist/esm/tooling.native.js +15 -0
  285. package/dist/esm/toolingAnnotations.mjs +85 -0
  286. package/dist/esm/toolingAnnotations.mjs.map +1 -0
  287. package/dist/esm/toolingAnnotations.native.js +111 -0
  288. package/dist/esm/toolingAnnotations.native.js.map +1 -0
  289. package/dist/esm/toolingDiagnostics.mjs +428 -0
  290. package/dist/esm/toolingDiagnostics.mjs.map +1 -0
  291. package/dist/esm/toolingDiagnostics.native.js +755 -0
  292. package/dist/esm/toolingDiagnostics.native.js.map +1 -0
  293. package/dist/esm/toolingRegistry.mjs +135 -0
  294. package/dist/esm/toolingRegistry.mjs.map +1 -0
  295. package/dist/esm/toolingRegistry.native.js +138 -0
  296. package/dist/esm/toolingRegistry.native.js.map +1 -0
  297. package/dist/esm/transformFamily.mjs +392 -0
  298. package/dist/esm/transformFamily.mjs.map +1 -0
  299. package/dist/esm/transformFamily.native.js +482 -0
  300. package/dist/esm/transformFamily.native.js.map +1 -0
  301. package/dist/esm/transition.mjs +434 -0
  302. package/dist/esm/transition.mjs.map +1 -0
  303. package/dist/esm/transition.native.js +472 -0
  304. package/dist/esm/transition.native.js.map +1 -0
  305. package/dist/esm/transitionAlign.mjs +95 -0
  306. package/dist/esm/transitionAlign.mjs.map +1 -0
  307. package/dist/esm/transitionAlign.native.js +132 -0
  308. package/dist/esm/transitionAlign.native.js.map +1 -0
  309. package/dist/esm/transitionLegacy.mjs +197 -0
  310. package/dist/esm/transitionLegacy.mjs.map +1 -0
  311. package/dist/esm/transitionLegacy.native.js +238 -0
  312. package/dist/esm/transitionLegacy.native.js.map +1 -0
  313. package/dist/esm/transitionNative.mjs +257 -0
  314. package/dist/esm/transitionNative.mjs.map +1 -0
  315. package/dist/esm/transitionNative.native.js +259 -0
  316. package/dist/esm/transitionNative.native.js.map +1 -0
  317. package/dist/esm/unitlessNumbers.mjs +65 -0
  318. package/dist/esm/unitlessNumbers.mjs.map +1 -0
  319. package/dist/esm/unitlessNumbers.native.js +83 -0
  320. package/dist/esm/unitlessNumbers.native.js.map +1 -0
  321. package/dist/esm/v6ThemeNames.mjs +23 -0
  322. package/dist/esm/v6ThemeNames.mjs.map +1 -0
  323. package/dist/esm/v6ThemeNames.native.js +27 -0
  324. package/dist/esm/v6ThemeNames.native.js.map +1 -0
  325. package/dist/esm/valueParser.mjs +125 -0
  326. package/dist/esm/valueParser.mjs.map +1 -0
  327. package/dist/esm/valueParser.native.js +125 -0
  328. package/dist/esm/valueParser.native.js.map +1 -0
  329. package/dist/esm/valueTypes.mjs +14 -0
  330. package/dist/esm/valueTypes.mjs.map +1 -0
  331. package/dist/esm/valueTypes.native.js +14 -0
  332. package/dist/esm/valueTypes.native.js.map +1 -0
  333. package/package.json +98 -4
  334. package/src/backgroundFamily.ts +182 -0
  335. package/src/borderFamily.ts +172 -0
  336. package/src/candidate.ts +691 -0
  337. package/src/candidateTarget.ts +67 -0
  338. package/src/clauseCapability.ts +209 -0
  339. package/src/clausePrecedence.ts +198 -0
  340. package/src/clauseSources.ts +29 -0
  341. package/src/config.ts +169 -0
  342. package/src/evaluateProgram.ts +91 -0
  343. package/src/fontShorthand.ts +177 -0
  344. package/src/geometricShorthand.ts +105 -0
  345. package/src/index.ts +1 -0
  346. package/src/lowerProgram.ts +398 -0
  347. package/src/modifierRegistry.ts +340 -0
  348. package/src/payloadShape.ts +92 -0
  349. package/src/programEligibility.ts +46 -0
  350. package/src/programHash.ts +128 -0
  351. package/src/programs.ts +95 -0
  352. package/src/registry.ts +367 -0
  353. package/src/resolvePayload.ts +480 -0
  354. package/src/runtime.ts +32 -0
  355. package/src/safeAreaVariables.ts +19 -0
  356. package/src/scanFlatValue.ts +327 -0
  357. package/src/serializePayload.ts +199 -0
  358. package/src/stateModifiers.ts +36 -0
  359. package/src/states.ts +128 -0
  360. package/src/table.ts +47 -0
  361. package/src/textDecorationFamily.ts +119 -0
  362. package/src/tooling.ts +8 -0
  363. package/src/toolingAnnotations.ts +151 -0
  364. package/src/toolingDiagnostics.ts +735 -0
  365. package/src/toolingRegistry.ts +130 -0
  366. package/src/transformFamily.ts +590 -0
  367. package/src/transition.ts +553 -0
  368. package/src/transitionAlign.ts +165 -0
  369. package/src/transitionLegacy.ts +237 -0
  370. package/src/transitionNative.ts +357 -0
  371. package/src/unitlessNumbers.ts +61 -0
  372. package/src/v6ThemeNames.ts +40 -0
  373. package/src/valueParser.ts +193 -0
  374. package/src/valueTypes.ts +136 -0
  375. package/types/backgroundFamily.d.ts +17 -0
  376. package/types/backgroundFamily.d.ts.map +11 -0
  377. package/types/borderFamily.d.ts +23 -0
  378. package/types/borderFamily.d.ts.map +11 -0
  379. package/types/candidate.d.ts +52 -0
  380. package/types/candidate.d.ts.map +11 -0
  381. package/types/candidateTarget.d.ts +32 -0
  382. package/types/candidateTarget.d.ts.map +11 -0
  383. package/types/clauseCapability.d.ts +69 -0
  384. package/types/clauseCapability.d.ts.map +11 -0
  385. package/types/clausePrecedence.d.ts +30 -0
  386. package/types/clausePrecedence.d.ts.map +11 -0
  387. package/types/clauseSources.d.ts +12 -0
  388. package/types/clauseSources.d.ts.map +11 -0
  389. package/types/config.d.ts +44 -0
  390. package/types/config.d.ts.map +11 -0
  391. package/types/evaluateProgram.d.ts +27 -0
  392. package/types/evaluateProgram.d.ts.map +11 -0
  393. package/types/fontShorthand.d.ts +25 -0
  394. package/types/fontShorthand.d.ts.map +11 -0
  395. package/types/geometricShorthand.d.ts +21 -0
  396. package/types/geometricShorthand.d.ts.map +11 -0
  397. package/types/index.d.ts +3 -0
  398. package/types/index.d.ts.map +11 -0
  399. package/types/lowerProgram.d.ts +73 -0
  400. package/types/lowerProgram.d.ts.map +11 -0
  401. package/types/mergeFlatValues.d.ts +14 -0
  402. package/types/mergeFlatValues.d.ts.map +11 -0
  403. package/types/modifierRegistry.d.ts +70 -0
  404. package/types/modifierRegistry.d.ts.map +11 -0
  405. package/types/payloadShape.d.ts +15 -0
  406. package/types/payloadShape.d.ts.map +11 -0
  407. package/types/programEligibility.d.ts +23 -0
  408. package/types/programEligibility.d.ts.map +11 -0
  409. package/types/programHash.d.ts +20 -0
  410. package/types/programHash.d.ts.map +11 -0
  411. package/types/programs.d.ts +18 -0
  412. package/types/programs.d.ts.map +11 -0
  413. package/types/registry.d.ts +24 -0
  414. package/types/registry.d.ts.map +11 -0
  415. package/types/resolvePayload.d.ts +75 -0
  416. package/types/resolvePayload.d.ts.map +11 -0
  417. package/types/runtime.d.ts +34 -0
  418. package/types/runtime.d.ts.map +11 -0
  419. package/types/safeAreaVariables.d.ts +5 -0
  420. package/types/safeAreaVariables.d.ts.map +11 -0
  421. package/types/scanFlatValue.d.ts +29 -0
  422. package/types/scanFlatValue.d.ts.map +11 -0
  423. package/types/serializePayload.d.ts +13 -0
  424. package/types/serializePayload.d.ts.map +11 -0
  425. package/types/stateModifiers.d.ts +14 -0
  426. package/types/stateModifiers.d.ts.map +11 -0
  427. package/types/states.d.ts +22 -0
  428. package/types/states.d.ts.map +11 -0
  429. package/types/table.d.ts +4 -0
  430. package/types/table.d.ts.map +11 -0
  431. package/types/textDecorationFamily.d.ts +23 -0
  432. package/types/textDecorationFamily.d.ts.map +11 -0
  433. package/types/tooling.d.ts +10 -0
  434. package/types/tooling.d.ts.map +11 -0
  435. package/types/toolingAnnotations.d.ts +29 -0
  436. package/types/toolingAnnotations.d.ts.map +11 -0
  437. package/types/toolingDiagnostics.d.ts +114 -0
  438. package/types/toolingDiagnostics.d.ts.map +11 -0
  439. package/types/toolingRegistry.d.ts +10 -0
  440. package/types/toolingRegistry.d.ts.map +11 -0
  441. package/types/transformFamily.d.ts +83 -0
  442. package/types/transformFamily.d.ts.map +11 -0
  443. package/types/transition.d.ts +65 -0
  444. package/types/transition.d.ts.map +11 -0
  445. package/types/transitionAlign.d.ts +15 -0
  446. package/types/transitionAlign.d.ts.map +11 -0
  447. package/types/transitionLegacy.d.ts +9 -0
  448. package/types/transitionLegacy.d.ts.map +11 -0
  449. package/types/transitionNative.d.ts +41 -0
  450. package/types/transitionNative.d.ts.map +11 -0
  451. package/types/unitlessNumbers.d.ts +3 -0
  452. package/types/unitlessNumbers.d.ts.map +11 -0
  453. package/types/v6ThemeNames.d.ts +7 -0
  454. package/types/v6ThemeNames.d.ts.map +11 -0
  455. package/types/valueParser.d.ts +36 -0
  456. package/types/valueParser.d.ts.map +11 -0
  457. package/types/valueTypes.d.ts +66 -0
  458. package/types/valueTypes.d.ts.map +11 -0
@@ -0,0 +1,398 @@
1
+ // Web lowering: one program becomes one contiguous block of CSS rules.
2
+ //
3
+ // See plans/dom-tailwind-flat-values.md — "The program block encoding". The
4
+ // invariants this file exists to hold:
5
+ //
6
+ // - every condition anchors on the subject class, Tailwind-group style, so a
7
+ // clause is exactly ONE selector: conditions chain as `:where()` on the
8
+ // subject in authored modifier order. Ancestor-scoped conditions become a
9
+ // descendant test inside their own `:where()` (`.t_dark *`), which makes each
10
+ // one independent, so nesting order between them never matters and no
11
+ // ancestor-permutation selectors exist;
12
+ // - rule order is ascending clause precedence; selector specificity encodes
13
+ // depth, while platform clauses receive a floor above the maximum
14
+ // non-platform depth. Self states contribute naturally; media/container
15
+ // wrappers and :where()-scoped theme/group ancestors contribute zero;
16
+ // - the block is inserted contiguously, so cross-program order never matters and
17
+ // append-at-end is always safe.
18
+ //
19
+ // Payloads are emitted verbatim. Token resolution, opacity composition, and
20
+ // value validation all happen upstream: this layer receives CSS-ready payloads,
21
+ // and the same resolved program is what the class name hashes, so a program has
22
+ // exactly one identity. Rule injection through a payload is structurally
23
+ // impossible because the parser rejects a top-level `{`, `}`, or `;`.
24
+
25
+ import { parseContainerModifier, parseGroupModifier } from './modifierRegistry'
26
+ import {
27
+ canonicalClauseModifier,
28
+ clauseConditionSetKey,
29
+ clauseSubjectClassRepetitions,
30
+ compareClausePrecedence,
31
+ createClausePrecedenceOrder,
32
+ getClausePrecedenceKey,
33
+ type ClausePrecedenceOrder,
34
+ } from './clausePrecedence'
35
+ import { transformAxisCompositions } from './transformFamily'
36
+ import { programClassName } from './programHash'
37
+ import { stateToSelector } from './states'
38
+ import type { LonghandProgram, ModifierRegistryView } from './valueTypes'
39
+
40
+ /**
41
+ * Where a condition's selector fragment is matched, relative to the subject: on
42
+ * the subject itself, strictly above it, or either.
43
+ */
44
+ export type ConditionScope = 'self' | 'within' | 'is-or-within'
45
+
46
+ export interface ConditionSelector {
47
+ /** compound selector piece, eg `:hover`, `.t_dark`, `[aria-disabled]` */
48
+ fragment: string
49
+ /** defaults to `self` */
50
+ scope?: ConditionScope
51
+ /**
52
+ * capability guard the rule must nest in, eg `(hover: hover)` so touch
53
+ * devices never sticky-trigger hover styles
54
+ */
55
+ media?: string
56
+ }
57
+
58
+ /**
59
+ * Interaction-state selector spellings: `disabled` is an attribute rather than
60
+ * `:disabled`, and enter matches the unmounted class on the subject or above it.
61
+ * Mirrored as data instead of imported because this package must not depend on
62
+ * @tamagui/web.
63
+ *
64
+ * Lifecycle clauses use classes supplied by createComponent. `is-or-within`
65
+ * lets a presence boundary carry the lifecycle state for descendants too.
66
+ */
67
+ export const defaultStateSelectors: Readonly<Record<string, ConditionSelector>> =
68
+ Object.freeze({
69
+ hover: { fragment: ':hover', media: '(hover: hover)' },
70
+ // the press modifier's CSS pseudo name is `active`
71
+ press: { fragment: ':active' },
72
+ // the registered alias of press
73
+ active: { fragment: ':active' },
74
+ focus: { fragment: ':focus' },
75
+ 'focus-visible': { fragment: ':focus-visible' },
76
+ 'focus-within': { fragment: ':focus-within' },
77
+ disabled: { fragment: '[aria-disabled]' },
78
+ enter: { fragment: '.t_unmounted', scope: 'is-or-within' },
79
+ exit: { fragment: '.t_exiting', scope: 'is-or-within' },
80
+ // component-tier states, from the shared state vocabulary's web selectors
81
+ ...(Object.fromEntries(
82
+ Object.entries(stateToSelector).map(([state, selector]) => [
83
+ state,
84
+ { fragment: selector },
85
+ ])
86
+ ) as Record<string, ConditionSelector>),
87
+ })
88
+
89
+ // core writes the unnamed group's class as `t_group_true`, from the boolean
90
+ // `group` prop (see getSplitStyles' group class name construction)
91
+ const unnamedGroup = 'true'
92
+
93
+ // a capability guard (hover: hover) wraps once even when the subject and a
94
+ // group both carry the hover state in one clause
95
+ function pushCapabilityGuard(wrappers: string[], media: string): void {
96
+ const guard = `@media ${media}`
97
+ for (let index = 0; index < wrappers.length; index++) {
98
+ if (wrappers[index] === guard) return
99
+ }
100
+ wrappers.push(guard)
101
+ }
102
+
103
+ export interface LowerProgramOptions {
104
+ /** classifies each modifier; the same registry the value was parsed against */
105
+ registry: ModifierRegistryView
106
+ /** opaque stamp for the resolved config that produced these payloads */
107
+ configRevision: string
108
+ /** media key -> the `@media` condition text, eg `(max-width: 860px)` */
109
+ mediaQueries?: Readonly<Record<string, string>>
110
+ /**
111
+ * media key -> the `@container` condition text, eg `(min-width: 24rem)`. Sizes
112
+ * are the same keys as `mediaQueries`, but the query text differs: container
113
+ * queries measure the container, not the viewport, so the caller derives both
114
+ * from config.
115
+ */
116
+ containerQueries?: Readonly<Record<string, string>>
117
+ /** modifier -> selector, defaults to `defaultStateSelectors` */
118
+ stateSelectors?: Readonly<Record<string, ConditionSelector>>
119
+ /** precomputed media declaration order; derived from mediaQueries by default */
120
+ precedenceOrder?: ClausePrecedenceOrder
121
+ /** theme class prefix; `t_` gives `.t_dark` */
122
+ themeClassPrefix?: string
123
+ /** group class prefix; `t_group_` gives `.t_group_card` */
124
+ groupClassPrefix?: string
125
+ }
126
+
127
+ export interface LoweredProgram {
128
+ className: string
129
+ /** base rule first, then one rule per emitted clause in precedence order */
130
+ rules: string[]
131
+ /**
132
+ * Present when the program writes a per-axis custom property (`x`, `y`,
133
+ * `scaleX`, `scaleY`). The composing rule turns the axis variables into the
134
+ * real CSS property and is identical for every element using that axis group,
135
+ * so it carries its own class name and hash: the caller adds this class too and
136
+ * insertion dedups it to one rule per sheet. Its specificity is the same
137
+ * (0,1,0) as every other rule here.
138
+ */
139
+ composition?: {
140
+ /** the CSS property being composed, and the classNames key to store it under */
141
+ property: string
142
+ className: string
143
+ rules: string[]
144
+ }
145
+ }
146
+
147
+ function hyphenate(property: string): string {
148
+ let out = ''
149
+ for (let index = 0; index < property.length; index++) {
150
+ const code = property.charCodeAt(index)
151
+ out +=
152
+ code >= 65 && code <= 90 ? `-${property[index].toLowerCase()}` : property[index]
153
+ }
154
+ return out
155
+ }
156
+
157
+ function conditionSelector(
158
+ fragment: string,
159
+ scope: ConditionScope,
160
+ zeroSpecificity: boolean
161
+ ): string {
162
+ const pseudo = zeroSpecificity ? 'where' : 'is'
163
+ if (scope === 'within') return `:${pseudo}(${fragment} *)`
164
+ if (scope === 'is-or-within') {
165
+ return `:${pseudo}(${fragment}, ${fragment} *)`
166
+ }
167
+ return zeroSpecificity ? `:where(${fragment})` : fragment
168
+ }
169
+
170
+ type PointerEventsMode = 'auto' | 'none' | 'box-none' | 'box-only'
171
+
172
+ function isPointerEventsMode(value: string): value is PointerEventsMode {
173
+ return (
174
+ value === 'auto' || value === 'none' || value === 'box-none' || value === 'box-only'
175
+ )
176
+ }
177
+
178
+ function pointerEventsCSS(mode: PointerEventsMode): {
179
+ subject: 'auto' | 'none'
180
+ children: 'auto' | 'none'
181
+ } {
182
+ return {
183
+ subject: mode === 'none' || mode === 'box-none' ? 'none' : 'auto',
184
+ children: mode === 'none' || mode === 'box-only' ? 'none' : 'auto',
185
+ }
186
+ }
187
+
188
+ export function lowerProgram(
189
+ program: LonghandProgram,
190
+ options: LowerProgramOptions
191
+ ): LoweredProgram {
192
+ const {
193
+ registry,
194
+ configRevision,
195
+ mediaQueries,
196
+ containerQueries,
197
+ stateSelectors = defaultStateSelectors,
198
+ precedenceOrder = createClausePrecedenceOrder(mediaQueries),
199
+ themeClassPrefix = 't_',
200
+ groupClassPrefix = 't_group_',
201
+ } = options
202
+
203
+ const className = programClassName(program.property, program.value, configRevision)
204
+ const declaration = hyphenate(program.property)
205
+ const rules: string[] = []
206
+
207
+ // React Native's box-only/box-none values need a subject rule and a direct-child
208
+ // rule. If either appears in a program, every clause emits both halves so moving
209
+ // between (for example) box-none and none cannot leave the base child rule active.
210
+ const pointerEventsProgram =
211
+ program.property === 'pointerEvents' &&
212
+ [program.value.base, ...program.value.clauses.map((clause) => clause.payload)].some(
213
+ (value) => value === 'box-none' || value === 'box-only'
214
+ )
215
+
216
+ const pushRule = (selector: string, wrappers: readonly string[], value: string) => {
217
+ if (pointerEventsProgram && isPointerEventsMode(value)) {
218
+ const pointerEvents = pointerEventsCSS(value)
219
+ rules.push(
220
+ wrapAtRules(`${selector}{${declaration}:${pointerEvents.subject}}`, wrappers)
221
+ )
222
+ rules.push(
223
+ wrapAtRules(`${selector}>*{${declaration}:${pointerEvents.children}}`, wrappers)
224
+ )
225
+ return
226
+ }
227
+ rules.push(wrapAtRules(`${selector}{${declaration}:${value}}`, wrappers))
228
+ }
229
+
230
+ if (program.value.base !== null) {
231
+ pushRule(`.${className}`, [], program.value.base)
232
+ }
233
+
234
+ const clauseSlots = new Map<
235
+ string,
236
+ { clause: (typeof program.value.clauses)[number]; index: number }
237
+ >()
238
+ for (let index = 0; index < program.value.clauses.length; index++) {
239
+ const clause = program.value.clauses[index]
240
+ clauseSlots.set(clauseConditionSetKey(clause.modifiers), { clause, index })
241
+ }
242
+ const clauses = [...clauseSlots.values()]
243
+ .map((entry) => ({
244
+ ...entry,
245
+ precedence: getClausePrecedenceKey(
246
+ entry.clause.modifiers,
247
+ registry,
248
+ precedenceOrder
249
+ ),
250
+ }))
251
+ .sort(
252
+ (left, right) =>
253
+ compareClausePrecedence(left.precedence, right.precedence) ||
254
+ left.index - right.index
255
+ )
256
+
257
+ for (const { clause, precedence } of clauses) {
258
+ let selectorSuffix = ''
259
+ let selfStateSpecificity = 0
260
+ // at-rule preludes wrapping this clause, outermost first in authored order
261
+ const wrappers: string[] = []
262
+ let skip = false
263
+ const seenModifiers = new Set<string>()
264
+
265
+ for (const authoredModifier of clause.modifiers) {
266
+ const modifier = canonicalClauseModifier(authoredModifier)
267
+ if (seenModifiers.has(modifier)) continue
268
+ seenModifiers.add(modifier)
269
+ const kind = registry.get(modifier)
270
+
271
+ if (kind === 'platform') {
272
+ // a web clause applies here exactly as if unconditional at its position;
273
+ // every other platform's clause belongs to native and is not web CSS
274
+ if (modifier !== 'web') skip = true
275
+ continue
276
+ }
277
+
278
+ if (kind === 'media') {
279
+ const query = mediaQueries?.[modifier]
280
+ if (!query) {
281
+ throw new Error(
282
+ `cannot lower "${modifier}:" — no media query was provided for media key "${modifier}"`
283
+ )
284
+ }
285
+ wrappers.push(`@media ${query}`)
286
+ continue
287
+ }
288
+
289
+ if (kind === 'container') {
290
+ const container = parseContainerModifier(modifier)!
291
+ const query = containerQueries?.[container.size]
292
+ if (!query) {
293
+ throw new Error(
294
+ `cannot lower "${modifier}:" — no container query was provided for size "${container.size}"`
295
+ )
296
+ }
297
+ wrappers.push(
298
+ container.container === null
299
+ ? `@container ${query}`
300
+ : `@container ${container.container} ${query}`
301
+ )
302
+ continue
303
+ }
304
+
305
+ if (kind === 'state') {
306
+ const state = stateSelectors[modifier]
307
+ if (!state) {
308
+ throw new Error(
309
+ `cannot lower "${modifier}:" — the state has no web selector, so it cannot become CSS`
310
+ )
311
+ }
312
+ selectorSuffix += conditionSelector(state.fragment, state.scope ?? 'self', false)
313
+ selfStateSpecificity++
314
+ if (state.media) pushCapabilityGuard(wrappers, state.media)
315
+ continue
316
+ }
317
+
318
+ if (kind === 'theme') {
319
+ // the theme class is on the subject or anywhere above it
320
+ selectorSuffix += conditionSelector(
321
+ `.${themeClassPrefix}${modifier}`,
322
+ 'is-or-within',
323
+ true
324
+ )
325
+ continue
326
+ }
327
+
328
+ if (kind === 'group') {
329
+ const group = parseGroupModifier(modifier)!
330
+ const state = stateSelectors[group.state]
331
+ if (!state) {
332
+ throw new Error(
333
+ `cannot lower "${modifier}:" — the group state "${group.state}" has no web selector`
334
+ )
335
+ }
336
+ // a group is always a parent, never the subject itself
337
+ selectorSuffix += conditionSelector(
338
+ `.${groupClassPrefix}${group.group ?? unnamedGroup}${state.fragment}`,
339
+ 'within',
340
+ true
341
+ )
342
+ if (state.media) pushCapabilityGuard(wrappers, state.media)
343
+ continue
344
+ }
345
+
346
+ throw new Error(
347
+ `cannot lower "${modifier}:" — it is not a registered modifier, so the value was never validated`
348
+ )
349
+ }
350
+
351
+ if (skip) continue
352
+
353
+ const selector =
354
+ `.${className}`.repeat(
355
+ clauseSubjectClassRepetitions(precedence, selfStateSpecificity)
356
+ ) + selectorSuffix
357
+ pushRule(selector, wrappers, clause.payload)
358
+ }
359
+
360
+ const composition = transformAxisCompositions[program.property]
361
+ if (!composition) return { className, rules }
362
+
363
+ // one shared rule per axis group: same text, same hash, inserted once
364
+ const compositionClassName = programClassName(
365
+ composition.property,
366
+ { base: composition.value, clauses: [] },
367
+ configRevision
368
+ )
369
+ const localDefaults = Object.entries(composition.defaults)
370
+ .map(([property, value]) => `${property}:${value}`)
371
+ .join(';')
372
+ return {
373
+ className,
374
+ rules,
375
+ composition: {
376
+ property: composition.property,
377
+ className: compositionClassName,
378
+ rules: [
379
+ `:where(.${compositionClassName}){${localDefaults}}`,
380
+ `.${compositionClassName}{${composition.property}:${composition.value}}`,
381
+ ],
382
+ },
383
+ }
384
+ }
385
+
386
+ /**
387
+ * Media and container conditions wrap outermost, first authored outermost, and
388
+ * both share one list so a chain mixing them keeps authored order. Nesting is
389
+ * AND for arbitrary query texts, where joining with ` and ` would break on query
390
+ * lists and on `screen and (…)` forms. Specificity is unmoved either way.
391
+ */
392
+ function wrapAtRules(rule: string, wrappers: readonly string[]): string {
393
+ let out = rule
394
+ for (let index = wrappers.length - 1; index >= 0; index--) {
395
+ out = `${wrappers[index]} {${out}}`
396
+ }
397
+ return out
398
+ }