chore: add shadcn-ui
This commit is contained in:
		
							parent
							
								
									7704389d17
								
							
						
					
					
						commit
						bbcda35303
					
				
					 9 changed files with 1050 additions and 113 deletions
				
			
		
							
								
								
									
										17
									
								
								packages/client/components.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								packages/client/components.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
{
 | 
			
		||||
  "$schema": "https://ui.shadcn.com/schema.json",
 | 
			
		||||
  "style": "new-york",
 | 
			
		||||
  "rsc": false,
 | 
			
		||||
  "tsx": true,
 | 
			
		||||
  "tailwind": {
 | 
			
		||||
    "config": "tailwind.config.js",
 | 
			
		||||
    "css": "src/index.css",
 | 
			
		||||
    "baseColor": "neutral",
 | 
			
		||||
    "cssVariables": true,
 | 
			
		||||
    "prefix": ""
 | 
			
		||||
  },
 | 
			
		||||
  "aliases": {
 | 
			
		||||
    "components": "@/components",
 | 
			
		||||
    "utils": "@/lib/utils"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -7,13 +7,20 @@
 | 
			
		|||
    "dev": "vite",
 | 
			
		||||
    "build": "tsc && vite build",
 | 
			
		||||
    "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
 | 
			
		||||
    "preview": "vite preview"
 | 
			
		||||
    "preview": "vite preview",
 | 
			
		||||
    "shadcn": "shadcn-ui"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@radix-ui/react-icons": "^1.3.0",
 | 
			
		||||
    "class-variance-authority": "^0.7.0",
 | 
			
		||||
    "clsx": "^2.1.0",
 | 
			
		||||
    "react": "^18.2.0",
 | 
			
		||||
    "react-dom": "^18.2.0"
 | 
			
		||||
    "react-dom": "^18.2.0",
 | 
			
		||||
    "tailwind-merge": "^2.2.2",
 | 
			
		||||
    "tailwindcss-animate": "^1.0.7"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/node": ">=20.0.0",
 | 
			
		||||
    "@types/react": "^18.2.66",
 | 
			
		||||
    "@types/react-dom": "^18.2.22",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^7.2.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +31,7 @@
 | 
			
		|||
    "eslint-plugin-react-hooks": "^4.6.0",
 | 
			
		||||
    "eslint-plugin-react-refresh": "^0.4.6",
 | 
			
		||||
    "postcss": "^8.4.38",
 | 
			
		||||
    "shadcn-ui": "^0.8.0",
 | 
			
		||||
    "tailwindcss": "^3.4.3",
 | 
			
		||||
    "typescript": "^5.2.2",
 | 
			
		||||
    "vite": "^5.2.0"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,76 @@
 | 
			
		|||
@tailwind base;
 | 
			
		||||
@tailwind components;
 | 
			
		||||
@tailwind utilities;
 | 
			
		||||
@tailwind utilities;
 | 
			
		||||
 | 
			
		||||
@layer base {
 | 
			
		||||
  :root {
 | 
			
		||||
    --background: 0 0% 100%;
 | 
			
		||||
    --foreground: 0 0% 3.9%;
 | 
			
		||||
 | 
			
		||||
    --card: 0 0% 100%;
 | 
			
		||||
    --card-foreground: 0 0% 3.9%;
 | 
			
		||||
 | 
			
		||||
    --popover: 0 0% 100%;
 | 
			
		||||
    --popover-foreground: 0 0% 3.9%;
 | 
			
		||||
 | 
			
		||||
    --primary: 0 0% 9%;
 | 
			
		||||
    --primary-foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --secondary: 0 0% 96.1%;
 | 
			
		||||
    --secondary-foreground: 0 0% 9%;
 | 
			
		||||
 | 
			
		||||
    --muted: 0 0% 96.1%;
 | 
			
		||||
    --muted-foreground: 0 0% 45.1%;
 | 
			
		||||
 | 
			
		||||
    --accent: 0 0% 96.1%;
 | 
			
		||||
    --accent-foreground: 0 0% 9%;
 | 
			
		||||
 | 
			
		||||
    --destructive: 0 84.2% 60.2%;
 | 
			
		||||
    --destructive-foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --border: 0 0% 89.8%;
 | 
			
		||||
    --input: 0 0% 89.8%;
 | 
			
		||||
    --ring: 0 0% 3.9%;
 | 
			
		||||
 | 
			
		||||
    --radius: 0.5rem;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .dark {
 | 
			
		||||
    --background: 0 0% 3.9%;
 | 
			
		||||
    --foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --card: 0 0% 3.9%;
 | 
			
		||||
    --card-foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --popover: 0 0% 3.9%;
 | 
			
		||||
    --popover-foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --primary: 0 0% 98%;
 | 
			
		||||
    --primary-foreground: 0 0% 9%;
 | 
			
		||||
 | 
			
		||||
    --secondary: 0 0% 14.9%;
 | 
			
		||||
    --secondary-foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --muted: 0 0% 14.9%;
 | 
			
		||||
    --muted-foreground: 0 0% 63.9%;
 | 
			
		||||
 | 
			
		||||
    --accent: 0 0% 14.9%;
 | 
			
		||||
    --accent-foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --destructive: 0 62.8% 30.6%;
 | 
			
		||||
    --destructive-foreground: 0 0% 98%;
 | 
			
		||||
 | 
			
		||||
    --border: 0 0% 14.9%;
 | 
			
		||||
    --input: 0 0% 14.9%;
 | 
			
		||||
    --ring: 0 0% 83.1%;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@layer base {
 | 
			
		||||
  * {
 | 
			
		||||
    @apply border-border;
 | 
			
		||||
  }
 | 
			
		||||
  body {
 | 
			
		||||
    @apply bg-background text-foreground;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								packages/client/src/lib/utils.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								packages/client/src/lib/utils.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
import { type ClassValue, clsx } from "clsx"
 | 
			
		||||
import { twMerge } from "tailwind-merge"
 | 
			
		||||
 | 
			
		||||
export function cn(...inputs: ClassValue[]) {
 | 
			
		||||
  return twMerge(clsx(inputs))
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,11 +1,77 @@
 | 
			
		|||
/** @type {import('tailwindcss').Config} */
 | 
			
		||||
export default {
 | 
			
		||||
module.exports = {
 | 
			
		||||
  darkMode: ["class"],
 | 
			
		||||
  content: [
 | 
			
		||||
    './src/**/*.{js,ts,jsx,tsx}'
 | 
			
		||||
    './pages/**/*.{ts,tsx}',
 | 
			
		||||
    './components/**/*.{ts,tsx}',
 | 
			
		||||
    './app/**/*.{ts,tsx}',
 | 
			
		||||
    './src/**/*.{ts,tsx}',
 | 
			
		||||
  ],
 | 
			
		||||
  prefix: "",
 | 
			
		||||
  theme: {
 | 
			
		||||
    extend: {},
 | 
			
		||||
    container: {
 | 
			
		||||
      center: true,
 | 
			
		||||
      padding: "2rem",
 | 
			
		||||
      screens: {
 | 
			
		||||
        "2xl": "1400px",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    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: [],
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  plugins: [require("tailwindcss-animate")],
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -14,6 +14,11 @@
 | 
			
		|||
    "noEmit": true,
 | 
			
		||||
    "jsx": "react-jsx",
 | 
			
		||||
 | 
			
		||||
    "baseUrl": ".",
 | 
			
		||||
    "paths": {
 | 
			
		||||
      "@/*": ["./src/*"]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /* Linting */
 | 
			
		||||
    "strict": true,
 | 
			
		||||
    "noUnusedLocals": true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,15 @@
 | 
			
		|||
import { defineConfig } from 'vite'
 | 
			
		||||
import path from 'node:path'
 | 
			
		||||
import react from '@vitejs/plugin-react-swc'
 | 
			
		||||
 | 
			
		||||
// https://vitejs.dev/config/
 | 
			
		||||
export default defineConfig({
 | 
			
		||||
  plugins: [react()],
 | 
			
		||||
  resolve: {
 | 
			
		||||
    alias: {
 | 
			
		||||
      '@': path.resolve(__dirname, './src'),
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  server: {
 | 
			
		||||
    proxy: {
 | 
			
		||||
      '/api': {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@
 | 
			
		|||
		"@types/koa-bodyparser": "^4.3.12",
 | 
			
		||||
		"@types/koa-compose": "^3.2.8",
 | 
			
		||||
		"@types/koa-router": "^7.4.8",
 | 
			
		||||
		"@types/node": "^14.18.63",
 | 
			
		||||
		"@types/node": ">=20.0.0",
 | 
			
		||||
		"@types/tiny-async-pool": "^1.0.5",
 | 
			
		||||
		"dbtype": "workspace:^",
 | 
			
		||||
		"nodemon": "^3.1.0"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										962
									
								
								pnpm-lock.yaml
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										962
									
								
								pnpm-lock.yaml
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
		Loading…
	
	Add table
		
		Reference in a new issue