@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
package/catalog/a11y.json CHANGED
@@ -208,11 +208,21 @@
208
208
  "Tab reaches the copy button; Enter, Space: copy and announce `copied`"
209
209
  ]
210
210
  },
211
+ "Motion": {
212
+ "role": "img",
213
+ "notes": "img named by label; decorative (hidden) without one; with on.press it is a button (focusable, named by label) and its state machine gets the click",
214
+ "keys": ["Enter/Space: press (with on.press)"]
215
+ },
211
216
  "Image": {
212
217
  "role": "img",
213
218
  "notes": "img (alt = name; decorative when alt is empty)",
214
219
  "keys": []
215
220
  },
221
+ "ZoomableImage": {
222
+ "role": "img",
223
+ "notes": "img (alt = name), focusable; the zoom pill's buttons are named `$string.zoomOut`, `$string.zoomIn`, `$string.zoomToFit` (pressed while at rest) and the percent button `$string.zoomLevel` (its value = the percent, opening a menu whose first row is `$string.zoomFit`)",
224
+ "keys": ["+ / =: zoom in a step", "-: zoom out a step", "0: back to the opening zoom", "1: 100%"]
225
+ },
216
226
  "Icon": {
217
227
  "role": "img",
218
228
  "notes": "img when labelled, hidden otherwise",
@@ -244,12 +254,19 @@
244
254
  },
245
255
  "Carousel": {
246
256
  "role": "region",
247
- "notes": "region, roledescription carousel; each page a group `page i of n`",
257
+ "notes": "region, roledescription carousel; each page a group `page i of n`; the counter `$string.pageCounter` is hidden (each page already says page i of n); each thumbnail a button `page i of n`, aria-current on the current one",
248
258
  "keys": [
249
259
  "ArrowLeft/ArrowRight: previous/next page while focus is inside",
250
260
  "Home/End: first/last page"
251
261
  ]
252
262
  },
263
+ "Mosaic": {
264
+ "role": "group",
265
+ "notes": "group labelled `label`; each tile a button named its picture's `alt`; the `+N` tile reads `alt` then `+N` ($string.morePictures).",
266
+ "keys": [
267
+ "Tab through the tiles; Enter, Space: select"
268
+ ]
269
+ },
253
270
  "Tabs": {
254
271
  "role": "tablist",
255
272
  "notes": "tablist / tab / tabpanel",
@@ -595,6 +612,13 @@
595
612
  "Tab through the links; Enter: select"
596
613
  ]
597
614
  },
615
+ "Outline": {
616
+ "role": "navigation",
617
+ "notes": "navigation labelled by `caption`; each row a link (aria-current=location on the active row) named `title` then the count; press fires `select {id}`.",
618
+ "keys": [
619
+ "Tab through the rows; Enter, Space: select"
620
+ ]
621
+ },
598
622
  "Stepper": {
599
623
  "role": "list",
600
624
  "notes": "list; the current step aria-current=step. Each step a listitem labelled `stepDone`/`stepCurrent`/`stepUpcoming`; the current one aria-current=step ($a11y).",
@@ -319,6 +319,27 @@
319
319
  "running",
320
320
  "done",
321
321
  "declined"
322
+ ],
323
+ "zoomInitial": [
324
+ "auto",
325
+ "fit",
326
+ "fitWidth",
327
+ "actual"
328
+ ],
329
+ "zoomControls": [
330
+ "auto",
331
+ "always",
332
+ "none"
333
+ ],
334
+ "motionDirection": [
335
+ "forward",
336
+ "reverse",
337
+ "alternate"
338
+ ],
339
+ "motionFit": [
340
+ "contain",
341
+ "cover",
342
+ "fill"
322
343
  ]
323
344
  },
324
345
  "defs": {
@@ -594,7 +615,7 @@
594
615
  },
595
616
  "width": {
596
617
  "type": "number",
597
- "description": "A fixed width in px; otherwise columns share the width."
618
+ "description": "A fixed width in px; otherwise columns share the width, never under 120 (a wider table scrolls)."
598
619
  },
