1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2026-06-05 20:15:31 -04:00

Enhance contact form with client-side validation and error handling. Import validation schema from shared module and improve user experience by tracking input touch state for error display.

This commit is contained in:
2025-09-02 18:39:54 -04:00
parent a05357bc90
commit 6a0ff897da
5 changed files with 311 additions and 289 deletions
+12 -12
View File
@@ -22,11 +22,11 @@
"dependencies": {
"@date-fns/tz": "^1.4.1",
"@date-fns/utc": "^2.1.1",
"@mdx-js/loader": "^3.1.0",
"@mdx-js/react": "^3.1.0",
"@mdx-js/loader": "^3.1.1",
"@mdx-js/react": "^3.1.1",
"@neondatabase/serverless": "^1.0.1",
"@next/bundle-analyzer": "15.5.1-canary.19",
"@next/mdx": "15.5.1-canary.19",
"@next/bundle-analyzer": "15.5.1-canary.23",
"@next/mdx": "15.5.1-canary.23",
"@octokit/graphql": "^9.0.1",
"@octokit/graphql-schema": "^15.26.0",
"@radix-ui/react-alert-dialog": "^1.1.15",
@@ -57,7 +57,7 @@
"geist": "^1.4.2",
"html-entities": "^2.6.0",
"lucide-react": "0.542.0",
"next": "15.5.1-canary.19",
"next": "15.5.1-canary.23",
"react": "19.1.1",
"react-activity-calendar": "^2.7.13",
"react-countup": "^6.5.3",
@@ -79,15 +79,15 @@
"rehype-wrapper": "^1.1.0",
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.1",
"remark-mdx": "^3.1.0",
"remark-mdx": "^3.1.1",
"remark-mdx-frontmatter": "^5.2.0",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
"remark-smartypants": "^3.0.2",
"remark-strip-mdx-imports-exports": "^1.0.1",
"resend": "^6.0.1",
"resend": "^6.0.2",
"server-only": "0.0.1",
"shiki": "^3.12.0",
"shiki": "^3.12.1",
"sonner": "^2.0.7",
"tailwind-merge": "^3.3.1",
"tailwindcss": "^4.1.12",
@@ -106,10 +106,10 @@
"@types/react-dom": "19.1.9",
"babel-plugin-react-compiler": "19.1.0-rc.3",
"cross-env": "^10.0.0",
"dotenv": "^17.2.1",
"dotenv": "^17.2.2",
"drizzle-kit": "^0.31.4",
"eslint": "^9.34.0",
"eslint-config-next": "15.5.1-canary.19",
"eslint-config-next": "15.5.1-canary.23",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-css-modules": "^2.12.0",
"eslint-plugin-drizzle": "^0.2.3",
@@ -121,7 +121,7 @@
"eslint-plugin-react-compiler": "19.1.0-rc.2",
"eslint-plugin-react-hooks": "^5.2.0",
"husky": "^9.1.7",
"lint-staged": "^16.1.5",
"lint-staged": "^16.1.6",
"postcss": "^8.5.6",
"prettier": "^3.6.2",
"prettier-plugin-tailwindcss": "^0.6.14",
@@ -134,7 +134,7 @@
"engines": {
"node": ">=22.x"
},
"packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b",
"packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67",
"cacheDirectories": [
"node_modules",
".next/cache"