@stealthscale/component-charts 0.2.2 → 0.2.3

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 (123) hide show
  1. package/dist/cyclonedx/bom.json +1 -1
  2. package/dist/index.js +1 -14710
  3. package/dist/pages/area-chart/area-chart.js +1151 -0
  4. package/dist/pages/area-chart/area-chart.props.js +3 -0
  5. package/dist/pages/bar-chart/bar-chart.js +990 -0
  6. package/dist/pages/bar-chart/bar-chart.props.js +3 -0
  7. package/dist/pages/box-plot/box-plot.js +1585 -0
  8. package/dist/pages/box-plot/box-plot.props.js +3 -0
  9. package/dist/pages/bubble-chart/bubble-chart.js +938 -0
  10. package/dist/pages/bubble-chart/bubble-chart.props.js +3 -0
  11. package/dist/pages/burndown-chart/burndown-chart.js +805 -0
  12. package/dist/pages/burndown-chart/burndown-chart.props.js +3 -0
  13. package/dist/pages/candlestick-chart/candlestick-chart.js +853 -0
  14. package/dist/pages/candlestick-chart/candlestick-chart.props.js +3 -0
  15. package/dist/pages/chart/chart.js +1190 -0
  16. package/dist/pages/chart/chart.props.js +3 -0
  17. package/dist/pages/chord-diagram/chord-diagram.js +891 -0
  18. package/dist/pages/chord-diagram/chord-diagram.props.js +3 -0
  19. package/dist/pages/combo-chart/combo-chart.js +873 -0
  20. package/dist/pages/combo-chart/combo-chart.props.js +3 -0
  21. package/dist/pages/distribution-chart/distribution-chart.js +1066 -0
  22. package/dist/pages/distribution-chart/distribution-chart.props.js +3 -0
  23. package/dist/pages/donut-chart/donut-chart.js +726 -0
  24. package/dist/pages/donut-chart/donut-chart.props.js +3 -0
  25. package/dist/pages/funnel-chart/funnel-chart.js +1094 -0
  26. package/dist/pages/funnel-chart/funnel-chart.props.js +3 -0
  27. package/dist/pages/gauge-chart/gauge-chart.js +767 -0
  28. package/dist/pages/gauge-chart/gauge-chart.props.js +3 -0
  29. package/dist/pages/heatmap/heatmap.js +1967 -0
  30. package/dist/pages/heatmap/heatmap.props.js +3 -0
  31. package/dist/pages/histogram-chart/histogram-chart.js +768 -0
  32. package/dist/pages/histogram-chart/histogram-chart.props.js +3 -0
  33. package/dist/pages/horizontal-bar-chart/horizontal-bar-chart.js +701 -0
  34. package/dist/pages/horizontal-bar-chart/horizontal-bar-chart.props.js +3 -0
  35. package/dist/pages/line-chart/line-chart.js +1882 -0
  36. package/dist/pages/line-chart/line-chart.props.js +3 -0
  37. package/dist/pages/pages.json +393 -0
  38. package/dist/pages/pareto-chart/pareto-chart.js +669 -0
  39. package/dist/pages/pareto-chart/pareto-chart.props.js +3 -0
  40. package/dist/pages/percent-stacked-bar/percent-stacked-bar.js +662 -0
  41. package/dist/pages/percent-stacked-bar/percent-stacked-bar.props.js +3 -0
  42. package/dist/pages/pie-chart/pie-chart.js +1007 -0
  43. package/dist/pages/pie-chart/pie-chart.props.js +3 -0
  44. package/dist/pages/polar-area-chart/polar-area-chart.js +812 -0
  45. package/dist/pages/polar-area-chart/polar-area-chart.props.js +3 -0
  46. package/dist/pages/radar-chart/radar-chart.js +1101 -0
  47. package/dist/pages/radar-chart/radar-chart.props.js +3 -0
  48. package/dist/pages/radial-bar-chart/radial-bar-chart.js +766 -0
  49. package/dist/pages/radial-bar-chart/radial-bar-chart.props.js +3 -0
  50. package/dist/pages/range-chart/range-chart.js +914 -0
  51. package/dist/pages/range-chart/range-chart.props.js +3 -0
  52. package/dist/pages/regression-overlay/regression-overlay.js +494 -0
  53. package/dist/pages/regression-overlay/regression-overlay.props.js +3 -0
  54. package/dist/pages/sankey-chart/sankey-chart.js +700 -0
  55. package/dist/pages/sankey-chart/sankey-chart.props.js +3 -0
  56. package/dist/pages/scatter-plot/scatter-plot.js +1248 -0
  57. package/dist/pages/scatter-plot/scatter-plot.props.js +3 -0
  58. package/dist/pages/sparkbar/sparkbar.js +629 -0
  59. package/dist/pages/sparkbar/sparkbar.props.js +3 -0
  60. package/dist/pages/sparkline/sparkline.js +960 -0
  61. package/dist/pages/sparkline/sparkline.props.js +3 -0
  62. package/dist/pages/spend-5xQ76WSj.js +185 -0
  63. package/dist/pages/stacked-area-chart/stacked-area-chart.js +912 -0
  64. package/dist/pages/stacked-area-chart/stacked-area-chart.props.js +3 -0
  65. package/dist/pages/stacked-bar-chart/stacked-bar-chart.js +722 -0
  66. package/dist/pages/stacked-bar-chart/stacked-bar-chart.props.js +3 -0
  67. package/dist/pages/step-line-chart/step-line-chart.js +573 -0
  68. package/dist/pages/step-line-chart/step-line-chart.props.js +3 -0
  69. package/dist/pages/stream-graph/stream-graph.js +1662 -0
  70. package/dist/pages/stream-graph/stream-graph.props.js +3 -0
  71. package/dist/pages/sunburst-chart/sunburst-chart.js +1051 -0
  72. package/dist/pages/sunburst-chart/sunburst-chart.props.js +3 -0
  73. package/dist/pages/timeline-chart/timeline-chart.js +1124 -0
  74. package/dist/pages/timeline-chart/timeline-chart.props.js +3 -0
  75. package/dist/pages/treemap-chart/treemap-chart.js +904 -0
  76. package/dist/pages/treemap-chart/treemap-chart.props.js +3 -0
  77. package/dist/pages/violin-plot/violin-plot.js +1303 -0
  78. package/dist/pages/violin-plot/violin-plot.props.js +3 -0
  79. package/dist/pages/visitors-oFFVcbIZ.js +248 -0
  80. package/dist/pages/waterfall-chart/waterfall-chart.js +1195 -0
  81. package/dist/pages/waterfall-chart/waterfall-chart.props.js +3 -0
  82. package/dist/shared-DVZJ2nST.js +14711 -0
  83. package/dist/theme.js +1 -1
  84. package/locales/en/specimen/area-chart.json +56 -0
  85. package/locales/en/specimen/bar-chart.json +56 -0
  86. package/locales/en/specimen/box-plot.json +65 -0
  87. package/locales/en/specimen/bubble-chart.json +47 -0
  88. package/locales/en/specimen/burndown-chart.json +46 -0
  89. package/locales/en/specimen/candlestick-chart.json +42 -0
  90. package/locales/en/specimen/chart.json +53 -0
  91. package/locales/en/specimen/chord-diagram.json +69 -0
  92. package/locales/en/specimen/combo-chart.json +41 -0
  93. package/locales/en/specimen/distribution-chart.json +47 -0
  94. package/locales/en/specimen/donut-chart.json +63 -0
  95. package/locales/en/specimen/funnel-chart.json +84 -0
  96. package/locales/en/specimen/gauge-chart.json +68 -0
  97. package/locales/en/specimen/heatmap.json +187 -0
  98. package/locales/en/specimen/histogram-chart.json +48 -0
  99. package/locales/en/specimen/horizontal-bar-chart.json +54 -0
  100. package/locales/en/specimen/line-chart.json +106 -0
  101. package/locales/en/specimen/pareto-chart.json +43 -0
  102. package/locales/en/specimen/percent-stacked-bar.json +37 -0
  103. package/locales/en/specimen/pie-chart.json +80 -0
  104. package/locales/en/specimen/polar-area-chart.json +90 -0
  105. package/locales/en/specimen/radar-chart.json +82 -0
  106. package/locales/en/specimen/radial-bar-chart.json +62 -0
  107. package/locales/en/specimen/range-chart.json +42 -0
  108. package/locales/en/specimen/regression-overlay.json +36 -0
  109. package/locales/en/specimen/sankey-chart.json +89 -0
  110. package/locales/en/specimen/scatter-plot.json +88 -0
  111. package/locales/en/specimen/sparkbar.json +51 -0
  112. package/locales/en/specimen/sparkline.json +70 -0
  113. package/locales/en/specimen/stacked-area-chart.json +44 -0
  114. package/locales/en/specimen/stacked-bar-chart.json +34 -0
  115. package/locales/en/specimen/step-line-chart.json +33 -0
  116. package/locales/en/specimen/stream-graph.json +54 -0
  117. package/locales/en/specimen/sunburst-chart.json +110 -0
  118. package/locales/en/specimen/timeline-chart.json +77 -0
  119. package/locales/en/specimen/treemap-chart.json +107 -0
  120. package/locales/en/specimen/violin-plot.json +54 -0
  121. package/locales/en/specimen/waterfall-chart.json +71 -0
  122. package/package.json +8 -7
  123. /package/dist/{recipe-BbGw00ut.js → recipes-BbGw00ut.js} +0 -0