599
620
  "align": {
600
621
  "type": "enum",
@@ -618,6 +639,11 @@
618
639
  "decimals": {
619
640
  "type": "number",
620
641
  "description": "Fixed fraction digits of a number, currency or percent column."
642
+ },
643
+ "truncate": {
644
+ "type": "boolean",
645
+ "default": false,
646
+ "description": "One line with an ellipsis; cells wrap otherwise."
621
647
  }
622
648
  }
623
649
  },
@@ -698,6 +724,41 @@
698
724
  "description": "The step's state."
699
725
  }
700
726
  }
727
+ },
728
+ "outlineItem": {
729
+ "description": "One Outline row.",
730
+ "properties": {
731
+ "id": {
732
+ "type": "string",
733
+ "required": true,
734
+ "description": "Reported by `select`."
735
+ },
736
+ "title": {
737
+ "type": "string",
738
+ "required": true,
739
+ "bindable": true,
740
+ "description": "The row text."
741
+ },
742
+ "count": {
743
+ "type": "number",
744
+ "bindable": true,
745
+ "description": "A muted count."
746
+ }
747
+ }
748
+ },
749
+ "picture": {
750
+ "description": "One picture of a Mosaic.",
751
+ "properties": {
752
+ "src": {
753
+ "type": "url",
754
+ "required": true,
755
+ "description": "The image URL."
756
+ },
757
+ "alt": {
758
+ "type": "string",
759
+ "description": "The accessibility description."
760
+ }
761
+ }
701
762
  }
702
763
  },
703
764
  "functions": {
@@ -1037,7 +1098,10 @@
1037
1098
  "Toast.icon.success": "ui-success",
1038
1099
  "Toast.icon.warning": "ui-warning",
1039
1100
  "Toast.icon.error": "ui-error",
1040
- "Unknown.root": "ui-warning"
1101
+ "Unknown.root": "ui-warning",
1102
+ "ZoomableImage.zoomOut": "ui-minus",
1103
+ "ZoomableImage.zoomIn": "ui-add",
1104
+ "ZoomableImage.fit": "ui-fullscreen"
1041
1105
  },
1042
1106
  "components": {
1043
1107
  "Box": {
@@ -1876,6 +1940,71 @@
1876
1940
  "aspectRatio": 1.7777778
1877
1941
  }
1878
1942
  },
1943
+ "ZoomableImage": {
1944
+ "kind": "native",
1945
+ "group": "media",
1946
+ "lite": false,
1947
+ "children": "none",
1948
+ "description": "A picture that zooms (pinch, ⌘-wheel, double-tap) and pans.",
1949
+ "props": {
1950
+ "src": {
1951
+ "type": "url",
1952
+ "required": true,
1953
+ "bindable": true,
1954
+ "description": "The image URL."
1955
+ },
1956
+ "alt": {
1957
+ "type": "string",
1958
+ "required": true,
1959
+ "bindable": true,
1960
+ "description": "The accessibility description."
1961
+ },
1962
+ "naturalWidth": {
1963
+ "type": "number",
1964
+ "description": "Pixel width."
1965
+ },
1966
+ "naturalHeight": {
1967
+ "type": "number",
1968
+ "description": "Pixel height."
1969
+ },
1970
+ "initial": {
1971
+ "type": "enum",
1972
+ "enum": "zoomInitial",
1973
+ "default": "auto",
1974
+ "description": "auto = fitWidth when tall."
1975
+ },
1976
+ "maxScale": {
1977
+ "type": "number",
1978
+ "default": 8,
1979
+ "description": "Largest zoom."
1980
+ },
1981
+ "controls": {
1982
+ "type": "enum",
1983
+ "enum": "zoomControls",
1984
+ "default": "auto",
1985
+ "description": "The zoom pill."
1986
+ },
1987
+ "scale": {
1988
+ "type": "number",
1989
+ "bindable": true,
1990
+ "description": "1 = 100%."
1991
+ },
1992
+ "style": {
1993
+ "type": "style",
1994
+ "description": "Extra Box styles for the viewport."
1995
+ }
1996
+ },
1997
+ "events": [
1998
+ "zoom",
1999
+ "tap"
2000
+ ],
2001
+ "example": {
2002
+ "src": "https://example.com/screenshot.png",
2003
+ "alt": "Screenshot",
2004
+ "naturalWidth": 1440,
2005
+ "naturalHeight": 900
2006
+ }
2007
+ },
1879
2008
  "Icon": {
1880
2009
  "kind": "native",
1881
2010
  "group": "media",
@@ -2069,6 +2198,18 @@
2069
2198
  "type": "boolean",
2070
2199
  "default": true,
2071
2200
  "description": "Shows the page dots."
2201
+ },
2202
+ "counter": {
2203
+ "type": "boolean",
2204
+ "default": false,
2205
+ "description": "Shows `i / n`."
2206
+ },
2207
+ "thumbnails": {
2208
+ "type": "array",
2209
+ "items": {
2210
+ "type": "url"
2211
+ },
2212
+ "description": "A thumbnail URL per page."
2072
2213
  }
