@exponential_app/eui 0.2.1 → 0.4.0

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 (452) hide show
  1. package/catalog/a11y.json +25 -1
  2. package/catalog/core.catalog.json +426 -6
  3. package/catalog/core.schema.json +634 -4
  4. package/catalog/host.json +10 -0
  5. package/catalog/layout.json +3 -2
  6. package/catalog/limits.json +10 -1
  7. package/catalog/macros.json +542 -1
  8. package/catalog/recipes.json +4 -2
  9. package/catalog/strings.json +14 -2
  10. package/catalog/style.json +21 -0
  11. package/catalog/theme.schema.json +3950 -1337
  12. package/conformance/manifest.json +5 -5
  13. package/conformance/motion/build-corpus.ts +232 -0
  14. package/conformance/motion/corpus/SOURCES.md +117 -0
  15. package/conformance/motion/corpus/images/footage_0.json +1 -0
  16. package/conformance/motion/corpus/images/img_0.jpg +0 -0
  17. package/conformance/motion/corpus/images/img_1.jpg +0 -0
  18. package/conformance/motion/corpus/images/triangle.png +0 -0
  19. package/conformance/motion/corpus/skottie-3d-parenting-nocamera.json +367 -0
  20. package/conformance/motion/corpus/skottie-auto-orient-2.json +292 -0
  21. package/conformance/motion/corpus/skottie-auto-orient.json +717 -0
  22. package/conformance/motion/corpus/skottie-bezier-extranormal.json +199 -0
  23. package/conformance/motion/corpus/skottie-blendmode-hardmix.json +558 -0
  24. package/conformance/motion/corpus/skottie-chained-mattes.json +259 -0
  25. package/conformance/motion/corpus/skottie-dropshadow-ramp.json +852 -0
  26. package/conformance/motion/corpus/skottie-dropshadow-style.json +278 -0
  27. package/conformance/motion/corpus/skottie-effects-transform.json +385 -0
  28. package/conformance/motion/corpus/skottie-fill-effect.json +358 -0
  29. package/conformance/motion/corpus/skottie-fill-rule.json +457 -0
  30. package/conformance/motion/corpus/skottie-gaussian-blur.json +670 -0
  31. package/conformance/motion/corpus/skottie-gradient-opacity.json +451 -0
  32. package/conformance/motion/corpus/skottie-gradient-radial-highlight.json +581 -0
  33. package/conformance/motion/corpus/skottie-hidden-shapes-layers.json +381 -0
  34. package/conformance/motion/corpus/skottie-huesaturation-effect.json +1117 -0
  35. package/conformance/motion/corpus/skottie-invert-effect.json +665 -0
  36. package/conformance/motion/corpus/skottie-luma-matte.json +239 -0
  37. package/conformance/motion/corpus/skottie-mask-feather.json +892 -0
  38. package/conformance/motion/corpus/skottie-masking-opaque.json +2376 -0
  39. package/conformance/motion/corpus/skottie-masking-translucent.json +2376 -0
  40. package/conformance/motion/corpus/skottie-matte-blendmode.json +196 -0
  41. package/conformance/motion/corpus/skottie-matte-nonsequential.json +722 -0
  42. package/conformance/motion/corpus/skottie-matte-visible.json +666 -0
  43. package/conformance/motion/corpus/skottie-mergepaths-effect.json +722 -0
  44. package/conformance/motion/corpus/skottie-motion-blur-mask.json +120 -0
  45. package/conformance/motion/corpus/skottie-nested-animation.json +253 -0
  46. package/conformance/motion/corpus/skottie-offsetpaths-effect.json +525 -0
  47. package/conformance/motion/corpus/skottie-phonehub-connecting.json +947 -0
  48. package/conformance/motion/corpus/skottie-puckerbloat-effect.json +339 -0
  49. package/conformance/motion/corpus/skottie-repeater.json +234 -0
  50. package/conformance/motion/corpus/skottie-sample-1.json +168 -0
  51. package/conformance/motion/corpus/skottie-sample-search.json +329 -0
  52. package/conformance/motion/corpus/skottie-spatial-supernormal.json +898 -0
  53. package/conformance/motion/corpus/skottie-text-animator-1.json +1286 -0
  54. package/conformance/motion/corpus/skottie-text-fill-over-stroke.json +1014 -0
  55. package/conformance/motion/corpus/skottie-text-tracking.json +950 -0
  56. package/conformance/motion/corpus/skottie-text-valign.json +484 -0
  57. package/conformance/motion/corpus/skottie-time-reverse.json +297 -0
  58. package/conformance/motion/corpus/skottie-transform-skew.json +290 -0
  59. package/conformance/motion/corpus/skottie-trimpath-fill.json +933 -0
  60. package/conformance/motion/corpus/skottie-trimpath-modes.json +266 -0
  61. package/conformance/motion/corpus/skottie-tritone-effect.json +379 -0
  62. package/conformance/motion/corpus/spec-blend-mode.json +531 -0
  63. package/conformance/motion/corpus/spec-ellipse.json +142 -0
  64. package/conformance/motion/corpus/spec-fill.json +193 -0
  65. package/conformance/motion/corpus/spec-gradient-stroke.json +1263 -0
  66. package/conformance/motion/corpus/spec-gradient.json +1255 -0
  67. package/conformance/motion/corpus/spec-mask.json +773 -0
  68. package/conformance/motion/corpus/spec-masks.json +676 -0
  69. package/conformance/motion/corpus/spec-matte.json +390 -0
  70. package/conformance/motion/corpus/spec-metadata.json +1 -0
  71. package/conformance/motion/corpus/spec-path.json +177 -0
  72. package/conformance/motion/corpus/spec-pucker-bloat.json +179 -0
  73. package/conformance/motion/corpus/spec-rectangle.json +145 -0
  74. package/conformance/motion/corpus/spec-rounded-corners.json +187 -0
  75. package/conformance/motion/corpus/spec-slots.json +325 -0
  76. package/conformance/motion/corpus/spec-star.json +159 -0
  77. package/conformance/motion/corpus/spec-stroke.json +156 -0
  78. package/conformance/motion/corpus/spec-test-ellipse-xy-pos.json +141 -0
  79. package/conformance/motion/corpus/spec-test-gradient-fill.json +1 -0
  80. package/conformance/motion/corpus/spec-test-gradient-stroke.json +229 -0
  81. package/conformance/motion/corpus/spec-test-unknown-shape.json +63 -0
  82. package/conformance/motion/corpus/spec-time-remap.json +1090 -0
  83. package/conformance/motion/corpus/spec-time-stretch.json +594 -0
  84. package/conformance/motion/corpus/spec-transform.json +273 -0
  85. package/conformance/motion/corpus/spec-trim-path.json +209 -0
  86. package/conformance/motion/corpus/web-adrock.json +1 -0
  87. package/conformance/motion/corpus/web-bacon.json +1 -0
  88. package/conformance/motion/corpus/web-banner.json +1 -0
  89. package/conformance/motion/corpus/web-bodymovin.json +1 -0
  90. package/conformance/motion/corpus/web-dalek.json +1 -0
  91. package/conformance/motion/corpus/web-footage-data.json +1 -0
  92. package/conformance/motion/corpus/web-lights.json +1 -0
  93. package/conformance/motion/corpus/web-ripple.json +1 -0
  94. package/conformance/motion/corpus/web-starfish.json +1 -0
  95. package/conformance/motion/known-gaps.json +35 -0
  96. package/conformance/motion/parity/group-transforms-parenting@0.png +0 -0
  97. package/conformance/motion/parity/group-transforms-parenting@10.png +0 -0
  98. package/conformance/motion/parity/hidden-unknown-inactive@0.png +0 -0
  99. package/conformance/motion/parity/keyframes-transform@0.png +0 -0
  100. package/conformance/motion/parity/keyframes-transform@10.png +0 -0
  101. package/conformance/motion/parity/keyframes-transform@15.png +0 -0
  102. package/conformance/motion/parity/keyframes-transform@5.png +0 -0
  103. package/conformance/motion/parity/layer-opacity-blend@0.png +0 -0
  104. package/conformance/motion/parity/linear-gradient@0.png +0 -0
  105. package/conformance/motion/parity/masks-modes@0.png +0 -0
  106. package/conformance/motion/parity/matte-alpha@0.png +0 -0
  107. package/conformance/motion/parity/matte-luma@0.png +0 -0
  108. package/conformance/motion/parity/matte-parent-tp@0.png +0 -0
  109. package/conformance/motion/parity/path-evenodd@0.png +0 -0
  110. package/conformance/motion/parity/precomp-clip-offset@0.png +0 -0
  111. package/conformance/motion/parity/precomp-clip-offset@15.png +0 -0
  112. package/conformance/motion/parity/precomp-clip-offset@5.png +0 -0
  113. package/conformance/motion/parity/radial-gradient-highlight@0.png +0 -0
  114. package/conformance/motion/parity/rect-solid-fill@0.png +0 -0
  115. package/conformance/motion/parity/repeater@0.png +0 -0
  116. package/conformance/motion/parity/rounded-rect-ellipse@0.png +0 -0
  117. package/conformance/motion/parity/solid-and-image@0.png +0 -0
  118. package/conformance/motion/parity/split-position-skew@0.png +0 -0
  119. package/conformance/motion/parity/split-position-skew@10.png +0 -0
  120. package/conformance/motion/parity/star-polygon@0.png +0 -0
  121. package/conformance/motion/parity/stroke-caps-joins@0.png +0 -0
  122. package/conformance/motion/parity/stroke-dashes@0.png +0 -0
  123. package/conformance/motion/parity/stroke-dashes@10.png +0 -0
  124. package/conformance/motion/parity/time-remap@0.png +0 -0
  125. package/conformance/motion/parity/time-remap@10.png +0 -0
  126. package/conformance/motion/parity/time-remap@19.png +0 -0
  127. package/conformance/motion/parity/time-stretch@0.png +0 -0
  128. package/conformance/motion/parity/time-stretch@10.png +0 -0
  129. package/conformance/motion/parity/trim-individually@0.png +0 -0
  130. package/conformance/motion/parity/trim-path@0.png +0 -0
  131. package/conformance/motion/parity/trim-path@10.png +0 -0
  132. package/conformance/motion/refs/index.json +688 -0
  133. package/conformance/motion/refs/skottie-3d-parenting-nocamera@0.png +0 -0
  134. package/conformance/motion/refs/skottie-3d-parenting-nocamera@150.png +0 -0
  135. package/conformance/motion/refs/skottie-3d-parenting-nocamera@270.png +0 -0
  136. package/conformance/motion/refs/skottie-auto-orient-2@0.png +0 -0
  137. package/conformance/motion/refs/skottie-auto-orient-2@210.png +0 -0
  138. package/conformance/motion/refs/skottie-auto-orient-2@378.png +0 -0
  139. package/conformance/motion/refs/skottie-auto-orient@0.png +0 -0
  140. package/conformance/motion/refs/skottie-auto-orient@300.png +0 -0
  141. package/conformance/motion/refs/skottie-auto-orient@540.png +0 -0
  142. package/conformance/motion/refs/skottie-bezier-extranormal@0.png +0 -0
  143. package/conformance/motion/refs/skottie-bezier-extranormal@150.png +0 -0
  144. package/conformance/motion/refs/skottie-bezier-extranormal@270.png +0 -0
  145. package/conformance/motion/refs/skottie-blendmode-hardmix@0.png +0 -0
  146. package/conformance/motion/refs/skottie-blendmode-hardmix@150.png +0 -0
  147. package/conformance/motion/refs/skottie-blendmode-hardmix@270.png +0 -0
  148. package/conformance/motion/refs/skottie-chained-mattes@0.png +0 -0
  149. package/conformance/motion/refs/skottie-chained-mattes@300.png +0 -0
  150. package/conformance/motion/refs/skottie-chained-mattes@540.png +0 -0
  151. package/conformance/motion/refs/skottie-dropshadow-ramp@0.png +0 -0
  152. package/conformance/motion/refs/skottie-dropshadow-ramp@135.png +0 -0
  153. package/conformance/motion/refs/skottie-dropshadow-ramp@75.png +0 -0
  154. package/conformance/motion/refs/skottie-dropshadow-style@0.png +0 -0
  155. package/conformance/motion/refs/skottie-dropshadow-style@300.png +0 -0
  156. package/conformance/motion/refs/skottie-dropshadow-style@540.png +0 -0
  157. package/conformance/motion/refs/skottie-effects-transform@0.png +0 -0
  158. package/conformance/motion/refs/skottie-effects-transform@450.png +0 -0
  159. package/conformance/motion/refs/skottie-effects-transform@810.png +0 -0
  160. package/conformance/motion/refs/skottie-fill-effect@0.png +0 -0
  161. package/conformance/motion/refs/skottie-fill-effect@300.png +0 -0
  162. package/conformance/motion/refs/skottie-fill-effect@540.png +0 -0
  163. package/conformance/motion/refs/skottie-fill-rule@0.png +0 -0
  164. package/conformance/motion/refs/skottie-fill-rule@150.png +0 -0
  165. package/conformance/motion/refs/skottie-fill-rule@270.png +0 -0
  166. package/conformance/motion/refs/skottie-gaussian-blur@0.png +0 -0
  167. package/conformance/motion/refs/skottie-gaussian-blur@150.png +0 -0
  168. package/conformance/motion/refs/skottie-gaussian-blur@270.png +0 -0
  169. package/conformance/motion/refs/skottie-gradient-opacity@0.png +0 -0
  170. package/conformance/motion/refs/skottie-gradient-opacity@150.png +0 -0
  171. package/conformance/motion/refs/skottie-gradient-opacity@270.png +0 -0
  172. package/conformance/motion/refs/skottie-gradient-radial-highlight@0.png +0 -0
  173. package/conformance/motion/refs/skottie-gradient-radial-highlight@135.png +0 -0
  174. package/conformance/motion/refs/skottie-gradient-radial-highlight@75.png +0 -0
  175. package/conformance/motion/refs/skottie-hidden-shapes-layers@0.png +0 -0
  176. package/conformance/motion/refs/skottie-hidden-shapes-layers@150.png +0 -0
  177. package/conformance/motion/refs/skottie-hidden-shapes-layers@270.png +0 -0
  178. package/conformance/motion/refs/skottie-huesaturation-effect@0.png +0 -0
  179. package/conformance/motion/refs/skottie-huesaturation-effect@30.png +0 -0
  180. package/conformance/motion/refs/skottie-huesaturation-effect@54.png +0 -0
  181. package/conformance/motion/refs/skottie-invert-effect@0.png +0 -0
  182. package/conformance/motion/refs/skottie-invert-effect@300.png +0 -0
  183. package/conformance/motion/refs/skottie-invert-effect@540.png +0 -0
  184. package/conformance/motion/refs/skottie-luma-matte@0.png +0 -0
  185. package/conformance/motion/refs/skottie-luma-matte@150.png +0 -0
  186. package/conformance/motion/refs/skottie-luma-matte@270.png +0 -0
  187. package/conformance/motion/refs/skottie-mask-feather@0.png +0 -0
  188. package/conformance/motion/refs/skottie-mask-feather@150.png +0 -0
  189. package/conformance/motion/refs/skottie-mask-feather@270.png +0 -0
  190. package/conformance/motion/refs/skottie-masking-opaque@0.png +0 -0
  191. package/conformance/motion/refs/skottie-masking-opaque@135.png +0 -0
  192. package/conformance/motion/refs/skottie-masking-opaque@75.png +0 -0
  193. package/conformance/motion/refs/skottie-masking-translucent@0.png +0 -0
  194. package/conformance/motion/refs/skottie-masking-translucent@135.png +0 -0
  195. package/conformance/motion/refs/skottie-masking-translucent@75.png +0 -0
  196. package/conformance/motion/refs/skottie-matte-blendmode@0.png +0 -0
  197. package/conformance/motion/refs/skottie-matte-blendmode@150.png +0 -0
  198. package/conformance/motion/refs/skottie-matte-blendmode@270.png +0 -0
  199. package/conformance/motion/refs/skottie-matte-nonsequential@0.png +0 -0
  200. package/conformance/motion/refs/skottie-matte-nonsequential@150.png +0 -0
  201. package/conformance/motion/refs/skottie-matte-nonsequential@270.png +0 -0
  202. package/conformance/motion/refs/skottie-matte-visible@0.png +0 -0
  203. package/conformance/motion/refs/skottie-matte-visible@150.png +0 -0
  204. package/conformance/motion/refs/skottie-matte-visible@270.png +0 -0
  205. package/conformance/motion/refs/skottie-mergepaths-effect@0.png +0 -0
  206. package/conformance/motion/refs/skottie-mergepaths-effect@210.png +0 -0
  207. package/conformance/motion/refs/skottie-mergepaths-effect@378.png +0 -0
  208. package/conformance/motion/refs/skottie-motion-blur-mask@0.png +0 -0
  209. package/conformance/motion/refs/skottie-motion-blur-mask@150.png +0 -0
  210. package/conformance/motion/refs/skottie-motion-blur-mask@270.png +0 -0
  211. package/conformance/motion/refs/skottie-nested-animation@0.png +0 -0
  212. package/conformance/motion/refs/skottie-nested-animation@300.png +0 -0
  213. package/conformance/motion/refs/skottie-nested-animation@540.png +0 -0
  214. package/conformance/motion/refs/skottie-offsetpaths-effect@0.png +0 -0
  215. package/conformance/motion/refs/skottie-offsetpaths-effect@150.png +0 -0
  216. package/conformance/motion/refs/skottie-offsetpaths-effect@270.png +0 -0
  217. package/conformance/motion/refs/skottie-phonehub-connecting@0.png +0 -0
  218. package/conformance/motion/refs/skottie-puckerbloat-effect@0.png +0 -0
  219. package/conformance/motion/refs/skottie-puckerbloat-effect@210.png +0 -0
  220. package/conformance/motion/refs/skottie-puckerbloat-effect@378.png +0 -0
  221. package/conformance/motion/refs/skottie-repeater@0.png +0 -0
  222. package/conformance/motion/refs/skottie-repeater@300.png +0 -0
  223. package/conformance/motion/refs/skottie-repeater@540.png +0 -0
  224. package/conformance/motion/refs/skottie-sample-1@0.png +0 -0
  225. package/conformance/motion/refs/skottie-sample-1@100.png +0 -0
  226. package/conformance/motion/refs/skottie-sample-1@180.png +0 -0
  227. package/conformance/motion/refs/skottie-sample-search@0.png +0 -0
  228. package/conformance/motion/refs/skottie-sample-search@27.png +0 -0
  229. package/conformance/motion/refs/skottie-sample-search@48.png +0 -0
  230. package/conformance/motion/refs/skottie-spatial-supernormal@0.png +0 -0
  231. package/conformance/motion/refs/skottie-spatial-supernormal@200.png +0 -0
  232. package/conformance/motion/refs/skottie-spatial-supernormal@360.png +0 -0
  233. package/conformance/motion/refs/skottie-text-animator-1@0.png +0 -0
  234. package/conformance/motion/refs/skottie-text-animator-1@150.png +0 -0
  235. package/conformance/motion/refs/skottie-text-animator-1@270.png +0 -0
  236. package/conformance/motion/refs/skottie-text-fill-over-stroke@0.png +0 -0
  237. package/conformance/motion/refs/skottie-text-fill-over-stroke@210.png +0 -0
  238. package/conformance/motion/refs/skottie-text-fill-over-stroke@378.png +0 -0
  239. package/conformance/motion/refs/skottie-text-tracking@0.png +0 -0
  240. package/conformance/motion/refs/skottie-text-tracking@108.png +0 -0
  241. package/conformance/motion/refs/skottie-text-tracking@60.png +0 -0
  242. package/conformance/motion/refs/skottie-text-valign@0.png +0 -0
  243. package/conformance/motion/refs/skottie-text-valign@150.png +0 -0
  244. package/conformance/motion/refs/skottie-text-valign@270.png +0 -0
  245. package/conformance/motion/refs/skottie-time-reverse@0.png +0 -0
  246. package/conformance/motion/refs/skottie-time-reverse@300.png +0 -0
  247. package/conformance/motion/refs/skottie-time-reverse@540.png +0 -0
  248. package/conformance/motion/refs/skottie-transform-skew@0.png +0 -0
  249. package/conformance/motion/refs/skottie-transform-skew@300.png +0 -0
  250. package/conformance/motion/refs/skottie-transform-skew@540.png +0 -0
  251. package/conformance/motion/refs/skottie-trimpath-fill@0.png +0 -0
  252. package/conformance/motion/refs/skottie-trimpath-fill@300.png +0 -0
  253. package/conformance/motion/refs/skottie-trimpath-fill@540.png +0 -0
  254. package/conformance/motion/refs/skottie-trimpath-modes@0.png +0 -0
  255. package/conformance/motion/refs/skottie-trimpath-modes@300.png +0 -0
  256. package/conformance/motion/refs/skottie-trimpath-modes@540.png +0 -0
  257. package/conformance/motion/refs/skottie-tritone-effect@0.png +0 -0
  258. package/conformance/motion/refs/skottie-tritone-effect@300.png +0 -0
  259. package/conformance/motion/refs/skottie-tritone-effect@540.png +0 -0
  260. package/conformance/motion/refs/spec-blend-mode@0.png +0 -0
  261. package/conformance/motion/refs/spec-blend-mode@162.png +0 -0
  262. package/conformance/motion/refs/spec-blend-mode@90.png +0 -0
  263. package/conformance/motion/refs/spec-ellipse@0.png +0 -0
  264. package/conformance/motion/refs/spec-ellipse@162.png +0 -0
  265. package/conformance/motion/refs/spec-ellipse@90.png +0 -0
  266. package/conformance/motion/refs/spec-fill@0.png +0 -0
  267. package/conformance/motion/refs/spec-fill@162.png +0 -0
  268. package/conformance/motion/refs/spec-fill@90.png +0 -0
  269. package/conformance/motion/refs/spec-gradient-stroke@0.png +0 -0
  270. package/conformance/motion/refs/spec-gradient-stroke@162.png +0 -0
  271. package/conformance/motion/refs/spec-gradient-stroke@90.png +0 -0
  272. package/conformance/motion/refs/spec-gradient@0.png +0 -0
  273. package/conformance/motion/refs/spec-gradient@162.png +0 -0
  274. package/conformance/motion/refs/spec-gradient@90.png +0 -0
  275. package/conformance/motion/refs/spec-mask@0.png +0 -0
  276. package/conformance/motion/refs/spec-mask@300.png +0 -0
  277. package/conformance/motion/refs/spec-mask@540.png +0 -0
  278. package/conformance/motion/refs/spec-masks@0.png +0 -0
  279. package/conformance/motion/refs/spec-masks@135.png +0 -0
  280. package/conformance/motion/refs/spec-masks@75.png +0 -0
  281. package/conformance/motion/refs/spec-matte@0.png +0 -0
  282. package/conformance/motion/refs/spec-matte@162.png +0 -0
  283. package/conformance/motion/refs/spec-matte@90.png +0 -0
  284. package/conformance/motion/refs/spec-metadata@0.png +0 -0
  285. package/conformance/motion/refs/spec-metadata@162.png +0 -0
  286. package/conformance/motion/refs/spec-metadata@90.png +0 -0
  287. package/conformance/motion/refs/spec-path@0.png +0 -0
  288. package/conformance/motion/refs/spec-path@162.png +0 -0
  289. package/conformance/motion/refs/spec-path@90.png +0 -0
  290. package/conformance/motion/refs/spec-pucker-bloat@0.png +0 -0
  291. package/conformance/motion/refs/spec-pucker-bloat@162.png +0 -0
  292. package/conformance/motion/refs/spec-pucker-bloat@90.png +0 -0
  293. package/conformance/motion/refs/spec-rectangle@0.png +0 -0
  294. package/conformance/motion/refs/spec-rectangle@162.png +0 -0
  295. package/conformance/motion/refs/spec-rectangle@90.png +0 -0
  296. package/conformance/motion/refs/spec-rounded-corners@0.png +0 -0
  297. package/conformance/motion/refs/spec-rounded-corners@162.png +0 -0
  298. package/conformance/motion/refs/spec-rounded-corners@90.png +0 -0
  299. package/conformance/motion/refs/spec-slots@0.png +0 -0
  300. package/conformance/motion/refs/spec-slots@450.png +0 -0
  301. package/conformance/motion/refs/spec-slots@810.png +0 -0
  302. package/conformance/motion/refs/spec-star@0.png +0 -0
  303. package/conformance/motion/refs/spec-star@162.png +0 -0
  304. package/conformance/motion/refs/spec-star@90.png +0 -0
  305. package/conformance/motion/refs/spec-stroke@0.png +0 -0
  306. package/conformance/motion/refs/spec-stroke@162.png +0 -0
  307. package/conformance/motion/refs/spec-stroke@90.png +0 -0
  308. package/conformance/motion/refs/spec-test-ellipse-xy-pos@0.png +0 -0
  309. package/conformance/motion/refs/spec-test-ellipse-xy-pos@162.png +0 -0
  310. package/conformance/motion/refs/spec-test-ellipse-xy-pos@90.png +0 -0
  311. package/conformance/motion/refs/spec-test-gradient-fill@0.png +0 -0
  312. package/conformance/motion/refs/spec-test-gradient-fill@30.png +0 -0
  313. package/conformance/motion/refs/spec-test-gradient-fill@54.png +0 -0
  314. package/conformance/motion/refs/spec-test-gradient-stroke@0.png +0 -0
  315. package/conformance/motion/refs/spec-test-gradient-stroke@30.png +0 -0
  316. package/conformance/motion/refs/spec-test-gradient-stroke@54.png +0 -0
  317. package/conformance/motion/refs/spec-test-unknown-shape@0.png +0 -0
  318. package/conformance/motion/refs/spec-test-unknown-shape@162.png +0 -0
  319. package/conformance/motion/refs/spec-test-unknown-shape@90.png +0 -0
  320. package/conformance/motion/refs/spec-time-remap@0.png +0 -0
  321. package/conformance/motion/refs/spec-time-remap@300.png +0 -0
  322. package/conformance/motion/refs/spec-time-remap@540.png +0 -0
  323. package/conformance/motion/refs/spec-time-stretch@0.png +0 -0
  324. package/conformance/motion/refs/spec-time-stretch@300.png +0 -0
  325. package/conformance/motion/refs/spec-time-stretch@540.png +0 -0
  326. package/conformance/motion/refs/spec-transform@0.png +0 -0
  327. package/conformance/motion/refs/spec-transform@162.png +0 -0
  328. package/conformance/motion/refs/spec-transform@90.png +0 -0
  329. package/conformance/motion/refs/spec-trim-path@0.png +0 -0
  330. package/conformance/motion/refs/spec-trim-path@162.png +0 -0
  331. package/conformance/motion/refs/spec-trim-path@90.png +0 -0
  332. package/conformance/motion/refs/web-adrock@0.png +0 -0
  333. package/conformance/motion/refs/web-adrock@10.png +0 -0
  334. package/conformance/motion/refs/web-adrock@18.png +0 -0
  335. package/conformance/motion/refs/web-bacon@0.png +0 -0
  336. package/conformance/motion/refs/web-bacon@126.png +0 -0
  337. package/conformance/motion/refs/web-bacon@70.png +0 -0
  338. package/conformance/motion/refs/web-banner@0.png +0 -0
  339. package/conformance/motion/refs/web-banner@301.png +0 -0
  340. package/conformance/motion/refs/web-banner@542.png +0 -0
  341. package/conformance/motion/refs/web-bodymovin@0.png +0 -0
  342. package/conformance/motion/refs/web-bodymovin@51.png +0 -0
  343. package/conformance/motion/refs/web-bodymovin@92.png +0 -0
  344. package/conformance/motion/refs/web-dalek@0.png +0 -0
  345. package/conformance/motion/refs/web-dalek@145.png +0 -0
  346. package/conformance/motion/refs/web-dalek@261.png +0 -0
  347. package/conformance/motion/refs/web-footage-data@0.png +0 -0
  348. package/conformance/motion/refs/web-footage-data@180.png +0 -0
  349. package/conformance/motion/refs/web-footage-data@324.png +0 -0
  350. package/conformance/motion/refs/web-lights@0.png +0 -0
  351. package/conformance/motion/refs/web-lights@150.png +0 -0
  352. package/conformance/motion/refs/web-lights@270.png +0 -0
  353. package/conformance/motion/refs/web-ripple@0.png +0 -0
  354. package/conformance/motion/refs/web-ripple@180.png +0 -0
  355. package/conformance/motion/refs/web-ripple@324.png +0 -0
  356. package/conformance/motion/refs/web-starfish@0.png +0 -0
  357. package/conformance/motion/refs/web-starfish@150.png +0 -0
  358. package/conformance/motion/refs/web-starfish@270.png +0 -0
  359. package/conformance/motion/render-refs.ts +126 -0
  360. package/conformance/motion/report.json +1367 -0
  361. package/conformance/motion/web-parity-gaps.json +12 -0
  362. package/conformance/motion-parity-entry.ts +3 -0
  363. package/conformance/motion-parity.ts +101 -0
  364. package/dist/chunks/{index-gtk2gwsb.js → index-4xczxey5.js} +187 -40
  365. package/dist/chunks/{index-gtk2gwsb.js.map → index-4xczxey5.js.map} +7 -6
  366. package/dist/chunks/{index-62yzr94z.js → index-5sjj5p84.js} +270 -8
  367. package/dist/chunks/{index-62yzr94z.js.map → index-5sjj5p84.js.map} +2 -2
  368. package/dist/chunks/{index-fy7y2nz8.js → index-cvf7bbs5.js} +23 -2
  369. package/dist/chunks/{index-fy7y2nz8.js.map → index-cvf7bbs5.js.map} +1 -1
  370. package/dist/chunks/index-dgkf6yw5.js +48 -0
  371. package/dist/chunks/index-dgkf6yw5.js.map +10 -0
  372. package/dist/chunks/{index-5fmaa0xq.js → index-f9wkb6aq.js} +851 -36
  373. package/dist/chunks/{index-5fmaa0xq.js.map → index-f9wkb6aq.js.map} +2 -2
  374. package/dist/chunks/index-t2mwfbb6.js +1515 -0
  375. package/dist/chunks/index-t2mwfbb6.js.map +15 -0
  376. package/dist/chunks/{index-bg2jsgjq.js → index-vkn82srs.js} +479 -10
  377. package/dist/chunks/{index-bg2jsgjq.js.map → index-vkn82srs.js.map} +2 -2
  378. package/dist/chunks/wasm-ctcc3cma.js +424 -0
  379. package/dist/chunks/wasm-ctcc3cma.js.map +11 -0
  380. package/dist/conformance.js +10941 -563
  381. package/dist/conformance.js.map +2 -2
  382. package/dist/entries/prompt.js +2 -2
  383. package/dist/entries/schema.js +3 -3
  384. package/dist/host/index.js +20 -4
  385. package/dist/host/index.js.map +1 -1
  386. package/dist/index.js +364 -99
  387. package/dist/index.js.map +4 -4
  388. package/dist/types/src/catalog.generated.d.ts +71 -5
  389. package/dist/types/src/host/contract.d.ts +17 -0
  390. package/dist/types/src/host/exposes.d.ts +68 -0
  391. package/dist/types/src/host/index.d.ts +1 -0
  392. package/dist/types/src/host/package.d.ts +8 -0
  393. package/dist/types/src/index.d.ts +2 -0
  394. package/dist/types/src/layout.d.ts +2 -0
  395. package/dist/types/src/limits.d.ts +1 -0
  396. package/dist/types/src/motion/index.d.ts +1 -0
  397. package/dist/types/src/motion/server.d.ts +9 -0
  398. package/dist/types/src/motion/wasm.d.ts +11 -0
  399. package/dist/types/src/web/coerce.d.ts +3 -0
  400. package/dist/types/src/web/focus.d.ts +8 -0
  401. package/dist/types/src/web/index.d.ts +5 -2
  402. package/dist/types/src/web/primitives/carousel.d.ts +17 -0
  403. package/dist/types/src/web/primitives/dock.d.ts +5 -2
  404. package/dist/types/src/web/primitives/index.d.ts +5 -0
  405. package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
  406. package/dist/types/src/web/primitives/motion-paint.d.ts +36 -0
  407. package/dist/types/src/web/primitives/motion.d.ts +162 -0
  408. package/dist/types/src/web/primitives/outline.d.ts +22 -0
  409. package/dist/types/src/web/primitives/zoomable-image.d.ts +158 -0
  410. package/dist/types/src/web/table.d.ts +8 -0
  411. package/dist/types/src/zoom.d.ts +128 -0
  412. package/dist/types/wasm/motion/bytes.d.ts +1 -0
  413. package/dist/web/index.js +171 -230
  414. package/dist/web/index.js.map +9 -10
  415. package/dist/web/primitives/index.js +641 -6
  416. package/dist/web/primitives/index.js.map +9 -5
  417. package/docs/components.generated.json +542 -5
  418. package/docs/package-format.md +56 -1
  419. package/docs/round-6-contract.md +110 -0
  420. package/docs/themes.generated.json +66 -2
  421. package/fixtures/bind-time.json +1468 -0
  422. package/fixtures/catalog-components.json +1026 -16
  423. package/fixtures/catalog-macros.json +1279 -157
  424. package/fixtures/conformance-baseline.json +48893 -47200
  425. package/fixtures/conformance-known.json +140 -134
  426. package/fixtures/host-router.json +539 -1
  427. package/fixtures/kitchen-sink.expanded.json +686 -1
  428. package/fixtures/kitchen-sink.json +102 -1
  429. package/fixtures/layout-geometry-round1.json +42 -42
  430. package/fixtures/motion-frames.json +2618 -0
  431. package/fixtures/motion-playback.json +528 -0
  432. package/fixtures/motion-state.json +722 -0
  433. package/fixtures/motion-validate.json +138 -0
  434. package/fixtures/primitive-specimens.json +4 -0
  435. package/fixtures/prompt-budget.json +16 -16
  436. package/fixtures/specimens.json +839 -21
  437. package/fixtures/theme-recipes.json +32808 -28396
  438. package/fixtures/theme-resolved.json +2114 -286
  439. package/fixtures/zoom.json +1382 -0
  440. package/generated/ExponentialUICatalog.generated.kt +21 -21
  441. package/generated/ExponentialUICatalog.generated.swift +21 -21
  442. package/generated/ExponentialUIThemes.generated.kt +7 -7
  443. package/generated/ExponentialUIThemes.generated.swift +7 -7
  444. package/generated/catalog.descriptions.generated.rs +1 -1
  445. package/generated/catalog.generated.rs +30 -30
  446. package/generated/catalog.themes.generated.rs +8 -8
  447. package/generated/core.descriptions.json +267 -5
  448. package/generated/core.runtime.json +275 -1
  449. package/package.json +1 -1
  450. package/themes/neutral.theme.json +460 -3
  451. package/dist/chunks/index-t6qz1770.js +0 -95
  452. package/dist/chunks/index-t6qz1770.js.map +0 -11
