@mechane-ai/ui 0.2.1 → 0.3.0

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.
Files changed (139) hide show
  1. package/README.md +38 -13
  2. package/dist/ai.js +315 -0
  3. package/dist/assets/stylex.css +1533 -360
  4. package/dist/cartesian-Bwt6ZnF5.js +847 -0
  5. package/dist/chart-input-Bti0gyzz.js +173 -0
  6. package/dist/charts/cartesian.js +1 -0
  7. package/dist/charts/distribution.js +1 -0
  8. package/dist/charts/graph.js +1 -0
  9. package/dist/charts/matrix.js +1 -0
  10. package/dist/charts.js +98 -93
  11. package/dist/code-BJp-g4Fw.js +172 -0
  12. package/dist/collections.js +666 -0
  13. package/dist/content/code.js +1 -0
  14. package/dist/content/diff.js +101 -0
  15. package/dist/content/link.js +1 -0
  16. package/dist/content/tree.js +77 -0
  17. package/dist/content-link-52aZVX3X.js +26 -0
  18. package/dist/content.js +367 -0
  19. package/dist/distribution-CViLvcPP.js +609 -0
  20. package/dist/graph-DAfo72ZD.js +230 -0
  21. package/dist/index.js +1 -1
  22. package/dist/layout.js +201 -160
  23. package/dist/matrix-B9dybkce.js +785 -0
  24. package/dist/packages/ai/src/approval.d.ts +29 -0
  25. package/dist/packages/ai/src/conversation.d.ts +34 -0
  26. package/dist/packages/ai/src/index.d.ts +10 -0
  27. package/dist/packages/ai/src/message.d.ts +19 -0
  28. package/dist/packages/ai/src/prompt-input.d.ts +25 -0
  29. package/dist/packages/ai/src/sources.d.ts +17 -0
  30. package/dist/packages/charts/src/cartesian/categorical.d.ts +43 -0
  31. package/dist/packages/charts/src/cartesian/index.d.ts +8 -0
  32. package/dist/packages/charts/src/cartesian/sparkline.d.ts +11 -0
  33. package/dist/packages/charts/src/cartesian/time-series-data.d.ts +54 -0
  34. package/dist/packages/charts/src/cartesian/time-series-line.d.ts +9 -0
  35. package/dist/packages/charts/src/cartesian/time-series.d.ts +29 -0
  36. package/dist/packages/charts/src/chart-frame.d.ts +34 -0
  37. package/dist/packages/charts/src/chart-input.d.ts +10 -0
  38. package/dist/packages/charts/src/chart-theme.d.ts +48 -0
  39. package/dist/packages/charts/src/distribution/distribution-input.d.ts +14 -0
  40. package/dist/packages/charts/src/distribution/distribution-plot.d.ts +135 -0
  41. package/dist/packages/charts/src/distribution/ecdf.d.ts +23 -0
  42. package/dist/packages/charts/src/distribution/histogram.d.ts +26 -0
  43. package/dist/packages/charts/src/distribution/index.d.ts +8 -0
  44. package/dist/packages/charts/src/distribution/interval-plot.d.ts +24 -0
  45. package/dist/packages/charts/src/distribution/ranked-bars.d.ts +22 -0
  46. package/dist/packages/charts/src/graph/index.d.ts +2 -0
  47. package/dist/packages/charts/src/graph/relation-graph.d.ts +45 -0
  48. package/dist/packages/charts/src/index.d.ts +13 -0
  49. package/dist/packages/charts/src/matrix/color-legend.d.ts +7 -0
  50. package/dist/packages/charts/src/matrix/heatmap-scale.d.ts +8 -0
  51. package/dist/packages/charts/src/matrix/index.d.ts +9 -0
  52. package/dist/packages/charts/src/matrix/matrix.d.ts +34 -0
  53. package/dist/packages/charts/src/matrix/scatter-plot.d.ts +37 -0
  54. package/dist/packages/charts/src/matrix/token-heatmap.d.ts +20 -0
  55. package/dist/packages/charts/src/plot-width.d.ts +5 -0
  56. package/dist/packages/collections/src/calendar.d.ts +32 -0
  57. package/dist/packages/collections/src/collection-controls.d.ts +41 -0
  58. package/dist/packages/collections/src/command.d.ts +37 -0
  59. package/dist/packages/collections/src/data-table.d.ts +49 -0
  60. package/dist/packages/collections/src/date-range-picker.d.ts +16 -0
  61. package/dist/packages/collections/src/index.d.ts +13 -0
  62. package/dist/packages/content/src/code/code-block.d.ts +22 -0
  63. package/dist/packages/content/src/code/index.d.ts +2 -0
  64. package/dist/packages/content/src/code/use-highlighted-code.d.ts +9 -0
  65. package/dist/packages/content/src/content-link.d.ts +8 -0
  66. package/dist/packages/content/src/diff/diff-source.d.ts +32 -0
  67. package/dist/packages/content/src/diff/diff-viewer.d.ts +3 -0
  68. package/dist/packages/content/src/diff/index.d.ts +2 -0
  69. package/dist/packages/content/src/diff/pierre-diff.d.ts +14 -0
  70. package/dist/packages/content/src/index.d.ts +10 -0
  71. package/dist/packages/content/src/json-viewer.d.ts +11 -0
  72. package/dist/packages/content/src/link.d.ts +2 -0
  73. package/dist/packages/content/src/log-viewer.d.ts +9 -0
  74. package/dist/packages/content/src/markdown.d.ts +7 -0
  75. package/dist/packages/content/src/pierre-theme.d.ts +36 -0
  76. package/dist/packages/content/src/stack-trace.d.ts +16 -0
  77. package/dist/packages/content/src/tree/file-tree-types.d.ts +12 -0
  78. package/dist/packages/content/src/tree/file-tree.d.ts +3 -0
  79. package/dist/packages/content/src/tree/index.d.ts +2 -0
  80. package/dist/packages/content/src/tree/pierre-tree.d.ts +3 -0
  81. package/dist/packages/core/src/alert-dialog.d.ts +18 -0
  82. package/dist/packages/core/src/combobox.d.ts +81 -0
  83. package/dist/{control-state.d.ts → packages/core/src/control-state.d.ts} +18 -2
  84. package/dist/{copy-value.d.ts → packages/core/src/copy-value.d.ts} +2 -1
  85. package/dist/packages/core/src/details-controls.d.ts +23 -0
  86. package/dist/packages/core/src/disclosure.d.ts +33 -0
  87. package/dist/packages/core/src/field-styles.d.ts +66 -0
  88. package/dist/packages/core/src/form-controls.d.ts +81 -0
  89. package/dist/{forms.d.ts → packages/core/src/forms.d.ts} +1 -1
  90. package/dist/packages/core/src/index.d.ts +32 -0
  91. package/dist/packages/core/src/menu.d.ts +51 -0
  92. package/dist/packages/core/src/navigation.d.ts +24 -0
  93. package/dist/packages/core/src/popover.d.ts +24 -0
  94. package/dist/packages/core/src/popup-styles.d.ts +84 -0
  95. package/dist/packages/core/src/preview.d.ts +17 -0
  96. package/dist/packages/core/src/progress.d.ts +10 -0
  97. package/dist/packages/core/src/selection-styles.d.ts +110 -0
  98. package/dist/packages/core/src/selection.d.ts +57 -0
  99. package/dist/packages/core/src/skeleton.d.ts +18 -0
  100. package/dist/packages/core/src/theme.d.ts +16 -0
  101. package/dist/packages/core/src/toast.d.ts +28 -0
  102. package/dist/{tokens.stylex.d.ts → packages/core/src/tokens.stylex.d.ts} +60 -0
  103. package/dist/packages/core/src/trace.d.ts +35 -0
  104. package/dist/{layout → packages/layout/src}/index.d.ts +2 -0
  105. package/dist/{layout → packages/layout/src}/page-toolbar.d.ts +1 -1
  106. package/dist/packages/layout/src/resizable.d.ts +27 -0
  107. package/dist/{layout → packages/layout/src}/sidebar.d.ts +1 -1
  108. package/dist/pierre-diff-D3m4JCu0.js +66 -0
  109. package/dist/pierre-theme-CPlfl-AA.js +96 -0
  110. package/dist/pierre-tree-BaEkz16y.js +105 -0
  111. package/dist/plot-width--OgdohB5.js +18 -0
  112. package/dist/src-E7YRJBMO.js +2821 -0
  113. package/dist/tokens.js +118 -64
  114. package/package.json +67 -10
  115. package/{src → packages/core/src}/tokens.stylex.ts +64 -0
  116. package/dist/charts/index.d.ts +0 -2
  117. package/dist/index.d.ts +0 -16
  118. package/dist/src-Czfi0YQa.js +0 -1319
  119. /package/dist/{charts → packages/charts/src}/waterfall.d.ts +0 -0
  120. /package/dist/{inspector.d.ts → packages/collections/src/inspector.d.ts} +0 -0
  121. /package/dist/{list-footer.d.ts → packages/collections/src/list-footer.d.ts} +0 -0
  122. /package/dist/{table.d.ts → packages/collections/src/table.d.ts} +0 -0
  123. /package/dist/{accessibility.d.ts → packages/core/src/accessibility.d.ts} +0 -0
  124. /package/dist/{actions.d.ts → packages/core/src/actions.d.ts} +0 -0
  125. /package/dist/{dialog.d.ts → packages/core/src/dialog.d.ts} +0 -0
  126. /package/dist/{drawer.d.ts → packages/core/src/drawer.d.ts} +0 -0
  127. /package/dist/{loading.d.ts → packages/core/src/loading.d.ts} +0 -0
  128. /package/dist/{metrics.d.ts → packages/core/src/metrics.d.ts} +0 -0
  129. /package/dist/{overlay-styles.d.ts → packages/core/src/overlay-styles.d.ts} +0 -0
  130. /package/dist/{select.d.ts → packages/core/src/select.d.ts} +0 -0
  131. /package/dist/{skip-link.d.ts → packages/core/src/skip-link.d.ts} +0 -0
  132. /package/dist/{style-composition.d.ts → packages/core/src/style-composition.d.ts} +0 -0
  133. /package/dist/{surfaces.d.ts → packages/core/src/surfaces.d.ts} +0 -0
  134. /package/dist/{tabs.d.ts → packages/core/src/tabs.d.ts} +0 -0
  135. /package/dist/{text.d.ts → packages/core/src/text.d.ts} +0 -0
  136. /package/dist/{tooltip.d.ts → packages/core/src/tooltip.d.ts} +0 -0
  137. /package/dist/{layout → packages/layout/src}/app-shell.d.ts +0 -0
  138. /package/dist/{layout → packages/layout/src}/detail-page.d.ts +0 -0
  139. /package/dist/{layout → packages/layout/src}/frame.stylex.d.ts +0 -0