2073
2214
  },
2074
2215
  "events": [
@@ -2079,6 +2220,51 @@
2079
2220
  "indicators": true
2080
2221
  }
2081
2222
  },
2223
+ "Mosaic": {
2224
+ "kind": "macro",
2225
+ "group": "media",
2226
+ "lite": false,
2227
+ "children": "none",
2228
+ "description": "Pictures: halves, or one large + two small with `+N`; press fires `select {index}`.",
2229
+ "props": {
2230
+ "pictures": {
2231
+ "type": "array",
2232
+ "items": {
2233
+ "type": "object",
2234
+ "shape": "picture"
2235
+ },
2236
+ "required": true,
2237
+ "description": "The pictures in order."
2238
+ },
2239
+ "label": {
2240
+ "type": "string",
2241
+ "description": "The a11y label."
2242
+ }
2243
+ },
2244
+ "events": [
2245
+ "select"
2246
+ ],
2247
+ "example": {
2248
+ "pictures": [
2249
+ {
2250
+ "src": "https://example.com/editor.png",
2251
+ "alt": "Editor"
2252
+ },
2253
+ {
2254
+ "src": "https://example.com/preview.png",
2255
+ "alt": "Preview"
2256
+ },
2257
+ {
2258
+ "src": "https://example.com/data.png",
2259
+ "alt": "Data"
2260
+ },
2261
+ {
2262
+ "src": "https://example.com/versions.png",
2263
+ "alt": "Versions"
2264
+ }
2265
+ ]
2266
+ }
2267
+ },
2082
2268
  "Tabs": {
2083
2269
  "kind": "native",
2084
2270
  "group": "navigation",
@@ -2129,8 +2315,8 @@
2129
2315
  "value": "issue"
2130
2316
  },
2131
2317
  {
2132
- "label": "Run",
2133
- "value": "run"
2318
+ "label": "Session",
2319
+ "value": "session"
2134
2320
  }
2135
2321
  ],
2136
2322
  "value": "issue"
@@ -2492,6 +2678,56 @@
2492
2678
  ]
2493
2679
  }
2494
2680
  },
2681
+ "Outline": {
2682
+ "kind": "macro",
2683
+ "group": "navigation",
2684
+ "lite": true,
2685
+ "children": "none",
2686
+ "description": "Anchor rows under a caption, one active; press fires `select {id}`.",
2687
+ "props": {
2688
+ "items": {
2689
+ "type": "array",
2690
+ "items": {
2691
+ "type": "object",
2692
+ "shape": "outlineItem"
2693
+ },
2694
+ "required": true,
2695
+ "description": "The rows in order."
2696
+ },
2697
+ "value": {
2698
+ "type": "string",
2699
+ "bindable": true,
2700
+ "description": "The active row id."
2701
+ },
2702
+ "caption": {
2703
+ "type": "string",
2704
+ "description": "The heading."
2705
+ }
2706
+ },
2707
+ "events": [
2708
+ "select"
2709
+ ],
2710
+ "example": {
2711
+ "caption": "Outline",
2712
+ "value": "part-a",
2713
+ "items": [
2714
+ {
2715
+ "id": "current",
2716
+ "title": "Current state"
2717
+ },
2718
+ {
2719
+ "id": "part-a",
2720
+ "title": "Part A: editor-first creation",
2721
+ "count": 5
2722
+ },
2723
+ {
2724
+ "id": "part-b",
2725
+ "title": "Part B: MCP for eApps",
2726
+ "count": 2
2727
+ }
2728
+ ]
2729
+ }
2730
+ },
2495
2731
  "Stepper": {
2496
2732
  "kind": "macro",
2497
2733
  "group": "navigation",
@@ -3404,7 +3640,7 @@
3404
3640
  "*"
3405
3641
  ],
