zyzz 0.0.0 → 0.0.2

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 (678) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +380 -0
  3. package/dist/Config.d.ts +170 -0
  4. package/dist/Config.d.ts.map +1 -0
  5. package/dist/Config.js +249 -0
  6. package/dist/Config.js.map +1 -0
  7. package/dist/Props.d.ts +7 -0
  8. package/dist/Props.d.ts.map +1 -0
  9. package/dist/Props.js +3 -0
  10. package/dist/Props.js.map +1 -0
  11. package/dist/Style.d.ts +167 -0
  12. package/dist/Style.d.ts.map +1 -0
  13. package/dist/Style.js +284 -0
  14. package/dist/Style.js.map +1 -0
  15. package/dist/Theme.d.ts +154 -0
  16. package/dist/Theme.d.ts.map +1 -0
  17. package/dist/Theme.js +257 -0
  18. package/dist/Theme.js.map +1 -0
  19. package/dist/babel/NativeEdits.d.ts +8 -0
  20. package/dist/babel/NativeEdits.d.ts.map +1 -0
  21. package/dist/babel/NativeEdits.js +233 -0
  22. package/dist/babel/NativeEdits.js.map +1 -0
  23. package/dist/babel/NativeJsx.d.ts +10 -0
  24. package/dist/babel/NativeJsx.d.ts.map +1 -0
  25. package/dist/babel/NativeJsx.js +204 -0
  26. package/dist/babel/NativeJsx.js.map +1 -0
  27. package/dist/babel/index.d.ts +51 -0
  28. package/dist/babel/index.d.ts.map +1 -0
  29. package/dist/babel/index.js +220 -0
  30. package/dist/babel/index.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +178 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/compiler/Graph.d.ts +64 -0
  36. package/dist/compiler/Graph.d.ts.map +1 -0
  37. package/dist/compiler/Graph.js +1111 -0
  38. package/dist/compiler/Graph.js.map +1 -0
  39. package/dist/compiler/Native.d.ts +53 -0
  40. package/dist/compiler/Native.d.ts.map +1 -0
  41. package/dist/compiler/Native.js +617 -0
  42. package/dist/compiler/Native.js.map +1 -0
  43. package/dist/compiler/Source.d.ts +165 -0
  44. package/dist/compiler/Source.d.ts.map +1 -0
  45. package/dist/compiler/Source.js +990 -0
  46. package/dist/compiler/Source.js.map +1 -0
  47. package/dist/compiler/Transform.d.ts +57 -0
  48. package/dist/compiler/Transform.d.ts.map +1 -0
  49. package/dist/compiler/Transform.js +884 -0
  50. package/dist/compiler/Transform.js.map +1 -0
  51. package/dist/compiler/index.d.ts +13 -0
  52. package/dist/compiler/index.d.ts.map +1 -0
  53. package/dist/compiler/index.js +13 -0
  54. package/dist/compiler/index.js.map +1 -0
  55. package/dist/compiler/internal/Applications.d.ts +35 -0
  56. package/dist/compiler/internal/Applications.d.ts.map +1 -0
  57. package/dist/compiler/internal/Applications.js +248 -0
  58. package/dist/compiler/internal/Applications.js.map +1 -0
  59. package/dist/compiler/internal/AtRules.d.ts +8 -0
  60. package/dist/compiler/internal/AtRules.d.ts.map +1 -0
  61. package/dist/compiler/internal/AtRules.js +180 -0
  62. package/dist/compiler/internal/AtRules.js.map +1 -0
  63. package/dist/compiler/internal/Catalogs.d.ts +19 -0
  64. package/dist/compiler/internal/Catalogs.d.ts.map +1 -0
  65. package/dist/compiler/internal/Catalogs.js +68 -0
  66. package/dist/compiler/internal/Catalogs.js.map +1 -0
  67. package/dist/compiler/internal/ColorProfiles.d.ts +3 -0
  68. package/dist/compiler/internal/ColorProfiles.d.ts.map +1 -0
  69. package/dist/compiler/internal/ColorProfiles.js +84 -0
  70. package/dist/compiler/internal/ColorProfiles.js.map +1 -0
  71. package/dist/compiler/internal/CompositionBindings.d.ts +16 -0
  72. package/dist/compiler/internal/CompositionBindings.d.ts.map +1 -0
  73. package/dist/compiler/internal/CompositionBindings.js +89 -0
  74. package/dist/compiler/internal/CompositionBindings.js.map +1 -0
  75. package/dist/compiler/internal/Compositions.d.ts +32 -0
  76. package/dist/compiler/internal/Compositions.d.ts.map +1 -0
  77. package/dist/compiler/internal/Compositions.js +464 -0
  78. package/dist/compiler/internal/Compositions.js.map +1 -0
  79. package/dist/compiler/internal/Configurations.d.ts +21 -0
  80. package/dist/compiler/internal/Configurations.d.ts.map +1 -0
  81. package/dist/compiler/internal/Configurations.js +171 -0
  82. package/dist/compiler/internal/Configurations.js.map +1 -0
  83. package/dist/compiler/internal/Contract.d.ts +27 -0
  84. package/dist/compiler/internal/Contract.d.ts.map +1 -0
  85. package/dist/compiler/internal/Contract.js +600 -0
  86. package/dist/compiler/internal/Contract.js.map +1 -0
  87. package/dist/compiler/internal/Contributions.d.ts +54 -0
  88. package/dist/compiler/internal/Contributions.d.ts.map +1 -0
  89. package/dist/compiler/internal/Contributions.js +1109 -0
  90. package/dist/compiler/internal/Contributions.js.map +1 -0
  91. package/dist/compiler/internal/Descriptors.d.ts +15 -0
  92. package/dist/compiler/internal/Descriptors.d.ts.map +1 -0
  93. package/dist/compiler/internal/Descriptors.js +183 -0
  94. package/dist/compiler/internal/Descriptors.js.map +1 -0
  95. package/dist/compiler/internal/Dynamic.d.ts +14 -0
  96. package/dist/compiler/internal/Dynamic.d.ts.map +1 -0
  97. package/dist/compiler/internal/Dynamic.js +172 -0
  98. package/dist/compiler/internal/Dynamic.js.map +1 -0
  99. package/dist/compiler/internal/Edits.d.ts +12 -0
  100. package/dist/compiler/internal/Edits.d.ts.map +1 -0
  101. package/dist/compiler/internal/Edits.js +5 -0
  102. package/dist/compiler/internal/Edits.js.map +1 -0
  103. package/dist/compiler/internal/Expression.d.ts +12 -0
  104. package/dist/compiler/internal/Expression.d.ts.map +1 -0
  105. package/dist/compiler/internal/Expression.js +98 -0
  106. package/dist/compiler/internal/Expression.js.map +1 -0
  107. package/dist/compiler/internal/Functions.d.ts +5 -0
  108. package/dist/compiler/internal/Functions.d.ts.map +1 -0
  109. package/dist/compiler/internal/Functions.js +191 -0
  110. package/dist/compiler/internal/Functions.js.map +1 -0
  111. package/dist/compiler/internal/Identifiers.d.ts +9 -0
  112. package/dist/compiler/internal/Identifiers.d.ts.map +1 -0
  113. package/dist/compiler/internal/Identifiers.js +106 -0
  114. package/dist/compiler/internal/Identifiers.js.map +1 -0
  115. package/dist/compiler/internal/Keyframes.d.ts +5 -0
  116. package/dist/compiler/internal/Keyframes.d.ts.map +1 -0
  117. package/dist/compiler/internal/Keyframes.js +51 -0
  118. package/dist/compiler/internal/Keyframes.js.map +1 -0
  119. package/dist/compiler/internal/Namespaces.d.ts +17 -0
  120. package/dist/compiler/internal/Namespaces.d.ts.map +1 -0
  121. package/dist/compiler/internal/Namespaces.js +265 -0
  122. package/dist/compiler/internal/Namespaces.js.map +1 -0
  123. package/dist/compiler/internal/NativeBindings.d.ts +74 -0
  124. package/dist/compiler/internal/NativeBindings.d.ts.map +1 -0
  125. package/dist/compiler/internal/NativeBindings.js +117 -0
  126. package/dist/compiler/internal/NativeBindings.js.map +1 -0
  127. package/dist/compiler/internal/PackedStyles.d.ts +35 -0
  128. package/dist/compiler/internal/PackedStyles.d.ts.map +1 -0
  129. package/dist/compiler/internal/PackedStyles.js +345 -0
  130. package/dist/compiler/internal/PackedStyles.js.map +1 -0
  131. package/dist/compiler/internal/Properties.d.ts +5 -0
  132. package/dist/compiler/internal/Properties.d.ts.map +1 -0
  133. package/dist/compiler/internal/Properties.js +82 -0
  134. package/dist/compiler/internal/Properties.js.map +1 -0
  135. package/dist/compiler/internal/RecipeConditions.d.ts +41 -0
  136. package/dist/compiler/internal/RecipeConditions.d.ts.map +1 -0
  137. package/dist/compiler/internal/RecipeConditions.js +82 -0
  138. package/dist/compiler/internal/RecipeConditions.js.map +1 -0
  139. package/dist/compiler/internal/RecipePayloads.d.ts +31 -0
  140. package/dist/compiler/internal/RecipePayloads.d.ts.map +1 -0
  141. package/dist/compiler/internal/RecipePayloads.js +99 -0
  142. package/dist/compiler/internal/RecipePayloads.js.map +1 -0
  143. package/dist/compiler/internal/Recipes.d.ts +32 -0
  144. package/dist/compiler/internal/Recipes.d.ts.map +1 -0
  145. package/dist/compiler/internal/Recipes.js +339 -0
  146. package/dist/compiler/internal/Recipes.js.map +1 -0
  147. package/dist/compiler/internal/Relative.d.ts +19 -0
  148. package/dist/compiler/internal/Relative.d.ts.map +1 -0
  149. package/dist/compiler/internal/Relative.js +62 -0
  150. package/dist/compiler/internal/Relative.js.map +1 -0
  151. package/dist/compiler/internal/Scope.d.ts +10 -0
  152. package/dist/compiler/internal/Scope.d.ts.map +1 -0
  153. package/dist/compiler/internal/Scope.js +28 -0
  154. package/dist/compiler/internal/Scope.js.map +1 -0
  155. package/dist/compiler/internal/Selectors.d.ts +12 -0
  156. package/dist/compiler/internal/Selectors.d.ts.map +1 -0
  157. package/dist/compiler/internal/Selectors.js +265 -0
  158. package/dist/compiler/internal/Selectors.js.map +1 -0
  159. package/dist/compiler/internal/Static.d.ts +39 -0
  160. package/dist/compiler/internal/Static.d.ts.map +1 -0
  161. package/dist/compiler/internal/Static.js +532 -0
  162. package/dist/compiler/internal/Static.js.map +1 -0
  163. package/dist/compiler/internal/Stylesheets.d.ts +47 -0
  164. package/dist/compiler/internal/Stylesheets.d.ts.map +1 -0
  165. package/dist/compiler/internal/Stylesheets.js +272 -0
  166. package/dist/compiler/internal/Stylesheets.js.map +1 -0
  167. package/dist/compiler/internal/Syntax.d.ts +17 -0
  168. package/dist/compiler/internal/Syntax.d.ts.map +1 -0
  169. package/dist/compiler/internal/Syntax.js +19 -0
  170. package/dist/compiler/internal/Syntax.js.map +1 -0
  171. package/dist/compiler/internal/Themes.d.ts +158 -0
  172. package/dist/compiler/internal/Themes.d.ts.map +1 -0
  173. package/dist/compiler/internal/Themes.js +1169 -0
  174. package/dist/compiler/internal/Themes.js.map +1 -0
  175. package/dist/compiler/internal/Variables.d.ts +31 -0
  176. package/dist/compiler/internal/Variables.d.ts.map +1 -0
  177. package/dist/compiler/internal/Variables.js +376 -0
  178. package/dist/compiler/internal/Variables.js.map +1 -0
  179. package/dist/compiler/internal/ViewTransitions.d.ts +3 -0
  180. package/dist/compiler/internal/ViewTransitions.d.ts.map +1 -0
  181. package/dist/compiler/internal/ViewTransitions.js +68 -0
  182. package/dist/compiler/internal/ViewTransitions.js.map +1 -0
  183. package/dist/cx.d.ts +18 -0
  184. package/dist/cx.d.ts.map +1 -0
  185. package/dist/cx.js +60 -0
  186. package/dist/cx.js.map +1 -0
  187. package/dist/default.d.ts +2008 -0
  188. package/dist/default.d.ts.map +1 -0
  189. package/dist/default.js +243 -0
  190. package/dist/default.js.map +7 -0
  191. package/dist/default.js.zyzz.json +1 -0
  192. package/dist/index.d.ts +21 -0
  193. package/dist/index.d.ts.map +1 -0
  194. package/dist/index.js +19 -0
  195. package/dist/index.js.map +1 -0
  196. package/dist/internal/Authoring.d.ts +26 -0
  197. package/dist/internal/Authoring.d.ts.map +1 -0
  198. package/dist/internal/Authoring.js +134 -0
  199. package/dist/internal/Authoring.js.map +1 -0
  200. package/dist/internal/Binding.d.ts +64 -0
  201. package/dist/internal/Binding.d.ts.map +1 -0
  202. package/dist/internal/Binding.js +27 -0
  203. package/dist/internal/Binding.js.map +1 -0
  204. package/dist/internal/BindingDomains.d.ts +11 -0
  205. package/dist/internal/BindingDomains.d.ts.map +1 -0
  206. package/dist/internal/BindingDomains.js +459 -0
  207. package/dist/internal/BindingDomains.js.map +1 -0
  208. package/dist/internal/Cascade.d.ts +45 -0
  209. package/dist/internal/Cascade.d.ts.map +1 -0
  210. package/dist/internal/Cascade.js +165 -0
  211. package/dist/internal/Cascade.js.map +1 -0
  212. package/dist/internal/Compound.d.ts +132 -0
  213. package/dist/internal/Compound.d.ts.map +1 -0
  214. package/dist/internal/Compound.js +2 -0
  215. package/dist/internal/Compound.js.map +1 -0
  216. package/dist/internal/Condition.d.ts +33 -0
  217. package/dist/internal/Condition.d.ts.map +1 -0
  218. package/dist/internal/Condition.js +180 -0
  219. package/dist/internal/Condition.js.map +1 -0
  220. package/dist/internal/Corner.d.ts +9 -0
  221. package/dist/internal/Corner.d.ts.map +1 -0
  222. package/dist/internal/Corner.js +14 -0
  223. package/dist/internal/Corner.js.map +1 -0
  224. package/dist/internal/FunctionSyntax.d.ts +27 -0
  225. package/dist/internal/FunctionSyntax.d.ts.map +1 -0
  226. package/dist/internal/FunctionSyntax.js +91 -0
  227. package/dist/internal/FunctionSyntax.js.map +1 -0
  228. package/dist/internal/FunctionValue.d.ts +19 -0
  229. package/dist/internal/FunctionValue.d.ts.map +1 -0
  230. package/dist/internal/FunctionValue.js +2 -0
  231. package/dist/internal/FunctionValue.js.map +1 -0
  232. package/dist/internal/Geometry.d.ts +8 -0
  233. package/dist/internal/Geometry.d.ts.map +1 -0
  234. package/dist/internal/Geometry.js +2 -0
  235. package/dist/internal/Geometry.js.map +1 -0
  236. package/dist/internal/Grid.d.ts +15 -0
  237. package/dist/internal/Grid.d.ts.map +1 -0
  238. package/dist/internal/Grid.js +2 -0
  239. package/dist/internal/Grid.js.map +1 -0
  240. package/dist/internal/Identifier.d.ts +15 -0
  241. package/dist/internal/Identifier.d.ts.map +1 -0
  242. package/dist/internal/Identifier.js +2 -0
  243. package/dist/internal/Identifier.js.map +1 -0
  244. package/dist/internal/Identity.d.ts +16 -0
  245. package/dist/internal/Identity.d.ts.map +1 -0
  246. package/dist/internal/Identity.js +78 -0
  247. package/dist/internal/Identity.js.map +1 -0
  248. package/dist/internal/Lexical.d.ts +89 -0
  249. package/dist/internal/Lexical.d.ts.map +1 -0
  250. package/dist/internal/Lexical.js +15 -0
  251. package/dist/internal/Lexical.js.map +1 -0
  252. package/dist/internal/Literal.d.ts +3459 -0
  253. package/dist/internal/Literal.d.ts.map +1 -0
  254. package/dist/internal/Literal.js +3371 -0
  255. package/dist/internal/Literal.js.map +1 -0
  256. package/dist/internal/NativeProperties.d.ts +596 -0
  257. package/dist/internal/NativeProperties.d.ts.map +1 -0
  258. package/dist/internal/NativeProperties.js +2 -0
  259. package/dist/internal/NativeProperties.js.map +1 -0
  260. package/dist/internal/Numeric.d.ts +23 -0
  261. package/dist/internal/Numeric.d.ts.map +1 -0
  262. package/dist/internal/Numeric.js +2 -0
  263. package/dist/internal/Numeric.js.map +1 -0
  264. package/dist/internal/Query.d.ts +15 -0
  265. package/dist/internal/Query.d.ts.map +1 -0
  266. package/dist/internal/Query.js +58 -0
  267. package/dist/internal/Query.js.map +1 -0
  268. package/dist/internal/Recipe.d.ts +17 -0
  269. package/dist/internal/Recipe.d.ts.map +1 -0
  270. package/dist/internal/Recipe.js +2 -0
  271. package/dist/internal/Recipe.js.map +1 -0
  272. package/dist/internal/RuleReference.d.ts +23 -0
  273. package/dist/internal/RuleReference.d.ts.map +1 -0
  274. package/dist/internal/RuleReference.js +65 -0
  275. package/dist/internal/RuleReference.js.map +1 -0
  276. package/dist/internal/Scheme.d.ts +12 -0
  277. package/dist/internal/Scheme.d.ts.map +1 -0
  278. package/dist/internal/Scheme.js +16 -0
  279. package/dist/internal/Scheme.js.map +1 -0
  280. package/dist/internal/Shorthands.d.ts +20 -0
  281. package/dist/internal/Shorthands.d.ts.map +1 -0
  282. package/dist/internal/Shorthands.js +49 -0
  283. package/dist/internal/Shorthands.js.map +1 -0
  284. package/dist/internal/Targets.d.ts +43 -0
  285. package/dist/internal/Targets.d.ts.map +1 -0
  286. package/dist/internal/Targets.js +60 -0
  287. package/dist/internal/Targets.js.map +1 -0
  288. package/dist/internal/Token.d.ts +104 -0
  289. package/dist/internal/Token.d.ts.map +1 -0
  290. package/dist/internal/Token.js +162 -0
  291. package/dist/internal/Token.js.map +1 -0
  292. package/dist/internal/Tuple.d.ts +23 -0
  293. package/dist/internal/Tuple.d.ts.map +1 -0
  294. package/dist/internal/Tuple.js +2 -0
  295. package/dist/internal/Tuple.js.map +1 -0
  296. package/dist/internal/Value.d.ts +74 -0
  297. package/dist/internal/Value.d.ts.map +1 -0
  298. package/dist/internal/Value.js +60 -0
  299. package/dist/internal/Value.js.map +1 -0
  300. package/dist/metro/Graph.d.ts +8 -0
  301. package/dist/metro/Graph.d.ts.map +1 -0
  302. package/dist/metro/Graph.js +63 -0
  303. package/dist/metro/Graph.js.map +1 -0
  304. package/dist/metro/Watch.d.ts +21 -0
  305. package/dist/metro/Watch.d.ts.map +1 -0
  306. package/dist/metro/Watch.js +51 -0
  307. package/dist/metro/Watch.js.map +1 -0
  308. package/dist/metro/index.d.ts +30 -0
  309. package/dist/metro/index.d.ts.map +1 -0
  310. package/dist/metro/index.js +52 -0
  311. package/dist/metro/index.js.map +1 -0
  312. package/dist/metro/transformer.d.ts +21 -0
  313. package/dist/metro/transformer.d.ts.map +1 -0
  314. package/dist/metro/transformer.js +71 -0
  315. package/dist/metro/transformer.js.map +1 -0
  316. package/dist/next/index.d.ts +18 -0
  317. package/dist/next/index.d.ts.map +1 -0
  318. package/dist/next/index.js +92 -0
  319. package/dist/next/index.js.map +1 -0
  320. package/dist/next/loader.d.ts +16 -0
  321. package/dist/next/loader.d.ts.map +1 -0
  322. package/dist/next/loader.js +282 -0
  323. package/dist/next/loader.js.map +1 -0
  324. package/dist/node/Host.d.ts +80 -0
  325. package/dist/node/Host.d.ts.map +1 -0
  326. package/dist/node/Host.js +882 -0
  327. package/dist/node/Host.js.map +1 -0
  328. package/dist/node/index.d.ts +7 -0
  329. package/dist/node/index.d.ts.map +1 -0
  330. package/dist/node/index.js +7 -0
  331. package/dist/node/index.js.map +1 -0
  332. package/dist/react-native/Host.d.ts +76 -0
  333. package/dist/react-native/Host.d.ts.map +1 -0
  334. package/dist/react-native/Host.js +209 -0
  335. package/dist/react-native/Host.js.map +1 -0
  336. package/dist/react-native/StyleSheet.d.ts +226 -0
  337. package/dist/react-native/StyleSheet.d.ts.map +1 -0
  338. package/dist/react-native/StyleSheet.js +606 -0
  339. package/dist/react-native/StyleSheet.js.map +1 -0
  340. package/dist/react-native/Variants.d.ts +38 -0
  341. package/dist/react-native/Variants.d.ts.map +1 -0
  342. package/dist/react-native/Variants.js +66 -0
  343. package/dist/react-native/Variants.js.map +1 -0
  344. package/dist/react-native/index.d.ts +8 -0
  345. package/dist/react-native/index.d.ts.map +1 -0
  346. package/dist/react-native/index.js +8 -0
  347. package/dist/react-native/index.js.map +1 -0
  348. package/dist/react-native/internal/Color.d.ts +7 -0
  349. package/dist/react-native/internal/Color.d.ts.map +1 -0
  350. package/dist/react-native/internal/Color.js +93 -0
  351. package/dist/react-native/internal/Color.js.map +1 -0
  352. package/dist/react-native/internal/NativeSchema.d.ts +5138 -0
  353. package/dist/react-native/internal/NativeSchema.d.ts.map +1 -0
  354. package/dist/react-native/internal/NativeSchema.js +3097 -0
  355. package/dist/react-native/internal/NativeSchema.js.map +1 -0
  356. package/dist/react-native/internal/Scalar.d.ts +95 -0
  357. package/dist/react-native/internal/Scalar.d.ts.map +1 -0
  358. package/dist/react-native/internal/Scalar.js +199 -0
  359. package/dist/react-native/internal/Scalar.js.map +1 -0
  360. package/dist/react-native/internal/Values.d.ts +5 -0
  361. package/dist/react-native/internal/Values.d.ts.map +1 -0
  362. package/dist/react-native/internal/Values.js +65 -0
  363. package/dist/react-native/internal/Values.js.map +1 -0
  364. package/dist/react-native/react.d.ts +22 -0
  365. package/dist/react-native/react.d.ts.map +1 -0
  366. package/dist/react-native/react.js +26 -0
  367. package/dist/react-native/react.js.map +1 -0
  368. package/dist/reset.css +244 -0
  369. package/dist/runtime/Appearance.d.ts +55 -0
  370. package/dist/runtime/Appearance.d.ts.map +1 -0
  371. package/dist/runtime/Appearance.js +84 -0
  372. package/dist/runtime/Appearance.js.map +1 -0
  373. package/dist/runtime/Composition.d.ts +46 -0
  374. package/dist/runtime/Composition.d.ts.map +1 -0
  375. package/dist/runtime/Composition.js +52 -0
  376. package/dist/runtime/Composition.js.map +1 -0
  377. package/dist/runtime/CompositionHtml.d.ts +15 -0
  378. package/dist/runtime/CompositionHtml.d.ts.map +1 -0
  379. package/dist/runtime/CompositionHtml.js +20 -0
  380. package/dist/runtime/CompositionHtml.js.map +1 -0
  381. package/dist/runtime/ConditionalRecipe.d.ts +30 -0
  382. package/dist/runtime/ConditionalRecipe.d.ts.map +1 -0
  383. package/dist/runtime/ConditionalRecipe.js +39 -0
  384. package/dist/runtime/ConditionalRecipe.js.map +1 -0
  385. package/dist/runtime/Dynamic.d.ts +19 -0
  386. package/dist/runtime/Dynamic.d.ts.map +1 -0
  387. package/dist/runtime/Dynamic.js +22 -0
  388. package/dist/runtime/Dynamic.js.map +1 -0
  389. package/dist/runtime/Html.d.ts +32 -0
  390. package/dist/runtime/Html.d.ts.map +1 -0
  391. package/dist/runtime/Html.js +63 -0
  392. package/dist/runtime/Html.js.map +1 -0
  393. package/dist/runtime/Native.d.ts +48 -0
  394. package/dist/runtime/Native.d.ts.map +1 -0
  395. package/dist/runtime/Native.js +78 -0
  396. package/dist/runtime/Native.js.map +1 -0
  397. package/dist/runtime/NativeContext.d.ts +17 -0
  398. package/dist/runtime/NativeContext.d.ts.map +1 -0
  399. package/dist/runtime/NativeContext.js +47 -0
  400. package/dist/runtime/NativeContext.js.map +1 -0
  401. package/dist/runtime/NativeDynamic.d.ts +47 -0
  402. package/dist/runtime/NativeDynamic.d.ts.map +1 -0
  403. package/dist/runtime/NativeDynamic.js +141 -0
  404. package/dist/runtime/NativeDynamic.js.map +1 -0
  405. package/dist/runtime/PayloadRecipe.d.ts +22 -0
  406. package/dist/runtime/PayloadRecipe.d.ts.map +1 -0
  407. package/dist/runtime/PayloadRecipe.js +59 -0
  408. package/dist/runtime/PayloadRecipe.js.map +1 -0
  409. package/dist/runtime/Props.d.ts +21 -0
  410. package/dist/runtime/Props.d.ts.map +1 -0
  411. package/dist/runtime/Props.js +17 -0
  412. package/dist/runtime/Props.js.map +1 -0
  413. package/dist/runtime/Recipe.d.ts +52 -0
  414. package/dist/runtime/Recipe.d.ts.map +1 -0
  415. package/dist/runtime/Recipe.js +30 -0
  416. package/dist/runtime/Recipe.js.map +1 -0
  417. package/dist/runtime/Selection.d.ts +31 -0
  418. package/dist/runtime/Selection.d.ts.map +1 -0
  419. package/dist/runtime/Selection.js +30 -0
  420. package/dist/runtime/Selection.js.map +1 -0
  421. package/dist/runtime/Variable.d.ts +6 -0
  422. package/dist/runtime/Variable.d.ts.map +1 -0
  423. package/dist/runtime/Variable.js +10 -0
  424. package/dist/runtime/Variable.js.map +1 -0
  425. package/dist/runtime/index.d.ts +33 -0
  426. package/dist/runtime/index.d.ts.map +1 -0
  427. package/dist/runtime/index.js +33 -0
  428. package/dist/runtime/index.js.map +1 -0
  429. package/dist/styleFunction.d.ts +72 -0
  430. package/dist/styleFunction.d.ts.map +1 -0
  431. package/dist/styleFunction.js +18 -0
  432. package/dist/styleFunction.js.map +1 -0
  433. package/dist/themes/LICENSE.tailwind +21 -0
  434. package/dist/variable.d.ts +50 -0
  435. package/dist/variable.d.ts.map +1 -0
  436. package/dist/variable.js +20 -0
  437. package/dist/variable.js.map +1 -0
  438. package/dist/variants.d.ts +84 -0
  439. package/dist/variants.d.ts.map +1 -0
  440. package/dist/variants.js +21 -0
  441. package/dist/variants.js.map +1 -0
  442. package/dist/vite/index.d.ts +24 -0
  443. package/dist/vite/index.d.ts.map +1 -0
  444. package/dist/vite/index.js +1089 -0
  445. package/dist/vite/index.js.map +1 -0
  446. package/dist/web/Css.d.ts +81 -0
  447. package/dist/web/Css.d.ts.map +1 -0
  448. package/dist/web/Css.js +593 -0
  449. package/dist/web/Css.js.map +1 -0
  450. package/dist/web/colorProfile.d.ts +28 -0
  451. package/dist/web/colorProfile.d.ts.map +1 -0
  452. package/dist/web/colorProfile.js +8 -0
  453. package/dist/web/colorProfile.js.map +1 -0
  454. package/dist/web/counterStyle.d.ts +48 -0
  455. package/dist/web/counterStyle.d.ts.map +1 -0
  456. package/dist/web/counterStyle.js +8 -0
  457. package/dist/web/counterStyle.js.map +1 -0
  458. package/dist/web/cssFunction.d.ts +80 -0
  459. package/dist/web/cssFunction.d.ts.map +1 -0
  460. package/dist/web/cssFunction.js +18 -0
  461. package/dist/web/cssFunction.js.map +1 -0
  462. package/dist/web/customMedia.d.ts +12 -0
  463. package/dist/web/customMedia.d.ts.map +1 -0
  464. package/dist/web/customMedia.js +7 -0
  465. package/dist/web/customMedia.js.map +1 -0
  466. package/dist/web/fontFace.d.ts +26 -0
  467. package/dist/web/fontFace.d.ts.map +1 -0
  468. package/dist/web/fontFace.js +7 -0
  469. package/dist/web/fontFace.js.map +1 -0
  470. package/dist/web/fontFeatureValues.d.ts +40 -0
  471. package/dist/web/fontFeatureValues.d.ts.map +1 -0
  472. package/dist/web/fontFeatureValues.js +7 -0
  473. package/dist/web/fontFeatureValues.js.map +1 -0
  474. package/dist/web/fontPaletteValues.d.ts +21 -0
  475. package/dist/web/fontPaletteValues.d.ts.map +1 -0
  476. package/dist/web/fontPaletteValues.js +9 -0
  477. package/dist/web/fontPaletteValues.js.map +1 -0
  478. package/dist/web/global.d.ts +19 -0
  479. package/dist/web/global.d.ts.map +1 -0
  480. package/dist/web/global.js +6 -0
  481. package/dist/web/global.js.map +1 -0
  482. package/dist/web/importCss.d.ts +18 -0
  483. package/dist/web/importCss.d.ts.map +1 -0
  484. package/dist/web/importCss.js +7 -0
  485. package/dist/web/importCss.js.map +1 -0
  486. package/dist/web/index.d.ts +22 -0
  487. package/dist/web/index.d.ts.map +1 -0
  488. package/dist/web/index.js +22 -0
  489. package/dist/web/index.js.map +1 -0
  490. package/dist/web/internal/Block.d.ts +18 -0
  491. package/dist/web/internal/Block.d.ts.map +1 -0
  492. package/dist/web/internal/Block.js +13 -0
  493. package/dist/web/internal/Block.js.map +1 -0
  494. package/dist/web/internal/ClassName.d.ts +19 -0
  495. package/dist/web/internal/ClassName.d.ts.map +1 -0
  496. package/dist/web/internal/ClassName.js +77 -0
  497. package/dist/web/internal/ClassName.js.map +1 -0
  498. package/dist/web/internal/Context.d.ts +11 -0
  499. package/dist/web/internal/Context.d.ts.map +1 -0
  500. package/dist/web/internal/Context.js +2 -0
  501. package/dist/web/internal/Context.js.map +1 -0
  502. package/dist/web/internal/Contributions.d.ts +70 -0
  503. package/dist/web/internal/Contributions.d.ts.map +1 -0
  504. package/dist/web/internal/Contributions.js +109 -0
  505. package/dist/web/internal/Contributions.js.map +1 -0
  506. package/dist/web/internal/Namespace.d.ts +13 -0
  507. package/dist/web/internal/Namespace.d.ts.map +1 -0
  508. package/dist/web/internal/Namespace.js +13 -0
  509. package/dist/web/internal/Namespace.js.map +1 -0
  510. package/dist/web/internal/Themes.d.ts +13 -0
  511. package/dist/web/internal/Themes.d.ts.map +1 -0
  512. package/dist/web/internal/Themes.js +96 -0
  513. package/dist/web/internal/Themes.js.map +1 -0
  514. package/dist/web/keyframes.d.ts +14 -0
  515. package/dist/web/keyframes.d.ts.map +1 -0
  516. package/dist/web/keyframes.js +8 -0
  517. package/dist/web/keyframes.js.map +1 -0
  518. package/dist/web/layers.d.ts +4 -0
  519. package/dist/web/layers.d.ts.map +1 -0
  520. package/dist/web/layers.js +7 -0
  521. package/dist/web/layers.js.map +1 -0
  522. package/dist/web/namespace.d.ts +14 -0
  523. package/dist/web/namespace.d.ts.map +1 -0
  524. package/dist/web/namespace.js +7 -0
  525. package/dist/web/namespace.js.map +1 -0
  526. package/dist/web/page.d.ts +38 -0
  527. package/dist/web/page.d.ts.map +1 -0
  528. package/dist/web/page.js +7 -0
  529. package/dist/web/page.js.map +1 -0
  530. package/dist/web/positionTry.d.ts +14 -0
  531. package/dist/web/positionTry.d.ts.map +1 -0
  532. package/dist/web/positionTry.js +9 -0
  533. package/dist/web/positionTry.js.map +1 -0
  534. package/dist/web/property.d.ts +24 -0
  535. package/dist/web/property.d.ts.map +1 -0
  536. package/dist/web/property.js +7 -0
  537. package/dist/web/property.js.map +1 -0
  538. package/dist/web/viewTransition.d.ts +29 -0
  539. package/dist/web/viewTransition.d.ts.map +1 -0
  540. package/dist/web/viewTransition.js +7 -0
  541. package/dist/web/viewTransition.js.map +1 -0
  542. package/package.json +136 -10
  543. package/src/Config.ts +690 -0
  544. package/src/Props.ts +8 -0
  545. package/src/Style.ts +748 -0
  546. package/src/Theme.ts +713 -0
  547. package/src/babel/NativeEdits.ts +273 -0
  548. package/src/babel/NativeJsx.ts +260 -0
  549. package/src/babel/index.ts +332 -0
  550. package/src/cli/index.ts +196 -0
  551. package/src/compiler/Graph.ts +1586 -0
  552. package/src/compiler/Native.ts +801 -0
  553. package/src/compiler/Source.ts +1550 -0
  554. package/src/compiler/Transform.ts +1235 -0
  555. package/src/compiler/index.ts +12 -0
  556. package/src/compiler/internal/Applications.ts +378 -0
  557. package/src/compiler/internal/AtRules.ts +202 -0
  558. package/src/compiler/internal/Catalogs.ts +114 -0
  559. package/src/compiler/internal/ColorProfiles.ts +93 -0
  560. package/src/compiler/internal/CompositionBindings.ts +120 -0
  561. package/src/compiler/internal/Compositions.ts +629 -0
  562. package/src/compiler/internal/Configurations.ts +244 -0
  563. package/src/compiler/internal/Contract.ts +846 -0
  564. package/src/compiler/internal/Contributions.ts +1507 -0
  565. package/src/compiler/internal/Descriptors.ts +238 -0
  566. package/src/compiler/internal/Dynamic.ts +266 -0
  567. package/src/compiler/internal/Edits.ts +13 -0
  568. package/src/compiler/internal/Expression.ts +135 -0
  569. package/src/compiler/internal/Functions.ts +206 -0
  570. package/src/compiler/internal/Identifiers.ts +124 -0
  571. package/src/compiler/internal/Keyframes.ts +62 -0
  572. package/src/compiler/internal/Namespaces.ts +296 -0
  573. package/src/compiler/internal/NativeBindings.ts +151 -0
  574. package/src/compiler/internal/PackedStyles.ts +464 -0
  575. package/src/compiler/internal/Properties.ts +121 -0
  576. package/src/compiler/internal/RecipeConditions.ts +139 -0
  577. package/src/compiler/internal/RecipePayloads.ts +132 -0
  578. package/src/compiler/internal/Recipes.ts +531 -0
  579. package/src/compiler/internal/Relative.ts +87 -0
  580. package/src/compiler/internal/Scope.ts +36 -0
  581. package/src/compiler/internal/Selectors.ts +334 -0
  582. package/src/compiler/internal/Static.ts +783 -0
  583. package/src/compiler/internal/Stylesheets.ts +361 -0
  584. package/src/compiler/internal/Syntax.ts +31 -0
  585. package/src/compiler/internal/Themes.ts +1794 -0
  586. package/src/compiler/internal/Variables.ts +497 -0
  587. package/src/compiler/internal/ViewTransitions.ts +82 -0
  588. package/src/cx.ts +98 -0
  589. package/src/default.ts +484 -0
  590. package/src/index.ts +20 -0
  591. package/src/internal/Authoring.ts +199 -0
  592. package/src/internal/Binding.ts +187 -0
  593. package/src/internal/BindingDomains.ts +458 -0
  594. package/src/internal/Cascade.ts +165 -0
  595. package/src/internal/Compound.ts +522 -0
  596. package/src/internal/Condition.ts +283 -0
  597. package/src/internal/Corner.ts +17 -0
  598. package/src/internal/FunctionSyntax.ts +271 -0
  599. package/src/internal/FunctionValue.ts +96 -0
  600. package/src/internal/Geometry.ts +30 -0
  601. package/src/internal/Grid.ts +67 -0
  602. package/src/internal/Identifier.ts +14 -0
  603. package/src/internal/Identity.ts +89 -0
  604. package/src/internal/Lexical.ts +202 -0
  605. package/src/internal/Literal.ts +3820 -0
  606. package/src/internal/NativeProperties.ts +936 -0
  607. package/src/internal/Numeric.ts +77 -0
  608. package/src/internal/Query.ts +87 -0
  609. package/src/internal/Recipe.ts +17 -0
  610. package/src/internal/RuleReference.ts +102 -0
  611. package/src/internal/Scheme.ts +20 -0
  612. package/src/internal/Shorthands.ts +120 -0
  613. package/src/internal/Targets.ts +162 -0
  614. package/src/internal/Token.ts +380 -0
  615. package/src/internal/Tuple.ts +29 -0
  616. package/src/internal/Value.ts +320 -0
  617. package/src/metro/Graph.ts +78 -0
  618. package/src/metro/Watch.ts +88 -0
  619. package/src/metro/index.ts +99 -0
  620. package/src/metro/transformer.ts +97 -0
  621. package/src/next/index.ts +114 -0
  622. package/src/next/loader.ts +369 -0
  623. package/src/node/Host.ts +1204 -0
  624. package/src/node/index.ts +6 -0
  625. package/src/react-native/Host.ts +289 -0
  626. package/src/react-native/StyleSheet.ts +1084 -0
  627. package/src/react-native/Variants.ts +122 -0
  628. package/src/react-native/index.ts +7 -0
  629. package/src/react-native/internal/Color.ts +110 -0
  630. package/src/react-native/internal/NativeSchema.ts +3096 -0
  631. package/src/react-native/internal/Scalar.ts +253 -0
  632. package/src/react-native/internal/Values.ts +87 -0
  633. package/src/react-native/react.ts +47 -0
  634. package/src/reset.css +244 -0
  635. package/src/runtime/Appearance.ts +155 -0
  636. package/src/runtime/Composition.ts +87 -0
  637. package/src/runtime/CompositionHtml.ts +38 -0
  638. package/src/runtime/ConditionalRecipe.ts +70 -0
  639. package/src/runtime/Dynamic.ts +51 -0
  640. package/src/runtime/Html.ts +91 -0
  641. package/src/runtime/Native.ts +144 -0
  642. package/src/runtime/NativeContext.ts +74 -0
  643. package/src/runtime/NativeDynamic.ts +246 -0
  644. package/src/runtime/PayloadRecipe.ts +96 -0
  645. package/src/runtime/Props.ts +33 -0
  646. package/src/runtime/Recipe.ts +74 -0
  647. package/src/runtime/Selection.ts +82 -0
  648. package/src/runtime/Variable.ts +15 -0
  649. package/src/runtime/index.ts +45 -0
  650. package/src/styleFunction.ts +138 -0
  651. package/src/themes/LICENSE.tailwind +21 -0
  652. package/src/variable.ts +105 -0
  653. package/src/variants.ts +218 -0
  654. package/src/vite/index.ts +1473 -0
  655. package/src/web/Css.ts +801 -0
  656. package/src/web/colorProfile.ts +60 -0
  657. package/src/web/counterStyle.ts +82 -0
  658. package/src/web/cssFunction.ts +181 -0
  659. package/src/web/customMedia.ts +16 -0
  660. package/src/web/fontFace.ts +41 -0
  661. package/src/web/fontFeatureValues.ts +79 -0
  662. package/src/web/fontPaletteValues.ts +42 -0
  663. package/src/web/global.ts +39 -0
  664. package/src/web/importCss.ts +23 -0
  665. package/src/web/index.ts +22 -0
  666. package/src/web/internal/Block.ts +29 -0
  667. package/src/web/internal/ClassName.ts +112 -0
  668. package/src/web/internal/Context.ts +16 -0
  669. package/src/web/internal/Contributions.ts +219 -0
  670. package/src/web/internal/Namespace.ts +21 -0
  671. package/src/web/internal/Themes.ts +133 -0
  672. package/src/web/keyframes.ts +43 -0
  673. package/src/web/layers.ts +6 -0
  674. package/src/web/namespace.ts +19 -0
  675. package/src/web/page.ts +140 -0
  676. package/src/web/positionTry.ts +71 -0
  677. package/src/web/property.ts +35 -0
  678. package/src/web/viewTransition.ts +89 -0
