fulldev-ui 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/package.json +24 -20
- package/public/r/accordion.json +1 -1
- package/public/r/alert-dialog.json +1 -1
- package/public/r/aspect-ratio.json +23 -0
- package/public/r/attachment.json +66 -0
- package/public/r/button-group.json +41 -0
- package/public/r/carousel.json +8 -8
- package/public/r/collapsible.json +1 -1
- package/public/r/combobox.json +4 -4
- package/public/r/command.json +2 -2
- package/public/r/components.json +8 -0
- package/public/r/dialog.json +1 -1
- package/public/r/doc-1.json +1 -1
- package/public/r/drawer.json +109 -0
- package/public/r/dropdown-menu.json +1 -1
- package/public/r/hover-card.json +2 -2
- package/public/r/init.json +1 -1
- package/public/r/navigation-menu.json +2 -2
- package/public/r/pagination.json +59 -0
- package/public/r/popover.json +1 -1
- package/public/r/radio-group.json +1 -1
- package/public/r/registry.json +414 -24
- package/public/r/resizable.json +36 -0
- package/public/r/reviews-3.json +1 -1
- package/public/r/select.json +1 -1
- package/public/r/sheet.json +1 -1
- package/public/r/sidebar.json +1 -1
- package/public/r/slider.json +2 -2
- package/public/r/switch.json +1 -1
- package/public/r/tabs.json +1 -1
- package/public/r/toast.json +80 -0
- package/public/r/toggle-group.json +34 -0
- package/public/r/toggle.json +1 -1
- package/public/r/tooltip.json +1 -1
- package/public/r/typography.json +21 -16
- package/registry/init/global.css +2 -0
- package/registry.json +375 -24
- package/src/components/blocks/doc-1.astro +76 -0
- package/src/components/blocks/reviews-3.astro +1 -1
- package/src/components/ui/aspect-ratio/aspect-ratio.astro +25 -0
- package/src/components/ui/aspect-ratio/index.ts +1 -0
- package/src/components/ui/attachment/attachment-action.astro +20 -0
- package/src/components/ui/attachment/attachment-actions.astro +20 -0
- package/src/components/ui/attachment/attachment-content.astro +20 -0
- package/src/components/ui/attachment/attachment-description.astro +20 -0
- package/src/components/ui/attachment/attachment-group.astro +20 -0
- package/src/components/ui/attachment/attachment-media.astro +36 -0
- package/src/components/ui/attachment/attachment-title.astro +20 -0
- package/src/components/ui/attachment/attachment-trigger.astro +24 -0
- package/src/components/ui/attachment/attachment.astro +52 -0
- package/src/components/ui/attachment/index.ts +9 -0
- package/src/components/ui/button-group/button-group-separator.astro +29 -0
- package/src/components/ui/button-group/button-group-text.astro +20 -0
- package/src/components/ui/button-group/button-group-variants.ts +20 -0
- package/src/components/ui/button-group/button-group.astro +30 -0
- package/src/components/ui/button-group/index.ts +7 -0
- package/src/components/ui/carousel/carousel-content.astro +11 -13
- package/src/components/ui/carousel/carousel-item.astro +2 -5
- package/src/components/ui/carousel/carousel-next.astro +0 -3
- package/src/components/ui/carousel/carousel-previous.astro +0 -3
- package/src/components/ui/carousel/carousel.astro +19 -219
- package/src/components/ui/carousel/index.ts +1 -5
- package/src/components/ui/combobox/combobox-input.astro +11 -4
- package/src/components/ui/combobox/combobox-trigger.astro +7 -7
- package/src/components/ui/drawer/drawer-close.astro +13 -0
- package/src/components/ui/drawer/drawer-content.astro +43 -0
- package/src/components/ui/drawer/drawer-description.astro +17 -0
- package/src/components/ui/drawer/drawer-footer.astro +17 -0
- package/src/components/ui/drawer/drawer-header.astro +17 -0
- package/src/components/ui/drawer/drawer-indent-background.astro +11 -0
- package/src/components/ui/drawer/drawer-indent.astro +11 -0
- package/src/components/ui/drawer/drawer-overlay.astro +21 -0
- package/src/components/ui/drawer/drawer-popup.astro +36 -0
- package/src/components/ui/drawer/drawer-portal.astro +27 -0
- package/src/components/ui/drawer/drawer-provider.astro +11 -0
- package/src/components/ui/drawer/drawer-swipe-handle.astro +20 -0
- package/src/components/ui/drawer/drawer-title.astro +17 -0
- package/src/components/ui/drawer/drawer-trigger.astro +21 -0
- package/src/components/ui/drawer/drawer-viewport.astro +21 -0
- package/src/components/ui/drawer/drawer-virtual-keyboard-provider.astro +11 -0
- package/src/components/ui/drawer/drawer.astro +60 -0
- package/src/components/ui/drawer/index.ts +28 -0
- package/src/components/ui/navigation-menu/navigation-menu.astro +2 -2
- package/src/components/ui/pagination/index.ts +7 -0
- package/src/components/ui/pagination/pagination-content.astro +17 -0
- package/src/components/ui/pagination/pagination-ellipsis.astro +22 -0
- package/src/components/ui/pagination/pagination-item.astro +11 -0
- package/src/components/ui/pagination/pagination-link.astro +41 -0
- package/src/components/ui/pagination/pagination-next.astro +27 -0
- package/src/components/ui/pagination/pagination-previous.astro +27 -0
- package/src/components/ui/pagination/pagination.astro +19 -0
- package/src/components/ui/resizable/index.ts +4 -0
- package/src/components/ui/resizable/resizable-handle.astro +32 -0
- package/src/components/ui/resizable/resizable-panel.astro +36 -0
- package/src/components/ui/resizable/resizable.astro +43 -0
- package/src/components/ui/slider/slider.astro +1 -1
- package/src/components/ui/toast/index.ts +26 -0
- package/src/components/ui/toast/toast-action.astro +25 -0
- package/src/components/ui/toast/toast-close.astro +27 -0
- package/src/components/ui/toast/toast-content.astro +20 -0
- package/src/components/ui/toast/toast-description.astro +18 -0
- package/src/components/ui/toast/toast-icon.astro +37 -0
- package/src/components/ui/toast/toast-item.astro +28 -0
- package/src/components/ui/toast/toast-template.astro +11 -0
- package/src/components/ui/toast/toast-title.astro +17 -0
- package/src/components/ui/toast/toast-viewport.astro +20 -0
- package/src/components/ui/toast/toast.astro +51 -0
- package/src/components/ui/toast/toaster.astro +37 -0
- package/src/components/ui/toggle-group/index.ts +2 -0
- package/src/components/ui/toggle-group/toggle-group-item.astro +44 -0
- package/src/components/ui/toggle-group/toggle-group.astro +74 -0
- package/src/components/ui/typography/typeset.css +441 -0
- package/src/components/ui/typography/typography-a.astro +13 -22
- package/src/components/ui/typography/typography-blockquote.astro +4 -23
- package/src/components/ui/typography/typography-h1.astro +13 -26
- package/src/components/ui/typography/typography-h2.astro +13 -31
- package/src/components/ui/typography/typography-h3.astro +9 -26
- package/src/components/ui/typography/typography-h4.astro +9 -26
- package/src/components/ui/typography/typography-inline-code.astro +8 -27
- package/src/components/ui/typography/typography-lead.astro +4 -26
- package/src/components/ui/typography/typography-list-item.astro +4 -24
- package/src/components/ui/typography/typography-list.astro +10 -40
- package/src/components/ui/typography/typography-p.astro +9 -28
- package/src/components/ui/typography/typography-table-cell.astro +9 -40
- package/src/components/ui/typography/typography-table-head.astro +9 -35
- package/src/components/ui/typography/typography-table-row.astro +4 -23
- package/src/components/ui/typography/typography-table.astro +8 -28
- package/src/components/ui/typography/typography.astro +10 -283
- package/src/styles/global.css +2 -0
|
@@ -50,7 +50,7 @@ const { class: className, title, description, reviews, ...props } = Astro.props
|
|
|
50
50
|
)
|
|
51
51
|
}
|
|
52
52
|
<SectionContainer>
|
|
53
|
-
<Carousel
|
|
53
|
+
<Carousel loop drag class="mx-auto w-[calc(100%-6rem)] max-w-3xl">
|
|
54
54
|
<CarouselContent>
|
|
55
55
|
{
|
|
56
56
|
reviews.map((item) => (
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props = HTMLAttributes<"div"> & {
|
|
7
|
+
ratio: number
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { class: className, ratio, style, ...props } = Astro.props
|
|
11
|
+
|
|
12
|
+
const resolvedStyle =
|
|
13
|
+
typeof style === "string"
|
|
14
|
+
? `--ratio: ${ratio}; ${style}`
|
|
15
|
+
: { "--ratio": ratio, ...(style ?? {}) }
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
<div
|
|
19
|
+
data-slot="aspect-ratio"
|
|
20
|
+
style={resolvedStyle}
|
|
21
|
+
class={cn("relative aspect-(--ratio)", className)}
|
|
22
|
+
{...props}
|
|
23
|
+
>
|
|
24
|
+
<slot />
|
|
25
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as AspectRatio } from "./aspect-ratio.astro"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLTag, Polymorphic } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { Button, type ButtonVariantProps } from "@/components/ui/button"
|
|
5
|
+
|
|
6
|
+
type Props<Tag extends HTMLTag = "button"> = Polymorphic<{ as: Tag }> &
|
|
7
|
+
ButtonVariantProps
|
|
8
|
+
|
|
9
|
+
const { as, variant = "ghost", size = "icon-xs", ...props } = Astro.props
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<Button
|
|
13
|
+
as={as}
|
|
14
|
+
data-slot="attachment-action"
|
|
15
|
+
variant={variant}
|
|
16
|
+
size={size}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</Button>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props = HTMLAttributes<"div">
|
|
7
|
+
|
|
8
|
+
const { class: className, ...props } = Astro.props
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<div
|
|
12
|
+
data-slot="attachment-actions"
|
|
13
|
+
class={cn(
|
|
14
|
+
"relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:right-3 group-data-[orientation=vertical]/attachment:gap-1",
|
|
15
|
+
className
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props = HTMLAttributes<"div">
|
|
7
|
+
|
|
8
|
+
const { class: className, ...props } = Astro.props
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<div
|
|
12
|
+
data-slot="attachment-content"
|
|
13
|
+
class={cn(
|
|
14
|
+
"max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1",
|
|
15
|
+
className
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props = HTMLAttributes<"span">
|
|
7
|
+
|
|
8
|
+
const { class: className, ...props } = Astro.props
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<span
|
|
12
|
+
data-slot="attachment-description"
|
|
13
|
+
class={cn(
|
|
14
|
+
"text-muted-foreground group-data-[state=error]/attachment:text-destructive/80 mt-0.5 block max-w-full min-w-0 truncate text-xs",
|
|
15
|
+
className
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</span>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props = HTMLAttributes<"div">
|
|
7
|
+
|
|
8
|
+
const { class: className, ...props } = Astro.props
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<div
|
|
12
|
+
data-slot="attachment-group"
|
|
13
|
+
class={cn(
|
|
14
|
+
"flex min-w-0 snap-x snap-mandatory scroll-px-1 gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start",
|
|
15
|
+
className
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
4
|
+
|
|
5
|
+
import { cn } from "@/lib/utils"
|
|
6
|
+
|
|
7
|
+
const attachmentMediaVariants = cva(
|
|
8
|
+
"bg-muted text-foreground group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-lg group-data-[orientation=vertical]/attachment:w-full group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-md group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
icon: "",
|
|
13
|
+
image:
|
|
14
|
+
"opacity-60 group-data-[state=done]/attachment:opacity-100 group-data-[state=idle]/attachment:opacity-100 *:[img]:aspect-square *:[img]:w-full *:[img]:object-cover",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: {
|
|
18
|
+
variant: "icon",
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
type Props = HTMLAttributes<"div"> &
|
|
24
|
+
VariantProps<typeof attachmentMediaVariants>
|
|
25
|
+
|
|
26
|
+
const { class: className, variant = "icon", ...props } = Astro.props
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
<div
|
|
30
|
+
data-slot="attachment-media"
|
|
31
|
+
data-variant={variant}
|
|
32
|
+
class={cn(attachmentMediaVariants({ variant }), className)}
|
|
33
|
+
{...props}
|
|
34
|
+
>
|
|
35
|
+
<slot />
|
|
36
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props = HTMLAttributes<"span">
|
|
7
|
+
|
|
8
|
+
const { class: className, ...props } = Astro.props
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<span
|
|
12
|
+
data-slot="attachment-title"
|
|
13
|
+
class={cn(
|
|
14
|
+
"block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:animate-pulse group-data-[state=uploading]/attachment:animate-pulse",
|
|
15
|
+
className
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</span>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLTag, Polymorphic } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props<Tag extends HTMLTag = "button"> = Polymorphic<{ as: Tag }>
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
as: Tag = "href" in Astro.props ? "a" : "button",
|
|
10
|
+
class: className,
|
|
11
|
+
...props
|
|
12
|
+
} = Astro.props
|
|
13
|
+
|
|
14
|
+
const attributes: Record<string, unknown> = { ...props }
|
|
15
|
+
if (Tag === "button") attributes.type ??= "button"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
<Tag
|
|
19
|
+
data-slot="attachment-trigger"
|
|
20
|
+
class={cn("absolute inset-0 z-10 outline-none", className)}
|
|
21
|
+
{...attributes}
|
|
22
|
+
>
|
|
23
|
+
<slot />
|
|
24
|
+
</Tag>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
4
|
+
|
|
5
|
+
import { cn } from "@/lib/utils"
|
|
6
|
+
|
|
7
|
+
const attachmentVariants = cva(
|
|
8
|
+
"group/attachment bg-card text-card-foreground focus-within:ring-ring/50 has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive/30 relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-xl border transition-colors focus-within:ring-1 data-[state=idle]:border-dashed",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
size: {
|
|
12
|
+
default:
|
|
13
|
+
"gap-2 text-sm has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2",
|
|
14
|
+
sm: "gap-2.5 text-xs has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5",
|
|
15
|
+
xs: "gap-1.5 rounded-lg text-xs has-data-[slot=attachment-content]:px-1.5 has-data-[slot=attachment-content]:py-1 has-data-[slot=attachment-media]:p-1",
|
|
16
|
+
},
|
|
17
|
+
orientation: {
|
|
18
|
+
horizontal: "min-w-40 items-center",
|
|
19
|
+
vertical: "w-24 flex-col has-data-[slot=attachment-content]:w-30",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
defaultVariants: {
|
|
23
|
+
size: "default",
|
|
24
|
+
orientation: "horizontal",
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
type Props = HTMLAttributes<"div"> &
|
|
30
|
+
VariantProps<typeof attachmentVariants> & {
|
|
31
|
+
state?: "idle" | "uploading" | "processing" | "error" | "done"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const {
|
|
35
|
+
class: className,
|
|
36
|
+
state = "done",
|
|
37
|
+
size = "default",
|
|
38
|
+
orientation = "horizontal",
|
|
39
|
+
...props
|
|
40
|
+
} = Astro.props
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
<div
|
|
44
|
+
data-slot="attachment"
|
|
45
|
+
data-state={state}
|
|
46
|
+
data-size={size}
|
|
47
|
+
data-orientation={orientation}
|
|
48
|
+
class={cn(attachmentVariants({ size, orientation }), className)}
|
|
49
|
+
{...props}
|
|
50
|
+
>
|
|
51
|
+
<slot />
|
|
52
|
+
</div>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as Attachment } from "./attachment.astro"
|
|
2
|
+
export { default as AttachmentAction } from "./attachment-action.astro"
|
|
3
|
+
export { default as AttachmentActions } from "./attachment-actions.astro"
|
|
4
|
+
export { default as AttachmentContent } from "./attachment-content.astro"
|
|
5
|
+
export { default as AttachmentDescription } from "./attachment-description.astro"
|
|
6
|
+
export { default as AttachmentGroup } from "./attachment-group.astro"
|
|
7
|
+
export { default as AttachmentMedia } from "./attachment-media.astro"
|
|
8
|
+
export { default as AttachmentTitle } from "./attachment-title.astro"
|
|
9
|
+
export { default as AttachmentTrigger } from "./attachment-trigger.astro"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
import { Separator } from "@/components/ui/separator"
|
|
6
|
+
|
|
7
|
+
type Props = HTMLAttributes<"div"> & {
|
|
8
|
+
orientation?: "horizontal" | "vertical"
|
|
9
|
+
decorative?: boolean
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const {
|
|
13
|
+
class: className,
|
|
14
|
+
orientation = "vertical",
|
|
15
|
+
decorative = true,
|
|
16
|
+
...props
|
|
17
|
+
} = Astro.props
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
<Separator
|
|
21
|
+
data-slot="button-group-separator"
|
|
22
|
+
orientation={orientation}
|
|
23
|
+
decorative={decorative}
|
|
24
|
+
class={cn(
|
|
25
|
+
"bg-input relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",
|
|
26
|
+
className
|
|
27
|
+
)}
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLTag, Polymorphic } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
type Props<Tag extends HTMLTag = "div"> = Polymorphic<{ as: Tag }>
|
|
7
|
+
|
|
8
|
+
const { as: Tag = "div", class: className, ...props } = Astro.props
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<Tag
|
|
12
|
+
data-slot="button-group-text"
|
|
13
|
+
class={cn(
|
|
14
|
+
"bg-muted flex items-center gap-2 rounded-md border px-2.5 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
15
|
+
className
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</Tag>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
2
|
+
|
|
3
|
+
export const buttonGroupVariants = cva(
|
|
4
|
+
"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
|
|
5
|
+
{
|
|
6
|
+
variants: {
|
|
7
|
+
orientation: {
|
|
8
|
+
horizontal:
|
|
9
|
+
"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0",
|
|
10
|
+
vertical:
|
|
11
|
+
"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
orientation: "horizontal",
|
|
16
|
+
},
|
|
17
|
+
}
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
export type ButtonGroupVariantProps = VariantProps<typeof buttonGroupVariants>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLTag, Polymorphic } from "astro/types"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/lib/utils"
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
buttonGroupVariants,
|
|
8
|
+
type ButtonGroupVariantProps,
|
|
9
|
+
} from "./button-group-variants"
|
|
10
|
+
|
|
11
|
+
type Props<Tag extends HTMLTag = "div"> = Polymorphic<{ as: Tag }> &
|
|
12
|
+
ButtonGroupVariantProps
|
|
13
|
+
|
|
14
|
+
const {
|
|
15
|
+
as: Tag = "div",
|
|
16
|
+
class: className,
|
|
17
|
+
orientation = "horizontal",
|
|
18
|
+
...props
|
|
19
|
+
} = Astro.props
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
<Tag
|
|
23
|
+
role="group"
|
|
24
|
+
data-slot="button-group"
|
|
25
|
+
data-orientation={orientation}
|
|
26
|
+
class={cn(buttonGroupVariants({ orientation }), className)}
|
|
27
|
+
{...props}
|
|
28
|
+
>
|
|
29
|
+
<slot />
|
|
30
|
+
</Tag>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as ButtonGroup } from "./button-group.astro"
|
|
2
|
+
export { default as ButtonGroupSeparator } from "./button-group-separator.astro"
|
|
3
|
+
export { default as ButtonGroupText } from "./button-group-text.astro"
|
|
4
|
+
export {
|
|
5
|
+
buttonGroupVariants,
|
|
6
|
+
type ButtonGroupVariantProps,
|
|
7
|
+
} from "./button-group-variants"
|
|
@@ -8,17 +8,15 @@ type Props = HTMLAttributes<"div">
|
|
|
8
8
|
const { class: className, ...props } = Astro.props
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
<div
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
<slot />
|
|
23
|
-
</div>
|
|
11
|
+
<div
|
|
12
|
+
data-slot="carousel-content"
|
|
13
|
+
class={cn(
|
|
14
|
+
"no-scrollbar flex snap-x snap-mandatory overflow-x-auto overscroll-x-contain",
|
|
15
|
+
"group-data-[dragging=true]/carousel:cursor-grabbing",
|
|
16
|
+
"group-data-[orientation=vertical]/carousel:snap-y group-data-[orientation=vertical]/carousel:flex-col group-data-[orientation=vertical]/carousel:overflow-x-hidden group-data-[orientation=vertical]/carousel:overflow-y-auto group-data-[orientation=vertical]/carousel:overscroll-y-contain",
|
|
17
|
+
className
|
|
18
|
+
)}
|
|
19
|
+
{...props}
|
|
20
|
+
>
|
|
21
|
+
<slot />
|
|
24
22
|
</div>
|
|
@@ -10,12 +10,9 @@ const { class: className, ...props } = Astro.props
|
|
|
10
10
|
|
|
11
11
|
<div
|
|
12
12
|
data-slot="carousel-item"
|
|
13
|
-
role="group"
|
|
14
|
-
aria-roledescription="slide"
|
|
15
13
|
class={cn(
|
|
16
|
-
"min-w-0 shrink-0 grow-0 basis-full",
|
|
17
|
-
"group-data-[orientation=
|
|
18
|
-
"group-data-[orientation=vertical]/carousel:pt-4",
|
|
14
|
+
"min-w-0 shrink-0 grow-0 basis-full snap-start",
|
|
15
|
+
"group-data-[orientation=vertical]/carousel:min-h-0",
|
|
19
16
|
className
|
|
20
17
|
)}
|
|
21
18
|
{...props}
|
|
@@ -11,7 +11,6 @@ const {
|
|
|
11
11
|
class: className,
|
|
12
12
|
variant = "outline",
|
|
13
13
|
size = "icon-sm",
|
|
14
|
-
disabled,
|
|
15
14
|
...props
|
|
16
15
|
} = Astro.props
|
|
17
16
|
---
|
|
@@ -19,8 +18,6 @@ const {
|
|
|
19
18
|
<button
|
|
20
19
|
type="button"
|
|
21
20
|
data-slot="carousel-next"
|
|
22
|
-
data-manual-disabled={disabled ? "true" : undefined}
|
|
23
|
-
disabled={disabled}
|
|
24
21
|
class={cn(
|
|
25
22
|
buttonVariants({ variant, size }),
|
|
26
23
|
"absolute touch-manipulation rounded-full group-data-[orientation=horizontal]/carousel:inset-y-0 group-data-[orientation=horizontal]/carousel:-right-12 group-data-[orientation=horizontal]/carousel:my-auto",
|
|
@@ -11,7 +11,6 @@ const {
|
|
|
11
11
|
class: className,
|
|
12
12
|
variant = "outline",
|
|
13
13
|
size = "icon-sm",
|
|
14
|
-
disabled,
|
|
15
14
|
...props
|
|
16
15
|
} = Astro.props
|
|
17
16
|
---
|
|
@@ -19,8 +18,6 @@ const {
|
|
|
19
18
|
<button
|
|
20
19
|
type="button"
|
|
21
20
|
data-slot="carousel-previous"
|
|
22
|
-
data-manual-disabled={disabled ? "true" : undefined}
|
|
23
|
-
disabled={disabled}
|
|
24
21
|
class={cn(
|
|
25
22
|
buttonVariants({ variant, size }),
|
|
26
23
|
"absolute touch-manipulation rounded-full group-data-[orientation=horizontal]/carousel:inset-y-0 group-data-[orientation=horizontal]/carousel:-left-12 group-data-[orientation=horizontal]/carousel:my-auto",
|