Skip to content

Commit ea54b81

Browse files
committed
Added simple-form component
1 parent ca35e23 commit ea54b81

File tree

5 files changed

+109
-3
lines changed

5 files changed

+109
-3
lines changed

astro.config.mjs

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import react from "@astrojs/react";
1414
import markdoc from "@astrojs/markdoc";
1515
import keystatic from '@keystatic/astro';
1616
import cloudflare from "@astrojs/cloudflare";
17+
import simpleStackForm from "simple-stack-form";
1718
const __dirname = path.dirname(fileURLToPath(import.meta.url));
1819
const whenExternalScripts = (items = []) => ANALYTICS.vendors.googleAnalytics.id && ANALYTICS.vendors.googleAnalytics.partytown ? Array.isArray(items) ? items.map(item => item()) : [items()] : [];
1920

@@ -46,7 +47,7 @@ export default defineConfig({
4647
JavaScript: true,
4748
SVG: false,
4849
Logger: 1
49-
}), tasks(), react(), markdoc(), keystatic()],
50+
}), tasks(), react(), markdoc(), keystatic(), simpleStackForm()],
5051
image: {
5152
service: squooshImageService()
5253
},

package-lock.json

+73-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@
3131
"lodash.merge": "^4.6.2",
3232
"react": "^18.2.0",
3333
"react-dom": "^18.2.0",
34+
"simple-stack-form": "^0.1.12",
3435
"typescript-esbuild": "^0.3.6",
35-
"unpic": "^3.16.0"
36+
"unpic": "^3.16.0",
37+
"zod": "^3.22.4"
3638
},
3739
"devDependencies": {
3840
"@astrojs/mdx": "^2.1.0",

src/env.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
22
/// <reference path="../.astro/types.d.ts" />
33
/// <reference types="astro/client" />
4+
/// <reference types="simple-stack-form/types" />
45
/// <reference types="vite/client" />

src/pages/index.astro

+30
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,22 @@ import Hero from '~/components/widgets/Hero.astro';
44
import Features from '~/components/widgets/Features.astro';
55
import CallToAction from '~/components/widgets/CallToAction.astro';
66
import ContactUs from '~/components/widgets/Contact.astro';
7+
import { z } from "zod";
8+
import { createForm } from "simple:form";
9+
10+
export const subscribeForm = createForm({
11+
name: z.string(),
12+
email: z.string().email(),
13+
disclaimer: z.boolean()
14+
});
715
816
const metadata = {
917
title: 'CREEC — Carquinez Regional Environmental Education Center',
1018
ignoreTitleTemplate: true,
1119
};
20+
21+
const res = await Astro.locals.form.getData(subscribeForm);
22+
1223
---
1324

1425
<Layout metadata={metadata}>
@@ -109,5 +120,24 @@ const metadata = {
109120
}}
110121
description="Get news about CREEC events and volunteer opportunities!"
111122
/>
123+
<form method = "POST">
124+
<label for="name">Name</label>
125+
<input id="name" {...subscribeForm.inputProps.name} />
126+
<label for="email">Email</label>
127+
<input id="email" {...subscribeForm.inputProps.email} />
128+
{
129+
res?.fieldErrors?.email?.map((error) =>
130+
<p class ="error">{error}</p>
131+
)
132+
}
133+
<label for="disclaimer">By submitting this form, you acknowledge and agree to the collection of your personal information.</label>
134+
<input id="disclaimer" {...subscribeForm.inputProps.disclaimer} />
135+
{
136+
res?.fieldErrors?.disclaimer?.map((error) =>
137+
<p class="error">{error}</p>
138+
)
139+
}
140+
<button type="submit">Subscribe</button>
112141

142+
</form>
113143
</Layout>

0 commit comments

Comments
 (0)