1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-09-13 05:45:31 -04:00

move to official hcaptcha react component

This commit is contained in:
2021-12-12 06:47:38 -05:00
parent b82be240a7
commit 0bc30f87d8
6 changed files with 108 additions and 16 deletions

View File

@@ -1,7 +1,7 @@
module.exports = {
root: true,
extends: ["@jakejarvis/eslint-config", "preact", "plugin:prettier/recommended"],
plugins: ["prettier"],
extends: ["@jakejarvis/eslint-config", "preact", "plugin:jsx-a11y/recommended", "plugin:prettier/recommended"],
plugins: ["jsx-a11y", "prettier"],
parser: "@babel/eslint-parser",
parserOptions: {
ecmaVersion: 2018,

View File

@@ -1,9 +1,9 @@
import "vanilla-hcaptcha";
import { h, render } from "preact";
import { h, Fragment, render } from "preact";
import { useState } from "preact/hooks";
import fetch from "unfetch";
// shared react components:
import HCaptcha from "@hcaptcha/react-hcaptcha";
import { CheckIcon, XIcon } from "@primer/octicons-react";
import SendEmoji from "twemoji-emojis/vendor/svg/1f4e4.svg";
@@ -114,7 +114,13 @@ const ContactForm = () => {
</div>
<div id="contact-form-captcha">
<h-captcha site-key={process.env.HCAPTCHA_SITE_KEY} size="normal" />
<HCaptcha
sitekey={process.env.HCAPTCHA_SITE_KEY}
theme={document.body.classList.contains("dark") ? "dark" : "light"}
size="normal"
reCaptchaCompat={false}
onVerify={() => true} // this is allegedly optional but a function undefined error is thrown without it
/>
</div>
<div id="contact-form-action-row">
@@ -125,7 +131,13 @@ const ContactForm = () => {
disabled={sending}
style={{ display: status.success ? "none" : null }}
>
<SendEmoji class="emoji" /> {sending ? "Sending..." : "Send"}
{sending ? (
<span>Sending...</span>
) : (
<>
<SendEmoji class="emoji" /> <span>Send</span>
</>
)}
</button>
<span

View File

@@ -1,4 +1,4 @@
import { h, render, Fragment } from "preact";
import { h, Fragment, render } from "preact";
import { useState, useEffect } from "preact/hooks";
import fetch from "unfetch";
import dayjs from "dayjs";

View File

@@ -67,6 +67,14 @@ div.highlight {
width: 1em;
height: 1em;
}
.octicon-check {
@include themes.themed(
(
color: "success",
)
);
}
}
}

View File

@@ -28,6 +28,7 @@
"@fontsource/comic-neue": "4.5.0",
"@fontsource/inter": "4.5.1",
"@fontsource/roboto-mono": "4.5.0",
"@hcaptcha/react-hcaptcha": "^0.3.9",
"@octokit/graphql": "^4.8.0",
"@primer/octicons-react": "^16.1.1",
"@sentry/node": "^6.16.1",
@@ -48,8 +49,7 @@
"trim-newlines": "^4.0.2",
"twemoji": "^13.1.0",
"twemoji-emojis": "^14.1.0",
"unfetch": "^4.2.0",
"vanilla-hcaptcha": "^1.0.0-alpha"
"unfetch": "^4.2.0"
},
"devDependencies": {
"@babel/core": "^7.16.0",
@@ -70,6 +70,7 @@
"eslint": "~8.4.1",
"eslint-config-preact": "^1.2.0",
"eslint-config-prettier": "~8.3.0",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-prettier": "~4.0.0",
"gulp": "^4.0.2",
"gulp-cache": "^1.1.3",

View File

@@ -937,7 +937,15 @@
"@babel/helper-validator-option" "^7.14.5"
"@babel/plugin-transform-typescript" "^7.16.0"
"@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
"@babel/runtime-corejs3@^7.10.2":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz#1e25de4fa994c57c18e5fdda6cc810dac70f5590"
integrity sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==
dependencies:
core-js-pure "^3.19.0"
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5"
integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==
@@ -1011,6 +1019,11 @@
resolved "https://registry.yarnpkg.com/@fontsource/roboto-mono/-/roboto-mono-4.5.0.tgz#27e44fbb1d86a9ef14501493a37eef1d73e60d02"
integrity sha512-/6Gm6fJjBHZiFNyvzIKGJkVuyifoc1aoTel+pkzdhxNh7yNhFyokCoChdbbqZEpGKpqs5uld74G5TJthUVFyjw==
"@hcaptcha/react-hcaptcha@^0.3.9":
version "0.3.9"
resolved "https://registry.yarnpkg.com/@hcaptcha/react-hcaptcha/-/react-hcaptcha-0.3.9.tgz#37f16f80827699d37fb77473a436ff10fe100e12"
integrity sha512-yc3rRVQCz3w+rq9+Y1yi+hUlZscMDoXli0st8liefZ79gkFRa3vqd2zl+qGeRq+3HG7i+ydNNIXmnWhg8wJCSg==
"@humanwhocodes/config-array@^0.9.2":
version "0.9.2"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914"
@@ -1858,6 +1871,14 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
aria-query@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
dependencies:
"@babel/runtime" "^7.10.2"
"@babel/runtime-corejs3" "^7.10.2"
arr-diff@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -1998,6 +2019,11 @@ ast-metadata-inferer@^0.7.0:
dependencies:
"@mdn/browser-compat-data" "^3.3.14"
ast-types-flow@^0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
astral-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
@@ -2049,6 +2075,16 @@ autoprefixer@^10.4.0:
picocolors "^1.0.0"
postcss-value-parser "^4.1.0"
axe-core@^4.3.5:
version "4.3.5"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5"
integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==
axobject-query@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
babel-loader@^8.2.3:
version "8.2.3"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d"
@@ -2944,6 +2980,11 @@ core-js-compat@^3.18.0, core-js-compat@^3.19.1:
browserslist "^4.18.1"
semver "7.0.0"
core-js-pure@^3.19.0:
version "3.19.3"
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.19.3.tgz#c69b2b36b58927317824994b532ec3f0f7e49607"
integrity sha512-N3JruInmCyt7EJj5mAq3csCgGYgiSqu7p7TQp2KOztr180/OAIxyIvL1FCjzgmQk/t3Yniua50Fsak7FShI9lA==
core-js@3, core-js@^3.16.2, core-js@^3.19.3:
version "3.19.3"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.3.tgz#6df8142a996337503019ff3235a7022d7cdf4559"
@@ -3161,6 +3202,11 @@ d@1, d@^1.0.1:
es5-ext "^0.10.50"
type "^1.0.1"
damerau-levenshtein@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d"
integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==
data-uri-to-buffer@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b"
@@ -3809,6 +3855,24 @@ eslint-plugin-jest@^23.7.0:
dependencies:
"@typescript-eslint/experimental-utils" "^2.5.0"
eslint-plugin-jsx-a11y@^6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8"
integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==
dependencies:
"@babel/runtime" "^7.16.3"
aria-query "^4.2.2"
array-includes "^3.1.4"
ast-types-flow "^0.0.7"
axe-core "^4.3.5"
axobject-query "^2.2.0"
damerau-levenshtein "^1.0.7"
emoji-regex "^9.2.2"
has "^1.0.3"
jsx-ast-utils "^3.2.1"
language-tags "^1.0.5"
minimatch "^3.0.4"
eslint-plugin-prettier@~4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0"
@@ -6128,7 +6192,7 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
"jsx-ast-utils@^2.4.1 || ^3.0.0":
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b"
integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==
@@ -6194,6 +6258,18 @@ known-css-properties@^0.23.0:
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.23.0.tgz#e643e1bab2b1f8ba292eea9557121cc02e9846a0"
integrity sha512-h9ivI88e1lFNmTT4HovBN33Ysn0OIJG7IPG2mkpx2uniQXFWqo35QdiX7w0TovlUFXfW8aPFblP5/q0jlOr2sA==
language-subtag-registry@~0.3.2:
version "0.3.21"
resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
language-tags@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
dependencies:
language-subtag-registry "~0.3.2"
last-run@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b"
@@ -10227,11 +10303,6 @@ value-or-function@^3.0.0:
resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"
integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=
vanilla-hcaptcha@^1.0.0-alpha:
version "1.0.0-alpha"
resolved "https://registry.yarnpkg.com/vanilla-hcaptcha/-/vanilla-hcaptcha-1.0.0-alpha.tgz#e929320ffc935afd6110056d1fb8cab136a785b3"
integrity sha512-KG+g94vpZVBQq9NItoG02HyO2RJ0BWzh6Qu9e46Bb2P7dS/obGcAq4YKiFWcs8hTBH71OXl6gQOlAEOAr0LByw==
vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"