@@ -10,13 +10,14 @@ import {
10
10
  parseTokenRef2,
11
11
  isKnownToken2,
12
12
  sharedCatalogView2
13
- } from "./index-5fmaa0xq.js";
13
+ } from "./index-f9wkb6aq.js";
14
14
  import {
15
15
  validateStyle2,
16
16
  tryLoadTheme2,
17
17
  BUILTIN_THEMES2,
18
18
  BUILTIN_THEME_IDS2,
19
19
  builtinTheme2,
20
+ host_default,
20
21
  MESSAGE_KINDS2,
21
22
  DEFAULT_URL_SCHEMES2,
22
23
  DEFAULT_MEDIA_SCHEMES2,
@@ -27,7 +28,7 @@ import {
27
28
  SSE_EVENTS2,
28
29
  errorMessage2,
29
30
  actionMessage2
30
- } from "./index-bg2jsgjq.js";
31
+ } from "./index-vkn82srs.js";
31
32
 
32
33
  // packages/exponential-ui/src/catalog.generated.ts
33
34
  var CATALOG_ID2 = "https://ui.exponential.at/catalogs/core/v1";
@@ -36,12 +37,12 @@ var BASIC_CATALOG_ID2 = "https://a2ui.org/specification/v0_9/basic_catalog.json"
36
37
  var BASIC_VERSION2 = "v0.9";
