diff --git a/.hintrc b/.hintrc
new file mode 100644
index 00000000..e099e671
--- /dev/null
+++ b/.hintrc
@@ -0,0 +1,13 @@
+{
+ "extends": [
+ "development"
+ ],
+ "hints": {
+ "axe/aria": [
+ "default",
+ {
+ "aria-valid-attr-value": "off"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index d25feabe..ee94e5c4 100644
--- a/README.md
+++ b/README.md
@@ -1,47 +1 @@
-
-

-
-
-# Portfolio [](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fdillionverma%2Fportfolio)
-
-Built with next.js, [shadcn/ui](https://ui.shadcn.com/), and [magic ui](https://magicui.design/), deployed on Vercel.
-
-# Features
-
-- Setup only takes a few minutes by editing the [single config file](./src/data/resume.tsx)
-- Built using Next.js 14, React, Typescript, Shadcn/UI, TailwindCSS, Framer Motion, Magic UI
-- Includes a blog
-- Responsive for different devices
-- Optimized for Next.js and Vercel
-
-# Getting Started Locally
-
-1. Clone this repository to your local machine:
-
- ```bash
- git clone https://github.com/dillionverma/portfolio
- ```
-
-2. Move to the cloned directory
-
- ```bash
- cd portfolio
- ```
-
-3. Install dependencies:
-
- ```bash
- pnpm install
- ```
-
-4. Start the local Server:
-
- ```bash
- pnpm dev
- ```
-
-5. Open the [Config file](./src/data/resume.tsx) and make changes
-
-# License
-
-Licensed under the [MIT license](https://github.com/dillionverma/portfolio/blob/main/LICENSE.md).
+Design Engineer Portfolio
diff --git a/package.json b/package.json
index 04f18486..cbb2a37c 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"content-collections": "^0.2.1",
+ "lenis": "^1.3.18",
"lucide-react": "^0.562.0",
"motion": "^12.23.27",
"next": "16.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a0fd80bf..bb08e1d1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -41,6 +41,9 @@ importers:
content-collections:
specifier: ^0.2.1
version: 0.2.1(@types/node@25.0.3)
+ lenis:
+ specifier: ^1.3.18
+ version: 1.3.18(react@19.2.3)
lucide-react:
specifier: ^0.562.0
version: 0.562.0(react@19.2.3)
@@ -2506,6 +2509,20 @@ packages:
resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
engines: {node: '>=0.10'}
+ lenis@1.3.18:
+ resolution: {integrity: sha512-7KBl3V7vx5y1h05pu9fNFZS66I0+1eZ+zUGNNNBKtEn3BONZy+nkHWvdEe2b+zKT+6WX1x7zyOb1zbYYOs6tcg==}
+ peerDependencies:
+ '@nuxt/kit': '>=3.0.0'
+ react: '>=17.0.0'
+ vue: '>=3.0.0'
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+ react:
+ optional: true
+ vue:
+ optional: true
+
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -6102,6 +6119,10 @@ snapshots:
dependencies:
language-subtag-registry: 0.3.23
+ lenis@1.3.18(react@19.2.3):
+ optionalDependencies:
+ react: 19.2.3
+
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
diff --git a/src/app/globals.css b/src/app/globals.css
index 36585a28..899947d1 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -44,7 +44,7 @@
:root {
--radius: 0.625rem;
- --background: oklch(1 0 0);
+ --background: #fafafa;
--foreground: oklch(0.145 0 0);
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
@@ -78,7 +78,7 @@
}
.dark {
- --background: oklch(0.18 0 0);
+ --background: oklch(15.907% 0.00002 271.152);
--foreground: oklch(0.985 0 0);
--card: oklch(0.205 0 0);
--card-foreground: oklch(0.985 0 0);
@@ -112,6 +112,27 @@
}
@layer base {
+ html {
+ scroll-behavior: auto;
+ }
+
+ html.lenis,
+ html.lenis body {
+ height: auto;
+ }
+
+ .lenis.lenis-smooth [data-lenis-prevent] {
+ overscroll-behavior: contain;
+ }
+
+ .lenis.lenis-stopped {
+ overflow: clip;
+ }
+
+ .lenis.lenis-smooth iframe {
+ pointer-events: none;
+ }
+
* {
@apply border-border;
}
@@ -133,7 +154,7 @@
background-color: transparent;
}
-.prose pre {
+ .prose pre {
@apply leading-relaxed bg-transparent! font-mono!;
}
@@ -141,7 +162,8 @@
@apply m-0! mx-1! border rounded-md! px-1.5 py-0.5 bg-muted/60 dark:bg-muted/40 text-[13px]! font-mono text-foreground/90!;
}
- .prose code::before, .prose code::after {
+ .prose code::before,
+ .prose code::after {
@apply content-none!;
}
@@ -212,7 +234,7 @@
@apply px-6 py-4 align-middle m-0 whitespace-nowrap;
}
- .prose tr{
+ .prose tr {
@apply hover:bg-accent/50! transition-colors! cursor-pointer! h-10!;
}
@@ -232,5 +254,4 @@
.prose :where(tbody tr:last-child td):not(:where([class~="not-prose"] *)) {
@apply border-b-0;
}
-
-}
\ No newline at end of file
+}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 7fe1c446..22cbaeee 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,4 +1,5 @@
import Navbar from "@/components/navbar";
+import LenisProvider from "@/components/lenis-provider";
import { ThemeProvider } from "@/components/theme-provider";
import { TooltipProvider } from "@/components/ui/tooltip";
import { DATA } from "@/data/resume";
@@ -71,23 +72,25 @@ export default function RootLayout({
)}
>
-
-
-
-
-
- {children}
-
-
-
+
+
+
+
+
+
+ {children}
+
+
+
+