Skip to content

Commit a067f35

Browse files
committed
UI improvements
1 parent caef19d commit a067f35

File tree

8 files changed

+47
-20
lines changed

8 files changed

+47
-20
lines changed

packages/nextjs/components/kiddo-perks/ChildDashboard.tsx

+1-4
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,9 @@ export const ChildDashboard = () => {
2222

2323
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
2424
<TasksProgress completed={completedTasksNumber} pending={pendingTasksNumber} />
25-
26-
<TokensBalance />
25+
<TokensBalance balanceOf={account?.address || ""} />
2726
</div>
28-
2927
<TasksList />
30-
3128
<PerksListGrid childTokens={rawTokenBalance} />
3229
</div>
3330
);

packages/nextjs/components/kiddo-perks/ChildDashboard/PerksListGrid.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const PerksListGrid = ({ childTokens }: PerksListGridProps) => {
3535
return (
3636
<section className="mt-6">
3737
<h2 className="text-lg font-semibold mb-4">Available Perks</h2>
38-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
38+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
3939
{perks.map(perk => (
4040
<PerkRedeemCard key={perk.id} perk={perk} childTokens={childTokens} handleRedeemPerk={handleRedeemPerk} />
4141
))}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { useAccount } from "wagmi";
2+
import { useScaffoldReadContract } from "~~/hooks/scaffold-eth";
3+
import { Task } from "~~/types/kiddoPerks";
4+
5+
type TaskCardProps = {
6+
task: Task;
7+
};
8+
9+
export const TaskCard = ({ task }: TaskCardProps) => {
10+
const account = useAccount();
11+
12+
const { data: isTaskCompleted } = useScaffoldReadContract({
13+
contractName: "KiddoPerks",
14+
functionName: "s_completedTasksByUser",
15+
args: [account.address, BigInt(task.id)],
16+
});
17+
18+
return (
19+
<div key={task.id} className="p-4 flex justify-between items-center">
20+
<div>
21+
<h3 className="text-lg font-medium">{task.title}</h3>
22+
<p className={`text-sm font-semibold ${isTaskCompleted ? "text-success" : "text-warning"}`}>
23+
{isTaskCompleted ? "Completed" : "Pending"}{" "}
24+
</p>
25+
</div>
26+
{/* <button className="btn btn-success text-sm text-success-content hover:underline">Mark as Done</button> */}
27+
</div>
28+
);
29+
};

packages/nextjs/components/kiddo-perks/ChildDashboard/TasksList.tsx

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { TaskCard } from "./TaskCard";
12
import { useTaskManager } from "~~/hooks/kiddo-perks/useTasksManager";
23

34
export const TasksList = () => {
@@ -19,13 +20,7 @@ export const TasksList = () => {
1920
<h2 className="text-xl font-semibold mb-4">Your Tasks</h2>
2021
<div className="bg-primary shadow-md rounded-lg divide-y divide-base">
2122
{tasks.map(task => (
22-
<div key={task.id} className="p-4 flex justify-between items-center">
23-
<div>
24-
<h3 className="text-lg font-medium">{task.title}</h3>
25-
<p className="text-sm font-semibold text-warning">Pending</p>
26-
</div>
27-
<button className="btn btn-success text-sm text-success-content hover:underline">Mark as Done</button>
28-
</div>
23+
<TaskCard key={task.id} task={task} />
2924
))}
3025
</div>
3126
</section>

packages/nextjs/components/kiddo-perks/ChildDashboard/TasksProgress.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const TasksProgress = ({ completed, pending }: TasksProgressProps) => {
1010
return (
1111
<section className="bg-primary shadow-md rounded-lg p-4">
1212
<h2 className="text-lg font-semibold mb-4">Your Progress</h2>
13-
<div className="flex items-center justify-between">
13+
<div className="flex items-center justify-between gap-10">
1414
<div>
1515
<p className="text-sm ">Tasks Completed</p>
1616
<p className="text-xl font-bold text-success">{completed}</p>

packages/nextjs/components/kiddo-perks/ChildDashboard/TokensBalance.tsx

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
import { useAccount } from "wagmi";
21
import { useTokenBalance } from "~~/hooks/kiddo-perks/useTokenBalance";
32

4-
export const TokensBalance = () => {
5-
const account = useAccount();
6-
const { formattedTokenBalance } = useTokenBalance(account.address || "");
3+
type TokensBalanceProps = {
4+
balanceOf: string;
5+
};
6+
7+
export const TokensBalance = ({ balanceOf }: TokensBalanceProps) => {
8+
const { formattedTokenBalance } = useTokenBalance(balanceOf);
79
return (
810
<section className="bg-secondary shadow-md rounded-lg p-4">
911
<h2 className="text-lg font-semibold mb-4">Your Tokens</h2>
1012
<div className="text-center">
1113
<p className="text-3xl font-bold text-primary">{formattedTokenBalance}</p>
12-
<p className="text-sm ">Current Tokens</p>
14+
<p className="text-sm ">KDO</p>
1315
</div>
1416
</section>
1517
);

packages/nextjs/contracts/deployedContracts.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract";
77
const deployedContracts = {
88
31337: {
99
KDOToken: {
10-
address: "0xf7cd8fa9b94db2aa972023b379c7f72c65e4de9d",
10+
address: "0x700b6a60ce7eaaea56f065753d8dcb9653dbad35",
1111
abi: [
1212
{
1313
type: "constructor",
@@ -450,7 +450,7 @@ const deployedContracts = {
450450
},
451451
},
452452
KiddoPerks: {
453-
address: "0x12975173b87f7595ee45dffb2ab812ece596bf84",
453+
address: "0xa15bb66138824a1c7167f5e85b957d04dd34e468",
454454
abi: [
455455
{
456456
type: "constructor",

packages/nextjs/hooks/kiddo-perks/useTokenBalance.ts

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ export const useTokenBalance = (address: Address) => {
88
args: [address],
99
});
1010

11+
if (userTokenBalance == undefined) {
12+
return { rawTokenBalance: 0, formattedTokenBalance: 0 };
13+
}
14+
1115
const rawTokenBalance = Number(userTokenBalance);
1216
const formattedTokenBalance = Number(userTokenBalance) / 10 ** 18;
1317

0 commit comments

Comments
 (0)