Skip to content

Commit dcaad29

Browse files
committed
separator
1 parent 7ed6702 commit dcaad29

File tree

6 files changed

+71
-0
lines changed

6 files changed

+71
-0
lines changed

app/pages/components/Separator.vue

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<script setup lang="ts">
2+
import { Separator } from "@/components/separator"
3+
</script>
4+
5+
<template>
6+
<div class="w-64">
7+
<div class="space-y-1">
8+
<h4 class="text-sm font-medium leading-none">Radix Primitives</h4>
9+
10+
<p class="text-sm text-muted-foreground">An open-source UI component library.</p>
11+
</div>
12+
13+
<Separator class="my-4" label="Or" />
14+
15+
<div class="flex h-5 items-center space-x-4 text-sm">
16+
<div>Blog</div>
17+
18+
<Separator orientation="vertical" />
19+
20+
<div>Docs</div>
21+
22+
<Separator orientation="vertical" />
23+
24+
<div>Source</div>
25+
</div>
26+
</div>
27+
</template>

app/pages/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export { default as Flasher } from "./components/Flasher.vue"
1717
export { default as Pagination } from "./components/Pagination.vue"
1818
export { default as Popover } from "./components/Popover.vue"
1919
export { default as Progress } from "./components/Progress.vue"
20+
export { default as Separator } from "./components/Separator.vue"
2021
export { default as Skeleton } from "./components/Skeleton.vue"
2122
export { default as Toast } from "./components/Toast.vue"
2223
export { default as Tip } from "./components/Tip.vue"

app/router/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
Pagination,
2121
Popover,
2222
Progress,
23+
Separator,
2324
Skeleton,
2425
Toast,
2526
Tip,
@@ -146,6 +147,12 @@ const routes = [
146147
component: Progress,
147148
meta: { layout: ComponentLayout, shadcn: true },
148149
},
150+
{
151+
name: "Separator",
152+
path: "/components/separator",
153+
component: Separator,
154+
meta: { layout: ComponentLayout, shadcn: true },
155+
},
149156
{
150157
name: "Skeleton",
151158
path: "/components/skeleton",
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<script setup lang="ts">
2+
import type { HTMLAttributes } from "vue"
3+
import { reactiveOmit } from "@vueuse/core"
4+
import { Separator, type SeparatorProps } from "reka-ui"
5+
import { cn } from "@/lib/utils"
6+
7+
const props = defineProps<SeparatorProps & { class?: HTMLAttributes["class"]; label?: string }>()
8+
9+
const delegatedProps = reactiveOmit(props, "class")
10+
</script>
11+
12+
<template>
13+
<Separator
14+
v-bind="delegatedProps"
15+
:class="
16+
cn(
17+
'shrink-0 bg-border relative',
18+
props.orientation === 'vertical' ? 'w-px h-full' : 'h-px w-full',
19+
props.class
20+
)
21+
"
22+
>
23+
<span
24+
v-if="props.label"
25+
:class="
26+
cn(
27+
'text-xs text-muted-foreground bg-background absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex justify-center items-center',
28+
props.orientation === 'vertical' ? 'w-[1px] px-1 py-2' : 'h-[1px] py-1 px-2'
29+
)
30+
"
31+
>{{ props.label }}</span
32+
>
33+
</Separator>
34+
</template>

src/components/separator/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default as Separator } from "./Separator.vue"

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export * from "@/components/label"
2727
export * from "@/components/popover"
2828
export * from "@/components/progress"
2929
export * from "@/components/select"
30+
export * from "@/components/separator"
3031
export * from "@/components/sheet"
3132
export * from "@/components/skeleton"
3233
export * from "@/components/slider"

0 commit comments

Comments
 (0)