@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,480 @@
1
+ // Config-first identifier resolution inside one clause payload.
2
+ //
3
+ // See plans/dom-tailwind-flat-values.md — "the resolver's mechanical contract".
4
+ // Step 3 of the shared pipeline: the parser has already split the program, and
5
+ // this turns one payload into static text runs plus reference nodes, which the
6
+ // two serializers in ./serializePayload render for web and native. One
7
+ // implementation serves both platforms, so resolution never bakes in a target.
8
+ //
9
+ // What is a candidate:
10
+ //
11
+ // - ident tokens anywhere, including inside function arguments, so
12
+ // `linear-gradient(135deg, accent, blue)` resolves `accent`;
13
+ // - never inside a string, never inside an unquoted `url()` body, never a
14
+ // function name, never a `--*` custom-property reference;
15
+ // - bare numbers only when the property binds a numeric token category, and only
16
+ // as a whole component value: `4 8` resolves both, `0 2px` resolves neither for
17
+ // box-shadow because it binds no numeric category. Numbers with units are
18
+ // always literal.
19
+ //
20
+ // A lookup miss stays literal text. Typos in literal positions are the
21
+ // compiler's and language service's job, never a runtime guess — so with a
22
+ // lookup that resolves nothing, both serializers reproduce the input exactly.
23
+
24
+ import { reservedCssIdents } from './valueTypes'
25
+
26
+ export type ReferenceKind = 'color' | 'length' | 'number' | 'other'
27
+
28
+ /**
29
+ * What a lookup returns for a configured token or variable. Intentionally open:
30
+ * the variables unification (design item 11) can carry more here, and extra
31
+ * fields ride through onto the emitted reference.
32
+ */
33
+ export interface ResolvedReference {
34
+ /** the resolved name, which is what the serializers key on */
35
+ name: string
36
+ kind: ReferenceKind
37
+ }
38
+
39
+ /** a resolved reference in a payload, with its color opacity suffix if any */
40
+ export type PayloadReference = ResolvedReference & {
41
+ /** integer 1-99; only ever present when `kind` is `color` */
42
+ opacity?: number
43
+ }
44
+
45
+ export type PayloadSegment = string | PayloadReference
46
+
47
+ export type PayloadResolveErrorCode =
48
+ /** the suffix is recognized only directly after a resolved color token */
49
+ | 'opacity-on-non-color'
50
+ /** a suffix on a resolved color token that is not an integer 0 through 100 */
51
+ | 'opacity-out-of-range'
52
+
53
+ export interface PayloadResolveError {
54
+ code: PayloadResolveErrorCode
55
+ /** character offset of the identifier within the payload */
56
+ index: number
57
+ message: string
58
+ /** the identifier the suffix was applied to, without the suffix */
59
+ name: string
60
+ /** the percentage as authored, which may be out of range or fractional */
61
+ opacity: number
62
+ }
63
+
64
+ interface OpacitySuffix {
65
+ /** index just past the suffix */
66
+ end: number
67
+ /** the percentage, or null when it is not a valid integer 0 through 100 */
68
+ percentage: number | null
69
+ }
70
+
71
+ export interface ResolvedPayload {
72
+ /** static text runs and references, in payload order; adjacent text collapses */
73
+ segments: readonly PayloadSegment[]
74
+ /** every reference in `segments`, same objects, in order */
75
+ references: readonly PayloadReference[]
76
+ errors: readonly PayloadResolveError[]
77
+ }
78
+
79
+ export interface ResolvePayloadOptions {
80
+ /** the property's bound token categories first, then the variables namespace */
81
+ lookup(name: string): ResolvedReference | undefined
82
+ /**
83
+ * set when the property binds a numeric token category (space, size, radius,
84
+ * z-index). Off means bare numbers are always literal.
85
+ */
86
+ resolveNumbers?: boolean
87
+ /**
88
+ * tooling hook: receives every top-level candidate the resolver considered —
89
+ * idents and hex colors always, bare numbers when `resolveNumbers` is set —
90
+ * with its payload offsets and resolution. Skipped positions (strings, url()
91
+ * bodies, function names, custom properties) never report. The runtime path
92
+ * never passes this.
93
+ */
94
+ onCandidate?(
95
+ start: number,
96
+ end: number,
97
+ name: string,
98
+ resolved: PayloadReference | undefined
99
+ ): void
100
+ }
101
+
102
+ // CSS-wide keywords are case-insensitive, and the shared set spells one of them
103
+ // camelCase (`currentColor`), so both sides of the comparison have to fold
104
+ const reservedFolded: ReadonlySet<string> = new Set(
105
+ Array.from(reservedCssIdents, (ident) => ident.toLowerCase())
106
+ )
107
+
108
+ const noReferences: readonly PayloadReference[] = Object.freeze([])
109
+ const noErrors: readonly PayloadResolveError[] = Object.freeze([])
110
+
111
+ const CHAR_TAB = 9
112
+ const CHAR_LF = 10
113
+ const CHAR_FF = 12
114
+ const CHAR_CR = 13
115
+ const CHAR_SPACE = 32
116
+ const CHAR_PERCENT = 37
117
+ const CHAR_HASH = 35
118
+ const CHAR_DOUBLE_QUOTE = 34
119
+ const CHAR_SINGLE_QUOTE = 39
120
+ const CHAR_PAREN_OPEN = 40
121
+ const CHAR_PAREN_CLOSE = 41
122
+ const CHAR_PLUS = 43
123
+ const CHAR_COMMA = 44
124
+ const CHAR_MINUS = 45
125
+ const CHAR_DOT = 46
126
+ const CHAR_SLASH = 47
127
+ const CHAR_UNDERSCORE = 95
128
+ const CHAR_BACKSLASH = 92
129
+ const CHAR_E_LOWER = 101
130
+ const CHAR_E_UPPER = 69
131
+
132
+ function isWhitespace(code: number): boolean {
133
+ return (
134
+ code === CHAR_SPACE ||
135
+ code === CHAR_TAB ||
136
+ code === CHAR_LF ||
137
+ code === CHAR_CR ||
138
+ code === CHAR_FF
139
+ )
140
+ }
141
+
142
+ function isDigit(code: number): boolean {
143
+ return code >= 48 && code <= 57
144
+ }
145
+
146
+ function isLetter(code: number): boolean {
147
+ return (code >= 97 && code <= 122) || (code >= 65 && code <= 90)
148
+ }
149
+
150
+ function isIdentStart(code: number): boolean {
151
+ return (
152
+ isLetter(code) ||
153
+ code === CHAR_UNDERSCORE ||
154
+ code === CHAR_MINUS ||
155
+ code === CHAR_BACKSLASH ||
156
+ // non-ascii idents are legal CSS and may name a configured token
157
+ code > 127
158
+ )
159
+ }
160
+
161
+ function isIdentPart(code: number): boolean {
162
+ return isIdentStart(code) || isDigit(code)
163
+ }
164
+
165
+ /** a component-value boundary, with -1 meaning start or end of the payload */
166
+ function isBoundary(code: number): boolean {
167
+ return (
168
+ code === -1 ||
169
+ isWhitespace(code) ||
170
+ code === CHAR_COMMA ||
171
+ code === CHAR_PAREN_OPEN ||
172
+ code === CHAR_PAREN_CLOSE
173
+ )
174
+ }
175
+
176
+ export function resolvePayload(
177
+ payload: string,
178
+ options: ResolvePayloadOptions
179
+ ): ResolvedPayload {
180
+ const { lookup, resolveNumbers = false, onCandidate } = options
181
+ const length = payload.length
182
+
183
+ const segments: PayloadSegment[] = []
184
+ let references: PayloadReference[] | null = null
185
+ let errors: PayloadResolveError[] | null = null
186
+ // start of the static run not yet pushed
187
+ let staticStart = 0
188
+
189
+ const codeAt = (index: number): number =>
190
+ index >= 0 && index < length ? payload.charCodeAt(index) : -1
191
+
192
+ const pushReference = (start: number, end: number, reference: PayloadReference) => {
193
+ if (start > staticStart) segments.push(payload.slice(staticStart, start))
194
+ segments.push(reference)
195
+ ;(references ||= []).push(reference)
196
+ staticStart = end
197
+ }
198
+
199
+ let index = 0
200
+ while (index < length) {
201
+ const code = payload.charCodeAt(index)
202
+
203
+ // strings are verbatim, including anything ident-shaped inside them
204
+ if (code === CHAR_DOUBLE_QUOTE || code === CHAR_SINGLE_QUOTE) {
205
+ index++
206
+ while (index < length) {
207
+ const inner = payload.charCodeAt(index)
208
+ if (inner === CHAR_BACKSLASH) index += 2
209
+ else if (inner === code) {
210
+ index++
211
+ break
212
+ } else index++
213
+ }
214
+ continue
215
+ }
216
+
217
+ // a hex color's digits are not a number token
218
+ if (code === CHAR_HASH) {
219
+ const start = index
220
+ index++
221
+ while (index < length && isIdentPart(payload.charCodeAt(index))) index++
222
+ onCandidate?.(start, index, payload.slice(start, index), undefined)
223
+ continue
224
+ }
225
+
226
+ // `-` before a digit is a signed number, not an ident
227
+ if (isIdentStart(code) && !(code === CHAR_MINUS && isDigit(codeAt(index + 1)))) {
228
+ const start = index
229
+ let end = index
230
+ while (end < length && isIdentPart(payload.charCodeAt(end))) {
231
+ end += payload.charCodeAt(end) === CHAR_BACKSLASH ? 2 : 1
232
+ }
233
+ const name = payload.slice(start, Math.min(end, length))
234
+
235
+ // a function name is never a candidate, and an unquoted url() body never
236
+ // resolves, so skip the whole call
237
+ if (codeAt(end) === CHAR_PAREN_OPEN) {
238
+ index = name.toLowerCase() === 'url' ? skipParens(payload, end) : end + 1
239
+ continue
240
+ }
241
+
242
+ // custom-property references stay literal
243
+ if (name.startsWith('--')) {
244
+ index = end
245
+ continue
246
+ }
247
+
248
+ // CSS-wide keywords are case-insensitive, so the reserved gate is folded.
249
+ // Token names themselves stay case-sensitive: only the gate folds.
250
+ const resolved = reservedFolded.has(name.toLowerCase()) ? undefined : lookup(name)
251
+
252
+ // a numeric run directly after the ident, ending at a component boundary,
253
+ // is an opacity suffix attempt. `center/50%` and `center/cover` are not
254
+ // attempts at all, so ordinary CSS slash forms never come near this.
255
+ const suffix = readOpacitySuffix(payload, end, codeAt)
256
+
257
+ if (suffix !== null && resolved?.kind === 'color') {
258
+ if (suffix.percentage === null) {
259
+ // a malformed percentage on a real color token is the user reaching for
260
+ // opacity and missing, so it is reported rather than emitted as text
261
+ ;(errors ||= []).push({
262
+ code: 'opacity-out-of-range',
263
+ index: start,
264
+ message: `"${name}${payload.slice(end, suffix.end)}" is not an opacity suffix: it must be an integer percentage from 0 through 100`,
265
+ name,
266
+ opacity: Number(payload.slice(end + 1, suffix.end)),
267
+ })
268
+ onCandidate?.(start, suffix.end, name, { ...resolved })
269
+ index = suffix.end
270
+ continue
271
+ }
272
+ const reference =
273
+ // 100% is the identity, so it never reaches a serializer
274
+ suffix.percentage === 100
275
+ ? { ...resolved }
276
+ : { ...resolved, opacity: suffix.percentage }
277
+ pushReference(start, suffix.end, reference)
278
+ onCandidate?.(start, suffix.end, name, reference)
279
+ index = suffix.end
280
+ continue
281
+ }
282
+
283
+ if (suffix !== null && suffix.percentage !== null) {
284
+ // a well-formed suffix somewhere it cannot apply: the suffix is
285
+ // recognized only directly after a resolved color token. The text stays
286
+ // literal so the payload still round-trips.
287
+ ;(errors ||= []).push({
288
+ code: 'opacity-on-non-color',
289
+ index: start,
290
+ message: resolved
291
+ ? `"${name}" is not a color token (kind: ${resolved.kind}), so the /${suffix.percentage} opacity suffix does not apply`
292
+ : `"${name}" is not a resolved color token, so the /${suffix.percentage} opacity suffix does not apply`,
293
+ name,
294
+ opacity: suffix.percentage,
295
+ })
296
+ onCandidate?.(start, end, name, resolved ? { ...resolved } : undefined)
297
+ index = suffix.end
298
+ continue
299
+ }
300
+
301
+ // no suffix, or a malformed one after an ident that is not a color token,
302
+ // which is ordinary CSS such as `font: bold small/1.2 serif`
303
+ if (!resolved) {
304
+ onCandidate?.(start, end, name, undefined)
305
+ index = end
306
+ continue
307
+ }
308
+
309
+ const reference = { ...resolved }
310
+ pushReference(start, end, reference)
311
+ onCandidate?.(start, end, name, reference)
312
+ index = end
313
+ continue
314
+ }
315
+
316
+ if (
317
+ isDigit(code) ||
318
+ code === CHAR_DOT ||
319
+ ((code === CHAR_PLUS || code === CHAR_MINUS) && isDigit(codeAt(index + 1)))
320
+ ) {
321
+ const start = index
322
+ let end = index
323
+ if (code === CHAR_PLUS || code === CHAR_MINUS) end++
324
+ while (end < length) {
325
+ const digit = payload.charCodeAt(end)
326
+ if (isDigit(digit) || digit === CHAR_DOT) end++
327
+ else break
328
+ }
329
+ // scientific notation stays part of the number token
330
+ if (codeAt(end) === CHAR_E_LOWER || codeAt(end) === CHAR_E_UPPER) {
331
+ let exponent = end + 1
332
+ if (codeAt(exponent) === CHAR_PLUS || codeAt(exponent) === CHAR_MINUS) exponent++
333
+ if (isDigit(codeAt(exponent))) {
334
+ exponent++
335
+ while (exponent < length && isDigit(payload.charCodeAt(exponent))) exponent++
336
+ end = exponent
337
+ }
338
+ }
339
+ const numberEnd = end
340
+
341
+ // a unit or percent sign makes it literal
342
+ let unitEnd = numberEnd
343
+ if (codeAt(unitEnd) === CHAR_PERCENT) unitEnd++
344
+ else while (unitEnd < length && isIdentPart(payload.charCodeAt(unitEnd))) unitEnd++
345
+ if (unitEnd > numberEnd) {
346
+ index = unitEnd
347
+ continue
348
+ }
349
+
350
+ // a number resolves only as a WHOLE component value, so it must be
351
+ // bounded on both sides: `4 8` resolves both, `4/8` and `12px/4` neither
352
+ if (
353
+ !resolveNumbers ||
354
+ !isBoundary(codeAt(start - 1)) ||
355
+ !isBoundary(codeAt(numberEnd))
356
+ ) {
357
+ index = numberEnd
358
+ continue
359
+ }
360
+
361
+ const name = payload.slice(start, numberEnd)
362
+ const resolved = lookup(name)
363
+ if (resolved) {
364
+ const reference = { ...resolved }
365
+ pushReference(start, numberEnd, reference)
366
+ onCandidate?.(start, numberEnd, name, reference)
367
+ } else {
368
+ onCandidate?.(start, numberEnd, name, undefined)
369
+ }
370
+ index = numberEnd
371
+ continue
372
+ }
373
+
374
+ index++
375
+ }
376
+
377
+ if (staticStart < length) segments.push(payload.slice(staticStart))
378
+
379
+ return {
380
+ segments,
381
+ references: references ?? noReferences,
382
+ errors: errors ?? noErrors,
383
+ }
384
+ }
385
+
386
+ export type ColorOpacitySuffix =
387
+ /** no suffix attempt: `center/cover` and `x/50%` are ordinary CSS */
388
+ | { kind: 'none' }
389
+ /** a valid suffix: unsigned integer 0 through 100 */
390
+ | { kind: 'valid'; name: string; opacity: number }
391
+ /** an attempt that is signed, fractional, or out of range — a diagnostic, never a clamp */
392
+ | { kind: 'invalid'; name: string; raw: string }
393
+
394
+ const opacityAttempt = /^[+-]?\d+(?:\.\d+)?$/
395
+ const opacityValid = /^\d+$/
396
+
397
+ /**
398
+ * The one owner of the color opacity suffix rule for WHOLE names
399
+ * (`slate-500/50`). Every layer — flat payloads (via `readOpacitySuffix`
400
+ * below, same rules anchored mid-payload), Tailwind candidates, and whole
401
+ * color token values must agree: valid means an unsigned integer 0 through
402
+ * 100; an invalid attempt is a diagnostic and is never clamped or partially
403
+ * applied (review divergence 2).
404
+ */
405
+ export function splitColorOpacitySuffix(value: string): ColorOpacitySuffix {
406
+ const slash = value.lastIndexOf('/')
407
+ if (slash <= 0 || slash === value.length - 1) return { kind: 'none' }
408
+ const raw = value.slice(slash + 1)
409
+ if (!opacityAttempt.test(raw)) return { kind: 'none' }
410
+ const name = value.slice(0, slash)
411
+ if (opacityValid.test(raw) && Number(raw) <= 100) {
412
+ return { kind: 'valid', name, opacity: Number(raw) }
413
+ }
414
+ return { kind: 'invalid', name, raw }
415
+ }
416
+
417
+ /**
418
+ * Reads a `/NN` opacity suffix attempt sitting directly on an ident. An attempt
419
+ * is a numeric run that ends at a component boundary, so `center/cover` and
420
+ * `center/50%` are not attempts and stay ordinary CSS. `percentage` is null when
421
+ * the number is signed, fractional, or outside 0 through 100.
422
+ */
423
+ function readOpacitySuffix(
424
+ payload: string,
425
+ identEnd: number,
426
+ codeAt: (index: number) => number
427
+ ): OpacitySuffix | null {
428
+ if (codeAt(identEnd) !== CHAR_SLASH) return null
429
+ let cursor = identEnd + 1
430
+ let signed = false
431
+ if (codeAt(cursor) === CHAR_MINUS || codeAt(cursor) === CHAR_PLUS) {
432
+ signed = true
433
+ cursor++
434
+ }
435
+ const digitsStart = cursor
436
+ while (isDigit(codeAt(cursor))) cursor++
437
+ if (cursor === digitsStart) return null
438
+ let fractional = false
439
+ if (codeAt(cursor) === CHAR_DOT && isDigit(codeAt(cursor + 1))) {
440
+ fractional = true
441
+ cursor++
442
+ while (isDigit(codeAt(cursor))) cursor++
443
+ }
444
+ if (!isBoundary(codeAt(cursor))) return null
445
+ const value = Number(payload.slice(identEnd + 1, cursor))
446
+ const valid = !signed && !fractional && value >= 0 && value <= 100
447
+ return { end: cursor, percentage: valid ? value : null }
448
+ }
449
+
450
+ /** index just past the `)` matching the `(` at `open` */
451
+ function skipParens(payload: string, open: number): number {
452
+ let depth = 0
453
+ let index = open
454
+ while (index < payload.length) {
455
+ const code = payload.charCodeAt(index)
456
+ if (code === CHAR_BACKSLASH) {
457
+ index += 2
458
+ continue
459
+ }
460
+ if (code === CHAR_DOUBLE_QUOTE || code === CHAR_SINGLE_QUOTE) {
461
+ index++
462
+ while (index < payload.length) {
463
+ const inner = payload.charCodeAt(index)
464
+ if (inner === CHAR_BACKSLASH) index += 2
465
+ else if (inner === code) {
466
+ index++
467
+ break
468
+ } else index++
469
+ }
470
+ continue
471
+ }
472
+ if (code === CHAR_PAREN_OPEN) depth++
473
+ else if (code === CHAR_PAREN_CLOSE) {
474
+ depth--
475
+ if (depth === 0) return index + 1
476
+ }
477
+ index++
478
+ }
479
+ return payload.length
480
+ }
package/src/runtime.ts ADDED
@@ -0,0 +1,32 @@
1
+ export * from './backgroundFamily'
2
+ export * from './borderFamily'
3
+ export * from './candidate'
4
+ export * from './candidateTarget'
5
+ export * from './clausePrecedence'
6
+ export * from './clauseSources'
7
+ export * from './config'
8
+ export * from './evaluateProgram'
9
+ export * from './fontShorthand'
10
+ export * from './geometricShorthand'
11
+ export * from './lowerProgram'
12
+ export * from './mergeFlatValues'
13
+ export * from './modifierRegistry'
14
+ export * from './payloadShape'
15
+ export * from './programEligibility'
16
+ export * from './programHash'
17
+ export * from './programs'
18
+ export * from './registry'
19
+ export * from './resolvePayload'
20
+ export * from './safeAreaVariables'
21
+ export * from './scanFlatValue'
22
+ export * from './stateModifiers'
23
+ export * from './serializePayload'
24
+ export * from './states'
25
+ export * from './textDecorationFamily'
26
+ export * from './transformFamily'
27
+ export * from './transition'
28
+ export * from './transitionAlign'
29
+ export * from './transitionNative'
30
+ export * from './valueParser'
31
+ export * from './valueTypes'
32
+ export * from './unitlessNumbers'
@@ -0,0 +1,19 @@
1
+ export type SafeAreaEdge = 'top' | 'right' | 'bottom' | 'left'
2
+
3
+ export const safeAreaVariableNames: Readonly<Record<SafeAreaEdge, string>> = {
4
+ top: 'safe-area-top',
5
+ right: 'safe-area-right',
6
+ bottom: 'safe-area-bottom',
7
+ left: 'safe-area-left',
8
+ }
9
+
10
+ const safeAreaEdges: Readonly<Record<string, SafeAreaEdge>> = {
11
+ [safeAreaVariableNames.top]: 'top',
12
+ [safeAreaVariableNames.right]: 'right',
13
+ [safeAreaVariableNames.bottom]: 'bottom',
14
+ [safeAreaVariableNames.left]: 'left',
15
+ }
16
+
17
+ export function getSafeAreaEdge(name: string): SafeAreaEdge | undefined {
18
+ return safeAreaEdges[name]
19
+ }