From 0e4950a3cdfdb2a2de070a945b29c3853e9400ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 20 Jul 2024 01:00:05 +0200 Subject: [PATCH] Radix UI setup --- bun.lockb | Bin 305520 -> 311345 bytes packages/webui/components.json | 17 --- packages/webui/package.json | 11 +- packages/webui/src/components/ui/button.tsx | 56 -------- 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/index.css | 66 ---------- packages/webui/src/lib/Passthrough.tsx | 13 -- packages/webui/src/lib/utils.ts | 6 - packages/webui/src/main.tsx | 12 +- packages/webui/src/routes/about.lazy.tsx | 9 +- packages/webui/src/routes/index.lazy.tsx | 31 +++-- packages/webui/src/todo/VTodo.tsx | 124 +++++++----------- packages/webui/tailwind.config.js | 86 ++---------- packages/webui/tsconfig.json | 6 - 17 files changed, 93 insertions(+), 494 deletions(-) delete mode 100644 packages/webui/components.json delete mode 100644 packages/webui/src/components/ui/button.tsx delete mode 100644 packages/webui/src/components/ui/card.tsx delete mode 100644 packages/webui/src/components/ui/checkbox.tsx delete mode 100644 packages/webui/src/components/ui/skeleton.tsx delete mode 100644 packages/webui/src/components/ui/tooltip.tsx delete mode 100644 packages/webui/src/lib/Passthrough.tsx delete mode 100644 packages/webui/src/lib/utils.ts diff --git a/bun.lockb b/bun.lockb index 56ab7338f8aa67c1d36bc19689317a9d665f67bf..f1e78188a3d9eeb49c0a31eacce987747fca29f4 100755 GIT binary patch delta 50323 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, - 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/packages/webui/src/components/ui/card.tsx b/packages/webui/src/components/ui/card.tsx deleted file mode 100644 index afa13ec..0000000 --- a/packages/webui/src/components/ui/card.tsx +++ /dev/null @@ -1,79 +0,0 @@ -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 deleted file mode 100644 index ddbdd01..0000000 --- a/packages/webui/src/components/ui/checkbox.tsx +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index e8e1132..0000000 --- a/packages/webui/src/components/ui/skeleton.tsx +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index e121f0a..0000000 --- a/packages/webui/src/components/ui/tooltip.tsx +++ /dev/null @@ -1,28 +0,0 @@ -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/index.css b/packages/webui/src/index.css index d924e24..b5c61c9 100644 --- a/packages/webui/src/index.css +++ b/packages/webui/src/index.css @@ -1,69 +1,3 @@ @tailwind base; @tailwind components; @tailwind utilities; - -@layer base { - :root { - --background: 0 0% 100%; - --foreground: 222.2 84% 4.9%; - --card: 0 0% 100%; - --card-foreground: 222.2 84% 4.9%; - --popover: 0 0% 100%; - --popover-foreground: 222.2 84% 4.9%; - --primary: 222.2 47.4% 11.2%; - --primary-foreground: 210 40% 98%; - --secondary: 210 40% 96.1%; - --secondary-foreground: 222.2 47.4% 11.2%; - --muted: 210 40% 96.1%; - --muted-foreground: 215.4 16.3% 46.9%; - --accent: 210 40% 96.1%; - --accent-foreground: 222.2 47.4% 11.2%; - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 210 40% 98%; - --border: 214.3 31.8% 91.4%; - --input: 214.3 31.8% 91.4%; - --ring: 222.2 84% 4.9%; - --radius: 0.5rem; - --chart-1: 12 76% 61%; - --chart-2: 173 58% 39%; - --chart-3: 197 37% 24%; - --chart-4: 43 74% 66%; - --chart-5: 27 87% 67%; - } - - .dark { - --background: 222.2 84% 4.9%; - --foreground: 210 40% 98%; - --card: 222.2 84% 4.9%; - --card-foreground: 210 40% 98%; - --popover: 222.2 84% 4.9%; - --popover-foreground: 210 40% 98%; - --primary: 210 40% 98%; - --primary-foreground: 222.2 47.4% 11.2%; - --secondary: 217.2 32.6% 17.5%; - --secondary-foreground: 210 40% 98%; - --muted: 217.2 32.6% 17.5%; - --muted-foreground: 215 20.2% 65.1%; - --accent: 217.2 32.6% 17.5%; - --accent-foreground: 210 40% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 210 40% 98%; - --border: 217.2 32.6% 17.5%; - --input: 217.2 32.6% 17.5%; - --ring: 212.7 26.8% 83.9%; - --chart-1: 220 70% 50%; - --chart-2: 160 60% 45%; - --chart-3: 30 80% 55%; - --chart-4: 280 65% 60%; - --chart-5: 340 75% 55%; - } -} - -@layer base { - * { - @apply border-border; - } - body { - @apply bg-background text-foreground; - } -} diff --git a/packages/webui/src/lib/Passthrough.tsx b/packages/webui/src/lib/Passthrough.tsx deleted file mode 100644 index 595c142..0000000 --- a/packages/webui/src/lib/Passthrough.tsx +++ /dev/null @@ -1,13 +0,0 @@ -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/lib/utils.ts b/packages/webui/src/lib/utils.ts deleted file mode 100644 index d084cca..0000000 --- a/packages/webui/src/lib/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type ClassValue, clsx } from "clsx" -import { twMerge } from "tailwind-merge" - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) -} diff --git a/packages/webui/src/main.tsx b/packages/webui/src/main.tsx index d83ab70..7f56c0a 100644 --- a/packages/webui/src/main.tsx +++ b/packages/webui/src/main.tsx @@ -1,9 +1,12 @@ +import { Theme } from "@radix-ui/themes" import { RouterProvider, createRouter } from "@tanstack/react-router" import React from "react" import ReactDOM from "react-dom/client" import { routeTree } from "./routeTree.gen" import { TRPCClientProvider } from "./trpc/TRPCClientProvider" + +import "@radix-ui/themes/styles.css" import "./index.css" @@ -15,11 +18,12 @@ declare module "@tanstack/react-router" { } } - ReactDOM.createRoot(document.getElementById("root")!).render( - - - + + + + + ) diff --git a/packages/webui/src/routes/about.lazy.tsx b/packages/webui/src/routes/about.lazy.tsx index 1a122a2..0dee670 100644 --- a/packages/webui/src/routes/about.lazy.tsx +++ b/packages/webui/src/routes/about.lazy.tsx @@ -1,12 +1,15 @@ +import { Container, Heading } from "@radix-ui/themes" import { createLazyFileRoute } from "@tanstack/react-router" import { observer } from "mobx-react-lite" export const About = observer(() => { - return <> -

About

- + return ( + + About + + ) }) diff --git a/packages/webui/src/routes/index.lazy.tsx b/packages/webui/src/routes/index.lazy.tsx index 327381a..c1654b4 100644 --- a/packages/webui/src/routes/index.lazy.tsx +++ b/packages/webui/src/routes/index.lazy.tsx @@ -1,4 +1,5 @@ import { Schema as S } from "@effect/schema" +import { Container, Flex, Text } from "@radix-ui/themes" import { createLazyFileRoute } from "@tanstack/react-router" import { ServerTime } from "@todo-tests/common/data" import { Option, flow, identity } from "effect" @@ -37,20 +38,26 @@ export const Index = observer(() => { return ( -
-

{serverTime.toString()}

+ + + {serverTime.toString()} - {todos.map(todo => ( - todo.order, - })} + {todos.map(todo => ( + todo.order, + })} - todo={todo} - /> - ))} -
+ todo={todo} + /> + ))} + + ) }) diff --git a/packages/webui/src/todo/VTodo.tsx b/packages/webui/src/todo/VTodo.tsx index 8f6140d..1a89390 100644 --- a/packages/webui/src/todo/VTodo.tsx +++ b/packages/webui/src/todo/VTodo.tsx @@ -1,10 +1,5 @@ -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 { TooltipContent } from "@radix-ui/react-tooltip" +import { Card, Flex, IconButton, Skeleton, Text, Tooltip } from "@radix-ui/themes" import { ChevronDown, ChevronUp, X } from "lucide-react" import { observer } from "mobx-react-lite" import { JsonifiableTodo, Todo } from "../data" @@ -26,86 +21,61 @@ 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} -
- - - - - + onClick={() => updateTodo.mutate(encodeTodo( + new Todo({ + ...todo, + order: todo.order + 2, + }, { disableValidation: true }) + ))} + > + + + - -

