Skip to content

Commit 528c0d9

Browse files
authored
Merge pull request #40 from Armolas/Muritadhor-New
Muritadhor new
2 parents 5dfef47 + 07cc8b0 commit 528c0d9

File tree

7 files changed

+175
-6
lines changed

7 files changed

+175
-6
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import Image from "next/image";
2+
import SkillBadge from "./SkillBadge";
3+
import SocialLinks from "./SocialLinks";
4+
import { Award, FileText, Heart } from "lucide-react";
5+
import { Address } from "~~/components/scaffold-eth/Address/Address";
6+
7+
interface BuilderProfileProps {
8+
name: string;
9+
avatarUrl: string;
10+
bio: string;
11+
ethAddress: string;
12+
skills: Array<{ name: string; proficiency: number }>;
13+
hobbies: string[];
14+
}
15+
16+
const BuilderProfile = ({ name, avatarUrl, bio, ethAddress, skills, hobbies }: BuilderProfileProps) => {
17+
return (
18+
<div className="container mx-auto px-4 py-8 max-w-4xl shadow-2xl rounded-lg bg-base-300 relative">
19+
<div className="card bg-primary-content backdrop-blur-sm border border-purple-100/20 shadow-lg"></div>
20+
<div className="absolute inset-0 bg-gradient-to-br from-purple-50/50 to-purple-100/30 -z-10" />
21+
22+
<div className="flex flex-col items-center space-y-4 pt-8 pb-6">
23+
<div className="avatar">
24+
<div className="w-32 rounded-full ring ring-primary-content ring-offset-base-100 ring-offset-2 shadow-lg">
25+
<Image src={avatarUrl} alt={name} className="object-cover" width={128} height={128} />
26+
</div>
27+
</div>
28+
<div className="text-center items-center">
29+
<h1 className="text-3xl font-bold text-primary-content">{name}</h1>
30+
<div className="flex justify-center text-primary-content">
31+
<Address address={ethAddress} />
32+
</div>
33+
</div>
34+
</div>
35+
36+
<div className="card-body pb-8 space-y-8">
37+
<div className="space-y-4">
38+
<div className="flex items-center gap-2">
39+
<FileText className="h-5 w-5 text-primary-content" />
40+
<h2 className="text-xl font-semibold text-primary-content">Bio</h2>
41+
</div>
42+
<p className="text-primary-content leading-relaxed pl-7">{bio}</p>
43+
</div>
44+
45+
<div className="space-y-4">
46+
<div className="flex items-center gap-2">
47+
<Award className="h-5 w-5 text-primary-content" />
48+
<h2 className="text-xl font-semibold text-primary-content">Skills</h2>
49+
</div>
50+
<div className="flex flex-wrap gap-3 pl-7">
51+
{skills.map(skill => (
52+
<SkillBadge key={skill.name} name={skill.name} proficiency={skill.proficiency} />
53+
))}
54+
</div>
55+
</div>
56+
57+
<div className="space-y-4">
58+
<div className="flex items-center gap-2">
59+
<Heart className="h-5 w-5 text-primary-content" />
60+
<h2 className="text-xl font-semibold text-primary-content">Hobbies & Interests</h2>
61+
</div>
62+
<div className="flex flex-wrap gap-2 pl-7">
63+
{hobbies.map(hobby => (
64+
<div key={hobby} className="badge badge-outline bg-white/80 text-gray-700 p-2">
65+
{hobby}
66+
</div>
67+
))}
68+
</div>
69+
</div>
70+
71+
<div className="pt-4">
72+
<SocialLinks />
73+
</div>
74+
</div>
75+
</div>
76+
);
77+
};
78+
79+
export default BuilderProfile;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import React from "react";
2+
3+
interface SkillBadgeProps {
4+
name: string;
5+
proficiency: number; // 1-5
6+
}
7+
8+
const SkillBadge = ({ name, proficiency }: SkillBadgeProps) => {
9+
// Ensure proficiency is within bounds
10+
const level = Math.min(Math.max(proficiency, 1), 5);
11+
12+
return (
13+
<div className="flex flex-col items-center bg-white/80 rounded-lg p-2 shadow-sm border border-purple-100">
14+
<span className="text-sm font-medium text-gray-700">{name}</span>
15+
<div className="flex mt-1 gap-1">
16+
{[...Array(5)].map((_, i) => (
17+
<div key={i} className={`h-1.5 w-4 rounded-full ${i < level ? "bg-[#385184]" : "bg-white"}`} />
18+
))}
19+
</div>
20+
</div>
21+
);
22+
};
23+
24+
export default SkillBadge;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import React from "react";
2+
import { Github, Link, Linkedin, Twitter } from "lucide-react";
3+
4+
const socialIcons = [
5+
{ name: "Twitter", url: "https://twitter.com/armolas_06", icon: Twitter },
6+
{ name: "GitHub", url: "https://github.com/armolas", icon: Github },
7+
{ name: "LinkedIn", url: "https://linkedin.com/in/arowolomuritadhor", icon: Linkedin },
8+
{ name: "Website", url: "https://armolasportfolio.netlify.app", icon: Link },
9+
];
10+
11+
const SocialLinks = () => {
12+
return (
13+
<div className="flex justify-center gap-4 ">
14+
{socialIcons.map(
15+
social =>
16+
social.url && (
17+
<a
18+
key={social.name}
19+
href={social.url}
20+
target="_blank"
21+
rel="noopener noreferrer"
22+
className="btn btn-circle btn-outline bg-primary hover:bg-purple-50 text-primary-content hover:text-[#385184] border-purple-100 tooltip tooltip-top"
23+
data-tip={social.name}
24+
>
25+
<social.icon size={18} />
26+
<span className="sr-only">{social.name}</span>
27+
</a>
28+
),
29+
)}
30+
</div>
31+
);
32+
};
33+
34+
export default SocialLinks;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React from "react";
2+
import BuilderProfile from "./components/BuilderProfile";
3+
4+
const Index = () => {
5+
return (
6+
<div className="min-h-screen bg-primary flex items-center justify-center p-4 text-black dark:text-white/80">
7+
<BuilderProfile
8+
name="Muritadhor Arowolo"
9+
avatarUrl="https://images.unsplash.com/photo-1531297484001-80022131f5a1?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1287&q=80"
10+
bio="Passionate web3 builder and developer focused on creating decentralized applications. Contributing to buildguild and exploring the intersection of blockchain technology, user experience, and community building. Always learning and sharing knowledge with fellow builders."
11+
ethAddress="0x74370B567f5c65bef0428B9c78df5C691B632Cf7"
12+
skills={[
13+
{ name: "React", proficiency: 4 },
14+
{ name: "Solidity", proficiency: 5 },
15+
{ name: "TypeScript", proficiency: 4 },
16+
{ name: "Blockchain", proficiency: 4 },
17+
{ name: "Next.js", proficiency: 4 },
18+
{ name: "Python", proficiency: 5 },
19+
{ name: "Clarity", proficiency: 4 },
20+
{ name: "Smart Contracts", proficiency: 4 },
21+
]}
22+
hobbies={["Open Source", "Hackathons", "Debugging", "DeFi", "Painting", "Music", "Coooking"]}
23+
/>
24+
</div>
25+
);
26+
};
27+
28+
export default Index;

