fulldev-ui 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +7 -1
  3. package/package.json +6 -4
  4. package/public/r/accordion.json +7 -1
  5. package/public/r/alert-dialog.json +7 -1
  6. package/public/r/alert.json +6 -0
  7. package/public/r/article-1.json +7 -1
  8. package/public/r/article-2.json +7 -1
  9. package/public/r/articles-1.json +7 -1
  10. package/public/r/articles-2.json +7 -1
  11. package/public/r/articles-3.json +7 -1
  12. package/public/r/articles-4.json +7 -1
  13. package/public/r/avatar.json +6 -0
  14. package/public/r/badge.json +6 -0
  15. package/public/r/banner-1.json +7 -1
  16. package/public/r/banner-2.json +7 -1
  17. package/public/r/banner.json +6 -0
  18. package/public/r/blocks-1.json +6 -1
  19. package/public/r/blocks.json +92 -0
  20. package/public/r/breadcrumb.json +6 -0
  21. package/public/r/button.json +6 -0
  22. package/public/r/card.json +6 -0
  23. package/public/r/carousel.json +6 -0
  24. package/public/r/checkbox.json +6 -0
  25. package/public/r/collapsible.json +7 -1
  26. package/public/r/combobox.json +6 -0
  27. package/public/r/command.json +6 -0
  28. package/public/r/components.json +14 -3
  29. package/public/r/contact-1.json +10 -2
  30. package/public/r/contact-2.json +10 -2
  31. package/public/r/contact-3.json +10 -2
  32. package/public/r/content-1.json +7 -1
  33. package/public/r/content-2.json +7 -1
  34. package/public/r/content-3.json +7 -1
  35. package/public/r/content-4.json +7 -1
  36. package/public/r/cta-1.json +7 -1
  37. package/public/r/cta-2.json +7 -1
  38. package/public/r/cta-3.json +7 -1
  39. package/public/r/cta-4.json +7 -1
  40. package/public/r/cta-5.json +7 -1
  41. package/public/r/cta-6.json +7 -1
  42. package/public/r/cta-7.json +7 -1
  43. package/public/r/cta-8.json +7 -1
  44. package/public/r/dialog.json +7 -1
  45. package/public/r/doc-1.json +7 -1
  46. package/public/r/dropdown-menu.json +7 -1
  47. package/public/r/empty.json +6 -0
  48. package/public/r/faqs-1.json +7 -1
  49. package/public/r/faqs-2.json +7 -1
  50. package/public/r/faqs-3.json +7 -1
  51. package/public/r/faqs-4.json +7 -1
  52. package/public/r/features-1.json +7 -1
  53. package/public/r/features-2.json +7 -1
  54. package/public/r/features-3.json +7 -1
  55. package/public/r/features-4.json +7 -1
  56. package/public/r/features-5.json +7 -1
  57. package/public/r/features-6.json +7 -1
  58. package/public/r/field.json +6 -0
  59. package/public/r/footer-1.json +7 -1
  60. package/public/r/footer-2.json +7 -1
  61. package/public/r/footer-3.json +7 -1
  62. package/public/r/form.json +6 -0
  63. package/public/r/header-1.json +7 -1
  64. package/public/r/header-2.json +7 -1
  65. package/public/r/header-3.json +7 -1
  66. package/public/r/header-4.json +7 -1
  67. package/public/r/header-5.json +7 -1
  68. package/public/r/header.json +6 -0
  69. package/public/r/hero-1.json +7 -1
  70. package/public/r/hero-10.json +7 -1
  71. package/public/r/hero-11.json +7 -1
  72. package/public/r/hero-12.json +7 -1
  73. package/public/r/hero-13.json +7 -1
  74. package/public/r/hero-2.json +7 -1
  75. package/public/r/hero-3.json +7 -1
  76. package/public/r/hero-4.json +7 -1
  77. package/public/r/hero-5.json +7 -1
  78. package/public/r/hero-6.json +7 -1
  79. package/public/r/hero-7.json +7 -1
  80. package/public/r/hero-8.json +7 -1
  81. package/public/r/hero-9.json +7 -1
  82. package/public/r/hover-card.json +7 -1
  83. package/public/r/icon.json +7 -1
  84. package/public/r/init.json +28 -0
  85. package/public/r/input-group.json +6 -0
  86. package/public/r/input.json +6 -0
  87. package/public/r/item.json +6 -0
  88. package/public/r/kbd.json +6 -0
  89. package/public/r/label.json +6 -0
  90. package/public/r/layout.json +6 -0
  91. package/public/r/links-2.json +7 -1
  92. package/public/r/logo.json +6 -0
  93. package/public/r/logos-1.json +7 -1
  94. package/public/r/logos-2.json +7 -1
  95. package/public/r/logos-3.json +7 -1
  96. package/public/r/marquee.json +6 -0
  97. package/public/r/native-select.json +6 -0
  98. package/public/r/navigation-menu.json +7 -1
  99. package/public/r/popover.json +7 -1
  100. package/public/r/price.json +6 -0
  101. package/public/r/pricing-1.json +7 -1
  102. package/public/r/pricing-2.json +7 -1
  103. package/public/r/pricing-3.json +7 -1
  104. package/public/r/product-1.json +7 -1
  105. package/public/r/products-1.json +7 -1
  106. package/public/r/products-2.json +7 -1
  107. package/public/r/products-3.json +7 -1
  108. package/public/r/products-4.json +7 -1
  109. package/public/r/products-5.json +7 -1
  110. package/public/r/radio-group.json +7 -1
  111. package/public/r/rating.json +6 -0
  112. package/public/r/registry.json +1645 -457
  113. package/public/r/reviews-1.json +7 -1
  114. package/public/r/reviews-2.json +7 -1
  115. package/public/r/reviews-3.json +7 -1
  116. package/public/r/reviews-4.json +7 -1
  117. package/public/r/reviews-5.json +7 -1
  118. package/public/r/section.json +18 -2
  119. package/public/r/select.json +6 -0
  120. package/public/r/separator.json +6 -0
  121. package/public/r/services-1.json +7 -1
  122. package/public/r/services-2.json +7 -1
  123. package/public/r/services-3.json +7 -1
  124. package/public/r/services-4.json +7 -1
  125. package/public/r/services-5.json +7 -1
  126. package/public/r/services-6.json +7 -1
  127. package/public/r/services-7.json +7 -1
  128. package/public/r/sheet.json +8 -2
  129. package/public/r/sidebar-1.json +5 -0
  130. package/public/r/sidebar.json +6 -0
  131. package/public/r/skeleton.json +6 -0
  132. package/public/r/slider.json +7 -1
  133. package/public/r/spinner.json +6 -0
  134. package/public/r/switch.json +7 -1
  135. package/public/r/table.json +6 -0
  136. package/public/r/tabs.json +7 -1
  137. package/public/r/textarea.json +6 -0
  138. package/public/r/theme-toggle.json +6 -0
  139. package/public/r/toc.json +6 -0
  140. package/public/r/toggle.json +7 -1
  141. package/public/r/tooltip.json +7 -1
  142. package/public/r/typography.json +6 -0
  143. package/public/r/video.json +6 -0
  144. package/registry/init/global.css +187 -0
  145. package/registry.json +1137 -454
  146. package/src/components/blocks/article-1.astro +4 -3
  147. package/src/components/blocks/article-2.astro +4 -3
  148. package/src/components/blocks/articles-1.astro +18 -9
  149. package/src/components/blocks/articles-2.astro +4 -3
  150. package/src/components/blocks/articles-3.astro +11 -9
  151. package/src/components/blocks/articles-4.astro +11 -4
  152. package/src/components/blocks/banner-1.astro +4 -3
  153. package/src/components/blocks/banner-2.astro +10 -4
  154. package/src/components/blocks/blocks-1.astro +1 -1
  155. package/src/components/blocks/contact-1.astro +72 -39
  156. package/src/components/blocks/contact-2.astro +69 -35
  157. package/src/components/blocks/contact-3.astro +61 -34
  158. package/src/components/blocks/content-1.astro +15 -10
  159. package/src/components/blocks/content-2.astro +15 -10
  160. package/src/components/blocks/content-3.astro +14 -12
  161. package/src/components/blocks/content-4.astro +15 -10
  162. package/src/components/blocks/cta-1.astro +14 -10
  163. package/src/components/blocks/cta-2.astro +11 -8
  164. package/src/components/blocks/cta-3.astro +15 -8
  165. package/src/components/blocks/cta-4.astro +14 -9
  166. package/src/components/blocks/cta-5.astro +12 -8
  167. package/src/components/blocks/cta-6.astro +11 -8
  168. package/src/components/blocks/cta-7.astro +17 -10
  169. package/src/components/blocks/cta-8.astro +15 -10
  170. package/src/components/blocks/doc-1.astro +1 -1
  171. package/src/components/blocks/faqs-1.astro +22 -11
  172. package/src/components/blocks/faqs-2.astro +19 -9
  173. package/src/components/blocks/faqs-3.astro +19 -9
  174. package/src/components/blocks/faqs-4.astro +12 -9
  175. package/src/components/blocks/features-1.astro +21 -13
  176. package/src/components/blocks/features-2.astro +22 -13
  177. package/src/components/blocks/features-3.astro +14 -13
  178. package/src/components/blocks/features-4.astro +18 -9
  179. package/src/components/blocks/features-5.astro +22 -13
  180. package/src/components/blocks/features-6.astro +19 -9
  181. package/src/components/blocks/footer-1.astro +4 -3
  182. package/src/components/blocks/footer-2.astro +4 -3
  183. package/src/components/blocks/footer-3.astro +4 -3
  184. package/src/components/blocks/header-1.astro +13 -7
  185. package/src/components/blocks/header-2.astro +12 -6
  186. package/src/components/blocks/header-3.astro +12 -6
  187. package/src/components/blocks/header-4.astro +13 -6
  188. package/src/components/blocks/header-5.astro +16 -6
  189. package/src/components/blocks/hero-1.astro +11 -8
  190. package/src/components/blocks/hero-10.astro +7 -3
  191. package/src/components/blocks/hero-11.astro +4 -2
  192. package/src/components/blocks/hero-12.astro +11 -4
  193. package/src/components/blocks/hero-13.astro +11 -4
  194. package/src/components/blocks/hero-2.astro +11 -8
  195. package/src/components/blocks/hero-3.astro +11 -3
  196. package/src/components/blocks/hero-4.astro +4 -2
  197. package/src/components/blocks/hero-5.astro +4 -3
  198. package/src/components/blocks/hero-6.astro +4 -3
  199. package/src/components/blocks/hero-7.astro +4 -3
  200. package/src/components/blocks/hero-8.astro +11 -4
  201. package/src/components/blocks/hero-9.astro +4 -3
  202. package/src/components/blocks/links-2.astro +4 -4
  203. package/src/components/blocks/logos-1.astro +14 -16
  204. package/src/components/blocks/logos-2.astro +14 -12
  205. package/src/components/blocks/logos-3.astro +5 -4
  206. package/src/components/blocks/pricing-1.astro +13 -16
  207. package/src/components/blocks/pricing-2.astro +14 -13
  208. package/src/components/blocks/pricing-3.astro +20 -16
  209. package/src/components/blocks/product-1.astro +4 -3
  210. package/src/components/blocks/products-1.astro +11 -9
  211. package/src/components/blocks/products-2.astro +12 -9
  212. package/src/components/blocks/products-3.astro +12 -9
  213. package/src/components/blocks/products-4.astro +18 -9
  214. package/src/components/blocks/products-5.astro +18 -9
  215. package/src/components/blocks/reviews-1.astro +13 -12
  216. package/src/components/blocks/reviews-2.astro +4 -4
  217. package/src/components/blocks/reviews-3.astro +13 -12
  218. package/src/components/blocks/reviews-4.astro +13 -12
  219. package/src/components/blocks/reviews-5.astro +13 -12
  220. package/src/components/blocks/services-1.astro +19 -9
  221. package/src/components/blocks/services-2.astro +11 -8
  222. package/src/components/blocks/services-3.astro +11 -8
  223. package/src/components/blocks/services-4.astro +19 -9
  224. package/src/components/blocks/services-5.astro +11 -8
  225. package/src/components/blocks/services-6.astro +4 -3
  226. package/src/components/blocks/services-7.astro +12 -8
  227. package/src/components/ui/accordion/accordion.astro +1 -0
  228. package/src/components/ui/alert-dialog/alert-dialog.astro +1 -0
  229. package/src/components/ui/collapsible/collapsible.astro +1 -0
  230. package/src/components/ui/dialog/dialog.astro +1 -0
  231. package/src/components/ui/dropdown-menu/dropdown-menu.astro +1 -0
  232. package/src/components/ui/hover-card/hover-card.astro +7 -3
  233. package/src/components/ui/icon/icon.astro +46 -29
  234. package/src/components/ui/navigation-menu/navigation-menu.astro +1 -0
  235. package/src/components/ui/popover/popover.astro +1 -0
  236. package/src/components/ui/radio-group/radio-group.astro +1 -0
  237. package/src/components/ui/section/index.ts +2 -0
  238. package/src/components/ui/section/section-container.astro +1 -0
  239. package/src/components/ui/section/section-description.astro +20 -0
  240. package/src/components/ui/section/section-title.astro +20 -0
  241. package/src/components/ui/sheet/sheet-close.astro +4 -2
  242. package/src/components/ui/sheet/sheet.astro +1 -0
  243. package/src/components/ui/slider/slider.astro +1 -0
  244. package/src/components/ui/switch/switch.astro +1 -0
  245. package/src/components/ui/tabs/tabs.astro +1 -0
  246. package/src/components/ui/toggle/toggle.astro +1 -0
  247. package/src/components/ui/tooltip/tooltip.astro +1 -0
  248. package/src/lib/pages.ts +12 -0
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "pricing-3",
4
+ "title": "Pricing 3",
5
+ "description": "Pricing sections for plan grids, featured offers, and concise offer presentation.",
4
6
  "dependencies": [
5
7
  "@lucide/astro"
6
8
  ],
