diff --git a/Client/reasn-client/apps/web/app/layout.tsx b/Client/reasn-client/apps/web/app/layout.tsx
index 87c871bf..6e742d18 100644
--- a/Client/reasn-client/apps/web/app/layout.tsx
+++ b/Client/reasn-client/apps/web/app/layout.tsx
@@ -1,3 +1,4 @@
+import { Footer, Navbar } from "@reasn/ui/src/components/shared";
import "../styles/global.css";
import "@reasn/ui/src/styles.css";
@@ -8,7 +9,11 @@ export default function RootLayout({
}) {
return (
-
{children}
+
+
+ {children}
+
+
);
}
diff --git a/Client/reasn-client/apps/web/app/login/layout.tsx b/Client/reasn-client/apps/web/app/login/layout.tsx
new file mode 100644
index 00000000..cdc8ea08
--- /dev/null
+++ b/Client/reasn-client/apps/web/app/login/layout.tsx
@@ -0,0 +1,20 @@
+import React from "react";
+
+const LoginLayout = ({
+ children,
+ params,
+}: {
+ children: React.ReactNode;
+ params: {
+ tag: string;
+ item: string;
+ };
+}) => {
+ return (
+
+ );
+};
+
+export default LoginLayout;
diff --git a/Client/reasn-client/apps/web/app/login/page.tsx b/Client/reasn-client/apps/web/app/login/page.tsx
new file mode 100644
index 00000000..6c57b9fc
--- /dev/null
+++ b/Client/reasn-client/apps/web/app/login/page.tsx
@@ -0,0 +1,7 @@
+import React from "react";
+
+const LoginPage = () => {
+ return page
;
+};
+
+export default LoginPage;
diff --git a/Client/reasn-client/apps/web/app/page.tsx b/Client/reasn-client/apps/web/app/page.tsx
index 193f4241..69d1923e 100644
--- a/Client/reasn-client/apps/web/app/page.tsx
+++ b/Client/reasn-client/apps/web/app/page.tsx
@@ -5,16 +5,15 @@ import {
HeroSection,
QuickFilters,
} from "@reasn/ui/src/components/web";
-import { Navbar, Footer } from "@reasn/ui/src/components/shared";
-export default function Web() {
+const Web = () => {
return (
-
-
+ <>
-
-
+ >
);
-}
+};
+
+export default Web;
diff --git a/Client/reasn-client/apps/web/app/register/layout.tsx b/Client/reasn-client/apps/web/app/register/layout.tsx
new file mode 100644
index 00000000..2bff494a
--- /dev/null
+++ b/Client/reasn-client/apps/web/app/register/layout.tsx
@@ -0,0 +1,20 @@
+import React from "react";
+
+const RegisterLayout = ({
+ children,
+ params,
+}: {
+ children: React.ReactNode;
+ params: {
+ tag: string;
+ item: string;
+ };
+}) => {
+ return (
+
+ );
+};
+
+export default RegisterLayout;
diff --git a/Client/reasn-client/apps/web/app/register/organizer/page.tsx b/Client/reasn-client/apps/web/app/register/organizer/page.tsx
new file mode 100644
index 00000000..2b5807b9
--- /dev/null
+++ b/Client/reasn-client/apps/web/app/register/organizer/page.tsx
@@ -0,0 +1,77 @@
+"use client";
+
+import {
+ ButtonBase,
+ FloatingInput,
+} from "@reasn/ui/src/components/shared/form";
+import React, { useRef, useState } from "react";
+
+const RegisterOrganizer = () => {
+ const [currentStep, setCurrentStep] = useState(1);
+ const formRef = useRef(null);
+
+ const handleFormSubmit = () => {
+ console.log("form submitted");
+ formRef.current?.submit();
+ };
+
+ return (
+ <>
+
+
+
+
+ {currentStep === 1 && (
+
+ to jak, zorganizujesz nam coś?
+
+ )}
+ {currentStep === 2 && (
+
+ gdzie możemy cię znaleźć?
+
+ )}
+
+ currentStep === 2
+ ? handleFormSubmit()
+ : setCurrentStep(currentStep + 1)
+ }
+ />
+
+
+ >
+ );
+};
+
+export default RegisterOrganizer;
diff --git a/Client/reasn-client/apps/web/app/register/page.tsx b/Client/reasn-client/apps/web/app/register/page.tsx
new file mode 100644
index 00000000..05c14ae0
--- /dev/null
+++ b/Client/reasn-client/apps/web/app/register/page.tsx
@@ -0,0 +1,36 @@
+"use client";
+
+import { useRouter } from "next/navigation";
+import React from "react";
+
+const RegisterMiddleware = () => {
+ const router = useRouter();
+
+ return (
+
+
kim jesteś?
+
+
router.push("/register/organizer")}
+ >
+
+
+ Organizator
+
+
+
router.push("/register/user")}
+ >
+
+ Uczestnik
+
+
+
+
+
+ );
+};
+
+export default RegisterMiddleware;
diff --git a/Client/reasn-client/apps/web/app/register/user/page.tsx b/Client/reasn-client/apps/web/app/register/user/page.tsx
new file mode 100644
index 00000000..79131460
--- /dev/null
+++ b/Client/reasn-client/apps/web/app/register/user/page.tsx
@@ -0,0 +1,77 @@
+"use client";
+
+import {
+ ButtonBase,
+ FloatingInput,
+} from "@reasn/ui/src/components/shared/form";
+import React, { useRef, useState } from "react";
+
+const RegisterUser = () => {
+ const [currentStep, setCurrentStep] = useState(1);
+ const formRef = useRef(null);
+
+ const handleFormSubmit = () => {
+ console.log("form submitted");
+ formRef.current?.submit();
+ };
+
+ return (
+ <>
+
+
+
+
+ {currentStep === 1 && (
+
+ znalazłeś już swój powód do spotkań?
+
+ )}
+ {currentStep === 2 && (
+
+ gdzie powinniśmy cię szukać?
+
+ )}
+
+ currentStep === 2
+ ? handleFormSubmit()
+ : setCurrentStep(currentStep + 1)
+ }
+ />
+
+
+ >
+ );
+};
+
+export default RegisterUser;
diff --git a/Client/reasn-client/apps/web/styles/index.module.css b/Client/reasn-client/apps/web/styles/index.module.css
deleted file mode 100644
index e69de29b..00000000
diff --git a/Client/reasn-client/apps/web/tsconfig.json b/Client/reasn-client/apps/web/tsconfig.json
index d2ee38a7..aea6585a 100644
--- a/Client/reasn-client/apps/web/tsconfig.json
+++ b/Client/reasn-client/apps/web/tsconfig.json
@@ -1,7 +1,12 @@
{
"extends": "@reasn/typescript-config/nextjs.json",
"compilerOptions": {
- "plugins": [{ "name": "next" }]
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "strictNullChecks": true
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
diff --git a/Client/reasn-client/packages/ui/src/components/shared/Navbar.tsx b/Client/reasn-client/packages/ui/src/components/shared/Navbar.tsx
index 991a04db..a683b29a 100644
--- a/Client/reasn-client/packages/ui/src/components/shared/Navbar.tsx
+++ b/Client/reasn-client/packages/ui/src/components/shared/Navbar.tsx
@@ -1,24 +1,25 @@
import React from "react";
+import Link from "next/link";
export const Navbar = () => {
return (
diff --git a/Client/reasn-client/packages/ui/src/components/shared/form/Button.tsx b/Client/reasn-client/packages/ui/src/components/shared/form/Button.tsx
new file mode 100644
index 00000000..f3a6d78d
--- /dev/null
+++ b/Client/reasn-client/packages/ui/src/components/shared/form/Button.tsx
@@ -0,0 +1,18 @@
+import React from "react";
+
+interface ButtonProps {
+ text: string;
+ onClick: () => void;
+}
+
+export const ButtonBase = (props: ButtonProps) => {
+ const { text, onClick } = props;
+ return (
+
+ );
+};
diff --git a/Client/reasn-client/packages/ui/src/components/shared/form/Input.tsx b/Client/reasn-client/packages/ui/src/components/shared/form/Input.tsx
new file mode 100644
index 00000000..9e611f2b
--- /dev/null
+++ b/Client/reasn-client/packages/ui/src/components/shared/form/Input.tsx
@@ -0,0 +1,53 @@
+import clsx from "clsx";
+import React, { useState } from "react";
+
+interface InputProps {
+ type: string;
+ label?: string;
+ name?: string;
+ onFocus?: () => void;
+ onBlur?: () => void;
+}
+
+export const FloatingInput = (props: InputProps) => {
+ const [isFocused, setIsFocused] = useState(false);
+ const [isFilled, setIsFilled] = useState(false);
+ const { label, type, name, onFocus, onBlur } = props;
+
+ const handleFocus = () => {
+ onFocus?.();
+ setIsFocused(true);
+ };
+
+ const handleBlur = () => {
+ onBlur?.();
+ setIsFocused(false);
+ };
+
+ return (
+
+
+ setIsFilled(!!e.target.value)}
+ />
+
+ );
+};
diff --git a/Client/reasn-client/packages/ui/src/components/shared/form/index.tsx b/Client/reasn-client/packages/ui/src/components/shared/form/index.tsx
new file mode 100644
index 00000000..6f5bc46f
--- /dev/null
+++ b/Client/reasn-client/packages/ui/src/components/shared/form/index.tsx
@@ -0,0 +1,2 @@
+export { ButtonBase } from "./Button";
+export { FloatingInput } from "./Input";
diff --git a/Client/reasn-client/packages/ui/src/components/web/main/QuickFilters.tsx b/Client/reasn-client/packages/ui/src/components/web/main/QuickFilters.tsx
index d3562609..e45dca67 100644
--- a/Client/reasn-client/packages/ui/src/components/web/main/QuickFilters.tsx
+++ b/Client/reasn-client/packages/ui/src/components/web/main/QuickFilters.tsx
@@ -1,6 +1,7 @@
import clsx from "clsx";
import React, { useState } from "react";
import { Card, CardVariant } from "@reasn/ui/src/components/shared";
+import { ButtonBase } from "@reasn/ui/src/components/shared/form";
interface QuickFiltersButtonProps {
title: string;
@@ -69,9 +70,7 @@ export const QuickFilters = () => {
-
+ console.log("wiecej")} />
);