Skip to content

Commit 25c8df7

Browse files
committed
feat: support for shadcn-vue
1 parent 613f900 commit 25c8df7

File tree

16 files changed

+178
-483
lines changed

16 files changed

+178
-483
lines changed

README.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,28 @@ export default defineConfig({
3535
color: "red",
3636
}),
3737
],
38+
// By default, `.ts` and `.js` files are NOT extracted.
39+
// If you want to extract them, you can use the following configuration.
40+
// It's necessary to add following configuration if you are using shadcn-vue.
41+
content: {
42+
pipeline: {
43+
include: [
44+
/\.(vue|svelte|[jt]s|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/,
45+
],
46+
},
47+
},
3848
})
3949
```
4050

4151
> [!IMPORTANT]
4252
> Do not run `shadcn-ui init` command.
4353
44-
1. `pnpm add lucide-react class-variance-authority clsx tailwind-merge`
54+
1. `ni lucide-react class-variance-authority clsx tailwind-merge`
55+
- Run `ni lucide-vue-next radix-vue class-variance-authority clsx tailwind-merge` if you are using shadcn-vue.
4556
1. copy `utils.ts` into your project at `src/lib`
4657
1. create `components.json` in your project root and modify as needed
4758
1. `pnpm dlx shadcn-ui@latest add button`
59+
- Run `npx shadcn-vue@latest add button` if you are using shadcn-vue.
4860

4961
> [!WARNING]
5062
> If you encounter problems adjusting animation property, this may be because [tailwind-animate](https://github.com/jamiebuilds/tailwindcss-animate) has [duplicate rules about animation and transition](https://github.com/jamiebuilds/tailwindcss-animate/pull/46). You can refer to [Migration Guide from Animations Preset for UnoCSS](https://unocss-preset-animations.aelita.me/guide/migration.html) to solve this problem.
@@ -62,6 +74,8 @@ export function cn(...inputs: ClassValue[]) {
6274
}
6375
```
6476

77+
React + shadcn-ui
78+
6579
```json
6680
{
6781
"$schema": "https://ui.shadcn.com/schema.json",
@@ -81,6 +95,26 @@ export function cn(...inputs: ClassValue[]) {
8195
}
8296
```
8397

98+
Vue + shadcn-vue
99+
100+
```json
101+
{
102+
"style": "default",
103+
"typescript": true,
104+
"tailwind": {
105+
"config": "tailwind.config.js",
106+
"css": "src/assets/index.css",
107+
"baseColor": "neutral",
108+
"cssVariables": true
109+
},
110+
"framework": "vite",
111+
"aliases": {
112+
"components": "@/components",
113+
"utils": "@/lib/utils"
114+
}
115+
}
116+
```
117+
84118
## Dynamic Theme
85119

86120
Preview the [demo](https://unocss-preset-shadcn.vercel.app).

examples/shadcn-vue/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@
99
"preview": "vite preview"
1010
},
1111
"dependencies": {
12+
"@unocss/reset": "^0.58.0",
1213
"class-variance-authority": "^0.7.0",
1314
"clsx": "^2.0.0",
1415
"lucide-vue-next": "^0.299.0",
1516
"radix-vue": "^1.2.5",
1617
"tailwind-merge": "^2.1.0",
17-
"tailwindcss-animate": "^1.0.7",
1818
"vue": "^3.3.11"
1919
},
2020
"devDependencies": {
2121
"@vitejs/plugin-vue": "^4.5.2",
22-
"autoprefixer": "^10.4.16",
23-
"postcss": "^8.4.32",
24-
"tailwindcss": "^3.4.0",
2522
"typescript": "^5.2.2",
23+
"unocss": "^0.58.0",
24+
"unocss-preset-animations": "^1.0.1",
25+
"unocss-preset-shadcn": "workspace:^",
2626
"vite": "^5.0.8",
2727
"vue-tsc": "^1.8.25"
2828
}

examples/shadcn-vue/postcss.config.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

examples/shadcn-vue/src/App.vue

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
<script setup lang="ts">
2+
import {
3+
Collapsible,
4+
CollapsibleContent,
5+
CollapsibleTrigger,
6+
} from "@/components/ui/collapsible"
7+
import { ref } from "vue"
8+
29
import Button from "./components/ui/button/Button.vue"
10+
11+
const isOpen = ref(false)
312
</script>
413

514
<template>
615
<Button>Button</Button>
16+
<Collapsible v-model:open="isOpen">
17+
<CollapsibleTrigger>Can I use this in my project?</CollapsibleTrigger>
18+
<CollapsibleContent>
19+
Yes. Free to use for personal and commercial projects. No attribution
20+
required.
21+
</CollapsibleContent>
22+
</Collapsible>
723
</template>

examples/shadcn-vue/src/assets/index.css

Lines changed: 0 additions & 78 deletions
This file was deleted.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<script setup lang="ts">
2+
import { CollapsibleRoot, useEmitAsProps } from "radix-vue"
3+
4+
import type { CollapsibleRootEmits, CollapsibleRootProps } from "radix-vue"
5+
6+
const props = defineProps<CollapsibleRootProps>()
7+
const emits = defineEmits<CollapsibleRootEmits>()
8+
</script>
9+
10+
<template>
11+
<CollapsibleRoot
12+
v-slot="{ open }"
13+
v-bind="{ ...props, ...useEmitAsProps(emits) }"
14+
>
15+
<slot :open="open" />
16+
</CollapsibleRoot>
17+
</template>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script setup lang="ts">
2+
import { CollapsibleContent } from "radix-vue"
3+
4+
import type { CollapsibleContentProps } from "radix-vue"
5+
6+
const props = defineProps<CollapsibleContentProps>()
7+
</script>
8+
9+
<template>
10+
<CollapsibleContent
11+
v-bind="props"
12+
class="overflow-hidden transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down"
13+
>
14+
<slot />
15+
</CollapsibleContent>
16+
</template>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script setup lang="ts">
2+
import { CollapsibleTrigger } from "radix-vue"
3+
4+
import type { CollapsibleTriggerProps } from "radix-vue"
5+
6+
const props = defineProps<CollapsibleTriggerProps>()
7+
</script>
8+
9+
<template>
10+
<CollapsibleTrigger v-bind="props">
11+
<slot />
12+
</CollapsibleTrigger>
13+
</template>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export { default as Collapsible } from "./Collapsible.vue"
2+
export { default as CollapsibleTrigger } from "./CollapsibleTrigger.vue"
3+
export { default as CollapsibleContent } from "./CollapsibleContent.vue"

examples/shadcn-vue/src/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { createApp } from "vue"
22

3-
import "./assets/index.css"
4-
import "./style.css"
3+
import "@unocss/reset/tailwind.css"
4+
import "virtual:uno.css"
55

66
import App from "./App.vue"
77

examples/shadcn-vue/src/style.css

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)