@thebase/ui
Version:
CDN-installable Owl and Bootstrap 5 UI component library.
51 lines (46 loc) • 1.69 kB
TypeScript
export interface BaseUIComponentDefinition {
type?: "static" | "owl";
selector?: string;
mount?: (element: Element, api: BaseUIApi, options?: Record<string, unknown>) => { destroy?: () => void } | void;
}
export interface BaseUIApi {
version: string;
register(name: string, componentDefinition: BaseUIComponentDefinition): BaseUIApi;
component(name: string): BaseUIComponentDefinition | undefined;
mount(selectorOrElement: string | Element, options?: Record<string, unknown>): unknown;
mountAll(rootElement?: ParentNode): unknown[];
destroy(rootElement?: ParentNode): void;
icons: {
lucide: {
version: string;
cdnBaseUrl: string;
normalizeName(name: string): string;
url(name: string, options?: { baseUrl?: string }): string;
render(
element: Element,
name: string,
options?: { baseUrl?: string; label?: string; size?: string; url?: string },
): Element;
};
};
theme: { set(modeOrTokens: string | Record<string, string>): void };
}
export interface BaseUIThemeController {
current(): "light" | "dark";
set(theme: string, options?: { skipStorage?: boolean }): "light" | "dark";
toggle(): "light" | "dark";
syncFrames(theme: string): void;
init(): "light" | "dark";
}
export interface BaseUIThemeOptions {
storageKey?: string;
queryKey?: string;
toggleSelector?: string;
labelSelector?: string;
root?: Element;
}
export const BaseUI: BaseUIApi;
export const BaseUITheme: BaseUIThemeController;
export function createThemeController(options?: BaseUIThemeOptions): BaseUIThemeController;
export function normalizeTheme(value: unknown): "light" | "dark";
export default BaseUI;