Mixins / foldkit-mixins-ui

Toast

namespace · packages/mixins-ui/src/toast.ts:1

export * as Toast from './toast.js'

In the guides

Members

Toast.resolve

function · packages/mixins-ui/src/toast.ts:38

function resolve<Input, Message>(
  render: ToastRenderInfo,
  mixins: MixinList<Message>,
  context: ResolveContext<Input, Message>,
): ResolvedToast<Message>

Resolves the toast's container and every entry.

Toast.ResolvedToast

type · packages/mixins-ui/src/toast.ts:32

type ResolvedToast<Message> = Omit<ToastRenderInfo, 'container' | 'entries'> & {
  readonly container: SlotAttributes<Message>
  readonly entries: ReadonlyArray<ResolvedToastEntry<Message>>
}

Toast.ResolvedToastEntry

type · packages/mixins-ui/src/toast.ts:28

type ResolvedToastEntry<Message> = Omit<ToastEntryRender, 'attributes'> & {
  readonly attributes: SlotAttributes<Message>
}

Toast.ToastSlots

const · packages/mixins-ui/src/toast.ts:17

const ToastSlots: Slots.Contract<{
  readonly container: Slot.UnnamedSlot<
    Capability.Capability<
      'Container',
      readonly [
        Capability.Capability<
          'Interactive',
          readonly [Capability.Capability<'Base', readonly []>]
        >,
      ]
    >,
    readonly Slot.EventName[],
    readonly [Attr.AttrToken<'role'>],
    readonly Slot.RequirementName[],
    boolean
  >
  readonly entry: Slot.UnnamedSlot<
    Capability.Capability<
      'Container',
      readonly [
        Capability.Capability<
          'Interactive',
          readonly [Capability.Capability<'Base', readonly []>]
        >,
      ]
    >,
    readonly Slot.EventName[],
    readonly [Attr.AttrToken<'role'>],
    readonly Slot.RequirementName[],
    boolean
  >
}>

Toast is a nested Submodel: one live-region container plus an entry per toast. The resolver runs once per bundle and each base attribute passes through by identity.

Entries own hover and (when swipe is configured) pointer handlers, none of which has an Event token — but the resolver still refuses a second owner by event name. The dismiss control is drawn by the consumer's entryToView and is not a slot: its dismiss bundle passes through inside the entry's content.

Toast.toView

function · packages/mixins-ui/src/toast.ts:56

function toView<Message>(
  mixins: MixinList<Message>,
  context: ResolveContext<unknown, Message>,
  draw: (resolved: ResolvedToast<Message>) => Html,
): (render: ToastRenderInfo) => Html

The toast's toView: draw receives its bundles with mixins applied.