Mixins / foldkit-mixins-ui

The mental model

An @foldkit/ui component commonly hands its caller one or more attribute bundles:

roles
aria-*
tabindex
event handlers
ChildAttributes
...

Those bundles are meaningful, but a raw array is not a public customization contract. A caller can accidentally add a second OnClick, replace something structural, or repeat bespoke merge code at every call site.

foldkit-mixins-ui gives each supported bundle a stable Slot name:

@foldkit/ui component
        |
        | attribute bundles
        v
foldkit-mixins-ui Slots
        |
        | Style + Behavior
        v
foldkit-mixins resolver
        |
        v
component-owned attrs + safe additions

So the component author keeps control of the component, while callers get a typed place to extend it.