@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
@@ -735,6 +735,174 @@
735
735
  }
736
736
  ]
737
737
  },
738
+ "ZoomableImage": {
739
+ "root": [
740
+ {
741
+ "style": {
742
+ "backgroundColor": "#00000000"
743
+ }
744
+ }
745
+ ],
746
+ "image": [
747
+ {
748
+ "style": {
749
+ "borderRadius": "$radius.md"
750
+ }
751
+ }
752
+ ],
753
+ "pill": [
754
+ {
755
+ "style": {
756
+ "padding": 4,
757
+ "gap": 2,
758
+ "borderRadius": "$radius.full",
759
+ "backgroundColor": "$color.popover",
760
+ "borderWidth": "$border.hairline",
761
+ "borderColor": "$color.border",
762
+ "boxShadow": "$shadow.lg",
763
+ "backdropBlur": "$blur.lg"
764
+ }
765
+ }
766
+ ],
767
+ "zoomOut": [
768
+ {
769
+ "style": {
770
+ "width": 28,
771
+ "height": 28,
772
+ "borderRadius": "$radius.full",
773
+ "color": "$color.foreground",
774
+ "backgroundColor": "#00000000",
775
+ "transition": "$motion.fast"
776
+ }
777
+ },
778
+ {
779
+ "when": {
780
+ "state": "hover"
781
+ },
782
+ "style": {
783
+ "backgroundColor": "$color.accent",
784
+ "color": "$color.accentForeground"
785
+ }
786
+ },
787
+ {
788
+ "when": {
789
+ "state": "disabled"
790
+ },
791
+ "style": {
792
+ "opacity": "$opacity.disabled"
793
+ }
794
+ }
795
+ ],
796
+ "percent": [
797
+ {
798
+ "style": {
799
+ "height": 28,
800
+ "paddingHorizontal": "$spacing.md",
801
+ "borderRadius": "$radius.full",
802
+ "color": "$color.foreground",
803
+ "backgroundColor": "#00000000",
804
+ "fontFamily": "$type.family.sans",
805
+ "fontSize": "$type.size.sm",
806
+ "lineHeight": "$type.lineHeight.sm",
807
+ "fontWeight": "$type.weight.medium",
808
+ "transition": "$motion.fast"
809
+ }
810
+ },
811
+ {
812
+ "when": {
813
+ "state": "hover"
814
+ },
815
+ "style": {
816
+ "backgroundColor": "$color.accent",
817
+ "color": "$color.accentForeground"
818
+ }
819
+ },
820
+ {
821
+ "when": {
822
+ "state": "disabled"
823
+ },
824
+ "style": {
825
+ "opacity": "$opacity.disabled"
826
+ }
827
+ }
828
+ ],
829
+ "zoomIn": [
830
+ {
831
+ "style": {
832
+ "width": 28,
833
+ "height": 28,
834
+ "borderRadius": "$radius.full",
835
+ "color": "$color.foreground",
836
+ "backgroundColor": "#00000000",
837
+ "transition": "$motion.fast"
838
+ }
839
+ },
840
+ {
841
+ "when": {
842
+ "state": "hover"
843
+ },
844
+ "style": {
845
+ "backgroundColor": "$color.accent",
846
+ "color": "$color.accentForeground"
847
+ }
848
+ },
849
+ {
850
+ "when": {
851
+ "state": "disabled"
852
+ },
853
+ "style": {
854
+ "opacity": "$opacity.disabled"
855
+ }
856
+ }
857
+ ],
858
+ "divider": [
859
+ {
860
+ "style": {
861
+ "width": 1,
862
+ "height": 16,
863
+ "backgroundColor": "$color.border"
864
+ }
865
+ }
866
+ ],
867
+ "fit": [
868
+ {
869
+ "style": {
870
+ "width": 28,
871
+ "height": 28,
872
+ "borderRadius": "$radius.full",
873
+ "color": "$color.foreground",
874
+ "backgroundColor": "#00000000",
875
+ "transition": "$motion.fast"
876
+ }
877
+ },
878
+ {
879
+ "when": {
880
+ "state": "hover"
881
+ },
882
+ "style": {
883
+ "backgroundColor": "$color.accent",
884
+ "color": "$color.accentForeground"
885
+ }
886
+ },
887
+ {
888
+ "when": {
889
+ "state": "disabled"
890
+ },
891
+ "style": {
892
+ "opacity": "$opacity.disabled"
893
+ }
894
+ },
895
+ {
896
+ "when": {
897
+ "state": "selected"
898
+ },
899
+ "style": {
900
+ "backgroundColor": "$color.accent",
901
+ "color": "$color.accentForeground"
902
+ }
903
+ }
904
+ ]
905
+ },
738
906
  "QrCode": {
739
907
  "root": [
740
908
  {
@@ -3419,6 +3587,212 @@
3419
3587
  "backgroundColor": "$color.primary"
3420
3588
  }
3421
3589
  }
3590
+ ],
3591
+ "counter": [
3592
+ {
3593
+ "style": {
3594
+ "height": 20,
3595
+ "paddingHorizontal": "$spacing.sm",
3596
+ "borderRadius": "$radius.full",
3597
+ "backgroundColor": "#0000008c",
3598
+ "color": "#ffffff",
3599
+ "fontSize": "$type.size.xs",
3600
+ "lineHeight": 20,
3601
+ "fontWeight": "$type.weight.medium"
3602
+ }
3603
+ }
3604
+ ],
3605
+ "thumbnails": [
3606
+ {
3607
+ "style": {
3608
+ "gap": "$spacing.sm"
3609
+ }
3610
+ }
3611
+ ],
3612
+ "thumbnail": [
3613
+ {
3614
+ "style": {
3615
+ "width": 52,
3616
+ "height": 52,
3617
+ "borderRadius": "$radius.md",
3618
+ "borderWidth": "$border.thick",
3619
+ "borderColor": "#00000000",
3620
+ "backgroundColor": "$color.muted",
3621
+ "opacity": 0.7,
3622
+ "transition": "$motion.fast",
3623
+ "transitionEasing": "$ease.standard"
3624
+ }
3625
+ },
3626
+ {
3627
+ "when": {
3628
+ "state": "hover"
3629
+ },
3630
+ "style": {
3631
+ "opacity": 1
3632
+ }
3633
+ },
3634
+ {
3635
+ "when": {
3636
+ "state": "focus"
3637
+ },
3638
+ "style": {
3639
+ "borderColor": "$color.ring"
3640
+ }
3641
+ },
3642
+ {
3643
+ "when": {
3644
+ "state": "selected"
3645
+ },
3646
+ "style": {
3647
+ "borderColor": "$color.foreground",
3648
+ "opacity": 1
3649
+ }
3650
+ }
3651
+ ]
3652
+ },
3653
+ "Mosaic": {
3654
+ "root": [
3655
+ {
3656
+ "style": {
3657
+ "gap": 10
3658
+ }
3659
+ }
3660
+ ],
3661
+ "side": [
3662
+ {
3663
+ "style": {
3664
+ "gap": 10
3665
+ }
3666
+ }
3667
+ ],
3668
+ "lead": [
3669
+ {
3670
+ "style": {
3671
+ "borderRadius": "$radius.lg",
3672
+ "borderWidth": "$border.hairline",
3673
+ "borderColor": "$color.border",
3674
+ "backgroundColor": "$color.muted",
3675
+ "transition": "$motion.fast",
3676
+ "transitionEasing": "$ease.standard"
3677
+ }
3678
+ },
3679
+ {
3680
+ "when": {
3681
+ "state": "hover"
3682
+ },
3683
+ "style": {
3684
+ "opacity": 0.92
3685
+ }
3686
+ },
3687
+ {
3688
+ "when": {
3689
+ "state": "focus"
3690
+ },
3691
+ "style": {
3692
+ "borderColor": "$color.ring"
3693
+ }
3694
+ }
3695
+ ],
3696
+ "pair": [
3697
+ {
3698
+ "style": {
3699
+ "borderRadius": "$radius.lg",
3700
+ "borderWidth": "$border.hairline",
3701
+ "borderColor": "$color.border",
3702
+ "backgroundColor": "$color.muted",
3703
+ "transition": "$motion.fast",
3704
+ "transitionEasing": "$ease.standard"
3705
+ }
3706
+ },
3707
+ {
3708
+ "when": {
3709
+ "state": "hover"
3710
+ },
3711
+ "style": {
3712
+ "opacity": 0.92
3713
+ }
3714
+ },
3715
+ {
3716
+ "when": {
3717
+ "state": "focus"
3718
+ },
3719
+ "style": {
3720
+ "borderColor": "$color.ring"
3721
+ }
3722
+ }
3723
+ ],
3724
+ "top": [
3725
+ {
3726
+ "style": {
3727
+ "borderRadius": "$radius.lg",
3728
+ "borderWidth": "$border.hairline",
3729
+ "borderColor": "$color.border",
3730
+ "backgroundColor": "$color.muted",
3731
+ "transition": "$motion.fast",
3732
+ "transitionEasing": "$ease.standard"
3733
+ }
3734
+ },
3735
+ {
3736
+ "when": {
3737
+ "state": "hover"
3738
+ },
3739
+ "style": {
3740
+ "opacity": 0.92
3741
+ }
3742
+ },
3743
+ {
3744
+ "when": {
3745
+ "state": "focus"
3746
+ },
3747
+ "style": {
3748
+ "borderColor": "$color.ring"
3749
+ }
3750
+ }
3751
+ ],
3752
+ "bottom": [
3753
+ {
3754
+ "style": {
3755
+ "borderRadius": "$radius.lg",
3756
+ "borderWidth": "$border.hairline",
3757
+ "borderColor": "$color.border",
3758
+ "backgroundColor": "$color.muted",
3759
+ "transition": "$motion.fast",
3760
+ "transitionEasing": "$ease.standard"
3761
+ }
3762
+ },
3763
+ {
3764
+ "when": {
3765
+ "state": "hover"
3766
+ },
3767
+ "style": {
3768
+ "opacity": 0.92
3769
+ }
3770
+ },
3771
+ {
3772
+ "when": {
3773
+ "state": "focus"
3774
+ },
3775
+ "style": {
3776
+ "borderColor": "$color.ring"
3777
+ }
3778
+ }
3779
+ ],
3780
+ "more": [
3781
+ {
3782
+ "style": {
3783
+ "backgroundColor": "#0000008c"
3784
+ }
3785
+ }
3786
+ ],
3787
+ "moreLabel": [
3788
+ {
3789
+ "style": {
3790
+ "color": "#ffffff",
3791
+ "fontSize": "$type.size.xl",
3792
+ "lineHeight": "$type.lineHeight.xl",
3793
+ "fontWeight": "$type.weight.semibold"
3794
+ }
3795
+ }
3422
3796
  ]
3423
3797
  },