@@ -15,9 +17,13 @@
15
17
  "files": [
16
18
  {
17
19
  "path": "src/components/blocks/pricing-3.astro",
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",
20
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\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 {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 {\n class: className,\n badge,\n title,\n description,\n offer,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\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 <SectionTitle>\n {title}\n </SectionTitle>\n {description && <SectionDescription>{description}</SectionDescription>}\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",
19
21
  "type": "registry:block"
20
22
  }
21
23
  ],
24
+ "docs": "https://ui.full.dev/blocks/pricing/",
25
+ "categories": [
26
+ "pricing"
27
+ ],
22
28
  "type": "registry:block"
23
29
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "product-1",
4
+ "title": "Product 1",
5
+ "description": "A focused product section for flagship offers and compact product storytelling.",
4
6
  "registryDependencies": [
5
7
  "@fulldev/badge",
6
8
  "@fulldev/button",
@@ -10,9 +12,13 @@
10
12
  "files": [
11
13
  {
12
14
  "path": "src/components/blocks/product-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 { Button } from \"@/components/ui/button\"\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 description: string\n image: {\n src: ImageMetadata\n alt: string\n }\n price: {\n value: number\n currency: string\n unit: string\n }\n note: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n image,\n price,\n note,\n buttons,\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"grid gap-8 lg:grid-cols-2 lg:items-center\">\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-[16/11] rounded-lg object-cover\"\n />\n <div class=\"flex flex-col gap-5\">\n <Badge variant=\"secondary\" class=\"w-fit\">{badge}</Badge>\n <h1\n class=\"text-4xl font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-muted-foreground text-lg leading-8\">{description}</p>\n <Price>\n <PriceValue price={price.value} currency={price.currency} />\n <PriceUnit>{price.unit}</PriceUnit>\n </Price>\n <p class=\"border-y py-4 text-sm leading-7\">{note}</p>\n <div class=\"flex 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 </SectionContainer>\n</Section>\n",
15
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n image: {\n src: ImageMetadata\n alt: string\n }\n price: {\n value: number\n currency: string\n unit: string\n }\n note: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n image,\n price,\n note,\n buttons,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"grid gap-8 lg:grid-cols-2 lg:items-center\">\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-[16/11] rounded-lg object-cover\"\n />\n <div class=\"flex flex-col gap-5\">\n <Badge variant=\"secondary\" class=\"w-fit\">{badge}</Badge>\n <h1\n class=\"text-4xl font-semibold tracking-tight text-balance sm:text-5xl\"\n >\n {title}\n </h1>\n <p class=\"text-muted-foreground text-lg leading-8\">{description}</p>\n <Price>\n <PriceValue price={price.value} currency={price.currency} />\n <PriceUnit>{price.unit}</PriceUnit>\n </Price>\n <p class=\"border-y py-4 text-sm leading-7\">{note}</p>\n <div class=\"flex 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 </SectionContainer>\n</Section>\n",
14
16
  "type": "registry:block"
15
17
  }
16
18
  ],
19
+ "docs": "https://ui.full.dev/blocks/product/",
20
+ "categories": [
21
+ "product"
22
+ ],
17
23
  "type": "registry:block"
18
24
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "products-1",
4
+ "title": "Products 1",
5
+ "description": "Product collection layouts for bundles, grouped offers, and category-led merchandising.",
4
6
  "registryDependencies": [
5
7
  "@fulldev/badge",
6
8
  "@fulldev/card",
@@ -10,9 +12,13 @@
10
12
  "files": [
11
13
  {
12
14
  "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",
15
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\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 {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <SectionTitle class=\"mt-4\">\n {title}\n </SectionTitle>\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
16
  "type": "registry:block"
15
17
  }
16
18
  ],
19
+ "docs": "https://ui.full.dev/blocks/products/",
20
+ "categories": [
21
+ "products"
22
+ ],
17
23
  "type": "registry:block"
18
24
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "products-2",
4
+ "title": "Products 2",
5
+ "description": "Product collection layouts for bundles, grouped offers, and category-led merchandising.",
4
6
  "registryDependencies": [
5
7
  "@fulldev/badge",
6
8
  "@fulldev/price",
@@ -10,9 +12,13 @@
10
12
  "files": [
11
13
  {
12
14
  "path": "src/components/blocks/products-2.astro",
13
- "content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\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 products: {\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=\"max-w-2xl\">\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-3\">\n {\n products.map((item) => (\n <div>\n <Separator />\n <div class=\"flex flex-col gap-4 py-5 md:flex-row md:items-center md:justify-between\">\n <div class=\"flex flex-col gap-1 md:max-w-lg\">\n <h3 class=\"text-base font-medium\">{item.title}</h3>\n <p class=\"text-muted-foreground text-sm leading-6\">\n {item.description}\n </p>\n </div>\n <Price>\n <PriceValue\n price={item.price.value}\n currency={item.price.currency}\n />\n <PriceUnit>{item.price.unit}</PriceUnit>\n </Price>\n </div>\n </div>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
15
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n products: {\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, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"gap-8\">\n <div class=\"max-w-2xl\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <SectionTitle class=\"mt-4\">\n {title}\n </SectionTitle>\n </div>\n <div class=\"grid gap-3\">\n {\n products.map((item) => (\n <div>\n <Separator />\n <div class=\"flex flex-col gap-4 py-5 md:flex-row md:items-center md:justify-between\">\n <div class=\"flex flex-col gap-1 md:max-w-lg\">\n <h3 class=\"text-base font-medium\">{item.title}</h3>\n <p class=\"text-muted-foreground text-sm leading-6\">\n {item.description}\n </p>\n </div>\n <Price>\n <PriceValue\n price={item.price.value}\n currency={item.price.currency}\n />\n <PriceUnit>{item.price.unit}</PriceUnit>\n </Price>\n </div>\n </div>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
14
16
  "type": "registry:block"
15
17
  }
16
18
  ],
19
+ "docs": "https://ui.full.dev/blocks/products/",
20
+ "categories": [
21
+ "products"
22
+ ],
17
23
  "type": "registry:block"
18
24
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "products-3",
4
+ "title": "Products 3",
5
+ "description": "Product collection layouts for bundles, grouped offers, and category-led merchandising.",
4
6
  "registryDependencies": [
5
7
  "@fulldev/badge",
6
8
  "@fulldev/card",
@@ -10,9 +12,13 @@
10
12
  "files": [
11
13
  {
12
14
  "path": "src/components/blocks/products-3.astro",
13
- "content": "---\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, 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 title: string\n description: string\n price: {\n value: number\n currency: 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-3\">\n {\n products.map((product) => (\n <Card class=\"text-center\">\n <CardHeader>\n <Price class=\"justify-center\">\n <PriceValue\n class=\"text-3xl font-semibold\"\n price={product.price.value}\n currency={product.price.currency}\n />\n </Price>\n </CardHeader>\n <CardContent class=\"flex flex-col gap-2\">\n <CardTitle>{product.title}</CardTitle>\n <CardDescription>{product.description}</CardDescription>\n </CardContent>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
15
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\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, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n products: {\n title: string\n description: string\n price: {\n value: number\n currency: string\n }\n }[]\n}\n\nconst { class: className, badge, title, products, ...props } = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <SectionTitle class=\"mt-4\">\n {title}\n </SectionTitle>\n </div>\n <div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {\n products.map((product) => (\n <Card class=\"text-center\">\n <CardHeader>\n <Price class=\"justify-center\">\n <PriceValue\n class=\"text-3xl font-semibold\"\n price={product.price.value}\n currency={product.price.currency}\n />\n </Price>\n </CardHeader>\n <CardContent class=\"flex flex-col gap-2\">\n <CardTitle>{product.title}</CardTitle>\n <CardDescription>{product.description}</CardDescription>\n </CardContent>\n </Card>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
14
16
  "type": "registry:block"
15
17
  }
16
18
  ],
19
+ "docs": "https://ui.full.dev/blocks/products/",
20
+ "categories": [
21
+ "products"
22
+ ],
17
23
  "type": "registry:block"
18
24
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "products-4",
4
+ "title": "Products 4",
5
+ "description": "Product collection layouts for bundles, grouped offers, and category-led merchandising.",
4
6
  "registryDependencies": [
5
7
  "@fulldev/button",
6
8
  "@fulldev/card",
@@ -10,9 +12,13 @@
10
12
  "files": [
11
13
  {
12
14
  "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 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",
15
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\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 {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n 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 {\n class: className,\n title,\n description,\n buttons,\n products,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\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 <SectionTitle>\n {title}\n </SectionTitle>\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
16
  "type": "registry:block"
15
17
  }
16
18
  ],
19
+ "docs": "https://ui.full.dev/blocks/products/",
20
+ "categories": [
21
+ "products"
22
+ ],
17
23
  "type": "registry:block"
18
24
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "products-5",
4
+ "title": "Products 5",
5
+ "description": "Product collection layouts for bundles, grouped offers, and category-led merchandising.",
4
6
  "registryDependencies": [
5
7
  "@fulldev/badge",
6
8
  "@fulldev/button",
@@ -11,9 +13,13 @@
11
13
  "files": [
12
14
  {
13
15
  "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\">\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",
16
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\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 {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 {\n class: className,\n badge,\n title,\n buttons,\n products,\n ...props\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)} {...props}>\n <SectionContainer class=\"gap-8\">\n <div class=\"mx-auto max-w-2xl text-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n <SectionTitle class=\"mt-4\">\n {title}\n </SectionTitle>\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
17
  "type": "registry:block"
16
18
  }
17
19
  ],
20
+ "docs": "https://ui.full.dev/blocks/products/",
21
+ "categories": [
22
+ "products"
23
+ ],
18
24
  "type": "registry:block"
19
25
  }
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "radio-group",
4
+ "title": "Radio Group",
5
+ "description": "A set of checkable buttons, known as radio buttons, where no more than one of the buttons can be checked at a time.",
4
6
  "dependencies": [
5
7
  "@data-slot/radio-group"
6
8
  ],
7
9
  "files": [
8
10
  {
9
11
  "path": "src/components/ui/radio-group/radio-group.astro",
10
- "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultValue?: string\n name?: string\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n}\n\nconst {\n class: className,\n defaultValue,\n name,\n disabled,\n readOnly,\n required,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"radio-group\"\n data-default-value={defaultValue}\n data-name={name}\n data-disabled={disabled}\n data-read-only={readOnly}\n data-required={required}\n class={cn(\"grid w-full gap-3\", className)}\n {...props}\n>\n <slot />\n</div>\n\n<script>\n import { create } from \"@data-slot/radio-group\"\n\n create()\n</script>\n",
12
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultValue?: string\n name?: string\n disabled?: boolean\n readOnly?: boolean\n required?: boolean\n}\n\nconst {\n class: className,\n defaultValue,\n name,\n disabled,\n readOnly,\n required,\n ...props\n} = Astro.props\n---\n\n<div\n data-slot=\"radio-group\"\n data-default-value={defaultValue}\n data-name={name}\n data-disabled={disabled}\n data-read-only={readOnly}\n data-required={required}\n class={cn(\"grid w-full gap-3\", className)}\n {...props}\n>\n <slot />\n</div>\n\n<script>\n import { create } from \"@data-slot/radio-group\"\n\n create()\n document.addEventListener(\"astro:page-load\", () => create())\n</script>\n",
11
13
  "type": "registry:ui"
12
14
  },
13
15
  {
@@ -21,5 +23,9 @@
21
23
  "type": "registry:ui"
22
24
  }
23
25
  ],
26
+ "docs": "https://ui.full.dev/components/radio-group/",
27
+ "categories": [
28
+ "ui"
29
+ ],
24
30
  "type": "registry:ui"
25
31
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
3
  "name": "rating",
4
+ "title": "Rating",
5
+ "description": "A star rating component for displaying ratings visually.",
4
6
  "dependencies": [
5
7
  "@lucide/astro"
6
8
  ],
@@ -16,5 +18,9 @@
16
18
  "type": "registry:ui"
17
19
  }
18
20
  ],
21
+ "docs": "https://ui.full.dev/components/rating/",
22
+ "categories": [
23
+ "ui"
24
+ ],
19
25
  "type": "registry:ui"
20
26
  }