From 0b843ced89331ee7e5d2ceff106e23240def0cb5 Mon Sep 17 00:00:00 2001 From: moolcoov Date: Thu, 27 Feb 2025 18:08:13 +0300 Subject: [PATCH] init: react router --- services/frontend/bun.lockb | Bin 94828 -> 96683 bytes services/frontend/eslint.config.js | 25 ++++++++---------- services/frontend/package.json | 1 + services/frontend/src/App.tsx | 5 +++- .../frontend/src/components/ui/button.tsx | 20 +++++++------- services/frontend/src/main.tsx | 6 +++-- services/frontend/src/pages/.gitkeep | 0 .../frontend/src/{ => shared}/lib/utils.ts | 0 8 files changed, 30 insertions(+), 27 deletions(-) create mode 100644 services/frontend/src/pages/.gitkeep rename services/frontend/src/{ => shared}/lib/utils.ts (100%) diff --git a/services/frontend/bun.lockb b/services/frontend/bun.lockb index 2c7d5b00b327c35395db1522bfd5fda8b5a65f3e..33f5a8182b530791aeaa8520e1de4803330313c0 100644 GIT binary patch delta 16510 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 world yopta; + return ; } diff --git a/services/frontend/src/components/ui/button.tsx b/services/frontend/src/components/ui/button.tsx index e1b5d8a..49dcad9 100644 --- a/services/frontend/src/components/ui/button.tsx +++ b/services/frontend/src/components/ui/button.tsx @@ -1,8 +1,8 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { cva, type VariantProps } from "class-variance-authority" +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" +import { cn } from "@/shared/lib/utils"; const buttonVariants = cva( "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_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", @@ -31,8 +31,8 @@ const buttonVariants = cva( variant: "default", size: "default", }, - } -) + }, +); function Button({ className, @@ -42,9 +42,9 @@ function Button({ ...props }: React.ComponentProps<"button"> & VariantProps & { - asChild?: boolean + asChild?: boolean; }) { - const Comp = asChild ? Slot : "button" + const Comp = asChild ? Slot : "button"; return ( - ) + ); } -export { Button, buttonVariants } +export { Button, buttonVariants }; diff --git a/services/frontend/src/main.tsx b/services/frontend/src/main.tsx index d0a91b1..f046499 100644 --- a/services/frontend/src/main.tsx +++ b/services/frontend/src/main.tsx @@ -1,10 +1,12 @@ import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; -import "./styles/globals.css"; +import { BrowserRouter } from "react-router"; import App from "./App.tsx"; createRoot(document.getElementById("root")!).render( - + + + , ); diff --git a/services/frontend/src/pages/.gitkeep b/services/frontend/src/pages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/services/frontend/src/lib/utils.ts b/services/frontend/src/shared/lib/utils.ts similarity index 100% rename from services/frontend/src/lib/utils.ts rename to services/frontend/src/shared/lib/utils.ts