diff --git a/eslint.config.js b/eslint.config.js
index b19330b..097dc02 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -9,6 +9,9 @@ export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
+ rules: {
+ "@typescript-eslint/no-explicit-any": "off"
+ },
extends: [
js.configs.recommended,
tseslint.configs.recommended,
diff --git a/index.html b/index.html
index feed996..9e977c5 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
-
-
Auth view
-

-
+
+
+
+
+
+
+
+ {isSignIn ? (
+
+ ) : (
+
+ )}
+
+
+
);
}
diff --git a/src/components/Header.tsx b/src/components/Header.tsx
new file mode 100644
index 0000000..69c05b3
--- /dev/null
+++ b/src/components/Header.tsx
@@ -0,0 +1,41 @@
+import { Play } from "lucide-react";
+
+interface HeaderProps {
+ scrolled: boolean;
+ onLoginClick?: () => void;
+}
+
+export function Header({ scrolled }: HeaderProps) {
+ return (
+
+ );
+}
diff --git a/src/components/Input.tsx b/src/components/Input.tsx
new file mode 100644
index 0000000..0f4e026
--- /dev/null
+++ b/src/components/Input.tsx
@@ -0,0 +1,14 @@
+import * as React from "react";
+
+function Input({ type, ...props }: React.ComponentProps<"input">) {
+ return (
+
+ );
+}
+
+export { Input };
diff --git a/src/components/Label.tsx b/src/components/Label.tsx
new file mode 100644
index 0000000..246b0b4
--- /dev/null
+++ b/src/components/Label.tsx
@@ -0,0 +1,13 @@
+import * as React from "react";
+
+function Label({ ...props }: React.ComponentProps<"label">) {
+ return (
+
+ );
+}
+
+export { Label };
diff --git a/src/components/SignIn.tsx b/src/components/SignIn.tsx
new file mode 100644
index 0000000..838c55c
--- /dev/null
+++ b/src/components/SignIn.tsx
@@ -0,0 +1,125 @@
+import { useState } from "react";
+import { Input } from "./Input";
+import { Label } from "./Label";
+
+interface SignInProps {
+ onBack?: () => void;
+ onSignUp?: () => void;
+}
+
+export function SignIn({ onBack, onSignUp }: SignInProps) {
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+
+ const handleSubmit = (e: React.FormEvent) => {
+ e.preventDefault();
+ console.log("signIn:", { email, password });
+ };
+
+ return (
+
+
+
+ Entrar no ModuFlix
+
+
+
+
+ {onBack && (
+
+ )}
+
+
+
+
+ );
+}
diff --git a/src/components/SignUp.tsx b/src/components/SignUp.tsx
new file mode 100644
index 0000000..12daded
--- /dev/null
+++ b/src/components/SignUp.tsx
@@ -0,0 +1,138 @@
+import { useState } from "react";
+import { Input } from "./Input";
+import { Label } from "./Label";
+
+interface SignUpProps {
+ onBack?: () => void;
+}
+
+export function SignUp({ onBack }: SignUpProps) {
+ const [email, setEmail] = useState("");
+ const [username, setUsername] = useState("");
+ const [name, setName] = useState("");
+ const [password, setPassword] = useState("");
+
+ const handleSubmit = (e: React.FormEvent) => {
+ e.preventDefault();
+ console.log("SignUp:", { email, username, name, password });
+ };
+
+ return (
+
+
+
+ Crie uma conta no ModuFlix
+
+
+
+
+ {onBack && (
+
+ )}
+
+
+
+ );
+}
diff --git a/vite.config.ts b/vite.config.ts
index 1ad0e67..81aeffc 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -2,6 +2,7 @@
import { defineConfig, loadEnv } from "vite";
import react from "@vitejs/plugin-react";
import { federation } from "@module-federation/vite";
+import tailwindcss from "@tailwindcss/vite";
import path from "path";
// https://vite.dev/config/
@@ -21,6 +22,8 @@ export default defineConfig(({ mode }) => {
: env.VITE_HOST + "/"
: "/",
plugins: [
+ react(),
+ tailwindcss(),
...federation({
filename: "remoteEntry.js",
name: "auth",
@@ -33,7 +36,6 @@ export default defineConfig(({ mode }) => {
"react-dom": { singleton: true, requiredVersion: undefined },
},
}),
- react(),
],
test: {
globals: true,