diff --git a/wretched-machines-frontend/package-lock.json b/wretched-machines-frontend/package-lock.json index af01fbe..36b9372 100644 --- a/wretched-machines-frontend/package-lock.json +++ b/wretched-machines-frontend/package-lock.json @@ -11,6 +11,7 @@ "@hookform/resolvers": "^3.3.4", "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-menubar": "^1.0.4", + "@radix-ui/react-navigation-menu": "^1.1.4", "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", @@ -761,6 +762,42 @@ } } }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.1.4.tgz", + "integrity": "sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-popper": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", @@ -982,6 +1019,23 @@ } } }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-rect": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", @@ -1018,6 +1072,29 @@ } } }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/rect": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", diff --git a/wretched-machines-frontend/package.json b/wretched-machines-frontend/package.json index 5758d05..a59b022 100644 --- a/wretched-machines-frontend/package.json +++ b/wretched-machines-frontend/package.json @@ -12,6 +12,7 @@ "@hookform/resolvers": "^3.3.4", "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-menubar": "^1.0.4", + "@radix-ui/react-navigation-menu": "^1.1.4", "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", diff --git a/wretched-machines-frontend/src/app/admin/page.tsx b/wretched-machines-frontend/src/app/admin/page.tsx new file mode 100644 index 0000000..15cea6a --- /dev/null +++ b/wretched-machines-frontend/src/app/admin/page.tsx @@ -0,0 +1,9 @@ +const AdminPage = () => { + return ( + + ); +} + +export default AdminPage; \ No newline at end of file diff --git a/wretched-machines-frontend/src/app/blog/page.tsx b/wretched-machines-frontend/src/app/blog/page.tsx new file mode 100644 index 0000000..19ef65a --- /dev/null +++ b/wretched-machines-frontend/src/app/blog/page.tsx @@ -0,0 +1,16 @@ +import ContentBox from "@/components/ui/content-box"; +import PageTitle from "@/components/ui/page-title"; + +export default function Blog() { + return ( +
+ + +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
+ +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
+
+ ); + } \ No newline at end of file diff --git a/wretched-machines-frontend/src/app/demos/page.tsx b/wretched-machines-frontend/src/app/demos/page.tsx new file mode 100644 index 0000000..7bea929 --- /dev/null +++ b/wretched-machines-frontend/src/app/demos/page.tsx @@ -0,0 +1,16 @@ +import ContentBox from "@/components/ui/content-box"; +import PageTitle from "@/components/ui/page-title"; + +export default function Demos() { + return ( +
+ + +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
+ +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
+
+ ); + } \ No newline at end of file diff --git a/wretched-machines-frontend/src/app/globals.css b/wretched-machines-frontend/src/app/globals.css index 4ef0baf..aaa1306 100644 --- a/wretched-machines-frontend/src/app/globals.css +++ b/wretched-machines-frontend/src/app/globals.css @@ -66,6 +66,8 @@ } } + + @layer base { * { @apply border-border; @@ -73,4 +75,16 @@ body { @apply bg-background text-foreground; } -} \ No newline at end of file + + .text-shadow { + text-shadow: .3rem .3rem 0 #bab5a1; + } + + main, footer { + background-color: #d0de9e; + opacity: 0.6; + background-image: linear-gradient(45deg, #d0d0d0 50%, #d0de9e 50%); + background-size: 5px 5px; + } +} + diff --git a/wretched-machines-frontend/src/app/layout.tsx b/wretched-machines-frontend/src/app/layout.tsx index 3e2701c..c070d6c 100644 --- a/wretched-machines-frontend/src/app/layout.tsx +++ b/wretched-machines-frontend/src/app/layout.tsx @@ -3,6 +3,7 @@ import { Inter as FontSans } from "next/font/google" import "./globals.css"; import { cn } from "@/lib/utils" +import Navbar from "@/components/ui/navbar"; const fontSans = FontSans({ subsets: ["latin"], @@ -10,7 +11,7 @@ const fontSans = FontSans({ }) export const metadata: Metadata = { - title: "Create Next App", + title: "Wretched Machines", description: "Generated by create next app", }; @@ -24,7 +25,11 @@ export default function RootLayout({ {children} + )}> + + {children} + + ); } diff --git a/wretched-machines-frontend/src/app/page.tsx b/wretched-machines-frontend/src/app/page.tsx index 381ba80..dde265e 100644 --- a/wretched-machines-frontend/src/app/page.tsx +++ b/wretched-machines-frontend/src/app/page.tsx @@ -1,116 +1,17 @@ -import Image from "next/image"; -import { Button } from "@/components/ui/button" +import ContentBox from "@/components/ui/content-box"; +import PageTitle from "@/components/ui/page-title"; export default function Home() { return (
-
-

- Get started by editing  - src/app/page.tsx -

-
- - By{" "} - Vercel Logo - -
-
- -
- Next.js Logo -
- -
- -

- Docs{" "} - - -> - -

-

- Find in-depth information about Next.js features and API. -

-
- - -

- Learn{" "} - - -> - -

-

- Learn about Next.js in an interactive course with quizzes! -

-
- - -

- Templates{" "} - - -> - -

-

- Explore starter templates for Next.js. -

-
- - -

- Deploy{" "} - - -> - -

-

- Instantly deploy your Next.js site to a shareable URL with Vercel. -

-
- -
+ + +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
+ +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
); } diff --git a/wretched-machines-frontend/src/app/tools/page.tsx b/wretched-machines-frontend/src/app/tools/page.tsx new file mode 100644 index 0000000..6172e3c --- /dev/null +++ b/wretched-machines-frontend/src/app/tools/page.tsx @@ -0,0 +1,16 @@ +import ContentBox from "@/components/ui/content-box"; +import PageTitle from "@/components/ui/page-title"; + +export default function Tools() { + return ( +
+ + +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
+ +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure deserunt esse illum pariatur libero provident maxime est aliquam labore odit, optio atque incidunt iusto debitis! Repudiandae quibusdam nulla accusantium quae.

+
+
+ ); + } \ No newline at end of file diff --git a/wretched-machines-frontend/src/components/ui/button.tsx b/wretched-machines-frontend/src/components/ui/button.tsx deleted file mode 100644 index 0ba4277..0000000 --- a/wretched-machines-frontend/src/components/ui/button.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const buttonVariants = cva( - "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - } -) - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button" - return ( - - ) - } -) -Button.displayName = "Button" - -export { Button, buttonVariants } diff --git a/wretched-machines-frontend/src/components/ui/content-box.tsx b/wretched-machines-frontend/src/components/ui/content-box.tsx new file mode 100644 index 0000000..59d7915 --- /dev/null +++ b/wretched-machines-frontend/src/components/ui/content-box.tsx @@ -0,0 +1,17 @@ +interface ContentBoxProps { + title: string, + children: React.ReactNode +} + +const ContentBox = (props: ContentBoxProps)=>{ + return( +
+
{props.title}
+
+ {props.children} +
+
+ ); +} + +export default ContentBox; \ No newline at end of file diff --git a/wretched-machines-frontend/src/components/ui/form.tsx b/wretched-machines-frontend/src/components/ui/form.tsx deleted file mode 100644 index 4603f8b..0000000 --- a/wretched-machines-frontend/src/components/ui/form.tsx +++ /dev/null @@ -1,176 +0,0 @@ -import * as React from "react" -import * as LabelPrimitive from "@radix-ui/react-label" -import { Slot } from "@radix-ui/react-slot" -import { - Controller, - ControllerProps, - FieldPath, - FieldValues, - FormProvider, - useFormContext, -} from "react-hook-form" - -import { cn } from "@/lib/utils" -import { Label } from "@/components/ui/label" - -const Form = FormProvider - -type FormFieldContextValue< - TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath -> = { - name: TName -} - -const FormFieldContext = React.createContext( - {} as FormFieldContextValue -) - -const FormField = < - TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath ->({ - ...props -}: ControllerProps) => { - return ( - - - - ) -} - -const useFormField = () => { - const fieldContext = React.useContext(FormFieldContext) - const itemContext = React.useContext(FormItemContext) - const { getFieldState, formState } = useFormContext() - - const fieldState = getFieldState(fieldContext.name, formState) - - if (!fieldContext) { - throw new Error("useFormField should be used within ") - } - - const { id } = itemContext - - return { - id, - name: fieldContext.name, - formItemId: `${id}-form-item`, - formDescriptionId: `${id}-form-item-description`, - formMessageId: `${id}-form-item-message`, - ...fieldState, - } -} - -type FormItemContextValue = { - id: string -} - -const FormItemContext = React.createContext( - {} as FormItemContextValue -) - -const FormItem = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const id = React.useId() - - return ( - -
- - ) -}) -FormItem.displayName = "FormItem" - -const FormLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { - const { error, formItemId } = useFormField() - - return ( -