@@ -0,0 +1,3820 @@
1
+ /**
2
+ * Defines the supported primitive CSS property and value domains.
3
+ * @module
4
+ */
5
+ import type * as Compound from './Compound.js'
6
+ import type * as Corner from './Corner.js'
7
+ import type * as Geometry from './Geometry.js'
8
+ import type * as Identifier from './Identifier.js'
9
+ import * as Lexical from './Lexical.js'
10
+ import type * as Numeric from './Numeric.js'
11
+ import type * as Tuple from './Tuple.js'
12
+
13
+ /** Refines inferred dimension strings where TypeScript's number template is broader than CSS. */
14
+ export type Checked<value> = value extends `#${infer hex}`
15
+ ? string extends hex
16
+ ? value
17
+ : Hex<hex> extends true
18
+ ? value
19
+ : never
20
+ : value extends string
21
+ ? BroadDimension<value> extends true
22
+ ? value
23
+ : value extends `${number}${NumericUnit}` | '0'
24
+ ? [Numeric.Parse<value>] extends [never]
25
+ ? never
26
+ : Numeric.Parse<value> extends readonly [infer unit, boolean]
27
+ ? unit extends NumericUnit | ''
28
+ ? value
29
+ : never
30
+ : never
31
+ : value
32
+ : value
33
+
34
+ // Annotated dimension domains remain usable without pretending their runtime values are known.
35
+ type BroadDimension<value extends string> =
36
+ value extends `${number}${infer unit}`
37
+ ? `${number}${unit}` extends value
38
+ ? true
39
+ : false
40
+ : false
41
+
42
+ type NumericUnit =
43
+ | Unit
44
+ | 'fr'
45
+ | 'ms'
46
+ | 's'
47
+ | 'deg'
48
+ | 'grad'
49
+ | 'rad'
50
+ | 'turn'
51
+ | 'dpi'
52
+ | 'dpcm'
53
+ | 'dppx'
54
+ | 'x'
55
+ | 'hz'
56
+ | 'khz'
57
+
58
+ type Hex<
59
+ value extends string,
60
+ digits extends readonly unknown[] = [],
61
+ > = value extends ''
62
+ ? digits['length'] extends 3 | 4 | 6 | 8
63
+ ? true
64
+ : false
65
+ : digits['length'] extends 8
66
+ ? false
67
+ : value extends `${infer first}${infer rest}`
68
+ ? Lowercase<first> extends
69
+ | '0'
70
+ | '1'
71
+ | '2'
72
+ | '3'
73
+ | '4'
74
+ | '5'
75
+ | '6'
76
+ | '7'
77
+ | '8'
78
+ | '9'
79
+ | 'a'
80
+ | 'b'
81
+ | 'c'
82
+ | 'd'
83
+ | 'e'
84
+ | 'f'
85
+ ? Hex<rest, readonly [...digits, unknown]>
86
+ : false
87
+ : false
88
+
89
+ /** Math function shapes; dimensional evaluation belongs to the browser. */
90
+ export type Calculation =
91
+ `${'abs' | 'acos' | 'asin' | 'atan' | 'atan2' | 'calc' | 'clamp' | 'cos' | 'exp' | 'hypot' | 'log' | 'max' | 'min' | 'mod' | 'pow' | 'rem' | 'round' | 'sign' | 'sin' | 'sqrt' | 'tan'}(${string})`
92
+
93
+ /** Named, hexadecimal, and absolute functional colors; arguments retain their authored CSS syntax. */
94
+ export type Color =
95
+ | (typeof namedColors)[number]
96
+ | (typeof systemColors)[number]
97
+ | 'currentColor'
98
+ | 'currentcolor'
99
+ | 'transparent'
100
+ | `#${string}`
101
+ | `${'color' | 'color-mix' | 'contrast-color' | 'light-dark' | 'hsl' | 'hsla' | 'hwb' | 'lab' | 'lch' | 'oklab' | 'oklch' | 'rgb' | 'rgba'}(${string})`
102
+
103
+ /** Flexible grid track dimensions. */
104
+ export type Fraction = `${number}fr`
105
+
106
+ /** Structured track values; nested argument semantics belong to the browser. */
107
+ export type GridTracks =
108
+ | Calculation
109
+ | Length
110
+ | Fraction
111
+ | 'auto'
112
+ | 'min-content'
113
+ | 'max-content'
114
+ | `${Calculation | Length | Fraction | 'auto' | 'min-content' | 'max-content'} ${string}`
115
+ | `minmax(${string})${string}`
116
+ | `fit-content(${string})${string}`
117
+
118
+ /** CSS-wide keywords accepted by every supported property. */
119
+ export type Global = 'inherit' | 'initial' | 'revert-layer' | 'revert' | 'unset'
120
+
121
+ /** CSS image functions retain their authored arguments and URL spelling. */
122
+ export type Image =
123
+ | Url
124
+ | `${'conic-gradient' | 'cross-fade' | 'element' | 'image' | 'image-set' | 'linear-gradient' | 'paint' | 'radial-gradient' | 'repeating-conic-gradient' | 'repeating-linear-gradient' | 'repeating-radial-gradient'}(${string})`
125
+
126
+ /** CSS URLs may be quoted or unquoted. */
127
+ export type Url = `url(${string})`
128
+
129
+ /** Finite CSS lengths and percentages; numeric zero needs no unit. */
130
+ export type Length = `${number}${(typeof lengthUnits)[number]}` | 0 | '0'
131
+
132
+ /** Length and percentage units used by scalar type refinements. */
133
+ export type Unit = (typeof lengthUnits)[number]
134
+
135
+ /** Finite property surface with no arbitrary string index signature. */
136
+ export type Properties = {
137
+ readonly [key in keyof typeof rules]?: Value<(typeof rules)[key]>
138
+ } & { readonly [property: `--${string}`]: number | string }
139
+
140
+ /** Domain metadata for known properties; custom properties accept scalar values. */
141
+ export function rule(property: keyof Properties): Rule | undefined {
142
+ return rules[property as keyof typeof rules]
143
+ }
144
+
145
+ /** Finite seconds and milliseconds; CSS times always require units. */
146
+ export type Time = `${number}${'ms' | 's'}`
147
+
148
+ type Rule = {
149
+ readonly functions?: readonly string[]
150
+ readonly list?: true
151
+ readonly negative?: boolean
152
+ } & (
153
+ | { readonly kind: 'compound'; readonly property: keyof Compound.Properties }
154
+ | { readonly kind: 'image' | 'url' }
155
+ | { [kind in Geometry.Kind]: { readonly kind: kind } }[Geometry.Kind]
156
+ | ({ readonly kind: 'identifier' } & Identifier.Options)
157
+ | { readonly kind: 'line'; readonly outline?: true }
158
+ | { readonly kind: 'corner'; readonly items?: 2 | 4 }
159
+ | ({ readonly kind: 'tuple' } & Tuple.Options)
160
+ | {
161
+ readonly auto: boolean
162
+ readonly numeric?: true
163
+ readonly axes?: true
164
+ readonly fraction?: boolean
165
+ readonly items?: 2 | 4
166
+ readonly keywords?: readonly string[]
167
+ readonly kind: 'length'
168
+ readonly negative: boolean
169
+ readonly percentage?: boolean
170
+ readonly standalone?: readonly string[]
171
+ }
172
+ | {
173
+ readonly items?: 2 | 4
174
+ readonly keywords?: readonly string[]
175
+ readonly kind: 'color'
176
+ readonly paint?: true
177
+ }
178
+ | {
179
+ readonly easing?: true
180
+ readonly quoted?: true
181
+ readonly urls?: true
182
+ readonly groups?: readonly (readonly string[])[]
183
+ readonly items?: 2 | 4
184
+ readonly kind: 'enum'
185
+ readonly values: readonly string[]
186
+ }
187
+ | {
188
+ readonly kind: 'percentage'
189
+ readonly keywords?: readonly string[]
190
+ readonly min: number
191
+ readonly max: number
192
+ }
193
+ | { readonly kind: 'grid-line'; readonly items?: 2 | 4 }
194
+ | { readonly kind: 'grid-tracks'; readonly explicit: boolean }
195
+ | {
196
+ readonly integer?: boolean
197
+ readonly length?: true
198
+ readonly keywords?: readonly string[]
199
+ readonly kind: 'number'
200
+ readonly percentage?: true
201
+ readonly max: number
202
+ readonly min: number
203
+ }
204
+ | {
205
+ readonly keywords?: readonly string[]
206
+ readonly kind: 'time'
207
+ readonly negative: boolean
208
+ }
209
+ )
210
+
211
+ type LengthValue<rule extends Rule> =
212
+ | (rule extends { numeric: true } ? number : never)
213
+ | Calculation
214
+ | (rule extends { auto: true } ? 'auto' : never)
215
+ | (rule extends { fraction: true } ? Fraction : never)
216
+ | (rule extends { keywords: readonly (infer keyword)[] } ? keyword : never)
217
+ | (rule extends { percentage: false }
218
+ ? Exclude<Length, `${number}%`>
219
+ : Length)
220
+
221
+ type LinePart =
222
+ | Color
223
+ | Calculation
224
+ | Exclude<Length, `${number}%`>
225
+ | (typeof border.values)[number]
226
+ | 'medium'
227
+ | 'thick'
228
+ | 'thin'
229
+
230
+ type Easing =
231
+ | `cubic-bezier(${string})`
232
+ | `steps(${string})`
233
+ | `linear(${string})`
234
+
235
+ type Keywords<rule> = rule extends {
236
+ keywords: readonly (infer keyword extends string)[]
237
+ }
238
+ ? keyword
239
+ : never
240
+
241
+ type Listed<value extends string | number, rule> =
242
+ | value
243
+ | (rule extends { list: true } ? `${value},${string}` : never)
244
+
245
+ type TupleAtom<rule extends Rule> = rule extends {
246
+ atoms: readonly (infer atom)[]
247
+ }
248
+ ?
249
+ | (Extract<atom, 'number' | 'integer'> extends never
250
+ ? never
251
+ : number | `${number}` | Calculation)
252
+ | ('length' extends atom
253
+ ? Exclude<Length, `${number}%`> | Calculation
254
+ : never)
255
+ | ('percentage' extends atom ? `${number}%` | Calculation : never)
256
+ | ('time' extends atom ? Time | Calculation : never)
257
+ | ('color' extends atom ? Color : never)
258
+ | Keywords<rule>
259
+ : never
260
+
261
+ type TupleValue<rule extends Rule> =
262
+ | (rule extends { standalone: readonly (infer keyword extends string)[] }
263
+ ? keyword
264
+ : never)
265
+ | (rule extends { min: 1 } ? TupleAtom<rule> : never)
266
+ | `${TupleAtom<rule>} ${string}`
267
+ | (rule extends { prefixes: readonly (infer prefix extends string)[] }
268
+ ? `${prefix} ${string}`
269
+ : never)
270
+ | (rule extends { marker: 'fill'; markerPosition: 'any' }
271
+ ? `fill ${string}`
272
+ : never)
273
+
274
+ type Value<rule extends Rule> =
275
+ | `${string}var(--${string})${string}`
276
+ | Global
277
+ | (rule extends { functions: readonly (infer name extends string)[] }
278
+ ?
279
+ | `${name}(${string})`
280
+ | (rule extends
281
+ | { items: number }
282
+ | { list: true }
283
+ | { kind: 'compound' }
284
+ ? `${name}(${string})${string}`
285
+ : never)
286
+ : never)
287
+ | (rule extends {
288
+ kind: 'compound'
289
+ property: infer property extends keyof Compound.Properties
290
+ }
291
+ ? Compound.Properties[property]
292
+ : rule extends { kind: 'image' | 'url' }
293
+ ? Listed<
294
+ 'none' | Url | (rule extends { kind: 'image' } ? Image : never),
295
+ rule
296
+ >
297
+ : rule extends { kind: 'ratio' }
298
+ ?
299
+ | number
300
+ | Calculation
301
+ | 'auto'
302
+ | `auto ${string}`
303
+ | `${number}${'/' | ' '}${string}`
304
+ | `${Calculation}${'/' | ' '}${string}`
305
+ : rule extends { kind: 'transform' }
306
+ ? 'none' | `${Geometry.FunctionName}(${string})${string}`
307
+ : rule extends { kind: 'rotate' }
308
+ ?
309
+ | 'none'
310
+ | 0
311
+ | Geometry.Angle
312
+ | Calculation
313
+ | `${Geometry.Angle | Calculation | number | 'x' | 'y' | 'z'} ${string}`
314
+ : rule extends { kind: 'scale' }
315
+ ?
316
+ | 'none'
317
+ | number
318
+ | `${number}%`
319
+ | Calculation
320
+ | `${number | `${number}%` | Calculation} ${string}`
321
+ : rule extends { kind: 'translate' }
322
+ ?
323
+ | 'none'
324
+ | Length
325
+ | Calculation
326
+ | `${Length | Calculation} ${string}`
327
+ : rule extends { kind: 'line' }
328
+ ?
329
+ | LinePart
330
+ | `${LinePart} ${string}`
331
+ | (rule extends { outline: true }
332
+ ? 'auto' | `auto ${string}`
333
+ : never)
334
+ : rule extends { kind: 'corner' }
335
+ ?
336
+ | Corner.Value
337
+ | (rule extends { items: number }
338
+ ? `${Corner.Value} ${string}`
339
+ : never)
340
+ : rule extends { kind: 'tuple' }
341
+ ? Listed<TupleValue<rule>, rule>
342
+ : rule extends { kind: 'identifier' }
343
+ ? string
344
+ : rule extends { kind: 'length' }
345
+ ?
346
+ | Listed<
347
+ Extract<LengthValue<rule>, string | number>,
348
+ rule
349
+ >
350
+ | (rule extends { items: number }
351
+ ? `${Extract<LengthValue<rule>, string | number>} ${string}`
352
+ : never)
353
+ | (rule extends { axes: true }
354
+ ? `${Length | Calculation}/${string}`
355
+ : never)
356
+ : rule extends { kind: 'number' }
357
+ ? Listed<
358
+ | Calculation
359
+ | number
360
+ | Keywords<rule>
361
+ | (rule extends { length: true }
362
+ ? Length
363
+ : never)
364
+ | (rule extends { percentage: true }
365
+ ? `${number}%`
366
+ : never),
367
+ rule
368
+ >
369
+ : rule extends { kind: 'percentage' }
370
+ ? Calculation | `${number}%` | Keywords<rule>
371
+ : rule extends {
372
+ kind: 'enum'
373
+ values: readonly (infer keyword extends
374
+ string)[]
375
+ }
376
+ ?
377
+ | Listed<
378
+ | keyword
379
+ | (rule extends { quoted: true }
380
+ ? `"${string}"` | `'${string}'`
381
+ : never)
382
+ | (rule extends { urls: true }
383
+ ? `${Url}${string}`
384
+ : never)
385
+ | (rule extends { easing: true }
386
+ ? Easing
387
+ : never),
388
+ rule
389
+ >
390
+ | (rule extends { items: number }
391
+ ? `${keyword} ${string}`
392
+ : never)
393
+ | (rule extends {
394
+ groups: readonly (readonly (infer component extends
395
+ string)[])[]
396
+ }
397
+ ? `${component} ${string}`
398
+ : never)
399
+ : rule extends { kind: 'grid-tracks' }
400
+ ?
401
+ | GridTracks
402
+ | (rule extends { explicit: true }
403
+ ?
404
+ | 'none'
405
+ | 'subgrid'
406
+ | `repeat(${string})${string}`
407
+ | `[${string}`
408
+ : never)
409
+ : rule extends { kind: 'grid-line' }
410
+ ? number | string
411
+ : rule extends { kind: 'time' }
412
+ ? Listed<
413
+ Calculation | Time | Keywords<rule>,
414
+ rule
415
+ >
416
+ :
417
+ | Color
418
+ | (rule extends { paint: true }
419
+ ?
420
+ | Url
421
+ | `${Url}${'' | ' '}${Color | 'none'}`
422
+ : never)
423
+ | Keywords<rule>
424
+ | (rule extends { items: number }
425
+ ? `${Color} ${string}`
426
+ : never))
427
+
428
+ const blend = {
429
+ kind: 'enum',
430
+ values: [
431
+ 'color',
432
+ 'color-burn',
433
+ 'color-dodge',
434
+ 'darken',
435
+ 'difference',
436
+ 'exclusion',
437
+ 'hard-light',
438
+ 'hue',
439
+ 'lighten',
440
+ 'luminosity',
441
+ 'multiply',
442
+ 'normal',
443
+ 'overlay',
444
+ 'saturation',
445
+ 'screen',
446
+ 'soft-light',
447
+ ],
448
+ } as const
449
+ const alpha = {
450
+ kind: 'number',
451
+ min: -Infinity,
452
+ max: Infinity,
453
+ percentage: true,
454
+ } as const
455
+
456
+ const fontWidth = {
457
+ kind: 'percentage',
458
+ min: 0,
459
+ max: Infinity,
460
+ keywords: [
461
+ 'condensed',
462
+ 'expanded',
463
+ 'extra-condensed',
464
+ 'extra-expanded',
465
+ 'normal',
466
+ 'semi-condensed',
467
+ 'semi-expanded',
468
+ 'ultra-condensed',
469
+ 'ultra-expanded',
470
+ ],
471
+ } as const
472
+
473
+ const attachmentRange = {
474
+ atoms: ['length', 'percentage'],
475
+ kind: 'tuple',
476
+ list: true,
477
+ max: 1,
478
+ min: 1,
479
+ negative: true,
480
+ prefixes: [
481
+ 'cover',
482
+ 'contain',
483
+ 'entry',
484
+ 'exit',
485
+ 'entry-crossing',
486
+ 'exit-crossing',
487
+ ],
488
+ standalone: [
489
+ 'normal',
490
+ 'cover',
491
+ 'contain',
492
+ 'entry',
493
+ 'exit',
494
+ 'entry-crossing',
495
+ 'exit-crossing',
496
+ ],
497
+ } as const
498
+ const border = {
499
+ kind: 'enum',
500
+ values: [
501
+ 'dashed',
502
+ 'dotted',
503
+ 'double',
504
+ 'groove',
505
+ 'hidden',
506
+ 'inset',
507
+ 'none',
508
+ 'outset',
509
+ 'ridge',
510
+ 'solid',
511
+ ],
512
+ } as const
513
+ const color = { kind: 'color' } as const
514
+ const fragmentation = {
515
+ kind: 'enum',
516
+ values: [
517
+ 'region',
518
+ 'avoid-region',
519
+ 'auto',
520
+ 'avoid',
521
+ 'avoid-column',
522
+ 'avoid-page',
523
+ 'column',
524
+ 'left',
525
+ 'page',
526
+ 'recto',
527
+ 'right',
528
+ 'verso',
529
+ ],
530
+ } as const
531
+ const globals = new Set<string>([
532
+ 'inherit',
533
+ 'initial',
534
+ 'revert',
535
+ 'revert-layer',
536
+ 'unset',
537
+ ])
538
+ const intrinsic = ['fit-content', 'max-content', 'min-content'] as const
539
+ const length = { auto: false, kind: 'length', negative: false } as const
540
+ /** Shared CSS length unit vocabulary for static domains and query metadata. */
541
+ export const lengthUnits = [
542
+ '%',
543
+ 'cap',
544
+ 'ch',
545
+ 'cm',
546
+ 'cqb',
547
+ 'cqh',
548
+ 'cqi',
549
+ 'cqmax',
550
+ 'cqmin',
551
+ 'cqw',
552
+ 'dvb',
553
+ 'dvh',
554
+ 'dvi',
555
+ 'dvmax',
556
+ 'dvmin',
557
+ 'dvw',
558
+ 'em',
559
+ 'ex',
560
+ 'ic',
561
+ 'in',
562
+ 'lh',
563
+ 'lvb',
564
+ 'lvh',
565
+ 'lvi',
566
+ 'lvmax',
567
+ 'lvmin',
568
+ 'lvw',
569
+ 'mm',
570
+ 'pc',
571
+ 'pt',
572
+ 'px',
573
+ 'q',
574
+ 'Q',
575
+ 'rcap',
576
+ 'rch',
577
+ 'rem',
578
+ 'rex',
579
+ 'ric',
580
+ 'rlh',
581
+ 'svb',
582
+ 'svh',
583
+ 'svi',
584
+ 'svmax',
585
+ 'svmin',
586
+ 'svw',
587
+ 'vb',
588
+ 'vh',
589
+ 'vi',
590
+ 'vmax',
591
+ 'vmin',
592
+ 'vw',
593
+ ] as const
594
+ const margin = { auto: true, kind: 'length', negative: true } as const
595
+ const maximum = { ...length, keywords: [...intrinsic, 'none'] } as const
596
+ /** Absolute CSS named colors shared with target conversion. */
597
+ export const namedColors = [
598
+ 'aliceblue',
599
+ 'antiquewhite',
600
+ 'aqua',
601
+ 'aquamarine',
602
+ 'azure',
603
+ 'beige',
604
+ 'bisque',
605
+ 'black',
606
+ 'blanchedalmond',
607
+ 'blue',
608
+ 'blueviolet',
609
+ 'brown',
610
+ 'burlywood',
611
+ 'cadetblue',
612
+ 'chartreuse',
613
+ 'chocolate',
614
+ 'coral',
615
+ 'cornflowerblue',
616
+ 'cornsilk',
617
+ 'crimson',
618
+ 'cyan',
619
+ 'darkblue',
620
+ 'darkcyan',
621
+ 'darkgoldenrod',
622
+ 'darkgray',
623
+ 'darkgreen',
624
+ 'darkgrey',
625
+ 'darkkhaki',
626
+ 'darkmagenta',
627
+ 'darkolivegreen',
628
+ 'darkorange',
629
+ 'darkorchid',
630
+ 'darkred',
631
+ 'darksalmon',
632
+ 'darkseagreen',
633
+ 'darkslateblue',
634
+ 'darkslategray',
635
+ 'darkslategrey',
636
+ 'darkturquoise',
637
+ 'darkviolet',
638
+ 'deeppink',
639
+ 'deepskyblue',
640
+ 'dimgray',
641
+ 'dimgrey',
642
+ 'dodgerblue',
643
+ 'firebrick',
644
+ 'floralwhite',
645
+ 'forestgreen',
646
+ 'fuchsia',
647
+ 'gainsboro',
648
+ 'ghostwhite',
649
+ 'gold',
650
+ 'goldenrod',
651
+ 'gray',
652
+ 'green',
653
+ 'greenyellow',
654
+ 'grey',
655
+ 'honeydew',
656
+ 'hotpink',
657
+ 'indianred',
658
+ 'indigo',
659
+ 'ivory',
660
+ 'khaki',
661
+ 'lavender',
662
+ 'lavenderblush',
663
+ 'lawngreen',
664
+ 'lemonchiffon',
665
+ 'lightblue',
666
+ 'lightcoral',
667
+ 'lightcyan',
668
+ 'lightgoldenrodyellow',
669
+ 'lightgray',
670
+ 'lightgreen',
671
+ 'lightgrey',
672
+ 'lightpink',
673
+ 'lightsalmon',
674
+ 'lightseagreen',
675
+ 'lightskyblue',
676
+ 'lightslategray',
677
+ 'lightslategrey',
678
+ 'lightsteelblue',
679
+ 'lightyellow',
680
+ 'lime',
681
+ 'limegreen',
682
+ 'linen',
683
+ 'magenta',
684
+ 'maroon',
685
+ 'mediumaquamarine',
686
+ 'mediumblue',
687
+ 'mediumorchid',
688
+ 'mediumpurple',
689
+ 'mediumseagreen',
690
+ 'mediumslateblue',
691
+ 'mediumspringgreen',
692
+ 'mediumturquoise',
693
+ 'mediumvioletred',
694
+ 'midnightblue',
695
+ 'mintcream',
696
+ 'mistyrose',
697
+ 'moccasin',
698
+ 'navajowhite',
699
+ 'navy',
700
+ 'oldlace',
701
+ 'olive',
702
+ 'olivedrab',
703
+ 'orange',
704
+ 'orangered',
705
+ 'orchid',
706
+ 'palegoldenrod',
707
+ 'palegreen',
708
+ 'paleturquoise',
709
+ 'palevioletred',
710
+ 'papayawhip',
711
+ 'peachpuff',
712
+ 'peru',
713
+ 'pink',
714
+ 'plum',
715
+ 'powderblue',
716
+ 'purple',
717
+ 'rebeccapurple',
718
+ 'red',
719
+ 'rosybrown',
720
+ 'royalblue',
721
+ 'saddlebrown',
722
+ 'salmon',
723
+ 'sandybrown',
724
+ 'seagreen',
725
+ 'seashell',
726
+ 'sienna',
727
+ 'silver',
728
+ 'skyblue',
729
+ 'slateblue',
730
+ 'slategray',
731
+ 'slategrey',
732
+ 'snow',
733
+ 'springgreen',
734
+ 'steelblue',
735
+ 'tan',
736
+ 'teal',
737
+ 'thistle',
738
+ 'tomato',
739
+ 'turquoise',
740
+ 'violet',
741
+ 'wheat',
742
+ 'white',
743
+ 'whitesmoke',
744
+ 'yellow',
745
+ 'yellowgreen',
746
+ ] as const
747
+ const systemColors = [
748
+ 'ActiveBorder',
749
+ 'ActiveCaption',
750
+ 'AppWorkspace',
751
+ 'Background',
752
+ 'ButtonHighlight',
753
+ 'ButtonShadow',
754
+ 'CaptionText',
755
+ 'InactiveBorder',
756
+ 'InactiveCaption',
757
+ 'InactiveCaptionText',
758
+ 'InfoBackground',
759
+ 'InfoText',
760
+ 'Menu',
761
+ 'MenuText',
762
+ 'Scrollbar',
763
+ 'ThreeDDarkShadow',
764
+ 'ThreeDFace',
765
+ 'ThreeDHighlight',
766
+ 'ThreeDLightShadow',
767
+ 'ThreeDShadow',
768
+ 'Window',
769
+ 'WindowFrame',
770
+ 'WindowText',
771
+
772
+ 'AccentColor',
773
+ 'AccentColorText',
774
+ 'ActiveText',
775
+ 'ButtonBorder',
776
+ 'ButtonFace',
777
+ 'ButtonText',
778
+ 'Canvas',
779
+ 'CanvasText',
780
+ 'Field',
781
+ 'FieldText',
782
+ 'GrayText',
783
+ 'Highlight',
784
+ 'HighlightText',
785
+ 'LinkText',
786
+ 'Mark',
787
+ 'MarkText',
788
+ 'SelectedItem',
789
+ 'SelectedItemText',
790
+ 'VisitedText',
791
+ ] as const
792
+ const colorKeywordSet = new Set<string>(
793
+ [...namedColors, ...systemColors].map((value) => value.toLowerCase()),
794
+ )
795
+
796
+ const overflow = {
797
+ kind: 'enum',
798
+ values: ['auto', 'clip', 'hidden', 'scroll', 'visible'],
799
+ } as const
800
+ const overscroll = {
801
+ kind: 'enum',
802
+ values: ['auto', 'contain', 'none'],
803
+ } as const
804
+ const positiveInteger = {
805
+ integer: true,
806
+ kind: 'number',
807
+ max: Number.MAX_SAFE_INTEGER,
808
+ min: 1,
809
+ } as const
810
+ const scrollMargin = { ...length, negative: true, percentage: false } as const
811
+ const scrollPadding = { ...length, auto: true } as const
812
+ const size = {
813
+ auto: true,
814
+ keywords: intrinsic,
815
+ kind: 'length',
816
+ negative: false,
817
+ } as const
818
+ const stroke = { ...length, percentage: false } as const
819
+ const textSpacing = {
820
+ ...stroke,
821
+ keywords: ['normal'],
822
+ negative: true,
823
+ } as const
824
+
825
+ const track = { explicit: false, kind: 'grid-tracks' } as const
826
+
827
+ /** Canonical domains shared by legacy aliases and standard declarations. */
828
+ export const aliases = {
829
+ gridColumnGap: 'columnGap',
830
+ gridGap: 'gap',
831
+ gridRowGap: 'rowGap',
832
+ MozAppearance: 'appearance',
833
+ WebkitAppearance: 'appearance',
834
+ WebkitBorderAfter: 'borderBlockEnd',
835
+ WebkitBorderAfterColor: 'borderBlockEndColor',
836
+ WebkitBorderAfterStyle: 'borderBlockEndStyle',
837
+ WebkitBorderAfterWidth: 'borderBlockEndWidth',
838
+ WebkitBorderBefore: 'borderBlockStart',
839
+ WebkitBorderBeforeColor: 'borderBlockStartColor',
840
+ WebkitBorderBeforeStyle: 'borderBlockStartStyle',
841
+ WebkitBorderBeforeWidth: 'borderBlockStartWidth',
842
+ WebkitBorderEnd: 'borderInlineEnd',
843
+ WebkitBorderEndColor: 'borderInlineEndColor',
844
+ WebkitBorderEndStyle: 'borderInlineEndStyle',
845
+ WebkitBorderEndWidth: 'borderInlineEndWidth',
846
+ WebkitBorderStart: 'borderInlineStart',
847
+ WebkitBorderStartColor: 'borderInlineStartColor',
848
+ WebkitBorderStartStyle: 'borderInlineStartStyle',
849
+ WebkitBorderStartWidth: 'borderInlineStartWidth',
850
+ WebkitUserSelect: 'userSelect',
851
+ } as const
852
+
853
+ const dimension = new RegExp(
854
+ `^[+-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+-]?\\d+)?(?:${[...lengthUnits, 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'fr', 'dpi', 'dpcm', 'dppx', 'Hz', 'kHz'].join('|')})$`,
855
+ 'i',
856
+ )
857
+
858
+ /** Resolves literal/token ambiguity without validating CSS values. */
859
+ export function isLiteral(
860
+ property: keyof Properties,
861
+ value: string | number,
862
+ ): boolean {
863
+ if (value === 0 || globals.has(String(value).toLowerCase())) return true
864
+
865
+ const rule: Rule | undefined = rules[property as keyof typeof rules]
866
+ if (!rule) return false
867
+
868
+ if (typeof value === 'string') {
869
+ const folded = Lexical.normalize(value)
870
+ .replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g, '')
871
+ .replace(/[ \t\n\r\f]+/g, ' ')
872
+ if (globals.has(folded)) return true
873
+
874
+ if (
875
+ rule.kind === 'color' &&
876
+ (colorKeywordSet.has(folded) ||
877
+ folded === 'transparent' ||
878
+ folded === 'currentcolor')
879
+ )
880
+ return true
881
+
882
+ if (
883
+ 'keywords' in rule &&
884
+ rule.keywords?.some((keyword) => keyword.toLowerCase() === folded)
885
+ )
886
+ return true
887
+
888
+ if (
889
+ rule.kind === 'enum' &&
890
+ rule.values.some((keyword) => keyword.toLowerCase() === folded)
891
+ )
892
+ return true
893
+
894
+ if ('auto' in rule && rule.auto && folded === 'auto') return true
895
+ // Dimension and expression spellings always retain literal precedence.
896
+ if (dimension.test(value) || /[#()]/.test(value)) return true
897
+ }
898
+
899
+ return rule.kind === 'number' && typeof value === 'number'
900
+ }
901
+
902
+ /** Serializes public camel-case property names, including numeric legacy spellings. */
903
+ export function name(property: string): string {
904
+ if (property.startsWith('--')) return property
905
+
906
+ if (property === 'MsScrollbar3dlightColor')
907
+ return '-ms-scrollbar-3dlight-color'
908
+
909
+ return property.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)
910
+ }
911
+
912
+ /** Single source of truth for the supported literal properties and domains. */
913
+ export const rules = {
914
+ accentColor: { ...color, keywords: ['auto'] },
915
+ alignContent: {
916
+ kind: 'enum',
917
+ values: [
918
+ 'baseline',
919
+ 'center',
920
+ 'end',
921
+ 'first baseline',
922
+ 'flex-end',
923
+ 'flex-start',
924
+ 'last baseline',
925
+ 'normal',
926
+ 'safe center',
927
+ 'safe end',
928
+ 'safe flex-end',
929
+ 'safe flex-start',
930
+ 'safe start',
931
+ 'space-around',
932
+ 'space-between',
933
+ 'space-evenly',
934
+ 'start',
935
+ 'stretch',
936
+ 'unsafe center',
937
+ 'unsafe end',
938
+ 'unsafe flex-end',
939
+ 'unsafe flex-start',
940
+ 'unsafe start',
941
+ ],
942
+ },
943
+ alignItems: {
944
+ kind: 'enum',
945
+ values: [
946
+ 'anchor-center',
947
+ 'baseline',
948
+ 'center',
949
+ 'end',
950
+ 'first baseline',
951
+ 'flex-end',
952
+ 'flex-start',
953
+ 'last baseline',
954
+ 'normal',
955
+ 'safe center',
956
+ 'safe end',
957
+ 'safe flex-end',
958
+ 'safe flex-start',
959
+ 'safe self-end',
960
+ 'safe self-start',
961
+ 'safe start',
962
+ 'self-end',
963
+ 'self-start',
964
+ 'start',
965
+ 'stretch',
966
+ 'unsafe center',
967
+ 'unsafe end',
968
+ 'unsafe flex-end',
969
+ 'unsafe flex-start',
970
+ 'unsafe self-end',
971
+ 'unsafe self-start',
972
+ 'unsafe start',
973
+ ],
974
+ },
975
+ alignmentBaseline: {
976
+ kind: 'enum',
977
+ values: [
978
+ 'alphabetic',
979
+ 'baseline',
980
+ 'central',
981
+ 'ideographic',
982
+ 'mathematical',
983
+ 'middle',
984
+ 'text-after-edge',
985
+ 'text-before-edge',
986
+ ],
987
+ },
988
+ alignSelf: {
989
+ kind: 'enum',
990
+ values: [
991
+ 'anchor-center',
992
+ 'auto',
993
+ 'baseline',
994
+ 'center',
995
+ 'end',
996
+ 'first baseline',
997
+ 'flex-end',
998
+ 'flex-start',
999
+ 'last baseline',
1000
+ 'normal',
1001
+ 'safe center',
1002
+ 'safe end',
1003
+ 'safe flex-end',
1004
+ 'safe flex-start',
1005
+ 'safe self-end',
1006
+ 'safe self-start',
1007
+ 'safe start',
1008
+ 'self-end',
1009
+ 'self-start',
1010
+ 'start',
1011
+ 'stretch',
1012
+ 'unsafe center',
1013
+ 'unsafe end',
1014
+ 'unsafe flex-end',
1015
+ 'unsafe flex-start',
1016
+ 'unsafe self-end',
1017
+ 'unsafe self-start',
1018
+ 'unsafe start',
1019
+ ],
1020
+ },
1021
+ alignTracks: { kind: 'compound', property: 'alignTracks' },
1022
+ all: {
1023
+ kind: 'enum',
1024
+ values: ['inherit', 'initial', 'revert', 'revert-layer', 'unset'],
1025
+ },
1026
+ anchorName: {
1027
+ dashed: true,
1028
+ keywords: ['none'],
1029
+ kind: 'identifier',
1030
+ separator: 'comma',
1031
+ standalone: ['none'],
1032
+ },
1033
+ anchorScope: {
1034
+ dashed: true,
1035
+ keywords: ['all', 'none'],
1036
+ kind: 'identifier',
1037
+ separator: 'comma',
1038
+ standalone: ['all', 'none'],
1039
+ },
1040
+ animation: { kind: 'compound', property: 'animation' },
1041
+ animationComposition: {
1042
+ kind: 'enum',
1043
+ list: true,
1044
+ values: ['accumulate', 'add', 'replace'],
1045
+ },
1046
+ animationDelay: { kind: 'time', list: true, negative: true },
1047
+ animationDirection: {
1048
+ kind: 'enum',
1049
+ list: true,
1050
+ values: ['alternate', 'alternate-reverse', 'normal', 'reverse'],
1051
+ },
1052
+ animationDuration: {
1053
+ keywords: ['auto'],
1054
+ kind: 'time',
1055
+ list: true,
1056
+ negative: false,
1057
+ },
1058
+ animationFillMode: {
1059
+ kind: 'enum',
1060
+ list: true,
1061
+ values: ['backwards', 'both', 'forwards', 'none'],
1062
+ },
1063
+ animationIterationCount: {
1064
+ keywords: ['infinite'],
1065
+ kind: 'number',
1066
+ list: true,
1067
+ max: Infinity,
1068
+ min: 0,
1069
+ },
1070
+ animationName: { keywords: ['none'], kind: 'identifier', separator: 'comma' },
1071
+ animationPlayState: {
1072
+ kind: 'enum',
1073
+ list: true,
1074
+ values: ['paused', 'running'],
1075
+ },
1076
+ animationRange: { kind: 'compound', property: 'animationRange' },
1077
+ animationTimeline: {
1078
+ dashed: true,
1079
+ keywords: ['auto', 'none'],
1080
+ kind: 'identifier',
1081
+ separator: 'comma',
1082
+ },
1083
+ animationRangeEnd: attachmentRange,
1084
+ animationRangeStart: attachmentRange,
1085
+ animationTimingFunction: {
1086
+ easing: true,
1087
+ kind: 'enum',
1088
+ list: true,
1089
+ values: [
1090
+ 'ease',
1091
+ 'ease-in',
1092
+ 'ease-in-out',
1093
+ 'ease-out',
1094
+ 'linear',
1095
+ 'step-end',
1096
+ 'step-start',
1097
+ ],
1098
+ },
1099
+ animationTrigger: { kind: 'compound', property: 'animationTrigger' },
1100
+ appearance: {
1101
+ kind: 'enum',
1102
+ values: [
1103
+ 'auto',
1104
+ 'button',
1105
+ 'checkbox',
1106
+ 'listbox',
1107
+ 'menulist',
1108
+ 'menulist-button',
1109
+ 'meter',
1110
+ 'none',
1111
+ 'progress-bar',
1112
+ 'radio',
1113
+ 'searchfield',
1114
+ 'textarea',
1115
+ 'textfield',
1116
+ ],
1117
+ },
1118
+ aspectRatio: { kind: 'ratio' },
1119
+ backdropFilter: { kind: 'compound', property: 'backdropFilter' },
1120
+ backfaceVisibility: { kind: 'enum', values: ['hidden', 'visible'] },
1121
+ background: { kind: 'compound', property: 'background' },
1122
+ backgroundAttachment: {
1123
+ kind: 'enum',
1124
+ list: true,
1125
+ values: ['fixed', 'local', 'scroll'],
1126
+ },
1127
+ backgroundBlendMode: { ...blend, list: true },
1128
+ backgroundClip: {
1129
+ kind: 'enum',
1130
+ list: true,
1131
+ values: ['border-area', 'border-box', 'content-box', 'padding-box', 'text'],
1132
+ },
1133
+ backgroundColor: color,
1134
+ backgroundImage: { kind: 'image', list: true },
1135
+ backgroundOrigin: {
1136
+ kind: 'enum',
1137
+ list: true,
1138
+ values: ['border-box', 'content-box', 'padding-box'],
1139
+ },
1140
+ backgroundPosition: { kind: 'compound', property: 'backgroundPosition' },
1141
+ backgroundPositionX: { kind: 'compound', property: 'backgroundPositionX' },
1142
+ backgroundPositionY: { kind: 'compound', property: 'backgroundPositionY' },
1143
+ backgroundRepeat: {
1144
+ kind: 'enum',
1145
+ items: 2,
1146
+ list: true,
1147
+ values: ['no-repeat', 'repeat', 'repeat-x', 'repeat-y', 'round', 'space'],
1148
+ },
1149
+ backgroundSize: {
1150
+ ...length,
1151
+ auto: true,
1152
+ items: 2,
1153
+ list: true,
1154
+ keywords: ['contain', 'cover'],
1155
+ },
1156
+ baselineShift: {
1157
+ ...length,
1158
+ keywords: ['baseline', 'sub', 'super'],
1159
+ negative: true,
1160
+ },
1161
+ baselineSource: { kind: 'enum', values: ['auto', 'first', 'last'] },
1162
+ blockSize: {
1163
+ ...size,
1164
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
1165
+ },
1166
+ border: { kind: 'line' },
1167
+ borderBlock: { kind: 'line' },
1168
+ borderBlockColor: { ...color, items: 2 },
1169
+ borderBlockEnd: { kind: 'line' },
1170
+ borderBlockEndColor: color,
1171
+ borderBlockEndStyle: border,
1172
+ borderBlockEndWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1173
+ borderBlockStart: { kind: 'line' },
1174
+ borderBlockStartColor: color,
1175
+ borderBlockStartStyle: border,
1176
+ borderBlockStartWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1177
+ borderBlockStyle: { ...border, items: 2 },
1178
+ borderBlockWidth: {
1179
+ ...stroke,
1180
+ items: 2,
1181
+ keywords: ['medium', 'thick', 'thin'],
1182
+ },
1183
+ borderBottom: { kind: 'line' },
1184
+ borderBottomColor: color,
1185
+ borderBottomLeftRadius: { ...length, items: 2 },
1186
+ borderBottomRightRadius: { ...length, items: 2 },
1187
+ borderBottomStyle: border,
1188
+ borderBottomWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1189
+ borderCollapse: { kind: 'enum', values: ['collapse', 'separate'] },
1190
+ borderColor: { ...color, items: 4 },
1191
+ borderEndEndRadius: { ...length, items: 2 },
1192
+ borderEndStartRadius: { ...length, items: 2 },
1193
+ borderImage: { kind: 'compound', property: 'borderImage' },
1194
+ borderImageOutset: {
1195
+ kind: 'tuple',
1196
+ atoms: ['length', 'number'],
1197
+ min: 1,
1198
+ max: 4,
1199
+ negative: false,
1200
+ },
1201
+ borderImageRepeat: {
1202
+ items: 2,
1203
+ kind: 'enum',
1204
+ values: ['repeat', 'round', 'space', 'stretch'],
1205
+ },
1206
+ borderImageSlice: {
1207
+ kind: 'tuple',
1208
+ atoms: ['number', 'percentage'],
1209
+ marker: 'fill',
1210
+ markerPosition: 'any',
1211
+ min: 1,
1212
+ max: 4,
1213
+ negative: false,
1214
+ },
1215
+ borderImageSource: { kind: 'image' },
1216
+ borderImageWidth: {
1217
+ kind: 'tuple',
1218
+ atoms: ['length', 'number', 'percentage'],
1219
+ keywords: ['auto'],
1220
+ min: 1,
1221
+ max: 4,
1222
+ negative: false,
1223
+ },
1224
+ borderInline: { kind: 'line' },
1225
+ borderInlineColor: { ...color, items: 2 },
1226
+ borderInlineEnd: { kind: 'line' },
1227
+ borderInlineEndColor: color,
1228
+ borderInlineEndStyle: border,
1229
+ borderInlineEndWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1230
+ borderInlineStart: { kind: 'line' },
1231
+ borderInlineStartColor: color,
1232
+ borderInlineStartStyle: border,
1233
+ borderInlineStartWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1234
+ borderInlineStyle: { ...border, items: 2 },
1235
+ borderInlineWidth: {
1236
+ ...stroke,
1237
+ items: 2,
1238
+ keywords: ['medium', 'thick', 'thin'],
1239
+ },
1240
+ borderLeft: { kind: 'line' },
1241
+ borderLeftColor: color,
1242
+ borderLeftStyle: border,
1243
+ borderLeftWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1244
+ borderRadius: { ...length, axes: true, items: 4 },
1245
+ borderRight: { kind: 'line' },
1246
+ borderRightColor: color,
1247
+ borderRightStyle: border,
1248
+ borderRightWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1249
+ borderShape: { kind: 'compound', property: 'borderShape' },
1250
+ borderSpacing: { ...stroke, items: 2 },
1251
+ borderStartEndRadius: { ...length, items: 2 },
1252
+ borderStartStartRadius: { ...length, items: 2 },
1253
+ borderStyle: { ...border, items: 4 },
1254
+ borderTop: { kind: 'line' },
1255
+ borderTopColor: color,
1256
+ borderTopLeftRadius: { ...length, items: 2 },
1257
+ borderTopRightRadius: { ...length, items: 2 },
1258
+ borderTopStyle: border,
1259
+ borderTopWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1260
+ borderWidth: { ...stroke, items: 4, keywords: ['medium', 'thick', 'thin'] },
1261
+ bottom: { ...margin, functions: ['anchor', 'anchor-size'] },
1262
+ boxAlign: {
1263
+ kind: 'enum',
1264
+ values: ['baseline', 'center', 'end', 'start', 'stretch'],
1265
+ },
1266
+ boxDecorationBreak: { kind: 'enum', values: ['clone', 'slice'] },
1267
+ boxDirection: { kind: 'enum', values: ['normal', 'reverse'] },
1268
+ boxFlex: { kind: 'number', max: Number.MAX_SAFE_INTEGER, min: 0 },
1269
+ boxFlexGroup: {
1270
+ integer: true,
1271
+ kind: 'number',
1272
+ max: Number.MAX_SAFE_INTEGER,
1273
+ min: 1,
1274
+ },
1275
+ boxLines: { kind: 'enum', values: ['multiple', 'single'] },
1276
+ boxOrdinalGroup: {
1277
+ integer: true,
1278
+ kind: 'number',
1279
+ max: Number.MAX_SAFE_INTEGER,
1280
+ min: 1,
1281
+ },
1282
+ boxOrient: {
1283
+ kind: 'enum',
1284
+ values: ['block-axis', 'horizontal', 'inline-axis', 'vertical'],
1285
+ },
1286
+ boxPack: { kind: 'enum', values: ['center', 'end', 'justify', 'start'] },
1287
+ boxShadow: { kind: 'compound', property: 'boxShadow' },
1288
+ boxSizing: { kind: 'enum', values: ['border-box', 'content-box'] },
1289
+ breakAfter: {
1290
+ ...fragmentation,
1291
+ values: [
1292
+ 'all',
1293
+ 'always',
1294
+ 'auto',
1295
+ 'avoid',
1296
+ 'avoid-column',
1297
+ 'avoid-page',
1298
+ 'avoid-region',
1299
+ 'column',
1300
+ 'left',
1301
+ 'page',
1302
+ 'recto',
1303
+ 'region',
1304
+ 'right',
1305
+ 'verso',
1306
+ ],
1307
+ },
1308
+ breakBefore: {
1309
+ ...fragmentation,
1310
+ values: [
1311
+ 'all',
1312
+ 'always',
1313
+ 'auto',
1314
+ 'avoid',
1315
+ 'avoid-column',
1316
+ 'avoid-page',
1317
+ 'avoid-region',
1318
+ 'column',
1319
+ 'left',
1320
+ 'page',
1321
+ 'recto',
1322
+ 'region',
1323
+ 'right',
1324
+ 'verso',
1325
+ ],
1326
+ },
1327
+ breakInside: {
1328
+ kind: 'enum',
1329
+ values: ['avoid-region', 'auto', 'avoid', 'avoid-column', 'avoid-page'],
1330
+ },
1331
+ captionSide: { kind: 'enum', values: ['bottom', 'top'] },
1332
+ caret: { kind: 'compound', property: 'caret' },
1333
+ caretAnimation: { kind: 'enum', values: ['auto', 'manual'] },
1334
+ caretColor: { ...color, keywords: ['auto'] },
1335
+ caretShape: { kind: 'enum', values: ['auto', 'bar', 'block', 'underscore'] },
1336
+ clear: {
1337
+ kind: 'enum',
1338
+ values: ['both', 'inline-end', 'inline-start', 'left', 'none', 'right'],
1339
+ },
1340
+ clip: { kind: 'compound', property: 'clip' },
1341
+ clipPath: { kind: 'compound', property: 'clipPath' },
1342
+ clipRule: { kind: 'enum', values: ['evenodd', 'nonzero'] },
1343
+ color,
1344
+ colorInterpolationFilters: {
1345
+ kind: 'enum',
1346
+ values: ['auto', 'linearRGB', 'sRGB'],
1347
+ },
1348
+ colorScheme: {
1349
+ kind: 'identifier',
1350
+ keywords: [
1351
+ 'dark',
1352
+ 'dark light',
1353
+ 'light',
1354
+ 'light dark',
1355
+ 'normal',
1356
+ 'only dark',
1357
+ 'only light',
1358
+ ],
1359
+ },
1360
+ columnCount: { ...positiveInteger, keywords: ['auto'] },
1361
+ columnFill: { kind: 'enum', values: ['auto', 'balance'] },
1362
+ columnGap: { ...length, keywords: ['normal'] },
1363
+ columnHeight: { ...length, auto: true, percentage: false },
1364
+ columnRule: { kind: 'line' },
1365
+ columnRuleColor: color,
1366
+ columnRuleStyle: border,
1367
+ columnRuleWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
1368
+ columns: { kind: 'compound', property: 'columns' },
1369
+ columnSpan: { kind: 'enum', values: ['all', 'none'] },
1370
+ columnWidth: { ...stroke, auto: true },
1371
+ columnWrap: { kind: 'enum', values: ['auto', 'nowrap', 'wrap'] },
1372
+ contain: {
1373
+ groups: [['size', 'inline-size'], ['layout'], ['style'], ['paint']],
1374
+ kind: 'enum',
1375
+ values: [
1376
+ 'content',
1377
+ 'inline-size',
1378
+ 'layout',
1379
+ 'none',
1380
+ 'paint',
1381
+ 'size',
1382
+ 'strict',
1383
+ 'style',
1384
+ ],
1385
+ },
1386
+ container: { kind: 'compound', property: 'container' },
1387
+ containIntrinsicBlockSize: {
1388
+ atoms: ['length'],
1389
+ keywords: ['none'],
1390
+ kind: 'tuple',
1391
+ max: 1,
1392
+ min: 1,
1393
+ negative: false,
1394
+ prefixes: ['auto'],
1395
+ },
1396
+ containIntrinsicHeight: {
1397
+ atoms: ['length'],
1398
+ keywords: ['none'],
1399
+ kind: 'tuple',
1400
+ max: 1,
1401
+ min: 1,
1402
+ negative: false,
1403
+ prefixes: ['auto'],
1404
+ },
1405
+ containIntrinsicInlineSize: {
1406
+ atoms: ['length'],
1407
+ keywords: ['none'],
1408
+ kind: 'tuple',
1409
+ max: 1,
1410
+ min: 1,
1411
+ negative: false,
1412
+ prefixes: ['auto'],
1413
+ },
1414
+ containIntrinsicSize: {
1415
+ atoms: ['length'],
1416
+ keywords: ['none'],
1417
+ kind: 'tuple',
1418
+ max: 2,
1419
+ min: 1,
1420
+ negative: false,
1421
+ prefixes: ['auto'],
1422
+ },
1423
+ containIntrinsicWidth: {
1424
+ atoms: ['length'],
1425
+ keywords: ['none'],
1426
+ kind: 'tuple',
1427
+ max: 1,
1428
+ min: 1,
1429
+ negative: false,
1430
+ prefixes: ['auto'],
1431
+ },
1432
+ containerName: {
1433
+ keywords: ['none'],
1434
+ kind: 'identifier',
1435
+ separator: 'space',
1436
+ standalone: ['none'],
1437
+ excluded: ['and', 'not', 'or'],
1438
+ },
1439
+ containerType: {
1440
+ kind: 'enum',
1441
+ values: [
1442
+ 'inline-size',
1443
+ 'inline-size scroll-state',
1444
+ 'normal',
1445
+ 'scroll-state',
1446
+ 'scroll-state inline-size',
1447
+ 'scroll-state size',
1448
+ 'size',
1449
+ 'size scroll-state',
1450
+ ],
1451
+ },
1452
+ content: { kind: 'compound', property: 'content' },
1453
+ contentVisibility: { kind: 'enum', values: ['auto', 'hidden', 'visible'] },
1454
+ cornerBlockEndShape: { kind: 'corner', items: 2 },
1455
+ cornerBlockStartShape: { kind: 'corner', items: 2 },
1456
+ cornerBottomLeftShape: { kind: 'corner' },
1457
+ cornerBottomRightShape: { kind: 'corner' },
1458
+ cornerBottomShape: { kind: 'corner', items: 2 },
1459
+ cornerEndEndShape: { kind: 'corner' },
1460
+ cornerEndStartShape: { kind: 'corner' },
1461
+ cornerInlineEndShape: { kind: 'corner', items: 2 },
1462
+ cornerInlineStartShape: { kind: 'corner', items: 2 },
1463
+ cornerLeftShape: { kind: 'corner', items: 2 },
1464
+ cornerRightShape: { kind: 'corner', items: 2 },
1465
+ cornerShape: { kind: 'corner', items: 4 },
1466
+ cornerStartEndShape: { kind: 'corner' },
1467
+ cornerStartStartShape: { kind: 'corner' },
1468
+ cornerTopLeftShape: { kind: 'corner' },
1469
+ cornerTopRightShape: { kind: 'corner' },
1470
+ cornerTopShape: { kind: 'corner', items: 2 },
1471
+ counterIncrement: { kind: 'compound', property: 'counterIncrement' },
1472
+ counterReset: { kind: 'compound', property: 'counterReset' },
1473
+ counterSet: { kind: 'compound', property: 'counterSet' },
1474
+ cursor: {
1475
+ kind: 'enum',
1476
+ urls: true,
1477
+ values: [
1478
+ 'alias',
1479
+ 'all-scroll',
1480
+ 'auto',
1481
+ 'cell',
1482
+ 'col-resize',
1483
+ 'context-menu',
1484
+ 'copy',
1485
+ 'crosshair',
1486
+ 'default',
1487
+ 'e-resize',
1488
+ 'ew-resize',
1489
+ 'grab',
1490
+ 'grabbing',
1491
+ 'help',
1492
+ 'move',
1493
+ 'n-resize',
1494
+ 'ne-resize',
1495
+ 'nesw-resize',
1496
+ 'no-drop',
1497
+ 'none',
1498
+ 'not-allowed',
1499
+ 'ns-resize',
1500
+ 'nw-resize',
1501
+ 'nwse-resize',
1502
+ 'pointer',
1503
+ 'progress',
1504
+ 'row-resize',
1505
+ 's-resize',
1506
+ 'se-resize',
1507
+ 'sw-resize',
1508
+ 'text',
1509
+ 'vertical-text',
1510
+ 'w-resize',
1511
+ 'wait',
1512
+ 'zoom-in',
1513
+ 'zoom-out',
1514
+ ],
1515
+ },
1516
+ cx: { ...length, negative: true },
1517
+ cy: { ...length, negative: true },
1518
+ d: { kind: 'compound', property: 'd' },
1519
+ direction: { kind: 'enum', values: ['ltr', 'rtl'] },
1520
+ display: {
1521
+ kind: 'enum',
1522
+ values: [
1523
+ 'block',
1524
+ 'block flex',
1525
+ 'block flow',
1526
+ 'block flow list-item',
1527
+ 'block flow-root',
1528
+ 'block flow-root list-item',
1529
+ 'block grid',
1530
+ 'block list-item',
1531
+ 'block list-item flow',
1532
+ 'block list-item flow-root',
1533
+ 'block ruby',
1534
+ 'block table',
1535
+ 'contents',
1536
+ 'flex',
1537
+ 'flex block',
1538
+ 'flex inline',
1539
+ 'flex run-in',
1540
+ 'flow',
1541
+ 'flow block',
1542
+ 'flow block list-item',
1543
+ 'flow inline',
1544
+ 'flow inline list-item',
1545
+ 'flow list-item',
1546
+ 'flow list-item block',
1547
+ 'flow list-item inline',
1548
+ 'flow list-item run-in',
1549
+ 'flow run-in',
1550
+ 'flow run-in list-item',
1551
+ 'flow-root',
1552
+ 'flow-root block',
1553
+ 'flow-root block list-item',
1554
+ 'flow-root inline',
1555
+ 'flow-root inline list-item',
1556
+ 'flow-root list-item',
1557
+ 'flow-root list-item block',
1558
+ 'flow-root list-item inline',
1559
+ 'flow-root list-item run-in',
1560
+ 'flow-root run-in',
1561
+ 'flow-root run-in list-item',
1562
+ 'grid',
1563
+ 'grid block',
1564
+ 'grid inline',
1565
+ 'grid run-in',
1566
+ 'inline',
1567
+ 'inline flex',
1568
+ 'inline flow',
1569
+ 'inline flow list-item',
1570
+ 'inline flow-root',
1571
+ 'inline flow-root list-item',
1572
+ 'inline grid',
1573
+ 'inline list-item',
1574
+ 'inline list-item flow',
1575
+ 'inline list-item flow-root',
1576
+ 'inline ruby',
1577
+ 'inline table',
1578
+ 'inline-block',
1579
+ 'inline-flex',
1580
+ 'inline-grid',
1581
+ 'inline-list-item',
1582
+ 'inline-table',
1583
+ 'list-item',
1584
+ 'list-item block',
1585
+ 'list-item block flow',
1586
+ 'list-item block flow-root',
1587
+ 'list-item flow',
1588
+ 'list-item flow block',
1589
+ 'list-item flow inline',
1590
+ 'list-item flow run-in',
1591
+ 'list-item flow-root',
1592
+ 'list-item flow-root block',
1593
+ 'list-item flow-root inline',
1594
+ 'list-item flow-root run-in',
1595
+ 'list-item inline',
1596
+ 'list-item inline flow',
1597
+ 'list-item inline flow-root',
1598
+ 'list-item run-in',
1599
+ 'list-item run-in flow',
1600
+ 'list-item run-in flow-root',
1601
+ 'none',
1602
+ 'ruby',
1603
+ 'ruby block',
1604
+ 'ruby inline',
1605
+ 'ruby run-in',
1606
+ 'ruby-base',
1607
+ 'ruby-base-container',
1608
+ 'ruby-text',
1609
+ 'ruby-text-container',
1610
+ 'run-in',
1611
+ 'run-in flex',
1612
+ 'run-in flow',
1613
+ 'run-in flow list-item',
1614
+ 'run-in flow-root',
1615
+ 'run-in flow-root list-item',
1616
+ 'run-in grid',
1617
+ 'run-in list-item',
1618
+ 'run-in list-item flow',
1619
+ 'run-in list-item flow-root',
1620
+ 'run-in ruby',
1621
+ 'run-in table',
1622
+ 'table',
1623
+ 'table block',
1624
+ 'table inline',
1625
+ 'table run-in',
1626
+ 'table-caption',
1627
+ 'table-cell',
1628
+ 'table-column',
1629
+ 'table-column-group',
1630
+ 'table-footer-group',
1631
+ 'table-header-group',
1632
+ 'table-row',
1633
+ 'table-row-group',
1634
+ ],
1635
+ },
1636
+ dominantBaseline: {
1637
+ kind: 'enum',
1638
+ values: [
1639
+ 'alphabetic',
1640
+ 'auto',
1641
+ 'central',
1642
+ 'hanging',
1643
+ 'ideographic',
1644
+ 'mathematical',
1645
+ 'middle',
1646
+ 'text-bottom',
1647
+ 'text-top',
1648
+ ],
1649
+ },
1650
+ dynamicRangeLimit: {
1651
+ kind: 'enum',
1652
+ values: ['constrained', 'no-limit', 'standard'],
1653
+ functions: ['dynamic-range-limit-mix'],
1654
+ },
1655
+ emptyCells: { kind: 'enum', values: ['hide', 'show'] },
1656
+ fieldSizing: { kind: 'enum', values: ['content', 'fixed'] },
1657
+ fill: {
1658
+ ...color,
1659
+ keywords: ['context-fill', 'context-stroke', 'none'],
1660
+ paint: true,
1661
+ },
1662
+ fillOpacity: alpha,
1663
+ fillRule: { kind: 'enum', values: ['evenodd', 'nonzero'] },
1664
+ filter: { kind: 'compound', property: 'filter' },
1665
+ flex: {
1666
+ kind: 'compound',
1667
+ property: 'flex',
1668
+ functions: ['anchor-size', 'calc-size'],
1669
+ },
1670
+ flexBasis: {
1671
+ ...size,
1672
+ keywords: ['content', ...intrinsic],
1673
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
1674
+ },
1675
+ flexDirection: {
1676
+ kind: 'enum',
1677
+ values: ['column', 'column-reverse', 'row', 'row-reverse'],
1678
+ },
1679
+ flexFlow: {
1680
+ kind: 'enum',
1681
+ values: [
1682
+ 'balance',
1683
+ 'balance column',
1684
+ 'balance column-reverse',
1685
+ 'balance row',
1686
+ 'balance row-reverse',
1687
+ 'balance wrap',
1688
+ 'balance wrap column',
1689
+ 'balance wrap column-reverse',
1690
+ 'balance wrap row',
1691
+ 'balance wrap row-reverse',
1692
+ 'balance wrap-reverse',
1693
+ 'balance wrap-reverse column',
1694
+ 'balance wrap-reverse column-reverse',
1695
+ 'balance wrap-reverse row',
1696
+ 'balance wrap-reverse row-reverse',
1697
+ 'column',
1698
+ 'column balance',
1699
+ 'column balance wrap',
1700
+ 'column balance wrap-reverse',
1701
+ 'column nowrap',
1702
+ 'column wrap',
1703
+ 'column wrap balance',
1704
+ 'column wrap-reverse',
1705
+ 'column wrap-reverse balance',
1706
+ 'column-reverse',
1707
+ 'column-reverse balance',
1708
+ 'column-reverse balance wrap',
1709
+ 'column-reverse balance wrap-reverse',
1710
+ 'column-reverse nowrap',
1711
+ 'column-reverse wrap',
1712
+ 'column-reverse wrap balance',
1713
+ 'column-reverse wrap-reverse',
1714
+ 'column-reverse wrap-reverse balance',
1715
+ 'nowrap',
1716
+ 'nowrap column',
1717
+ 'nowrap column-reverse',
1718
+ 'nowrap row',
1719
+ 'nowrap row-reverse',
1720
+ 'row',
1721
+ 'row balance',
1722
+ 'row balance wrap',
1723
+ 'row balance wrap-reverse',
1724
+ 'row nowrap',
1725
+ 'row wrap',
1726
+ 'row wrap balance',
1727
+ 'row wrap-reverse',
1728
+ 'row wrap-reverse balance',
1729
+ 'row-reverse',
1730
+ 'row-reverse balance',
1731
+ 'row-reverse balance wrap',
1732
+ 'row-reverse balance wrap-reverse',
1733
+ 'row-reverse nowrap',
1734
+ 'row-reverse wrap',
1735
+ 'row-reverse wrap balance',
1736
+ 'row-reverse wrap-reverse',
1737
+ 'row-reverse wrap-reverse balance',
1738
+ 'wrap',
1739
+ 'wrap balance',
1740
+ 'wrap balance column',
1741
+ 'wrap balance column-reverse',
1742
+ 'wrap balance row',
1743
+ 'wrap balance row-reverse',
1744
+ 'wrap column',
1745
+ 'wrap column-reverse',
1746
+ 'wrap row',
1747
+ 'wrap row-reverse',
1748
+ 'wrap-reverse',
1749
+ 'wrap-reverse balance',
1750
+ 'wrap-reverse balance column',
1751
+ 'wrap-reverse balance column-reverse',
1752
+ 'wrap-reverse balance row',
1753
+ 'wrap-reverse balance row-reverse',
1754
+ 'wrap-reverse column',
1755
+ 'wrap-reverse column-reverse',
1756
+ 'wrap-reverse row',
1757
+ 'wrap-reverse row-reverse',
1758
+ ],
1759
+ },
1760
+ flexGrow: { kind: 'number', max: Infinity, min: 0 },
1761
+ flexLineCount: {
1762
+ integer: true,
1763
+ kind: 'number',
1764
+ max: Number.MAX_SAFE_INTEGER,
1765
+ min: 1,
1766
+ },
1767
+ flexShrink: { kind: 'number', max: Infinity, min: 0 },
1768
+ flexWrap: {
1769
+ kind: 'enum',
1770
+ values: [
1771
+ 'balance',
1772
+ 'balance wrap',
1773
+ 'balance wrap-reverse',
1774
+ 'nowrap',
1775
+ 'wrap',
1776
+ 'wrap balance',
1777
+ 'wrap-reverse',
1778
+ 'wrap-reverse balance',
1779
+ ],
1780
+ },
1781
+ float: {
1782
+ kind: 'enum',
1783
+ values: ['inline-end', 'inline-start', 'left', 'none', 'right'],
1784
+ },
1785
+ floodColor: color,
1786
+ floodOpacity: alpha,
1787
+ font: { kind: 'compound', property: 'font' },
1788
+ fontFamily: { kind: 'compound', property: 'fontFamily' },
1789
+ fontFeatureSettings: { kind: 'compound', property: 'fontFeatureSettings' },
1790
+ fontKerning: { kind: 'enum', values: ['auto', 'none', 'normal'] },
1791
+ fontLanguageOverride: { kind: 'compound', property: 'fontLanguageOverride' },
1792
+ fontOpticalSizing: { kind: 'enum', values: ['auto', 'none'] },
1793
+ fontPalette: {
1794
+ dashed: true,
1795
+ keywords: ['dark', 'light', 'normal'],
1796
+ kind: 'identifier',
1797
+ },
1798
+ fontSize: {
1799
+ ...length,
1800
+ keywords: [
1801
+ 'large',
1802
+ 'larger',
1803
+ 'math',
1804
+ 'medium',
1805
+ 'small',
1806
+ 'smaller',
1807
+ 'x-large',
1808
+ 'x-small',
1809
+ 'xx-large',
1810
+ 'xx-small',
1811
+ 'xxx-large',
1812
+ ],
1813
+ },
1814
+ fontSizeAdjust: {
1815
+ atoms: ['number'],
1816
+ keywords: ['from-font'],
1817
+ kind: 'tuple',
1818
+ max: 1,
1819
+ min: 1,
1820
+ negative: false,
1821
+ prefixes: ['ex-height', 'cap-height', 'ch-width', 'ic-width', 'ic-height'],
1822
+ standalone: ['none'],
1823
+ },
1824
+ fontSmooth: {
1825
+ ...stroke,
1826
+ keywords: [
1827
+ 'always',
1828
+ 'auto',
1829
+ 'large',
1830
+ 'medium',
1831
+ 'never',
1832
+ 'small',
1833
+ 'x-large',
1834
+ 'x-small',
1835
+ 'xx-large',
1836
+ 'xx-small',
1837
+ 'xxx-large',
1838
+ ],
1839
+ },
1840
+ fontStretch: fontWidth,
1841
+ fontStyle: { kind: 'compound', property: 'fontStyle' },
1842
+ fontSynthesis: {
1843
+ groups: [['position'], ['small-caps'], ['style'], ['weight']],
1844
+ kind: 'enum',
1845
+ values: ['none', 'position', 'small-caps', 'style', 'weight'],
1846
+ },
1847
+ fontSynthesisPosition: { kind: 'enum', values: ['auto', 'none'] },
1848
+ fontSynthesisSmallCaps: { kind: 'enum', values: ['auto', 'none'] },
1849
+ fontSynthesisStyle: { kind: 'enum', values: ['auto', 'none'] },
1850
+ fontSynthesisWeight: { kind: 'enum', values: ['auto', 'none'] },
1851
+ fontVariant: { kind: 'compound', property: 'fontVariant' },
1852
+ fontVariantAlternates: {
1853
+ kind: 'compound',
1854
+ property: 'fontVariantAlternates',
1855
+ },
1856
+ fontVariantCaps: {
1857
+ kind: 'enum',
1858
+ values: [
1859
+ 'all-petite-caps',
1860
+ 'all-small-caps',
1861
+ 'normal',
1862
+ 'petite-caps',
1863
+ 'small-caps',
1864
+ 'titling-caps',
1865
+ 'unicase',
1866
+ ],
1867
+ },
1868
+ fontVariantEastAsian: {
1869
+ groups: [
1870
+ ['jis04', 'jis78', 'jis83', 'jis90', 'simplified', 'traditional'],
1871
+ ['full-width', 'proportional-width'],
1872
+ ['ruby'],
1873
+ ],
1874
+ kind: 'enum',
1875
+ values: [
1876
+ 'full-width',
1877
+ 'jis04',
1878
+ 'jis78',
1879
+ 'jis83',
1880
+ 'jis90',
1881
+ 'normal',
1882
+ 'proportional-width',
1883
+ 'ruby',
1884
+ 'simplified',
1885
+ 'traditional',
1886
+ ],
1887
+ },
1888
+ fontVariantEmoji: {
1889
+ kind: 'enum',
1890
+ values: ['emoji', 'normal', 'text', 'unicode'],
1891
+ },
1892
+ fontVariantLigatures: {
1893
+ groups: [
1894
+ ['common-ligatures', 'no-common-ligatures'],
1895
+ ['contextual', 'no-contextual'],
1896
+ ['discretionary-ligatures', 'no-discretionary-ligatures'],
1897
+ ['historical-ligatures', 'no-historical-ligatures'],
1898
+ ],
1899
+ kind: 'enum',
1900
+ values: [
1901
+ 'common-ligatures',
1902
+ 'contextual',
1903
+ 'discretionary-ligatures',
1904
+ 'historical-ligatures',
1905
+ 'no-common-ligatures',
1906
+ 'no-contextual',
1907
+ 'no-discretionary-ligatures',
1908
+ 'no-historical-ligatures',
1909
+ 'none',
1910
+ 'normal',
1911
+ ],
1912
+ },
1913
+ fontVariantNumeric: {
1914
+ groups: [
1915
+ ['diagonal-fractions', 'stacked-fractions'],
1916
+ ['lining-nums', 'oldstyle-nums'],
1917
+ ['ordinal'],
1918
+ ['proportional-nums', 'tabular-nums'],
1919
+ ['slashed-zero'],
1920
+ ],
1921
+ kind: 'enum',
1922
+ values: [
1923
+ 'diagonal-fractions',
1924
+ 'lining-nums',
1925
+ 'normal',
1926
+ 'oldstyle-nums',
1927
+ 'ordinal',
1928
+ 'proportional-nums',
1929
+ 'slashed-zero',
1930
+ 'stacked-fractions',
1931
+ 'tabular-nums',
1932
+ ],
1933
+ },
1934
+ fontVariantPosition: { kind: 'enum', values: ['normal', 'sub', 'super'] },
1935
+ fontVariationSettings: {
1936
+ kind: 'compound',
1937
+ property: 'fontVariationSettings',
1938
+ },
1939
+ fontWeight: {
1940
+ kind: 'number',
1941
+ max: 1000,
1942
+ min: 1,
1943
+ keywords: ['bold', 'bolder', 'lighter', 'normal'],
1944
+ },
1945
+ fontWidth,
1946
+ forcedColorAdjust: {
1947
+ kind: 'enum',
1948
+ values: ['auto', 'none', 'preserve-parent-color'],
1949
+ },
1950
+ frameSizing: {
1951
+ kind: 'enum',
1952
+ values: [
1953
+ 'auto',
1954
+ 'content-block-size',
1955
+ 'content-height',
1956
+ 'content-inline-size',
1957
+ 'content-width',
1958
+ ],
1959
+ },
1960
+ gap: { ...length, items: 2, keywords: ['normal'] },
1961
+ grid: { kind: 'compound', property: 'grid' },
1962
+ gridArea: { kind: 'grid-line', items: 4 },
1963
+ gridAutoColumns: track,
1964
+ gridAutoFlow: {
1965
+ kind: 'enum',
1966
+ values: [
1967
+ 'column',
1968
+ 'column dense',
1969
+ 'dense',
1970
+ 'dense column',
1971
+ 'dense row',
1972
+ 'row',
1973
+ 'row dense',
1974
+ ],
1975
+ },
1976
+ gridAutoRows: track,
1977
+ gridColumn: { kind: 'grid-line', items: 2 },
1978
+ gridColumnEnd: { kind: 'grid-line' },
1979
+ gridColumnGap: length,
1980
+ gridColumnStart: { kind: 'grid-line' },
1981
+ gridGap: { ...length, items: 2 },
1982
+ gridRow: { kind: 'grid-line', items: 2 },
1983
+ gridRowEnd: { kind: 'grid-line' },
1984
+ gridRowGap: length,
1985
+ gridRowStart: { kind: 'grid-line' },
1986
+ gridTemplate: { kind: 'compound', property: 'gridTemplate' },
1987
+ gridTemplateAreas: { kind: 'compound', property: 'gridTemplateAreas' },
1988
+ gridTemplateColumns: {
1989
+ ...track,
1990
+ explicit: true,
1991
+ },
1992
+ gridTemplateRows: {
1993
+ ...track,
1994
+ explicit: true,
1995
+ },
1996
+ hangingPunctuation: {
1997
+ groups: [['first'], ['allow-end', 'force-end'], ['last']],
1998
+ kind: 'enum',
1999
+ values: ['allow-end', 'first', 'force-end', 'last', 'none'],
2000
+ },
2001
+ height: { ...size, functions: ['anchor-size', 'calc-size', 'fit-content'] },
2002
+ hyphenateCharacter: { kind: 'compound', property: 'hyphenateCharacter' },
2003
+ hyphenateLimitChars: {
2004
+ kind: 'tuple',
2005
+ atoms: ['integer'],
2006
+ keywords: ['auto'],
2007
+ min: 1,
2008
+ max: 3,
2009
+ negative: false,
2010
+ },
2011
+ hyphens: { kind: 'enum', values: ['auto', 'manual', 'none'] },
2012
+ imageOrientation: { kind: 'compound', property: 'imageOrientation' },
2013
+ imageRendering: {
2014
+ kind: 'enum',
2015
+ values: ['auto', 'crisp-edges', 'pixelated', 'smooth'],
2016
+ },
2017
+ imageResolution: { kind: 'compound', property: 'imageResolution' },
2018
+ imeMode: {
2019
+ kind: 'enum',
2020
+ values: ['active', 'auto', 'disabled', 'inactive', 'normal'],
2021
+ },
2022
+ initialLetter: { kind: 'compound', property: 'initialLetter' },
2023
+ initialLetterAlign: {
2024
+ kind: 'enum',
2025
+ values: ['alphabetic', 'auto', 'hanging', 'ideographic'],
2026
+ },
2027
+ inlineSize: {
2028
+ ...size,
2029
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2030
+ },
2031
+ inset: { ...margin, items: 4, functions: ['anchor', 'anchor-size'] },
2032
+ insetBlock: {
2033
+ ...margin,
2034
+ items: 2,
2035
+ functions: ['anchor', 'anchor-size'],
2036
+ },
2037
+ insetBlockEnd: { ...margin, functions: ['anchor', 'anchor-size'] },
2038
+ insetBlockStart: { ...margin, functions: ['anchor', 'anchor-size'] },
2039
+ insetInline: {
2040
+ ...margin,
2041
+ items: 2,
2042
+ functions: ['anchor', 'anchor-size'],
2043
+ },
2044
+ insetInlineEnd: { ...margin, functions: ['anchor', 'anchor-size'] },
2045
+ insetInlineStart: { ...margin, functions: ['anchor', 'anchor-size'] },
2046
+ interactivity: { kind: 'enum', values: ['auto', 'inert'] },
2047
+ interestDelay: {
2048
+ kind: 'tuple',
2049
+ atoms: ['time'],
2050
+ keywords: ['normal'],
2051
+ min: 1,
2052
+ max: 2,
2053
+ negative: false,
2054
+ },
2055
+ interestDelayEnd: { keywords: ['normal'], kind: 'time', negative: true },
2056
+ interestDelayStart: { keywords: ['normal'], kind: 'time', negative: true },
2057
+ interpolateSize: { kind: 'enum', values: ['allow-keywords', 'numeric-only'] },
2058
+ isolation: { kind: 'enum', values: ['auto', 'isolate'] },
2059
+ justifyContent: {
2060
+ kind: 'enum',
2061
+ values: [
2062
+ 'center',
2063
+ 'end',
2064
+ 'flex-end',
2065
+ 'flex-start',
2066
+ 'left',
2067
+ 'normal',
2068
+ 'right',
2069
+ 'safe center',
2070
+ 'safe end',
2071
+ 'safe flex-end',
2072
+ 'safe flex-start',
2073
+ 'safe left',
2074
+ 'safe right',
2075
+ 'safe start',
2076
+ 'space-around',
2077
+ 'space-between',
2078
+ 'space-evenly',
2079
+ 'start',
2080
+ 'stretch',
2081
+ 'unsafe center',
2082
+ 'unsafe end',
2083
+ 'unsafe flex-end',
2084
+ 'unsafe flex-start',
2085
+ 'unsafe left',
2086
+ 'unsafe right',
2087
+ 'unsafe start',
2088
+ ],
2089
+ },
2090
+ justifyItems: {
2091
+ kind: 'enum',
2092
+ values: [
2093
+ 'anchor-center',
2094
+ 'baseline',
2095
+ 'center',
2096
+ 'center legacy',
2097
+ 'end',
2098
+ 'first baseline',
2099
+ 'flex-end',
2100
+ 'flex-start',
2101
+ 'last baseline',
2102
+ 'left',
2103
+ 'left legacy',
2104
+ 'legacy',
2105
+ 'legacy center',
2106
+ 'legacy left',
2107
+ 'legacy right',
2108
+ 'normal',
2109
+ 'right',
2110
+ 'right legacy',
2111
+ 'safe center',
2112
+ 'safe end',
2113
+ 'safe flex-end',
2114
+ 'safe flex-start',
2115
+ 'safe left',
2116
+ 'safe right',
2117
+ 'safe self-end',
2118
+ 'safe self-start',
2119
+ 'safe start',
2120
+ 'self-end',
2121
+ 'self-start',
2122
+ 'start',
2123
+ 'stretch',
2124
+ 'unsafe center',
2125
+ 'unsafe end',
2126
+ 'unsafe flex-end',
2127
+ 'unsafe flex-start',
2128
+ 'unsafe left',
2129
+ 'unsafe right',
2130
+ 'unsafe self-end',
2131
+ 'unsafe self-start',
2132
+ 'unsafe start',
2133
+ ],
2134
+ },
2135
+ justifySelf: {
2136
+ kind: 'enum',
2137
+ values: [
2138
+ 'anchor-center',
2139
+ 'auto',
2140
+ 'baseline',
2141
+ 'center',
2142
+ 'end',
2143
+ 'first baseline',
2144
+ 'flex-end',
2145
+ 'flex-start',
2146
+ 'last baseline',
2147
+ 'left',
2148
+ 'normal',
2149
+ 'right',
2150
+ 'safe center',
2151
+ 'safe end',
2152
+ 'safe flex-end',
2153
+ 'safe flex-start',
2154
+ 'safe left',
2155
+ 'safe right',
2156
+ 'safe self-end',
2157
+ 'safe self-start',
2158
+ 'safe start',
2159
+ 'self-end',
2160
+ 'self-start',
2161
+ 'start',
2162
+ 'stretch',
2163
+ 'unsafe center',
2164
+ 'unsafe end',
2165
+ 'unsafe flex-end',
2166
+ 'unsafe flex-start',
2167
+ 'unsafe left',
2168
+ 'unsafe right',
2169
+ 'unsafe self-end',
2170
+ 'unsafe self-start',
2171
+ 'unsafe start',
2172
+ ],
2173
+ },
2174
+ justifyTracks: { kind: 'compound', property: 'justifyTracks' },
2175
+ left: { ...margin, functions: ['anchor', 'anchor-size'] },
2176
+ letterSpacing: textSpacing,
2177
+ lightingColor: color,
2178
+ lineBreak: {
2179
+ kind: 'enum',
2180
+ values: ['anywhere', 'auto', 'loose', 'normal', 'strict'],
2181
+ },
2182
+ lineClamp: {
2183
+ integer: true,
2184
+ keywords: ['none'],
2185
+ kind: 'number',
2186
+ max: Number.MAX_SAFE_INTEGER,
2187
+ min: 1,
2188
+ },
2189
+ lineHeight: {
2190
+ kind: 'number',
2191
+ length: true,
2192
+ percentage: true,
2193
+ max: Infinity,
2194
+ min: 0,
2195
+ keywords: ['normal'],
2196
+ },
2197
+ lineHeightStep: { ...length, percentage: false },
2198
+ linkParameters: { kind: 'compound', property: 'linkParameters' },
2199
+ listStyle: { kind: 'compound', property: 'listStyle' },
2200
+ listStyleImage: { kind: 'image' },
2201
+ listStylePosition: { kind: 'enum', values: ['inside', 'outside'] },
2202
+ listStyleType: {
2203
+ kind: 'identifier',
2204
+ keywords: [
2205
+ 'armenian',
2206
+ 'circle',
2207
+ 'cjk-ideographic',
2208
+ 'decimal',
2209
+ 'decimal-leading-zero',
2210
+ 'disc',
2211
+ 'disclosure-closed',
2212
+ 'disclosure-open',
2213
+ 'georgian',
2214
+ 'hebrew',
2215
+ 'hiragana',
2216
+ 'hiragana-iroha',
2217
+ 'katakana',
2218
+ 'katakana-iroha',
2219
+ 'lower-alpha',
2220
+ 'lower-greek',
2221
+ 'lower-latin',
2222
+ 'lower-roman',
2223
+ 'none',
2224
+ 'square',
2225
+ 'upper-alpha',
2226
+ 'upper-latin',
2227
+ 'upper-roman',
2228
+ ],
2229
+ },
2230
+ margin: { ...margin, items: 4 },
2231
+ marginBlock: { ...margin, items: 2 },
2232
+ marginBlockEnd: margin,
2233
+ marginBlockStart: margin,
2234
+ marginBottom: margin,
2235
+ marginInline: { ...margin, items: 2 },
2236
+ marginInlineEnd: margin,
2237
+ marginInlineStart: margin,
2238
+ marginLeft: margin,
2239
+ marginRight: margin,
2240
+ marginTop: margin,
2241
+ marginTrim: { kind: 'enum', values: ['all', 'in-flow', 'none'] },
2242
+ marker: { kind: 'url' },
2243
+ markerEnd: { kind: 'url' },
2244
+ markerMid: { kind: 'url' },
2245
+ markerStart: { kind: 'url' },
2246
+ mask: { kind: 'compound', property: 'mask' },
2247
+ maskBorder: { kind: 'compound', property: 'maskBorder' },
2248
+ maskBorderMode: { kind: 'enum', values: ['alpha', 'luminance'] },
2249
+ maskBorderOutset: {
2250
+ kind: 'tuple',
2251
+ atoms: ['length', 'number'],
2252
+ min: 1,
2253
+ max: 4,
2254
+ negative: false,
2255
+ },
2256
+ maskBorderRepeat: {
2257
+ items: 2,
2258
+ kind: 'enum',
2259
+ values: ['repeat', 'round', 'space', 'stretch'],
2260
+ },
2261
+ maskBorderSlice: {
2262
+ kind: 'tuple',
2263
+ atoms: ['number', 'percentage'],
2264
+ marker: 'fill',
2265
+ markerPosition: 'last',
2266
+ min: 1,
2267
+ max: 4,
2268
+ negative: false,
2269
+ },
2270
+ maskBorderSource: { kind: 'image' },
2271
+ maskBorderWidth: {
2272
+ kind: 'tuple',
2273
+ atoms: ['length', 'number', 'percentage'],
2274
+ keywords: ['auto'],
2275
+ min: 1,
2276
+ max: 4,
2277
+ negative: false,
2278
+ },
2279
+ maskClip: {
2280
+ kind: 'enum',
2281
+ list: true,
2282
+ values: [
2283
+ 'border-box',
2284
+ 'content-box',
2285
+ 'fill-box',
2286
+ 'no-clip',
2287
+ 'padding-box',
2288
+ 'stroke-box',
2289
+ 'view-box',
2290
+ ],
2291
+ },
2292
+ maskComposite: {
2293
+ kind: 'enum',
2294
+ list: true,
2295
+ values: ['add', 'exclude', 'intersect', 'subtract'],
2296
+ },
2297
+ maskImage: { kind: 'image', list: true },
2298
+ maskMode: {
2299
+ kind: 'enum',
2300
+ list: true,
2301
+ values: ['alpha', 'luminance', 'match-source'],
2302
+ },
2303
+ maskOrigin: {
2304
+ kind: 'enum',
2305
+ list: true,
2306
+ values: [
2307
+ 'border-box',
2308
+ 'content-box',
2309
+ 'fill-box',
2310
+ 'padding-box',
2311
+ 'stroke-box',
2312
+ 'view-box',
2313
+ ],
2314
+ },
2315
+ maskPosition: { kind: 'compound', property: 'maskPosition' },
2316
+ maskRepeat: {
2317
+ kind: 'enum',
2318
+ items: 2,
2319
+ list: true,
2320
+ values: ['no-repeat', 'repeat', 'repeat-x', 'repeat-y', 'round', 'space'],
2321
+ },
2322
+ maskSize: {
2323
+ ...length,
2324
+ auto: true,
2325
+ items: 2,
2326
+ list: true,
2327
+ keywords: ['contain', 'cover'],
2328
+ },
2329
+ maskType: { kind: 'enum', values: ['alpha', 'luminance'] },
2330
+ masonryAutoFlow: {
2331
+ groups: [
2332
+ ['next', 'pack'],
2333
+ ['definite-first', 'ordered'],
2334
+ ],
2335
+ kind: 'enum',
2336
+ values: ['definite-first', 'next', 'ordered', 'pack'],
2337
+ },
2338
+ mathDepth: { kind: 'compound', property: 'mathDepth' },
2339
+ mathShift: { kind: 'enum', values: ['compact', 'normal'] },
2340
+ mathStyle: { kind: 'enum', values: ['compact', 'normal'] },
2341
+ maxBlockSize: {
2342
+ ...maximum,
2343
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2344
+ },
2345
+ maxHeight: {
2346
+ ...maximum,
2347
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2348
+ },
2349
+ maxInlineSize: {
2350
+ ...maximum,
2351
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2352
+ },
2353
+ maxLines: {
2354
+ integer: true,
2355
+ keywords: ['none'],
2356
+ kind: 'number',
2357
+ max: Number.MAX_SAFE_INTEGER,
2358
+ min: 1,
2359
+ },
2360
+ maxWidth: {
2361
+ ...maximum,
2362
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2363
+ },
2364
+ minBlockSize: {
2365
+ ...size,
2366
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2367
+ },
2368
+ minHeight: {
2369
+ ...size,
2370
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2371
+ },
2372
+ minInlineSize: {
2373
+ ...size,
2374
+ functions: ['anchor-size', 'calc-size', 'fit-content'],
2375
+ },
2376
+ minWidth: { ...size, functions: ['anchor-size', 'calc-size', 'fit-content'] },
2377
+ mixBlendMode: {
2378
+ kind: 'enum',
2379
+ values: [
2380
+ 'color',
2381
+ 'color-burn',
2382
+ 'color-dodge',
2383
+ 'darken',
2384
+ 'difference',
2385
+ 'exclusion',
2386
+ 'hard-light',
2387
+ 'hue',
2388
+ 'lighten',
2389
+ 'luminosity',
2390
+ 'multiply',
2391
+ 'normal',
2392
+ 'overlay',
2393
+ 'plus-darker',
2394
+ 'plus-lighter',
2395
+ 'saturation',
2396
+ 'screen',
2397
+ 'soft-light',
2398
+ ],
2399
+ },
2400
+ MozAppearance: {
2401
+ kind: 'enum',
2402
+ values: [
2403
+ '-moz-mac-unified-toolbar',
2404
+ '-moz-win-borderless-glass',
2405
+ '-moz-win-browsertabbar-toolbox',
2406
+ '-moz-win-communications-toolbox',
2407
+ '-moz-win-communicationstext',
2408
+ '-moz-win-exclude-glass',
2409
+ '-moz-win-glass',
2410
+ '-moz-win-media-toolbox',
2411
+ '-moz-win-mediatext',
2412
+ '-moz-window-button-box',
2413
+ '-moz-window-button-box-maximized',
2414
+ '-moz-window-button-close',
2415
+ '-moz-window-button-maximize',
2416
+ '-moz-window-button-minimize',
2417
+ '-moz-window-button-restore',
2418
+ '-moz-window-frame-bottom',
2419
+ '-moz-window-frame-left',
2420
+ '-moz-window-frame-right',
2421
+ '-moz-window-titlebar',
2422
+ '-moz-window-titlebar-maximized',
2423
+ 'button',
2424
+ 'button-arrow-down',
2425
+ 'button-arrow-next',
2426
+ 'button-arrow-previous',
2427
+ 'button-arrow-up',
2428
+ 'button-bevel',
2429
+ 'button-focus',
2430
+ 'caret',
2431
+ 'checkbox',
2432
+ 'checkbox-container',
2433
+ 'checkbox-label',
2434
+ 'checkmenuitem',
2435
+ 'dualbutton',
2436
+ 'groupbox',
2437
+ 'listbox',
2438
+ 'listitem',
2439
+ 'menuarrow',
2440
+ 'menubar',
2441
+ 'menucheckbox',
2442
+ 'menuimage',
2443
+ 'menuitem',
2444
+ 'menuitemtext',
2445
+ 'menulist',
2446
+ 'menulist-button',
2447
+ 'menulist-text',
2448
+ 'menulist-textfield',
2449
+ 'menupopup',
2450
+ 'menuradio',
2451
+ 'menuseparator',
2452
+ 'meterbar',
2453
+ 'meterchunk',
2454
+ 'none',
2455
+ 'progressbar',
2456
+ 'progressbar-vertical',
2457
+ 'progresschunk',
2458
+ 'progresschunk-vertical',
2459
+ 'radio',
2460
+ 'radio-container',
2461
+ 'radio-label',
2462
+ 'radiomenuitem',
2463
+ 'range',
2464
+ 'range-thumb',
2465
+ 'resizer',
2466
+ 'resizerpanel',
2467
+ 'scale-horizontal',
2468
+ 'scale-vertical',
2469
+ 'scalethumb-horizontal',
2470
+ 'scalethumb-vertical',
2471
+ 'scalethumbend',
2472
+ 'scalethumbstart',
2473
+ 'scalethumbtick',
2474
+ 'scrollbarbutton-down',
2475
+ 'scrollbarbutton-left',
2476
+ 'scrollbarbutton-right',
2477
+ 'scrollbarbutton-up',
2478
+ 'scrollbarthumb-horizontal',
2479
+ 'scrollbarthumb-vertical',
2480
+ 'scrollbartrack-horizontal',
2481
+ 'scrollbartrack-vertical',
2482
+ 'searchfield',
2483
+ 'separator',
2484
+ 'sheet',
2485
+ 'spinner',
2486
+ 'spinner-downbutton',
2487
+ 'spinner-textfield',
2488
+ 'spinner-upbutton',
2489
+ 'splitter',
2490
+ 'statusbar',
2491
+ 'statusbarpanel',
2492
+ 'tab',
2493
+ 'tab-scroll-arrow-back',
2494
+ 'tab-scroll-arrow-forward',
2495
+ 'tabpanel',
2496
+ 'tabpanels',
2497
+ 'textfield',
2498
+ 'textfield-multiline',
2499
+ 'toolbar',
2500
+ 'toolbarbutton',
2501
+ 'toolbarbutton-dropdown',
2502
+ 'toolbargripper',
2503
+ 'toolbox',
2504
+ 'tooltip',
2505
+ 'treeheader',
2506
+ 'treeheadercell',
2507
+ 'treeheadersortarrow',
2508
+ 'treeitem',
2509
+ 'treeline',
2510
+ 'treetwisty',
2511
+ 'treetwistyopen',
2512
+ 'treeview',
2513
+ ],
2514
+ },
2515
+ MozBinding: { kind: 'url' },
2516
+ MozBorderBottomColors: {
2517
+ kind: 'tuple',
2518
+ atoms: ['color'],
2519
+ standalone: ['none'],
2520
+ min: 1,
2521
+ max: Infinity,
2522
+ negative: false,
2523
+ },
2524
+ MozBorderLeftColors: {
2525
+ kind: 'tuple',
2526
+ atoms: ['color'],
2527
+ standalone: ['none'],
2528
+ min: 1,
2529
+ max: Infinity,
2530
+ negative: false,
2531
+ },
2532
+ MozBorderRightColors: {
2533
+ kind: 'tuple',
2534
+ atoms: ['color'],
2535
+ standalone: ['none'],
2536
+ min: 1,
2537
+ max: Infinity,
2538
+ negative: false,
2539
+ },
2540
+ MozBorderTopColors: {
2541
+ kind: 'tuple',
2542
+ atoms: ['color'],
2543
+ standalone: ['none'],
2544
+ min: 1,
2545
+ max: Infinity,
2546
+ negative: false,
2547
+ },
2548
+ MozContextProperties: { kind: 'compound', property: 'MozContextProperties' },
2549
+ MozFloatEdge: {
2550
+ kind: 'enum',
2551
+ values: ['border-box', 'content-box', 'margin-box', 'padding-box'],
2552
+ },
2553
+ MozForceBrokenImageIcon: {
2554
+ kind: 'compound',
2555
+ property: 'MozForceBrokenImageIcon',
2556
+ },
2557
+ MozOrient: {
2558
+ kind: 'enum',
2559
+ values: ['block', 'horizontal', 'inline', 'vertical'],
2560
+ },
2561
+ MozOutlineRadius: { ...length, axes: true, items: 4 },
2562
+ MozOutlineRadiusBottomleft: length,
2563
+ MozOutlineRadiusBottomright: length,
2564
+ MozOutlineRadiusTopleft: length,
2565
+ MozOutlineRadiusTopright: length,
2566
+ MozStackSizing: { kind: 'enum', values: ['ignore', 'stretch-to-fit'] },
2567
+ MozTextBlink: { kind: 'enum', values: ['blink', 'none'] },
2568
+ MozUserFocus: {
2569
+ kind: 'enum',
2570
+ values: [
2571
+ 'ignore',
2572
+ 'none',
2573
+ 'normal',
2574
+ 'select-after',
2575
+ 'select-all',
2576
+ 'select-before',
2577
+ 'select-menu',
2578
+ 'select-same',
2579
+ ],
2580
+ },
2581
+ MozUserInput: {
2582
+ kind: 'enum',
2583
+ values: ['auto', 'disabled', 'enabled', 'none'],
2584
+ },
2585
+ MozUserModify: {
2586
+ kind: 'enum',
2587
+ values: ['read-only', 'read-write', 'write-only'],
2588
+ },
2589
+ MozWindowDragging: { kind: 'enum', values: ['drag', 'no-drag'] },
2590
+ MozWindowShadow: {
2591
+ kind: 'enum',
2592
+ values: ['default', 'menu', 'none', 'sheet', 'tooltip'],
2593
+ },
2594
+ MsAccelerator: { kind: 'enum', values: ['false', 'true'] },
2595
+ MsBlockProgression: { kind: 'enum', values: ['bt', 'lr', 'rl', 'tb'] },
2596
+ MsContentZoomChaining: { kind: 'enum', values: ['chained', 'none'] },
2597
+ MsContentZooming: { kind: 'enum', values: ['none', 'zoom'] },
2598
+ MsContentZoomLimit: { kind: 'compound', property: 'MsContentZoomLimit' },
2599
+ MsContentZoomLimitMax: { kind: 'percentage', min: 0, max: Infinity },
2600
+ MsContentZoomLimitMin: { kind: 'percentage', min: 0, max: Infinity },
2601
+ MsContentZoomSnap: { kind: 'compound', property: 'MsContentZoomSnap' },
2602
+ MsContentZoomSnapPoints: {
2603
+ kind: 'compound',
2604
+ property: 'MsContentZoomSnapPoints',
2605
+ },
2606
+ MsContentZoomSnapType: {
2607
+ kind: 'enum',
2608
+ values: ['mandatory', 'none', 'proximity'],
2609
+ },
2610
+ MsFilter: { kind: 'compound', property: 'MsFilter' },
2611
+ MsFlowFrom: { kind: 'compound', property: 'MsFlowFrom' },
2612
+ MsFlowInto: { kind: 'compound', property: 'MsFlowInto' },
2613
+ MsGridColumns: { kind: 'compound', property: 'MsGridColumns' },
2614
+ MsGridRows: { kind: 'compound', property: 'MsGridRows' },
2615
+ MsHighContrastAdjust: { kind: 'enum', values: ['auto', 'none'] },
2616
+ MsHyphenateLimitChars: {
2617
+ kind: 'tuple',
2618
+ atoms: ['integer'],
2619
+ standalone: ['auto'],
2620
+ min: 1,
2621
+ max: 3,
2622
+ negative: false,
2623
+ },
2624
+ MsHyphenateLimitLines: {
2625
+ kind: 'compound',
2626
+ property: 'MsHyphenateLimitLines',
2627
+ },
2628
+ MsHyphenateLimitZone: length,
2629
+ MsImeAlign: { kind: 'enum', values: ['after', 'auto'] },
2630
+ MsOverflowStyle: {
2631
+ kind: 'enum',
2632
+ values: ['-ms-autohiding-scrollbar', 'auto', 'none', 'scrollbar'],
2633
+ },
2634
+ MsScrollbar3dlightColor: color,
2635
+ MsScrollbarArrowColor: color,
2636
+ MsScrollbarBaseColor: color,
2637
+ MsScrollbarDarkshadowColor: color,
2638
+ MsScrollbarFaceColor: color,
2639
+ MsScrollbarHighlightColor: color,
2640
+ MsScrollbarShadowColor: color,
2641
+ MsScrollbarTrackColor: color,
2642
+ MsScrollChaining: { kind: 'enum', values: ['chained', 'none'] },
2643
+ MsScrollLimit: { kind: 'compound', property: 'MsScrollLimit' },
2644
+ MsScrollLimitXMax: { ...stroke, auto: true },
2645
+ MsScrollLimitXMin: stroke,
2646
+ MsScrollLimitYMax: { ...stroke, auto: true },
2647
+ MsScrollLimitYMin: stroke,
2648
+ MsScrollRails: { kind: 'enum', values: ['none', 'railed'] },
2649
+ MsScrollSnapPointsX: { kind: 'compound', property: 'MsScrollSnapPointsX' },
2650
+ MsScrollSnapPointsY: { kind: 'compound', property: 'MsScrollSnapPointsY' },
2651
+ MsScrollSnapType: {
2652
+ kind: 'enum',
2653
+ values: ['mandatory', 'none', 'proximity'],
2654
+ },
2655
+ MsScrollSnapX: { kind: 'compound', property: 'MsScrollSnapX' },
2656
+ MsScrollSnapY: { kind: 'compound', property: 'MsScrollSnapY' },
2657
+ MsScrollTranslation: {
2658
+ kind: 'enum',
2659
+ values: ['none', 'vertical-to-horizontal'],
2660
+ },
2661
+ MsTextAutospace: {
2662
+ kind: 'enum',
2663
+ values: [
2664
+ 'ideograph-alpha',
2665
+ 'ideograph-numeric',
2666
+ 'ideograph-parenthesis',
2667
+ 'ideograph-space',
2668
+ 'none',
2669
+ ],
2670
+ },
2671
+ MsTouchSelect: { kind: 'enum', values: ['grippers', 'none'] },
2672
+ MsUserSelect: { kind: 'enum', values: ['element', 'none', 'text'] },
2673
+ MsWrapFlow: {
2674
+ kind: 'enum',
2675
+ values: ['auto', 'both', 'clear', 'end', 'maximum', 'start'],
2676
+ },
2677
+ MsWrapMargin: stroke,
2678
+ MsWrapThrough: { kind: 'enum', values: ['none', 'wrap'] },
2679
+ objectFit: {
2680
+ kind: 'enum',
2681
+ values: ['contain', 'cover', 'fill', 'none', 'scale-down'],
2682
+ },
2683
+ objectPosition: { kind: 'compound', property: 'objectPosition' },
2684
+ objectViewBox: { kind: 'compound', property: 'objectViewBox' },
2685
+ offset: { kind: 'compound', property: 'offset' },
2686
+ offsetAnchor: { kind: 'compound', property: 'offsetAnchor' },
2687
+ offsetDistance: { ...length, negative: true },
2688
+ offsetPath: { kind: 'compound', property: 'offsetPath' },
2689
+ offsetPosition: { kind: 'compound', property: 'offsetPosition' },
2690
+ offsetRotate: { kind: 'compound', property: 'offsetRotate' },
2691
+ opacity: alpha,
2692
+ // Safe integers serialize without exponential notation in CSS integer positions.
2693
+ order: {
2694
+ integer: true,
2695
+ kind: 'number',
2696
+ max: Number.MAX_SAFE_INTEGER,
2697
+ min: Number.MIN_SAFE_INTEGER,
2698
+ },
2699
+ orphans: positiveInteger,
2700
+ outline: { kind: 'line', outline: true },
2701
+ outlineColor: { ...color, keywords: ['auto'] },
2702
+ outlineOffset: { ...stroke, negative: true },
2703
+ outlineStyle: {
2704
+ kind: 'enum',
2705
+ values: [
2706
+ 'auto',
2707
+ 'dashed',
2708
+ 'dotted',
2709
+ 'double',
2710
+ 'groove',
2711
+ 'inset',
2712
+ 'none',
2713
+ 'outset',
2714
+ 'ridge',
2715
+ 'solid',
2716
+ ],
2717
+ },
2718
+ outlineWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
2719
+ overflow: { ...overflow, items: 2 },
2720
+ overflowAnchor: { kind: 'enum', values: ['auto', 'none'] },
2721
+ overflowBlock: {
2722
+ kind: 'enum',
2723
+ values: ['auto', 'clip', 'hidden', 'scroll', 'visible'],
2724
+ },
2725
+ overflowClipBox: { kind: 'enum', values: ['content-box', 'padding-box'] },
2726
+ overflowClipMargin: { kind: 'compound', property: 'overflowClipMargin' },
2727
+ overflowInline: {
2728
+ kind: 'enum',
2729
+ values: ['auto', 'clip', 'hidden', 'scroll', 'visible'],
2730
+ },
2731
+ overflowWrap: { kind: 'enum', values: ['anywhere', 'break-word', 'normal'] },
2732
+ overflowX: overflow,
2733
+ overflowY: overflow,
2734
+ overlay: { kind: 'enum', values: ['auto', 'none'] },
2735
+ overscrollBehavior: { ...overscroll, items: 2 },
2736
+ overscrollBehaviorBlock: {
2737
+ kind: 'enum',
2738
+ values: ['auto', 'contain', 'none'],
2739
+ },
2740
+ overscrollBehaviorInline: {
2741
+ kind: 'enum',
2742
+ values: ['auto', 'contain', 'none'],
2743
+ },
2744
+ overscrollBehaviorX: overscroll,
2745
+ overscrollBehaviorY: overscroll,
2746
+ padding: { ...length, items: 4 },
2747
+ paddingBlock: { ...length, items: 2 },
2748
+ paddingBlockEnd: length,
2749
+ paddingBlockStart: length,
2750
+ paddingBottom: length,
2751
+ paddingInline: { ...length, items: 2 },
2752
+ paddingInlineEnd: length,
2753
+ paddingInlineStart: length,
2754
+ paddingLeft: length,
2755
+ paddingRight: length,
2756
+ paddingTop: length,
2757
+ page: { keywords: ['auto'], kind: 'identifier' },
2758
+ pageBreakAfter: {
2759
+ kind: 'enum',
2760
+ values: ['always', 'auto', 'avoid', 'left', 'recto', 'right', 'verso'],
2761
+ },
2762
+ pageBreakBefore: {
2763
+ kind: 'enum',
2764
+ values: ['always', 'auto', 'avoid', 'left', 'recto', 'right', 'verso'],
2765
+ },
2766
+ pageBreakInside: { kind: 'enum', values: ['auto', 'avoid'] },
2767
+ paintOrder: {
2768
+ kind: 'enum',
2769
+ groups: [['fill'], ['stroke'], ['markers']],
2770
+ values: ['fill', 'markers', 'normal', 'stroke'],
2771
+ },
2772
+ pathLength: { kind: 'compound', property: 'pathLength' },
2773
+ perspective: { ...length, keywords: ['none'], percentage: false },
2774
+ perspectiveOrigin: { kind: 'compound', property: 'perspectiveOrigin' },
2775
+ placeContent: { kind: 'compound', property: 'placeContent' },
2776
+ placeItems: { kind: 'compound', property: 'placeItems' },
2777
+ placeSelf: { kind: 'compound', property: 'placeSelf' },
2778
+ pointerEvents: {
2779
+ kind: 'enum',
2780
+ values: [
2781
+ 'all',
2782
+ 'auto',
2783
+
2784
+ 'fill',
2785
+ 'none',
2786
+ 'painted',
2787
+ 'stroke',
2788
+ 'visible',
2789
+ 'visibleFill',
2790
+ 'visiblePainted',
2791
+ 'visibleStroke',
2792
+ ],
2793
+ },
2794
+ position: {
2795
+ kind: 'enum',
2796
+ values: ['absolute', 'fixed', 'relative', 'static', 'sticky'],
2797
+ },
2798
+ positionAnchor: {
2799
+ dashed: true,
2800
+ keywords: ['auto', 'match-parent', 'none', 'normal'],
2801
+ kind: 'identifier',
2802
+ },
2803
+ positionArea: { kind: 'compound', property: 'positionArea' },
2804
+ positionTry: { kind: 'compound', property: 'positionTry' },
2805
+ positionTryFallbacks: { kind: 'compound', property: 'positionTryFallbacks' },
2806
+ positionTryOrder: {
2807
+ kind: 'enum',
2808
+ values: [
2809
+ 'most-block-size',
2810
+ 'most-height',
2811
+ 'most-inline-size',
2812
+ 'most-width',
2813
+ 'normal',
2814
+ ],
2815
+ },
2816
+ positionVisibility: {
2817
+ groups: [['anchors-valid'], ['anchors-visible'], ['no-overflow']],
2818
+ kind: 'enum',
2819
+ values: ['always', 'anchors-valid', 'anchors-visible', 'no-overflow'],
2820
+ },
2821
+ printColorAdjust: { kind: 'enum', values: ['economy', 'exact'] },
2822
+ quotes: { kind: 'compound', property: 'quotes' },
2823
+ r: length,
2824
+ readingFlow: {
2825
+ kind: 'enum',
2826
+ values: [
2827
+ 'flex-flow',
2828
+ 'flex-visual',
2829
+ 'grid-columns',
2830
+ 'grid-order',
2831
+ 'grid-rows',
2832
+ 'normal',
2833
+ 'source-order',
2834
+ ],
2835
+ },
2836
+ readingOrder: {
2837
+ integer: true,
2838
+ kind: 'number',
2839
+ max: Number.MAX_SAFE_INTEGER,
2840
+ min: Number.MIN_SAFE_INTEGER,
2841
+ },
2842
+ resize: {
2843
+ kind: 'enum',
2844
+ values: ['block', 'both', 'horizontal', 'inline', 'none', 'vertical'],
2845
+ },
2846
+ right: { ...margin, functions: ['anchor', 'anchor-size'] },
2847
+ rotate: { kind: 'rotate' },
2848
+ rowGap: { ...length, keywords: ['normal'] },
2849
+ rubyAlign: {
2850
+ kind: 'enum',
2851
+ values: ['center', 'space-around', 'space-between', 'start'],
2852
+ },
2853
+ rubyMerge: { kind: 'enum', values: ['auto', 'collapse', 'separate'] },
2854
+ rubyOverhang: { kind: 'enum', values: ['auto', 'none'] },
2855
+ rubyPosition: {
2856
+ kind: 'enum',
2857
+ values: [
2858
+ 'alternate',
2859
+ 'alternate over',
2860
+ 'alternate under',
2861
+ 'inter-character',
2862
+ 'over',
2863
+ 'over alternate',
2864
+ 'under',
2865
+ 'under alternate',
2866
+ ],
2867
+ },
2868
+ rx: { ...length, auto: true },
2869
+ ry: { ...length, auto: true },
2870
+ scale: { kind: 'scale' },
2871
+ scrollbarColor: {
2872
+ kind: 'tuple',
2873
+ atoms: ['color'],
2874
+ standalone: ['auto'],
2875
+ min: 2,
2876
+ max: 2,
2877
+ negative: false,
2878
+ },
2879
+ scrollbarGutter: {
2880
+ kind: 'enum',
2881
+ values: ['auto', 'both-edges stable', 'stable', 'stable both-edges'],
2882
+ },
2883
+ scrollbarWidth: { kind: 'enum', values: ['auto', 'none', 'thin'] },
2884
+ scrollBehavior: { kind: 'enum', values: ['auto', 'smooth'] },
2885
+ scrollInitialTarget: { kind: 'enum', values: ['nearest', 'none'] },
2886
+ scrollMargin: { ...scrollMargin, items: 4 },
2887
+ scrollMarginBlock: { ...scrollMargin, items: 2 },
2888
+ scrollMarginBlockEnd: scrollMargin,
2889
+ scrollMarginBlockStart: scrollMargin,
2890
+ scrollMarginBottom: scrollMargin,
2891
+ scrollMarginInline: { ...scrollMargin, items: 2 },
2892
+ scrollMarginInlineEnd: scrollMargin,
2893
+ scrollMarginInlineStart: scrollMargin,
2894
+ scrollMarginLeft: scrollMargin,
2895
+ scrollMarginRight: scrollMargin,
2896
+ scrollMarginTop: scrollMargin,
2897
+ scrollMarkerGroup: { kind: 'enum', values: ['after', 'before', 'none'] },
2898
+ scrollPadding: { ...scrollPadding, items: 4 },
2899
+ scrollPaddingBlock: { ...scrollPadding, items: 2 },
2900
+ scrollPaddingBlockEnd: scrollPadding,
2901
+ scrollPaddingBlockStart: scrollPadding,
2902
+ scrollPaddingBottom: scrollPadding,
2903
+ scrollPaddingInline: { ...scrollPadding, items: 2 },
2904
+ scrollPaddingInlineEnd: scrollPadding,
2905
+ scrollPaddingInlineStart: scrollPadding,
2906
+ scrollPaddingLeft: scrollPadding,
2907
+ scrollPaddingRight: scrollPadding,
2908
+ scrollPaddingTop: scrollPadding,
2909
+ scrollSnapAlign: {
2910
+ kind: 'enum',
2911
+ values: [
2912
+ 'center',
2913
+ 'center center',
2914
+ 'center end',
2915
+ 'center none',
2916
+ 'center start',
2917
+ 'end',
2918
+ 'end center',
2919
+ 'end end',
2920
+ 'end none',
2921
+ 'end start',
2922
+ 'none',
2923
+ 'none center',
2924
+ 'none end',
2925
+ 'none none',
2926
+ 'none start',
2927
+ 'start',
2928
+ 'start center',
2929
+ 'start end',
2930
+ 'start none',
2931
+ 'start start',
2932
+ ],
2933
+ },
2934
+ scrollSnapCoordinate: { kind: 'compound', property: 'scrollSnapCoordinate' },
2935
+ scrollSnapDestination: {
2936
+ kind: 'compound',
2937
+ property: 'scrollSnapDestination',
2938
+ },
2939
+ scrollSnapPointsX: { kind: 'compound', property: 'scrollSnapPointsX' },
2940
+ scrollSnapPointsY: { kind: 'compound', property: 'scrollSnapPointsY' },
2941
+ scrollSnapStop: { kind: 'enum', values: ['always', 'normal'] },
2942
+ scrollSnapType: {
2943
+ kind: 'enum',
2944
+ values: [
2945
+ 'block',
2946
+ 'block mandatory',
2947
+ 'block proximity',
2948
+ 'both',
2949
+ 'both mandatory',
2950
+ 'both proximity',
2951
+ 'inline',
2952
+ 'inline mandatory',
2953
+ 'inline proximity',
2954
+ 'none',
2955
+ 'x',
2956
+ 'x mandatory',
2957
+ 'x proximity',
2958
+ 'y',
2959
+ 'y mandatory',
2960
+ 'y proximity',
2961
+ ],
2962
+ },
2963
+ scrollSnapTypeX: { kind: 'enum', values: ['mandatory', 'none', 'proximity'] },
2964
+ scrollSnapTypeY: { kind: 'enum', values: ['mandatory', 'none', 'proximity'] },
2965
+ scrollTargetGroup: { kind: 'enum', values: ['auto', 'none'] },
2966
+ scrollTimeline: { kind: 'compound', property: 'scrollTimeline' },
2967
+ scrollTimelineAxis: {
2968
+ kind: 'enum',
2969
+ list: true,
2970
+ values: ['block', 'inline', 'x', 'y'],
2971
+ },
2972
+ scrollTimelineName: {
2973
+ dashed: true,
2974
+ keywords: ['none'],
2975
+ kind: 'identifier',
2976
+ separator: 'comma',
2977
+ },
2978
+ shapeImageThreshold: alpha,
2979
+ shapeMargin: length,
2980
+ shapeOutside: { kind: 'compound', property: 'shapeOutside' },
2981
+ shapeRendering: {
2982
+ kind: 'enum',
2983
+ values: ['auto', 'crispEdges', 'geometricPrecision', 'optimizeSpeed'],
2984
+ },
2985
+ speakAs: {
2986
+ groups: [
2987
+ ['spell-out'],
2988
+ ['digits'],
2989
+ ['literal-punctuation', 'no-punctuation'],
2990
+ ],
2991
+ kind: 'enum',
2992
+ values: [
2993
+ 'digits',
2994
+ 'literal-punctuation',
2995
+ 'no-punctuation',
2996
+ 'normal',
2997
+ 'spell-out',
2998
+ ],
2999
+ },
3000
+ stopColor: color,
3001
+ stopOpacity: alpha,
3002
+ stroke: {
3003
+ ...color,
3004
+ keywords: ['context-fill', 'context-stroke', 'none'],
3005
+ paint: true,
3006
+ },
3007
+ strokeColor: color,
3008
+ strokeDasharray: { kind: 'compound', property: 'strokeDasharray' },
3009
+ strokeDashoffset: { ...length, negative: true, numeric: true },
3010
+ strokeLinecap: { kind: 'enum', values: ['butt', 'round', 'square'] },
3011
+ strokeLinejoin: {
3012
+ kind: 'enum',
3013
+ values: ['arcs', 'bevel', 'miter', 'miter-clip', 'round'],
3014
+ },
3015
+ strokeMiterlimit: { kind: 'number', max: Infinity, min: 1 },
3016
+ strokeOpacity: alpha,
3017
+ strokeWidth: { ...length, numeric: true },
3018
+ tableLayout: { kind: 'enum', values: ['auto', 'fixed'] },
3019
+ tabSize: {
3020
+ integer: true,
3021
+ length: true,
3022
+ kind: 'number',
3023
+ max: Number.MAX_SAFE_INTEGER,
3024
+ min: 0,
3025
+ },
3026
+ textAlign: {
3027
+ kind: 'enum',
3028
+ values: [
3029
+ 'center',
3030
+ 'end',
3031
+ 'justify',
3032
+ 'left',
3033
+ 'match-parent',
3034
+ 'right',
3035
+ 'start',
3036
+ ],
3037
+ },
3038
+ textAlignLast: {
3039
+ kind: 'enum',
3040
+ values: ['auto', 'center', 'end', 'justify', 'left', 'right', 'start'],
3041
+ },
3042
+ textAnchor: { kind: 'enum', values: ['end', 'middle', 'start'] },
3043
+ textAutospace: { kind: 'compound', property: 'textAutospace' },
3044
+ textBox: { kind: 'compound', property: 'textBox' },
3045
+ textBoxEdge: {
3046
+ kind: 'enum',
3047
+ values: [
3048
+ 'auto',
3049
+ 'cap',
3050
+ 'cap alphabetic',
3051
+ 'cap ideographic',
3052
+ 'cap ideographic-ink',
3053
+ 'cap text',
3054
+ 'ex',
3055
+ 'ex alphabetic',
3056
+ 'ex ideographic',
3057
+ 'ex ideographic-ink',
3058
+ 'ex text',
3059
+ 'ideographic',
3060
+ 'ideographic alphabetic',
3061
+ 'ideographic ideographic',
3062
+ 'ideographic ideographic-ink',
3063
+ 'ideographic text',
3064
+ 'ideographic-ink',
3065
+ 'ideographic-ink alphabetic',
3066
+ 'ideographic-ink ideographic',
3067
+ 'ideographic-ink ideographic-ink',
3068
+ 'ideographic-ink text',
3069
+ 'text',
3070
+ 'text alphabetic',
3071
+ 'text ideographic',
3072
+ 'text ideographic-ink',
3073
+ 'text text',
3074
+ ],
3075
+ },
3076
+ textBoxTrim: {
3077
+ kind: 'enum',
3078
+ values: ['none', 'trim-both', 'trim-end', 'trim-start'],
3079
+ },
3080
+ textCombineUpright: {
3081
+ kind: 'compound',
3082
+ property: 'textCombineUpright',
3083
+ negative: false,
3084
+ },
3085
+ textDecoration: { kind: 'compound', property: 'textDecoration' },
3086
+ textDecorationColor: color,
3087
+ textDecorationInset: {
3088
+ ...length,
3089
+ auto: true,
3090
+ items: 2,
3091
+ negative: true,
3092
+ standalone: ['auto'],
3093
+ },
3094
+ textDecorationLine: {
3095
+ kind: 'enum',
3096
+ values: [
3097
+ 'blink',
3098
+ 'blink line-through',
3099
+ 'blink line-through overline',
3100
+ 'blink line-through overline underline',
3101
+ 'blink line-through underline',
3102
+ 'blink line-through underline overline',
3103
+ 'blink overline',
3104
+ 'blink overline line-through',
3105
+ 'blink overline line-through underline',
3106
+ 'blink overline underline',
3107
+ 'blink overline underline line-through',
3108
+ 'blink underline',
3109
+ 'blink underline line-through',
3110
+ 'blink underline line-through overline',
3111
+ 'blink underline overline',
3112
+ 'blink underline overline line-through',
3113
+ 'grammar-error',
3114
+ 'line-through',
3115
+ 'line-through blink',
3116
+ 'line-through blink overline',
3117
+ 'line-through blink overline underline',
3118
+ 'line-through blink underline',
3119
+ 'line-through blink underline overline',
3120
+ 'line-through overline',
3121
+ 'line-through overline blink',
3122
+ 'line-through overline blink underline',
3123
+ 'line-through overline underline',
3124
+ 'line-through overline underline blink',
3125
+ 'line-through underline',
3126
+ 'line-through underline blink',
3127
+ 'line-through underline blink overline',
3128
+ 'line-through underline overline',
3129
+ 'line-through underline overline blink',
3130
+ 'none',
3131
+ 'overline',
3132
+ 'overline blink',
3133
+ 'overline blink line-through',
3134
+ 'overline blink line-through underline',
3135
+ 'overline blink underline',
3136
+ 'overline blink underline line-through',
3137
+ 'overline line-through',
3138
+ 'overline line-through blink',
3139
+ 'overline line-through blink underline',
3140
+ 'overline line-through underline',
3141
+ 'overline line-through underline blink',
3142
+ 'overline underline',
3143
+ 'overline underline blink',
3144
+ 'overline underline blink line-through',
3145
+ 'overline underline line-through',
3146
+ 'overline underline line-through blink',
3147
+ 'spelling-error',
3148
+ 'underline',
3149
+ 'underline blink',
3150
+ 'underline blink line-through',
3151
+ 'underline blink line-through overline',
3152
+ 'underline blink overline',
3153
+ 'underline blink overline line-through',
3154
+ 'underline line-through',
3155
+ 'underline line-through blink',
3156
+ 'underline line-through blink overline',
3157
+ 'underline line-through overline',
3158
+ 'underline line-through overline blink',
3159
+ 'underline overline',
3160
+ 'underline overline blink',
3161
+ 'underline overline blink line-through',
3162
+ 'underline overline line-through',
3163
+ 'underline overline line-through blink',
3164
+ ],
3165
+ },
3166
+ textDecorationSkip: { kind: 'compound', property: 'textDecorationSkip' },
3167
+ textDecorationSkipInk: { kind: 'enum', values: ['all', 'auto', 'none'] },
3168
+ textDecorationStyle: {
3169
+ kind: 'enum',
3170
+ values: ['dashed', 'dotted', 'double', 'solid', 'wavy'],
3171
+ },
3172
+ textDecorationThickness: { ...length, auto: true, keywords: ['from-font'] },
3173
+ textEmphasis: { kind: 'compound', property: 'textEmphasis' },
3174
+ textEmphasisColor: color,
3175
+ textEmphasisPosition: {
3176
+ kind: 'enum',
3177
+ values: [
3178
+ 'auto',
3179
+ 'left over',
3180
+ 'left under',
3181
+ 'over',
3182
+ 'over left',
3183
+ 'over right',
3184
+ 'right over',
3185
+ 'right under',
3186
+ 'under',
3187
+ 'under left',
3188
+ 'under right',
3189
+ ],
3190
+ },
3191
+ textEmphasisStyle: {
3192
+ kind: 'enum',
3193
+ quoted: true,
3194
+ values: [
3195
+ 'circle',
3196
+ 'circle filled',
3197
+ 'circle open',
3198
+ 'dot',
3199
+ 'dot filled',
3200
+ 'dot open',
3201
+ 'double-circle',
3202
+ 'double-circle filled',
3203
+ 'double-circle open',
3204
+ 'filled',
3205
+ 'filled circle',
3206
+ 'filled dot',
3207
+ 'filled double-circle',
3208
+ 'filled sesame',
3209
+ 'filled triangle',
3210
+ 'none',
3211
+ 'open',
3212
+ 'open circle',
3213
+ 'open dot',
3214
+ 'open double-circle',
3215
+ 'open sesame',
3216
+ 'open triangle',
3217
+ 'sesame',
3218
+ 'sesame filled',
3219
+ 'sesame open',
3220
+ 'triangle',
3221
+ 'triangle filled',
3222
+ 'triangle open',
3223
+ ],
3224
+ },
3225
+ textFit: { kind: 'compound', property: 'textFit' },
3226
+ textIndent: { kind: 'compound', property: 'textIndent' },
3227
+ textJustify: {
3228
+ kind: 'enum',
3229
+ values: ['auto', 'inter-character', 'inter-word', 'none'],
3230
+ },
3231
+ textOrientation: { kind: 'enum', values: ['mixed', 'sideways', 'upright'] },
3232
+ textOverflow: {
3233
+ kind: 'enum',
3234
+ quoted: true,
3235
+ items: 2,
3236
+ values: ['clip', 'ellipsis'],
3237
+ },
3238
+ textRendering: {
3239
+ kind: 'enum',
3240
+ values: [
3241
+ 'auto',
3242
+ 'geometricPrecision',
3243
+ 'optimizeLegibility',
3244
+ 'optimizeSpeed',
3245
+ ],
3246
+ },
3247
+ textShadow: { kind: 'compound', property: 'textShadow' },
3248
+ textSizeAdjust: {
3249
+ kind: 'percentage',
3250
+ min: 0,
3251
+ max: Infinity,
3252
+ keywords: ['auto', 'none'],
3253
+ },
3254
+ textSpacingTrim: {
3255
+ kind: 'enum',
3256
+ values: ['normal', 'space-all', 'space-first', 'trim-start'],
3257
+ },
3258
+ textTransform: {
3259
+ kind: 'enum',
3260
+ values: [
3261
+ 'capitalize',
3262
+ 'capitalize full-size-kana',
3263
+ 'capitalize full-size-kana full-width',
3264
+ 'capitalize full-width',
3265
+ 'capitalize full-width full-size-kana',
3266
+ 'full-size-kana',
3267
+ 'full-size-kana capitalize',
3268
+ 'full-size-kana capitalize full-width',
3269
+ 'full-size-kana full-width',
3270
+ 'full-size-kana full-width capitalize',
3271
+ 'full-size-kana full-width lowercase',
3272
+ 'full-size-kana full-width uppercase',
3273
+ 'full-size-kana lowercase',
3274
+ 'full-size-kana lowercase full-width',
3275
+ 'full-size-kana uppercase',
3276
+ 'full-size-kana uppercase full-width',
3277
+ 'full-width',
3278
+ 'full-width capitalize',
3279
+ 'full-width capitalize full-size-kana',
3280
+ 'full-width full-size-kana',
3281
+ 'full-width full-size-kana capitalize',
3282
+ 'full-width full-size-kana lowercase',
3283
+ 'full-width full-size-kana uppercase',
3284
+ 'full-width lowercase',
3285
+ 'full-width lowercase full-size-kana',
3286
+ 'full-width uppercase',
3287
+ 'full-width uppercase full-size-kana',
3288
+ 'lowercase',
3289
+ 'lowercase full-size-kana',
3290
+ 'lowercase full-size-kana full-width',
3291
+ 'lowercase full-width',
3292
+ 'lowercase full-width full-size-kana',
3293
+ 'math-auto',
3294
+ 'none',
3295
+ 'uppercase',
3296
+ 'uppercase full-size-kana',
3297
+ 'uppercase full-size-kana full-width',
3298
+ 'uppercase full-width',
3299
+ 'uppercase full-width full-size-kana',
3300
+ ],
3301
+ },
3302
+ textUnderlineOffset: { ...length, auto: true, negative: true },
3303
+ textUnderlinePosition: {
3304
+ groups: [['under'], ['left', 'right']],
3305
+ kind: 'enum',
3306
+ values: ['auto', 'from-font', 'left', 'right', 'under'],
3307
+ },
3308
+ textWrap: {
3309
+ groups: [
3310
+ ['nowrap', 'wrap'],
3311
+ ['auto', 'balance', 'pretty', 'stable'],
3312
+ ],
3313
+ kind: 'enum',
3314
+ values: ['auto', 'balance', 'nowrap', 'pretty', 'stable', 'wrap'],
3315
+ },
3316
+ textWrapMode: { kind: 'enum', values: ['nowrap', 'wrap'] },
3317
+ textWrapStyle: {
3318
+ kind: 'enum',
3319
+ values: ['auto', 'balance', 'pretty', 'stable'],
3320
+ },
3321
+ timelineScope: {
3322
+ dashed: true,
3323
+ keywords: ['none'],
3324
+ kind: 'identifier',
3325
+ separator: 'comma',
3326
+ standalone: ['none'],
3327
+ },
3328
+ timelineTrigger: { kind: 'compound', property: 'timelineTrigger' },
3329
+ timelineTriggerActivationRange: {
3330
+ kind: 'compound',
3331
+ property: 'timelineTriggerActivationRange',
3332
+ },
3333
+ timelineTriggerActivationRangeEnd: attachmentRange,
3334
+ timelineTriggerActivationRangeStart: attachmentRange,
3335
+ timelineTriggerActiveRange: {
3336
+ kind: 'compound',
3337
+ property: 'timelineTriggerActiveRange',
3338
+ },
3339
+ timelineTriggerActiveRangeEnd: {
3340
+ ...attachmentRange,
3341
+ standalone: [...attachmentRange.standalone, 'auto'],
3342
+ },
3343
+ timelineTriggerActiveRangeStart: {
3344
+ ...attachmentRange,
3345
+ standalone: [...attachmentRange.standalone, 'auto'],
3346
+ },
3347
+ timelineTriggerName: {
3348
+ dashed: true,
3349
+ keywords: ['none'],
3350
+ kind: 'identifier',
3351
+ separator: 'comma',
3352
+ standalone: ['none'],
3353
+ },
3354
+ timelineTriggerSource: {
3355
+ dashed: true,
3356
+ keywords: ['auto', 'none'],
3357
+ kind: 'identifier',
3358
+ separator: 'comma',
3359
+ },
3360
+ top: { ...margin, functions: ['anchor', 'anchor-size'] },
3361
+ touchAction: {
3362
+ kind: 'enum',
3363
+ values: [
3364
+ 'auto',
3365
+ 'manipulation',
3366
+ 'none',
3367
+ 'pan-down',
3368
+ 'pan-down pan-left',
3369
+ 'pan-down pan-left pinch-zoom',
3370
+ 'pan-down pan-right',
3371
+ 'pan-down pan-right pinch-zoom',
3372
+ 'pan-down pan-x',
3373
+ 'pan-down pan-x pinch-zoom',
3374
+ 'pan-down pinch-zoom',
3375
+ 'pan-down pinch-zoom pan-left',
3376
+ 'pan-down pinch-zoom pan-right',
3377
+ 'pan-down pinch-zoom pan-x',
3378
+ 'pan-left',
3379
+ 'pan-left pan-down',
3380
+ 'pan-left pan-down pinch-zoom',
3381
+ 'pan-left pan-up',
3382
+ 'pan-left pan-up pinch-zoom',
3383
+ 'pan-left pan-y',
3384
+ 'pan-left pan-y pinch-zoom',
3385
+ 'pan-left pinch-zoom',
3386
+ 'pan-left pinch-zoom pan-down',
3387
+ 'pan-left pinch-zoom pan-up',
3388
+ 'pan-left pinch-zoom pan-y',
3389
+ 'pan-right',
3390
+ 'pan-right pan-down',
3391
+ 'pan-right pan-down pinch-zoom',
3392
+ 'pan-right pan-up',
3393
+ 'pan-right pan-up pinch-zoom',
3394
+ 'pan-right pan-y',
3395
+ 'pan-right pan-y pinch-zoom',
3396
+ 'pan-right pinch-zoom',
3397
+ 'pan-right pinch-zoom pan-down',
3398
+ 'pan-right pinch-zoom pan-up',
3399
+ 'pan-right pinch-zoom pan-y',
3400
+ 'pan-up',
3401
+ 'pan-up pan-left',
3402
+ 'pan-up pan-left pinch-zoom',
3403
+ 'pan-up pan-right',
3404
+ 'pan-up pan-right pinch-zoom',
3405
+ 'pan-up pan-x',
3406
+ 'pan-up pan-x pinch-zoom',
3407
+ 'pan-up pinch-zoom',
3408
+ 'pan-up pinch-zoom pan-left',
3409
+ 'pan-up pinch-zoom pan-right',
3410
+ 'pan-up pinch-zoom pan-x',
3411
+ 'pan-x',
3412
+ 'pan-x pan-down',
3413
+ 'pan-x pan-down pinch-zoom',
3414
+ 'pan-x pan-up',
3415
+ 'pan-x pan-up pinch-zoom',
3416
+ 'pan-x pan-y',
3417
+ 'pan-x pan-y pinch-zoom',
3418
+ 'pan-x pinch-zoom',
3419
+ 'pan-x pinch-zoom pan-down',
3420
+ 'pan-x pinch-zoom pan-up',
3421
+ 'pan-x pinch-zoom pan-y',
3422
+ 'pan-y',
3423
+ 'pan-y pan-left',
3424
+ 'pan-y pan-left pinch-zoom',
3425
+ 'pan-y pan-right',
3426
+ 'pan-y pan-right pinch-zoom',
3427
+ 'pan-y pan-x',
3428
+ 'pan-y pan-x pinch-zoom',
3429
+ 'pan-y pinch-zoom',
3430
+ 'pan-y pinch-zoom pan-left',
3431
+ 'pan-y pinch-zoom pan-right',
3432
+ 'pan-y pinch-zoom pan-x',
3433
+ 'pinch-zoom',
3434
+ 'pinch-zoom pan-down',
3435
+ 'pinch-zoom pan-down pan-left',
3436
+ 'pinch-zoom pan-down pan-right',
3437
+ 'pinch-zoom pan-down pan-x',
3438
+ 'pinch-zoom pan-left',
3439
+ 'pinch-zoom pan-left pan-down',
3440
+ 'pinch-zoom pan-left pan-up',
3441
+ 'pinch-zoom pan-left pan-y',
3442
+ 'pinch-zoom pan-right',
3443
+ 'pinch-zoom pan-right pan-down',
3444
+ 'pinch-zoom pan-right pan-up',
3445
+ 'pinch-zoom pan-right pan-y',
3446
+ 'pinch-zoom pan-up',
3447
+ 'pinch-zoom pan-up pan-left',
3448
+ 'pinch-zoom pan-up pan-right',
3449
+ 'pinch-zoom pan-up pan-x',
3450
+ 'pinch-zoom pan-x',
3451
+ 'pinch-zoom pan-x pan-down',
3452
+ 'pinch-zoom pan-x pan-up',
3453
+ 'pinch-zoom pan-x pan-y',
3454
+ 'pinch-zoom pan-y',
3455
+ 'pinch-zoom pan-y pan-left',
3456
+ 'pinch-zoom pan-y pan-right',
3457
+ 'pinch-zoom pan-y pan-x',
3458
+ ],
3459
+ },
3460
+ transform: { kind: 'transform' },
3461
+ transformBox: {
3462
+ kind: 'enum',
3463
+ values: ['border-box', 'content-box', 'fill-box', 'stroke-box', 'view-box'],
3464
+ },
3465
+ transformOrigin: { kind: 'compound', property: 'transformOrigin' },
3466
+ transformStyle: { kind: 'enum', values: ['flat', 'preserve-3d'] },
3467
+ transition: { kind: 'compound', property: 'transition' },
3468
+ transitionBehavior: {
3469
+ kind: 'enum',
3470
+ list: true,
3471
+ values: ['allow-discrete', 'normal'],
3472
+ },
3473
+ transitionDelay: { kind: 'time', list: true, negative: true },
3474
+ transitionDuration: { kind: 'time', list: true, negative: false },
3475
+ transitionProperty: {
3476
+ keywords: ['all', 'none'],
3477
+ kind: 'identifier',
3478
+ separator: 'comma',
3479
+ standalone: ['none'],
3480
+ },
3481
+ transitionTimingFunction: {
3482
+ easing: true,
3483
+ kind: 'enum',
3484
+ list: true,
3485
+ values: [
3486
+ 'ease',
3487
+ 'ease-in',
3488
+ 'ease-in-out',
3489
+ 'ease-out',
3490
+ 'linear',
3491
+ 'step-end',
3492
+ 'step-start',
3493
+ ],
3494
+ },
3495
+ translate: { kind: 'translate' },
3496
+ triggerScope: {
3497
+ dashed: true,
3498
+ keywords: ['all', 'none'],
3499
+ kind: 'identifier',
3500
+ separator: 'comma',
3501
+ standalone: ['all', 'none'],
3502
+ },
3503
+ unicodeBidi: {
3504
+ kind: 'enum',
3505
+ values: [
3506
+ 'bidi-override',
3507
+ 'embed',
3508
+ 'isolate',
3509
+ 'isolate-override',
3510
+ 'normal',
3511
+ 'plaintext',
3512
+ ],
3513
+ },
3514
+ userSelect: {
3515
+ kind: 'enum',
3516
+ values: ['all', 'auto', 'none', 'text'],
3517
+ },
3518
+ vectorEffect: {
3519
+ kind: 'enum',
3520
+ values: [
3521
+ 'fixed-position',
3522
+ 'non-rotation',
3523
+ 'non-scaling-size',
3524
+ 'non-scaling-stroke',
3525
+ 'none',
3526
+ ],
3527
+ },
3528
+ verticalAlign: {
3529
+ ...length,
3530
+ keywords: [
3531
+ 'baseline',
3532
+ 'bottom',
3533
+ 'middle',
3534
+ 'sub',
3535
+ 'super',
3536
+ 'text-bottom',
3537
+ 'text-top',
3538
+ 'top',
3539
+ ],
3540
+ negative: true,
3541
+ },
3542
+ viewTimeline: { kind: 'compound', property: 'viewTimeline' },
3543
+ viewTimelineAxis: {
3544
+ kind: 'enum',
3545
+ list: true,
3546
+ values: ['block', 'inline', 'x', 'y'],
3547
+ },
3548
+ viewTimelineInset: {
3549
+ kind: 'tuple',
3550
+ atoms: ['length', 'percentage'],
3551
+ keywords: ['auto'],
3552
+ list: true,
3553
+ min: 1,
3554
+ max: 2,
3555
+ negative: true,
3556
+ },
3557
+ viewTimelineName: {
3558
+ dashed: true,
3559
+ keywords: ['none'],
3560
+ kind: 'identifier',
3561
+ separator: 'comma',
3562
+ },
3563
+ viewTransitionClass: {
3564
+ keywords: ['none'],
3565
+ kind: 'identifier',
3566
+ separator: 'space',
3567
+ standalone: ['none'],
3568
+ },
3569
+ viewTransitionName: {
3570
+ keywords: ['match-element', 'none'],
3571
+ kind: 'identifier',
3572
+ excluded: ['auto'],
3573
+ },
3574
+ viewTransitionScope: { kind: 'enum', values: ['all', 'none'] },
3575
+ visibility: { kind: 'enum', values: ['collapse', 'hidden', 'visible'] },
3576
+ WebkitAppearance: {
3577
+ kind: 'enum',
3578
+ values: [
3579
+ '-apple-pay-button',
3580
+ 'button',
3581
+ 'button-bevel',
3582
+ 'caret',
3583
+ 'checkbox',
3584
+ 'default-button',
3585
+ 'inner-spin-button',
3586
+ 'listbox',
3587
+ 'listitem',
3588
+ 'media-controls-background',
3589
+ 'media-controls-fullscreen-background',
3590
+ 'media-current-time-display',
3591
+ 'media-enter-fullscreen-button',
3592
+ 'media-exit-fullscreen-button',
3593
+ 'media-fullscreen-button',
3594
+ 'media-mute-button',
3595
+ 'media-overlay-play-button',
3596
+ 'media-play-button',
3597
+ 'media-seek-back-button',
3598
+ 'media-seek-forward-button',
3599
+ 'media-slider',
3600
+ 'media-sliderthumb',
3601
+ 'media-time-remaining-display',
3602
+ 'media-toggle-closed-captions-button',
3603
+ 'media-volume-slider',
3604
+ 'media-volume-slider-container',
3605
+ 'media-volume-sliderthumb',
3606
+ 'menulist',
3607
+ 'menulist-button',
3608
+ 'menulist-text',
3609
+ 'menulist-textfield',
3610
+ 'meter',
3611
+ 'none',
3612
+ 'progress-bar',
3613
+ 'progress-bar-value',
3614
+ 'push-button',
3615
+ 'radio',
3616
+ 'searchfield',
3617
+ 'searchfield-cancel-button',
3618
+ 'searchfield-decoration',
3619
+ 'searchfield-results-button',
3620
+ 'searchfield-results-decoration',
3621
+ 'slider-horizontal',
3622
+ 'slider-vertical',
3623
+ 'sliderthumb-horizontal',
3624
+ 'sliderthumb-vertical',
3625
+ 'square-button',
3626
+ 'textarea',
3627
+ 'textfield',
3628
+ ],
3629
+ },
3630
+ WebkitBorderAfter: { kind: 'line' },
3631
+ WebkitBorderAfterColor: color,
3632
+ WebkitBorderAfterStyle: border,
3633
+ WebkitBorderAfterWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
3634
+ WebkitBorderBefore: { kind: 'line' },
3635
+ WebkitBorderBeforeColor: color,
3636
+ WebkitBorderBeforeStyle: border,
3637
+ WebkitBorderBeforeWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
3638
+ WebkitBorderEnd: { kind: 'line' },
3639
+ WebkitBorderEndColor: color,
3640
+ WebkitBorderEndStyle: border,
3641
+ WebkitBorderEndWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
3642
+ WebkitBorderStart: { kind: 'line' },
3643
+ WebkitBorderStartColor: color,
3644
+ WebkitBorderStartStyle: border,
3645
+ WebkitBorderStartWidth: { ...stroke, keywords: ['medium', 'thick', 'thin'] },
3646
+ WebkitBoxReflect: { kind: 'compound', property: 'WebkitBoxReflect' },
3647
+ WebkitLineClamp: { ...positiveInteger, keywords: ['none'] },
3648
+ WebkitMask: { kind: 'compound', property: 'WebkitMask' },
3649
+ WebkitMaskAttachment: {
3650
+ kind: 'enum',
3651
+ list: true,
3652
+ values: ['fixed', 'local', 'scroll'],
3653
+ },
3654
+ WebkitMaskClip: {
3655
+ kind: 'enum',
3656
+ list: true,
3657
+ values: [
3658
+ 'border',
3659
+ 'border-box',
3660
+ 'content',
3661
+ 'content-box',
3662
+ 'fill-box',
3663
+ 'no-clip',
3664
+ 'padding',
3665
+ 'padding-box',
3666
+ 'stroke-box',
3667
+ 'text',
3668
+ 'view-box',
3669
+ ],
3670
+ },
3671
+ WebkitMaskComposite: {
3672
+ kind: 'enum',
3673
+ list: true,
3674
+ values: [
3675
+ 'clear',
3676
+ 'copy',
3677
+ 'destination-atop',
3678
+ 'destination-in',
3679
+ 'destination-out',
3680
+ 'destination-over',
3681
+ 'source-atop',
3682
+ 'source-in',
3683
+ 'source-out',
3684
+ 'source-over',
3685
+ 'xor',
3686
+ ],
3687
+ },
3688
+ WebkitMaskImage: { kind: 'image', list: true },
3689
+ WebkitMaskOrigin: {
3690
+ kind: 'enum',
3691
+ list: true,
3692
+ values: [
3693
+ 'border',
3694
+ 'border-box',
3695
+ 'content',
3696
+ 'content-box',
3697
+ 'fill-box',
3698
+ 'padding',
3699
+ 'padding-box',
3700
+ 'stroke-box',
3701
+ 'view-box',
3702
+ ],
3703
+ },
3704
+ WebkitMaskPosition: { kind: 'compound', property: 'WebkitMaskPosition' },
3705
+ WebkitMaskPositionX: {
3706
+ ...length,
3707
+ negative: true,
3708
+ keywords: ['center', 'left', 'right'],
3709
+ list: true,
3710
+ },
3711
+ WebkitMaskPositionY: {
3712
+ ...length,
3713
+ negative: true,
3714
+ keywords: ['bottom', 'center', 'top'],
3715
+ list: true,
3716
+ },
3717
+ WebkitMaskRepeat: { kind: 'compound', property: 'WebkitMaskRepeat' },
3718
+ WebkitMaskRepeatX: {
3719
+ kind: 'enum',
3720
+ values: ['no-repeat', 'repeat', 'round', 'space'],
3721
+ },
3722
+ WebkitMaskRepeatY: {
3723
+ kind: 'enum',
3724
+ values: ['no-repeat', 'repeat', 'round', 'space'],
3725
+ },
3726
+ WebkitMaskSize: { kind: 'compound', property: 'WebkitMaskSize' },
3727
+ WebkitOverflowScrolling: { kind: 'enum', values: ['auto', 'touch'] },
3728
+ WebkitTapHighlightColor: color,
3729
+ WebkitTextFillColor: color,
3730
+ WebkitTextStroke: { kind: 'compound', property: 'WebkitTextStroke' },
3731
+ WebkitTextStrokeColor: color,
3732
+ WebkitTextStrokeWidth: stroke,
3733
+ WebkitTouchCallout: { kind: 'enum', values: ['default', 'none'] },
3734
+ WebkitUserModify: {
3735
+ kind: 'enum',
3736
+ values: ['read-only', 'read-write', 'read-write-plaintext-only'],
3737
+ },
3738
+ WebkitUserSelect: { kind: 'enum', values: ['all', 'auto', 'none', 'text'] },
3739
+ whiteSpace: {
3740
+ kind: 'enum',
3741
+ values: [
3742
+ 'break-spaces',
3743
+ 'break-spaces nowrap',
3744
+ 'break-spaces wrap',
3745
+ 'collapse',
3746
+ 'collapse nowrap',
3747
+ 'collapse wrap',
3748
+ 'normal',
3749
+ 'nowrap',
3750
+ 'nowrap break-spaces',
3751
+ 'nowrap collapse',
3752
+ 'nowrap preserve',
3753
+ 'nowrap preserve-breaks',
3754
+ 'nowrap preserve-spaces',
3755
+ 'pre',
3756
+ 'pre-line',
3757
+ 'pre-wrap',
3758
+ 'preserve',
3759
+ 'preserve nowrap',
3760
+ 'preserve wrap',
3761
+ 'preserve-breaks',
3762
+ 'preserve-breaks nowrap',
3763
+ 'preserve-breaks wrap',
3764
+ 'preserve-spaces',
3765
+ 'preserve-spaces nowrap',
3766
+ 'preserve-spaces wrap',
3767
+ 'wrap',
3768
+ 'wrap break-spaces',
3769
+ 'wrap collapse',
3770
+ 'wrap preserve',
3771
+ 'wrap preserve-breaks',
3772
+ 'wrap preserve-spaces',
3773
+ ],
3774
+ },
3775
+ whiteSpaceCollapse: {
3776
+ kind: 'enum',
3777
+ values: [
3778
+ 'break-spaces',
3779
+ 'collapse',
3780
+ 'preserve',
3781
+ 'preserve-breaks',
3782
+ 'preserve-spaces',
3783
+ ],
3784
+ },
3785
+ widows: positiveInteger,
3786
+ width: { ...size, functions: ['anchor-size', 'calc-size', 'fit-content'] },
3787
+ willChange: {
3788
+ keywords: ['auto', 'contents', 'scroll-position'],
3789
+ kind: 'identifier',
3790
+ separator: 'comma',
3791
+ standalone: ['auto'],
3792
+ excluded: ['all', 'none', 'will-change'],
3793
+ },
3794
+ wordBreak: {
3795
+ kind: 'enum',
3796
+ values: ['auto-phrase', 'break-all', 'break-word', 'keep-all', 'normal'],
3797
+ },
3798
+ wordSpacing: textSpacing,
3799
+ wordWrap: { kind: 'enum', values: ['break-word', 'normal'] },
3800
+ writingMode: {
3801
+ kind: 'enum',
3802
+ values: [
3803
+ 'horizontal-tb',
3804
+ 'sideways-lr',
3805
+ 'sideways-rl',
3806
+ 'vertical-lr',
3807
+ 'vertical-rl',
3808
+ ],
3809
+ },
3810
+ x: { ...length, negative: true },
3811
+ y: { ...length, negative: true },
3812
+ zIndex: {
3813
+ integer: true,
3814
+ keywords: ['auto'],
3815
+ kind: 'number',
3816
+ max: Number.MAX_SAFE_INTEGER,
3817
+ min: Number.MIN_SAFE_INTEGER,
3818
+ },
3819
+ zoom: { kind: 'compound', property: 'zoom', negative: false },
3820
+ } as const satisfies Record<string, Rule>