3424
3798
  "AudioPlayer": {
@@ -4414,8 +4788,9 @@
4414
4788
  "cell": [
4415
4789
  {
4416
4790
  "style": {
4417
- "height": "$control.row",
4418
- "paddingHorizontal": "$spacing.sm"
4791
+ "minHeight": "$control.row",
4792
+ "paddingHorizontal": "$spacing.sm",
4793
+ "paddingVertical": "$spacing.xs"
4419
4794
  }
4420
4795
  },
4421
4796
  {
@@ -4423,7 +4798,7 @@
4423
4798
  "density": "compact"
4424
4799
  },
4425
4800
  "style": {
4426
- "height": "$control.rowCompact"
4801
+ "minHeight": "$control.rowCompact"
4427
4802
  }
4428
4803
  }
4429
4804
  ],
@@ -5677,6 +6052,88 @@
5677
6052
  }
5678
6053
  ]
5679
6054
  },
6055
+ "Outline": {
6056
+ "caption": [
6057
+ {
6058
+ "style": {
6059
+ "paddingHorizontal": "$spacing.sm",
6060
+ "paddingVertical": "$spacing.xs",
6061
+ "fontSize": 11,
6062
+ "lineHeight": 16,
6063
+ "fontWeight": "$type.weight.medium",
6064
+ "letterSpacing": 0.5,
6065
+ "textTransform": "uppercase",
6066
+ "color": "$color.mutedForeground"
6067
+ }
6068
+ }
6069
+ ],
6070
+ "row": [
6071
+ {
6072
+ "style": {
6073
+ "borderRadius": "$radius.sm",
6074
+ "backgroundColor": "#00000000",
6075
+ "transition": "$motion.fast",
6076
+ "transitionEasing": "$ease.standard"
6077
+ }
6078
+ },
6079
+ {
6080
+ "when": {
6081
+ "state": "hover"
6082
+ },
6083
+ "style": {
6084
+ "backgroundColor": "$color.accent"
6085
+ }
6086
+ },
6087
+ {
6088
+ "when": {
6089
+ "state": "focus"
6090
+ },
6091
+ "style": {
6092
+ "borderColor": "$color.ring"
6093
+ }
6094
+ },
6095
+ {
6096
+ "when": {
6097
+ "active": true
6098
+ },
6099
+ "style": {
6100
+ "backgroundColor": "$color.accent"
6101
+ }
6102
+ }
6103
+ ],
6104
+ "bar": [
6105
+ {
6106
+ "style": {
6107
+ "backgroundColor": "$color.foreground"
6108
+ }
6109
+ }
6110
+ ],
6111
+ "title": [
6112
+ {
6113
+ "style": {
6114
+ "fontSize": "$type.size.sm",
6115
+ "lineHeight": "$type.lineHeight.sm",
6116
+ "color": "$color.mutedForeground"
6117
+ }
6118
+ },
6119
+ {
6120
+ "when": {
6121
+ "active": true
6122
+ },
6123
+ "style": {
6124
+ "color": "$color.foreground",
6125
+ "fontWeight": "$type.weight.medium"
6126
+ }
6127
+ }
6128
+ ],
6129
+ "count": [
6130
+ {
6131
+ "style": {
6132
+ "color": "$color.mutedForeground"
6133
+ }
6134
+ }
6135
+ ]
6136
+ },
5680
6137
  "AppBar": {
5681
6138
  "root": [
5682
6139
  {
@@ -1,95 +0,0 @@
1
- // packages/exponential-ui/src/web/primitives/measure.ts
2
- var near = (a, b) => Math.abs(a - b) < 1;
3
- var unit = (v) => Math.round(v * 64) / 64;
4
- var sized = (width, height) => ({ width: unit(width), height: unit(height) });
5
- function layoutSize2(el, entry) {
6
- const r = el.getBoundingClientRect();
7
- const ow = el.offsetWidth;
8
- const oh = el.offsetHeight;
9
- if (ow === 0 && oh === 0)
10
- return { width: r.width, height: r.height };
11
- if (near(r.width, ow) && near(r.height, oh))
12
- return { width: r.width, height: r.height };
13
- const box = entry?.borderBoxSize?.[0];
14
- if (box) {
15
- if (near(box.inlineSize, ow) && near(box.blockSize, oh))
16
- return sized(box.inlineSize, box.blockSize);
17
- if (near(box.blockSize, ow) && near(box.inlineSize, oh))
18
- return sized(box.blockSize, box.inlineSize);
19
- }
20
- const zoom = el.currentCSSZoom;
21
- if (zoom && zoom !== 1 && near(r.width / zoom, ow) && near(r.height / zoom, oh))
22
- return sized(r.width / zoom, r.height / zoom);
23
- return { width: ow, height: oh };
24
- }
25
- function visualScale2(visual, layout) {
26
- return layout > 0 && !near(visual, layout) ? visual / layout : 1;
27
- }
28
- function elementScale2(el, rect = el.getBoundingClientRect()) {
29
- return { x: visualScale2(rect.width, el.offsetWidth), y: visualScale2(rect.height, el.offsetHeight) };
30
- }
31
-
32
- // packages/exponential-ui/src/web/primitives/voice-wave.ts
33
- var VOICE_WAVE_SIZES2 = [`sm`, `md`, `lg`, `xl`];
34
- var VOICE_WAVE_SIZE_PX2 = { sm: 32, md: 56, lg: 160, xl: 200 };
35
- function voiceWaveAnimates2(activity) {
36
- return activity === `listening` || activity === `thinking` || activity === `speaking`;
37
- }
38
- function voiceWaveQuiet2(activity) {
39
- return !voiceWaveAnimates2(activity);
40
- }
41
- var NAMED = [`idle`, `listening`, `thinking`, `speaking`, `muted`];
42
- function voiceWaveName2(label, activity) {
43
- return label ? `${label}, ${NAMED.includes(activity) ? activity : `idle`}` : undefined;
44
- }
45
- function voiceWaveClock2(onFrame) {
46
- if (typeof requestAnimationFrame !== `function`)
47
- return () => {};
48
- let start = null;
49
- let id = 0;
50
- const tick = (now) => {
51
- if (start === null)
52
- start = now;
53
- else
54
- onFrame((now - start) / 1000);
55
- id = requestAnimationFrame(tick);
56
- };
57
- id = requestAnimationFrame(tick);
58
- return () => cancelAnimationFrame(id);
59
- }
60
- function voiceWaveFitChild2(el, scaleOf) {
61
- const apply = (width, height) => {
62
- const s = scaleOf({ width, height });
63
- el.style.transform = s === 1 ? `` : `scale(${s})`;
64
- };
65
- if (typeof ResizeObserver !== `function`) {
66
- apply(el.offsetWidth, el.offsetHeight);
67
- return () => {};
68
- }
69
- const ro = new ResizeObserver((entries) => {
70
- const e = entries[entries.length - 1];
71
- const b = e.borderBoxSize?.[0];
72
- if (b)
73
- apply(b.inlineSize, b.blockSize);
74
- else
75
- apply(el.offsetWidth, el.offsetHeight);
76
- });
77
- ro.observe(el, { box: `border-box` });
78
- return () => ro.disconnect();
79
- }
80
- var VOICE_WAVE_CLASSES2 = {
81
- root: `relative inline-flex shrink-0 items-center justify-center`,
82
- quiet: `opacity-35`,
83
- size: { sm: `size-8`, md: `size-14`, lg: `size-40`, xl: `size-50` },
84
- svg: `pointer-events-none absolute inset-0 size-full overflow-visible`,
85
- ring: { outer: `text-blue-500`, mid: `text-primary`, inner: `text-primary` },
86
- ringQuiet: `text-muted-foreground`,
87
- child: `relative flex shrink-0 items-center justify-center text-foreground`,
88
- childHidden: `invisible pointer-events-none`,
89
- childMuted: `text-muted-foreground`
90
- };
91
-
92
- export { layoutSize2, visualScale2, elementScale2, VOICE_WAVE_SIZES2, VOICE_WAVE_SIZE_PX2, voiceWaveAnimates2, voiceWaveQuiet2, voiceWaveName2, voiceWaveClock2, voiceWaveFitChild2, VOICE_WAVE_CLASSES2 };
93
-
94
- //# debugId=E5287FE7B176B23B64756E2164756E21
95
- //# sourceMappingURL=index-t6qz1770.js.map
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/web/primitives/measure.ts", "../src/web/primitives/voice-wave.ts"],
4
- "sourcesContent": [
5
- "// NEW-82: element measurements in LAYOUT px, framework-free (the React and\n// Solid renderers share them). `getBoundingClientRect()` is in VISUAL px: it\n// includes CSS `zoom` and transforms, while everything a painter lays out\n// (an SVG viewBox, a breakpoint, a translateY, a scrollTop) is in the\n// element's own unzoomed CSS px. Inside a `zoom: 0.76` phone frame a 200 px\n// box reads 152 from the rect.\n//\n// The rect stays the source whenever it agrees with the layout box (no\n// zoom, no transform): its FRACTIONAL width is what the renderers measured\n// before, so an unscaled page measures byte-identically. A scaled element\n// reads the ResizeObserver entry's `borderBoxSize` (fractional, unzoomed),\n// else the rect divided by `currentCSSZoom` when that alone explains the\n// difference, else `offsetWidth`/`offsetHeight` (whole px). The two\n// divided reads snap to Blink's 1/64 px LayoutUnit: un-zooming is a float\n// division (700 px under `zoom: 0.76` reads 700.0000087…).\n\nexport interface LayoutSize {\n width: number\n height: number\n}\n\n/** Within a pixel: `offsetWidth` is the layout box snapped to whole px. */\nconst near = (a: number, b: number) => Math.abs(a - b) < 1\nconst unit = (v: number) => Math.round(v * 64) / 64\nconst sized = (width: number, height: number): LayoutSize => ({ width: unit(width), height: unit(height) })\n\n/** An element's border box in layout (unzoomed, untransformed) CSS px.\n * `entry` = the ResizeObserver entry of this element, when there is one. */\nexport function layoutSize(el: HTMLElement, entry?: ResizeObserverEntry): LayoutSize {\n const r = el.getBoundingClientRect()\n const ow = el.offsetWidth\n const oh = el.offsetHeight\n // No offset box (jsdom, no layout): the rect is all there is.\n if (ow === 0 && oh === 0) return { width: r.width, height: r.height }\n if (near(r.width, ow) && near(r.height, oh)) return { width: r.width, height: r.height }\n const box = entry?.borderBoxSize?.[0]\n if (box) {\n if (near(box.inlineSize, ow) && near(box.blockSize, oh)) return sized(box.inlineSize, box.blockSize)\n // A vertical writing mode: inline = height.\n if (near(box.blockSize, ow) && near(box.inlineSize, oh)) return sized(box.blockSize, box.inlineSize)\n }\n const zoom = (el as HTMLElement & { currentCSSZoom?: number }).currentCSSZoom\n if (zoom && zoom !== 1 && near(r.width / zoom, ow) && near(r.height / zoom, oh)) return sized(r.width / zoom, r.height / zoom)\n return { width: ow, height: oh }\n}\n\n/** Visual px per layout px on one axis: 1 when they agree within a pixel\n * (an unscaled element maps byte-identically), else `visual / layout`.\n * Divide a visual delta (a pointer offset, a rect difference) by it. */\nexport function visualScale(visual: number, layout: number): number {\n return layout > 0 && !near(visual, layout) ? visual / layout : 1\n}\n\n/** `visualScale` of an element: its rect over its offset box. */\nexport function elementScale(el: HTMLElement, rect: DOMRect = el.getBoundingClientRect()): { x: number; y: number } {\n return { x: visualScale(rect.width, el.offsetWidth), y: visualScale(rect.height, el.offsetHeight) }\n}\n",
6
- "// NEW-77: THE voice level (catalog/style.json `voiceWave`): three closed\n// polar waves around one optional centre child. The geometry is the core's\n// `voiceWave` (src/voice-wave.ts, fixtures/voice-wave.json; the painters\n// import it from `@exponential_app/eui`, never through here, so this barrel\n// does not carry style.json); this module holds what both web painters\n// share: the size enum's px (the neutral theme's `VoiceWave/root` edges),\n// the clock that drives the phase, the accessible name and the class\n// recipes. Colours follow the theme's\n// recipe: outer = info (blue-500, the exponential theme's `info`), mid +\n// inner = primary, all muted-foreground and the whole wave at .35 opacity\n// while idle or muted.\n\nimport type { VoiceWaveActivity, VoiceWaveRingName } from \"../../voice-wave\"\n\nexport type { VoiceWaveActivity, VoiceWaveRingName } from \"../../voice-wave\"\n\nexport const VOICE_WAVE_SIZES = [`sm`, `md`, `lg`, `xl`] as const\nexport type VoiceWaveSize = (typeof VOICE_WAVE_SIZES)[number]\n\n/** The box edge per size (px): the `VoiceWave/root` recipe's width. */\nexport const VOICE_WAVE_SIZE_PX: Readonly<Record<VoiceWaveSize, number>> = { sm: 32, md: 56, lg: 160, xl: 200 }\n\n/** Whether `activity` moves the waves (listening, thinking, speaking). */\nexport function voiceWaveAnimates(activity: VoiceWaveActivity): boolean {\n return activity === `listening` || activity === `thinking` || activity === `speaking`\n}\n\n/** Idle and muted paint quiet: muted colours, the wave at .35 opacity (an\n * unknown activity is idle, as in the core). */\nexport function voiceWaveQuiet(activity: VoiceWaveActivity): boolean {\n return !voiceWaveAnimates(activity)\n}\n\nconst NAMED: readonly string[] = [`idle`, `listening`, `thinking`, `speaking`, `muted`]\n\n/** The accessible name (a11y.json `VoiceWave`): the label with the activity\n * appended (`Voice, listening`); none without a label (decorative). */\nexport function voiceWaveName(label: string | undefined, activity: VoiceWaveActivity): string | undefined {\n return label ? `${label}, ${NAMED.includes(activity) ? activity : `idle`}` : undefined\n}\n\n/** Calls `onFrame(elapsed seconds)` on every animation frame after the\n * first (the first frame is the clock's zero, already painted); returns\n * the stop. Without `requestAnimationFrame` (SSR) it never ticks. */\nexport function voiceWaveClock(onFrame: (elapsed: number) => void): () => void {\n if (typeof requestAnimationFrame !== `function`) return () => {}\n let start: number | null = null\n let id = 0\n const tick = (now: number) => {\n if (start === null) start = now\n else onFrame((now - start) / 1000)\n id = requestAnimationFrame(tick)\n }\n id = requestAnimationFrame(tick)\n return () => cancelAnimationFrame(id)\n}\n\n/** THE CHILD RULE's painter half (catalog/style.json `voiceWave`): the child\n * is laid out centred at its own size; this measures its own (untransformed)\n * border box and draws it scaled about its centre (= the box centre) by\n * `scaleOf(its size)` (the core's `voiceWaveChildBox(size, child).scale`:\n * min(1, childSize / its longer edge), 0 at `sm`). Re-measures on every\n * resize (ResizeObserver: before the first paint); without one (SSR,\n * jsdom) it measures once. Returns the stop. */\nexport function voiceWaveFitChild(el: HTMLElement, scaleOf: (child: { width: number; height: number }) => number): () => void {\n const apply = (width: number, height: number) => {\n const s = scaleOf({ width, height })\n el.style.transform = s === 1 ? `` : `scale(${s})`\n }\n if (typeof ResizeObserver !== `function`) {\n apply(el.offsetWidth, el.offsetHeight)\n return () => {}\n }\n const ro = new ResizeObserver((entries) => {\n const e = entries[entries.length - 1]!\n const b = e.borderBoxSize?.[0]\n if (b) apply(b.inlineSize, b.blockSize)\n else apply(el.offsetWidth, el.offsetHeight)\n })\n ro.observe(el, { box: `border-box` })\n return () => ro.disconnect()\n}\n\nexport const VOICE_WAVE_CLASSES = {\n root: `relative inline-flex shrink-0 items-center justify-center`,\n quiet: `opacity-35`,\n size: { sm: `size-8`, md: `size-14`, lg: `size-40`, xl: `size-50` } satisfies Record<VoiceWaveSize, string>,\n svg: `pointer-events-none absolute inset-0 size-full overflow-visible`,\n ring: { outer: `text-blue-500`, mid: `text-primary`, inner: `text-primary` } satisfies Record<VoiceWaveRingName, string>,\n ringQuiet: `text-muted-foreground`,\n child: `relative flex shrink-0 items-center justify-center text-foreground`,\n /** At `sm` (childSize 0): kept, painted nothing, no hit target. */\n childHidden: `invisible pointer-events-none`,\n childMuted: `text-muted-foreground`,\n} as const\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "E5287FE7B176B23B64756E2164756E21",
10
- "names": []
11
- }