fulldev-ui 0.6.5 → 0.7.0-beta.2

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 (476) hide show
  1. package/.prettierrc.yaml +10 -3
  2. package/README.md +2 -1
  3. package/astro.config.ts +20 -17
  4. package/components.json +18 -0
  5. package/package.json +61 -34
  6. package/pnpm-lock.yaml +3690 -1465
  7. package/public/images/categories/journals.jpg +0 -0
  8. package/public/images/categories/productivity.jpg +0 -0
  9. package/public/images/categories/workspace.jpg +0 -0
  10. package/public/images/leather-long-wallet.jpg +0 -0
  11. package/public/images/products/earthen-mug.jpg +0 -0
  12. package/public/images/products/leather-long-wallet.jpg +0 -0
  13. package/public/images/products/leatherbound-daily-journal-set.jpg +0 -0
  14. package/public/images/products/leatherbound-daily-journal.jpg +0 -0
  15. package/public/images/products/machines-pen.jpg +0 -0
  16. package/public/images/products/machines-pencil-and-pen-set.jpg +0 -0
  17. package/public/images/products/mini-sketchbooks.jpg +0 -0
  18. package/public/images/products/organizer-set.jpg +0 -0
  19. package/src/blocks/CategoryGroup1.astro +43 -0
  20. package/src/blocks/CategoryList1.astro +55 -0
  21. package/src/blocks/Contact1.astro +34 -77
  22. package/src/blocks/Contact2.astro +31 -77
  23. package/src/blocks/Content1.astro +18 -30
  24. package/src/blocks/Cta1.astro +18 -58
  25. package/src/blocks/Faqs1.astro +29 -0
  26. package/src/blocks/Faqs2.astro +29 -0
  27. package/src/blocks/Features1.astro +25 -61
  28. package/src/blocks/Footer.astro +47 -71
  29. package/src/blocks/Header.astro +68 -123
  30. package/src/blocks/Hero1.astro +23 -54
  31. package/src/blocks/Intro1.astro +16 -58
  32. package/src/blocks/PostSingle1.astro +29 -0
  33. package/src/blocks/ProductGroup1.astro +82 -0
  34. package/src/blocks/ProductList1.astro +60 -0
  35. package/src/blocks/ProductSingle1.astro +64 -0
  36. package/src/blocks/Reviews1.astro +23 -67
  37. package/src/components/Abstract.astro +36 -0
  38. package/src/components/Accordion.vue +31 -0
  39. package/src/components/Avatar.astro +23 -32
  40. package/src/components/Badge.astro +10 -58
  41. package/src/components/Block.astro +20 -20
  42. package/src/components/Box.astro +28 -0
  43. package/src/components/Button.astro +38 -78
  44. package/src/components/Buttons.astro +41 -19
  45. package/src/components/Card.astro +20 -0
  46. package/src/components/Carousel.vue +44 -0
  47. package/src/components/Chip.astro +27 -0
  48. package/src/{structures → components}/Code.astro +27 -8
  49. package/src/components/Container.astro +25 -0
  50. package/src/components/Drawer.vue +53 -0
  51. package/src/components/Form.vue +82 -0
  52. package/src/components/Gallery.vue +85 -0
  53. package/src/components/Grid.astro +35 -0
  54. package/src/components/Icon.astro +12 -45
  55. package/src/components/Image.astro +6 -28
  56. package/src/components/Layout.astro +126 -0
  57. package/src/components/Link.astro +7 -65
  58. package/src/components/List.astro +13 -77
  59. package/src/components/Logo.astro +16 -35
  60. package/src/components/Masonry.astro +35 -0
  61. package/src/components/Menu.astro +31 -36
  62. package/src/components/Menus.astro +15 -10
  63. package/src/components/Navigation.vue +93 -0
  64. package/src/components/Panel.astro +18 -0
  65. package/src/components/Person.astro +43 -0
  66. package/src/components/Price.astro +26 -11
  67. package/src/components/Proof.astro +16 -37
  68. package/src/components/{docs/Props.astro → Props.astro} +3 -3
  69. package/src/components/Prose.astro +28 -0
  70. package/src/components/Rating.astro +5 -24
  71. package/src/components/Search.vue +65 -0
  72. package/src/components/Section.astro +18 -0
  73. package/src/components/Select.vue +41 -0
  74. package/src/components/Separator.astro +0 -0
  75. package/src/components/Sidebar.astro +50 -0
  76. package/src/components/Social.astro +8 -15
  77. package/src/components/Socials.astro +21 -19
  78. package/src/components/Sort.vue +46 -0
  79. package/src/components/Split.astro +27 -0
  80. package/src/components/Table.astro +17 -17
  81. package/src/components/Themer.astro +12 -3
  82. package/src/components/Toc.astro +24 -21
  83. package/src/components/Writeup.astro +37 -0
  84. package/src/components/ui/accordion/Accordion.vue +19 -0
  85. package/src/components/ui/accordion/AccordionContent.vue +24 -0
  86. package/src/components/ui/accordion/AccordionItem.vue +24 -0
  87. package/src/components/ui/accordion/AccordionTrigger.vue +33 -0
  88. package/src/components/ui/accordion/index.ts +4 -0
  89. package/src/components/ui/auto-form/AutoForm.vue +115 -0
  90. package/src/components/ui/auto-form/AutoFormField.vue +45 -0
  91. package/src/components/ui/auto-form/AutoFormFieldArray.vue +127 -0
  92. package/src/components/ui/auto-form/AutoFormFieldBoolean.vue +47 -0
  93. package/src/components/ui/auto-form/AutoFormFieldDate.vue +78 -0
  94. package/src/components/ui/auto-form/AutoFormFieldEnum.vue +77 -0
  95. package/src/components/ui/auto-form/AutoFormFieldFile.vue +87 -0
  96. package/src/components/ui/auto-form/AutoFormFieldInput.vue +42 -0
  97. package/src/components/ui/auto-form/AutoFormFieldNumber.vue +42 -0
  98. package/src/components/ui/auto-form/AutoFormFieldObject.vue +90 -0
  99. package/src/components/ui/auto-form/AutoFormLabel.vue +19 -0
  100. package/src/components/ui/auto-form/constant.ts +40 -0
  101. package/src/components/ui/auto-form/dependencies.ts +92 -0
  102. package/src/components/ui/auto-form/index.ts +15 -0
  103. package/src/components/ui/auto-form/interface.ts +95 -0
  104. package/src/components/ui/auto-form/utils.ts +188 -0
  105. package/src/components/ui/avatar/Avatar.vue +24 -0
  106. package/src/components/ui/avatar/AvatarFallback.vue +11 -0
  107. package/src/components/ui/avatar/AvatarImage.vue +9 -0
  108. package/src/components/ui/avatar/index.ts +24 -0
  109. package/src/components/ui/badge/Badge.vue +16 -0
  110. package/src/components/ui/badge/index.ts +22 -0
  111. package/src/components/ui/breadcrumb/Breadcrumb.vue +13 -0
  112. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +22 -0
  113. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +14 -0
  114. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +19 -0
  115. package/src/components/ui/breadcrumb/BreadcrumbList.vue +16 -0
  116. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +19 -0
  117. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +21 -0
  118. package/src/components/ui/breadcrumb/index.ts +7 -0
  119. package/src/components/ui/button/Button.vue +26 -0
  120. package/src/components/ui/button/index.ts +31 -0
  121. package/src/components/ui/calendar/Calendar.vue +80 -0
  122. package/src/components/ui/calendar/CalendarCell.vue +29 -0
  123. package/src/components/ui/calendar/CalendarCellTrigger.vue +40 -0
  124. package/src/components/ui/calendar/CalendarGrid.vue +24 -0
  125. package/src/components/ui/calendar/CalendarGridBody.vue +11 -0
  126. package/src/components/ui/calendar/CalendarGridHead.vue +11 -0
  127. package/src/components/ui/calendar/CalendarGridRow.vue +24 -0
  128. package/src/components/ui/calendar/CalendarHeadCell.vue +24 -0
  129. package/src/components/ui/calendar/CalendarHeader.vue +24 -0
  130. package/src/components/ui/calendar/CalendarHeading.vue +27 -0
  131. package/src/components/ui/calendar/CalendarNextButton.vue +30 -0
  132. package/src/components/ui/calendar/CalendarPrevButton.vue +30 -0
  133. package/src/components/ui/calendar/index.ts +12 -0
  134. package/src/components/ui/card/Card.vue +14 -0
  135. package/src/components/ui/card/CardContent.vue +14 -0
  136. package/src/components/ui/card/CardDescription.vue +14 -0
  137. package/src/components/ui/card/CardFooter.vue +14 -0
  138. package/src/components/ui/card/CardHeader.vue +14 -0
  139. package/src/components/ui/card/CardTitle.vue +14 -0
  140. package/src/components/ui/card/index.ts +6 -0
  141. package/src/components/ui/carousel/Carousel.vue +61 -0
  142. package/src/components/ui/carousel/CarouselContent.vue +27 -0
  143. package/src/components/ui/carousel/CarouselItem.vue +19 -0
  144. package/src/components/ui/carousel/CarouselNext.vue +33 -0
  145. package/src/components/ui/carousel/CarouselPrevious.vue +33 -0
  146. package/src/components/ui/carousel/index.ts +10 -0
  147. package/src/components/ui/carousel/interface.ts +26 -0
  148. package/src/components/ui/carousel/useCarousel.ts +56 -0
  149. package/src/components/ui/checkbox/Checkbox.vue +36 -0
  150. package/src/components/ui/checkbox/index.ts +1 -0
  151. package/src/components/ui/collapsible/Collapsible.vue +15 -0
  152. package/src/components/ui/collapsible/CollapsibleContent.vue +11 -0
  153. package/src/components/ui/collapsible/CollapsibleTrigger.vue +11 -0
  154. package/src/components/ui/collapsible/index.ts +3 -0
  155. package/src/components/ui/command/Command.vue +32 -0
  156. package/src/components/ui/command/CommandDialog.vue +23 -0
  157. package/src/components/ui/command/CommandEmpty.vue +23 -0
  158. package/src/components/ui/command/CommandGroup.vue +39 -0
  159. package/src/components/ui/command/CommandInput.vue +43 -0
  160. package/src/components/ui/command/CommandItem.vue +31 -0
  161. package/src/components/ui/command/CommandList.vue +30 -0
  162. package/src/components/ui/command/CommandSeparator.vue +23 -0
  163. package/src/components/ui/command/CommandShortcut.vue +14 -0
  164. package/src/components/ui/command/index.ts +9 -0
  165. package/src/components/ui/dialog/Dialog.vue +14 -0
  166. package/src/components/ui/dialog/DialogClose.vue +11 -0
  167. package/src/components/ui/dialog/DialogContent.vue +51 -0
  168. package/src/components/ui/dialog/DialogDescription.vue +24 -0
  169. package/src/components/ui/dialog/DialogFooter.vue +12 -0
  170. package/src/components/ui/dialog/DialogHeader.vue +14 -0
  171. package/src/components/ui/dialog/DialogScrollContent.vue +59 -0
  172. package/src/components/ui/dialog/DialogTitle.vue +24 -0
  173. package/src/components/ui/dialog/DialogTrigger.vue +11 -0
  174. package/src/components/ui/dialog/index.ts +9 -0
  175. package/src/components/ui/drawer/Drawer.vue +19 -0
  176. package/src/components/ui/drawer/DrawerContent.vue +31 -0
  177. package/src/components/ui/drawer/DrawerDescription.vue +23 -0
  178. package/src/components/ui/drawer/DrawerFooter.vue +14 -0
  179. package/src/components/ui/drawer/DrawerHeader.vue +14 -0
  180. package/src/components/ui/drawer/DrawerOverlay.vue +21 -0
  181. package/src/components/ui/drawer/DrawerTitle.vue +23 -0
  182. package/src/components/ui/drawer/index.ts +8 -0
  183. package/src/components/ui/form/FormControl.vue +16 -0
  184. package/src/components/ui/form/FormDescription.vue +20 -0
  185. package/src/components/ui/form/FormItem.vue +19 -0
  186. package/src/components/ui/form/FormLabel.vue +20 -0
  187. package/src/components/ui/form/FormMessage.vue +16 -0
  188. package/src/components/ui/form/index.ts +7 -0
  189. package/src/components/ui/form/injectionKeys.ts +4 -0
  190. package/src/components/ui/form/useFormField.ts +30 -0
  191. package/src/components/ui/input/Input.vue +32 -0
  192. package/src/components/ui/input/index.ts +1 -0
  193. package/src/components/ui/label/Label.vue +24 -0
  194. package/src/components/ui/label/index.ts +1 -0
  195. package/src/components/ui/navigation-menu/NavigationMenu.vue +33 -0
  196. package/src/components/ui/navigation-menu/NavigationMenuContent.vue +36 -0
  197. package/src/components/ui/navigation-menu/NavigationMenuIndicator.vue +29 -0
  198. package/src/components/ui/navigation-menu/NavigationMenuItem.vue +11 -0
  199. package/src/components/ui/navigation-menu/NavigationMenuLink.vue +19 -0
  200. package/src/components/ui/navigation-menu/NavigationMenuList.vue +24 -0
  201. package/src/components/ui/navigation-menu/NavigationMenuTrigger.vue +30 -0
  202. package/src/components/ui/navigation-menu/NavigationMenuViewport.vue +29 -0
  203. package/src/components/ui/navigation-menu/index.ts +14 -0
  204. package/src/components/ui/popover/Popover.vue +15 -0
  205. package/src/components/ui/popover/PopoverContent.vue +45 -0
  206. package/src/components/ui/popover/PopoverTrigger.vue +11 -0
  207. package/src/components/ui/popover/index.ts +3 -0
  208. package/src/components/ui/radio-group/RadioGroup.vue +25 -0
  209. package/src/components/ui/radio-group/RadioGroupItem.vue +32 -0
  210. package/src/components/ui/radio-group/index.ts +2 -0
  211. package/src/components/ui/select/Select.vue +15 -0
  212. package/src/components/ui/select/SelectContent.vue +59 -0
  213. package/src/components/ui/select/SelectGroup.vue +22 -0
  214. package/src/components/ui/select/SelectItem.vue +38 -0
  215. package/src/components/ui/select/SelectItemText.vue +11 -0
  216. package/src/components/ui/select/SelectLabel.vue +13 -0
  217. package/src/components/ui/select/SelectScrollDownButton.vue +27 -0
  218. package/src/components/ui/select/SelectScrollUpButton.vue +27 -0
  219. package/src/components/ui/select/SelectSeparator.vue +20 -0
  220. package/src/components/ui/select/SelectTrigger.vue +33 -0
  221. package/src/components/ui/select/SelectValue.vue +11 -0
  222. package/src/components/ui/select/index.ts +11 -0
  223. package/src/components/ui/separator/Separator.vue +33 -0
  224. package/src/components/ui/separator/index.ts +1 -0
  225. package/src/components/ui/switch/Switch.vue +39 -0
  226. package/src/components/ui/switch/index.ts +1 -0
  227. package/src/components/ui/textarea/Textarea.vue +32 -0
  228. package/src/components/ui/textarea/index.ts +1 -0
  229. package/src/lib/utils.ts +6 -0
  230. package/src/schemas/blocks/categoryGroup.ts +17 -0
  231. package/src/schemas/blocks/categoryList.ts +18 -0
  232. package/src/schemas/blocks/categorySingle.ts +12 -0
  233. package/src/schemas/blocks/contact.ts +13 -0
  234. package/src/schemas/blocks/content.ts +13 -0
  235. package/src/schemas/blocks/cta.ts +11 -0
  236. package/src/schemas/blocks/faqs.ts +17 -0
  237. package/src/schemas/blocks/features.ts +16 -0
  238. package/src/schemas/blocks/footer.ts +16 -0
  239. package/src/schemas/{header.ts → blocks/header.ts} +5 -8
  240. package/src/schemas/blocks/hero.ts +15 -0
  241. package/src/schemas/blocks/intro.ts +9 -0
  242. package/src/schemas/blocks/postSingle.ts +12 -0
  243. package/src/schemas/blocks/productGroup.ts +17 -0
  244. package/src/schemas/blocks/productList.ts +18 -0
  245. package/src/schemas/blocks/productSingle.ts +17 -0
  246. package/src/schemas/blocks/reviews.ts +16 -0
  247. package/src/schemas/fields/badge.ts +9 -0
  248. package/src/schemas/fields/block.ts +60 -0
  249. package/src/schemas/fields/button.ts +12 -0
  250. package/src/schemas/fields/card.ts +28 -0
  251. package/src/schemas/fields/channel.ts +10 -0
  252. package/src/schemas/fields/form.ts +20 -0
  253. package/src/schemas/fields/image.ts +8 -0
  254. package/src/schemas/fields/link.ts +9 -0
  255. package/src/schemas/fields/logo.ts +10 -0
  256. package/src/schemas/fields/menu.ts +10 -0
  257. package/src/schemas/fields/meta.ts +14 -0
  258. package/src/schemas/fields/proof.ts +11 -0
  259. package/src/schemas/fields/section.ts +48 -0
  260. package/tailwind.config.js +111 -0
  261. package/tsconfig.json +5 -7
  262. package/.env.example +0 -3
  263. package/.vscode/settings.json +0 -25
  264. package/CONTRIBUTING.md +0 -124
  265. package/cloudcannon.config.yml +0 -207
  266. package/public/favicon/android-chrome-192x192.png +0 -0
  267. package/public/favicon/android-chrome-512x512.png +0 -0
  268. package/public/favicon/apple-touch-icon.png +0 -0
  269. package/public/favicon/browserconfig.xml +0 -9
  270. package/public/favicon/favicon-16x16.png +0 -0
  271. package/public/favicon/favicon-32x32.png +0 -0
  272. package/public/favicon/favicon-48x48.png +0 -0
  273. package/public/favicon/favicon.ico +0 -0
  274. package/public/favicon/favicon.svg +0 -16
  275. package/public/favicon/manifest.webmanifest +0 -30
  276. package/public/favicon/mstile-150x150.png +0 -0
  277. package/public/favicon/safari-pinned-tab.svg +0 -16
  278. package/public/favicon/yandex-browser-50x50.png +0 -0
  279. package/public/favicon/yandex-browser-manifest.json +0 -9
  280. package/siteicon.png +0 -0
  281. package/src/blocks/Banner.astro +0 -31
  282. package/src/blocks/Colleagues1.astro +0 -74
  283. package/src/blocks/Compare1.astro +0 -64
  284. package/src/blocks/Content2.astro +0 -47
  285. package/src/blocks/Content3.astro +0 -47
  286. package/src/blocks/Content4.astro +0 -52
  287. package/src/blocks/Content5.astro +0 -43
  288. package/src/blocks/Content6.astro +0 -57
  289. package/src/blocks/Content7.astro +0 -65
  290. package/src/blocks/Content8.astro +0 -48
  291. package/src/blocks/Cta2.astro +0 -52
  292. package/src/blocks/Features2.astro +0 -71
  293. package/src/blocks/JobCategories1.astro +0 -61
  294. package/src/blocks/JobCategory1.astro +0 -92
  295. package/src/blocks/Jobs1.astro +0 -74
  296. package/src/blocks/Logos1.astro +0 -55
  297. package/src/blocks/Pages1.astro +0 -85
  298. package/src/blocks/Pricings1.astro +0 -61
  299. package/src/blocks/Products1.astro +0 -87
  300. package/src/blocks/Projects1.astro +0 -79
  301. package/src/blocks/Subheader.astro +0 -53
  302. package/src/components/Avatars.astro +0 -20
  303. package/src/components/Badges.astro +0 -20
  304. package/src/components/Cart.astro +0 -42
  305. package/src/components/CartAdd.svelte +0 -76
  306. package/src/components/CartCheckout.svelte +0 -58
  307. package/src/components/CartForm.svelte +0 -130
  308. package/src/components/CartList.svelte +0 -88
  309. package/src/components/CartQuantity.svelte +0 -81
  310. package/src/components/CartSummary.astro +0 -59
  311. package/src/components/CartTotal.svelte +0 -15
  312. package/src/components/Channel.astro +0 -89
  313. package/src/components/Channels.astro +0 -20
  314. package/src/components/Checkbox.astro +0 -76
  315. package/src/components/Element.astro +0 -70
  316. package/src/components/Field.astro +0 -33
  317. package/src/components/Fields.astro +0 -20
  318. package/src/components/Form.astro +0 -34
  319. package/src/components/Gallery.astro +0 -175
  320. package/src/components/Head.astro +0 -94
  321. package/src/components/Heading.astro +0 -91
  322. package/src/components/Input.astro +0 -115
  323. package/src/components/Label.astro +0 -42
  324. package/src/components/Links.astro +0 -20
  325. package/src/components/Paragraph.astro +0 -54
  326. package/src/components/Search.astro +0 -118
  327. package/src/components/Select.astro +0 -114
  328. package/src/components/Switch.astro +0 -81
  329. package/src/components/Tagline.astro +0 -49
  330. package/src/components/Textarea.astro +0 -78
  331. package/src/components/Toggle.astro +0 -45
  332. package/src/components/_Breadcrumb.astro +0 -58
  333. package/src/components/_Image.astro +0 -79
  334. package/src/components/_LocaleSwitcher.astro +0 -25
  335. package/src/content/config.ts +0 -18
  336. package/src/content/layouts/base.yml +0 -166
  337. package/src/content/pages/_base/toggle.mdx +0 -28
  338. package/src/content/pages/_posts/post.md +0 -7
  339. package/src/content/pages/_showcase/anti-slip-profiles.md +0 -5
  340. package/src/content/pages/_showcase/fulldev-ui.md +0 -5
  341. package/src/content/pages/_showcase/lavis-detailing.md +0 -5
  342. package/src/content/pages/_showcase/leren-trainingsacteren.md +0 -5
  343. package/src/content/pages/_showcase/miele-witgoedcenter-amsterdam.md +0 -5
  344. package/src/content/pages/_showcase/sloepverhuur-bolsward.md +0 -5
  345. package/src/content/pages/_showcase/stark-vulcanising-products.md +0 -4
  346. package/src/content/pages/_showcase/the-gym-haren.md +0 -5
  347. package/src/content/pages/_showcase/van-dillen-antieke-bouwmaterialen.md +0 -5
  348. package/src/content/pages/docs/blocks/_categories.mdx +0 -129
  349. package/src/content/pages/docs/blocks/_contact.mdx +0 -67
  350. package/src/content/pages/docs/blocks/_jobs.mdx +0 -34
  351. package/src/content/pages/docs/blocks/_posts.mdx +0 -45
  352. package/src/content/pages/docs/blocks/_stats.mdx +0 -32
  353. package/src/content/pages/docs/blocks/banner.mdx +0 -12
  354. package/src/content/pages/docs/blocks/colleagues.mdx +0 -49
  355. package/src/content/pages/docs/blocks/content.mdx +0 -316
  356. package/src/content/pages/docs/blocks/cta.mdx +0 -16
  357. package/src/content/pages/docs/blocks/features.mdx +0 -100
  358. package/src/content/pages/docs/blocks/footer.mdx +0 -46
  359. package/src/content/pages/docs/blocks/header.mdx +0 -60
  360. package/src/content/pages/docs/blocks/hero.mdx +0 -18
  361. package/src/content/pages/docs/blocks/intro.mdx +0 -16
  362. package/src/content/pages/docs/blocks/logos.mdx +0 -37
  363. package/src/content/pages/docs/blocks/projects.mdx +0 -36
  364. package/src/content/pages/docs/blocks/reviews.mdx +0 -65
  365. package/src/content/pages/docs/blocks.mdx +0 -52
  366. package/src/content/pages/docs/collections/images.mdx +0 -102
  367. package/src/content/pages/docs/collections/pages.mdx +0 -119
  368. package/src/content/pages/docs/collections/presets.mdx +0 -60
  369. package/src/content/pages/docs/components/_localeswitcher.mdx +0 -16
  370. package/src/content/pages/docs/components/_table.mdx +0 -101
  371. package/src/content/pages/docs/components/_tagline.mdx +0 -34
  372. package/src/content/pages/docs/components/_themer.mdx +0 -47
  373. package/src/content/pages/docs/components/_toggle.mdx +0 -30
  374. package/src/content/pages/docs/components/avatar.mdx +0 -32
  375. package/src/content/pages/docs/components/badge.mdx +0 -42
  376. package/src/content/pages/docs/components/badges.mdx +0 -33
  377. package/src/content/pages/docs/components/button.mdx +0 -76
  378. package/src/content/pages/docs/components/buttons.mdx +0 -50
  379. package/src/content/pages/docs/components/channel.mdx +0 -89
  380. package/src/content/pages/docs/components/channels.mdx +0 -90
  381. package/src/content/pages/docs/components/checkbox.mdx +0 -32
  382. package/src/content/pages/docs/components/heading.mdx +0 -49
  383. package/src/content/pages/docs/components/icon.mdx +0 -46
  384. package/src/content/pages/docs/components/image.mdx +0 -20
  385. package/src/content/pages/docs/components/input.mdx +0 -38
  386. package/src/content/pages/docs/components/label.mdx +0 -42
  387. package/src/content/pages/docs/components/link.mdx +0 -63
  388. package/src/content/pages/docs/components/links.mdx +0 -57
  389. package/src/content/pages/docs/components/list.mdx +0 -53
  390. package/src/content/pages/docs/components/logo.mdx +0 -24
  391. package/src/content/pages/docs/components/menu.mdx +0 -48
  392. package/src/content/pages/docs/components/paragraph.mdx +0 -44
  393. package/src/content/pages/docs/components/rating.mdx +0 -43
  394. package/src/content/pages/docs/components/select.mdx +0 -46
  395. package/src/content/pages/docs/components/social.mdx +0 -92
  396. package/src/content/pages/docs/components/socials.mdx +0 -103
  397. package/src/content/pages/docs/components/switch.mdx +0 -32
  398. package/src/content/pages/docs/components/tagline.mdx +0 -42
  399. package/src/content/pages/docs/components/textarea.mdx +0 -32
  400. package/src/content/pages/docs/components.mdx +0 -36
  401. package/src/content/pages/docs/customization.mdx +0 -183
  402. package/src/content/pages/docs/frameworks.mdx +0 -30
  403. package/src/content/pages/docs/index.mdx +0 -21
  404. package/src/content/pages/docs/installation.mdx +0 -30
  405. package/src/content/pages/docs/layouts/doc.mdx +0 -15
  406. package/src/content/pages/docs/layouts/page.mdx +0 -15
  407. package/src/content/pages/docs/pages.mdx +0 -130
  408. package/src/content/pages/docs/structures/_card.mdx +0 -84
  409. package/src/content/pages/docs/structures/_dialog.mdx +0 -15
  410. package/src/content/pages/docs/structures/_drawer.mdx +0 -15
  411. package/src/content/pages/docs/structures/card.mdx +0 -15
  412. package/src/content/pages/docs/structures/carousel.mdx +0 -14
  413. package/src/content/pages/docs/structures/code.mdx +0 -42
  414. package/src/content/pages/docs/structures/container.mdx +0 -15
  415. package/src/content/pages/docs/structures/drawer.mdx +0 -15
  416. package/src/content/pages/docs/structures/group.mdx +0 -15
  417. package/src/content/pages/docs/structures/layout.mdx +0 -15
  418. package/src/content/pages/docs/structures/masonry.mdx +0 -15
  419. package/src/content/pages/docs/structures/matrix.mdx +0 -15
  420. package/src/content/pages/docs/structures/panel.mdx +0 -15
  421. package/src/content/pages/docs/structures/prose.mdx +0 -33
  422. package/src/content/pages/docs/structures/section.mdx +0 -15
  423. package/src/content/pages/docs/structures/stack.mdx +0 -15
  424. package/src/content/pages/docs/structures/writeup.mdx +0 -15
  425. package/src/content/pages/docs/structures.mdx +0 -7
  426. package/src/content/pages/index.mdx +0 -52
  427. package/src/content/pages/showcase.mdx +0 -30
  428. package/src/css/custom.css +0 -24
  429. package/src/css/theme.css +0 -62
  430. package/src/env.d.ts +0 -3
  431. package/src/integration/index.ts +0 -185
  432. package/src/layouts/Page.astro +0 -64
  433. package/src/layouts/_Product.astro +0 -115
  434. package/src/pages/[...page].astro +0 -49
  435. package/src/pages/test.astro +0 -16
  436. package/src/schemas/badge.ts +0 -14
  437. package/src/schemas/block.ts +0 -42
  438. package/src/schemas/button.ts +0 -17
  439. package/src/schemas/card.ts +0 -43
  440. package/src/schemas/channel.ts +0 -15
  441. package/src/schemas/checkbox.ts +0 -13
  442. package/src/schemas/footer.ts +0 -17
  443. package/src/schemas/head.ts +0 -17
  444. package/src/schemas/image.ts +0 -53
  445. package/src/schemas/input.ts +0 -13
  446. package/src/schemas/link.ts +0 -14
  447. package/src/schemas/logo.ts +0 -13
  448. package/src/schemas/menu.ts +0 -11
  449. package/src/schemas/page.ts +0 -23
  450. package/src/schemas/proof.ts +0 -12
  451. package/src/schemas/textarea.ts +0 -11
  452. package/src/stores/cart.svelte.ts +0 -78
  453. package/src/stores/cart.ts +0 -76
  454. package/src/structures/Card.astro +0 -35
  455. package/src/structures/Carousel.astro +0 -106
  456. package/src/structures/Container.astro +0 -25
  457. package/src/structures/Drawer.astro +0 -81
  458. package/src/structures/Group.astro +0 -25
  459. package/src/structures/Layout.astro +0 -34
  460. package/src/structures/Masonry.astro +0 -42
  461. package/src/structures/Matrix.astro +0 -39
  462. package/src/structures/Panel.astro +0 -25
  463. package/src/structures/Prose.astro +0 -96
  464. package/src/structures/Section.astro +0 -26
  465. package/src/structures/Sidebar.astro +0 -36
  466. package/src/structures/Split.astro +0 -38
  467. package/src/structures/Stack.astro +0 -25
  468. package/src/structures/Writeup.astro +0 -67
  469. package/src/structures/_Bento.astro +0 -34
  470. package/src/utils/cart.ts +0 -27
  471. package/src/utils/getHref.ts +0 -6
  472. package/src/utils/slugify.ts +0 -6
  473. package/svelte.config.js +0 -5
  474. package/tailwind.config.ts +0 -72
  475. package/virtual.d.ts +0 -5
  476. /package/src/schemas/{path.ts → fields/path.ts} +0 -0
