From e6ad5caa881745b0866e1129413fc3b5c8076b84 Mon Sep 17 00:00:00 2001 From: mpabarca Date: Tue, 30 Jul 2024 13:31:09 +0200 Subject: [PATCH 01/12] Add .nvmrc file --- .nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..67d2ffed --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v20.13.1 \ No newline at end of file From a72e6f6ed35e854a9c2feec3bd73a446159ccb39 Mon Sep 17 00:00:00 2001 From: mpabarca Date: Thu, 1 Aug 2024 13:56:42 +0200 Subject: [PATCH 02/12] Create page & feature New Project --- .../(authed)/(home)/[[...slug]]/layout.tsx | 2 +- src/app/(authed)/(home)/new/page.tsx | 62 +++--------- src/app/auth/signin/page.tsx | 33 ++----- src/common/ui/MessageLinkFooter.tsx | 34 +++++++ src/features/new-project/NewProject.tsx | 48 +++++++++ src/features/new-project/data/index.ts | 33 +++++++ .../new-project/view/NewProjectForm.tsx | 93 +++++++++++++++++ .../new-project/view/NewProjectSteps.tsx | 99 +++++++++++++++++++ .../sidebar/view/internal/sidebar/Header.tsx | 11 +-- 9 files changed, 335 insertions(+), 80 deletions(-) create mode 100644 src/common/ui/MessageLinkFooter.tsx create mode 100644 src/features/new-project/NewProject.tsx create mode 100644 src/features/new-project/data/index.ts create mode 100644 src/features/new-project/view/NewProjectForm.tsx create mode 100644 src/features/new-project/view/NewProjectSteps.tsx diff --git a/src/app/(authed)/(home)/[[...slug]]/layout.tsx b/src/app/(authed)/(home)/[[...slug]]/layout.tsx index 36fb09c1..2e89f12a 100644 --- a/src/app/(authed)/(home)/[[...slug]]/layout.tsx +++ b/src/app/(authed)/(home)/[[...slug]]/layout.tsx @@ -12,7 +12,7 @@ export default function Page({ children }: { children: React.ReactNode }) { } return ( <> - > + }>
diff --git a/src/app/(authed)/(home)/new/page.tsx b/src/app/(authed)/(home)/new/page.tsx index bdbbd356..ccfc7ca8 100644 --- a/src/app/(authed)/(home)/new/page.tsx +++ b/src/app/(authed)/(home)/new/page.tsx @@ -1,56 +1,20 @@ -import Link from "next/link" import { env, splitOwnerAndRepository } from "@/common" +import { Box } from "@mui/material" +import NewProject from "@/features/new-project/NewProject"; const Page = () => { const repositoryNameSuffix = env.getOrThrow("REPOSITORY_NAME_SUFFIX") const templateName = env.get("NEW_PROJECT_TEMPLATE_REPOSITORY") - const projectName = "Nordisk Film" - const suffixedRepositoryName = makeFullRepositoryName({ - name: projectName, - suffix: repositoryNameSuffix - }) - const newGitHubRepositoryLink = makeNewGitHubRepositoryLink({ - templateName, - repositoryName: suffixedRepositoryName, - description: `Contains OpenAPI specifications for ${projectName}` - }) - return ( - - {newGitHubRepositoryLink} - - ) -} + const ownerRepository = templateName ? splitOwnerAndRepository(templateName)?.owner : undefined -export default Page - -function makeFullRepositoryName({ name, suffix }: { name: string, suffix: string }) { - const safeRepositoryName = name - .trim() - .toLowerCase() - .replace(/[^a-z0-9-]+/g, "") - .replace(/\s+/g, "-") - return `${safeRepositoryName}${suffix}` -} +return ( + + + + )} -function makeNewGitHubRepositoryLink({ - templateName, - repositoryName, - description -}: { - templateName?: string, - repositoryName: string, - description: string -}) { - let url = `https://github.com/new` - + `?name=${encodeURIComponent(repositoryName)}` - + `&description=${encodeURIComponent(description)}` - + `&visibility=private` - if (templateName) { - const templateRepository = splitOwnerAndRepository(templateName) - if (templateRepository) { - url += `&template_owner=${encodeURIComponent(templateRepository.owner)}` - url += `&template_name=${encodeURIComponent(templateRepository.repository)}` - } - } - return url -} +export default Page diff --git a/src/app/auth/signin/page.tsx b/src/app/auth/signin/page.tsx index cf08105e..af252ce6 100644 --- a/src/app/auth/signin/page.tsx +++ b/src/app/auth/signin/page.tsx @@ -1,11 +1,11 @@ import Image from "next/image" -import Link from "next/link" import { Box, Button, Stack, Typography } from "@mui/material" import { signIn } from "@/composition" import { env } from "@/common" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { faGithub } from "@fortawesome/free-brands-svg-icons" import SignInTexts from "@/features/auth/view/SignInTexts" +import MessageLinkFooter from "@/common/ui/MessageLinkFooter" const SITE_NAME = env.getOrThrow("NEXT_PUBLIC_SHAPE_DOCS_TITLE") const HELP_URL = env.get("NEXT_PUBLIC_SHAPE_DOCS_HELP_URL") @@ -74,9 +74,14 @@ const SignInColumn = () => { - -