1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-06-27 17:25:43 -04:00

update cloudflare turnstile

This commit is contained in:
2025-05-09 11:07:23 -04:00
parent afcced7707
commit cce48e558f
4 changed files with 34 additions and 32 deletions

View File

@ -2,7 +2,7 @@
import { env } from "@/lib/env";
import { useActionState, useState } from "react";
import Turnstile from "react-turnstile";
import { Turnstile } from "@marsidev/react-turnstile";
import { SendIcon, Loader2Icon, CheckIcon, XIcon } from "lucide-react";
import Link from "@/components/link";
import Input from "@/components/ui/input";
@ -37,9 +37,9 @@ const ContactForm = () => {
setFormFields({ ...formFields, name: e.target.value });
}}
disabled={pending || formState.success}
aria-invalid={!pending && formState.errors?.name ? "true" : undefined}
aria-invalid={formState.errors?.name ? "true" : undefined}
/>
{!pending && formState.errors?.name && (
{formState.errors?.name && (
<span className="text-destructive text-[0.8rem] font-semibold">{formState.errors.name[0]}</span>
)}
</div>
@ -55,9 +55,9 @@ const ContactForm = () => {
setFormFields({ ...formFields, email: e.target.value });
}}
disabled={pending || formState.success}
aria-invalid={!pending && formState.errors?.email ? "true" : undefined}
aria-invalid={formState.errors?.email ? "true" : undefined}
/>
{!pending && formState.errors?.email && (
{formState.errors?.email && (
<span className="text-destructive text-[0.8rem] font-semibold">{formState.errors.email[0]}</span>
)}
</div>
@ -71,10 +71,10 @@ const ContactForm = () => {
setFormFields({ ...formFields, message: e.target.value });
}}
disabled={pending || formState.success}
aria-invalid={!pending && formState.errors?.message ? "true" : undefined}
aria-invalid={formState.errors?.message ? "true" : undefined}
className="min-h-[6lh] resize-y"
/>
{!pending && formState.errors?.message && (
{formState.errors?.message && (
<span className="text-destructive text-[0.8rem] font-semibold">{formState.errors.message[0]}</span>
)}
@ -102,8 +102,8 @@ const ContactForm = () => {
</div>
<div>
<Turnstile sitekey={env.NEXT_PUBLIC_TURNSTILE_SITE_KEY} fixedSize />
{!pending && formState.errors?.["cf-turnstile-response"] && (
<Turnstile siteKey={env.NEXT_PUBLIC_TURNSTILE_SITE_KEY} />
{formState.errors?.["cf-turnstile-response"] && (
<span className="text-destructive text-[0.8rem] font-semibold">
{formState.errors["cf-turnstile-response"][0]}
</span>

View File

@ -38,7 +38,9 @@ const Page = async () => {
Object.entries(postsByYear).forEach(([year, posts]) => {
sections.push(
<section className="my-8 first-of-type:mt-6 last-of-type:mb-6" key={year}>
<h2 className="mt-0 mb-4 text-3xl font-bold md:text-4xl">{year}</h2>
<h2 id={year} className="mt-0 mb-4 text-3xl font-bold md:text-4xl">
{year}
</h2>
<ul className="space-y-4">
{posts.map(({ slug, date, title, htmlTitle, views }) => (
<li className="flex text-base leading-relaxed" key={slug}>
@ -52,7 +54,7 @@ const Page = async () => {
{views > 0 && (
<span className="bg-muted text-muted-foreground inline-flex h-5 flex-nowrap items-center gap-1 rounded-md px-1.5 align-text-top text-xs font-semibold text-nowrap shadow select-none">
<EyeIcon className="inline-block size-4 shrink-0" />
<span className="inline-block leading-5">
<span className="inline-block leading-none">
{Intl.NumberFormat(env.NEXT_PUBLIC_SITE_LOCALE).format(views)}
</span>
</span>

View File

@ -21,6 +21,7 @@
"@date-fns/tz": "^1.2.0",
"@date-fns/utc": "^2.1.0",
"@giscus/react": "^3.1.0",
"@marsidev/react-turnstile": "^1.1.0",
"@mdx-js/loader": "^3.1.0",
"@mdx-js/react": "^3.1.0",
"@next/bundle-analyzer": "15.4.0-canary.26",
@ -42,7 +43,7 @@
"feed": "^4.2.2",
"geist": "^1.4.2",
"html-entities": "^2.6.0",
"lucide-react": "0.508.0",
"lucide-react": "0.509.0",
"next": "15.4.0-canary.26",
"react": "19.1.0",
"react-activity-calendar": "^2.7.11",
@ -52,7 +53,6 @@
"react-schemaorg": "^2.0.0",
"react-timeago": "^8.2.0",
"react-to-text": "^2.0.1",
"react-turnstile": "^1.1.4",
"react-tweet": "^3.2.2",
"react-use": "^17.6.0",
"rehype-mdx-code-props": "^3.0.1",

38
pnpm-lock.yaml generated
View File

@ -17,6 +17,9 @@ importers:
'@giscus/react':
specifier: ^3.1.0
version: 3.1.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@marsidev/react-turnstile':
specifier: ^1.1.0
version: 1.1.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@mdx-js/loader':
specifier: ^3.1.0
version: 3.1.0(acorn@8.14.1)
@ -81,8 +84,8 @@ importers:
specifier: ^2.6.0
version: 2.6.0
lucide-react:
specifier: 0.508.0
version: 0.508.0(react@19.1.0)
specifier: 0.509.0
version: 0.509.0(react@19.1.0)
next:
specifier: 15.4.0-canary.26
version: 15.4.0-canary.26(@babel/core@7.26.10)(babel-plugin-react-compiler@19.0.0-beta-af1b7da-20250417)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@ -110,9 +113,6 @@ importers:
react-to-text:
specifier: ^2.0.1
version: 2.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react-turnstile:
specifier: ^1.1.4
version: 1.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react-tweet:
specifier: ^3.2.2
version: 3.2.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@ -638,6 +638,12 @@ packages:
'@lit/reactive-element@2.1.0':
resolution: {integrity: sha512-L2qyoZSQClcBmq0qajBVbhYEcG6iK0XfLn66ifLe/RfC0/ihpc+pl0Wdn8bJ8o+hj38cG0fGXRgSS20MuXn7qA==}
'@marsidev/react-turnstile@1.1.0':
resolution: {integrity: sha512-X7bP9ZYutDd+E+klPYF+/BJHqEyyVkN4KKmZcNRr84zs3DcMoftlMAuoKqNSnqg0HE7NQ1844+TLFSJoztCdSA==}
peerDependencies:
react: ^17.0.2 || ^18.0.0 || ^19.0
react-dom: ^17.0.2 || ^18.0.0 || ^19.0
'@mdx-js/loader@3.1.0':
resolution: {integrity: sha512-xU/lwKdOyfXtQGqn3VnJjlDrmKXEvMi1mgYxVmukEUtVycIz1nh7oQ40bKTd4cA7rLStqu0740pnhGYxGoqsCg==}
peerDependencies:
@ -2845,8 +2851,8 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
lucide-react@0.508.0:
resolution: {integrity: sha512-gcP16PnexqtOFrTtv98kVsGzTfnbPekzZiQfByi2S89xfk7E/4uKE1USZqccIp58v42LqkO7MuwpCqshwSrJCg==}
lucide-react@0.509.0:
resolution: {integrity: sha512-xCJHn6Uh5qF6PGml25vveCTrHJZcqS1G1MVzWZK54ZQsOiCVJk4fwY3oyo5EXS2S+aqvTpWYIfJN+PesJ0quxg==}
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
@ -3486,12 +3492,6 @@ packages:
react: ^18.2.0
react-dom: ^18.2.0
react-turnstile@1.1.4:
resolution: {integrity: sha512-oluyRWADdsufCt5eMqacW4gfw8/csr6Tk+fmuaMx0PWMKP1SX1iCviLvD2D5w92eAzIYDHi/krUWGHhlfzxTpQ==}
peerDependencies:
react: '>= 16.13.1'
react-dom: '>= 16.13.1'
react-tweet@3.2.2:
resolution: {integrity: sha512-hIkxAVPpN2RqWoDEbo3TTnN/pDcp9/Jb6pTgiA4EbXa9S+m2vHIvvZKHR+eS0PDIsYqe+zTmANRa5k6+/iwGog==}
peerDependencies:
@ -4649,6 +4649,11 @@ snapshots:
dependencies:
'@lit-labs/ssr-dom-shim': 1.3.0
'@marsidev/react-turnstile@1.1.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
'@mdx-js/loader@3.1.0(acorn@8.14.1)':
dependencies:
'@mdx-js/mdx': 3.1.0(acorn@8.14.1)
@ -7110,7 +7115,7 @@ snapshots:
dependencies:
yallist: 3.1.1
lucide-react@0.508.0(react@19.1.0):
lucide-react@0.509.0(react@19.1.0):
dependencies:
react: 19.1.0
@ -7974,11 +7979,6 @@ snapshots:
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
react-turnstile@1.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
react-tweet@3.2.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
'@swc/helpers': 0.5.17