@mithrl/design-system 0.4.0 → 0.4.2

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.
@@ -1,5 +1,6 @@
1
1
  import { type HTMLAttributes, type ReactNode } from "react";
2
2
  import { type IconGlyphComponent } from "../icon/Icon";
3
+ import { type FlowchartGraphEdge, type FlowchartGraphNodeKind } from "./graphLayout";
3
4
 
4
5
  export type FlowchartCanvasProps = HTMLAttributes<HTMLDivElement> & {
5
6
  /** Flow nodes and connectors, composed top to bottom. */
@@ -54,6 +55,11 @@ export type FlowchartTriggerProps = Omit<HTMLAttributes<HTMLDivElement>, "title"
54
55
  eyebrow?: string;
55
56
  /** Optional metadata slot, typically a `Tag`. */
56
57
  trailing?: ReactNode;
58
+ /**
59
+ * Drag grip rendered at the card's leading edge. It repositions the card on
60
+ * the canvas; it does not reorder the flow, which stays owned by the edges.
61
+ */
62
+ handle?: ReactNode;
57
63
  };
58
64
  /** The entry node of a flow. Carries an accent left treatment. */
59
65
  export declare const FlowchartTrigger: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "children" | "title"> & {
@@ -67,6 +73,11 @@ export declare const FlowchartTrigger: import("react").ForwardRefExoticComponent
67
73
  eyebrow?: string;
68
74
  /** Optional metadata slot, typically a `Tag`. */
69
75
  trailing?: ReactNode;
76
+ /**
77
+ * Drag grip rendered at the card's leading edge. It repositions the card on
78
+ * the canvas; it does not reorder the flow, which stays owned by the edges.
79
+ */
80
+ handle?: ReactNode;
70
81
  } & import("react").RefAttributes<HTMLDivElement>>;
71
82
  export type FlowchartActionProps = Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
72
83
  icon?: IconGlyphComponent;
@@ -79,6 +90,11 @@ export type FlowchartActionProps = Omit<HTMLAttributes<HTMLDivElement>, "title">
79
90
  trailing?: ReactNode;
80
91
  /** Extra detail rendered beneath the header. */
81
92
  children?: ReactNode;
93
+ /**
94
+ * Drag grip rendered at the card's leading edge. It repositions the card on
95
+ * the canvas; it does not reorder the flow, which stays owned by the edges.
96
+ */
97
+ handle?: ReactNode;
82
98
  };
83
99
  /** A generic executed step in the flow. */
84
100
  export declare const FlowchartAction: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
@@ -92,6 +108,11 @@ export declare const FlowchartAction: import("react").ForwardRefExoticComponent<
92
108
  trailing?: ReactNode;
93
109
  /** Extra detail rendered beneath the header. */
94
110
  children?: ReactNode;
111
+ /**
112
+ * Drag grip rendered at the card's leading edge. It repositions the card on
113
+ * the canvas; it does not reorder the flow, which stays owned by the edges.
114
+ */
115
+ handle?: ReactNode;
95
116
  } & import("react").RefAttributes<HTMLDivElement>>;
96
117
  export type FlowchartClauseJoin = "and" | "or";
97
118
  export type FlowchartConditionClause = {
@@ -121,6 +142,11 @@ export type FlowchartConditionProps = Omit<HTMLAttributes<HTMLDivElement>, "titl
121
142
  elseLabel?: string;
122
143
  /** Optional metadata slot, typically a `Tag`. */
123
144
  trailing?: ReactNode;
145
+ /**
146
+ * Drag grip rendered at the card's leading edge. It repositions the card on
147
+ * the canvas; it does not reorder the flow, which stays owned by the edges.
148
+ */
149
+ handle?: ReactNode;
124
150
  };
125
151
  /** A branching If/Else node whose clauses read as inline chips. */
