diff --git a/components.json b/components.json new file mode 100644 index 0000000..7a63543 --- /dev/null +++ b/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "zinc", + "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/package.json b/package.json index 2db330d..95b1c2b 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,16 @@ "lint": "next lint" }, "dependencies": { + "@radix-ui/react-icons": "^1.3.1", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "lucide-react": "^0.454.0", "next": "15.0.1", "react": "19.0.0-rc-69d4b800-20241021", "react-dom": "19.0.0-rc-69d4b800-20241021", "reflect-metadata": "^0.2.2", + "tailwind-merge": "^2.5.4", + "tailwindcss-animate": "^1.0.7", "tsyringe": "^4.8.0" }, "devDependencies": { diff --git a/src/components/button/button-vm.ts b/src/app/components/button/button-vm.ts similarity index 100% rename from src/components/button/button-vm.ts rename to src/app/components/button/button-vm.ts diff --git a/src/components/button/button.tsx b/src/app/components/button/button.tsx similarity index 80% rename from src/components/button/button.tsx rename to src/app/components/button/button.tsx index 6b0452b..e1b8a4d 100644 --- a/src/components/button/button.tsx +++ b/src/app/components/button/button.tsx @@ -1,10 +1,12 @@ +"use client" import BaseView, { BuildProps } from "@/bootstrap/helpers/view/base-view"; -import ButtonVm from "@/components/button/button-vm"; +import ButtonVm from "@/app/components/button/button-vm"; import { ReactNode } from "react"; export default class Button extends BaseView { protected Build(props: BuildProps): ReactNode { const {vm} = props + return } -} \ No newline at end of file +} diff --git a/src/app/globals.css b/src/app/globals.css index 6b717ad..942f871 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -2,20 +2,71 @@ @tailwind components; @tailwind utilities; -:root { - --background: #ffffff; - --foreground: #171717; +body { + font-family: Arial, Helvetica, sans-serif; } -@media (prefers-color-scheme: dark) { +@layer base { :root { - --background: #0a0a0a; - --foreground: #ededed; + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + --ring: 240 10% 3.9%; + --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%; + --radius: 0.5rem; + } + .dark { + --background: 240 10% 3.9%; + --foreground: 0 0% 98%; + --card: 240 10% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 240 10% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + --accent: 240 3.7% 15.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + --ring: 240 4.9% 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%; } } -body { - color: var(--foreground); - background: var(--background); - font-family: Arial, Helvetica, sans-serif; +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 1cd9211..ba8b4a7 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,3 @@ -import "reflect-metadata" import type { Metadata } from "next"; import localFont from "next/font/local"; import "./globals.css"; diff --git a/src/app/test/client/view/parent-view.tsx b/src/app/test/client/view/parent-view.tsx new file mode 100644 index 0000000..81de26a --- /dev/null +++ b/src/app/test/client/view/parent-view.tsx @@ -0,0 +1,13 @@ +"use client" +import Button from "@/app/components/button/button" +import { TestButtonVM } from "@/app/test/client/vm/test-button-vm" +import { useDI } from "@/bootstrap/di/di-context" +import { useRef } from "react" + +export default function ParentView() { + const di = useDI() + + const vmRef = useRef(di.resolve(TestButtonVM)) + + return