Mixins / foldkit-mixins-ui

FileDropSlots

const · packages/mixins-ui/src/fileDrop.ts:13

const FileDropSlots: Slots.Contract<{
  readonly root: Slot.UnnamedSlot<
    Capability.Capability<
      'Container',
      readonly [
        Capability.Capability<
          'Interactive',
          readonly [Capability.Capability<'Base', readonly []>]
        >,
      ]
    >,
    readonly Slot.EventName[],
    readonly Slot.AttributeName[],
    readonly Slot.RequirementName[],
    boolean
  >
  readonly input: Slot.UnnamedSlot<
    Capability.Capability<
      'Interactive',
      readonly [Capability.Capability<'Base', readonly []>]
    >,
    readonly [Event.EventToken<'change'>],
    readonly [Attr.AttrToken<'disabled'>],
    readonly Slot.RequirementName[],
    boolean
  >
}>

FileDrop is a small Submodel: a root drop zone plus its hidden file input. The root owns the drag handlers (dragenter/dragleave/drop have no Event tokens, but the resolver still refuses a second owner by event name); the input owns change while enabled. A Behavior adding its own handler to one of those is a conflict, not a second silent owner.