fulldev-ui 0.9.3 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +100 -16
- package/package.json +3 -2
- package/public/r/accordion.json +4 -6
- package/public/r/alert-dialog.json +3 -3
- package/public/r/alert.json +0 -5
- package/public/r/article-1.json +1 -1
- package/public/r/article-2.json +1 -1
- package/public/r/articles-1.json +1 -1
- package/public/r/articles-2.json +1 -1
- package/public/r/articles-3.json +1 -1
- package/public/r/avatar.json +1 -16
- package/public/r/badge.json +1 -1
- package/public/r/banner-1.json +5 -3
- package/public/r/banner-2.json +1 -1
- package/public/r/banner.json +5 -3
- package/public/r/blocks-1.json +6 -3
- package/public/r/breadcrumb.json +4 -4
- package/public/r/button.json +1 -1
- package/public/r/card.json +4 -4
- package/public/r/carousel.json +5 -5
- package/public/r/checkbox.json +1 -1
- package/public/r/combobox.json +8 -8
- package/public/r/command.json +6 -6
- package/public/r/components.json +1 -7
- package/public/r/contact-1.json +4 -2
- package/public/r/contact-2.json +4 -2
- package/public/r/contact-3.json +11 -3
- package/public/r/content-1.json +11 -3
- package/public/r/content-2.json +11 -3
- package/public/r/content-3.json +7 -1
- package/public/r/content-4.json +11 -3
- package/public/r/cta-2.json +7 -1
- package/public/r/cta-4.json +7 -1
- package/public/r/cta-5.json +11 -3
- package/public/r/cta-6.json +7 -1
- package/public/r/dialog.json +7 -7
- package/public/r/doc-1.json +6 -3
- package/public/r/dropdown-menu.json +9 -11
- package/public/r/features-1.json +5 -3
- package/public/r/features-2.json +5 -3
- package/public/r/features-4.json +5 -3
- package/public/r/features-5.json +4 -2
- package/public/r/field.json +2 -7
- package/public/r/footer-1.json +5 -3
- package/public/r/footer-2.json +5 -3
- package/public/r/footer-3.json +5 -3
- package/public/r/header-1.json +1 -1
- package/public/r/header.json +3 -0
- package/public/r/hero-13.json +1 -1
- package/public/r/hero-4.json +5 -3
- package/public/r/hero-5.json +5 -3
- package/public/r/hero-6.json +5 -3
- package/public/r/hero-7.json +5 -3
- package/public/r/hero-8.json +1 -1
- package/public/r/hero-9.json +5 -3
- package/public/r/hover-card.json +4 -3
- package/public/r/icon.json +1 -1
- package/public/r/input-group.json +1 -1
- package/public/r/item.json +2 -20
- package/public/r/kbd.json +2 -2
- package/public/r/layout.json +4 -7
- package/public/r/links-2.json +5 -3
- package/public/r/marquee.json +1 -1
- package/public/r/native-select.json +3 -3
- package/public/r/navigation-menu.json +8 -10
- package/public/r/page.json +17 -0
- package/public/r/popover.json +1 -1
- package/public/r/pricing-1.json +5 -3
- package/public/r/pricing-2.json +5 -3
- package/public/r/pricing-3.json +5 -3
- package/public/r/products-1.json +1 -1
- package/public/r/products-4.json +1 -1
- package/public/r/products-5.json +1 -1
- package/public/r/radio-group.json +1 -1
- package/public/r/rating.json +3 -3
- package/public/r/registry.json +186 -450
- package/public/r/reviews-1.json +5 -3
- package/public/r/reviews-2.json +5 -3
- package/public/r/reviews-3.json +5 -3
- package/public/r/reviews-4.json +1 -1
- package/public/r/reviews-5.json +5 -3
- package/public/r/select.json +6 -8
- package/public/r/services-1.json +11 -3
- package/public/r/services-2.json +7 -1
- package/public/r/services-3.json +7 -1
- package/public/r/services-4.json +11 -3
- package/public/r/services-5.json +5 -3
- package/public/r/services-6.json +11 -3
- package/public/r/services-7.json +11 -3
- package/public/r/sheet.json +7 -4
- package/public/r/sidebar-1.json +4 -2
- package/public/r/sidebar.json +10 -7
- package/public/r/slider.json +1 -1
- package/public/r/spinner.json +3 -3
- package/public/r/switch.json +1 -1
- package/public/r/tabs.json +1 -1
- package/public/r/theme-toggle.json +5 -3
- package/public/r/toggle.json +1 -1
- package/public/r/tooltip.json +1 -1
- package/public/r/typography.json +16 -16
- package/public/r/video.json +1 -1
- package/registry.json +186 -450
- package/src/components/blocks/article-1.astro +1 -1
- package/src/components/blocks/article-2.astro +1 -1
- package/src/components/blocks/articles-1.astro +1 -1
- package/src/components/blocks/articles-2.astro +2 -2
- package/src/components/blocks/articles-3.astro +1 -1
- package/src/components/blocks/banner-1.astro +3 -5
- package/src/components/blocks/banner-2.astro +1 -1
- package/src/components/blocks/blocks-1.astro +25 -37
- package/src/components/blocks/contact-3.astro +4 -3
- package/src/components/blocks/content-1.astro +5 -4
- package/src/components/blocks/content-2.astro +6 -5
- package/src/components/blocks/content-3.astro +9 -2
- package/src/components/blocks/content-4.astro +6 -5
- package/src/components/blocks/cta-2.astro +4 -3
- package/src/components/blocks/cta-4.astro +3 -2
- package/src/components/blocks/cta-5.astro +6 -5
- package/src/components/blocks/cta-6.astro +4 -3
- package/src/components/blocks/doc-1.astro +28 -56
- package/src/components/blocks/features-1.astro +3 -1
- package/src/components/blocks/features-2.astro +4 -2
- package/src/components/blocks/features-4.astro +3 -1
- package/src/components/blocks/footer-1.astro +26 -12
- package/src/components/blocks/footer-2.astro +24 -12
- package/src/components/blocks/footer-3.astro +26 -12
- package/src/components/blocks/header-1.astro +2 -3
- package/src/components/blocks/hero-13.astro +1 -1
- package/src/components/blocks/hero-4.astro +2 -2
- package/src/components/blocks/hero-5.astro +3 -3
- package/src/components/blocks/hero-6.astro +3 -3
- package/src/components/blocks/hero-7.astro +3 -3
- package/src/components/blocks/hero-8.astro +1 -1
- package/src/components/blocks/hero-9.astro +2 -2
- package/src/components/blocks/links-2.astro +3 -5
- package/src/components/blocks/pricing-1.astro +3 -2
- package/src/components/blocks/pricing-2.astro +3 -2
- package/src/components/blocks/pricing-3.astro +3 -2
- package/src/components/blocks/products-1.astro +1 -1
- package/src/components/blocks/products-4.astro +2 -2
- package/src/components/blocks/products-5.astro +4 -4
- package/src/components/blocks/reviews-1.astro +2 -2
- package/src/components/blocks/reviews-2.astro +2 -2
- package/src/components/blocks/reviews-3.astro +2 -2
- package/src/components/blocks/reviews-4.astro +4 -4
- package/src/components/blocks/reviews-5.astro +16 -25
- package/src/components/blocks/services-1.astro +7 -9
- package/src/components/blocks/services-2.astro +5 -4
- package/src/components/blocks/services-3.astro +6 -5
- package/src/components/blocks/services-4.astro +7 -9
- package/src/components/blocks/services-5.astro +3 -4
- package/src/components/blocks/services-6.astro +7 -6
- package/src/components/blocks/services-7.astro +7 -9
- package/src/components/blocks/sidebar-1.astro +42 -97
- package/src/components/ui/accordion/accordion-content.astro +2 -1
- package/src/components/ui/accordion/accordion-trigger.astro +7 -8
- 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 +23 -3
- package/src/components/ui/avatar/avatar.astro +1 -1
- package/src/components/ui/badge/badge.astro +1 -0
- package/src/components/ui/banner/banner-container.astro +3 -3
- package/src/components/ui/breadcrumb/breadcrumb-ellipsis.astro +2 -2
- package/src/components/ui/breadcrumb/breadcrumb-separator.astro +2 -2
- package/src/components/ui/button/button-variants.ts +8 -7
- package/src/components/ui/card/card-content.astro +1 -1
- package/src/components/ui/card/card-footer.astro +1 -1
- package/src/components/ui/card/card-header.astro +1 -1
- package/src/components/ui/card/card.astro +1 -1
- package/src/components/ui/carousel/carousel-next.astro +3 -3
- package/src/components/ui/carousel/carousel-previous.astro +3 -3
- package/src/components/ui/checkbox/checkbox.astro +1 -1
- package/src/components/ui/combobox/combobox-input.astro +2 -2
- package/src/components/ui/combobox/combobox-item.astro +4 -4
- package/src/components/ui/combobox/combobox-list.astro +1 -1
- package/src/components/ui/combobox/combobox-trigger.astro +2 -5
- package/src/components/ui/combobox/combobox.astro +3 -0
- package/src/components/ui/command/command-dialog.astro +10 -10
- package/src/components/ui/command/command-input.astro +2 -2
- package/src/components/ui/command/command-item.astro +4 -5
- package/src/components/ui/dialog/dialog-close.astro +2 -2
- package/src/components/ui/dialog/dialog-content.astro +3 -3
- package/src/components/ui/dialog/dialog-overlay.astro +1 -1
- package/src/components/ui/dialog/dialog.astro +26 -3
- package/src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.astro +4 -5
- package/src/components/ui/dropdown-menu/dropdown-menu-content.astro +4 -4
- package/src/components/ui/dropdown-menu/dropdown-menu-item.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu-label.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu-radio-item.astro +4 -5
- package/src/components/ui/dropdown-menu/dropdown-menu-shortcut.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu.astro +3 -0
- package/src/components/ui/field/field-label.astro +1 -1
- package/src/components/ui/field/field-title.astro +1 -1
- package/src/components/ui/hover-card/hover-card-content.astro +4 -4
- package/src/components/ui/hover-card/hover-card.astro +8 -5
- package/src/components/ui/icon/icon.astro +8 -17
- package/src/components/ui/input-group/input-group-button.astro +0 -1
- package/src/components/ui/item/item-media.astro +1 -1
- package/src/components/ui/item/item.astro +0 -18
- package/src/components/ui/kbd/kbd-group.astro +1 -1
- package/src/components/ui/kbd/kbd.astro +1 -1
- package/src/components/ui/layout/layout-body.astro +1 -1
- package/src/components/ui/layout/layout-head.astro +3 -2
- package/src/components/ui/layout/layout-main.astro +1 -1
- package/src/components/ui/layout/layout.astro +4 -0
- package/src/components/ui/marquee/marquee.astro +50 -69
- package/src/components/ui/native-select/native-select.astro +2 -3
- package/src/components/ui/navigation-menu/navigation-menu-content.astro +3 -1
- 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-trigger.astro +2 -3
- package/src/components/ui/navigation-menu/navigation-menu.astro +1 -1
- package/src/components/ui/popover/popover-content.astro +1 -1
- package/src/components/ui/radio-group/radio-group-item.astro +3 -3
- package/src/components/ui/rating/rating.astro +3 -3
- package/src/components/ui/select/select-content.astro +1 -1
- package/src/components/ui/select/select-item.astro +4 -4
- package/src/components/ui/select/select-trigger.astro +3 -6
- package/src/components/ui/select/select.astro +6 -0
- package/src/components/ui/sheet/sheet-content.astro +6 -7
- package/src/components/ui/sheet/sheet.astro +1 -89
- package/src/components/ui/sidebar/sidebar-menu-button.astro +13 -11
- package/src/components/ui/sidebar/sidebar-menu-sub-button.astro +10 -8
- package/src/components/ui/sidebar/sidebar-provider.astro +37 -15
- package/src/components/ui/sidebar/sidebar-rail.astro +1 -1
- package/src/components/ui/sidebar/sidebar-trigger.astro +3 -3
- package/src/components/ui/sidebar/sidebar.astro +1 -2
- package/src/components/ui/slider/slider.astro +8 -6
- package/src/components/ui/spinner/spinner.astro +4 -4
- package/src/components/ui/switch/switch.astro +5 -3
- package/src/components/ui/tabs/tabs-content.astro +2 -1
- package/src/components/ui/theme-toggle/theme-toggle.astro +4 -3
- package/src/components/ui/toggle/toggle.astro +2 -0
- package/src/components/ui/tooltip/tooltip-content.astro +1 -1
- package/src/components/ui/typography/typography-a.astro +19 -4
- package/src/components/ui/typography/typography-blockquote.astro +26 -6
- package/src/components/ui/typography/typography-h1.astro +7 -9
- package/src/components/ui/typography/typography-h2.astro +12 -9
- package/src/components/ui/typography/typography-h3.astro +7 -9
- package/src/components/ui/typography/typography-h4.astro +7 -9
- package/src/components/ui/typography/typography-inline-code.astro +28 -12
- package/src/components/ui/typography/typography-lead.astro +29 -4
- package/src/components/ui/typography/typography-list-item.astro +25 -9
- package/src/components/ui/typography/typography-list.astro +29 -11
- package/src/components/ui/typography/typography-p.astro +26 -6
- package/src/components/ui/typography/typography-table-cell.astro +32 -13
- package/src/components/ui/typography/typography-table-head.astro +27 -13
- package/src/components/ui/typography/typography-table-row.astro +23 -13
- package/src/components/ui/typography/typography-table.astro +29 -20
- package/src/components/ui/typography/typography.astro +172 -46
- package/src/components/ui/video/video.astro +11 -27
- package/src/styles/global.css +2 -15
- package/public/r/beta-repo-setup.json +0 -125
- package/public/r/blocks.json +0 -91
- package/public/r/content-5.json +0 -17
- package/public/r/content-6.json +0 -17
- package/public/r/gradient.json +0 -17
- package/public/r/init.json +0 -23
- package/public/r/tile.json +0 -27
- package/src/components/blocks/content-5.astro +0 -115
- package/src/components/blocks/content-6.astro +0 -91
- package/src/components/ui/gradient/gradient.astro +0 -45
- package/src/components/ui/gradient/index.ts +0 -1
- package/src/components/ui/tile/index.ts +0 -3
- package/src/components/ui/tile/tile-content.astro +0 -17
- package/src/components/ui/tile/tile-group.astro +0 -76
- package/src/components/ui/tile/tile.astro +0 -46
|
@@ -2,20 +2,18 @@
|
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "navigation-menu",
|
|
4
4
|
"dependencies": [
|
|
5
|
-
"@data-slot/navigation-menu"
|
|
6
|
-
|
|
7
|
-
"registryDependencies": [
|
|
8
|
-
"@fulldev/icon"
|
|
5
|
+
"@data-slot/navigation-menu",
|
|
6
|
+
"@lucide/astro"
|
|
9
7
|
],
|
|
10
8
|
"files": [
|
|
11
9
|
{
|
|
12
10
|
"path": "src/components/ui/navigation-menu/navigation-menu.astro",
|
|
13
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport NavigationMenuPositioner from \"./navigation-menu-positioner.astro\"\n\ntype Props = HTMLAttributes<\"nav\"> & {\n delayOpen?: number\n delayClose?: number\n openOnFocus?: boolean\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n positionMethod?: \"absolute\" | \"fixed\"\n safeTriangle?: boolean\n debugSafeTriangle?: boolean\n}\n\nconst {\n class: className = \"\",\n delayOpen = 0,\n delayClose = 0,\n openOnFocus,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 0,\n alignOffset = 0,\n positionMethod = \"absolute\",\n safeTriangle,\n debugSafeTriangle,\n ...props\n} = Astro.props\n---\n\n<nav\n {...props}\n data-slot=\"navigation-menu\"\n data-delay-open={delayOpen}\n data-delay-close={delayClose}\n data-open-on-focus={openOnFocus}\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-position-method={positionMethod}\n data-safe-triangle={safeTriangle}\n data-debug-safe-triangle={debugSafeTriangle}\n class={cn(\n \"group/navigation-menu relative flex flex-1 items-center justify-center\",\n className\n )}\n>\n <slot />\n <NavigationMenuPositioner align={align} />\n</nav>\n\n<script>\n import { create } from \"@data-slot/navigation-menu\"\n\n create()\n</script>\n",
|
|
11
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport NavigationMenuPositioner from \"./navigation-menu-positioner.astro\"\n\ntype Props = HTMLAttributes<\"nav\"> & {\n delayOpen?: number\n delayClose?: number\n openOnFocus?: boolean\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n sideOffset?: number\n alignOffset?: number\n positionMethod?: \"absolute\" | \"fixed\"\n safeTriangle?: boolean\n debugSafeTriangle?: boolean\n}\n\nconst {\n class: className = \"\",\n delayOpen = 0,\n delayClose = 0,\n openOnFocus,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 0,\n alignOffset = 0,\n positionMethod = \"absolute\",\n safeTriangle,\n debugSafeTriangle,\n ...props\n} = Astro.props\n---\n\n<nav\n {...props}\n data-slot=\"navigation-menu\"\n data-delay-open={delayOpen}\n data-delay-close={delayClose}\n data-open-on-focus={openOnFocus}\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-position-method={positionMethod}\n data-safe-triangle={safeTriangle}\n data-debug-safe-triangle={debugSafeTriangle}\n class={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n>\n <slot />\n <NavigationMenuPositioner align={align} />\n</nav>\n\n<script>\n import { create } from \"@data-slot/navigation-menu\"\n\n create()\n</script>\n",
|
|
14
12
|
"type": "registry:ui"
|
|
15
13
|
},
|
|
16
14
|
{
|
|
17
15
|
"path": "src/components/ui/navigation-menu/navigation-menu-content.astro",
|
|
18
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = {\n class?: string\n align?: \"start\" | \"center\" | \"end\"\n alignOffset?: number\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n sideOffset?: number\n} & HTMLAttributes<\"div\">\n\nconst {\n class: className = \"\",\n align,\n alignOffset,\n side,\n sideOffset,\n ...props\n} = Astro.props\n---\n\n<div\n {...props}\n data-slot=\"navigation-menu-content\"\n data-align={align}\n data-align-offset={alignOffset}\n data-side={side}\n data-side-offset={sideOffset}\n class={cn(\n \"
|
|
16
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = {\n class?: string\n align?: \"start\" | \"center\" | \"end\"\n alignOffset?: number\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n sideOffset?: number\n} & HTMLAttributes<\"div\">\n\nconst {\n class: className = \"\",\n 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",
|
|
19
17
|
"type": "registry:ui"
|
|
20
18
|
},
|
|
21
19
|
{
|
|
@@ -30,17 +28,17 @@
|
|
|
30
28
|
},
|
|
31
29
|
{
|
|
32
30
|
"path": "src/components/ui/navigation-menu/navigation-menu-list.astro",
|
|
33
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"ul\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<ul\n data-slot=\"navigation-menu-list\"\n class={cn(\n \"group flex flex-1 list-none items-center justify-center gap-
|
|
31
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"ul\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<ul\n data-slot=\"navigation-menu-list\"\n class={cn(\n \"group relative flex flex-1 list-none items-center justify-center gap-0\",\n className\n )}\n {...props}\n>\n <slot />\n</ul>\n",
|
|
34
32
|
"type": "registry:ui"
|
|
35
33
|
},
|
|
36
34
|
{
|
|
37
35
|
"path": "src/components/ui/navigation-menu/navigation-menu-indicator.astro",
|
|
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 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",
|
|
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 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",
|
|
39
37
|
"type": "registry:ui"
|
|
40
38
|
},
|
|
41
39
|
{
|
|
42
40
|
"path": "src/components/ui/navigation-menu/navigation-menu-trigger.astro",
|
|
43
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\
|
|
41
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronDownIcon from \"@lucide/astro/icons/chevron-down\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport navigationMenuTriggerStyle from \"./navigation-menu-trigger-style\"\n\ntype Props = HTMLAttributes<\"button\">\n\nconst { class: className, type = \"button\", ...props } = Astro.props\n---\n\n<button\n data-slot=\"navigation-menu-trigger\"\n type={type}\n class={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n>\n <slot />\n {\" \"}\n <ChevronDownIcon\n class=\"relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180\"\n aria-hidden=\"true\"\n />\n</button>\n",
|
|
44
42
|
"type": "registry:ui"
|
|
45
43
|
},
|
|
46
44
|
{
|
|
@@ -50,7 +48,7 @@
|
|
|
50
48
|
},
|
|
51
49
|
{
|
|
52
50
|
"path": "src/components/ui/navigation-menu/navigation-menu-positioner.astro",
|
|
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 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",
|
|
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 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",
|
|
54
52
|
"type": "registry:ui"
|
|
55
53
|
},
|
|
56
54
|
{
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "page",
|
|
4
|
+
"registryDependencies": [
|
|
5
|
+
"@fulldev/layout",
|
|
6
|
+
"@fulldev/components"
|
|
7
|
+
],
|
|
8
|
+
"files": [
|
|
9
|
+
{
|
|
10
|
+
"path": "src/pages/[...page].astro",
|
|
11
|
+
"content": "---\nimport { getCollection } from \"astro:content\"\n\nimport LayoutRenderer from \"@/components/layout-renderer.astro\"\n\nexport async function getStaticPaths() {\n const pages = await getCollection(\"pages\")\n return pages.map((page) => {\n return {\n params: {\n page: page.id === \"index\" ? undefined : page.id,\n },\n props: page,\n }\n })\n}\n---\n\n<LayoutRenderer {...Astro.props} />\n",
|
|
12
|
+
"type": "registry:file",
|
|
13
|
+
"target": "src/pages/[...page].astro"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"type": "registry:file"
|
|
17
|
+
}
|
package/public/r/popover.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"path": "src/components/ui/popover/popover-content.astro",
|
|
20
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { PopoverAlign, PopoverSide } from \"@data-slot/popover\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n side?: PopoverSide\n align?: PopoverAlign\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n position?: PopoverSide\n}\n\nconst {\n class: className,\n hidden = true,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n position,\n ...props\n} = Astro.props\n---\n\n<div data-slot=\"popover-portal\">\n <div\n data-slot=\"popover-positioner\"\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-avoid-collisions={avoidCollisions}\n data-collision-padding={collisionPadding}\n data-position={position}\n class=\"isolate z-50\"\n >\n <div\n data-slot=\"popover-content\"\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-position={position}\n hidden={hidden}\n class={cn(\n \"bg-popover text-popover-foreground ring-foreground/10 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-md p-4 text-sm shadow-md ring-1 duration-100
|
|
20
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { PopoverAlign, PopoverSide } from \"@data-slot/popover\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n side?: PopoverSide\n align?: PopoverAlign\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n position?: PopoverSide\n}\n\nconst {\n class: className,\n hidden = true,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n position,\n ...props\n} = Astro.props\n---\n\n<div data-slot=\"popover-portal\">\n <div\n data-slot=\"popover-positioner\"\n data-side={side}\n data-align={align}\n data-side-offset={sideOffset}\n data-align-offset={alignOffset}\n data-avoid-collisions={avoidCollisions}\n data-collision-padding={collisionPadding}\n data-position={position}\n class=\"isolate z-50\"\n >\n <div\n data-slot=\"popover-content\"\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-position={position}\n hidden={hidden}\n class={cn(\n \"bg-popover text-popover-foreground ring-foreground/10 data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-md p-4 text-sm shadow-md ring-1 outline-hidden duration-100\",\n className\n )}\n {...props}\n >\n <slot />\n </div>\n </div>\n</div>\n",
|
|
21
21
|
"type": "registry:ui"
|
|
22
22
|
},
|
|
23
23
|
{
|
package/public/r/pricing-1.json
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "pricing-1",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/badge",
|
|
6
9
|
"@fulldev/button",
|
|
7
10
|
"@fulldev/card",
|
|
8
11
|
"@fulldev/price",
|
|
9
12
|
"@fulldev/section",
|
|
10
|
-
"@fulldev/separator"
|
|
11
|
-
"@fulldev/icon"
|
|
13
|
+
"@fulldev/separator"
|
|
12
14
|
],
|
|
13
15
|
"files": [
|
|
14
16
|
{
|
|
15
17
|
"path": "src/components/blocks/pricing-1.astro",
|
|
16
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport {
|
|
18
|
+
"content": "---\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = {\n class?: string\n title: string\n description?: string\n plans: {\n name: string\n description: string\n price: number\n currency: string\n unit: string\n featured?: boolean\n features: string[]\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }[]\n}\n\nconst { class: className, title, description, plans } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"items-center gap-8 text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-4\">\n <h2\n class=\"text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n {\n description && (\n <p class=\"text-muted-foreground text-lg leading-relaxed text-balance\">\n {description}\n </p>\n )\n }\n </div>\n </SectionContainer>\n <SectionContainer>\n <div\n class=\"mx-auto grid w-full justify-center gap-6 sm:grid-cols-2 lg:grid-cols-[repeat(auto-fit,minmax(16rem,18rem))]\"\n >\n {\n plans.map((plan) => (\n <Card\n class={cn(\"flex flex-col\", plan.featured && \"ring-primary ring-2\")}\n >\n <CardHeader>\n <div class=\"flex items-center gap-2\">\n <CardTitle>{plan.name}</CardTitle>\n {plan.featured && <Badge>Popular</Badge>}\n </div>\n <CardDescription>{plan.description}</CardDescription>\n </CardHeader>\n <CardContent class=\"flex flex-col gap-6\">\n <Price>\n <PriceValue price={plan.price} currency={plan.currency} />\n <PriceUnit>{plan.unit}</PriceUnit>\n </Price>\n <Separator />\n <ul class=\"flex flex-col gap-3\">\n {plan.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 </ul>\n </CardContent>\n <CardFooter class=\"mt-auto\">\n <Button\n as=\"a\"\n href={plan.button.href}\n variant={\n plan.button.variant ?? (plan.featured ? \"default\" : \"outline\")\n }\n class=\"w-full\"\n >\n {plan.button.label}\n </Button>\n </CardFooter>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
17
19
|
"type": "registry:block"
|
|
18
20
|
}
|
|
19
21
|
],
|
package/public/r/pricing-2.json
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "pricing-2",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/button",
|
|
6
9
|
"@fulldev/card",
|
|
7
10
|
"@fulldev/price",
|
|
8
11
|
"@fulldev/section",
|
|
9
|
-
"@fulldev/separator"
|
|
10
|
-
"@fulldev/icon"
|
|
12
|
+
"@fulldev/separator"
|
|
11
13
|
],
|
|
12
14
|
"files": [
|
|
13
15
|
{
|
|
14
16
|
"path": "src/components/blocks/pricing-2.astro",
|
|
15
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport {
|
|
17
|
+
"content": "---\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n plans: {\n name: string\n description: string\n price: number\n compareAt?: number\n currency: string\n unit: string\n features: string[]\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }[]\n}\n\nconst { class: className, title, description, plans } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <h2\n class=\"text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n <p\n class=\"text-muted-foreground mt-4 text-lg leading-relaxed text-balance\"\n >\n {description}\n </p>\n </div>\n <div\n class=\"mx-auto grid w-full justify-center gap-6 sm:grid-cols-2 lg:grid-cols-[repeat(auto-fit,minmax(16rem,18rem))]\"\n >\n {\n plans.map((plan, index) => (\n <Card class=\"flex flex-col border-none shadow-none\">\n <CardHeader>\n <CardTitle>{plan.name}</CardTitle>\n <CardDescription>{plan.description}</CardDescription>\n </CardHeader>\n <CardContent class=\"flex flex-col gap-6\">\n <Price>\n <PriceValue\n price={plan.price}\n compareAt={plan.compareAt}\n currency={plan.currency}\n />\n <PriceUnit>{plan.unit}</PriceUnit>\n </Price>\n <Separator />\n <ul class=\"flex flex-col gap-3\">\n {plan.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 </ul>\n </CardContent>\n <CardFooter class=\"mt-auto\">\n <Button\n as=\"a\"\n href={plan.button.href}\n variant={\n plan.button.variant ?? (index === 0 ? \"outline\" : \"default\")\n }\n class=\"w-full\"\n >\n {plan.button.label}\n </Button>\n </CardFooter>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
16
18
|
"type": "registry:block"
|
|
17
19
|
}
|
|
18
20
|
],
|
package/public/r/pricing-3.json
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "pricing-3",
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
|
+
],
|
|
4
7
|
"registryDependencies": [
|
|
5
8
|
"@fulldev/badge",
|
|
6
9
|
"@fulldev/button",
|
|
7
10
|
"@fulldev/card",
|
|
8
11
|
"@fulldev/price",
|
|
9
12
|
"@fulldev/section",
|
|
10
|
-
"@fulldev/separator"
|
|
11
|
-
"@fulldev/icon"
|
|
13
|
+
"@fulldev/separator"
|
|
12
14
|
],
|
|
13
15
|
"files": [
|
|
14
16
|
{
|
|
15
17
|
"path": "src/components/blocks/pricing-3.astro",
|
|
16
|
-
"content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport {
|
|
18
|
+
"content": "---\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = {\n class?: string\n badge?: string\n title: string\n description?: string\n offer: {\n name: string\n description: string\n price: number\n currency: string\n unit: string\n features: string[]\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }\n}\n\nconst { class: className, badge, title, description, offer } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"items-center gap-8 text-center\">\n <div class=\"flex max-w-2xl flex-col items-center gap-4\">\n {badge && <Badge variant=\"secondary\">{badge}</Badge>}\n <h2\n class=\"text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n {\n description && (\n <p class=\"text-muted-foreground text-lg leading-relaxed text-balance\">\n {description}\n </p>\n )\n }\n </div>\n <Card class=\"ring-primary w-full max-w-md ring-2\">\n <CardHeader class=\"text-left\">\n <CardTitle>{offer.name}</CardTitle>\n <CardDescription>{offer.description}</CardDescription>\n </CardHeader>\n <CardContent class=\"flex flex-col gap-6 text-left\">\n <Price>\n <PriceValue price={offer.price} currency={offer.currency} />\n <PriceUnit>{offer.unit}</PriceUnit>\n </Price>\n <Separator />\n <ul class=\"flex flex-col gap-3\">\n {\n offer.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 </CardContent>\n <CardFooter>\n <Button\n as=\"a\"\n href={offer.button.href}\n variant={offer.button.variant ?? \"default\"}\n class=\"w-full\"\n >\n {offer.button.label}\n </Button>\n </CardFooter>\n </Card>\n </SectionContainer>\n</Section>\n",
|
|
17
19
|
"type": "registry:block"
|
|
18
20
|
}
|
|
19
21
|
],
|
package/public/r/products-1.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
{
|
|
12
12
|
"path": "src/components/blocks/products-1.astro",
|
|
13
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge: string\n title: string\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, badge, title, products } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <h2\n class=\"mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n </div>\n <div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {\n products.map((product) => (\n <Card>\n <Image\n src={product.image.src}\n alt={product.image.alt}\n class=\"aspect-4/3 w-full object-cover\"\n />\n <CardHeader>\n <CardTitle>{product.title}</CardTitle>\n <CardDescription>{product.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <Price>\n <PriceValue\n price={product.price.value}\n currency={product.price.currency}\n />\n <PriceUnit>{product.price.unit}</PriceUnit>\n </Price>\n </CardContent>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
13
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge: string\n title: string\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, badge, title, products } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <h2\n class=\"mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n </div>\n <div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {\n products.map((product) => (\n <Card>\n <Image\n src={product.image.src}\n alt={product.image.alt}\n class=\"aspect-[4/3] w-full object-cover\"\n />\n <CardHeader>\n <CardTitle>{product.title}</CardTitle>\n <CardDescription>{product.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <Price>\n <PriceValue\n price={product.price.value}\n currency={product.price.currency}\n />\n <PriceUnit>{product.price.unit}</PriceUnit>\n </Price>\n </CardContent>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
14
14
|
"type": "registry:block"
|
|
15
15
|
}
|
|
16
16
|
],
|
package/public/r/products-4.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
{
|
|
12
12
|
"path": "src/components/blocks/products-4.astro",
|
|
13
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, title, description, buttons, products } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div\n class=\"flex flex-col gap-4 md:flex-row md:items-end md:justify-between\"\n >\n <div class=\"max-w-2xl\">\n <h2\n class=\"text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n <p class=\"text-muted-foreground mt-3 text-lg leading-8\">\n {description}\n </p>\n </div>\n <div class=\"flex shrink-0 flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }) => (\n <Button as=\"a\" href={href} variant={button.variant}>\n {label}\n </Button>\n ))\n }\n </div>\n </div>\n <div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {\n products.map((product) => (\n <Card>\n <Image\n src={product.image.src}\n alt={product.image.alt}\n class=\"aspect-4/3 w-full object-cover\"\n />\n <CardHeader>\n <CardTitle>{product.title}</CardTitle>\n <CardDescription>{product.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <Price>\n <PriceValue\n price={product.price.value}\n currency={product.price.currency}\n />\n <PriceUnit>{product.price.unit}</PriceUnit>\n </Price>\n </CardContent>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
13
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, title, description, buttons, products } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div\n class=\"flex flex-col gap-4 md:flex-row md:items-end md:justify-between\"\n >\n <div class=\"max-w-2xl\">\n <h2\n class=\"text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n <p class=\"text-muted-foreground mt-3 text-lg leading-8\">\n {description}\n </p>\n </div>\n <div class=\"flex flex-shrink-0 flex-wrap gap-3\">\n {\n buttons.map(({ href, label, ...button }) => (\n <Button as=\"a\" href={href} variant={button.variant}>\n {label}\n </Button>\n ))\n }\n </div>\n </div>\n <div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {\n products.map((product) => (\n <Card>\n <Image\n src={product.image.src}\n alt={product.image.alt}\n class=\"aspect-[4/3] w-full object-cover\"\n />\n <CardHeader>\n <CardTitle>{product.title}</CardTitle>\n <CardDescription>{product.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <Price>\n <PriceValue\n price={product.price.value}\n currency={product.price.currency}\n />\n <PriceUnit>{product.price.unit}</PriceUnit>\n </Price>\n </CardContent>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
14
14
|
"type": "registry:block"
|
|
15
15
|
}
|
|
16
16
|
],
|
package/public/r/products-5.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
13
13
|
"path": "src/components/blocks/products-5.astro",
|
|
14
|
-
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge: string\n title: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, badge, title, buttons, products } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <h2\n class=\"mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n <div class=\"mt-4 flex flex-wrap justify-center gap-3\">\n {\n buttons.map(({ href, label, ...button }) => (\n <Button as=\"a\" href={href} variant={button.variant}>\n {label}\n </Button>\n ))\n }\n </div>\n </div>\n <div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {\n products.map((product) => (\n <Card class=\"group/product gap-0 overflow-hidden
|
|
14
|
+
"content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge: string\n title: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, badge, title, buttons, products } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <h2\n class=\"mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n <div class=\"mt-4 flex flex-wrap justify-center gap-3\">\n {\n buttons.map(({ href, label, ...button }) => (\n <Button as=\"a\" href={href} variant={button.variant}>\n {label}\n </Button>\n ))\n }\n </div>\n </div>\n <div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {\n products.map((product) => (\n <Card class=\"group/product gap-0 overflow-hidden\">\n <div class=\"overflow-hidden\">\n <Image\n src={product.image.src}\n alt={product.image.alt}\n class=\"aspect-[3/4] w-full object-cover transition-transform duration-300 group-hover/product:scale-105\"\n />\n </div>\n <CardHeader>\n <CardTitle>{product.title}</CardTitle>\n <CardDescription>{product.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <Price>\n <PriceValue\n price={product.price.value}\n currency={product.price.currency}\n />\n <PriceUnit>{product.price.unit}</PriceUnit>\n </Price>\n </CardContent>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
|
|
15
15
|
"type": "registry:block"
|
|
16
16
|
}
|
|
17
17
|
],
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "src/components/ui/radio-group/radio-group-item.astro",
|
|
15
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\"> & {\n value: string\n disabled?: boolean\n indicatorClass?: string\n}\n\nconst {\n class: className,\n value,\n disabled,\n indicatorClass,\n ...props\n} = Astro.props\n---\n\n<span\n data-slot=\"radio-group-item\"\n data-value={value}\n data-disabled={disabled ? \"\" : undefined}\n class={cn(\n \"group/radio-group-item peer border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-[checked]:border-primary data-[checked]:bg-primary data-[checked]:text-primary-foreground dark:data-[checked]:bg-primary relative flex aspect-square size-4 shrink-0 rounded-full border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 aria-invalid:ring-3 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n>\n <span\n aria-hidden=\"true\"\n data-slot=\"radio-group-indicator\"\n class={cn(\n \"flex size-4 items-center justify-center opacity-0 group-data-checked/radio-group-item:opacity-100\",\n indicatorClass\n )}\n >\n <span\n class=\"bg-
|
|
15
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\"> & {\n value: string\n disabled?: boolean\n indicatorClass?: string\n}\n\nconst {\n class: className,\n value,\n disabled,\n indicatorClass,\n ...props\n} = Astro.props\n---\n\n<span\n data-slot=\"radio-group-item\"\n data-value={value}\n data-disabled={disabled ? \"\" : undefined}\n class={cn(\n \"group/radio-group-item peer border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-[checked]:border-primary data-[checked]:bg-primary data-[checked]:text-primary-foreground dark:data-[checked]:bg-primary group-has-[:focus-visible]/field-label:not-data-[checked]:border-input group-has-[:focus-visible]/field-label:data-[checked]:border-primary relative flex aspect-square size-4 shrink-0 rounded-full border outline-none group-has-[:focus-visible]/field-label:ring-0 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 aria-invalid:ring-3 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n>\n <span\n aria-hidden=\"true\"\n data-slot=\"radio-group-indicator\"\n class={cn(\n \"flex size-4 items-center justify-center opacity-0 group-data-[checked]/radio-group-item:opacity-100\",\n indicatorClass\n )}\n >\n <span\n class=\"bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full\"\n ></span>\n </span>\n</span>\n",
|
|
16
16
|
"type": "registry:ui"
|
|
17
17
|
},
|
|
18
18
|
{
|
package/public/r/rating.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
3
|
"name": "rating",
|
|
4
|
-
"
|
|
5
|
-
"@
|
|
4
|
+
"dependencies": [
|
|
5
|
+
"@lucide/astro"
|
|
6
6
|
],
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": "src/components/ui/rating/rating.astro",
|
|
10
|
-
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\
|
|
10
|
+
"content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport Star from \"@lucide/astro/icons/star\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n value?: number\n}\n\nconst { value = 5, class: className, ...props } = Astro.props\n---\n\n<div class={cn(\"flex items-center gap-1 text-base\", className)} {...props}>\n {\n Array.from({ length: 5 }).map((_, index) => {\n const fillPercentage =\n index < Math.floor(value)\n ? 100\n : index === Math.floor(value)\n ? (value % 1) * 100\n : 0\n\n return (\n <span class=\"text-muted-foreground/25 relative inline-flex size-[1em]\">\n <Star class=\"size-[1em] fill-current\" />\n {fillPercentage > 0 && (\n <span\n class=\"text-primary absolute inset-0 overflow-hidden\"\n style={{ width: `${fillPercentage}%` }}\n >\n <Star class=\"size-[1em] fill-current\" />\n </span>\n )}\n </span>\n )\n })\n }\n</div>\n",
|
|
11
11
|
"type": "registry:ui"
|
|
12
12
|
},
|
|
13
13
|
{
|