import React from "react";
import type { OverridableComponentName } from "@rebasepro/cms-types";
/**
* Resolves a potentially overridden component.
*
* Resolution order:
* 1. Collection-scoped override (highest priority)
* 2. Global override
* 3. Default component (fallback)
*
* Supports two override modes:
* - **Eject** (default): The override component fully replaces the default.
* - **Wrap** (`wrap: true`): The override component wraps the default.
* The default is passed as `OriginalComponent` in props.
*
* @param name - The overridable component name (e.g. `"Entity.Form"`)
* @param DefaultComponent - The built-in default component
* @returns The resolved component — either the default, a full replacement, or a wrapper
*
* @example
* ```tsx
* import { useComponentOverride } from "@rebasepro/app";
*
* function EntityFormWrapper(props: EntityFormProps) {
* const ResolvedForm = useComponentOverride("Entity.Form", DefaultEntityForm);
* return
(name: OverridableComponentName, DefaultComponent: React.ComponentType
): React.ComponentType
;