@ship-it-ui/shipit 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +36 -0
- package/dist/index.cjs +950 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +461 -0
- package/dist/index.d.ts +461 -0
- package/dist/index.js +921 -0
- package/dist/index.js.map +1 -0
- package/package.json +69 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { HTMLAttributes, ReactNode, ButtonHTMLAttributes, SVGAttributes } from 'react';
|
|
4
|
+
import { BadgeProps } from '@ship-it-ui/ui';
|
|
5
|
+
|
|
6
|
+
declare function cn(...inputs: ClassValue[]): string;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* AskBar — the primary "ask anything" input. The leading ✦ glyph + accent
|
|
10
|
+
* caret give it the same identity as the Copilot bubbles. Submit with the
|
|
11
|
+
* button or `⌘↵` / `Ctrl↵`.
|
|
12
|
+
*
|
|
13
|
+
* Children are rendered as scope chips below the textarea (use the existing
|
|
14
|
+
* `<Chip>` from @ship-it-ui/ui to mark a scoped query). Children render slot is
|
|
15
|
+
* the "scopes" row — leave empty for an unscoped bar.
|
|
16
|
+
*/
|
|
17
|
+
interface AskBarProps extends Omit<HTMLAttributes<HTMLFormElement>, 'onSubmit' | 'onChange'> {
|
|
18
|
+
value?: string;
|
|
19
|
+
defaultValue?: string;
|
|
20
|
+
onValueChange?: (value: string) => void;
|
|
21
|
+
/** Fires with the current query when submitted (button or ⌘↵). */
|
|
22
|
+
onSubmit?: (value: string) => void;
|
|
23
|
+
placeholder?: string;
|
|
24
|
+
/** Streaming caret next to the input. */
|
|
25
|
+
streaming?: boolean;
|
|
26
|
+
/** Submit button label. Default `Ask`. */
|
|
27
|
+
submitLabel?: ReactNode;
|
|
28
|
+
/** Disable submit. */
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/** Pixel max-width. Default 620. */
|
|
31
|
+
maxWidth?: number | string;
|
|
32
|
+
}
|
|
33
|
+
declare const AskBar: react.ForwardRefExoticComponent<AskBarProps & react.RefAttributes<HTMLFormElement>>;
|
|
34
|
+
|
|
35
|
+
interface CitationProps extends HTMLAttributes<HTMLSpanElement> {
|
|
36
|
+
/** Citation number (1-indexed). */
|
|
37
|
+
index: number;
|
|
38
|
+
/** Source label — e.g., `runbook-oncall.md:L42`. */
|
|
39
|
+
source?: ReactNode;
|
|
40
|
+
/** Connector / origin line — e.g., `notion · updated 2d ago`. */
|
|
41
|
+
meta?: ReactNode;
|
|
42
|
+
/** Inline superscript variant (renders the number only, no source row). */
|
|
43
|
+
inline?: boolean;
|
|
44
|
+
}
|
|
45
|
+
declare const Citation: react.ForwardRefExoticComponent<CitationProps & react.RefAttributes<HTMLSpanElement>>;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* ConfidenceIndicator — horizontal bar + percent + tier label. The tier tone
|
|
49
|
+
* is derived automatically from the value (high ≥ 95, medium ≥ 80, low ≥ 50,
|
|
50
|
+
* unverified < 50) but can be overridden via `tier`.
|
|
51
|
+
*/
|
|
52
|
+
type ConfidenceTier = 'high' | 'medium' | 'low' | 'unverified';
|
|
53
|
+
interface ConfidenceIndicatorProps extends HTMLAttributes<HTMLDivElement> {
|
|
54
|
+
/** Confidence value 0..100. */
|
|
55
|
+
value: number;
|
|
56
|
+
/** Override the auto-derived tier. */
|
|
57
|
+
tier?: ConfidenceTier;
|
|
58
|
+
/** Override the tier label. */
|
|
59
|
+
label?: ReactNode;
|
|
60
|
+
/** Pixel width of the bar. Default 120. */
|
|
61
|
+
width?: number;
|
|
62
|
+
/** Hide the percent number. */
|
|
63
|
+
hideValue?: boolean;
|
|
64
|
+
}
|
|
65
|
+
declare const ConfidenceIndicator: react.ForwardRefExoticComponent<ConfidenceIndicatorProps & react.RefAttributes<HTMLDivElement>>;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* CopilotMessage — chat bubble for the AI conversation. Two roles:
|
|
69
|
+
* `user` (right-aligned implicit, panel-2 background) and `assistant`
|
|
70
|
+
* (left-aligned, framed panel + border). Pass `streaming` to render a pulsing
|
|
71
|
+
* caret at the end of the body.
|
|
72
|
+
*/
|
|
73
|
+
type CopilotRole = 'user' | 'assistant';
|
|
74
|
+
interface CopilotMessageProps extends HTMLAttributes<HTMLDivElement> {
|
|
75
|
+
role: CopilotRole;
|
|
76
|
+
/** Avatar initials (or full node) shown on the side. */
|
|
77
|
+
avatar?: ReactNode;
|
|
78
|
+
/** Streaming caret at the end of the body. */
|
|
79
|
+
streaming?: boolean;
|
|
80
|
+
}
|
|
81
|
+
declare const CopilotMessage: react.ForwardRefExoticComponent<CopilotMessageProps & react.RefAttributes<HTMLDivElement>>;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* ReasoningBlock — collapsible "Reasoning · N steps · 1.8s" disclosure. Shows
|
|
85
|
+
* the chain-of-thought / step trace expanded or collapsed. Pass `<ReasoningStep>`
|
|
86
|
+
* children for each step.
|
|
87
|
+
*/
|
|
88
|
+
interface ReasoningBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
89
|
+
/** Override the heading label (defaults to `Reasoning · N steps`). */
|
|
90
|
+
label?: ReactNode;
|
|
91
|
+
/** Visible step count when label is auto. Defaults to children length. */
|
|
92
|
+
stepCount?: number;
|
|
93
|
+
/** Visible duration label (e.g., `1.8s`). */
|
|
94
|
+
duration?: ReactNode;
|
|
95
|
+
open?: boolean;
|
|
96
|
+
defaultOpen?: boolean;
|
|
97
|
+
onOpenChange?: (open: boolean) => void;
|
|
98
|
+
}
|
|
99
|
+
declare const ReasoningBlock: react.ForwardRefExoticComponent<ReasoningBlockProps & react.RefAttributes<HTMLDivElement>>;
|
|
100
|
+
interface ReasoningStepProps extends HTMLAttributes<HTMLDivElement> {
|
|
101
|
+
/** 1-indexed step number. Renders accent-colored before the body. */
|
|
102
|
+
step: number;
|
|
103
|
+
}
|
|
104
|
+
declare const ReasoningStep: react.ForwardRefExoticComponent<ReasoningStepProps & react.RefAttributes<HTMLDivElement>>;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* SuggestionChip — pill-shaped prompt suggestion. The ✦ glyph prefix signals
|
|
108
|
+
* "ask about this" and matches the AskBar's identity.
|
|
109
|
+
*/
|
|
110
|
+
interface SuggestionChipProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
111
|
+
/** Override the leading glyph. Defaults to `✦`. */
|
|
112
|
+
glyph?: ReactNode;
|
|
113
|
+
}
|
|
114
|
+
declare const SuggestionChip: react.ForwardRefExoticComponent<SuggestionChipProps & react.RefAttributes<HTMLButtonElement>>;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* ToolCallCard — visual card for a function/tool invocation in the AI
|
|
118
|
+
* conversation. Shows a `TOOL` badge, the tool name, status (running →
|
|
119
|
+
* duration · result), and an optional code/args preview body.
|
|
120
|
+
*
|
|
121
|
+
* Pass `running` to render a streaming caret next to the timing. When the
|
|
122
|
+
* call completes, replace `running` with `duration` and optionally `result`.
|
|
123
|
+
*/
|
|
124
|
+
interface ToolCallCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
125
|
+
/** Tool / function name. Rendered in mono. */
|
|
126
|
+
name: ReactNode;
|
|
127
|
+
/** Status text — e.g., `94ms · 142 rows`. */
|
|
128
|
+
status?: ReactNode;
|
|
129
|
+
/** When true, shows a streaming caret next to the status. */
|
|
130
|
+
running?: boolean;
|
|
131
|
+
/** Optional preformatted body — typically args or a query preview. */
|
|
132
|
+
children?: ReactNode;
|
|
133
|
+
}
|
|
134
|
+
declare const ToolCallCard: react.ForwardRefExoticComponent<ToolCallCardProps & react.RefAttributes<HTMLDivElement>>;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Canonical ShipIt entity vocabulary. The six types are the categories the
|
|
138
|
+
* graph cares about — anything else is rendered as `service` by default.
|
|
139
|
+
*/
|
|
140
|
+
type EntityType = 'service' | 'person' | 'document' | 'deployment' | 'incident' | 'ticket';
|
|
141
|
+
declare const ENTITY_GLYPH: Record<EntityType, string>;
|
|
142
|
+
declare const ENTITY_LABEL: Record<EntityType, string>;
|
|
143
|
+
declare const ENTITY_TONE_CLASS: Record<EntityType, string>;
|
|
144
|
+
declare const ENTITY_TONE_BG: Record<EntityType, string>;
|
|
145
|
+
|
|
146
|
+
interface EntityBadgeProps extends Omit<BadgeProps, 'variant'> {
|
|
147
|
+
type: EntityType;
|
|
148
|
+
/** Override the visible label. Defaults to the canonical type label. */
|
|
149
|
+
label?: ReactNode;
|
|
150
|
+
/** Hide the leading glyph. */
|
|
151
|
+
hideGlyph?: boolean;
|
|
152
|
+
}
|
|
153
|
+
declare const EntityBadge: react.ForwardRefExoticComponent<EntityBadgeProps & react.RefAttributes<HTMLSpanElement>>;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* EntityCard — display card for a graph entity. Plate (icon + tinted bg),
|
|
157
|
+
* title, optional subtitle / description, and an optional stats grid.
|
|
158
|
+
*
|
|
159
|
+
* Stats render in a 2- or 3-column grid below the description; pass `[]` (or
|
|
160
|
+
* omit) to skip them.
|
|
161
|
+
*/
|
|
162
|
+
interface EntityStat {
|
|
163
|
+
label: ReactNode;
|
|
164
|
+
value: ReactNode;
|
|
165
|
+
/** Tone for the value text — defaults to plain `text-text`. */
|
|
166
|
+
tone?: 'accent' | 'ok' | 'warn' | 'err' | 'muted';
|
|
167
|
+
}
|
|
168
|
+
interface EntityCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
169
|
+
type: EntityType;
|
|
170
|
+
title: ReactNode;
|
|
171
|
+
/** Subtitle line — typically owner / scope. */
|
|
172
|
+
subtitle?: ReactNode;
|
|
173
|
+
/** Body description. */
|
|
174
|
+
description?: ReactNode;
|
|
175
|
+
/** Stat tiles. Up to 6 fit comfortably across one row. */
|
|
176
|
+
stats?: ReadonlyArray<EntityStat>;
|
|
177
|
+
/** Right-side actions (buttons). */
|
|
178
|
+
actions?: ReactNode;
|
|
179
|
+
/** Override the leading glyph. */
|
|
180
|
+
glyph?: ReactNode;
|
|
181
|
+
}
|
|
182
|
+
declare const EntityCard: react.ForwardRefExoticComponent<EntityCardProps & react.RefAttributes<HTMLDivElement>>;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* EntityListRow — compact row for entity lists (e.g., dependents / dependencies
|
|
186
|
+
* panels on a detail page). Glyph dot + name + optional relation pill +
|
|
187
|
+
* optional trailing meta.
|
|
188
|
+
*
|
|
189
|
+
* Renders as a button when `onClick` is supplied; otherwise a plain row.
|
|
190
|
+
*/
|
|
191
|
+
interface EntityListRowProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
192
|
+
type: EntityType;
|
|
193
|
+
/** Entity name / id. Rendered in mono. */
|
|
194
|
+
name: ReactNode;
|
|
195
|
+
/** Trailing pill (e.g., relation type: `OWNED_BY`). */
|
|
196
|
+
relation?: ReactNode;
|
|
197
|
+
/** Trailing meta line (e.g., a timestamp). */
|
|
198
|
+
meta?: ReactNode;
|
|
199
|
+
/** When provided, the row becomes a clickable button. */
|
|
200
|
+
onClick?: () => void;
|
|
201
|
+
/** When true, hides the leading glyph dot. */
|
|
202
|
+
hideGlyph?: boolean;
|
|
203
|
+
}
|
|
204
|
+
declare const EntityListRow: react.ForwardRefExoticComponent<EntityListRowProps & react.RefAttributes<HTMLElement>>;
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* GraphEdge — SVG `<line>` (or `<path>` if curve points are provided) rendered
|
|
208
|
+
* with one of four canonical styles. Place inside a parent `<svg>`.
|
|
209
|
+
*
|
|
210
|
+
* For curves, pass `curve={{ cx, cy }}` — the edge becomes `M x1,y1 Q cx,cy x2,y2`.
|
|
211
|
+
* Pass `arrowheadId="arr-accent"` and define a matching `<defs><marker id="arr-accent">…</marker></defs>`
|
|
212
|
+
* once in your SVG to enable arrows.
|
|
213
|
+
*/
|
|
214
|
+
type GraphEdgeStyle = 'solid' | 'dashed' | 'highlighted' | 'dim';
|
|
215
|
+
interface GraphEdgeProps extends Omit<SVGAttributes<SVGElement>, 'd'> {
|
|
216
|
+
x1: number;
|
|
217
|
+
y1: number;
|
|
218
|
+
x2: number;
|
|
219
|
+
y2: number;
|
|
220
|
+
/** Optional Q-curve control point. */
|
|
221
|
+
curve?: {
|
|
222
|
+
cx: number;
|
|
223
|
+
cy: number;
|
|
224
|
+
};
|
|
225
|
+
edgeStyle?: GraphEdgeStyle;
|
|
226
|
+
/** Stroke color override. Defaults to the style's tone. */
|
|
227
|
+
color?: string;
|
|
228
|
+
/** Marker id for an arrowhead. */
|
|
229
|
+
arrowheadId?: string;
|
|
230
|
+
}
|
|
231
|
+
declare const GraphEdge: react.ForwardRefExoticComponent<GraphEdgeProps & react.RefAttributes<SVGElement>>;
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* GraphInspector — drill-in panel that appears next to a selected graph node.
|
|
235
|
+
* Header (type badge + id), title + description, properties table, and a
|
|
236
|
+
* relations list.
|
|
237
|
+
*
|
|
238
|
+
* The component is presentation-only: data shape mirrors what an inspector
|
|
239
|
+
* needs to show, without prescribing how the consumer fetches it.
|
|
240
|
+
*/
|
|
241
|
+
interface InspectorProperty {
|
|
242
|
+
key: ReactNode;
|
|
243
|
+
value: ReactNode;
|
|
244
|
+
}
|
|
245
|
+
interface InspectorRelation {
|
|
246
|
+
/** Direction or label, e.g., `→ depends on`. Rendered in mono. */
|
|
247
|
+
relation: ReactNode;
|
|
248
|
+
/** Related entity name. */
|
|
249
|
+
entity: ReactNode;
|
|
250
|
+
}
|
|
251
|
+
interface GraphInspectorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
252
|
+
type: EntityType;
|
|
253
|
+
/** Right-side machine id (e.g., `ent_0x7a2f`). */
|
|
254
|
+
entityId?: ReactNode;
|
|
255
|
+
title: ReactNode;
|
|
256
|
+
description?: ReactNode;
|
|
257
|
+
properties?: ReadonlyArray<InspectorProperty>;
|
|
258
|
+
relations?: ReadonlyArray<InspectorRelation>;
|
|
259
|
+
/** Total relation count if `relations` is a partial slice. */
|
|
260
|
+
relationCount?: number;
|
|
261
|
+
}
|
|
262
|
+
declare const GraphInspector: react.ForwardRefExoticComponent<GraphInspectorProps & react.RefAttributes<HTMLDivElement>>;
|
|
263
|
+
|
|
264
|
+
interface GraphLegendEntry {
|
|
265
|
+
/** Entity type (resolves color + label automatically) or a custom shape. */
|
|
266
|
+
type?: EntityType;
|
|
267
|
+
color?: string;
|
|
268
|
+
label: ReactNode;
|
|
269
|
+
}
|
|
270
|
+
interface GraphLegendProps extends HTMLAttributes<HTMLDivElement> {
|
|
271
|
+
entries?: ReadonlyArray<GraphLegendEntry>;
|
|
272
|
+
/** Heading rendered above the entries. Default `Legend`. */
|
|
273
|
+
heading?: ReactNode;
|
|
274
|
+
}
|
|
275
|
+
declare const GraphLegend: react.ForwardRefExoticComponent<GraphLegendProps & react.RefAttributes<HTMLDivElement>>;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* GraphMinimap — miniature scatter of node positions with a translucent
|
|
279
|
+
* rectangle marking the current viewport. Coordinates are normalized to
|
|
280
|
+
* [0, 1] × [0, 1]; the minimap renders them inside its fixed pixel box.
|
|
281
|
+
*/
|
|
282
|
+
interface MinimapPoint {
|
|
283
|
+
/** Normalized x, 0..1. */
|
|
284
|
+
x: number;
|
|
285
|
+
/** Normalized y, 0..1. */
|
|
286
|
+
y: number;
|
|
287
|
+
/** Optional dot color. */
|
|
288
|
+
color?: string;
|
|
289
|
+
}
|
|
290
|
+
interface MinimapViewport {
|
|
291
|
+
/** Top-left x, normalized 0..1. */
|
|
292
|
+
x: number;
|
|
293
|
+
/** Top-left y, normalized 0..1. */
|
|
294
|
+
y: number;
|
|
295
|
+
/** Width as a fraction of the minimap, 0..1. */
|
|
296
|
+
width: number;
|
|
297
|
+
/** Height as a fraction of the minimap, 0..1. */
|
|
298
|
+
height: number;
|
|
299
|
+
}
|
|
300
|
+
interface GraphMinimapProps extends HTMLAttributes<HTMLDivElement> {
|
|
301
|
+
points: ReadonlyArray<MinimapPoint>;
|
|
302
|
+
viewport?: MinimapViewport;
|
|
303
|
+
/** Pixel width. Default 120. */
|
|
304
|
+
width?: number;
|
|
305
|
+
/** Pixel height. Default 72. */
|
|
306
|
+
height?: number;
|
|
307
|
+
}
|
|
308
|
+
declare const GraphMinimap: react.ForwardRefExoticComponent<GraphMinimapProps & react.RefAttributes<HTMLDivElement>>;
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* GraphNode — visual representation of a graph node. Six entity-type variants
|
|
312
|
+
* × five states (default, hover, selected, on-path, dimmed). The component
|
|
313
|
+
* itself is presentation-only; pan / zoom / drag is the host's job.
|
|
314
|
+
*/
|
|
315
|
+
type GraphNodeState = 'default' | 'hover' | 'selected' | 'path' | 'dim';
|
|
316
|
+
interface GraphNodeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
317
|
+
type: EntityType;
|
|
318
|
+
state?: GraphNodeState;
|
|
319
|
+
/** Override the leading glyph. */
|
|
320
|
+
glyph?: ReactNode;
|
|
321
|
+
/** Caption rendered below the node. */
|
|
322
|
+
label?: ReactNode;
|
|
323
|
+
/** Pixel size of the square. Default 52. */
|
|
324
|
+
size?: number;
|
|
325
|
+
/** Use the node's "on a path" purple ring even if state isn't `path`. */
|
|
326
|
+
pathColor?: string;
|
|
327
|
+
}
|
|
328
|
+
declare const GraphNode: react.ForwardRefExoticComponent<GraphNodeProps & react.RefAttributes<HTMLDivElement>>;
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* PathOverlay — `<polyline>` highlighting a multi-hop path through the graph.
|
|
332
|
+
* Renders inside a parent `<svg>`; takes the path as a list of `{ x, y }`
|
|
333
|
+
* waypoints and draws a thicker, accent-tone line plus an optional shadow
|
|
334
|
+
* stroke for legibility on busy backgrounds.
|
|
335
|
+
*/
|
|
336
|
+
interface PathPoint {
|
|
337
|
+
x: number;
|
|
338
|
+
y: number;
|
|
339
|
+
}
|
|
340
|
+
interface PathOverlayProps extends Omit<SVGAttributes<SVGGElement>, 'points'> {
|
|
341
|
+
points: ReadonlyArray<PathPoint>;
|
|
342
|
+
/** Stroke color. Defaults to the path-emphasis purple. */
|
|
343
|
+
color?: string;
|
|
344
|
+
/** Stroke width in px. Default 2.5. */
|
|
345
|
+
width?: number;
|
|
346
|
+
/** Halo shadow stroke for legibility. Default true. */
|
|
347
|
+
halo?: boolean;
|
|
348
|
+
}
|
|
349
|
+
declare const PathOverlay: react.ForwardRefExoticComponent<PathOverlayProps & react.RefAttributes<SVGGElement>>;
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* CTAStrip — full-width call-to-action band. Title + body + actions, on a
|
|
353
|
+
* gradient panel background. Sits between feature sections and the footer.
|
|
354
|
+
*/
|
|
355
|
+
interface CTAStripProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
356
|
+
title: ReactNode;
|
|
357
|
+
description?: ReactNode;
|
|
358
|
+
actions?: ReactNode;
|
|
359
|
+
}
|
|
360
|
+
declare const CTAStrip: react.ForwardRefExoticComponent<CTAStripProps & react.RefAttributes<HTMLElement>>;
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* FeatureGrid — responsive grid of feature tiles. Each tile shows a glyph,
|
|
364
|
+
* title, body description.
|
|
365
|
+
*/
|
|
366
|
+
interface Feature {
|
|
367
|
+
glyph: ReactNode;
|
|
368
|
+
title: ReactNode;
|
|
369
|
+
description: ReactNode;
|
|
370
|
+
}
|
|
371
|
+
interface FeatureGridProps extends HTMLAttributes<HTMLDivElement> {
|
|
372
|
+
features: ReadonlyArray<Feature>;
|
|
373
|
+
/** Columns at the largest breakpoint. Default 3. */
|
|
374
|
+
columns?: 2 | 3 | 4;
|
|
375
|
+
}
|
|
376
|
+
declare const FeatureGrid: react.ForwardRefExoticComponent<FeatureGridProps & react.RefAttributes<HTMLDivElement>>;
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Footer — site footer with brand on the left and grouped link columns on
|
|
380
|
+
* the right, plus a copyright line below a divider.
|
|
381
|
+
*/
|
|
382
|
+
interface FooterLink {
|
|
383
|
+
label: ReactNode;
|
|
384
|
+
href: string;
|
|
385
|
+
}
|
|
386
|
+
interface FooterColumn {
|
|
387
|
+
heading: ReactNode;
|
|
388
|
+
links: ReadonlyArray<FooterLink>;
|
|
389
|
+
}
|
|
390
|
+
interface FooterProps extends HTMLAttributes<HTMLElement> {
|
|
391
|
+
/** Brand label (logo + word mark). */
|
|
392
|
+
brand?: ReactNode;
|
|
393
|
+
columns: ReadonlyArray<FooterColumn>;
|
|
394
|
+
/** Copyright / legal line. */
|
|
395
|
+
copyright?: ReactNode;
|
|
396
|
+
/** Right-side closing line (e.g., `made with care · san francisco`). */
|
|
397
|
+
closing?: ReactNode;
|
|
398
|
+
}
|
|
399
|
+
declare const Footer: react.ForwardRefExoticComponent<FooterProps & react.RefAttributes<HTMLElement>>;
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Hero — landing-page top section. Optional eyebrow / pill above the headline,
|
|
403
|
+
* a large heading (children of `<h1>`), a body description, and an action row.
|
|
404
|
+
*
|
|
405
|
+
* Designed for marketing surfaces only — do not bring this into the app.
|
|
406
|
+
*/
|
|
407
|
+
interface HeroProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
408
|
+
/** Eyebrow / pill rendered above the headline. */
|
|
409
|
+
eyebrow?: ReactNode;
|
|
410
|
+
/** Headline. Pass JSX to highlight a phrase (e.g., `<span className="text-accent">…</span>`). */
|
|
411
|
+
title: ReactNode;
|
|
412
|
+
/** Subheading. */
|
|
413
|
+
description?: ReactNode;
|
|
414
|
+
/** Action buttons row. */
|
|
415
|
+
actions?: ReactNode;
|
|
416
|
+
/** Trailing visual (right-side image, animation). When provided, the hero
|
|
417
|
+
* switches to a two-column layout. */
|
|
418
|
+
visual?: ReactNode;
|
|
419
|
+
}
|
|
420
|
+
declare const Hero: react.ForwardRefExoticComponent<HeroProps & react.RefAttributes<HTMLElement>>;
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* PricingCard — single tier in a pricing table. Shows tier name, price,
|
|
424
|
+
* description, list of features (with ✓ markers), and an action button slot.
|
|
425
|
+
*
|
|
426
|
+
* Pass `featured` to highlight the card with an accent border + tinted
|
|
427
|
+
* background for the "recommended" tier.
|
|
428
|
+
*/
|
|
429
|
+
interface PricingCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
430
|
+
/** Tier name — e.g., `Pro`, `Team`. */
|
|
431
|
+
tier: ReactNode;
|
|
432
|
+
/** Price. Pass JSX (`<span>$29</span><span> / mo</span>`) for layout. */
|
|
433
|
+
price: ReactNode;
|
|
434
|
+
/** Short description below the tier name. */
|
|
435
|
+
description?: ReactNode;
|
|
436
|
+
/** Feature bullet list. */
|
|
437
|
+
features: ReadonlyArray<ReactNode>;
|
|
438
|
+
/** Action button (typically a `<Button>`). */
|
|
439
|
+
action?: ReactNode;
|
|
440
|
+
/** Highlight as the recommended tier. */
|
|
441
|
+
featured?: boolean;
|
|
442
|
+
}
|
|
443
|
+
declare const PricingCard: react.ForwardRefExoticComponent<PricingCardProps & react.RefAttributes<HTMLDivElement>>;
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* Testimonial — pull-quote with author + role. Centered for marketing
|
|
447
|
+
* surfaces.
|
|
448
|
+
*/
|
|
449
|
+
interface TestimonialProps extends Omit<HTMLAttributes<HTMLElement>, 'cite' | 'role'> {
|
|
450
|
+
/** The quoted body. */
|
|
451
|
+
quote: ReactNode;
|
|
452
|
+
/** Author display name. */
|
|
453
|
+
author: ReactNode;
|
|
454
|
+
/** Author role / company. */
|
|
455
|
+
role?: ReactNode;
|
|
456
|
+
/** Avatar initials or full node. */
|
|
457
|
+
avatar?: ReactNode;
|
|
458
|
+
}
|
|
459
|
+
declare const Testimonial: react.ForwardRefExoticComponent<TestimonialProps & react.RefAttributes<HTMLElement>>;
|
|
460
|
+
|
|
461
|
+
export { AskBar, type AskBarProps, CTAStrip, type CTAStripProps, Citation, type CitationProps, ConfidenceIndicator, type ConfidenceIndicatorProps, type ConfidenceTier, CopilotMessage, type CopilotMessageProps, type CopilotRole, ENTITY_GLYPH, ENTITY_LABEL, ENTITY_TONE_BG, ENTITY_TONE_CLASS, EntityBadge, type EntityBadgeProps, EntityCard, type EntityCardProps, EntityListRow, type EntityListRowProps, type EntityStat, type EntityType, type Feature, FeatureGrid, type FeatureGridProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GraphEdge, type GraphEdgeProps, type GraphEdgeStyle, GraphInspector, type GraphInspectorProps, GraphLegend, type GraphLegendEntry, type GraphLegendProps, GraphMinimap, type GraphMinimapProps, GraphNode, type GraphNodeProps, type GraphNodeState, Hero, type HeroProps, type InspectorProperty, type InspectorRelation, type MinimapPoint, type MinimapViewport, PathOverlay, type PathOverlayProps, type PathPoint, PricingCard, type PricingCardProps, ReasoningBlock, type ReasoningBlockProps, ReasoningStep, type ReasoningStepProps, SuggestionChip, type SuggestionChipProps, Testimonial, type TestimonialProps, ToolCallCard, type ToolCallCardProps, cn };
|