126
152
  export declare const FlowchartCondition: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "title"> & {
@@ -137,4 +163,88 @@ export declare const FlowchartCondition: import("react").ForwardRefExoticCompone
137
163
  elseLabel?: string;
138
164
  /** Optional metadata slot, typically a `Tag`. */
139
165
  trailing?: ReactNode;
166
+ /**
167
+ * Drag grip rendered at the card's leading edge. It repositions the card on
168
+ * the canvas; it does not reorder the flow, which stays owned by the edges.
169
+ */
170
+ handle?: ReactNode;
171
+ } & import("react").RefAttributes<HTMLDivElement>>;
172
+ type FlowchartGraphNodeBase = {
173
+ id: string;
174
+ title: ReactNode;
175
+ description?: ReactNode;
176
+ eyebrow?: string;
177
+ icon?: IconGlyphComponent;
178
+ };
179
+ /**
180
+ * A node in a graph-laid-out flowchart.
181
+ *
182
+ * Discriminated on `kind` so that `clauses` is *required* for a condition and
183
+ * unavailable on the other kinds. `FlowchartCondition` throws without at least
184
+ * one clause, so a condition that omits them has no valid rendering — this
185
+ * turns that into a compile error instead of silently drawing the branch as an
186
+ * ordinary action step.
187
+ */
188
+ export type FlowchartGraphNode = (FlowchartGraphNodeBase & {
189
+ kind: Exclude<FlowchartGraphNodeKind, "condition">;
190
+ clauses?: never;
191
+ }) | (FlowchartGraphNodeBase & {
192
+ kind: "condition";
193
+ clauses: readonly FlowchartConditionClause[];
194
+ });
195
+ export type FlowchartGraphProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
196
+ nodes: readonly FlowchartGraphNode[];
197
+ edges: readonly FlowchartGraphEdge[];
198
+ /** Hides the dotted grid when the flow sits inside an already-textured surface. */
199
+ grid?: boolean;
200
+ /** Widest layer the layout will accept. @default 3 */
201
+ maxLanes?: number;
202
+ /** Largest graph the layout will accept. @default 12 */
203
+ maxNodes?: number;
204
+ /** Rendered when the graph is outside the supported layout bound. */
205
+ fallback?: ReactNode;
206
+ /**
207
+ * Gives every card the reorder grip and lets a reader move it around the
208
+ * canvas. The grip is a real button, so pointer drag has a full keyboard
209
+ * equivalent: arrow keys nudge by 8px, `Shift` + arrow by 32px, and `Escape`
210
+ * returns the card to its laid-out position — cancelling an in-flight pointer
211
+ * drag as well as undoing keyboard nudges. Positions are ephemeral: they live
212
+ * for the life of the mount and are never persisted, because the graph itself
213
+ * is still the source of truth.
214
+ */
215
+ interactive?: boolean;
216
+ };
217
+ /**
218
+ * A bounded directed-acyclic flow: parallel branches sit side by side as lanes
219
+ * in the same layer, and lanes rejoin wherever a node has more than one
220
+ * incoming edge. Layout is automatic and presentation-only — the graph is
221
+ * already decided, `FlowchartGraph` only draws it.
222
+ *
223
+ * Supports at most `FLOWCHART_GRAPH_MAX_NODES` (12) nodes and
224
+ * `FLOWCHART_GRAPH_MAX_LANES` (3) parallel lanes per layer. Outside that
225
+ * bound it renders `fallback` (or nothing), so a consumer can present the flow
226
+ * some other way rather than show an unreadable tangle.
227
+ */
228
+ export declare const FlowchartGraph: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
229
+ nodes: readonly FlowchartGraphNode[];
230
+ edges: readonly FlowchartGraphEdge[];
231
+ /** Hides the dotted grid when the flow sits inside an already-textured surface. */
232
+ grid?: boolean;
233
+ /** Widest layer the layout will accept. @default 3 */
234
+ maxLanes?: number;
235
+ /** Largest graph the layout will accept. @default 12 */
236
+ maxNodes?: number;
237
+ /** Rendered when the graph is outside the supported layout bound. */
238
+ fallback?: ReactNode;
239
+ /**
240
+ * Gives every card the reorder grip and lets a reader move it around the
241
+ * canvas. The grip is a real button, so pointer drag has a full keyboard
242
+ * equivalent: arrow keys nudge by 8px, `Shift` + arrow by 32px, and `Escape`
243
+ * returns the card to its laid-out position — cancelling an in-flight pointer
244
+ * drag as well as undoing keyboard nudges. Positions are ephemeral: they live
245
+ * for the life of the mount and are never persisted, because the graph itself
246
+ * is still the source of truth.
247
+ */
248
+ interactive?: boolean;
140
249
  } & import("react").RefAttributes<HTMLDivElement>>;
