@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,70 @@
1
+ {
2
+ "about": "The shape of a run of values at the size of a word, without axes or a tooltip. The line spans the run's own range, so the figure it belongs to goes beside it.",
3
+ "builds": {
4
+ "about": "label names a run shown without a figure, as an image with that name. It takes no tab stop.",
5
+ "label": "Build time over the last 15 builds, from 4.2 to 3.1 minutes",
6
+ "title": "Without a figure"
7
+ },
8
+ "errors": {
9
+ "about": "color takes a palette's chart color, here the error palette's for errors per hour.",
10
+ "help": "+11 in 12 hours",
11
+ "label": "Errors per hour",
12
+ "title": "Palette",
13
+ "value": "14"
14
+ },
15
+ "launch": {
16
+ "about": "area fills under the line with the chart's gradient. The line spans the run's own range, so a fill measures volume only for a run that starts at zero, as a count since launch does.",
17
+ "help": "+300 this month",
18
+ "label": "Customers since launch",
19
+ "title": "Area",
20
+ "value": "1,240"
21
+ },
22
+ "offline": {
23
+ "about": "A value that is not a finite number leaves a gap in the line, here two readings the sensor missed. A zero in their place would plot a fall that never happened.",
24
+ "help": "Two readings missed",
25
+ "label": "Server room",
26
+ "title": "Missing readings",
27
+ "value": "21.8 °C"
28
+ },
29
+ "replay": {
30
+ "about": "animate reveals the line from its start when the sparkline mounts, and Replay mounts it again. Under reduced motion recharts renders it at once.",
31
+ "label": "Customers since launch, from 0 to 1,240",
32
+ "replay": "Replay",
33
+ "title": "Animation"
34
+ },
35
+ "revenue": {
36
+ "about": "The week's revenue as a stat with the run of daily revenue beside it. The sparkline is hidden from assistive technology, because the stat states the figure.",
37
+ "help": "+12% on last week",
38
+ "label": "Revenue this week",
39
+ "title": "Beside a figure",
40
+ "value": "€48,120"
41
+ },
42
+ "services": {
43
+ "about": "p95 latency per service with the last 24 hours at the small size in each row. Each run spans its own range, so checkout's rise and search's fall read at a glance.",
44
+ "api": "API",
45
+ "auth": "Auth",
46
+ "caption": "p95 latency per service",
47
+ "checkout": "Checkout",
48
+ "day": "Last 24 hours",
49
+ "now": "p95 now",
50
+ "search": "Search",
51
+ "service": "Service",
52
+ "title": "In a table"
53
+ },
54
+ "size": {
55
+ "about": "Three boxes on the grid, four times as wide as they are tall: 64 by 16 pixels at sm, 96 by 24 at md and 128 by 32 at lg.",
56
+ "title": "Sizes"
57
+ },
58
+ "stretch": {
59
+ "about": "stretch fills the width of the container at the size's height, here a room 24rem wide.",
60
+ "title": "Stretch"
61
+ },
62
+ "target": {
63
+ "about": "baseline={300} renders a dashed line at the 300 ms target, and the range widens to include it.",
64
+ "help": "Above the 300 ms target at 13:00 and 14:00",
65
+ "label": "p95 latency",
66
+ "title": "Baseline",
67
+ "value": "190 ms"
68
+ },
69
+ "title": "Sparkline"
70
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "about": "The declared series stacked into one total over a category or time axis. With percent, every point sums to 100% and the chart shows shares.",
3
+ "launch": {
4
+ "about": "defaultIndex opens the tooltip at Thursday when the chart first renders, with a row per source. The pointer or the arrow keys move it from there.",
5
+ "caption": "Referrals brought 2.6K of Thursday's 11K sessions.",
6
+ "title": "Tooltip"
7
+ },
8
+ "narrow": {
9
+ "about": "The sessions in a room 20rem wide, the column of a phone. All seven day ticks fit, and the legend keeps its three sources on one line.",
10
+ "title": "Narrow room"
11
+ },
12
+ "replay": {
13
+ "about": "animate reveals the bands 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 bands at once.",
14
+ "replay": "Replay",
15
+ "title": "Animation"
16
+ },
17
+ "series": "Sources",
18
+ "share": {
19
+ "about": "Requests per client as shares of each month's total. The value axis reads in percent, and the tooltip writes each client's own count.",
20
+ "android": "Android",
21
+ "api": "API",
22
+ "caption": "The API's share of requests grew from 12% in April to 26% in September.",
23
+ "ios": "iOS",
24
+ "label": "Requests per client per month",
25
+ "title": "Shares",
26
+ "web": "Web"
27
+ },
28
+ "title": "Stacked area chart",
29
+ "traffic": {
30
+ "about": "Sessions per source stacked into each day's total, in compact numbers.",
31
+ "caption": "Referrals rose to 2.6K on Thursday. Sessions fell from 11K on Friday to 5.6K on Sunday.",
32
+ "direct": "Direct",
33
+ "label": "Sessions per source per day",
34
+ "referral": "Referral",
35
+ "search": "Search",
36
+ "title": "Totals"
37
+ },
38
+ "untracked": {
39
+ "about": "A week without sessions renders the empty state in the plot's place, and no legend.",
40
+ "caption": "Sessions per source this week.",
41
+ "empty": "No sessions tracked this week.",
42
+ "title": "Empty"
43
+ }
44
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "about": "Each category's total as one bar, split into the declared series. The total and the bottom segment are measured from the axis.",
3
+ "narrow": {
4
+ "about": "The revenue in a room 20rem wide, the column of a phone. All six month ticks fit, and the value axis measures its widest tick, €60,000.",
5
+ "title": "Narrow room"
6
+ },
7
+ "replay": {
8
+ "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.",
9
+ "replay": "Replay",
10
+ "title": "Animation"
11
+ },
12
+ "revenue": {
13
+ "about": "Revenue per plan per month in euros, with the largest plan at the bottom of each bar. A hairline in the panel's color parts the segments.",
14
+ "caption": "Revenue grew to €43,600 in September, €24,800 of it from Scale plans.",
15
+ "growth": "Growth",
16
+ "label": "Revenue per plan per month",
17
+ "scale": "Scale",
18
+ "starter": "Starter",
19
+ "title": "Totals by plan"
20
+ },
21
+ "series": "Plans",
22
+ "split": {
23
+ "about": "defaultIndex opens the tooltip at September when the chart first renders, with a row per plan. The pointer or the arrow keys move it from there.",
24
+ "caption": "September's €43,600 split into €24,800 from Scale, €15,800 from Growth and €3,000 from Starter.",
25
+ "title": "Tooltip"
26
+ },
27
+ "title": "Stacked bar chart",
28
+ "unbooked": {
29
+ "about": "A range without rows renders the empty state in the plot's place, and no legend.",
30
+ "caption": "Revenue per plan per month.",
31
+ "empty": "No revenue booked in this period.",
32
+ "title": "Empty"
33
+ }
34
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "about": "A line of steps per declared series: each value is flat from its point until the next, as a replica count or a price tier is.",
3
+ "idle": {
4
+ "about": "A range without readings renders the empty state in the plot's place, and no legend.",
5
+ "caption": "Replicas per service over the last hour.",
6
+ "empty": "No readings in the last hour.",
7
+ "title": "Empty"
8
+ },
9
+ "narrow": {
10
+ "about": "The replicas in a room 20rem wide, the column of a phone. recharts shows every second time tick, so no two labels overlap.",
11
+ "title": "Narrow room"
12
+ },
13
+ "replay": {
14
+ "about": "animate reveals each line of steps 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.",
15
+ "replay": "Replay",
16
+ "title": "Animation"
17
+ },
18
+ "replicas": {
19
+ "about": "Replicas of two services every 10 minutes. The count is constant between readings, so the lines step instead of sloping.",
20
+ "api": "API",
21
+ "caption": "The API went from 3 replicas to 8 by 12:30 and was back at 3 by 13:30.",
22
+ "label": "Replicas per service",
23
+ "title": "Replicas",
24
+ "worker": "Worker"
25
+ },
26
+ "scale": {
27
+ "about": "defaultIndex opens the tooltip at the API's first reading of 8 replicas when the chart first renders. The pointer or the arrow keys move it from there.",
28
+ "caption": "The API ran 8 replicas at 12:30, twice the worker's 4.",
29
+ "title": "Tooltip"
30
+ },
31
+ "series": "Services",
32
+ "title": "Step line chart"
33
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "about": "Many series stacked about a moving baseline, so each band's rise and fall reads across a long span. The graph gives up the total and every band's measure for that shape, so it renders no value axis and no grid, and the stack fills the plot's height.",
3
+ "campaign": {
4
+ "about": "defaultIndex opens the tooltip at a week when the chart first renders. The tooltip writes each source's own visits in the legend's order, because no value reads off a band against an axis.",
5
+ "caption": "In the week of July 20 social brought 38K visits, a third of the week's total.",
6
+ "title": "Tooltip"
7
+ },
8
+ "listening": {
9
+ "about": "baseline=\"silhouette\" centres the stack on a straight line, so the stream is symmetric about the middle of the plot. Hours of listening per month by genre.",
10
+ "caption": "Electronic listening peaked in July, and classical peaked in December.",
11
+ "classical": "Classical",
12
+ "electronic": "Electronic",
13
+ "genres": "Genres",
14
+ "hiphop": "Hip-hop",
15
+ "jazz": "Jazz",
16
+ "label": "Listening hours per month by genre",
17
+ "pop": "Pop",
18
+ "rock": "Rock",
19
+ "title": "Centred baseline"
20
+ },
21
+ "narrow": {
22
+ "about": "The traffic graph in a room 20rem wide, the column of a phone.",
23
+ "title": "Narrow room"
24
+ },
25
+ "ordered": {
26
+ "about": "insideOut={false} stacks the bands in the series' order, the first at the bottom, for an order a reader already knows. The late email band is then inside the stack and moves every band above it.",
27
+ "caption": "Visits per source in the series' order, organic at the bottom.",
28
+ "title": "Series order"
29
+ },
30
+ "quiet": {
31
+ "about": "A range without rows renders the empty state in the plot's place, at the plot's ratio.",
32
+ "caption": "Visits per source per week.",
33
+ "empty": "No visits recorded yet.",
34
+ "title": "Empty"
35
+ },
36
+ "replay": {
37
+ "about": "animate reveals each band from the start of the axis when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the bands at once.",
38
+ "replay": "Replay",
39
+ "title": "Animation"
40
+ },
41
+ "title": "Stream graph",
42
+ "traffic": {
43
+ "about": "Weekly visits from five sources over sixteen weeks. The bands stack inside out: the sources whose visits arrive early are in the middle and the late ones outside, so a late source does not move the bands beneath it. Each source keeps its color and its place in the legend.",
44
+ "caption": "A July campaign lifted social visits to 38K a week before they fell back, while email grew from none to 22K a week.",
45
+ "direct": "Direct",
46
+ "email": "Email",
47
+ "label": "Visits per source per week",
48
+ "organic": "Organic",
49
+ "referral": "Referral",
50
+ "social": "Social",
51
+ "sources": "Sources",
52
+ "title": "Traffic sources"
53
+ }
54
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "about": "A hierarchy of parts as rings around a middle, one ring per level, such as spend by team, then by service, then by resource. Each part's arc is its share of the whole and is inside its parent's arc. Each top-level part is a family of arcs in one color, each ring paler than the one inside it, and the legend lists each family with its total. The arrow keys walk the arcs, a family before its parts. A sunburst shows how a whole divides level by level, and a treemap is the better chart for comparing the sizes of many parts.",
3
+ "credit": {
4
+ "about": "The bill with a committed-use credit of −€3,000 posted to the data team. An arc cannot be negative, so the chart gives a part below zero no arc, and the data team's total counts only the parts with an arc. hierarchyLeaves returns every leaf with its value as given, and the caption lists the leaves below zero.",
5
+ "caption_one": "{{names}} is below zero and has no arc. An arc cannot be negative.",
6
+ "caption_other": "{{names}} are below zero and have no arcs. An arc cannot be negative.",
7
+ "title": "A part below zero"
8
+ },
9
+ "folders": "Folders",
10
+ "hidden": {
11
+ "about": "defaultHiddenKeys hides the platform team when the chart first renders. Only the platform team has a third level, so the outer ring leaves with it, and the two rings left share the room. Every share in the tooltip is of the teams shown. A press on the legend shows the team again.",
12
+ "caption": "With the platform team hidden, the product team is 56% of the rest.",
13
+ "title": "A hidden team"
14
+ },
15
+ "largest": {
16
+ "about": "defaultIndex opens the tooltip at the third arc of the walk, virtual machines, when the chart first renders. The walk runs depth first and largest first: the platform team, compute, then virtual machines. The tooltip writes the resource's spend and its share of the bill to two significant digits.",
17
+ "caption": "Virtual machines are the largest resource at 23% of the bill.",
18
+ "title": "Tooltip"
19
+ },
20
+ "names": {
21
+ "archive": "Archive",
22
+ "backups": "Backups",
23
+ "blobs": "Blob storage",
24
+ "brand": "Brand",
25
+ "builds": "Builds",
26
+ "compute": "Compute",
27
+ "credit": "Committed-use credit",
28
+ "cron": "Cron",
29
+ "daily": "Daily",
30
+ "data": "Data",
31
+ "design": "Design",
32
+ "dns": "DNS",
33
+ "edits": "Edits",
34
+ "flags": "Feature flags",
35
+ "footage": "Footage",
36
+ "gpus": "GPUs",
37
+ "kubernetes": "Kubernetes",
38
+ "mailer": "Mailer",
39
+ "metrics": "Metrics",
40
+ "mobile": "Mobile app",
41
+ "network": "Network",
42
+ "photos": "Photos",
43
+ "pipelines": "Pipelines",
44
+ "platform": "Platform",
45
+ "product": "Product",
46
+ "proxy": "Auth proxy",
47
+ "queue": "Queue",
48
+ "registry": "Registry",
49
+ "scanner": "Scanner",
50
+ "screens": "Screens",
51
+ "secrets": "Secrets",
52
+ "snapshots": "Snapshots",
53
+ "status": "Status page",
54
+ "storage": "Storage",
55
+ "tracing": "Tracing",
56
+ "video": "Video",
57
+ "vms": "Virtual machines",
58
+ "warehouse": "Warehouse",
59
+ "web": "Web app",
60
+ "webhooks": "Webhooks",
61
+ "weekly": "Weekly"
62
+ },
63
+ "narrow": {
64
+ "about": "The bill in a room 20rem wide, the column of a phone. The rings and the hole shrink with the plot, and the legend wraps under it.",
65
+ "title": "Narrow room"
66
+ },
67
+ "palette": {
68
+ "about": "Each team states its palette: the platform team purple, the product team orange, the data team teal. A team's arcs mix its palette's chart color over the panel, paler in each ring. values false leaves the totals out of the legend.",
69
+ "caption": "The platform team spends more than the product and data teams together.",
70
+ "title": "Palettes"
71
+ },
72
+ "quiet": {
73
+ "about": "A sunburst without nodes renders the empty state in the plot's place, at the plot's ratio, and no legend.",
74
+ "caption": "Cloud spend this month.",
75
+ "empty": "No spend in this period.",
76
+ "title": "Empty"
77
+ },
78
+ "replay": {
79
+ "about": "animate sweeps each ring's arcs in clockwise from 12 o'clock when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the arcs at once.",
80
+ "caption": "Cloud spend for September.",
81
+ "replay": "Replay",
82
+ "title": "Animation"
83
+ },
84
+ "share": "Of the bill",
85
+ "spend": {
86
+ "about": "September's cloud bill of €114,500 by team, then by service, then by resource. Each team is a family of arcs in one color, and each ring is paler than the ring inside it. A service without resources leaves a gap in the outer ring, so every part is inside its parent's arc. The hole writes the bill's total, and the caption states the platform team's share, which the example sums from hierarchyLeaves.",
87
+ "caption": "The platform team is {{share}}% of the bill.",
88
+ "center": "September",
89
+ "label": "Cloud spend for September by team, service and resource",
90
+ "title": "Spend by team, service and resource"
91
+ },
92
+ "storage": {
93
+ "about": "A file server's folders and subfolders. Each folder is its own family, so each takes the next series color, and a folder without subfolders leaves a gap in the outer ring. valueOptions writes the sizes in gigabytes.",
94
+ "caption": "Design and video files fill 62% of the file server.",
95
+ "label": "Storage on the file server by folder and subfolder",
96
+ "share": "Of the server",
97
+ "title": "Two levels",
98
+ "value": "Size"
99
+ },
100
+ "tail": {
101
+ "about": "The platform team's spend: Kubernetes and fourteen small services. Each small service is a sliver of the outer ring. The tooltip writes each one's name and spend, and the arrow keys walk to each.",
102
+ "caption": "Kubernetes is 86% of the platform team's spend. Fourteen small services share the rest.",
103
+ "label": "Platform team spend for September by service",
104
+ "share": "Of the team",
105
+ "title": "A long tail"
106
+ },
107
+ "teams": "Teams",
108
+ "title": "Sunburst chart",
109
+ "value": "Spend"
110
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "about": "Moments on one time window across lanes, such as deploys and incidents per service. Moments of a lane closer than minGap of the window share a marker that counts them, and every lane shares the window, so the lanes compare.",
3
+ "burst": {
4
+ "about": "Seven alerts within two minutes share one marker in the color of its loudest moment. defaultIndex opens the tooltip at the marker: the heading names the lane and the range, and the rows list five alerts and then moreLabel's count of the rest.",
5
+ "alerts": "Alerts",
6
+ "caption": "Seven alerts in two minutes followed the deploy at 13:52 UTC.",
7
+ "changes": "Changes",
8
+ "checkout": "Checkout failures above 1%",
9
+ "deploy": "Deploy api 4.12",
10
+ "errors": "Error rate above 2%",
11
+ "label": "Changes and alerts during the incident",
12
+ "latency": "p99 latency above 800 ms",
13
+ "more_one": "{{count}} more alert",
14
+ "more_other": "{{count}} more alerts",
15
+ "queue": "Queue depth above 5,000",
16
+ "recovered": "Error rate recovered",
17
+ "rollback": "Rollback to api 4.11",
18
+ "title": "Clusters"
19
+ },
20
+ "deploys": {
21
+ "about": "Deploys and incidents of four services over one day, a lane per service in the order lanes lists them. A moment without a lane goes into the lane otherLabel names. The time axis writes five evenly spaced times in 24-hour UTC.",
22
+ "api": "API",
23
+ "backlog": "Queue backlog",
24
+ "backup": "Nightly backup",
25
+ "caption": "The api raised three alerts between 14:03 and 14:09 UTC and rolled back at 16:20.",
26
+ "cleared": "Backlog cleared",
27
+ "db": "Database",
28
+ "deploy": "Deploy {{version}}",
29
+ "errors": "Error rate alert",
30
+ "failover": "Failover drill",
31
+ "label": "Deploys and incidents on 28 September",
32
+ "latency": "Latency alert",
33
+ "notice": "Status page notice",
34
+ "other": "Other",
35
+ "rollback": "Rollback to {{version}}",
36
+ "slow": "Slow queries",
37
+ "title": "Lanes",
38
+ "web": "Web",
39
+ "worker": "Worker"
40
+ },
41
+ "narrow": {
42
+ "about": "The day's deploys in a room 20rem wide, the column of a phone. Each lane keeps its name, and the time axis leaves out a time that would meet another.",
43
+ "title": "Narrow room"
44
+ },
45
+ "quiet": {
46
+ "about": "A timeline without a moment inside its window renders the empty state in the plot's place.",
47
+ "caption": "Deploys and incidents today.",
48
+ "empty": "No deploys or incidents today.",
49
+ "label": "Deploys and incidents today",
50
+ "title": "Empty"
51
+ },
52
+ "releases": {
53
+ "about": "One lane of releases over a year. A chart of one lane renders no lane axis, and the tooltip heads a marker with its date alone. ticks sets three dates on the time axis, and labelOptions writes them in the medium date style.",
54
+ "caption": "Two of the year's nine releases needed a patch within three days.",
55
+ "label": "Releases from October 2025 to September 2026",
56
+ "patch": "Patch {{version}}",
57
+ "release": "Release {{version}}",
58
+ "title": "One lane"
59
+ },
60
+ "replay": {
61
+ "about": "animate grows each marker from its centre when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the markers at once.",
62
+ "caption": "The web deployed three times, and the api rolled back after its alerts.",
63
+ "label": "Deploys on 28 September",
64
+ "replay": "Replay",
65
+ "title": "Animation"
66
+ },
67
+ "select": {
68
+ "about": "onSelect receives a marker's moments on a press, or on Enter or Space while the arrow keys walk the markers. The line under the chart lists the moments of the marker selected last.",
69
+ "caption": "Press a marker to list its moments.",
70
+ "label": "Deploys and incidents of the api and the database",
71
+ "none": "No marker selected.",
72
+ "picked_one": "Selected: {{list}}",
73
+ "picked_other": "Selected {{count}} moments: {{list}}",
74
+ "title": "Selection"
75
+ },
76
+ "title": "Timeline chart"
77
+ }
@@ -0,0 +1,107 @@
1
+ {
2
+ "about": "A hierarchy of parts as nested tiles whose areas follow their sizes, such as spend by team and then by service. Each top-level part is a family of tiles in one color, largest first from the top left, and the legend lists each family with its total. The arrow keys walk the tiles, a family before its parts. A treemap shows where the mass of many parts is, and a bar chart is the better chart for comparing values.",
3
+ "credit": {
4
+ "about": "The bill with a reserved-capacity credit of −€6,200 posted to the platform team. An area cannot be negative, so the chart gives a part below zero no tile, and the platform team's total counts only the parts with a tile. hierarchyLeaves returns every leaf with its value as given, and the caption lists the leaves below zero.",
5
+ "caption_one": "{{names}} is below zero and has no tile. An area cannot be negative.",
6
+ "caption_other": "{{names}} are below zero and have no tiles. An area cannot be negative.",
7
+ "title": "A part below zero"
8
+ },
9
+ "folders": "Folders",
10
+ "hidden": {
11
+ "about": "defaultHiddenKeys hides the platform team when the chart first renders. The other teams fill the plot, and every share on the tiles and in the tooltip is of the teams shown. A press on the legend shows the team again.",
12
+ "caption": "With the platform team hidden, the data team is 65% of the rest.",
13
+ "title": "A hidden team"
14
+ },
15
+ "largest": {
16
+ "about": "defaultIndex opens the tooltip at the seventh tile of the walk, Kubernetes, when the chart first renders. The walk runs depth first and largest first: the data team, its four services, then the platform team and Kubernetes. The tooltip writes the service's spend and its share of the bill to two significant digits.",
17
+ "caption": "Kubernetes is the largest service at 23% of the bill.",
18
+ "title": "Tooltip"
19
+ },
20
+ "names": {
21
+ "archive": "Archive",
22
+ "audio": "Audio",
23
+ "backups": "Backups",
24
+ "balancers": "Load balancers",
25
+ "builds": "Builds",
26
+ "cdn": "CDN",
27
+ "credit": "Reserved credit",
28
+ "cron": "Cron",
29
+ "data": "Data",
30
+ "design": "Design",
31
+ "dns": "DNS",
32
+ "documents": "Documents",
33
+ "firewall": "Web firewall",
34
+ "flags": "Feature flags",
35
+ "functions": "Functions",
36
+ "gateway": "API gateway",
37
+ "kafka": "Kafka",
38
+ "kubernetes": "Kubernetes",
39
+ "logs": "Log ingest",
40
+ "mailer": "Mailer",
41
+ "metrics": "Metrics",
42
+ "nat": "NAT gateways",
43
+ "objects": "Object storage",
44
+ "photos": "Photos",
45
+ "platform": "Platform",
46
+ "postgres": "Postgres",
47
+ "product": "Product",
48
+ "proxy": "Auth proxy",
49
+ "queue": "Queue",
50
+ "redis": "Redis",
51
+ "registry": "Registry",
52
+ "scanner": "Scanner",
53
+ "search": "Search cluster",
54
+ "secrets": "Secrets",
55
+ "snapshots": "Snapshots",
56
+ "status": "Status page",
57
+ "tracing": "Tracing",
58
+ "video": "Video",
59
+ "webhooks": "Webhooks"
60
+ },
61
+ "narrow": {
62
+ "about": "The bill in a room 20rem wide, the column of a phone. A tile too narrow for its name writes none, and the walk and the tooltip still name it.",
63
+ "title": "Narrow room"
64
+ },
65
+ "palette": {
66
+ "about": "Each team states its palette: the data team teal, the platform team purple, the product team orange. A team's services mix its palette's chart color over the panel. values false leaves only the names on the tiles and in the legend.",
67
+ "caption": "The platform team's services cost nearly as much as the data team's.",
68
+ "title": "Palettes"
69
+ },
70
+ "quiet": {
71
+ "about": "A treemap without nodes renders the empty state in the plot's place, at the plot's ratio, and no legend.",
72
+ "caption": "Cloud spend this month.",
73
+ "empty": "No spend in this period.",
74
+ "title": "Empty"
75
+ },
76
+ "replay": {
77
+ "about": "animate slides each tile in from the left when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the tiles at once.",
78
+ "caption": "Cloud spend for September.",
79
+ "replay": "Replay",
80
+ "title": "Animation"
81
+ },
82
+ "share": "Of the bill",
83
+ "spend": {
84
+ "about": "September's cloud bill of €95,400 by team and then by service. Each team is a family of tiles in one color, its largest service the strongest. Each tile that fits writes its service's name, spend and share of the bill, and the legend writes each team's total. hierarchyLeaves returns every service with its share, and the caption states the two largest.",
85
+ "caption": "{{first}} and {{second}} are {{share}}% of the bill.",
86
+ "label": "Cloud spend for September by team and service",
87
+ "title": "Spend by team and service"
88
+ },
89
+ "storage": {
90
+ "about": "A file server's folders in one level. Each folder is its own family, so each takes the next series color. valueOptions writes the sizes in gigabytes.",
91
+ "caption": "Design and video files fill 58% of the file server.",
92
+ "label": "Storage on the file server by folder",
93
+ "share": "Of the server",
94
+ "title": "One level",
95
+ "value": "Size"
96
+ },
97
+ "tail": {
98
+ "about": "The platform team's spend: Kubernetes and fourteen small services. A tile too small for its name writes none, because a clipped word reads as another word. The tooltip writes each one's name, and the arrow keys walk to each.",
99
+ "caption": "Kubernetes is 86% of the platform team's spend. Fourteen small services share the rest.",
100
+ "label": "Platform team spend for September by service",
101
+ "share": "Of the team",
102
+ "title": "A long tail"
103
+ },
104
+ "teams": "Teams",
105
+ "title": "Treemap chart",
106
+ "value": "Spend"
107
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "about": "The distribution of each group as the density of its values, mirrored about the middle of its band, with its quartiles inside. The tooltip lists the values each density peaks at, which a box plot cannot show.",
3
+ "endpoints": {
4
+ "about": "The response times of 50 requests to each of three endpoints. Each violin is as wide as its bar at its own densest value, so its width compares within the group only. Inside it are the whisker line, the middle half as a narrow bar and the median as a hollow point.",
5
+ "caption": "Search peaks at 22ms and at 167ms, cache hits and index reads, and its middle half spans the gap between them.",
6
+ "checkout": "Checkout",
7
+ "label": "Response times of the shop's API by endpoint",
8
+ "profile": "Profile",
9
+ "search": "Search",
10
+ "title": "Response times"
11
+ },
12
+ "narrow": {
13
+ "about": "The three endpoints in a room 20rem wide, the column of a phone. Each violin takes its share of the width, at most 110px.",
14
+ "title": "Narrow room"
15
+ },
16
+ "outline": {
17
+ "about": "quartiles false leaves out the whisker line, the quartile bar and the median, for a violin read for its outline alone. The key then names the density alone.",
18
+ "caption": "8 of 50 profile requests take more than 100ms.",
19
+ "title": "Outline alone"
20
+ },
21
+ "peaks": {
22
+ "about": "defaultIndex opens the tooltip at a group when the chart first renders. The rows are the median, the middle half, the range, the values the density peaks at and the count.",
23
+ "caption": "Search peaks at 22 and 167ms, while its median of 25ms describes the cache hits alone.",
24
+ "title": "Tooltip"
25
+ },
26
+ "plans": {
27
+ "about": "Session lengths on three plans, the violins in the teal palette's chart color. valueDomain fixes the axis at 0 to 60 minutes, so every month's chart compares on one scale. This month's longest session took 39 minutes, and the rounded axis would end at 40.",
28
+ "caption": "Team's median of 23.5 minutes falls between its peaks near 5 and 35 minutes, and 2 of its 40 sessions last 15 to 25 minutes.",
29
+ "free": "Free",
30
+ "label": "Session lengths by plan",
31
+ "pro": "Pro",
32
+ "sessions": "Sessions",
33
+ "team": "Team",
34
+ "title": "Session lengths"
35
+ },
36
+ "quiet": {
37
+ "about": "A violin plot whose groups have no finite value renders the empty state in the plot's place, at the plot's ratio.",
38
+ "caption": "Response times of the shop's API this hour.",
39
+ "empty": "No requests this hour.",
40
+ "title": "Empty"
41
+ },
42
+ "replay": {
43
+ "about": "animate grows each violin from the axis when the chart mounts, and Replay mounts the chart again. Under reduced motion recharts renders the violins at once.",
44
+ "replay": "Replay",
45
+ "title": "Animation"
46
+ },
47
+ "requests": "Requests",
48
+ "smooth": {
49
+ "about": "bandwidth sets one Gaussian kernel for every group in place of Silverman's bandwidth per group. A kernel wider than the gap between two peaks merges them, so the bandwidth decides what a violin shows.",
50
+ "caption": "At a 60ms kernel, Search's two peaks blur into one at 29ms.",
51
+ "title": "Wide kernel"
52
+ },
53
+ "title": "Violin plot"
54
+ }