@@ -0,0 +1,84 @@
1
+ {
2
+ "about": "The stages one set passes through, each a trapezoid as wide as its count, above a table of each stage's count and its two rates. A funnel shows which step loses people, and a bar chart compares values that are not nested.",
3
+ "accounts": "Accounts",
4
+ "advert": {
5
+ "about": "valueOptions writes the counts in compact notation, on the stages and in the table. The counts span three orders of magnitude, so every stage after the first is a sliver and the table writes the rates the widths cannot show. A rate takes two significant digits, so the 3,900 sign-ups are 0.16% of the 2.4 million impressions, where a whole percent would write 0%.",
6
+ "caption": "3,900 sign-ups came from 2.4 million impressions of the advert.",
7
+ "label": "Advert funnel for the week",
8
+ "title": "Compact counts"
9
+ },
10
+ "checkout": {
11
+ "about": "A shop's checkout over a month, from visits to payments. Each stage's count is written on it, and the table under the plot writes each count's share of the stage before and of the first stage. biggestDrop returns the step that loses the most people, and the caption names it.",
12
+ "caption": "The biggest loss is before “{{stage}}”: {{lost, number}} people.",
13
+ "label": "Checkout funnel for September",
14
+ "title": "Checkout"
15
+ },
16
+ "hiring": {
17
+ "about": "A hiring pipeline in the teal palette. values false leaves the counts to the table.",
18
+ "caption": "12 of 1,280 applicants were hired, 0.94% of them.",
19
+ "label": "Hiring pipeline for the quarter",
20
+ "title": "Palette"
21
+ },
22
+ "narrow": {
23
+ "about": "The checkout in a room 20rem wide, the column of a phone. The table scrolls sideways where its columns do not fit, and its scroll area is then a region in the tab order, named by stepsLabel.",
24
+ "title": "Narrow room"
25
+ },
26
+ "overall": "Of first",
27
+ "people": "People",
28
+ "quiet": {
29
+ "about": "A funnel without stages renders the empty state in the plot's place, at the plot's ratio, and no table.",
30
+ "caption": "The shop's checkout this week.",
31
+ "empty": "No sessions in this period.",
32
+ "title": "Empty"
33
+ },
34
+ "rates": {
35
+ "about": "defaultIndex opens the tooltip at the last stage when the chart first renders. The tooltip writes the stage's count and both rates: 73% of the stage before and 12% of every visit.",
36
+ "caption": "73% of the people who start checkout pay, 12% of every visit.",
37
+ "title": "Tooltip"
38
+ },
39
+ "replay": {
40
+ "about": "animate grows each stage from its middle when the chart mounts, and Replay mounts the chart again. The counts are written once the stages are in place. Under reduced motion recharts renders the stages at once.",
41
+ "caption": "The shop's checkout over September.",
42
+ "replay": "Replay",
43
+ "title": "Animation"
44
+ },
45
+ "shape": {
46
+ "about": "steps false leaves the table out, for a page where something else writes the rates. The counts are still written on the stages.",
47
+ "caption": "Nearly half of the people who add a product to a basket pay.",
48
+ "title": "Without the table"
49
+ },
50
+ "stage": "Stage",
51
+ "stages": {
52
+ "applied": "Applied",
53
+ "basket": "Added to basket",
54
+ "checkout": "Started checkout",
55
+ "clicks": "Clicked",
56
+ "customers": "Became customers",
57
+ "hired": "Hired",
58
+ "impressions": "Saw the advert",
59
+ "interviewed": "Interviewed",
60
+ "offered": "Offered",
61
+ "paid": "Paid",
62
+ "screened": "Screened",
63
+ "signups": "Signed up",
64
+ "trials": "Started a trial",
65
+ "viewed": "Viewed a product",
66
+ "visited": "Visited the shop",
67
+ "visits": "Visited the site"
68
+ },
69
+ "step": "Of previous",
70
+ "steps": "Conversion by stage",
71
+ "title": "Funnel chart",
72
+ "trial": {
73
+ "about": "Two stages, a trial's conversion to a paying account: the first stage narrows to the second, and the second is a rectangle.",
74
+ "caption": "13% of trials became paying accounts.",
75
+ "label": "Trial conversion for September",
76
+ "title": "Two stages"
77
+ },
78
+ "widening": {
79
+ "about": "The checkout with its fourth stage counted from every month's orders, so more people start checkout than added a product to a basket. The chart renders the stages as they are, the table writes 150% for the stage that widens, and funnelWidenings returns it for the caption.",
80
+ "caption": "“{{stages}}” counts more people than the stage before it, so these stages are not nested.",
81
+ "label": "Checkout funnel from two queries",
82
+ "title": "A funnel that widens"
83
+ }
84
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "about": "One value on a dial from a range's minimum to its maximum, with zones that name what the value means. A gauge shows where one value is in a range, and a bar chart compares values.",
3
+ "critical": {
4
+ "about": "Past the error budget the reading takes the error palette's color, and the name under the figure names its zone, so no one has to match a color.",
5
+ "caption": "p99 latency is 1,080ms, past the 900ms error budget.",
6
+ "title": "Critical zone"
7
+ },
8
+ "disk": {
9
+ "about": "A share as a percentage: max 1 ends the dial at the whole volume, and valueOptions writes the figure and the range's ends in percent.",
10
+ "caption": "The primary volume is 86% full, in the filling zone.",
11
+ "label": "Disk use of the primary volume",
12
+ "title": "Percentage"
13
+ },
14
+ "latency": {
15
+ "about": "A checkout API's p99 latency against its error budget. The reading fills the dial from 0 in its zone's color, the figure and the zone's name are written in the middle, and the zones form the thin ring outside.",
16
+ "caption": "p99 latency is 740ms, inside the 900ms error budget.",
17
+ "label": "Checkout p99 latency",
18
+ "title": "Latency"
19
+ },
20
+ "narrow": {
21
+ "about": "The latency in a room 20rem wide, the column of a phone.",
22
+ "title": "Narrow room"
23
+ },
24
+ "overrun": {
25
+ "about": "A value past max fills the dial to its end, and the figure writes the value itself, 4,000ms, where the dial ends at 1,200ms.",
26
+ "caption": "p99 latency is 4,000ms, more than three times the dial's 1,200ms.",
27
+ "title": "Past max"
28
+ },
29
+ "quiet": {
30
+ "about": "A value that is not a finite number renders the empty state in the plot's place, at the plot's ratio.",
31
+ "caption": "Checkout p99 latency over the last five minutes.",
32
+ "empty": "No reading in the last five minutes.",
33
+ "title": "Empty"
34
+ },
35
+ "replay": {
36
+ "about": "animate sweeps the reading and the zones in from the start of the dial when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the dial at once.",
37
+ "replay": "Replay",
38
+ "title": "Animation"
39
+ },
40
+ "short": {
41
+ "about": "Zones that end before max leave the rest of the range as the track, so the dial shows which part of its range the zones name.",
42
+ "caption": "No zone covers latency past 900ms, where 1,050ms is.",
43
+ "title": "Zones that end early"
44
+ },
45
+ "throughput": {
46
+ "about": "Without zones the reading takes the theme's first series color, and centerLabel writes the unit under the figure.",
47
+ "caption": "The service handles 3,120 requests a second of the 5,000 it was tested to.",
48
+ "label": "Checkout throughput",
49
+ "title": "Without zones",
50
+ "unit": "requests a second"
51
+ },
52
+ "tiles": {
53
+ "about": "Three gauges in a grid of three columns, each captioned by its resource. limits false leaves the range's ends out at this size.",
54
+ "cpu": "CPU",
55
+ "disk": "Disk",
56
+ "memory": "Memory",
57
+ "title": "Tiles"
58
+ },
59
+ "title": "Gauge chart",
60
+ "zones": {
61
+ "critical": "Critical",
62
+ "filling": "Filling",
63
+ "fine": "Fine",
64
+ "full": "Full",
65
+ "healthy": "Healthy",
66
+ "watch": "Watch"
67
+ }
68
+ }
@@ -0,0 +1,187 @@
1
+ {
2
+ "about": "A value for every pair of a row and a column, such as each hour of each weekday, as a grid of cells colored from their values. A reader finds a dark block faster than the largest number in a table, and reads the exact value in the readout or printed in the cell. A missing value is a cell without a fill and with a dashed edge, apart from the faintest value, which keeps a tint. The grid is one tab stop: the arrow keys walk its cells, Home and End go to a row's ends, and a screen reader reads each cell with its row and column headings. calendarCells lays daily readings out as a calendar, and cohortCells lays retention out by cohort.",
3
+ "authorisations": {
4
+ "about": "A week of card authorisations per hour. The cells run from 12% of the first series color at the fewest to the whole color at the most, and the key under the grid writes both ends. The caption names the busiest hour, found in the readings.",
5
+ "caption": "{{day}} at {{hour}}:00 is the busiest hour, with {{count, number}} authorisations.",
6
+ "corner": "Weekday",
7
+ "label": "Card authorisations per hour, by weekday",
8
+ "title": "Authorisations per hour",
9
+ "value": "Authorisations"
10
+ },
11
+ "attendance": {
12
+ "about": "A teaching year's attendance per school day, 36 weeks at size sm in a room narrower than the grid. The grid scrolls sideways with the weekdays sticky at its start, and the dip through the winter term reads as a shape.",
13
+ "caption": "Attendance dips through the winter term, to 82% in weeks 15 and 16.",
14
+ "corner": "Day",
15
+ "label": "Share of pupils present per school day, by teaching week",
16
+ "title": "Dense",
17
+ "value": "Present",
18
+ "week": "W{{week}}"
19
+ },
20
+ "bookings": {
21
+ "about": "onSelect receives the calendar's own cell, with its date as the readings write it and its label, the date in the locale's words. The line under the grid writes the picked night. The squares are size lg, 24px, the pointer target WCAG 2.5.8 asks for.",
22
+ "caption": "The conference filled all 84 rooms from 12 to 14 May.",
23
+ "label": "Rooms booked per night, April to June 2026",
24
+ "none": "Press a night to pick it.",
25
+ "picked": "Picked: {{date}}, {{count, number}} of 84 rooms booked.",
26
+ "title": "Picking a day",
27
+ "value": "Rooms booked"
28
+ },
29
+ "builds": {
30
+ "about": "values prints each cell's value in black or white. The browser picks the one that contrasts more with the cell, at least 4.5:1 on every cell.",
31
+ "caption": "{{pipeline}} builds for {{minutes, number}} minutes on Friday, when everyone merges.",
32
+ "corner": "Pipeline",
33
+ "label": "Build minutes per pipeline, by weekday",
34
+ "title": "Values in the cells",
35
+ "value": "Build minutes"
36
+ },
37
+ "clinic": {
38
+ "about": "measure=\"count\" writes how many patients remained in each cell while the fill is the rate, so February's dark row reads as the seven patients it is.",
39
+ "caption": "February's row is the darkest, and it is 7 patients: 6 of them still came in May.",
40
+ "cohort": "{{label}} · {{size, number}}",
41
+ "corner": "Intake",
42
+ "label": "Patients still in the programme, by intake month and month since intake",
43
+ "period": "M{{period}}",
44
+ "title": "Counts in the cells",
45
+ "value": "Still in the programme"
46
+ },
47
+ "deploys": {
48
+ "about": "calendarCells lays a year of deploys out as a calendar: a square per day, a row per weekday from the locale's first day, and the weeks under their months. The window runs from October to September, so the first and last weeks have empty places. The fortnight in February is dashed: the collector was offline, which is not a quiet fortnight, while the weekends beside it are measured zeros.",
49
+ "caption": "The release week of 9 March was the busiest, with {{count, number}} deploys.",
50
+ "label": "Deploys per day, October 2025 to September 2026",
51
+ "missing": "Not recorded",
52
+ "title": "Calendar",
53
+ "value": "Deploys"
54
+ },
55
+ "days": {
56
+ "fri": "Fri",
57
+ "mon": "Mon",
58
+ "sat": "Sat",
59
+ "sun": "Sun",
60
+ "thu": "Thu",
61
+ "tue": "Tue",
62
+ "wed": "Wed"
63
+ },
64
+ "depots": {
65
+ "about": "Two weeks of parcels scanned per depot, one heatmap each. heatmapDomain over both weeks' readings gives both grids one domain, so last week's cells are paler than this week's and both keys end at 1,940. On their own domains the two grids would look alike.",
66
+ "corner": "Depot",
67
+ "label": "Parcels scanned per depot and hour, {{week}}",
68
+ "last": "Last week",
69
+ "this": "This week",
70
+ "title": "One domain for two grids",
71
+ "value": "Parcels",
72
+ "weeks": {
73
+ "last": "last week",
74
+ "this": "this week"
75
+ }
76
+ },
77
+ "incidents": {
78
+ "about": "onSelect receives the reading of the cell a press, Enter or Space selects, and the line under the grid writes it. The arrow keys move between the cells first.",
79
+ "caption": "checkout-api failed at noon: 512 responses were 5xx.",
80
+ "corner": "Service",
81
+ "label": "5xx responses per service, by hour",
82
+ "none": "Press a cell to pick an hour.",
83
+ "picked": "Picked: {{service}} at {{hour}}:00, {{count, number}} responses.",
84
+ "title": "Picking a cell",
85
+ "value": "5xx responses"
86
+ },
87
+ "names": {
88
+ "antwerpen": "Antwerpen",
89
+ "cardiology": "Cardiology",
90
+ "customer-success": "Customer success",
91
+ "data-platform": "Data platform",
92
+ "design": "Design",
93
+ "duisburg": "Duisburg",
94
+ "neurology": "Neurology",
95
+ "oncology": "Oncology",
96
+ "paediatrics": "Paediatrics",
97
+ "payments": "Payments",
98
+ "respiratory": "Respiratory",
99
+ "rotterdam": "Rotterdam",
100
+ "security": "Security"
101
+ },
102
+ "narrow": {
103
+ "about": "The authorisations in a room 20rem wide, the column of a phone. The grid scrolls sideways inside its own box, the weekdays remain at its start, and the page does not move.",
104
+ "title": "Narrow room"
105
+ },
106
+ "pages": {
107
+ "about": "weekStartsOn starts the weeks on a stated day, here Monday for a team that works Monday to Friday, so the weekend rows are at the bottom. Without it the weeks start on the locale's first day: Sunday in American English, Monday in German.",
108
+ "caption": "The incident on 17 February paged the team {{count, number}} times.",
109
+ "label": "On-call pages per day, 5 January to 5 April 2026",
110
+ "title": "Week start",
111
+ "value": "Pages"
112
+ },
113
+ "palette": {
114
+ "about": "color takes the scale's color: a hue, a semantic palette or a series color. Here the authorisations run from 12% to the whole of the purple hue's chart color.",
115
+ "title": "Palette"
116
+ },
117
+ "quarter": {
118
+ "label": "Deploys per day, January to March 2026"
119
+ },
120
+ "quarters": {
121
+ "q1": "Q1",
122
+ "q2": "Q2",
123
+ "q3": "Q3",
124
+ "q4": "Q4"
125
+ },
126
+ "quiet": {
127
+ "about": "A heatmap without a row or a column renders the empty state in the grid's place.",
128
+ "caption": "Claims assigned per adjuster, by week.",
129
+ "empty": "No claims were assigned in this period.",
130
+ "label": "Claims assigned per adjuster, by week",
131
+ "title": "Empty"
132
+ },
133
+ "readout": {
134
+ "about": "defaultIndex opens the readout at the busiest hour when the heatmap first renders, and lights that hour's weekday and column headings. The pointer and the arrow keys move it, and Escape hides it.",
135
+ "title": "Readout"
136
+ },
137
+ "shape": {
138
+ "about": "shape sets the cells' form: a block, which widens to a printed value, or a square with a 2px corner, which doesn't print its value. Beside squares the rows are as far apart as the columns. A square keeps its side while its column's heading fits it, so a calendar hides its week headings and names its months above them.",
139
+ "title": "Shapes"
140
+ },
141
+ "signups": {
142
+ "about": "cohortCells lays retention out by cohort: a row per signup month with its size, a column per month since signup, and each cell filled from the share that remained. A cohort's row ends in empty places after its last count, and March's second month, which the export lacked, is dashed. average adds a row of the rates weighted by each cohort's size.",
143
+ "average": "All cohorts",
144
+ "caption": "Cohorts from May on kept 59 to 63% in their first month, against 49 to 54% before the new onboarding.",
145
+ "cohort": "{{label}} · {{size, number}}",
146
+ "corner": "Signed up",
147
+ "label": "Share of customers still active, by signup month and month since signup",
148
+ "missing": "Not exported",
149
+ "period": "M{{period}}",
150
+ "title": "Cohorts",
151
+ "value": "Still active"
152
+ },
153
+ "size": {
154
+ "about": "size sets the cells: a block 24, 32 or 44px tall and at least as wide, a square 10, 14 or 24px wide, with the headings and values one text size smaller.",
155
+ "title": "Sizes"
156
+ },
157
+ "sizes": {
158
+ "corner": "Service",
159
+ "label": "5xx responses per service, by hour",
160
+ "value": "5xx responses"
161
+ },
162
+ "variance": {
163
+ "about": "scale=\"diverging\" colors a deviation from the midpoint, orange under it and blue over it, with one reach on both sides: security's 11 over plan sets the reach, so payments' 9 under is a step short of the whole orange. valueOptions writes the sign.",
164
+ "caption": "Payments ran 9 under plan in Q2, and security ended the year 11 over.",
165
+ "corner": "Team",
166
+ "label": "Headcount against plan per team, by quarter",
167
+ "title": "Diverging scale",
168
+ "value": "Against plan"
169
+ },
170
+ "wards": {
171
+ "about": "The oncology feed was down all week, and nobody counted paediatrics on Wednesday. Those six cells have no fill and a dashed edge, and read \"Not counted\", while the fewest beds counted, 8, keep a tint.",
172
+ "caption": "Six readings are missing: oncology's whole week and paediatrics on Wednesday.",
173
+ "corner": "Ward",
174
+ "days": {
175
+ "fri": "Fri 18",
176
+ "mon": "Mon 14",
177
+ "thu": "Thu 17",
178
+ "tue": "Tue 15",
179
+ "wed": "Wed 16"
180
+ },
181
+ "label": "Beds occupied per ward, by day",
182
+ "missing": "Not counted",
183
+ "title": "Missing readings",
184
+ "value": "Beds occupied"
185
+ },
186
+ "title": "Heatmap"
187
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "about": "The shape of one distribution: its values counted into bins that touch along a numeric axis. The ticks are the bin edges, and the tooltip heads each bar with its range.",
3
+ "clipped": {
4
+ "about": "domain bins a range from its lower edge and leaves out the values outside it, so the bins narrow to the body of the distribution. Here the bins are 5ms wide.",
5
+ "caption": "In bins 5ms wide, the peak is at 30 to 40ms. The 5 requests over 150ms are left out.",
6
+ "title": "Clipped range"
7
+ },
8
+ "coarse": {
9
+ "about": "bins aims for a number of bins, and the width snaps to a round number. Six bins of 100ms put 131 of 140 requests in the first bin, and the shape of the body is gone.",
10
+ "caption": "In bins 100ms wide, 131 of 140 requests fall in the first bin.",
11
+ "title": "Fewer bins"
12
+ },
13
+ "latency": {
14
+ "about": "The response times of 140 requests in bins 20ms wide, Freedman–Diaconis' count snapped to a round width. The values are raw numbers, not rows, and valueOptions writes the edges in milliseconds.",
15
+ "caption": "107 of 140 requests finish under 60ms, and a slow tail runs to 460ms.",
16
+ "label": "Response times of the checkout API",
17
+ "title": "Response times"
18
+ },
19
+ "narrow": {
20
+ "about": "The response times in a room 20rem wide, the column of a phone. The labels keep their even step of 100ms.",
21
+ "title": "Narrow room"
22
+ },
23
+ "orders": {
24
+ "about": "Sixty order values in euros, the bars in the teal palette's chart color. countLabel names the counts in the tooltip.",
25
+ "caption": "Two in three orders come to less than €60, and six pass €100.",
26
+ "label": "Order values this week",
27
+ "orders": "Orders",
28
+ "title": "Order values"
29
+ },
30
+ "peak": {
31
+ "about": "defaultIndex opens the tooltip at a bin when the chart first renders. The heading is the bin's range and the row its count.",
32
+ "caption": "54 of 140 requests take 20 to 40ms, the tallest bin.",
33
+ "title": "Tooltip"
34
+ },
35
+ "quiet": {
36
+ "about": "A histogram without a finite value renders the empty state in the plot's place, at the plot's ratio.",
37
+ "caption": "Response times of the checkout API this hour.",
38
+ "empty": "No requests this hour.",
39
+ "title": "Empty"
40
+ },
41
+ "replay": {
42
+ "about": "animate grows each bar from the axis when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the bars at once.",
43
+ "replay": "Replay",
44
+ "title": "Animation"
45
+ },
46
+ "requests": "Requests",
47
+ "title": "Histogram"
48
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "about": "Bars on their side with the categories down the start edge, for long names or a ranking. The chart renders the rows in the order it is given.",
3
+ "bullet": {
4
+ "about": "Plan attainment per team as bullet graphs. zones fills each row with the axis' zones, tinted, behind a measure 42% of the row, and a series with target marks each team's plan with a tick. valueDomain fixes the scale at 0 to 120%, which every row shares. The tooltip writes the value, the plan and the zone, and the key under the plot names the tick and the zones.",
5
+ "atlas": "Atlas",
6
+ "behind": "Behind",
7
+ "borealis": "Borealis",
8
+ "caption": "Two of six teams passed their plan, and Borealis is behind at 64%.",
9
+ "close": "Close",
10
+ "cygnus": "Cygnus",
11
+ "done": "Attainment",
12
+ "draco": "Draco",
13
+ "eridanus": "Eridanus",
14
+ "fornax": "Fornax",
15
+ "label": "Plan attainment per team",
16
+ "on": "On plan",
17
+ "target": "Plan",
18
+ "title": "Bullet graph"
19
+ },
20
+ "countries": {
21
+ "about": "Sessions per country, sorted from the most, in the indigo palette. The category axis measures its widest name.",
22
+ "br": "Brazil",
23
+ "caption": "The United States brought in 41% of the 118K sessions.",
24
+ "de": "Germany",
25
+ "gb": "United Kingdom",
26
+ "in": "India",
27
+ "label": "Sessions per country",
28
+ "nl": "Netherlands",
29
+ "sessions": "Sessions",
30
+ "title": "Ranking",
31
+ "us": "United States"
32
+ },
33
+ "leader": {
34
+ "about": "defaultIndex opens the tooltip at the first row when the chart first renders. The pointer or the arrow keys move it from there.",
35
+ "caption": "The United States brought 48.2K sessions, more than the United Kingdom and Germany together.",
36
+ "title": "Tooltip"
37
+ },
38
+ "narrow": {
39
+ "about": "The ranking in a room 20rem wide, the column of a phone. The category axis names every bar and measures its widest name, United Kingdom.",
40
+ "title": "Narrow room"
41
+ },
42
+ "replay": {
43
+ "about": "animate grows each bar out from the axis when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the bars at once.",
44
+ "replay": "Replay",
45
+ "title": "Animation"
46
+ },
47
+ "title": "Horizontal bar chart",
48
+ "unvisited": {
49
+ "about": "A week without sessions renders the empty state in the plot's place.",
50
+ "caption": "Sessions per country this week.",
51
+ "empty": "No sessions from any country this week.",
52
+ "title": "Empty"
53
+ }
54
+ }
@@ -0,0 +1,106 @@
1
+ {
2
+ "about": "A line per declared series over a category or time axis, inside the chart's figure with its tooltip, legend and caption. Lines suit a rate or a level that exists between its points.",
3
+ "anomalies": {
4
+ "about": "An annotation with a value rings the point at its category and value, here in the error and warning palettes. The ring has no fill, so the series' own point shows through it, and its words are written above it.",
5
+ "caption": "Orders fell to 312 on September 18, when the card processor was down.",
6
+ "duplicates": "Duplicate webhooks",
7
+ "label": "Orders per day",
8
+ "orders": "Orders",
9
+ "outage": "Processor outage",
10
+ "title": "Flagged points"
11
+ },
12
+ "budget": {
13
+ "about": "A ReferenceLine child marks a constant, here the daily budget, and Chart.colorOf gives it the error palette's chart color. The recipe sets the line's label in the chart's muted ink.",
14
+ "budget": "Budget",
15
+ "caption": "Spend passed the €1,200 daily budget on Tuesday and Wednesday.",
16
+ "label": "Cloud spend per day",
17
+ "spend": "Spend",
18
+ "title": "Reference line"
19
+ },
20
+ "comparison": {
21
+ "about": "alignPeriods lines last week up with this week by position, Monday against Monday, and a series with previousOf renders last week dashed in the neutral palette. The tooltip writes the change from last week after this week's value.",
22
+ "caption": "Revenue this week was €141,400, 6.1% more than last week's €133,300.",
23
+ "current": "This week",
24
+ "previous": "Last week",
25
+ "title": "Comparison",
26
+ "weeks": "Weeks"
27
+ },
28
+ "controlled": {
29
+ "about": "hiddenKeys and onHiddenKeysChange keep the hidden series in the caller's state, which starts with p50 hidden. The status line reads that state, and Show all empties it.",
30
+ "all": "Show all",
31
+ "shown_one": "{{count}} of 3 series shown",
32
+ "shown_other": "{{count}} of 3 series shown",
33
+ "title": "Controlled legend"
34
+ },
35
+ "guide": {
36
+ "about": "Chart.Crosshair, a child of the chart, runs a dashed guide across the plot at the active row's p95 value. recharts' cursor marks the row, and the guide moves with the tooltip under the pointer and the arrow keys.",
37
+ "title": "Crosshair"
38
+ },
39
+ "latency": {
40
+ "about": "Two percentiles and a dashed target over a day's hours, with straight lines between the points and the legend below.",
41
+ "caption": "p95 latency passed the 300ms target between 12:00 and 14:00.",
42
+ "label": "Latency per hour",
43
+ "p50": "p50 latency",
44
+ "p95": "p95 latency",
45
+ "target": "Target",
46
+ "title": "Several series"
47
+ },
48
+ "narrow": {
49
+ "about": "The revenue chart in a room 20rem wide, the column of a phone. All seven weekday ticks fit, and the value axis measures its widest tick, €28,000.",
50
+ "title": "Narrow room"
51
+ },
52
+ "peak": {
53
+ "about": "defaultIndex opens the tooltip at a row when the chart first renders, here the hour of the peak. The pointer or the arrow keys move it from there.",
54
+ "caption": "p95 latency peaked at 390ms at 13:00.",
55
+ "title": "Tooltip"
56
+ },
57
+ "quiet": {
58
+ "about": "A range without rows renders the empty state in the plot's place, at the plot's ratio.",
59
+ "caption": "Errors per day over the last 7 days.",
60
+ "empty": "No errors in the last 7 days.",
61
+ "errors": "Errors",
62
+ "label": "Errors per day",
63
+ "title": "Empty"
64
+ },
65
+ "releases": {
66
+ "about": "annotations marks the chart's categories. An annotation with at alone is a moment, a dashed rule across the plot, and one with until is a period, a wash from at to until. The words are written at the plot's top, and the tooltip lists the annotations at its row after the series.",
67
+ "caption": "p95 latency rose above 360ms after release 4.12 and fell to 214ms after release 4.13.",
68
+ "first": "Release 4.12",
69
+ "freeze": "Change freeze",
70
+ "label": "p95 latency per day",
71
+ "p95": "p95 latency",
72
+ "second": "Release 4.13",
73
+ "title": "Annotations"
74
+ },
75
+ "replay": {
76
+ "about": "animate reveals each line from the start of the axis to its end when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the lines at once.",
77
+ "replay": "Replay",
78
+ "title": "Animation"
79
+ },
80
+ "retention": {
81
+ "about": "retentionSeries lays weekly trial cohorts out as lines: a line per cohort in one color, each newer cohort mixed further towards the ink, and the average weighted by each cohort's size in the ink. The average turns dashed where fewer than three cohorts have a rate for the week, because there it is the average of the oldest few.",
82
+ "average": "All cohorts",
83
+ "caption": "Trials from week 6 on kept 59 to 65% after a week, against 47 to 53% before the new activation email.",
84
+ "cohort": "Week {{week}}",
85
+ "label": "Share of trials still active, by week since the trial started",
86
+ "period": "W{{week}}",
87
+ "sparse": "All cohorts, fewer than three",
88
+ "title": "Retention by cohort"
89
+ },
90
+ "revenue": {
91
+ "about": "One series of daily revenue in euros. A chart of one series renders no legend.",
92
+ "caption": "Revenue peaked at €26,300 on Friday and fell over the weekend.",
93
+ "label": "Revenue per day",
94
+ "revenue": "Revenue",
95
+ "title": "One series"
96
+ },
97
+ "series": "Series",
98
+ "title": "Line chart",
99
+ "uptime": {
100
+ "about": "valueDomain sets the value axis to run from 99% to 100%, where an axis from zero would flatten every day into one line.",
101
+ "availability": "Availability",
102
+ "caption": "Availability fell to 99.71% on September 24 and was 99.9% or more on every other day.",
103
+ "label": "Availability per day",
104
+ "title": "Value domain"
105
+ }
106
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "about": "Categories as bars sorted largest first, and the running share of the total as a line on an end axis from 0 to 100%. A dashed line marks the share that matters, 80% unless stated.",
3
+ "cumulative": "Cumulative share",
4
+ "defects": {
5
+ "about": "threshold moves the dashed line to 90%, and thresholdLabel writes its name on it. paretoCutoff counts the causes that add up to the threshold, and the caption states the count.",
6
+ "caption_one": "{{count}} of {{total}} causes accounts for 90% of defects.",
7
+ "caption_other": "{{count}} of {{total}} causes account for 90% of defects.",
8
+ "defects": "Defects",
9
+ "label": "Defects per cause",
10
+ "threshold": "90% of defects",
11
+ "title": "Threshold"
12
+ },
13
+ "largest": {
14
+ "about": "defaultIndex opens the tooltip at the second bar when the chart first renders. The tooltip writes the bar's count and the running share after it.",
15
+ "caption": "Login and billing account for 70% of support tickets.",
16
+ "title": "Tooltip"
17
+ },
18
+ "narrow": {
19
+ "about": "The tickets chart in a room 20rem wide, the column of a phone. The category axis names the bars it has room for.",
20
+ "title": "Narrow room"
21
+ },
22
+ "quiet": {
23
+ "about": "A range without rows renders the empty state in the plot's place, at the plot's ratio.",
24
+ "caption": "Support tickets per reason this month.",
25
+ "empty": "No tickets this month.",
26
+ "title": "Empty"
27
+ },
28
+ "replay": {
29
+ "about": "animate grows each bar from its base and reveals the running share from the start of the axis when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the marks at once.",
30
+ "replay": "Replay",
31
+ "title": "Animation"
32
+ },
33
+ "series": "Series",
34
+ "tickets": {
35
+ "about": "Support tickets per reason, passed in no order and sorted by the chart. paretoRows and paretoCutoff return the numbers the chart plots, so the caption states the count the chart shows.",
36
+ "caption_one": "{{count}} of {{total}} reasons accounts for 80% of support tickets.",
37
+ "caption_other": "{{count}} of {{total}} reasons account for 80% of support tickets.",
38
+ "label": "Support tickets per reason",
39
+ "tickets": "Tickets",
40
+ "title": "Tickets"
41
+ },
42
+ "title": "Pareto chart"
43
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "about": "Each category as one bar of 100%, split into the declared series' shares. The bars compare composition, and the caption states the totals.",
3
+ "mix": {
4
+ "about": "Customers per plan in each region as shares. The value axis reads in percent, and the tooltip writes each plan's own count.",
5
+ "americas": "Americas",
6
+ "apac": "APAC",
7
+ "caption": "Scale plans are 13% of the Americas' 1,300 customers, 10% of APAC's 300 and 9% of EMEA's 800.",
8
+ "emea": "EMEA",
9
+ "growth": "Growth",
10
+ "label": "Customers per plan per region",
11
+ "scale": "Scale",
12
+ "starter": "Starter",
13
+ "title": "Plan mix"
14
+ },
15
+ "narrow": {
16
+ "about": "The plan mix in a room 20rem wide, the column of a phone. The three bars keep their shares, and the region names fit below them.",
17
+ "title": "Narrow room"
18
+ },
19
+ "region": {
20
+ "about": "defaultIndex opens the tooltip at the Americas when the chart first renders. The bar shows shares, and the tooltip writes each plan's own count.",
21
+ "caption": "The Americas had 610 Starter, 520 Growth and 170 Scale customers.",
22
+ "title": "Tooltip"
23
+ },
24
+ "replay": {
25
+ "about": "animate grows each segment from its base when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the bars at once.",
26
+ "replay": "Replay",
27
+ "title": "Animation"
28
+ },
29
+ "series": "Plans",
30
+ "title": "Percent stacked bar",
31
+ "unsold": {
32
+ "about": "A chart without rows renders the empty state in the plot's place, and no legend.",
33
+ "caption": "Customers per plan per region.",
34
+ "empty": "No customers in any region yet.",
35
+ "title": "Empty"
36
+ }
37
+ }