JSDoc
Functions
CommandPalette
functionCommandPalette({ actions, onClose, placeholder, maxResults, }: CommandPaletteProps): JSX.ElementBottomDrawer
functionBottomDrawer({ open, onClose, title, children, heightPercent, closeOnEsc, }: BottomDrawerProps): JSX.Element | nullConsolePanel
functionConsolePanel(props: ConsolePanelProps): JSX.Element
entryKind
functionResolves an entry to its row-rendering kind, defaulting to 'log'.
entryKind(e: ConsoleEntry): "log" | "group" | "table" | "count" | "time" | "error"
resolveFeatures
functionDeep-merges a partial features bag into the defaults. Host is free to pass `features={{ toolbar: { search: false } }}` and only override what matters; everything else stays at default.
resolveFeatures(partial?: PartialConsoleFeatures): ConsoleFeatures
resolveTraceFeatures
functionresolveTraceFeatures(partial?: PartialTraceFeatures): TraceFeatures
TraceTree
functionTraceTree(props: TraceTreeProps): JSX.Element
inferredAdapter
functioninferredAdapter(): SchemaAdapter
inferKind
functioninferKind(v: unknown): ValueKind
ObjectInspector
functionObjectInspector(props: ObjectInspectorProps): JSX.Element
zodAdapter
functionzodAdapter(rootSchema: ZodTypeAny): SchemaAdapter
resolveInspectorFeatures
functionresolveInspectorFeatures(partial?: PartialInspectorFeatures): ObjectInspectorFeatures
HttpInspector
functionHttpInspector({ requests, emptyText, }: HttpInspectorProps): JSX.ElementAvatar
functionGeneric colored-square avatar — used for app tiles, agents, etc. App-agnostic: caller passes the initial + hue, no STATE lookup.
Avatar({ initial, hue, size, title }: AvatarProps): JSX.ElementChip
functionChip({ children, on, onClick, onClose, title }: ChipProps): JSX.ElementJsonTree
functionJsonTree({ value, indent }: JsonTreeProps): JSX.ElementPip
functionPip({ kind, size, color, style }: PipProps): JSX.ElementSparkline
functionSparkline({ values, width, height, color, strokeWidth, "aria-label": ariaLabel, }: SparklineProps): JSX.ElementSpinner
functionSpinner({ size, color }: SpinnerProps): JSX.ElementStatusIcon
functionStatusIcon({ status, size }: StatusIconProps): JSX.ElementStatusPill
functionStatusPill({ status, label }: StatusPillProps): JSX.ElementTweakRadio
functionTweakRadio({ label, value, options, onChange, }: { label: string; value: string; options: TweakRadioOption[]; onChange: (v: string) => void; }): JSX.ElementTweakSection
functionTweakSection({ title, children, }: { title: string; children?: ReactNode; }): JSX.ElementTweakSlider
functionTweakSlider({ label, value, min, max, step, unit, onChange, }: TweakSliderProps): JSX.ElementTweaksPanel
functionTweaksPanel({ title, enabled, children, }: TweaksPanelProps): JSX.Element | nullTweakToggle
functionTweakToggle({ label, value, onChange, }: { label: string; value: boolean; onChange: (v: boolean) => void; }): JSX.ElementuseTweaks
function<T extends Record<string, unknown>>(defaults: T): UseTweaksReturn<T>
useKey
functionSubscribe to a global keydown. - 'cmdk' matches Cmd/Ctrl + K (and preventDefault) - 'esc' matches Escape - any other string matches `e.key === key` `deps` is forwarded to useEffect so consumers can opt into stale-closure fixes; pass [] for once-on-mount.
useKey(key: UseKeySpec, fn: (e: KeyboardEvent) => void, deps?: ReadonlyArray<unknown>): void
onActivateKey
functiononActivateKey(fn: () => void): (e: KeyboardEvent) => void
Types
CommandAction
typetype CommandAction = {
id: string;
label: string;
cat?: string;
hint?: string;
kbd?: string;
onRun: () => void;
}CommandPaletteProps
typetype CommandPaletteProps = {
actions: CommandAction[];
onClose: () => void;
placeholder?: string;
maxResults?: number;
}BottomDrawerProps
typetype BottomDrawerProps = {
open: boolean;
onClose: () => void;
title?: string;
children: ReactNode;
heightPercent?: number;
closeOnEsc?: boolean;
}ColumnsConfig
typetype ColumnsConfig = {
timestamp: boolean;
timestampFormat: TimestampFormat;
source: boolean;
level: boolean;
traceChip: boolean;
rowPrefix: boolean;
rowExtra: boolean;
}ConsoleEntry
typetype ConsoleEntry = | ConsoleEntryLog | ConsoleEntryGroup | ConsoleEntryTable | ConsoleEntryCount | ConsoleEntryTime | ConsoleEntryError
ConsoleEntryCount
typetype ConsoleEntryCount = ConsoleEntryBase & {
kind: 'count';
label: string;
value: number;
}ConsoleEntryError
typetype ConsoleEntryError = ConsoleEntryBase & {
kind: 'error';
msg: string;
stack?: string[];
data?: unknown;
}ConsoleEntryGroup
typetype ConsoleEntryGroup = ConsoleEntryBase & {
kind: 'group';
label: string;
durationMs?: number;
status?: ConsoleGroupStatus;
active?: boolean;
}ConsoleEntryLog
typetype ConsoleEntryLog = ConsoleEntryBase & {
kind?: 'log';
msg: string;
data?: unknown;
stack?: string[];
}ConsoleEntryTable
typetype ConsoleEntryTable = ConsoleEntryBase & {
kind: 'table';
label: string;
columns: string[];
rows: unknown[][];
}ConsoleEntryTime
typetype ConsoleEntryTime = ConsoleEntryBase & {
kind: 'time';
label: string;
durationMs: number;
}ConsoleFeatures
typetype ConsoleFeatures = {
columns: ColumnsConfig;
toolbar: ToolbarConfig;
footer: boolean;
dataPreview: boolean;
stackFrames: boolean;
tableRows: boolean;
groupAggregations: boolean;
evalSlot: boolean;
summarySlot: boolean;
autoScroll: boolean;
/** When true, clicking a row selects it and (if the host passes
* `renderEntryDetail`) the detail panel renders to the right. Hosts
* typically wire this to <ObjectInspector value={entry.data} />. */
detailPanel: boolean;
groupCollapseDefault: GroupCollapseDefault;
}ConsoleGroupStatus
typetype ConsoleGroupStatus = 'ok' | 'warn' | 'err'
ConsoleLevel
typetype ConsoleLevel = 'info' | 'warn' | 'error' | 'debug'
ConsoleLevelOrAll
typetype ConsoleLevelOrAll = ConsoleLevel | 'all'
ConsolePanelProps
typetype ConsolePanelProps = {
entries: ConsoleEntry[];
emptyText?: string;
/** Single switchable-features bag. Anything omitted falls back to
* DEFAULT_CONSOLE_FEATURES. */
features?: PartialConsoleFeatures;
level?: ConsoleLevelOrAll;
onLevelChange?: (l: ConsoleLevelOrAll) => void;
source?: string | null;
onSourceChange?: (s: string | null) => void;
query?: string;
onQueryChange?: (q: string) => void;
sources?: ConsoleSource[];
paused?: boolean;
onPausedChange?: (paused: boolean) => void;
onClear?: () => void;
collapsed?: Record<string, boolean>;
onCollapsedChange?: (c: Record<string, boolean>) => void;
renderRowPrefix?: (entry: ConsoleEntry) => ReactNode | null;
renderRowExtra?: (entry: ConsoleEntry) => ReactNode | null;
/** Side-panel content for the selected row. Host typically wires this
* to `<ObjectInspector value={entry.data} />`. Renders only when
* features.detailPanel === true and an entry is selected. */
renderEntryDetail?: (entry: ConsoleEntry) => ReactNode | null;
selectedEntryId?: string | number | null;
onSelectEntry?: (id: string | number | null) => void;
evalSlot?: ReactNode | null;
summarySlot?: ReactNode | null;
onTraceClick?: (traceId: string) => void;
className?: string;
style?: JSX.IntrinsicElements['div']['style'];
}ConsoleSource
typeSource descriptor used to render filter chips. `color` is a CSS color string provided by the host (`var(--something)` or any literal). The reusable component only spreads it; it never inspects the value.
type ConsoleSource = {
id: string;
label: string;
color?: string;
}GroupCollapseDefault
typetype GroupCollapseDefault = | { kind: 'all-expanded' }
| { kind: 'all-collapsed' }
| { kind: 'first-n-expanded'; n: number }PartialConsoleFeatures
typetype PartialConsoleFeatures = Partial<
Omit<ConsoleFeatures, 'columns' | 'toolbar' | 'groupCollapseDefault'>
> & {
columns?: Partial<ColumnsConfig>;
toolbar?: Partial<ToolbarConfig>;
groupCollapseDefault?: GroupCollapseDefault;
}PartialTraceFeatures
typetype PartialTraceFeatures = Partial<TraceFeatures>
Span
typetype Span = {
id: string;
parent?: string | null;
name: string;
start: number;
dur: number;
status?: SpanStatus;
service?: string;
tags?: Record<string, unknown>;
}SpanStatus
typetype SpanStatus = 'ok' | 'warn' | 'error'
TimestampFormat
typetype TimestampFormat = 'absolute' | 'absolute-ms' | 'relative' | 'hms' | 'hms-ms'
ToolbarConfig
typetype ToolbarConfig = {
enabled: boolean;
pause: boolean;
clear: boolean;
expandCollapseGroups: boolean;
levelFilter: boolean;
sourceFilter: boolean;
search: boolean;
searchPlaceholder: string;
}TraceFeatures
typetype TraceFeatures = {
axis: boolean;
axisTickCount: number;
durationLabel: boolean;
serviceLabel: boolean;
statusColor: boolean;
hierarchyRail: boolean;
defaultExpansion: 'all-expanded' | 'roots-only';
detailPanel: boolean;
}TraceTreeProps
typetype TraceTreeProps = {
spans: Span[];
selectedSpanId?: string;
onSelectSpan?: (id: string) => void;
emptyText?: string;
renderSpanDetail?: (span: Span) => ReactNode | null;
features?: PartialTraceFeatures;
className?: string;
style?: JSX.IntrinsicElements['div']['style'];
}CopyOption
typetype CopyOption = 'json' | 'path' | 'value'
CustomRenderer
typeCustom renderer for one node. Applied BEFORE the schema-derived editor (so hosts can fully override). When `match` returns true, the inspector delegates rendering to `view` (read mode) or `edit` (edit mode); if a renderer omits one mode, the inspector falls back to the built-in.
type CustomRenderer = {
name: string;
match: (ctx: RendererMatchContext) => boolean;
view?: (ctx: RendererViewContext) => ReactNode | null;
edit?: (ctx: RendererEditContext) => ReactNode | null;
}EditResult
typeResult of an in-place edit attempt. Discriminated so consumers can react to validation failures without try/catch.
type EditResult = | { status: 'committed'; path: Path; oldValue: unknown; newValue: unknown }
| { status: 'rejected'; path: Path; reason: 'validation' | 'type'; message: string }ObjectInspectorFeatures
typetype ObjectInspectorFeatures = {
toolbar: boolean;
search: boolean;
searchPlaceholder: string;
expandAllButton: boolean;
collapseAllButton: boolean;
sortKeysButton: boolean;
breadcrumb: boolean;
typeBadges: boolean;
docTooltips: boolean;
cyclicMarker: boolean;
collapsedPreview: boolean;
copyButtons: ReadonlyArray<CopyOption>;
maxStringPreview: number;
maxArrayPreviewItems: number;
defaultExpandDepth: number;
dense: boolean;
/** Reserved for v2 — JSON / Table / Diff view modes. v1 ships only Tree. */
viewModes: ReadonlyArray<'tree' | 'json' | 'table' | 'diff'>;
}ObjectInspectorMode
typetype ObjectInspectorMode = 'view' | 'edit'
ObjectInspectorProps
typeVisual descriptor — held intentionally minimal so the next UI iteration can change colors/spacing/icons without a prop migration.
type ObjectInspectorProps = {
value: unknown;
/** Adapter (preferred). If omitted, falls back to inferred. The bundled
* `zodAdapter(schema)` is a separate import so the package has no zod
* runtime dep. */
adapter?: SchemaAdapter;
mode?: ObjectInspectorMode;
/** Required when mode === 'edit'. Called once per attempt with a
* discriminated EditResult so consumers can react to rejections without
* try/catch. */
onEdit?: (result: EditResult) => void;
/** Custom renderer registry — applied before built-in renderers in BOTH
* view and edit modes. Hosts get total control over per-type chrome
* (e.g. photoeditor's LayerNode preview, AAR's AppManifest pill). */
customRenderers?: ReadonlyArray<CustomRenderer>;
/** Reserved for v2 diff mode — ignored by v1. Documented now so adding
* diff later doesn't break consumers. */
compareTo?: unknown;
rootLabel?: string;
emptyText?: string;
features?: PartialInspectorFeatures;
className?: string;
style?: JSX.IntrinsicElements['div']['style'];
}Path
typetype Path = ReadonlyArray<string | number>
PartialInspectorFeatures
typetype PartialInspectorFeatures = Partial<ObjectInspectorFeatures>
RendererEditContext
typetype RendererEditContext = RendererMatchContext & {
commit: (newValue: unknown) => void;
cancel: () => void;
}RendererMatchContext
typetype RendererMatchContext = {
value: unknown;
node: SchemaNode;
path: Path;
}RendererViewContext
typetype RendererViewContext = RendererMatchContext
SchemaAdapter
typeAdapter contract — pluggable schema source. Inferred is the default; the bundled zod adapter wraps a ZodSchema. Hosts may write their own.
type SchemaAdapter = {
name: string;
/** Resolve a SchemaNode for the value at `path`. */
nodeFor: (value: unknown, path: Path) => SchemaNode;
/** Validate a value against the schema at `path`. Returns null on success. */
validate?: (value: unknown, path: Path) => ValidationError | null;
}SchemaNode
typeType-info node returned by a SchemaAdapter. Drives both the type badge and the editor selection.
type SchemaNode = {
kind: ValueKind;
label: string;
doc?: string;
enum?: ReadonlyArray<string | number | boolean>;
range?: readonly [number, number];
lenRange?: readonly [number, number];
pattern?: string;
format?: string;
optional?: boolean;
readOnly?: boolean;
/** For discriminated-union: the discriminant property name. The host's
* adapter builds this; the inspector uses it to render a tag dropdown. */
discriminator?: string;
/** For discriminated-union: the variant labels keyed by discriminant value. */
variants?: Record<string, SchemaNode>;
}ValidationError
typetype ValidationError = {
message: string;
path?: Path;
}ValueKind
typeInternal classification of a value. Adapters return one of these from `nodeFor()`; renderers dispatch on `kind`. New kinds are non-breaking additions because consumers always handle `'unknown'` as the fallback.
type ValueKind = | 'string' | 'number' | 'integer' | 'boolean' | 'null' | 'undefined' | 'date' | 'object' | 'array' | 'bigint' | 'symbol' | 'function' | 'enum' | 'discriminatedUnion' | 'unknown'
HttpCache
typetype HttpCache = 'hit' | 'miss' | 'bypass'
HttpInspectorProps
typetype HttpInspectorProps = {
requests: HttpRequestRow[];
emptyText?: string;
}HttpMethod
typetype HttpMethod = string
HttpRequestRow
typetype HttpRequestRow = {
ts: string;
method: HttpMethod;
url: string;
status: number;
type: string;
cache: HttpCache;
sizeBytes: number;
ms: number;
initiator: string;
}IconName
typetype IconName = "Box" | "Activity" | "Graph" | "Terminal" | "Clock" | "Robot" | "Hand" | "Key" | "Search" | "Sun" | "Moon" | "Cmd" | "Drawer" | "Check" | "X" | "Retry" | "Warn" | "Pause" | "Play" | "Chevron" | "ChevronD" | "Plus" | "ExternalLink" | "Copy" | "Filter" | "ArrowUp" | "Telegram" | "Cron" | "Inbox" | "Zap" | "Restart" | "Eye" | "Server"
IconProps
typetype IconProps = {
size?: number;
stroke?: string;
fill?: string;
sw?: number;
className?: string;
style?: React.CSSProperties;
title?: string;
}AvatarProps
typetype AvatarProps = {
initial: string;
hue?: number;
size?: number;
title?: string;
}ChipProps
typetype ChipProps = {
children: ReactNode;
on?: boolean;
onClick?: (e: MouseEvent) => void;
onClose?: () => void;
title?: string;
}JsonTreeProps
typetype JsonTreeProps = {
value: unknown;
indent?: number;
}JsonValue
typetype JsonValue = | null
| string
| number
| boolean
| JsonValue[]
| { [key: string]: JsonValue }PipKind
typetype PipKind = 'ok' | 'warn' | 'err' | 'plain'
PipProps
typetype PipProps = {
kind?: PipKind;
size?: number;
color?: string;
style?: React.CSSProperties;
}SparklineProps
typeSparkline — tiny inline-SVG line chart for at-a-glance trend display. Single responsibility: render `values` as a normalized polyline inside a fixed-size SVG. No axes, no labels, no chart library — just a polyline suitable for embedding in a tile, row, or status strip. Edge cases: - `values.length === 0` → empty <svg/> (no polyline, no crash). - `values.length === 1` → single dot at midpoint (a polyline of one point is a no-op in SVG, so we render a <circle> instead). - `max === min` → all points clamped to vertical midline (avoids divide-by-zero in normalization; common when every value is 0). Coordinates are rounded to 2 decimals so snapshot/string assertions are stable.
type SparklineProps = {
values: readonly number[];
width?: number;
height?: number;
/** CSS color (or var(--…)) used for the polyline stroke. */
color?: string;
strokeWidth?: number;
/** Accessible label. Renders as <title> inside the SVG. */
'aria-label'?: string;
}SpinnerProps
typetype SpinnerProps = {
size?: number;
color?: string;
}StatusIconProps
typetype StatusIconProps = {
status: StatusKind;
size?: number;
}StatusKind
typetype StatusKind = string
StatusPillProps
typetype StatusPillProps = {
status: StatusKind;
label?: string;
}TweakRadioOption
typetype TweakRadioOption = { value: string; label: string }TweakSliderProps
typetype TweakSliderProps = {
label: string;
value: number;
min?: number;
max?: number;
step?: number;
unit?: string;
onChange: (v: number) => void;
}TweaksPanelProps
typetype TweaksPanelProps = {
title?: string;
enabled?: boolean;
children: ReactNode;
}UseTweaksReturn
typetype UseTweaksReturn = UseTweaksReturn<T>
UseKeySpec
typetype UseKeySpec = string
Constants
DEFAULT_CONSOLE_FEATURES
constSensible defaults: everything visible, all toggles on, all-expanded groups.
const DEFAULT_CONSOLE_FEATURES: ConsoleFeatures
DEFAULT_TRACE_FEATURES
constconst DEFAULT_TRACE_FEATURES: TraceFeatures
DEFAULT_INSPECTOR_FEATURES
constconst DEFAULT_INSPECTOR_FEATURES: ObjectInspectorFeatures
Icon
constconst Icon: { readonly Box: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Activity: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Graph: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Terminal: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Clock: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Robot: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Hand: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Key: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Search: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Sun: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Moon: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Cmd: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Drawer: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Check: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly X: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Retry: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Warn: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Pause: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Play: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Chevron: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly ChevronD: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Plus: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly ExternalLink: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Copy: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Filter: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly ArrowUp: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Telegram: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Cron: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Inbox: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Zap: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Restart: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Eye: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; readonly Server: (p: IconProps) => import("/home/runner/work/components/components/node_modules/.pnpm/@types+react@18.3.28/node_modules/@types/react/jsx-runtime").JSX.Element; }