diff --git a/index.html b/index.html index 518cf63..ef644ec 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - portfolio + Selimaj.dev | Klesti Selimaj
diff --git a/src/components/AboutSection.tsx b/src/components/AboutSection.tsx index 53009e1..16e4c67 100644 --- a/src/components/AboutSection.tsx +++ b/src/components/AboutSection.tsx @@ -48,7 +48,7 @@ export default function AboutSection() { style={{ background: "#080808" }} > {/* Subtle top border */} -
+
{/* Section label */} @@ -58,9 +58,7 @@ export default function AboutSection() { {/* Left: Text */}

- Building the future, -
- one commit at a time. + Building the future, one commit at a time.

- uid=1000(klesti) groups=dev,entrepreneur + uid=1000(klesti) groups=ORUS,Axiom,Saturn,Nexa
diff --git a/src/components/ContactSection.tsx b/src/components/ContactSection.tsx index 162cecb..8e5d73b 100644 --- a/src/components/ContactSection.tsx +++ b/src/components/ContactSection.tsx @@ -5,7 +5,7 @@ */ import { useEffect, useRef } from "react"; -import { Github, Youtube, Instagram, ExternalLink, Mail } from "lucide-react"; +import { Github, Youtube, Instagram, ExternalLink, Mail, MailIcon } from "lucide-react"; function useReveal(threshold = 0.1) { const ref = useRef(null); @@ -33,7 +33,7 @@ const contactLinks = [ label: "GitHub", handle: "@selimaj-dev", href: "https://github.com/selimaj-dev", - description: "35+ repositories · 2,670 contributions/year", + description: "97+ repositories · 2,670 contributions/year", }, { icon: Youtube, @@ -50,11 +50,11 @@ const contactLinks = [ description: "Behind the scenes and updates", }, { - icon: ExternalLink, - label: "Website", - handle: "selimaj.dev", - href: "https://selimaj.dev", - description: "You're already here!", + icon: MailIcon, + label: "Email", + handle: "contact@selimaj.dev", + href: "mailto:contact@selimaj.dev", + description: "For business inquiries, collaborations, and contact", }, ]; @@ -64,7 +64,7 @@ export default function ContactSection() { return (
-
+
{/* Subtle radial glow */}
{

An unexpected error occurred.

diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index c2f436b..000f583 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -63,12 +63,12 @@ export default function HeroSection() { /> {/* Gradient overlays */} -
-
+
+
{/* Animated glow orb */}
{[ { value: "6+", label: "Years Experience" }, - { value: "35+", label: "Repositories" }, + { value: "97+", label: "Repositories" }, { value: "2,670+", label: "Contributions / Year" }, { value: "#2", label: "National GitHub user" }, ].map((stat) => ( @@ -159,7 +159,7 @@ export default function HeroSection() { {/* Scroll indicator */}
-
+
scroll
diff --git a/src/components/ProjectsSection.tsx b/src/components/ProjectsSection.tsx index 430bcfe..cb5ca46 100644 --- a/src/components/ProjectsSection.tsx +++ b/src/components/ProjectsSection.tsx @@ -19,7 +19,7 @@ function useReveal(threshold = 0.1) { observer.disconnect(); } }, - { threshold } + { threshold }, ); observer.observe(el); return () => observer.disconnect(); @@ -53,7 +53,8 @@ const projects: Project[] = [ { name: "osui", org: "osui-rs", - description: "A TUI library written in Rust — build terminal UIs with a component-based approach.", + description: + "A TUI library written in Rust — build terminal UIs with a component-based approach.", language: "Rust", stars: 7, href: "https://github.com/osui-rs/osui", @@ -63,7 +64,8 @@ const projects: Project[] = [ { name: "saturnclient", org: "saturnclientmc", - description: "Saturn Client — a Minecraft client full of customizability and free cosmetics.", + description: + "Saturn Client — a Minecraft client full of customizability and free cosmetics.", language: "Java", stars: 7, forks: 2, @@ -74,7 +76,8 @@ const projects: Project[] = [ { name: "dev-run", org: "orus-dev", - description: "DevRun — a community-driven competitive programming platform inspired by speedrunning.", + description: + "DevRun — a community-driven competitive programming platform inspired by speedrunning.", language: "TypeScript", stars: 3, href: "https://github.com/orus-dev/dev-run", @@ -82,19 +85,21 @@ const projects: Project[] = [ tag: "Platform", }, { - name: "linear-linux", - description: "Linux support for linear.app — bringing the popular project management tool to Linux.", - language: "JavaScript", - stars: 27, - forks: 5, - href: "https://github.com/selimaj-dev/linear-linux", + name: "nexa-trade", + org: "nexa-sol", + description: + "The Solana trading terminal supercharged by AI — trade smarter.", + language: "TypeScript", + stars: 1, + href: "https://github.com/nexa-sol/nexa-trade", featured: true, - tag: "Tool", + tag: "FinTech", }, { name: "dockship", org: "orus-dev", - description: "A powerful self-hosted deployment platform for managing your applications.", + description: + "A powerful self-hosted deployment platform for managing your applications.", language: "TypeScript", stars: 1, href: "https://github.com/orus-dev/dockship", @@ -110,13 +115,14 @@ const projects: Project[] = [ tag: "App", }, { - name: "nexa-trade", - org: "nexa-sol", - description: "The Solana trading terminal supercharged by AI — trade smarter.", - language: "TypeScript", - stars: 1, - href: "https://github.com/nexa-sol/nexa-trade", - tag: "FinTech", + name: "linear-linux", + description: + "Linux support for linear.app — bringing the popular project management tool to Linux.", + language: "JavaScript", + stars: 27, + forks: 5, + href: "https://github.com/selimaj-dev/linear-linux", + tag: "Tool", }, { name: "osmium", @@ -128,7 +134,8 @@ const projects: Project[] = [ }, { name: "spark", - description: "AI documentation generator that takes context from your repository's source code.", + description: + "AI documentation generator that takes context from your repository's source code.", language: "Python", stars: 2, href: "https://github.com/selimaj-dev/spark", @@ -136,7 +143,8 @@ const projects: Project[] = [ }, { name: "flux", - description: "A tool and library for using multiple languages in one codebase seamlessly.", + description: + "A tool and library for using multiple languages in one codebase seamlessly.", language: "Rust", stars: 1, href: "https://github.com/selimaj-dev/flux", @@ -206,10 +214,7 @@ function ProjectCard({ project, delay }: { project: Project; delay: number }) { {/* Footer */}
- + {project.language} @@ -235,8 +240,12 @@ export default function ProjectsSection() { const rest = projects.filter((p) => !p.featured); return ( -
-
+
+
{/* Header */} @@ -244,9 +253,7 @@ export default function ProjectsSection() {
> ls projects/

- Things I've -
- Built + Things I've Built

// featured
{featured.map((project, i) => ( - + ))}
{/* Rest of projects (smaller grid) */} -
// more projects
+
+ // more projects +
{rest.map((project, i) => ( - + ))}
diff --git a/src/components/SkillsSection.tsx b/src/components/SkillsSection.tsx index 202b8be..711cd87 100644 --- a/src/components/SkillsSection.tsx +++ b/src/components/SkillsSection.tsx @@ -120,7 +120,7 @@ export default function SkillsSection() { className="py-32 relative" style={{ background: "#080808" }} > -
+
{/* Header */} diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx deleted file mode 100644 index 62705e3..0000000 --- a/src/components/ui/accordion.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import * as React from "react"; -import * as AccordionPrimitive from "@radix-ui/react-accordion"; -import { ChevronDownIcon } from "lucide-react"; - -import { cn } from "@/lib/utils"; - -function Accordion({ - ...props -}: React.ComponentProps) { - return ; -} - -function AccordionItem({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AccordionTrigger({ - className, - children, - ...props -}: React.ComponentProps) { - return ( - - svg]:rotate-180", - className - )} - {...props} - > - {children} - - - - ); -} - -function AccordionContent({ - className, - children, - ...props -}: React.ComponentProps) { - return ( - -
{children}
-
- ); -} - -export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/src/components/ui/alert-dialog.tsx b/src/components/ui/alert-dialog.tsx deleted file mode 100644 index 6949979..0000000 --- a/src/components/ui/alert-dialog.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import * as React from "react"; -import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; - -import { cn } from "@/lib/utils"; -import { buttonVariants } from "@/components/ui/button"; - -function AlertDialog({ - ...props -}: React.ComponentProps) { - return ; -} - -function AlertDialogTrigger({ - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogPortal({ - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogOverlay({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogContent({ - className, - ...props -}: React.ComponentProps) { - return ( - - - - - ); -} - -function AlertDialogHeader({ - className, - ...props -}: React.ComponentProps<"div">) { - return ( -
- ); -} - -function AlertDialogFooter({ - className, - ...props -}: React.ComponentProps<"div">) { - return ( -
- ); -} - -function AlertDialogTitle({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogDescription({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogAction({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogCancel({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -export { - AlertDialog, - AlertDialogPortal, - AlertDialogOverlay, - AlertDialogTrigger, - AlertDialogContent, - AlertDialogHeader, - AlertDialogFooter, - AlertDialogTitle, - AlertDialogDescription, - AlertDialogAction, - AlertDialogCancel, -}; diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx deleted file mode 100644 index 5b1a0b5..0000000 --- a/src/components/ui/alert.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import * as React from "react"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "@/lib/utils"; - -const alertVariants = cva( - "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", - { - variants: { - variant: { - default: "bg-card text-card-foreground", - destructive: - "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", - }, - }, - defaultVariants: { - variant: "default", - }, - } -); - -function Alert({ - className, - variant, - ...props -}: React.ComponentProps<"div"> & VariantProps) { - return ( -
- ); -} - -function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function AlertDescription({ - className, - ...props -}: React.ComponentProps<"div">) { - return ( -
- ); -} - -export { Alert, AlertTitle, AlertDescription }; diff --git a/src/components/ui/aspect-ratio.tsx b/src/components/ui/aspect-ratio.tsx deleted file mode 100644 index 01d045d..0000000 --- a/src/components/ui/aspect-ratio.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"; - -function AspectRatio({ - ...props -}: React.ComponentProps) { - return ; -} - -export { AspectRatio }; diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx deleted file mode 100644 index 02305fd..0000000 --- a/src/components/ui/avatar.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import * as React from "react"; -import * as AvatarPrimitive from "@radix-ui/react-avatar"; - -import { cn } from "@/lib/utils"; - -function Avatar({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AvatarImage({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AvatarFallback({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -export { Avatar, AvatarImage, AvatarFallback }; diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx deleted file mode 100644 index 83750ed..0000000 --- a/src/components/ui/badge.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "@/lib/utils"; - -const badgeVariants = cva( - "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", - { - variants: { - variant: { - default: - "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", - secondary: - "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", - destructive: - "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", - outline: - "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - } -); - -function Badge({ - className, - variant, - asChild = false, - ...props -}: React.ComponentProps<"span"> & - VariantProps & { asChild?: boolean }) { - const Comp = asChild ? Slot : "span"; - - return ( - - ); -} - -export { Badge, badgeVariants }; diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx deleted file mode 100644 index 9d88a37..0000000 --- a/src/components/ui/breadcrumb.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; -import { ChevronRight, MoreHorizontal } from "lucide-react"; - -import { cn } from "@/lib/utils"; - -function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { - return