import { ReactNode } from "react";
import { ClientStrategy, IslandDefaultProps as IslandDefaultProps$1, IslandProps as IslandProps$1 } from "@pastweb/tools";
//#region src/Island/types.d.ts
/**
* Props for the React {@link Island} component.
*
* React Island uses the shared `@pastweb/tools` island contract for hydration
* strategies, media queries, idle timeout, and `islandId`, then specializes the
* renderable values as React nodes.
*
* `Island` only controls when a server-rendered subtree is hydrated. It does
* not receive provider props and does not install API, router, or portal
* context by itself. When an island needs providers, render a component that
* already includes them.
*
* Components inside an island can call `useIsland()` to detect the island
* boundary. `EntryAdapter` uses that context automatically to hydrate nested
* entries only when they are rendered inside an island.
*
* @example
* ```tsx
* function ProductIsland() {
* return (
*
*
*
* );
* }
*
*
*
*
* ```
*/
interface IslandProps extends Omit {
/** What to render both on the server and client. */
children: ReactNode;
/** Optional React fallback content shown before hydration. */
fallback?: ReactNode;
}
/**
* React Island props after defaults from `@pastweb/tools` have been applied.
*/
interface IslandDefaultProps extends Omit {
/** What to render both on the server and client. */
children: ReactNode;
/** Optional React fallback content shown before hydration. */
fallback?: ReactNode;
}
//#endregion
export { type ClientStrategy, IslandDefaultProps, IslandProps };
//# sourceMappingURL=types.d.cts.map