From 26943da2a9dc54e918d4221cf1f79710c1dcbb66 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 28 Jun 2025 00:56:11 +0200 Subject: [PATCH] Add journaler from wails --- README.md | 73 ++ bun.lockb | Bin 0 -> 203967 bytes components.json | 20 + eslint.config.js | 29 + index.html | 16 +- package.json | 75 +- postcss.config.js | 6 + public/favicon.ico | Bin 0 -> 7645 bytes public/placeholder.svg | 1 + public/robots.txt | 14 + src/App.css | 134 +-- src/App.tsx | 70 +- src/components/ui/accordion.tsx | 56 ++ src/components/ui/alert-dialog.tsx | 139 +++ src/components/ui/alert.tsx | 59 ++ src/components/ui/aspect-ratio.tsx | 5 + src/components/ui/avatar.tsx | 48 + src/components/ui/badge.tsx | 36 + src/components/ui/breadcrumb.tsx | 115 +++ src/components/ui/button.tsx | 56 ++ src/components/ui/calendar.tsx | 64 ++ src/components/ui/card.tsx | 79 ++ src/components/ui/carousel.tsx | 260 ++++++ src/components/ui/chart.tsx | 363 +++++++ src/components/ui/checkbox.tsx | 28 + src/components/ui/collapsible.tsx | 9 + src/components/ui/command.tsx | 153 +++ src/components/ui/context-menu.tsx | 198 ++++ src/components/ui/dialog.tsx | 120 +++ src/components/ui/drawer.tsx | 116 +++ src/components/ui/dropdown-menu.tsx | 198 ++++ src/components/ui/form.tsx | 176 ++++ src/components/ui/hover-card.tsx | 27 + src/components/ui/input-otp.tsx | 69 ++ src/components/ui/input.tsx | 22 + src/components/ui/label.tsx | 24 + src/components/ui/menubar.tsx | 234 +++++ src/components/ui/navigation-menu.tsx | 128 +++ src/components/ui/pagination.tsx | 117 +++ src/components/ui/popover.tsx | 29 + src/components/ui/progress.tsx | 26 + src/components/ui/radio-group.tsx | 42 + src/components/ui/resizable.tsx | 43 + src/components/ui/scroll-area.tsx | 46 + src/components/ui/select.tsx | 158 ++++ src/components/ui/separator.tsx | 29 + src/components/ui/sheet.tsx | 131 +++ src/components/ui/sidebar.tsx | 761 +++++++++++++++ src/components/ui/skeleton.tsx | 15 + src/components/ui/slider.tsx | 26 + src/components/ui/sonner.tsx | 29 + src/components/ui/switch.tsx | 27 + src/components/ui/table.tsx | 117 +++ src/components/ui/tabs.tsx | 53 ++ src/components/ui/textarea.tsx | 24 + src/components/ui/toast.tsx | 127 +++ src/components/ui/toaster.tsx | 33 + src/components/ui/toggle-group.tsx | 59 ++ src/components/ui/toggle.tsx | 43 + src/components/ui/tooltip.tsx | 28 + src/components/ui/use-toast.ts | 3 + src/hooks/use-mobile.tsx | 19 + src/hooks/use-toast.ts | 191 ++++ src/index.css | 113 +++ src/lib/utils.ts | 6 + src/main.tsx | 12 +- src/pages/Index.tsx | 1245 +++++++++++++++++++++++++ src/pages/NotFound.tsx | 27 + tailwind.config.ts | 96 ++ tsconfig.app.json | 30 + 70 files changed, 6755 insertions(+), 170 deletions(-) create mode 100644 README.md create mode 100644 bun.lockb create mode 100644 components.json create mode 100644 eslint.config.js create mode 100644 postcss.config.js create mode 100644 public/favicon.ico create mode 100644 public/placeholder.svg create mode 100644 public/robots.txt create mode 100644 src/components/ui/accordion.tsx create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/components/ui/alert.tsx create mode 100644 src/components/ui/aspect-ratio.tsx create mode 100644 src/components/ui/avatar.tsx create mode 100644 src/components/ui/badge.tsx create mode 100644 src/components/ui/breadcrumb.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/calendar.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/carousel.tsx create mode 100644 src/components/ui/chart.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/collapsible.tsx create mode 100644 src/components/ui/command.tsx create mode 100644 src/components/ui/context-menu.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/drawer.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/form.tsx create mode 100644 src/components/ui/hover-card.tsx create mode 100644 src/components/ui/input-otp.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/menubar.tsx create mode 100644 src/components/ui/navigation-menu.tsx create mode 100644 src/components/ui/pagination.tsx create mode 100644 src/components/ui/popover.tsx create mode 100644 src/components/ui/progress.tsx create mode 100644 src/components/ui/radio-group.tsx create mode 100644 src/components/ui/resizable.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/sheet.tsx create mode 100644 src/components/ui/sidebar.tsx create mode 100644 src/components/ui/skeleton.tsx create mode 100644 src/components/ui/slider.tsx create mode 100644 src/components/ui/sonner.tsx create mode 100644 src/components/ui/switch.tsx create mode 100644 src/components/ui/table.tsx create mode 100644 src/components/ui/tabs.tsx create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/components/ui/toast.tsx create mode 100644 src/components/ui/toaster.tsx create mode 100644 src/components/ui/toggle-group.tsx create mode 100644 src/components/ui/toggle.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/components/ui/use-toast.ts create mode 100644 src/hooks/use-mobile.tsx create mode 100644 src/hooks/use-toast.ts create mode 100644 src/index.css create mode 100644 src/lib/utils.ts create mode 100644 src/pages/Index.tsx create mode 100644 src/pages/NotFound.tsx create mode 100644 tailwind.config.ts create mode 100644 tsconfig.app.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..9f96320 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# Welcome to your Lovable project + +## Project info + +**URL**: https://lovable.dev/projects/4dffefbb-9bf2-4637-8ffe-4a7c835d7e9a + +## How can I edit this code? + +There are several ways of editing your application. + +**Use Lovable** + +Simply visit the [Lovable Project](https://lovable.dev/projects/4dffefbb-9bf2-4637-8ffe-4a7c835d7e9a) and start prompting. + +Changes made via Lovable will be committed automatically to this repo. + +**Use your preferred IDE** + +If you want to work locally using your own IDE, you can clone this repo and push changes. Pushed changes will also be reflected in Lovable. + +The only requirement is having Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating) + +Follow these steps: + +```sh +# Step 1: Clone the repository using the project's Git URL. +git clone + +# Step 2: Navigate to the project directory. +cd + +# Step 3: Install the necessary dependencies. +npm i + +# Step 4: Start the development server with auto-reloading and an instant preview. +npm run dev +``` + +**Edit a file directly in GitHub** + +- Navigate to the desired file(s). +- Click the "Edit" button (pencil icon) at the top right of the file view. +- Make your changes and commit the changes. + +**Use GitHub Codespaces** + +- Navigate to the main page of your repository. +- Click on the "Code" button (green button) near the top right. +- Select the "Codespaces" tab. +- Click on "New codespace" to launch a new Codespace environment. +- Edit files directly within the Codespace and commit and push your changes once you're done. + +## What technologies are used for this project? + +This project is built with: + +- Vite +- TypeScript +- React +- shadcn-ui +- Tailwind CSS + +## How can I deploy this project? + +Simply open [Lovable](https://lovable.dev/projects/4dffefbb-9bf2-4637-8ffe-4a7c835d7e9a) and click on Share -> Publish. + +## Can I connect a custom domain to my Lovable project? + +Yes, you can! + +To connect a domain, navigate to Project > Settings > Domains and click Connect Domain. + +Read more here: [Setting up a custom domain](https://docs.lovable.dev/tips-tricks/custom-domain#step-by-step-guide) diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..d35682b7c25a62be0180fb3258620960b6a9f3ff GIT binary patch literal 203967 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 literal 0 HcmV?d00001 diff --git a/components.json b/components.json new file mode 100644 index 0000000..f29e3f1 --- /dev/null +++ b/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..e67846f --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,29 @@ +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { ignores: ["dist"] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + "react-hooks": reactHooks, + "react-refresh": reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "react-refresh/only-export-components": [ + "warn", + { allowConstantExport: true }, + ], + "@typescript-eslint/no-unused-vars": "off", + }, + } +); diff --git a/index.html b/index.html index ff93803..0786933 100644 --- a/index.html +++ b/index.html @@ -1,10 +1,20 @@ - + - - Tauri + React + Typescript + scribe-scroll-flow + + + + + + + + + + + diff --git a/package.json b/package.json index 630d7a1..929e2d4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "journaler", "private": true, - "version": "0.1.0", + "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", @@ -10,17 +10,76 @@ "tauri": "tauri" }, "dependencies": { + "@hookform/resolvers": "^3.9.0", + "@radix-ui/react-accordion": "^1.2.0", + "@radix-ui/react-alert-dialog": "^1.1.1", + "@radix-ui/react-aspect-ratio": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.0", + "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-collapsible": "^1.1.0", + "@radix-ui/react-context-menu": "^2.2.1", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-hover-card": "^1.1.1", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-menubar": "^1.1.1", + "@radix-ui/react-navigation-menu": "^1.2.0", + "@radix-ui/react-popover": "^1.1.1", + "@radix-ui/react-progress": "^1.1.0", + "@radix-ui/react-radio-group": "^1.2.0", + "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-separator": "^1.1.0", + "@radix-ui/react-slider": "^1.2.0", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-switch": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-toast": "^1.2.1", + "@radix-ui/react-toggle": "^1.1.0", + "@radix-ui/react-toggle-group": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.4", + "@tanstack/react-query": "^5.56.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", + "date-fns": "^3.6.0", + "embla-carousel-react": "^8.3.0", + "input-otp": "^1.2.4", + "lucide-react": "^0.462.0", + "next-themes": "^0.3.0", "react": "^18.3.1", + "react-day-picker": "^8.10.1", "react-dom": "^18.3.1", "@tauri-apps/api": "^2", - "@tauri-apps/plugin-opener": "^2" + "@tauri-apps/plugin-opener": "^2", + "react-hook-form": "^7.53.0", + "react-resizable-panels": "^2.1.3", + "react-router-dom": "^6.26.2", + "recharts": "^2.12.7", + "sonner": "^1.5.0", + "tailwind-merge": "^2.5.2", + "tailwindcss-animate": "^1.0.7", + "vaul": "^0.9.3", + "zod": "^3.23.8" }, "devDependencies": { - "@types/react": "^18.3.1", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "typescript": "~5.6.2", - "vite": "^6.0.3", - "@tauri-apps/cli": "^2" + "@eslint/js": "^9.9.0", + "@tailwindcss/typography": "^0.5.15", + "@tauri-apps/cli": "^2.6.1", + "@types/node": "^22.5.5", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "autoprefixer": "^10.4.20", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "lovable-tagger": "^1.1.7", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.11", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.1" } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dd5a12627d36db7eb9c19fa2f931ff1509f0323e GIT binary patch literal 7645 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 LNkvXXu0mjf>#GbK literal 0 HcmV?d00001 diff --git a/public/placeholder.svg b/public/placeholder.svg new file mode 100644 index 0000000..e763910 --- /dev/null +++ b/public/placeholder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..6018e70 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,14 @@ +User-agent: Googlebot +Allow: / + +User-agent: Bingbot +Allow: / + +User-agent: Twitterbot +Allow: / + +User-agent: facebookexternalhit +Allow: / + +User-agent: * +Allow: / diff --git a/src/App.css b/src/App.css index 85f7a4a..b9d355d 100644 --- a/src/App.css +++ b/src/App.css @@ -1,32 +1,7 @@ -.logo.vite:hover { - filter: drop-shadow(0 0 2em #747bff); -} - -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafb); -} -:root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - color: #0f0f0f; - background-color: #f6f6f6; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -.container { - margin: 0; - padding-top: 10vh; - display: flex; - flex-direction: column; - justify-content: center; +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; text-align: center; } @@ -34,83 +9,34 @@ height: 6em; padding: 1.5em; will-change: filter; - transition: 0.75s; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); } -.logo.tauri:hover { - filter: drop-shadow(0 0 2em #24c8db); -} - -.row { - display: flex; - justify-content: center; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} - -a:hover { - color: #535bf2; -} - -h1 { - text-align: center; -} - -input, -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - color: #0f0f0f; - background-color: #ffffff; - transition: border-color 0.25s; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2); -} - -button { - cursor: pointer; -} - -button:hover { - border-color: #396cd8; -} -button:active { - border-color: #396cd8; - background-color: #e8e8e8; -} - -input, -button { - outline: none; -} - -#greet-input { - margin-right: 5px; -} - -@media (prefers-color-scheme: dark) { - :root { - color: #f6f6f6; - background-color: #2f2f2f; +@keyframes logo-spin { + from { + transform: rotate(0deg); } - - a:hover { - color: #24c8db; - } - - input, - button { - color: #ffffff; - background-color: #0f0f0f98; - } - button:active { - background-color: #0f0f0f69; + to { + transform: rotate(360deg); } } + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.tsx b/src/App.tsx index 9855368..18daf2e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,51 +1,27 @@ -import { useState } from "react"; -import reactLogo from "./assets/react.svg"; -import { invoke } from "@tauri-apps/api/core"; -import "./App.css"; +import { Toaster } from "@/components/ui/toaster"; +import { Toaster as Sonner } from "@/components/ui/sonner"; +import { TooltipProvider } from "@/components/ui/tooltip"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { BrowserRouter, Routes, Route } from "react-router-dom"; +import Index from "./pages/Index"; +import NotFound from "./pages/NotFound"; -function App() { - const [greetMsg, setGreetMsg] = useState(""); - const [name, setName] = useState(""); +const queryClient = new QueryClient(); - async function greet() { - // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ - setGreetMsg(await invoke("greet", { name })); - } - - return ( - - ); -} +const App = () => ( + + + + + + + } /> + {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */} + } /> + + + + +); export default App; diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx new file mode 100644 index 0000000..e6a723d --- /dev/null +++ b/src/components/ui/accordion.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import * as AccordionPrimitive from "@radix-ui/react-accordion" +import { ChevronDown } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Accordion = AccordionPrimitive.Root + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AccordionItem.displayName = "AccordionItem" + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180", + className + )} + {...props} + > + {children} + + + +)) +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
{children}
+
+)) + +AccordionContent.displayName = AccordionPrimitive.Content.displayName + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } diff --git a/src/components/ui/alert-dialog.tsx b/src/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..8722561 --- /dev/null +++ b/src/components/ui/alert-dialog.tsx @@ -0,0 +1,139 @@ +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "@/lib/utils" +import { buttonVariants } from "@/components/ui/button" + +const AlertDialog = AlertDialogPrimitive.Root + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger + +const AlertDialogPortal = AlertDialogPrimitive.Portal + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)) +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName + +const AlertDialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +AlertDialogHeader.displayName = "AlertDialogHeader" + +const AlertDialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +AlertDialogFooter.displayName = "AlertDialogFooter" + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogDescription.displayName = + AlertDialogPrimitive.Description.displayName + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx new file mode 100644 index 0000000..41fa7e0 --- /dev/null +++ b/src/components/ui/alert.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
+)) +Alert.displayName = "Alert" + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +AlertTitle.displayName = "AlertTitle" + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +AlertDescription.displayName = "AlertDescription" + +export { Alert, AlertTitle, AlertDescription } diff --git a/src/components/ui/aspect-ratio.tsx b/src/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..c4abbf3 --- /dev/null +++ b/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,5 @@ +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +const AspectRatio = AspectRatioPrimitive.Root + +export { AspectRatio } diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx new file mode 100644 index 0000000..991f56e --- /dev/null +++ b/src/components/ui/avatar.tsx @@ -0,0 +1,48 @@ +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Avatar.displayName = AvatarPrimitive.Root.displayName + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarImage.displayName = AvatarPrimitive.Image.displayName + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx new file mode 100644 index 0000000..f000e3e --- /dev/null +++ b/src/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ) +} + +export { Badge, badgeVariants } diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..71a5c32 --- /dev/null +++ b/src/components/ui/breadcrumb.tsx @@ -0,0 +1,115 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Breadcrumb = React.forwardRef< + HTMLElement, + React.ComponentPropsWithoutRef<"nav"> & { + separator?: React.ReactNode + } +>(({ ...props }, ref) =>
-

Welcome to Tauri + React

- -
-

Click on the Tauri, Vite, and React logos to learn more.

- -
{ - e.preventDefault(); - greet(); - }} - > - setName(e.currentTarget.value)} - placeholder="Enter a name..." - /> - -
-

{greetMsg}

-