@@ -0,0 +1,19 @@
1
+ <script lang="ts" setup>
2
+ import type { DrawerRootEmits, DrawerRootProps } from 'vaul-vue'
3
+ import { useForwardPropsEmits } from 'radix-vue'
4
+ import { DrawerRoot } from 'vaul-vue'
5
+
6
+ const props = withDefaults(defineProps<DrawerRootProps>(), {
7
+ shouldScaleBackground: true,
8
+ })
9
+
10
+ const emits = defineEmits<DrawerRootEmits>()
11
+
12
+ const forwarded = useForwardPropsEmits(props, emits)
13
+ </script>
14
+
15
+ <template>
16
+ <DrawerRoot v-bind="forwarded">
17
+ <slot />
18
+ </DrawerRoot>
19
+ </template>
@@ -0,0 +1,31 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { DialogContentEmits, DialogContentProps } from 'radix-vue'
4
+ import { useForwardPropsEmits } from 'radix-vue'
5
+ import { DrawerContent, DrawerPortal } from 'vaul-vue'
6
+ import type { HtmlHTMLAttributes } from 'vue'
7
+ import DrawerOverlay from './DrawerOverlay.vue'
8
+
9
+ const props = defineProps<DialogContentProps & { class?: HtmlHTMLAttributes['class'] }>()
10
+ const emits = defineEmits<DialogContentEmits>()
11
+
12
+ const forwarded = useForwardPropsEmits(props, emits)
13
+ </script>
14
+
15
+ <template>
16
+ <DrawerPortal>
17
+ <DrawerOverlay />
18
+ <DrawerContent
19
+ v-bind="forwarded"
20
+ :class="
21
+ cn(
22
+ 'fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background',
23
+ props.class
24
+ )
25
+ "
26
+ >
27
+ <div class="mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" />
28
+ <slot />
29
+ </DrawerContent>
30
+ </DrawerPortal>
31
+ </template>
@@ -0,0 +1,23 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { DrawerDescriptionProps } from 'vaul-vue'
4
+ import { DrawerDescription } from 'vaul-vue'
5
+ import { computed, type HtmlHTMLAttributes } from 'vue'
6
+
7
+ const props = defineProps<DrawerDescriptionProps & { class?: HtmlHTMLAttributes['class'] }>()
8
+
9
+ const delegatedProps = computed(() => {
10
+ const { class: _, ...delegated } = props
11
+
12
+ return delegated
13
+ })
14
+ </script>
15
+
16
+ <template>
17
+ <DrawerDescription
18
+ v-bind="delegatedProps"
19
+ :class="cn('text-sm text-muted-foreground', props.class)"
20
+ >
21
+ <slot />
22
+ </DrawerDescription>
23
+ </template>
@@ -0,0 +1,14 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { HtmlHTMLAttributes } from 'vue'
4
+
5
+ const props = defineProps<{
6
+ class?: HtmlHTMLAttributes['class']
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <div :class="cn('mt-auto flex flex-col gap-2 p-4', props.class)">
12
+ <slot />
13
+ </div>
14
+ </template>
@@ -0,0 +1,14 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { HtmlHTMLAttributes } from 'vue'
4
+
5
+ const props = defineProps<{
6
+ class?: HtmlHTMLAttributes['class']
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <div :class="cn('grid gap-1.5 p-4 text-center sm:text-left', props.class)">
12
+ <slot />
13
+ </div>
14
+ </template>
@@ -0,0 +1,21 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { DialogOverlayProps } from 'radix-vue'
4
+ import { DrawerOverlay } from 'vaul-vue'
5
+ import { computed, type HtmlHTMLAttributes } from 'vue'
6
+
7
+ const props = defineProps<DialogOverlayProps & { class?: HtmlHTMLAttributes['class'] }>()
8
+
9
+ const delegatedProps = computed(() => {
10
+ const { class: _, ...delegated } = props
11
+
12
+ return delegated
13
+ })
14
+ </script>
15
+
16
+ <template>
17
+ <DrawerOverlay
18
+ v-bind="delegatedProps"
19
+ :class="cn('fixed inset-0 z-50 bg-black/80', props.class)"
20
+ />
21
+ </template>
@@ -0,0 +1,23 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { DrawerTitleProps } from 'vaul-vue'
4
+ import { DrawerTitle } from 'vaul-vue'
5
+ import { computed, type HtmlHTMLAttributes } from 'vue'
6
+
7
+ const props = defineProps<DrawerTitleProps & { class?: HtmlHTMLAttributes['class'] }>()
8
+
9
+ const delegatedProps = computed(() => {
10
+ const { class: _, ...delegated } = props
11
+
12
+ return delegated
13
+ })
14
+ </script>
15
+
16
+ <template>
17
+ <DrawerTitle
18
+ v-bind="delegatedProps"
19
+ :class="cn('text-lg font-semibold leading-none tracking-tight', props.class)"
20
+ >
21
+ <slot />
22
+ </DrawerTitle>
23
+ </template>
@@ -0,0 +1,8 @@
1
+ export { default as Drawer } from './Drawer.vue'
2
+ export { default as DrawerContent } from './DrawerContent.vue'
3
+ export { default as DrawerDescription } from './DrawerDescription.vue'
4
+ export { default as DrawerFooter } from './DrawerFooter.vue'
5
+ export { default as DrawerHeader } from './DrawerHeader.vue'
6
+ export { default as DrawerOverlay } from './DrawerOverlay.vue'
7
+ export { default as DrawerTitle } from './DrawerTitle.vue'
8
+ export { DrawerClose, DrawerPortal, DrawerTrigger } from 'vaul-vue'
@@ -0,0 +1,16 @@
1
+ <script lang="ts" setup>
2
+ import { Slot } from 'radix-vue'
3
+ import { useFormField } from './useFormField'
4
+
5
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
6
+ </script>
7
+
8
+ <template>
9
+ <Slot
10
+ :id="formItemId"
11
+ :aria-describedby="!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`"
12
+ :aria-invalid="!!error"
13
+ >
14
+ <slot />
15
+ </Slot>
16
+ </template>
@@ -0,0 +1,20 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { useFormField } from './useFormField'
5
+
6
+ const props = defineProps<{
7
+ class?: HTMLAttributes['class']
8
+ }>()
9
+
10
+ const { formDescriptionId } = useFormField()
11
+ </script>
12
+
13
+ <template>
14
+ <p
15
+ :id="formDescriptionId"
16
+ :class="cn('text-sm text-muted-foreground', props.class)"
17
+ >
18
+ <slot />
19
+ </p>
20
+ </template>
@@ -0,0 +1,19 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { useId } from 'radix-vue'
4
+ import { type HTMLAttributes, provide } from 'vue'
5
+ import { FORM_ITEM_INJECTION_KEY } from './injectionKeys'
6
+
7
+ const props = defineProps<{
8
+ class?: HTMLAttributes['class']
9
+ }>()
10
+
11
+ const id = useId()
12
+ provide(FORM_ITEM_INJECTION_KEY, id)
13
+ </script>
14
+
15
+ <template>
16
+ <div :class="cn('space-y-2', props.class)">
17
+ <slot />
18
+ </div>
19
+ </template>
@@ -0,0 +1,20 @@
1
+ <script lang="ts" setup>
2
+ import { Label } from 'fulldev-ui/components/ui/label'
3
+ import { cn } from 'fulldev-ui/lib/utils'
4
+ import type { LabelProps } from 'radix-vue'
5
+ import type { HTMLAttributes } from 'vue'
6
+ import { useFormField } from './useFormField'
7
+
8
+ const props = defineProps<LabelProps & { class?: HTMLAttributes['class'] }>()
9
+
10
+ const { error, formItemId } = useFormField()
11
+ </script>
12
+
13
+ <template>
14
+ <Label
15
+ :class="cn(error && 'text-destructive', props.class)"
16
+ :for="formItemId"
17
+ >
18
+ <slot />
19
+ </Label>
20
+ </template>
@@ -0,0 +1,16 @@
1
+ <script lang="ts" setup>
2
+ import { ErrorMessage } from 'vee-validate'
3
+ import { toValue } from 'vue'
4
+ import { useFormField } from './useFormField'
5
+
6
+ const { name, formMessageId } = useFormField()
7
+ </script>
8
+
9
+ <template>
10
+ <ErrorMessage
11
+ :id="formMessageId"
12
+ as="p"
13
+ :name="toValue(name)"
14
+ class="text-sm font-medium text-destructive"
15
+ />
16
+ </template>
@@ -0,0 +1,7 @@
1
+ export { default as FormControl } from './FormControl.vue'
2
+ export { default as FormDescription } from './FormDescription.vue'
3
+ export { default as FormItem } from './FormItem.vue'
4
+ export { default as FormLabel } from './FormLabel.vue'
5
+ export { default as FormMessage } from './FormMessage.vue'
6
+ export { FORM_ITEM_INJECTION_KEY } from './injectionKeys'
7
+ export { Field as FormField, Form } from 'vee-validate'
@@ -0,0 +1,4 @@
1
+ import type { InjectionKey } from 'vue'
2
+
3
+ export const FORM_ITEM_INJECTION_KEY
4
+ = Symbol() as InjectionKey<string>
@@ -0,0 +1,30 @@
1
+ import { FieldContextKey, useFieldError, useIsFieldDirty, useIsFieldTouched, useIsFieldValid } from 'vee-validate'
2
+ import { inject } from 'vue'
3
+ import { FORM_ITEM_INJECTION_KEY } from './injectionKeys'
4
+
5
+ export function useFormField() {
6
+ const fieldContext = inject(FieldContextKey)
7
+ const fieldItemContext = inject(FORM_ITEM_INJECTION_KEY)
8
+
9
+ if (!fieldContext)
10
+ throw new Error('useFormField should be used within <FormField>')
11
+
12
+ const { name } = fieldContext
13
+ const id = fieldItemContext
14
+
15
+ const fieldState = {
16
+ valid: useIsFieldValid(name),
17
+ isDirty: useIsFieldDirty(name),
18
+ isTouched: useIsFieldTouched(name),
19
+ error: useFieldError(name),
20
+ }
21
+
22
+ return {
23
+ id,
24
+ name,
25
+ formItemId: `${id}-form-item`,
26
+ formDescriptionId: `${id}-form-item-description`,
27
+ formMessageId: `${id}-form-item-message`,
28
+ ...fieldState,
29
+ }
30
+ }
@@ -0,0 +1,32 @@
1
+ <script setup lang="ts">
2
+ import { useVModel } from '@vueuse/core'
3
+ import { cn } from 'fulldev-ui/lib/utils'
4
+ import type { HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<{
7
+ defaultValue?: string | number
8
+ modelValue?: string | number
9
+ class?: HTMLAttributes['class']
10
+ }>()
11
+
12
+ const emits = defineEmits<{
13
+ (e: 'update:modelValue', payload: string | number): void
14
+ }>()
15
+
16
+ const modelValue = useVModel(props, 'modelValue', emits, {
17
+ passive: true,
18
+ defaultValue: props.defaultValue,
19
+ })
20
+ </script>
21
+
22
+ <template>
23
+ <input
24
+ v-model="modelValue"
25
+ :class="
26
+ cn(
27
+ 'flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
28
+ props.class
29
+ )
30
+ "
31
+ />
32
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Input } from './Input.vue'
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { Label, type LabelProps } from 'radix-vue'
4
+ import { computed, type HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<LabelProps & { class?: HTMLAttributes['class'] }>()
7
+
8
+ const delegatedProps = computed(() => {
9
+ const { class: _, ...delegated } = props
10
+
11
+ return delegated
12
+ })
13
+ </script>
14
+
15
+ <template>
16
+ <Label
17
+ v-bind="delegatedProps"
18
+ :class="
19
+ cn('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', props.class)
20
+ "
21
+ >
22
+ <slot />
23
+ </Label>
24
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Label } from './Label.vue'
@@ -0,0 +1,33 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import {
4
+ NavigationMenuRoot,
5
+ type NavigationMenuRootEmits,
6
+ type NavigationMenuRootProps,
7
+ useForwardPropsEmits,
8
+ } from 'radix-vue'
9
+ import { computed, type HTMLAttributes } from 'vue'
10
+
11
+ const props = defineProps<NavigationMenuRootProps & { class?: HTMLAttributes['class'] }>()
12
+
13
+ const emits = defineEmits<NavigationMenuRootEmits>()
14
+
15
+ const delegatedProps = computed(() => {
16
+ const { class: _, ...delegated } = props
17
+
18
+ return delegated
19
+ })
20
+
21
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
22
+ </script>
23
+
24
+ <template>
25
+ <NavigationMenuRoot
26
+ v-bind="forwarded"
27
+ :class="cn('relative z-10 flex max-w-max flex-1 items-center justify-center', props.class)"
28
+ >
29
+ <slot />
30
+ <!-- Commented because in Navigation.vue we needed a custom one for content box positioning -->
31
+ <!-- <NavigationMenuViewport /> -->
32
+ </NavigationMenuRoot>
33
+ </template>
@@ -0,0 +1,36 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import {
4
+ NavigationMenuContent,
5
+ type NavigationMenuContentEmits,
6
+ type NavigationMenuContentProps,
7
+ useForwardPropsEmits,
8
+ } from 'radix-vue'
9
+ import { computed, type HTMLAttributes } from 'vue'
10
+
11
+ const props = defineProps<NavigationMenuContentProps & { class?: HTMLAttributes['class'] }>()
12
+
13
+ const emits = defineEmits<NavigationMenuContentEmits>()
14
+
15
+ const delegatedProps = computed(() => {
16
+ const { class: _, ...delegated } = props
17
+
18
+ return delegated
19
+ })
20
+
21
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
22
+ </script>
23
+
24
+ <template>
25
+ <NavigationMenuContent
26
+ v-bind="forwarded"
27
+ :class="
28
+ cn(
29
+ 'left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto',
30
+ props.class
31
+ )
32
+ "
33
+ >
34
+ <slot />
35
+ </NavigationMenuContent>
36
+ </template>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { NavigationMenuIndicator, type NavigationMenuIndicatorProps, useForwardProps } from 'radix-vue'
4
+ import { computed, type HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<NavigationMenuIndicatorProps & { class?: HTMLAttributes['class'] }>()
7
+
8
+ const delegatedProps = computed(() => {
9
+ const { class: _, ...delegated } = props
10
+
11
+ return delegated
12
+ })
13
+
14
+ const forwardedProps = useForwardProps(delegatedProps)
15
+ </script>
16
+
17
+ <template>
18
+ <NavigationMenuIndicator
19
+ v-bind="forwardedProps"
20
+ :class="
21
+ cn(
22
+ 'top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in',
23
+ props.class
24
+ )
25
+ "
26
+ >
27
+ <div class="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
28
+ </NavigationMenuIndicator>
29
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { NavigationMenuItem, type NavigationMenuItemProps } from 'radix-vue'
3
+
4
+ const props = defineProps<NavigationMenuItemProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <NavigationMenuItem v-bind="props">
9
+ <slot />
10
+ </NavigationMenuItem>
11
+ </template>
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ import {
3
+ NavigationMenuLink,
4
+ type NavigationMenuLinkEmits,
5
+ type NavigationMenuLinkProps,
6
+ useForwardPropsEmits,
7
+ } from 'radix-vue'
8
+
9
+ const props = defineProps<NavigationMenuLinkProps>()
10
+ const emits = defineEmits<NavigationMenuLinkEmits>()
11
+
12
+ const forwarded = useForwardPropsEmits(props, emits)
13
+ </script>
14
+
15
+ <template>
16
+ <NavigationMenuLink v-bind="forwarded">
17
+ <slot />
18
+ </NavigationMenuLink>
19
+ </template>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { NavigationMenuList, type NavigationMenuListProps, useForwardProps } from 'radix-vue'
4
+ import { computed, type HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<NavigationMenuListProps & { class?: HTMLAttributes['class'] }>()
7
+
8
+ const delegatedProps = computed(() => {
9
+ const { class: _, ...delegated } = props
10
+
11
+ return delegated
12
+ })
13
+
14
+ const forwardedProps = useForwardProps(delegatedProps)
15
+ </script>
16
+
17
+ <template>
18
+ <NavigationMenuList
19
+ v-bind="forwardedProps"
20
+ :class="cn('group flex flex-1 list-none items-center justify-center gap-x-1', props.class)"
21
+ >
22
+ <slot />
23
+ </NavigationMenuList>
24
+ </template>
@@ -0,0 +1,30 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { ChevronDown } from 'lucide-vue-next'
4
+ import { NavigationMenuTrigger, type NavigationMenuTriggerProps, useForwardProps } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+ import { navigationMenuTriggerStyle } from '.'
7
+
8
+ const props = defineProps<NavigationMenuTriggerProps & { class?: HTMLAttributes['class'] }>()
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _, ...delegated } = props
12
+
13
+ return delegated
14
+ })
15
+
16
+ const forwardedProps = useForwardProps(delegatedProps)
17
+ </script>
18
+
19
+ <template>
20
+ <NavigationMenuTrigger
21
+ v-bind="forwardedProps"
22
+ :class="cn(navigationMenuTriggerStyle(), 'group', props.class)"
23
+ >
24
+ <slot />
25
+ <ChevronDown
26
+ class="relative top-px ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
27
+ aria-hidden="true"
28
+ />
29
+ </NavigationMenuTrigger>
30
+ </template>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { NavigationMenuViewport, type NavigationMenuViewportProps, useForwardProps } from 'radix-vue'
4
+ import { computed, type HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<NavigationMenuViewportProps & { class?: HTMLAttributes['class'] }>()
7
+
8
+ const delegatedProps = computed(() => {
9
+ const { class: _, ...delegated } = props
10
+
11
+ return delegated
12
+ })
13
+
14
+ const forwardedProps = useForwardProps(delegatedProps)
15
+ </script>
16
+
17
+ <template>
18
+ <div class="absolute left-0 top-full flex justify-center">
19
+ <NavigationMenuViewport
20
+ v-bind="forwardedProps"
21
+ :class="
22
+ cn(
23
+ 'origin-top-center relative mt-1.5 h-[--radix-navigation-menu-viewport-height] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[--radix-navigation-menu-viewport-width]',
24
+ props.class
25
+ )
26
+ "
27
+ />
28
+ </div>
29
+ </template>
@@ -0,0 +1,14 @@
1
+ import { cva } from 'class-variance-authority'
2
+
3
+ export { default as NavigationMenu } from './NavigationMenu.vue'
4
+ export { default as NavigationMenuContent } from './NavigationMenuContent.vue'
5
+ export { default as NavigationMenuIndicator } from './NavigationMenuIndicator.vue'
6
+ export { default as NavigationMenuItem } from './NavigationMenuItem.vue'
7
+ export { default as NavigationMenuLink } from './NavigationMenuLink.vue'
8
+ export { default as NavigationMenuList } from './NavigationMenuList.vue'
9
+ export { default as NavigationMenuTrigger } from './NavigationMenuTrigger.vue'
10
+ export { default as NavigationMenuViewport } from './NavigationMenuViewport.vue'
11
+
12
+ export const navigationMenuTriggerStyle = cva(
13
+ 'group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50',
14
+ )
@@ -0,0 +1,15 @@
1
+ <script setup lang="ts">
2
+ import type { PopoverRootEmits, PopoverRootProps } from 'radix-vue'
3
+ import { PopoverRoot, useForwardPropsEmits } from 'radix-vue'
4
+
5
+ const props = defineProps<PopoverRootProps>()
6
+ const emits = defineEmits<PopoverRootEmits>()
7
+
8
+ const forwarded = useForwardPropsEmits(props, emits)
9
+ </script>
10
+
11
+ <template>
12
+ <PopoverRoot v-bind="forwarded">
13
+ <slot />
14
+ </PopoverRoot>
15
+ </template>