@altertable/data-app 0.65.0 → 0.66.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.
- package/AGENTS.md +38 -1
- package/CONTRIBUTING.md +37 -3
- package/README.md +1 -1
- package/dist/chunks/{contract-sm7j7k95.js → contract-13j5zb3c.js} +2 -144
- package/dist/chunks/contract-13j5zb3c.js.map +13 -0
- package/dist/chunks/contract-19ckn3n7.js +78 -0
- package/dist/chunks/contract-19ckn3n7.js.map +10 -0
- package/dist/chunks/{contract-a061yj6r.js → contract-e11m4y7f.js} +34 -70
- package/dist/chunks/contract-e11m4y7f.js.map +12 -0
- package/dist/chunks/{contract-g6hky7x6.js → contract-h8a6f559.js} +8 -4
- package/dist/chunks/contract-h8a6f559.js.map +12 -0
- package/dist/chunks/contract-havnjmdr.js +13011 -0
- package/dist/chunks/contract-havnjmdr.js.map +99 -0
- package/dist/chunks/{contract-txjy0en2.js → contract-m6n8ctfc.js} +64 -72
- package/dist/chunks/contract-m6n8ctfc.js.map +10 -0
- package/dist/chunks/contract-pk603qj7.js +146 -0
- package/dist/chunks/contract-pk603qj7.js.map +10 -0
- package/dist/chunks/{contract-yxbjea23.js → contract-rfbakka4.js} +179 -2
- package/dist/chunks/contract-rfbakka4.js.map +13 -0
- package/dist/client/index.js +11 -6
- package/dist/client/index.js.map +1 -1
- package/dist/core/appearance.js +1 -1
- package/dist/core/contract.js +13 -3
- package/dist/core/contract.js.map +1 -1
- package/dist/embed/index.js +9 -7
- package/dist/embed/index.js.map +2 -2
- package/dist/local.js +1 -1
- package/dist/local.js.map +2 -2
- package/dist/react/embed/index.js +1 -1
- package/dist/react/index.js +2532 -11545
- package/dist/react/index.js.map +16 -91
- package/dist/react/ui/index.js +1614 -0
- package/dist/react/ui/index.js.map +22 -0
- package/dist/server.js +1 -1
- package/dist/server.js.map +2 -2
- package/dist/types/client/annotations.d.ts +23 -0
- package/dist/types/client/index.d.ts +1 -0
- package/dist/types/core/annotations.d.ts +92 -0
- package/dist/types/core/appearance.d.ts +2 -2
- package/dist/types/core/contract.d.ts +2 -0
- package/dist/types/core/presentation.d.ts +2 -0
- package/dist/types/core/variables.d.ts +2 -5
- package/dist/types/react/annotations/AnnotationBar.d.ts +24 -0
- package/dist/types/react/annotations/AnnotationControls.d.ts +10 -0
- package/dist/types/react/annotations/AnnotationEditor.d.ts +15 -0
- package/dist/types/react/annotations/AnnotationMarkers.d.ts +19 -0
- package/dist/types/react/annotations/AnnotationSelectionLayer.d.ts +12 -0
- package/dist/types/react/annotations/AnnotationTarget.d.ts +9 -0
- package/dist/types/react/annotations/AnnotationTooltip.d.ts +9 -0
- package/dist/types/react/annotations/AnnotationTrigger.d.ts +10 -0
- package/dist/types/react/annotations/annotation-editor-state.d.ts +56 -0
- package/dist/types/react/annotations/annotation-screenshot.d.ts +4 -0
- package/dist/types/react/annotations/annotation-targets.d.ts +33 -0
- package/dist/types/react/annotations/getAnnotationProps.d.ts +15 -0
- package/dist/types/react/annotations/styles.d.ts +3 -0
- package/dist/types/react/annotations/useAnnotationGeometry.d.ts +22 -0
- package/dist/types/react/annotations/useDataAppAnnotations.d.ts +19 -0
- package/dist/types/react/bindings.d.ts +110 -0
- package/dist/types/react/content.d.ts +24 -11
- package/dist/types/react/hooks.d.ts +29 -787
- package/dist/types/react/index.d.ts +30 -105
- package/dist/types/react/source-owner.d.ts +2 -0
- package/dist/types/react/style-contract.d.ts +60 -0
- package/dist/types/react/style-validation.d.ts +2 -0
- package/dist/types/react/ui/AboutData.d.ts +9 -1
- package/dist/types/react/ui/AppHeader.d.ts +1 -2
- package/dist/types/react/ui/AppLayout.d.ts +3 -9
- package/dist/types/react/ui/AppToolbar.d.ts +5 -8
- package/dist/types/react/ui/AreaChart.d.ts +7 -0
- package/dist/types/react/ui/BarChart.d.ts +6 -0
- package/dist/types/react/ui/{ComparisonVisual.d.ts → Comparison.d.ts} +3 -3
- package/dist/types/react/ui/ContentSkeleton.d.ts +2 -0
- package/dist/types/react/ui/DataApp.d.ts +17 -58
- package/dist/types/react/ui/DataAppFrame.d.ts +42 -0
- package/dist/types/react/ui/DataBoundary.d.ts +4 -5
- package/dist/types/react/ui/DataSection.d.ts +6 -18
- package/dist/types/react/ui/DataSectionBoundary.d.ts +30 -0
- package/dist/types/react/ui/DataValue.d.ts +9 -0
- package/dist/types/react/ui/DataWidget.d.ts +2 -1
- package/dist/types/react/ui/DateTimeTooltip.d.ts +1 -1
- package/dist/types/react/ui/ExportControl.d.ts +1 -1
- package/dist/types/react/ui/HelpPopover.d.ts +3 -4
- package/dist/types/react/ui/InspectionContext.d.ts +2 -0
- package/dist/types/react/ui/InspectionProvider.d.ts +29 -0
- package/dist/types/react/ui/LineChart.d.ts +7 -0
- package/dist/types/react/ui/MetricWidget.d.ts +4 -3
- package/dist/types/react/ui/PieChart.d.ts +8 -0
- package/dist/types/react/ui/PresentStory.d.ts +2 -5
- package/dist/types/react/ui/RefreshControl.d.ts +1 -2
- package/dist/types/react/ui/ScatterChart.d.ts +17 -0
- package/dist/types/react/ui/SearchField.d.ts +1 -2
- package/dist/types/react/ui/SearchInput.d.ts +3 -1
- package/dist/types/react/ui/Sheet.d.ts +2 -1
- package/dist/types/react/ui/Skeleton.d.ts +5 -2
- package/dist/types/react/ui/StaticDataApp.d.ts +4 -0
- package/dist/types/react/ui/TableWidget.d.ts +19 -16
- package/dist/types/react/ui/Tabs.d.ts +6 -2
- package/dist/types/react/ui/TextWidget.d.ts +2 -1
- package/dist/types/react/ui/Tooltip.d.ts +4 -3
- package/dist/types/react/ui/TrendChart.d.ts +5 -0
- package/dist/types/react/ui/UpdatedAt.d.ts +1 -1
- package/dist/types/react/ui/VisualizationWidget.d.ts +12 -13
- package/dist/types/react/ui/WidgetViewTabs.d.ts +1 -1
- package/dist/types/react/ui/chart-data.d.ts +25 -0
- package/dist/types/react/ui/data-context.d.ts +18 -7
- package/dist/types/react/ui/icons.d.ts +1 -0
- package/dist/types/react/ui/index.d.ts +74 -0
- package/dist/types/react/ui/metric.d.ts +1 -1
- package/dist/types/react/ui/presentation.d.ts +5 -1
- package/dist/types/react/ui/shortcuts.d.ts +7 -1
- package/dist/types/react/view-runtime.d.ts +29 -0
- package/dist/types/react/view.d.ts +21 -4
- package/dist/types/react/widgets.d.ts +79 -0
- package/docs/app-authoring.md +58 -50
- package/docs/data-context.md +89 -0
- package/docs/formatting-and-appearance.md +52 -0
- package/docs/hosted-apps.md +0 -13
- package/docs/layout.md +4 -2
- package/docs/react-embed.md +2 -2
- package/docs/react.md +20 -316
- package/docs/stories-and-export.md +52 -0
- package/docs/styling.md +55 -0
- package/docs/ui-quality.md +20 -0
- package/docs/ui.md +41 -0
- package/docs/variables.md +98 -0
- package/docs/views.md +127 -0
- package/docs/widgets.md +142 -0
- package/examples/starter-data-app/index.tsx +82 -55
- package/package.json +12 -4
- package/dist/chunks/contract-a061yj6r.js.map +0 -12
- package/dist/chunks/contract-g6hky7x6.js.map +0 -12
- package/dist/chunks/contract-sm7j7k95.js.map +0 -14
- package/dist/chunks/contract-txjy0en2.js.map +0 -10
- package/dist/chunks/contract-yxbjea23.js.map +0 -12
- package/dist/types/react/ui/RefreshRegion.d.ts +0 -9
- package/dist/types/react/ui/SelectableBarChart.d.ts +0 -15
- package/docs/releasing.md +0 -79
- /package/dist/types/react/ui/{comparison.d.ts → metric-comparison.d.ts} +0 -0
|
@@ -1,34 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* @module @altertable/data-app/react
|
|
4
|
-
* @see https://github.com/altertable-ai/data-app/blob/main/docs/react.md
|
|
5
|
-
*/
|
|
1
|
+
/** Declared views, bound widgets, and layouts for data-app authoring. */
|
|
2
|
+
export type { DatasetColumn, DatasetDeclaration as DatasetDefinition, } from './bindings.js';
|
|
6
3
|
export { injectDataAppStyles } from './styles.js';
|
|
7
|
-
export { injectDataAppShellStyles } from './shellStyles.js';
|
|
8
4
|
export type { DataAppStylesOptions } from './styles.js';
|
|
9
|
-
export {
|
|
5
|
+
export type { DataAppStyle, DataAppStyleToken, DataAppStyleHooks, } from './style-contract.js';
|
|
6
|
+
export { mountDataApp } from './mount.js';
|
|
10
7
|
export { createDataHooks } from './hooks.js';
|
|
11
|
-
export {
|
|
12
|
-
export type { DataContentState } from './content.js';
|
|
13
|
-
export type { DataViewDefinition, ResolvedVariables, ViewBindings, } from './view.js';
|
|
14
|
-
export type { CsvCell, CsvTable, CsvExport } from './ui/csv-export.js';
|
|
8
|
+
export type { CsvCell } from './ui/csv-export.js';
|
|
15
9
|
export { DataApp } from './ui/DataApp.js';
|
|
16
|
-
export type { DataAppProps
|
|
17
|
-
export { GettingStarted } from './ui/GettingStarted.js';
|
|
18
|
-
export { AppLayout } from './ui/AppLayout.js';
|
|
19
|
-
export type { AppLayoutProps } from './ui/AppLayout.js';
|
|
20
|
-
export { AppHeader } from './ui/AppHeader.js';
|
|
21
|
-
export type { AppHeaderProps } from './ui/AppHeader.js';
|
|
22
|
-
export { AppScope } from './ui/AppScope.js';
|
|
23
|
-
export type { AppScopeProps } from './ui/AppScope.js';
|
|
24
|
-
export { AppToolbar } from './ui/AppToolbar.js';
|
|
25
|
-
export type { AppToolbarProps } from './ui/AppToolbar.js';
|
|
26
|
-
export { VariableBar } from './ui/VariableBar.js';
|
|
27
|
-
export type { VariableBarProps } from './ui/VariableBar.js';
|
|
28
|
-
export { AppFooter } from './ui/AppFooter.js';
|
|
29
|
-
export type { AppFooterProps } from './ui/AppFooter.js';
|
|
30
|
-
export { ThemeSelector, ThemeToggle } from './ui/ThemeSelector.js';
|
|
31
|
-
export type { ThemeSelectorProps } from './ui/ThemeSelector.js';
|
|
10
|
+
export type { DataAppProps } from './ui/DataApp.js';
|
|
32
11
|
export { Stack } from './ui/Stack.js';
|
|
33
12
|
export type { StackProps } from './ui/Stack.js';
|
|
34
13
|
export { Grid } from './ui/Grid.js';
|
|
@@ -36,110 +15,56 @@ export type { GridProps } from './ui/Grid.js';
|
|
|
36
15
|
export { GridItem } from './ui/GridItem.js';
|
|
37
16
|
export type { GridItemProps } from './ui/GridItem.js';
|
|
38
17
|
export type { WidgetEvidence } from './ui/WidgetEvidence.js';
|
|
39
|
-
export { DataWidget } from './ui/DataWidget.js';
|
|
40
|
-
export type { WidgetStatus } from './ui/RequestHint.js';
|
|
41
|
-
export type { DataWidgetProps } from './ui/DataWidget.js';
|
|
42
18
|
export { TextContent } from './ui/TextContent.js';
|
|
43
19
|
export type { TextContentProps } from './ui/TextContent.js';
|
|
44
|
-
export {
|
|
45
|
-
export type {
|
|
46
|
-
export {
|
|
47
|
-
export type {
|
|
48
|
-
export {
|
|
49
|
-
export type {
|
|
20
|
+
export { DataValue } from './widgets.js';
|
|
21
|
+
export type { DataValueProps } from './widgets.js';
|
|
22
|
+
export { TextWidget } from './widgets.js';
|
|
23
|
+
export type { TextWidgetProps } from './widgets.js';
|
|
24
|
+
export { VisualizationWidget } from './widgets.js';
|
|
25
|
+
export type { VisualizationWidgetProps } from './widgets.js';
|
|
26
|
+
export type { VisualizationWidgetView } from './widgets.js';
|
|
27
|
+
export { TableWidget } from './widgets.js';
|
|
28
|
+
export type { TableWidgetProps } from './widgets.js';
|
|
29
|
+
export type { TableWidgetSearch } from './ui/TableWidget.js';
|
|
50
30
|
export { chartColor } from './ui/chartColor.js';
|
|
51
31
|
export { Breakdown } from './ui/Breakdown.js';
|
|
52
32
|
export type { BreakdownItem, BreakdownProps } from './ui/Breakdown.js';
|
|
53
33
|
export { Ranking } from './ui/Ranking.js';
|
|
54
34
|
export type { RankingItem, RankingProps } from './ui/Ranking.js';
|
|
55
|
-
export {
|
|
56
|
-
export type {
|
|
57
|
-
export {
|
|
58
|
-
export type {
|
|
59
|
-
export { ComparisonVisual } from './ui/ComparisonVisual.js';
|
|
60
|
-
export type { ComparisonVisualProps } from './ui/ComparisonVisual.js';
|
|
61
|
-
export { calendarMetricComparison } from './ui/comparison.js';
|
|
62
|
-
export type { MetricComparison } from './ui/comparison.js';
|
|
63
|
-
export { DataTable, DataTableEmptyRow, DataTableTimestamp, DataTableShare, } from './ui/DataTable.js';
|
|
64
|
-
export type { DataTableProps, DataTableSearch, DataTableEmptyRowProps, DataTableTimestampProps, } from './ui/DataTable.js';
|
|
65
|
-
export { MetricWidget } from './ui/MetricWidget.js';
|
|
66
|
-
export type { MetricWidgetProps } from './ui/MetricWidget.js';
|
|
67
|
-
export { SelectableBarChart } from './ui/SelectableBarChart.js';
|
|
68
|
-
export type { SelectableBarChartProps, SelectableBarItem, } from './ui/SelectableBarChart.js';
|
|
69
|
-
export { DimensionPicker } from './ui/DimensionPicker.js';
|
|
35
|
+
export { Comparison } from './ui/Comparison.js';
|
|
36
|
+
export type { ComparisonProps } from './ui/Comparison.js';
|
|
37
|
+
export { MetricWidget } from './widgets.js';
|
|
38
|
+
export type { MetricWidgetProps } from './widgets.js';
|
|
70
39
|
export { EmptyState } from './ui/EmptyState.js';
|
|
71
40
|
export type { EmptyStateProps } from './ui/EmptyState.js';
|
|
72
41
|
export { Skeleton } from './ui/Skeleton.js';
|
|
73
42
|
export type { SkeletonProps } from './ui/Skeleton.js';
|
|
74
|
-
export { DataAppSkeleton } from './ui/DataAppSkeleton.js';
|
|
75
|
-
export type { DataAppSkeletonProps } from './ui/DataAppSkeleton.js';
|
|
76
|
-
export { DataBoundary } from './ui/DataBoundary.js';
|
|
77
|
-
export { resolveDataView } from '../core/data-view.js';
|
|
78
|
-
export { displayedSnapshot } from '../core/data-view.js';
|
|
79
|
-
export type { DataView, DataSnapshot, DisplayedSnapshot, } from '../core/data-view.js';
|
|
80
|
-
export type { DataBoundaryProps } from './ui/DataBoundary.js';
|
|
81
|
-
export { RefreshRegion } from './ui/RefreshRegion.js';
|
|
82
|
-
export type { RefreshRegionProps } from './ui/RefreshRegion.js';
|
|
83
43
|
export { DataSection } from './ui/DataSection.js';
|
|
84
|
-
export type { DataSectionProps
|
|
85
|
-
export { StatusPanel } from './ui/StatusPanel.js';
|
|
86
|
-
export type { StatusPanelProps } from './ui/StatusPanel.js';
|
|
87
|
-
export { ContentSkeleton } from './ui/ContentSkeleton.js';
|
|
88
|
-
export type { ContentSkeletonProps } from './ui/ContentSkeleton.js';
|
|
89
|
-
export { DataViewToast } from './ui/DataViewToast.js';
|
|
90
|
-
export type { DataViewToastProps } from './ui/DataViewToast.js';
|
|
44
|
+
export type { DataSectionProps } from './ui/DataSection.js';
|
|
91
45
|
export { UpdatedAt } from './ui/UpdatedAt.js';
|
|
92
46
|
export type { UpdatedAtProps } from './ui/UpdatedAt.js';
|
|
93
47
|
export { DateTimeTooltip } from './ui/DateTimeTooltip.js';
|
|
94
48
|
export type { DateTimeTooltipProps } from './ui/DateTimeTooltip.js';
|
|
95
|
-
export {
|
|
96
|
-
export type { LiveControlProps, LiveIntervalSeconds, } from './ui/LiveControl.js';
|
|
97
|
-
export { DateRangePicker } from './ui/DateRangePicker.js';
|
|
98
|
-
export type { DatePresetId, DateRange, DateRangePickerProps, } from './ui/DateRangePicker.js';
|
|
99
|
-
export { defineAppVariables, textVariable, selectVariable, dateRangeVariable, dateRangeControl, useAppVariables, } from './ui/variables.js';
|
|
49
|
+
export { textVariable, selectVariable, dateRangeVariable, } from './ui/variables.js';
|
|
100
50
|
export type { AppVariable, AppVariableValues, DateRangeSelection, DateRangeVariable, DateRangeVariableOptions, } from './ui/variables.js';
|
|
101
51
|
export { PeriodSummary } from './ui/PeriodSummary.js';
|
|
102
52
|
export type { ReportingPeriod, PeriodComparison, PeriodSummaryProps, } from './ui/PeriodSummary.js';
|
|
103
|
-
export {
|
|
104
|
-
export type { SearchFieldProps } from './ui/SearchField.js';
|
|
105
|
-
export { searchItems } from './ui/searchItems.js';
|
|
106
|
-
export type { SearchAttribute, SearchHit, SearchItemsOptions, SearchMatchValue, SearchRange, } from './ui/searchItems.js';
|
|
107
|
-
export { SearchMatch } from './ui/SearchMatch.js';
|
|
108
|
-
export type { SearchMatchProps } from './ui/SearchMatch.js';
|
|
109
|
-
export { Combobox } from './ui/Combobox.js';
|
|
110
|
-
export type { ComboboxOption, ComboboxProps } from './ui/Combobox.js';
|
|
111
|
-
export { GradientScroll } from './ui/GradientScroll.js';
|
|
112
|
-
export type { GradientScrollProps } from './ui/GradientScroll.js';
|
|
113
|
-
export { searchParams, subscribeSearch, writeSearch, } from './ui/search.js';
|
|
114
|
-
export { Tabs, TabList, Tab, TabPanels, TabPanel, useViewTab, } from './ui/Tabs.js';
|
|
115
|
-
export { createDataContext, defineDataContext, evidenceFor, } from './ui/data-context.js';
|
|
53
|
+
export { createDataContext } from './ui/data-context.js';
|
|
116
54
|
export type { DataContext, GlossaryEntry } from './ui/data-context.js';
|
|
117
55
|
export { defineDataIdentifiers } from './ui/data-identifiers.js';
|
|
118
56
|
export type { DataIdentifierDefinition, TableIdentifier, ColumnIdentifier, } from './ui/data-identifiers.js';
|
|
119
|
-
export { GlossaryExplanation } from './ui/GlossaryExplanation.js';
|
|
120
|
-
export type { GlossaryExplanationProps } from './ui/GlossaryExplanation.js';
|
|
121
|
-
export { GlossaryDefinition } from './ui/GlossaryDefinition.js';
|
|
122
|
-
export type { GlossaryDefinitionProps } from './ui/GlossaryDefinition.js';
|
|
123
|
-
export { AboutData } from './ui/AboutData.js';
|
|
124
|
-
export type { AboutDataProps, AboutEmpty, AboutSubject, AboutTab, } from './ui/AboutData.js';
|
|
125
|
-
export { PresentStory } from './ui/PresentStory.js';
|
|
126
|
-
export type { PresentStoryProps } from './ui/PresentStory.js';
|
|
127
|
-
export type { StoryFinding, BoundStory } from './ui/story.js';
|
|
128
|
-
export { Checkbox } from './ui/Checkbox.js';
|
|
129
|
-
export type { CheckboxProps } from './ui/Checkbox.js';
|
|
130
|
-
export { AppIcon } from './ui/icons.js';
|
|
131
|
-
export type { AppIconName, AppIconProps } from './ui/icons.js';
|
|
132
57
|
export { IconButton } from './ui/IconButton.js';
|
|
133
58
|
export type { IconButtonProps } from './ui/IconButton.js';
|
|
134
|
-
export { Kbd } from './ui/Kbd.js';
|
|
135
|
-
export type { KbdProps } from './ui/Kbd.js';
|
|
136
|
-
export { Sheet } from './ui/Sheet.js';
|
|
137
|
-
export type { SheetDialogProps, SheetProps } from './ui/Sheet.js';
|
|
138
59
|
export { Tooltip, TooltipProvider } from './ui/Tooltip.js';
|
|
139
60
|
export type { TooltipProps, TooltipProviderProps, } from './ui/Tooltip.js';
|
|
140
61
|
export { Button } from './ui/Button.js';
|
|
141
62
|
export type { ButtonProps } from './ui/Button.js';
|
|
142
|
-
export { HelpPopover } from './ui/HelpPopover.js';
|
|
143
|
-
export type { HelpPopoverPanelProps, HelpPopoverProps, HelpPopoverTriggerProps, } from './ui/HelpPopover.js';
|
|
144
63
|
export type { MetricDefinition } from './ui/metric.js';
|
|
145
|
-
export type {
|
|
64
|
+
export type { MetricValues } from '../core/reading.js';
|
|
65
|
+
export { AnnotationTarget } from './annotations/AnnotationTarget.js';
|
|
66
|
+
export type { AnnotationTargetProps } from './annotations/AnnotationTarget.js';
|
|
67
|
+
export { useDataAppAnnotations } from './annotations/useDataAppAnnotations.js';
|
|
68
|
+
export { AnnotationBar } from './annotations/AnnotationBar.js';
|
|
69
|
+
export type { AnnotationBarProps } from './annotations/AnnotationBar.js';
|
|
70
|
+
export { injectDataAppAnnotationStyles } from './annotations/styles.js';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
/** Public custom-property names for authoring types and validation. CSS owns their defaults. */
|
|
3
|
+
export declare const dataAppStyleTokens: readonly ['--atbl-annotation-accent', '--atbl-annotation-accent-hover', '--atbl-annotation-on-accent', '--atbl-annotation-highlight', '--atbl-background', '--atbl-surface', '--atbl-subtle', '--atbl-text', '--atbl-muted', '--atbl-border', '--atbl-accent', '--atbl-accent-subtle', '--atbl-on-accent', '--atbl-positive', '--atbl-negative', '--atbl-danger', '--atbl-danger-subtle', '--atbl-backdrop', '--atbl-code-surface', '--atbl-code-text', '--atbl-code-keyword', '--atbl-chart-fill', '--atbl-control-hover-border', '--atbl-focus-color', '--atbl-focus-outline', '--atbl-focus-ring-offset', '--atbl-focus-ring-inset', '--atbl-font', '--atbl-font-heading', '--atbl-mono-font', '--atbl-space-xs', '--atbl-space-sm', '--atbl-space-md', '--atbl-space-lg', '--atbl-space-xl', '--atbl-layout-gap', '--atbl-content-width', '--atbl-control-height', '--atbl-radius-control', '--atbl-radius-surface', '--atbl-radius-overlay', '--atbl-shadow-surface', '--atbl-shadow-overlay', '--atbl-shadow-control', '--atbl-cursor-action', '--atbl-cursor-disabled', '--atbl-cursor-help', '--atbl-duration-fast', '--atbl-duration-normal', '--atbl-duration-slow', '--atbl-ease-standard', '--atbl-ease-enter', '--atbl-chart-1', '--atbl-chart-2', '--atbl-chart-3', '--atbl-chart-4', '--atbl-chart-5', '--atbl-chart-6', '--atbl-chart-7', '--atbl-chart-8', '--atbl-type-emphasis-weight', '--atbl-type-meta-weight', '--atbl-type-page-size', '--atbl-type-section-size', '--atbl-type-widget-size', '--atbl-type-body-size', '--atbl-type-label-size', '--atbl-type-meta-size', '--atbl-type-metric-size', '--atbl-type-heading-weight', '--atbl-type-label-weight', '--atbl-type-body-leading', '--atbl-type-label-leading', '--atbl-type-heading-leading', '--atbl-type-metric-leading', '--atbl-text-measure', '--atbl-control-compact-height', '--atbl-control-icon-size', '--atbl-control-padding-inline', '--atbl-control-padding-block', '--atbl-control-gap', '--atbl-control-disabled-opacity', '--atbl-cursor-busy', '--atbl-control-hover-surface', '--atbl-control-pressed-surface', '--atbl-control-selected-surface', '--atbl-control-selected-text'];
|
|
4
|
+
/** Stable component roots for CSS customization; only utilities may be placed on native markup. */
|
|
5
|
+
export declare const dataAppStyleClasses: {
|
|
6
|
+
readonly 'altertable-app-layout': {
|
|
7
|
+
readonly component: 'AppLayout';
|
|
8
|
+
readonly kind: 'root';
|
|
9
|
+
};
|
|
10
|
+
readonly 'altertable-stack': {
|
|
11
|
+
readonly component: 'Stack';
|
|
12
|
+
readonly kind: 'root';
|
|
13
|
+
};
|
|
14
|
+
readonly 'altertable-grid': {
|
|
15
|
+
readonly component: 'Grid';
|
|
16
|
+
readonly kind: 'root';
|
|
17
|
+
};
|
|
18
|
+
readonly 'altertable-grid-item': {
|
|
19
|
+
readonly component: 'GridItem';
|
|
20
|
+
readonly kind: 'root';
|
|
21
|
+
};
|
|
22
|
+
readonly 'altertable-text-content': {
|
|
23
|
+
readonly component: 'TextContent';
|
|
24
|
+
readonly kind: 'root';
|
|
25
|
+
};
|
|
26
|
+
readonly 'altertable-button': {
|
|
27
|
+
readonly component: 'Button';
|
|
28
|
+
readonly kind: 'root';
|
|
29
|
+
};
|
|
30
|
+
readonly 'altertable-tabs': {
|
|
31
|
+
readonly component: 'Tabs';
|
|
32
|
+
readonly kind: 'root';
|
|
33
|
+
};
|
|
34
|
+
readonly 'altertable-data-widget': {
|
|
35
|
+
readonly component: 'DataWidget';
|
|
36
|
+
readonly kind: 'root';
|
|
37
|
+
};
|
|
38
|
+
readonly 'altertable-metric-widget': {
|
|
39
|
+
readonly component: 'MetricWidget';
|
|
40
|
+
readonly kind: 'root';
|
|
41
|
+
};
|
|
42
|
+
readonly 'altertable-data-app-skeleton': {
|
|
43
|
+
readonly component: 'DataAppSkeleton';
|
|
44
|
+
readonly kind: 'root';
|
|
45
|
+
};
|
|
46
|
+
readonly 'altertable-sr-only': {
|
|
47
|
+
readonly component: null;
|
|
48
|
+
readonly kind: 'utility';
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export declare const dataAppStyleHooks: {
|
|
52
|
+
readonly 'data-atbl-focus': readonly ['ring', 'inset', 'group'];
|
|
53
|
+
readonly 'data-atbl-control': readonly ['action', 'help', 'text'];
|
|
54
|
+
};
|
|
55
|
+
export type DataAppStyleToken = (typeof dataAppStyleTokens)[number];
|
|
56
|
+
/** React style properties with checked public Altertable custom properties. */
|
|
57
|
+
export type DataAppStyle = CSSProperties & Partial<Record<DataAppStyleToken, string | number>>;
|
|
58
|
+
export type DataAppStyleHooks = {
|
|
59
|
+
[Name in keyof typeof dataAppStyleHooks]?: (typeof dataAppStyleHooks)[Name][number];
|
|
60
|
+
};
|
|
@@ -4,6 +4,7 @@ import type { DataContext, GlossaryEntry } from './data-context.js';
|
|
|
4
4
|
import { type ButtonProps } from './Button.js';
|
|
5
5
|
import { type SheetDialogProps } from './Sheet.js';
|
|
6
6
|
export type AboutTab = 'glossary' | 'queries';
|
|
7
|
+
export declare function resolveAboutTab(tab: string | null | undefined): AboutTab;
|
|
7
8
|
export type AboutEmpty = {
|
|
8
9
|
glossary: {
|
|
9
10
|
title: string;
|
|
@@ -57,4 +58,11 @@ export type AboutDataProps = AboutSubject & {
|
|
|
57
58
|
* Open state uses `?about=`; tab selection uses `?tab=`. Enable the global shortcut only on the
|
|
58
59
|
* page-level trigger.
|
|
59
60
|
*/
|
|
60
|
-
export declare function
|
|
61
|
+
export declare function InspectionSheet({ id, title, description, visual, visualKind, dataContext, references, queries, empty, footer, sheetProps, headerActions, open, onOpenChange, tab, onTabChange, returnFocus, }: AboutDataProps & {
|
|
62
|
+
open: boolean;
|
|
63
|
+
onOpenChange: (open: boolean) => void;
|
|
64
|
+
tab: AboutTab;
|
|
65
|
+
onTabChange: (tab: AboutTab) => void;
|
|
66
|
+
returnFocus: RefObject<HTMLButtonElement | null>;
|
|
67
|
+
}): import("react").JSX.Element;
|
|
68
|
+
export declare function AboutData(props: AboutDataProps): import("react").JSX.Element;
|
|
@@ -5,7 +5,6 @@ export type AppHeaderProps = {
|
|
|
5
5
|
description?: ReactNode;
|
|
6
6
|
toolbar?: ReactNode;
|
|
7
7
|
children?: ReactNode;
|
|
8
|
-
headingProps?: Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
9
8
|
} & Omit<ComponentPropsWithRef<'header'>, 'children' | 'title'>;
|
|
10
9
|
/** Page identity and actions; on narrow screens the scope shares a row with actions. */
|
|
11
|
-
export declare function AppHeader({ scope, title, description, toolbar, children,
|
|
10
|
+
export declare function AppHeader({ scope, title, description, toolbar, children, className, ...props }: AppHeaderProps): import("react").JSX.Element;
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { AppFooter } from './AppFooter.js';
|
|
3
|
-
import { type TooltipProviderProps } from './Tooltip.js';
|
|
1
|
+
import type { ComponentPropsWithRef, ReactNode } from 'react';
|
|
4
2
|
export type AppLayoutProps = {
|
|
5
3
|
children: ReactNode;
|
|
6
4
|
footerActions?: ReactNode;
|
|
7
5
|
footer?: ReactNode;
|
|
8
|
-
footerProps?: Omit<ComponentProps<typeof AppFooter>, 'children'>;
|
|
9
|
-
layoutProps?: Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
10
|
-
tooltipProviderProps?: Omit<TooltipProviderProps, 'children'>;
|
|
11
6
|
} & Omit<ComponentPropsWithRef<'main'>, 'children'>;
|
|
12
7
|
/**
|
|
13
|
-
* Native props target `<main>`.
|
|
14
|
-
* default footer, while `footerActions` fills it.
|
|
8
|
+
* Native props target `<main>`. The shell owns its wrapper and tooltip defaults.
|
|
15
9
|
*/
|
|
16
|
-
export declare function AppLayout({ children, footerActions, footer,
|
|
10
|
+
export declare function AppLayout({ children, footerActions, footer, className, ...props }: AppLayoutProps): import("react").JSX.Element;
|
|
@@ -3,13 +3,10 @@ import type { DataView } from '../../core/data-view.js';
|
|
|
3
3
|
import type { CsvExport } from './csv-export.js';
|
|
4
4
|
import { type LiveControlProps } from './LiveControl.js';
|
|
5
5
|
import { PresentStory } from './PresentStory.js';
|
|
6
|
-
import { RefreshControl } from './RefreshControl.js';
|
|
7
6
|
export type AppToolbarProps = {
|
|
8
7
|
children?: ReactNode;
|
|
9
8
|
end?: ReactNode;
|
|
10
|
-
controlsProps?: Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
11
9
|
updatedAt?: ReactNode;
|
|
12
|
-
initialLoading?: boolean;
|
|
13
10
|
requestState?: DataView<unknown, unknown>['kind'];
|
|
14
11
|
refresh?: {
|
|
15
12
|
refreshing: boolean;
|
|
@@ -17,17 +14,17 @@ export type AppToolbarProps = {
|
|
|
17
14
|
onCancel?: () => void;
|
|
18
15
|
label?: string;
|
|
19
16
|
tooltip?: ReactNode;
|
|
20
|
-
buttonProps?: Omit<ComponentPropsWithRef<'button'>, 'children' | 'onClick'>;
|
|
21
|
-
statusProps?: ComponentProps<typeof RefreshControl>['statusProps'];
|
|
22
17
|
};
|
|
23
18
|
live?: LiveControlProps;
|
|
24
19
|
aboutData?: ReactNode;
|
|
25
|
-
story
|
|
26
|
-
|
|
20
|
+
/** Null reserves a disabled story action while its findings are unavailable. */
|
|
21
|
+
story?: ComponentProps<typeof PresentStory> | null;
|
|
22
|
+
/** Null reserves a disabled export action while its data is unavailable. */
|
|
23
|
+
csvExport?: CsvExport | null;
|
|
27
24
|
} & Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
28
25
|
/** Header actions only. Put reader-controlled inputs in DataApp.variables below the header.
|
|
29
26
|
* Observation time, or an initial loading status, sits before Refresh. Children prepend app controls in the right
|
|
30
27
|
* cluster; end follows the built-in actions. Live sits beside Refresh when supplied. Refresh also
|
|
31
28
|
* answers Alt/Option+R and uses the button to cancel a running request when onCancel is provided;
|
|
32
29
|
* refresh.tooltip overrides its static label. All built-in controls are optional. */
|
|
33
|
-
export declare function AppToolbar({ children, updatedAt,
|
|
30
|
+
export declare function AppToolbar({ children, updatedAt, requestState, refresh, live, aboutData, story, csvExport, end, className, role, 'aria-label': ariaLabel, ...props }: AppToolbarProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ChartItem, ValueChartProps } from './chart-data.js';
|
|
2
|
+
export type AreaChartItem = ChartItem;
|
|
3
|
+
export type AreaChartProps = ValueChartProps;
|
|
4
|
+
/** Ordered finite samples filled to a zero baseline, including negative values.
|
|
5
|
+
* Samples are equally spaced; supply missing periods explicitly.
|
|
6
|
+
* Compose inside VisualizationWidget; hover/touch tooltips need no caller state. */
|
|
7
|
+
export declare function AreaChart(props: AreaChartProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ChartItem, type ValueChartProps } from './chart-data.js';
|
|
2
|
+
export type BarChartItem = ChartItem;
|
|
3
|
+
export type BarChartProps = ValueChartProps;
|
|
4
|
+
/** Nonnegative category values. Compose inside VisualizationWidget for a titled panel.
|
|
5
|
+
* Owns hover/touch tooltips; no selection state or keyboard navigation. */
|
|
6
|
+
export declare function BarChart({ items, unit, ariaLabel, formatValue, }: BarChartProps): import("react").JSX.Element;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { type MetricComparison } from './comparison.js';
|
|
1
|
+
import { type MetricComparison } from './metric-comparison.js';
|
|
2
2
|
import type { MetricDefinition } from './metric.js';
|
|
3
3
|
import type { MetricReading } from '../../core/reading.js';
|
|
4
4
|
type UnboundComparisonProps = MetricComparison & {
|
|
5
5
|
label: string;
|
|
6
6
|
emphasis?: 'standard' | 'story';
|
|
7
7
|
};
|
|
8
|
-
export type
|
|
8
|
+
export type ComparisonProps = UnboundComparisonProps | {
|
|
9
9
|
metric: MetricDefinition;
|
|
10
10
|
reading: MetricReading;
|
|
11
11
|
emphasis?: 'standard' | 'story';
|
|
12
12
|
};
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function Comparison(props: ComparisonProps): import("react").JSX.Element | null;
|
|
14
14
|
export {};
|
|
@@ -3,3 +3,5 @@ import type { SkeletonContent } from './presentation.js';
|
|
|
3
3
|
export type ContentSkeletonProps = SkeletonContent & Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
4
4
|
/** A metric, panel, or ranking placeholder to compose in the same layout as live content. */
|
|
5
5
|
export declare function ContentSkeleton({ variant, rows, className, ...props }: ContentSkeletonProps): import("react").JSX.Element;
|
|
6
|
+
/** Placeholder for a widget body; static headings stay outside it. */
|
|
7
|
+
export declare function ContentSkeletonBody({ variant, rows }: SkeletonContent): import("react").JSX.Element;
|
|
@@ -1,61 +1,20 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type {
|
|
3
|
-
import type
|
|
4
|
-
import type {
|
|
5
|
-
import { type
|
|
6
|
-
import { type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import type { BoundStory } from './story.js';
|
|
11
|
-
import { type SectionResult } from './DataSection.js';
|
|
12
|
-
import type { EmptyContent } from './presentation.js';
|
|
13
|
-
type DataAppBaseProps = {
|
|
14
|
-
config: DataAppConfig;
|
|
15
|
-
dataContext: DataContext;
|
|
16
|
-
aboutEmpty?: AboutEmpty;
|
|
17
|
-
description?: ReactNode;
|
|
18
|
-
/** Display names only; config.scope remains the connection identity. */
|
|
19
|
-
scopeLabels?: {
|
|
20
|
-
organization?: string;
|
|
21
|
-
environment?: string;
|
|
1
|
+
import { type RegisteredBinding } from '../bindings.js';
|
|
2
|
+
import type { DisplayedSnapshot } from '../../core/data-view.js';
|
|
3
|
+
import { type ExportDataset } from '../bindings.js';
|
|
4
|
+
import type { StoryFinding } from './story.js';
|
|
5
|
+
import { type DataAppBaseProps } from './DataAppFrame.js';
|
|
6
|
+
import { type DeclaredView } from '../view-runtime.js';
|
|
7
|
+
export type DataAppProps<Data, Input = unknown> = Omit<DataAppBaseProps, 'dataContext'> & {
|
|
8
|
+
view: DeclaredView<Data, Input> & {
|
|
9
|
+
scope(snapshot: DisplayedSnapshot<Data, Input>): string;
|
|
22
10
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
story: (snapshot: DisplayedSnapshot<Data, Input>) => readonly (Omit<StoryFinding, 'evidence'> & {
|
|
12
|
+
evidence: RegisteredBinding;
|
|
13
|
+
})[];
|
|
14
|
+
datasets: readonly [
|
|
15
|
+
ExportDataset<Data, Input>,
|
|
16
|
+
...ExportDataset<Data, Input>[]
|
|
17
|
+
];
|
|
26
18
|
};
|
|
27
|
-
|
|
28
|
-
queries?: DisclosedQuery[];
|
|
29
|
-
refresh?: AppToolbarProps['refresh'];
|
|
30
|
-
empty: EmptyContent;
|
|
31
|
-
controls?: ReactNode;
|
|
32
|
-
};
|
|
33
|
-
export type DataAppProps<Data = unknown, Input = unknown> = DataAppBaseProps & ({
|
|
34
|
-
request: DataAppRequest<Data, Input>;
|
|
35
|
-
/** Findings are always derived from the result currently visible to the reader. */
|
|
36
|
-
story: BoundStory<Data, Input>;
|
|
37
|
-
/** Every analytical view exports every distinct dataset in its displayed result. */
|
|
38
|
-
csvExport: (snapshot: DisplayedSnapshot<Data, Input>) => CsvExport;
|
|
39
|
-
children: (data: Data, displayedInput: Input) => ReactNode;
|
|
40
|
-
loading?: ReactNode;
|
|
41
|
-
label?: string;
|
|
42
|
-
queries?: never;
|
|
43
|
-
refresh?: never;
|
|
44
|
-
variables?: never;
|
|
45
|
-
} | {
|
|
46
|
-
request?: never;
|
|
47
|
-
story?: never;
|
|
48
|
-
csvExport?: CsvExport;
|
|
49
|
-
children: ReactNode;
|
|
50
|
-
queries?: DisclosedQuery[];
|
|
51
|
-
refresh?: AppToolbarProps['refresh'];
|
|
52
|
-
variables?: ReactNode;
|
|
53
|
-
loading?: never;
|
|
54
|
-
empty?: never;
|
|
55
|
-
label?: never;
|
|
56
|
-
});
|
|
57
|
-
/** Owns the page title, header, gutter, and width; body content uses section headings.
|
|
58
|
-
* The primary request owns controls, empty state, displayed input, refresh, and inspection.
|
|
59
|
-
* Without a request, the shell accepts authored children for setup or static views. */
|
|
19
|
+
/** Executes the primary view and owns its controls, inspection, exports, and stories. */
|
|
60
20
|
export declare function DataApp<Data, Input>(props: DataAppProps<Data, Input>): import("react").JSX.Element;
|
|
61
|
-
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { DisclosedQuery } from '../../core/contract.js';
|
|
3
|
+
import type { DataAppConfig } from '../../core/config.js';
|
|
4
|
+
import type { CsvExport } from './csv-export.js';
|
|
5
|
+
import { type DisplayedSnapshot } from '../../core/data-view.js';
|
|
6
|
+
import type { DataContext } from './data-context.js';
|
|
7
|
+
import type { BoundStory } from './story.js';
|
|
8
|
+
import type { SectionResult } from './DataSectionBoundary.js';
|
|
9
|
+
export type DataAppBaseProps = {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
config: DataAppConfig;
|
|
12
|
+
dataContext: DataContext;
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
toolbarActions?: ReactNode;
|
|
15
|
+
footerActions?: ReactNode;
|
|
16
|
+
};
|
|
17
|
+
export type DataAppRequest<Data, Input> = SectionResult<Data, Input> & {
|
|
18
|
+
queries?: DisclosedQuery[];
|
|
19
|
+
/** Actual request activity, including retries with retained data. */
|
|
20
|
+
refreshing?: boolean;
|
|
21
|
+
cancel?: () => unknown;
|
|
22
|
+
controls?: ReactNode;
|
|
23
|
+
};
|
|
24
|
+
export type StaticDataAppProps = DataAppBaseProps & {
|
|
25
|
+
csvExport?: CsvExport;
|
|
26
|
+
queries?: DisclosedQuery[];
|
|
27
|
+
};
|
|
28
|
+
export type DataAppProps<Data = unknown, Input = unknown> = (DataAppBaseProps & {
|
|
29
|
+
request: DataAppRequest<Data, Input>;
|
|
30
|
+
/** Findings are always derived from the result currently visible to the reader. */
|
|
31
|
+
story: BoundStory<Data, Input>;
|
|
32
|
+
/** Export every distinct dataset in the displayed result. */
|
|
33
|
+
csvExport: (snapshot: DisplayedSnapshot<Data, Input>) => CsvExport;
|
|
34
|
+
queries?: never;
|
|
35
|
+
}) | (StaticDataAppProps & {
|
|
36
|
+
request?: never;
|
|
37
|
+
story?: never;
|
|
38
|
+
});
|
|
39
|
+
/** Owns the page title, header, gutter, and width; body content uses section headings.
|
|
40
|
+
* The primary request binds the toolbar, controls, refresh, and inspection.
|
|
41
|
+
* Children always render; compose DataSection boundaries around independently loading content. */
|
|
42
|
+
export declare function DataAppFrame<Data, Input>(props: DataAppProps<Data, Input>): import("react").JSX.Element;
|
|
@@ -2,14 +2,13 @@ import type { ComponentPropsWithRef, ReactNode } from 'react';
|
|
|
2
2
|
import type { DataView } from '../../core/data-view.js';
|
|
3
3
|
export type DataBoundaryProps<T, Input = unknown> = {
|
|
4
4
|
view: DataView<T, Input>;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
loadingFallback: ReactNode;
|
|
6
|
+
emptyFallback: ReactNode;
|
|
7
7
|
error: (error: Error) => ReactNode;
|
|
8
8
|
staleError?: (error: Error) => ReactNode;
|
|
9
9
|
notice?: 'inline' | 'none';
|
|
10
|
-
dimOnUpdate?: boolean;
|
|
11
10
|
children: (data: T, displayedInput: Input) => ReactNode;
|
|
12
11
|
} & Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
13
12
|
/** Render one request state at a time. Prior content remains readable during an update.
|
|
14
|
-
*
|
|
15
|
-
export declare function DataBoundary<T, Input>({ view,
|
|
13
|
+
* Feedback ownership is supplied by the containing section. */
|
|
14
|
+
export declare function DataBoundary<T, Input>({ view, loadingFallback, emptyFallback, error, staleError, notice, children, className, ...props }: DataBoundaryProps<T, Input>): import("react").JSX.Element;
|
|
@@ -1,26 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type
|
|
1
|
+
import { type ViewContent } from '../content.js';
|
|
2
|
+
import { type ComponentPropsWithRef, type ReactNode } from 'react';
|
|
3
3
|
import type { EmptyContent } from './presentation.js';
|
|
4
|
-
export type SectionResult<Data, Input> = {
|
|
5
|
-
view: DataView<Data, Input>;
|
|
6
|
-
refetch: () => unknown;
|
|
7
|
-
};
|
|
8
4
|
export type DataSectionProps<Data, Input = unknown> = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
children: (data: Data, displayedInput: Input) => ReactNode;
|
|
12
|
-
/** Placeholder layout for an initial request; use the ready view's grid without copied values. */
|
|
13
|
-
loading?: ReactNode;
|
|
5
|
+
content: ViewContent<Data, Input>;
|
|
6
|
+
emptyFallback?: EmptyContent;
|
|
14
7
|
error?: {
|
|
15
8
|
title: ReactNode;
|
|
16
9
|
description?: ReactNode;
|
|
17
10
|
onRetry?: () => void;
|
|
18
11
|
};
|
|
19
12
|
label?: string;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
dimOnUpdate?: boolean;
|
|
23
|
-
} & Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
24
|
-
/** One request boundary for any number of cards. `DataBoundary` exposes the lower-level
|
|
25
|
-
* view-state slots for custom composition. */
|
|
26
|
-
export declare function DataSection<Data, Input>({ result, children, empty, loading, error, label, notice, dimOnUpdate, ...props }: DataSectionProps<Data, Input>): import("react").JSX.Element;
|
|
13
|
+
} & Omit<ComponentPropsWithRef<'div'>, 'children' | 'content'>;
|
|
14
|
+
export declare function DataSection<Data, Input>({ content, ...presentation }: DataSectionProps<Data, Input>): import("react").JSX.Element;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef, ReactNode } from 'react';
|
|
2
|
+
import type { DataView } from '../../core/data-view.js';
|
|
3
|
+
import type { EmptyContent } from './presentation.js';
|
|
4
|
+
export type SectionResult<Data, Input> = {
|
|
5
|
+
view: DataView<Data, Input>;
|
|
6
|
+
refetch: () => unknown;
|
|
7
|
+
};
|
|
8
|
+
export type DataSectionProps<Data, Input = unknown> = {
|
|
9
|
+
children: (data: Data, displayedInput: Input) => ReactNode;
|
|
10
|
+
/** Placeholder layout for an initial request; use the ready view's grid without copied values. */
|
|
11
|
+
loadingFallback: ReactNode;
|
|
12
|
+
error?: {
|
|
13
|
+
title: ReactNode;
|
|
14
|
+
description?: ReactNode;
|
|
15
|
+
onRetry?: () => void;
|
|
16
|
+
};
|
|
17
|
+
label?: string;
|
|
18
|
+
notice?: 'none' | 'inline';
|
|
19
|
+
} & ({
|
|
20
|
+
result: SectionResult<Data, Input> & {
|
|
21
|
+
emptyFallback: EmptyContent;
|
|
22
|
+
};
|
|
23
|
+
emptyFallback?: EmptyContent;
|
|
24
|
+
} | {
|
|
25
|
+
result: SectionResult<Data, Input>;
|
|
26
|
+
emptyFallback: EmptyContent;
|
|
27
|
+
}) & Omit<ComponentPropsWithRef<'div'>, 'children'>;
|
|
28
|
+
/** One request boundary for any number of cards. `DataBoundary` exposes the lower-level
|
|
29
|
+
* view-state slots internally. The primary DataApp request uses page-level feedback. */
|
|
30
|
+
export declare function DataSectionBoundary<Data, Input>({ result, children, emptyFallback, loadingFallback, error, label, notice: feedback, ...props }: DataSectionProps<Data, Input>): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef, ReactNode } from 'react';
|
|
2
|
+
import type { DataReading } from '../../core/reading.js';
|
|
3
|
+
export type DataValueProps<Value> = {
|
|
4
|
+
reading: DataReading<Value>;
|
|
5
|
+
loadingFallback: ReactNode;
|
|
6
|
+
children: (value: Value) => ReactNode;
|
|
7
|
+
} & Omit<ComponentPropsWithRef<'span'>, 'children'>;
|
|
8
|
+
/** Bind inline content to displayed data. Keep static wording outside this span. */
|
|
9
|
+
export declare function DataValue<Value>({ reading, loadingFallback, children, ...props }: DataValueProps<Value>): import("react").JSX.Element;
|
|
@@ -4,6 +4,7 @@ import type { EmptyContent, BoundWidgetReading } from './presentation.js';
|
|
|
4
4
|
import type { WidgetEvidence } from './WidgetEvidence.js';
|
|
5
5
|
type DataWidgetBaseProps = {
|
|
6
6
|
title: ReactNode;
|
|
7
|
+
annotationId?: string;
|
|
7
8
|
count?: number;
|
|
8
9
|
description?: ReactNode;
|
|
9
10
|
evidence?: WidgetEvidence;
|
|
@@ -22,7 +23,7 @@ export type DataWidgetProps<Data = unknown> = DataWidgetBaseProps & ((BoundWidge
|
|
|
22
23
|
reading?: never;
|
|
23
24
|
isEmpty?: never;
|
|
24
25
|
skeleton?: never;
|
|
25
|
-
|
|
26
|
+
emptyFallback?: EmptyContent;
|
|
26
27
|
children: ReactNode;
|
|
27
28
|
});
|
|
28
29
|
export declare function DataWidget<Data>(props: DataWidgetProps<Data>): import("react").JSX.Element;
|