fulldev-ui 0.9.2 → 0.10.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/README.md +100 -16
- package/package.json +3 -2
- package/public/r/accordion.json +3 -5
- package/public/r/alert-dialog.json +1 -1
- package/public/r/alert.json +0 -5
- package/public/r/article-1.json +1 -1
- package/public/r/article-2.json +1 -1
- package/public/r/articles-1.json +1 -1
- package/public/r/articles-2.json +1 -1
- package/public/r/articles-3.json +1 -1
- package/public/r/avatar.json +1 -16
- package/public/r/badge.json +1 -1
- package/public/r/banner-1.json +5 -3
- package/public/r/banner-2.json +1 -1
- package/public/r/banner.json +5 -3
- package/public/r/blocks-1.json +6 -3
- package/public/r/breadcrumb.json +4 -4
- package/public/r/button.json +1 -1
- package/public/r/card.json +4 -4
- package/public/r/carousel.json +5 -5
- package/public/r/checkbox.json +1 -1
- package/public/r/combobox.json +8 -8
- package/public/r/command.json +6 -6
- package/public/r/components.json +1 -6
- package/public/r/contact-1.json +4 -2
- package/public/r/contact-2.json +4 -2
- package/public/r/contact-3.json +11 -3
- package/public/r/content-1.json +11 -3
- package/public/r/content-2.json +11 -3
- package/public/r/content-3.json +7 -1
- package/public/r/content-4.json +11 -3
- package/public/r/cta-2.json +7 -1
- package/public/r/cta-4.json +7 -1
- package/public/r/cta-5.json +11 -3
- package/public/r/cta-6.json +7 -1
- package/public/r/dialog.json +6 -6
- package/public/r/doc-1.json +6 -3
- package/public/r/dropdown-menu.json +9 -11
- package/public/r/features-1.json +5 -3
- package/public/r/features-2.json +5 -3
- package/public/r/features-4.json +5 -3
- package/public/r/features-5.json +4 -2
- package/public/r/field.json +2 -7
- package/public/r/footer-1.json +5 -3
- package/public/r/footer-2.json +5 -3
- package/public/r/footer-3.json +5 -3
- package/public/r/header-1.json +1 -1
- package/public/r/header.json +3 -0
- package/public/r/hero-13.json +1 -1
- package/public/r/hero-4.json +5 -3
- package/public/r/hero-5.json +5 -3
- package/public/r/hero-6.json +5 -3
- package/public/r/hero-7.json +5 -3
- package/public/r/hero-8.json +1 -1
- package/public/r/hero-9.json +5 -3
- package/public/r/hover-card.json +2 -2
- package/public/r/icon.json +1 -1
- package/public/r/input-group.json +1 -1
- package/public/r/item.json +2 -20
- package/public/r/kbd.json +2 -2
- package/public/r/layout.json +4 -7
- package/public/r/links-2.json +5 -3
- package/public/r/marquee.json +1 -1
- package/public/r/native-select.json +3 -3
- package/public/r/navigation-menu.json +6 -8
- package/public/r/page.json +17 -0
- package/public/r/popover.json +1 -1
- package/public/r/pricing-1.json +5 -3
- package/public/r/pricing-2.json +5 -3
- package/public/r/pricing-3.json +5 -3
- package/public/r/products-1.json +1 -1
- package/public/r/products-4.json +1 -1
- package/public/r/products-5.json +1 -1
- package/public/r/radio-group.json +1 -1
- package/public/r/rating.json +3 -3
- package/public/r/registry.json +186 -440
- package/public/r/reviews-1.json +5 -3
- package/public/r/reviews-2.json +5 -3
- package/public/r/reviews-3.json +5 -3
- package/public/r/reviews-4.json +1 -1
- package/public/r/reviews-5.json +5 -3
- package/public/r/select.json +6 -8
- package/public/r/services-1.json +11 -3
- package/public/r/services-2.json +7 -1
- package/public/r/services-3.json +7 -1
- package/public/r/services-4.json +11 -3
- package/public/r/services-5.json +5 -3
- package/public/r/services-6.json +11 -3
- package/public/r/services-7.json +11 -3
- package/public/r/sheet.json +6 -3
- package/public/r/sidebar-1.json +4 -2
- package/public/r/sidebar.json +10 -7
- package/public/r/slider.json +1 -1
- package/public/r/spinner.json +3 -3
- package/public/r/switch.json +1 -1
- package/public/r/theme-toggle.json +5 -3
- package/public/r/tooltip.json +1 -1
- package/public/r/typography.json +16 -16
- package/public/r/video.json +1 -1
- package/registry.json +186 -440
- package/src/components/blocks/article-1.astro +1 -1
- package/src/components/blocks/article-2.astro +1 -1
- package/src/components/blocks/articles-1.astro +1 -1
- package/src/components/blocks/articles-2.astro +2 -2
- package/src/components/blocks/articles-3.astro +1 -1
- package/src/components/blocks/banner-1.astro +3 -5
- package/src/components/blocks/banner-2.astro +1 -1
- package/src/components/blocks/blocks-1.astro +25 -37
- package/src/components/blocks/contact-3.astro +4 -3
- package/src/components/blocks/content-1.astro +5 -4
- package/src/components/blocks/content-2.astro +6 -5
- package/src/components/blocks/content-3.astro +9 -2
- package/src/components/blocks/content-4.astro +6 -5
- package/src/components/blocks/cta-2.astro +4 -3
- package/src/components/blocks/cta-4.astro +3 -2
- package/src/components/blocks/cta-5.astro +6 -5
- package/src/components/blocks/cta-6.astro +4 -3
- package/src/components/blocks/doc-1.astro +28 -56
- package/src/components/blocks/features-1.astro +3 -1
- package/src/components/blocks/features-2.astro +4 -2
- package/src/components/blocks/features-4.astro +3 -1
- package/src/components/blocks/footer-1.astro +26 -12
- package/src/components/blocks/footer-2.astro +24 -12
- package/src/components/blocks/footer-3.astro +26 -12
- package/src/components/blocks/header-1.astro +2 -3
- package/src/components/blocks/hero-13.astro +1 -1
- package/src/components/blocks/hero-4.astro +2 -2
- package/src/components/blocks/hero-5.astro +3 -3
- package/src/components/blocks/hero-6.astro +3 -3
- package/src/components/blocks/hero-7.astro +3 -3
- package/src/components/blocks/hero-8.astro +1 -1
- package/src/components/blocks/hero-9.astro +2 -2
- package/src/components/blocks/links-2.astro +3 -5
- package/src/components/blocks/pricing-1.astro +3 -2
- package/src/components/blocks/pricing-2.astro +3 -2
- package/src/components/blocks/pricing-3.astro +3 -2
- package/src/components/blocks/products-1.astro +1 -1
- package/src/components/blocks/products-4.astro +2 -2
- package/src/components/blocks/products-5.astro +4 -4
- package/src/components/blocks/reviews-1.astro +2 -2
- package/src/components/blocks/reviews-2.astro +2 -2
- package/src/components/blocks/reviews-3.astro +2 -2
- package/src/components/blocks/reviews-4.astro +4 -4
- package/src/components/blocks/reviews-5.astro +16 -25
- package/src/components/blocks/services-1.astro +7 -9
- package/src/components/blocks/services-2.astro +5 -4
- package/src/components/blocks/services-3.astro +6 -5
- package/src/components/blocks/services-4.astro +7 -9
- package/src/components/blocks/services-5.astro +3 -4
- package/src/components/blocks/services-6.astro +7 -6
- package/src/components/blocks/services-7.astro +7 -9
- package/src/components/blocks/sidebar-1.astro +42 -97
- package/src/components/ui/accordion/accordion-trigger.astro +7 -8
- package/src/components/ui/alert-dialog/alert-dialog.astro +23 -3
- package/src/components/ui/avatar/avatar.astro +1 -1
- package/src/components/ui/badge/badge.astro +1 -0
- package/src/components/ui/banner/banner-container.astro +3 -3
- package/src/components/ui/breadcrumb/breadcrumb-ellipsis.astro +2 -2
- package/src/components/ui/breadcrumb/breadcrumb-separator.astro +2 -2
- package/src/components/ui/button/button-variants.ts +8 -7
- package/src/components/ui/card/card-content.astro +1 -1
- package/src/components/ui/card/card-footer.astro +1 -1
- package/src/components/ui/card/card-header.astro +1 -1
- package/src/components/ui/card/card.astro +1 -1
- package/src/components/ui/carousel/carousel-next.astro +3 -3
- package/src/components/ui/carousel/carousel-previous.astro +3 -3
- package/src/components/ui/checkbox/checkbox.astro +1 -1
- package/src/components/ui/combobox/combobox-input.astro +2 -2
- package/src/components/ui/combobox/combobox-item.astro +4 -4
- package/src/components/ui/combobox/combobox-list.astro +1 -1
- package/src/components/ui/combobox/combobox-trigger.astro +2 -5
- package/src/components/ui/combobox/combobox.astro +3 -0
- package/src/components/ui/command/command-dialog.astro +10 -10
- package/src/components/ui/command/command-input.astro +2 -2
- package/src/components/ui/command/command-item.astro +4 -5
- package/src/components/ui/dialog/dialog-close.astro +2 -2
- package/src/components/ui/dialog/dialog-content.astro +2 -2
- package/src/components/ui/dialog/dialog.astro +26 -3
- package/src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.astro +4 -5
- package/src/components/ui/dropdown-menu/dropdown-menu-content.astro +4 -4
- package/src/components/ui/dropdown-menu/dropdown-menu-item.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu-label.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu-radio-item.astro +4 -5
- package/src/components/ui/dropdown-menu/dropdown-menu-shortcut.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu.astro +3 -0
- package/src/components/ui/field/field-label.astro +1 -1
- package/src/components/ui/field/field-title.astro +1 -1
- package/src/components/ui/hover-card/hover-card-content.astro +4 -4
- package/src/components/ui/hover-card/hover-card.astro +2 -2
- package/src/components/ui/icon/icon.astro +7 -10
- package/src/components/ui/input-group/input-group-button.astro +0 -1
- package/src/components/ui/item/item-media.astro +1 -1
- package/src/components/ui/item/item.astro +0 -18
- package/src/components/ui/kbd/kbd-group.astro +1 -1
- package/src/components/ui/kbd/kbd.astro +1 -1
- package/src/components/ui/layout/layout-body.astro +1 -1
- package/src/components/ui/layout/layout-head.astro +3 -2
- package/src/components/ui/layout/layout-main.astro +1 -1
- package/src/components/ui/layout/layout.astro +4 -0
- package/src/components/ui/marquee/marquee.astro +49 -68
- package/src/components/ui/native-select/native-select.astro +2 -3
- package/src/components/ui/navigation-menu/navigation-menu-content.astro +1 -1
- package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
- package/src/components/ui/navigation-menu/navigation-menu-trigger.astro +2 -3
- package/src/components/ui/navigation-menu/navigation-menu.astro +1 -1
- package/src/components/ui/popover/popover-content.astro +1 -1
- package/src/components/ui/radio-group/radio-group-item.astro +3 -3
- package/src/components/ui/rating/rating.astro +3 -3
- package/src/components/ui/select/select-content.astro +1 -1
- package/src/components/ui/select/select-item.astro +4 -4
- package/src/components/ui/select/select-trigger.astro +3 -6
- package/src/components/ui/select/select.astro +6 -0
- package/src/components/ui/sheet/sheet-content.astro +4 -5
- package/src/components/ui/sidebar/sidebar-menu-button.astro +13 -10
- package/src/components/ui/sidebar/sidebar-menu-sub-button.astro +10 -8
- package/src/components/ui/sidebar/sidebar-provider.astro +1 -13
- package/src/components/ui/sidebar/sidebar-rail.astro +1 -1
- package/src/components/ui/sidebar/sidebar-trigger.astro +3 -3
- package/src/components/ui/sidebar/sidebar.astro +1 -1
- package/src/components/ui/slider/slider.astro +6 -4
- package/src/components/ui/spinner/spinner.astro +4 -4
- package/src/components/ui/switch/switch.astro +1 -1
- package/src/components/ui/theme-toggle/theme-toggle.astro +4 -3
- package/src/components/ui/tooltip/tooltip-content.astro +1 -1
- package/src/components/ui/typography/typography-a.astro +19 -4
- package/src/components/ui/typography/typography-blockquote.astro +26 -6
- package/src/components/ui/typography/typography-h1.astro +7 -9
- package/src/components/ui/typography/typography-h2.astro +12 -9
- package/src/components/ui/typography/typography-h3.astro +7 -9
- package/src/components/ui/typography/typography-h4.astro +7 -9
- package/src/components/ui/typography/typography-inline-code.astro +28 -12
- package/src/components/ui/typography/typography-lead.astro +29 -4
- package/src/components/ui/typography/typography-list-item.astro +25 -9
- package/src/components/ui/typography/typography-list.astro +29 -11
- package/src/components/ui/typography/typography-p.astro +26 -6
- package/src/components/ui/typography/typography-table-cell.astro +32 -13
- package/src/components/ui/typography/typography-table-head.astro +27 -13
- package/src/components/ui/typography/typography-table-row.astro +23 -13
- package/src/components/ui/typography/typography-table.astro +29 -20
- package/src/components/ui/typography/typography.astro +172 -46
- package/src/components/ui/video/video.astro +11 -27
- package/src/styles/global.css +2 -15
- package/public/r/beta-repo-setup.json +0 -131
- package/public/r/blocks.json +0 -91
- package/public/r/content-5.json +0 -17
- package/public/r/content-6.json +0 -17
- package/public/r/init.json +0 -23
- package/public/r/tile.json +0 -27
- package/src/components/blocks/content-5.astro +0 -115
- package/src/components/blocks/content-6.astro +0 -91
- package/src/components/ui/tile/index.ts +0 -3
- package/src/components/ui/tile/tile-content.astro +0 -17
- package/src/components/ui/tile/tile-group.astro +0 -76
- package/src/components/ui/tile/tile.astro +0 -46
package/public/r/hero-4.json
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "hero-4",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/button",
|
|
6
|
-
"@fulldev/section"
|
|
7
|
-
"@fulldev/icon"
|
|
9
|
+
"@fulldev/section"
|
|
8
10
|
],
|
|
9
11
|
"files": [
|
|
10
12
|
{
|
|
11
13
|
"path": "src/components/blocks/hero-4.astro",
|
|
12
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\
|
|
14
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n image,\n} = Astro.props\n---\n\n<Section\n class={cn(\"dark bg-background min-h-screen justify-center\", className)}\n>\n <SectionContainer class=\"relative z-10 items-center gap-8 text-center\">\n <h1\n class=\"text-foreground max-w-4xl text-4xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-5xl lg:text-6xl\"\n >\n {title}\n </h1>\n <p\n class=\"text-foreground/80 max-w-2xl text-lg leading-relaxed text-balance\"\n >\n {description}\n </p>\n <ul class=\"flex flex-wrap justify-center gap-x-6 gap-y-2\">\n {\n features.map((feature) => (\n <li class=\"flex items-center gap-2 text-sm\">\n <CheckIcon class=\"text-primary size-4 shrink-0\" />\n {feature}\n </li>\n ))\n }\n </ul>\n <div class=\"flex flex-wrap justify-center gap-3\">\n {\n buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={button.variant ?? (index === 0 ? \"default\" : \"secondary\")}\n {...button}\n >\n {label}\n </Button>\n ))\n }\n </div>\n </SectionContainer>\n <div class=\"bg-background pointer-events-none absolute inset-0\">\n <Image\n src={image.src}\n alt={image.alt}\n class=\"size-full object-cover opacity-50\"\n widths={[640, 960, 1280, 1920]}\n sizes=\"100vw\"\n loading=\"eager\"\n />\n </div>\n</Section>\n",
|
|
13
15
|
"type": "registry:block"
|
|
14
16
|
}
|
|
15
17
|
],
|
package/public/r/hero-5.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "hero-5",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/avatar",
|
|
6
9
|
"@fulldev/button",
|
|
7
10
|
"@fulldev/rating",
|
|
8
|
-
"@fulldev/section"
|
|
9
|
-
"@fulldev/icon"
|
|
11
|
+
"@fulldev/section"
|
|
10
12
|
],
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/hero-5.astro",
|
|
14
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport {
|
|
16
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n socialProof,\n image,\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"grid gap-12 lg:grid-cols-2 lg:items-center\">\n <div class=\"flex flex-col gap-6\">\n <div class=\"flex flex-col gap-4\">\n <h1\n class=\"text-foreground text-4xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-muted-foreground text-lg leading-relaxed\">\n {description}\n </p>\n </div>\n <ul class=\"flex flex-col gap-3\">\n {\n features.map((feature) => (\n <li class=\"flex items-center gap-3 text-sm\">\n <CheckIcon class=\"text-primary size-4 shrink-0\" />\n {feature}\n </li>\n ))\n }\n </ul>\n <div class=\"flex flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))\n }\n </div>\n <div class=\"flex items-center gap-3\">\n <AvatarGroup>\n {\n socialProof.avatars.map((avatar) => (\n <Avatar class=\"ring-background size-11 ring\">\n <AvatarImage\n src={avatar.image}\n alt={avatar.name ?? avatar.initials}\n />\n <AvatarFallback>{avatar.initials}</AvatarFallback>\n </Avatar>\n ))\n }\n </AvatarGroup>\n <div class=\"flex flex-col gap-0.5\">\n <Rating value={socialProof.rating} />\n <span class=\"text-muted-foreground text-xs\">{socialProof.text}</span>\n </div>\n </div>\n </div>\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-[4/3] w-full rounded-xl border object-cover\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 1024px) 50vw, 100vw\"\n loading=\"eager\"\n />\n </SectionContainer>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
package/public/r/hero-6.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "hero-6",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/avatar",
|
|
6
9
|
"@fulldev/button",
|
|
7
10
|
"@fulldev/rating",
|
|
8
|
-
"@fulldev/section"
|
|
9
|
-
"@fulldev/icon"
|
|
11
|
+
"@fulldev/section"
|
|
10
12
|
],
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/hero-6.astro",
|
|
14
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport {
|
|
16
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n socialProof,\n image,\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"grid gap-12 lg:grid-cols-2 lg:items-center\">\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-[4/3] w-full rounded-xl border object-cover\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 1024px) 50vw, 100vw\"\n loading=\"eager\"\n />\n <div class=\"flex flex-col gap-6\">\n <div class=\"flex flex-col gap-4\">\n <h1\n class=\"text-foreground text-4xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-muted-foreground text-lg leading-relaxed\">\n {description}\n </p>\n </div>\n <ul class=\"flex flex-col gap-3\">\n {\n features.map((feature) => (\n <li class=\"flex items-center gap-3 text-sm\">\n <CheckIcon class=\"text-primary size-4 shrink-0\" />\n {feature}\n </li>\n ))\n }\n </ul>\n <div class=\"flex flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))\n }\n </div>\n <div class=\"flex items-center gap-3\">\n <AvatarGroup>\n {\n socialProof.avatars.map((avatar) => (\n <Avatar class=\"ring-background size-11 ring\">\n <AvatarImage\n src={avatar.image}\n alt={avatar.name ?? avatar.initials}\n />\n <AvatarFallback>{avatar.initials}</AvatarFallback>\n </Avatar>\n ))\n }\n </AvatarGroup>\n <div class=\"flex flex-col gap-0.5\">\n <Rating value={socialProof.rating} />\n <span class=\"text-muted-foreground text-xs\">{socialProof.text}</span>\n </div>\n </div>\n </div>\n </SectionContainer>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
package/public/r/hero-7.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "hero-7",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/avatar",
|
|
6
9
|
"@fulldev/button",
|
|
7
10
|
"@fulldev/rating",
|
|
8
|
-
"@fulldev/section"
|
|
9
|
-
"@fulldev/icon"
|
|
11
|
+
"@fulldev/section"
|
|
10
12
|
],
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/hero-7.astro",
|
|
14
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport {
|
|
16
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n socialProof,\n image,\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer\n class=\"grid gap-12 lg:grid-cols-[2fr_3fr] lg:items-center lg:gap-0\"\n >\n <div class=\"flex flex-col gap-6 lg:pr-12\">\n <div class=\"flex flex-col gap-4\">\n <h1\n class=\"text-foreground text-4xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-muted-foreground text-lg leading-relaxed\">\n {description}\n </p>\n </div>\n <ul class=\"flex flex-col gap-3\">\n {\n features.map((feature) => (\n <li class=\"flex items-center gap-3 text-sm\">\n <CheckIcon class=\"text-primary size-4 shrink-0\" />\n {feature}\n </li>\n ))\n }\n </ul>\n <div class=\"flex flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))\n }\n </div>\n <div class=\"flex items-center gap-3\">\n <AvatarGroup>\n {\n socialProof.avatars.map((avatar) => (\n <Avatar class=\"ring-background size-11 ring\">\n <AvatarImage\n src={avatar.image}\n alt={avatar.name ?? avatar.initials}\n />\n <AvatarFallback>{avatar.initials}</AvatarFallback>\n </Avatar>\n ))\n }\n </AvatarGroup>\n <div class=\"flex flex-col gap-0.5\">\n <Rating value={socialProof.rating} />\n <span class=\"text-muted-foreground text-xs\">{socialProof.text}</span>\n </div>\n </div>\n </div>\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-[4/3] w-full rounded-xl border object-cover\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 1024px) 60vw, 100vw\"\n loading=\"eager\"\n />\n </SectionContainer>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
package/public/r/hero-8.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": "src/components/blocks/hero-8.astro",
|
|
11
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst { class: className, title, description, buttons, image } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer\n class=\"grid gap-12 lg:grid-cols-[1fr_3fr] lg:items-center lg:gap-0\"\n >\n <div class=\"flex flex-col gap-6 lg:pr-12\">\n <div class=\"flex flex-col gap-4\">\n <h1\n class=\"text-foreground text-4xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-muted-foreground text-lg leading-relaxed\">\n {description}\n </p>\n </div>\n <div class=\"flex flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))\n }\n </div>\n </div>\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-4/3 w-full rounded-xl border object-cover\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 1024px) 75vw, 100vw\"\n loading=\"eager\"\n />\n </SectionContainer>\n</Section>\n",
|
|
11
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst { class: className, title, description, buttons, image } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer\n class=\"grid gap-12 lg:grid-cols-[1fr_3fr] lg:items-center lg:gap-0\"\n >\n <div class=\"flex flex-col gap-6 lg:pr-12\">\n <div class=\"flex flex-col gap-4\">\n <h1\n class=\"text-foreground text-4xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-muted-foreground text-lg leading-relaxed\">\n {description}\n </p>\n </div>\n <div class=\"flex flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))\n }\n </div>\n </div>\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-[4/3] w-full rounded-xl border object-cover\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 1024px) 75vw, 100vw\"\n loading=\"eager\"\n />\n </SectionContainer>\n</Section>\n",
|
|
12
12
|
"type": "registry:block"
|
|
13
13
|
}
|
|
14
14
|
],
|
package/public/r/hero-9.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "hero-9",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/avatar",
|
|
6
9
|
"@fulldev/button",
|
|
7
10
|
"@fulldev/rating",
|
|
8
|
-
"@fulldev/section"
|
|
9
|
-
"@fulldev/icon"
|
|
11
|
+
"@fulldev/section"
|
|
10
12
|
],
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/hero-9.astro",
|
|
14
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport {
|
|
16
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n socialProof,\n image,\n} = Astro.props\n---\n\n<Section class={cn(\"dark bg-background\", className)}>\n <SectionContainer class=\"grid gap-12 lg:grid-cols-2 lg:items-center\">\n <div class=\"relative z-10 flex flex-col gap-6\">\n <div class=\"flex flex-col gap-4\">\n <h1\n class=\"text-foreground text-4xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-foreground/80 text-lg leading-relaxed\">\n {description}\n </p>\n </div>\n <ul class=\"flex flex-col gap-3\">\n {\n features.map((feature) => (\n <li class=\"flex items-center gap-3 text-sm\">\n <CheckIcon class=\"text-primary size-4 shrink-0\" />\n {feature}\n </li>\n ))\n }\n </ul>\n <div class=\"flex flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))\n }\n </div>\n <div class=\"flex items-center gap-3\">\n <AvatarGroup>\n {\n socialProof.avatars.map((avatar) => (\n <Avatar class=\"ring-background size-11 ring\">\n <AvatarImage\n src={avatar.image}\n alt={avatar.name ?? avatar.initials}\n />\n <AvatarFallback>{avatar.initials}</AvatarFallback>\n </Avatar>\n ))\n }\n </AvatarGroup>\n <div class=\"flex flex-col gap-0.5\">\n <Rating value={socialProof.rating} />\n <span class=\"text-muted-foreground text-xs\">{socialProof.text}</span>\n </div>\n </div>\n </div>\n </SectionContainer>\n <div\n class=\"bg-background pointer-events-none absolute inset-0 lg:mask-l-from-30%\"\n >\n <Image\n src={image.src}\n alt={image.alt}\n class=\"size-full object-cover opacity-50\"\n widths={[640, 960, 1280, 1920]}\n sizes=\"100vw\"\n loading=\"eager\"\n />\n </div>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
package/public/r/hover-card.json
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": "src/components/ui/hover-card/hover-card.astro",
|
|
10
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n delay?: number\n skipDelayDuration?: number\n closeDelay?: number\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n portal?: boolean\n closeOnClickOutside?: boolean\n closeOnEscape?: boolean\n}\n\nconst {\n class: className,\n defaultOpen,\n open,\n delay =
|
|
10
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n delay?: number\n skipDelayDuration?: number\n closeDelay?: number\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n portal?: boolean\n closeOnClickOutside?: boolean\n closeOnEscape?: boolean\n}\n\nconst {\n class: className,\n defaultOpen,\n open,\n delay = 700,\n skipDelayDuration = 300,\n closeDelay = 300,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 8,\n portal = true,\n closeOnClickOutside = true,\n closeOnEscape = true,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"hover-card\"\n data-default-open={defaultOpen}\n data-open={open}\n data-delay={delay}\n data-skip-delay-duration={skipDelayDuration}\n data-close-delay={closeDelay}\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-avoid-collisions={avoidCollisions}\n data-collision-padding={collisionPadding}\n data-portal={portal}\n data-close-on-click-outside={closeOnClickOutside}\n data-close-on-escape={closeOnEscape}\n class={cn(className)}\n {...props}\n>\n <slot />\n</div>\n\n<script>\n import { create } from \"@data-slot/hover-card\"\n\n create()\n</script>\n",
|
|
11
11
|
"type": "registry:ui"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "src/components/ui/hover-card/hover-card-content.astro",
|
|
15
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n}\n\nconst {\n class: className,\n hidden = true,\n side
|
|
15
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n}\n\nconst {\n class: className,\n hidden = true,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n ...props\n} = Astro.props\n---\n\n<div data-slot=\"hover-card-portal\">\n <div\n data-slot=\"hover-card-positioner\"\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-avoid-collisions={avoidCollisions}\n data-collision-padding={collisionPadding}\n class=\"isolate z-50\"\n >\n <div\n data-slot=\"hover-card-content\"\n hidden={hidden}\n class={cn(\n \"bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 z-50 w-64 origin-(--transform-origin) rounded-lg p-4 text-sm shadow-md ring-1 outline-hidden duration-100\",\n className\n )}\n {...props}\n >\n <slot />\n </div>\n </div>\n</div>\n",
|
|
16
16
|
"type": "registry:ui"
|
|
17
17
|
},
|
|
18
18
|
{
|
package/public/r/icon.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": "src/components/ui/icon/icon.astro",
|
|
11
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = Omit<HTMLAttributes<\"svg\">, \"name\" | \"href\"> & {\n href?: HTMLAttributes<\"a\">[\"href\"]\n name?: string | number
|
|
11
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = Omit<HTMLAttributes<\"svg\">, \"name\" | \"href\"> & {\n href?: HTMLAttributes<\"a\">[\"href\"]\n name?: string | number\n}\n\nconst { name, href, ...props } = Astro.props\n\nconst hrefMap = {\n \"x.com\": \"x\",\n twitter: \"twitter\",\n facebook: \"facebook\",\n instagram: \"instagram\",\n pinterest: \"pinterest\",\n youtube: \"youtube\",\n tiktok: \"tiktok\",\n snapchat: \"snapchat\",\n reddit: \"reddit\",\n tumblr: \"tumblr\",\n \"wa.me\": \"whatsapp\",\n telegram: \"telegram\",\n discord: \"discord\",\n vimeo: \"vimeo\",\n flickr: \"flickr\",\n yelp: \"yelp\",\n spotify: \"spotify\",\n behance: \"behance\",\n dribbble: \"dribbble\",\n soundcloud: \"soundcloud\",\n github: \"github\",\n twitch: \"twitch\",\n \"tel:\": \"phone\",\n \"mailto:\": \"mail\",\n \"maps.app.goo.gl\": \"map-pin\",\n linkedin: \"linkedin\",\n} as const\n\nconst icons = import.meta.glob([\n \"node_modules/lucide-static/icons/*.svg\",\n \"node_modules/simple-icons/icons/*.svg\",\n])\n\nconst foundPath = () => {\n let foundPath: string | undefined = undefined\n\n // For x.com, use the Simple Icons X instead of Lucide's X icon.\n if (name === \"x.com\") {\n foundPath = \"/node_modules/simple-icons/icons/x.svg\"\n } else if (name) {\n foundPath = Object.keys(icons).find((key) => key.includes(`/${name}.svg`))\n } else if (href) {\n const hrefKey = Object.keys(hrefMap).find((key) =>\n href.toString().includes(key)\n )\n const hrefValue = hrefMap[hrefKey as keyof typeof hrefMap]\n foundPath = Object.keys(icons)\n .reverse()\n .find((key) => key.includes(`/${hrefValue}.svg`))\n }\n\n return foundPath\n}\n\nconst foundModule = foundPath() && icons[foundPath() as keyof typeof icons]\nconst module = foundModule && ((await foundModule()) as any)\nconst Comp = module?.default\n---\n\n{\n Comp && foundPath()?.includes(\"simple-icons\") && (\n <Comp\n height={24}\n width={24}\n fill=\"currentColor\"\n class=\"size-[1em] text-base\"\n {...props}\n />\n )\n}\n\n{\n Comp && foundPath()?.includes(\"lucide-static\") && (\n <Comp height={24} width={24} class=\"size-[1em] text-base\" {...props} />\n )\n}\n",
|
|
12
12
|
"type": "registry:ui"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"path": "src/components/ui/input-group/input-group-button.astro",
|
|
23
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, type ButtonVariantProps } from \"@/components/ui/button\"\n\nconst variants = cva(\"flex items-center gap-2 text-sm shadow-none\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n})\n\ntype Props = VariantProps<typeof variants> &\n HTMLAttributes<\"button\"> &\n HTMLAttributes<\"a\"> & {\n type?: \"button\" | \"submit\" | \"reset\"\n variant?: ButtonVariantProps[\"variant\"]\n }\n\nconst {\n class: className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n} = Astro.props\n\nconst isLink = \"href\" in Astro.props\n---\n\n<Button\n data-size={size}\n type={isLink ? undefined : type}\n variant={variant}\n
|
|
23
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, type ButtonVariantProps } from \"@/components/ui/button\"\n\nconst variants = cva(\"flex items-center gap-2 text-sm shadow-none\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n})\n\ntype Props = VariantProps<typeof variants> &\n HTMLAttributes<\"button\"> &\n HTMLAttributes<\"a\"> & {\n type?: \"button\" | \"submit\" | \"reset\"\n variant?: ButtonVariantProps[\"variant\"]\n }\n\nconst {\n class: className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n} = Astro.props\n\nconst isLink = \"href\" in Astro.props\n---\n\n<Button\n data-size={size}\n type={isLink ? undefined : type}\n variant={variant}\n class={cn(variants({ size }), className)}\n {...props}\n>\n <slot />\n</Button>\n",
|
|
24
24
|
"type": "registry:ui"
|
|
25
25
|
},
|
|
26
26
|
{
|
package/public/r/item.json
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "item",
|
|
4
|
-
"registryDependencies": [
|
|
5
|
-
"@fulldev/separator"
|
|
6
|
-
],
|
|
7
4
|
"files": [
|
|
8
5
|
{
|
|
9
6
|
"path": "src/components/ui/item/item.astro",
|
|
10
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = VariantProps<typeof variants> &\n HTMLAttributes<\"div\"> &\n HTMLAttributes<\"a\">\n\nconst variants = cva(\n \"[a]:hover:bg-muted group/item focus-visible:border-ring focus-visible:ring-ring/50 flex w-full flex-wrap items-center rounded-md border text-sm transition-colors duration-100 outline-none focus-visible:ring-[3px] [a]:transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n
|
|
7
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = VariantProps<typeof variants> &\n HTMLAttributes<\"div\"> &\n HTMLAttributes<\"a\">\n\nconst variants = cva(\n \"[a]:hover:bg-muted group/item focus-visible:border-ring focus-visible:ring-ring/50 flex w-full flex-wrap items-center rounded-md border text-sm transition-colors duration-100 outline-none focus-visible:ring-[3px] [a]:transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50 border-transparent\",\n },\n size: {\n default: \"gap-3.5 px-4 py-3.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst {\n class: className,\n variant = \"default\",\n size = \"default\",\n href,\n ...props\n} = Astro.props\n\nconst Comp = href ? \"a\" : \"div\"\n---\n\n<Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n class={cn(variants({ variant, size }), className)}\n href={href}\n {...props}\n>\n <slot />\n</Comp>\n",
|
|
11
8
|
"type": "registry:ui"
|
|
12
9
|
},
|
|
13
10
|
{
|
|
@@ -25,29 +22,14 @@
|
|
|
25
22
|
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"p\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<p\n data-slot=\"item-description\"\n class={cn(\n \"text-muted-foreground [&>a:hover]:text-primary line-clamp-2 text-left text-sm leading-normal font-normal group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n>\n <slot />\n</p>\n",
|
|
26
23
|
"type": "registry:ui"
|
|
27
24
|
},
|
|
28
|
-
{
|
|
29
|
-
"path": "src/components/ui/item/item-footer.astro",
|
|
30
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"item-footer\"\n class={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n>\n <slot />\n</div>\n",
|
|
31
|
-
"type": "registry:ui"
|
|
32
|
-
},
|
|
33
25
|
{
|
|
34
26
|
"path": "src/components/ui/item/item-group.astro",
|
|
35
27
|
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n role=\"list\"\n data-slot=\"item-group\"\n class={cn(\n \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
|
|
36
28
|
"type": "registry:ui"
|
|
37
29
|
},
|
|
38
|
-
{
|
|
39
|
-
"path": "src/components/ui/item/item-header.astro",
|
|
40
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"item-header\"\n class={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n>\n <slot />\n</div>\n",
|
|
41
|
-
"type": "registry:ui"
|
|
42
|
-
},
|
|
43
30
|
{
|
|
44
31
|
"path": "src/components/ui/item/item-media.astro",
|
|
45
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst variants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\ntype Props = HTMLAttributes<\"div\"> & VariantProps<typeof variants>\n\nconst { class: className, variant, ...props } = Astro.props\n---\n\n<div\n data-slot=\"item-media\"\n data-variant={variant}\n class={cn(variants({ variant }), className)}\n {...props}\n>\n <slot />\n</div>\n",
|
|
46
|
-
"type": "registry:ui"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"path": "src/components/ui/item/item-separator.astro",
|
|
50
|
-
"content": "---\nimport type { ComponentProps } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = ComponentProps<typeof Separator>\n\nconst { class: className, ...props } = Astro.props\n---\n\n<Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n class={cn(\"my-2\", className)}\n {...props}\n/>\n",
|
|
32
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst variants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\ntype Props = HTMLAttributes<\"div\"> & VariantProps<typeof variants>\n\nconst { class: className, variant = \"default\", ...props } = Astro.props\n---\n\n<div\n data-slot=\"item-media\"\n data-variant={variant}\n class={cn(variants({ variant }), className)}\n {...props}\n>\n <slot />\n</div>\n",
|
|
51
33
|
"type": "registry:ui"
|
|
52
34
|
},
|
|
53
35
|
{
|
package/public/r/kbd.json
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
"files": [
|
|
5
5
|
{
|
|
6
6
|
"path": "src/components/ui/kbd/kbd.astro",
|
|
7
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"kbd\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<kbd\n data-slot=\"kbd\"\n class={cn(\n \"bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs
|
|
7
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"kbd\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<kbd\n data-slot=\"kbd\"\n class={cn(\n \"bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none [&_svg:not([class*='size-'])]:size-3\",\n className\n )}\n {...props}\n>\n <slot />\n</kbd>\n",
|
|
8
8
|
"type": "registry:ui"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"path": "src/components/ui/kbd/kbd-group.astro",
|
|
12
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"kbd-group\"\n class={cn(\"inline-flex items-center gap-1
|
|
12
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"kbd-group\"\n class={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n>\n <slot />\n</div>\n",
|
|
13
13
|
"type": "registry:ui"
|
|
14
14
|
},
|
|
15
15
|
{
|
package/public/r/layout.json
CHANGED
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "layout",
|
|
4
|
-
"dependencies": [
|
|
5
|
-
"@lexingtonthemes/seo"
|
|
6
|
-
],
|
|
7
4
|
"files": [
|
|
8
5
|
{
|
|
9
6
|
"path": "src/components/ui/layout/layout.astro",
|
|
10
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport \"@/styles/global.css\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"html\">\n\nconst { class: className, lang, ...props } = Astro.props\n---\n\n<html\n class={cn(\n \"bg-background text-foreground has-data-[variant=inset]:bg-sidebar overscroll-none scroll-smooth\",\n className\n )}\n data-slot=\"layout\"\n lang={Astro.currentLocale || \"en\"}\n {...props}\n>\n <slot />\n</html>\n\n<style is:global>\n :root {\n --container: 1280px;\n color-scheme: light;\n }\n\n .dark {\n color-scheme: dark;\n }\n</style>\n",
|
|
7
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport \"@/styles/global.css\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"html\">\n\nconst { class: className, lang, ...props } = Astro.props\n---\n\n<html\n class={cn(\n \"bg-background text-foreground has-data-[variant=inset]:bg-sidebar overscroll-none scroll-smooth\",\n className\n )}\n data-slot=\"layout\"\n lang={Astro.currentLocale || \"en\"}\n {...props}\n>\n <slot />\n</html>\n\n<style is:global>\n :root {\n --container: 1280px;\n color-scheme: light;\n }\n\n .dark {\n color-scheme: dark;\n }\n\n @view-transition {\n navigation: auto;\n }\n</style>\n",
|
|
11
8
|
"type": "registry:ui"
|
|
12
9
|
},
|
|
13
10
|
{
|
|
14
11
|
"path": "src/components/ui/layout/layout-head.astro",
|
|
15
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { getImage } from \"astro:assets\"\nimport { AstroSeo } from \"@lexingtonthemes/seo\"\n\ntype Props = {\n name?: string\n title?: string\n description?: string\n image?: {\n src?: ImageMetadata | string\n alt?: string\n }\n noindex?: boolean\n nofollow?: boolean\n canonical?: string\n}\n\nconst baseUrl = Astro.site?.origin || Astro.url.origin\nconst pagePathname = Astro.url.pathname.endsWith(\"/\")\n ? Astro.url.pathname\n : `${Astro.url.pathname}/`\n\nconst {\n name,\n title,\n description,\n image,\n noindex,\n nofollow,\n canonical,\n ...props\n} = Astro.props\n\nconst resolvedCanonical = new URL(canonical || pagePathname, baseUrl).toString()\n\nconst toImageMimeType = (format?: string) => {\n if (!format) return undefined\n if (format.includes(\"/\")) return format\n if (format === \"jpg\") return \"image/jpeg\"\n return `image/${format}`\n}\n\nconst transformedImage =\n image?.src && typeof image.src !== \"string\"\n ? await getImage({\n src: image.src,\n format: \"png\",\n width: 1200,\n height: 630,\n quality: \"medium\",\n })\n : undefined\n\nconst openGraphImage =\n typeof image?.src === \"string\"\n ? {\n url: new URL(image.src, baseUrl).toString(),\n alt: image.alt,\n }\n : transformedImage\n ? {\n url: new URL(transformedImage.src, baseUrl).toString(),\n alt: image?.alt,\n width: transformedImage.attributes.width,\n height: transformedImage.attributes.height,\n type: toImageMimeType(transformedImage.attributes.format),\n }\n : undefined\n---\n\n<head data-slot=\"layout-head\" {...props}>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"generator\" content={Astro.generator} />\n <meta charset=\"utf-8\" />\n <AstroSeo\n title={title}\n description={description}\n canonical={resolvedCanonical}\n noindex={noindex}\n nofollow={nofollow}\n openGraph={{\n url: resolvedCanonical,\n type: \"website\",\n ...(name && { site_name: name }),\n ...(openGraphImage && {\n images: [\n {\n ...openGraphImage,\n ...(openGraphImage.url.startsWith(\"https://\") && {\n secureUrl: openGraphImage.url,\n }),\n },\n ],\n }),\n }}\n />\n <slot
|
|
12
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Font, getImage } from \"astro:assets\"\nimport { AstroSeo } from \"@lexingtonthemes/seo\"\n\ntype Props = {\n name?: string\n title?: string\n description?: string\n image?: {\n src?: ImageMetadata | string\n alt?: string\n }\n noindex?: boolean\n nofollow?: boolean\n canonical?: string\n}\n\nconst baseUrl = Astro.site?.origin || Astro.url.origin\nconst pagePathname = Astro.url.pathname.endsWith(\"/\")\n ? Astro.url.pathname\n : `${Astro.url.pathname}/`\n\nconst {\n name,\n title,\n description,\n image,\n noindex,\n nofollow,\n canonical,\n ...props\n} = Astro.props\n\nconst resolvedCanonical = new URL(canonical || pagePathname, baseUrl).toString()\n\nconst toImageMimeType = (format?: string) => {\n if (!format) return undefined\n if (format.includes(\"/\")) return format\n if (format === \"jpg\") return \"image/jpeg\"\n return `image/${format}`\n}\n\nconst transformedImage =\n image?.src && typeof image.src !== \"string\"\n ? await getImage({\n src: image.src,\n format: \"png\",\n width: 1200,\n height: 630,\n quality: \"medium\",\n })\n : undefined\n\nconst openGraphImage =\n typeof image?.src === \"string\"\n ? {\n url: new URL(image.src, baseUrl).toString(),\n alt: image.alt,\n }\n : transformedImage\n ? {\n url: new URL(transformedImage.src, baseUrl).toString(),\n alt: image?.alt,\n width: transformedImage.attributes.width,\n height: transformedImage.attributes.height,\n type: toImageMimeType(transformedImage.attributes.format),\n }\n : undefined\n---\n\n<head data-slot=\"layout-head\" {...props}>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"generator\" content={Astro.generator} />\n <meta charset=\"utf-8\" />\n <Font cssVariable=\"--font-sans\" />\n <Font cssVariable=\"--font-mono\" />\n <AstroSeo\n title={title}\n description={description}\n canonical={resolvedCanonical}\n noindex={noindex}\n nofollow={nofollow}\n openGraph={{\n url: resolvedCanonical,\n type: \"website\",\n ...(name && { site_name: name }),\n ...(openGraphImage && {\n images: [\n {\n ...openGraphImage,\n ...(openGraphImage.url.startsWith(\"https://\") && {\n secureUrl: openGraphImage.url,\n }),\n },\n ],\n }),\n }}\n />\n <slot />\n</head>\n",
|
|
16
13
|
"type": "registry:ui"
|
|
17
14
|
},
|
|
18
15
|
{
|
|
19
16
|
"path": "src/components/ui/layout/layout-body.astro",
|
|
20
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"body\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<body\n class={cn(\n \"bg-background text-foreground overscroll-none antialiased\",\n className\n )}\n data-slot=\"layout-body\"\n {...props}\n>\n <slot />\n</body>\n\n<style is:global>\n body {\n font-family: var(--font-sans)
|
|
17
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"body\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<body\n class={cn(\n \"bg-background text-foreground overscroll-none antialiased\",\n className\n )}\n data-slot=\"layout-body\"\n {...props}\n>\n <slot />\n</body>\n\n<style is:global>\n body {\n font-family: var(--font-sans);\n }\n</style>\n",
|
|
21
18
|
"type": "registry:ui"
|
|
22
19
|
},
|
|
23
20
|
{
|
|
24
21
|
"path": "src/components/ui/layout/layout-main.astro",
|
|
25
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"main\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<main\n data-slot=\"layout-main\"\n class={cn(\n \"@container flex flex-col in-data-
|
|
22
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"main\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<main\n data-slot=\"layout-main\"\n class={cn(\n \"@container flex flex-col in-[[data-slot=sidebar-inset]]:rounded-[inherit]\",\n className\n )}\n {...props}\n>\n <slot />\n</main>\n",
|
|
26
23
|
"type": "registry:ui"
|
|
27
24
|
},
|
|
28
25
|
{
|
package/public/r/links-2.json
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "links-2",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/accordion",
|
|
6
9
|
"@fulldev/button",
|
|
7
10
|
"@fulldev/card",
|
|
8
11
|
"@fulldev/carousel",
|
|
9
12
|
"@fulldev/section",
|
|
10
|
-
"@fulldev/tabs"
|
|
11
|
-
"@fulldev/icon"
|
|
13
|
+
"@fulldev/tabs"
|
|
12
14
|
],
|
|
13
15
|
"files": [
|
|
14
16
|
{
|
|
15
17
|
"path": "src/components/blocks/links-2.astro",
|
|
16
|
-
"content": "---\nimport
|
|
18
|
+
"content": "---\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n links: {\n href: string\n title: string\n description: string\n preview?: string\n }[]\n}\n\nconst { class: className, title, description, links } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-10\">\n <div class=\"flex min-w-0 flex-col gap-4 border-b pb-8\">\n <h2\n class=\"text-foreground text-2xl font-semibold tracking-tight text-balance sm:text-3xl\"\n >\n {title}\n </h2>\n <p class=\"text-muted-foreground max-w-2xl text-base leading-7\">\n {description}\n </p>\n </div>\n\n <div class=\"grid gap-2 md:grid-cols-2 xl:grid-cols-3\">\n {\n links.map((item) => (\n <a\n href={item.href}\n class=\"bg-muted/40 hover:bg-muted/60 focus-visible:ring-ring/50 group/link rounded-lg px-4 py-4 transition-colors focus-visible:ring-2 focus-visible:outline-none\"\n >\n <span class=\"flex min-w-0 items-center justify-between gap-3\">\n <span class=\"text-sm font-medium\">{item.title}</span>\n <ArrowRightIcon class=\"text-muted-foreground size-3.5 shrink-0 transition-transform group-hover/link:translate-x-0.5\" />\n </span>\n <span class=\"text-muted-foreground mt-1 block text-sm leading-6\">\n {item.description}\n </span>\n </a>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
17
19
|
"type": "registry:block"
|
|
18
20
|
}
|
|
19
21
|
],
|
package/public/r/marquee.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"files": [
|
|
5
5
|
{
|
|
6
6
|
"path": "src/components/ui/marquee/marquee.astro",
|
|
7
|
-
"content": "---\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\
|
|
7
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst trackVariants = cva(\n \"flex min-w-max shrink-0 [animation:marquee_var(--marquee-duration)_linear_infinite] items-center gap-[var(--marquee-gap)] before:block before:size-0 before:shrink-0 before:content-['']\",\n {\n variants: {\n direction: {\n left: \"\",\n right: \"[animation-direction:reverse]\",\n },\n pauseOnHover: {\n true: \"group-hover/marquee:[animation-play-state:paused]\",\n false: \"\",\n },\n },\n defaultVariants: {\n direction: \"left\",\n pauseOnHover: false,\n },\n }\n)\n\ntype Props = HTMLAttributes<\"div\"> &\n VariantProps<typeof trackVariants> & {\n duration?: string\n gap?: string\n infinite?: boolean\n }\n\nconst {\n class: className,\n direction,\n pauseOnHover,\n duration = \"40s\",\n gap = \"1.5rem\",\n infinite = true,\n style,\n ...props\n} = Astro.props\n\nconst resolvedStyle = [\n `--marquee-duration:${duration}`,\n `--marquee-gap:${gap}`,\n typeof style === \"string\" ? style : undefined,\n]\n .filter(Boolean)\n .join(\";\")\n---\n\n<div\n class={cn(\n \"group/marquee flex overflow-hidden select-none [--marquee-duration:40s] [--marquee-gap:1.5rem]\",\n className\n )}\n style={resolvedStyle}\n {...props}\n>\n <div class={trackVariants({ direction, pauseOnHover })}>\n <slot />\n </div>\n {\n infinite && (\n <div\n aria-hidden=\"true\"\n class={trackVariants({ direction, pauseOnHover })}\n >\n <slot />\n </div>\n )\n }\n</div>\n\n<style>\n @keyframes marquee {\n from {\n transform: translateX(0);\n }\n\n to {\n transform: translateX(-100%);\n }\n }\n</style>\n",
|
|
8
8
|
"type": "registry:ui"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "native-select",
|
|
4
|
-
"
|
|
5
|
-
"@
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
6
|
],
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": "src/components/ui/native-select/native-select.astro",
|
|
10
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\
|
|
10
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronDownIcon from \"@lucide/astro/icons/chevron-down\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = Omit<HTMLAttributes<\"select\">, \"size\"> & {\n size?: \"sm\" | \"default\"\n}\n\nconst { class: className, size = \"default\", ...props } = Astro.props\n---\n\n<div\n class={cn(\n \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n className\n )}\n data-slot=\"native-select-wrapper\"\n data-size={size}\n>\n <select\n data-slot=\"native-select\"\n data-size={size}\n class=\"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent py-1 pr-8 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] outline-none select-none focus-visible:ring-3 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:ring-3 data-[size=sm]:h-8\"\n {...props}\n >\n <slot />\n </select>\n <ChevronDownIcon\n class=\"text-muted-foreground pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 select-none\"\n aria-hidden=\"true\"\n data-slot=\"native-select-icon\"\n />\n</div>\n",
|
|
11
11
|
"type": "registry:ui"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
@@ -2,20 +2,18 @@
|
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "navigation-menu",
|
|
4
4
|
"dependencies": [
|
|
5
|
-
"@data-slot/navigation-menu"
|
|
6
|
-
|
|
7
|
-
"registryDependencies": [
|
|
8
|
-
"@fulldev/icon"
|
|
5
|
+
"@data-slot/navigation-menu",
|
|
6
|
+
"@lucide/astro"
|
|
9
7
|
],
|
|
10
8
|
"files": [
|
|
11
9
|
{
|
|
12
10
|
"path": "src/components/ui/navigation-menu/navigation-menu.astro",
|
|
13
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport NavigationMenuPositioner from \"./navigation-menu-positioner.astro\"\n\ntype Props = HTMLAttributes<\"nav\"> & {\n delayOpen?: number\n delayClose?: number\n openOnFocus?: boolean\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n positionMethod?: \"absolute\" | \"fixed\"\n safeTriangle?: boolean\n debugSafeTriangle?: boolean\n}\n\nconst {\n class: className = \"\",\n delayOpen = 0,\n delayClose = 0,\n openOnFocus,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 0,\n alignOffset = 0,\n positionMethod = \"absolute\",\n safeTriangle,\n debugSafeTriangle,\n ...props\n} = Astro.props\n---\n\n<nav\n {...props}\n data-slot=\"navigation-menu\"\n data-delay-open={delayOpen}\n data-delay-close={delayClose}\n data-open-on-focus={openOnFocus}\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-position-method={positionMethod}\n data-safe-triangle={safeTriangle}\n data-debug-safe-triangle={debugSafeTriangle}\n class={cn(\n \"group/navigation-menu relative flex flex-1 items-center justify-center\",\n className\n )}\n>\n <slot />\n <NavigationMenuPositioner align={align} />\n</nav>\n\n<script>\n import { create } from \"@data-slot/navigation-menu\"\n\n create()\n</script>\n",
|
|
11
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport NavigationMenuPositioner from \"./navigation-menu-positioner.astro\"\n\ntype Props = HTMLAttributes<\"nav\"> & {\n delayOpen?: number\n delayClose?: number\n openOnFocus?: boolean\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n positionMethod?: \"absolute\" | \"fixed\"\n safeTriangle?: boolean\n debugSafeTriangle?: boolean\n}\n\nconst {\n class: className = \"\",\n delayOpen = 0,\n delayClose = 0,\n openOnFocus,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 0,\n alignOffset = 0,\n positionMethod = \"absolute\",\n safeTriangle,\n debugSafeTriangle,\n ...props\n} = Astro.props\n---\n\n<nav\n {...props}\n data-slot=\"navigation-menu\"\n data-delay-open={delayOpen}\n data-delay-close={delayClose}\n data-open-on-focus={openOnFocus}\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-position-method={positionMethod}\n data-safe-triangle={safeTriangle}\n data-debug-safe-triangle={debugSafeTriangle}\n class={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n>\n <slot />\n <NavigationMenuPositioner align={align} />\n</nav>\n\n<script>\n import { create } from \"@data-slot/navigation-menu\"\n\n create()\n</script>\n",
|
|
14
12
|
"type": "registry:ui"
|
|
15
13
|
},
|
|
16
14
|
{
|
|
17
15
|
"path": "src/components/ui/navigation-menu/navigation-menu-content.astro",
|
|
18
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = {\n class?: string\n align?: \"start\" | \"center\" | \"end\"\n alignOffset?: number\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n sideOffset?: number\n} & HTMLAttributes<\"div\">\n\nconst {\n class: className = \"\",\n align,\n alignOffset,\n side,\n sideOffset,\n ...props\n} = Astro.props\n---\n\n<div\n {...props}\n data-slot=\"navigation-menu-content\"\n data-align={align}\n data-align-offset={alignOffset}\n data-side={side}\n data-side-offset={sideOffset}\n class={cn(\n \"
|
|
16
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = {\n class?: string\n align?: \"start\" | \"center\" | \"end\"\n alignOffset?: number\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n sideOffset?: number\n} & HTMLAttributes<\"div\">\n\nconst {\n class: className = \"\",\n align,\n alignOffset,\n side,\n sideOffset,\n ...props\n} = Astro.props\n---\n\n<div\n {...props}\n data-slot=\"navigation-menu-content\"\n data-align={align}\n data-align-offset={alignOffset}\n data-side={side}\n data-side-offset={sideOffset}\n class={cn(\n \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:ring-foreground/10 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 h-full w-auto p-2 pr-2.5 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:data-[activation-direction=left]:translate-x-[50%] data-starting-style:data-[activation-direction=left]:translate-x-[-50%] data-ending-style:data-[activation-direction=right]:translate-x-[-50%] data-starting-style:data-[activation-direction=right]:translate-x-[50%] **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n className\n )}\n>\n <slot />\n</div>\n",
|
|
19
17
|
"type": "registry:ui"
|
|
20
18
|
},
|
|
21
19
|
{
|
|
@@ -30,7 +28,7 @@
|
|
|
30
28
|
},
|
|
31
29
|
{
|
|
32
30
|
"path": "src/components/ui/navigation-menu/navigation-menu-list.astro",
|
|
33
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"ul\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<ul\n data-slot=\"navigation-menu-list\"\n class={cn(\n \"group flex flex-1 list-none items-center justify-center gap-
|
|
31
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"ul\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<ul\n data-slot=\"navigation-menu-list\"\n class={cn(\n \"group flex flex-1 list-none items-center justify-center gap-0\",\n className\n )}\n {...props}\n>\n <slot />\n</ul>\n",
|
|
34
32
|
"type": "registry:ui"
|
|
35
33
|
},
|
|
36
34
|
{
|
|
@@ -40,7 +38,7 @@
|
|
|
40
38
|
},
|
|
41
39
|
{
|
|
42
40
|
"path": "src/components/ui/navigation-menu/navigation-menu-trigger.astro",
|
|
43
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\
|
|
41
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronDownIcon from \"@lucide/astro/icons/chevron-down\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport navigationMenuTriggerStyle from \"./navigation-menu-trigger-style\"\n\ntype Props = HTMLAttributes<\"button\">\n\nconst { class: className, type = \"button\", ...props } = Astro.props\n---\n\n<button\n data-slot=\"navigation-menu-trigger\"\n type={type}\n class={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n>\n <slot />\n {\" \"}\n <ChevronDownIcon\n class=\"relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180\"\n aria-hidden=\"true\"\n />\n</button>\n",
|
|
44
42
|
"type": "registry:ui"
|
|
45
43
|
},
|
|
46
44
|
{
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "page",
|
|
4
|
+
"registryDependencies": [
|
|
5
|
+
"@fulldev/layout",
|
|
6
|
+
"@fulldev/components"
|
|
7
|
+
],
|
|
8
|
+
"files": [
|
|
9
|
+
{
|
|
10
|
+
"path": "src/pages/[...page].astro",
|
|
11
|
+
"content": "---\nimport { getCollection } from \"astro:content\"\n\nimport LayoutRenderer from \"@/components/layout-renderer.astro\"\n\nexport async function getStaticPaths() {\n const pages = await getCollection(\"pages\")\n return pages.map((page) => {\n return {\n params: {\n page: page.id === \"index\" ? undefined : page.id,\n },\n props: page,\n }\n })\n}\n---\n\n<LayoutRenderer {...Astro.props} />\n",
|
|
12
|
+
"type": "registry:file",
|
|
13
|
+
"target": "src/pages/[...page].astro"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"type": "registry:file"
|
|
17
|
+
}
|