fulldev-ui 0.10.0 → 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 +12 -0
- package/README.md +7 -1
- package/package.json +6 -4
- package/public/r/accordion.json +8 -2
- package/public/r/alert-dialog.json +9 -3
- 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 +9 -3
- 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 +9 -2
- 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 +11 -5
- 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 +9 -3
- package/public/r/sidebar-1.json +5 -0
- package/public/r/sidebar.json +9 -3
- 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 +8 -2
- 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 +1138 -455
- 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-content.astro +2 -1
- package/src/components/ui/accordion/accordion.astro +1 -0
- package/src/components/ui/alert-dialog/alert-dialog-content.astro +1 -1
- package/src/components/ui/alert-dialog/alert-dialog-overlay.astro +1 -1
- 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-content.astro +1 -1
- package/src/components/ui/dialog/dialog-overlay.astro +1 -1
- 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 +10 -3
- package/src/components/ui/icon/icon.astro +46 -29
- package/src/components/ui/navigation-menu/navigation-menu-content.astro +2 -0
- package/src/components/ui/navigation-menu/navigation-menu-indicator.astro +2 -1
- package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
- package/src/components/ui/navigation-menu/navigation-menu-positioner.astro +2 -0
- 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-content.astro +2 -2
- package/src/components/ui/sheet/sheet.astro +2 -89
- package/src/components/ui/sidebar/sidebar-menu-button.astro +0 -1
- package/src/components/ui/sidebar/sidebar-provider.astro +36 -2
- package/src/components/ui/sidebar/sidebar.astro +0 -1
- package/src/components/ui/slider/slider.astro +4 -3
- package/src/components/ui/switch/switch.astro +5 -2
- package/src/components/ui/tabs/tabs-content.astro +2 -1
- package/src/components/ui/tabs/tabs.astro +1 -0
- package/src/components/ui/toggle/toggle.astro +3 -0
- package/src/components/ui/tooltip/tooltip.astro +1 -0
- package/src/lib/pages.ts +12 -0
package/public/r/hero-9.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "hero-9",
|
|
4
|
+
"title": "Hero 9",
|
|
5
|
+
"description": "Hero sections for launches, product storytelling, editorial pages, and social proof.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@lucide/astro"
|
|
6
8
|
],
|
|
@@ -13,9 +15,13 @@
|
|
|
13
15
|
"files": [
|
|
14
16
|
{
|
|
15
17
|
"path": "src/components/blocks/hero-9.astro",
|
|
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 =
|
|
18
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\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 = HTMLAttributes<\"section\"> & {\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 ...props\n} = Astro.props\n---\n\n<Section class={cn(\"dark bg-background\", className)} {...props}>\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",
|
|
17
19
|
"type": "registry:block"
|
|
18
20
|
}
|
|
19
21
|
],
|
|
22
|
+
"docs": "https://ui.full.dev/blocks/hero/",
|
|
23
|
+
"categories": [
|
|
24
|
+
"hero"
|
|
25
|
+
],
|
|
20
26
|
"type": "registry:block"
|
|
21
27
|
}
|
package/public/r/hover-card.json
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "hover-card",
|
|
4
|
+
"title": "Hover Card",
|
|
5
|
+
"description": "For sighted users to preview content available behind a link.",
|
|
4
6
|
"dependencies": [
|
|
5
|
-
"@data-slot/hover-card"
|
|
7
|
+
"@data-slot/hover-card",
|
|
8
|
+
"@data-slot/core"
|
|
6
9
|
],
|
|
7
10
|
"files": [
|
|
8
11
|
{
|
|
9
12
|
"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 = 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 {
|
|
13
|
+
"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-controlled-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 { getDataBool } from \"@data-slot/core\"\n import { createHoverCard } from \"@data-slot/hover-card\"\n\n const initialize = () => {\n document.querySelectorAll('[data-slot=\"hover-card\"]').forEach((root) => {\n createHoverCard(root, { open: getDataBool(root, \"controlledOpen\") })\n })\n }\n initialize()\n document.addEventListener(\"astro:page-load\", initialize)\n</script>\n",
|
|
11
14
|
"type": "registry:ui"
|
|
12
15
|
},
|
|
13
16
|
{
|
|
@@ -26,5 +29,9 @@
|
|
|
26
29
|
"type": "registry:ui"
|
|
27
30
|
}
|
|
28
31
|
],
|
|
32
|
+
"docs": "https://ui.full.dev/components/hover-card/",
|
|
33
|
+
"categories": [
|
|
34
|
+
"ui"
|
|
35
|
+
],
|
|
29
36
|
"type": "registry:ui"
|
|
30
37
|
}
|
package/public/r/icon.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "icon",
|
|
4
|
+
"title": "Icon",
|
|
5
|
+
"description": "Render Fulldev content icons or use Lucide and Simple Icons directly in Astro.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"lucide-static",
|
|
6
8
|
"simple-icons"
|
|
@@ -8,7 +10,7 @@
|
|
|
8
10
|
"files": [
|
|
9
11
|
{
|
|
10
12
|
"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\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(
|
|
13
|
+
"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\ntype Source = \"lucide\" | \"simple\"\n\nconst icons: Record<Source, Record<string, () => Promise<unknown>>> = {\n lucide: import.meta.glob(\"/node_modules/lucide-static/icons/*.svg\"),\n simple: import.meta.glob(\"/node_modules/simple-icons/icons/*.svg\"),\n}\n\nconst pathFor = (source: Source, icon: string) =>\n source === \"lucide\"\n ? `/node_modules/lucide-static/icons/${icon}.svg`\n : `/node_modules/simple-icons/icons/${icon}.svg`\n\n// Resolve an icon by explicit name, or derive one from a link href.\n// Names may be prefixed with `lucide:` or `simple:` to pick a set when both\n// sets contain the same name (for example `github` or `figma`).\nconst resolve = () => {\n let key = name != null && name !== \"\" ? String(name) : undefined\n let order: Source[] = [\"lucide\", \"simple\"]\n\n if (!key && href) {\n const hrefKey = Object.keys(hrefMap).find((candidate) =>\n href.toString().includes(candidate)\n )\n if (hrefKey) {\n key = hrefMap[hrefKey as keyof typeof hrefMap]\n order = [\"simple\", \"lucide\"]\n }\n }\n\n if (!key) return undefined\n if (key === \"x.com\") key = \"simple:x\"\n\n const [prefix, icon] = key.includes(\":\") ? key.split(\":\") : [undefined, key]\n if (prefix === \"lucide\" || prefix === \"simple\") order = [prefix]\n\n for (const source of order) {\n const path = pathFor(source, icon)\n if (path in icons[source]) return { source, path }\n }\n\n return undefined\n}\n\nconst resolved = resolve()\nconst module = resolved\n ? ((await icons[resolved.source][resolved.path]()) as { default?: any })\n : undefined\nconst Comp = module?.default\n\nconst isLabelled =\n \"aria-label\" in props || \"aria-labelledby\" in props || \"role\" in props\n---\n\n{\n Comp && resolved && (\n <Comp\n height={24}\n width={24}\n fill={resolved.source === \"simple\" ? \"currentColor\" : \"none\"}\n class=\"size-[1em] text-base\"\n aria-hidden={isLabelled ? undefined : \"true\"}\n {...props}\n />\n )\n}\n",
|
|
12
14
|
"type": "registry:ui"
|
|
13
15
|
},
|
|
14
16
|
{
|
|
@@ -17,5 +19,9 @@
|
|
|
17
19
|
"type": "registry:ui"
|
|
18
20
|
}
|
|
19
21
|
],
|
|
22
|
+
"docs": "https://ui.full.dev/components/icon/",
|
|
23
|
+
"categories": [
|
|
24
|
+
"ui"
|
|
25
|
+
],
|
|
20
26
|
"type": "registry:ui"
|
|
21
27
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "init",
|
|
4
|
+
"title": "Init",
|
|
5
|
+
"description": "Shared setup: class helper, Tailwind token layer, and dependencies.",
|
|
6
|
+
"dependencies": [
|
|
7
|
+
"class-variance-authority",
|
|
8
|
+
"clsx",
|
|
9
|
+
"shadcn",
|
|
10
|
+
"tailwind-merge",
|
|
11
|
+
"tw-animate-css"
|
|
12
|
+
],
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "src/lib/utils.ts",
|
|
16
|
+
"content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n",
|
|
17
|
+
"type": "registry:lib"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"path": "registry/init/global.css",
|
|
21
|
+
"content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@import \"shadcn/tailwind.css\";\n\n@custom-variant dark (&:where(.dark, .dark *));\n\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.5488 0.2498 261.783);\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(1 0 0);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.5488 0.2498 261.783);\n --sidebar-primary-foreground: oklch(1 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n --radius: 0.625rem;\n --shadow-x: 0;\n --shadow-y: 1px;\n --shadow-blur: 3px;\n --shadow-spread: 0px;\n --shadow-opacity: 0.1;\n --shadow-color: oklch(0 0 0);\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n --tracking-normal: 0em;\n --spacing: 0.25rem;\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.269 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.686 0.2105 41.139);\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.371 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.275 0 0);\n --input: oklch(0.325 0 0);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.686 0.2105 41.139);\n --sidebar-primary-foreground: oklch(1 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.275 0 0);\n --sidebar-ring: oklch(0.439 0 0);\n --radius: 0.625rem;\n --shadow-x: 0;\n --shadow-y: 1px;\n --shadow-blur: 3px;\n --shadow-spread: 0px;\n --shadow-opacity: 0.1;\n --shadow-color: oklch(0 0 0);\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n}\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n --shadow-2xs: var(--shadow-2xs);\n --shadow-xs: var(--shadow-xs);\n --shadow-sm: var(--shadow-sm);\n --shadow: var(--shadow);\n --shadow-md: var(--shadow-md);\n --shadow-lg: var(--shadow-lg);\n --shadow-xl: var(--shadow-xl);\n --shadow-2xl: var(--shadow-2xl);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n html {\n @apply font-sans;\n }\n body {\n @apply bg-background text-foreground font-sans;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *,\n ::before,\n ::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n",
|
|
22
|
+
"type": "registry:style",
|
|
23
|
+
"target": "src/styles/global.css"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"docs": "https://ui.full.dev/docs/installation/",
|
|
27
|
+
"type": "registry:base"
|
|
28
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "input-group",
|
|
4
|
+
"title": "Input Group",
|
|
5
|
+
"description": "Add addons, buttons, and helper content to inputs.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/button",
|
|
6
8
|
"@fulldev/dropdown-menu",
|
|
@@ -44,5 +46,9 @@
|
|
|
44
46
|
"type": "registry:ui"
|
|
45
47
|
}
|
|
46
48
|
],
|
|
49
|
+
"docs": "https://ui.full.dev/components/input-group/",
|
|
50
|
+
"categories": [
|
|
51
|
+
"ui"
|
|
52
|
+
],
|
|
47
53
|
"type": "registry:ui"
|
|
48
54
|
}
|
package/public/r/input.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "input",
|
|
4
|
+
"title": "Input",
|
|
5
|
+
"description": "Displays a form input field or a component that looks like an input field.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/input/input.astro",
|
|
@@ -13,5 +15,9 @@
|
|
|
13
15
|
"type": "registry:ui"
|
|
14
16
|
}
|
|
15
17
|
],
|
|
18
|
+
"docs": "https://ui.full.dev/components/input/",
|
|
19
|
+
"categories": [
|
|
20
|
+
"ui"
|
|
21
|
+
],
|
|
16
22
|
"type": "registry:ui"
|
|
17
23
|
}
|
package/public/r/item.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "item",
|
|
4
|
+
"title": "Item",
|
|
5
|
+
"description": "A flexible container for displaying content items with various styles.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/item/item.astro",
|
|
@@ -43,5 +45,9 @@
|
|
|
43
45
|
"type": "registry:ui"
|
|
44
46
|
}
|
|
45
47
|
],
|
|
48
|
+
"docs": "https://ui.full.dev/components/item/",
|
|
49
|
+
"categories": [
|
|
50
|
+
"ui"
|
|
51
|
+
],
|
|
46
52
|
"type": "registry:ui"
|
|
47
53
|
}
|
package/public/r/kbd.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "kbd",
|
|
4
|
+
"title": "Kbd",
|
|
5
|
+
"description": "Used to display textual user input from keyboard.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/kbd/kbd.astro",
|
|
@@ -18,5 +20,9 @@
|
|
|
18
20
|
"type": "registry:ui"
|
|
19
21
|
}
|
|
20
22
|
],
|
|
23
|
+
"docs": "https://ui.full.dev/components/kbd/",
|
|
24
|
+
"categories": [
|
|
25
|
+
"ui"
|
|
26
|
+
],
|
|
21
27
|
"type": "registry:ui"
|
|
22
28
|
}
|
package/public/r/label.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "label",
|
|
4
|
+
"title": "Label",
|
|
5
|
+
"description": "Renders an accessible label associated with a control.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/label/label.astro",
|
|
@@ -13,5 +15,9 @@
|
|
|
13
15
|
"type": "registry:ui"
|
|
14
16
|
}
|
|
15
17
|
],
|
|
18
|
+
"docs": "https://ui.full.dev/components/label/",
|
|
19
|
+
"categories": [
|
|
20
|
+
"ui"
|
|
21
|
+
],
|
|
16
22
|
"type": "registry:ui"
|
|
17
23
|
}
|
package/public/r/layout.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "layout",
|
|
4
|
+
"title": "Layout",
|
|
5
|
+
"description": "Page-shell primitives for the root html, head, body, and main structure.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/layout/layout.astro",
|
|
@@ -28,5 +30,9 @@
|
|
|
28
30
|
"type": "registry:ui"
|
|
29
31
|
}
|
|
30
32
|
],
|
|
33
|
+
"docs": "https://ui.full.dev/components/layout/",
|
|
34
|
+
"categories": [
|
|
35
|
+
"ui"
|
|
36
|
+
],
|
|
31
37
|
"type": "registry:ui"
|
|
32
38
|
}
|
package/public/r/links-2.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "links-2",
|
|
4
|
+
"title": "Links 2",
|
|
5
|
+
"description": "Link carousel blocks for presenting related pages, components, or resources.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@lucide/astro"
|
|
6
8
|
],
|
|
@@ -15,9 +17,13 @@
|
|
|
15
17
|
"files": [
|
|
16
18
|
{
|
|
17
19
|
"path": "src/components/blocks/links-2.astro",
|
|
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 =
|
|
20
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\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",
|
|
19
21
|
"type": "registry:block"
|
|
20
22
|
}
|
|
21
23
|
],
|
|
24
|
+
"docs": "https://ui.full.dev/blocks/links/",
|
|
25
|
+
"categories": [
|
|
26
|
+
"links"
|
|
27
|
+
],
|
|
22
28
|
"type": "registry:block"
|
|
23
29
|
}
|
package/public/r/logo.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "logo",
|
|
4
|
+
"title": "Logo",
|
|
5
|
+
"description": "A component for displaying a brand logo.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/logo/logo.astro",
|
|
@@ -23,5 +25,9 @@
|
|
|
23
25
|
"type": "registry:ui"
|
|
24
26
|
}
|
|
25
27
|
],
|
|
28
|
+
"docs": "https://ui.full.dev/components/logo/",
|
|
29
|
+
"categories": [
|
|
30
|
+
"ui"
|
|
31
|
+
],
|
|
26
32
|
"type": "registry:ui"
|
|
27
33
|
}
|
package/public/r/logos-1.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "logos-1",
|
|
4
|
+
"title": "Logos 1",
|
|
5
|
+
"description": "Logo sections for trust, partner strips, and quiet social proof.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/logo",
|
|
6
8
|
"@fulldev/section"
|
|
@@ -8,9 +10,13 @@
|
|
|
8
10
|
"files": [
|
|
9
11
|
{
|
|
10
12
|
"path": "src/components/blocks/logos-1.astro",
|
|
11
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport {
|
|
13
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\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 brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, title, description, brands, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"items-center gap-10 text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-4\">\n <SectionTitle>\n {title}\n </SectionTitle>\n {description && <SectionDescription>{description}</SectionDescription>}\n </div>\n <div\n class=\"text-muted-foreground flex w-full flex-wrap items-center justify-center gap-x-12 gap-y-6\"\n >\n {\n brands.map((brand) => (\n <Logo\n class=\"hover:text-foreground grayscale transition-all hover:grayscale-0\"\n href={brand.href}\n >\n <LogoText>{brand.name}</LogoText>\n </Logo>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
12
14
|
"type": "registry:block"
|
|
13
15
|
}
|
|
14
16
|
],
|
|
17
|
+
"docs": "https://ui.full.dev/blocks/logos/",
|
|
18
|
+
"categories": [
|
|
19
|
+
"logos"
|
|
20
|
+
],
|
|
15
21
|
"type": "registry:block"
|
|
16
22
|
}
|
package/public/r/logos-2.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "logos-2",
|
|
4
|
+
"title": "Logos 2",
|
|
5
|
+
"description": "Logo sections for trust, partner strips, and quiet social proof.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/logo",
|
|
6
8
|
"@fulldev/marquee",
|
|
@@ -9,9 +11,13 @@
|
|
|
9
11
|
"files": [
|
|
10
12
|
{
|
|
11
13
|
"path": "src/components/blocks/logos-2.astro",
|
|
12
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Marquee } from \"@/components/ui/marquee\"\nimport {
|
|
14
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Marquee } from \"@/components/ui/marquee\"\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 brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, title, description, brands, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n {\n (title || description) && (\n <SectionContainer class=\"items-center gap-4 text-center\">\n {title && <SectionTitle>{title}</SectionTitle>}\n {description && (\n <SectionDescription class=\"max-w-2xl\">\n {description}\n </SectionDescription>\n )}\n </SectionContainer>\n )\n }\n <Marquee\n class=\"text-muted-foreground mask-x-from-90%\"\n gap=\"3rem\"\n duration=\"30s\"\n pauseOnHover\n infinite\n >\n {\n brands.map((brand) => (\n <Logo\n class=\"hover:text-foreground grayscale transition-all hover:grayscale-0\"\n href={brand.href}\n >\n <LogoText>{brand.name}</LogoText>\n </Logo>\n ))\n }\n </Marquee>\n</Section>\n",
|
|
13
15
|
"type": "registry:block"
|
|
14
16
|
}
|
|
15
17
|
],
|
|
18
|
+
"docs": "https://ui.full.dev/blocks/logos/",
|
|
19
|
+
"categories": [
|
|
20
|
+
"logos"
|
|
21
|
+
],
|
|
16
22
|
"type": "registry:block"
|
|
17
23
|
}
|
package/public/r/logos-3.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "logos-3",
|
|
4
|
+
"title": "Logos 3",
|
|
5
|
+
"description": "Logo sections for trust, partner strips, and quiet social proof.",
|
|
4
6
|
"registryDependencies": [
|
|
5
7
|
"@fulldev/logo",
|
|
6
8
|
"@fulldev/section"
|
|
@@ -8,9 +10,13 @@
|
|
|
8
10
|
"files": [
|
|
9
11
|
{
|
|
10
12
|
"path": "src/components/blocks/logos-3.astro",
|
|
11
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props =
|
|
13
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, brands, ...props } = Astro.props\n---\n\n<Section class={cn(\"py-12 lg:py-16\", className)} {...props}>\n <SectionContainer>\n <div\n class=\"text-muted-foreground flex flex-wrap items-center justify-center gap-x-12 gap-y-6\"\n >\n {\n brands.map((brand) => (\n <Logo\n class=\"hover:text-foreground grayscale transition-all hover:grayscale-0\"\n href={brand.href}\n >\n <LogoText>{brand.name}</LogoText>\n </Logo>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
12
14
|
"type": "registry:block"
|
|
13
15
|
}
|
|
14
16
|
],
|
|
17
|
+
"docs": "https://ui.full.dev/blocks/logos/",
|
|
18
|
+
"categories": [
|
|
19
|
+
"logos"
|
|
20
|
+
],
|
|
15
21
|
"type": "registry:block"
|
|
16
22
|
}
|
package/public/r/marquee.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "marquee",
|
|
4
|
+
"title": "Marquee",
|
|
5
|
+
"description": "A continuous scrolling animation component for displaying content in a loop.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/marquee/marquee.astro",
|
|
@@ -13,5 +15,9 @@
|
|
|
13
15
|
"type": "registry:ui"
|
|
14
16
|
}
|
|
15
17
|
],
|
|
18
|
+
"docs": "https://ui.full.dev/components/marquee/",
|
|
19
|
+
"categories": [
|
|
20
|
+
"ui"
|
|
21
|
+
],
|
|
16
22
|
"type": "registry:ui"
|
|
17
23
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "native-select",
|
|
4
|
+
"title": "Native Select",
|
|
5
|
+
"description": "A styled native HTML select element with consistent design system integration.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@lucide/astro"
|
|
6
8
|
],
|
|
@@ -26,5 +28,9 @@
|
|
|
26
28
|
"type": "registry:ui"
|
|
27
29
|
}
|
|
28
30
|
],
|
|
31
|
+
"docs": "https://ui.full.dev/components/native-select/",
|
|
32
|
+
"categories": [
|
|
33
|
+
"ui"
|
|
34
|
+
],
|
|
29
35
|
"type": "registry:ui"
|
|
30
36
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "navigation-menu",
|
|
4
|
+
"title": "Navigation Menu",
|
|
5
|
+
"description": "A collection of links for navigating websites.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@data-slot/navigation-menu",
|
|
6
8
|
"@lucide/astro"
|
|
@@ -8,12 +10,12 @@
|
|
|
8
10
|
"files": [
|
|
9
11
|
{
|
|
10
12
|
"path": "src/components/ui/navigation-menu/navigation-menu.astro",
|
|
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",
|
|
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 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 document.addEventListener(\"astro:page-load\", () => create())\n</script>\n",
|
|
12
14
|
"type": "registry:ui"
|
|
13
15
|
},
|
|
14
16
|
{
|
|
15
17
|
"path": "src/components/ui/navigation-menu/navigation-menu-content.astro",
|
|
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",
|
|
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 hidden = true,\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 hidden={hidden}\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",
|
|
17
19
|
"type": "registry:ui"
|
|
18
20
|
},
|
|
19
21
|
{
|
|
@@ -28,12 +30,12 @@
|
|
|
28
30
|
},
|
|
29
31
|
{
|
|
30
32
|
"path": "src/components/ui/navigation-menu/navigation-menu-list.astro",
|
|
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",
|
|
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 relative flex flex-1 list-none items-center justify-center gap-0\",\n className\n )}\n {...props}\n>\n <slot />\n</ul>\n",
|
|
32
34
|
"type": "registry:ui"
|
|
33
35
|
},
|
|
34
36
|
{
|
|
35
37
|
"path": "src/components/ui/navigation-menu/navigation-menu-indicator.astro",
|
|
36
|
-
"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=\"navigation-menu-indicator\"\n class={cn(\n \"data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in top-full z-1 flex h-1.5 items-end justify-center overflow-hidden\",\n className\n )}\n {...props}\n>\n <div\n class=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\"\n >\n </div>\n</div>\n",
|
|
38
|
+
"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=\"navigation-menu-indicator\"\n data-state=\"hidden\"\n class={cn(\n \"data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in absolute top-full left-(--indicator-left) z-1 flex h-1.5 w-(--indicator-width) items-end justify-center overflow-hidden data-[state=hidden]:invisible\",\n className\n )}\n {...props}\n>\n <div\n class=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\"\n >\n </div>\n</div>\n",
|
|
37
39
|
"type": "registry:ui"
|
|
38
40
|
},
|
|
39
41
|
{
|
|
@@ -48,7 +50,7 @@
|
|
|
48
50
|
},
|
|
49
51
|
{
|
|
50
52
|
"path": "src/components/ui/navigation-menu/navigation-menu-positioner.astro",
|
|
51
|
-
"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 sideOffset?: number\n align?: \"start\" | \"center\" | \"end\"\n alignOffset?: number\n}\n\nconst {\n class: className,\n side = \"bottom\",\n sideOffset = 8,\n align = \"start\",\n alignOffset = 0,\n ...props\n} = Astro.props\n---\n\n<div data-slot=\"navigation-menu-portal\">\n <div\n {...props}\n data-slot=\"navigation-menu-positioner\"\n data-side={side}\n data-side-offset={sideOffset}\n data-align={align}\n data-align-offset={alignOffset}\n class={cn(\n \"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\",\n className\n )}\n >\n <div\n data-slot=\"navigation-menu-popup\"\n class=\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) bg-popover text-popover-foreground ring-foreground/10 relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-lg shadow ring-1 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\"\n >\n <div\n data-slot=\"navigation-menu-viewport\"\n class=\"relative size-full overflow-hidden\"\n >\n </div>\n </div>\n </div>\n</div>\n",
|
|
53
|
+
"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 sideOffset?: number\n align?: \"start\" | \"center\" | \"end\"\n alignOffset?: number\n}\n\nconst {\n class: className,\n side = \"bottom\",\n sideOffset = 8,\n align = \"start\",\n alignOffset = 0,\n ...props\n} = Astro.props\n---\n\n<div data-slot=\"navigation-menu-portal\">\n <div\n {...props}\n data-slot=\"navigation-menu-positioner\"\n data-side={side}\n data-side-offset={sideOffset}\n data-align={align}\n data-align-offset={alignOffset}\n class={cn(\n \"isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0\",\n className\n )}\n >\n <div\n data-slot=\"navigation-menu-popup\"\n hidden\n class=\"data-[ending-style]:easing-[ease] xs:w-(--popup-width) bg-popover text-popover-foreground ring-foreground/10 relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-lg shadow ring-1 transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\"\n >\n <div\n data-slot=\"navigation-menu-viewport\"\n hidden\n class=\"relative size-full overflow-hidden\"\n >\n </div>\n </div>\n </div>\n</div>\n",
|
|
52
54
|
"type": "registry:ui"
|
|
53
55
|
},
|
|
54
56
|
{
|
|
@@ -57,5 +59,9 @@
|
|
|
57
59
|
"type": "registry:ui"
|
|
58
60
|
}
|
|
59
61
|
],
|
|
62
|
+
"docs": "https://ui.full.dev/components/navigation-menu/",
|
|
63
|
+
"categories": [
|
|
64
|
+
"ui"
|
|
65
|
+
],
|
|
60
66
|
"type": "registry:ui"
|
|
61
67
|
}
|
package/public/r/popover.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "popover",
|
|
4
|
+
"title": "Popover",
|
|
5
|
+
"description": "Displays rich content in a floating layer, triggered by a button.",
|
|
4
6
|
"dependencies": [
|
|
5
7
|
"@data-slot/popover"
|
|
6
8
|
],
|
|
7
9
|
"files": [
|
|
8
10
|
{
|
|
9
11
|
"path": "src/components/ui/popover/popover.astro",
|
|
10
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { PopoverAlign, PopoverSide } from \"@data-slot/popover\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultOpen?: boolean\n side?: PopoverSide\n align?: PopoverAlign\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n portal?: boolean\n position?: PopoverSide\n closeOnClickOutside?: boolean\n closeOnEscape?: boolean\n}\n\nconst {\n class: className,\n defaultOpen,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n portal,\n position,\n closeOnClickOutside,\n closeOnEscape,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"popover\"\n data-default-open={defaultOpen}\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-position={position}\n data-close-on-click-outside={closeOnClickOutside}\n data-close-on-escape={closeOnEscape}\n class={className}\n {...props}\n>\n <slot />\n</div>\n\n<script>\n import { create } from \"@data-slot/popover\"\n\n create()\n</script>\n",
|
|
12
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { PopoverAlign, PopoverSide } from \"@data-slot/popover\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultOpen?: boolean\n side?: PopoverSide\n align?: PopoverAlign\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n portal?: boolean\n position?: PopoverSide\n closeOnClickOutside?: boolean\n closeOnEscape?: boolean\n}\n\nconst {\n class: className,\n defaultOpen,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n portal,\n position,\n closeOnClickOutside,\n closeOnEscape,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"popover\"\n data-default-open={defaultOpen}\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-position={position}\n data-close-on-click-outside={closeOnClickOutside}\n data-close-on-escape={closeOnEscape}\n class={className}\n {...props}\n>\n <slot />\n</div>\n\n<script>\n import { create } from \"@data-slot/popover\"\n\n create()\n document.addEventListener(\"astro:page-load\", () => create())\n</script>\n",
|
|
11
13
|
"type": "registry:ui"
|
|
12
14
|
},
|
|
13
15
|
{
|
|
@@ -41,5 +43,9 @@
|
|
|
41
43
|
"type": "registry:ui"
|
|
42
44
|
}
|
|
43
45
|
],
|
|
46
|
+
"docs": "https://ui.full.dev/components/popover/",
|
|
47
|
+
"categories": [
|
|
48
|
+
"ui"
|
|
49
|
+
],
|
|
44
50
|
"type": "registry:ui"
|
|
45
51
|
}
|
package/public/r/price.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "price",
|
|
4
|
+
"title": "Price",
|
|
5
|
+
"description": "A flexible price display component for showing pricing information.",
|
|
4
6
|
"files": [
|
|
5
7
|
{
|
|
6
8
|
"path": "src/components/ui/price/price.astro",
|
|
@@ -28,5 +30,9 @@
|
|
|
28
30
|
"type": "registry:ui"
|
|
29
31
|
}
|
|
30
32
|
],
|
|
33
|
+
"docs": "https://ui.full.dev/components/price/",
|
|
34
|
+
"categories": [
|
|
35
|
+
"ui"
|
|
36
|
+
],
|
|
31
37
|
"type": "registry:ui"
|
|
32
38
|
}
|