---
export interface Props {
    name?: string;
    default?: string;
    arg?: string;
    args?: Record<string, any>;
}

const {
    name,
    default: _default='default',
    arg=_default,
    args
} = Astro.props as Props

let html: string;

if (name) {
    if (Astro.slots.has(name)) html = args && (args[name] || args[arg])
        ? (await Astro.slots.render(name, [args[name] || args[arg]]))
        : (await Astro.slots.render(name))
}
else {
    for (let slot in Astro.slots) {
        html = await Astro.slots.render(slot)
        if (html) break
    }
}

if (!html) {
    html = args && args[arg]
        ? (await Astro.slots.render(_default, [args[arg]]))
        : (await Astro.slots.render(_default))
}
---

<Fragment set:html={html}/>