fulldev-ui 0.7.0-beta.9 → 0.9.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 (776) hide show
  1. package/CHANGELOG.md +140 -2
  2. package/README.md +18 -16
  3. package/package.json +96 -77
  4. package/public/r/accordion.json +38 -0
  5. package/public/r/alert-dialog.json +78 -0
  6. package/public/r/alert.json +32 -0
  7. package/public/r/article-1.json +17 -0
  8. package/public/r/article-2.json +17 -0
  9. package/public/r/articles-1.json +17 -0
  10. package/public/r/articles-2.json +17 -0
  11. package/public/r/articles-3.json +17 -0
  12. package/public/r/articles-4.json +17 -0
  13. package/public/r/avatar.json +42 -0
  14. package/public/r/badge.json +22 -0
  15. package/public/r/banner-1.json +16 -0
  16. package/public/r/banner-2.json +16 -0
  17. package/public/r/banner.json +27 -0
  18. package/public/r/beta-repo-setup.json +131 -0
  19. package/public/r/blocks-1.json +19 -0
  20. package/public/r/blocks.json +89 -0
  21. package/public/r/breadcrumb.json +50 -0
  22. package/public/r/button.json +22 -0
  23. package/public/r/card.json +47 -0
  24. package/public/r/carousel.json +44 -0
  25. package/public/r/checkbox.json +17 -0
  26. package/public/r/collapsible.json +30 -0
  27. package/public/r/combobox.json +74 -0
  28. package/public/r/command.json +64 -0
  29. package/public/r/components.json +54 -0
  30. package/public/r/contact-1.json +20 -0
  31. package/public/r/contact-2.json +20 -0
  32. package/public/r/contact-3.json +20 -0
  33. package/public/r/content-1.json +17 -0
  34. package/public/r/content-2.json +17 -0
  35. package/public/r/content-3.json +16 -0
  36. package/public/r/content-4.json +17 -0
  37. package/public/r/content-5.json +17 -0
  38. package/public/r/content-6.json +17 -0
  39. package/public/r/cta-1.json +18 -0
  40. package/public/r/cta-2.json +18 -0
  41. package/public/r/cta-3.json +18 -0
  42. package/public/r/cta-4.json +18 -0
  43. package/public/r/cta-5.json +17 -0
  44. package/public/r/cta-6.json +18 -0
  45. package/public/r/cta-7.json +17 -0
  46. package/public/r/cta-8.json +16 -0
  47. package/public/r/dialog.json +69 -0
  48. package/public/r/doc-1.json +21 -0
  49. package/public/r/dropdown-menu.json +73 -0
  50. package/public/r/empty.json +42 -0
  51. package/public/r/faqs-1.json +17 -0
  52. package/public/r/faqs-2.json +17 -0
  53. package/public/r/faqs-3.json +17 -0
  54. package/public/r/faqs-4.json +16 -0
  55. package/public/r/features-1.json +17 -0
  56. package/public/r/features-2.json +17 -0
  57. package/public/r/features-3.json +15 -0
  58. package/public/r/features-4.json +17 -0
  59. package/public/r/features-5.json +17 -0
  60. package/public/r/features-6.json +17 -0
  61. package/public/r/field.json +66 -0
  62. package/public/r/footer-1.json +18 -0
  63. package/public/r/footer-2.json +18 -0
  64. package/public/r/footer-3.json +18 -0
  65. package/public/r/form.json +17 -0
  66. package/public/r/header-1.json +20 -0
  67. package/public/r/header-2.json +20 -0
  68. package/public/r/header-3.json +21 -0
  69. package/public/r/header-4.json +20 -0
  70. package/public/r/header-5.json +21 -0
  71. package/public/r/header.json +31 -0
  72. package/public/r/hero-1.json +17 -0
  73. package/public/r/hero-10.json +18 -0
  74. package/public/r/hero-11.json +18 -0
  75. package/public/r/hero-12.json +16 -0
  76. package/public/r/hero-13.json +16 -0
  77. package/public/r/hero-2.json +18 -0
  78. package/public/r/hero-3.json +16 -0
  79. package/public/r/hero-4.json +17 -0
  80. package/public/r/hero-5.json +19 -0
  81. package/public/r/hero-6.json +19 -0
  82. package/public/r/hero-7.json +19 -0
  83. package/public/r/hero-8.json +16 -0
  84. package/public/r/hero-9.json +19 -0
  85. package/public/r/hover-card.json +30 -0
  86. package/public/r/icon.json +21 -0
  87. package/public/r/init.json +23 -0
  88. package/public/r/input-group.json +48 -0
  89. package/public/r/input.json +17 -0
  90. package/public/r/item.json +65 -0
  91. package/public/r/kbd.json +22 -0
  92. package/public/r/label.json +17 -0
  93. package/public/r/layout.json +35 -0
  94. package/public/r/links-2.json +21 -0
  95. package/public/r/logo.json +27 -0
  96. package/public/r/logos-1.json +16 -0
  97. package/public/r/logos-2.json +17 -0
  98. package/public/r/logos-3.json +16 -0
  99. package/public/r/marquee.json +17 -0
  100. package/public/r/native-select.json +30 -0
  101. package/public/r/navigation-menu.json +63 -0
  102. package/public/r/popover.json +45 -0
  103. package/public/r/price.json +32 -0
  104. package/public/r/pricing-1.json +21 -0
  105. package/public/r/pricing-2.json +20 -0
  106. package/public/r/pricing-3.json +21 -0
  107. package/public/r/product-1.json +18 -0
  108. package/public/r/products-1.json +18 -0
  109. package/public/r/products-2.json +18 -0
  110. package/public/r/products-3.json +18 -0
  111. package/public/r/products-4.json +18 -0
  112. package/public/r/products-5.json +19 -0
  113. package/public/r/radio-group.json +25 -0
  114. package/public/r/rating.json +20 -0
  115. package/public/r/registry.json +3254 -0
  116. package/public/r/reviews-1.json +19 -0
  117. package/public/r/reviews-2.json +19 -0
  118. package/public/r/reviews-3.json +19 -0
  119. package/public/r/reviews-4.json +19 -0
  120. package/public/r/reviews-5.json +19 -0
  121. package/public/r/section.json +22 -0
  122. package/public/r/select.json +58 -0
  123. package/public/r/separator.json +17 -0
  124. package/public/r/services-1.json +18 -0
  125. package/public/r/services-2.json +17 -0
  126. package/public/r/services-3.json +17 -0
  127. package/public/r/services-4.json +17 -0
  128. package/public/r/services-5.json +18 -0
  129. package/public/r/services-6.json +18 -0
  130. package/public/r/services-7.json +18 -0
  131. package/public/r/sheet.json +57 -0
  132. package/public/r/sidebar-1.json +28 -0
  133. package/public/r/sidebar.json +137 -0
  134. package/public/r/skeleton.json +17 -0
  135. package/public/r/slider.json +20 -0
  136. package/public/r/spinner.json +20 -0
  137. package/public/r/switch.json +20 -0
  138. package/public/r/table.json +52 -0
  139. package/public/r/tabs.json +40 -0
  140. package/public/r/textarea.json +17 -0
  141. package/public/r/theme-toggle.json +26 -0
  142. package/public/r/tile.json +27 -0
  143. package/public/r/toc.json +37 -0
  144. package/public/r/toggle.json +25 -0
  145. package/public/r/tooltip.json +30 -0
  146. package/public/r/typography.json +92 -0
  147. package/public/r/video.json +17 -0
  148. package/registry.json +3254 -0
  149. package/src/components/blocks/article-1.astro +83 -0
  150. package/src/components/blocks/article-2.astro +83 -0
  151. package/src/components/blocks/articles-1.astro +101 -0
  152. package/src/components/blocks/articles-2.astro +158 -0
  153. package/src/components/blocks/articles-3.astro +99 -0
  154. package/src/components/blocks/articles-4.astro +86 -0
  155. package/src/components/blocks/banner-1.astro +44 -0
  156. package/src/components/blocks/banner-2.astro +46 -0
  157. package/src/components/blocks/blocks-1.astro +262 -0
  158. package/src/components/blocks/contact-1.astro +126 -0
  159. package/src/components/blocks/contact-2.astro +130 -0
  160. package/src/components/blocks/contact-3.astro +144 -0
  161. package/src/components/blocks/content-1.astro +89 -0
  162. package/src/components/blocks/content-2.astro +89 -0
  163. package/src/components/blocks/content-3.astro +74 -0
  164. package/src/components/blocks/content-4.astro +91 -0
  165. package/src/components/blocks/content-5.astro +115 -0
  166. package/src/components/blocks/content-6.astro +91 -0
  167. package/src/components/blocks/cta-1.astro +99 -0
  168. package/src/components/blocks/cta-2.astro +114 -0
  169. package/src/components/blocks/cta-3.astro +103 -0
  170. package/src/components/blocks/cta-4.astro +113 -0
  171. package/src/components/blocks/cta-5.astro +89 -0
  172. package/src/components/blocks/cta-6.astro +114 -0
  173. package/src/components/blocks/cta-7.astro +102 -0
  174. package/src/components/blocks/cta-8.astro +55 -0
  175. package/src/components/blocks/doc-1.astro +364 -0
  176. package/src/components/blocks/faqs-1.astro +77 -0
  177. package/src/components/blocks/faqs-2.astro +82 -0
  178. package/src/components/blocks/faqs-3.astro +55 -0
  179. package/src/components/blocks/faqs-4.astro +46 -0
  180. package/src/components/blocks/features-1.astro +89 -0
  181. package/src/components/blocks/features-2.astro +76 -0
  182. package/src/components/blocks/features-3.astro +65 -0
  183. package/src/components/blocks/features-4.astro +91 -0
  184. package/src/components/blocks/features-5.astro +76 -0
  185. package/src/components/blocks/features-6.astro +75 -0
  186. package/src/components/blocks/footer-1.astro +94 -0
  187. package/src/components/blocks/footer-2.astro +80 -0
  188. package/src/components/blocks/footer-3.astro +117 -0
  189. package/src/components/blocks/header-1.astro +127 -0
  190. package/src/components/blocks/header-2.astro +129 -0
  191. package/src/components/blocks/header-3.astro +133 -0
  192. package/src/components/blocks/header-4.astro +219 -0
  193. package/src/components/blocks/header-5.astro +223 -0
  194. package/src/components/blocks/hero-1.astro +84 -0
  195. package/src/components/blocks/hero-10.astro +116 -0
  196. package/src/components/blocks/hero-11.astro +111 -0
  197. package/src/components/blocks/hero-12.astro +70 -0
  198. package/src/components/blocks/hero-13.astro +66 -0
  199. package/src/components/blocks/hero-2.astro +107 -0
  200. package/src/components/blocks/hero-3.astro +67 -0
  201. package/src/components/blocks/hero-4.astro +86 -0
  202. package/src/components/blocks/hero-5.astro +122 -0
  203. package/src/components/blocks/hero-6.astro +122 -0
  204. package/src/components/blocks/hero-7.astro +124 -0
  205. package/src/components/blocks/hero-8.astro +69 -0
  206. package/src/components/blocks/hero-9.astro +126 -0
  207. package/src/components/blocks/links-2.astro +56 -0
  208. package/src/components/blocks/logos-1.astro +50 -0
  209. package/src/components/blocks/logos-2.astro +55 -0
  210. package/src/components/blocks/logos-3.astro +34 -0
  211. package/src/components/blocks/pricing-1.astro +106 -0
  212. package/src/components/blocks/pricing-2.astro +100 -0
  213. package/src/components/blocks/pricing-3.astro +92 -0
  214. package/src/components/blocks/product-1.astro +76 -0
  215. package/src/components/blocks/products-1.astro +76 -0
  216. package/src/components/blocks/products-2.astro +61 -0
  217. package/src/components/blocks/products-3.astro +63 -0
  218. package/src/components/blocks/products-4.astro +96 -0
  219. package/src/components/blocks/products-5.astro +93 -0
  220. package/src/components/blocks/reviews-1.astro +74 -0
  221. package/src/components/blocks/reviews-2.astro +81 -0
  222. package/src/components/blocks/reviews-3.astro +84 -0
  223. package/src/components/blocks/reviews-4.astro +111 -0
  224. package/src/components/blocks/reviews-5.astro +172 -0
  225. package/src/components/blocks/services-1.astro +104 -0
  226. package/src/components/blocks/services-2.astro +110 -0
  227. package/src/components/blocks/services-3.astro +105 -0
  228. package/src/components/blocks/services-4.astro +98 -0
  229. package/src/components/blocks/services-5.astro +96 -0
  230. package/src/components/blocks/services-6.astro +103 -0
  231. package/src/components/blocks/services-7.astro +131 -0
  232. package/src/components/blocks/sidebar-1.astro +385 -0
  233. package/src/components/ui/accordion/accordion-content.astro +25 -0
  234. package/src/components/ui/accordion/accordion-item.astro +22 -0
  235. package/src/components/ui/accordion/accordion-trigger.astro +34 -0
  236. package/src/components/ui/accordion/accordion.astro +52 -0
  237. package/src/components/ui/accordion/index.ts +4 -4
  238. package/src/components/ui/alert/alert-action.astro +17 -0
  239. package/src/components/ui/alert/alert-description.astro +20 -0
  240. package/src/components/ui/alert/alert-title.astro +20 -0
  241. package/src/components/ui/alert/alert.astro +35 -0
  242. package/src/components/ui/alert/index.ts +4 -0
  243. package/src/components/ui/alert-dialog/alert-dialog-action.astro +13 -0
  244. package/src/components/ui/alert-dialog/alert-dialog-cancel.astro +13 -0
  245. package/src/components/ui/alert-dialog/alert-dialog-content.astro +30 -0
  246. package/src/components/ui/alert-dialog/alert-dialog-description.astro +20 -0
  247. package/src/components/ui/alert-dialog/alert-dialog-footer.astro +20 -0
  248. package/src/components/ui/alert-dialog/alert-dialog-header.astro +20 -0
  249. package/src/components/ui/alert-dialog/alert-dialog-media.astro +20 -0
  250. package/src/components/ui/alert-dialog/alert-dialog-overlay.astro +21 -0
  251. package/src/components/ui/alert-dialog/alert-dialog-portal.astro +13 -0
  252. package/src/components/ui/alert-dialog/alert-dialog-title.astro +20 -0
  253. package/src/components/ui/alert-dialog/alert-dialog-trigger.astro +13 -0
  254. package/src/components/ui/alert-dialog/alert-dialog.astro +17 -0
  255. package/src/components/ui/alert-dialog/index.ts +12 -0
  256. package/src/components/ui/avatar/avatar-badge.astro +23 -0
  257. package/src/components/ui/avatar/avatar-fallback.astro +20 -0
  258. package/src/components/ui/avatar/avatar-group-count.astro +20 -0
  259. package/src/components/ui/avatar/avatar-group.astro +20 -0
  260. package/src/components/ui/avatar/avatar-image.astro +36 -0
  261. package/src/components/ui/avatar/avatar.astro +23 -0
  262. package/src/components/ui/avatar/index.ts +6 -24
  263. package/src/components/ui/badge/badge-variants.ts +26 -0
  264. package/src/components/ui/badge/badge.astro +24 -0
  265. package/src/components/ui/badge/index.ts +2 -21
  266. package/src/components/ui/banner/banner-container.astro +36 -0
  267. package/src/components/ui/banner/banner.astro +85 -0
  268. package/src/components/ui/banner/index.ts +2 -0
  269. package/src/components/ui/breadcrumb/breadcrumb-ellipsis.astro +24 -0
  270. package/src/components/ui/breadcrumb/breadcrumb-item.astro +17 -0
  271. package/src/components/ui/breadcrumb/breadcrumb-link.astro +17 -0
  272. package/src/components/ui/breadcrumb/breadcrumb-list.astro +20 -0
  273. package/src/components/ui/breadcrumb/breadcrumb-page.astro +20 -0
  274. package/src/components/ui/breadcrumb/breadcrumb-separator.astro +20 -0
  275. package/src/components/ui/breadcrumb/breadcrumb.astro +18 -0
  276. package/src/components/ui/breadcrumb/index.ts +7 -0
  277. package/src/components/ui/button/button-variants.ts +39 -0
  278. package/src/components/ui/button/button.astro +26 -0
  279. package/src/components/ui/button/index.ts +2 -30
  280. package/src/components/ui/card/card-action.astro +20 -0
  281. package/src/components/ui/card/card-content.astro +17 -0
  282. package/src/components/ui/card/card-description.astro +17 -0
  283. package/src/components/ui/card/card-footer.astro +20 -0
  284. package/src/components/ui/card/card-header.astro +20 -0
  285. package/src/components/ui/card/card-title.astro +20 -0
  286. package/src/components/ui/card/card.astro +23 -0
  287. package/src/components/ui/card/index.ts +7 -6
  288. package/src/components/ui/carousel/carousel-content.astro +24 -0
  289. package/src/components/ui/carousel/carousel-item.astro +24 -0
  290. package/src/components/ui/carousel/carousel-next.astro +36 -0
  291. package/src/components/ui/carousel/carousel-previous.astro +36 -0
  292. package/src/components/ui/carousel/carousel.astro +246 -0
  293. package/src/components/ui/carousel/index.ts +9 -8
  294. package/src/components/ui/checkbox/checkbox.astro +63 -0
  295. package/src/components/ui/checkbox/index.ts +1 -1
  296. package/src/components/ui/collapsible/collapsible-content.astro +13 -0
  297. package/src/components/ui/collapsible/collapsible-trigger.astro +18 -0
  298. package/src/components/ui/collapsible/collapsible.astro +33 -0
  299. package/src/components/ui/collapsible/index.ts +3 -3
  300. package/src/components/ui/combobox/combobox-content.astro +61 -0
  301. package/src/components/ui/combobox/combobox-empty.astro +21 -0
  302. package/src/components/ui/combobox/combobox-group.astro +13 -0
  303. package/src/components/ui/combobox/combobox-input.astro +57 -0
  304. package/src/components/ui/combobox/combobox-item.astro +44 -0
  305. package/src/components/ui/combobox/combobox-label.astro +17 -0
  306. package/src/components/ui/combobox/combobox-list.astro +20 -0
  307. package/src/components/ui/combobox/combobox-separator.astro +16 -0
  308. package/src/components/ui/combobox/combobox-trigger.astro +37 -0
  309. package/src/components/ui/combobox/combobox-value.astro +20 -0
  310. package/src/components/ui/combobox/combobox.astro +85 -0
  311. package/src/components/ui/combobox/index.ts +11 -0
  312. package/src/components/ui/command/command-dialog.astro +54 -0
  313. package/src/components/ui/command/command-empty.astro +18 -0
  314. package/src/components/ui/command/command-group.astro +27 -0
  315. package/src/components/ui/command/command-input.astro +31 -0
  316. package/src/components/ui/command/command-item.astro +50 -0
  317. package/src/components/ui/command/command-list.astro +20 -0
  318. package/src/components/ui/command/command-separator.astro +16 -0
  319. package/src/components/ui/command/command-shortcut.astro +20 -0
  320. package/src/components/ui/command/command.astro +76 -0
  321. package/src/components/ui/command/index.ts +9 -9
  322. package/src/components/ui/dialog/dialog-close.astro +17 -0
  323. package/src/components/ui/dialog/dialog-content.astro +50 -0
  324. package/src/components/ui/dialog/dialog-description.astro +20 -0
  325. package/src/components/ui/dialog/dialog-footer.astro +24 -0
  326. package/src/components/ui/dialog/dialog-header.astro +17 -0
  327. package/src/components/ui/dialog/dialog-overlay.astro +22 -0
  328. package/src/components/ui/dialog/dialog-portal.astro +13 -0
  329. package/src/components/ui/dialog/dialog-title.astro +17 -0
  330. package/src/components/ui/dialog/dialog-trigger.astro +13 -0
  331. package/src/components/ui/dialog/dialog.astro +17 -0
  332. package/src/components/ui/dialog/index.ts +10 -9
  333. package/src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.astro +52 -0
  334. package/src/components/ui/dropdown-menu/dropdown-menu-content.astro +58 -0
  335. package/src/components/ui/dropdown-menu/dropdown-menu-group.astro +13 -0
  336. package/src/components/ui/dropdown-menu/dropdown-menu-item.astro +36 -0
  337. package/src/components/ui/dropdown-menu/dropdown-menu-label.astro +23 -0
  338. package/src/components/ui/dropdown-menu/dropdown-menu-portal.astro +11 -0
  339. package/src/components/ui/dropdown-menu/dropdown-menu-radio-item.astro +52 -0
  340. package/src/components/ui/dropdown-menu/dropdown-menu-separator.astro +16 -0
  341. package/src/components/ui/dropdown-menu/dropdown-menu-shortcut.astro +20 -0
  342. package/src/components/ui/dropdown-menu/dropdown-menu-trigger.astro +16 -0
  343. package/src/components/ui/dropdown-menu/dropdown-menu.astro +68 -0
  344. package/src/components/ui/dropdown-menu/index.ts +11 -0
  345. package/src/components/ui/empty/empty-content.astro +20 -0
  346. package/src/components/ui/empty/empty-description.astro +20 -0
  347. package/src/components/ui/empty/empty-header.astro +17 -0
  348. package/src/components/ui/empty/empty-media.astro +34 -0
  349. package/src/components/ui/empty/empty-title.astro +17 -0
  350. package/src/components/ui/empty/empty.astro +20 -0
  351. package/src/components/ui/empty/index.ts +6 -0
  352. package/src/components/ui/field/field-content.astro +20 -0
  353. package/src/components/ui/field/field-description.astro +22 -0
  354. package/src/components/ui/field/field-error.astro +45 -0
  355. package/src/components/ui/field/field-group.astro +20 -0
  356. package/src/components/ui/field/field-label.astro +22 -0
  357. package/src/components/ui/field/field-legend.astro +23 -0
  358. package/src/components/ui/field/field-separator.astro +33 -0
  359. package/src/components/ui/field/field-set.astro +20 -0
  360. package/src/components/ui/field/field-title.astro +20 -0
  361. package/src/components/ui/field/field.astro +39 -0
  362. package/src/components/ui/field/index.ts +10 -0
  363. package/src/components/ui/form/form.astro +13 -0
  364. package/src/components/ui/form/index.ts +1 -7
  365. package/src/components/ui/header/header-container.astro +17 -0
  366. package/src/components/ui/header/header-group.astro +17 -0
  367. package/src/components/ui/header/header.astro +32 -0
  368. package/src/components/ui/header/index.ts +3 -0
  369. package/src/components/ui/hover-card/hover-card-content.astro +51 -0
  370. package/src/components/ui/hover-card/hover-card-trigger.astro +26 -0
  371. package/src/components/ui/hover-card/hover-card.astro +69 -0
  372. package/src/components/ui/hover-card/index.ts +3 -0
  373. package/src/components/ui/icon/icon.astro +90 -0
  374. package/src/components/ui/icon/index.ts +1 -0
  375. package/src/components/ui/input/index.ts +1 -1
  376. package/src/components/ui/input/input.astro +22 -0
  377. package/src/components/ui/input-group/index.ts +6 -0
  378. package/src/components/ui/input-group/input-group-addon.astro +41 -0
  379. package/src/components/ui/input-group/input-group-button.astro +49 -0
  380. package/src/components/ui/input-group/input-group-input.astro +23 -0
  381. package/src/components/ui/input-group/input-group-text.astro +20 -0
  382. package/src/components/ui/input-group/input-group-textarea.astro +19 -0
  383. package/src/components/ui/input-group/input-group.astro +51 -0
  384. package/src/components/ui/item/index.ts +10 -0
  385. package/src/components/ui/item/item-actions.astro +17 -0
  386. package/src/components/ui/item/item-content.astro +21 -0
  387. package/src/components/ui/item/item-description.astro +20 -0
  388. package/src/components/ui/item/item-footer.astro +17 -0
  389. package/src/components/ui/item/item-group.astro +21 -0
  390. package/src/components/ui/item/item-header.astro +17 -0
  391. package/src/components/ui/item/item-media.astro +36 -0
  392. package/src/components/ui/item/item-separator.astro +17 -0
  393. package/src/components/ui/item/item-title.astro +20 -0
  394. package/src/components/ui/item/item.astro +71 -0
  395. package/src/components/ui/kbd/index.ts +2 -0
  396. package/src/components/ui/kbd/kbd-group.astro +17 -0
  397. package/src/components/ui/kbd/kbd.astro +20 -0
  398. package/src/components/ui/label/index.ts +1 -1
  399. package/src/components/ui/label/label.astro +20 -0
  400. package/src/components/ui/layout/index.ts +4 -0
  401. package/src/components/ui/layout/layout-body.astro +26 -0
  402. package/src/components/ui/layout/layout-head.astro +100 -0
  403. package/src/components/ui/layout/layout-main.astro +20 -0
  404. package/src/components/ui/layout/layout.astro +34 -0
  405. package/src/components/ui/logo/index.ts +3 -0
  406. package/src/components/ui/logo/logo-image.astro +48 -0
  407. package/src/components/ui/logo/logo-text.astro +13 -0
  408. package/src/components/ui/logo/logo.astro +22 -0
  409. package/src/components/ui/marquee/index.ts +1 -0
  410. package/src/components/ui/marquee/marquee.astro +106 -0
  411. package/src/components/ui/native-select/index.ts +3 -0
  412. package/src/components/ui/native-select/native-select-optgroup.astro +17 -0
  413. package/src/components/ui/native-select/native-select-option.astro +17 -0
  414. package/src/components/ui/native-select/native-select.astro +36 -0
  415. package/src/components/ui/navigation-menu/index.ts +9 -14
  416. package/src/components/ui/navigation-menu/navigation-menu-content.astro +37 -0
  417. package/src/components/ui/navigation-menu/navigation-menu-indicator.astro +23 -0
  418. package/src/components/ui/navigation-menu/navigation-menu-item.astro +36 -0
  419. package/src/components/ui/navigation-menu/navigation-menu-link.astro +23 -0
  420. package/src/components/ui/navigation-menu/navigation-menu-list.astro +20 -0
  421. package/src/components/ui/navigation-menu/navigation-menu-positioner.astro +47 -0
  422. package/src/components/ui/navigation-menu/navigation-menu-trigger-style.ts +7 -0
  423. package/src/components/ui/navigation-menu/navigation-menu-trigger.astro +27 -0
  424. package/src/components/ui/navigation-menu/navigation-menu.astro +63 -0
  425. package/src/components/ui/popover/index.ts +6 -3
  426. package/src/components/ui/popover/popover-content.astro +62 -0
  427. package/src/components/ui/popover/popover-description.astro +17 -0
  428. package/src/components/ui/popover/popover-header.astro +17 -0
  429. package/src/components/ui/popover/popover-title.astro +13 -0
  430. package/src/components/ui/popover/popover-trigger.astro +11 -0
  431. package/src/components/ui/popover/popover.astro +59 -0
  432. package/src/components/ui/price/format-price-value.ts +91 -0
  433. package/src/components/ui/price/index.ts +3 -0
  434. package/src/components/ui/price/price-unit.astro +16 -0
  435. package/src/components/ui/price/price-value.astro +81 -0
  436. package/src/components/ui/price/price.astro +13 -0
  437. package/src/components/ui/radio-group/index.ts +2 -2
  438. package/src/components/ui/radio-group/radio-group-item.astro +43 -0
  439. package/src/components/ui/radio-group/radio-group.astro +42 -0
  440. package/src/components/ui/rating/index.ts +1 -0
  441. package/src/components/ui/rating/rating.astro +39 -0
  442. package/src/components/ui/section/index.ts +2 -0
  443. package/src/components/ui/section/section-container.astro +19 -0
  444. package/src/components/ui/section/section.astro +32 -0
  445. package/src/components/ui/select/index.ts +8 -11
  446. package/src/components/ui/select/select-content.astro +69 -0
  447. package/src/components/ui/select/select-group.astro +17 -0
  448. package/src/components/ui/select/select-item.astro +39 -0
  449. package/src/components/ui/select/select-label.astro +17 -0
  450. package/src/components/ui/select/select-separator.astro +16 -0
  451. package/src/components/ui/select/select-trigger.astro +40 -0
  452. package/src/components/ui/select/select-value.astro +17 -0
  453. package/src/components/ui/select/select.astro +76 -0
  454. package/src/components/ui/separator/index.ts +1 -1
  455. package/src/components/ui/separator/separator.astro +32 -0
  456. package/src/components/ui/sheet/index.ts +8 -0
  457. package/src/components/ui/sheet/sheet-close.astro +13 -0
  458. package/src/components/ui/sheet/sheet-content.astro +59 -0
  459. package/src/components/ui/sheet/sheet-description.astro +17 -0
  460. package/src/components/ui/sheet/sheet-footer.astro +17 -0
  461. package/src/components/ui/sheet/sheet-header.astro +17 -0
  462. package/src/components/ui/sheet/sheet-title.astro +17 -0
  463. package/src/components/ui/sheet/sheet-trigger.astro +13 -0
  464. package/src/components/ui/sheet/sheet.astro +125 -0
  465. package/src/components/ui/sidebar/index.ts +23 -0
  466. package/src/components/ui/sidebar/sidebar-content.astro +21 -0
  467. package/src/components/ui/sidebar/sidebar-footer.astro +18 -0
  468. package/src/components/ui/sidebar/sidebar-group-action.astro +31 -0
  469. package/src/components/ui/sidebar/sidebar-group-content.astro +18 -0
  470. package/src/components/ui/sidebar/sidebar-group-label.astro +26 -0
  471. package/src/components/ui/sidebar/sidebar-group.astro +18 -0
  472. package/src/components/ui/sidebar/sidebar-header.astro +18 -0
  473. package/src/components/ui/sidebar/sidebar-input.astro +19 -0
  474. package/src/components/ui/sidebar/sidebar-inset.astro +20 -0
  475. package/src/components/ui/sidebar/sidebar-menu-action.astro +40 -0
  476. package/src/components/ui/sidebar/sidebar-menu-badge.astro +21 -0
  477. package/src/components/ui/sidebar/sidebar-menu-button.astro +126 -0
  478. package/src/components/ui/sidebar/sidebar-menu-item.astro +18 -0
  479. package/src/components/ui/sidebar/sidebar-menu-skeleton.astro +31 -0
  480. package/src/components/ui/sidebar/sidebar-menu-sub-button.astro +55 -0
  481. package/src/components/ui/sidebar/sidebar-menu-sub-item.astro +18 -0
  482. package/src/components/ui/sidebar/sidebar-menu-sub.astro +21 -0
  483. package/src/components/ui/sidebar/sidebar-menu.astro +18 -0
  484. package/src/components/ui/sidebar/sidebar-provider.astro +180 -0
  485. package/src/components/ui/sidebar/sidebar-rail.astro +27 -0
  486. package/src/components/ui/sidebar/sidebar-separator.astro +17 -0
  487. package/src/components/ui/sidebar/sidebar-trigger.astro +26 -0
  488. package/src/components/ui/sidebar/sidebar.astro +118 -0
  489. package/src/components/ui/skeleton/index.ts +1 -0
  490. package/src/components/ui/skeleton/skeleton.astro +16 -0
  491. package/src/components/ui/slider/index.ts +1 -0
  492. package/src/components/ui/slider/slider.astro +84 -0
  493. package/src/components/ui/spinner/index.ts +1 -0
  494. package/src/components/ui/spinner/spinner.astro +24 -0
  495. package/src/components/ui/switch/index.ts +1 -1
  496. package/src/components/ui/switch/switch.astro +71 -0
  497. package/src/components/ui/table/index.ts +8 -0
  498. package/src/components/ui/table/table-body.astro +17 -0
  499. package/src/components/ui/table/table-caption.astro +17 -0
  500. package/src/components/ui/table/table-cell.astro +20 -0
  501. package/src/components/ui/table/table-footer.astro +20 -0
  502. package/src/components/ui/table/table-head.astro +20 -0
  503. package/src/components/ui/table/table-header.astro +17 -0
  504. package/src/components/ui/table/table-row.astro +20 -0
  505. package/src/components/ui/table/table.astro +19 -0
  506. package/src/components/ui/tabs/index.ts +8 -0
  507. package/src/components/ui/tabs/tabs-content.astro +20 -0
  508. package/src/components/ui/tabs/tabs-list-variants.ts +18 -0
  509. package/src/components/ui/tabs/tabs-list.astro +30 -0
  510. package/src/components/ui/tabs/tabs-trigger.astro +26 -0
  511. package/src/components/ui/tabs/tabs.astro +38 -0
  512. package/src/components/ui/textarea/index.ts +1 -1
  513. package/src/components/ui/textarea/textarea.astro +23 -0
  514. package/src/components/ui/theme-toggle/index.ts +2 -0
  515. package/src/components/ui/theme-toggle/theme-provider.astro +61 -0
  516. package/src/components/ui/theme-toggle/theme-toggle.astro +84 -0
  517. package/src/components/ui/tile/index.ts +3 -0
  518. package/src/components/ui/tile/tile-content.astro +17 -0
  519. package/src/components/ui/tile/tile-group.astro +76 -0
  520. package/src/components/ui/tile/tile.astro +46 -0
  521. package/src/components/ui/toc/index.ts +5 -0
  522. package/src/components/ui/toc/toc-menu-item.astro +13 -0
  523. package/src/components/ui/toc/toc-menu-link.astro +37 -0
  524. package/src/components/ui/toc/toc-menu.astro +17 -0
  525. package/src/components/ui/toc/toc-title.astro +21 -0
  526. package/src/components/ui/toc/toc.astro +13 -0
  527. package/src/components/ui/toggle/index.ts +3 -0
  528. package/src/components/ui/toggle/toggle-variants.ts +25 -0
  529. package/src/components/ui/toggle/toggle.astro +40 -0
  530. package/src/components/ui/tooltip/index.ts +3 -0
  531. package/src/components/ui/tooltip/tooltip-content.astro +64 -0
  532. package/src/components/ui/tooltip/tooltip-trigger.astro +26 -0
  533. package/src/components/ui/tooltip/tooltip.astro +55 -0
  534. package/src/components/ui/typography/index.ts +16 -0
  535. package/src/components/ui/typography/typography-a.astro +22 -0
  536. package/src/components/ui/typography/typography-blockquote.astro +23 -0
  537. package/src/components/ui/typography/typography-h1.astro +43 -0
  538. package/src/components/ui/typography/typography-h2.astro +43 -0
  539. package/src/components/ui/typography/typography-h3.astro +43 -0
  540. package/src/components/ui/typography/typography-h4.astro +43 -0
  541. package/src/components/ui/typography/typography-inline-code.astro +31 -0
  542. package/src/components/ui/typography/typography-lead.astro +21 -0
  543. package/src/components/ui/typography/typography-list-item.astro +28 -0
  544. package/src/components/ui/typography/typography-list.astro +45 -0
  545. package/src/components/ui/typography/typography-p.astro +23 -0
  546. package/src/components/ui/typography/typography-table-cell.astro +41 -0
  547. package/src/components/ui/typography/typography-table-head.astro +41 -0
  548. package/src/components/ui/typography/typography-table-row.astro +33 -0
  549. package/src/components/ui/typography/typography-table.astro +50 -0
  550. package/src/components/ui/typography/typography.astro +180 -0
  551. package/src/components/ui/video/index.ts +1 -0
  552. package/src/components/ui/video/video.astro +73 -0
  553. package/src/lib/integration.ts +53 -14
  554. package/src/lib/pages.ts +85 -0
  555. package/src/lib/utils.ts +2 -2
  556. package/src/styles/global.css +179 -113
  557. package/cli.js +0 -51
  558. package/components.json +0 -18
  559. package/src/blocks/CategoryGroup1.astro +0 -43
  560. package/src/blocks/CategoryList1.astro +0 -55
  561. package/src/blocks/Contact1.astro +0 -45
  562. package/src/blocks/Contact2.astro +0 -45
  563. package/src/blocks/Content1.astro +0 -29
  564. package/src/blocks/Cta1.astro +0 -30
  565. package/src/blocks/Faqs1.astro +0 -29
  566. package/src/blocks/Faqs2.astro +0 -29
  567. package/src/blocks/Features1.astro +0 -36
  568. package/src/blocks/Footer.astro +0 -59
  569. package/src/blocks/Header.astro +0 -87
  570. package/src/blocks/Hero1.astro +0 -38
  571. package/src/blocks/Intro1.astro +0 -25
  572. package/src/blocks/PostSingle1.astro +0 -29
  573. package/src/blocks/ProductGroup1.astro +0 -82
  574. package/src/blocks/ProductList1.astro +0 -60
  575. package/src/blocks/ProductSingle1.astro +0 -64
  576. package/src/blocks/Reviews1.astro +0 -37
  577. package/src/components/Abstract.astro +0 -36
  578. package/src/components/Accordion.vue +0 -31
  579. package/src/components/Avatar.astro +0 -31
  580. package/src/components/Badge.astro +0 -21
  581. package/src/components/Block.astro +0 -40
  582. package/src/components/Box.astro +0 -28
  583. package/src/components/Button.astro +0 -54
  584. package/src/components/Buttons.astro +0 -50
  585. package/src/components/Card.astro +0 -20
  586. package/src/components/Carousel.vue +0 -38
  587. package/src/components/Chip.astro +0 -27
  588. package/src/components/Code.astro +0 -72
  589. package/src/components/Container.astro +0 -25
  590. package/src/components/Drawer.vue +0 -53
  591. package/src/components/Form.vue +0 -79
  592. package/src/components/Gallery.vue +0 -85
  593. package/src/components/Grid.astro +0 -35
  594. package/src/components/Icon.astro +0 -24
  595. package/src/components/Image.astro +0 -26
  596. package/src/components/Layout.astro +0 -116
  597. package/src/components/Link.astro +0 -22
  598. package/src/components/List.astro +0 -32
  599. package/src/components/Logo.astro +0 -30
  600. package/src/components/Masonry.astro +0 -35
  601. package/src/components/Menu.astro +0 -48
  602. package/src/components/Menus.astro +0 -25
  603. package/src/components/Navigation.vue +0 -93
  604. package/src/components/Panel.astro +0 -18
  605. package/src/components/Person.astro +0 -43
  606. package/src/components/Price.astro +0 -46
  607. package/src/components/Proof.astro +0 -31
  608. package/src/components/Props.astro +0 -21
  609. package/src/components/Prose.astro +0 -28
  610. package/src/components/Rating.astro +0 -36
  611. package/src/components/Search.vue +0 -65
  612. package/src/components/Section.astro +0 -18
  613. package/src/components/Select.vue +0 -41
  614. package/src/components/Separator.astro +0 -0
  615. package/src/components/Sidebar.astro +0 -50
  616. package/src/components/Social.astro +0 -32
  617. package/src/components/Socials.astro +0 -27
  618. package/src/components/Sort.vue +0 -46
  619. package/src/components/Split.astro +0 -27
  620. package/src/components/Table.astro +0 -103
  621. package/src/components/Themer.astro +0 -85
  622. package/src/components/Toc.astro +0 -65
  623. package/src/components/Writeup.astro +0 -37
  624. package/src/components/ui/accordion/Accordion.vue +0 -19
  625. package/src/components/ui/accordion/AccordionContent.vue +0 -24
  626. package/src/components/ui/accordion/AccordionItem.vue +0 -24
  627. package/src/components/ui/accordion/AccordionTrigger.vue +0 -33
  628. package/src/components/ui/auto-form/AutoForm.vue +0 -115
  629. package/src/components/ui/auto-form/AutoFormField.vue +0 -45
  630. package/src/components/ui/auto-form/AutoFormFieldArray.vue +0 -127
  631. package/src/components/ui/auto-form/AutoFormFieldBoolean.vue +0 -47
  632. package/src/components/ui/auto-form/AutoFormFieldDate.vue +0 -78
  633. package/src/components/ui/auto-form/AutoFormFieldEnum.vue +0 -77
  634. package/src/components/ui/auto-form/AutoFormFieldFile.vue +0 -87
  635. package/src/components/ui/auto-form/AutoFormFieldInput.vue +0 -42
  636. package/src/components/ui/auto-form/AutoFormFieldNumber.vue +0 -42
  637. package/src/components/ui/auto-form/AutoFormFieldObject.vue +0 -90
  638. package/src/components/ui/auto-form/AutoFormLabel.vue +0 -19
  639. package/src/components/ui/auto-form/constant.ts +0 -40
  640. package/src/components/ui/auto-form/dependencies.ts +0 -92
  641. package/src/components/ui/auto-form/index.ts +0 -15
  642. package/src/components/ui/auto-form/interface.ts +0 -95
  643. package/src/components/ui/auto-form/utils.ts +0 -188
  644. package/src/components/ui/avatar/Avatar.vue +0 -24
  645. package/src/components/ui/avatar/AvatarFallback.vue +0 -11
  646. package/src/components/ui/avatar/AvatarImage.vue +0 -9
  647. package/src/components/ui/badge/Badge.vue +0 -16
  648. package/src/components/ui/button/Button.vue +0 -26
  649. package/src/components/ui/calendar/Calendar.vue +0 -80
  650. package/src/components/ui/calendar/CalendarCell.vue +0 -29
  651. package/src/components/ui/calendar/CalendarCellTrigger.vue +0 -40
  652. package/src/components/ui/calendar/CalendarGrid.vue +0 -24
  653. package/src/components/ui/calendar/CalendarGridBody.vue +0 -11
  654. package/src/components/ui/calendar/CalendarGridHead.vue +0 -11
  655. package/src/components/ui/calendar/CalendarGridRow.vue +0 -24
  656. package/src/components/ui/calendar/CalendarHeadCell.vue +0 -24
  657. package/src/components/ui/calendar/CalendarHeader.vue +0 -24
  658. package/src/components/ui/calendar/CalendarHeading.vue +0 -27
  659. package/src/components/ui/calendar/CalendarNextButton.vue +0 -30
  660. package/src/components/ui/calendar/CalendarPrevButton.vue +0 -30
  661. package/src/components/ui/calendar/index.ts +0 -12
  662. package/src/components/ui/card/Card.vue +0 -14
  663. package/src/components/ui/card/CardContent.vue +0 -14
  664. package/src/components/ui/card/CardDescription.vue +0 -14
  665. package/src/components/ui/card/CardFooter.vue +0 -14
  666. package/src/components/ui/card/CardHeader.vue +0 -14
  667. package/src/components/ui/card/CardTitle.vue +0 -14
  668. package/src/components/ui/carousel/Carousel.vue +0 -61
  669. package/src/components/ui/carousel/CarouselContent.vue +0 -27
  670. package/src/components/ui/carousel/CarouselItem.vue +0 -19
  671. package/src/components/ui/carousel/CarouselNext.vue +0 -33
  672. package/src/components/ui/carousel/CarouselPrevious.vue +0 -33
  673. package/src/components/ui/carousel/interface.ts +0 -26
  674. package/src/components/ui/carousel/useCarousel.ts +0 -56
  675. package/src/components/ui/checkbox/Checkbox.vue +0 -36
  676. package/src/components/ui/collapsible/Collapsible.vue +0 -15
  677. package/src/components/ui/collapsible/CollapsibleContent.vue +0 -11
  678. package/src/components/ui/collapsible/CollapsibleTrigger.vue +0 -11
  679. package/src/components/ui/command/Command.vue +0 -32
  680. package/src/components/ui/command/CommandDialog.vue +0 -23
  681. package/src/components/ui/command/CommandEmpty.vue +0 -23
  682. package/src/components/ui/command/CommandGroup.vue +0 -39
  683. package/src/components/ui/command/CommandInput.vue +0 -43
  684. package/src/components/ui/command/CommandItem.vue +0 -31
  685. package/src/components/ui/command/CommandList.vue +0 -30
  686. package/src/components/ui/command/CommandSeparator.vue +0 -23
  687. package/src/components/ui/command/CommandShortcut.vue +0 -14
  688. package/src/components/ui/dialog/Dialog.vue +0 -14
  689. package/src/components/ui/dialog/DialogClose.vue +0 -11
  690. package/src/components/ui/dialog/DialogContent.vue +0 -51
  691. package/src/components/ui/dialog/DialogDescription.vue +0 -24
  692. package/src/components/ui/dialog/DialogFooter.vue +0 -12
  693. package/src/components/ui/dialog/DialogHeader.vue +0 -14
  694. package/src/components/ui/dialog/DialogScrollContent.vue +0 -59
  695. package/src/components/ui/dialog/DialogTitle.vue +0 -24
  696. package/src/components/ui/dialog/DialogTrigger.vue +0 -11
  697. package/src/components/ui/drawer/Drawer.vue +0 -19
  698. package/src/components/ui/drawer/DrawerContent.vue +0 -31
  699. package/src/components/ui/drawer/DrawerDescription.vue +0 -23
  700. package/src/components/ui/drawer/DrawerFooter.vue +0 -14
  701. package/src/components/ui/drawer/DrawerHeader.vue +0 -14
  702. package/src/components/ui/drawer/DrawerOverlay.vue +0 -21
  703. package/src/components/ui/drawer/DrawerTitle.vue +0 -23
  704. package/src/components/ui/drawer/index.ts +0 -8
  705. package/src/components/ui/form/FormControl.vue +0 -16
  706. package/src/components/ui/form/FormDescription.vue +0 -20
  707. package/src/components/ui/form/FormItem.vue +0 -19
  708. package/src/components/ui/form/FormLabel.vue +0 -20
  709. package/src/components/ui/form/FormMessage.vue +0 -16
  710. package/src/components/ui/form/injectionKeys.ts +0 -4
  711. package/src/components/ui/form/useFormField.ts +0 -30
  712. package/src/components/ui/input/Input.vue +0 -32
  713. package/src/components/ui/label/Label.vue +0 -24
  714. package/src/components/ui/navigation-menu/NavigationMenu.vue +0 -33
  715. package/src/components/ui/navigation-menu/NavigationMenuContent.vue +0 -36
  716. package/src/components/ui/navigation-menu/NavigationMenuIndicator.vue +0 -29
  717. package/src/components/ui/navigation-menu/NavigationMenuItem.vue +0 -11
  718. package/src/components/ui/navigation-menu/NavigationMenuLink.vue +0 -19
  719. package/src/components/ui/navigation-menu/NavigationMenuList.vue +0 -24
  720. package/src/components/ui/navigation-menu/NavigationMenuTrigger.vue +0 -30
  721. package/src/components/ui/navigation-menu/NavigationMenuViewport.vue +0 -29
  722. package/src/components/ui/popover/Popover.vue +0 -15
  723. package/src/components/ui/popover/PopoverContent.vue +0 -45
  724. package/src/components/ui/popover/PopoverTrigger.vue +0 -11
  725. package/src/components/ui/radio-group/RadioGroup.vue +0 -25
  726. package/src/components/ui/radio-group/RadioGroupItem.vue +0 -32
  727. package/src/components/ui/select/Select.vue +0 -15
  728. package/src/components/ui/select/SelectContent.vue +0 -59
  729. package/src/components/ui/select/SelectGroup.vue +0 -22
  730. package/src/components/ui/select/SelectItem.vue +0 -38
  731. package/src/components/ui/select/SelectItemText.vue +0 -11
  732. package/src/components/ui/select/SelectLabel.vue +0 -13
  733. package/src/components/ui/select/SelectScrollDownButton.vue +0 -27
  734. package/src/components/ui/select/SelectScrollUpButton.vue +0 -27
  735. package/src/components/ui/select/SelectSeparator.vue +0 -20
  736. package/src/components/ui/select/SelectTrigger.vue +0 -33
  737. package/src/components/ui/select/SelectValue.vue +0 -11
  738. package/src/components/ui/separator/Separator.vue +0 -33
  739. package/src/components/ui/switch/Switch.vue +0 -39
  740. package/src/components/ui/textarea/Textarea.vue +0 -32
  741. package/src/schemas/blocks/categoryGroup.ts +0 -17
  742. package/src/schemas/blocks/categoryList.ts +0 -18
  743. package/src/schemas/blocks/categorySingle.ts +0 -12
  744. package/src/schemas/blocks/contact.ts +0 -13
  745. package/src/schemas/blocks/content.ts +0 -13
  746. package/src/schemas/blocks/cta.ts +0 -11
  747. package/src/schemas/blocks/faqs.ts +0 -18
  748. package/src/schemas/blocks/features.ts +0 -17
  749. package/src/schemas/blocks/footer.ts +0 -16
  750. package/src/schemas/blocks/header.ts +0 -18
  751. package/src/schemas/blocks/hero.ts +0 -15
  752. package/src/schemas/blocks/intro.ts +0 -9
  753. package/src/schemas/blocks/postSingle.ts +0 -12
  754. package/src/schemas/blocks/productGroup.ts +0 -17
  755. package/src/schemas/blocks/productList.ts +0 -18
  756. package/src/schemas/blocks/productSingle.ts +0 -17
  757. package/src/schemas/blocks/reviews.ts +0 -16
  758. package/src/schemas/collections/block.ts +0 -83
  759. package/src/schemas/collections/category.ts +0 -11
  760. package/src/schemas/collections/page.ts +0 -13
  761. package/src/schemas/collections/post.ts +0 -11
  762. package/src/schemas/collections/product.ts +0 -11
  763. package/src/schemas/fields/badge.ts +0 -9
  764. package/src/schemas/fields/button.ts +0 -12
  765. package/src/schemas/fields/card.ts +0 -28
  766. package/src/schemas/fields/channel.ts +0 -10
  767. package/src/schemas/fields/form.ts +0 -20
  768. package/src/schemas/fields/image.ts +0 -8
  769. package/src/schemas/fields/link.ts +0 -9
  770. package/src/schemas/fields/logo.ts +0 -10
  771. package/src/schemas/fields/menu.ts +0 -10
  772. package/src/schemas/fields/meta.ts +0 -14
  773. package/src/schemas/fields/path.ts +0 -13
  774. package/src/schemas/fields/proof.ts +0 -11
  775. package/src/schemas/fields/section.ts +0 -48
  776. package/tailwind.config.js +0 -111
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "articles-1",
4
+ "registryDependencies": [
5
+ "@fulldev/avatar",
6
+ "@fulldev/badge",
7
+ "@fulldev/section"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "src/components/blocks/articles-1.astro",
12
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge?: string\n title: string\n description: string\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst { class: className, badge, title, description, articles } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div class=\"flex max-w-2xl flex-col gap-4\">\n {\n badge && (\n <Badge variant=\"secondary\" class=\"w-fit\">\n {badge}\n </Badge>\n )\n }\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 text-base leading-7\">\n {description}\n </p>\n </div>\n\n <div class=\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\n {\n articles.map((article) => (\n <a\n href={article.href ?? \"#\"}\n class=\"group hover:bg-muted/50 focus-visible:ring-ring/50 flex h-full flex-col gap-4 rounded-xl p-4 transition-colors focus-visible:ring-2 focus-visible:outline-none\"\n >\n <Image\n src={article.image.src}\n alt={article.image.alt}\n class=\"-mx-4 -mt-4 aspect-video w-[calc(100%+2rem)] max-w-none rounded-lg object-cover transition-opacity group-hover:opacity-85\"\n widths={[480, 720, 960]}\n sizes=\"(min-width: 64rem) 26rem, (min-width: 48rem) 50vw, 100vw\"\n />\n <div class=\"flex flex-col gap-2\">\n <p class=\"text-muted-foreground text-sm font-medium\">\n {article.category}\n </p>\n <h3 class=\"text-foreground line-clamp-2 text-xl leading-snug font-semibold\">\n {article.title}\n </h3>\n <p class=\"text-muted-foreground line-clamp-2 text-sm leading-6\">\n {article.description}\n </p>\n </div>\n <div class=\"mt-auto flex items-center gap-3\">\n <Avatar>\n <AvatarImage\n src={article.author.image}\n alt={article.author.name}\n />\n <AvatarFallback>{article.author.initials}</AvatarFallback>\n </Avatar>\n <div class=\"flex flex-col\">\n <p class=\"text-sm font-medium\">{article.author.name}</p>\n <p class=\"text-muted-foreground text-xs\">\n {article.author.date}\n </p>\n </div>\n </div>\n </a>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
13
+ "type": "registry:block"
14
+ }
15
+ ],
16
+ "type": "registry:block"
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "articles-2",
4
+ "registryDependencies": [
5
+ "@fulldev/avatar",
6
+ "@fulldev/badge",
7
+ "@fulldev/section"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "src/components/blocks/articles-2.astro",
12
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge?: string\n title: string\n description: string\n featured: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n featured,\n articles,\n} = 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 && <Badge variant=\"secondary\">{badge}</Badge>}\n <h2\n class={cn(\n \"text-3xl font-semibold tracking-tight text-balance sm:text-4xl\",\n badge && \"mt-4\"\n )}\n >\n {title}\n </h2>\n <p class=\"text-muted-foreground mt-2 text-base leading-7 text-balance\">\n {description}\n </p>\n </div>\n\n <a\n href={featured.href ?? \"#\"}\n class=\"group hover:bg-muted/50 focus-visible:ring-ring/50 grid gap-6 rounded-xl transition-colors focus-visible:ring-2 focus-visible:outline-none lg:grid-cols-2 lg:items-center lg:pr-4\"\n >\n <Image\n src={featured.image.src}\n alt={featured.image.alt}\n class=\"aspect-4/3 rounded-lg object-cover transition-opacity group-hover:opacity-85\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 64rem) 50vw, 100vw\"\n />\n <div class=\"flex flex-col gap-4\">\n <Badge variant=\"outline\" class=\"w-fit\">{featured.category}</Badge>\n <h3\n class=\"text-foreground text-2xl leading-tight font-semibold sm:text-3xl\"\n >\n {featured.title}\n </h3>\n <p class=\"text-muted-foreground text-base leading-7\">\n {featured.description}\n </p>\n <div class=\"flex items-center gap-3\">\n <Avatar>\n <AvatarImage\n src={featured.author.image}\n alt={featured.author.name}\n />\n <AvatarFallback>{featured.author.initials}</AvatarFallback>\n </Avatar>\n <div class=\"flex flex-col\">\n <p class=\"text-sm font-medium\">{featured.author.name}</p>\n <p class=\"text-muted-foreground text-xs\">{featured.author.date}</p>\n </div>\n </div>\n </div>\n </a>\n\n <div class=\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\n {\n articles.map((article) => (\n <a\n href={article.href ?? \"#\"}\n class=\"group hover:bg-muted/50 focus-visible:ring-ring/50 flex h-full flex-col gap-4 rounded-xl p-4 transition-colors focus-visible:ring-2 focus-visible:outline-none\"\n >\n <Image\n src={article.image.src}\n alt={article.image.alt}\n class=\"-mx-4 -mt-4 aspect-video w-[calc(100%+2rem)] max-w-none rounded-lg object-cover transition-opacity group-hover:opacity-85\"\n widths={[480, 720]}\n sizes=\"(min-width: 64rem) 22rem, (min-width: 48rem) 50vw, 100vw\"\n />\n <div class=\"flex flex-col gap-2\">\n <p class=\"text-muted-foreground text-sm font-medium\">\n {article.category}\n </p>\n <h3 class=\"text-foreground line-clamp-2 text-lg leading-snug font-semibold\">\n {article.title}\n </h3>\n <p class=\"text-muted-foreground line-clamp-2 text-sm leading-6\">\n {article.description}\n </p>\n </div>\n <div class=\"mt-auto flex items-center gap-3\">\n <Avatar>\n <AvatarImage\n src={article.author.image}\n alt={article.author.name}\n />\n <AvatarFallback>{article.author.initials}</AvatarFallback>\n </Avatar>\n <div class=\"flex flex-col\">\n <p class=\"text-sm font-medium\">{article.author.name}</p>\n <p class=\"text-muted-foreground text-xs\">\n {article.author.date}\n </p>\n </div>\n </div>\n </a>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
13
+ "type": "registry:block"
14
+ }
15
+ ],
16
+ "type": "registry:block"
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "articles-3",
4
+ "registryDependencies": [
5
+ "@fulldev/avatar",
6
+ "@fulldev/badge",
7
+ "@fulldev/section"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "src/components/blocks/articles-3.astro",
12
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge?: string\n title: string\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst { class: className, badge, title, articles } = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer class=\"gap-8\">\n <div class=\"flex flex-wrap items-end justify-between gap-4\">\n <div class=\"flex flex-col gap-4\">\n {\n badge && (\n <Badge variant=\"secondary\" class=\"w-fit\">\n {badge}\n </Badge>\n )\n }\n <h2\n class=\"text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n </div>\n </div>\n\n <div class=\"grid gap-6 md:grid-cols-2 lg:grid-cols-4\">\n {\n articles.map((article) => (\n <a\n href={article.href ?? \"#\"}\n class=\"group bg-muted/50 hover:bg-muted focus-visible:ring-ring/50 flex h-full flex-col gap-4 rounded-xl p-4 transition-colors focus-visible:ring-2 focus-visible:outline-none\"\n >\n <Image\n src={article.image.src}\n alt={article.image.alt}\n class=\"-mx-4 -mt-4 aspect-video w-[calc(100%+2rem)] max-w-none rounded-lg object-cover transition-opacity group-hover:opacity-85\"\n widths={[480, 720]}\n sizes=\"(min-width: 64rem) 18rem, (min-width: 48rem) 50vw, 100vw\"\n />\n <div class=\"flex flex-col gap-2\">\n <p class=\"text-muted-foreground text-sm font-medium\">\n {article.category}\n </p>\n <h3 class=\"text-foreground line-clamp-2 text-lg leading-snug font-semibold\">\n {article.title}\n </h3>\n <p class=\"text-muted-foreground line-clamp-2 text-sm leading-6\">\n {article.description}\n </p>\n </div>\n <div class=\"mt-auto flex items-center gap-3\">\n <Avatar>\n <AvatarImage\n src={article.author.image}\n alt={article.author.name}\n />\n <AvatarFallback>{article.author.initials}</AvatarFallback>\n </Avatar>\n <div class=\"flex flex-col\">\n <p class=\"text-sm font-medium\">{article.author.name}</p>\n <p class=\"text-muted-foreground text-xs\">\n {article.author.date}\n </p>\n </div>\n </div>\n </a>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
13
+ "type": "registry:block"
14
+ }
15
+ ],
16
+ "type": "registry:block"
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "articles-4",
4
+ "registryDependencies": [
5
+ "@fulldev/avatar",
6
+ "@fulldev/badge",
7
+ "@fulldev/section"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "src/components/blocks/articles-4.astro",
12
+ "content": "---\nimport type { ImageMetadata } from \"astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n badge?: string\n title: string\n description: string\n articles: {\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst { class: className, badge, title, description, articles } = 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 && <Badge variant=\"secondary\">{badge}</Badge>}\n <h2\n class={cn(\n \"text-3xl font-semibold tracking-tight text-balance sm:text-4xl\",\n badge && \"mt-4\"\n )}\n >\n {title}\n </h2>\n <p class=\"text-muted-foreground mt-2 text-base leading-7 text-balance\">\n {description}\n </p>\n </div>\n\n <div class=\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\n {\n articles.map((article) => (\n <a\n href={article.href ?? \"#\"}\n class=\"group hover:bg-muted/50 focus-visible:ring-ring/50 flex h-full flex-col gap-4 rounded-xl border p-6 transition-colors focus-visible:ring-2 focus-visible:outline-none\"\n >\n <div class=\"flex flex-col gap-2\">\n <p class=\"text-muted-foreground text-sm font-medium\">\n {article.category}\n </p>\n <h3 class=\"text-foreground line-clamp-2 text-xl leading-snug font-semibold\">\n {article.title}\n </h3>\n <p class=\"text-muted-foreground line-clamp-2 text-sm leading-6\">\n {article.description}\n </p>\n </div>\n <div class=\"mt-auto flex items-center gap-3\">\n <Avatar>\n <AvatarImage\n src={article.author.image}\n alt={article.author.name}\n />\n <AvatarFallback>{article.author.initials}</AvatarFallback>\n </Avatar>\n <div class=\"flex flex-col\">\n <p class=\"text-sm font-medium\">{article.author.name}</p>\n <p class=\"text-muted-foreground text-xs\">\n {article.author.date}\n </p>\n </div>\n </div>\n </a>\n ))\n }\n </div>\n </SectionContainer>\n</Section>\n",
13
+ "type": "registry:block"
14
+ }
15
+ ],
16
+ "type": "registry:block"
17
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "avatar",
4
+ "files": [
5
+ {
6
+ "path": "src/components/ui/avatar/avatar.astro",
7
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n size?: \"default\" | \"sm\" | \"lg\"\n}\n\nconst { class: className, size = \"default\", ...props } = Astro.props\n---\n\n<div\n data-slot=\"avatar\"\n data-size={size}\n class={cn(\n \"after:border-border group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
8
+ "type": "registry:ui"
9
+ },
10
+ {
11
+ "path": "src/components/ui/avatar/avatar-badge.astro",
12
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<span\n data-slot=\"avatar-badge\"\n class={cn(\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n>\n <slot />\n</span>\n",
13
+ "type": "registry:ui"
14
+ },
15
+ {
16
+ "path": "src/components/ui/avatar/avatar-fallback.astro",
17
+ "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=\"avatar-fallback\"\n class={cn(\n \"bg-muted text-muted-foreground absolute inset-0 z-0 flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
18
+ "type": "registry:ui"
19
+ },
20
+ {
21
+ "path": "src/components/ui/avatar/avatar-group.astro",
22
+ "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=\"avatar-group\"\n class={cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
23
+ "type": "registry:ui"
24
+ },
25
+ {
26
+ "path": "src/components/ui/avatar/avatar-group-count.astro",
27
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"avatar-group-count\"\n class={cn(\n \"bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n>\n <slot />\n</div>\n",
28
+ "type": "registry:ui"
29
+ },
30
+ {
31
+ "path": "src/components/ui/avatar/avatar-image.astro",
32
+ "content": "---\nimport { Image } from \"astro:assets\"\nimport type { ComponentProps } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = Partial<ComponentProps<typeof Image>>\n\nconst {\n class: className,\n alt = \"\",\n width = 44,\n height = 44,\n sizes = \"44px\",\n widths = [44, 88, 176],\n ...props\n} = Astro.props\n---\n\n{\n props.src && (\n <Image\n data-slot=\"avatar-image\"\n class={cn(\n \"absolute inset-0 z-10 aspect-square size-full rounded-full object-cover\",\n className\n )}\n alt={alt}\n width={width}\n height={height}\n sizes={sizes}\n widths={widths}\n {...(props as any)}\n />\n )\n}\n",
33
+ "type": "registry:ui"
34
+ },
35
+ {
36
+ "path": "src/components/ui/avatar/index.ts",
37
+ "content": "export { default as Avatar } from \"./avatar.astro\"\nexport { default as AvatarBadge } from \"./avatar-badge.astro\"\nexport { default as AvatarFallback } from \"./avatar-fallback.astro\"\nexport { default as AvatarGroup } from \"./avatar-group.astro\"\nexport { default as AvatarGroupCount } from \"./avatar-group-count.astro\"\nexport { default as AvatarImage } from \"./avatar-image.astro\"\n",
38
+ "type": "registry:ui"
39
+ }
40
+ ],
41
+ "type": "registry:ui"
42
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "badge",
4
+ "files": [
5
+ {
6
+ "path": "src/components/ui/badge/badge-variants.ts",
7
+ "content": "import { cva, type VariantProps } from \"class-variance-authority\"\n\nexport const badgeVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:ring-[3px] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport type BadgeVariantProps = VariantProps<typeof badgeVariants>\n",
8
+ "type": "registry:ui"
9
+ },
10
+ {
11
+ "path": "src/components/ui/badge/badge.astro",
12
+ "content": "---\nimport type { HTMLTag, Polymorphic } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport { badgeVariants, type BadgeVariantProps } from \"./badge-variants\"\n\ntype Props<Tag extends HTMLTag> = Polymorphic<{ as: Tag }> & BadgeVariantProps\n\nconst {\n as: Tag = \"span\",\n class: className,\n variant = \"default\",\n ...props\n} = Astro.props\n---\n\n<Tag\n data-slot=\"badge\"\n class={cn(badgeVariants({ variant }), className)}\n {...props}\n>\n <slot />\n</Tag>\n",
13
+ "type": "registry:ui"
14
+ },
15
+ {
16
+ "path": "src/components/ui/badge/index.ts",
17
+ "content": "export { badgeVariants, type BadgeVariantProps } from \"./badge-variants\"\n\nexport { default as Badge } from \"./badge.astro\"\n",
18
+ "type": "registry:ui"
19
+ }
20
+ ],
21
+ "type": "registry:ui"
22
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "banner-1",
4
+ "registryDependencies": [
5
+ "@fulldev/banner",
6
+ "@fulldev/icon"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "src/components/blocks/banner-1.astro",
11
+ "content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Banner, BannerContainer } from \"@/components/ui/banner\"\nimport { Icon } from \"@/components/ui/icon\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n link?: {\n label: string\n href: string\n }\n}\n\nconst { class: className, title, description, link } = Astro.props\n---\n\n<Banner\n storageKey=\"banner-1\"\n class={cn(\"dark bg-background text-foreground\", className)}\n>\n <BannerContainer class=\"flex-row items-center gap-x-4 gap-y-1\">\n <p class=\"text-sm leading-relaxed\">\n <span class=\"font-semibold\">{title}</span>\n <span class=\"mx-1.5 hidden opacity-50 sm:inline\">&mdash;</span>\n <span class=\"opacity-80\">{description}</span>\n </p>\n {\n link && (\n <a\n href={link.href}\n class=\"group/link inline-flex shrink-0 items-center gap-1 text-sm font-medium underline underline-offset-4 transition-opacity hover:opacity-80\"\n >\n {link.label}\n <Icon\n name=\"arrow-right\"\n class=\"size-3.5 transition-transform group-hover/link:translate-x-0.5\"\n />\n </a>\n )\n }\n </BannerContainer>\n</Banner>\n",
12
+ "type": "registry:block"
13
+ }
14
+ ],
15
+ "type": "registry:block"
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "banner-2",
4
+ "registryDependencies": [
5
+ "@fulldev/banner",
6
+ "@fulldev/button"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "src/components/blocks/banner-2.astro",
11
+ "content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Banner, BannerContainer } from \"@/components/ui/banner\"\nimport { Button } from \"@/components/ui/button\"\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}\n\nconst { class: className, title, description, buttons } = Astro.props\n---\n\n<Banner variant=\"floating\" storageKey=\"banner-2\" class={cn(\"\", className)}>\n <BannerContainer class=\"gap-4 py-1\" showClose={false}>\n <div\n class=\"flex flex-1 flex-col gap-0.5 lg:flex-row lg:items-center lg:gap-x-4\"\n >\n <p class=\"text-sm font-semibold\">{title}</p>\n <p class=\"text-muted-foreground text-sm\">{description}</p>\n </div>\n {\n buttons?.length && (\n <div class=\"flex shrink-0 items-center gap-2\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"sm\"\n variant={button.variant ?? (index === 0 ? \"default\" : \"outline\")}\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </BannerContainer>\n</Banner>\n",
12
+ "type": "registry:block"
13
+ }
14
+ ],
15
+ "type": "registry:block"
16
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "banner",
4
+ "registryDependencies": [
5
+ "@fulldev/button",
6
+ "@fulldev/dropdown-menu",
7
+ "@fulldev/icon"
8
+ ],
9
+ "files": [
10
+ {
11
+ "path": "src/components/ui/banner/banner.astro",
12
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"aside\"> &\n VariantProps<typeof variants> & {\n storageKey?: string\n }\n\nconst variants = cva(\"relative flex items-center py-2\", {\n variants: {\n variant: {\n default: \"bg-foreground text-background w-full\",\n floating:\n \"bg-background mx-auto my-2 w-[calc(100%-2rem)] max-w-[calc(var(--container,1280px)-2rem)] overflow-hidden rounded-lg border shadow-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst { class: className, variant, storageKey, ...props } = Astro.props\n---\n\n<aside\n class={cn(variants({ variant }), className)}\n data-slot=\"banner\"\n data-banner-storage-key={storageKey}\n data-variant={variant}\n {...props}\n>\n <slot />\n</aside>\n\n<script is:inline>\n const initializedKey = \"fulldevBannerInitialized\"\n\n if (!document.documentElement.dataset[initializedKey]) {\n document.documentElement.dataset[initializedKey] = \"true\"\n\n const getStorageToken = (key) => `banner:${key}`\n\n const syncBanners = () => {\n document.querySelectorAll(\"[data-slot='banner']\").forEach((banner) => {\n if (!(banner instanceof HTMLElement)) return\n\n const storageKey = banner.dataset.bannerStorageKey\n\n if (\n storageKey &&\n sessionStorage.getItem(getStorageToken(storageKey)) === \"hidden\"\n ) {\n banner.hidden = true\n }\n })\n }\n\n syncBanners()\n\n document.addEventListener(\"click\", (event) => {\n const target = event.target\n\n if (!(target instanceof Element)) return\n\n const closeButton = target.closest(\"[data-slot='banner-close']\")\n\n if (!(closeButton instanceof HTMLElement)) return\n\n const banner = closeButton.closest(\"[data-slot='banner']\")\n\n if (!(banner instanceof HTMLElement)) return\n\n banner.hidden = true\n\n const storageKey = banner.dataset.bannerStorageKey\n\n if (storageKey) {\n sessionStorage.setItem(getStorageToken(storageKey), \"hidden\")\n }\n })\n }\n</script>\n",
13
+ "type": "registry:ui"
14
+ },
15
+ {
16
+ "path": "src/components/ui/banner/banner-container.astro",
17
+ "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n showClose?: boolean\n}\n\nconst { class: className, showClose = true, ...props } = Astro.props\n---\n\n<div\n class={cn(\n \"relative mx-auto flex w-full max-w-7xl gap-4 px-4\",\n showClose && \"pr-10\",\n className\n )}\n {...props}\n>\n <slot />\n {\n showClose && (\n <button\n type=\"button\"\n class=\"focus-visible:ring-ring/50 absolute top-1/2 right-4 z-20 inline-flex shrink-0 -translate-y-1/2 items-center justify-center rounded-sm text-current/65 transition-colors outline-none hover:text-current focus-visible:text-current focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 in-data-[variant=floating]:right-5\"\n aria-label=\"Close\"\n data-slot=\"banner-close\"\n >\n <Icon name=\"x\" class=\"size-4\" />\n <span class=\"sr-only\">Close</span>\n </button>\n )\n }\n</div>\n",
18
+ "type": "registry:ui"
19
+ },
20
+ {
21
+ "path": "src/components/ui/banner/index.ts",
22
+ "content": "export { default as Banner } from \"./banner.astro\"\nexport { default as BannerContainer } from \"./banner-container.astro\"\n",
23
+ "type": "registry:ui"
24
+ }
25
+ ],
26
+ "type": "registry:ui"
27
+ }
@@ -0,0 +1,131 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "beta-repo-setup",
4
+ "registryDependencies": [
5
+ "@fulldev/blocks",
6
+ "@fulldev/components"
7
+ ],
8
+ "files": [
9
+ {
10
+ "path": "src/content.config.ts",
11
+ "content": "import { defineCollection } from \"astro:content\"\nimport { glob } from \"astro/loaders\"\n\nimport { globalSchema } from \"@/schemas/global\"\nimport { pageSchema } from \"@/schemas/page\"\n\nexport const collections = {\n pages: defineCollection({\n loader: glob({\n pattern: \"**/[^_]*.{md,mdx}\",\n base: \"src/content/pages\",\n }),\n schema: pageSchema,\n }),\n globals: defineCollection({\n loader: glob({\n pattern: \"**/[^_]*.{yaml,yml,json}\",\n base: \"src/content/globals\",\n }),\n schema: globalSchema,\n }),\n}\n",
12
+ "type": "registry:file",
13
+ "target": "src/content.config.ts"
14
+ },
15
+ {
16
+ "path": "src/components/layout-renderer.astro",
17
+ "content": "---\n// Keep this renderer generic and stable. New page types should be wired by\n// adding a matching schema and src/layouts/<type>.astro file, not by adding\n// layout-specific branches here.\nimport { getEntry, render, type CollectionEntry } from \"astro:content\"\n\ntype Props = CollectionEntry<\"pages\">\n\nconst page = Astro.props\nconst pageData = page.data\nconst { Content, headings } = await render(page)\nconst global = await getEntry(\"globals\", Astro.currentLocale || \"en\")\nif (!global) throw new Error(\"Add a global to content/globals\")\nconst globalData = global.data\n\nconst layoutImports = import.meta.glob(\"../layouts/*.astro\", { eager: true })\nconst layoutPath = `../layouts/${pageData.type}.astro`\nconst layoutImport = layoutImports[layoutPath] as { default?: any } | undefined\nconst Layout = layoutImport?.default\n\nif (!Layout) throw new Error(`Add a layout for page type \"${pageData.type}\"`)\n---\n\n<Layout global={globalData} page={pageData} headings={headings}>\n <Content />\n</Layout>\n",
18
+ "type": "registry:file",
19
+ "target": "src/components/layout-renderer.astro"
20
+ },
21
+ {
22
+ "path": "src/lib/pages.ts",
23
+ "content": "import { getCollection, type CollectionEntry } from \"astro:content\"\n\ntype Page = CollectionEntry<\"pages\">\n\nexport type PageSearchItem = {\n label: string\n href: string\n title: string\n path: string\n description: string\n group: string\n}\n\nexport type PageBreadcrumbItem = {\n label: string\n href: string\n}\n\nexport const normalizePath = (path: string) => {\n if (path === \"/\") return path\n\n return path.replace(/\\/$/, \"\")\n}\n\nexport const getPageHref = (page: Page) =>\n page.id === \"index\" ? \"/\" : `/${page.id}/`\n\nexport const formatSlug = (slug: string) =>\n slug\n .split(\"-\")\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \")\n\nconst getPageSearchGroup = (href: string) => {\n const [slug] = href.split(\"/\").filter(Boolean)\n\n return slug ? formatSlug(slug) : \"Overview\"\n}\n\nexport const getPageSearchItems = async (): Promise<PageSearchItem[]> => {\n const pages = await getCollection(\"pages\")\n\n return pages\n .map((page) => ({\n label: page.data.title,\n href: getPageHref(page),\n title: page.data.title,\n path: getPageHref(page),\n description: page.data.description,\n group: getPageSearchGroup(getPageHref(page)),\n }))\n .sort((a, b) => a.label.localeCompare(b.label))\n}\n\nexport const getPageBreadcrumbItems = async (\n pathname: string\n): Promise<PageBreadcrumbItem[]> => {\n const currentPath = normalizePath(pathname)\n const pages = await getCollection(\"pages\")\n const pageTitlesByHref = new Map(\n pages.map((page) => [getPageHref(page), page.data.title])\n )\n const homeLink = {\n label: pageTitlesByHref.get(\"/\") ?? \"Home\",\n href: \"/\",\n }\n\n if (currentPath === \"/\") return [homeLink]\n\n return [\n homeLink,\n ...currentPath\n .split(\"/\")\n .filter(Boolean)\n .map((slug, index, slugs) => {\n const href = `/${slugs.slice(0, index + 1).join(\"/\")}/`\n\n return {\n label: pageTitlesByHref.get(href) ?? formatSlug(slug),\n href,\n }\n }),\n ]\n}\n",
24
+ "type": "registry:file",
25
+ "target": "src/lib/pages.ts"
26
+ },
27
+ {
28
+ "path": "src/pages/[...page].astro",
29
+ "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",
30
+ "type": "registry:file",
31
+ "target": "src/pages/[...page].astro"
32
+ },
33
+ {
34
+ "path": "src/pages/[...page].md.ts",
35
+ "content": "import { readFile } from \"node:fs/promises\"\nimport type { APIRoute } from \"astro\"\nimport { getCollection } from \"astro:content\"\n\nexport const prerender = true\n\nconst navigationPreamble = \"Navigation: [/sitemap.md](/sitemap.md)\\n\\n\"\n\nexport async function getStaticPaths() {\n const pages = await getCollection(\"pages\")\n return Promise.all(\n pages\n .filter((page) => page.id !== \"index\")\n .map(async (page) => ({\n params: {\n page: page.id,\n },\n props: {\n source: await readPageSource(page.filePath),\n },\n }))\n )\n}\n\nasync function readPageSource(filePath: string | undefined) {\n if (!filePath) {\n throw new Error(\"Expected content page entry to include a file path.\")\n }\n\n return readFile(filePath, \"utf-8\")\n}\n\nexport const GET: APIRoute = ({ props }) => {\n return new Response(`${navigationPreamble}${props.source}`, {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n })\n}\n",
36
+ "type": "registry:file",
37
+ "target": "src/pages/[...page].md.ts"
38
+ },
39
+ {
40
+ "path": "src/pages/index.md.ts",
41
+ "content": "import { readFile } from \"node:fs/promises\"\nimport type { APIRoute } from \"astro\"\nimport { getEntry } from \"astro:content\"\n\nexport const prerender = true\n\nconst agentPreamble = `# Fulldev UI Agent Entry Point\n\nNavigation: [/sitemap.md](/sitemap.md)\n\nIf you are an AI agent, treat this page as the entry point for Fulldev UI. Install the Fulldev skill first if your environment supports skills, then read the relevant Markdown pages before editing a project.\n\n\\`\\`\\`bash\nnpx -y skills add fulldotdev/ui --skill fulldev -y\n\\`\\`\\`\n\nStart here:\n\n- Install Fulldev UI: [/docs/installation.md](/docs/installation.md)\n- Understand the project model: [/docs/introduction.md](/docs/introduction.md)\n- Customize theme tokens: [/docs/theming.md](/docs/theming.md)\n- Browse documentation sections: [/docs.md](/docs.md)\n- Browse installable components: [/components.md](/components.md)\n- Browse installable blocks: [/blocks.md](/blocks.md)\n- Discover all pages: [/sitemap.md](/sitemap.md)\n- Read registry metadata: [/r/registry.json](/r/registry.json)\n\nEvery documentation page has a Markdown version. Add \\`.md\\` to a page URL, for example \\`/components/button.md\\` or \\`/blocks/hero.md\\`.\n\nRecommended agent flow:\n\n1. Read \\`/docs/installation.md\\`.\n2. Install the Fulldev skill if your agent supports skills.\n3. Read the component or block page that matches the user's request.\n4. Install registry items with \\`npx shadcn@latest add @fulldev/<name>\\`.\n5. Use block and component examples as source references, not as hidden sidebar context.\n\n---\n\n## Homepage source\n\n`\n\nexport const GET: APIRoute = async () => {\n const page = await getEntry(\"pages\", \"index\")\n\n if (!page?.filePath) {\n return new Response(\n `${agentPreamble}No homepage content entry exists yet. Add \\`src/content/pages/index.mdx\\` to use this Markdown entry point.`,\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n }\n )\n }\n\n return new Response(\n `${agentPreamble}${await readFile(page.filePath, \"utf-8\")}`,\n {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n }\n )\n}\n",
42
+ "type": "registry:file",
43
+ "target": "src/pages/index.md.ts"
44
+ },
45
+ {
46
+ "path": "src/pages/sitemap.md.ts",
47
+ "content": "import type { APIRoute } from \"astro\"\nimport { getCollection } from \"astro:content\"\n\nimport { getPageHref } from \"@/lib/pages\"\n\nexport const prerender = true\n\nconst getMarkdownHref = (href: string) =>\n href === \"/\" ? \"/index.md\" : `${href.replace(/\\/$/, \"\")}.md`\n\nexport const GET: APIRoute = async () => {\n const pages = await getCollection(\"pages\")\n const pageLinks = pages\n .map((page) => ({\n title: page.data.title,\n href: getPageHref(page),\n markdownHref: getMarkdownHref(getPageHref(page)),\n description: page.data.description,\n }))\n .sort((a, b) => a.href.localeCompare(b.href))\n\n const body = `# Fulldev UI Sitemap\n\nUse the Markdown URLs when reading pages as an AI agent.\n\n## Core\n\n- [Agent entry point](/index.md)\n- [Registry metadata](/r/registry.json)\n\n## Pages\n\n${pageLinks\n .map(\n (page) =>\n `- [${page.title}](${page.href}) | [Markdown](${page.markdownHref})${\n page.description ? ` - ${page.description}` : \"\"\n }`\n )\n .join(\"\\n\")}\n`\n\n return new Response(body, {\n headers: {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n },\n })\n}\n",
48
+ "type": "registry:file",
49
+ "target": "src/pages/sitemap.md.ts"
50
+ },
51
+ {
52
+ "path": "src/schemas/shared.ts",
53
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nexport const linkSchema = z.object({\n label: z.string(),\n href: z.string(),\n})\n\nexport const buttonSchema = z.object({\n label: z.string(),\n href: z.string(),\n icon: z.string().optional(),\n variant: z.enum([\"default\", \"outline\", \"secondary\", \"ghost\"]).optional(),\n})\n\nexport const imageSchema = ({ image }: SchemaContext) =>\n z.object({\n src: image(),\n alt: z.string(),\n })\n\nexport const seoSchema = (ctx: SchemaContext) =>\n z.object({\n title: z.string(),\n description: z.string(),\n image: imageSchema(ctx).optional(),\n canonical: z.string().optional(),\n noindex: z.boolean().optional(),\n nofollow: z.boolean().optional(),\n })\n",
54
+ "type": "registry:file",
55
+ "target": "src/schemas/shared.ts"
56
+ },
57
+ {
58
+ "path": "src/schemas/global.ts",
59
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nimport { buttonSchema, linkSchema } from \"@/schemas/shared\"\n\nconst nestedLinkSchema = linkSchema.extend({\n links: linkSchema.array().optional(),\n})\n\nexport const globalSchema = ({ image }: SchemaContext) =>\n z.object({\n name: z.string(),\n logo: z\n .object({\n label: z.string(),\n href: z.string(),\n src: image().optional(),\n srcLight: image().optional(),\n srcDark: image().optional(),\n alt: z.string().optional(),\n })\n .refine((logo) => logo.src || (logo.srcLight && logo.srcDark), {\n message: \"Logo must define src or both srcLight and srcDark.\",\n }),\n header: z.object({\n navigation: nestedLinkSchema.array(),\n githubRepo: z.string(),\n }),\n sidebar: z.object({\n search: z.object({\n label: z.string(),\n empty: z.string(),\n }),\n navigation: nestedLinkSchema.array(),\n }),\n docs: z\n .object({\n callout: z.object({\n description: z.string(),\n button: buttonSchema,\n }),\n })\n .optional(),\n })\n\nexport type GlobalSchema = z.infer<ReturnType<typeof globalSchema>>\n",
60
+ "type": "registry:file",
61
+ "target": "src/schemas/global.ts"
62
+ },
63
+ {
64
+ "path": "src/schemas/page.ts",
65
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nimport { blockSchema } from \"@/schemas/layouts/block\"\nimport { docSchema } from \"@/schemas/layouts/doc\"\nimport { homeSchema } from \"@/schemas/layouts/home\"\nimport { overviewSchema } from \"@/schemas/layouts/overview\"\n\nexport const pageSchema = (ctx: SchemaContext) =>\n z.discriminatedUnion(\"type\", [\n blockSchema(ctx).extend({ type: z.literal(\"block\") }),\n docSchema(ctx).extend({ type: z.literal(\"doc\") }),\n homeSchema(ctx).extend({ type: z.literal(\"home\") }),\n overviewSchema(ctx).extend({ type: z.literal(\"overview\") }),\n ])\n",
66
+ "type": "registry:file",
67
+ "target": "src/schemas/page.ts"
68
+ },
69
+ {
70
+ "path": "src/schemas/layouts/base.ts",
71
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nimport { imageSchema, seoSchema } from \"@/schemas/shared\"\n\nexport const baseSchema = (ctx: SchemaContext) =>\n z.object({\n title: z.string(),\n description: z.string(),\n image: imageSchema(ctx).optional(),\n seo: seoSchema(ctx).optional(),\n })\n\nexport type BaseSchema = z.infer<ReturnType<typeof baseSchema>>\n",
72
+ "type": "registry:file",
73
+ "target": "src/schemas/layouts/base.ts"
74
+ },
75
+ {
76
+ "path": "src/schemas/layouts/block.ts",
77
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nimport { baseSchema } from \"@/schemas/layouts/base\"\n\nexport const blockSchema = (ctx: SchemaContext) =>\n baseSchema(ctx)\n .extend({\n category: z.string().optional(),\n })\n .strict()\n\nexport type BlockSchema = z.infer<ReturnType<typeof blockSchema>>\n",
78
+ "type": "registry:file",
79
+ "target": "src/schemas/layouts/block.ts"
80
+ },
81
+ {
82
+ "path": "src/schemas/layouts/doc.ts",
83
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nimport { baseSchema } from \"@/schemas/layouts/base\"\n\nexport const docSchema = (ctx: SchemaContext) => baseSchema(ctx).loose()\n\nexport type DocSchema = z.infer<ReturnType<typeof docSchema>>\n",
84
+ "type": "registry:file",
85
+ "target": "src/schemas/layouts/doc.ts"
86
+ },
87
+ {
88
+ "path": "src/schemas/layouts/home.ts",
89
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nimport { baseSchema } from \"@/schemas/layouts/base\"\n\nexport const homeSchema = (ctx: SchemaContext) =>\n baseSchema(ctx).extend({}).strict()\n\nexport type HomeSchema = z.infer<ReturnType<typeof homeSchema>>\n",
90
+ "type": "registry:file",
91
+ "target": "src/schemas/layouts/home.ts"
92
+ },
93
+ {
94
+ "path": "src/schemas/layouts/overview.ts",
95
+ "content": "import { type SchemaContext } from \"astro:content\"\nimport { z } from \"astro/zod\"\n\nimport { baseSchema } from \"@/schemas/layouts/base\"\n\nexport const overviewSchema = (ctx: SchemaContext) => baseSchema(ctx).strict()\n\nexport type OverviewSchema = z.infer<ReturnType<typeof overviewSchema>>\n",
96
+ "type": "registry:file",
97
+ "target": "src/schemas/layouts/overview.ts"
98
+ },
99
+ {
100
+ "path": "src/layouts/base.astro",
101
+ "content": "---\nimport { Font } from \"astro:assets\"\n\nimport type { GlobalSchema } from \"@/schemas/global\"\nimport type { BaseSchema } from \"@/schemas/layouts/base\"\nimport { getPageBreadcrumbItems, getPageSearchItems } from \"@/lib/pages\"\nimport Sidebar1 from \"@/components/blocks/sidebar-1.astro\"\nimport {\n Layout,\n LayoutBody,\n LayoutHead,\n LayoutMain,\n} from \"@/components/ui/layout\"\nimport { ThemeProvider } from \"@/components/ui/theme-toggle\"\n\ntype Props = {\n global: GlobalSchema\n page: BaseSchema\n}\n\nconst { global, page }: Props = Astro.props\n\nconst [searchItems, breadcrumbItems] = await Promise.all([\n getPageSearchItems(),\n getPageBreadcrumbItems(Astro.url.pathname),\n])\n---\n\n<Layout>\n <LayoutHead {...global} {...page} {...page.seo}>\n <Fragment slot=\"head\">\n <Font\n cssVariable=\"--font-geist-sans\"\n preload={[{ subset: \"latin\", weight: \"100 900\", style: \"normal\" }]}\n />\n <Font cssVariable=\"--font-geist-mono\" />\n </Fragment>\n <ThemeProvider />\n </LayoutHead>\n <LayoutBody>\n <Sidebar1\n logo={global.logo}\n search={{\n items: searchItems,\n ...global.sidebar.search,\n }}\n breadcrumb={{\n items: breadcrumbItems,\n menu: global.header.navigation,\n }}\n navigation={global.sidebar.navigation}\n githubRepo={global.header.githubRepo}\n >\n <LayoutMain>\n <slot />\n </LayoutMain>\n </Sidebar1>\n </LayoutBody>\n</Layout>\n",
102
+ "type": "registry:file",
103
+ "target": "src/layouts/base.astro"
104
+ },
105
+ {
106
+ "path": "src/layouts/block.astro",
107
+ "content": "---\nimport type { MarkdownHeading } from \"astro\"\nimport { getCollection } from \"astro:content\"\n\nimport type { GlobalSchema } from \"@/schemas/global\"\nimport type { BlockSchema } from \"@/schemas/layouts/block\"\nimport Base from \"@/layouts/base.astro\"\nimport BlocksBlock from \"@/components/blocks/blocks-1.astro\"\n\ntype Props = {\n global: GlobalSchema\n page: BlockSchema\n headings: MarkdownHeading[]\n}\n\nconst props: Props = Astro.props\nconst currentPath = Astro.url.pathname\nconst markdownPath =\n currentPath === \"/\" ? \"/index.md\" : `${currentPath.replace(/\\/$/, \"\")}.md`\n\nconst blocks = await getCollection(\"pages\", ({ data }) => {\n return data.type === \"block\"\n})\nconst currentBlock = blocks.find((entry) => `/${entry.id}/` === currentPath)\nconst isBlockCategory = !props.page.category\nconst orderedBlockCategoryLinks = blocks\n .filter((entry) => !(\"category\" in entry.data) || !entry.data.category)\n .map((entry) => ({\n href: `/${entry.id}/`,\n title: entry.data.title,\n }))\n .sort((a, b) => a.href.localeCompare(b.href))\nconst currentPageIndex = orderedBlockCategoryLinks.findIndex(\n (item) => item.href === currentPath\n)\nconst previousPage =\n isBlockCategory && currentPageIndex > 0\n ? orderedBlockCategoryLinks[currentPageIndex - 1]\n : undefined\nconst nextPage =\n isBlockCategory && currentPageIndex >= 0\n ? orderedBlockCategoryLinks[currentPageIndex + 1]\n : undefined\nconst copySource = blocks.find((entry) => `/${entry.id}/` === currentPath)?.body\nconst copyButton = copySource\n ? {\n id: `blocks-copy-page-${crypto.randomUUID()}`,\n source: currentBlock?.body ?? copySource,\n }\n : undefined\n---\n\n<Base global={props.global} page={props.page}>\n <BlocksBlock\n title={props.page.title}\n description={props.page.description}\n copyButton={copyButton}\n markdownUrl={markdownPath}\n previousPage={previousPage}\n nextPage={nextPage}\n labels={{\n copyMarkdown: \"Copy Markdown\",\n openIn: \"Open in\",\n openInMarkdown: \"Open in Markdown\",\n openInChatGPT: \"Open in ChatGPT\",\n openInClaude: \"Open in Claude\",\n openInCursor: \"Open in Cursor\",\n pagination: {\n previous: \"Previous\",\n next: \"Next\",\n ariaLabel: \"Blocks pagination\",\n },\n }}\n >\n <slot />\n </BlocksBlock>\n</Base>\n",
108
+ "type": "registry:file",
109
+ "target": "src/layouts/block.astro"
110
+ },
111
+ {
112
+ "path": "src/layouts/doc.astro",
113
+ "content": "---\nimport type { MarkdownHeading } from \"astro\"\nimport { getCollection } from \"astro:content\"\n\nimport type { GlobalSchema } from \"@/schemas/global\"\nimport type { DocSchema } from \"@/schemas/layouts/doc\"\nimport Base from \"@/layouts/base.astro\"\nimport DocBlock from \"@/components/blocks/doc-1.astro\"\n\ntype Props = {\n global: GlobalSchema\n page: DocSchema\n headings: MarkdownHeading[]\n}\n\nconst props: Props = Astro.props\nconst currentPath = Astro.url.pathname\nconst globalCallout = props.global.docs?.callout\nconst markdownPath =\n currentPath === \"/\" ? \"/index.md\" : `${currentPath.replace(/\\/$/, \"\")}.md`\n\nconst docsPages = await getCollection(\"pages\")\nconst orderedDocLinks = [\n \"docs/introduction\",\n \"docs/installation\",\n \"docs/theming\",\n \"docs/dark-mode\",\n \"docs/cli\",\n \"docs/mcp\",\n \"docs/skills\",\n \"components\",\n \"blocks\",\n \"docs/layouts\",\n]\n .map((id) => docsPages.find((entry) => entry.id === id))\n .filter((entry): entry is (typeof docsPages)[number] => Boolean(entry))\n .map((entry) => ({\n href: `/${entry.id}/`,\n title: entry.data.title,\n }))\nconst componentLinks = docsPages\n .filter(\n (entry) => entry.data.type === \"doc\" && entry.id.startsWith(\"components/\")\n )\n .map((entry) => ({\n href: `/${entry.id}/`,\n title: entry.data.title,\n description: entry.data.description,\n }))\n .sort((a, b) => a.title.localeCompare(b.title))\nconst paginationLinks = [...orderedDocLinks, ...componentLinks]\nconst currentPageIndex = paginationLinks.findIndex(\n (item) => item.href === currentPath\n)\nconst previousPage =\n currentPageIndex > 0 ? paginationLinks[currentPageIndex - 1] : undefined\nconst nextPage =\n currentPageIndex >= 0 ? paginationLinks[currentPageIndex + 1] : undefined\nconst currentDoc = await getCollection(\"pages\", ({ data, id }) => {\n return data.type === \"doc\" && `/${id}/` === currentPath\n})\nconst copySource = currentDoc[0]?.body\nconst copyButton = copySource\n ? {\n id: `docs-copy-page-${crypto.randomUUID()}`,\n source: copySource,\n }\n : undefined\n\nconst tocItems = props.headings\n .filter((heading) => heading.depth === 2 || heading.depth === 3)\n .map((heading) => ({\n depth: heading.depth,\n href: `#${heading.slug}`,\n label: heading.text,\n }))\n---\n\n<Base global={props.global} page={props.page}>\n <DocBlock\n title={props.page.title}\n description={props.page.description}\n copyButton={copyButton}\n markdownUrl={markdownPath}\n tocItems={tocItems}\n callout={globalCallout}\n previousPage={previousPage}\n nextPage={nextPage}\n labels={{\n copyMarkdown: \"Copy Markdown\",\n openIn: \"Open in\",\n openInMarkdown: \"Open in Markdown\",\n openInChatGPT: \"Open in ChatGPT\",\n openInClaude: \"Open in Claude\",\n openInCursor: \"Open in Cursor\",\n pagination: {\n previous: \"Previous\",\n next: \"Next\",\n ariaLabel: \"Document pagination\",\n },\n toc: \"On This Page\",\n }}\n >\n <slot />\n </DocBlock>\n</Base>\n",
114
+ "type": "registry:file",
115
+ "target": "src/layouts/doc.astro"
116
+ },
117
+ {
118
+ "path": "src/layouts/home.astro",
119
+ "content": "---\nimport type { GlobalSchema } from \"@/schemas/global\"\nimport type { HomeSchema } from \"@/schemas/layouts/home\"\nimport Base from \"@/layouts/base.astro\"\nimport { Typography } from \"@/components/ui/typography\"\n\ntype Props = {\n global: GlobalSchema\n page: HomeSchema\n}\n\nconst { global, page } = Astro.props\n---\n\n<Base global={global} page={page}>\n <Typography\n as=\"article\"\n size=\"lg\"\n class=\"mx-auto w-full max-w-7xl px-4 py-16 lg:px-6 [&>:is(p,ul,ol,blockquote,h1,h2)]:max-w-4xl [&>:is(p,ul,ol,blockquote,h3,h4)]:max-w-3xl [&>[data-slot='tabs']:not(:first-child)]:mt-10\"\n >\n <slot />\n </Typography>\n</Base>\n",
120
+ "type": "registry:file",
121
+ "target": "src/layouts/home.astro"
122
+ },
123
+ {
124
+ "path": "src/layouts/overview.astro",
125
+ "content": "---\nimport { getCollection } from \"astro:content\"\n\nimport type { GlobalSchema } from \"@/schemas/global\"\nimport type { OverviewSchema } from \"@/schemas/layouts/overview\"\nimport Base from \"@/layouts/base.astro\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport { TypographyH1, TypographyLead } from \"@/components/ui/typography\"\n\ntype Props = {\n global: GlobalSchema\n page: OverviewSchema\n}\n\nconst { global, page }: Props = Astro.props\nconst currentPath = Astro.url.pathname\nconst pages = await getCollection(\"pages\")\n\nconst docsIndexOrder = [\n \"docs/introduction\",\n \"docs/installation\",\n \"docs/theming\",\n \"docs/dark-mode\",\n \"docs/cli\",\n \"docs/mcp\",\n \"docs/skills\",\n \"components\",\n \"blocks\",\n \"docs/layouts\",\n]\n\nconst entries =\n currentPath === \"/docs/\"\n ? docsIndexOrder\n .map((id) => pages.find((entry) => entry.id === id))\n .filter((entry): entry is (typeof pages)[number] => Boolean(entry))\n : pages\n .filter(({ data, id }) => {\n if (currentPath === \"/blocks/\") {\n return (\n data.type === \"block\" &&\n (!(\"category\" in data) || !data.category) &&\n id.startsWith(\"blocks/\")\n )\n }\n\n if (currentPath === \"/components/\") {\n return data.type === \"doc\" && id.startsWith(\"components/\")\n }\n\n return false\n })\n .sort((a, b) => a.data.title.localeCompare(b.data.title))\n\nconst overviewLinks = entries.map((entry) => ({\n href: `/${entry.id}/`,\n title: entry.data.title,\n description: entry.data.description,\n}))\n---\n\n<Base global={global} page={page}>\n <SectionContainer class=\"gap-10 pt-10 pb-10 sm:pt-12 sm:pb-12\">\n <div class=\"mx-auto flex w-full max-w-336 flex-col gap-10\">\n <header class=\"flex min-w-0 flex-col gap-4 border-b pb-8\">\n <TypographyH1\n class=\"text-foreground text-left text-3xl tracking-tight sm:text-4xl\"\n >\n {page.title}\n </TypographyH1>\n {\n page.description && (\n <TypographyLead class=\"max-w-2xl text-base leading-7\">\n {page.description}\n </TypographyLead>\n )\n }\n </header>\n\n <section class=\"grid gap-2 md:grid-cols-2 xl:grid-cols-3\">\n {\n overviewLinks.map((item) => (\n <a\n href={item.href}\n class=\"bg-muted/40 hover:bg-muted/60 focus-visible:ring-ring/50 rounded-lg px-4 py-4 transition-colors focus-visible:ring-2 focus-visible:outline-none\"\n >\n <span class=\"text-sm font-medium\">{item.title}</span>\n {item.description && (\n <span class=\"text-muted-foreground mt-1 block text-sm leading-5\">\n {item.description}\n </span>\n )}\n </a>\n ))\n }\n </section>\n </div>\n </SectionContainer>\n</Base>\n",
126
+ "type": "registry:file",
127
+ "target": "src/layouts/overview.astro"
128
+ }
129
+ ],
130
+ "type": "registry:file"
131
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "blocks-1",
4
+ "registryDependencies": [
5
+ "@fulldev/button",
6
+ "@fulldev/dropdown-menu",
7
+ "@fulldev/section",
8
+ "@fulldev/typography",
9
+ "@fulldev/icon"
10
+ ],
11
+ "files": [
12
+ {
13
+ "path": "src/components/blocks/blocks-1.astro",
14
+ "content": "---\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { buttonVariants } from \"@/components/ui/button/button-variants\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport {\n Typography,\n TypographyH1,\n TypographyLead,\n} from \"@/components/ui/typography\"\n\ntype Props = {\n class?: string\n title: string\n description?: string\n copyButton?: {\n id: string\n source: string\n }\n markdownUrl?: string\n previousPage?: {\n href: string\n title: string\n }\n nextPage?: {\n href: string\n title: string\n }\n labels: {\n copyMarkdown: string\n openIn: string\n openInMarkdown: string\n openInChatGPT: string\n openInClaude: string\n openInCursor: string\n pagination: {\n previous: string\n next: string\n ariaLabel: string\n }\n }\n}\n\nconst {\n class: className,\n title,\n description,\n copyButton,\n markdownUrl,\n previousPage,\n nextPage,\n labels,\n} = Astro.props\nconst showCopyButton = Boolean(copyButton)\nconst showOpenButton = Boolean(markdownUrl)\nconst showPagination = Boolean(previousPage || nextPage)\nconst assistantPrompt = markdownUrl\n ? `Read ${markdownUrl}, I want to ask questions about it.`\n : \"\"\nconst openLinks = markdownUrl\n ? [\n {\n label: labels.openInMarkdown,\n href: markdownUrl,\n icon: \"markdown\",\n },\n {\n label: labels.openInChatGPT,\n href: `https://chatgpt.com/?hints=search&q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"chatgpt\",\n },\n {\n label: labels.openInClaude,\n href: `https://claude.ai/new?q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"claude\",\n },\n {\n label: labels.openInCursor,\n href: `https://cursor.com/link/prompt?text=${encodeURIComponent(assistantPrompt)}`,\n icon: \"cursor\",\n },\n ]\n : []\n---\n\n<SectionContainer\n data-slot=\"blocks-page\"\n class={cn(\"gap-10 pt-10 pb-10 sm:pt-12 sm:pb-12\", className)}\n>\n <div class=\"mx-auto flex w-full max-w-336 flex-col gap-10\">\n <header\n class=\"flex flex-col gap-4 border-b pb-8 sm:flex-row sm:items-start sm:justify-between\"\n >\n <div class=\"flex max-w-3xl min-w-0 flex-1 flex-col gap-2\">\n <TypographyH1\n class=\"text-foreground text-left text-3xl tracking-tight sm:text-4xl\"\n >\n {title}\n </TypographyH1>\n {\n description && (\n <TypographyLead class=\"max-w-2xl text-base leading-7\">\n {description}\n </TypographyLead>\n )\n }\n </div>\n <div class=\"flex shrink-0 items-center gap-2 self-start\">\n {\n showCopyButton && (\n <Button\n id={copyButton?.id}\n type=\"button\"\n variant=\"outline\"\n size=\"xs\"\n data-source={copyButton?.source}\n aria-label={labels.copyMarkdown}\n >\n <Icon name=\"copy\" class=\"blocks-copy-icon size-3.5\" />\n <Icon name=\"check\" class=\"blocks-check-icon hidden size-3.5\" />\n <span>{labels.copyMarkdown}</span>\n </Button>\n )\n }\n {\n showOpenButton && (\n <DropdownMenu>\n <DropdownMenuTrigger\n class={buttonVariants({ variant: \"outline\", size: \"xs\" })}\n >\n <span>{labels.openIn}</span>\n <Icon name=\"chevron-down\" class=\"size-3.5 opacity-70\" />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" sideOffset={6} class=\"w-56\">\n {openLinks.map((link) => (\n <a\n href={link.href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n class=\"hover:bg-accent hover:text-accent-foreground flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none\"\n >\n {link.icon === \"markdown\" && (\n <Icon name=\"markdown\" class=\"size-4 fill-current\" />\n )}\n {link.icon === \"chatgpt\" && (\n <svg\n role=\"img\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n class=\"size-4\"\n aria-hidden=\"true\"\n >\n <path d=\"M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.182a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .511 4.91 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.989 5.989 0 0 0 3.998-2.9 6.056 6.056 0 0 0-.748-7.073ZM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.142-.081 4.778-2.758a.795.795 0 0 0 .393-.681v-6.737l2.02 1.169a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.495 4.494Zm-9.66-4.125a4.471 4.471 0 0 1-.535-3.014l.142.085 4.783 2.758a.771.771 0 0 0 .781 0l5.843-3.368v2.332a.08.08 0 0 1-.034.062L9.74 19.95a4.499 4.499 0 0 1-6.14-1.646ZM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.677l5.814 3.354-2.02 1.169a.076.076 0 0 1-.071 0l-4.83-2.787A4.504 4.504 0 0 1 2.34 7.872Zm16.596 3.856-5.833-3.388L15.12 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.104v-5.677a.79.79 0 0 0-.407-.667Zm2.011-3.024-.142-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.499 4.499 0 0 1 6.68 4.66ZM8.307 12.863l-2.02-1.164a.08.08 0 0 1-.038-.057V6.074a4.499 4.499 0 0 1 7.376-3.453l-.142.08-4.778 2.758a.795.795 0 0 0-.393.681Zm1.097-2.365 2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5Z\" />\n </svg>\n )}\n {link.icon === \"claude\" && (\n <Icon name=\"claude\" class=\"size-4 fill-current\" />\n )}\n {link.icon === \"cursor\" && (\n <Icon name=\"cursor\" class=\"size-4 fill-current\" />\n )}\n <span>{link.label}</span>\n <Icon\n name=\"external-link\"\n class=\"text-muted-foreground ml-auto size-3.5\"\n />\n </a>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n }\n </div>\n </header>\n\n <Typography as=\"article\" class=\"w-full max-w-none\" size=\"sm\">\n <slot />\n </Typography>\n\n {\n showPagination && (\n <nav\n class=\"flex items-center justify-between gap-3\"\n aria-label={labels.pagination.ariaLabel}\n >\n {previousPage ? (\n <Button\n as=\"a\"\n href={previousPage.href}\n variant=\"outline\"\n class=\"h-auto min-w-0 items-center justify-start gap-2 px-3 py-2 whitespace-normal\"\n >\n <Icon name=\"arrow-left\" class=\"size-4\" />\n <span class=\"truncate text-sm font-medium\">\n {previousPage.title}\n </span>\n </Button>\n ) : (\n <div aria-hidden=\"true\" />\n )}\n\n {nextPage ? (\n <Button\n as=\"a\"\n href={nextPage.href}\n variant=\"outline\"\n class=\"h-auto min-w-0 items-center justify-end gap-2 px-3 py-2 text-right whitespace-normal\"\n >\n <span class=\"truncate text-sm font-medium\">{nextPage.title}</span>\n <Icon name=\"arrow-right\" class=\"size-4\" />\n </Button>\n ) : (\n <div aria-hidden=\"true\" />\n )}\n </nav>\n )\n }\n </div>\n</SectionContainer>\n\n<script is:inline define:vars={{ copyButtonId: copyButton?.id }}>\n const button = copyButtonId ? document.getElementById(copyButtonId) : null\n\n if (button instanceof HTMLButtonElement) {\n const writeToClipboard = async (text) => {\n if (navigator.clipboard && window.isSecureContext) {\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n return false\n }\n }\n\n return false\n }\n\n button.addEventListener(\"click\", async () => {\n const source = button.dataset.source\n\n if (!source) return\n\n const copied = await writeToClipboard(source)\n\n if (copied) {\n button.querySelector(\".blocks-copy-icon\")?.classList.add(\"hidden\")\n button.querySelector(\".blocks-check-icon\")?.classList.remove(\"hidden\")\n\n window.setTimeout(() => {\n button.querySelector(\".blocks-copy-icon\")?.classList.remove(\"hidden\")\n button.querySelector(\".blocks-check-icon\")?.classList.add(\"hidden\")\n }, 1200)\n }\n })\n }\n</script>\n",
15
+ "type": "registry:block"
16
+ }
17
+ ],
18
+ "type": "registry:block"
19
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "blocks",
4
+ "registryDependencies": [
5
+ "@fulldev/article-1",
6
+ "@fulldev/article-2",
7
+ "@fulldev/articles-1",
8
+ "@fulldev/articles-2",
9
+ "@fulldev/articles-3",
10
+ "@fulldev/articles-4",
11
+ "@fulldev/banner-1",
12
+ "@fulldev/banner-2",
13
+ "@fulldev/blocks-1",
14
+ "@fulldev/contact-1",
15
+ "@fulldev/contact-2",
16
+ "@fulldev/contact-3",
17
+ "@fulldev/content-1",
18
+ "@fulldev/content-2",
19
+ "@fulldev/content-3",
20
+ "@fulldev/content-4",
21
+ "@fulldev/cta-1",
22
+ "@fulldev/cta-2",
23
+ "@fulldev/cta-3",
24
+ "@fulldev/cta-4",
25
+ "@fulldev/cta-5",
26
+ "@fulldev/cta-6",
27
+ "@fulldev/cta-7",
28
+ "@fulldev/cta-8",
29
+ "@fulldev/doc-1",
30
+ "@fulldev/faqs-1",
31
+ "@fulldev/faqs-2",
32
+ "@fulldev/faqs-3",
33
+ "@fulldev/faqs-4",
34
+ "@fulldev/features-1",
35
+ "@fulldev/features-2",
36
+ "@fulldev/features-3",
37
+ "@fulldev/features-4",
38
+ "@fulldev/features-5",
39
+ "@fulldev/features-6",
40
+ "@fulldev/footer-1",
41
+ "@fulldev/footer-2",
42
+ "@fulldev/footer-3",
43
+ "@fulldev/header-1",
44
+ "@fulldev/header-2",
45
+ "@fulldev/header-3",
46
+ "@fulldev/header-4",
47
+ "@fulldev/header-5",
48
+ "@fulldev/hero-1",
49
+ "@fulldev/hero-10",
50
+ "@fulldev/hero-11",
51
+ "@fulldev/hero-12",
52
+ "@fulldev/hero-13",
53
+ "@fulldev/hero-2",
54
+ "@fulldev/hero-3",
55
+ "@fulldev/hero-4",
56
+ "@fulldev/hero-5",
57
+ "@fulldev/hero-6",
58
+ "@fulldev/hero-7",
59
+ "@fulldev/hero-8",
60
+ "@fulldev/hero-9",
61
+ "@fulldev/links-2",
62
+ "@fulldev/logos-1",
63
+ "@fulldev/logos-2",
64
+ "@fulldev/logos-3",
65
+ "@fulldev/pricing-1",
66
+ "@fulldev/pricing-2",
67
+ "@fulldev/pricing-3",
68
+ "@fulldev/product-1",
69
+ "@fulldev/products-1",
70
+ "@fulldev/products-2",
71
+ "@fulldev/products-3",
72
+ "@fulldev/products-4",
73
+ "@fulldev/products-5",
74
+ "@fulldev/reviews-1",
75
+ "@fulldev/reviews-2",
76
+ "@fulldev/reviews-3",
77
+ "@fulldev/reviews-4",
78
+ "@fulldev/reviews-5",
79
+ "@fulldev/services-1",
80
+ "@fulldev/services-2",
81
+ "@fulldev/services-3",
82
+ "@fulldev/services-4",
83
+ "@fulldev/services-5",
84
+ "@fulldev/services-6",
85
+ "@fulldev/services-7",
86
+ "@fulldev/sidebar-1"
87
+ ],
88
+ "type": "registry:item"
89
+ }