Move down

-
- -
+ + - - - - + + -

Move up

- -
- - - - - - - - - -

Delete

-
-
-
-
-
+ onClick={() => removeTodo.mutate(encodeTodo(todo))} + > + + + + +
) diff --git a/packages/webui/tailwind.config.js b/packages/webui/tailwind.config.js index 62ed56e..9562042 100644 --- a/packages/webui/tailwind.config.js +++ b/packages/webui/tailwind.config.js @@ -1,77 +1,13 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - darkMode: ["class"], - content: [ - './pages/**/*.{ts,tsx}', - './components/**/*.{ts,tsx}', - './app/**/*.{ts,tsx}', - './src/**/*.{ts,tsx}', - ], - prefix: "", - theme: { - container: { - center: true, - padding: "2rem", - screens: { - "2xl": "1400px", - }, +/** @type {import("tailwindcss").Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + ], + + theme: { + extend: {}, }, - extend: { - colors: { - border: "hsl(var(--border))", - input: "hsl(var(--input))", - ring: "hsl(var(--ring))", - background: "hsl(var(--background))", - foreground: "hsl(var(--foreground))", - primary: { - DEFAULT: "hsl(var(--primary))", - foreground: "hsl(var(--primary-foreground))", - }, - secondary: { - DEFAULT: "hsl(var(--secondary))", - foreground: "hsl(var(--secondary-foreground))", - }, - destructive: { - DEFAULT: "hsl(var(--destructive))", - foreground: "hsl(var(--destructive-foreground))", - }, - muted: { - DEFAULT: "hsl(var(--muted))", - foreground: "hsl(var(--muted-foreground))", - }, - accent: { - DEFAULT: "hsl(var(--accent))", - foreground: "hsl(var(--accent-foreground))", - }, - popover: { - DEFAULT: "hsl(var(--popover))", - foreground: "hsl(var(--popover-foreground))", - }, - card: { - DEFAULT: "hsl(var(--card))", - foreground: "hsl(var(--card-foreground))", - }, - }, - borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", - }, - keyframes: { - "accordion-down": { - from: { height: "0" }, - to: { height: "var(--radix-accordion-content-height)" }, - }, - "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, - to: { height: "0" }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, - }, - }, - plugins: [require("tailwindcss-animate")], + + plugins: [], } diff --git a/packages/webui/tsconfig.json b/packages/webui/tsconfig.json index 3af2f09..ea9d0cd 100644 --- a/packages/webui/tsconfig.json +++ b/packages/webui/tsconfig.json @@ -1,10 +1,4 @@ { - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - }, - }, "files": [], "references": [ {