Skip to content

Commit 6372145

Browse files
committed
use theme breakpoint and other comments
1 parent 14c140f commit 6372145

File tree

2 files changed

+56
-65
lines changed

2 files changed

+56
-65
lines changed

apps/developer-hub/src/components/RewardSimulator/index.module.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
gap: theme.spacing(6);
1111
padding: theme.spacing(4);
1212

13-
@media (width >= 640px) {
13+
@include theme.breakpoint("sm") {
1414
grid-template-columns: 1fr 1fr;
1515
}
1616
}
@@ -47,7 +47,7 @@
4747
grid-template-columns: 1fr;
4848
gap: theme.spacing(6);
4949

50-
@media (width >= 640px) {
50+
@include theme.breakpoint("sm") {
5151
grid-template-columns: 1fr 1fr;
5252
}
5353
}

apps/developer-hub/src/components/RewardSimulator/index.tsx

Lines changed: 54 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
import { Card } from "@pythnetwork/component-library/Card";
44
import { Label } from "@pythnetwork/component-library/unstyled/Label";
55
import { Input } from "@pythnetwork/component-library/unstyled/TextField";
6-
import { clsx } from "clsx";
76
import { useState, useEffect } from "react";
87

98
import styles from "./index.module.scss";
109

1110
// Components for mathematical notation
1211
const MathExpression = ({ children }: { children: React.ReactNode }) => (
13-
<span className={clsx(styles.mathExpression)}>{children}</span>
12+
<span className={styles.mathExpression}>{children}</span>
1413
);
1514

