Skip to content
This repository was archived by the owner on Aug 2, 2025. It is now read-only.

Commit c4831b5

Browse files
Merge pull request #55 from debater-coder/39-add-feedback-form-to-timetabl
feat: add formspree feedback from to Timetabl
2 parents 9468c96 + aac6021 commit c4831b5

File tree

5 files changed

+108
-3
lines changed

5 files changed

+108
-3
lines changed

package-lock.json

Lines changed: 52 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"@emotion/react": "^11.9.0",
3535
"@emotion/styled": "^11.8.1",
3636
"@fontsource/poppins": "^4.5.8",
37+
"@formspree/react": "^2.4.1",
3738
"@nikolovlazar/chakra-ui-prose": "^1.2.1",
3839
"@react-three/drei": "^9.45.1",
3940
"@react-three/fiber": "^8.9.1",

src/routes.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
import Announcements from "./routes/Main/Announcements";
1414
import Barcodes from "./routes/Main/Barcodes";
1515
import { Calendar } from "./routes/Main/Calendar";
16+
import { Feedback } from "./routes/Main/Feedback";
1617
import Home from "./routes/Main/Home";
1718

1819
const ComingSoon = () => <>Coming soon...</>;
@@ -89,7 +90,7 @@ export const routes: { pinned: TimetablRoute[]; unpinned: TimetablRoute[] } = {
8990
name: "Feedback",
9091
icon: ChatsTeardrop,
9192
mirrored: false,
92-
element: <ComingSoon />,
93+
element: <Feedback />,
9394
},
9495

9596
{
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import {
2+
Button,
3+
Flex,
4+
FormControl,
5+
FormLabel,
6+
Input,
7+
Textarea,
8+
} from "@chakra-ui/react";
9+
import { useForm, ValidationError } from "@formspree/react";
10+
11+
export const Feedback = () => {
12+
const [state, handleSubmit] = useForm("meqdbykn");
13+
if (state.succeeded) {
14+
return <p>Thanks for the feedback!</p>;
15+
}
16+
return (
17+
<Flex
18+
as="form"
19+
onSubmit={handleSubmit}
20+
w="full"
21+
pr={8}
22+
maxW="2xl"
23+
direction={"column"}
24+
gap={4}
25+
>
26+
<FormControl>
27+
<FormLabel>Email address</FormLabel>
28+
<Input
29+
type="email"
30+
id="email"
31+
name="email"
32+
placeholder="[email protected]"
33+
/>
34+
</FormControl>
35+
<ValidationError prefix="Email" field="email" errors={state.errors} />
36+
37+
<FormControl>
38+
<FormLabel>Message</FormLabel>
39+
<Textarea id="message" name="message" placeholder="I love this app!" />
40+
</FormControl>
41+
<ValidationError prefix="Message" field="message" errors={state.errors} />
42+
43+
<Button
44+
type="submit"
45+
isLoading={state.submitting}
46+
loadingText="Submitting..."
47+
>
48+
Submit
49+
</Button>
50+
</Flex>
51+
);
52+
};

src/routes/Main/Feedback/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { Feedback } from "./Feedback";

0 commit comments

Comments
 (0)