import React, { forwardRef } from "react";
/**
 * Утилита для создания компонента, который выбирает реализацию по `appearance`
 * и при этом сохраняет корректную типизацию пропсов и ref для каждого варианта.
 */ export function createConditionalComponent(components) {
    return /*#__PURE__*/ forwardRef((props, ref)=>{
        const { appearance } = props;
        // Если передан известный не-default вариант, рендерим его.
        // Во всех остальных случаях безопасно откатываемся к компоненту по умолчанию.
        const Current = appearance && appearance !== 'default' && appearance in components ? components[appearance] : components.default;
        // После выбора конкретной реализации приводим тип,
        // чтобы корректно пробросить в него пропсы и `ref`.
        const C = Current;
        return /*#__PURE__*/ React.createElement(C, {
            ...props,
            ref: ref
        });
    });
}
