@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,1094 @@
1
+ import { t as __exportAll } from "../../rolldown-runtime-D7D4PA-g.js";
2
+ import { H as biggestDrop, U as funnelSteps, V as FunnelChart, W as funnelWidenings } from "../../shared-DVZJ2nST.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { Room, specimen, useWords } from "@stealthscale/specimen";
7
+ import { RotateCcwIcon } from "lucide-react";
8
+ import { Button } from "@stealthscale/component-actions";
9
+ import { Stack } from "@stealthscale/component-layout";
10
+ //#region src/funnel-chart/examples/stages.ts
11
+ /**
12
+ * Lists a shop's checkout over a month, 48,200 visits down to 5,960 payments. The biggest loss,
13
+ * 18,500 people, is before the basket.
14
+ */
15
+ const CHECKOUT = [
16
+ {
17
+ key: "visited",
18
+ value: 48200
19
+ },
20
+ {
21
+ key: "viewed",
22
+ value: 31400
23
+ },
24
+ {
25
+ key: "basket",
26
+ value: 12900
27
+ },
28
+ {
29
+ key: "checkout",
30
+ value: 8150
31
+ },
32
+ {
33
+ key: "paid",
34
+ value: 5960
35
+ }
36
+ ];
37
+ /**
38
+ * Lists the checkout with its fourth stage counted from the orders of every month, so more people
39
+ * start checkout than added a product to a basket.
40
+ */
41
+ const WIDENING = [
42
+ {
43
+ key: "visited",
44
+ value: 48200
45
+ },
46
+ {
47
+ key: "viewed",
48
+ value: 31400
49
+ },
50
+ {
51
+ key: "basket",
52
+ value: 12900
53
+ },
54
+ {
55
+ key: "checkout",
56
+ value: 19400
57
+ },
58
+ {
59
+ key: "paid",
60
+ value: 5960
61
+ }
62
+ ];
63
+ /**
64
+ * Lists a hiring pipeline over a quarter, 1,280 applications down to 12 hires.
65
+ */
66
+ const HIRING = [
67
+ {
68
+ key: "applied",
69
+ value: 1280
70
+ },
71
+ {
72
+ key: "screened",
73
+ value: 410
74
+ },
75
+ {
76
+ key: "interviewed",
77
+ value: 96
78
+ },
79
+ {
80
+ key: "offered",
81
+ value: 18
82
+ },
83
+ {
84
+ key: "hired",
85
+ value: 12
86
+ }
87
+ ];
88
+ /**
89
+ * Lists an advert's funnel over a week, 2.4 million impressions down to 3,900 sign-ups.
90
+ */
91
+ const ADVERT = [
92
+ {
93
+ key: "impressions",
94
+ value: 24e5
95
+ },
96
+ {
97
+ key: "clicks",
98
+ value: 86e3
99
+ },
100
+ {
101
+ key: "visits",
102
+ value: 41e3
103
+ },
104
+ {
105
+ key: "signups",
106
+ value: 3900
107
+ }
108
+ ];
109
+ /**
110
+ * Lists a trial's two stages: 2,400 trials, 312 of which became paying accounts.
111
+ */
112
+ const TRIAL = [{
113
+ key: "trials",
114
+ value: 2400
115
+ }, {
116
+ key: "customers",
117
+ value: 312
118
+ }];
119
+ //#endregion
120
+ //#region src/funnel-chart/examples/advert.example.tsx
121
+ var advert_example_exports = /* @__PURE__ */ __exportAll({
122
+ Advert: () => Advert,
123
+ source: () => source$8
124
+ });
125
+ function Advert() {
126
+ const $ = c(26);
127
+ const { t } = useWords("funnel-chart");
128
+ let t0;
129
+ if ($[0] !== t) {
130
+ t0 = t("advert.caption");
131
+ $[0] = t;
132
+ $[1] = t0;
133
+ } else t0 = $[1];
134
+ let t1;
135
+ if ($[2] !== t) {
136
+ t1 = t("advert.label");
137
+ $[2] = t;
138
+ $[3] = t1;
139
+ } else t1 = $[3];
140
+ let t2;
141
+ if ($[4] !== t) {
142
+ t2 = t("overall");
143
+ $[4] = t;
144
+ $[5] = t2;
145
+ } else t2 = $[5];
146
+ let t3;
147
+ if ($[6] !== t) {
148
+ t3 = t("stage");
149
+ $[6] = t;
150
+ $[7] = t3;
151
+ } else t3 = $[7];
152
+ let t4;
153
+ if ($[8] !== t) {
154
+ t4 = ADVERT.map((t5) => {
155
+ const { key, value } = t5;
156
+ return {
157
+ key,
158
+ label: t(`stages.${key}`),
159
+ value
160
+ };
161
+ });
162
+ $[8] = t;
163
+ $[9] = t4;
164
+ } else t4 = $[9];
165
+ let t5;
166
+ if ($[10] !== t) {
167
+ t5 = t("step");
168
+ $[10] = t;
169
+ $[11] = t5;
170
+ } else t5 = $[11];
171
+ let t6;
172
+ if ($[12] !== t) {
173
+ t6 = t("steps");
174
+ $[12] = t;
175
+ $[13] = t6;
176
+ } else t6 = $[13];
177
+ let t7;
178
+ if ($[14] !== t) {
179
+ t7 = t("people");
180
+ $[14] = t;
181
+ $[15] = t7;
182
+ } else t7 = $[15];
183
+ let t8;
184
+ if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
185
+ t8 = { notation: "compact" };
186
+ $[16] = t8;
187
+ } else t8 = $[16];
188
+ let t9;
189
+ if ($[17] !== t0 || $[18] !== t1 || $[19] !== t2 || $[20] !== t3 || $[21] !== t4 || $[22] !== t5 || $[23] !== t6 || $[24] !== t7) {
190
+ t9 = /* @__PURE__ */ jsx(FunnelChart, {
191
+ caption: t0,
192
+ label: t1,
193
+ overallLabel: t2,
194
+ stageLabel: t3,
195
+ stages: t4,
196
+ stepLabel: t5,
197
+ stepsLabel: t6,
198
+ valueLabel: t7,
199
+ valueOptions: t8
200
+ });
201
+ $[17] = t0;
202
+ $[18] = t1;
203
+ $[19] = t2;
204
+ $[20] = t3;
205
+ $[21] = t4;
206
+ $[22] = t5;
207
+ $[23] = t6;
208
+ $[24] = t7;
209
+ $[25] = t9;
210
+ } else t9 = $[25];
211
+ return t9;
212
+ }
213
+ const source$8 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart } from \"@stealthscale/component-charts\";\n\nimport { ADVERT } from \"./stages.ts\";\n\nexport function Advert(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n\n return (\n <FunnelChart\n caption={t(\"advert.caption\")}\n label={t(\"advert.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={ADVERT.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }))}\n stepLabel={t(\"step\")}\n stepsLabel={t(\"steps\")}\n valueLabel={t(\"people\")}\n valueOptions={{ notation: \"compact\" }}\n />\n );\n}\n";
214
+ //#endregion
215
+ //#region src/funnel-chart/examples/checkout.example.tsx
216
+ var checkout_example_exports = /* @__PURE__ */ __exportAll({
217
+ Checkout: () => Checkout,
218
+ source: () => source$7
219
+ });
220
+ function Checkout() {
221
+ const $ = c(26);
222
+ const { t } = useWords("funnel-chart");
223
+ let T0;
224
+ let stages;
225
+ let t0;
226
+ if ($[0] !== t) {
227
+ stages = CHECKOUT.map((t1) => {
228
+ const { key, value } = t1;
229
+ return {
230
+ key,
231
+ label: t(`stages.${key}`),
232
+ value
233
+ };
234
+ });
235
+ const worst = biggestDrop(funnelSteps(stages));
236
+ T0 = FunnelChart;
237
+ t0 = worst && t("checkout.caption", {
238
+ lost: worst.dropped,
239
+ stage: t(`stages.${worst.stage.key}`)
240
+ });
241
+ $[0] = t;
242
+ $[1] = T0;
243
+ $[2] = stages;
244
+ $[3] = t0;
245
+ } else {
246
+ T0 = $[1];
247
+ stages = $[2];
248
+ t0 = $[3];
249
+ }
250
+ let t1;
251
+ if ($[4] !== t) {
252
+ t1 = t("checkout.label");
253
+ $[4] = t;
254
+ $[5] = t1;
255
+ } else t1 = $[5];
256
+ let t2;
257
+ if ($[6] !== t) {
258
+ t2 = t("overall");
259
+ $[6] = t;
260
+ $[7] = t2;
261
+ } else t2 = $[7];
262
+ let t3;
263
+ if ($[8] !== t) {
264
+ t3 = t("stage");
265
+ $[8] = t;
266
+ $[9] = t3;
267
+ } else t3 = $[9];
268
+ let t4;
269
+ if ($[10] !== t) {
270
+ t4 = t("step");
271
+ $[10] = t;
272
+ $[11] = t4;
273
+ } else t4 = $[11];
274
+ let t5;
275
+ if ($[12] !== t) {
276
+ t5 = t("steps");
277
+ $[12] = t;
278
+ $[13] = t5;
279
+ } else t5 = $[13];
280
+ let t6;
281
+ if ($[14] !== t) {
282
+ t6 = t("people");
283
+ $[14] = t;
284
+ $[15] = t6;
285
+ } else t6 = $[15];
286
+ let t7;
287
+ if ($[16] !== T0 || $[17] !== stages || $[18] !== t0 || $[19] !== t1 || $[20] !== t2 || $[21] !== t3 || $[22] !== t4 || $[23] !== t5 || $[24] !== t6) {
288
+ t7 = /* @__PURE__ */ jsx(T0, {
289
+ caption: t0,
290
+ label: t1,
291
+ overallLabel: t2,
292
+ stageLabel: t3,
293
+ stages,
294
+ stepLabel: t4,
295
+ stepsLabel: t5,
296
+ valueLabel: t6
297
+ });
298
+ $[16] = T0;
299
+ $[17] = stages;
300
+ $[18] = t0;
301
+ $[19] = t1;
302
+ $[20] = t2;
303
+ $[21] = t3;
304
+ $[22] = t4;
305
+ $[23] = t5;
306
+ $[24] = t6;
307
+ $[25] = t7;
308
+ } else t7 = $[25];
309
+ return t7;
310
+ }
311
+ const source$7 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart, biggestDrop, funnelSteps } from \"@stealthscale/component-charts\";\n\nimport { CHECKOUT } from \"./stages.ts\";\n\nexport function Checkout(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n const stages = CHECKOUT.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }));\n const worst = biggestDrop(funnelSteps(stages));\n\n return (\n <FunnelChart\n caption={\n worst &&\n t(\"checkout.caption\", { lost: worst.dropped, stage: t(`stages.${worst.stage.key}`) })\n }\n label={t(\"checkout.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={stages}\n stepLabel={t(\"step\")}\n stepsLabel={t(\"steps\")}\n valueLabel={t(\"people\")}\n />\n );\n}\n";
312
+ //#endregion
313
+ //#region src/funnel-chart/examples/hiring.example.tsx
314
+ var hiring_example_exports = /* @__PURE__ */ __exportAll({
315
+ Hiring: () => Hiring,
316
+ source: () => source$6
317
+ });
318
+ function Hiring() {
319
+ const $ = c(25);
320
+ const { t } = useWords("funnel-chart");
321
+ let t0;
322
+ if ($[0] !== t) {
323
+ t0 = t("hiring.caption");
324
+ $[0] = t;
325
+ $[1] = t0;
326
+ } else t0 = $[1];
327
+ let t1;
328
+ if ($[2] !== t) {
329
+ t1 = t("hiring.label");
330
+ $[2] = t;
331
+ $[3] = t1;
332
+ } else t1 = $[3];
333
+ let t2;
334
+ if ($[4] !== t) {
335
+ t2 = t("overall");
336
+ $[4] = t;
337
+ $[5] = t2;
338
+ } else t2 = $[5];
339
+ let t3;
340
+ if ($[6] !== t) {
341
+ t3 = t("stage");
342
+ $[6] = t;
343
+ $[7] = t3;
344
+ } else t3 = $[7];
345
+ let t4;
346
+ if ($[8] !== t) {
347
+ t4 = HIRING.map((t5) => {
348
+ const { key, value } = t5;
349
+ return {
350
+ key,
351
+ label: t(`stages.${key}`),
352
+ value
353
+ };
354
+ });
355
+ $[8] = t;
356
+ $[9] = t4;
357
+ } else t4 = $[9];
358
+ let t5;
359
+ if ($[10] !== t) {
360
+ t5 = t("step");
361
+ $[10] = t;
362
+ $[11] = t5;
363
+ } else t5 = $[11];
364
+ let t6;
365
+ if ($[12] !== t) {
366
+ t6 = t("steps");
367
+ $[12] = t;
368
+ $[13] = t6;
369
+ } else t6 = $[13];
370
+ let t7;
371
+ if ($[14] !== t) {
372
+ t7 = t("people");
373
+ $[14] = t;
374
+ $[15] = t7;
375
+ } else t7 = $[15];
376
+ let t8;
377
+ if ($[16] !== t0 || $[17] !== t1 || $[18] !== t2 || $[19] !== t3 || $[20] !== t4 || $[21] !== t5 || $[22] !== t6 || $[23] !== t7) {
378
+ t8 = /* @__PURE__ */ jsx(FunnelChart, {
379
+ caption: t0,
380
+ color: "teal",
381
+ label: t1,
382
+ overallLabel: t2,
383
+ stageLabel: t3,
384
+ stages: t4,
385
+ stepLabel: t5,
386
+ stepsLabel: t6,
387
+ valueLabel: t7,
388
+ values: false
389
+ });
390
+ $[16] = t0;
391
+ $[17] = t1;
392
+ $[18] = t2;
393
+ $[19] = t3;
394
+ $[20] = t4;
395
+ $[21] = t5;
396
+ $[22] = t6;
397
+ $[23] = t7;
398
+ $[24] = t8;
399
+ } else t8 = $[24];
400
+ return t8;
401
+ }
402
+ const source$6 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart } from \"@stealthscale/component-charts\";\n\nimport { HIRING } from \"./stages.ts\";\n\nexport function Hiring(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n\n return (\n <FunnelChart\n caption={t(\"hiring.caption\")}\n color=\"teal\"\n label={t(\"hiring.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={HIRING.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }))}\n stepLabel={t(\"step\")}\n stepsLabel={t(\"steps\")}\n valueLabel={t(\"people\")}\n values={false}\n />\n );\n}\n";
403
+ //#endregion
404
+ //#region src/funnel-chart/examples/quiet.example.tsx
405
+ var quiet_example_exports = /* @__PURE__ */ __exportAll({
406
+ Quiet: () => Quiet,
407
+ source: () => source$5
408
+ });
409
+ function Quiet() {
410
+ const $ = c(11);
411
+ const { t } = useWords("funnel-chart");
412
+ let t0;
413
+ if ($[0] !== t) {
414
+ t0 = t("quiet.caption");
415
+ $[0] = t;
416
+ $[1] = t0;
417
+ } else t0 = $[1];
418
+ let t1;
419
+ if ($[2] !== t) {
420
+ t1 = t("quiet.empty");
421
+ $[2] = t;
422
+ $[3] = t1;
423
+ } else t1 = $[3];
424
+ let t2;
425
+ if ($[4] !== t) {
426
+ t2 = t("checkout.label");
427
+ $[4] = t;
428
+ $[5] = t2;
429
+ } else t2 = $[5];
430
+ let t3;
431
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
432
+ t3 = [];
433
+ $[6] = t3;
434
+ } else t3 = $[6];
435
+ let t4;
436
+ if ($[7] !== t0 || $[8] !== t1 || $[9] !== t2) {
437
+ t4 = /* @__PURE__ */ jsx(FunnelChart, {
438
+ caption: t0,
439
+ empty: t1,
440
+ label: t2,
441
+ stages: t3
442
+ });
443
+ $[7] = t0;
444
+ $[8] = t1;
445
+ $[9] = t2;
446
+ $[10] = t4;
447
+ } else t4 = $[10];
448
+ return t4;
449
+ }
450
+ const source$5 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart } from \"@stealthscale/component-charts\";\n\nexport function Quiet(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n\n return (\n <FunnelChart\n caption={t(\"quiet.caption\")}\n empty={t(\"quiet.empty\")}\n label={t(\"checkout.label\")}\n stages={[]}\n />\n );\n}\n";
451
+ //#endregion
452
+ //#region src/funnel-chart/examples/rates.example.tsx
453
+ var rates_example_exports = /* @__PURE__ */ __exportAll({
454
+ Rates: () => Rates,
455
+ source: () => source$4
456
+ });
457
+ function Rates() {
458
+ const $ = c(25);
459
+ const { t } = useWords("funnel-chart");
460
+ let t0;
461
+ if ($[0] !== t) {
462
+ t0 = t("rates.caption");
463
+ $[0] = t;
464
+ $[1] = t0;
465
+ } else t0 = $[1];
466
+ let t1;
467
+ if ($[2] !== t) {
468
+ t1 = t("checkout.label");
469
+ $[2] = t;
470
+ $[3] = t1;
471
+ } else t1 = $[3];
472
+ let t2;
473
+ if ($[4] !== t) {
474
+ t2 = t("overall");
475
+ $[4] = t;
476
+ $[5] = t2;
477
+ } else t2 = $[5];
478
+ let t3;
479
+ if ($[6] !== t) {
480
+ t3 = t("stage");
481
+ $[6] = t;
482
+ $[7] = t3;
483
+ } else t3 = $[7];
484
+ let t4;
485
+ if ($[8] !== t) {
486
+ t4 = CHECKOUT.map((t5) => {
487
+ const { key, value } = t5;
488
+ return {
489
+ key,
490
+ label: t(`stages.${key}`),
491
+ value
492
+ };
493
+ });
494
+ $[8] = t;
495
+ $[9] = t4;
496
+ } else t4 = $[9];
497
+ let t5;
498
+ if ($[10] !== t) {
499
+ t5 = t("step");
500
+ $[10] = t;
501
+ $[11] = t5;
502
+ } else t5 = $[11];
503
+ let t6;
504
+ if ($[12] !== t) {
505
+ t6 = t("steps");
506
+ $[12] = t;
507
+ $[13] = t6;
508
+ } else t6 = $[13];
509
+ let t7;
510
+ if ($[14] !== t) {
511
+ t7 = t("people");
512
+ $[14] = t;
513
+ $[15] = t7;
514
+ } else t7 = $[15];
515
+ let t8;
516
+ if ($[16] !== t0 || $[17] !== t1 || $[18] !== t2 || $[19] !== t3 || $[20] !== t4 || $[21] !== t5 || $[22] !== t6 || $[23] !== t7) {
517
+ t8 = /* @__PURE__ */ jsx(FunnelChart, {
518
+ caption: t0,
519
+ defaultIndex: 4,
520
+ label: t1,
521
+ overallLabel: t2,
522
+ stageLabel: t3,
523
+ stages: t4,
524
+ stepLabel: t5,
525
+ stepsLabel: t6,
526
+ valueLabel: t7
527
+ });
528
+ $[16] = t0;
529
+ $[17] = t1;
530
+ $[18] = t2;
531
+ $[19] = t3;
532
+ $[20] = t4;
533
+ $[21] = t5;
534
+ $[22] = t6;
535
+ $[23] = t7;
536
+ $[24] = t8;
537
+ } else t8 = $[24];
538
+ return t8;
539
+ }
540
+ const source$4 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart } from \"@stealthscale/component-charts\";\n\nimport { CHECKOUT } from \"./stages.ts\";\n\nexport function Rates(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n\n return (\n <FunnelChart\n caption={t(\"rates.caption\")}\n defaultIndex={4}\n label={t(\"checkout.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={CHECKOUT.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }))}\n stepLabel={t(\"step\")}\n stepsLabel={t(\"steps\")}\n valueLabel={t(\"people\")}\n />\n );\n}\n";
541
+ //#endregion
542
+ //#region src/funnel-chart/examples/replay.example.tsx
543
+ var replay_example_exports = /* @__PURE__ */ __exportAll({
544
+ Replay: () => Replay,
545
+ source: () => source$3
546
+ });
547
+ function Replay() {
548
+ const $ = c(37);
549
+ const { t } = useWords("funnel-chart");
550
+ const [run, setRun] = useState(0);
551
+ let t0;
552
+ if ($[0] !== t) {
553
+ t0 = t("replay.caption");
554
+ $[0] = t;
555
+ $[1] = t0;
556
+ } else t0 = $[1];
557
+ let t1;
558
+ if ($[2] !== t) {
559
+ t1 = t("checkout.label");
560
+ $[2] = t;
561
+ $[3] = t1;
562
+ } else t1 = $[3];
563
+ let t2;
564
+ if ($[4] !== t) {
565
+ t2 = t("overall");
566
+ $[4] = t;
567
+ $[5] = t2;
568
+ } else t2 = $[5];
569
+ let t3;
570
+ if ($[6] !== t) {
571
+ t3 = t("stage");
572
+ $[6] = t;
573
+ $[7] = t3;
574
+ } else t3 = $[7];
575
+ let t4;
576
+ if ($[8] !== t) {
577
+ t4 = CHECKOUT.map((t5) => {
578
+ const { key, value } = t5;
579
+ return {
580
+ key,
581
+ label: t(`stages.${key}`),
582
+ value
583
+ };
584
+ });
585
+ $[8] = t;
586
+ $[9] = t4;
587
+ } else t4 = $[9];
588
+ let t5;
589
+ if ($[10] !== t) {
590
+ t5 = t("step");
591
+ $[10] = t;
592
+ $[11] = t5;
593
+ } else t5 = $[11];
594
+ let t6;
595
+ if ($[12] !== t) {
596
+ t6 = t("steps");
597
+ $[12] = t;
598
+ $[13] = t6;
599
+ } else t6 = $[13];
600
+ let t7;
601
+ if ($[14] !== t) {
602
+ t7 = t("people");
603
+ $[14] = t;
604
+ $[15] = t7;
605
+ } else t7 = $[15];
606
+ let t8;
607
+ if ($[16] !== run || $[17] !== t0 || $[18] !== t1 || $[19] !== t2 || $[20] !== t3 || $[21] !== t4 || $[22] !== t5 || $[23] !== t6 || $[24] !== t7) {
608
+ t8 = /* @__PURE__ */ jsx(FunnelChart, {
609
+ animate: true,
610
+ caption: t0,
611
+ label: t1,
612
+ overallLabel: t2,
613
+ stageLabel: t3,
614
+ stages: t4,
615
+ stepLabel: t5,
616
+ stepsLabel: t6,
617
+ valueLabel: t7
618
+ }, run);
619
+ $[16] = run;
620
+ $[17] = t0;
621
+ $[18] = t1;
622
+ $[19] = t2;
623
+ $[20] = t3;
624
+ $[21] = t4;
625
+ $[22] = t5;
626
+ $[23] = t6;
627
+ $[24] = t7;
628
+ $[25] = t8;
629
+ } else t8 = $[25];
630
+ let t9;
631
+ if ($[26] !== run) {
632
+ t9 = () => {
633
+ setRun(run + 1);
634
+ };
635
+ $[26] = run;
636
+ $[27] = t9;
637
+ } else t9 = $[27];
638
+ let t10;
639
+ if ($[28] === Symbol.for("react.memo_cache_sentinel")) {
640
+ t10 = /* @__PURE__ */ jsx(RotateCcwIcon, {});
641
+ $[28] = t10;
642
+ } else t10 = $[28];
643
+ let t11;
644
+ if ($[29] !== t) {
645
+ t11 = t("replay.replay");
646
+ $[29] = t;
647
+ $[30] = t11;
648
+ } else t11 = $[30];
649
+ let t12;
650
+ if ($[31] !== t11 || $[32] !== t9) {
651
+ t12 = /* @__PURE__ */ jsxs(Button, {
652
+ onClick: t9,
653
+ size: "sm",
654
+ variant: "outline",
655
+ children: [t10, t11]
656
+ });
657
+ $[31] = t11;
658
+ $[32] = t9;
659
+ $[33] = t12;
660
+ } else t12 = $[33];
661
+ let t13;
662
+ if ($[34] !== t12 || $[35] !== t8) {
663
+ t13 = /* @__PURE__ */ jsxs(Stack, {
664
+ align: "flex-start",
665
+ children: [t8, t12]
666
+ });
667
+ $[34] = t12;
668
+ $[35] = t8;
669
+ $[36] = t13;
670
+ } else t13 = $[36];
671
+ return t13;
672
+ }
673
+ const source$3 = "import { type ReactElement, useState } from \"react\";\n\nimport { RotateCcwIcon } from \"lucide-react\";\n\nimport { Button } from \"@stealthscale/component-actions\";\nimport { Stack } from \"@stealthscale/component-layout\";\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart } from \"@stealthscale/component-charts\";\n\nimport { CHECKOUT } from \"./stages.ts\";\n\nexport function Replay(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n const [run, setRun] = useState(0);\n\n return (\n <Stack align=\"flex-start\">\n <FunnelChart\n animate\n caption={t(\"replay.caption\")}\n key={run}\n label={t(\"checkout.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={CHECKOUT.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }))}\n stepLabel={t(\"step\")}\n stepsLabel={t(\"steps\")}\n valueLabel={t(\"people\")}\n />\n <Button\n onClick={() => {\n setRun(run + 1);\n }}\n size=\"sm\"\n variant=\"outline\"\n >\n <RotateCcwIcon />\n {t(\"replay.replay\")}\n </Button>\n </Stack>\n );\n}\n";
674
+ //#endregion
675
+ //#region src/funnel-chart/examples/shape.example.tsx
676
+ var shape_example_exports = /* @__PURE__ */ __exportAll({
677
+ Shape: () => Shape,
678
+ source: () => source$2
679
+ });
680
+ function Shape() {
681
+ const $ = c(22);
682
+ const { t } = useWords("funnel-chart");
683
+ let t0;
684
+ if ($[0] !== t) {
685
+ t0 = t("shape.caption");
686
+ $[0] = t;
687
+ $[1] = t0;
688
+ } else t0 = $[1];
689
+ let t1;
690
+ if ($[2] !== t) {
691
+ t1 = t("checkout.label");
692
+ $[2] = t;
693
+ $[3] = t1;
694
+ } else t1 = $[3];
695
+ let t2;
696
+ if ($[4] !== t) {
697
+ t2 = t("overall");
698
+ $[4] = t;
699
+ $[5] = t2;
700
+ } else t2 = $[5];
701
+ let t3;
702
+ if ($[6] !== t) {
703
+ t3 = t("stage");
704
+ $[6] = t;
705
+ $[7] = t3;
706
+ } else t3 = $[7];
707
+ let t4;
708
+ if ($[8] !== t) {
709
+ t4 = CHECKOUT.map((t5) => {
710
+ const { key, value } = t5;
711
+ return {
712
+ key,
713
+ label: t(`stages.${key}`),
714
+ value
715
+ };
716
+ });
717
+ $[8] = t;
718
+ $[9] = t4;
719
+ } else t4 = $[9];
720
+ let t5;
721
+ if ($[10] !== t) {
722
+ t5 = t("step");
723
+ $[10] = t;
724
+ $[11] = t5;
725
+ } else t5 = $[11];
726
+ let t6;
727
+ if ($[12] !== t) {
728
+ t6 = t("people");
729
+ $[12] = t;
730
+ $[13] = t6;
731
+ } else t6 = $[13];
732
+ let t7;
733
+ if ($[14] !== t0 || $[15] !== t1 || $[16] !== t2 || $[17] !== t3 || $[18] !== t4 || $[19] !== t5 || $[20] !== t6) {
734
+ t7 = /* @__PURE__ */ jsx(FunnelChart, {
735
+ caption: t0,
736
+ label: t1,
737
+ overallLabel: t2,
738
+ stageLabel: t3,
739
+ stages: t4,
740
+ stepLabel: t5,
741
+ steps: false,
742
+ valueLabel: t6
743
+ });
744
+ $[14] = t0;
745
+ $[15] = t1;
746
+ $[16] = t2;
747
+ $[17] = t3;
748
+ $[18] = t4;
749
+ $[19] = t5;
750
+ $[20] = t6;
751
+ $[21] = t7;
752
+ } else t7 = $[21];
753
+ return t7;
754
+ }
755
+ const source$2 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart } from \"@stealthscale/component-charts\";\n\nimport { CHECKOUT } from \"./stages.ts\";\n\nexport function Shape(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n\n return (\n <FunnelChart\n caption={t(\"shape.caption\")}\n label={t(\"checkout.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={CHECKOUT.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }))}\n stepLabel={t(\"step\")}\n steps={false}\n valueLabel={t(\"people\")}\n />\n );\n}\n";
756
+ //#endregion
757
+ //#region src/funnel-chart/examples/trial.example.tsx
758
+ var trial_example_exports = /* @__PURE__ */ __exportAll({
759
+ Trial: () => Trial,
760
+ source: () => source$1
761
+ });
762
+ function Trial() {
763
+ const $ = c(25);
764
+ const { t } = useWords("funnel-chart");
765
+ let t0;
766
+ if ($[0] !== t) {
767
+ t0 = t("trial.caption");
768
+ $[0] = t;
769
+ $[1] = t0;
770
+ } else t0 = $[1];
771
+ let t1;
772
+ if ($[2] !== t) {
773
+ t1 = t("trial.label");
774
+ $[2] = t;
775
+ $[3] = t1;
776
+ } else t1 = $[3];
777
+ let t2;
778
+ if ($[4] !== t) {
779
+ t2 = t("overall");
780
+ $[4] = t;
781
+ $[5] = t2;
782
+ } else t2 = $[5];
783
+ let t3;
784
+ if ($[6] !== t) {
785
+ t3 = t("stage");
786
+ $[6] = t;
787
+ $[7] = t3;
788
+ } else t3 = $[7];
789
+ let t4;
790
+ if ($[8] !== t) {
791
+ t4 = TRIAL.map((t5) => {
792
+ const { key, value } = t5;
793
+ return {
794
+ key,
795
+ label: t(`stages.${key}`),
796
+ value
797
+ };
798
+ });
799
+ $[8] = t;
800
+ $[9] = t4;
801
+ } else t4 = $[9];
802
+ let t5;
803
+ if ($[10] !== t) {
804
+ t5 = t("step");
805
+ $[10] = t;
806
+ $[11] = t5;
807
+ } else t5 = $[11];
808
+ let t6;
809
+ if ($[12] !== t) {
810
+ t6 = t("steps");
811
+ $[12] = t;
812
+ $[13] = t6;
813
+ } else t6 = $[13];
814
+ let t7;
815
+ if ($[14] !== t) {
816
+ t7 = t("accounts");
817
+ $[14] = t;
818
+ $[15] = t7;
819
+ } else t7 = $[15];
820
+ let t8;
821
+ if ($[16] !== t0 || $[17] !== t1 || $[18] !== t2 || $[19] !== t3 || $[20] !== t4 || $[21] !== t5 || $[22] !== t6 || $[23] !== t7) {
822
+ t8 = /* @__PURE__ */ jsx(FunnelChart, {
823
+ caption: t0,
824
+ label: t1,
825
+ overallLabel: t2,
826
+ stageLabel: t3,
827
+ stages: t4,
828
+ stepLabel: t5,
829
+ stepsLabel: t6,
830
+ valueLabel: t7
831
+ });
832
+ $[16] = t0;
833
+ $[17] = t1;
834
+ $[18] = t2;
835
+ $[19] = t3;
836
+ $[20] = t4;
837
+ $[21] = t5;
838
+ $[22] = t6;
839
+ $[23] = t7;
840
+ $[24] = t8;
841
+ } else t8 = $[24];
842
+ return t8;
843
+ }
844
+ const source$1 = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart } from \"@stealthscale/component-charts\";\n\nimport { TRIAL } from \"./stages.ts\";\n\nexport function Trial(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n\n return (\n <FunnelChart\n caption={t(\"trial.caption\")}\n label={t(\"trial.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={TRIAL.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }))}\n stepLabel={t(\"step\")}\n stepsLabel={t(\"steps\")}\n valueLabel={t(\"accounts\")}\n />\n );\n}\n";
845
+ //#endregion
846
+ //#region src/funnel-chart/examples/widening.example.tsx
847
+ var widening_example_exports = /* @__PURE__ */ __exportAll({
848
+ Widening: () => Widening,
849
+ source: () => source
850
+ });
851
+ function Widening() {
852
+ const $ = c(26);
853
+ const { t } = useWords("funnel-chart");
854
+ let T0;
855
+ let stages;
856
+ let t0;
857
+ if ($[0] !== t) {
858
+ stages = WIDENING.map((t1) => {
859
+ const { key, value } = t1;
860
+ return {
861
+ key,
862
+ label: t(`stages.${key}`),
863
+ value
864
+ };
865
+ });
866
+ const widened = funnelWidenings(stages).map((stage) => t(`stages.${stage.key}`));
867
+ T0 = FunnelChart;
868
+ t0 = t("widening.caption", { stages: widened.join(", ") });
869
+ $[0] = t;
870
+ $[1] = T0;
871
+ $[2] = stages;
872
+ $[3] = t0;
873
+ } else {
874
+ T0 = $[1];
875
+ stages = $[2];
876
+ t0 = $[3];
877
+ }
878
+ let t1;
879
+ if ($[4] !== t) {
880
+ t1 = t("widening.label");
881
+ $[4] = t;
882
+ $[5] = t1;
883
+ } else t1 = $[5];
884
+ let t2;
885
+ if ($[6] !== t) {
886
+ t2 = t("overall");
887
+ $[6] = t;
888
+ $[7] = t2;
889
+ } else t2 = $[7];
890
+ let t3;
891
+ if ($[8] !== t) {
892
+ t3 = t("stage");
893
+ $[8] = t;
894
+ $[9] = t3;
895
+ } else t3 = $[9];
896
+ let t4;
897
+ if ($[10] !== t) {
898
+ t4 = t("step");
899
+ $[10] = t;
900
+ $[11] = t4;
901
+ } else t4 = $[11];
902
+ let t5;
903
+ if ($[12] !== t) {
904
+ t5 = t("steps");
905
+ $[12] = t;
906
+ $[13] = t5;
907
+ } else t5 = $[13];
908
+ let t6;
909
+ if ($[14] !== t) {
910
+ t6 = t("people");
911
+ $[14] = t;
912
+ $[15] = t6;
913
+ } else t6 = $[15];
914
+ let t7;
915
+ if ($[16] !== T0 || $[17] !== stages || $[18] !== t0 || $[19] !== t1 || $[20] !== t2 || $[21] !== t3 || $[22] !== t4 || $[23] !== t5 || $[24] !== t6) {
916
+ t7 = /* @__PURE__ */ jsx(T0, {
917
+ caption: t0,
918
+ label: t1,
919
+ overallLabel: t2,
920
+ stageLabel: t3,
921
+ stages,
922
+ stepLabel: t4,
923
+ stepsLabel: t5,
924
+ valueLabel: t6
925
+ });
926
+ $[16] = T0;
927
+ $[17] = stages;
928
+ $[18] = t0;
929
+ $[19] = t1;
930
+ $[20] = t2;
931
+ $[21] = t3;
932
+ $[22] = t4;
933
+ $[23] = t5;
934
+ $[24] = t6;
935
+ $[25] = t7;
936
+ } else t7 = $[25];
937
+ return t7;
938
+ }
939
+ const source = "import { type ReactElement } from \"react\";\n\nimport { useWords } from \"@stealthscale/specimen\";\n\nimport { FunnelChart, funnelWidenings } from \"@stealthscale/component-charts\";\n\nimport { WIDENING } from \"./stages.ts\";\n\nexport function Widening(): ReactElement {\n const { t } = useWords(\"funnel-chart\");\n const stages = WIDENING.map(({ key, value }) => ({ key, label: t(`stages.${key}`), value }));\n const widened = funnelWidenings(stages).map((stage) => t(`stages.${stage.key}`));\n\n return (\n <FunnelChart\n caption={t(\"widening.caption\", { stages: widened.join(\", \") })}\n label={t(\"widening.label\")}\n overallLabel={t(\"overall\")}\n stageLabel={t(\"stage\")}\n stages={stages}\n stepLabel={t(\"step\")}\n stepsLabel={t(\"steps\")}\n valueLabel={t(\"people\")}\n />\n );\n}\n";
940
+ //#endregion
941
+ //#region src/funnel-chart/funnel-chart.specimen.tsx
942
+ /**
943
+ * Catalogue page for the funnel chart.
944
+ *
945
+ * @remarks
946
+ * The funnel chart has no recipe of its own: the chart's recipe styles its figure, so every scene
947
+ * is hand-written. The scenes render a shop's checkout with its biggest loss in the caption, the
948
+ * tooltip at the last stage, the checkout counted from two queries, a hiring pipeline in a
949
+ * palette without the counts on its stages, an advert's funnel in compact counts, the checkout
950
+ * without its table, a trial of two stages, the checkout at a phone's width, the stages animated
951
+ * in with a replay, and a funnel without stages. Every scene renders a component from
952
+ * `examples/` and shows that file as its source. The words are keys under `funnel-chart` in
953
+ * `locales/en/specimen/funnel-chart.json`.
954
+ */
955
+ /**
956
+ * Hand-written scene for a shop's checkout, its biggest loss named in the caption.
957
+ */
958
+ const checkedOut = {
959
+ about: "funnel-chart.checkout.about",
960
+ draw: () => /* @__PURE__ */ jsx(Room, {
961
+ size: "lg",
962
+ children: /* @__PURE__ */ jsx(Checkout, {})
963
+ }),
964
+ example: checkout_example_exports,
965
+ title: "funnel-chart.checkout.title"
966
+ };
967
+ /**
968
+ * Hand-written scene for the tooltip at the last stage.
969
+ */
970
+ const pointed = {
971
+ about: "funnel-chart.rates.about",
972
+ draw: () => /* @__PURE__ */ jsx(Room, {
973
+ size: "lg",
974
+ children: /* @__PURE__ */ jsx(Rates, {})
975
+ }),
976
+ example: rates_example_exports,
977
+ title: "funnel-chart.rates.title"
978
+ };
979
+ /**
980
+ * Hand-written scene for a funnel whose fourth stage widens.
981
+ */
982
+ const widened = {
983
+ about: "funnel-chart.widening.about",
984
+ draw: () => /* @__PURE__ */ jsx(Room, {
985
+ size: "lg",
986
+ children: /* @__PURE__ */ jsx(Widening, {})
987
+ }),
988
+ example: widening_example_exports,
989
+ title: "funnel-chart.widening.title"
990
+ };
991
+ /**
992
+ * Hand-written scene for a hiring pipeline in a palette, without the counts on its stages.
993
+ */
994
+ const tinted = {
995
+ about: "funnel-chart.hiring.about",
996
+ draw: () => /* @__PURE__ */ jsx(Room, {
997
+ size: "lg",
998
+ children: /* @__PURE__ */ jsx(Hiring, {})
999
+ }),
1000
+ example: hiring_example_exports,
1001
+ title: "funnel-chart.hiring.title"
1002
+ };
1003
+ /**
1004
+ * Hand-written scene for an advert's funnel in compact counts.
1005
+ */
1006
+ const compact = {
1007
+ about: "funnel-chart.advert.about",
1008
+ draw: () => /* @__PURE__ */ jsx(Room, {
1009
+ size: "lg",
1010
+ children: /* @__PURE__ */ jsx(Advert, {})
1011
+ }),
1012
+ example: advert_example_exports,
1013
+ title: "funnel-chart.advert.title"
1014
+ };
1015
+ /**
1016
+ * Hand-written scene for the checkout without its table.
1017
+ */
1018
+ const bare = {
1019
+ about: "funnel-chart.shape.about",
1020
+ draw: () => /* @__PURE__ */ jsx(Room, {
1021
+ size: "lg",
1022
+ children: /* @__PURE__ */ jsx(Shape, {})
1023
+ }),
1024
+ example: shape_example_exports,
1025
+ title: "funnel-chart.shape.title"
1026
+ };
1027
+ /**
1028
+ * Hand-written scene for a trial of two stages.
1029
+ */
1030
+ const paired = {
1031
+ about: "funnel-chart.trial.about",
1032
+ draw: () => /* @__PURE__ */ jsx(Room, {
1033
+ size: "lg",
1034
+ children: /* @__PURE__ */ jsx(Trial, {})
1035
+ }),
1036
+ example: trial_example_exports,
1037
+ title: "funnel-chart.trial.title"
1038
+ };
1039
+ /**
1040
+ * Hand-written scene for the checkout at a phone's width.
1041
+ */
1042
+ const narrow = {
1043
+ about: "funnel-chart.narrow.about",
1044
+ draw: () => /* @__PURE__ */ jsx(Room, {
1045
+ size: "xs",
1046
+ children: /* @__PURE__ */ jsx(Checkout, {})
1047
+ }),
1048
+ example: checkout_example_exports,
1049
+ title: "funnel-chart.narrow.title"
1050
+ };
1051
+ /**
1052
+ * Hand-written scene for the stages animated in, with a replay.
1053
+ */
1054
+ const animated = {
1055
+ about: "funnel-chart.replay.about",
1056
+ draw: () => /* @__PURE__ */ jsx(Room, {
1057
+ size: "lg",
1058
+ children: /* @__PURE__ */ jsx(Replay, {})
1059
+ }),
1060
+ example: replay_example_exports,
1061
+ title: "funnel-chart.replay.title"
1062
+ };
1063
+ /**
1064
+ * Hand-written scene for a funnel without stages.
1065
+ */
1066
+ const empty = {
1067
+ about: "funnel-chart.quiet.about",
1068
+ draw: () => /* @__PURE__ */ jsx(Room, {
1069
+ size: "lg",
1070
+ children: /* @__PURE__ */ jsx(Quiet, {})
1071
+ }),
1072
+ example: quiet_example_exports,
1073
+ title: "funnel-chart.quiet.title"
1074
+ };
1075
+ var funnel_chart_specimen_default = specimen({
1076
+ about: "funnel-chart.about",
1077
+ id: "components/charts/funnel-chart",
1078
+ imports: "import { FunnelChart } from \"@stealthscale/component-charts\";",
1079
+ scenes: [
1080
+ checkedOut,
1081
+ pointed,
1082
+ widened,
1083
+ tinted,
1084
+ compact,
1085
+ bare,
1086
+ paired,
1087
+ narrow,
1088
+ animated,
1089
+ empty
1090
+ ],
1091
+ title: "funnel-chart.title"
1092
+ });
1093
+ //#endregion
1094
+ export { animated, bare, checkedOut, compact, funnel_chart_specimen_default as default, empty, narrow, paired, pointed, tinted, widened };