gridsmith-ui 0.31.0 → 0.32.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/CHANGELOG.md +64 -1
- package/dist/charts.d.ts +101 -30
- package/dist/charts.js +181 -106
- package/dist/charts.js.map +1 -1
- package/dist/chat.js +6 -6
- package/dist/{chunk-OWQ7M6R7.js → chunk-2724SJO2.js} +141 -24
- package/dist/chunk-2724SJO2.js.map +1 -0
- package/dist/{chunk-BKYWKMUN.js → chunk-DO6DLTFK.js} +11 -9
- package/dist/chunk-DO6DLTFK.js.map +1 -0
- package/dist/{chunk-GP2COVJC.js → chunk-H732QL56.js} +4 -4
- package/dist/{chunk-GP2COVJC.js.map → chunk-H732QL56.js.map} +1 -1
- package/dist/{chunk-XSQD3UGY.js → chunk-HCEHTJ5E.js} +17 -4
- package/dist/chunk-HCEHTJ5E.js.map +1 -0
- package/dist/{chunk-YFHTREH5.js → chunk-HUVZQOU4.js} +5 -5
- package/dist/{chunk-YFHTREH5.js.map → chunk-HUVZQOU4.js.map} +1 -1
- package/dist/{chunk-EKWXPSTI.js → chunk-JHZ22HQP.js} +75 -24
- package/dist/chunk-JHZ22HQP.js.map +1 -0
- package/dist/{chunk-3J67NISC.js → chunk-NGZJK57C.js} +15 -11
- package/dist/chunk-NGZJK57C.js.map +1 -0
- package/dist/{chunk-U7WBI4AV.js → chunk-OVHM55JF.js} +5 -5
- package/dist/{chunk-U7WBI4AV.js.map → chunk-OVHM55JF.js.map} +1 -1
- package/dist/{chunk-OFACAHRV.js → chunk-QY2RA2HO.js} +5 -5
- package/dist/{chunk-OFACAHRV.js.map → chunk-QY2RA2HO.js.map} +1 -1
- package/dist/{chunk-HUNEJIKV.js → chunk-R2IAK3J3.js} +3 -3
- package/dist/{chunk-HUNEJIKV.js.map → chunk-R2IAK3J3.js.map} +1 -1
- package/dist/{chunk-V73LHNRL.js → chunk-RS624TD5.js} +29 -10
- package/dist/chunk-RS624TD5.js.map +1 -0
- package/dist/{chunk-V2ARGHJN.js → chunk-SIEU4H3H.js} +9 -9
- package/dist/chunk-SIEU4H3H.js.map +1 -0
- package/dist/{chunk-DBHVJ7Z3.js → chunk-SS3C24IJ.js} +3 -2
- package/dist/chunk-SS3C24IJ.js.map +1 -0
- package/dist/{chunk-LE72KHIE.js → chunk-TMPPBXX3.js} +3 -3
- package/dist/{chunk-LE72KHIE.js.map → chunk-TMPPBXX3.js.map} +1 -1
- package/dist/{chunk-GT6M74IZ.js → chunk-WSKPESAX.js} +12 -10
- package/dist/chunk-WSKPESAX.js.map +1 -0
- package/dist/{chunk-2Q4HOGEI.js → chunk-XBVZIN26.js} +15 -5
- package/dist/chunk-XBVZIN26.js.map +1 -0
- package/dist/data-grid.js +10 -10
- package/dist/data-grid.js.map +1 -1
- package/dist/editor-mentions.js +2 -2
- package/dist/editor.js +4 -3
- package/dist/editor.js.map +1 -1
- package/dist/index.d.ts +53 -6
- package/dist/index.js +557 -232
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +10 -9
- package/dist/kanban.js.map +1 -1
- package/dist/resizable.d.ts +11 -2
- package/dist/resizable.js +97 -22
- package/dist/resizable.js.map +1 -1
- package/dist/roots.css +2 -2
- package/dist/tokens.css +6 -6
- package/dist/virtualized.js +10 -9
- package/dist/virtualized.js.map +1 -1
- package/dist-static/tokens.css +6 -6
- package/package.json +1 -1
- package/dist/chunk-2Q4HOGEI.js.map +0 -1
- package/dist/chunk-3J67NISC.js.map +0 -1
- package/dist/chunk-BKYWKMUN.js.map +0 -1
- package/dist/chunk-DBHVJ7Z3.js.map +0 -1
- package/dist/chunk-EKWXPSTI.js.map +0 -1
- package/dist/chunk-GT6M74IZ.js.map +0 -1
- package/dist/chunk-OWQ7M6R7.js.map +0 -1
- package/dist/chunk-V2ARGHJN.js.map +0 -1
- package/dist/chunk-V73LHNRL.js.map +0 -1
- package/dist/chunk-XSQD3UGY.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,69 @@
|
|
|
1
1
|
# gridsmith-ui changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 0.32.0 — 19 October 2026
|
|
4
|
+
|
|
5
|
+
What the owner's look review of 19 October found (Sprint 25.33): charts with no textures and no worked-out sentence on show, a bulk-action bar that floats, tables that pin only while they scroll, chips as wide as their words, panes that pad what they hold, and the rail's selected item in the accent.
|
|
6
|
+
|
|
7
|
+
**Added.**
|
|
8
|
+
- **`patterns`** on LineChart, AreaChart, BarChart, CompositeChart, RadarChart, PieChart and RadialBarChart: each series after the first takes a mark of its own besides its colour (below, under Changed).
|
|
9
|
+
- **Badge's and Tag's `width`:** a set of them takes one width, their text centred; a label too long for it is cut short, its whole text on hover.
|
|
10
|
+
- **ScrollArea's `flush`:** content at the edge, for content that insets itself.
|
|
11
|
+
- **SplitView's `detailFlush`:** the detail pane adds no inset, for one full-bleed piece: a conversation with its composer, a preview or an editor.
|
|
12
|
+
|
|
13
|
+
**Changed.**
|
|
14
|
+
- **Charts tell their series apart by colour and the key, with no textures or dashes by default.** Since 0.31.0 every series after the first drew a pattern or a dash. Bars, slices, areas and radial bars are now solid, and lines and outlines unbroken. `patterns` on LineChart, AreaChart, BarChart, CompositeChart, RadarChart, PieChart and RadialBarChart brings the marks back, in the legend and the tooltip too, for print or a team that needs series told apart without colour: colour and a key alone don't meet WCAG 1.4.1. Whatever `patterns` says, a line the page marks `dashed` keeps its dash, a series whose colour comes round again (a seventh) keeps its mark, ScatterChart keeps its symbols, and a forecast, a target line and a band keep their look.
|
|
15
|
+
- **Parts that touch are 2 px apart.** A pie's slices and a funnel's stages are edged in the card's colour, and a stack's segments stop 2 px short of the next, the parts either side of zero too, so solid parts in neighbouring colours stay apart, with no white seam on a dark card. A pie of one slice draws no edge, so no seam runs from its centre.
|
|
16
|
+
- **A chart's worked-out sentence is off the drawing.** The sentence a chart works out from its data showed above every drawing. A screen reader now hears it with the drawing, and the Table view shows it above the table. It says less: what the chart measures, over what, and the main trend of its first series (or of a stack's total, where its parts share a sign) with its one extreme, or, by name, the highest and the lowest; a bar and line chart whose bars stack reads the bars' total; a funnel keeps its carry-through, and a radial chart its highest and lowest. Values that read the same are said once, parts tied for the largest are named together, and a value axis titled with a unit alone ("£", "%") isn't taken for the measure.
|
|
17
|
+
- **`description` is the chart's subtitle.** It replaced the worked-out sentence; it's now the page's own few words shown under the chart's title in both views, a container's fixed area included, and read before the worked-out sentence, which stays. A blank one is none.
|
|
18
|
+
- **BulkActionBar floats at the foot of the page.** Written above a table, it pushed the page down as a row was selected (65 px in the review). It's now drawn over the content at the foot of the shell's content column, centred and as wide as what it holds, so selecting moves nothing; in a Drawer or a Dialog it floats at the foot of the body, above the footer, and outside the shell at the foot of the window. While it shows, the shell's content column, a pane, a Drawer or a Dialog keeps room under its last row, so the last rows scroll clear of it and keyboard focus stops short of it (a page outside the shell keeps none), and a row ticked from the keyboard at the foot of the view scrolls clear as the bar comes up. Two bars in one of them stack. Toasts at the bottom rise above it at every width, and on a phone it sits above the bottom tabs. It takes its bearing from where it's written as it appears and leaves nothing there, so a spaced stack round the table doesn't move either. When a keyboard press takes the bar away (an action that clears the selection, at once or once the server answers, Clear selection, or a confirmation the bar opened), focus goes to the table's select-all (on a phone, the first card's box), as it did above the table, or with none to find, where Tab would go on from where the bar is written. A click on the bar, or the user moving on meanwhile, leaves focus where it is; a confirmation the bar opened gives focus back as any dialog does, to the select-all once the bar has gone with the selection. The count is said through the ToastProvider's polite region as the selection changes ("3 selected"). It's one Tab stop, reached after the page's content, and the arrow keys, Home and End move between its controls (the APG's toolbar). In a host too narrow for its buttons its actions are one Actions menu, as on a phone.
|
|
19
|
+
- **Badges and tags are as wide as what they say.** In a grid or a flex column they stretched to the column (a log's level badges went 337 px wide on a phone). `width` gives a set of them one width.
|
|
20
|
+
- **A table pins its columns only while it scrolls sideways, in the colour of the cells beside them.** A table that fitted its frame still drew its pinned column in a second colour, and on a see-through theme the pinned column turned solid. Pinned cells now take the row's own surface, at its own opacity, over a solid ground.
|
|
21
|
+
- **An icon-only column keeps its header for a screen reader, off screen.** A Table column whose every cell is icon buttons or links (an Actions column) drew its header over a column of icons. The header is now visually hidden and still read. A sortable header is never hidden, and a column where any cell shows text, or holds a checkbox, a switch, a rating, an image or a status icon, keeps its header drawn: it names what each cell shows or sets.
|
|
22
|
+
- **The selected item of a vertical tab rail or a TreeView is a shade of the accent.** It took the tab strip's surface fill, which vanished on a surface. It now takes the sidebar's recipe, the 10% accent tint under the rail: `--ds-nav-v-active-bg` and `--ds-tree-active-bg` default to `var(--ds-accent-subtle)`.
|
|
23
|
+
- **A ScrollArea's content starts 4 px inside its edges,** so a focus ring or a shadow at the edge isn't cut. `flush` keeps content at the edge, for content that insets itself, as the Sidebar's navigation does. A horizontal Timeline keeps 4 px inside its edges too, its first marker included once it has snapped.
|
|
24
|
+
- **A form's reading width is for its fields.** FormWrapper held every row to the reading width, so a drop zone in a form didn't fill it. A FileUpload, RichTextEditor, TransferList, DataGrid or Table now fills the form's width, in a Field too, and the buttons of a form holding one end where it does. A `max-w-*` class on FormWrapper is the form's own width, and its rows take it, as `fullWidth` does. A row's or a Field's own `max-w-*` class wins over the reading width, a Field keeps the reading width inside a wider row, and a form with no wide control keeps its own width, so `mx-auto` centres it.
|
|
25
|
+
- **A SplitView's panes pad what they hold, unless it runs edge to edge.** Both panes were flush, so a tree, a form or text in a pane sat at its edge, and pages padded some panes and not others. The list pane now pads at the sidebar's inset (8 px at the sides, 12 px above and below), and is flush once it holds a list or a board: a StackedList, Table, DataGrid, VirtualizedList, KanbanBoard, Gantt or CardGrid, at any depth. It stays flush through an empty result or a reload, so a search row of the page's own above the list, which insets itself, doesn't move. The detail pane pads at the page's gutter, 20 px above and below, and `detailFlush` makes it flush. A pane's heading (SectionHeading variant="pane") placed first is inset once, its rule reaching the pane's edges, and a tree's chevrons line up with it. On a phone the stacked panes pad the same way.
|
|
26
|
+
- **On a phone, a SplitView framed as the page runs edge to edge.** A page-frame SplitView that spans its PageContainer's column, with nothing between them that draws or clips, drops its side edges and corners on a phone, and its text lines up with the page's title. A board on the canvas keeps its place until an item opens over it.
|
|
27
|
+
|
|
28
|
+
**Fixed.**
|
|
29
|
+
- **A bar chart's forecast bars start at `forecastFrom` when a row before it has no value.** The fainter, outlined look was keyed on the bars as drawn, which skip a row with no value, so it started a bar late.
|
|
30
|
+
- **A forecast's name never crosses the line where it starts.** On a band narrower than its name (a forecast of the last month), "So far this month" was drawn across the dotted line that starts the band. It now ends at that line, beside the band, inside the plot.
|
|
31
|
+
- **A date drawn with its time, or a relative time, stays whole in a Table.** RelativeTime's "18 Sept 2026, 17:30" wrapped its year onto a line of its own. A column of dates with a time of day, or of relative times ("3 hours ago", "yesterday"), now keeps each on one line, as a column of dates does, and a cell's full date for a screen reader no longer stops its column reading as dates.
|
|
32
|
+
|
|
33
|
+
**Known limit.**
|
|
34
|
+
- **In `layout="multi-column"`, a column that scrolls on its own keeps no room under the bulk-action bar,** so its last rows can sit under the bar. Give that column's foot room of its own while rows are selected. The other layouts keep it.
|
|
35
|
+
|
|
36
|
+
### Upgrade note for agents (0.31.1 → 0.32.0)
|
|
37
|
+
|
|
38
|
+
`^0.31.0` doesn't take 0.32.0: install it with `npm install gridsmith-ui@^0.32.0`, then regenerate gridsmith-tokens.css (get_tokens), so a rail's selected item takes the accent tint. What to check:
|
|
39
|
+
- **Charts.** Series are solid, told apart by colour and the key. Pass `patterns` where a team must tell series apart without colour (WCAG 1.4.1, print). A chart's `description` is now a subtitle on show: keep it to a few words, or remove a long sentence the page wrote. A chart's title says what the chart is in fixed words, never a finding, and never one worked out from the data.
|
|
40
|
+
- **BulkActionBar.** Write it after the list it acts on, in no box of your own: remove a fixed or sticky wrapper (gs:bulk-bar-placed-by-page warns). It's drawn in the shell's layer, outside the page's container, so a test that looked for it beside its table finds it in `[data-bulk-bar-layer]`. It's reached by Tab after the page's content, and its count is announced by the ToastProvider's polite region.
|
|
41
|
+
- **Panes.** In a pane that pads, remove padding from what you pass to it (gs:container-content-padded warns); in a list pane that holds a list or a board, which is flush, a search or filter row above the list keeps its own inset. Pass `detailFlush` for a conversation, a preview or an editor, and put a pane's heading first in it, unwrapped (gs:splitview-pane-heading-padded). An inbox-style page that pads its own detail is padded twice until it does.
|
|
42
|
+
- **Hand-built selected rows.** A row of your own that drew its selected state with `--ds-tab-active-bg` takes `--ds-nav-v-active-bg`, its text `--ds-nav-v-active-text` and any secondary text `--ds-nav-v-active-muted`, the tokens a StackedList's selected row and the rail take, which follow the theme.
|
|
43
|
+
- **Badges and tags** are as wide as their words: give a set `width` for one width, or a `w-full` class for one that fills.
|
|
44
|
+
- **Tables.** A table that fits its frame pins nothing, and pinned cells match their row. An icon-only column's header is off screen and still read.
|
|
45
|
+
- **ScrollArea.** Its content starts 4 px in: pass `flush` for content that insets itself.
|
|
46
|
+
- **FormWrapper.** A drop zone, an editor, a TransferList or a table fills the form's width; a `max-w-*` class on FormWrapper is the form's own width.
|
|
47
|
+
|
|
48
|
+
## 0.31.1 — 18 October 2026
|
|
49
|
+
|
|
50
|
+
**Fixed.**
|
|
51
|
+
- **A closed Collapsible is out of the Tab order.** Its content was only out of sight, so a keyboard Tabbed into fields no one could see, and focus vanished: an event form's "More options" held its Location and Description. Closed, the content is now `inert`, out of the Tab order and the accessibility tree. Focus inside it when it closes goes back to its trigger; with no trigger that takes focus (the page's own button opens it, or the trigger is plain text), to the control before it, else the nearest place the page still holds. When a form sends focus to a field in a closed section (its only error, or an error summary's link), the section opens first, and the field takes focus in view.
|
|
52
|
+
- **An open Collapsible clips nothing.** It kept the height it had when it opened and hid what overflowed, so a field's outline at its edge was cut, and so was an error message that appeared once it was open. Open and settled, its height follows its content; it clips only while it moves. A Collapsible open from the start is drawn open, with no movement.
|
|
53
|
+
- **A Button whose own keyboard press takes it away hands focus on.** A button drawn only in one state (a card's Reconnect, gone once the app reconnects) left focus on the page after Enter. Focus now goes where the browser's Tab would go on from where the button stood, within the page, or the dialog, it was in: the first control after that place, what's drawn there now included, else the last before it. A destructive control is no exception, as Tab reaches it: a red button belongs in a confirmation dialog, which opens with focus on its safe action. A deleted row's Delete hands focus to the next row; a row that brings its own divider, or a tip drawn with its heading, is followed the same way. Focus never goes into another layer, such as a toast's Undo or a popover. It waits 0.4 s once the button has gone, so the library's own rules go first, and the page's if it moves focus by then. It never acts once the press has gone to another page, a hash router's included. A click leaves focus where the browser puts it, and so does a disable while the press is pending (`disabled={saving}`): the handover takes neither for the button going.
|
|
54
|
+
- **A handover of focus after a removal ends once you've moved on.** The library's handovers end when focus goes elsewhere or is let go on the page, at a pointer's press, or at a scroll by wheel, touch or key: a Tag's remove, an Alert's Dismiss, a bulk action bar's Clear selection, a chat's suggestions, TransferList's moves, Pagination's Previous, Next and Load more, the Button's above, and an overlay's way back to the row it was opened from. A tag removed once a server answered, after a click on plain text meanwhile, pulled focus onto the next tag.
|
|
55
|
+
- **A snapping PageHeader keeps a short page where Tab took it.** On a page that scrolled only a little past the header's collapse offset, Tab to a control near the foot collapsed the header, and the page's scroll range shrank for a moment: the header opened again and took the page back to the top, with the control under the fold. The space the header gives up is held from the moment it collapses.
|
|
56
|
+
- **One Tooltip on screen at a time.** A relative time's full date, shown while it had keyboard focus, stayed up while the pointer rested on an icon button, and both labels showed at once. A Tooltip that opens now closes any other Tooltip, before either is drawn.
|
|
57
|
+
- **Focus put back after a calendar event's deletion stands down once focus has had a place.** After an event was deleted from its card, focus went to its day; a click on plain text a moment later let it go, and a check made a moment later took focus back to the day. The Calendar's own watch now stands down once focus leaves the page's content, and an overlay's way back to a control that has gone acts only when focus stayed on nothing for its whole wait.
|
|
58
|
+
|
|
59
|
+
### Upgrade note for agents (0.31.0 → 0.31.1)
|
|
60
|
+
|
|
61
|
+
`^0.31.0` covers 0.31.1, so `npm update gridsmith-ui` brings it in. Nothing in an app's code changes, and the theme's tokens need no regenerating. What to check:
|
|
62
|
+
- **The Tab order.** A closed Collapsible's fields are no Tab stops. A test that Tabs through a page with a closed section counts no stop for them; open the section first to reach them.
|
|
63
|
+
- **Where focus goes.** After Enter on a Button that its own press takes away, focus moves 0.4 s after the button goes, to the first control after where it stood (what's drawn there now included, a destructive one too), else the last before it, within the page or the dialog. After a Collapsible closes with focus inside it, focus is on its trigger, else the control before it. After a form sends focus to an error in a closed Collapsible, the section opens and the field has focus. A test that expected focus on the page in these cases now finds it on that control, once it waits; in a dialog with nothing left in it, or a section its page keeps closed, nothing moves.
|
|
64
|
+
- **Tooltips.** One shows at a time. A test that expected a tooltip shown by focus to stay while another opened by hover finds only the second.
|
|
65
|
+
|
|
66
|
+
## 0.31.0 — 16 October 2026
|
|
4
67
|
|
|
5
68
|
**Added.**
|
|
6
69
|
- **A chart says what it shows, in a line above the drawing.** Every chart but Sparkline draws a sentence worked out from its data, so it stays true as the data changes: what it plots and over what; for each series (three at most, the rest counted), over dates or numbers its first and last values, "up" or "down" only when every step goes that way, and its highest and lowest when it goes both ways, and over names its highest and lowest; a pie's largest and smallest shares, a funnel's carry-through, a scatter chart's ranges, a Sankey chart's largest flow; any reference, and where a forecast runs. A screen reader hears it as the drawing's description once the chart is named (its `aria-label`, or its ChartContainer's title). `description` replaces it with the page's own words; a blank one keeps it. In a ChartContainer's fixed area it's shown with the table, so the drawing keeps its height.
|
package/dist/charts.d.ts
CHANGED
|
@@ -3,10 +3,19 @@ import { ReactNode } from 'react';
|
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* What a chart says besides its drawing (Sprint 25.8.9 items 4, 25, 26 and 27): its values as a table and a
|
|
7
|
-
* what it shows, each worked out from the chart's own props, so they stay true as the data changes. The
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* What a chart says besides its drawing (Sprint 25.8.9 items 4, 25, 26 and 27): its values as a table and a summary of
|
|
7
|
+
* what it shows, each worked out from the chart's own props, so they stay true as the data changes. The summary is the
|
|
8
|
+
* chart's description for a screen reader, and shows as a line above the table in the Table view, one switch away for
|
|
9
|
+
* everyone (charts-6, charts-7, WCAG 1.4.1 and 1.1.1; data_visualisation#34, #35).
|
|
10
|
+
*
|
|
11
|
+
* Sprint 25.33 A2: a summary, never a list of every series. Per kind of chart:
|
|
12
|
+
* - over time: the measure (its series' names, else the value axis's title), the period from first to last, the main
|
|
13
|
+
* trend and its one extreme;
|
|
14
|
+
* - by name: the measure, how many categories, the highest and the lowest;
|
|
15
|
+
* - parts of a whole: how many parts, the largest and its share (a funnel: what share of the first stage reaches the last);
|
|
16
|
+
* - a scatter chart: what's plotted against what, and how many points;
|
|
17
|
+
* - a Sankey chart: how many flows, and the largest.
|
|
18
|
+
* What the chart marks across its plot (a target, a range, where a forecast runs) is said after it.
|
|
10
19
|
*
|
|
11
20
|
* Pure: each chart builds its own from the page's data, read by named fields, never from the copies it draws with
|
|
12
21
|
* (Sprint 25.29 item 14), so a row's own fields never reach the table's cells.
|
|
@@ -105,8 +114,10 @@ interface BarChartProps {
|
|
|
105
114
|
"aria-label"?: string;
|
|
106
115
|
className?: string;
|
|
107
116
|
/**
|
|
108
|
-
* What the chart shows, in the page's words:
|
|
109
|
-
*
|
|
117
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
118
|
+
* drawing before the summary the chart works out from its data (the measure, how many categories or which period, and
|
|
119
|
+
* the highest and lowest or the main trend). The summary is for a screen reader, and shows above the table in the
|
|
120
|
+
* Table view.
|
|
110
121
|
*/
|
|
111
122
|
description?: string;
|
|
112
123
|
/** Targets or limits across the bars: a line at `value`, or a band from `value` to `to`, each named by its `label`. */
|
|
@@ -119,12 +130,19 @@ interface BarChartProps {
|
|
|
119
130
|
*/
|
|
120
131
|
forecastFrom?: string | number;
|
|
121
132
|
forecastLabel?: string;
|
|
133
|
+
/**
|
|
134
|
+
* A pattern over the colour of each series after the first, in the legend and the tooltip too, for print or a team
|
|
135
|
+
* that needs series told apart without colour. Off by default: series are told apart by their colour and the key. A
|
|
136
|
+
* series whose colour comes round again (a seventh) has its pattern either way.
|
|
137
|
+
*/
|
|
138
|
+
patterns?: boolean;
|
|
122
139
|
}
|
|
123
140
|
declare const BarChart: react.ForwardRefExoticComponent<BarChartProps & react.RefAttributes<HTMLDivElement>>;
|
|
124
141
|
|
|
125
142
|
interface LineDef {
|
|
126
143
|
dataKey: string;
|
|
127
144
|
label?: string;
|
|
145
|
+
/** The page's own dashed line, a dash no other line has: kept whatever the chart's `patterns` says. */
|
|
128
146
|
dashed?: boolean;
|
|
129
147
|
}
|
|
130
148
|
interface LineChartProps {
|
|
@@ -157,8 +175,9 @@ interface LineChartProps {
|
|
|
157
175
|
"aria-label"?: string;
|
|
158
176
|
className?: string;
|
|
159
177
|
/**
|
|
160
|
-
* What the chart shows, in the page's words:
|
|
161
|
-
* from its data (
|
|
178
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
179
|
+
* drawing before the summary the chart works out from its data (the measure, the period, and the first series' main
|
|
180
|
+
* trend and its one extreme). The summary is for a screen reader, and shows above the table in the Table view.
|
|
162
181
|
*/
|
|
163
182
|
description?: string;
|
|
164
183
|
/** Targets or limits across the plot: a line at `value`, or a band from `value` to `to`, each named by its `label`. */
|
|
@@ -166,11 +185,17 @@ interface LineChartProps {
|
|
|
166
185
|
/**
|
|
167
186
|
* The first category whose values are a forecast (its `xAxisKey` value): from there a pale hatched band, named by
|
|
168
187
|
* `forecastLabel` ("Forecast" without one), runs to the chart's end, after a dashed line where it starts, and each line
|
|
169
|
-
* keeps its own colour and
|
|
188
|
+
* keeps its own colour and dash through it. A period not yet over is marked the same
|
|
170
189
|
* way, with the page's own words ("So far this month").
|
|
171
190
|
*/
|
|
172
191
|
forecastFrom?: string | number;
|
|
173
192
|
forecastLabel?: string;
|
|
193
|
+
/**
|
|
194
|
+
* A dash of its own on each line after the first, in the legend and the tooltip too, for print or a team that needs
|
|
195
|
+
* lines told apart without colour. Off by default: lines are solid, told apart by their colour and the key. A line the
|
|
196
|
+
* page marks `dashed`, and a line whose colour comes round again (a seventh), are dashed either way.
|
|
197
|
+
*/
|
|
198
|
+
patterns?: boolean;
|
|
174
199
|
}
|
|
175
200
|
declare const LineChart: react.ForwardRefExoticComponent<LineChartProps & react.RefAttributes<HTMLDivElement>>;
|
|
176
201
|
|
|
@@ -209,8 +234,10 @@ interface AreaChartProps {
|
|
|
209
234
|
"aria-label"?: string;
|
|
210
235
|
className?: string;
|
|
211
236
|
/**
|
|
212
|
-
* What the chart shows, in the page's words:
|
|
213
|
-
* from its data (
|
|
237
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
238
|
+
* drawing before the summary the chart works out from its data (the measure, the period, and the main trend, of the
|
|
239
|
+
* first series or of the stack's total, with its one extreme). The summary is for a screen reader, and shows above the
|
|
240
|
+
* table in the Table view.
|
|
214
241
|
*/
|
|
215
242
|
description?: string;
|
|
216
243
|
/** Targets or limits across the plot: a line at `value`, or a band from `value` to `to`, each named by its `label`. */
|
|
@@ -218,11 +245,17 @@ interface AreaChartProps {
|
|
|
218
245
|
/**
|
|
219
246
|
* The first category whose values are a forecast (its `xAxisKey` value): from there a pale hatched band, named by
|
|
220
247
|
* `forecastLabel` ("Forecast" without one), runs to the chart's end, after a dashed line where it starts, and each area
|
|
221
|
-
* keeps its own colour and
|
|
248
|
+
* keeps its own colour and outline through it. A period not yet over is marked the same
|
|
222
249
|
* way, with the page's own words ("So far this month").
|
|
223
250
|
*/
|
|
224
251
|
forecastFrom?: string | number;
|
|
225
252
|
forecastLabel?: string;
|
|
253
|
+
/**
|
|
254
|
+
* A dash of its own on the outline of each area after the first, in the legend and the tooltip too, for print or a
|
|
255
|
+
* team that needs areas told apart without colour. Off by default: outlines are solid, the areas told apart by their
|
|
256
|
+
* colour and the key. An area whose colour comes round again (a seventh) is dashed either way.
|
|
257
|
+
*/
|
|
258
|
+
patterns?: boolean;
|
|
226
259
|
}
|
|
227
260
|
declare const AreaChart: react.ForwardRefExoticComponent<AreaChartProps & react.RefAttributes<HTMLDivElement>>;
|
|
228
261
|
|
|
@@ -242,10 +275,17 @@ interface PieChartProps {
|
|
|
242
275
|
"aria-label"?: string;
|
|
243
276
|
className?: string;
|
|
244
277
|
/**
|
|
245
|
-
* What the chart shows, in the page's words:
|
|
246
|
-
* from its parts (
|
|
278
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
279
|
+
* drawing before the summary the chart works out from its parts (how many, and the largest with its share). The
|
|
280
|
+
* summary is for a screen reader, and shows above the table in the Table view.
|
|
247
281
|
*/
|
|
248
282
|
description?: string;
|
|
283
|
+
/**
|
|
284
|
+
* A pattern over the colour of each slice after the first, in the legend and the tooltip too, for print or a team that
|
|
285
|
+
* needs slices told apart without colour. Off by default: slices are told apart by their colour and the key, with a
|
|
286
|
+
* gap in the card's colour between them. A slice whose colour comes round again (a seventh) has its pattern either way.
|
|
287
|
+
*/
|
|
288
|
+
patterns?: boolean;
|
|
249
289
|
}
|
|
250
290
|
declare const PieChart: react.ForwardRefExoticComponent<PieChartProps & react.RefAttributes<HTMLDivElement>>;
|
|
251
291
|
|
|
@@ -303,8 +343,9 @@ interface CompositeChartProps {
|
|
|
303
343
|
"aria-label"?: string;
|
|
304
344
|
className?: string;
|
|
305
345
|
/**
|
|
306
|
-
* What the chart shows, in the page's words:
|
|
307
|
-
* from its data,
|
|
346
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
347
|
+
* drawing before the summary the chart works out from its data (the measure, the period and the first series' main
|
|
348
|
+
* trend). The summary is for a screen reader, and shows above the table in the Table view.
|
|
308
349
|
*/
|
|
309
350
|
description?: string;
|
|
310
351
|
/** Targets or limits on the bars' axis: a line at `value`, or a band from `value` to `to`, each named by its `label`. */
|
|
@@ -312,10 +353,17 @@ interface CompositeChartProps {
|
|
|
312
353
|
/**
|
|
313
354
|
* The first category whose values are a forecast (its `xAxisKey` value): from there each bar draws fainter in a dashed
|
|
314
355
|
* outline of its own colour, in a pale hatched band named by `forecastLabel` ("Forecast" without one) that runs to the
|
|
315
|
-
* chart's end, after a dashed line where it starts; the lines keep their own colour and
|
|
356
|
+
* chart's end, after a dashed line where it starts; the lines keep their own colour and dash through it.
|
|
316
357
|
*/
|
|
317
358
|
forecastFrom?: string | number;
|
|
318
359
|
forecastLabel?: string;
|
|
360
|
+
/**
|
|
361
|
+
* A pattern over the colour of each bar series after the first, and a dash on each line after the first, in the legend
|
|
362
|
+
* and the tooltip too, for print or a team that needs series told apart without colour. Off by default: series are
|
|
363
|
+
* told apart by their colour and the key, and bars from lines by their form. A line the page marks `dashed`, and a
|
|
364
|
+
* series whose colour comes round again (a seventh), keep their mark either way.
|
|
365
|
+
*/
|
|
366
|
+
patterns?: boolean;
|
|
319
367
|
}
|
|
320
368
|
declare const CompositeChart: react.ForwardRefExoticComponent<CompositeChartProps & react.RefAttributes<HTMLDivElement>>;
|
|
321
369
|
|
|
@@ -348,8 +396,9 @@ interface ScatterChartProps {
|
|
|
348
396
|
"aria-label"?: string;
|
|
349
397
|
className?: string;
|
|
350
398
|
/**
|
|
351
|
-
* What the chart shows, in the page's words:
|
|
352
|
-
* from its points (
|
|
399
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
400
|
+
* drawing before the summary the chart works out from its points (what's plotted against what, and how many points).
|
|
401
|
+
* The summary is for a screen reader, and shows above the table in the Table view.
|
|
353
402
|
*/
|
|
354
403
|
description?: string;
|
|
355
404
|
}
|
|
@@ -375,10 +424,17 @@ interface RadarChartProps {
|
|
|
375
424
|
"aria-label"?: string;
|
|
376
425
|
className?: string;
|
|
377
426
|
/**
|
|
378
|
-
* What the chart shows, in the page's words:
|
|
379
|
-
* from its data (
|
|
427
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
428
|
+
* drawing before the summary the chart works out from its data (the measure, how many categories, and the first
|
|
429
|
+
* series' highest and lowest). The summary is for a screen reader, and shows above the table in the Table view.
|
|
380
430
|
*/
|
|
381
431
|
description?: string;
|
|
432
|
+
/**
|
|
433
|
+
* A dash of its own on the outline of each shape after the first, in the legend and the tooltip too, for print or a
|
|
434
|
+
* team that needs shapes told apart without colour. Off by default: outlines are solid, the shapes told apart by their
|
|
435
|
+
* colour and the key. A shape whose colour comes round again (a seventh) is dashed either way.
|
|
436
|
+
*/
|
|
437
|
+
patterns?: boolean;
|
|
382
438
|
}
|
|
383
439
|
declare const RadarChart: react.ForwardRefExoticComponent<RadarChartProps & react.RefAttributes<HTMLDivElement>>;
|
|
384
440
|
|
|
@@ -400,10 +456,17 @@ interface RadialBarChartProps {
|
|
|
400
456
|
"aria-label"?: string;
|
|
401
457
|
className?: string;
|
|
402
458
|
/**
|
|
403
|
-
* What the chart shows, in the page's words:
|
|
404
|
-
* from its data,
|
|
459
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
460
|
+
* drawing before the summary the chart works out from its data (how many bars, the highest and the lowest). The
|
|
461
|
+
* summary is for a screen reader, and shows above the table in the Table view.
|
|
405
462
|
*/
|
|
406
463
|
description?: string;
|
|
464
|
+
/**
|
|
465
|
+
* A pattern over the colour of each bar after the first, in the legend and the tooltip too, for print or a team that
|
|
466
|
+
* needs bars told apart without colour. Off by default: bars are told apart by their colour and the key. A bar whose
|
|
467
|
+
* colour comes round again (a seventh) has its pattern either way.
|
|
468
|
+
*/
|
|
469
|
+
patterns?: boolean;
|
|
407
470
|
}
|
|
408
471
|
declare const RadialBarChart: react.ForwardRefExoticComponent<RadialBarChartProps & react.RefAttributes<HTMLDivElement>>;
|
|
409
472
|
|
|
@@ -423,8 +486,9 @@ interface FunnelChartProps {
|
|
|
423
486
|
"aria-label"?: string;
|
|
424
487
|
className?: string;
|
|
425
488
|
/**
|
|
426
|
-
* What the chart shows, in the page's words:
|
|
427
|
-
* from its data,
|
|
489
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
490
|
+
* drawing before the summary the chart works out from its data (its stages, from the first to the last, and the share
|
|
491
|
+
* of the first that reaches the last). The summary is for a screen reader, and shows above the table in the Table view.
|
|
428
492
|
*/
|
|
429
493
|
description?: string;
|
|
430
494
|
}
|
|
@@ -445,8 +509,9 @@ interface TreemapChartProps {
|
|
|
445
509
|
"aria-label"?: string;
|
|
446
510
|
className?: string;
|
|
447
511
|
/**
|
|
448
|
-
* What the chart shows, in the page's words:
|
|
449
|
-
* from its data,
|
|
512
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
513
|
+
* drawing before the summary the chart works out from its data (how many tiles in how many groups, and the largest with
|
|
514
|
+
* its share). The summary is for a screen reader, and shows above the table in the Table view.
|
|
450
515
|
*/
|
|
451
516
|
description?: string;
|
|
452
517
|
}
|
|
@@ -470,8 +535,9 @@ interface SankeyChartProps {
|
|
|
470
535
|
"aria-label"?: string;
|
|
471
536
|
className?: string;
|
|
472
537
|
/**
|
|
473
|
-
* What the chart shows, in the page's words:
|
|
474
|
-
* from its data,
|
|
538
|
+
* What the chart shows, in the page's own few words: the chart's subtitle, shown in both views, and read with the
|
|
539
|
+
* drawing before the summary the chart works out from its data (how many flows, and the largest). The summary is for a
|
|
540
|
+
* screen reader, and shows above the table in the Table view.
|
|
475
541
|
*/
|
|
476
542
|
description?: string;
|
|
477
543
|
}
|
|
@@ -499,7 +565,12 @@ interface ChartContainerProps {
|
|
|
499
565
|
* A preset (sm, md, lg) or a number of px sets this chart's height instead, and beats the chart's own.
|
|
500
566
|
*/
|
|
501
567
|
height?: "auto" | "sm" | "md" | "lg" | number;
|
|
502
|
-
/**
|
|
568
|
+
/**
|
|
569
|
+
* What the chart is, in fixed words ("Revenue and expenses by month"): it may name the record or period it's about
|
|
570
|
+
* ("Hours by person, Apollo project", "Revenue, 2026"), never a finding, and is never worked out from the data, since
|
|
571
|
+
* a finding changes as the data does (the owner's rule, 19 October; data_visualisation#3). A heading (h3) in the
|
|
572
|
+
* card-title style, never cut; the chart's graphic is named by it.
|
|
573
|
+
*/
|
|
503
574
|
title?: string;
|
|
504
575
|
loading?: boolean;
|
|
505
576
|
emptyState?: ReactNode;
|