fulldev-ui 0.10.1 → 0.11.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 +6 -0
- package/README.md +7 -1
- package/package.json +6 -4
- package/public/r/accordion.json +7 -1
- package/public/r/alert-dialog.json +7 -1
- package/public/r/alert.json +6 -0
- package/public/r/article-1.json +7 -1
- package/public/r/article-2.json +7 -1
- package/public/r/articles-1.json +7 -1
- package/public/r/articles-2.json +7 -1
- package/public/r/articles-3.json +7 -1
- package/public/r/articles-4.json +7 -1
- package/public/r/avatar.json +6 -0
- package/public/r/badge.json +6 -0
- package/public/r/banner-1.json +7 -1
- package/public/r/banner-2.json +7 -1
- package/public/r/banner.json +6 -0
- package/public/r/blocks-1.json +6 -1
- package/public/r/blocks.json +92 -0
- package/public/r/breadcrumb.json +6 -0
- package/public/r/button.json +6 -0
- package/public/r/card.json +6 -0
- package/public/r/carousel.json +6 -0
- package/public/r/checkbox.json +6 -0
- package/public/r/collapsible.json +7 -1
- package/public/r/combobox.json +6 -0
- package/public/r/command.json +6 -0
- package/public/r/components.json +14 -3
- package/public/r/contact-1.json +10 -2
- package/public/r/contact-2.json +10 -2
- package/public/r/contact-3.json +10 -2
- package/public/r/content-1.json +7 -1
- package/public/r/content-2.json +7 -1
- package/public/r/content-3.json +7 -1
- package/public/r/content-4.json +7 -1
- package/public/r/cta-1.json +7 -1
- package/public/r/cta-2.json +7 -1
- package/public/r/cta-3.json +7 -1
- package/public/r/cta-4.json +7 -1
- package/public/r/cta-5.json +7 -1
- package/public/r/cta-6.json +7 -1
- package/public/r/cta-7.json +7 -1
- package/public/r/cta-8.json +7 -1
- package/public/r/dialog.json +7 -1
- package/public/r/doc-1.json +7 -1
- package/public/r/dropdown-menu.json +7 -1
- package/public/r/empty.json +6 -0
- package/public/r/faqs-1.json +7 -1
- package/public/r/faqs-2.json +7 -1
- package/public/r/faqs-3.json +7 -1
- package/public/r/faqs-4.json +7 -1
- package/public/r/features-1.json +7 -1
- package/public/r/features-2.json +7 -1
- package/public/r/features-3.json +7 -1
- package/public/r/features-4.json +7 -1
- package/public/r/features-5.json +7 -1
- package/public/r/features-6.json +7 -1
- package/public/r/field.json +6 -0
- package/public/r/footer-1.json +7 -1
- package/public/r/footer-2.json +7 -1
- package/public/r/footer-3.json +7 -1
- package/public/r/form.json +6 -0
- package/public/r/header-1.json +7 -1
- package/public/r/header-2.json +7 -1
- package/public/r/header-3.json +7 -1
- package/public/r/header-4.json +7 -1
- package/public/r/header-5.json +7 -1
- package/public/r/header.json +6 -0
- package/public/r/hero-1.json +7 -1
- package/public/r/hero-10.json +7 -1
- package/public/r/hero-11.json +7 -1
- package/public/r/hero-12.json +7 -1
- package/public/r/hero-13.json +7 -1
- package/public/r/hero-2.json +7 -1
- package/public/r/hero-3.json +7 -1
- package/public/r/hero-4.json +7 -1
- package/public/r/hero-5.json +7 -1
- package/public/r/hero-6.json +7 -1
- package/public/r/hero-7.json +7 -1
- package/public/r/hero-8.json +7 -1
- package/public/r/hero-9.json +7 -1
- package/public/r/hover-card.json +7 -1
- package/public/r/icon.json +7 -1
- package/public/r/init.json +28 -0
- package/public/r/input-group.json +6 -0
- package/public/r/input.json +6 -0
- package/public/r/item.json +6 -0
- package/public/r/kbd.json +6 -0
- package/public/r/label.json +6 -0
- package/public/r/layout.json +6 -0
- package/public/r/links-2.json +7 -1
- package/public/r/logo.json +6 -0
- package/public/r/logos-1.json +7 -1
- package/public/r/logos-2.json +7 -1
- package/public/r/logos-3.json +7 -1
- package/public/r/marquee.json +6 -0
- package/public/r/native-select.json +6 -0
- package/public/r/navigation-menu.json +7 -1
- package/public/r/popover.json +7 -1
- package/public/r/price.json +6 -0
- package/public/r/pricing-1.json +7 -1
- package/public/r/pricing-2.json +7 -1
- package/public/r/pricing-3.json +7 -1
- package/public/r/product-1.json +7 -1
- package/public/r/products-1.json +7 -1
- package/public/r/products-2.json +7 -1
- package/public/r/products-3.json +7 -1
- package/public/r/products-4.json +7 -1
- package/public/r/products-5.json +7 -1
- package/public/r/radio-group.json +7 -1
- package/public/r/rating.json +6 -0
- package/public/r/registry.json +1645 -457
- package/public/r/reviews-1.json +7 -1
- package/public/r/reviews-2.json +7 -1
- package/public/r/reviews-3.json +7 -1
- package/public/r/reviews-4.json +7 -1
- package/public/r/reviews-5.json +7 -1
- package/public/r/section.json +18 -2
- package/public/r/select.json +6 -0
- package/public/r/separator.json +6 -0
- package/public/r/services-1.json +7 -1
- package/public/r/services-2.json +7 -1
- package/public/r/services-3.json +7 -1
- package/public/r/services-4.json +7 -1
- package/public/r/services-5.json +7 -1
- package/public/r/services-6.json +7 -1
- package/public/r/services-7.json +7 -1
- package/public/r/sheet.json +8 -2
- package/public/r/sidebar-1.json +5 -0
- package/public/r/sidebar.json +6 -0
- package/public/r/skeleton.json +6 -0
- package/public/r/slider.json +7 -1
- package/public/r/spinner.json +6 -0
- package/public/r/switch.json +7 -1
- package/public/r/table.json +6 -0
- package/public/r/tabs.json +7 -1
- package/public/r/textarea.json +6 -0
- package/public/r/theme-toggle.json +6 -0
- package/public/r/toc.json +6 -0
- package/public/r/toggle.json +7 -1
- package/public/r/tooltip.json +7 -1
- package/public/r/typography.json +6 -0
- package/public/r/video.json +6 -0
- package/registry/init/global.css +187 -0
- package/registry.json +1137 -454
- package/src/components/blocks/article-1.astro +4 -3
- package/src/components/blocks/article-2.astro +4 -3
- package/src/components/blocks/articles-1.astro +18 -9
- package/src/components/blocks/articles-2.astro +4 -3
- package/src/components/blocks/articles-3.astro +11 -9
- package/src/components/blocks/articles-4.astro +11 -4
- package/src/components/blocks/banner-1.astro +4 -3
- package/src/components/blocks/banner-2.astro +10 -4
- package/src/components/blocks/blocks-1.astro +1 -1
- package/src/components/blocks/contact-1.astro +72 -39
- package/src/components/blocks/contact-2.astro +69 -35
- package/src/components/blocks/contact-3.astro +61 -34
- package/src/components/blocks/content-1.astro +15 -10
- package/src/components/blocks/content-2.astro +15 -10
- package/src/components/blocks/content-3.astro +14 -12
- package/src/components/blocks/content-4.astro +15 -10
- package/src/components/blocks/cta-1.astro +14 -10
- package/src/components/blocks/cta-2.astro +11 -8
- package/src/components/blocks/cta-3.astro +15 -8
- package/src/components/blocks/cta-4.astro +14 -9
- package/src/components/blocks/cta-5.astro +12 -8
- package/src/components/blocks/cta-6.astro +11 -8
- package/src/components/blocks/cta-7.astro +17 -10
- package/src/components/blocks/cta-8.astro +15 -10
- package/src/components/blocks/doc-1.astro +1 -1
- package/src/components/blocks/faqs-1.astro +22 -11
- package/src/components/blocks/faqs-2.astro +19 -9
- package/src/components/blocks/faqs-3.astro +19 -9
- package/src/components/blocks/faqs-4.astro +12 -9
- package/src/components/blocks/features-1.astro +21 -13
- package/src/components/blocks/features-2.astro +22 -13
- package/src/components/blocks/features-3.astro +14 -13
- package/src/components/blocks/features-4.astro +18 -9
- package/src/components/blocks/features-5.astro +22 -13
- package/src/components/blocks/features-6.astro +19 -9
- package/src/components/blocks/footer-1.astro +4 -3
- package/src/components/blocks/footer-2.astro +4 -3
- package/src/components/blocks/footer-3.astro +4 -3
- package/src/components/blocks/header-1.astro +13 -7
- package/src/components/blocks/header-2.astro +12 -6
- package/src/components/blocks/header-3.astro +12 -6
- package/src/components/blocks/header-4.astro +13 -6
- package/src/components/blocks/header-5.astro +16 -6
- package/src/components/blocks/hero-1.astro +11 -8
- package/src/components/blocks/hero-10.astro +7 -3
- package/src/components/blocks/hero-11.astro +4 -2
- package/src/components/blocks/hero-12.astro +11 -4
- package/src/components/blocks/hero-13.astro +11 -4
- package/src/components/blocks/hero-2.astro +11 -8
- package/src/components/blocks/hero-3.astro +11 -3
- package/src/components/blocks/hero-4.astro +4 -2
- package/src/components/blocks/hero-5.astro +4 -3
- package/src/components/blocks/hero-6.astro +4 -3
- package/src/components/blocks/hero-7.astro +4 -3
- package/src/components/blocks/hero-8.astro +11 -4
- package/src/components/blocks/hero-9.astro +4 -3
- package/src/components/blocks/links-2.astro +4 -4
- package/src/components/blocks/logos-1.astro +14 -16
- package/src/components/blocks/logos-2.astro +14 -12
- package/src/components/blocks/logos-3.astro +5 -4
- package/src/components/blocks/pricing-1.astro +13 -16
- package/src/components/blocks/pricing-2.astro +14 -13
- package/src/components/blocks/pricing-3.astro +20 -16
- package/src/components/blocks/product-1.astro +4 -3
- package/src/components/blocks/products-1.astro +11 -9
- package/src/components/blocks/products-2.astro +12 -9
- package/src/components/blocks/products-3.astro +12 -9
- package/src/components/blocks/products-4.astro +18 -9
- package/src/components/blocks/products-5.astro +18 -9
- package/src/components/blocks/reviews-1.astro +13 -12
- package/src/components/blocks/reviews-2.astro +4 -4
- package/src/components/blocks/reviews-3.astro +13 -12
- package/src/components/blocks/reviews-4.astro +13 -12
- package/src/components/blocks/reviews-5.astro +13 -12
- package/src/components/blocks/services-1.astro +19 -9
- package/src/components/blocks/services-2.astro +11 -8
- package/src/components/blocks/services-3.astro +11 -8
- package/src/components/blocks/services-4.astro +19 -9
- package/src/components/blocks/services-5.astro +11 -8
- package/src/components/blocks/services-6.astro +4 -3
- package/src/components/blocks/services-7.astro +12 -8
- package/src/components/ui/accordion/accordion.astro +1 -0
- package/src/components/ui/alert-dialog/alert-dialog.astro +1 -0
- package/src/components/ui/collapsible/collapsible.astro +1 -0
- package/src/components/ui/dialog/dialog.astro +1 -0
- package/src/components/ui/dropdown-menu/dropdown-menu.astro +1 -0
- package/src/components/ui/hover-card/hover-card.astro +7 -3
- package/src/components/ui/icon/icon.astro +46 -29
- package/src/components/ui/navigation-menu/navigation-menu.astro +1 -0
- package/src/components/ui/popover/popover.astro +1 -0
- package/src/components/ui/radio-group/radio-group.astro +1 -0
- package/src/components/ui/section/index.ts +2 -0
- package/src/components/ui/section/section-container.astro +1 -0
- package/src/components/ui/section/section-description.astro +20 -0
- package/src/components/ui/section/section-title.astro +20 -0
- package/src/components/ui/sheet/sheet-close.astro +4 -2
- package/src/components/ui/sheet/sheet.astro +1 -0
- package/src/components/ui/slider/slider.astro +1 -0
- package/src/components/ui/switch/switch.astro +1 -0
- package/src/components/ui/tabs/tabs.astro +1 -0
- package/src/components/ui/toggle/toggle.astro +1 -0
- package/src/components/ui/tooltip/tooltip.astro +1 -0
- package/src/lib/pages.ts +12 -0
package/public/r/faqs-3.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "faqs-3",
|
|
4
|
+
"title": "Faqs 3",
|
|
5
|
+
"description": "FAQ sections for product pages, launches, and documentation support content.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/accordion",
|
|
6
8
|
"@fulldev/badge",
|
|
@@ -9,9 +11,13 @@
|
|
|
9
11
|
"files": [
|
|
10
12
|
{
|
|
11
13
|
"path": "src/components/blocks/faqs-3.astro",
|
|
12
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {
|
|
14
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n faqs,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"items-center text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-5\">\n {badge && <Badge variant=\"secondary\">{badge}</Badge>}\n <SectionTitle>\n {title}\n </SectionTitle>\n <p class=\"text-muted-foreground text-base leading-relaxed text-balance\">\n {description}\n </p>\n </div>\n </SectionContainer>\n <SectionContainer>\n <div class=\"mx-auto w-full max-w-3xl rounded-xl border px-6 py-2\">\n <Accordion collapsible>\n {\n faqs.map((item) => (\n <AccordionItem value={item.id}>\n <AccordionTrigger>{item.question}</AccordionTrigger>\n <AccordionContent>{item.answer}</AccordionContent>\n </AccordionItem>\n ))\n }\n </Accordion>\n </div>\n </SectionContainer>\n</Section>\n",
|
|
13
15
|
"type": "registry:block"
|
|
14
16
|
}
|
|
15
17
|
],
|
|
18
|
+
"docs": "https://ui.full.dev/blocks/faqs/",
|
|
19
|
+
"categories": [
|
|
20
|
+
"faqs"
|
|
21
|
+
],
|
|
16
22
|
"type": "registry:block"
|
|
17
23
|
}
|
package/public/r/faqs-4.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "faqs-4",
|
|
4
|
+
"title": "Faqs 4",
|
|
5
|
+
"description": "FAQ sections for product pages, launches, and documentation support content.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/accordion",
|
|
6
8
|
"@fulldev/section"
|
|
@@ -8,9 +10,13 @@
|
|
|
8
10
|
"files": [
|
|
9
11
|
{
|
|
10
12
|
"path": "src/components/blocks/faqs-4.astro",
|
|
11
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport {
|
|
13
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n}\n\nconst { class: className, title, faqs, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"items-center\">\n <div class=\"mx-auto w-full max-w-3xl\">\n <SectionTitle>\n {title}\n </SectionTitle>\n <div class=\"mt-10\">\n <Accordion collapsible>\n {\n faqs.map((item) => (\n <AccordionItem value={item.id}>\n <AccordionTrigger>{item.question}</AccordionTrigger>\n <AccordionContent>{item.answer}</AccordionContent>\n </AccordionItem>\n ))\n }\n </Accordion>\n </div>\n </div>\n </SectionContainer>\n</Section>\n",
|
|
12
14
|
"type": "registry:block"
|
|
13
15
|
}
|
|
14
16
|
],
|
|
17
|
+
"docs": "https://ui.full.dev/blocks/faqs/",
|
|
18
|
+
"categories": [
|
|
19
|
+
"faqs"
|
|
20
|
+
],
|
|
15
21
|
"type": "registry:block"
|
|
16
22
|
}
|
package/public/r/features-1.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "features-1",
|
|
4
|
+
"title": "Features 1",
|
|
5
|
+
"description": "Feature section layouts for product narratives, launch pages, and capability overviews.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@lucide/astro"
|
|
6
8
|
],
|
|
@@ -11,9 +13,13 @@
|
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/features-1.astro",
|
|
14
|
-
"content": "---\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {
|
|
16
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n href?: string\n linkText?: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"items-center gap-6 text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-4\">\n <SectionTitle>\n {title}\n </SectionTitle>\n <SectionDescription class=\"max-w-2xl\">\n {description}\n </SectionDescription>\n </div>\n {\n buttons?.length && (\n <div class=\"flex flex-wrap justify-center gap-3\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n variant={button.variant ?? (index === 0 ? \"default\" : \"outline\")}\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </SectionContainer>\n <SectionContainer>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n {\n features.map((feature) => (\n <div class=\"group/feature hover:bg-muted/40 flex flex-col gap-4 rounded-xl border p-6 transition-colors\">\n <div class=\"bg-primary/10 text-primary flex size-10 items-center justify-center rounded-lg\">\n <Icon name={feature.icon} class=\"size-5\" />\n </div>\n <div class=\"flex flex-col gap-1.5\">\n <h3 class=\"text-foreground text-base font-medium\">\n {feature.title}\n </h3>\n <p class=\"text-muted-foreground text-sm leading-relaxed\">\n {feature.description}\n </p>\n </div>\n {feature.href && feature.linkText && (\n <a\n href={feature.href}\n class=\"text-primary mt-auto inline-flex items-center gap-1 text-sm font-medium hover:underline\"\n >\n {feature.linkText}\n <ArrowRightIcon class=\"size-3.5\" />\n </a>\n )}\n </div>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
|
20
|
+
"docs": "https://ui.full.dev/blocks/features/",
|
|
21
|
+
"categories": [
|
|
22
|
+
"features"
|
|
23
|
+
],
|
|
18
24
|
"type": "registry:block"
|
|
19
25
|
}
|
package/public/r/features-2.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "features-2",
|
|
4
|
+
"title": "Features 2",
|
|
5
|
+
"description": "Feature section layouts for product narratives, launch pages, and capability overviews.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@lucide/astro"
|
|
6
8
|
],
|
|
@@ -11,9 +13,13 @@
|
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/features-2.astro",
|
|
14
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {
|
|
16
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"items-center gap-6 text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-4\">\n <SectionTitle>\n {title}\n </SectionTitle>\n <SectionDescription class=\"max-w-2xl\">\n {description}\n </SectionDescription>\n </div>\n {\n buttons?.length && (\n <div class=\"flex flex-wrap justify-center gap-3\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n variant={button.variant ?? (index === 0 ? \"default\" : \"outline\")}\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </SectionContainer>\n <SectionContainer>\n <div\n class=\"ring-foreground/10 bg-border grid gap-px overflow-hidden rounded-xl ring-1 ring-inset sm:grid-cols-2 lg:grid-cols-3\"\n >\n {\n features.map((feature) => (\n <div class=\"bg-background group/feature hover:bg-accent/30 relative flex flex-col items-center gap-4 p-7 text-center transition-colors\">\n <div class=\"bg-primary/10 text-primary ring-primary/15 flex size-10 items-center justify-center rounded-lg ring-1 transition-transform ring-inset group-hover/feature:scale-105\">\n <Icon name={feature.icon} class=\"size-5\" />\n </div>\n <h3 class=\"text-foreground text-base font-medium tracking-tight text-balance\">\n {feature.title}\n </h3>\n <p class=\"text-muted-foreground text-sm leading-relaxed text-balance\">\n {feature.description}\n </p>\n </div>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
|
20
|
+
"docs": "https://ui.full.dev/blocks/features/",
|
|
21
|
+
"categories": [
|
|
22
|
+
"features"
|
|
23
|
+
],
|
|
18
24
|
"type": "registry:block"
|
|
19
25
|
}
|
package/public/r/features-3.json
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "features-3",
|
|
4
|
+
"title": "Features 3",
|
|
5
|
+
"description": "Feature section layouts for product narratives, launch pages, and capability overviews.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/section"
|
|
6
8
|
],
|
|
7
9
|
"files": [
|
|
8
10
|
{
|
|
9
11
|
"path": "src/components/blocks/features-3.astro",
|
|
10
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport {
|
|
12
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: {\n title: string\n description: string\n image: {\n src: ImageMetadata\n alt: string\n }\n }[]\n}\n\nconst { class: className, title, description, features, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"items-center gap-6 text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-4\">\n <SectionTitle>\n {title}\n </SectionTitle>\n <SectionDescription class=\"max-w-2xl\">\n {description}\n </SectionDescription>\n </div>\n </SectionContainer>\n <SectionContainer>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n {\n features.map((feature) => (\n <div class=\"group/feature hover:bg-muted/40 flex items-center gap-5 rounded-xl border p-4 transition-colors\">\n <Image\n src={feature.image.src}\n alt={feature.image.alt}\n class=\"size-20 shrink-0 rounded-lg object-cover\"\n widths={[160, 320]}\n sizes=\"80px\"\n />\n <div class=\"flex flex-col gap-1.5\">\n <h3 class=\"text-foreground text-base font-medium\">\n {feature.title}\n </h3>\n <p class=\"text-muted-foreground text-sm leading-relaxed\">\n {feature.description}\n </p>\n </div>\n </div>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
11
13
|
"type": "registry:block"
|
|
12
14
|
}
|
|
13
15
|
],
|
|
16
|
+
"docs": "https://ui.full.dev/blocks/features/",
|
|
17
|
+
"categories": [
|
|
18
|
+
"features"
|
|
19
|
+
],
|
|
14
20
|
"type": "registry:block"
|
|
15
21
|
}
|
package/public/r/features-4.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "features-4",
|
|
4
|
+
"title": "Features 4",
|
|
5
|
+
"description": "Feature section layouts for product narratives, launch pages, and capability overviews.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@lucide/astro"
|
|
6
8
|
],
|
|
@@ -11,9 +13,13 @@
|
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/features-4.astro",
|
|
14
|
-
"content": "---\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {
|
|
16
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n href?: string\n linkText?: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer>\n <div class=\"grid gap-12 lg:grid-cols-[1fr_2fr] lg:items-start\">\n <div class=\"lg:sticky lg:top-28\">\n <SectionTitle>\n {title}\n </SectionTitle>\n <p\n class=\"text-muted-foreground mt-4 text-base leading-relaxed text-balance\"\n >\n {description}\n </p>\n {\n buttons?.length && (\n <div class=\"mt-6 flex flex-wrap gap-3\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"outline\")\n }\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </div>\n <div class=\"grid gap-6 sm:grid-cols-2\">\n {\n features.map((feature) => (\n <div class=\"group/feature hover:bg-muted/40 flex flex-col gap-4 rounded-xl border p-6 transition-colors\">\n <div class=\"bg-primary/10 text-primary flex size-10 items-center justify-center rounded-lg\">\n <Icon name={feature.icon} class=\"size-5\" />\n </div>\n <div class=\"flex flex-col gap-1.5\">\n <h3 class=\"text-foreground text-base font-medium\">\n {feature.title}\n </h3>\n <p class=\"text-muted-foreground text-sm leading-relaxed\">\n {feature.description}\n </p>\n </div>\n {feature.href && feature.linkText && (\n <a\n href={feature.href}\n class=\"text-primary mt-auto inline-flex items-center gap-1 text-sm font-medium hover:underline\"\n >\n {feature.linkText}\n <ArrowRightIcon class=\"size-3.5\" />\n </a>\n )}\n </div>\n ))\n }\n </div>\n </div>\n </SectionContainer>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
|
20
|
+
"docs": "https://ui.full.dev/blocks/features/",
|
|
21
|
+
"categories": [
|
|
22
|
+
"features"
|
|
23
|
+
],
|
|
18
24
|
"type": "registry:block"
|
|
19
25
|
}
|
package/public/r/features-5.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "features-5",
|
|
4
|
+
"title": "Features 5",
|
|
5
|
+
"description": "Feature section layouts for product narratives, launch pages, and capability overviews.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@lucide/astro"
|
|
6
8
|
],
|
|
@@ -11,9 +13,13 @@
|
|
|
11
13
|
"files": [
|
|
12
14
|
{
|
|
13
15
|
"path": "src/components/blocks/features-5.astro",
|
|
14
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {
|
|
16
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n<Section variant=\"floating\" class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"items-center gap-6 text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-4\">\n <SectionTitle>\n {title}\n </SectionTitle>\n <SectionDescription class=\"max-w-2xl\">\n {description}\n </SectionDescription>\n </div>\n {\n buttons?.length && (\n <div class=\"flex flex-wrap justify-center gap-3\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n variant={button.variant ?? (index === 0 ? \"default\" : \"outline\")}\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </SectionContainer>\n <SectionContainer>\n <div class=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {\n features.map((feature) => (\n <div class=\"group/feature flex flex-col items-center gap-4 text-center\">\n <div class=\"bg-primary/5 text-primary border-primary/20 flex size-12 items-center justify-center rounded-xl border\">\n <Icon name={feature.icon} class=\"size-5\" />\n </div>\n <h3 class=\"text-foreground text-base font-medium text-balance\">\n {feature.title}\n </h3>\n <p class=\"text-muted-foreground text-sm leading-relaxed text-balance\">\n {feature.description}\n </p>\n </div>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
15
17
|
"type": "registry:block"
|
|
16
18
|
}
|
|
17
19
|
],
|
|
20
|
+
"docs": "https://ui.full.dev/blocks/features/",
|
|
21
|
+
"categories": [
|
|
22
|
+
"features"
|
|
23
|
+
],
|
|
18
24
|
"type": "registry:block"
|
|
19
25
|
}
|
package/public/r/features-6.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "features-6",
|
|
4
|
+
"title": "Features 6",
|
|
5
|
+
"description": "Feature section layouts for product narratives, launch pages, and capability overviews.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/button",
|
|
6
8
|
"@fulldev/section",
|
|
@@ -9,9 +11,13 @@
|
|
|
9
11
|
"files": [
|
|
10
12
|
{
|
|
11
13
|
"path": "src/components/blocks/features-6.astro",
|
|
12
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {
|
|
14
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer>\n <div class=\"flex max-w-2xl flex-col gap-4\">\n <SectionTitle>\n {title}\n </SectionTitle>\n <p class=\"text-muted-foreground text-base leading-relaxed text-balance\">\n {description}\n </p>\n {\n buttons?.length && (\n <div class=\"mt-2 flex flex-wrap gap-3\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"outline\")\n }\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </div>\n </SectionContainer>\n <SectionContainer>\n <div class=\"grid gap-12 sm:grid-cols-2 lg:grid-cols-3\">\n {\n features.map((feature) => (\n <div>\n <Separator />\n <div class=\"pt-6\">\n <h3 class=\"text-foreground text-lg font-medium\">\n {feature.title}\n </h3>\n <p class=\"text-muted-foreground mt-2 text-sm leading-relaxed\">\n {feature.description}\n </p>\n </div>\n </div>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
13
15
|
"type": "registry:block"
|
|
14
16
|
}
|
|
15
17
|
],
|
|
18
|
+
"docs": "https://ui.full.dev/blocks/features/",
|
|
19
|
+
"categories": [
|
|
20
|
+
"features"
|
|
21
|
+
],
|
|
16
22
|
"type": "registry:block"
|
|
17
23
|
}
|
package/public/r/field.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "field",
|
|
4
|
+
"title": "Field",
|
|
5
|
+
"description": "Combine labels, controls, and help text to compose accessible form fields and grouped inputs.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/label",
|
|
6
8
|
"@fulldev/separator"
|
|
@@ -57,5 +59,9 @@
|
|
|
57
59
|
"type": "registry:ui"
|
|
58
60
|
}
|
|
59
61
|
],
|
|
62
|
+
"docs": "https://ui.full.dev/components/field/",
|
|
63
|
+
"categories": [
|
|
64
|
+
"ui"
|
|
65
|
+
],
|
|
60
66
|
"type": "registry:ui"
|
|
61
67
|
}
|
package/public/r/footer-1.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "footer-1",
|
|
4
|
+
"title": "Footer 1",
|
|
5
|
+
"description": "Footer layouts for utility navigation, brand presence, and last-mile calls to action.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"simple-icons-astro"
|
|
6
8
|
],
|
|
@@ -12,9 +14,13 @@
|
|
|
12
14
|
"files": [
|
|
13
15
|
{
|
|
14
16
|
"path": "src/components/blocks/footer-1.astro",
|
|
15
|
-
"content": "---\nimport Discord from \"simple-icons-astro/Discord\"\nimport Github from \"simple-icons-astro/Github\"\nimport X from \"simple-icons-astro/X\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props =
|
|
17
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport Discord from \"simple-icons-astro/Discord\"\nimport Github from \"simple-icons-astro/Github\"\nimport X from \"simple-icons-astro/X\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n socials?: {\n label: string\n href: string\n icon: string\n }[]\n columns: {\n title: string\n links: {\n label: string\n href: string\n }[]\n }[]\n copyright: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n socials,\n columns,\n copyright,\n ...props\n} = Astro.props\n\nconst iconMap: Record<string, any> = {\n github: Github,\n discord: Discord,\n x: X,\n}\n---\n\n<footer class={cn(\"\", className)} {...props}>\n <Section class=\"py-16 lg:py-20\">\n <SectionContainer>\n <div class=\"grid gap-10 lg:grid-cols-[1fr_2fr]\">\n <div class=\"flex flex-col gap-5\">\n <Logo href={brandHref}>\n <LogoText>{brandName}</LogoText>\n </Logo>\n <p class=\"text-muted-foreground max-w-xs text-sm leading-relaxed\">\n {description}\n </p>\n {\n socials && socials.length > 0 && (\n <div class=\"flex items-center gap-3\">\n {socials.map((social) => {\n const IconComp = iconMap[social.icon]\n return (\n <a\n href={social.href}\n class=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={social.label}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {IconComp && (\n <IconComp class=\"size-4\" fill=\"currentColor\" />\n )}\n </a>\n )\n })}\n </div>\n )\n }\n </div>\n <div class=\"grid gap-8 sm:grid-cols-3\">\n {\n columns.map((column) => (\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm font-medium\">{column.title}</p>\n <ul class=\"flex flex-col gap-2.5\">\n {column.links.map((link) => (\n <li>\n <a\n href={link.href}\n class=\"text-muted-foreground hover:text-foreground text-sm transition-colors\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))\n }\n </div>\n </div>\n <Separator />\n <p class=\"text-muted-foreground text-sm\">{copyright}</p>\n </SectionContainer>\n </Section>\n</footer>\n",
|
|
16
18
|
"type": "registry:block"
|
|
17
19
|
}
|
|
18
20
|
],
|
|
21
|
+
"docs": "https://ui.full.dev/blocks/footer/",
|
|
22
|
+
"categories": [
|
|
23
|
+
"footer"
|
|
24
|
+
],
|
|
19
25
|
"type": "registry:block"
|
|
20
26
|
}
|
package/public/r/footer-2.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "footer-2",
|
|
4
|
+
"title": "Footer 2",
|
|
5
|
+
"description": "Footer layouts for utility navigation, brand presence, and last-mile calls to action.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"simple-icons-astro"
|
|
6
8
|
],
|
|
@@ -12,9 +14,13 @@
|
|
|
12
14
|
"files": [
|
|
13
15
|
{
|
|
14
16
|
"path": "src/components/blocks/footer-2.astro",
|
|
15
|
-
"content": "---\nimport Discord from \"simple-icons-astro/Discord\"\nimport Github from \"simple-icons-astro/Github\"\nimport X from \"simple-icons-astro/X\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props =
|
|
17
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport Discord from \"simple-icons-astro/Discord\"\nimport Github from \"simple-icons-astro/Github\"\nimport X from \"simple-icons-astro/X\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n links?: {\n label: string\n href: string\n }[]\n socials?: {\n label: string\n href: string\n icon: string\n }[]\n copyright: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n links,\n socials,\n copyright,\n ...props\n} = Astro.props\n\nconst iconMap: Record<string, any> = {\n github: Github,\n discord: Discord,\n x: X,\n}\n---\n\n<footer class={cn(\"\", className)} {...props}>\n <Section class=\"py-12 lg:py-16\">\n <SectionContainer class=\"items-center text-center\">\n <Logo href={brandHref}>\n <LogoText>{brandName}</LogoText>\n </Logo>\n <p class=\"text-muted-foreground max-w-md text-sm leading-relaxed\">\n {description}\n </p>\n {\n links && links.length > 0 && (\n <nav class=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n {links.map((link) => (\n <a\n href={link.href}\n class=\"text-muted-foreground hover:text-foreground text-sm transition-colors\"\n >\n {link.label}\n </a>\n ))}\n </nav>\n )\n }\n {\n socials && socials.length > 0 && (\n <div class=\"flex items-center justify-center gap-3\">\n {socials.map((social) => {\n const IconComp = iconMap[social.icon]\n return (\n <a\n href={social.href}\n class=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={social.label}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {IconComp && <IconComp class=\"size-4\" fill=\"currentColor\" />}\n </a>\n )\n })}\n </div>\n )\n }\n <Separator />\n <p class=\"text-muted-foreground text-sm\">{copyright}</p>\n </SectionContainer>\n </Section>\n</footer>\n",
|
|
16
18
|
"type": "registry:block"
|
|
17
19
|
}
|
|
18
20
|
],
|
|
21
|
+
"docs": "https://ui.full.dev/blocks/footer/",
|
|
22
|
+
"categories": [
|
|
23
|
+
"footer"
|
|
24
|
+
],
|
|
19
25
|
"type": "registry:block"
|
|
20
26
|
}
|
package/public/r/footer-3.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "footer-3",
|
|
4
|
+
"title": "Footer 3",
|
|
5
|
+
"description": "Footer layouts for utility navigation, brand presence, and last-mile calls to action.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"simple-icons-astro"
|
|
6
8
|
],
|
|
@@ -12,9 +14,13 @@
|
|
|
12
14
|
"files": [
|
|
13
15
|
{
|
|
14
16
|
"path": "src/components/blocks/footer-3.astro",
|
|
15
|
-
"content": "---\nimport Discord from \"simple-icons-astro/Discord\"\nimport Github from \"simple-icons-astro/Github\"\nimport X from \"simple-icons-astro/X\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props =
|
|
17
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport Discord from \"simple-icons-astro/Discord\"\nimport Github from \"simple-icons-astro/Github\"\nimport X from \"simple-icons-astro/X\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n socials?: {\n label: string\n href: string\n icon: string\n }[]\n columns: {\n title: string\n links: {\n label: string\n href: string\n }[]\n }[]\n copyright: string\n bottomLinks?: {\n label: string\n href: string\n }[]\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n socials,\n columns,\n copyright,\n bottomLinks,\n ...props\n} = Astro.props\n\nconst iconMap: Record<string, any> = {\n github: Github,\n discord: Discord,\n x: X,\n}\n---\n\n<footer class={cn(\"\", className)} {...props}>\n <Section class=\"py-16 lg:py-20\">\n <SectionContainer>\n <div class=\"grid gap-10 lg:grid-cols-[1fr_2fr]\">\n <div class=\"flex flex-col gap-5\">\n <Logo href={brandHref}>\n <LogoText>{brandName}</LogoText>\n </Logo>\n <p class=\"text-muted-foreground max-w-xs text-sm leading-relaxed\">\n {description}\n </p>\n {\n socials && socials.length > 0 && (\n <div class=\"flex items-center gap-3\">\n {socials.map((social) => {\n const IconComp = iconMap[social.icon]\n return (\n <a\n href={social.href}\n class=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={social.label}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {IconComp && (\n <IconComp class=\"size-4\" fill=\"currentColor\" />\n )}\n </a>\n )\n })}\n </div>\n )\n }\n </div>\n <div class=\"grid gap-8 sm:grid-cols-3\">\n {\n columns.map((column) => (\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm font-medium\">{column.title}</p>\n <ul class=\"flex flex-col gap-2.5\">\n {column.links.map((link) => (\n <li>\n <a\n href={link.href}\n class=\"text-muted-foreground hover:text-foreground text-sm transition-colors\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))\n }\n </div>\n </div>\n <Separator />\n <div\n class=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\"\n >\n <p class=\"text-muted-foreground text-sm\">{copyright}</p>\n {\n bottomLinks && bottomLinks.length > 0 && (\n <nav class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n {bottomLinks.map((link) => (\n <a\n href={link.href}\n class=\"text-muted-foreground hover:text-foreground text-sm transition-colors\"\n >\n {link.label}\n </a>\n ))}\n </nav>\n )\n }\n </div>\n </SectionContainer>\n </Section>\n</footer>\n",
|
|
16
18
|
"type": "registry:block"
|
|
17
19
|
}
|
|
18
20
|
],
|
|
21
|
+
"docs": "https://ui.full.dev/blocks/footer/",
|
|
22
|
+
"categories": [
|
|
23
|
+
"footer"
|
|
24
|
+
],
|
|
19
25
|
"type": "registry:block"
|
|
20
26
|
}
|
package/public/r/form.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "form",
|
|
4
|
+
"title": "Form",
|
|
5
|
+
"description": "A thin Astro form wrapper with sensible vertical spacing for fulldev field primitives.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/form/form.astro",
|
|
@@ -13,5 +15,9 @@
|
|
|
13
15
|
"type": "registry:ui"
|
|
14
16
|
}
|
|
15
17
|
],
|
|
18
|
+
"docs": "https://ui.full.dev/components/form/",
|
|
19
|
+
"categories": [
|
|
20
|
+
"ui"
|
|
21
|
+
],
|
|
16
22
|
"type": "registry:ui"
|
|
17
23
|
}
|
package/public/r/header-1.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "header-1",
|
|
4
|
+
"title": "Header 1",
|
|
5
|
+
"description": "Header layouts for brand, navigation, and high-level page actions.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/button",
|
|
6
8
|
"@fulldev/header",
|
|
@@ -12,9 +14,13 @@
|
|
|
12
14
|
"files": [
|
|
13
15
|
{
|
|
14
16
|
"path": "src/components/blocks/header-1.astro",
|
|
15
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props =
|
|
17
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst { class: className, logo, navigation, buttons, ...props } = Astro.props\n---\n\n<Header class={cn(\"\", className)} {...props}>\n <HeaderContainer class=\"items-center justify-between gap-4\">\n <HeaderGroup>\n <Logo href={logo.href}>\n <LogoImage\n src={logo.src}\n srcLight={logo.srcLight}\n srcDark={logo.srcDark}\n alt={logo.alt}\n />\n {logo.label && <LogoText>{logo.label}</LogoText>}\n </Logo>\n </HeaderGroup>\n <NavigationMenu class=\"hidden flex-none justify-start lg:flex\">\n <NavigationMenuList class=\"justify-start\">\n {\n navigation.map((item, index) => (\n <NavigationMenuItem value={`nav-${index}`}>\n <NavigationMenuLink href={item.href}>\n {item.label}\n </NavigationMenuLink>\n </NavigationMenuItem>\n ))\n }\n </NavigationMenuList>\n </NavigationMenu>\n <HeaderGroup class=\"ml-auto hidden flex-1 justify-end lg:flex\">\n <slot />\n {\n buttons.map(({ label, icon, ...button }) => (\n <Button\n as=\"a\"\n size={icon && !label ? \"icon-sm\" : \"sm\"}\n aria-label={label}\n target={button.href.startsWith(\"http\") ? \"_blank\" : undefined}\n rel={button.href.startsWith(\"http\") ? \"noreferrer\" : undefined}\n {...button}\n >\n {icon && <Icon name={icon} />}\n {label}\n </Button>\n ))\n }\n </HeaderGroup>\n <Sheet class=\"lg:hidden\">\n <SheetTrigger\n variant=\"ghost\"\n size=\"icon-sm\"\n class=\"ml-auto\"\n aria-label=\"Open menu\"\n >\n <Icon name=\"menu\" />\n </SheetTrigger>\n <SheetContent side=\"right\" class=\"p-0\">\n <SheetHeader class=\"sr-only\">\n <SheetTitle>Menu</SheetTitle>\n <SheetDescription>Site navigation and actions.</SheetDescription>\n </SheetHeader>\n <div class=\"flex h-full flex-col gap-6 px-4 py-12\">\n <nav aria-label=\"Main navigation\" class=\"flex flex-col gap-1\">\n {\n navigation.map((item) => (\n <SheetClose\n as=\"a\"\n href={item.href}\n variant=\"ghost\"\n class=\"justify-start\"\n >\n {item.label}\n </SheetClose>\n ))\n }\n </nav>\n <div class=\"mt-auto flex flex-col gap-2\">\n <slot name=\"mobile\" />\n </div>\n </div>\n </SheetContent>\n </Sheet>\n </HeaderContainer>\n</Header>\n",
|
|
16
18
|
"type": "registry:block"
|
|
17
19
|
}
|
|
18
20
|
],
|
|
21
|
+
"docs": "https://ui.full.dev/blocks/header/",
|
|
22
|
+
"categories": [
|
|
23
|
+
"header"
|
|
24
|
+
],
|
|
19
25
|
"type": "registry:block"
|
|
20
26
|
}
|
package/public/r/header-2.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "header-2",
|
|
4
|
+
"title": "Header 2",
|
|
5
|
+
"description": "Header layouts for brand, navigation, and high-level page actions.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/button",
|
|
6
8
|
"@fulldev/header",
|
|
@@ -12,9 +14,13 @@
|
|
|
12
14
|
"files": [
|
|
13
15
|
{
|
|
14
16
|
"path": "src/components/blocks/header-2.astro",
|
|
15
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props =
|
|
17
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst { class: className, logo, navigation, buttons, ...props } = Astro.props\n---\n\n<Header variant=\"floating\" class={cn(\"\", className)} {...props}>\n <HeaderContainer class=\"justify-between\">\n <HeaderGroup>\n <Logo href={logo.href}>\n <LogoImage\n src={logo.src}\n srcLight={logo.srcLight}\n srcDark={logo.srcDark}\n alt={logo.alt}\n />\n {logo.label && <LogoText>{logo.label}</LogoText>}\n </Logo>\n </HeaderGroup>\n <NavigationMenu\n class=\"absolute left-1/2 hidden max-w-none -translate-x-1/2 lg:flex\"\n >\n <NavigationMenuList>\n {\n navigation.map((item, index) => (\n <NavigationMenuItem value={`nav-${index}`}>\n <NavigationMenuLink href={item.href}>\n {item.label}\n </NavigationMenuLink>\n </NavigationMenuItem>\n ))\n }\n </NavigationMenuList>\n </NavigationMenu>\n <HeaderGroup class=\"ml-auto hidden justify-end lg:flex\">\n <slot />\n {\n buttons.map(({ label, icon, ...button }) => (\n <Button\n as=\"a\"\n size={icon && !label ? \"icon-sm\" : \"sm\"}\n aria-label={label}\n target={button.href.startsWith(\"http\") ? \"_blank\" : undefined}\n rel={button.href.startsWith(\"http\") ? \"noreferrer\" : undefined}\n {...button}\n >\n {icon && <Icon name={icon} />}\n {label}\n </Button>\n ))\n }\n </HeaderGroup>\n <Sheet class=\"lg:hidden\">\n <SheetTrigger\n variant=\"ghost\"\n size=\"icon-sm\"\n class=\"ml-auto\"\n aria-label=\"Open menu\"\n >\n <Icon name=\"menu\" />\n </SheetTrigger>\n <SheetContent side=\"right\" class=\"p-0\">\n <SheetHeader class=\"sr-only\">\n <SheetTitle>Menu</SheetTitle>\n <SheetDescription>Site navigation and actions.</SheetDescription>\n </SheetHeader>\n <div class=\"flex h-full flex-col gap-6 px-4 py-12\">\n <nav aria-label=\"Main navigation\" class=\"flex flex-col gap-1\">\n {\n navigation.map((item) => (\n <SheetClose\n as=\"a\"\n href={item.href}\n variant=\"ghost\"\n class=\"justify-start\"\n >\n {item.label}\n </SheetClose>\n ))\n }\n </nav>\n <div class=\"mt-auto flex flex-col gap-2\">\n <slot name=\"mobile\" />\n </div>\n </div>\n </SheetContent>\n </Sheet>\n </HeaderContainer>\n</Header>\n",
|
|
16
18
|
"type": "registry:block"
|
|
17
19
|
}
|
|
18
20
|
],
|
|
21
|
+
"docs": "https://ui.full.dev/blocks/header/",
|
|
22
|
+
"categories": [
|
|
23
|
+
"header"
|
|
24
|
+
],
|
|
19
25
|
"type": "registry:block"
|
|
20
26
|
}
|
package/public/r/header-3.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "header-3",
|
|
4
|
+
"title": "Header 3",
|
|
5
|
+
"description": "Header layouts for brand, navigation, and high-level page actions.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/button",
|
|
6
8
|
"@fulldev/header",
|
|
@@ -13,9 +15,13 @@
|
|
|
13
15
|
"files": [
|
|
14
16
|
{
|
|
15
17
|
"path": "src/components/blocks/header-3.astro",
|
|
16
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props =
|
|
18
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst { class: className, logo, navigation, buttons, ...props } = Astro.props\n---\n\n<Header class={cn(\"border-b\", className)} {...props}>\n <HeaderContainer class=\"justify-between\">\n <HeaderGroup>\n <Logo href={logo.href}>\n <LogoImage\n src={logo.src}\n srcLight={logo.srcLight}\n srcDark={logo.srcDark}\n alt={logo.alt}\n />\n {logo.label && <LogoText>{logo.label}</LogoText>}\n </Logo>\n </HeaderGroup>\n <HeaderGroup class=\"ml-auto hidden justify-end gap-1 lg:flex\">\n <NavigationMenu class=\"hidden max-w-none justify-end lg:flex\">\n <NavigationMenuList>\n {\n navigation.map((item, index) => (\n <NavigationMenuItem value={`nav-${index}`}>\n <NavigationMenuLink href={item.href}>\n {item.label}\n </NavigationMenuLink>\n </NavigationMenuItem>\n ))\n }\n </NavigationMenuList>\n </NavigationMenu>\n <Separator\n orientation=\"vertical\"\n class=\"mx-1 hidden h-5 self-center lg:block\"\n />\n <slot />\n {\n buttons.map(({ label, icon, ...button }) => (\n <Button\n as=\"a\"\n size={icon && !label ? \"icon-sm\" : \"sm\"}\n aria-label={label}\n target={button.href.startsWith(\"http\") ? \"_blank\" : undefined}\n rel={button.href.startsWith(\"http\") ? \"noreferrer\" : undefined}\n {...button}\n >\n {icon && <Icon name={icon} />}\n {label}\n </Button>\n ))\n }\n </HeaderGroup>\n <Sheet class=\"lg:hidden\">\n <SheetTrigger\n variant=\"ghost\"\n size=\"icon-sm\"\n class=\"ml-auto\"\n aria-label=\"Open menu\"\n >\n <Icon name=\"menu\" />\n </SheetTrigger>\n <SheetContent side=\"right\" class=\"p-0\">\n <SheetHeader class=\"sr-only\">\n <SheetTitle>Menu</SheetTitle>\n <SheetDescription>Site navigation and actions.</SheetDescription>\n </SheetHeader>\n <div class=\"flex h-full flex-col gap-6 px-4 py-12\">\n <nav aria-label=\"Main navigation\" class=\"flex flex-col gap-1\">\n {\n navigation.map((item) => (\n <SheetClose\n as=\"a\"\n href={item.href}\n variant=\"ghost\"\n class=\"justify-start\"\n >\n {item.label}\n </SheetClose>\n ))\n }\n </nav>\n <Separator />\n <div class=\"mt-auto flex flex-col gap-2\">\n <slot name=\"mobile\" />\n </div>\n </div>\n </SheetContent>\n </Sheet>\n </HeaderContainer>\n</Header>\n",
|
|
17
19
|
"type": "registry:block"
|
|
18
20
|
}
|
|
19
21
|
],
|
|
22
|
+
"docs": "https://ui.full.dev/blocks/header/",
|
|
23
|
+
"categories": [
|
|
24
|
+
"header"
|
|
25
|
+
],
|
|
20
26
|
"type": "registry:block"
|
|
21
27
|
}
|