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
package/src/Theme.ts ADDED
@@ -0,0 +1,713 @@
1
+ /**
2
+ * Defines typed token contracts and compatible immutable theme overrides.
3
+ * @module
4
+ */
5
+ import { MissingTransformError, style } from './styleFunction.js'
6
+ import * as Authoring from './internal/Authoring.js'
7
+ import * as Identity from './internal/Identity.js'
8
+ import { variants } from './variants.js'
9
+ import type * as Binding from './internal/Binding.js'
10
+ import type * as Literal from './internal/Literal.js'
11
+ import * as Query from './internal/Query.js'
12
+ import * as Token from './internal/Token.js'
13
+ import type * as Value from './internal/Value.js'
14
+ import type * as Style from './Style.js'
15
+
16
+ /** Complete color-scheme pair or a shared color. */
17
+ export type Color =
18
+ | Literal.Color
19
+ | { readonly dark: Literal.Color; readonly light: Literal.Color }
20
+
21
+ /** Theme-bound authoring signature; execution requires source rewriting. */
22
+ export type StyleFactory<tokens extends Tokens> = {
23
+ (): style.ReturnType
24
+ <
25
+ const values extends Record<string, string | number>,
26
+ const styles extends Record<string, unknown>,
27
+ >(
28
+ styles: ((
29
+ values: values,
30
+ ) => styles &
31
+ NoInfer<Style.Accepted<styles, tokens> & Binding.Checked<styles>>) &
32
+ (values extends Binding.Inputs<values> ? unknown : never),
33
+ options?: style.DefinitionOptions,
34
+ ): style.Dynamic<values>
35
+ <const styles extends Record<string, unknown>>(
36
+ styles: styles & NoInfer<Style.Accepted<styles, tokens>>,
37
+ options?: style.DefinitionOptions,
38
+ ): style.ReturnType
39
+ <const styles extends Style.Properties<tokens>>(
40
+ styles: styles &
41
+ NoInfer<
42
+ (Style.Properties<tokens> extends styles
43
+ ? unknown
44
+ : Style.Accepted<styles, tokens>) &
45
+ (Extract<styles, (...args: never[]) => unknown> extends never
46
+ ? unknown
47
+ : never)
48
+ >,
49
+ options?: style.DefinitionOptions,
50
+ ): style.ReturnType
51
+ }
52
+
53
+ /**
54
+ * Defines scalar tokens without metadata, defaults, or environment access.
55
+ * Colors currently use the supported literal color grammar; spacing and radius
56
+ * values use nonnegative literal lengths or zero. Nested palettes are supported.
57
+ * @throws {InvalidError} If groups, paths, values, or data records are invalid.
58
+ */
59
+ export function define<const tokens extends Tokens>(
60
+ tokens: tokens & NoInfer<Validated<tokens>>,
61
+ options: style.DefinitionOptions = {},
62
+ ): Definition<tokens> {
63
+ return build(
64
+ tokens,
65
+ Object.freeze(
66
+ options.id === undefined
67
+ ? {}
68
+ : {
69
+ [Token.identity]: Identity.requireId(options.id, 'Theme.define'),
70
+ [Token.complete]: true as const,
71
+ },
72
+ ),
73
+ undefined,
74
+ undefined,
75
+ options.id === undefined
76
+ ? undefined
77
+ : Identity.requireId(options.id, 'Theme.define'),
78
+ ) as unknown as Definition<tokens>
79
+ }
80
+
81
+ /** A theme contract with immutable, property-aware portable token references. */
82
+ export type Definition<
83
+ tokens extends Tokens = Tokens,
84
+ boundStyle extends (...args: never[]) => unknown = StyleFactory<tokens>,
85
+ boundVariants extends (...args: never[]) => unknown = variants.Bound<tokens>,
86
+ > = {
87
+ /** Compiled scope class; reading untransformed authoring throws. */
88
+ readonly className: string
89
+ /** Token-aware callable authoring boundary, replaced by the source compiler. */
90
+ readonly style: boundStyle
91
+ /** Internal contract and resolved values, carried without a registry. */
92
+ readonly [Token.definition]: Token.Metadata
93
+ /** Inferred references for use in Style.define declarations. */
94
+ readonly tokens: References<tokens>
95
+ /** Token-aware single-element recipe authoring. */
96
+ readonly variants: boundVariants
97
+ /** Web variable references; source templates retain their identity and fallback. */
98
+ readonly vars: Token.Variables<References<tokens>>
99
+ }
100
+
101
+ /**
102
+ * Overrides existing leaves while retaining the base theme's token identities.
103
+ * Omitted leaves inherit resolved values. Color overrides replace complete pairs.
104
+ * @throws {InvalidError} If the base is invalid or overrides alter its contract.
105
+ */
106
+ export function extend<
107
+ const tokens extends Tokens,
108
+ const overrides extends Record<string, unknown>,
109
+ const boundStyle extends (...args: never[]) => unknown = StyleFactory<tokens>,
110
+ const boundVariants extends (...args: never[]) => unknown =
111
+ variants.Bound<tokens>,
112
+ >(
113
+ theme: Definition<tokens, boundStyle, boundVariants>,
114
+ overrides: overrides &
115
+ NoInfer<Exact<overrides, Overrides<tokens>>> &
116
+ NoInfer<Validated<overrides>>,
117
+ ): Definition<tokens, boundStyle, boundVariants> {
118
+ if (!theme || typeof theme !== 'object')
119
+ throw new InvalidError([], 'Expected a theme definition.')
120
+
121
+ const data = Object.getOwnPropertyDescriptor(theme, Token.definition)
122
+ ?.value as Token.Metadata | undefined
123
+ if (!data) throw new InvalidError([], 'Expected a theme definition.')
124
+
125
+ return build(
126
+ overrides,
127
+ data.contract,
128
+ data.values,
129
+ data.queries,
130
+ ) as unknown as Definition<tokens, boundStyle, boundVariants>
131
+ }
132
+
133
+ type Exact<input, shape> = {
134
+ [key in keyof input]: key extends keyof shape
135
+ ? NonNullable<shape[key]> extends string | number
136
+ ? Required<shape>[key]
137
+ : input[key] extends readonly unknown[] | ((...args: never[]) => unknown)
138
+ ? never
139
+ : input[key] extends object
140
+ ? shape[key] extends Color | undefined
141
+ ? Color
142
+ : Exact<input[key], NonNullable<shape[key]>>
143
+ : Required<shape>[key]
144
+ : never
145
+ }
146
+
147
+ /** Invalid token data with an unambiguous authored path. */
148
+ export class InvalidError extends Error {
149
+ /** Creates an immutable diagnostic path without reading token values. */
150
+ constructor(path: readonly string[], message: string) {
151
+ super(`${JSON.stringify(path)}: ${message}`)
152
+ this.path = Object.freeze([...path])
153
+ }
154
+ /** Stable namespaced error identifier. */
155
+ override name = 'Theme.InvalidError'
156
+ /** Group and nested keys identifying the failure. */
157
+ readonly path: readonly string[]
158
+ }
159
+
160
+ /** Existing paths with widened values and optional branches. */
161
+ export type Overrides<tokens> = {
162
+ readonly [group in keyof tokens]?: OverrideTree<tokens[group], group>
163
+ }
164
+
165
+ type OverrideTree<tree, group> = tree extends string | number
166
+ ? Scalar<group>
167
+ : tree extends { readonly dark: string; readonly light: string }
168
+ ? Color
169
+ : { readonly [key in keyof tree]?: OverrideTree<tree[key], group> }
170
+
171
+ /** Nested palette or scale data. */
172
+ export type Palette<leaf> = { readonly [key: string]: leaf | Palette<leaf> }
173
+
174
+ /** Portable reference restricted to its token group. */
175
+ export type Reference<group extends Token.Group = Token.Group> =
176
+ Token.Reference<group>
177
+
178
+ /** The inferred tree replaces scalar values and scheme pairs with references. */
179
+ export type References<tokens> = {
180
+ readonly [group in keyof tokens as group extends Token.Group
181
+ ? group
182
+ : never]: ReferenceTree<tokens[group], Extract<group, Token.Group>>
183
+ }
184
+
185
+ type ReferenceTree<tree, group extends Token.Group> = tree extends
186
+ | string
187
+ | number
188
+ | { readonly dark: string; readonly light: string }
189
+ ? Reference<group>
190
+ : { readonly [key in keyof tree]: ReferenceTree<tree[key], group> }
191
+
192
+ /** Supported scalar groups; composite presets and query metadata follow separately. */
193
+ type Scalar<group> = group extends
194
+ | 'spacing'
195
+ | 'borderRadius'
196
+ | 'margin'
197
+ | 'padding'
198
+ ? Literal.Length
199
+ : group extends
200
+ | 'fontFamily'
201
+ | 'fontSize'
202
+ | 'fontWeight'
203
+ | 'letterSpacing'
204
+ | 'lineHeight'
205
+ ? Exclude<
206
+ NonNullable<Literal.Properties[group]>,
207
+ 'initial' | 'inherit' | 'unset' | 'revert' | 'revert-layer'
208
+ >
209
+ : group extends 'breakpoints' | 'containers'
210
+ ? Query.Length
211
+ : Color
212
+
213
+ export type Tokens = {
214
+ /** Colors available to background declarations. */
215
+ readonly backgroundColor?: Palette<Color> | undefined
216
+ /** Colors available to border declarations. */
217
+ readonly borderColor?: Palette<Color> | undefined
218
+ /** Nonnegative corner radii. */
219
+ readonly borderRadius?: Palette<Literal.Length> | undefined
220
+ /** Compile-time viewport width thresholds. */
221
+ readonly breakpoints?: Readonly<Record<string, Query.Length>> | undefined
222
+ /** Shared colors available to every supported color property. */
223
+ readonly color?: Palette<Color> | undefined
224
+ /** Finite CSS container identities for named queries. */
225
+ readonly containerNames?: readonly string[] | undefined
226
+ /** Compile-time container width thresholds. */
227
+ readonly containers?: Readonly<Record<string, Query.Length>> | undefined
228
+ /** Font family token values; does not load font files. */
229
+ readonly fontFamily?:
230
+ | Palette<NonNullable<Literal.Properties['fontFamily']>>
231
+ | undefined
232
+ /** Font size token values. */
233
+ readonly fontSize?:
234
+ | Palette<NonNullable<Literal.Properties['fontSize']>>
235
+ | undefined
236
+ /** Font weight token values. */
237
+ readonly fontWeight?:
238
+ | Palette<NonNullable<Literal.Properties['fontWeight']>>
239
+ | undefined
240
+ /** Letter spacing token values. */
241
+ readonly letterSpacing?:
242
+ | Palette<NonNullable<Literal.Properties['letterSpacing']>>
243
+ | undefined
244
+ /** Line height token values. */
245
+ readonly lineHeight?:
246
+ | Palette<NonNullable<Literal.Properties['lineHeight']>>
247
+ | undefined
248
+ /** Signed spacing for margins, preferred over shared spacing tokens. */
249
+ readonly margin?: Palette<Literal.Length> | undefined
250
+ /** Nonnegative padding, preferred over shared spacing tokens. */
251
+ readonly padding?: Palette<Literal.Length> | undefined
252
+ /** Nonnegative spacing and sizing values. */
253
+ readonly spacing?: Palette<Literal.Length> | undefined
254
+ /** Colors available to text declarations. */
255
+ readonly textColor?: Palette<Color> | undefined
256
+ }
257
+
258
+ function build(
259
+ input: unknown,
260
+ contract: Token.Contract,
261
+ base?: Readonly<Record<string, Token.Value>>,
262
+ baseQueries?: Query.Metadata,
263
+ scope?: string,
264
+ ) {
265
+ const values: Record<string, Token.Value> = Object.assign(
266
+ Object.create(null),
267
+ base,
268
+ )
269
+
270
+ const queries = {
271
+ breakpoints: Object.assign(
272
+ Object.create(null),
273
+ baseQueries?.breakpoints,
274
+ ) as Record<string, string>,
275
+ containerNames: baseQueries?.containerNames ?? [],
276
+ containers: Object.assign(
277
+ Object.create(null),
278
+ baseQueries?.containers,
279
+ ) as Record<string, string>,
280
+ }
281
+
282
+ let hasQueries = !!baseQueries
283
+ const active = new Set<object>()
284
+
285
+ function visit(value: unknown, group: Token.Group, path: readonly string[]) {
286
+ const key = path.join('.')
287
+ const scalar = typeof value === 'string' || typeof value === 'number'
288
+ const entries = scalar ? undefined : record(value, path)
289
+ const pair =
290
+ ['color', 'backgroundColor', 'borderColor', 'textColor'].includes(
291
+ group,
292
+ ) && entries?.some(([name]) => name === 'light' || name === 'dark')
293
+
294
+ if (scalar || pair) {
295
+ if (base && !Object.hasOwn(base, key))
296
+ throw new InvalidError(
297
+ path,
298
+ 'Extensions cannot add or replace token paths.',
299
+ )
300
+
301
+ if (pair) {
302
+ if (
303
+ !['color', 'backgroundColor', 'borderColor', 'textColor'].includes(
304
+ group,
305
+ ) ||
306
+ entries!.length !== 2 ||
307
+ !entries!.some(([name]) => name === 'light') ||
308
+ !entries!.some(([name]) => name === 'dark')
309
+ )
310
+ throw new InvalidError(
311
+ path,
312
+ 'Expected a complete light/dark color pair.',
313
+ )
314
+
315
+ const schemes = Object.fromEntries(entries!)
316
+
317
+ values[key] = Object.freeze({
318
+ dark: schemes.dark as string,
319
+ light: schemes.light as string,
320
+ })
321
+ } else {
322
+ values[key] = value as number | string
323
+ }
324
+
325
+ return
326
+ }
327
+
328
+ if (!entries!.length && !base)
329
+ throw new InvalidError(path, 'Token palettes cannot be empty.')
330
+
331
+ if (base && Object.hasOwn(base, key))
332
+ throw new InvalidError(path, 'A token leaf cannot become a palette.')
333
+
334
+ if (active.has(value as object))
335
+ throw new InvalidError(path, 'Cyclic palettes are not supported.')
336
+
337
+ active.add(value as object)
338
+
339
+ for (const [name, child] of entries!) {
340
+ const next = [...path, name]
341
+ if (
342
+ base &&
343
+ !Object.keys(base).some(
344
+ (key) =>
345
+ key === next.join('.') || key.startsWith(`${next.join('.')}.`),
346
+ )
347
+ )
348
+ throw new InvalidError(next, 'Extensions cannot add token paths.')
349
+
350
+ visit(child, group, next)
351
+ }
352
+
353
+ active.delete(value as object)
354
+ }
355
+
356
+ for (const [group, palette] of record(input, [])) {
357
+ if (palette === undefined) continue
358
+
359
+ if (group === 'containerNames') {
360
+ hasQueries = true
361
+
362
+ if (
363
+ !Array.isArray(palette) ||
364
+ Array.from({ length: palette.length }, (_, index) =>
365
+ Object.getOwnPropertyDescriptor(palette, index),
366
+ ).some((field) => !field || !('value' in field)) ||
367
+ palette.some(
368
+ (name) =>
369
+ typeof name !== 'string' ||
370
+ !/^(?:--|-?(?:[_a-zA-Z\u0080-\uffff]|\\(?:[0-9a-fA-F]{1,6}[ \t\n\r\f]?|[^\n\r\f0-9a-fA-F])))(?:[-_a-zA-Z0-9\u0080-\uffff]|\\(?:[0-9a-fA-F]{1,6}[ \t\n\r\f]?|[^\n\r\f0-9a-fA-F]))*$/.test(
371
+ name,
372
+ ) ||
373
+ [
374
+ 'none',
375
+ 'and',
376
+ 'not',
377
+ 'or',
378
+ 'default',
379
+ 'inherit',
380
+ 'initial',
381
+ 'unset',
382
+ 'revert',
383
+ 'revert-layer',
384
+ ].includes(name.toLowerCase()),
385
+ ) ||
386
+ new Set(palette).size !== palette.length
387
+ )
388
+ throw new InvalidError(
389
+ [group],
390
+ 'Expected unique container identifiers.',
391
+ )
392
+
393
+ if (
394
+ base &&
395
+ JSON.stringify(palette) !== JSON.stringify(baseQueries?.containerNames)
396
+ )
397
+ throw new InvalidError(
398
+ [group],
399
+ 'Extensions cannot change container identities.',
400
+ )
401
+
402
+ queries.containerNames = Object.freeze([...palette])
403
+ continue
404
+ }
405
+
406
+ if (group === 'breakpoints' || group === 'containers') {
407
+ hasQueries = true
408
+
409
+ for (const [name, value] of record(palette, [group])) {
410
+ if (
411
+ !/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/.test(name) ||
412
+ (group === 'breakpoints' &&
413
+ ['all', 'screen', 'print'].includes(name)) ||
414
+ !Query.threshold(value)
415
+ )
416
+ throw new InvalidError(
417
+ [group, name],
418
+ 'Expected a named nonnegative length threshold.',
419
+ )
420
+
421
+ if (base && !Object.hasOwn(queries[group], name))
422
+ throw new InvalidError(
423
+ [group, name],
424
+ 'Extensions cannot add query thresholds.',
425
+ )
426
+
427
+ queries[group][name] = value
428
+ }
429
+
430
+ continue
431
+ }
432
+
433
+ if (
434
+ ![
435
+ 'backgroundColor',
436
+ 'borderColor',
437
+ 'borderRadius',
438
+ 'color',
439
+ 'margin',
440
+ 'padding',
441
+ 'spacing',
442
+ 'fontFamily',
443
+ 'fontSize',
444
+ 'fontWeight',
445
+ 'letterSpacing',
446
+ 'lineHeight',
447
+ 'textColor',
448
+ ].includes(group)
449
+ )
450
+ throw new InvalidError([group], 'Unsupported token group.')
451
+
452
+ if (palette === undefined) continue
453
+
454
+ if (base && !Object.keys(base).some((key) => key.startsWith(`${group}.`)))
455
+ throw new InvalidError([group], 'Extensions cannot add token groups.')
456
+
457
+ // Groups are always records; scalar leaves begin below them.
458
+ const entries = record(palette, [group])
459
+ if (!entries.length && !base)
460
+ throw new InvalidError([group], 'Token palettes cannot be empty.')
461
+
462
+ for (const [name, value] of entries)
463
+ visit(value, group as Token.Group, [group, name])
464
+ }
465
+
466
+ type Tree = { [key: string]: Tree | Token.Reference }
467
+
468
+ const tokens: Tree = Object.create(null)
469
+
470
+ for (const [path, value] of Object.entries(values)) {
471
+ const parts = path.split('.')
472
+ let tree = tokens
473
+
474
+ for (const part of parts.slice(0, -1))
475
+ tree = (tree[part] ??= Object.create(null)) as Tree
476
+
477
+ tree[parts.at(-1)!] = Token.create({
478
+ contract,
479
+ group: parts[0] as Token.Group,
480
+ path,
481
+ value,
482
+ })
483
+ }
484
+
485
+ function freeze(tree: Tree) {
486
+ for (const value of Object.values(tree)) if (!Token.is(value)) freeze(value)
487
+
488
+ Object.freeze(tree)
489
+ }
490
+
491
+ freeze(tokens)
492
+
493
+ const definition = Object.freeze(
494
+ Object.defineProperty(
495
+ {
496
+ get className(): string {
497
+ if (scope) return `z_theme-${scope}`
498
+ const id = contract[Token.identity]
499
+ if (!id?.startsWith('id-')) throw new MissingTransformError()
500
+ return `z_theme-${id}-${Identity.hash(JSON.stringify(values))}`
501
+ },
502
+ style: (styles?: unknown, options: style.DefinitionOptions = {}) => {
503
+ if (!contract[Token.identity])
504
+ Identity.requireId(undefined, 'Theme.define')
505
+ return Authoring.create(styles, {
506
+ ...options,
507
+ theme: definition as unknown as Definition,
508
+ })
509
+ },
510
+ tokens,
511
+ variants: (
512
+ input: Record<string, unknown>,
513
+ options: style.DefinitionOptions = {},
514
+ ) => Authoring.variants(input, options),
515
+ vars: Token.variables(tokens),
516
+ },
517
+ Token.definition,
518
+ {
519
+ value: Object.freeze({
520
+ contract,
521
+ values: Object.freeze(values),
522
+ ...(hasQueries
523
+ ? {
524
+ queries: Object.freeze({
525
+ breakpoints: Object.freeze(queries.breakpoints),
526
+ containerNames: queries.containerNames,
527
+ containers: Object.freeze(queries.containers),
528
+ }),
529
+ }
530
+ : {}),
531
+ }),
532
+ },
533
+ ),
534
+ )
535
+ return definition
536
+ }
537
+
538
+ function record(
539
+ value: unknown,
540
+ path: readonly string[],
541
+ ): readonly (readonly [string, unknown])[] {
542
+ if (!value || typeof value !== 'object')
543
+ throw new InvalidError(path, 'Expected a plain data record.')
544
+
545
+ const prototype: object | null = Object.getPrototypeOf(value)
546
+ const constructor: unknown =
547
+ prototype &&
548
+ Object.getOwnPropertyDescriptor(prototype, 'constructor')?.value
549
+ if (
550
+ prototype !== null &&
551
+ (Object.getPrototypeOf(prototype) !== null ||
552
+ typeof constructor !== 'function' ||
553
+ Function.prototype.toString.call(constructor) !==
554
+ Function.prototype.toString.call(Object))
555
+ )
556
+ throw new InvalidError(path, 'Expected a plain data record.')
557
+
558
+ const entries: [string, unknown][] = []
559
+
560
+ for (const key of Reflect.ownKeys(value)) {
561
+ const descriptor = Object.getOwnPropertyDescriptor(value, key)!
562
+ if (typeof key === 'string' && key.includes('!'))
563
+ throw new InvalidError(
564
+ [...path, key],
565
+ 'Token keys cannot contain !; it is reserved for declaration importance.',
566
+ )
567
+
568
+ if (
569
+ typeof key !== 'string' ||
570
+ !key ||
571
+ key.includes('.') ||
572
+ !descriptor.enumerable ||
573
+ !('value' in descriptor)
574
+ )
575
+ throw new InvalidError(
576
+ path,
577
+ 'Expected nonempty keys without dots and enumerable data properties.',
578
+ )
579
+
580
+ entries.push([key, descriptor.value])
581
+ }
582
+
583
+ return entries
584
+ }
585
+
586
+ type Validated<tokens> = Tokens extends tokens
587
+ ? tokens
588
+ : Overrides<Tokens> extends tokens
589
+ ? tokens
590
+ : {
591
+ [group in keyof tokens]: group extends keyof Tokens
592
+ ? group extends 'containerNames'
593
+ ? ContainerNames<tokens[group]>
594
+ : ValidPalette<tokens[group], group>
595
+ : never
596
+ }
597
+
598
+ type ContainerNames<names> = names extends readonly string[]
599
+ ? UniqueNames<names> & {
600
+ [index in keyof names]: ContainerName<names[index]>
601
+ }
602
+ : names
603
+
604
+ type UniqueNames<
605
+ names extends readonly string[],
606
+ seen extends string = never,
607
+ > = names extends readonly [
608
+ infer name extends string,
609
+ ...infer rest extends readonly string[],
610
+ ]
611
+ ? name extends seen
612
+ ? never
613
+ : UniqueNames<rest, seen | name>
614
+ : unknown
615
+
616
+ type ContainerName<name> = name extends string
617
+ ? Lowercase<name> extends
618
+ | 'none'
619
+ | 'and'
620
+ | 'not'
621
+ | 'or'
622
+ | 'default'
623
+ | 'inherit'
624
+ | 'initial'
625
+ | 'unset'
626
+ | 'revert'
627
+ | 'revert-layer'
628
+ ? never
629
+ : name
630
+ : name
631
+
632
+ type ValidPalette<palette, group> = palette extends undefined
633
+ ? undefined
634
+ : {
635
+ [key in keyof palette]: key extends `${string}!${string}`
636
+ ? never
637
+ : ValidTree<palette[key], group>
638
+ }
639
+
640
+ type WeightDigits<
641
+ text extends string,
642
+ digits extends unknown[] = [],
643
+ > = text extends ''
644
+ ? digits extends []
645
+ ? false
646
+ : true
647
+ : digits['length'] extends 3
648
+ ? false
649
+ : text extends `${infer first}${infer rest}`
650
+ ? first extends '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
651
+ ? WeightDigits<rest, [...digits, unknown]>
652
+ : false
653
+ : false
654
+
655
+ type Weight<value> = value extends number
656
+ ? number extends value
657
+ ? value
658
+ : `${value}` extends '1000'
659
+ ? value
660
+ : `${value}` extends `${infer whole}.${string}`
661
+ ? whole extends '0'
662
+ ? never
663
+ : WeightDigits<whole> extends true
664
+ ? value
665
+ : never
666
+ : `${value}` extends '0'
667
+ ? never
668
+ : WeightDigits<`${value}`> extends true
669
+ ? value
670
+ : never
671
+ : value
672
+
673
+ type ValidTree<tree, group> = tree extends string | number
674
+ ? tree extends Scalar<group>
675
+ ? group extends 'breakpoints' | 'containers'
676
+ ? tree extends `-${string}`
677
+ ? never
678
+ : Literal.Checked<tree>
679
+ : group extends keyof Literal.Properties
680
+ ? Literal.Checked<tree> &
681
+ Value.Checked<Record<group, tree>>[group] &
682
+ (group extends 'fontWeight' ? Weight<tree> : unknown) &
683
+ (tree extends string
684
+ ? Lowercase<tree> extends
685
+ | 'inherit'
686
+ | 'initial'
687
+ | 'unset'
688
+ | 'revert'
689
+ | 'revert-layer'
690
+ ? never
691
+ : unknown
692
+ : unknown)
693
+ : Literal.Checked<tree>
694
+ : never
695
+ : Extract<
696
+ keyof tree,
697
+ group extends 'color' | 'backgroundColor' | 'borderColor' | 'textColor'
698
+ ? 'dark' | 'light'
699
+ : never
700
+ > extends never
701
+ ? {
702
+ [key in keyof tree]: key extends `${string}!${string}`
703
+ ? never
704
+ : ValidTree<tree[key], group>
705
+ }
706
+ : group extends 'color' | 'backgroundColor' | 'borderColor' | 'textColor'
707
+ ? {
708
+ readonly dark: Literal.Color &
709
+ Literal.Checked<tree extends { dark: infer value } ? value : never>
710
+ readonly light: Literal.Color &
711
+ Literal.Checked<tree extends { light: infer value } ? value : never>
712
+ } & Record<Exclude<keyof tree, 'dark' | 'light'>, never>
713
+ : never