3406
3642
  "slotScope": "row",
3407
- "description": "A data table of typed columns: sorting, selection, widths, alignment, windowed; `slot` columns render components.",
3643
+ "description": "A table of typed columns: sorting, selection, widths, alignment, windowed; `slot` columns render components.",
3408
3644
  "props": {
3409
3645
  "columns": {
3410
3646
  "type": "array",
@@ -3472,7 +3708,7 @@
3472
3708
  "stickyHeader": {
3473
3709
  "type": "boolean",
3474
3710
  "default": false,
3475
- "description": "Keeps the header visible while the rows scroll."
3711
+ "description": "Pins the header while rows scroll."
3476
3712
  }
3477
3713
  },
3478
3714
  "events": [
@@ -5185,6 +5421,190 @@
5185
5421
  "example": {
5186
5422
  "component": "Gauge"
5187
5423
  }
5424
+ },
5425
+ "Motion": {
5426
+ "kind": "native",
5427
+ "group": "media",
5428
+ "lite": true,
5429
+ "children": "none",
5430
+ "description": "A vector animation (Lottie-compatible) drawn identically everywhere: loaders, success states, illustrated empty states, small explainers.",
5431
+ "props": {
5432
+ "layers": {
5433
+ "type": "array",
5434
+ "items": {
5435
+ "type": "object"
5436
+ },
5437
+ "description": "The animation, top layer first, in the composition's px (origin top-left). Layer: {type: shape|solid|null|precomp|text, id?, parent?: id, in?/out? ms, transform?: {anchor, position [x,y], scale [100,100] %, rotation deg clockwise, opacity 0–100}, shapes: […], matte?: {source: id, mode: alpha|luma}, masks?: [{path, mode: add|subtract|intersect}]}. Shapes draw top first; a style paints every shape before it in its group: rect {position (centre), size, radius}, ellipse {position, size}, star|polygon {points, outerRadius, innerRadius}, path {d: SVG path data}; fill {color}, stroke {color, width, cap, join, dash: [len, gap]}, gradient-fill {kind: linear|radial, start, end, stops: [[0, colour], [1, colour]]}; trim {start, end, offset} (percent, draw-on lines), repeater {copies, transform}, round-corners {radius}; group {shapes, transform}. Colours: $color.* tokens (follow light/dark), #hex, or {light, dark}. Animate any value: {keys: [{t: ms, v: value, ease: linear|ease-in|ease-out|ease-in-out|hold|[x1,y1,x2,y2]}, …]}; tokens cannot animate. Keep it small; loops end on their first pose. No expressions."
5438
+ },
5439
+ "size": {
5440
+ "type": "array",
5441
+ "items": {
5442
+ "type": "number"
5443
+ },
5444
+ "description": "The composition [width, height] px (with layers)."
5445
+ },
5446
+ "duration": {
5447
+ "type": "number",
5448
+ "description": "Length in ms (with layers)."
5449
+ },
5450
+ "fps": {
5451
+ "type": "number",
5452
+ "default": 60,
5453
+ "description": "Frames per second."
5454
+ },
5455
+ "assets": {
5456
+ "type": "object",
5457
+ "description": "Precomps {id: {layers}}."
5458
+ },
5459
+ "markers": {
5460
+ "type": "array",
5461
+ "items": {
5462
+ "type": "object"
5463
+ },
5464
+ "description": "Named segments [{name, time, duration}] ms."
5465
+ },
5466
+ "lottie": {
5467
+ "type": "object",
5468
+ "description": "Lottie JSON instead of layers (no expressions)."
5469
+ },
5470
+ "src": {
5471
+ "type": "url",
5472
+ "description": "An attached .json or .lottie instead of layers."
5473
+ },
5474
+ "autoplay": {
5475
+ "type": "boolean",
5476
+ "default": true,
5477
+ "description": "Plays when visible; false shows the poster."
5478
+ },
5479
+ "loop": {
5480
+ "type": "boolean",
5481
+ "default": true,
5482
+ "description": "Repeats; false plays once and holds."
5483
+ },
5484
+ "plays": {
5485
+ "type": "number",
5486
+ "description": "Plays this many times (overrides loop)."
5487
+ },
5488
+ "direction": {
5489
+ "type": "enum",
5490
+ "enum": "motionDirection",
5491
+ "default": "forward",
5492
+ "description": "Forward, reverse, or back and forth."
5493
+ },
5494
+ "speed": {
5495
+ "type": "number",
5496
+ "default": 1,
5497
+ "description": "Speed multiplier."
5498
+ },
5499
+ "segment": {
5500
+ "type": "array",
5501
+ "items": {
5502
+ "type": "number"
5503
+ },
5504
+ "description": "Plays only [from, to] ms."
5505
+ },
5506
+ "marker": {
5507
+ "type": "string",
5508
+ "description": "Plays only this marker."
5509
+ },
5510
+ "progress": {
5511
+ "type": "number",
5512
+ "bindable": true,
5513
+ "description": "Scrubs (0–1) instead of playing."
5514
+ },
5515
+ "play": {
5516
+ "type": "boolean",
5517
+ "bindable": true,
5518
+ "default": true,
5519
+ "description": "Pauses while false."
5520
+ },
5521
+ "poster": {
5522
+ "type": "number",
5523
+ "description": "The still frame (ms) for reduced motion and before play."
5524
+ },
5525
+ "fit": {
5526
+ "type": "enum",
5527
+ "enum": "motionFit",
5528
+ "default": "contain",
5529
+ "description": "How it fills the box."
5530
+ },
5531
+ "slots": {
5532
+ "type": "object",
5533
+ "description": "Lottie slot overrides {slotId: value}."
5534
+ },
5535
+ "stateMachine": {
5536
+ "type": "object",
5537
+ "description": "A dotLottie state machine driving playback (a .lottie src brings its own)."
5538
+ },
5539
+ "inputs": {
5540
+ "type": "object",
5541
+ "bindable": true,
5542
+ "description": "State-machine inputs {name: value}; bind to drive states from data."
5543
+ },
5544
+ "label": {
5545
+ "type": "string",
5546
+ "description": "What it shows, for screen readers."
5547
+ },
5548
+ "style": {
5549
+ "type": "style",
5550
+ "description": "Extra Box styles for the box."
5551
+ }
5552
+ },
5553
+ "events": [
5554
+ "press",
5555
+ "hover",
5556
+ "visible",
5557
+ "complete",
5558
+ "state"
5559
+ ],
5560
+ "example": {
5561
+ "size": [
5562
+ 48,
5563
+ 48
5564
+ ],
5565
+ "duration": 1000,
5566
+ "layers": [
5567
+ {
5568
+ "type": "shape",
5569
+ "transform": {
5570
+ "position": [
5571
+ 24,
5572
+ 24
5573
+ ],
5574
+ "rotation": {
5575
+ "keys": [
5576
+ {
5577
+ "t": 0,
5578
+ "v": 0
5579
+ },
5580
+ {
5581
+ "t": 1000,
5582
+ "v": 360
5583
+ }
5584
+ ]
5585
+ }
5586
+ },
5587
+ "shapes": [
5588
+ {
5589
+ "type": "ellipse",
5590
+ "size": [
5591
+ 36,
5592
+ 36
5593
+ ]
5594
+ },
5595
+ {
5596
+ "type": "trim",
5597
+ "end": 70
5598
+ },
5599
+ {
5600
+ "type": "stroke",
5601
+ "color": "$color.primary",
5602
+ "width": 4
5603
+ }
5604
+ ]
5605
+ }
5606
+ ]
5607
+ }
5188
5608
  }
5189
5609
  }
5190
5610
  }