In TabsController's #rebuild() method:
const tabSlot = this.#element.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=tab]');
const panelSlot = this.#element.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');
In order that tabs controller be applicable to any tabs implementation, these should be replaced with getter functions in the options.
We should also consider removing the dependency on expand / disabled events and the active property in a similar manner