37
38
  var CATALOG_VERSION2 = "1";
38
39
  var UNKNOWN_COMPONENT_NAME2 = "Unknown";
39
- var COMPONENT_NAMES2 = ["Box", "Stack", "Grid", "Card", "Separator", "List", "Resizable", "ScrollArea", "Sidebar", "SplitView", "AppBar", "Page", "Toolbar", "Section", "Group", "Text", "Heading", "Markdown", "CodeBlock", "Kbd", "Label", "Image", "Icon", "Video", "AudioPlayer", "Avatar", "QrCode", "Carousel", "Tabs", "Segmented", "Accordion", "Collapsible", "Trace", "TraceItem", "Plan", "Pagination", "Breadcrumb", "Stepper", "Dialog", "Drawer", "DockCard", "AlertDialog", "Popover", "Tooltip", "Menu", "Toast", "Badge", "Alert", "Chip", "EmptyState", "Progress", "Meter", "Ring", "Spinner", "Skeleton", "VoiceWave", "CallSurface", "Table", "Chart", "Sparkline", "StatTile", "Button", "Link", "Toggle", "Form", "FieldGroup", "FormActions", "Input", "Textarea", "NumberField", "Checkbox", "Radio", "ChoiceTiles", "Switch", "Slider", "Rating", "Select", "SearchList", "ChipInput", "DatePicker", "DateRangePicker", "TimePicker", "FileUpload", "QrScanner", "Composer", "Row", "MessageBubble", "TreeGuides", "Unknown"];
40
- var NATIVE_COMPONENTS2 = ["Box", "List", "Resizable", "Text", "Markdown", "CodeBlock", "Image", "Icon", "Video", "AudioPlayer", "Avatar", "QrCode", "Carousel", "Tabs", "Segmented", "Accordion", "Dialog", "Drawer", "Popover", "Tooltip", "Menu", "Toast", "Ring", "Spinner", "Skeleton", "VoiceWave", "Table", "Chart", "Button", "Link", "Toggle", "Form", "Input", "Textarea", "NumberField", "Checkbox", "Radio", "ChoiceTiles", "Switch", "Slider", "Select", "SearchList", "ChipInput", "DatePicker", "DateRangePicker", "TimePicker", "FileUpload", "QrScanner", "Composer", "TreeGuides", "Unknown"];
41
- var MACRO_COMPONENTS2 = ["Stack", "Grid", "Card", "Separator", "ScrollArea", "Sidebar", "SplitView", "AppBar", "Page", "Toolbar", "Section", "Group", "Heading", "Kbd", "Label", "Collapsible", "Trace", "TraceItem", "Plan", "Pagination", "Breadcrumb", "Stepper", "DockCard", "AlertDialog", "Badge", "Alert", "Chip", "EmptyState", "Progress", "Meter", "CallSurface", "Sparkline", "StatTile", "FieldGroup", "FormActions", "Rating", "Row", "MessageBubble"];
42
- var LITE_COMPONENTS2 = ["Box", "Stack", "Grid", "Card", "Separator", "List", "Resizable", "ScrollArea", "Sidebar", "SplitView", "AppBar", "Page", "Toolbar", "Section", "Group", "Text", "Heading", "Markdown", "CodeBlock", "Kbd", "Label", "Icon", "Avatar", "Tabs", "Segmented", "Collapsible", "Trace", "TraceItem", "Plan", "Breadcrumb", "Stepper", "Badge", "Alert", "Chip", "EmptyState", "Progress", "Meter", "Ring", "Skeleton", "StatTile", "Button", "Link", "Form", "FieldGroup", "FormActions", "Input", "Textarea", "NumberField", "Checkbox", "Switch", "Rating", "Select", "SearchList", "ChipInput", "DatePicker", "DateRangePicker", "TimePicker", "FileUpload", "Composer", "Row", "MessageBubble"];
43
- var COMPONENT_GROUPS2 = { Box: "layout", Stack: "layout", Grid: "layout", Card: "layout", Separator: "layout", List: "layout", Resizable: "layout", ScrollArea: "layout", Sidebar: "layout", SplitView: "layout", AppBar: "layout", Page: "layout", Toolbar: "layout", Section: "list", Group: "list", Text: "text", Heading: "text", Markdown: "text", CodeBlock: "text", Kbd: "text", Label: "text", Image: "media", Icon: "media", Video: "media", AudioPlayer: "media", Avatar: "media", QrCode: "media", Carousel: "media", Tabs: "navigation", Segmented: "navigation", Accordion: "navigation", Collapsible: "navigation", Trace: "list", TraceItem: "list", Plan: "list", Pagination: "navigation", Breadcrumb: "navigation", Stepper: "navigation", Dialog: "overlay", Drawer: "overlay", DockCard: "overlay", AlertDialog: "overlay", Popover: "overlay", Tooltip: "overlay", Menu: "overlay", Toast: "overlay", Badge: "feedback", Alert: "feedback", Chip: "feedback", EmptyState: "feedback", Progress: "feedback", Meter: "feedback", Ring: "feedback", Spinner: "feedback", Skeleton: "feedback", VoiceWave: "feedback", CallSurface: "media", Table: "data", Chart: "data", Sparkline: "data", StatTile: "data", Button: "action", Link: "action", Toggle: "action", Form: "input", FieldGroup: "input", FormActions: "input", Input: "input", Textarea: "input", NumberField: "input", Checkbox: "input", Radio: "input", ChoiceTiles: "input", Switch: "input", Slider: "input", Rating: "input", Select: "input", SearchList: "input", ChipInput: "input", DatePicker: "input", DateRangePicker: "input", TimePicker: "input", FileUpload: "input", QrScanner: "input", Composer: "input", Row: "list", MessageBubble: "list", TreeGuides: "list", Unknown: "feedback" };
44
- var SPECIMEN_IDS2 = { Box: "exponential-ui-box", Stack: "exponential-ui-stack", Grid: "exponential-ui-grid", Card: "exponential-ui-card", Separator: "exponential-ui-separator", List: "exponential-ui-list", Resizable: "exponential-ui-resizable", ScrollArea: "exponential-ui-scroll-area", Sidebar: "exponential-ui-sidebar", SplitView: "exponential-ui-split-view", AppBar: "exponential-ui-app-bar", Page: "exponential-ui-page", Toolbar: "exponential-ui-toolbar", Section: "exponential-ui-section", Group: "exponential-ui-group", Text: "exponential-ui-text", Heading: "exponential-ui-heading", Markdown: "exponential-ui-markdown", CodeBlock: "exponential-ui-code-block", Kbd: "exponential-ui-kbd", Label: "exponential-ui-label", Image: "exponential-ui-image", Icon: "exponential-ui-icon", Video: "exponential-ui-video", AudioPlayer: "exponential-ui-audio-player", Avatar: "exponential-ui-avatar", QrCode: "exponential-ui-qr-code", Carousel: "exponential-ui-carousel", Tabs: "exponential-ui-tabs", Segmented: "exponential-ui-segmented", Accordion: "exponential-ui-accordion", Collapsible: "exponential-ui-collapsible", Trace: "exponential-ui-trace", TraceItem: "exponential-ui-trace-item", Plan: "exponential-ui-plan", Pagination: "exponential-ui-pagination", Breadcrumb: "exponential-ui-breadcrumb", Stepper: "exponential-ui-stepper", Dialog: "exponential-ui-dialog", Drawer: "exponential-ui-drawer", DockCard: "exponential-ui-dock-card", AlertDialog: "exponential-ui-alert-dialog", Popover: "exponential-ui-popover", Tooltip: "exponential-ui-tooltip", Menu: "exponential-ui-menu", Toast: "exponential-ui-toast", Badge: "exponential-ui-badge", Alert: "exponential-ui-alert", Chip: "exponential-ui-chip", EmptyState: "exponential-ui-empty-state", Progress: "exponential-ui-progress", Meter: "exponential-ui-meter", Ring: "exponential-ui-ring", Spinner: "exponential-ui-spinner", Skeleton: "exponential-ui-skeleton", VoiceWave: "exponential-ui-voice-wave", CallSurface: "exponential-ui-call-surface", Table: "exponential-ui-table", Chart: "exponential-ui-chart", Sparkline: "exponential-ui-sparkline", StatTile: "exponential-ui-stat-tile", Button: "exponential-ui-button", Link: "exponential-ui-link", Toggle: "exponential-ui-toggle", Form: "exponential-ui-form", FieldGroup: "exponential-ui-field-group", FormActions: "exponential-ui-form-actions", Input: "exponential-ui-input", Textarea: "exponential-ui-textarea", NumberField: "exponential-ui-number-field", Checkbox: "exponential-ui-checkbox", Radio: "exponential-ui-radio", ChoiceTiles: "exponential-ui-choice-tiles", Switch: "exponential-ui-switch", Slider: "exponential-ui-slider", Rating: "exponential-ui-rating", Select: "exponential-ui-select", SearchList: "exponential-ui-search-list", ChipInput: "exponential-ui-chip-input", DatePicker: "exponential-ui-date-picker", DateRangePicker: "exponential-ui-date-range-picker", TimePicker: "exponential-ui-time-picker", FileUpload: "exponential-ui-file-upload", QrScanner: "exponential-ui-qr-scanner", Composer: "exponential-ui-composer", Row: "exponential-ui-row", MessageBubble: "exponential-ui-message-bubble", TreeGuides: "exponential-ui-tree-guides", Unknown: "exponential-ui-unknown" };
40
+ var COMPONENT_NAMES2 = ["Box", "Stack", "Grid", "Card", "Separator", "List", "Resizable", "ScrollArea", "Sidebar", "SplitView", "AppBar", "Page", "Toolbar", "Section", "Group", "Text", "Heading", "Markdown", "CodeBlock", "Kbd", "Label", "Image", "ZoomableImage", "Icon", "Video", "AudioPlayer", "Avatar", "QrCode", "Carousel", "Mosaic", "Tabs", "Segmented", "Accordion", "Collapsible", "Trace", "TraceItem", "Plan", "Pagination", "Breadcrumb", "Outline", "Stepper", "Dialog", "Drawer", "DockCard", "AlertDialog", "Popover", "Tooltip", "Menu", "Toast", "Badge", "Alert", "Chip", "EmptyState", "Progress", "Meter", "Ring", "Spinner", "Skeleton", "VoiceWave", "CallSurface", "Table", "Chart", "Sparkline", "StatTile", "Button", "Link", "Toggle", "Form", "FieldGroup", "FormActions", "Input", "Textarea", "NumberField", "Checkbox", "Radio", "ChoiceTiles", "Switch", "Slider", "Rating", "Select", "SearchList", "ChipInput", "DatePicker", "DateRangePicker", "TimePicker", "FileUpload", "QrScanner", "Composer", "Row", "MessageBubble", "TreeGuides", "Unknown", "Motion"];
41
+ var NATIVE_COMPONENTS2 = ["Box", "List", "Resizable", "Text", "Markdown", "CodeBlock", "Image", "ZoomableImage", "Icon", "Video", "AudioPlayer", "Avatar", "QrCode", "Carousel", "Tabs", "Segmented", "Accordion", "Dialog", "Drawer", "Popover", "Tooltip", "Menu", "Toast", "Ring", "Spinner", "Skeleton", "VoiceWave", "Table", "Chart", "Button", "Link", "Toggle", "Form", "Input", "Textarea", "NumberField", "Checkbox", "Radio", "ChoiceTiles", "Switch", "Slider", "Select", "SearchList", "ChipInput", "DatePicker", "DateRangePicker", "TimePicker", "FileUpload", "QrScanner", "Composer", "TreeGuides", "Unknown", "Motion"];
42
+ var MACRO_COMPONENTS2 = ["Stack", "Grid", "Card", "Separator", "ScrollArea", "Sidebar", "SplitView", "AppBar", "Page", "Toolbar", "Section", "Group", "Heading", "Kbd", "Label", "Mosaic", "Collapsible", "Trace", "TraceItem", "Plan", "Pagination", "Breadcrumb", "Outline", "Stepper", "DockCard", "AlertDialog", "Badge", "Alert", "Chip", "EmptyState", "Progress", "Meter", "CallSurface", "Sparkline", "StatTile", "FieldGroup", "FormActions", "Rating", "Row", "MessageBubble"];
43
+ var LITE_COMPONENTS2 = ["Box", "Stack", "Grid", "Card", "Separator", "List", "Resizable", "ScrollArea", "Sidebar", "SplitView", "AppBar", "Page", "Toolbar", "Section", "Group", "Text", "Heading", "Markdown", "CodeBlock", "Kbd", "Label", "Icon", "Avatar", "Tabs", "Segmented", "Collapsible", "Trace", "TraceItem", "Plan", "Breadcrumb", "Outline", "Stepper", "Badge", "Alert", "Chip", "EmptyState", "Progress", "Meter", "Ring", "Skeleton", "StatTile", "Button", "Link", "Form", "FieldGroup", "FormActions", "Input", "Textarea", "NumberField", "Checkbox", "Switch", "Rating", "Select", "SearchList", "ChipInput", "DatePicker", "DateRangePicker", "TimePicker", "FileUpload", "Composer", "Row", "MessageBubble", "Motion"];
44
+ var COMPONENT_GROUPS2 = { Box: "layout", Stack: "layout", Grid: "layout", Card: "layout", Separator: "layout", List: "layout", Resizable: "layout", ScrollArea: "layout", Sidebar: "layout", SplitView: "layout", AppBar: "layout", Page: "layout", Toolbar: "layout", Section: "list", Group: "list", Text: "text", Heading: "text", Markdown: "text", CodeBlock: "text", Kbd: "text", Label: "text", Image: "media", ZoomableImage: "media", Icon: "media", Video: "media", AudioPlayer: "media", Avatar: "media", QrCode: "media", Carousel: "media", Mosaic: "media", Tabs: "navigation", Segmented: "navigation", Accordion: "navigation", Collapsible: "navigation", Trace: "list", TraceItem: "list", Plan: "list", Pagination: "navigation", Breadcrumb: "navigation", Outline: "navigation", Stepper: "navigation", Dialog: "overlay", Drawer: "overlay", DockCard: "overlay", AlertDialog: "overlay", Popover: "overlay", Tooltip: "overlay", Menu: "overlay", Toast: "overlay", Badge: "feedback", Alert: "feedback", Chip: "feedback", EmptyState: "feedback", Progress: "feedback", Meter: "feedback", Ring: "feedback", Spinner: "feedback", Skeleton: "feedback", VoiceWave: "feedback", CallSurface: "media", Table: "data", Chart: "data", Sparkline: "data", StatTile: "data", Button: "action", Link: "action", Toggle: "action", Form: "input", FieldGroup: "input", FormActions: "input", Input: "input", Textarea: "input", NumberField: "input", Checkbox: "input", Radio: "input", ChoiceTiles: "input", Switch: "input", Slider: "input", Rating: "input", Select: "input", SearchList: "input", ChipInput: "input", DatePicker: "input", DateRangePicker: "input", TimePicker: "input", FileUpload: "input", QrScanner: "input", Composer: "input", Row: "list", MessageBubble: "list", TreeGuides: "list", Unknown: "feedback", Motion: "media" };
45
+ var SPECIMEN_IDS2 = { Box: "exponential-ui-box", Stack: "exponential-ui-stack", Grid: "exponential-ui-grid", Card: "exponential-ui-card", Separator: "exponential-ui-separator", List: "exponential-ui-list", Resizable: "exponential-ui-resizable", ScrollArea: "exponential-ui-scroll-area", Sidebar: "exponential-ui-sidebar", SplitView: "exponential-ui-split-view", AppBar: "exponential-ui-app-bar", Page: "exponential-ui-page", Toolbar: "exponential-ui-toolbar", Section: "exponential-ui-section", Group: "exponential-ui-group", Text: "exponential-ui-text", Heading: "exponential-ui-heading", Markdown: "exponential-ui-markdown", CodeBlock: "exponential-ui-code-block", Kbd: "exponential-ui-kbd", Label: "exponential-ui-label", Image: "exponential-ui-image", ZoomableImage: "exponential-ui-zoomable-image", Icon: "exponential-ui-icon", Video: "exponential-ui-video", AudioPlayer: "exponential-ui-audio-player", Avatar: "exponential-ui-avatar", QrCode: "exponential-ui-qr-code", Carousel: "exponential-ui-carousel", Mosaic: "exponential-ui-mosaic", Tabs: "exponential-ui-tabs", Segmented: "exponential-ui-segmented", Accordion: "exponential-ui-accordion", Collapsible: "exponential-ui-collapsible", Trace: "exponential-ui-trace", TraceItem: "exponential-ui-trace-item", Plan: "exponential-ui-plan", Pagination: "exponential-ui-pagination", Breadcrumb: "exponential-ui-breadcrumb", Outline: "exponential-ui-outline", Stepper: "exponential-ui-stepper", Dialog: "exponential-ui-dialog", Drawer: "exponential-ui-drawer", DockCard: "exponential-ui-dock-card", AlertDialog: "exponential-ui-alert-dialog", Popover: "exponential-ui-popover", Tooltip: "exponential-ui-tooltip", Menu: "exponential-ui-menu", Toast: "exponential-ui-toast", Badge: "exponential-ui-badge", Alert: "exponential-ui-alert", Chip: "exponential-ui-chip", EmptyState: "exponential-ui-empty-state", Progress: "exponential-ui-progress", Meter: "exponential-ui-meter", Ring: "exponential-ui-ring", Spinner: "exponential-ui-spinner", Skeleton: "exponential-ui-skeleton", VoiceWave: "exponential-ui-voice-wave", CallSurface: "exponential-ui-call-surface", Table: "exponential-ui-table", Chart: "exponential-ui-chart", Sparkline: "exponential-ui-sparkline", StatTile: "exponential-ui-stat-tile", Button: "exponential-ui-button", Link: "exponential-ui-link", Toggle: "exponential-ui-toggle", Form: "exponential-ui-form", FieldGroup: "exponential-ui-field-group", FormActions: "exponential-ui-form-actions", Input: "exponential-ui-input", Textarea: "exponential-ui-textarea", NumberField: "exponential-ui-number-field", Checkbox: "exponential-ui-checkbox", Radio: "exponential-ui-radio", ChoiceTiles: "exponential-ui-choice-tiles", Switch: "exponential-ui-switch", Slider: "exponential-ui-slider", Rating: "exponential-ui-rating", Select: "exponential-ui-select", SearchList: "exponential-ui-search-list", ChipInput: "exponential-ui-chip-input", DatePicker: "exponential-ui-date-picker", DateRangePicker: "exponential-ui-date-range-picker", TimePicker: "exponential-ui-time-picker", FileUpload: "exponential-ui-file-upload", QrScanner: "exponential-ui-qr-scanner", Composer: "exponential-ui-composer", Row: "exponential-ui-row", MessageBubble: "exponential-ui-message-bubble", TreeGuides: "exponential-ui-tree-guides", Unknown: "exponential-ui-unknown", Motion: "exponential-ui-motion" };
45
46
  var ENUMS2 = {
46
47
  variant: ["default", "secondary", "outline", "ghost", "destructive", "link"],
47
48
  size: ["sm", "default", "lg", "icon"],
@@ -92,7 +93,11 @@ var ENUMS2 = {
92
93
  callState: ["ringing", "connecting", "talking", "ended"],
93
94
  voiceWaveVariant: ["ring", "bars"],
94
95
  qrLevel: ["L", "M", "Q", "H"],
95
- planState: ["proposed", "running", "done", "declined"]
96
+ planState: ["proposed", "running", "done", "declined"],
97
+ zoomInitial: ["auto", "fit", "fitWidth", "actual"],
98
+ zoomControls: ["auto", "always", "none"],
99
+ motionDirection: ["forward", "reverse", "alternate"],
100
+ motionFit: ["contain", "cover", "fill"]
96
101
  };
97
102
  var TOKEN_NAMES2 = {
98
103
  color: ["background", "foreground", "card", "cardForeground", "popover", "popoverForeground", "primary", "primaryForeground", "secondary", "secondaryForeground", "muted", "mutedForeground", "accent", "accentForeground", "destructive", "destructiveForeground", "success", "successForeground", "warning", "warningForeground", "info", "infoForeground", "border", "input", "ring", "chart1", "chart2", "chart3", "chart4", "chart5", "chart6", "chart7", "chart8"],
@@ -115,14 +120,14 @@ var TOKEN_NAMES2 = {
115
120
  };
116
121
  var STYLE_KEY_NAMES2 = ["display", "flexDirection", "flexWrap", "justifyContent", "alignItems", "alignContent", "alignSelf", "justifySelf", "flexGrow", "flexShrink", "flexBasis", "gap", "rowGap", "columnGap", "direction", "overflow", "overflowX", "overflowY", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "aspectRatio", "position", "top", "right", "bottom", "left", "inset", "insetInlineStart", "insetInlineEnd", "insetBlockStart", "insetBlockEnd", "padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "paddingHorizontal", "paddingVertical", "paddingInlineStart", "paddingInlineEnd", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "marginHorizontal", "marginVertical", "marginInlineStart", "marginInlineEnd", "gridTemplateColumns", "gridTemplateRows", "gridTemplateAreas", "gridArea", "gridColumn", "gridRow", "backgroundColor", "backgroundGradient", "color", "borderWidth", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "borderColor", "borderStyle", "borderRadius", "borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius", "opacity", "boxShadow", "fontSize", "fontWeight", "lineHeight", "letterSpacing", "textAlign", "textDecoration", "textTransform", "fontStyle", "fontFamily", "transition", "transitionEasing", "transform", "visibility", "pointerEvents", "userSelect", "cursor", "backdropBlur", "animation", "animationDuration"];
117
122
  var STYLE_STATE_NAMES2 = [":hover", ":focus-visible", ":pressed"];
118
- var ICON_NAMES2 = ["a-large-small", "action-chat", "action-create", "action-default", "action-repository", "action-run", "action-suggestion", "activity", "anchor", "app-editor-chat", "archive", "archive-restore", "arrow-down", "arrow-down-left", "arrow-left", "arrow-left-right", "arrow-right", "arrow-up-right", "at-sign", "atom", "audio-lines", "auth-passkey", "award", "ban", "bell", "bell-off", "bold", "book-open", "bookmark", "bot", "boxes", "braces", "brain", "briefcase", "brush-cleaning", "bug", "building", "building-2", "calculator", "calendar", "calendar-days", "call-end", "call-incoming", "call-mute", "call-speaker", "call-speaker-off", "call-unmute", "camera", "car", "chart-line", "check", "check-check", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "chevrons-up-down", "circle", "circle-arrow-up", "circle-check", "circle-dashed", "circle-dot", "circle-question-mark", "circle-slash", "circle-stop", "circle-user", "circle-x", "clipboard-list", "clock", "cloud", "code", "coding-assistant", "coding-command", "coding-compact", "coding-diff", "coding-ended", "coding-in-review", "coding-needs-input", "coding-plan", "coding-running", "coding-stop", "coding-subagent", "coding-tool", "coffee", "compass", "computer", "copy", "corner-down-right", "cpu", "credit-card", "crown", "database", "download", "droplet", "dumbbell", "ear", "editor-bold", "editor-clear-formatting", "editor-code", "editor-emoji", "editor-heading-1", "editor-heading-2", "editor-heading-3", "editor-image", "editor-issue-ref", "editor-italic", "editor-link", "editor-list", "editor-list-ordered", "editor-list-todo", "editor-mention", "editor-quote", "editor-strikethrough", "editor-text", "editor-text-format", "editor-unlink", "ellipsis", "ellipsis-vertical", "event-assignee-changed", "event-board-moved", "event-estimate-changed", "event-label-added", "event-label-removed", "event-priority-changed", "event-relation-added", "event-relation-removed", "event-status-changed", "event-title-changed", "external-link", "eye", "eye-off", "fast-forward", "file", "file-diff", "file-pen-line", "file-text", "fingerprint", "flag", "flame", "flask-conical", "fold-vertical", "folder", "folder-kanban", "folder-open", "gamepad-2", "gauge", "gem", "gift", "git-branch", "git-merge", "git-pull-request", "github", "globe", "graduation-cap", "guide-changes", "hammer", "hand", "hard-drive", "hash", "heading-1", "heading-2", "heading-3", "headphones", "heart", "heart-off", "history", "hourglass", "house", "image", "images", "inbox", "info", "italic", "key", "landmark", "laptop", "layers", "layers-2", "layout-grid", "leaf", "lightbulb", "link", "link-2", "list", "list-checks", "list-end", "list-ordered", "list-todo", "list-tree", "loader-circle", "lock", "lock-open", "log-in", "log-out", "mail", "mail-open", "map", "map-pin", "maximize-2", "media-fast-forward", "media-rewind", "media-skip-next", "media-skip-previous", "media-volume-down", "media-volume-mute", "media-volume-off", "media-volume-up", "megaphone", "menu", "message-circle", "message-square", "message-square-plus", "message-square-reply", "mic", "mic-off", "microscope", "minimize-2", "minus", "monitor", "monitor-off", "moon", "mountain", "move", "music", "nav-account", "nav-actions", "nav-admin", "nav-apps", "nav-boards", "nav-changelog", "nav-computer", "nav-create-issue", "nav-devices", "nav-drafts", "nav-files", "nav-getting-started", "nav-inbox", "nav-issues", "nav-my-issues", "nav-notifications", "nav-rail-collapse", "nav-rail-expand", "nav-report-bug", "nav-search", "nav-settings", "nav-sign-out", "nav-source-control", "nav-team-switcher", "nav-terminal", "nav-threads", "newspaper", "notification-agent-message", "notification-issue-assigned", "notification-issue-comment", "notification-issue-created", "notification-issue-mention", "notification-issue-status-changed", "notification-mark-read", "notification-mute", "notification-pr-merged", "notification-pr-opened", "notification-reporter-reply", "notification-session-blocked", "os-apple", "os-linux", "os-windows", "package", "paintbrush", "palette", "panel-left-close", "panel-left-open", "paperclip", "pause", "pen-tool", "pencil", "phone", "phone-incoming", "phone-off", "pin", "pin-off", "plane", "play", "plug", "plus", "pr-batch", "pr-closed", "pr-draft", "pr-merged", "pr-open", "pr-stack", "printer", "priority-high", "priority-low", "priority-medium", "priority-none", "priority-urgent", "progress-1-4", "progress-1-5", "progress-2-4", "progress-2-5", "progress-3-4", "progress-3-5", "progress-4-5", "puzzle", "qr-code", "quote", "refresh-cw", "relation-blocked-by", "relation-blocks", "relation-duplicate", "relation-parent", "relation-related", "relation-section", "relation-sub-issue", "remove-formatting", "repeat", "rewind", "rocket", "rotate-ccw", "run-pause", "run-resume", "sc-push", "scale", "scan-line", "search", "search-x", "send", "server", "session-shell", "session-tree", "settings", "settings-about", "settings-account", "settings-agents", "settings-api", "settings-billing", "settings-boards", "settings-general", "settings-import", "settings-issues", "settings-labels", "settings-licenses", "settings-local-repos", "settings-mcp", "settings-members", "settings-notifications", "settings-rate", "settings-repositories", "settings-servers", "settings-sessions", "settings-statuses", "settings-storage", "settings-sync", "settings-tools", "settings-voice", "settings-widget", "share-2", "shield", "shield-check", "shield-question-mark", "shopping-bag", "shopping-cart", "signal-high", "signal-low", "signal-medium", "skip-back", "skip-forward", "sliders-horizontal", "smartphone", "smile", "sparkles", "square", "square-check", "square-kanban", "square-minus", "square-pen", "square-slash", "square-terminal", "star", "star-half", "star-off", "status-backlog", "status-cancelled", "status-done", "status-duplicate", "status-in-progress", "status-in-review", "status-todo", "stethoscope", "store", "strikethrough", "sun", "support-open", "support-resolved", "tag", "target", "terminal", "thread-stories", "tool-script", "trace-background", "trace-chevron", "trace-completed", "trace-edit", "trace-failed", "trace-fetch", "trace-read", "trace-reasoning", "trace-search", "trace-subagent", "trace-task-done", "trace-task-pending", "trace-task-running", "trace-terminal", "trace-todo", "trace-tool", "trash-2", "tree-pine", "triangle-alert", "trigger-event", "trigger-schedule", "trophy", "truck", "type", "ui-add", "ui-agent-source", "ui-archive", "ui-arrow-down", "ui-arrow-right", "ui-assignee", "ui-attach", "ui-avatar-placeholder", "ui-back", "ui-branch", "ui-check", "ui-checklist", "ui-chevron-down", "ui-chevron-left", "ui-chevron-right", "ui-chevron-up", "ui-clean", "ui-clear", "ui-clock", "ui-close", "ui-cloud", "ui-copy", "ui-delete", "ui-delete-account", "ui-device", "ui-device-default", "ui-device-offline", "ui-dock-side", "ui-docs", "ui-download", "ui-due-date", "ui-edit", "ui-empty-search", "ui-error", "ui-estimate", "ui-external-link", "ui-favorite-off", "ui-file", "ui-float", "ui-folder", "ui-folder-open", "ui-fullscreen", "ui-fullscreen-exit", "ui-github", "ui-help", "ui-hide", "ui-history", "ui-hold", "ui-icon-placeholder", "ui-indeterminate", "ui-info", "ui-invite", "ui-issue", "ui-link", "ui-loading", "ui-mail", "ui-mark-read", "ui-mark-unread", "ui-mcp", "ui-member", "ui-menu", "ui-minus", "ui-more", "ui-more-vertical", "ui-offline", "ui-organization", "ui-owner", "ui-permission", "ui-pin", "ui-print", "ui-private", "ui-properties", "ui-qr-code", "ui-queued", "ui-read", "ui-redock", "ui-refresh", "ui-remove-member", "ui-repeat", "ui-repository", "ui-scan", "ui-selected", "ui-selector", "ui-send", "ui-server", "ui-share", "ui-sign-in", "ui-sign-out", "ui-staging", "ui-star-half", "ui-star-off", "ui-stop", "ui-submit", "ui-subscribe", "ui-success", "ui-swap", "ui-team", "ui-unarchive", "ui-unassigned", "ui-undo", "ui-undock", "ui-unlock", "ui-unpin", "ui-unselected", "ui-unsubscribe", "ui-update", "ui-usage", "ui-warning", "ui-watch", "ui-widget", "undo-2", "unlink", "upload", "user", "user-minus", "user-plus", "user-x", "users", "video", "voice-call", "voice-level", "volume-1", "volume-2", "volume-off", "volume-x", "wallet", "wifi-off", "work-faces", "work-results", "workflow", "wrench", "x", "zap"];
123
+ var ICON_NAMES2 = ["a-large-small", "action-chat", "action-create", "action-default", "action-repository", "action-run", "action-suggestion", "activity", "anchor", "app-editor-chat", "archive", "archive-restore", "arrow-down", "arrow-down-left", "arrow-left", "arrow-left-right", "arrow-right", "arrow-up-right", "at-sign", "atom", "audio-lines", "auth-passkey", "award", "ban", "bell", "bell-off", "bold", "book-open", "bookmark", "bot", "boxes", "braces", "brain", "briefcase", "brush-cleaning", "bug", "building", "building-2", "calculator", "calendar", "calendar-days", "call-end", "call-incoming", "call-mute", "call-speaker", "call-speaker-off", "call-unmute", "camera", "car", "chart-line", "check", "check-check", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "chevrons-up-down", "ci-failed", "ci-passed", "ci-queued", "ci-running", "ci-skipped", "circle", "circle-arrow-up", "circle-check", "circle-dashed", "circle-dot", "circle-question-mark", "circle-slash", "circle-stop", "circle-user", "circle-x", "clipboard-list", "clock", "cloud", "code", "coding-assistant", "coding-command", "coding-compact", "coding-diff", "coding-ended", "coding-in-review", "coding-needs-input", "coding-plan", "coding-running", "coding-stop", "coding-subagent", "coding-tool", "coffee", "compass", "computer", "copy", "corner-down-right", "cpu", "credit-card", "crown", "database", "download", "droplet", "dumbbell", "ear", "editor-bold", "editor-clear-formatting", "editor-code", "editor-emoji", "editor-heading-1", "editor-heading-2", "editor-heading-3", "editor-image", "editor-issue-ref", "editor-italic", "editor-link", "editor-list", "editor-list-ordered", "editor-list-todo", "editor-mention", "editor-quote", "editor-strikethrough", "editor-text", "editor-text-format", "editor-unlink", "ellipsis", "ellipsis-vertical", "event-assignee-changed", "event-board-moved", "event-estimate-changed", "event-label-added", "event-label-removed", "event-priority-changed", "event-relation-added", "event-relation-removed", "event-status-changed", "event-title-changed", "external-link", "eye", "eye-off", "fast-forward", "file", "file-diff", "file-pen-line", "file-text", "fingerprint", "flag", "flame", "flask-conical", "fold-vertical", "folder", "folder-kanban", "folder-open", "gamepad-2", "gauge", "gem", "gift", "git-branch", "git-merge", "git-pull-request", "github", "globe", "graduation-cap", "guide-changes", "hammer", "hand", "hard-drive", "hash", "heading-1", "heading-2", "heading-3", "headphones", "heart", "heart-off", "history", "hourglass", "house", "image", "images", "inbox", "info", "italic", "key", "landmark", "laptop", "layers", "layers-2", "layout-grid", "leaf", "lightbulb", "link", "link-2", "list", "list-checks", "list-end", "list-ordered", "list-todo", "list-tree", "loader-circle", "lock", "lock-open", "log-in", "log-out", "mail", "mail-open", "map", "map-pin", "maximize-2", "media-fast-forward", "media-rewind", "media-skip-next", "media-skip-previous", "media-volume-down", "media-volume-mute", "media-volume-off", "media-volume-up", "megaphone", "menu", "message-circle", "message-square", "message-square-plus", "message-square-reply", "mic", "mic-off", "microscope", "minimize-2", "minus", "monitor", "monitor-off", "moon", "mountain", "move", "music", "nav-account", "nav-actions", "nav-admin", "nav-apps", "nav-boards", "nav-changelog", "nav-computer", "nav-create-issue", "nav-devices", "nav-drafts", "nav-files", "nav-getting-started", "nav-inbox", "nav-issues", "nav-my-issues", "nav-notifications", "nav-rail-collapse", "nav-rail-expand", "nav-report-bug", "nav-search", "nav-settings", "nav-sign-out", "nav-source-control", "nav-team-switcher", "nav-terminal", "nav-threads", "newspaper", "notification-agent-message", "notification-agent-signed-out", "notification-issue-assigned", "notification-issue-comment", "notification-issue-created", "notification-issue-mention", "notification-issue-status-changed", "notification-mark-read", "notification-mute", "notification-pr-merged", "notification-pr-opened", "notification-reporter-reply", "notification-session-blocked", "os-apple", "os-linux", "os-windows", "package", "paintbrush", "palette", "panel-left-close", "panel-left-open", "paperclip", "pause", "pen-tool", "pencil", "phone", "phone-incoming", "phone-off", "pin", "pin-off", "plane", "play", "plug", "plus", "pr-batch", "pr-closed", "pr-draft", "pr-merged", "pr-open", "pr-stack", "printer", "priority-high", "priority-low", "priority-medium", "priority-none", "priority-urgent", "progress-1-4", "progress-1-5", "progress-2-4", "progress-2-5", "progress-3-4", "progress-3-5", "progress-4-5", "puzzle", "qr-code", "quote", "refresh-cw", "relation-blocked-by", "relation-blocks", "relation-duplicate", "relation-parent", "relation-related", "relation-section", "relation-sub-issue", "remove-formatting", "repeat", "rewind", "rocket", "rotate-ccw", "run-pause", "run-resume", "sc-push", "scale", "scan-line", "search", "search-x", "send", "server", "session-shell", "session-tree", "settings", "settings-about", "settings-account", "settings-agents", "settings-api", "settings-billing", "settings-boards", "settings-general", "settings-import", "settings-issues", "settings-labels", "settings-licenses", "settings-local-repos", "settings-mcp", "settings-members", "settings-notifications", "settings-rate", "settings-repositories", "settings-servers", "settings-sessions", "settings-statuses", "settings-storage", "settings-sync", "settings-tools", "settings-voice", "settings-widget", "share-2", "shield", "shield-check", "shield-question-mark", "shopping-bag", "shopping-cart", "signal-high", "signal-low", "signal-medium", "skip-back", "skip-forward", "sliders-horizontal", "smartphone", "smile", "sparkles", "square", "square-check", "square-kanban", "square-minus", "square-pen", "square-slash", "square-terminal", "star", "star-half", "star-off", "status-backlog", "status-cancelled", "status-done", "status-duplicate", "status-in-progress", "status-in-review", "status-todo", "stethoscope", "store", "strikethrough", "sun", "support-open", "support-resolved", "tag", "target", "terminal", "thread-stories", "tool-script", "trace-background", "trace-chevron", "trace-completed", "trace-edit", "trace-failed", "trace-fetch", "trace-read", "trace-reasoning", "trace-search", "trace-subagent", "trace-task-done", "trace-task-pending", "trace-task-running", "trace-terminal", "trace-todo", "trace-tool", "trash-2", "tree-pine", "triangle-alert", "trigger-event", "trigger-schedule", "trophy", "truck", "type", "ui-add", "ui-agent-source", "ui-archive", "ui-arrow-down", "ui-arrow-right", "ui-assignee", "ui-attach", "ui-avatar-placeholder", "ui-back", "ui-branch", "ui-check", "ui-checklist", "ui-chevron-down", "ui-chevron-left", "ui-chevron-right", "ui-chevron-up", "ui-clean", "ui-clear", "ui-clock", "ui-close", "ui-cloud", "ui-copy", "ui-delete", "ui-delete-account", "ui-device", "ui-device-default", "ui-device-offline", "ui-dock-side", "ui-docs", "ui-download", "ui-due-date", "ui-edit", "ui-empty-search", "ui-error", "ui-estimate", "ui-external-link", "ui-favorite-off", "ui-file", "ui-float", "ui-folder", "ui-folder-open", "ui-fullscreen", "ui-fullscreen-exit", "ui-github", "ui-help", "ui-hide", "ui-history", "ui-hold", "ui-icon-placeholder", "ui-indeterminate", "ui-info", "ui-invite", "ui-issue", "ui-link", "ui-loading", "ui-mail", "ui-mark-read", "ui-mark-unread", "ui-mcp", "ui-member", "ui-menu", "ui-minus", "ui-more", "ui-more-vertical", "ui-offline", "ui-organization", "ui-owner", "ui-permission", "ui-pin", "ui-print", "ui-private", "ui-properties", "ui-qr-code", "ui-queued", "ui-read", "ui-redock", "ui-refresh", "ui-remove-member", "ui-repeat", "ui-repository", "ui-scan", "ui-selected", "ui-selector", "ui-send", "ui-server", "ui-share", "ui-sign-in", "ui-sign-out", "ui-staging", "ui-star-half", "ui-star-off", "ui-stop", "ui-submit", "ui-subscribe", "ui-success", "ui-swap", "ui-team", "ui-unarchive", "ui-unassigned", "ui-undo", "ui-undock", "ui-unlock", "ui-unpin", "ui-unselected", "ui-unsubscribe", "ui-update", "ui-usage", "ui-warning", "ui-watch", "ui-widget", "undo-2", "unlink", "upload", "user", "user-minus", "user-plus", "user-x", "users", "video", "voice-call", "voice-level", "volume-1", "volume-2", "volume-off", "volume-x", "wallet", "wifi-off", "work-faces", "work-results", "workflow", "wrench", "x", "zap"];
119
124
  var FUNCTION_NAMES2 = ["required", "regex", "length", "numeric", "email", "formatString", "formatNumber", "formatCurrency", "formatDate", "pluralize", "openUrl", "and", "or", "not", "percent", "add", "sub", "eq", "lt", "clamp", "cond", "fallback", "concat", "coalesce", "text", "map", "len", "fill", "set", "formatPercent", "formatRelativeTime", "filter", "bind"];
120
125
  var BASIC_COMPONENT_MAP2 = { Text: "Text", Image: "Image", Icon: "Icon", Video: "Video", AudioPlayer: "AudioPlayer", Row: "Stack", Column: "Stack", List: "List", Card: "Card", Tabs: "Tabs", Modal: "Dialog", Divider: "Separator", Button: "Button", TextField: "Input", CheckBox: "Checkbox", ChoicePicker: "Radio", Slider: "Slider", DateTimeInput: "DatePicker" };
121
126
  var BASIC_ICON_MAP2 = { accountCircle: "ui-assignee", add: "ui-add", arrowBack: "ui-back", arrowForward: "ui-arrow-right", attachFile: "ui-attach", calendarToday: "calendar", call: "phone", camera: "camera", check: "ui-check", close: "ui-close", delete: "ui-delete", download: "ui-download", edit: "ui-edit", event: "ui-due-date", error: "ui-error", fastForward: "media-fast-forward", favorite: "heart", favoriteOff: "ui-favorite-off", folder: "ui-folder", help: "ui-help", home: "house", info: "ui-info", locationOn: "map-pin", lock: "ui-private", lockOpen: "ui-unlock", mail: "ui-mail", menu: "ui-menu", moreVert: "ui-more-vertical", moreHoriz: "ui-more", notificationsOff: "ui-unsubscribe", notifications: "ui-subscribe", pause: "run-pause", payment: "credit-card", person: "ui-avatar-placeholder", phone: "smartphone", photo: "image", play: "action-run", print: "ui-print", refresh: "ui-refresh", rewind: "media-rewind", search: "nav-search", send: "ui-send", settings: "nav-settings", share: "ui-share", shoppingCart: "shopping-cart", skipNext: "media-skip-next", skipPrevious: "media-skip-previous", star: "star", starHalf: "ui-star-half", starOff: "ui-star-off", stop: "ui-stop", upload: "sc-push", visibility: "ui-watch", visibilityOff: "ui-hide", volumeDown: "media-volume-down", volumeMute: "media-volume-mute", volumeOff: "media-volume-off", volumeUp: "media-volume-up", warning: "ui-warning" };
122
127
  var BASIC_PLACEHOLDER_ICON2 = "ui-icon-placeholder";
123
128
  // packages/exponential-ui/catalog/strings.json
124
129
  var strings_default = {
125
- $comment: "Round 1 (docs/round-1-contract.md §4): the built-in UI STRINGS every renderer shows — the copy no author writes (a Select's search placeholder, the calendar's month buttons, the copy button, the Pagination arrows' labels). Keys are the ids, values the English defaults. A renderer ships this table (generated into TS/Swift/Kotlin/Rust as STRING_IDS + STRING_DEFAULTS) and lets the HOST override any id per surface (`strings: {search: \"Suchen…\"}`); the catalog refers to an entry as `$string.<id>` in a prop default or a macro template (`$string.previous`), which the renderer resolves at bind time like a token. `{name}` placeholders are filled by the renderer (src/strings.ts formatString; a macro template uses `$fill` → the core `fill` function): a sentence is ONE id with placeholders, never concatenated fragments. Round 2 adds the names the renderers still hard-coded (`invalidValue` = a failed check without a message, `message` = the Composer field, `codeBlock` = an untitled CodeBlock, `dialog` = an untitled Dialog/Drawer, `table` = an uncaptioned Table, `carousel`/`slide` = the carousel's role descriptions, `resize` = a Resizable handle). EXP-1259 adds `closeTab` and `newTab` (the Tabs close glyph and + button). Append-only (round 1 dropped the unused fragment `of`). VAPP-162 adds the call buttons (`mute`, `unmute`, `speaker`, `speakerOff`, `endCall`), the Plan answers (`yes`, `no`), the MessageBubble delivery labels (`sending`, `sent`, `read`) and the QrScanner's `scanQrCode` + `cameraUnavailable`.",
130
+ $comment: "Round 1 (docs/round-1-contract.md §4): the built-in UI STRINGS every renderer shows — the copy no author writes (a Select's search placeholder, the calendar's month buttons, the copy button, the Pagination arrows' labels). Keys are the ids, values the English defaults. A renderer ships this table (generated into TS/Swift/Kotlin/Rust as STRING_IDS + STRING_DEFAULTS) and lets the HOST override any id per surface (`strings: {search: \"Suchen…\"}`); the catalog refers to an entry as `$string.<id>` in a prop default or a macro template (`$string.previous`), which the renderer resolves at bind time like a token. `{name}` placeholders are filled by the renderer (src/strings.ts formatString; a macro template uses `$fill` → the core `fill` function): a sentence is ONE id with placeholders, never concatenated fragments. Round 2 adds the names the renderers still hard-coded (`invalidValue` = a failed check without a message, `message` = the Composer field, `codeBlock` = an untitled CodeBlock, `dialog` = an untitled Dialog/Drawer, `table` = an uncaptioned Table, `carousel`/`slide` = the carousel's role descriptions, `resize` = a Resizable handle). EXP-1259 adds `closeTab` and `newTab` (the Tabs close glyph and + button). Append-only (round 1 dropped the unused fragment `of`). VAPP-162 adds the call buttons (`mute`, `unmute`, `speaker`, `speakerOff`, `endCall`), the Plan answers (`yes`, `no`), the MessageBubble delivery labels (`sending`, `sent`, `read`) and the QrScanner's `scanQrCode` + `cameraUnavailable`. EXP-1586 adds the ZoomableImage pill (`zoomIn`, `zoomOut`, `zoomToFit`, `zoomLevel` = the percent button's label, `zoomFit` = its Menu's Fit row).",
126
131
  strings: {
127
132
  back: "Back",
128
133
  breadcrumb: "Breadcrumb",
@@ -155,6 +160,8 @@ var strings_default = {
155
160
  menu: "Menu",
156
161
  message: "Message",
157
162
  more: "More",
163
+ morePictures: "+{count}",
164
+ morePicturesLabel: "{alt}, {count} more",
158
165
  mute: "Mute",
159
166
  newTab: "New tab",
160
167
  next: "Next",
@@ -162,8 +169,13 @@ var strings_default = {
162
169
  no: "No",
163
170
  noResults: "No results",
164
171
  optional: "Optional",
172
+ outline: "Outline",
173
+ outlineRow: "{title}, {count}",
174
+ pageCounter: "{page} / {total}",
165
175
  pageOf: "Page {page} of {total}",
166
176
  pagination: "Pagination",
177
+ pause: "Pause",
178
+ play: "Play",
167
179
  previous: "Previous",
168
180
  previousMonth: "Previous month",
169
181
  ratingStar: "{value} of {max}",
@@ -202,7 +214,12 @@ var strings_default = {
202
214
  unmute: "Unmute",
203
215
  unsupportedFile: "Unsupported file",
204
216
  unsupportedFileNamed: "{name}: Unsupported file",
205
- yes: "Yes"
217
+ yes: "Yes",
218
+ zoomFit: "Fit",
219
+ zoomIn: "Zoom in",
220
+ zoomLevel: "Zoom level",
221
+ zoomOut: "Zoom out",
222
+ zoomToFit: "Zoom to fit"
206
223
  }
207
224
  };
208
225
 
@@ -1079,11 +1096,20 @@ var limits_default = {
1079
1096
  maxMessageBytes: 4194304,
1080
1097
  maxTemplateItems: 1e4,
1081
1098
  maxPointerBytes: 1024,
1082
- maxPointerSegments: 64
1099
+ maxPointerSegments: 64,
1100
+ motion: {
1101
+ $comment: "EXP-1584/1602: the eUI Motion (Lottie) limits, enforced by the one engine (apps/desktop/crates/eui-motion, src/validate.rs Limits) on every renderer through its WASM and uniffi builds. A source past maxBytes (UTF-8 JSON), maxShapes (shape items: objects with a string `ty` inside a layer's `shapes` or a group's `it`) or maxSeconds ((op − ip) / fr) is refused with an issue (`limit-bytes`, `limit-shapes`, `limit-duration`; expressions are refused too: `expression`); maxVertices = path vertices in one sampled frame (checked per frame by the player, not by the validator); maxFps = the highest frame rate a player samples at; maxPlayingPerSurface = Motion components one surface animates at once. Cases: fixtures/motion-validate.json.",
1102
+ maxBytes: 2097152,
1103
+ maxShapes: 5000,
1104
+ maxVertices: 1e5,
1105
+ maxSeconds: 120,
1106
+ maxFps: 60,
1107
+ maxPlayingPerSurface: 8
1108
+ }
1083
1109
  };
1084
1110
 
1085
1111
  // packages/exponential-ui/src/limits.ts
1086
- var LIMITS2 = Object.fromEntries(Object.entries(limits_default).filter(([k]) => !k.startsWith(`$`)));
1112
+ var LIMITS2 = Object.fromEntries(Object.entries(limits_default).filter(([k, v]) => !k.startsWith(`$`) && typeof v === `number`));
1087
1113
  var MAX_COMPONENTS2 = limits_default.maxComponents;
1088
1114
  var MAX_DEPTH2 = limits_default.maxDepth;
1089
1115
  var MAX_MESSAGE_BYTES2 = limits_default.maxMessageBytes;
@@ -3598,6 +3624,123 @@ function toolCall2(name) {
3598
3624
  return m ? { toolId: m[1], tool: m[2] ?? null } : null;
3599
3625
  }
3600
3626
 
3627
+ // packages/exponential-ui/src/host/exposes.ts
3628
+ var EXPOSES_LIMITS2 = host_default.package.exposes.limits;
3629
+ var EXPOSE_RUN_KINDS2 = host_default.package.exposes.runKinds;
3630
+ var RECORD_OPS = host_default.package.exposes.recordOps;
3631
+ var READ_RECORD_OPS = host_default.package.exposes.readRecordOps;
3632
+ var READ_OP_WORDS = host_default.package.exposes.readOpWords;
3633
+ var DESTRUCTIVE_WORDS = host_default.package.exposes.destructiveWords;
3634
+ var isObject5 = (v) => !!v && typeof v === `object` && !Array.isArray(v);
3635
+ var NAME = new RegExp(EXPOSES_LIMITS2.namePattern);
3636
+ var ACTION = new RegExp(host_default.package.exposes.actionPattern);
3637
+ var TEMPLATE = /\$\{input\.([A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*)\}/g;
3638
+ function exposeTemplatePaths2(value) {
3639
+ const out = [];
3640
+ const walk = (v) => {
3641
+ if (typeof v === `string`)
3642
+ for (const m of v.matchAll(TEMPLATE))
3643
+ out.push(m[1]);
3644
+ else if (Array.isArray(v))
3645
+ v.forEach(walk);
3646
+ else if (isObject5(v))
3647
+ Object.values(v).forEach(walk);
3648
+ };
3649
+ walk(value);
3650
+ return out;
3651
+ }
3652
+ var words = (name) => name.toLowerCase().split(/[^a-z]+/).filter(Boolean);
3653
+ function exposeActionAccess2(action) {
3654
+ const last = words(action.split(`.`).at(-1) ?? ``).at(-1);
3655
+ return last !== undefined && READ_OP_WORDS.includes(last) ? `read` : `write`;
3656
+ }
3657
+ function exposeNameDestructive2(name) {
3658
+ return words(name).some((word) => DESTRUCTIVE_WORDS.includes(word));
3659
+ }
3660
+ function upstreamNames(upstreams) {
3661
+ return Array.isArray(upstreams) ? upstreams.filter((u) => typeof u === `string` && u !== ``) : [];
3662
+ }
3663
+ function validateUpstreams2(upstreams) {
3664
+ if (!Array.isArray(upstreams) || upstreams.some((u) => typeof u !== `string` || u === ``))
3665
+ return [{ path: `/upstreams`, message: `upstreams is a list of MCP server names` }];
3666
+ const issues = [];
3667
+ upstreams.forEach((name, i) => {
3668
+ if (upstreams.indexOf(name) !== i)
3669
+ issues.push({ path: `/upstreams/${i}`, message: `duplicate upstream ${name}` });
3670
+ });
3671
+ return issues;
3672
+ }
3673
+ function exposeIssues2(exposes, records, upstreams) {
3674
+ if (!Array.isArray(exposes))
3675
+ return [{ index: null, code: `run`, path: `/exposes`, message: `exposes is a list of tools` }];
3676
+ const issues = [];
3677
+ if (exposes.length > EXPOSES_LIMITS2.maxTools)
3678
+ issues.push({ index: null, code: `tooMany`, path: `/exposes`, message: `exposes lists at most ${EXPOSES_LIMITS2.maxTools} tools` });
3679
+ const kinds = isObject5(records) ? Object.keys(records) : [];
3680
+ const servers = upstreamNames(upstreams);
3681
+ const seen = new Set;
3682
+ exposes.forEach((expose, index) => {
3683
+ const at = `/exposes/${index}`;
3684
+ const fail = (code, path, message) => void issues.push({ index, code, path: `${at}${path}`, message });
3685
+ if (!isObject5(expose))
3686
+ return fail(`run`, ``, `a tool is {name, title, description, input, access, run}`);
3687
+ const name = expose.name;
3688
+ if (typeof name !== `string` || !NAME.test(name) || name.length > EXPOSES_LIMITS2.nameMax || name.includes(EXPOSES_LIMITS2.separator))
3689
+ fail(`name`, `/name`, `name is lowercase letters, digits and _ (at most ${EXPOSES_LIMITS2.nameMax}, no ${EXPOSES_LIMITS2.separator})`);
3690
+ else if (seen.has(name))
3691
+ fail(`duplicate`, `/name`, `duplicate tool ${name}`);
3692
+ else
3693
+ seen.add(name);
3694
+ if (typeof expose.title !== `string` || !expose.title.trim() || expose.title.length > EXPOSES_LIMITS2.titleMax)
3695
+ fail(`title`, `/title`, `title is a non-blank string of at most ${EXPOSES_LIMITS2.titleMax} characters`);
3696
+ if (typeof expose.description !== `string` || !expose.description.trim() || expose.description.length > EXPOSES_LIMITS2.descriptionMax)
3697
+ fail(`description`, `/description`, `description is a non-blank string of at most ${EXPOSES_LIMITS2.descriptionMax} characters`);
3698
+ const input = expose.input;
3699
+ if (!isObject5(input) || input.type !== `object` || input.properties !== undefined && !isObject5(input.properties))
3700
+ fail(`input`, `/input`, `input is a JSON Schema of type object`);
3701
+ if (expose.access !== `read` && expose.access !== `write`)
3702
+ fail(`access`, `/access`, `access is read or write`);
3703
+ const properties = isObject5(input) && isObject5(input.properties) ? input.properties : {};
3704
+ const run = expose.run;
3705
+ if (!isObject5(run) || EXPOSE_RUN_KINDS2.filter((k) => (k in run)).length !== 1)
3706
+ return fail(`run`, `/run`, `run holds exactly one of records, action, upstream`);
3707
+ for (const path of exposeTemplatePaths2(run))
3708
+ if (!Object.prototype.hasOwnProperty.call(properties, path.split(`.`)[0]))
3709
+ fail(`template`, `/run`, `\${input.${path}} names no input property`);
3710
+ let level;
3711
+ if (`records` in run) {
3712
+ const records = run.records;
3713
+ const op = isObject5(records) ? records.op : undefined;
3714
+ if (typeof op !== `string` || !RECORD_OPS.includes(op))
3715
+ return op === `delete` ? fail(`destructive`, `/run/records/op`, `a records delete is destructive: never exposed`) : fail(`run`, `/run/records/op`, `op is ${RECORD_OPS.join(`, `)}`);
3716
+ if (typeof records.kind !== `string` || !kinds.includes(records.kind))
3717
+ fail(`kind`, `/run/records/kind`, `kind names no declared record kind`);
3718
+ level = READ_RECORD_OPS.includes(op) ? `read` : `write`;
3719
+ } else if (`action` in run) {
3720
+ const action = run.action;
3721
+ if (typeof action !== `string` || !ACTION.test(action))
3722
+ return fail(`action`, `/run/action`, `action is a function name like namespace.function`);
3723
+ if (exposeNameDestructive2(action))
3724
+ return fail(`destructive`, `/run/action`, `a destructive action is never exposed`);
3725
+ level = exposeActionAccess2(action);
3726
+ } else {
3727
+ if (typeof run.upstream !== `string` || !servers.includes(run.upstream))
3728
+ fail(`upstream`, `/run/upstream`, `upstream names none of the package's upstreams`);
3729
+ if (typeof run.tool !== `string` || run.tool === ``)
3730
+ return fail(`run`, `/run/tool`, `tool is a non-empty string`);
3731
+ if (exposeNameDestructive2(run.tool))
3732
+ return fail(`destructive`, `/run/tool`, `a destructive tool is never exposed`);
3733
+ return;
3734
+ }
3735
+ if (expose.access === `read` && level === `write`)
3736
+ fail(`accessTooLow`, `/access`, `the run writes: access is write`);
3737
+ });
3738
+ return issues;
3739
+ }
3740
+ function validatePackageExposes2(exposes, records, upstreams) {
3741
+ return exposeIssues2(exposes, records, upstreams).map(({ path, message }) => ({ path, message }));
3742
+ }
3743
+
3601
3744
  // packages/exponential-ui/src/host/package.ts
3602
3745
  var PACKAGE_FORMAT_VERSION2 = 2;
3603
3746
  function supportedCatalogIds2(extensionIds = []) {
@@ -3623,11 +3766,11 @@ function versionSatisfies2(have, want) {
3623
3766
  const [wM, wm, wp] = [Number(w[1]), Number(w[2]), Number(w[3])];
3624
3767
  return hM === wM && (hm > wm || hm === wm && hp >= wp);
3625
3768
  }
3626
- var isObject5 = (v) => !!v && typeof v === `object` && !Array.isArray(v);
3769
+ var isObject6 = (v) => !!v && typeof v === `object` && !Array.isArray(v);
3627
3770
  var POINTER = /^(\/([^/~]|~[01])*)*$/;
3628
3771
  function validatePackage2(pkg, catalogIds = supportedCatalogIds2(), extensions) {
3629
3772
  const issues = [];
3630
- if (!isObject5(pkg))
3773
+ if (!isObject6(pkg))
3631
3774
  return [{ path: ``, message: `a package is an object` }];
3632
3775
  if (pkg.formatVersion !== undefined) {
3633
3776
  if (typeof pkg.formatVersion !== `number` || !Number.isInteger(pkg.formatVersion) || pkg.formatVersion < 1)
@@ -3640,12 +3783,12 @@ function validatePackage2(pkg, catalogIds = supportedCatalogIds2(), extensions)
3640
3783
  issues.push({ path: `/${key}`, message: `${key} is a required string` });
3641
3784
  if (typeof pkg.catalogId === `string` && pkg.catalogId && !catalogIds.includes(pkg.catalogId))
3642
3785
  issues.push({ path: `/catalogId`, message: `unsupported catalog ${pkg.catalogId}` });
3643
- if (!isObject5(pkg.templates) || !Object.keys(pkg.templates).length)
3786
+ if (!isObject6(pkg.templates) || !Object.keys(pkg.templates).length)
3644
3787
  issues.push({ path: `/templates`, message: `templates is a non-empty object` });
3645
3788
  else
3646
3789
  for (const [id, template] of Object.entries(pkg.templates)) {
3647
3790
  const at = `/templates/${id}`;
3648
- if (!isObject5(template)) {
3791
+ if (!isObject6(template)) {
3649
3792
  issues.push({ path: at, message: `a template is an object` });
3650
3793
  continue;
3651
3794
  }
@@ -3655,7 +3798,7 @@ function validatePackage2(pkg, catalogIds = supportedCatalogIds2(), extensions)
3655
3798
  else {
3656
3799
  const ids = new Set;
3657
3800
  components.forEach((c, i) => {
3658
- if (!isObject5(c) || typeof c.id !== `string` || typeof c.component !== `string`)
3801
+ if (!isObject6(c) || typeof c.id !== `string` || typeof c.component !== `string`)
3659
3802
  issues.push({ path: `${at}/components/${i}`, message: `a component needs an id and a component` });
3660
3803
  else if (ids.has(c.id))
3661
3804
  issues.push({ path: `${at}/components/${i}/id`, message: `duplicate id ${c.id}` });
@@ -3671,9 +3814,9 @@ function validatePackage2(pkg, catalogIds = supportedCatalogIds2(), extensions)
3671
3814
  else
3672
3815
  template.bindings.forEach((b, i) => {
3673
3816
  const bp = `${at}/bindings/${i}`;
3674
- if (!isObject5(b) || typeof b.path !== `string` || !POINTER.test(b.path))
3817
+ if (!isObject6(b) || typeof b.path !== `string` || !POINTER.test(b.path))
3675
3818
  issues.push({ path: `${bp}/path`, message: `path is a JSON pointer` });
3676
- if (!isObject5(b) || typeof b.source !== `string` || !parseSource2(b.source))
3819
+ if (!isObject6(b) || typeof b.source !== `string` || !parseSource2(b.source))
3677
3820
  issues.push({ path: `${bp}/source`, message: `source is a scheme:name URI` });
3678
3821
  });
3679
3822
  }
@@ -3681,7 +3824,7 @@ function validatePackage2(pkg, catalogIds = supportedCatalogIds2(), extensions)
3681
3824
  if (pkg.functions !== undefined && (!Array.isArray(pkg.functions) || pkg.functions.some((f) => typeof f !== `string` || !f)))
3682
3825
  issues.push({ path: `/functions`, message: `functions is a list of names or prefix* patterns` });
3683
3826
  if (pkg.records !== undefined) {
3684
- if (!isObject5(pkg.records))
3827
+ if (!isObject6(pkg.records))
3685
3828
  issues.push({ path: `/records`, message: `records is an object of kinds` });
3686
3829
  else
3687
3830
  for (const kind of Object.keys(pkg.records).sort()) {
@@ -3689,7 +3832,7 @@ function validatePackage2(pkg, catalogIds = supportedCatalogIds2(), extensions)
3689
3832
  const at = `/records/${kind}`;
3690
3833
  if (!RECORD_KIND_PATTERN2.test(kind))
3691
3834
  issues.push({ path: at, message: `a kind is lowercase letters, digits and underscores` });
3692
- if (!isObject5(def))
3835
+ if (!isObject6(def))
3693
3836
  issues.push({ path: at, message: `a kind is {schema, title?}` });
3694
3837
  else
3695
3838
  issues.push(...validateRecordSchema2(def.schema, `${at}/schema`));
@@ -3697,29 +3840,33 @@ function validatePackage2(pkg, catalogIds = supportedCatalogIds2(), extensions)
3697
3840
  }
3698
3841
  if (pkg.sources !== undefined && (!Array.isArray(pkg.sources) || pkg.sources.some((f) => typeof f !== `string` || !f)))
3699
3842
  issues.push({ path: `/sources`, message: `sources is a list of scheme:name sources or prefix* patterns` });
3700
- else if (Array.isArray(pkg.sources) && isObject5(pkg.templates))
3843
+ else if (Array.isArray(pkg.sources) && isObject6(pkg.templates))
3701
3844
  for (const [id, template] of Object.entries(pkg.templates)) {
3702
- if (!isObject5(template) || !Array.isArray(template.bindings))
3845
+ if (!isObject6(template) || !Array.isArray(template.bindings))
3703
3846
  continue;
3704
3847
  template.bindings.forEach((b, i) => {
3705
- if (isObject5(b) && typeof b.source === `string` && parseSource2(b.source) && !sourceAllowed2(pkg.sources, b.source))
3848
+ if (isObject6(b) && typeof b.source === `string` && parseSource2(b.source) && !sourceAllowed2(pkg.sources, b.source))
3706
3849
  issues.push({ path: `/templates/${id}/bindings/${i}/source`, message: `source ${b.source} is not in the package's sources` });
3707
3850
  });
3708
3851
  }
3709
- if (isObject5(pkg.templates))
3852
+ if (isObject6(pkg.templates))
3710
3853
  for (const [id, template] of Object.entries(pkg.templates)) {
3711
- if (!isObject5(template) || !Array.isArray(template.bindings))
3854
+ if (!isObject6(template) || !Array.isArray(template.bindings))
3712
3855
  continue;
3713
3856
  template.bindings.forEach((b, i) => {
3714
- const parsed = isObject5(b) && typeof b.source === `string` ? parseSource2(b.source) : null;
3857
+ const parsed = isObject6(b) && typeof b.source === `string` ? parseSource2(b.source) : null;
3715
3858
  if (parsed?.scheme !== RECORDS_SCHEME2)
3716
3859
  return;
3717
- if (!isObject5(pkg.records) || !Object.prototype.hasOwnProperty.call(pkg.records, parsed.name))
3860
+ if (!isObject6(pkg.records) || !Object.prototype.hasOwnProperty.call(pkg.records, parsed.name))
3718
3861
  issues.push({ path: `/templates/${id}/bindings/${i}/source`, message: `records:${parsed.name} names no declared kind` });
3719
3862
  });
3720
3863
  }
3721
3864
  if (pkg.tools !== undefined)
3722
3865
  issues.push(...validateTools2(pkg.tools));
3866
+ if (pkg.upstreams !== undefined)
3867
+ issues.push(...validateUpstreams2(pkg.upstreams));
3868
+ if (pkg.exposes !== undefined)
3869
+ issues.push(...validatePackageExposes2(pkg.exposes, pkg.records, pkg.upstreams));
3723
3870
  if (pkg.extensions !== undefined)
3724
3871
  issues.push(...validateExtensions(pkg.extensions, catalogIds, extensions));
3725
3872
  return issues;
@@ -3731,7 +3878,7 @@ function validateExtensions(list, catalogIds, available) {
3731
3878
  const seen = new Set;
3732
3879
  list.forEach((ext, i) => {
3733
3880
  const at = `/extensions/${i}`;
3734
- if (!isObject5(ext))
3881
+ if (!isObject6(ext))
3735
3882
  return void issues.push({ path: at, message: `an extension is {id, version, components?}` });
3736
3883
  const id = typeof ext.id === `string` && ext.id ? ext.id : null;
3737
3884
  if (!id)
@@ -3790,12 +3937,12 @@ function templateMessages2(pkg, templateId, surfaceId, data) {
3790
3937
  function mergeData2(base, over) {
3791
3938
  if (over === undefined)
3792
3939
  return base;
3793
- if (isObject5(base) && isObject5(over))
3940
+ if (isObject6(base) && isObject6(over))
3794
3941
  return { ...base, ...over };
3795
3942
  return over;
3796
3943
  }
3797
3944
  // packages/exponential-ui/src/host/router.ts
3798
- var isObject6 = (v) => !!v && typeof v === `object` && !Array.isArray(v);
3945
+ var isObject7 = (v) => !!v && typeof v === `object` && !Array.isArray(v);
3799
3946
 
3800
3947
  class HostRouter2 {
3801
3948
  extensionIds;
@@ -3832,8 +3979,8 @@ class HostRouter2 {
3832
3979
  }
3833
3980
  route(message) {
3834
3981
  if (oversized2(message))
3835
- return [this.invalid(isObject6(message) ? surfaceIdOf(message) : ``, LIMIT_ISSUES2.messageBytes)];
3836
- if (!isObject6(message))
3982
+ return [this.invalid(isObject7(message) ? surfaceIdOf(message) : ``, LIMIT_ISSUES2.messageBytes)];
3983
+ if (!isObject7(message))
3837
3984
  return [this.invalid(``, `a message is a JSON object`)];
3838
3985
  if (message.version !== undefined && message.version !== A2UI_VERSION2)
3839
3986
  return [this.invalid(surfaceIdOf(message), `unsupported version ${String(message.version)}`)];
@@ -3842,7 +3989,7 @@ class HostRouter2 {
3842
3989
  return [this.invalid(surfaceIdOf(message), `expected exactly one of ${MESSAGE_KINDS2.join(`, `)}`)];
3843
3990
  const kind = kinds[0];
3844
3991
  const body = message[kind];
3845
- if (!isObject6(body) || typeof body.surfaceId !== `string` || !body.surfaceId)
3992
+ if (!isObject7(body) || typeof body.surfaceId !== `string` || !body.surfaceId)
3846
3993
  return [this.invalid(``, `${kind}.surfaceId is required`)];
3847
3994
  const surfaceId = body.surfaceId;
3848
3995
  switch (kind) {
@@ -3939,7 +4086,7 @@ function oversized2(message) {
3939
4086
  }
3940
4087
  function surfaceIdOf(message) {
3941
4088
  for (const v of Object.values(message))
3942
- if (isObject6(v) && typeof v.surfaceId === `string`)
4089
+ if (isObject7(v) && typeof v.surfaceId === `string`)
3943
4090
  return v.surfaceId;
3944
4091
  return ``;
3945
4092
  }
@@ -4549,7 +4696,7 @@ class McpTransport2 {
4549
4696
  return reply.result;
4550
4697
  }
4551
4698
  }
4552
- export { CATALOG_ID2, LITE_CATALOG_ID2, BASIC_CATALOG_ID2, BASIC_VERSION2, CATALOG_VERSION2, UNKNOWN_COMPONENT_NAME2, COMPONENT_NAMES2, NATIVE_COMPONENTS2, MACRO_COMPONENTS2, LITE_COMPONENTS2, COMPONENT_GROUPS2, SPECIMEN_IDS2, ENUMS2, TOKEN_NAMES2, STYLE_KEY_NAMES2, STYLE_STATE_NAMES2, ICON_NAMES2, FUNCTION_NAMES2, BASIC_COMPONENT_MAP2, BASIC_ICON_MAP2, BASIC_PLACEHOLDER_ICON2, DEFAULT_STRINGS2, STRING_IDS2, parseStringRef2, isStringRef2, stringTable2, formatString2, resolveString2, locale_default, displayString2, currencyDigits2, parseDateValue2, formatPattern2, ENGLISH_DATE_PATTERNS2, ENGLISH_TIME_PATTERN2, ENGLISH_DATE_TIME_JOIN2, fixedOffset2, intlZoneOffset2, relativeTimeUnit2, englishFormatter2, intlFormatter2, FORMAT_FUNCTION_NAMES2, formatFunctions2, ENGLISH_FORMAT_FUNCTIONS2, isBinding2, isCall2, isDynamic2, truthy2, valuesEqual2, clampNumber2, fillTemplate2, evalExpr2, evalConditionValue2, evalCondition2, evalValue2, percent2, filterItems2, CORE_FUNCTIONS2, CORE_FUNCTION_NAMES2, LIMITS2, MAX_COMPONENTS2, MAX_DEPTH2, MAX_MESSAGE_BYTES2, MAX_TEMPLATE_ITEMS2, MAX_POINTER_BYTES2, MAX_POINTER_SEGMENTS2, LIMIT_ISSUES2, absolutePath2, hasItem2, readPath2, readPointer2, writeTokens2, POINTER_ISSUES2, writePointer2, BIND_FUNCTIONS2, BIND_FUNCTION_NAMES2, resolveDynamic2, isVisible2, withOwnWrites2, submitClosesOverlay2, runAction2, isDataSchema2, resolveProp2, resolveNodeProps2, hasRowSlots2, rowScope2, bindRowSlot2, sectionScope2, bindSectionHeader2, bindTree2, treeGuides2, isRowRoot2, applyTreeGuides2, BREAKPOINTS2, isResponsiveValue2, responsiveAt2, propsAt2, expandMacros2, isCallableName2, validateNode2, validateProps2, basicMap2, mapBasicIcon2, mapBasicComponent2, BASIC_TRANSFORM_NAMES2, RESERVED_KEYS2, validVisible2, childTemplate2, reduceSurface2, slotAllowed2, reduceNested2, preorder2, BUILTIN_FUNCTIONS2, matchesPattern2, decideFunction2, combineDecisions2, packagePolicy2, isPrivateHost2, decideUrl2, mediaRequest2, safeHref2, sortKeys2, imageDimensions2, svgDimensions2, imageFrames2, mediaImageWithinLimits2, parseSource2, sourceWithParams2, JsonlDecoder2, decodeJsonl2, SseDecoder2, messagesFromMcpResult2, mcpActionCall2, RECORD_KIND_PATTERN2, RECORD_RESERVED_KEYS2, RECORD_FIELD_TYPES2, RECORD_ITEM_TYPES2, RECORD_FORMATS2, validateRecordSchema2, validateRecord2, RECORDS_SCHEME2, RECORDS_FUNCTIONS2, RECORDS_QUERY2, RECORDS_RESERVED_PARAMS2, parseRecordsSource2, recordsValue2, MemoryRecordStore2, recordsHost2, PACKAGE_FILE_SIGNATURE_CONTEXT2, PACKAGE_FILE_SIGNATURE_ALG2, AUTHOR_KEY_PREFIX2, AUTHOR_NAME_MAX2, canonicalJson2, packageFileSignedBytes2, base64UrlEncode2, base64UrlDecode2, authorPublicKey2, signPackageFile2, verifyPackageFile2, TOOL_ID_PATTERN2, TOOL_KINDS2, validateTools2, toolConsent2, toolConsentKey2, toolCall2, PACKAGE_FORMAT_VERSION2, supportedCatalogIds2, clientCapabilities2, availableExtensions2, versionSatisfies2, validatePackage2, sourceAllowed2, templateMessages2, mergeData2, HostRouter2, normalizePath2, PackageError2, resolveSurfaceTheme2, SurfaceStore2, ExponentialHost2, MemoryTransport2, JsonlStreamTransport2, SseTransport2, WebSocketTransport2, McpTransport2 };
4699
+ export { CATALOG_ID2, LITE_CATALOG_ID2, BASIC_CATALOG_ID2, BASIC_VERSION2, CATALOG_VERSION2, UNKNOWN_COMPONENT_NAME2, COMPONENT_NAMES2, NATIVE_COMPONENTS2, MACRO_COMPONENTS2, LITE_COMPONENTS2, COMPONENT_GROUPS2, SPECIMEN_IDS2, ENUMS2, TOKEN_NAMES2, STYLE_KEY_NAMES2, STYLE_STATE_NAMES2, ICON_NAMES2, FUNCTION_NAMES2, BASIC_COMPONENT_MAP2, BASIC_ICON_MAP2, BASIC_PLACEHOLDER_ICON2, DEFAULT_STRINGS2, STRING_IDS2, parseStringRef2, isStringRef2, stringTable2, formatString2, resolveString2, locale_default, displayString2, currencyDigits2, parseDateValue2, formatPattern2, ENGLISH_DATE_PATTERNS2, ENGLISH_TIME_PATTERN2, ENGLISH_DATE_TIME_JOIN2, fixedOffset2, intlZoneOffset2, relativeTimeUnit2, englishFormatter2, intlFormatter2, FORMAT_FUNCTION_NAMES2, formatFunctions2, ENGLISH_FORMAT_FUNCTIONS2, isBinding2, isCall2, isDynamic2, truthy2, valuesEqual2, clampNumber2, fillTemplate2, evalExpr2, evalConditionValue2, evalCondition2, evalValue2, percent2, filterItems2, CORE_FUNCTIONS2, CORE_FUNCTION_NAMES2, LIMITS2, MAX_COMPONENTS2, MAX_DEPTH2, MAX_MESSAGE_BYTES2, MAX_TEMPLATE_ITEMS2, MAX_POINTER_BYTES2, MAX_POINTER_SEGMENTS2, LIMIT_ISSUES2, absolutePath2, hasItem2, readPath2, readPointer2, writeTokens2, POINTER_ISSUES2, writePointer2, BIND_FUNCTIONS2, BIND_FUNCTION_NAMES2, resolveDynamic2, isVisible2, withOwnWrites2, submitClosesOverlay2, runAction2, isDataSchema2, resolveProp2, resolveNodeProps2, hasRowSlots2, rowScope2, bindRowSlot2, sectionScope2, bindSectionHeader2, bindTree2, treeGuides2, isRowRoot2, applyTreeGuides2, BREAKPOINTS2, isResponsiveValue2, responsiveAt2, propsAt2, expandMacros2, isCallableName2, validateNode2, validateProps2, basicMap2, mapBasicIcon2, mapBasicComponent2, BASIC_TRANSFORM_NAMES2, RESERVED_KEYS2, validVisible2, childTemplate2, reduceSurface2, slotAllowed2, reduceNested2, preorder2, BUILTIN_FUNCTIONS2, matchesPattern2, decideFunction2, combineDecisions2, packagePolicy2, isPrivateHost2, decideUrl2, mediaRequest2, safeHref2, sortKeys2, imageDimensions2, svgDimensions2, imageFrames2, mediaImageWithinLimits2, parseSource2, sourceWithParams2, JsonlDecoder2, decodeJsonl2, SseDecoder2, messagesFromMcpResult2, mcpActionCall2, RECORD_KIND_PATTERN2, RECORD_RESERVED_KEYS2, RECORD_FIELD_TYPES2, RECORD_ITEM_TYPES2, RECORD_FORMATS2, validateRecordSchema2, validateRecord2, RECORDS_SCHEME2, RECORDS_FUNCTIONS2, RECORDS_QUERY2, RECORDS_RESERVED_PARAMS2, parseRecordsSource2, recordsValue2, MemoryRecordStore2, recordsHost2, PACKAGE_FILE_SIGNATURE_CONTEXT2, PACKAGE_FILE_SIGNATURE_ALG2, AUTHOR_KEY_PREFIX2, AUTHOR_NAME_MAX2, canonicalJson2, packageFileSignedBytes2, base64UrlEncode2, base64UrlDecode2, authorPublicKey2, signPackageFile2, verifyPackageFile2, TOOL_ID_PATTERN2, TOOL_KINDS2, validateTools2, toolConsent2, toolConsentKey2, toolCall2, EXPOSES_LIMITS2, EXPOSE_RUN_KINDS2, exposeTemplatePaths2, exposeActionAccess2, exposeNameDestructive2, validateUpstreams2, exposeIssues2, validatePackageExposes2, PACKAGE_FORMAT_VERSION2, supportedCatalogIds2, clientCapabilities2, availableExtensions2, versionSatisfies2, validatePackage2, sourceAllowed2, templateMessages2, mergeData2, HostRouter2, normalizePath2, PackageError2, resolveSurfaceTheme2, SurfaceStore2, ExponentialHost2, MemoryTransport2, JsonlStreamTransport2, SseTransport2, WebSocketTransport2, McpTransport2 };
4553
4700
 
4554
- //# debugId=E72CFA112ABB9DDE64756E2164756E21
4555
- //# sourceMappingURL=index-gtk2gwsb.js.map
4701
+ //# debugId=D45ACF1E76F349B864756E2164756E21
4702
+ //# sourceMappingURL=index-4xczxey5.js.map