diff --git a/public/nexa-text.png b/public/nexa-text.png new file mode 100644 index 0000000..371f282 Binary files /dev/null and b/public/nexa-text.png differ diff --git a/public/nexa-text.svg b/public/nexa-text.svg new file mode 100644 index 0000000..522ae4e --- /dev/null +++ b/public/nexa-text.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/app/globals.css b/src/app/globals.css index a52d7e8..7e80476 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -48,6 +48,8 @@ } :root { + --radius: 0.325rem; + /* Base surfaces */ --background: oklch(0.13 0.01 260); /* deep charcoal */ --foreground: oklch(0.98 0 0); @@ -110,4 +112,17 @@ body { @apply bg-background text-foreground; } +} + +body { + @apply bg-background text-foreground; +} + + +@font-face { + font-family: 'Researcher'; + src: url('/font/researcher-regular-400.ttf') format('truetype'); + font-weight: normal; + font-style: normal; + font-display: swap; } \ No newline at end of file diff --git a/src/app/markets/page.tsx b/src/app/markets/page.tsx index 55c1f5a..80576b8 100644 --- a/src/app/markets/page.tsx +++ b/src/app/markets/page.tsx @@ -5,7 +5,7 @@ import Statusbar from "@/components/layout/Statusbar"; export default function Markets() { return ( -
+
diff --git a/src/components/layout/Navbar.tsx b/src/components/layout/Navbar.tsx index 6098186..44e6f0b 100644 --- a/src/components/layout/Navbar.tsx +++ b/src/components/layout/Navbar.tsx @@ -1,7 +1,38 @@ +import Link from "next/link"; +import { Button } from "../ui/button"; + +const links = [ + { + path: "/markets", + name: "Markets", + }, + { + path: "/trackers", + name: "Trackers", + }, +]; + export default function Navbar() { - return ( -
- -
- ) -} \ No newline at end of file + return ( + + ); +} diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 0000000..b5ea4ab --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,64 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" +import { Slot } from "radix-ui" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "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", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: + "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2 has-[>svg]:px-3", + xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3", + sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", + lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + icon: "size-9", + "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3", + "icon-sm": "size-8", + "icon-lg": "size-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant = "default", + size = "default", + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean + }) { + const Comp = asChild ? Slot.Root : "button" + + return ( + + ) +} + +export { Button, buttonVariants }