Skip to content

Commit a946580

Browse files
committed
feat: fix form
1 parent f793fa7 commit a946580

24 files changed

Lines changed: 2158 additions & 11887 deletions

apps/api/src/schemas/website.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,18 @@ import { z } from "@hono/zod-openapi";
22
import { WebsiteInstallationTarget, APIKeyType } from "@repo/database/enums";
33

44
export const createWebsiteRequestSchema = z.object({
5-
name: z.string().openapi({
6-
description: "The website's name.",
7-
example: "Dub",
8-
}),
5+
name: z
6+
.string()
7+
.openapi({
8+
description: "The website's name.",
9+
example: "Dub",
10+
})
11+
.min(3, {
12+
message: "Name must be at least 3 characters",
13+
})
14+
.max(30, {
15+
message: "Name must be less than 30 characters",
16+
}),
917
domain: z
1018
.string()
1119
.regex(/^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/)

apps/origami-web/src/app/(withAuth)/welcome/[organizationSlug]/creation-flow/index.tsx

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import WebsiteCreationForm from "./website-creation-form";
55
import { useMutation } from "@tanstack/react-query";
66
import { useTRPC } from "@/lib/trpc/client";
77
import { CreateWebsiteResponse } from "@api/schemas";
8+
import { motion } from "motion/react";
89

910
type CreationFlowWrapperProps = {
1011
organizationId: string;
@@ -26,11 +27,17 @@ export default function CreationFlowWrapper({
2627

2728
if (!website) {
2829
return (
29-
<WebsiteCreationForm
30-
onSubmit={createWebsite}
31-
organizationId={organizationId}
32-
isSubmitting={isSubmitting}
33-
/>
30+
<motion.div
31+
initial={{ opacity: 0, y: 10 }}
32+
animate={{ opacity: 1, y: 0 }}
33+
transition={{ duration: 0.5, delay: 1 }}
34+
>
35+
<WebsiteCreationForm
36+
onSubmit={createWebsite}
37+
organizationId={organizationId}
38+
isSubmitting={isSubmitting}
39+
/>
40+
</motion.div>
3441
);
3542
}
3643

apps/origami-web/src/app/(withAuth)/welcome/[organizationSlug]/creation-flow/website-creation-form.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,16 @@ export default function WebsiteCreationForm({
170170

171171
<BaseSubmitButton
172172
type="submit"
173-
disabled={isSubmitting || isDomainTaken}
173+
disabled={
174+
isSubmitting ||
175+
isDomainTaken ||
176+
!form.formState.isValid ||
177+
!isValidDomain(domainValue)
178+
}
174179
isSubmitting={isSubmitting}
180+
className="w-full"
175181
>
176-
Create Website
182+
Start your integration
177183
</BaseSubmitButton>
178184
</form>
179185
</Form>

apps/origami-web/src/app/(withAuth)/welcome/[organizationSlug]/page.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { db } from "@database/database";
55

66
import { notFound } from "next/navigation";
77
import CreationFlowWrapper from "./creation-flow";
8+
import { ensurePageAuth } from "@/lib/auth/server";
89

910
export default async function Page({
1011
params,
@@ -15,7 +16,10 @@ export default async function Page({
1516
}) {
1617
const { organizationSlug } = await params;
1718

18-
const organization = await getOrganizationBySlug(db, organizationSlug);
19+
const [organization] = await Promise.all([
20+
getOrganizationBySlug(db, organizationSlug),
21+
ensurePageAuth(),
22+
]);
1923

2024
if (!organization) {
2125
notFound();
@@ -26,10 +30,11 @@ export default async function Page({
2630
<div className="flex items-center gap-4">
2731
<Logo className="size-6" />
2832
<span className="text-primary/30 text-sm">/</span>
29-
<TextEffect className="text-center text-2xl font-medium" delay={1}>
33+
<TextEffect className="text-center text-2xl font-medium" delay={0.5}>
3034
Welcome to Origami
3135
</TextEffect>
3236
</div>
37+
3338
<CreationFlowWrapper organizationId={organization.id} />
3439
</div>
3540
);

apps/origami-web/src/components/ui/button.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { cva, type VariantProps } from "class-variance-authority";
55
import { cn } from "@/lib/utils";
66

77
const buttonVariants = cva(
8-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
8+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:cursor-pointer",
99
{
1010
variants: {
1111
variant: {

packages/database/drizzle/migrations/0000_good_jackal.sql

Lines changed: 277 additions & 0 deletions
Large diffs are not rendered by default.

packages/database/drizzle/migrations/0000_yielding_lady_mastermind.sql

Lines changed: 0 additions & 109 deletions
This file was deleted.

packages/database/drizzle/migrations/0001_violet_mojo.sql

Lines changed: 0 additions & 144 deletions
This file was deleted.

packages/database/drizzle/migrations/0002_silly_chat.sql

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)