1615
// Component for subscripts and superscripts
@@ -35,42 +34,38 @@ const RewardSimulator: React.FC = () => {
3534
const [delegatorRewardRate, setDelegatorRewardRate] = useState(0);
3635

3736
useEffect(() => {
38-
const calculateRewards = () => {
39-
const totalStake = publisherStake + delegatorStake;
40-
const eligibleAmount = Math.min(totalStake, maxCap);
41-
const totalReward = (rewardRate / 100) * eligibleAmount;
42-
43-
const publisherRewardBase =
44-
(rewardRate / 100) * Math.min(publisherStake, maxCap);
45-
const delegatorRewardBase = totalReward - publisherRewardBase;
46-
47-
const delegatorFeeAmount = (delegatorFee / 100) * delegatorRewardBase;
48-
49-
const finalDelegatorReward = delegatorRewardBase - delegatorFeeAmount;
50-
const finalPublisherReward = publisherRewardBase + delegatorFeeAmount;
51-
52-
setPublisherReward(Number(finalPublisherReward.toFixed(2)));
53-
setDelegatorReward(Number(finalDelegatorReward.toFixed(2)));
54-
setPublisherRewardRate(
55-
Number(((finalPublisherReward * 100) / publisherStake).toFixed(2)),
56-
);
57-
setDelegatorRewardRate(
58-
Number(((finalDelegatorReward * 100) / delegatorStake).toFixed(2)),
59-
);
60-
};
61-
62-
calculateRewards();
37+
const totalStake = publisherStake + delegatorStake;
38+
const eligibleAmount = Math.min(totalStake, maxCap);
39+
const totalReward = (rewardRate / 100) * eligibleAmount;
40+
41+
const publisherRewardBase =
42+
(rewardRate / 100) * Math.min(publisherStake, maxCap);
43+
const delegatorRewardBase = totalReward - publisherRewardBase;
44+
45+
const delegatorFeeAmount = (delegatorFee / 100) * delegatorRewardBase;
46+
47+
const finalDelegatorReward = delegatorRewardBase - delegatorFeeAmount;
48+
const finalPublisherReward = publisherRewardBase + delegatorFeeAmount;
49+
50+
setPublisherReward(Number(finalPublisherReward.toFixed(2)));
51+
setDelegatorReward(Number(finalDelegatorReward.toFixed(2)));
52+
setPublisherRewardRate(
53+
Number(((finalPublisherReward * 100) / publisherStake).toFixed(2)),
54+
);
55+
setDelegatorRewardRate(
56+
Number(((finalDelegatorReward * 100) / delegatorStake).toFixed(2)),
57+
);
6358
}, [publisherStake, delegatorStake, maxCap, delegatorFee, rewardRate]);
6459

6560
return (
6661
<Card
6762
variant="secondary"
6863
title="Reward Simulator"
6964
nonInteractive
70-
className={clsx(styles.card)}
65+
className={styles.card}
7166
>
72-
<div className={clsx(styles.inputGrid)}>
73-
<div className={clsx(styles.inputGroup)}>
67+
<div className={styles.inputGrid}>
68+
<div className={styles.inputGroup}>
7469
<Label htmlFor="publisher-stake">
7570
Publisher Stake (
7671
<MathExpression>
@@ -86,12 +81,12 @@ const RewardSimulator: React.FC = () => {
8681
onChange={(e) => {
8782
setPublisherStake(Number(e.target.value));
8883
}}
89-
className={clsx(styles.input)}
84+
className={styles.input ?? ""}
9085
min="0"
9186
/>
9287
</div>
9388

94-
<div className={clsx(styles.inputGroup)}>
89+
<div className={styles.inputGroup}>
9590
<Label htmlFor="delegator-stake">
9691
Delegator Stake (
9792
<MathExpression>
@@ -107,12 +102,12 @@ const RewardSimulator: React.FC = () => {
107102
onChange={(e) => {
108103
setDelegatorStake(Number(e.target.value));
109104
}}
110-
className={clsx(styles.input)}
105+
className={styles.input ?? ""}
111106
min="0"
112107
/>
113108
</div>
114109

115-
<div className={clsx(styles.inputGroup)}>
110+
<div className={styles.inputGroup}>
116111
<Label htmlFor="max-cap">
117112
Maximum Cap (
118113
<MathExpression>
@@ -127,12 +122,12 @@ const RewardSimulator: React.FC = () => {
127122
onChange={(e) => {
128123
setMaxCap(Number(e.target.value));
129124
}}
130-
className={clsx(styles.input)}
125+
className={styles.input ?? ""}
131126
min="0"
132127
/>
133128
</div>
134129

135-
<div className={clsx(styles.inputGroup)}>
130+
<div className={styles.inputGroup}>
136131
<Label htmlFor="delegator-fee">
137132
Delegator Fee (<MathExpression>f</MathExpression>) (%):
138133
</Label>
@@ -143,14 +138,14 @@ const RewardSimulator: React.FC = () => {
143138
onChange={(e) => {
144139
setDelegatorFee(Number(e.target.value));
145140
}}
146-
className={clsx(styles.input)}
141+
className={styles.input ?? ""}
147142
min="0"
148143
max="100"
149144
step="0.1"
150145
/>
151146
</div>
152147

153-
<div className={clsx(styles.inputGroup)}>
148+
<div className={styles.inputGroup}>
154149
<Label htmlFor="reward-rate">
155150
Reward Rate (<MathExpression>r</MathExpression>) (%):
156151
</Label>
@@ -161,76 +156,72 @@ const RewardSimulator: React.FC = () => {
161156
onChange={(e) => {
162157
setRewardRate(Number(e.target.value));
163158
}}
164-
className={clsx(styles.input)}
159+
className={styles.input ?? ""}
165160
min="0"
166161
max="100"
167162
step="0.1"
168163
/>
169164
</div>
170165
</div>
171166

172-
<div className={clsx(styles.resultsSection)}>
173-
<div className={clsx(styles.resultsGrid)}>
174-
<div className={clsx(styles.resultGroup)}>
175-
<h4 className={clsx(styles.resultTitle)}>Calculated Rewards</h4>
176-
<div className={clsx(styles.resultValues)}>
177-
<p className={clsx(styles.resultItem)}>
178-
<span className={clsx(styles.resultLabel)}>
167+
<div className={styles.resultsSection}>
168+
<div className={styles.resultsGrid}>
169+
<div className={styles.resultGroup}>
170+
<h4 className={styles.resultTitle}>Calculated Rewards</h4>
171+
<div className={styles.resultValues}>
172+
<p className={styles.resultItem}>
173+
<span className={styles.resultLabel}>
179174
Publisher Reward (
180175
<MathExpression>
181176
R<Sup>p</Sup>
182177
<Sub>p</Sub>
183178
</MathExpression>
184179
):
185180
</span>{" "}
186-
<span className={clsx(styles.resultValue)}>
187-
{publisherReward}
188-
</span>
181+
<span className={styles.resultValue}>{publisherReward}</span>
189182
</p>
190-
<p className={clsx(styles.resultItem)}>
191-
<span className={clsx(styles.resultLabel)}>
183+
<p className={styles.resultItem}>
184+
<span className={styles.resultLabel}>
192185
Delegator Reward (
193186
<MathExpression>
194187
R<Sup>d</Sup>
195188
<Sub>p</Sub>
196189
</MathExpression>
197190
):
198191
</span>{" "}
199-
<span className={clsx(styles.resultValue)}>
200-
{delegatorReward}
201-
</span>
192+
<span className={styles.resultValue}>{delegatorReward}</span>
202193
</p>
203194
</div>
204195
</div>
205196

206-
<div className={clsx(styles.resultGroup)}>
207-
<h4 className={clsx(styles.resultTitle)}>
197+
<div className={styles.resultGroup}>
198+
<h4 className={styles.resultTitle}>
208199
Calculated Reward Rates (Yearly)
209200
</h4>
210-
<div className={clsx(styles.resultValues)}>
211-
<p className={clsx(styles.resultItem)}>
212-
<span className={clsx(styles.resultLabel)}>
201+
<div className={styles.resultValues}>
202+
<p className={styles.resultItem}>
203+
<span className={styles.resultLabel}>
213204
Publisher Rate (
214205
<MathExpression>
215206
r<Sup>p</Sup>
216207
<Sub>p</Sub>
217208
</MathExpression>
218209
):
219210
</span>{" "}
220-
<span className={clsx(styles.resultValue)}>
211+
<span className={styles.resultValue}>
221212
{publisherRewardRate}%
222213
</span>
223214
</p>
224-
<p className={clsx(styles.resultItem)}>
225-
<span className={clsx(styles.resultLabel)}>
215+
<p className={styles.resultItem}>
216+
<span className={styles.resultLabel}>
226217
Delegator Rate (
227218
<MathExpression>
228219
r<Sup>d</Sup>
229220
<Sub>p</Sub>
230221
</MathExpression>
231222
):
232223
</span>{" "}
233-
<span className={clsx(styles.resultValue)}>
224+
<span className={styles.resultValue}>
234225
{delegatorRewardRate}%
235226
</span>
236227
</p>

0 commit comments

Comments
 (0)