From afb9c2ee73de2b85cfc95a67e3c744509775ce4b Mon Sep 17 00:00:00 2001 From: TheoryOfNekomata Date: Sun, 5 May 2024 14:44:12 +0800 Subject: [PATCH] Add iceform Use iceform for receiving contact form details. --- packages/web/package.json | 13 ++--- packages/web/pnpm-lock.yaml | 55 +++++++++++++++---- .../molecules/ContactCtaBanner/index.tsx | 9 ++- .../organisms/IndexLayout/index.tsx | 4 ++ packages/web/src/handlers/contact.ts | 5 ++ packages/web/src/pages/a/contact.ts | 14 +++++ packages/web/src/pages/api/contact.ts | 11 ++++ packages/web/src/pages/api/hello.ts | 13 ----- packages/web/src/pages/contact/index.tsx | 22 ++++++-- packages/web/src/pages/index.tsx | 19 +++++-- 10 files changed, 123 insertions(+), 42 deletions(-) create mode 100644 packages/web/src/handlers/contact.ts create mode 100644 packages/web/src/pages/a/contact.ts create mode 100644 packages/web/src/pages/api/contact.ts delete mode 100644 packages/web/src/pages/api/hello.ts diff --git a/packages/web/package.json b/packages/web/package.json index a63a5ab..0ee3fdb 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -11,11 +11,12 @@ "dependencies": { "@tesseract-design/viewfinder-base": "0.0.1", "@tesseract-design/viewfinder-react": "0.0.1", - "@tesseract-design/web-action-react": "^0.2.0", - "@tesseract-design/web-formatted-react": "^0.2.0", - "@tesseract-design/web-freeform-react": "^0.2.0", - "@tesseract-design/web-navigation-react": "^0.2.0", - "@theoryofnekomata/formxtra": "^1.0.3", + "@tesseract-design/web-action-react": "0.2.0", + "@tesseract-design/web-formatted-react": "0.2.1", + "@tesseract-design/web-freeform-react": "0.2.1", + "@tesseract-design/web-navigation-react": "0.2.1", + "@theoryofnekomata/formxtra": "../../../formxtra", + "@modal-sh/iceform-next": "0.0.0", "@types/node": "20.6.0", "@types/react": "18.2.21", "@types/react-dom": "18.2.7", @@ -25,8 +26,6 @@ "eslint-config-next": "13.4.19", "next": "13.4.19", "postcss": "8.4.29", - "react": "18.2.0", - "react-dom": "18.2.0", "tailwindcss": "3.3.3", "typescript": "5.2.2" } diff --git a/packages/web/pnpm-lock.yaml b/packages/web/pnpm-lock.yaml index 1e242e3..7f0419d 100644 --- a/packages/web/pnpm-lock.yaml +++ b/packages/web/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@modal-sh/iceform-next': + specifier: 0.0.0 + version: 0.0.0(next@13.4.19)(react-dom@18.2.0)(react@18.2.0) '@tesseract-design/viewfinder-base': specifier: 0.0.1 version: 0.0.1 @@ -12,20 +15,20 @@ dependencies: specifier: 0.0.1 version: 0.0.1(react-dom@18.2.0)(react@18.2.0) '@tesseract-design/web-action-react': - specifier: ^0.2.0 + specifier: 0.2.0 version: 0.2.0(react-dom@18.2.0)(react@18.2.0) '@tesseract-design/web-formatted-react': - specifier: ^0.2.0 + specifier: 0.2.1 version: 0.2.1(react-dom@18.2.0)(react@18.2.0) '@tesseract-design/web-freeform-react': - specifier: ^0.2.0 + specifier: 0.2.1 version: 0.2.1(react-dom@18.2.0)(react@18.2.0) '@tesseract-design/web-navigation-react': - specifier: ^0.2.0 + specifier: 0.2.1 version: 0.2.1(react-dom@18.2.0)(react@18.2.0) '@theoryofnekomata/formxtra': - specifier: ^1.0.3 - version: 1.0.3 + specifier: ../../../formxtra + version: link:../../../formxtra '@types/node': specifier: 20.6.0 version: 20.6.0 @@ -53,12 +56,6 @@ dependencies: postcss: specifier: 8.4.29 version: 8.4.29 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) tailwindcss: specifier: 3.3.3 version: 3.3.3 @@ -179,6 +176,23 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: false + /@modal-sh/iceform-next@0.0.0(next@13.4.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/FoVjAtY0PCAPOLLN53vLjlJs3mIMmmy5r+Iqg7dp5csburzkGtLpYRpzMAVYNj4ttV0j+YaJxSBYWNtT+PaUQ==} + engines: {node: '>=12'} + peerDependencies: + next: 13.4.19 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@theoryofnekomata/formxtra': 1.0.3 + busboy: 1.6.0 + next: 13.4.19(react-dom@18.2.0)(react@18.2.0) + node-cache: 5.1.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + seroval: 0.10.4 + dev: false + /@modal-sh/react-utils@0.0.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-aqbD221Zhsucxnr2ZJqS2sZQbI4/xcb703GvcXLew+2zqFhZOwfRdclwTralB/TXBmrrIh3aHeOisQ+DLlmC3w==} engines: {node: '>=12'} @@ -826,6 +840,11 @@ packages: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: false + /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -2159,6 +2178,13 @@ packages: - babel-plugin-macros dev: false + /node-cache@5.1.2: + resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} + engines: {node: '>= 8.0.0'} + dependencies: + clone: 2.1.2 + dev: false + /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: false @@ -2603,6 +2629,11 @@ packages: lru-cache: 6.0.0 dev: false + /seroval@0.10.4: + resolution: {integrity: sha512-TdaE9JkoATjKu+vjwllieX8zWyBTUVxbgWDnOsDJFfmKbM7vLSukuCXuD3pO3kkCtX4daywOW8ps2VCdPhS8/w==} + engines: {node: '>=10'} + dev: false + /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} diff --git a/packages/web/src/components/molecules/ContactCtaBanner/index.tsx b/packages/web/src/components/molecules/ContactCtaBanner/index.tsx index 0c0c899..dbee0db 100644 --- a/packages/web/src/components/molecules/ContactCtaBanner/index.tsx +++ b/packages/web/src/components/molecules/ContactCtaBanner/index.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import * as Iceform from '@modal-sh/iceform-next'; import {Layouts} from '@tesseract-design/viewfinder-react'; import * as WebNavigationReact from '@tesseract-design/web-navigation-react'; import * as WebFreeformReact from '@tesseract-design/web-freeform-react'; @@ -10,12 +11,14 @@ export interface ContactCtaBannerProps { onSubmit?: React.FormEventHandler; visible?: boolean; hasBrand?: boolean; + iceformProps?: Partial>; } export const ContactCtaBanner: React.FC = ({ onSubmit, visible: visibleProp = false, hasBrand = false, + iceformProps = {}, }) => { const [visible, setVisible] = React.useState(); const autofocusRef = React.useRef(null); @@ -76,12 +79,14 @@ export const ContactCtaBanner: React.FC = ({ {visible !== false && ( -
@@ -131,7 +136,7 @@ export const ContactCtaBanner: React.FC = ({
-
+ )} diff --git a/packages/web/src/components/organisms/IndexLayout/index.tsx b/packages/web/src/components/organisms/IndexLayout/index.tsx index ebb36f5..4e399bf 100644 --- a/packages/web/src/components/organisms/IndexLayout/index.tsx +++ b/packages/web/src/components/organisms/IndexLayout/index.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import * as Iceform from '@modal-sh/iceform-next'; import {Layouts} from '@tesseract-design/viewfinder-react'; import {MainLandingSection, MainLandingSectionProps} from '@/components/molecules/MainLandingSection'; import {MakeSection, MakeSectionProps} from '@/components/molecules/MakeSection'; @@ -17,6 +18,7 @@ export interface IndexLayoutProps { contactVisible?: boolean; hasMainLandingSection?: boolean; contactHasBrand?: boolean; + iceformProps?: Partial> } export const IndexLayout: React.FC = ({ @@ -28,6 +30,7 @@ export const IndexLayout: React.FC = ({ contactVisible = false, hasMainLandingSection = false, contactHasBrand = false, + iceformProps, }) => (
= ({ onSubmit={onSubmit} visible={contactVisible} hasBrand={contactHasBrand} + iceformProps={iceformProps} />