@soft-stech/bootsman-ui-shadcn 1.4.4 → 1.4.6
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/BuiSheet.vue_vue_type_script_setup_true_lang-BskbnSm5.js +23 -0
- package/dist/BuiSheetClose.vue_vue_type_script_setup_true_lang-BYXhp7zs.js +21 -0
- package/dist/BuiSheetDescription.vue_vue_type_script_setup_true_lang-B52ZY6l4.js +28 -0
- package/dist/BuiSheetFooter.vue_vue_type_script_setup_true_lang-DT3Cdj-l.js +19 -0
- package/dist/BuiSheetHeader.vue_vue_type_script_setup_true_lang-Hmi-f0up.js +19 -0
- package/dist/BuiSheetTitle.vue_vue_type_script_setup_true_lang-DafOh-no.js +28 -0
- package/dist/BuiSheetTrigger.vue_vue_type_script_setup_true_lang-Bo3F1V-i.js +21 -0
- package/dist/assets/main.css +1 -1
- package/dist/components/ui/sheet/BuiSheet.js +4 -0
- package/dist/components/ui/sheet/BuiSheet.vue.d.ts +21 -0
- package/dist/components/ui/sheet/BuiSheetClose.js +4 -0
- package/dist/components/ui/sheet/BuiSheetClose.vue.d.ts +17 -0
- package/dist/components/ui/sheet/BuiSheetContent.js +4 -0
- package/dist/components/ui/sheet/BuiSheetContent.vue.d.ts +37 -0
- package/dist/components/ui/sheet/BuiSheetDescription.js +4 -0
- package/dist/components/ui/sheet/BuiSheetDescription.vue.d.ts +22 -0
- package/dist/components/ui/sheet/BuiSheetFooter.js +4 -0
- package/dist/components/ui/sheet/BuiSheetFooter.vue.d.ts +21 -0
- package/dist/components/ui/sheet/BuiSheetHeader.js +4 -0
- package/dist/components/ui/sheet/BuiSheetHeader.vue.d.ts +21 -0
- package/dist/components/ui/sheet/BuiSheetTitle.js +4 -0
- package/dist/components/ui/sheet/BuiSheetTitle.vue.d.ts +22 -0
- package/dist/components/ui/sheet/BuiSheetTrigger.js +4 -0
- package/dist/components/ui/sheet/BuiSheetTrigger.vue.d.ts +17 -0
- package/dist/components/ui/sheet/index.d.ts +13 -0
- package/dist/components/ui/sheet/index.js +77 -0
- package/dist/components/ui/tabs/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +167 -150
- package/package.json +1 -1
- package/src/components/stories/BuiSheet.story.vue +41 -0
- package/src/components/ui/sheet/BuiSheet.vue +19 -0
- package/src/components/ui/sheet/BuiSheetClose.vue +11 -0
- package/src/components/ui/sheet/BuiSheetContent.vue +56 -0
- package/src/components/ui/sheet/BuiSheetDescription.vue +22 -0
- package/src/components/ui/sheet/BuiSheetFooter.vue +12 -0
- package/src/components/ui/sheet/BuiSheetHeader.vue +12 -0
- package/src/components/ui/sheet/BuiSheetTitle.vue +22 -0
- package/src/components/ui/sheet/BuiSheetTrigger.vue +11 -0
- package/src/components/ui/sheet/index.ts +31 -0
- package/src/components/ui/tabs/index.ts +1 -1
- package/src/index.ts +1 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { cn } from '@/lib/utils'
|
3
|
+
import { X } from 'lucide-vue-next'
|
4
|
+
import {
|
5
|
+
DialogClose,
|
6
|
+
DialogContent,
|
7
|
+
type DialogContentEmits,
|
8
|
+
type DialogContentProps,
|
9
|
+
DialogOverlay,
|
10
|
+
DialogPortal,
|
11
|
+
useForwardPropsEmits
|
12
|
+
} from 'radix-vue'
|
13
|
+
import { computed, type HTMLAttributes } from 'vue'
|
14
|
+
import { type SheetVariants, sheetVariants } from '.'
|
15
|
+
|
16
|
+
interface SheetContentProps extends DialogContentProps {
|
17
|
+
class?: HTMLAttributes['class']
|
18
|
+
side?: SheetVariants['side']
|
19
|
+
}
|
20
|
+
|
21
|
+
defineOptions({
|
22
|
+
inheritAttrs: false
|
23
|
+
})
|
24
|
+
|
25
|
+
const props = defineProps<SheetContentProps>()
|
26
|
+
|
27
|
+
const emits = defineEmits<DialogContentEmits>()
|
28
|
+
|
29
|
+
const delegatedProps = computed(() => {
|
30
|
+
const { class: _, side, ...delegated } = props
|
31
|
+
|
32
|
+
return delegated
|
33
|
+
})
|
34
|
+
|
35
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
36
|
+
</script>
|
37
|
+
|
38
|
+
<template>
|
39
|
+
<DialogPortal>
|
40
|
+
<DialogOverlay
|
41
|
+
class="fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
|
42
|
+
/>
|
43
|
+
<DialogContent
|
44
|
+
:class="cn(sheetVariants({ side }), props.class)"
|
45
|
+
v-bind="{ ...forwarded, ...$attrs }"
|
46
|
+
>
|
47
|
+
<slot />
|
48
|
+
|
49
|
+
<DialogClose
|
50
|
+
class="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary"
|
51
|
+
>
|
52
|
+
<X class="h-4 w-4 text-muted-foreground" />
|
53
|
+
</DialogClose>
|
54
|
+
</DialogContent>
|
55
|
+
</DialogPortal>
|
56
|
+
</template>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { cn } from '@/lib/utils'
|
3
|
+
import { DialogDescription, type DialogDescriptionProps } from 'radix-vue'
|
4
|
+
import { computed, type HTMLAttributes } from 'vue'
|
5
|
+
|
6
|
+
const props = defineProps<DialogDescriptionProps & { class?: HTMLAttributes['class'] }>()
|
7
|
+
|
8
|
+
const delegatedProps = computed(() => {
|
9
|
+
const { class: _, ...delegated } = props
|
10
|
+
|
11
|
+
return delegated
|
12
|
+
})
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<template>
|
16
|
+
<DialogDescription
|
17
|
+
:class="cn('text-sm text-muted-foreground', props.class)"
|
18
|
+
v-bind="delegatedProps"
|
19
|
+
>
|
20
|
+
<slot />
|
21
|
+
</DialogDescription>
|
22
|
+
</template>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import type { HTMLAttributes } from 'vue'
|
3
|
+
import { cn } from '@/lib/utils'
|
4
|
+
|
5
|
+
const props = defineProps<{ class?: HTMLAttributes['class'] }>()
|
6
|
+
</script>
|
7
|
+
|
8
|
+
<template>
|
9
|
+
<div :class="cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2', props.class)">
|
10
|
+
<slot />
|
11
|
+
</div>
|
12
|
+
</template>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import type { HTMLAttributes } from 'vue'
|
3
|
+
import { cn } from '@/lib/utils'
|
4
|
+
|
5
|
+
const props = defineProps<{ class?: HTMLAttributes['class'] }>()
|
6
|
+
</script>
|
7
|
+
|
8
|
+
<template>
|
9
|
+
<div :class="cn('flex flex-col gap-y-2 text-center sm:text-left', props.class)">
|
10
|
+
<slot />
|
11
|
+
</div>
|
12
|
+
</template>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { cn } from '@/lib/utils'
|
3
|
+
import { DialogTitle, type DialogTitleProps } from 'radix-vue'
|
4
|
+
import { computed, type HTMLAttributes } from 'vue'
|
5
|
+
|
6
|
+
const props = defineProps<DialogTitleProps & { class?: HTMLAttributes['class'] }>()
|
7
|
+
|
8
|
+
const delegatedProps = computed(() => {
|
9
|
+
const { class: _, ...delegated } = props
|
10
|
+
|
11
|
+
return delegated
|
12
|
+
})
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<template>
|
16
|
+
<DialogTitle
|
17
|
+
:class="cn('text-lg font-semibold text-foreground', props.class)"
|
18
|
+
v-bind="delegatedProps"
|
19
|
+
>
|
20
|
+
<slot />
|
21
|
+
</DialogTitle>
|
22
|
+
</template>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { cva, type VariantProps } from 'class-variance-authority'
|
2
|
+
|
3
|
+
export { default as Sheet } from './BuiSheet.vue'
|
4
|
+
export { default as SheetClose } from './BuiSheetClose.vue'
|
5
|
+
export { default as SheetContent } from './BuiSheetContent.vue'
|
6
|
+
export { default as SheetDescription } from './BuiSheetDescription.vue'
|
7
|
+
export { default as SheetFooter } from './BuiSheetFooter.vue'
|
8
|
+
export { default as SheetHeader } from './BuiSheetHeader.vue'
|
9
|
+
export { default as SheetTitle } from './BuiSheetTitle.vue'
|
10
|
+
export { default as SheetTrigger } from './BuiSheetTrigger.vue'
|
11
|
+
|
12
|
+
export const sheetVariants = cva(
|
13
|
+
'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',
|
14
|
+
{
|
15
|
+
variants: {
|
16
|
+
side: {
|
17
|
+
top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
|
18
|
+
bottom:
|
19
|
+
'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
|
20
|
+
left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
|
21
|
+
right:
|
22
|
+
'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm'
|
23
|
+
}
|
24
|
+
},
|
25
|
+
defaultVariants: {
|
26
|
+
side: 'right'
|
27
|
+
}
|
28
|
+
}
|
29
|
+
)
|
30
|
+
|
31
|
+
export type SheetVariants = VariantProps<typeof sheetVariants>
|
@@ -26,7 +26,7 @@ export const tabsTriggerVariants = cva(
|
|
26
26
|
default:
|
27
27
|
'rounded-sm data-[state=active]:bg-background data-[state=active]:border border-primary/[0.16] text-foreground opacity-[0.56] hover:opacity-100 data-[state=active]:opacity-100 data-[state=active]:shadow-tab-shadow',
|
28
28
|
ghost:
|
29
|
-
'border-transparent text-muted-foreground pb-0 [&_div]:pb-1.5 [&_div]:border-b-2 [&_div]:data-[state=active]:border-primary',
|
29
|
+
'border-transparent text-muted-foreground pb-0 [&_div]:pb-1.5 [&_div]:data-[state=active]:border-b-2 [&_div]:data-[state=active]:border-primary',
|
30
30
|
vertical:
|
31
31
|
'border-transparent text-primary data-[state=active]:border-primary data-[state=active]:bg-background border-l-2 border-b-0 w-full justify-start pl-6'
|
32
32
|
}
|
package/src/index.ts
CHANGED
@@ -39,6 +39,7 @@ export * from './components/ui/skeleton/index'
|
|
39
39
|
export * from './components/ui/scroll-area/index'
|
40
40
|
export * from './components/ui/collapsible/index'
|
41
41
|
export * from './components/ui/auto-form/index'
|
42
|
+
export * from './components/ui/sheet/index'
|
42
43
|
|
43
44
|
export * from './lib/utils'
|
44
45
|
export { default as tailwind } from './tailwind-preset'
|