import { type BetterPortalThemeConfig, type HtmlRenderable, type PluginManifest } from "@betterportal/framework";
import { type BetterPortalShellChrome } from "@betterportal/theme-runtime";
export interface Bootstrap1RouteLink {
id: string;
kind?: "page" | "api";
title: string;
viewTitle?: string;
href: string;
requestUrl?: string;
/** Service endpoint base, including its deployment path prefix. */
serviceBaseUrl?: string;
serviceId: string;
active: boolean;
error?: string;
serviceStatus?: "show" | "hide";
authStatus?: "auto" | "show" | "hide-unauthenticated" | "hide-unauthorized" | "show-unauthenticated";
}
export declare function isUserFacingRoute(route: Pick): boolean;
export interface Bootstrap1ShellContext {
title: string;
brandName: string;
logoUrl?: string;
faviconUrl?: string;
themeMode: "light" | "dark";
themeConfig: BetterPortalThemeConfig;
assetBaseUrl: string;
assetVersion?: string;
bodyHtml: HtmlRenderable;
aiManifestUrl?: string;
automationCatalogUrl?: string;
managementDiscoveryUrl?: string;
sessionId?: string;
}
export interface Bootstrap1HostPageContext {
auth?: import("@betterportal/framework").ThemeAuthContext;
title: string;
brandName: string;
logoUrl?: string;
faviconUrl?: string;
themeMode: "light" | "dark";
themeConfig: BetterPortalThemeConfig;
assetBaseUrl: string;
assetVersion?: string;
currentPath: string;
initialRouteUrl?: string;
initialServiceId?: string;
initialRouteError?: string;
initialRouteStatus?: number;
routeLinks: Bootstrap1RouteLink[];
serviceOrigins?: Record;
navItems?: Bootstrap1NavItem[];
loginUrl?: string;
authServiceId?: string;
shellServiceId?: string;
tenantId?: string;
appId?: string;
logoutUrl?: string;
chrome?: BetterPortalShellChrome;
aiManifestUrl?: string;
automationCatalogUrl?: string;
managementDiscoveryUrl?: string;
sessionId?: string;
}
export declare const Bootstrap1Manifest: PluginManifest;
export interface Bootstrap1NavLeaf {
kind: "route";
route: Bootstrap1RouteLink;
breadcrumb: string;
label?: string;
}
export interface Bootstrap1NavGroup {
kind: "group";
id: string;
title: string;
items: Bootstrap1NavItem[];
active: boolean;
defaultExpanded?: boolean;
}
export type Bootstrap1NavItem = Bootstrap1NavLeaf | Bootstrap1NavGroup | {
kind: "external";
title: string;
href: string;
};
export declare function renderNavItems(navItems: Bootstrap1NavItem[], dismissMobileMenu?: boolean): HtmlRenderable;
export declare function shellStyles(mode: "light" | "dark", themeConfig: BetterPortalThemeConfig): import("jsx-htmx").RawText;
export declare function renderThemeStyles(themeConfig: BetterPortalThemeConfig): HtmlRenderable;
export declare function renderBrand(brandName: string, logoUrl?: string, id?: string, themeConfig?: BetterPortalThemeConfig): HtmlRenderable;
export declare function renderBootstrap1Shell(context: Bootstrap1ShellContext): string;
export declare function renderBootstrap1HostPage(context: Bootstrap1HostPageContext): string;
//# sourceMappingURL=index.d.ts.map