3.0.0
This commit is contained in:
		
							
								
								
									
										16
									
								
								desktop/template/components.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								desktop/template/components.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| { | ||||
|     "$schema": "https://shadcn-vue.com/schema.json", | ||||
|     "style": "default", | ||||
|     "typescript": true, | ||||
|     "tailwind": { | ||||
|         "config": "tailwind.config.js", | ||||
|         "css": "src/assets/css/globals.css", | ||||
|         "baseColor": "slate", | ||||
|         "cssVariables": true | ||||
|     }, | ||||
|     "framework": "vite", | ||||
|     "aliases": { | ||||
|         "components": "@/component", | ||||
|         "utils": "@/package/lib/utils" | ||||
|     } | ||||
| } | ||||
| @@ -14,18 +14,30 @@ | ||||
|     "dependencies": { | ||||
|         "@element-plus/icons": "^0.0.11", | ||||
|         "@element-plus/icons-vue": "^2.0.9", | ||||
|         "@radix-ui/react-slot": "^1.0.2", | ||||
|         "axios": "^0.27.2", | ||||
|         "class-variance-authority": "^0.7.0", | ||||
|         "clsx": "^2.1.0", | ||||
|         "element-plus": "2.3.7", | ||||
|         "lucide-react": "^0.365.0", | ||||
|         "lucide-vue-next": "^0.365.0", | ||||
|         "radix-vue": "^1.6.2", | ||||
|         "tailwind-merge": "^2.2.2", | ||||
|         "tailwindcss-animate": "^1.0.7", | ||||
|         "uuid": "^9.0.0", | ||||
|         "vue": "3.2.37", | ||||
|         "vue-router": "4.1.5" | ||||
|     }, | ||||
|     "devDependencies": { | ||||
|         "@babel/types": "^7.18.10", | ||||
|         "@types/react": "^18.2.56", | ||||
|         "@types/node": "^18.11.18", | ||||
|         "@types/react": "^18.2.56", | ||||
|         "@vitejs/plugin-react": "^4.2.1", | ||||
|         "@vitejs/plugin-vue": "^3.0.3", | ||||
|         "@vue/tsconfig": "0.1.3", | ||||
|         "autoprefixer": "^10.4.19", | ||||
|         "tailwindcss": "^3.4.3", | ||||
|         "postcss": "latest", | ||||
|         "typescript": "4.6.4", | ||||
|         "vite": "3.0.7", | ||||
|         "vue-tsc": "0.39.5" | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| d24d6b406b5af24715d4d957ed80e892 | ||||
| b675ea4ecb792710e5c6c1ecae1ddf7b | ||||
							
								
								
									
										6
									
								
								desktop/template/postcss.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								desktop/template/postcss.config.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| module.exports = { | ||||
|     plugins: { | ||||
|         tailwindcss: {}, | ||||
|         autoprefixer: {}, | ||||
|     } | ||||
| } | ||||
| @@ -32,5 +32,6 @@ export default defineComponent({ | ||||
| </script> | ||||
|  | ||||
| <style> | ||||
| @import "./assets/css/base.scss"; | ||||
| @import "./assets/css/base.css"; | ||||
| @import "./assets/css/globals.css"; | ||||
| </style> | ||||
|   | ||||
							
								
								
									
										76
									
								
								desktop/template/src/assets/css/base.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								desktop/template/src/assets/css/base.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| @charset "UTF-8"; | ||||
|  | ||||
| @tailwind base; | ||||
| @tailwind components; | ||||
| @tailwind utilities; | ||||
|  | ||||
| @layer base { | ||||
|     :root { | ||||
|         --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 5.9% 10%; | ||||
|         --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%; | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
| @layer base { | ||||
|     * { | ||||
|         @apply border-border; | ||||
|     } | ||||
|     body { | ||||
|         @apply bg-background text-foreground; | ||||
|     } | ||||
| } | ||||
| @@ -1,55 +0,0 @@ | ||||
| @charset "UTF-8"; | ||||
|  | ||||
| * { | ||||
|     box-sizing: border-box; | ||||
|     -webkit-tap-highlight-color: transparent; | ||||
|     -webkit-appearance: none; | ||||
|     -webkit-touch-callout: none; | ||||
|     outline: none; | ||||
|     user-select: none; | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
| } | ||||
|  | ||||
| body { | ||||
|     font-family: Inter, sans-serif; | ||||
|     font-feature-settings: "tnum"; | ||||
|     font-variant: tabular-nums; | ||||
|     -webkit-font-smoothing: antialiased; | ||||
|     font-size: 12px; | ||||
|     color: #666666; | ||||
| } | ||||
|  | ||||
| ul li, ol li { | ||||
|     list-style: none; | ||||
| } | ||||
|  | ||||
| ::-webkit-scrollbar { | ||||
|     width: 3px; | ||||
|     height: 3px; | ||||
| } | ||||
| ::-webkit-scrollbar-thumb { | ||||
|     border-radius: 0; | ||||
|     box-shadow: inset 0 0 3px rgba(68, 68, 71, 1); | ||||
|     background: rgba(68, 68, 71, .5); | ||||
| } | ||||
| ::-webkit-scrollbar-track{ | ||||
|     box-shadow: none; | ||||
|     border-radius: 0; | ||||
|     background: rgba(68, 68, 71, 0); | ||||
| } | ||||
|  | ||||
| *:focus { | ||||
|     outline: none !important; | ||||
| } | ||||
|  | ||||
| .page-main{ | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     position: fixed; | ||||
|     z-index: 1; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     right: 0; | ||||
|     bottom: 0; | ||||
| } | ||||
							
								
								
									
										0
									
								
								desktop/template/src/assets/css/globals.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								desktop/template/src/assets/css/globals.css
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										26
									
								
								desktop/template/src/component/ui/button/Button.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								desktop/template/src/component/ui/button/Button.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| <script setup lang="ts"> | ||||
| import type { HTMLAttributes } from 'vue' | ||||
| import { Primitive, type PrimitiveProps } from 'radix-vue' | ||||
| import { type ButtonVariants, buttonVariants } from '.' | ||||
| import { cn } from '@/package/lib/utils' | ||||
|  | ||||
| interface Props extends PrimitiveProps { | ||||
|   variant?: ButtonVariants['variant'] | ||||
|   size?: ButtonVariants['size'] | ||||
|   class?: HTMLAttributes['class'] | ||||
| } | ||||
|  | ||||
| const props = withDefaults(defineProps<Props>(), { | ||||
|   as: 'button', | ||||
| }) | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|   <Primitive | ||||
|     :as="as" | ||||
|     :as-child="asChild" | ||||
|     :class="cn(buttonVariants({ variant, size }), props.class)" | ||||
|   > | ||||
|     <slot /> | ||||
|   </Primitive> | ||||
| </template> | ||||
							
								
								
									
										34
									
								
								desktop/template/src/component/ui/button/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								desktop/template/src/component/ui/button/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| import { type VariantProps, cva } from 'class-variance-authority' | ||||
|  | ||||
| export { default as Button } from './Button.vue' | ||||
|  | ||||
| export const buttonVariants = cva( | ||||
|   'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', | ||||
|   { | ||||
|     variants: { | ||||
|       variant: { | ||||
|         default: 'bg-primary text-primary-foreground hover:bg-primary/90', | ||||
|         destructive: | ||||
|           'bg-destructive text-destructive-foreground hover:bg-destructive/90', | ||||
|         outline: | ||||
|           'border border-input bg-background hover:bg-accent hover:text-accent-foreground', | ||||
|         secondary: | ||||
|           'bg-secondary text-secondary-foreground hover:bg-secondary/80', | ||||
|         ghost: 'hover:bg-accent hover:text-accent-foreground', | ||||
|         link: 'text-primary underline-offset-4 hover:underline', | ||||
|       }, | ||||
|       size: { | ||||
|         default: 'h-10 px-4 py-2', | ||||
|         sm: 'h-9 rounded-md px-3', | ||||
|         lg: 'h-11 rounded-md px-8', | ||||
|         icon: 'h-10 w-10', | ||||
|       }, | ||||
|     }, | ||||
|     defaultVariants: { | ||||
|       variant: 'default', | ||||
|       size: 'default', | ||||
|     }, | ||||
|   }, | ||||
| ) | ||||
|  | ||||
| export type ButtonVariants = VariantProps<typeof buttonVariants> | ||||
| @@ -1,18 +1,9 @@ | ||||
| import {createApp} from "vue"; | ||||
| import App from "./app.vue"; | ||||
| import {router} from "./router"; | ||||
| import ElementPlus from "element-plus"; | ||||
| import "element-plus/dist/index.css"; | ||||
| import * as ElIcons from "@element-plus/icons-vue"; | ||||
|  | ||||
| const app = createApp(App); | ||||
|  | ||||
| app.use(ElementPlus, {zIndex: 90000}); | ||||
|  | ||||
| for (const [key, component] of Object.entries(ElIcons)) { | ||||
|     app.component(key, component); | ||||
| } | ||||
|  | ||||
| app.use(router); | ||||
|  | ||||
| app.directive("resize", { | ||||
|   | ||||
							
								
								
									
										6
									
								
								desktop/template/src/package/lib/utils.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								desktop/template/src/package/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,16 +1,22 @@ | ||||
| <template> | ||||
|     <div>Hello</div> | ||||
|     <div style="padding: 20px"><Button disabled><Loader2 class="w-4 h-4 mr-2 animate-spin" />Button</Button></div> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts"> | ||||
| import {defineComponent, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onUnmounted} from "vue"; | ||||
| import {ElLoading, ElMessage, ElNotification} from "element-plus"; | ||||
| import * as icons from "@element-plus/icons"; | ||||
| import { Button } from "@/component/ui/button"; | ||||
| import { Mail, Loader2 } from 'lucide-vue-next' | ||||
| export default defineComponent({ | ||||
|     name: "Start", | ||||
|     emits: [], | ||||
|     props: ["cnc"], | ||||
|     components: {}, | ||||
|     components: { | ||||
|         Button, | ||||
|         Mail, | ||||
|         Loader2 | ||||
|     }, | ||||
|     setup(props, context) { | ||||
|  | ||||
|         onBeforeMount(() => { | ||||
|   | ||||
							
								
								
									
										93
									
								
								desktop/template/tailwind.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								desktop/template/tailwind.config.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| const animate = require("tailwindcss-animate") | ||||
|  | ||||
| /** @type {import('tailwindcss').Config} */ | ||||
| module.exports = { | ||||
|     darkMode: ["class"], | ||||
|     safelist: ["dark"], | ||||
|     prefix: "", | ||||
|  | ||||
|     content: [ | ||||
|         './pages/**/*.{ts,tsx,vue}', | ||||
|         './components/**/*.{ts,tsx,vue}', | ||||
|         './app/**/*.{ts,tsx,vue}', | ||||
|         './src/**/*.{ts,tsx,vue}', | ||||
|     ], | ||||
|  | ||||
|     theme: { | ||||
|         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: { | ||||
|                 xl: "calc(var(--radius) + 4px)", | ||||
|                 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 }, | ||||
|                 }, | ||||
|                 "collapsible-down": { | ||||
|                     from: { height: 0 }, | ||||
|                     to: { height: 'var(--radix-collapsible-content-height)' }, | ||||
|                 }, | ||||
|                 "collapsible-up": { | ||||
|                     from: { height: 'var(--radix-collapsible-content-height)' }, | ||||
|                     to: { height: 0 }, | ||||
|                 }, | ||||
|             }, | ||||
|             animation: { | ||||
|                 "accordion-down": "accordion-down 0.2s ease-out", | ||||
|                 "accordion-up": "accordion-up 0.2s ease-out", | ||||
|                 "collapsible-down": "collapsible-down 0.2s ease-in-out", | ||||
|                 "collapsible-up": "collapsible-up 0.2s ease-in-out", | ||||
|             }, | ||||
|         }, | ||||
|     }, | ||||
|     plugins: [animate], | ||||
| } | ||||
| @@ -17,7 +17,12 @@ | ||||
|         "types": [ | ||||
|             "node" | ||||
|         ], | ||||
|         "skipLibCheck": true | ||||
|         "skipLibCheck": true, | ||||
|         "paths": { | ||||
|             "@/*": [ | ||||
|                 "./src/*" | ||||
|             ] | ||||
|         } | ||||
|     }, | ||||
|     "include": [ | ||||
|         "src/**/*.ts", | ||||
|   | ||||
| @@ -1,5 +1,8 @@ | ||||
| import { defineConfig } from "vite"; | ||||
| import path from "path"; | ||||
| import tailwind from "tailwindcss"; | ||||
| import autoprefixer from "autoprefixer"; | ||||
| import vue from "@vitejs/plugin-vue"; | ||||
| import { defineConfig } from "vite"; | ||||
|  | ||||
| export default defineConfig({ | ||||
|     server: { | ||||
| @@ -14,4 +17,14 @@ export default defineConfig({ | ||||
|     optimizeDeps: { | ||||
|         exclude: ["punycode"] | ||||
|     }, | ||||
|     css: { | ||||
|         postcss: { | ||||
|             plugins: [tailwind(), autoprefixer()], | ||||
|         }, | ||||
|     }, | ||||
|     resolve: { | ||||
|         alias: { | ||||
|             "@": path.resolve(__dirname, "./src"), | ||||
|         }, | ||||
|     }, | ||||
| }) | ||||
		Reference in New Issue
	
	Block a user