@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.
- package/catalog/a11y.json +25 -1
- package/catalog/core.catalog.json +426 -6
- package/catalog/core.schema.json +634 -4
- package/catalog/host.json +10 -0
- package/catalog/layout.json +3 -2
- package/catalog/limits.json +10 -1
- package/catalog/macros.json +542 -1
- package/catalog/recipes.json +4 -2
- package/catalog/strings.json +14 -2
- package/catalog/style.json +21 -0
- package/catalog/theme.schema.json +3950 -1337
- package/conformance/manifest.json +5 -5
- package/conformance/motion/build-corpus.ts +232 -0
- package/conformance/motion/corpus/SOURCES.md +117 -0
- package/conformance/motion/corpus/images/footage_0.json +1 -0
- package/conformance/motion/corpus/images/img_0.jpg +0 -0
- package/conformance/motion/corpus/images/img_1.jpg +0 -0
- package/conformance/motion/corpus/images/triangle.png +0 -0
- package/conformance/motion/corpus/skottie-3d-parenting-nocamera.json +367 -0
- package/conformance/motion/corpus/skottie-auto-orient-2.json +292 -0
- package/conformance/motion/corpus/skottie-auto-orient.json +717 -0
- package/conformance/motion/corpus/skottie-bezier-extranormal.json +199 -0
- package/conformance/motion/corpus/skottie-blendmode-hardmix.json +558 -0
- package/conformance/motion/corpus/skottie-chained-mattes.json +259 -0
- package/conformance/motion/corpus/skottie-dropshadow-ramp.json +852 -0
- package/conformance/motion/corpus/skottie-dropshadow-style.json +278 -0
- package/conformance/motion/corpus/skottie-effects-transform.json +385 -0
- package/conformance/motion/corpus/skottie-fill-effect.json +358 -0
- package/conformance/motion/corpus/skottie-fill-rule.json +457 -0
- package/conformance/motion/corpus/skottie-gaussian-blur.json +670 -0
- package/conformance/motion/corpus/skottie-gradient-opacity.json +451 -0
- package/conformance/motion/corpus/skottie-gradient-radial-highlight.json +581 -0
- package/conformance/motion/corpus/skottie-hidden-shapes-layers.json +381 -0
- package/conformance/motion/corpus/skottie-huesaturation-effect.json +1117 -0
- package/conformance/motion/corpus/skottie-invert-effect.json +665 -0
- package/conformance/motion/corpus/skottie-luma-matte.json +239 -0
- package/conformance/motion/corpus/skottie-mask-feather.json +892 -0
- package/conformance/motion/corpus/skottie-masking-opaque.json +2376 -0
- package/conformance/motion/corpus/skottie-masking-translucent.json +2376 -0
- package/conformance/motion/corpus/skottie-matte-blendmode.json +196 -0
- package/conformance/motion/corpus/skottie-matte-nonsequential.json +722 -0
- package/conformance/motion/corpus/skottie-matte-visible.json +666 -0
- package/conformance/motion/corpus/skottie-mergepaths-effect.json +722 -0
- package/conformance/motion/corpus/skottie-motion-blur-mask.json +120 -0
- package/conformance/motion/corpus/skottie-nested-animation.json +253 -0
- package/conformance/motion/corpus/skottie-offsetpaths-effect.json +525 -0
- package/conformance/motion/corpus/skottie-phonehub-connecting.json +947 -0
- package/conformance/motion/corpus/skottie-puckerbloat-effect.json +339 -0
- package/conformance/motion/corpus/skottie-repeater.json +234 -0
- package/conformance/motion/corpus/skottie-sample-1.json +168 -0
- package/conformance/motion/corpus/skottie-sample-search.json +329 -0
- package/conformance/motion/corpus/skottie-spatial-supernormal.json +898 -0
- package/conformance/motion/corpus/skottie-text-animator-1.json +1286 -0
- package/conformance/motion/corpus/skottie-text-fill-over-stroke.json +1014 -0
- package/conformance/motion/corpus/skottie-text-tracking.json +950 -0
- package/conformance/motion/corpus/skottie-text-valign.json +484 -0
- package/conformance/motion/corpus/skottie-time-reverse.json +297 -0
- package/conformance/motion/corpus/skottie-transform-skew.json +290 -0
- package/conformance/motion/corpus/skottie-trimpath-fill.json +933 -0
- package/conformance/motion/corpus/skottie-trimpath-modes.json +266 -0
- package/conformance/motion/corpus/skottie-tritone-effect.json +379 -0
- package/conformance/motion/corpus/spec-blend-mode.json +531 -0
- package/conformance/motion/corpus/spec-ellipse.json +142 -0
- package/conformance/motion/corpus/spec-fill.json +193 -0
- package/conformance/motion/corpus/spec-gradient-stroke.json +1263 -0
- package/conformance/motion/corpus/spec-gradient.json +1255 -0
- package/conformance/motion/corpus/spec-mask.json +773 -0
- package/conformance/motion/corpus/spec-masks.json +676 -0
- package/conformance/motion/corpus/spec-matte.json +390 -0
- package/conformance/motion/corpus/spec-metadata.json +1 -0
- package/conformance/motion/corpus/spec-path.json +177 -0
- package/conformance/motion/corpus/spec-pucker-bloat.json +179 -0
- package/conformance/motion/corpus/spec-rectangle.json +145 -0
- package/conformance/motion/corpus/spec-rounded-corners.json +187 -0
- package/conformance/motion/corpus/spec-slots.json +325 -0
- package/conformance/motion/corpus/spec-star.json +159 -0
- package/conformance/motion/corpus/spec-stroke.json +156 -0
- package/conformance/motion/corpus/spec-test-ellipse-xy-pos.json +141 -0
- package/conformance/motion/corpus/spec-test-gradient-fill.json +1 -0
- package/conformance/motion/corpus/spec-test-gradient-stroke.json +229 -0
- package/conformance/motion/corpus/spec-test-unknown-shape.json +63 -0
- package/conformance/motion/corpus/spec-time-remap.json +1090 -0
- package/conformance/motion/corpus/spec-time-stretch.json +594 -0
- package/conformance/motion/corpus/spec-transform.json +273 -0
- package/conformance/motion/corpus/spec-trim-path.json +209 -0
- package/conformance/motion/corpus/web-adrock.json +1 -0
- package/conformance/motion/corpus/web-bacon.json +1 -0
- package/conformance/motion/corpus/web-banner.json +1 -0
- package/conformance/motion/corpus/web-bodymovin.json +1 -0
- package/conformance/motion/corpus/web-dalek.json +1 -0
- package/conformance/motion/corpus/web-footage-data.json +1 -0
- package/conformance/motion/corpus/web-lights.json +1 -0
- package/conformance/motion/corpus/web-ripple.json +1 -0
- package/conformance/motion/corpus/web-starfish.json +1 -0
- package/conformance/motion/known-gaps.json +35 -0
- package/conformance/motion/parity/group-transforms-parenting@0.png +0 -0
- package/conformance/motion/parity/group-transforms-parenting@10.png +0 -0
- package/conformance/motion/parity/hidden-unknown-inactive@0.png +0 -0
- package/conformance/motion/parity/keyframes-transform@0.png +0 -0
- package/conformance/motion/parity/keyframes-transform@10.png +0 -0
- package/conformance/motion/parity/keyframes-transform@15.png +0 -0
- package/conformance/motion/parity/keyframes-transform@5.png +0 -0
- package/conformance/motion/parity/layer-opacity-blend@0.png +0 -0
- package/conformance/motion/parity/linear-gradient@0.png +0 -0
- package/conformance/motion/parity/masks-modes@0.png +0 -0
- package/conformance/motion/parity/matte-alpha@0.png +0 -0
- package/conformance/motion/parity/matte-luma@0.png +0 -0
- package/conformance/motion/parity/matte-parent-tp@0.png +0 -0
- package/conformance/motion/parity/path-evenodd@0.png +0 -0
- package/conformance/motion/parity/precomp-clip-offset@0.png +0 -0
- package/conformance/motion/parity/precomp-clip-offset@15.png +0 -0
- package/conformance/motion/parity/precomp-clip-offset@5.png +0 -0
- package/conformance/motion/parity/radial-gradient-highlight@0.png +0 -0
- package/conformance/motion/parity/rect-solid-fill@0.png +0 -0
- package/conformance/motion/parity/repeater@0.png +0 -0
- package/conformance/motion/parity/rounded-rect-ellipse@0.png +0 -0
- package/conformance/motion/parity/solid-and-image@0.png +0 -0
- package/conformance/motion/parity/split-position-skew@0.png +0 -0
- package/conformance/motion/parity/split-position-skew@10.png +0 -0
- package/conformance/motion/parity/star-polygon@0.png +0 -0
- package/conformance/motion/parity/stroke-caps-joins@0.png +0 -0
- package/conformance/motion/parity/stroke-dashes@0.png +0 -0
- package/conformance/motion/parity/stroke-dashes@10.png +0 -0
- package/conformance/motion/parity/time-remap@0.png +0 -0
- package/conformance/motion/parity/time-remap@10.png +0 -0
- package/conformance/motion/parity/time-remap@19.png +0 -0
- package/conformance/motion/parity/time-stretch@0.png +0 -0
- package/conformance/motion/parity/time-stretch@10.png +0 -0
- package/conformance/motion/parity/trim-individually@0.png +0 -0
- package/conformance/motion/parity/trim-path@0.png +0 -0
- package/conformance/motion/parity/trim-path@10.png +0 -0
- package/conformance/motion/refs/index.json +688 -0
- package/conformance/motion/refs/skottie-3d-parenting-nocamera@0.png +0 -0
- package/conformance/motion/refs/skottie-3d-parenting-nocamera@150.png +0 -0
- package/conformance/motion/refs/skottie-3d-parenting-nocamera@270.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient-2@0.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient-2@210.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient-2@378.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient@0.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient@300.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient@540.png +0 -0
- package/conformance/motion/refs/skottie-bezier-extranormal@0.png +0 -0
- package/conformance/motion/refs/skottie-bezier-extranormal@150.png +0 -0
- package/conformance/motion/refs/skottie-bezier-extranormal@270.png +0 -0
- package/conformance/motion/refs/skottie-blendmode-hardmix@0.png +0 -0
- package/conformance/motion/refs/skottie-blendmode-hardmix@150.png +0 -0
- package/conformance/motion/refs/skottie-blendmode-hardmix@270.png +0 -0
- package/conformance/motion/refs/skottie-chained-mattes@0.png +0 -0
- package/conformance/motion/refs/skottie-chained-mattes@300.png +0 -0
- package/conformance/motion/refs/skottie-chained-mattes@540.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-ramp@0.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-ramp@135.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-ramp@75.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-style@0.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-style@300.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-style@540.png +0 -0
- package/conformance/motion/refs/skottie-effects-transform@0.png +0 -0
- package/conformance/motion/refs/skottie-effects-transform@450.png +0 -0
- package/conformance/motion/refs/skottie-effects-transform@810.png +0 -0
- package/conformance/motion/refs/skottie-fill-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-fill-effect@300.png +0 -0
- package/conformance/motion/refs/skottie-fill-effect@540.png +0 -0
- package/conformance/motion/refs/skottie-fill-rule@0.png +0 -0
- package/conformance/motion/refs/skottie-fill-rule@150.png +0 -0
- package/conformance/motion/refs/skottie-fill-rule@270.png +0 -0
- package/conformance/motion/refs/skottie-gaussian-blur@0.png +0 -0
- package/conformance/motion/refs/skottie-gaussian-blur@150.png +0 -0
- package/conformance/motion/refs/skottie-gaussian-blur@270.png +0 -0
- package/conformance/motion/refs/skottie-gradient-opacity@0.png +0 -0
- package/conformance/motion/refs/skottie-gradient-opacity@150.png +0 -0
- package/conformance/motion/refs/skottie-gradient-opacity@270.png +0 -0
- package/conformance/motion/refs/skottie-gradient-radial-highlight@0.png +0 -0
- package/conformance/motion/refs/skottie-gradient-radial-highlight@135.png +0 -0
- package/conformance/motion/refs/skottie-gradient-radial-highlight@75.png +0 -0
- package/conformance/motion/refs/skottie-hidden-shapes-layers@0.png +0 -0
- package/conformance/motion/refs/skottie-hidden-shapes-layers@150.png +0 -0
- package/conformance/motion/refs/skottie-hidden-shapes-layers@270.png +0 -0
- package/conformance/motion/refs/skottie-huesaturation-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-huesaturation-effect@30.png +0 -0
- package/conformance/motion/refs/skottie-huesaturation-effect@54.png +0 -0
- package/conformance/motion/refs/skottie-invert-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-invert-effect@300.png +0 -0
- package/conformance/motion/refs/skottie-invert-effect@540.png +0 -0
- package/conformance/motion/refs/skottie-luma-matte@0.png +0 -0
- package/conformance/motion/refs/skottie-luma-matte@150.png +0 -0
- package/conformance/motion/refs/skottie-luma-matte@270.png +0 -0
- package/conformance/motion/refs/skottie-mask-feather@0.png +0 -0
- package/conformance/motion/refs/skottie-mask-feather@150.png +0 -0
- package/conformance/motion/refs/skottie-mask-feather@270.png +0 -0
- package/conformance/motion/refs/skottie-masking-opaque@0.png +0 -0
- package/conformance/motion/refs/skottie-masking-opaque@135.png +0 -0
- package/conformance/motion/refs/skottie-masking-opaque@75.png +0 -0
- package/conformance/motion/refs/skottie-masking-translucent@0.png +0 -0
- package/conformance/motion/refs/skottie-masking-translucent@135.png +0 -0
- package/conformance/motion/refs/skottie-masking-translucent@75.png +0 -0
- package/conformance/motion/refs/skottie-matte-blendmode@0.png +0 -0
- package/conformance/motion/refs/skottie-matte-blendmode@150.png +0 -0
- package/conformance/motion/refs/skottie-matte-blendmode@270.png +0 -0
- package/conformance/motion/refs/skottie-matte-nonsequential@0.png +0 -0
- package/conformance/motion/refs/skottie-matte-nonsequential@150.png +0 -0
- package/conformance/motion/refs/skottie-matte-nonsequential@270.png +0 -0
- package/conformance/motion/refs/skottie-matte-visible@0.png +0 -0
- package/conformance/motion/refs/skottie-matte-visible@150.png +0 -0
- package/conformance/motion/refs/skottie-matte-visible@270.png +0 -0
- package/conformance/motion/refs/skottie-mergepaths-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-mergepaths-effect@210.png +0 -0
- package/conformance/motion/refs/skottie-mergepaths-effect@378.png +0 -0
- package/conformance/motion/refs/skottie-motion-blur-mask@0.png +0 -0
- package/conformance/motion/refs/skottie-motion-blur-mask@150.png +0 -0
- package/conformance/motion/refs/skottie-motion-blur-mask@270.png +0 -0
- package/conformance/motion/refs/skottie-nested-animation@0.png +0 -0
- package/conformance/motion/refs/skottie-nested-animation@300.png +0 -0
- package/conformance/motion/refs/skottie-nested-animation@540.png +0 -0
- package/conformance/motion/refs/skottie-offsetpaths-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-offsetpaths-effect@150.png +0 -0
- package/conformance/motion/refs/skottie-offsetpaths-effect@270.png +0 -0
- package/conformance/motion/refs/skottie-phonehub-connecting@0.png +0 -0
- package/conformance/motion/refs/skottie-puckerbloat-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-puckerbloat-effect@210.png +0 -0
- package/conformance/motion/refs/skottie-puckerbloat-effect@378.png +0 -0
- package/conformance/motion/refs/skottie-repeater@0.png +0 -0
- package/conformance/motion/refs/skottie-repeater@300.png +0 -0
- package/conformance/motion/refs/skottie-repeater@540.png +0 -0
- package/conformance/motion/refs/skottie-sample-1@0.png +0 -0
- package/conformance/motion/refs/skottie-sample-1@100.png +0 -0
- package/conformance/motion/refs/skottie-sample-1@180.png +0 -0
- package/conformance/motion/refs/skottie-sample-search@0.png +0 -0
- package/conformance/motion/refs/skottie-sample-search@27.png +0 -0
- package/conformance/motion/refs/skottie-sample-search@48.png +0 -0
- package/conformance/motion/refs/skottie-spatial-supernormal@0.png +0 -0
- package/conformance/motion/refs/skottie-spatial-supernormal@200.png +0 -0
- package/conformance/motion/refs/skottie-spatial-supernormal@360.png +0 -0
- package/conformance/motion/refs/skottie-text-animator-1@0.png +0 -0
- package/conformance/motion/refs/skottie-text-animator-1@150.png +0 -0
- package/conformance/motion/refs/skottie-text-animator-1@270.png +0 -0
- package/conformance/motion/refs/skottie-text-fill-over-stroke@0.png +0 -0
- package/conformance/motion/refs/skottie-text-fill-over-stroke@210.png +0 -0
- package/conformance/motion/refs/skottie-text-fill-over-stroke@378.png +0 -0
- package/conformance/motion/refs/skottie-text-tracking@0.png +0 -0
- package/conformance/motion/refs/skottie-text-tracking@108.png +0 -0
- package/conformance/motion/refs/skottie-text-tracking@60.png +0 -0
- package/conformance/motion/refs/skottie-text-valign@0.png +0 -0
- package/conformance/motion/refs/skottie-text-valign@150.png +0 -0
- package/conformance/motion/refs/skottie-text-valign@270.png +0 -0
- package/conformance/motion/refs/skottie-time-reverse@0.png +0 -0
- package/conformance/motion/refs/skottie-time-reverse@300.png +0 -0
- package/conformance/motion/refs/skottie-time-reverse@540.png +0 -0
- package/conformance/motion/refs/skottie-transform-skew@0.png +0 -0
- package/conformance/motion/refs/skottie-transform-skew@300.png +0 -0
- package/conformance/motion/refs/skottie-transform-skew@540.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-fill@0.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-fill@300.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-fill@540.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-modes@0.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-modes@300.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-modes@540.png +0 -0
- package/conformance/motion/refs/skottie-tritone-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-tritone-effect@300.png +0 -0
- package/conformance/motion/refs/skottie-tritone-effect@540.png +0 -0
- package/conformance/motion/refs/spec-blend-mode@0.png +0 -0
- package/conformance/motion/refs/spec-blend-mode@162.png +0 -0
- package/conformance/motion/refs/spec-blend-mode@90.png +0 -0
- package/conformance/motion/refs/spec-ellipse@0.png +0 -0
- package/conformance/motion/refs/spec-ellipse@162.png +0 -0
- package/conformance/motion/refs/spec-ellipse@90.png +0 -0
- package/conformance/motion/refs/spec-fill@0.png +0 -0
- package/conformance/motion/refs/spec-fill@162.png +0 -0
- package/conformance/motion/refs/spec-fill@90.png +0 -0
- package/conformance/motion/refs/spec-gradient-stroke@0.png +0 -0
- package/conformance/motion/refs/spec-gradient-stroke@162.png +0 -0
- package/conformance/motion/refs/spec-gradient-stroke@90.png +0 -0
- package/conformance/motion/refs/spec-gradient@0.png +0 -0
- package/conformance/motion/refs/spec-gradient@162.png +0 -0
- package/conformance/motion/refs/spec-gradient@90.png +0 -0
- package/conformance/motion/refs/spec-mask@0.png +0 -0
- package/conformance/motion/refs/spec-mask@300.png +0 -0
- package/conformance/motion/refs/spec-mask@540.png +0 -0
- package/conformance/motion/refs/spec-masks@0.png +0 -0
- package/conformance/motion/refs/spec-masks@135.png +0 -0
- package/conformance/motion/refs/spec-masks@75.png +0 -0
- package/conformance/motion/refs/spec-matte@0.png +0 -0
- package/conformance/motion/refs/spec-matte@162.png +0 -0
- package/conformance/motion/refs/spec-matte@90.png +0 -0
- package/conformance/motion/refs/spec-metadata@0.png +0 -0
- package/conformance/motion/refs/spec-metadata@162.png +0 -0
- package/conformance/motion/refs/spec-metadata@90.png +0 -0
- package/conformance/motion/refs/spec-path@0.png +0 -0
- package/conformance/motion/refs/spec-path@162.png +0 -0
- package/conformance/motion/refs/spec-path@90.png +0 -0
- package/conformance/motion/refs/spec-pucker-bloat@0.png +0 -0
- package/conformance/motion/refs/spec-pucker-bloat@162.png +0 -0
- package/conformance/motion/refs/spec-pucker-bloat@90.png +0 -0
- package/conformance/motion/refs/spec-rectangle@0.png +0 -0
- package/conformance/motion/refs/spec-rectangle@162.png +0 -0
- package/conformance/motion/refs/spec-rectangle@90.png +0 -0
- package/conformance/motion/refs/spec-rounded-corners@0.png +0 -0
- package/conformance/motion/refs/spec-rounded-corners@162.png +0 -0
- package/conformance/motion/refs/spec-rounded-corners@90.png +0 -0
- package/conformance/motion/refs/spec-slots@0.png +0 -0
- package/conformance/motion/refs/spec-slots@450.png +0 -0
- package/conformance/motion/refs/spec-slots@810.png +0 -0
- package/conformance/motion/refs/spec-star@0.png +0 -0
- package/conformance/motion/refs/spec-star@162.png +0 -0
- package/conformance/motion/refs/spec-star@90.png +0 -0
- package/conformance/motion/refs/spec-stroke@0.png +0 -0
- package/conformance/motion/refs/spec-stroke@162.png +0 -0
- package/conformance/motion/refs/spec-stroke@90.png +0 -0
- package/conformance/motion/refs/spec-test-ellipse-xy-pos@0.png +0 -0
- package/conformance/motion/refs/spec-test-ellipse-xy-pos@162.png +0 -0
- package/conformance/motion/refs/spec-test-ellipse-xy-pos@90.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-fill@0.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-fill@30.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-fill@54.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-stroke@0.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-stroke@30.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-stroke@54.png +0 -0
- package/conformance/motion/refs/spec-test-unknown-shape@0.png +0 -0
- package/conformance/motion/refs/spec-test-unknown-shape@162.png +0 -0
- package/conformance/motion/refs/spec-test-unknown-shape@90.png +0 -0
- package/conformance/motion/refs/spec-time-remap@0.png +0 -0
- package/conformance/motion/refs/spec-time-remap@300.png +0 -0
- package/conformance/motion/refs/spec-time-remap@540.png +0 -0
- package/conformance/motion/refs/spec-time-stretch@0.png +0 -0
- package/conformance/motion/refs/spec-time-stretch@300.png +0 -0
- package/conformance/motion/refs/spec-time-stretch@540.png +0 -0
- package/conformance/motion/refs/spec-transform@0.png +0 -0
- package/conformance/motion/refs/spec-transform@162.png +0 -0
- package/conformance/motion/refs/spec-transform@90.png +0 -0
- package/conformance/motion/refs/spec-trim-path@0.png +0 -0
- package/conformance/motion/refs/spec-trim-path@162.png +0 -0
- package/conformance/motion/refs/spec-trim-path@90.png +0 -0
- package/conformance/motion/refs/web-adrock@0.png +0 -0
- package/conformance/motion/refs/web-adrock@10.png +0 -0
- package/conformance/motion/refs/web-adrock@18.png +0 -0
- package/conformance/motion/refs/web-bacon@0.png +0 -0
- package/conformance/motion/refs/web-bacon@126.png +0 -0
- package/conformance/motion/refs/web-bacon@70.png +0 -0
- package/conformance/motion/refs/web-banner@0.png +0 -0
- package/conformance/motion/refs/web-banner@301.png +0 -0
- package/conformance/motion/refs/web-banner@542.png +0 -0
- package/conformance/motion/refs/web-bodymovin@0.png +0 -0
- package/conformance/motion/refs/web-bodymovin@51.png +0 -0
- package/conformance/motion/refs/web-bodymovin@92.png +0 -0
- package/conformance/motion/refs/web-dalek@0.png +0 -0
- package/conformance/motion/refs/web-dalek@145.png +0 -0
- package/conformance/motion/refs/web-dalek@261.png +0 -0
- package/conformance/motion/refs/web-footage-data@0.png +0 -0
- package/conformance/motion/refs/web-footage-data@180.png +0 -0
- package/conformance/motion/refs/web-footage-data@324.png +0 -0
- package/conformance/motion/refs/web-lights@0.png +0 -0
- package/conformance/motion/refs/web-lights@150.png +0 -0
- package/conformance/motion/refs/web-lights@270.png +0 -0
- package/conformance/motion/refs/web-ripple@0.png +0 -0
- package/conformance/motion/refs/web-ripple@180.png +0 -0
- package/conformance/motion/refs/web-ripple@324.png +0 -0
- package/conformance/motion/refs/web-starfish@0.png +0 -0
- package/conformance/motion/refs/web-starfish@150.png +0 -0
- package/conformance/motion/refs/web-starfish@270.png +0 -0
- package/conformance/motion/render-refs.ts +126 -0
- package/conformance/motion/report.json +1367 -0
- package/conformance/motion/web-parity-gaps.json +12 -0
- package/conformance/motion-parity-entry.ts +3 -0
- package/conformance/motion-parity.ts +101 -0
- package/dist/chunks/{index-gtk2gwsb.js → index-4xczxey5.js} +187 -40
- package/dist/chunks/{index-gtk2gwsb.js.map → index-4xczxey5.js.map} +7 -6
- package/dist/chunks/{index-62yzr94z.js → index-5sjj5p84.js} +270 -8
- package/dist/chunks/{index-62yzr94z.js.map → index-5sjj5p84.js.map} +2 -2
- package/dist/chunks/{index-fy7y2nz8.js → index-cvf7bbs5.js} +23 -2
- package/dist/chunks/{index-fy7y2nz8.js.map → index-cvf7bbs5.js.map} +1 -1
- package/dist/chunks/index-dgkf6yw5.js +48 -0
- package/dist/chunks/index-dgkf6yw5.js.map +10 -0
- package/dist/chunks/{index-5fmaa0xq.js → index-f9wkb6aq.js} +851 -36
- package/dist/chunks/{index-5fmaa0xq.js.map → index-f9wkb6aq.js.map} +2 -2
- package/dist/chunks/index-t2mwfbb6.js +1515 -0
- package/dist/chunks/index-t2mwfbb6.js.map +15 -0
- package/dist/chunks/{index-bg2jsgjq.js → index-vkn82srs.js} +479 -10
- package/dist/chunks/{index-bg2jsgjq.js.map → index-vkn82srs.js.map} +2 -2
- package/dist/chunks/wasm-ctcc3cma.js +424 -0
- package/dist/chunks/wasm-ctcc3cma.js.map +11 -0
- package/dist/conformance.js +10941 -563
- package/dist/conformance.js.map +2 -2
- package/dist/entries/prompt.js +2 -2
- package/dist/entries/schema.js +3 -3
- package/dist/host/index.js +20 -4
- package/dist/host/index.js.map +1 -1
- package/dist/index.js +364 -99
- package/dist/index.js.map +4 -4
- package/dist/types/src/catalog.generated.d.ts +71 -5
- package/dist/types/src/host/contract.d.ts +17 -0
- package/dist/types/src/host/exposes.d.ts +68 -0
- package/dist/types/src/host/index.d.ts +1 -0
- package/dist/types/src/host/package.d.ts +8 -0
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/layout.d.ts +2 -0
- package/dist/types/src/limits.d.ts +1 -0
- package/dist/types/src/motion/index.d.ts +1 -0
- package/dist/types/src/motion/server.d.ts +9 -0
- package/dist/types/src/motion/wasm.d.ts +11 -0
- package/dist/types/src/web/coerce.d.ts +3 -0
- package/dist/types/src/web/focus.d.ts +8 -0
- package/dist/types/src/web/index.d.ts +5 -2
- package/dist/types/src/web/primitives/carousel.d.ts +17 -0
- package/dist/types/src/web/primitives/dock.d.ts +5 -2
- package/dist/types/src/web/primitives/index.d.ts +5 -0
- package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
- package/dist/types/src/web/primitives/motion-paint.d.ts +36 -0
- package/dist/types/src/web/primitives/motion.d.ts +162 -0
- package/dist/types/src/web/primitives/outline.d.ts +22 -0
- package/dist/types/src/web/primitives/zoomable-image.d.ts +158 -0
- package/dist/types/src/web/table.d.ts +8 -0
- package/dist/types/src/zoom.d.ts +128 -0
- package/dist/types/wasm/motion/bytes.d.ts +1 -0
- package/dist/web/index.js +171 -230
- package/dist/web/index.js.map +9 -10
- package/dist/web/primitives/index.js +641 -6
- package/dist/web/primitives/index.js.map +9 -5
- package/docs/components.generated.json +542 -5
- package/docs/package-format.md +56 -1
- package/docs/round-6-contract.md +110 -0
- package/docs/themes.generated.json +66 -2
- package/fixtures/bind-time.json +1468 -0
- package/fixtures/catalog-components.json +1026 -16
- package/fixtures/catalog-macros.json +1279 -157
- package/fixtures/conformance-baseline.json +48893 -47200
- package/fixtures/conformance-known.json +140 -134
- package/fixtures/host-router.json +539 -1
- package/fixtures/kitchen-sink.expanded.json +686 -1
- package/fixtures/kitchen-sink.json +102 -1
- package/fixtures/layout-geometry-round1.json +42 -42
- package/fixtures/motion-frames.json +2618 -0
- package/fixtures/motion-playback.json +528 -0
- package/fixtures/motion-state.json +722 -0
- package/fixtures/motion-validate.json +138 -0
- package/fixtures/primitive-specimens.json +4 -0
- package/fixtures/prompt-budget.json +16 -16
- package/fixtures/specimens.json +839 -21
- package/fixtures/theme-recipes.json +32808 -28396
- package/fixtures/theme-resolved.json +2114 -286
- package/fixtures/zoom.json +1382 -0
- package/generated/ExponentialUICatalog.generated.kt +21 -21
- package/generated/ExponentialUICatalog.generated.swift +21 -21
- package/generated/ExponentialUIThemes.generated.kt +7 -7
- package/generated/ExponentialUIThemes.generated.swift +7 -7
- package/generated/catalog.descriptions.generated.rs +1 -1
- package/generated/catalog.generated.rs +30 -30
- package/generated/catalog.themes.generated.rs +8 -8
- package/generated/core.descriptions.json +267 -5
- package/generated/core.runtime.json +275 -1
- package/package.json +1 -1
- package/themes/neutral.theme.json +460 -3
- package/dist/chunks/index-t6qz1770.js +0 -95
- package/dist/chunks/index-t6qz1770.js.map +0 -11
|
@@ -1457,6 +1457,117 @@
|
|
|
1457
1457
|
},
|
|
1458
1458
|
"macro": null
|
|
1459
1459
|
},
|
|
1460
|
+
{
|
|
1461
|
+
"name": "ZoomableImage",
|
|
1462
|
+
"kind": "native",
|
|
1463
|
+
"group": "media",
|
|
1464
|
+
"lite": false,
|
|
1465
|
+
"specimenId": "exponential-ui-zoomable-image",
|
|
1466
|
+
"description": "A picture that zooms (pinch, ⌘-wheel, double-tap) and pans.",
|
|
1467
|
+
"children": "none",
|
|
1468
|
+
"slots": [],
|
|
1469
|
+
"events": [
|
|
1470
|
+
"zoom",
|
|
1471
|
+
"tap"
|
|
1472
|
+
],
|
|
1473
|
+
"basic": [],
|
|
1474
|
+
"props": [
|
|
1475
|
+
{
|
|
1476
|
+
"name": "src",
|
|
1477
|
+
"type": "url",
|
|
1478
|
+
"required": true,
|
|
1479
|
+
"bindable": true,
|
|
1480
|
+
"responsive": false,
|
|
1481
|
+
"description": "The image URL."
|
|
1482
|
+
},
|
|
1483
|
+
{
|
|
1484
|
+
"name": "alt",
|
|
1485
|
+
"type": "string",
|
|
1486
|
+
"required": true,
|
|
1487
|
+
"bindable": true,
|
|
1488
|
+
"responsive": false,
|
|
1489
|
+
"description": "The accessibility description."
|
|
1490
|
+
},
|
|
1491
|
+
{
|
|
1492
|
+
"name": "naturalWidth",
|
|
1493
|
+
"type": "number",
|
|
1494
|
+
"required": false,
|
|
1495
|
+
"bindable": false,
|
|
1496
|
+
"responsive": false,
|
|
1497
|
+
"description": "Pixel width."
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
"name": "naturalHeight",
|
|
1501
|
+
"type": "number",
|
|
1502
|
+
"required": false,
|
|
1503
|
+
"bindable": false,
|
|
1504
|
+
"responsive": false,
|
|
1505
|
+
"description": "Pixel height."
|
|
1506
|
+
},
|
|
1507
|
+
{
|
|
1508
|
+
"name": "initial",
|
|
1509
|
+
"type": "auto | fit | fitWidth | actual",
|
|
1510
|
+
"required": false,
|
|
1511
|
+
"bindable": false,
|
|
1512
|
+
"responsive": false,
|
|
1513
|
+
"default": "auto",
|
|
1514
|
+
"description": "auto = fitWidth when tall."
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
"name": "maxScale",
|
|
1518
|
+
"type": "number",
|
|
1519
|
+
"required": false,
|
|
1520
|
+
"bindable": false,
|
|
1521
|
+
"responsive": false,
|
|
1522
|
+
"default": 8,
|
|
1523
|
+
"description": "Largest zoom."
|
|
1524
|
+
},
|
|
1525
|
+
{
|
|
1526
|
+
"name": "controls",
|
|
1527
|
+
"type": "auto | always | none",
|
|
1528
|
+
"required": false,
|
|
1529
|
+
"bindable": false,
|
|
1530
|
+
"responsive": false,
|
|
1531
|
+
"default": "auto",
|
|
1532
|
+
"description": "The zoom pill."
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
"name": "scale",
|
|
1536
|
+
"type": "number",
|
|
1537
|
+
"required": false,
|
|
1538
|
+
"bindable": true,
|
|
1539
|
+
"responsive": false,
|
|
1540
|
+
"description": "1 = 100%."
|
|
1541
|
+
},
|
|
1542
|
+
{
|
|
1543
|
+
"name": "style",
|
|
1544
|
+
"type": "style",
|
|
1545
|
+
"required": false,
|
|
1546
|
+
"bindable": false,
|
|
1547
|
+
"responsive": false,
|
|
1548
|
+
"description": "Extra Box styles for the viewport."
|
|
1549
|
+
}
|
|
1550
|
+
],
|
|
1551
|
+
"accessibility": {
|
|
1552
|
+
"role": "img",
|
|
1553
|
+
"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`)",
|
|
1554
|
+
"keys": [
|
|
1555
|
+
"+ / =: zoom in a step",
|
|
1556
|
+
"-: zoom out a step",
|
|
1557
|
+
"0: back to the opening zoom",
|
|
1558
|
+
"1: 100%"
|
|
1559
|
+
]
|
|
1560
|
+
},
|
|
1561
|
+
"example": {
|
|
1562
|
+
"id": "example",
|
|
1563
|
+
"component": "ZoomableImage",
|
|
1564
|
+
"src": "https://example.com/screenshot.png",
|
|
1565
|
+
"alt": "Screenshot",
|
|
1566
|
+
"naturalWidth": 1440,
|
|
1567
|
+
"naturalHeight": 900
|
|
1568
|
+
},
|
|
1569
|
+
"macro": null
|
|
1570
|
+
},
|
|
1460
1571
|
{
|
|
1461
1572
|
"name": "Icon",
|
|
1462
1573
|
"kind": "native",
|
|
@@ -1813,11 +1924,28 @@
|
|
|
1813
1924
|
"responsive": false,
|
|
1814
1925
|
"default": true,
|
|
1815
1926
|
"description": "Shows the page dots."
|
|
1927
|
+
},
|
|
1928
|
+
{
|
|
1929
|
+
"name": "counter",
|
|
1930
|
+
"type": "boolean",
|
|
1931
|
+
"required": false,
|
|
1932
|
+
"bindable": false,
|
|
1933
|
+
"responsive": false,
|
|
1934
|
+
"default": false,
|
|
1935
|
+
"description": "Shows `i / n`."
|
|
1936
|
+
},
|
|
1937
|
+
{
|
|
1938
|
+
"name": "thumbnails",
|
|
1939
|
+
"type": "[url]",
|
|
1940
|
+
"required": false,
|
|
1941
|
+
"bindable": false,
|
|
1942
|
+
"responsive": false,
|
|
1943
|
+
"description": "A thumbnail URL per page."
|
|
1816
1944
|
}
|
|
1817
1945
|
],
|
|
1818
1946
|
"accessibility": {
|
|
1819
1947
|
"role": "region",
|
|
1820
|
-
"notes": "region, roledescription carousel; each page a group `page i of n`",
|
|
1948
|
+
"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",
|
|
1821
1949
|
"keys": [
|
|
1822
1950
|
"ArrowLeft/ArrowRight: previous/next page while focus is inside",
|
|
1823
1951
|
"Home/End: first/last page"
|
|
@@ -1831,6 +1959,68 @@
|
|
|
1831
1959
|
},
|
|
1832
1960
|
"macro": null
|
|
1833
1961
|
},
|
|
1962
|
+
{
|
|
1963
|
+
"name": "Mosaic",
|
|
1964
|
+
"kind": "macro",
|
|
1965
|
+
"group": "media",
|
|
1966
|
+
"lite": false,
|
|
1967
|
+
"specimenId": "exponential-ui-mosaic",
|
|
1968
|
+
"description": "Pictures: halves, or one large + two small with `+N`; press fires `select {index}`.",
|
|
1969
|
+
"children": "none",
|
|
1970
|
+
"slots": [],
|
|
1971
|
+
"events": [
|
|
1972
|
+
"select"
|
|
1973
|
+
],
|
|
1974
|
+
"basic": [],
|
|
1975
|
+
"props": [
|
|
1976
|
+
{
|
|
1977
|
+
"name": "pictures",
|
|
1978
|
+
"type": "[picture]",
|
|
1979
|
+
"required": true,
|
|
1980
|
+
"bindable": false,
|
|
1981
|
+
"responsive": false,
|
|
1982
|
+
"description": "The pictures in order."
|
|
1983
|
+
},
|
|
1984
|
+
{
|
|
1985
|
+
"name": "label",
|
|
1986
|
+
"type": "string",
|
|
1987
|
+
"required": false,
|
|
1988
|
+
"bindable": false,
|
|
1989
|
+
"responsive": false,
|
|
1990
|
+
"description": "The a11y label."
|
|
1991
|
+
}
|
|
1992
|
+
],
|
|
1993
|
+
"accessibility": {
|
|
1994
|
+
"role": "group",
|
|
1995
|
+
"notes": "group labelled `label`; each tile a button named its picture's `alt`; the `+N` tile reads `alt` then `+N` ($string.morePictures).",
|
|
1996
|
+
"keys": [
|
|
1997
|
+
"Tab through the tiles; Enter, Space: select"
|
|
1998
|
+
]
|
|
1999
|
+
},
|
|
2000
|
+
"example": {
|
|
2001
|
+
"id": "example",
|
|
2002
|
+
"component": "Mosaic",
|
|
2003
|
+
"pictures": [
|
|
2004
|
+
{
|
|
2005
|
+
"src": "https://example.com/editor.png",
|
|
2006
|
+
"alt": "Editor"
|
|
2007
|
+
},
|
|
2008
|
+
{
|
|
2009
|
+
"src": "https://example.com/preview.png",
|
|
2010
|
+
"alt": "Preview"
|
|
2011
|
+
},
|
|
2012
|
+
{
|
|
2013
|
+
"src": "https://example.com/data.png",
|
|
2014
|
+
"alt": "Data"
|
|
2015
|
+
},
|
|
2016
|
+
{
|
|
2017
|
+
"src": "https://example.com/versions.png",
|
|
2018
|
+
"alt": "Versions"
|
|
2019
|
+
}
|
|
2020
|
+
]
|
|
2021
|
+
},
|
|
2022
|
+
"macro": "Expands to natives (see catalog/macros.json); the theme styles its parts by recipe Mosaic/<part>."
|
|
2023
|
+
},
|
|
1834
2024
|
{
|
|
1835
2025
|
"name": "Tabs",
|
|
1836
2026
|
"kind": "native",
|
|
@@ -1913,8 +2103,8 @@
|
|
|
1913
2103
|
"value": "issue"
|
|
1914
2104
|
},
|
|
1915
2105
|
{
|
|
1916
|
-
"label": "
|
|
1917
|
-
"value": "
|
|
2106
|
+
"label": "Session",
|
|
2107
|
+
"value": "session"
|
|
1918
2108
|
}
|
|
1919
2109
|
],
|
|
1920
2110
|
"value": "issue"
|
|
@@ -2481,6 +2671,76 @@
|
|
|
2481
2671
|
},
|
|
2482
2672
|
"macro": "Expands to natives (see catalog/macros.json); the theme styles its parts by recipe Breadcrumb/<part>."
|
|
2483
2673
|
},
|
|
2674
|
+
{
|
|
2675
|
+
"name": "Outline",
|
|
2676
|
+
"kind": "macro",
|
|
2677
|
+
"group": "navigation",
|
|
2678
|
+
"lite": true,
|
|
2679
|
+
"specimenId": "exponential-ui-outline",
|
|
2680
|
+
"description": "Anchor rows under a caption, one active; press fires `select {id}`.",
|
|
2681
|
+
"children": "none",
|
|
2682
|
+
"slots": [],
|
|
2683
|
+
"events": [
|
|
2684
|
+
"select"
|
|
2685
|
+
],
|
|
2686
|
+
"basic": [],
|
|
2687
|
+
"props": [
|
|
2688
|
+
{
|
|
2689
|
+
"name": "items",
|
|
2690
|
+
"type": "[outlineItem]",
|
|
2691
|
+
"required": true,
|
|
2692
|
+
"bindable": false,
|
|
2693
|
+
"responsive": false,
|
|
2694
|
+
"description": "The rows in order."
|
|
2695
|
+
},
|
|
2696
|
+
{
|
|
2697
|
+
"name": "value",
|
|
2698
|
+
"type": "string",
|
|
2699
|
+
"required": false,
|
|
2700
|
+
"bindable": true,
|
|
2701
|
+
"responsive": false,
|
|
2702
|
+
"description": "The active row id."
|
|
2703
|
+
},
|
|
2704
|
+
{
|
|
2705
|
+
"name": "caption",
|
|
2706
|
+
"type": "string",
|
|
2707
|
+
"required": false,
|
|
2708
|
+
"bindable": false,
|
|
2709
|
+
"responsive": false,
|
|
2710
|
+
"description": "The heading."
|
|
2711
|
+
}
|
|
2712
|
+
],
|
|
2713
|
+
"accessibility": {
|
|
2714
|
+
"role": "navigation",
|
|
2715
|
+
"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}`.",
|
|
2716
|
+
"keys": [
|
|
2717
|
+
"Tab through the rows; Enter, Space: select"
|
|
2718
|
+
]
|
|
2719
|
+
},
|
|
2720
|
+
"example": {
|
|
2721
|
+
"id": "example",
|
|
2722
|
+
"component": "Outline",
|
|
2723
|
+
"caption": "Outline",
|
|
2724
|
+
"value": "part-a",
|
|
2725
|
+
"items": [
|
|
2726
|
+
{
|
|
2727
|
+
"id": "current",
|
|
2728
|
+
"title": "Current state"
|
|
2729
|
+
},
|
|
2730
|
+
{
|
|
2731
|
+
"id": "part-a",
|
|
2732
|
+
"title": "Part A: editor-first creation",
|
|
2733
|
+
"count": 5
|
|
2734
|
+
},
|
|
2735
|
+
{
|
|
2736
|
+
"id": "part-b",
|
|
2737
|
+
"title": "Part B: MCP for eApps",
|
|
2738
|
+
"count": 2
|
|
2739
|
+
}
|
|
2740
|
+
]
|
|
2741
|
+
},
|
|
2742
|
+
"macro": "Expands to natives (see catalog/macros.json); the theme styles its parts by recipe Outline/<part>."
|
|
2743
|
+
},
|
|
2484
2744
|
{
|
|
2485
2745
|
"name": "Stepper",
|
|
2486
2746
|
"kind": "macro",
|
|
@@ -3980,7 +4240,7 @@
|
|
|
3980
4240
|
"group": "data",
|
|
3981
4241
|
"lite": false,
|
|
3982
4242
|
"specimenId": "exponential-ui-table",
|
|
3983
|
-
"description": "A
|
|
4243
|
+
"description": "A table of typed columns: sorting, selection, widths, alignment, windowed; `slot` columns render components.",
|
|
3984
4244
|
"children": "none",
|
|
3985
4245
|
"slots": [
|
|
3986
4246
|
"*"
|
|
@@ -4084,7 +4344,7 @@
|
|
|
4084
4344
|
"bindable": false,
|
|
4085
4345
|
"responsive": false,
|
|
4086
4346
|
"default": false,
|
|
4087
|
-
"description": "
|
|
4347
|
+
"description": "Pins the header while rows scroll."
|
|
4088
4348
|
}
|
|
4089
4349
|
],
|
|
4090
4350
|
"accessibility": {
|
|
@@ -6778,6 +7038,283 @@
|
|
|
6778
7038
|
"status": "read"
|
|
6779
7039
|
},
|
|
6780
7040
|
"macro": "Expands to natives (see catalog/macros.json); the theme styles its parts by recipe MessageBubble/<part>."
|
|
7041
|
+
},
|
|
7042
|
+
{
|
|
7043
|
+
"name": "Motion",
|
|
7044
|
+
"kind": "native",
|
|
7045
|
+
"group": "media",
|
|
7046
|
+
"lite": true,
|
|
7047
|
+
"specimenId": "exponential-ui-motion",
|
|
7048
|
+
"description": "A vector animation (Lottie-compatible) drawn identically everywhere: loaders, success states, illustrated empty states, small explainers.",
|
|
7049
|
+
"children": "none",
|
|
7050
|
+
"slots": [],
|
|
7051
|
+
"events": [
|
|
7052
|
+
"press",
|
|
7053
|
+
"hover",
|
|
7054
|
+
"visible",
|
|
7055
|
+
"complete",
|
|
7056
|
+
"state"
|
|
7057
|
+
],
|
|
7058
|
+
"basic": [],
|
|
7059
|
+
"props": [
|
|
7060
|
+
{
|
|
7061
|
+
"name": "layers",
|
|
7062
|
+
"type": "[object]",
|
|
7063
|
+
"required": false,
|
|
7064
|
+
"bindable": false,
|
|
7065
|
+
"responsive": false,
|
|
7066
|
+
"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."
|
|
7067
|
+
},
|
|
7068
|
+
{
|
|
7069
|
+
"name": "size",
|
|
7070
|
+
"type": "[number]",
|
|
7071
|
+
"required": false,
|
|
7072
|
+
"bindable": false,
|
|
7073
|
+
"responsive": false,
|
|
7074
|
+
"description": "The composition [width, height] px (with layers)."
|
|
7075
|
+
},
|
|
7076
|
+
{
|
|
7077
|
+
"name": "duration",
|
|
7078
|
+
"type": "number",
|
|
7079
|
+
"required": false,
|
|
7080
|
+
"bindable": false,
|
|
7081
|
+
"responsive": false,
|
|
7082
|
+
"description": "Length in ms (with layers)."
|
|
7083
|
+
},
|
|
7084
|
+
{
|
|
7085
|
+
"name": "fps",
|
|
7086
|
+
"type": "number",
|
|
7087
|
+
"required": false,
|
|
7088
|
+
"bindable": false,
|
|
7089
|
+
"responsive": false,
|
|
7090
|
+
"default": 60,
|
|
7091
|
+
"description": "Frames per second."
|
|
7092
|
+
},
|
|
7093
|
+
{
|
|
7094
|
+
"name": "assets",
|
|
7095
|
+
"type": "object",
|
|
7096
|
+
"required": false,
|
|
7097
|
+
"bindable": false,
|
|
7098
|
+
"responsive": false,
|
|
7099
|
+
"description": "Precomps {id: {layers}}."
|
|
7100
|
+
},
|
|
7101
|
+
{
|
|
7102
|
+
"name": "markers",
|
|
7103
|
+
"type": "[object]",
|
|
7104
|
+
"required": false,
|
|
7105
|
+
"bindable": false,
|
|
7106
|
+
"responsive": false,
|
|
7107
|
+
"description": "Named segments [{name, time, duration}] ms."
|
|
7108
|
+
},
|
|
7109
|
+
{
|
|
7110
|
+
"name": "lottie",
|
|
7111
|
+
"type": "object",
|
|
7112
|
+
"required": false,
|
|
7113
|
+
"bindable": false,
|
|
7114
|
+
"responsive": false,
|
|
7115
|
+
"description": "Lottie JSON instead of layers (no expressions)."
|
|
7116
|
+
},
|
|
7117
|
+
{
|
|
7118
|
+
"name": "src",
|
|
7119
|
+
"type": "url",
|
|
7120
|
+
"required": false,
|
|
7121
|
+
"bindable": false,
|
|
7122
|
+
"responsive": false,
|
|
7123
|
+
"description": "An attached .json or .lottie instead of layers."
|
|
7124
|
+
},
|
|
7125
|
+
{
|
|
7126
|
+
"name": "autoplay",
|
|
7127
|
+
"type": "boolean",
|
|
7128
|
+
"required": false,
|
|
7129
|
+
"bindable": false,
|
|
7130
|
+
"responsive": false,
|
|
7131
|
+
"default": true,
|
|
7132
|
+
"description": "Plays when visible; false shows the poster."
|
|
7133
|
+
},
|
|
7134
|
+
{
|
|
7135
|
+
"name": "loop",
|
|
7136
|
+
"type": "boolean",
|
|
7137
|
+
"required": false,
|
|
7138
|
+
"bindable": false,
|
|
7139
|
+
"responsive": false,
|
|
7140
|
+
"default": true,
|
|
7141
|
+
"description": "Repeats; false plays once and holds."
|
|
7142
|
+
},
|
|
7143
|
+
{
|
|
7144
|
+
"name": "plays",
|
|
7145
|
+
"type": "number",
|
|
7146
|
+
"required": false,
|
|
7147
|
+
"bindable": false,
|
|
7148
|
+
"responsive": false,
|
|
7149
|
+
"description": "Plays this many times (overrides loop)."
|
|
7150
|
+
},
|
|
7151
|
+
{
|
|
7152
|
+
"name": "direction",
|
|
7153
|
+
"type": "forward | reverse | alternate",
|
|
7154
|
+
"required": false,
|
|
7155
|
+
"bindable": false,
|
|
7156
|
+
"responsive": false,
|
|
7157
|
+
"default": "forward",
|
|
7158
|
+
"description": "Forward, reverse, or back and forth."
|
|
7159
|
+
},
|
|
7160
|
+
{
|
|
7161
|
+
"name": "speed",
|
|
7162
|
+
"type": "number",
|
|
7163
|
+
"required": false,
|
|
7164
|
+
"bindable": false,
|
|
7165
|
+
"responsive": false,
|
|
7166
|
+
"default": 1,
|
|
7167
|
+
"description": "Speed multiplier."
|
|
7168
|
+
},
|
|
7169
|
+
{
|
|
7170
|
+
"name": "segment",
|
|
7171
|
+
"type": "[number]",
|
|
7172
|
+
"required": false,
|
|
7173
|
+
"bindable": false,
|
|
7174
|
+
"responsive": false,
|
|
7175
|
+
"description": "Plays only [from, to] ms."
|
|
7176
|
+
},
|
|
7177
|
+
{
|
|
7178
|
+
"name": "marker",
|
|
7179
|
+
"type": "string",
|
|
7180
|
+
"required": false,
|
|
7181
|
+
"bindable": false,
|
|
7182
|
+
"responsive": false,
|
|
7183
|
+
"description": "Plays only this marker."
|
|
7184
|
+
},
|
|
7185
|
+
{
|
|
7186
|
+
"name": "progress",
|
|
7187
|
+
"type": "number",
|
|
7188
|
+
"required": false,
|
|
7189
|
+
"bindable": true,
|
|
7190
|
+
"responsive": false,
|
|
7191
|
+
"description": "Scrubs (0–1) instead of playing."
|
|
7192
|
+
},
|
|
7193
|
+
{
|
|
7194
|
+
"name": "play",
|
|
7195
|
+
"type": "boolean",
|
|
7196
|
+
"required": false,
|
|
7197
|
+
"bindable": true,
|
|
7198
|
+
"responsive": false,
|
|
7199
|
+
"default": true,
|
|
7200
|
+
"description": "Pauses while false."
|
|
7201
|
+
},
|
|
7202
|
+
{
|
|
7203
|
+
"name": "poster",
|
|
7204
|
+
"type": "number",
|
|
7205
|
+
"required": false,
|
|
7206
|
+
"bindable": false,
|
|
7207
|
+
"responsive": false,
|
|
7208
|
+
"description": "The still frame (ms) for reduced motion and before play."
|
|
7209
|
+
},
|
|
7210
|
+
{
|
|
7211
|
+
"name": "fit",
|
|
7212
|
+
"type": "contain | cover | fill",
|
|
7213
|
+
"required": false,
|
|
7214
|
+
"bindable": false,
|
|
7215
|
+
"responsive": false,
|
|
7216
|
+
"default": "contain",
|
|
7217
|
+
"description": "How it fills the box."
|
|
7218
|
+
},
|
|
7219
|
+
{
|
|
7220
|
+
"name": "slots",
|
|
7221
|
+
"type": "object",
|
|
7222
|
+
"required": false,
|
|
7223
|
+
"bindable": false,
|
|
7224
|
+
"responsive": false,
|
|
7225
|
+
"description": "Lottie slot overrides {slotId: value}."
|
|
7226
|
+
},
|
|
7227
|
+
{
|
|
7228
|
+
"name": "stateMachine",
|
|
7229
|
+
"type": "object",
|
|
7230
|
+
"required": false,
|
|
7231
|
+
"bindable": false,
|
|
7232
|
+
"responsive": false,
|
|
7233
|
+
"description": "A dotLottie state machine driving playback (a .lottie src brings its own)."
|
|
7234
|
+
},
|
|
7235
|
+
{
|
|
7236
|
+
"name": "inputs",
|
|
7237
|
+
"type": "object",
|
|
7238
|
+
"required": false,
|
|
7239
|
+
"bindable": true,
|
|
7240
|
+
"responsive": false,
|
|
7241
|
+
"description": "State-machine inputs {name: value}; bind to drive states from data."
|
|
7242
|
+
},
|
|
7243
|
+
{
|
|
7244
|
+
"name": "label",
|
|
7245
|
+
"type": "string",
|
|
7246
|
+
"required": false,
|
|
7247
|
+
"bindable": false,
|
|
7248
|
+
"responsive": false,
|
|
7249
|
+
"description": "What it shows, for screen readers."
|
|
7250
|
+
},
|
|
7251
|
+
{
|
|
7252
|
+
"name": "style",
|
|
7253
|
+
"type": "style",
|
|
7254
|
+
"required": false,
|
|
7255
|
+
"bindable": false,
|
|
7256
|
+
"responsive": false,
|
|
7257
|
+
"description": "Extra Box styles for the box."
|
|
7258
|
+
}
|
|
7259
|
+
],
|
|
7260
|
+
"accessibility": {
|
|
7261
|
+
"role": "img",
|
|
7262
|
+
"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",
|
|
7263
|
+
"keys": [
|
|
7264
|
+
"Enter/Space: press (with on.press)"
|
|
7265
|
+
]
|
|
7266
|
+
},
|
|
7267
|
+
"example": {
|
|
7268
|
+
"id": "example",
|
|
7269
|
+
"component": "Motion",
|
|
7270
|
+
"size": [
|
|
7271
|
+
48,
|
|
7272
|
+
48
|
|
7273
|
+
],
|
|
7274
|
+
"duration": 1000,
|
|
7275
|
+
"layers": [
|
|
7276
|
+
{
|
|
7277
|
+
"type": "shape",
|
|
7278
|
+
"transform": {
|
|
7279
|
+
"position": [
|
|
7280
|
+
24,
|
|
7281
|
+
24
|
|
7282
|
+
],
|
|
7283
|
+
"rotation": {
|
|
7284
|
+
"keys": [
|
|
7285
|
+
{
|
|
7286
|
+
"t": 0,
|
|
7287
|
+
"v": 0
|
|
7288
|
+
},
|
|
7289
|
+
{
|
|
7290
|
+
"t": 1000,
|
|
7291
|
+
"v": 360
|
|
7292
|
+
}
|
|
7293
|
+
]
|
|
7294
|
+
}
|
|
7295
|
+
},
|
|
7296
|
+
"shapes": [
|
|
7297
|
+
{
|
|
7298
|
+
"type": "ellipse",
|
|
7299
|
+
"size": [
|
|
7300
|
+
36,
|
|
7301
|
+
36
|
|
7302
|
+
]
|
|
7303
|
+
},
|
|
7304
|
+
{
|
|
7305
|
+
"type": "trim",
|
|
7306
|
+
"end": 70
|
|
7307
|
+
},
|
|
7308
|
+
{
|
|
7309
|
+
"type": "stroke",
|
|
7310
|
+
"color": "$color.primary",
|
|
7311
|
+
"width": 4
|
|
7312
|
+
}
|
|
7313
|
+
]
|
|
7314
|
+
}
|
|
7315
|
+
]
|
|
7316
|
+
},
|
|
7317
|
+
"macro": null
|
|
6781
7318
|
}
|
|
6782
7319
|
]
|
|
6783
7320
|
}
|
package/docs/package-format.md
CHANGED
|
@@ -7,7 +7,7 @@ store, tool runners, extensions), never how (Exponential serves records from
|
|
|
7
7
|
its synced store, spezl from a p2p store over eNet). `catalog/host.json`
|
|
8
8
|
`package` is the machine-readable contract; this page is the prose spec other
|
|
9
9
|
docs link to (spezl `docs/spec/blocks.md`). The TS reference is `src/host/`
|
|
10
|
-
(`package.ts`, `records.ts`, `record-store.ts`, `tools.ts`, `signature.ts`);
|
|
10
|
+
(`package.ts`, `records.ts`, `record-store.ts`, `tools.ts`, `exposes.ts`, `signature.ts`);
|
|
11
11
|
the Rust core (`apps/desktop/crates/eui-core/src/host/`) mirrors every
|
|
12
12
|
pure rule. Fixtures: `fixtures/host-router.json` (package validation, replayed
|
|
13
13
|
by every renderer through the core) and `fixtures/host-package.json` (records
|
|
@@ -37,6 +37,7 @@ renders against keeps its own version in its id (`catalogId`,
|
|
|
37
37
|
"sources": ["records:*"], // allowlist for bindings, unset = any
|
|
38
38
|
"records": { "entry": { "title": "Entry", "schema": { "type": "object", "properties": { "date": { "type": "string", "format": "date" } } } } },
|
|
39
39
|
"tools": { "weather": { "kind": "mcp", "title": "Weather", "url": "https://mcp.example.com/weather" } },
|
|
40
|
+
"upstreams": ["m5"], "exposes": [/* MCP tools a host's broker runs: "Exposes" below */],
|
|
40
41
|
"extensions": [{ "id": "https://acme.example/catalogs/charts/v1", "version": "1.4.0", "components": ["Gantt"] }],
|
|
41
42
|
"theme": "exponential", "icon": { "glyph": "clock" }, "description": "…"
|
|
42
43
|
}
|
|
@@ -126,6 +127,60 @@ Exponential's app hosts run no package tools: its server refuses a package
|
|
|
126
127
|
with `tools` (an app reaches tools through `exponential.<noun>.<op>` and
|
|
127
128
|
`harness.mcp`).
|
|
128
129
|
|
|
130
|
+
## Exposes
|
|
131
|
+
|
|
132
|
+
`exposes: [Expose]` lists MCP TOOLS the package offers to a host's MCP broker
|
|
133
|
+
(Exponential: `/api/mcp/apps`). They are declarative bindings, never code:
|
|
134
|
+
the broker lists them as `<app>__<name>` and runs them as the CALLING person,
|
|
135
|
+
so no device has to be online and nothing is hosted. `upstreams: [name]`
|
|
136
|
+
names the MCP servers the package's upstream bindings call; the host provides
|
|
137
|
+
them (Exponential: the team's MCP servers, Settings › MCP).
|
|
138
|
+
|
|
139
|
+
```jsonc
|
|
140
|
+
"upstreams": ["m5"],
|
|
141
|
+
"exposes": [
|
|
142
|
+
{ "name": "list_entries", "title": "List entries", "description": "The time entries of a day.",
|
|
143
|
+
"input": { "type": "object", "properties": { "day": { "type": "string" } } },
|
|
144
|
+
"access": "read",
|
|
145
|
+
"run": { "records": { "op": "list", "kind": "entry", "where": { "date": "${input.day}" } } } },
|
|
146
|
+
{ "name": "log_comment", "title": "Log a comment", "description": "Comment the logged hours on an issue.",
|
|
147
|
+
"input": { "type": "object", "properties": { "issue": { "type": "string" }, "hours": { "type": "number" } }, "required": ["issue", "hours"] },
|
|
148
|
+
"access": "write",
|
|
149
|
+
"run": { "action": "exponential.comments.create", "args": { "issueId": "${input.issue}", "body": "Logged ${input.hours} h" } } },
|
|
150
|
+
{ "name": "find_customer", "title": "Find a customer", "description": "Search m5 customers.",
|
|
151
|
+
"input": { "type": "object", "properties": { "q": { "type": "string" } } },
|
|
152
|
+
"access": "read",
|
|
153
|
+
"run": { "upstream": "m5", "tool": "search_customers", "args": { "query": "${input.q}" } } }
|
|
154
|
+
]
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
| key | rule |
|
|
158
|
+
| --- | --- |
|
|
159
|
+
| `name` | `^[a-z][a-z0-9_]*$`, at most 40, never `__`, unique |
|
|
160
|
+
| `title` / `description` | non-blank, at most 80 / 1024 characters |
|
|
161
|
+
| `input` | a JSON Schema `{type: "object", properties?}`: the tool's `inputSchema` |
|
|
162
|
+
| `access` | `read` or `write`: who may see it (a read-only connection never lists a write tool) |
|
|
163
|
+
| `run` | EXACTLY ONE of `records` / `action` / `upstream` |
|
|
164
|
+
|
|
165
|
+
- `records: {op: list | get | upsert, kind, id?, where?, data?, limit?}` reads
|
|
166
|
+
or writes the package's OWN records of a declared kind. A delete is
|
|
167
|
+
destructive and never exposed.
|
|
168
|
+
- `action` (+ `args`) calls a host function (`exponential.<noun>.<op>`). It
|
|
169
|
+
reads when the last word of its name is list, get, show, catalog,
|
|
170
|
+
activity or files; anything else writes.
|
|
171
|
+
- `upstream` (+ `tool`, `args`) calls a tool of one of the package's
|
|
172
|
+
`upstreams` with the person's own credential. Its level is the tool's live
|
|
173
|
+
annotations: it reads only with `readOnlyHint: true`.
|
|
174
|
+
|
|
175
|
+
Every string in `run` may hold `${input.<path>}` (dotted keys into the
|
|
176
|
+
call's input; the first key must be a declared input property). A string
|
|
177
|
+
that is exactly one template keeps the value's type; inside text the value
|
|
178
|
+
is printed. Destructive is never exposed: a name holding delete, merge, close,
|
|
179
|
+
end, remove or trash is refused, and a `read` binding whose run writes is
|
|
180
|
+
refused. At most 32 tools. `exposeIssues` returns every issue with its eMCP
|
|
181
|
+
error code; the host adds its own rules on top (Exponential: only grantable,
|
|
182
|
+
non-destructive actions; upstreams the team has).
|
|
183
|
+
|
|
129
184
|
## Extensions
|
|
130
185
|
|
|
131
186
|
`extensions: [{id, version, components?}]` declares the custom component
|