@@ -0,0 +1,29 @@
1
+ import type { ReactNode } from 'react';
2
+ type PendingApproval = {
3
+ readonly status: 'pending';
4
+ readonly onApprove: () => void;
5
+ readonly onDeny: () => void;
6
+ readonly busy?: 'approve' | 'deny' | undefined;
7
+ readonly disabled?: boolean;
8
+ readonly approveLabel?: string;
9
+ readonly denyLabel?: string;
10
+ readonly statusLabel?: never;
11
+ };
12
+ type SettledApproval = {
13
+ readonly status: 'approved' | 'denied' | 'expired';
14
+ readonly statusLabel: string;
15
+ readonly onApprove?: never;
16
+ readonly onDeny?: never;
17
+ readonly busy?: never;
18
+ readonly disabled?: never;
19
+ readonly approveLabel?: never;
20
+ readonly denyLabel?: never;
21
+ };
22
+ export type ApprovalProps = (PendingApproval | SettledApproval) & {
23
+ readonly requestId: string;
24
+ readonly title: string;
25
+ readonly description?: string;
26
+ readonly children?: ReactNode;
27
+ };
28
+ export declare function Approval(props: ApprovalProps): ReactNode;
29
+ export {};
@@ -0,0 +1,34 @@
1
+ import type { ReactNode } from 'react';
2
+ export type ConversationRootProps = {
3
+ readonly children: ReactNode;
4
+ readonly initialPosition?: 'start' | 'end';
5
+ readonly follow?: boolean;
6
+ };
7
+ export type ConversationViewportProps = {
8
+ readonly label: string;
9
+ readonly children: ReactNode;
10
+ };
11
+ export type ConversationContentProps = {
12
+ readonly children: ReactNode;
13
+ readonly streaming?: boolean;
14
+ };
15
+ export type ConversationItemProps = {
16
+ readonly messageId: string;
17
+ readonly children: ReactNode;
18
+ };
19
+ export type ConversationJumpProps = {
20
+ readonly label?: string;
21
+ };
22
+ declare function ConversationRoot({ children, initialPosition, follow }: ConversationRootProps): ReactNode;
23
+ declare function ConversationViewport({ label, children }: ConversationViewportProps): ReactNode;
24
+ declare function ConversationContent({ children, streaming }: ConversationContentProps): ReactNode;
25
+ declare function ConversationItem({ messageId, children }: ConversationItemProps): ReactNode;
26
+ declare function ConversationJumpToLatest({ label }: ConversationJumpProps): ReactNode;
27
+ export declare const Conversation: {
28
+ Root: typeof ConversationRoot;
29
+ Viewport: typeof ConversationViewport;
30
+ Content: typeof ConversationContent;
31
+ Item: typeof ConversationItem;
32
+ JumpToLatest: typeof ConversationJumpToLatest;
33
+ };
34
+ export {};
@@ -0,0 +1,10 @@
1
+ export { Conversation } from './conversation.tsx';
2
+ export type { ConversationRootProps, ConversationViewportProps, ConversationContentProps, ConversationItemProps, ConversationJumpProps, } from './conversation.tsx';
3
+ export { Message, MessageAttachment } from './message.tsx';
4
+ export type { MessageProps, MessageKind, MessageAttachmentProps } from './message.tsx';
5
+ export { PromptInput } from './prompt-input.tsx';
6
+ export type { PromptInputProps } from './prompt-input.tsx';
7
+ export { Approval } from './approval.tsx';
8
+ export type { ApprovalProps } from './approval.tsx';
9
+ export { Sources, InlineCitation } from './sources.tsx';
10
+ export type { Source, SourcesProps, InlineCitationProps } from './sources.tsx';
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from 'react';
2
+ export type MessageKind = 'user' | 'assistant' | 'system';
3
+ export type MessageProps = {
4
+ readonly author: string;
5
+ readonly children: ReactNode;
6
+ readonly id?: string;
7
+ readonly kind?: MessageKind;
8
+ readonly meta?: ReactNode;
9
+ readonly actions?: ReactNode;
10
+ readonly attachments?: ReactNode;
11
+ };
12
+ export type MessageAttachmentProps = {
13
+ readonly name: string;
14
+ readonly description?: string;
15
+ readonly href?: string;
16
+ readonly actions?: ReactNode;
17
+ };
18
+ export declare function Message({ author, children, id, kind, meta, actions, attachments, }: MessageProps): ReactNode;
19
+ export declare function MessageAttachment({ name, description, href, actions }: MessageAttachmentProps): ReactNode;
@@ -0,0 +1,25 @@
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export type PromptInputProps = {
3
+ readonly label: string;
4
+ readonly value: string;
5
+ readonly onValueChange: (value: string) => void;
6
+ readonly onSubmit: NonNullable<ComponentProps<'form'>['onSubmit']>;
7
+ readonly name?: string;
8
+ readonly placeholder?: string;
9
+ readonly maxLength?: number;
10
+ readonly required?: boolean;
11
+ readonly pending?: boolean;
12
+ readonly disabled?: boolean;
13
+ readonly submitDisabled?: boolean;
14
+ readonly submitLabel?: string;
15
+ readonly pendingLabel?: string;
16
+ readonly enterBehavior?: 'newline' | 'submit';
17
+ readonly description?: ReactNode;
18
+ readonly error?: string | undefined;
19
+ readonly controls?: ReactNode;
20
+ readonly attachments?: ReactNode;
21
+ readonly onStop?: (() => void) | undefined;
22
+ readonly stopPending?: boolean;
23
+ readonly stopLabel?: string;
24
+ };
25
+ export declare function PromptInput({ label, value, onValueChange, onSubmit, name, placeholder, maxLength, required, pending, disabled, submitDisabled, submitLabel, pendingLabel, enterBehavior, description, error, controls, attachments, onStop, stopPending, stopLabel, }: PromptInputProps): ReactNode;
@@ -0,0 +1,17 @@
1
+ import type { ReactNode } from 'react';
2
+ export type Source = {
3
+ readonly id: string;
4
+ readonly title: string;
5
+ readonly href: string;
6
+ readonly description?: string;
7
+ };
8
+ export type SourcesProps = {
9
+ readonly sources: ReadonlyArray<Source>;
10
+ readonly label?: string;
11
+ };
12
+ export type InlineCitationProps = {
13
+ readonly source: Source;
14
+ readonly label: string;
15
+ };
16
+ export declare function Sources({ sources, label }: SourcesProps): ReactNode;
17
+ export declare function InlineCitation({ source, label }: InlineCitationProps): ReactNode;
@@ -0,0 +1,43 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChartSelection } from '../chart-frame.tsx';
3
+ import type { ChartTone } from '../chart-theme.ts';
4
+ export type BreakdownItem = {
5
+ readonly id: string;
6
+ readonly label: string;
7
+ readonly value: number | null;
8
+ readonly tone?: ChartTone | undefined;
9
+ };
10
+ export type BreakdownBarProps = {
11
+ readonly title: string;
12
+ readonly description?: string | undefined;
13
+ readonly items: ReadonlyArray<BreakdownItem>;
14
+ readonly total: number;
15
+ readonly formatValue: (value: number) => string;
16
+ readonly selection?: ChartSelection | undefined;
17
+ };
18
+ export type TreemapProps = Omit<BreakdownBarProps, 'total'> & {
19
+ readonly height?: number | undefined;
20
+ };
21
+ export type BarSeries = {
22
+ readonly id: string;
23
+ readonly label: string;
24
+ readonly values: ReadonlyArray<number | null>;
25
+ readonly tone?: ChartTone | undefined;
26
+ };
27
+ export type BarChartProps = {
28
+ readonly title: string;
29
+ readonly description?: string | undefined;
30
+ readonly categories: ReadonlyArray<{
31
+ readonly id: string;
32
+ readonly label: string;
33
+ }>;
34
+ readonly series: ReadonlyArray<BarSeries>;
35
+ readonly domain: readonly [number, number];
36
+ readonly mode?: 'grouped' | 'stacked' | undefined;
37
+ readonly formatValue: (value: number) => string;
38
+ readonly selection?: ChartSelection | undefined;
39
+ readonly height?: number | undefined;
40
+ };
41
+ export declare function BreakdownBar({ title, description, items, total, formatValue, selection, }: BreakdownBarProps): ReactNode;
42
+ export declare function Treemap({ title, description, items, formatValue, selection, height }: TreemapProps): ReactNode;
43
+ export declare function BarChart({ title, description, categories, series, domain, mode, formatValue, selection, height, }: BarChartProps): ReactNode;
@@ -0,0 +1,8 @@
1
+ export { LineChart, AreaChart, SmallMultiples } from './time-series.tsx';
2
+ export type { TimeSeriesChartProps, AreaChartProps, SmallMultiplesProps } from './time-series.tsx';
3
+ export { Sparkline } from './sparkline.tsx';
4
+ export type { SparklineProps } from './sparkline.tsx';
5
+ export { BreakdownBar, BarChart, Treemap } from './categorical.tsx';
6
+ export type { BreakdownItem, BreakdownBarProps, BarSeries, BarChartProps, TreemapProps } from './categorical.tsx';
7
+ export type { TimeSeriesPoint, TimeSeries, TimeSeriesMarker } from './time-series-data.ts';
8
+ export { timeSeriesLimits } from './time-series-data.ts';
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TimeSeries } from './time-series-data.ts';
3
+ export type SparklineProps = {
4
+ readonly title: string;
5
+ readonly summary: string;
6
+ readonly unit: string;
7
+ readonly timestampUnit: 'seconds' | 'milliseconds';
8
+ readonly series: TimeSeries;
9
+ readonly valueDomain: readonly [number, number];
10
+ };
11
+ export declare function Sparkline({ title, summary, unit, timestampUnit, series, valueDomain }: SparklineProps): ReactNode;
@@ -0,0 +1,54 @@
1
+ import type { ChartTone } from '../chart-theme.ts';
2
+ export type TimeSeriesPoint = {
3
+ readonly timestamp: number;
4
+ readonly value: number | null;
5
+ };
6
+ export type TimeSeries = {
7
+ readonly id: string;
8
+ readonly label: string;
9
+ readonly points: ReadonlyArray<TimeSeriesPoint>;
10
+ readonly tone?: ChartTone | undefined;
11
+ };
12
+ export type TimeSeriesMarker = {
13
+ readonly id: string;
14
+ readonly timestamp: number;
15
+ readonly label: string;
16
+ } & ({
17
+ readonly kind: 'time';
18
+ readonly seriesId?: never;
19
+ readonly value?: never;
20
+ } | {
21
+ readonly kind: 'point';
22
+ readonly seriesId: string;
23
+ readonly value: number;
24
+ });
25
+ export type PlotPoint = {
26
+ readonly timestamp: number;
27
+ readonly value: number | null;
28
+ readonly base: number;
29
+ };
30
+ export type PlotSeries = {
31
+ readonly id: string;
32
+ readonly label: string;
33
+ readonly tone: ChartTone;
34
+ readonly points: ReadonlyArray<PlotPoint>;
35
+ };
36
+ export declare const timeSeriesLimits: {
37
+ readonly series: 12;
38
+ readonly pointsPerSeries: 2000;
39
+ readonly markers: 200;
40
+ readonly panels: 12;
41
+ };
42
+ export declare function validateTimeSeries({ series, isStacked, markers, }: {
43
+ readonly series: ReadonlyArray<TimeSeries>;
44
+ readonly isStacked: boolean;
45
+ readonly markers: ReadonlyArray<TimeSeriesMarker>;
46
+ }): string | undefined;
47
+ export declare function timeSeriesSignature({ series, markers, timestampUnit, isStacked, }: {
48
+ readonly series: ReadonlyArray<TimeSeries>;
49
+ readonly markers: ReadonlyArray<TimeSeriesMarker>;
50
+ readonly timestampUnit: string;
51
+ readonly isStacked: boolean;
52
+ }): string;
53
+ export declare function observationDomain(minimum: number, maximum: number, startsAtZero?: boolean): readonly [number, number];
54
+ export declare function prepareTimeSeries(series: ReadonlyArray<TimeSeries>, isStacked: boolean): ReadonlyArray<PlotSeries>;
@@ -0,0 +1,9 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { PlotSeries } from './time-series-data.ts';
3
+ export declare function TimeSeriesLine({ series, x, y, inspectedTimestamp, pointRadius, }: {
4
+ readonly series: PlotSeries;
5
+ readonly x: (timestamp: number) => number;
6
+ readonly y: (value: number) => number;
7
+ readonly inspectedTimestamp?: number | undefined;
8
+ readonly pointRadius?: number | undefined;
9
+ }): ReactNode;
@@ -0,0 +1,29 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TimeSeries, TimeSeriesMarker } from './time-series-data.ts';
3
+ export type TimeSeriesChartProps = {
4
+ readonly title: string;
5
+ readonly description?: string | undefined;
6
+ readonly series: ReadonlyArray<TimeSeries>;
7
+ readonly timestampUnit: 'seconds' | 'milliseconds';
8
+ readonly formatTimestamp: (timestamp: number) => string;
9
+ readonly formatValue: (value: number) => string;
10
+ readonly markers?: ReadonlyArray<TimeSeriesMarker> | undefined;
11
+ readonly height?: number | undefined;
12
+ readonly actions?: ReactNode;
13
+ };
14
+ export type AreaChartProps = TimeSeriesChartProps & {
15
+ readonly stacked?: boolean | undefined;
16
+ };
17
+ export type SmallMultiplesProps = Omit<TimeSeriesChartProps, 'series' | 'title' | 'description' | 'actions' | 'formatValue' | 'markers'> & {
18
+ readonly charts: ReadonlyArray<{
19
+ readonly id: string;
20
+ readonly title: string;
21
+ readonly series: ReadonlyArray<TimeSeries>;
22
+ readonly description?: string | undefined;
23
+ readonly formatValue: (value: number) => string;
24
+ readonly markers?: ReadonlyArray<TimeSeriesMarker> | undefined;
25
+ }>;
26
+ };
27
+ export declare function LineChart(props: TimeSeriesChartProps): ReactNode;
28
+ export declare function AreaChart({ stacked, ...props }: AreaChartProps): ReactNode;
29
+ export declare function SmallMultiples({ charts, ...props }: SmallMultiplesProps): ReactNode;
@@ -0,0 +1,34 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChartTone } from './chart-theme.ts';
3
+ export type ChartSelection = {
4
+ readonly selectedId: string | undefined;
5
+ readonly onSelect: (id: string) => void;
6
+ };
7
+ export type ChartFrameProps = {
8
+ readonly title: string;
9
+ readonly description?: string | undefined;
10
+ readonly children: ReactNode;
11
+ readonly actions?: ReactNode;
12
+ readonly footer?: ReactNode;
13
+ };
14
+ export type ChartLegendItem = {
15
+ readonly id: string;
16
+ readonly label: string;
17
+ readonly tone: ChartTone;
18
+ };
19
+ export type ChartLegendProps = {
20
+ readonly items: ReadonlyArray<ChartLegendItem>;
21
+ readonly label?: string | undefined;
22
+ };
23
+ export declare function ChartFrame({ title, description, children, actions, footer }: ChartFrameProps): ReactNode;
24
+ export declare function ChartLegend({ items, label }: ChartLegendProps): ReactNode;
25
+ export declare function ChartDatumButton({ label, selected, onSelect, children, }: {
26
+ readonly label: string;
27
+ readonly selected?: boolean | undefined;
28
+ readonly onSelect?: (() => void) | undefined;
29
+ readonly children: ReactNode;
30
+ }): ReactNode;
31
+ export declare function ChartDataDisclosure({ children, label, }: {
32
+ readonly children: ReactNode;
33
+ readonly label?: string | undefined;
34
+ }): ReactNode;
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ export declare function isFiniteDomain(domain: readonly [number, number]): boolean;
3
+ export declare function hasUniqueIds(records: ReadonlyArray<{
4
+ readonly id: string;
5
+ }>): boolean;
6
+ export declare function ChartInputError({ title, description, message, }: {
7
+ readonly title: string;
8
+ readonly description?: string | undefined;
9
+ readonly message: string;
10
+ }): ReactNode;
@@ -0,0 +1,48 @@
1
+ import * as stylex from '@stylexjs/stylex';
2
+ export type ChartTone = 'series1' | 'series2' | 'series3' | 'series4' | 'series5' | 'series6' | 'positive' | 'negative' | 'neutral';
3
+ export declare const chartToneColors: Readonly<Record<ChartTone, string>>;
4
+ export declare const chartStyles: Readonly<{
5
+ readonly plot: Readonly<{
6
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", 0>;
7
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
8
+ }>;
9
+ readonly svg: Readonly<{
10
+ readonly display: stylex.StyleXClassNameFor<"display", "block">;
11
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
12
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "visible">;
13
+ }>;
14
+ readonly axis: Readonly<{
15
+ readonly stroke: stylex.StyleXClassNameFor<"stroke", string>;
16
+ readonly strokeWidth: stylex.StyleXClassNameFor<"strokeWidth", 1>;
17
+ readonly vectorEffect: stylex.StyleXClassNameFor<"vectorEffect", "non-scaling-stroke">;
18
+ }>;
19
+ readonly grid: Readonly<{
20
+ readonly stroke: stylex.StyleXClassNameFor<"stroke", string>;
21
+ readonly strokeWidth: stylex.StyleXClassNameFor<"strokeWidth", 1>;
22
+ readonly strokeDasharray: stylex.StyleXClassNameFor<"strokeDasharray", "3 3">;
23
+ readonly vectorEffect: stylex.StyleXClassNameFor<"vectorEffect", "non-scaling-stroke">;
24
+ }>;
25
+ readonly label: Readonly<{
26
+ readonly fill: stylex.StyleXClassNameFor<"fill", string>;
27
+ readonly fontFamily: stylex.StyleXClassNameFor<"fontFamily", string>;
28
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
29
+ readonly fontVariantNumeric: stylex.StyleXClassNameFor<"fontVariantNumeric", "tabular-nums">;
30
+ }>;
31
+ readonly mark: Readonly<{
32
+ readonly strokeWidth: stylex.StyleXClassNameFor<"strokeWidth", 1.5>;
33
+ readonly vectorEffect: stylex.StyleXClassNameFor<"vectorEffect", "non-scaling-stroke">;
34
+ }>;
35
+ readonly selected: Readonly<{
36
+ readonly stroke: stylex.StyleXClassNameFor<"stroke", string>;
37
+ readonly strokeWidth: stylex.StyleXClassNameFor<"strokeWidth", 2>;
38
+ readonly vectorEffect: stylex.StyleXClassNameFor<"vectorEffect", "non-scaling-stroke">;
39
+ }>;
40
+ readonly focus: Readonly<{
41
+ readonly ':focus-visible': stylex.StyleXClassNameFor<":focus-visible", {
42
+ readonly outlineColor: stylex.StyleXVar<string>;
43
+ readonly outlineStyle: "solid";
44
+ readonly outlineWidth: stylex.StyleXVar<string>;
45
+ readonly outlineOffset: 2;
46
+ }>;
47
+ }>;
48
+ }>;
@@ -0,0 +1,14 @@
1
+ export type NumericDomain = readonly [minimum: number, maximum: number];
2
+ export declare const distributionLimits: {
3
+ readonly bins: 200;
4
+ readonly cumulativePoints: 2000;
5
+ readonly rows: 200;
6
+ };
7
+ export declare function distributionInputError({ items, domain, maxEntries, }: {
8
+ readonly items: ReadonlyArray<{
9
+ readonly id: string;
10
+ }>;
11
+ readonly domain: NumericDomain;
12
+ readonly maxEntries: number;
13
+ }): string | undefined;
14
+ export declare function outsideDomain(value: number, domain: NumericDomain): boolean;
@@ -0,0 +1,135 @@
1
+ import * as stylex from '@stylexjs/stylex';
2
+ import type { ReactNode } from 'react';
3
+ import type { NumericDomain } from './distribution-input.ts';
4
+ export declare const distributionGeometry: {
5
+ readonly height: 160;
6
+ };
7
+ export declare const distributionStyles: Readonly<{
8
+ readonly plot: Readonly<{
9
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", 0>;
10
+ readonly display: stylex.StyleXClassNameFor<"display", "grid">;
11
+ readonly gridTemplateColumns: stylex.StyleXClassNameFor<"gridTemplateColumns", "max-content minmax(0, 1fr)">;
12
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
13
+ }>;
14
+ readonly yAxis: Readonly<{
15
+ readonly height: stylex.StyleXClassNameFor<"height", 160>;
16
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
17
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
18
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "space-between">;
19
+ readonly textAlign: stylex.StyleXClassNameFor<"textAlign", "end">;
20
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
21
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
22
+ readonly lineHeight: stylex.StyleXClassNameFor<"lineHeight", string>;
23
+ readonly fontVariantNumeric: stylex.StyleXClassNameFor<"fontVariantNumeric", "tabular-nums">;
24
+ }>;
25
+ readonly svg: Readonly<{
26
+ readonly display: stylex.StyleXClassNameFor<"display", "block">;
27
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
28
+ readonly height: stylex.StyleXClassNameFor<"height", 160>;
29
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
30
+ }>;
31
+ readonly grid: Readonly<{
32
+ readonly stroke: stylex.StyleXClassNameFor<"stroke", string>;
33
+ readonly strokeDasharray: stylex.StyleXClassNameFor<"strokeDasharray", "3 3">;
34
+ readonly vectorEffect: stylex.StyleXClassNameFor<"vectorEffect", "non-scaling-stroke">;
35
+ }>;
36
+ readonly axis: Readonly<{
37
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
38
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "space-between">;
39
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
40
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
41
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
42
+ readonly lineHeight: stylex.StyleXClassNameFor<"lineHeight", string>;
43
+ readonly fontVariantNumeric: stylex.StyleXClassNameFor<"fontVariantNumeric", "tabular-nums">;
44
+ }>;
45
+ readonly axisNames: Readonly<{
46
+ readonly gridColumn: stylex.StyleXClassNameFor<"gridColumn", "1 / -1">;
47
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
48
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "space-between">;
49
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
50
+ }>;
51
+ readonly label: Readonly<{
52
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
53
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
54
+ readonly lineHeight: stylex.StyleXClassNameFor<"lineHeight", string>;
55
+ readonly overflowWrap: stylex.StyleXClassNameFor<"overflowWrap", "anywhere">;
56
+ }>;
57
+ readonly values: Readonly<{
58
+ readonly display: stylex.StyleXClassNameFor<"display", "grid">;
59
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", 0>;
60
+ }>;
61
+ readonly value: Readonly<{
62
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
63
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "space-between">;
64
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
65
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", 0>;
66
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
67
+ }>;
68
+ readonly summary: Readonly<{
69
+ readonly fontVariantNumeric: stylex.StyleXClassNameFor<"fontVariantNumeric", "tabular-nums">;
70
+ readonly overflowWrap: stylex.StyleXClassNameFor<"overflowWrap", "anywhere">;
71
+ readonly textAlign: stylex.StyleXClassNameFor<"textAlign", "end">;
72
+ }>;
73
+ readonly row: Readonly<{
74
+ readonly display: stylex.StyleXClassNameFor<"display", "grid">;
75
+ readonly gridTemplateColumns: stylex.StyleXClassNameFor<"gridTemplateColumns", "minmax(0, 1fr)" | "minmax(100px, 1fr) minmax(120px, 2fr)">;
76
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
77
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
78
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", 0>;
79
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
80
+ }>;
81
+ readonly rowAxis: Readonly<{
82
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
83
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
84
+ }>;
85
+ readonly axisSpacer: Readonly<{
86
+ readonly display: stylex.StyleXClassNameFor<"display", "block" | "none">;
87
+ }>;
88
+ readonly rowLabel: Readonly<{
89
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", 0>;
90
+ readonly display: stylex.StyleXClassNameFor<"display", "grid">;
91
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
92
+ readonly overflowWrap: stylex.StyleXClassNameFor<"overflowWrap", "anywhere">;
93
+ }>;
94
+ readonly rowValue: Readonly<{
95
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
96
+ readonly fontVariantNumeric: stylex.StyleXClassNameFor<"fontVariantNumeric", "tabular-nums">;
97
+ }>;
98
+ readonly rowSvg: Readonly<{
99
+ readonly display: stylex.StyleXClassNameFor<"display", "block">;
100
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
101
+ readonly height: stylex.StyleXClassNameFor<"height", 28>;
102
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
103
+ }>;
104
+ readonly empty: Readonly<{
105
+ readonly margin: stylex.StyleXClassNameFor<"margin", 0>;
106
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
107
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
108
+ readonly lineHeight: stylex.StyleXClassNameFor<"lineHeight", string>;
109
+ }>;
110
+ readonly baseline: Readonly<{
111
+ readonly stroke: stylex.StyleXClassNameFor<"stroke", string>;
112
+ readonly vectorEffect: stylex.StyleXClassNameFor<"vectorEffect", "non-scaling-stroke">;
113
+ }>;
114
+ readonly missing: Readonly<{
115
+ readonly fill: stylex.StyleXClassNameFor<"fill", string>;
116
+ readonly stroke: stylex.StyleXClassNameFor<"stroke", string>;
117
+ readonly strokeDasharray: stylex.StyleXClassNameFor<"strokeDasharray", "3 3">;
118
+ readonly vectorEffect: stylex.StyleXClassNameFor<"vectorEffect", "non-scaling-stroke">;
119
+ }>;
120
+ }>;
121
+ type NumericPlotProps = {
122
+ readonly xDomain: NumericDomain;
123
+ readonly yDomain: NumericDomain;
124
+ readonly xLabel: string;
125
+ readonly yLabel: string;
126
+ readonly formatX: (value: number) => string;
127
+ readonly formatY: (value: number) => string;
128
+ readonly children: (width: number) => ReactNode;
129
+ };
130
+ export declare function NumericPlot({ xDomain, yDomain, xLabel, yLabel, formatX, formatY, children, }: NumericPlotProps): ReactNode;
131
+ export declare function DomainLabels({ domain, formatValue, }: {
132
+ readonly domain: NumericDomain;
133
+ readonly formatValue: (value: number) => string;
134
+ }): ReactNode;
135
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChartSelection } from '../chart-frame.tsx';
3
+ import type { ChartTone } from '../chart-theme.ts';
4
+ import type { NumericDomain } from './distribution-input.ts';
5
+ export type ECDFPoint = {
6
+ readonly id: string;
7
+ readonly value: number;
8
+ readonly probability: number | null;
9
+ };
10
+ export type ECDFProps = {
11
+ readonly title: string;
12
+ readonly description?: string;
13
+ readonly points: ReadonlyArray<ECDFPoint>;
14
+ readonly domain: NumericDomain;
15
+ readonly valueLabel: string;
16
+ readonly probabilityLabel: string;
17
+ readonly formatValue: (value: number) => string;
18
+ readonly formatProbability: (probability: number) => string;
19
+ readonly tone?: ChartTone;
20
+ readonly selection?: ChartSelection;
21
+ readonly emptyLabel?: string;
22
+ };
23
+ export declare function ECDF({ title, description, points, domain, valueLabel, probabilityLabel, formatValue, formatProbability, tone, selection, emptyLabel, }: ECDFProps): ReactNode;
@@ -0,0 +1,26 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChartSelection } from '../chart-frame.tsx';
3
+ import type { ChartTone } from '../chart-theme.ts';
4
+ import type { NumericDomain } from './distribution-input.ts';
5
+ export type HistogramBin = {
6
+ readonly id: string;
7
+ readonly label: string;
8
+ readonly lowerBound: number;
9
+ readonly upperBound: number;
10
+ readonly count: number | null;
11
+ };
12
+ export type HistogramProps = {
13
+ readonly title: string;
14
+ readonly description?: string;
15
+ readonly bins: ReadonlyArray<HistogramBin>;
16
+ readonly domain: NumericDomain;
17
+ readonly maximumCount: number;
18
+ readonly valueLabel: string;
19
+ readonly countLabel: string;
20
+ readonly formatValue: (value: number) => string;
21
+ readonly formatCount: (count: number) => string;
22
+ readonly tone?: ChartTone;
23
+ readonly selection?: ChartSelection;
24
+ readonly emptyLabel?: string;
25
+ };
26
+ export declare function Histogram({ title, description, bins, domain, maximumCount, valueLabel, countLabel, formatValue, formatCount, tone, selection, emptyLabel, }: HistogramProps): ReactNode;
@@ -0,0 +1,8 @@
1
+ export { Histogram } from './histogram.tsx';
2
+ export type { HistogramBin, HistogramProps } from './histogram.tsx';
3
+ export { ECDF } from './ecdf.tsx';
4
+ export type { ECDFPoint, ECDFProps } from './ecdf.tsx';
5
+ export { IntervalPlot } from './interval-plot.tsx';
6
+ export type { IntervalDatum, IntervalPlotProps } from './interval-plot.tsx';
7
+ export { RankedBars } from './ranked-bars.tsx';
8
+ export type { RankedBarDatum, RankedBarsProps } from './ranked-bars.tsx';
@@ -0,0 +1,24 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChartSelection } from '../chart-frame.tsx';
3
+ import type { ChartTone } from '../chart-theme.ts';
4
+ import type { NumericDomain } from './distribution-input.ts';
5
+ export type IntervalDatum = {
6
+ readonly id: string;
7
+ readonly label: string;
8
+ readonly lower: number | null;
9
+ readonly estimate: number | null;
10
+ readonly upper: number | null;
11
+ readonly tone?: ChartTone;
12
+ };
13
+ export type IntervalPlotProps = {
14
+ readonly title: string;
15
+ readonly description?: string;
16
+ readonly items: ReadonlyArray<IntervalDatum>;
17
+ readonly domain: NumericDomain;
18
+ readonly valueLabel: string;
19
+ readonly intervalLabel: string;
20
+ readonly formatValue: (value: number) => string;
21
+ readonly selection?: ChartSelection;
22
+ readonly emptyLabel?: string;
23
+ };
24
+ export declare function IntervalPlot({ title, description, items, domain, valueLabel, intervalLabel, formatValue, selection, emptyLabel, }: IntervalPlotProps): ReactNode;