250
+ export {};
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Layered layout for the small directed acyclic graphs `FlowchartGraph`
3
+ * renders. The layout is deliberately bounded: past these limits a readable
4
+ * automatic layout stops being possible in a reading surface, and consumers
5
+ * are expected to fall back to their own presentation.
6
+ */
7
+ export declare const FLOWCHART_GRAPH_MAX_NODES = 12;
8
+ export declare const FLOWCHART_GRAPH_MAX_LANES = 3;
9
+ export type FlowchartGraphNodeKind = "trigger" | "action" | "condition";
10
+ export type FlowchartGraphEdge = {
11
+ from: string;
12
+ to: string;
13
+ /** Short caption drawn on the run, e.g. `Yes` or `on failure`. */
14
+ label?: string;
15
+ /** Draws the run dashed to signal a conditional or indirect path. */
16
+ dashed?: boolean;
17
+ };
18
+ export type FlowchartGraphLayout = {
19
+ /** Node ids grouped into layers, first layer first. */
20
+ layers: readonly (readonly string[])[];
21
+ };
22
+ type LayoutInput = {
23
+ ids: readonly string[];
24
+ edges: readonly FlowchartGraphEdge[];
25
+ maxNodes?: number;
26
+ maxLanes?: number;
27
+ };
28
+ /**
29
+ * Assigns every node to a layer using longest-path layering, so an edge always
30
+ * runs from a lower layer to a higher one and merges land on a shared layer.
31
+ * Returns `null` when the graph is outside the supported bound: unknown edge
32
+ * endpoints, a cycle, too many nodes, or a layer wider than the lane limit.
33
+ */
34
+ export declare function layoutFlowchartGraph({ ids, edges, maxNodes, maxLanes, }: LayoutInput): FlowchartGraphLayout | null;
35
+ export {};
@@ -0,0 +1,94 @@
1
+ import type { CSSProperties } from "react";
2
+
3
+ /**
4
+ * The pixel grid is always square. Five columns is the smallest grid that still
5
+ * reads as a *pattern* rather than a row of dots at 16px, and stays crisp at 50.
6
+ */
7
+ export declare const PIXEL_LOADER_GRID = 5;
8
+ /**
9
+ * Motion patterns. Each is a distinct reading of the same grid, not a speed
10
+ * variation of one loop:
11
+ *
12
+ * - `dots` — cells pulse in a scattered, non-repeating rhythm.
13
+ * - `orbit` — a lit cluster travels around the perimeter; the core stays dim.
14
+ * - `drive` — a column sweeps left to right, like a plate reader head.
15
+ * - `surfer` — a diagonal wavefront crosses the grid corner to corner.
16
+ */
17
+ export declare const pixelLoaderVariants: readonly ["dots", "orbit", "drive", "surfer"];
18
+ export type PixelLoaderVariant = (typeof pixelLoaderVariants)[number];
19
+ /**
20
+ * DS size scale, deliberately identical to `StatusOrbSize` so a running-state
21
+ * indicator can be swapped between the two without touching layout.
22
+ */
23
+ export type PixelLoaderSize = "small" | "default" | "medium" | "large";
24
+ /**
25
+ * Where one cell sits in the loop, as a fraction of the cycle in `[0, 1)`.
26
+ * `null` means the cell never lights for this variant and stays at rest — the
27
+ * dim core of `orbit`, for instance.
28
+ *
29
+ * Exported so the phase table can be asserted directly rather than inferred
30
+ * from rendered CSS.
31
+ */
32
+ export declare function pixelLoaderCellPhase(variant: PixelLoaderVariant, x: number, y: number, grid?: number): number | null;
33
+ /**
34
+ * Accessible name used when the caller supplies none, or supplies one that is
35
+ * blank once trimmed. `role="img"` must always resolve to a name.
36
+ */
37
+ export declare const PIXEL_LOADER_DEFAULT_LABEL = "Loading";
38
+ /**
39
+ * A cell's `animation-delay`, as a multiple of the cycle. Mirrors the `calc()`
40
+ * in `pixel-loader.css` exactly, and is asserted against that stylesheet in the
41
+ * tests so the two cannot drift.
42
+ *
43
+ * Always negative, so the loop is in flight on the first painted frame. The
44
+ * shape is `phase - 1`, not `-phase`: a negative delay advances the playhead by
45
+ * its own magnitude, so `-phase` would light the *highest* phase first and run
46
+ * every pattern backwards.
47
+ */
48
+ export declare function pixelLoaderCellDelay(phase: number): number;
49
+ /**
50
+ * Which cells are at peak brightness at wall-clock time `t`, expressed as a
51
+ * fraction of one cycle.
52
+ *
53
+ * This resolves the same delay/duration arithmetic the browser does — playhead
54
+ * `= t - delay`, brightest when the playhead sits on the keyframe's peak — so
55
+ * the *rendered travel direction* can be asserted directly rather than inferred
56
+ * from the phase table. Returned in row-major cell-index order.
57
+ */
58
+ export declare function pixelLoaderLitCellsAt(variant: PixelLoaderVariant, t: number, grid?: number): number[];
59
+ export interface PixelLoaderProps {
60
+ /** Which pattern the grid animates. @default "dots" */
61
+ variant?: PixelLoaderVariant;
62
+ /** DS size scale. @default "medium" (30px) */
63
+ size?: PixelLoaderSize;
64
+ /** One full pass of the pattern, in milliseconds. @default `--motion-duration-ambient` */
65
+ cycle?: number;
66
+ /** Sweep a soft highlight across the grid on top of the pattern. @default false */
67
+ shimmer?: boolean;
68
+ /** Freeze the pattern on its resting frame. @default false */
69
+ paused?: boolean;
70
+ /**
71
+ * Accessible name. Trimmed; a blank or whitespace-only value falls back to
72
+ * the default rather than leaving `role="img"` unnamed. @default "Loading"
73
+ */
74
+ "aria-label"?: string;
75
+ className?: string;
76
+ style?: CSSProperties;
77
+ }
78
+ /**
79
+ * Pixel-grid loading indicator.
80
+ *
81
+ * A 5×5 grid of cells lights in a variant-specific rhythm. Every cell carries a
82
+ * phase offset computed once at render; the animation itself is a single CSS
83
+ * keyframe on the compositor (opacity and transform only), so a page full of
84
+ * these costs no JavaScript per frame.
85
+ *
86
+ * Colour comes entirely from the brand ramp, mixed against `transparent`, so
87
+ * both themes are correct without a theme prop.
88
+ *
89
+ * Reduced motion: no travel. Cells settle into a static readout of their phase
90
+ * and the whole grid breathes on a slow, low-amplitude opacity pulse.
91
+ *
92
+ * This component never displays elapsed time.
93
+ */
94
+ export declare function PixelLoader({ variant, size, cycle, shimmer, paused, "aria-label": ariaLabel, className, style, }: PixelLoaderProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { CSSProperties } from "react";
1
+ import { type CSSProperties } from "react";
2
2
  import { type OrbState } from "thinking-orbs";
3
3
  /**
4
4
  * The nine orb states shipped by the animation engine. Each is a distinct
@@ -13,7 +13,7 @@ export type StatusOrbState = OrbState;
13
13
  export type StatusOrbSize = "small" | "default" | "medium" | "large";
14
14
  /**
15
15
  * Theme mode. `auto` (default) resolves from the nearest ancestor carrying
16
- * `data-theme="dark|light"` — the attribute the Mithrl shell already sets —
16
+ * `data-theme="dark|dim|light"` — the attribute the Mithrl shell already sets —
17
17
  * and falls back to `prefers-color-scheme`. It live-updates on theme change.
18
18
  */
19
19
  export type StatusOrbTheme = "auto" | "dark" | "light";
@@ -0,0 +1,62 @@
1
+ import { type CSSProperties } from "react";
2
+
3
+ /**
4
+ * Milliseconds one swap takes. Both halves of the strip share it — see the
5
+ * stylesheet for why they cannot be decoupled. Mirrors `--motion-duration-slow`;
6
+ * the CSS reads the token directly and only falls back to this number when the
7
+ * caller overrides `revealDuration`.
8
+ */
9
+ export declare const TEXT_REVEAL_DEFAULT_DURATION_MS = 320;
10
+ export type TextRevealElement = "span" | "div" | "p" | "strong" | "em";
11
+ export type TextRevealAlign = "start" | "center" | "end";
12
+ export interface TextRevealProps {
13
+ /** The string to display. Changing it rolls the whole line over. */
14
+ text: string;
15
+ /** Host element. @default "span" */
16
+ as?: TextRevealElement;
17
+ /** Swap duration, in milliseconds. @default `--motion-duration-slow` */
18
+ revealDuration?: number;
19
+ /** Horizontal alignment of the rendered line. @default "start" */
20
+ align?: TextRevealAlign;
21
+ className?: string;
22
+ style?: CSSProperties;
23
+ }
24
+ /**
25
+ * Roller-style line transition.
26
+ *
27
+ * The line lives behind a one-line mask. When `text` changes the two lines move
28
+ * together as one rigid strip, downwards: the incoming line starts one line
29
+ * height *above* the window and slides down into place, while the outgoing line
30
+ * slides down and out through the bottom. New copy is revealed from the top,
31
+ * the way a station roller tag turns over.
32
+ *
33
+ * This is the transitions.dev "texts-reveal" technique — opacity, `translateY`
34
+ * and blur transitioned together on a smooth-out curve — kept strictly 2D. An
35
+ * earlier `rotateX` version could not survive a consumer that clips the label:
36
+ * each half collapsed into a sliver at its own hinge, so the flip never read as
37
+ * completing. A masked strip is both the sturdier mechanism and the closer
38
+ * match to the roller reference.
39
+ *
40
+ * Layout: the outgoing line is lifted out of flow and the mask is exactly one
41
+ * line tall, so the host's height never changes across a swap.
42
+ *
43
+ * Interruption: one swap is identified by a token. A `text` change mid-flight
44
+ * bumps the token, which re-keys both lines and restarts the animation from a
45
+ * known state — there is no partial transform to inherit. Settling is driven by
46
+ * the incoming line's `animationend` *and* by a token-guarded timer, so a
47
+ * dropped event or a throttled background tab still resolves to the settled
48
+ * DOM: exactly one line, no outgoing line, no transform.
49
+ *
50
+ * Accessibility: the visual lines are `aria-hidden`, the host carries
51
+ * `aria-label={text}`, and a visually hidden polite live region announces the
52
+ * settled string once.
53
+ *
54
+ * Reduced motion: no travel and no blur — the line crossfades in place.
55
+ */
56
+ export declare function TextReveal({ text, as, revealDuration, align, className, style, }: TextRevealProps): import("react").DetailedReactHTMLElement<{
57
+ className: string;
58
+ style: CSSProperties | undefined;
59
+ "aria-label": string;
60
+ "data-align": TextRevealAlign;
61
+ "data-revealing": string;
62
+ }, HTMLElement>;
@@ -1,12 +1,16 @@
1
1
  import { type HTMLAttributes } from "react";
2
+ import { type UploadResourceType } from "../../internal/ResourceTypeIcon";
2
3
 
3
4
  export type UploadQueueItemKind = "file" | "folder";
5
+ export type UploadQueueFileType = UploadResourceType;
4
6
  export type UploadQueueItemState = "ready" | "uploading" | "completed" | "failed" | "canceled";
5
7
  export type UploadQueueResource = {
6
8
  /** Stable consumer-owned identity. */
7
9
  id: string;
8
10
  name: string;
9
11
  kind: UploadQueueItemKind;
12
+ /** Optional Explorer-compatible override for the inferred leading file marker. */
13
+ fileType?: UploadQueueFileType;
10
14
  state: UploadQueueItemState;
11
15
  /** Size, contained-item count, or another concise factual detail. */
12
16
  metadata?: string;
package/dist/index.d.ts CHANGED
@@ -29,6 +29,12 @@ export { Textarea, textareaVariants } from "./components/textarea/Textarea";
29
29
  export type { TextareaPreviewState, TextareaProps, TextareaResize, TextareaStatus, TextareaSurface, } from "./components/textarea/Textarea";
30
30
  export { Composer } from "./components/composer/Composer";
31
31
  export type { ComposerLabels, ComposerMode, ComposerPreviewState, ComposerProps, ComposerStatus, } from "./components/composer/Composer";
32
+ export { ComposerUpload } from "./components/composer/ComposerUpload";
33
+ export type { ComposerUploadProps } from "./components/composer/ComposerUpload";
34
+ export { ApprovalCard } from "./components/approval-card/ApprovalCard";
35
+ export type { ApprovalCardAnswer, ApprovalCardLabels, ApprovalCardMode, ApprovalCardNavigationReason, ApprovalCardOption, ApprovalCardPermissionDecision, ApprovalCardPermissionLabels, ApprovalCardPermissionProps, ApprovalCardProps, ApprovalCardQuestion, ApprovalQuestionCardProps, } from "./components/approval-card/ApprovalCard";
36
+ export { ApprovalPlanCard } from "./components/approval-plan-card/ApprovalPlanCard";
37
+ export type { ApprovalPlan, ApprovalPlanCardProps, ApprovalPlanPhase, ApprovalPlanStep, ApprovalPlanSummary, } from "./components/approval-plan-card/ApprovalPlanCard";
32
38
  export { ComposerViewTransition } from "./components/composer/ComposerViewTransition";
33
39
  export type { ComposerView, ComposerViewTransitionProps, } from "./components/composer/ComposerViewTransition";
34
40
  export { ComposerAttachmentView } from "./components/composer/ComposerAttachmentView";
@@ -80,13 +86,15 @@ export type { GlobalAppBarProjectSelector, GlobalAppBarProjectSelectorPresentati
80
86
  export { ProjectCard } from "./components/project-card/ProjectCard";
81
87
  export type { ProjectCardActivity, ProjectCardCreator, ProjectCardMetric, ProjectCardPresentation, ProjectCardPreviewArtwork, ProjectCardPreviewState, ProjectCardProps, } from "./components/project-card/ProjectCard";
82
88
  export { UploadQueue, UploadQueueItem } from "./components/upload-queue/UploadQueue";
83
- export type { UploadQueueAction, UploadQueueItemKind, UploadQueueItemProps, UploadQueueItemState, UploadQueueProps, UploadQueueResource, UploadQueueStateLabels, } from "./components/upload-queue/UploadQueue";
89
+ export type { UploadQueueAction, UploadQueueFileType, UploadQueueItemKind, UploadQueueItemProps, UploadQueueItemState, UploadQueueProps, UploadQueueResource, UploadQueueStateLabels, } from "./components/upload-queue/UploadQueue";
84
90
  export { ProjectLibrary } from "./patterns/project-library/ProjectLibrary";
85
91
  export type { ProjectLibraryPresentation, ProjectLibraryProject, ProjectLibraryProps, ProjectLibraryScope, ProjectLibrarySort, ProjectLibraryState, } from "./patterns/project-library/ProjectLibrary";
92
+ export { ApprovalPlanReview, ApprovedPlanDisclosure, } from "./patterns/approval-plan-review/ApprovalPlanReview";
93
+ export type { ApprovalPlanReviewProps, ApprovedPlanDisclosureProps, } from "./patterns/approval-plan-review/ApprovalPlanReview";
86
94
  export { NewProjectDialog } from "./patterns/new-project-dialog/NewProjectDialog";
87
95
  export type { NewProjectDialogInitialValue, NewProjectDialogProps, NewProjectDraft, NewProjectResource, } from "./patterns/new-project-dialog/NewProjectDialog";
88
96
  export { FileDropzone } from "./components/file-dropzone/FileDropzone";
89
- export type { FileDropzoneHandle, FileDropzoneProps, FileDropzoneRejection, FileDropzoneRejectionReason, FileDropzoneSelection, FileDropzoneSelectionSource, FileDropzoneState, } from "./components/file-dropzone/FileDropzone";
97
+ export type { FileDropzoneDensity, FileDropzoneHandle, FileDropzoneProps, FileDropzoneRejection, FileDropzoneRejectionReason, FileDropzoneSelection, FileDropzoneSelectionSource, FileDropzoneState, } from "./components/file-dropzone/FileDropzone";
90
98
  export { DialogBackdrop, DialogBody, DialogClose, DialogCloseButton, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogPopup, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, DialogViewport, dialogPopupVariants, } from "./components/dialog/Dialog";
91
99
  export type { DialogBackdropProps, DialogBodyProps, DialogCloseButtonProps, DialogCloseProps, DialogContentProps, DialogDescriptionProps, DialogFooterProps, DialogHeaderProps, DialogPopupProps, DialogPortalProps, DialogRootProps, DialogSize, DialogTitleProps, DialogTriggerProps, DialogViewportProps, } from "./components/dialog/Dialog";
92
100
  export { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "./components/resizable-panels/ResizablePanels";
@@ -97,24 +105,30 @@ export { WorkspaceQuestionSurface } from "./patterns/workspace-app-shell/Workspa
97
105
  export type { WorkspaceAppShellNavigationRenderContext, WorkspaceAppShellNavigationRenderer, WorkspaceAppShellLayout, WorkspaceAppShellProps, WorkspaceNavigationConfiguration, } from "./patterns/workspace-app-shell/WorkspaceAppShell";
98
106
  export type { WorkspaceNewQuestionDialogProps, WorkspaceNewQuestionDraft, } from "./patterns/workspace-app-shell/WorkspaceNewQuestionDialog";
99
107
  export type { WorkspaceQuestionSurfacePanel, WorkspaceQuestionSurfaceProps, WorkspaceQuestionSurfaceScroll, } from "./patterns/workspace-app-shell/WorkspaceQuestionSurface";
108
+ export { PIXEL_LOADER_DEFAULT_LABEL, PIXEL_LOADER_GRID, PixelLoader, pixelLoaderCellDelay, pixelLoaderCellPhase, pixelLoaderLitCellsAt, pixelLoaderVariants, } from "./components/pixel-loader/PixelLoader";
109
+ export type { PixelLoaderProps, PixelLoaderSize, PixelLoaderVariant, } from "./components/pixel-loader/PixelLoader";
110
+ export { DotField, dotFieldDistanceToRect, dotFieldExclusionAlpha, dotFieldFalloff, dotFieldInflateRect, } from "./components/dot-field/DotField";
111
+ export type { DotFieldProps, DotFieldRect, } from "./components/dot-field/DotField";
100
112
  export { StatusOrb } from "./components/status-orb/StatusOrb";
101
113
  export type { StatusOrbProps, StatusOrbSize, StatusOrbState, StatusOrbTheme, } from "./components/status-orb/StatusOrb";
102
114
  export { FlapText, FLAP_TEXT_DEFAULT_DURATION_MS, FLAP_TEXT_DEFAULT_STAGGER_MS, } from "./components/flap-text/FlapText";
103
115
  export type { FlapTextAlign, FlapTextElement, FlapTextProps, } from "./components/flap-text/FlapText";
116
+ export { TextReveal, TEXT_REVEAL_DEFAULT_DURATION_MS, } from "./components/text-reveal/TextReveal";
117
+ export type { TextRevealAlign, TextRevealElement, TextRevealProps, } from "./components/text-reveal/TextReveal";
104
118
  export { NumberFlow, numberFlowCells, NUMBER_FLOW_DEFAULT_DURATION_MS, NUMBER_FLOW_DEFAULT_STAGGER_MS, } from "./components/number-flow/NumberFlow";
105
119
  export type { NumberFlowCell, NumberFlowDirection, NumberFlowElement, NumberFlowProps, NumberFlowSize, } from "./components/number-flow/NumberFlow";
106
- export { ApprovalCard } from "./components/approval-card/ApprovalCard";
107
- export type { ApprovalAnswers, ApprovalCardProps, ApprovalOption, ApprovalQuestion, } from "./components/approval-card/ApprovalCard";
108
120
  export { CodeBlock } from "./components/code-block/CodeBlock";
109
121
  export type { CodeBlockLabels, CodeBlockProps, CodeBlockRenderLineArgs, CodeBlockVariant, CodeLine, CodeLineKind, } from "./components/code-block/CodeBlock";
110
122
  export { CommandSearch } from "./components/command-search/CommandSearch";
111
- export type { CommandSearchItem, CommandSearchProps, } from "./components/command-search/CommandSearch";
123
+ export type { CommandSearchItem, CommandSearchItemState, CommandSearchProps, } from "./components/command-search/CommandSearch";
112
124
  export { ContextCard, ContextCardList, FileTypeChip, } from "./components/context-cards/ContextCards";
113
125
  export type { ContextCardListProps, ContextCardProps, ContextFileType, FileTypeChipProps, } from "./components/context-cards/ContextCards";
114
126
  export { FilterTable, filterTableStatusLabels, filterTableStatuses, } from "./components/filter-table/FilterTable";
115
127
  export type { FilterTableProps, FilterTableRow, FilterTableStatus, FilterTableStatusLabelMap, } from "./components/filter-table/FilterTable";
116
- export { FlowchartAction, FlowchartCanvas, FlowchartCondition, FlowchartConnector, FlowchartTrigger, } from "./components/flowchart/Flowchart";
117
- export type { FlowchartActionProps, FlowchartCanvasProps, FlowchartClauseJoin, FlowchartConditionClause, FlowchartConditionProps, FlowchartConnectorProps, FlowchartConnectorVariant, FlowchartTriggerProps, } from "./components/flowchart/Flowchart";
128
+ export { FlowchartAction, FlowchartCanvas, FlowchartCondition, FlowchartConnector, FlowchartGraph, FlowchartTrigger, } from "./components/flowchart/Flowchart";
129
+ export type { FlowchartActionProps, FlowchartCanvasProps, FlowchartClauseJoin, FlowchartConditionClause, FlowchartConditionProps, FlowchartConnectorProps, FlowchartConnectorVariant, FlowchartGraphNode, FlowchartGraphProps, FlowchartTriggerProps, } from "./components/flowchart/Flowchart";
130
+ export { FLOWCHART_GRAPH_MAX_LANES, FLOWCHART_GRAPH_MAX_NODES, layoutFlowchartGraph, } from "./components/flowchart/graphLayout";
131
+ export type { FlowchartGraphEdge, FlowchartGraphLayout, FlowchartGraphNodeKind, } from "./components/flowchart/graphLayout";
118
132
  export { InsightCards } from "./components/insight-cards/InsightCards";
119
133
  export type { Insight, InsightCardsProps, InsightChart, InsightChartPoint, InsightComparison, InsightFollowUp, InsightSegment, InsightTone, } from "./components/insight-cards/InsightCards";
120
134
  export { PromptBar, readTriggerAtCaret, } from "./components/prompt-bar/PromptBar";