From 1170083e49c2f7222d4cb8f59ee2e7b88bb0f570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 19 Jul 2024 23:38:15 +0200 Subject: [PATCH] ShadCN setup --- bun.lockb | Bin 296257 -> 305520 bytes packages/webui/package.json | 8 +- packages/webui/src/components/ui/card.tsx | 79 ++++++++++++ packages/webui/src/components/ui/checkbox.tsx | 28 ++++ packages/webui/src/components/ui/skeleton.tsx | 15 +++ packages/webui/src/components/ui/tooltip.tsx | 28 ++++ packages/webui/src/lib/Passthrough.tsx | 13 ++ packages/webui/src/main.tsx | 10 +- packages/webui/src/todo/VTodo.tsx | 122 ++++++++++++------ 9 files changed, 250 insertions(+), 53 deletions(-) create mode 100644 packages/webui/src/components/ui/card.tsx create mode 100644 packages/webui/src/components/ui/checkbox.tsx create mode 100644 packages/webui/src/components/ui/skeleton.tsx create mode 100644 packages/webui/src/components/ui/tooltip.tsx create mode 100644 packages/webui/src/lib/Passthrough.tsx diff --git a/bun.lockb b/bun.lockb index 7978aa7e2d5c19ba9b0284b439f450c2b6152b34..56ab7338f8aa67c1d36bc19689317a9d665f67bf 100755 GIT binary patch delta 40886 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 delta 36081 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 diff --git a/packages/webui/package.json b/packages/webui/package.json index f2bdcce..aa59fe8 100644 --- a/packages/webui/package.json +++ b/packages/webui/package.json @@ -10,11 +10,10 @@ }, "dependencies": { "@effect/schema": "^0.68.17", - "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.5", - "@mui/icons-material": "^5.16.1", "@mui/material": "^5.16.1", + "@radix-ui/react-checkbox": "^1.1.1", "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.2", "@tanstack/react-query": "4", "@tanstack/react-router": "^1.44.2", "@thilawyn/thilalib": "^0.1.5", @@ -26,10 +25,9 @@ "effect": "^3.4.7", "framer-motion": "^11.3.6", "lodash-es": "^4.17.21", - "lucide-react": "^0.408.0", + "lucide-react": "^0.411.0", "mobx": "^6.13.0", "mobx-react-lite": "^4.0.7", - "primereact": "^10.7.0", "react": "^18.3.1", "react-dom": "^18.3.1", "remeda": "^2.6.0", diff --git a/packages/webui/src/components/ui/card.tsx b/packages/webui/src/components/ui/card.tsx new file mode 100644 index 0000000..afa13ec --- /dev/null +++ b/packages/webui/src/components/ui/card.tsx @@ -0,0 +1,79 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/packages/webui/src/components/ui/checkbox.tsx b/packages/webui/src/components/ui/checkbox.tsx new file mode 100644 index 0000000..ddbdd01 --- /dev/null +++ b/packages/webui/src/components/ui/checkbox.tsx @@ -0,0 +1,28 @@ +import * as React from "react" +import * as CheckboxPrimitive from "@radix-ui/react-checkbox" +import { Check } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)) +Checkbox.displayName = CheckboxPrimitive.Root.displayName + +export { Checkbox } diff --git a/packages/webui/src/components/ui/skeleton.tsx b/packages/webui/src/components/ui/skeleton.tsx new file mode 100644 index 0000000..e8e1132 --- /dev/null +++ b/packages/webui/src/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ) +} + +export { Skeleton } diff --git a/packages/webui/src/components/ui/tooltip.tsx b/packages/webui/src/components/ui/tooltip.tsx new file mode 100644 index 0000000..e121f0a --- /dev/null +++ b/packages/webui/src/components/ui/tooltip.tsx @@ -0,0 +1,28 @@ +import * as React from "react" +import * as TooltipPrimitive from "@radix-ui/react-tooltip" + +import { cn } from "@/lib/utils" + +const TooltipProvider = TooltipPrimitive.Provider + +const Tooltip = TooltipPrimitive.Root + +const TooltipTrigger = TooltipPrimitive.Trigger + +const TooltipContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)) +TooltipContent.displayName = TooltipPrimitive.Content.displayName + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/packages/webui/src/lib/Passthrough.tsx b/packages/webui/src/lib/Passthrough.tsx new file mode 100644 index 0000000..595c142 --- /dev/null +++ b/packages/webui/src/lib/Passthrough.tsx @@ -0,0 +1,13 @@ +import type { ReactNode } from "react" + + +export module Passthrough { + export interface Props { + children?: ReactNode + } +} + + +export function Passthrough({ children }: Passthrough.Props) { + return children +} diff --git a/packages/webui/src/main.tsx b/packages/webui/src/main.tsx index 5451a81..d83ab70 100644 --- a/packages/webui/src/main.tsx +++ b/packages/webui/src/main.tsx @@ -1,11 +1,9 @@ import { RouterProvider, createRouter } from "@tanstack/react-router" -import { PrimeReactProvider } from "primereact/api" import React from "react" import ReactDOM from "react-dom/client" import { routeTree } from "./routeTree.gen" import { TRPCClientProvider } from "./trpc/TRPCClientProvider" -import "primereact/resources/themes/lara-light-cyan/theme.css" import "./index.css" @@ -20,10 +18,8 @@ declare module "@tanstack/react-router" { ReactDOM.createRoot(document.getElementById("root")!).render( - - - - - + + + ) diff --git a/packages/webui/src/todo/VTodo.tsx b/packages/webui/src/todo/VTodo.tsx index add8826..8f6140d 100644 --- a/packages/webui/src/todo/VTodo.tsx +++ b/packages/webui/src/todo/VTodo.tsx @@ -1,7 +1,12 @@ +import { Button } from "@/components/ui/button" +import { Card, CardContent } from "@/components/ui/card" +import { Skeleton as UISkeleton } from "@/components/ui/skeleton" +import { Tooltip, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" +import { Passthrough } from "@/lib/Passthrough" import { Schema as S } from "@effect/schema" -import { ArrowDownward, ArrowUpward, Delete } from "@mui/icons-material" +import { TooltipContent } from "@radix-ui/react-tooltip" +import { ChevronDown, ChevronUp, X } from "lucide-react" import { observer } from "mobx-react-lite" -import { Button } from "primereact/button" import { JsonifiableTodo, Todo } from "../data" import { trpc } from "../trpc/trpc" @@ -21,53 +26,88 @@ export const VTodo = observer(({ todo }: VTodo.Props) => { const updateTodo = trpc.todo.update.useMutation() const removeTodo = trpc.todo.remove.useMutation() + const Skeleton = updateTodo.isLoading || removeTodo.isLoading + ? UISkeleton + : Passthrough + return ( -
-

{todo.content}

+ + + +

{todo.content}

-
- + - + - loading={removeTodo.isLoading} - onClick={() => removeTodo.mutate(encodeTodo(todo))} - /> -
-
+ +

Move up

+
+ + + + + + + + + + +

Delete

+
+
+
+
+ + + ) })