@papernote/ui 1.11.2 → 1.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/FunnelChart.d.ts.map +1 -1
- package/dist/index.esm.js +6 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/styles.css +4 -0
- package/package.json +1 -1
- package/src/components/FunnelChart.tsx +17 -13
package/dist/styles.css
CHANGED
package/package.json
CHANGED
|
@@ -62,9 +62,11 @@ export default function FunnelChart({
|
|
|
62
62
|
|
|
63
63
|
const maxCount = Math.max(...stages.map(s => s.count), 1);
|
|
64
64
|
const stageHeight = height / stages.length;
|
|
65
|
-
const svgWidth =
|
|
65
|
+
const svgWidth = 450;
|
|
66
66
|
const padding = 20;
|
|
67
|
-
const
|
|
67
|
+
const leftLabelSpace = 50; // Space for conversion rate labels on left
|
|
68
|
+
const rightLabelSpace = 160; // Space for stage name + value labels on right
|
|
69
|
+
const funnelWidth = svgWidth - padding * 2 - leftLabelSpace - rightLabelSpace;
|
|
68
70
|
|
|
69
71
|
return (
|
|
70
72
|
<div className={className}>
|
|
@@ -75,7 +77,7 @@ export default function FunnelChart({
|
|
|
75
77
|
const y = idx * stageHeight;
|
|
76
78
|
const topWidth = funnelWidth * ratio;
|
|
77
79
|
const bottomWidth = funnelWidth * nextRatio;
|
|
78
|
-
const centerX = padding + funnelWidth / 2;
|
|
80
|
+
const centerX = padding + leftLabelSpace + funnelWidth / 2;
|
|
79
81
|
const color = stage.color || defaultColors[idx % defaultColors.length];
|
|
80
82
|
|
|
81
83
|
// Conversion rate
|
|
@@ -139,17 +141,19 @@ export default function FunnelChart({
|
|
|
139
141
|
</text>
|
|
140
142
|
)}
|
|
141
143
|
|
|
142
|
-
{/* Conversion rate on left */}
|
|
144
|
+
{/* Conversion rate on left — shows stage-to-stage conversion */}
|
|
143
145
|
{showConversion && conversionRate !== null && (
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
146
|
+
<g>
|
|
147
|
+
<text
|
|
148
|
+
x={centerX - funnelWidth / 2 - 16}
|
|
149
|
+
y={y + 4}
|
|
150
|
+
textAnchor="end"
|
|
151
|
+
className="fill-ink-500"
|
|
152
|
+
style={{ fontSize: '10px', fontWeight: 500 }}
|
|
153
|
+
>
|
|
154
|
+
↓ {conversionRate}%
|
|
155
|
+
</text>
|
|
156
|
+
</g>
|
|
153
157
|
)}
|
|
154
158
|
</g>
|
|
155
159
|
);
|