packages/nextjs/next.config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ const nextConfig: NextConfig = {
2626
protocol: "https",
2727
hostname: "res.cloudinary.com",
2828
},
29+
{
30+
protocol: "https",
31+
hostname: "images.unsplash.com",
32+
},
2933
],
3034
},
3135
webpack: config => {

packages/nextjs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"burner-connector": "0.0.12",
2626
"daisyui": "^5.0.9",
2727
"kubo-rpc-client": "^5.0.2",
28-
"lucide-react": "^0.510.0",
28+
"lucide-react": "^0.511.0",
2929
"next": "^15.2.3",
3030
"next-nprogress-bar": "^2.3.13",
3131
"next-themes": "^0.3.0",

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4023,7 +4023,7 @@ __metadata:
40234023
eslint-config-prettier: ^10.1.1
40244024
eslint-plugin-prettier: ^5.2.4
40254025
kubo-rpc-client: ^5.0.2
4026-
lucide-react: ^0.510.0
4026+
lucide-react: ^0.511.0
40274027
next: ^15.2.3
40284028
next-nprogress-bar: ^2.3.13
40294029
next-themes: ^0.3.0
@@ -13415,12 +13415,12 @@ __metadata:
1341513415
languageName: node
1341613416
linkType: hard
1341713417

13418-
"lucide-react@npm:^0.510.0":
13419-
version: 0.510.0
13420-
resolution: "lucide-react@npm:0.510.0"
13418+
"lucide-react@npm:^0.511.0":
13419+
version: 0.511.0
13420+
resolution: "lucide-react@npm:0.511.0"
1342113421
peerDependencies:
1342213422
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
13423-
checksum: bc823d2a69255738558fe1ddff18fa9b1f602539928ff4c766a790b190bfc14140061df9cd4fab1680c523053e823668fdc4d726f82f4141f53ee9c58b6916a0
13423+
checksum: b347d276c1a8cdc51f6ca44ef09d51a3a916bfb58ef0a0d55c729b1afb54877c1bbad981313984751ea13e4cc9903bfeae346f112184c94158a5a39274daea65
1342413424
languageName: node
1342513425
linkType: hard
1342613426

0 commit comments

Comments
 (0)