diff --git a/.gitignore b/.gitignore index 1115aed..5610a11 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules target -dist \ No newline at end of file +dist +.env \ No newline at end of file diff --git a/package.json b/package.json index caa4a8a..ff16eff 100644 --- a/package.json +++ b/package.json @@ -17,17 +17,24 @@ "sizecheck": "npx vite-bundle-visualizer" }, "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@internationalized/date": "^3.7.0", "@unhead/vue": "^1.11.15", "@unocss/preset-web-fonts": "^65.4.3", "@unocss/reset": "^65.4.0", "@vueuse/core": "^12.4.0", "@vueuse/head": "^2.0.0", "beasties": "^0.2.0", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "lucide-vue-next": "^0.474.0", "nprogress": "^0.2.0", "pinia": "^2.3.0", + "radix-vue": "^1.9.13", "shadcn-vue": "^0.11.3", "tailwind-merge": "^3.0.1", + "unplugin-vue-define-options": "1.5.5", + "vaul-vue": "^0.2.1", "vue": "^3.5.13", "vue-demi": "^0.14.10", "vue-i18n": "^11.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8ff0c7..de766c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,6 +13,12 @@ importers: .: dependencies: + '@amap/amap-jsapi-loader': + specifier: ^1.0.1 + version: 1.0.1 + '@internationalized/date': + specifier: ^3.7.0 + version: 3.7.0 '@unhead/vue': specifier: ^1.11.15 version: 1.11.15(vue@3.5.13(typescript@5.7.3)) @@ -31,21 +37,36 @@ importers: beasties: specifier: ^0.2.0 version: 0.2.0 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 clsx: specifier: ^2.1.1 version: 2.1.1 + lucide-vue-next: + specifier: ^0.474.0 + version: 0.474.0(vue@3.5.13(typescript@5.7.3)) nprogress: specifier: ^0.2.0 version: 0.2.0 pinia: specifier: ^2.3.0 version: 2.3.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) + radix-vue: + specifier: ^1.9.13 + version: 1.9.13(vue@3.5.13(typescript@5.7.3)) shadcn-vue: specifier: ^0.11.3 version: 0.11.3(@vitest/ui@2.1.8)(eslint@9.18.0(jiti@2.4.0))(vitest@2.1.8)(vue@3.5.13(typescript@5.7.3)) tailwind-merge: specifier: ^3.0.1 version: 3.0.1 + unplugin-vue-define-options: + specifier: 1.5.5 + version: 1.5.5(vue@3.5.13(typescript@5.7.3)) + vaul-vue: + specifier: ^0.2.1 + version: 0.2.1(radix-vue@1.9.13(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) vue: specifier: ^3.5.13 version: 3.5.13(typescript@5.7.3) @@ -195,6 +216,9 @@ packages: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + '@amap/amap-jsapi-loader@1.0.1': + resolution: {integrity: sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -2103,6 +2127,15 @@ packages: vue: optional: true + '@vue-macros/common@1.16.1': + resolution: {integrity: sha512-Pn/AWMTjoMYuquepLZP813BIcq8DTZiNCoaceuNlvaYuOTd8DqBZWc5u0uOMQZMInwME1mdSmmBAcTluiV9Jtg==} + engines: {node: '>=16.14.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + '@vue-macros/config@0.5.1': resolution: {integrity: sha512-LqrsrrtqTgTLLnducOoG2mfDkrP52Qar4IcQfjXfsr+U3QXc4TqgbGxYfZ5Hk5Sf6lCymwPTLU6QEJo/hVpGTA==} engines: {node: '>=16.14.0'} @@ -2458,6 +2491,10 @@ packages: resolution: {integrity: sha512-gdvX700WVC6sHCJQ7bJGfDvtuKAh6Sa6weIZROxfzUZKP7BjvB8y0SMlM/o4omSQ3L60PQSJROBJsb0vEViVnA==} engines: {node: '>=16.14.0'} + ast-kit@1.4.0: + resolution: {integrity: sha512-BlGeOw73FDsX7z0eZE/wuuafxYoek2yzNJ6l6A1nsb4+z/p87TOPbHaWuN53kFKNuUXiCQa2M+xLF71IqQmRSw==} + engines: {node: '>=16.14.0'} + ast-types@0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} @@ -2685,6 +2722,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + clean-css@5.3.2: resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} engines: {node: '>= 10.0'} @@ -4257,10 +4297,19 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-vue-next@0.474.0: + resolution: {integrity: sha512-bQaSBjfJ33xiPQCxCf4JD3rcUgZFgWZzxSY8SScNa4Mcq2vWGlbvQx6icTL1UXRqsxzfoT13RXawePSmgg4iWw==} + peerDependencies: + vue: '>=3.0.1' + magic-string-ast@0.6.3: resolution: {integrity: sha512-C9sgUzVZtUtzCBoMdYtwrIRQ4IucGRFGgdhkjL7PXsVfPYmTuWtewqzk7dlipaCMWH/gOYehW9rgMoa4Oebtpw==} engines: {node: '>=16.14.0'} + magic-string-ast@0.7.0: + resolution: {integrity: sha512-686fgAHaJY7wLTFEq7nnKqeQrhqmXB19d1HnqT35Ci7BN6hbAYLZUezTQ062uUHM7ggZEQlqJ94Ftls+KDXU8Q==} + engines: {node: '>=16.14.0'} + magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -5780,6 +5829,10 @@ packages: resolution: {integrity: sha512-vh9hOHd/VRxZ5QHdLdl0WO8aZWuVx8GN8eExCP665o8anh0LC8Xj4PF5zx0BxRcDi6AZOnTQZPgfQlA0Iw/74Q==} engines: {node: '>=16.14.0'} + unplugin-vue-define-options@1.5.5: + resolution: {integrity: sha512-V50sWbpoADsjyVgovxewoLo2IDW0zfgHJbKiAl2EdZT8OL3g3h1Mz3QKoAAu09i8+LnkDatIEQMgBVeHHxWXNg==} + engines: {node: '>=16.14.0'} + unplugin-vue-macros@2.13.8: resolution: {integrity: sha512-+TR+276cFvaXpU/h/4eSCOeVBF+JPLpiJ0NYDcVC3T0wn4RqeJapMJPZnZi1YfADFptoRhsfy/mTLg3XJZl0jw==} engines: {node: '>=16.14.0'} @@ -5838,6 +5891,12 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + vaul-vue@0.2.1: + resolution: {integrity: sha512-iF91R1JQZzxb9mb9uGNHYv8rVFxR5bL5Fj51iqvyXjzMPAzNMciCrXb9OUBu2NdlhcF6rVtEADXnQoTY+pKIeA==} + peerDependencies: + radix-vue: ^1.4.0 + vue: ^3.3.0 + verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} @@ -6234,6 +6293,8 @@ snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} + '@amap/amap-jsapi-loader@1.0.1': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -8424,6 +8485,17 @@ snapshots: transitivePeerDependencies: - rollup + '@vue-macros/common@1.16.1(vue@3.5.13(typescript@5.7.3))': + dependencies: + '@vue/compiler-sfc': 3.5.13 + ast-kit: 1.4.0 + local-pkg: 1.0.0 + magic-string-ast: 0.7.0 + pathe: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + vue: 3.5.13(typescript@5.7.3) + '@vue-macros/config@0.5.1(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3))': dependencies: '@vue-macros/common': 1.15.1(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)) @@ -8951,6 +9023,11 @@ snapshots: '@babel/parser': 7.26.3 pathe: 1.1.2 + ast-kit@1.4.0: + dependencies: + '@babel/parser': 7.26.7 + pathe: 2.0.2 + ast-types@0.14.2: dependencies: tslib: 2.8.1 @@ -9191,6 +9268,10 @@ snapshots: dependencies: consola: 3.3.1 + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + clean-css@5.3.2: dependencies: source-map: 0.6.1 @@ -11009,10 +11090,18 @@ snapshots: dependencies: yallist: 3.1.1 + lucide-vue-next@0.474.0(vue@3.5.13(typescript@5.7.3)): + dependencies: + vue: 3.5.13(typescript@5.7.3) + magic-string-ast@0.6.3: dependencies: magic-string: 0.30.17 + magic-string-ast@0.7.0: + dependencies: + magic-string: 0.30.17 + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 @@ -12856,6 +12945,14 @@ snapshots: - rollup - vue + unplugin-vue-define-options@1.5.5(vue@3.5.13(typescript@5.7.3)): + dependencies: + '@vue-macros/common': 1.16.1(vue@3.5.13(typescript@5.7.3)) + ast-walker-scope: 0.6.2 + unplugin: 2.1.2 + transitivePeerDependencies: + - vue + unplugin-vue-macros@2.13.8(@vueuse/core@12.4.0(typescript@5.7.3))(esbuild@0.23.1)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1))(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3)): dependencies: '@vue-macros/better-define': 1.11.1(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)) @@ -12971,6 +13068,14 @@ snapshots: vary@1.1.2: {} + vaul-vue@0.2.1(radix-vue@1.9.13(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)): + dependencies: + '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.3)) + radix-vue: 1.9.13(vue@3.5.13(typescript@5.7.3)) + vue: 3.5.13(typescript@5.7.3) + transitivePeerDependencies: + - '@vue/composition-api' + verror@1.10.0: dependencies: assert-plus: 1.0.0 diff --git a/src/App.vue b/src/App.vue index e50bea7..a26adfe 100644 --- a/src/App.vue +++ b/src/App.vue @@ -25,5 +25,7 @@ useHead({ diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts index c676faf..8e268a8 100644 --- a/src/auto-imports.d.ts +++ b/src/auto-imports.d.ts @@ -9,6 +9,7 @@ declare global { const EffectScope: typeof import('vue')['EffectScope'] const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] + const baseFetch: typeof import('./composables/baseFetch')['baseFetch'] const computed: typeof import('vue')['computed'] const computedAsync: typeof import('@vueuse/core')['computedAsync'] const computedEager: typeof import('@vueuse/core')['computedEager'] @@ -212,6 +213,7 @@ declare global { const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl'] const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination'] const useOnline: typeof import('@vueuse/core')['useOnline'] + const useOptions: typeof import('./composables/dateOpt')['useOptions'] const usePageLeave: typeof import('@vueuse/core')['usePageLeave'] const useParallax: typeof import('@vueuse/core')['useParallax'] const useParentElement: typeof import('@vueuse/core')['useParentElement'] @@ -316,6 +318,7 @@ declare module 'vue' { readonly EffectScope: UnwrapRef readonly asyncComputed: UnwrapRef readonly autoResetRef: UnwrapRef + readonly baseFetch: UnwrapRef readonly computed: UnwrapRef readonly computedAsync: UnwrapRef readonly computedEager: UnwrapRef @@ -517,6 +520,7 @@ declare module 'vue' { readonly useObjectUrl: UnwrapRef readonly useOffsetPagination: UnwrapRef readonly useOnline: UnwrapRef + readonly useOptions: UnwrapRef readonly usePageLeave: UnwrapRef readonly useParallax: UnwrapRef readonly useParentElement: UnwrapRef diff --git a/src/components.d.ts b/src/components.d.ts index fd01960..1c2f1d9 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,11 +7,59 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { + Badge: typeof import('./components/ui/badge/Badge.vue')['default'] + Button: typeof import('./components/ui/button/Button.vue')['default'] + Calendar: typeof import('./components/ui/calendar/Calendar.vue')['default'] + CalendarCell: typeof import('./components/ui/calendar/CalendarCell.vue')['default'] + CalendarCellTrigger: typeof import('./components/ui/calendar/CalendarCellTrigger.vue')['default'] + CalendarGrid: typeof import('./components/ui/calendar/CalendarGrid.vue')['default'] + CalendarGridBody: typeof import('./components/ui/calendar/CalendarGridBody.vue')['default'] + CalendarGridHead: typeof import('./components/ui/calendar/CalendarGridHead.vue')['default'] + CalendarGridRow: typeof import('./components/ui/calendar/CalendarGridRow.vue')['default'] + CalendarHeadCell: typeof import('./components/ui/calendar/CalendarHeadCell.vue')['default'] + CalendarHeader: typeof import('./components/ui/calendar/CalendarHeader.vue')['default'] + CalendarHeading: typeof import('./components/ui/calendar/CalendarHeading.vue')['default'] + CalendarNextButton: typeof import('./components/ui/calendar/CalendarNextButton.vue')['default'] + CalendarPrevButton: typeof import('./components/ui/calendar/CalendarPrevButton.vue')['default'] + Card: typeof import('./components/ui/card/Card.vue')['default'] + CardContent: typeof import('./components/ui/card/CardContent.vue')['default'] + CardDescription: typeof import('./components/ui/card/CardDescription.vue')['default'] + CardFooter: typeof import('./components/ui/card/CardFooter.vue')['default'] + CardHeader: typeof import('./components/ui/card/CardHeader.vue')['default'] + CardTitle: typeof import('./components/ui/card/CardTitle.vue')['default'] + Drawer: typeof import('./components/ui/drawer/Drawer.vue')['default'] + DrawerContent: typeof import('./components/ui/drawer/DrawerContent.vue')['default'] + DrawerDescription: typeof import('./components/ui/drawer/DrawerDescription.vue')['default'] + DrawerFooter: typeof import('./components/ui/drawer/DrawerFooter.vue')['default'] + DrawerHeader: typeof import('./components/ui/drawer/DrawerHeader.vue')['default'] + DrawerOverlay: typeof import('./components/ui/drawer/DrawerOverlay.vue')['default'] + DrawerTitle: typeof import('./components/ui/drawer/DrawerTitle.vue')['default'] + Input: typeof import('./components/ui/input/Input.vue')['default'] + Label: typeof import('./components/ui/label/Label.vue')['default'] + Popover: typeof import('./components/ui/popover/Popover.vue')['default'] + PopoverContent: typeof import('./components/ui/popover/PopoverContent.vue')['default'] + PopoverTrigger: typeof import('./components/ui/popover/PopoverTrigger.vue')['default'] README: typeof import('./components/README.md')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + Select: typeof import('./components/ui/select/Select.vue')['default'] + SelectContent: typeof import('./components/ui/select/SelectContent.vue')['default'] + SelectGroup: typeof import('./components/ui/select/SelectGroup.vue')['default'] + SelectItem: typeof import('./components/ui/select/SelectItem.vue')['default'] + SelectItemText: typeof import('./components/ui/select/SelectItemText.vue')['default'] + SelectLabel: typeof import('./components/ui/select/SelectLabel.vue')['default'] + SelectScrollDownButton: typeof import('./components/ui/select/SelectScrollDownButton.vue')['default'] + SelectScrollUpButton: typeof import('./components/ui/select/SelectScrollUpButton.vue')['default'] + SelectSeparator: typeof import('./components/ui/select/SelectSeparator.vue')['default'] + SelectTrigger: typeof import('./components/ui/select/SelectTrigger.vue')['default'] + SelectValue: typeof import('./components/ui/select/SelectValue.vue')['default'] + Textarea: typeof import('./components/ui/textarea/Textarea.vue')['default'] TheCounter: typeof import('./components/TheCounter.vue')['default'] TheFooter: typeof import('./components/TheFooter.vue')['default'] TheInput: typeof import('./components/TheInput.vue')['default'] + Tooltip: typeof import('./components/ui/tooltip/Tooltip.vue')['default'] + TooltipContent: typeof import('./components/ui/tooltip/TooltipContent.vue')['default'] + TooltipProvider: typeof import('./components/ui/tooltip/TooltipProvider.vue')['default'] + TooltipTrigger: typeof import('./components/ui/tooltip/TooltipTrigger.vue')['default'] } } diff --git a/src/components/README.md b/src/components/README.md deleted file mode 100644 index ccafa35..0000000 --- a/src/components/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## Components - -Components in this dir will be auto-registered and on-demand, powered by [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components). - -### Icons - -You can use icons from almost any icon sets by the power of [Iconify](https://iconify.design/). - -It will only bundle the icons you use. Check out [`unplugin-icons`](https://github.com/antfu/unplugin-icons) for more details. diff --git a/src/components/TheFooter.vue b/src/components/TheFooter.vue index 52a19b2..2d9276a 100644 --- a/src/components/TheFooter.vue +++ b/src/components/TheFooter.vue @@ -1,5 +1,5 @@ + + diff --git a/src/components/ui/badge/index.ts b/src/components/ui/badge/index.ts new file mode 100644 index 0000000..35e7a1a --- /dev/null +++ b/src/components/ui/badge/index.ts @@ -0,0 +1,25 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export { default as Badge } from './Badge.vue' + +export 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 type BadgeVariants = VariantProps diff --git a/src/components/ui/button/Button.vue b/src/components/ui/button/Button.vue new file mode 100644 index 0000000..d3e3786 --- /dev/null +++ b/src/components/ui/button/Button.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/button/index.ts b/src/components/ui/button/index.ts new file mode 100644 index 0000000..18a065a --- /dev/null +++ b/src/components/ui/button/index.ts @@ -0,0 +1,35 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export { default as Button } from './Button.vue' + +export const buttonVariants = cva( + 'inline-flex items-center justify-center gap-2 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0', + { + variants: { + variant: { + default: + 'bg-primary text-primary-foreground shadow hover:bg-primary/90', + destructive: + 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90', + outline: + 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground', + secondary: + 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2', + sm: 'h-8 rounded-md px-3 text-xs', + lg: 'h-10 rounded-md px-8', + icon: 'h-9 w-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +) + +export type ButtonVariants = VariantProps diff --git a/src/components/ui/calendar/Calendar.vue b/src/components/ui/calendar/Calendar.vue new file mode 100644 index 0000000..38298ec --- /dev/null +++ b/src/components/ui/calendar/Calendar.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/ui/calendar/CalendarCell.vue b/src/components/ui/calendar/CalendarCell.vue new file mode 100644 index 0000000..cb61c0c --- /dev/null +++ b/src/components/ui/calendar/CalendarCell.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/calendar/CalendarCellTrigger.vue b/src/components/ui/calendar/CalendarCellTrigger.vue new file mode 100644 index 0000000..1f4acc4 --- /dev/null +++ b/src/components/ui/calendar/CalendarCellTrigger.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/ui/calendar/CalendarGrid.vue b/src/components/ui/calendar/CalendarGrid.vue new file mode 100644 index 0000000..41c69ac --- /dev/null +++ b/src/components/ui/calendar/CalendarGrid.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/calendar/CalendarGridBody.vue b/src/components/ui/calendar/CalendarGridBody.vue new file mode 100644 index 0000000..23d71ce --- /dev/null +++ b/src/components/ui/calendar/CalendarGridBody.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/ui/calendar/CalendarGridHead.vue b/src/components/ui/calendar/CalendarGridHead.vue new file mode 100644 index 0000000..f8101a3 --- /dev/null +++ b/src/components/ui/calendar/CalendarGridHead.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/ui/calendar/CalendarGridRow.vue b/src/components/ui/calendar/CalendarGridRow.vue new file mode 100644 index 0000000..15b084c --- /dev/null +++ b/src/components/ui/calendar/CalendarGridRow.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/calendar/CalendarHeadCell.vue b/src/components/ui/calendar/CalendarHeadCell.vue new file mode 100644 index 0000000..71f6575 --- /dev/null +++ b/src/components/ui/calendar/CalendarHeadCell.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/calendar/CalendarHeader.vue b/src/components/ui/calendar/CalendarHeader.vue new file mode 100644 index 0000000..dbb7ad8 --- /dev/null +++ b/src/components/ui/calendar/CalendarHeader.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/calendar/CalendarHeading.vue b/src/components/ui/calendar/CalendarHeading.vue new file mode 100644 index 0000000..2de4ab7 --- /dev/null +++ b/src/components/ui/calendar/CalendarHeading.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/calendar/CalendarNextButton.vue b/src/components/ui/calendar/CalendarNextButton.vue new file mode 100644 index 0000000..e5918f3 --- /dev/null +++ b/src/components/ui/calendar/CalendarNextButton.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/calendar/CalendarPrevButton.vue b/src/components/ui/calendar/CalendarPrevButton.vue new file mode 100644 index 0000000..084f3b7 --- /dev/null +++ b/src/components/ui/calendar/CalendarPrevButton.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/calendar/index.ts b/src/components/ui/calendar/index.ts new file mode 100644 index 0000000..5239a1b --- /dev/null +++ b/src/components/ui/calendar/index.ts @@ -0,0 +1,12 @@ +export { default as Calendar } from './Calendar.vue' +export { default as CalendarCell } from './CalendarCell.vue' +export { default as CalendarCellTrigger } from './CalendarCellTrigger.vue' +export { default as CalendarGrid } from './CalendarGrid.vue' +export { default as CalendarGridBody } from './CalendarGridBody.vue' +export { default as CalendarGridHead } from './CalendarGridHead.vue' +export { default as CalendarGridRow } from './CalendarGridRow.vue' +export { default as CalendarHeadCell } from './CalendarHeadCell.vue' +export { default as CalendarHeader } from './CalendarHeader.vue' +export { default as CalendarHeading } from './CalendarHeading.vue' +export { default as CalendarNextButton } from './CalendarNextButton.vue' +export { default as CalendarPrevButton } from './CalendarPrevButton.vue' diff --git a/src/components/ui/card/Card.vue b/src/components/ui/card/Card.vue new file mode 100644 index 0000000..12dd5ec --- /dev/null +++ b/src/components/ui/card/Card.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/card/CardContent.vue b/src/components/ui/card/CardContent.vue new file mode 100644 index 0000000..785913a --- /dev/null +++ b/src/components/ui/card/CardContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardDescription.vue b/src/components/ui/card/CardDescription.vue new file mode 100644 index 0000000..d5faedd --- /dev/null +++ b/src/components/ui/card/CardDescription.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardFooter.vue b/src/components/ui/card/CardFooter.vue new file mode 100644 index 0000000..1ed2efe --- /dev/null +++ b/src/components/ui/card/CardFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardHeader.vue b/src/components/ui/card/CardHeader.vue new file mode 100644 index 0000000..951d227 --- /dev/null +++ b/src/components/ui/card/CardHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardTitle.vue b/src/components/ui/card/CardTitle.vue new file mode 100644 index 0000000..842e168 --- /dev/null +++ b/src/components/ui/card/CardTitle.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/card/index.ts b/src/components/ui/card/index.ts new file mode 100644 index 0000000..9ff6d5e --- /dev/null +++ b/src/components/ui/card/index.ts @@ -0,0 +1,6 @@ +export { default as Card } from './Card.vue' +export { default as CardContent } from './CardContent.vue' +export { default as CardDescription } from './CardDescription.vue' +export { default as CardFooter } from './CardFooter.vue' +export { default as CardHeader } from './CardHeader.vue' +export { default as CardTitle } from './CardTitle.vue' diff --git a/src/components/ui/drawer/Drawer.vue b/src/components/ui/drawer/Drawer.vue new file mode 100644 index 0000000..8be6656 --- /dev/null +++ b/src/components/ui/drawer/Drawer.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/drawer/DrawerContent.vue b/src/components/ui/drawer/DrawerContent.vue new file mode 100644 index 0000000..9639a6f --- /dev/null +++ b/src/components/ui/drawer/DrawerContent.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/drawer/DrawerDescription.vue b/src/components/ui/drawer/DrawerDescription.vue new file mode 100644 index 0000000..092dc50 --- /dev/null +++ b/src/components/ui/drawer/DrawerDescription.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/components/ui/drawer/DrawerFooter.vue b/src/components/ui/drawer/DrawerFooter.vue new file mode 100644 index 0000000..1eb3527 --- /dev/null +++ b/src/components/ui/drawer/DrawerFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/drawer/DrawerHeader.vue b/src/components/ui/drawer/DrawerHeader.vue new file mode 100644 index 0000000..ecef7a6 --- /dev/null +++ b/src/components/ui/drawer/DrawerHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/drawer/DrawerOverlay.vue b/src/components/ui/drawer/DrawerOverlay.vue new file mode 100644 index 0000000..41c3c52 --- /dev/null +++ b/src/components/ui/drawer/DrawerOverlay.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/drawer/DrawerTitle.vue b/src/components/ui/drawer/DrawerTitle.vue new file mode 100644 index 0000000..475c3ab --- /dev/null +++ b/src/components/ui/drawer/DrawerTitle.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/components/ui/drawer/index.ts b/src/components/ui/drawer/index.ts new file mode 100644 index 0000000..d41b792 --- /dev/null +++ b/src/components/ui/drawer/index.ts @@ -0,0 +1,8 @@ +export { default as Drawer } from './Drawer.vue' +export { default as DrawerContent } from './DrawerContent.vue' +export { default as DrawerDescription } from './DrawerDescription.vue' +export { default as DrawerFooter } from './DrawerFooter.vue' +export { default as DrawerHeader } from './DrawerHeader.vue' +export { default as DrawerOverlay } from './DrawerOverlay.vue' +export { default as DrawerTitle } from './DrawerTitle.vue' +export { DrawerClose, DrawerPortal, DrawerTrigger } from 'vaul-vue' diff --git a/src/components/ui/input/Input.vue b/src/components/ui/input/Input.vue new file mode 100644 index 0000000..81140b4 --- /dev/null +++ b/src/components/ui/input/Input.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/input/index.ts b/src/components/ui/input/index.ts new file mode 100644 index 0000000..a691dd6 --- /dev/null +++ b/src/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from './Input.vue' diff --git a/src/components/ui/label/Label.vue b/src/components/ui/label/Label.vue new file mode 100644 index 0000000..5ad1568 --- /dev/null +++ b/src/components/ui/label/Label.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/label/index.ts b/src/components/ui/label/index.ts new file mode 100644 index 0000000..572c2f0 --- /dev/null +++ b/src/components/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from './Label.vue' diff --git a/src/components/ui/popover/Popover.vue b/src/components/ui/popover/Popover.vue new file mode 100644 index 0000000..da5f709 --- /dev/null +++ b/src/components/ui/popover/Popover.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/popover/PopoverContent.vue b/src/components/ui/popover/PopoverContent.vue new file mode 100644 index 0000000..97580ec --- /dev/null +++ b/src/components/ui/popover/PopoverContent.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/ui/popover/PopoverTrigger.vue b/src/components/ui/popover/PopoverTrigger.vue new file mode 100644 index 0000000..22f4772 --- /dev/null +++ b/src/components/ui/popover/PopoverTrigger.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/ui/popover/index.ts b/src/components/ui/popover/index.ts new file mode 100644 index 0000000..c621f9b --- /dev/null +++ b/src/components/ui/popover/index.ts @@ -0,0 +1,3 @@ +export { default as Popover } from './Popover.vue' +export { default as PopoverContent } from './PopoverContent.vue' +export { default as PopoverTrigger } from './PopoverTrigger.vue' diff --git a/src/components/ui/select/Select.vue b/src/components/ui/select/Select.vue new file mode 100644 index 0000000..adc42fd --- /dev/null +++ b/src/components/ui/select/Select.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/select/SelectContent.vue b/src/components/ui/select/SelectContent.vue new file mode 100644 index 0000000..f597885 --- /dev/null +++ b/src/components/ui/select/SelectContent.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/ui/select/SelectGroup.vue b/src/components/ui/select/SelectGroup.vue new file mode 100644 index 0000000..b0803e1 --- /dev/null +++ b/src/components/ui/select/SelectGroup.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/select/SelectItem.vue b/src/components/ui/select/SelectItem.vue new file mode 100644 index 0000000..eaa949c --- /dev/null +++ b/src/components/ui/select/SelectItem.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/select/SelectItemText.vue b/src/components/ui/select/SelectItemText.vue new file mode 100644 index 0000000..a0bb5c2 --- /dev/null +++ b/src/components/ui/select/SelectItemText.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/ui/select/SelectLabel.vue b/src/components/ui/select/SelectLabel.vue new file mode 100644 index 0000000..503e890 --- /dev/null +++ b/src/components/ui/select/SelectLabel.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/components/ui/select/SelectScrollDownButton.vue b/src/components/ui/select/SelectScrollDownButton.vue new file mode 100644 index 0000000..8854334 --- /dev/null +++ b/src/components/ui/select/SelectScrollDownButton.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/select/SelectScrollUpButton.vue b/src/components/ui/select/SelectScrollUpButton.vue new file mode 100644 index 0000000..6c3711f --- /dev/null +++ b/src/components/ui/select/SelectScrollUpButton.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/select/SelectSeparator.vue b/src/components/ui/select/SelectSeparator.vue new file mode 100644 index 0000000..cb06b8d --- /dev/null +++ b/src/components/ui/select/SelectSeparator.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/select/SelectTrigger.vue b/src/components/ui/select/SelectTrigger.vue new file mode 100644 index 0000000..7842eef --- /dev/null +++ b/src/components/ui/select/SelectTrigger.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/select/SelectValue.vue b/src/components/ui/select/SelectValue.vue new file mode 100644 index 0000000..4bc37dd --- /dev/null +++ b/src/components/ui/select/SelectValue.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/components/ui/select/index.ts b/src/components/ui/select/index.ts new file mode 100644 index 0000000..31b9294 --- /dev/null +++ b/src/components/ui/select/index.ts @@ -0,0 +1,11 @@ +export { default as Select } from './Select.vue' +export { default as SelectContent } from './SelectContent.vue' +export { default as SelectGroup } from './SelectGroup.vue' +export { default as SelectItem } from './SelectItem.vue' +export { default as SelectItemText } from './SelectItemText.vue' +export { default as SelectLabel } from './SelectLabel.vue' +export { default as SelectScrollDownButton } from './SelectScrollDownButton.vue' +export { default as SelectScrollUpButton } from './SelectScrollUpButton.vue' +export { default as SelectSeparator } from './SelectSeparator.vue' +export { default as SelectTrigger } from './SelectTrigger.vue' +export { default as SelectValue } from './SelectValue.vue' diff --git a/src/components/ui/textarea/Textarea.vue b/src/components/ui/textarea/Textarea.vue new file mode 100644 index 0000000..1dee55d --- /dev/null +++ b/src/components/ui/textarea/Textarea.vue @@ -0,0 +1,24 @@ + + +