import { useCallback, useEffect, useRef, useState } from "react"; import type { BlumeClientData } from "../../core/data.ts"; import type { SearchFn, SearchResult } from "../layout/search/types.ts"; import { joinBase, stripBase } from "./base-path.ts"; /** * React hooks for Blume islands. * * Islands hydrate independently (there's no shared React root spanning them), so * project data can't come through context. Instead the layout serializes a small * snapshot into a `