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,56 @@
1
+ import type { UnwrapRefCarouselApi as CarouselApi, CarouselEmits, CarouselProps } from './interface'
2
+ import { createInjectionState } from '@vueuse/core'
3
+ import emblaCarouselVue from 'embla-carousel-vue'
4
+ import { onMounted, ref } from 'vue'
5
+
6
+ const [useProvideCarousel, useInjectCarousel] = createInjectionState(
7
+ ({
8
+ opts,
9
+ orientation,
10
+ plugins,
11
+ }: CarouselProps, emits: CarouselEmits) => {
12
+ const [emblaNode, emblaApi] = emblaCarouselVue({
13
+ ...opts,
14
+ axis: orientation === 'horizontal' ? 'x' : 'y',
15
+ }, plugins)
16
+
17
+ function scrollPrev() {
18
+ emblaApi.value?.scrollPrev()
19
+ }
20
+ function scrollNext() {
21
+ emblaApi.value?.scrollNext()
22
+ }
23
+
24
+ const canScrollNext = ref(false)
25
+ const canScrollPrev = ref(false)
26
+
27
+ function onSelect(api: CarouselApi) {
28
+ canScrollNext.value = api?.canScrollNext() || false
29
+ canScrollPrev.value = api?.canScrollPrev() || false
30
+ }
31
+
32
+ onMounted(() => {
33
+ if (!emblaApi.value)
34
+ return
35
+
36
+ emblaApi.value?.on('init', onSelect)
37
+ emblaApi.value?.on('reInit', onSelect)
38
+ emblaApi.value?.on('select', onSelect)
39
+
40
+ emits('init-api', emblaApi.value)
41
+ })
42
+
43
+ return { carouselRef: emblaNode, carouselApi: emblaApi, canScrollPrev, canScrollNext, scrollPrev, scrollNext, orientation }
44
+ },
45
+ )
46
+
47
+ function useCarousel() {
48
+ const carouselState = useInjectCarousel()
49
+
50
+ if (!carouselState)
51
+ throw new Error('useCarousel must be used within a <Carousel />')
52
+
53
+ return carouselState
54
+ }
55
+
56
+ export { useCarousel, useProvideCarousel }
@@ -0,0 +1,36 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { Check } from 'lucide-vue-next'
4
+ import type { CheckboxRootEmits, CheckboxRootProps } from 'radix-vue'
5
+ import { CheckboxIndicator, CheckboxRoot, useForwardPropsEmits } from 'radix-vue'
6
+ import { computed, type HTMLAttributes } from 'vue'
7
+
8
+ const props = defineProps<CheckboxRootProps & { class?: HTMLAttributes['class'] }>()
9
+ const emits = defineEmits<CheckboxRootEmits>()
10
+
11
+ const delegatedProps = computed(() => {
12
+ const { class: _, ...delegated } = props
13
+
14
+ return delegated
15
+ })
16
+
17
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
18
+ </script>
19
+
20
+ <template>
21
+ <CheckboxRoot
22
+ v-bind="forwarded"
23
+ :class="
24
+ cn(
25
+ 'peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',
26
+ props.class
27
+ )
28
+ "
29
+ >
30
+ <CheckboxIndicator class="flex h-full w-full items-center justify-center text-current">
31
+ <slot>
32
+ <Check class="h-4 w-4" />
33
+ </slot>
34
+ </CheckboxIndicator>
35
+ </CheckboxRoot>
36
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Checkbox } from './Checkbox.vue'
@@ -0,0 +1,15 @@
1
+ <script setup lang="ts">
2
+ import type { CollapsibleRootEmits, CollapsibleRootProps } from 'radix-vue'
3
+ import { CollapsibleRoot, useForwardPropsEmits } from 'radix-vue'
4
+
5
+ const props = defineProps<CollapsibleRootProps>()
6
+ const emits = defineEmits<CollapsibleRootEmits>()
7
+
8
+ const forwarded = useForwardPropsEmits(props, emits)
9
+ </script>
10
+
11
+ <template>
12
+ <CollapsibleRoot v-slot="{ open }" v-bind="forwarded">
13
+ <slot :open="open" />
14
+ </CollapsibleRoot>
15
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { CollapsibleContent, type CollapsibleContentProps } from 'radix-vue'
3
+
4
+ const props = defineProps<CollapsibleContentProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <CollapsibleContent v-bind="props" class="overflow-hidden transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down">
9
+ <slot />
10
+ </CollapsibleContent>
11
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { CollapsibleTrigger, type CollapsibleTriggerProps } from 'radix-vue'
3
+
4
+ const props = defineProps<CollapsibleTriggerProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <CollapsibleTrigger v-bind="props">
9
+ <slot />
10
+ </CollapsibleTrigger>
11
+ </template>
@@ -0,0 +1,3 @@
1
+ export { default as Collapsible } from './Collapsible.vue'
2
+ export { default as CollapsibleContent } from './CollapsibleContent.vue'
3
+ export { default as CollapsibleTrigger } from './CollapsibleTrigger.vue'
@@ -0,0 +1,32 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { ComboboxRootEmits, ComboboxRootProps } from 'radix-vue'
4
+ import { ComboboxRoot, useForwardPropsEmits } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+
7
+ const props = withDefaults(defineProps<ComboboxRootProps & { class?: HTMLAttributes['class'] }>(), {
8
+ open: true,
9
+ modelValue: '',
10
+ })
11
+
12
+ const emits = defineEmits<ComboboxRootEmits>()
13
+
14
+ const delegatedProps = computed(() => {
15
+ const { class: _, ...delegated } = props
16
+
17
+ return delegated
18
+ })
19
+
20
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
21
+ </script>
22
+
23
+ <template>
24
+ <ComboboxRoot
25
+ v-bind="forwarded"
26
+ :class="
27
+ cn('flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground', props.class)
28
+ "
29
+ >
30
+ <slot />
31
+ </ComboboxRoot>
32
+ </template>
@@ -0,0 +1,23 @@
1
+ <script setup lang="ts">
2
+ import { Dialog, DialogContent } from 'fulldev-ui/components/ui/dialog'
3
+ import type { DialogRootEmits, DialogRootProps } from 'radix-vue'
4
+ import { useForwardPropsEmits } from 'radix-vue'
5
+ import Command from './Command.vue'
6
+
7
+ const props = defineProps<DialogRootProps>()
8
+ const emits = defineEmits<DialogRootEmits>()
9
+
10
+ const forwarded = useForwardPropsEmits(props, emits)
11
+ </script>
12
+
13
+ <template>
14
+ <Dialog v-bind="forwarded">
15
+ <DialogContent class="overflow-hidden p-0 shadow-lg">
16
+ <Command
17
+ class="[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5"
18
+ >
19
+ <slot />
20
+ </Command>
21
+ </DialogContent>
22
+ </Dialog>
23
+ </template>
@@ -0,0 +1,23 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { ComboboxEmptyProps } from 'radix-vue'
4
+ import { ComboboxEmpty } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+
7
+ const props = defineProps<ComboboxEmptyProps & { class?: HTMLAttributes['class'] }>()
8
+
9
+ const delegatedProps = computed(() => {
10
+ const { class: _, ...delegated } = props
11
+
12
+ return delegated
13
+ })
14
+ </script>
15
+
16
+ <template>
17
+ <ComboboxEmpty
18
+ v-bind="delegatedProps"
19
+ :class="cn('py-6 text-center text-sm', props.class)"
20
+ >
21
+ <slot />
22
+ </ComboboxEmpty>
23
+ </template>
@@ -0,0 +1,39 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { ComboboxGroupProps } from 'radix-vue'
4
+ import { ComboboxGroup, ComboboxLabel } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+
7
+ const props = defineProps<
8
+ ComboboxGroupProps & {
9
+ class?: HTMLAttributes['class']
10
+ heading?: string
11
+ }
12
+ >()
13
+
14
+ const delegatedProps = computed(() => {
15
+ const { class: _, ...delegated } = props
16
+
17
+ return delegated
18
+ })
19
+ </script>
20
+
21
+ <template>
22
+ <ComboboxGroup
23
+ v-bind="delegatedProps"
24
+ :class="
25
+ cn(
26
+ 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground',
27
+ props.class
28
+ )
29
+ "
30
+ >
31
+ <ComboboxLabel
32
+ v-if="heading"
33
+ class="px-2 py-1.5 text-xs font-medium text-muted-foreground"
34
+ >
35
+ {{ heading }}
36
+ </ComboboxLabel>
37
+ <slot />
38
+ </ComboboxGroup>
39
+ </template>
@@ -0,0 +1,43 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { Search } from 'lucide-vue-next'
4
+ import { ComboboxInput, type ComboboxInputProps, useForwardProps } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+
7
+ defineOptions({
8
+ inheritAttrs: false,
9
+ })
10
+
11
+ const props = defineProps<
12
+ ComboboxInputProps & {
13
+ class?: HTMLAttributes['class']
14
+ }
15
+ >()
16
+
17
+ const delegatedProps = computed(() => {
18
+ const { class: _, ...delegated } = props
19
+
20
+ return delegated
21
+ })
22
+
23
+ const forwardedProps = useForwardProps(delegatedProps)
24
+ </script>
25
+
26
+ <template>
27
+ <div
28
+ class="flex items-center border-b px-3"
29
+ cmdk-input-wrapper
30
+ >
31
+ <Search class="mr-2 h-4 w-4 shrink-0 opacity-50" />
32
+ <ComboboxInput
33
+ v-bind="{ ...forwardedProps, ...$attrs }"
34
+ auto-focus
35
+ :class="
36
+ cn(
37
+ 'flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',
38
+ props.class
39
+ )
40
+ "
41
+ />
42
+ </div>
43
+ </template>
@@ -0,0 +1,31 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { ComboboxItemEmits, ComboboxItemProps } from 'radix-vue'
4
+ import { ComboboxItem, useForwardPropsEmits } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+
7
+ const props = defineProps<ComboboxItemProps & { class?: HTMLAttributes['class'] }>()
8
+ const emits = defineEmits<ComboboxItemEmits>()
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _, ...delegated } = props
12
+
13
+ return delegated
14
+ })
15
+
16
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
17
+ </script>
18
+
19
+ <template>
20
+ <ComboboxItem
21
+ v-bind="forwarded"
22
+ :class="
23
+ cn(
24
+ 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
25
+ props.class
26
+ )
27
+ "
28
+ >
29
+ <slot />
30
+ </ComboboxItem>
31
+ </template>
@@ -0,0 +1,30 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { ComboboxContentEmits, ComboboxContentProps } from 'radix-vue'
4
+ import { ComboboxContent, useForwardPropsEmits } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+
7
+ const props = withDefaults(defineProps<ComboboxContentProps & { class?: HTMLAttributes['class'] }>(), {
8
+ dismissable: false,
9
+ })
10
+ const emits = defineEmits<ComboboxContentEmits>()
11
+
12
+ const delegatedProps = computed(() => {
13
+ const { class: _, ...delegated } = props
14
+
15
+ return delegated
16
+ })
17
+
18
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
19
+ </script>
20
+
21
+ <template>
22
+ <ComboboxContent
23
+ v-bind="forwarded"
24
+ :class="cn('max-h-[300px] overflow-y-auto overflow-x-hidden', props.class)"
25
+ >
26
+ <div role="presentation">
27
+ <slot />
28
+ </div>
29
+ </ComboboxContent>
30
+ </template>
@@ -0,0 +1,23 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { ComboboxSeparatorProps } from 'radix-vue'
4
+ import { ComboboxSeparator } from 'radix-vue'
5
+ import { computed, type HTMLAttributes } from 'vue'
6
+
7
+ const props = defineProps<ComboboxSeparatorProps & { class?: HTMLAttributes['class'] }>()
8
+
9
+ const delegatedProps = computed(() => {
10
+ const { class: _, ...delegated } = props
11
+
12
+ return delegated
13
+ })
14
+ </script>
15
+
16
+ <template>
17
+ <ComboboxSeparator
18
+ v-bind="delegatedProps"
19
+ :class="cn('-mx-1 h-px bg-border', props.class)"
20
+ >
21
+ <slot />
22
+ </ComboboxSeparator>
23
+ </template>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { HTMLAttributes } from 'vue'
4
+
5
+ const props = defineProps<{
6
+ class?: HTMLAttributes['class']
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <span :class="cn('ml-auto text-xs tracking-widest text-muted-foreground', props.class)">
12
+ <slot />
13
+ </span>
14
+ </template>
@@ -0,0 +1,9 @@
1
+ export { default as Command } from './Command.vue'
2
+ export { default as CommandDialog } from './CommandDialog.vue'
3
+ export { default as CommandEmpty } from './CommandEmpty.vue'
4
+ export { default as CommandGroup } from './CommandGroup.vue'
5
+ export { default as CommandInput } from './CommandInput.vue'
6
+ export { default as CommandItem } from './CommandItem.vue'
7
+ export { default as CommandList } from './CommandList.vue'
8
+ export { default as CommandSeparator } from './CommandSeparator.vue'
9
+ export { default as CommandShortcut } from './CommandShortcut.vue'
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import { DialogRoot, type DialogRootEmits, type DialogRootProps, useForwardPropsEmits } from 'radix-vue'
3
+
4
+ const props = defineProps<DialogRootProps>()
5
+ const emits = defineEmits<DialogRootEmits>()
6
+
7
+ const forwarded = useForwardPropsEmits(props, emits)
8
+ </script>
9
+
10
+ <template>
11
+ <DialogRoot v-bind="forwarded">
12
+ <slot />
13
+ </DialogRoot>
14
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { DialogClose, type DialogCloseProps } from 'radix-vue'
3
+
4
+ const props = defineProps<DialogCloseProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <DialogClose v-bind="props">
9
+ <slot />
10
+ </DialogClose>
11
+ </template>
@@ -0,0 +1,51 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { X } from 'lucide-vue-next'
4
+ import {
5
+ DialogClose,
6
+ DialogContent,
7
+ type DialogContentEmits,
8
+ type DialogContentProps,
9
+ DialogOverlay,
10
+ DialogPortal,
11
+ useForwardPropsEmits,
12
+ } from 'radix-vue'
13
+ import { computed, type HTMLAttributes } from 'vue'
14
+
15
+ const props = defineProps<DialogContentProps & { class?: HTMLAttributes['class'] }>()
16
+ const emits = defineEmits<DialogContentEmits>()
17
+
18
+ const delegatedProps = computed(() => {
19
+ const { class: _, ...delegated } = props
20
+
21
+ return delegated
22
+ })
23
+
24
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
25
+ </script>
26
+
27
+ <template>
28
+ <DialogPortal>
29
+ <DialogOverlay
30
+ class="fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
31
+ />
32
+ <DialogContent
33
+ v-bind="forwarded"
34
+ :class="
35
+ cn(
36
+ 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',
37
+ props.class
38
+ )
39
+ "
40
+ >
41
+ <slot />
42
+
43
+ <DialogClose
44
+ class="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground"
45
+ >
46
+ <X class="w-4 h-4" />
47
+ <span class="sr-only">Close</span>
48
+ </DialogClose>
49
+ </DialogContent>
50
+ </DialogPortal>
51
+ </template>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { DialogDescription, type DialogDescriptionProps, useForwardProps } from 'radix-vue'
4
+ import { computed, type HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<DialogDescriptionProps & { 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
+ <DialogDescription
19
+ v-bind="forwardedProps"
20
+ :class="cn('text-sm text-muted-foreground', props.class)"
21
+ >
22
+ <slot />
23
+ </DialogDescription>
24
+ </template>
@@ -0,0 +1,12 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { HTMLAttributes } from 'vue'
4
+
5
+ const props = defineProps<{ class?: HTMLAttributes['class'] }>()
6
+ </script>
7
+
8
+ <template>
9
+ <div :class="cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2', props.class)">
10
+ <slot />
11
+ </div>
12
+ </template>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { HTMLAttributes } from 'vue'
4
+
5
+ const props = defineProps<{
6
+ class?: HTMLAttributes['class']
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <div :class="cn('flex flex-col gap-y-1.5 text-center sm:text-left', props.class)">
12
+ <slot />
13
+ </div>
14
+ </template>
@@ -0,0 +1,59 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { X } from 'lucide-vue-next'
4
+ import {
5
+ DialogClose,
6
+ DialogContent,
7
+ type DialogContentEmits,
8
+ type DialogContentProps,
9
+ DialogOverlay,
10
+ DialogPortal,
11
+ useForwardPropsEmits,
12
+ } from 'radix-vue'
13
+ import { computed, type HTMLAttributes } from 'vue'
14
+
15
+ const props = defineProps<DialogContentProps & { class?: HTMLAttributes['class'] }>()
16
+ const emits = defineEmits<DialogContentEmits>()
17
+
18
+ const delegatedProps = computed(() => {
19
+ const { class: _, ...delegated } = props
20
+
21
+ return delegated
22
+ })
23
+
24
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
25
+ </script>
26
+
27
+ <template>
28
+ <DialogPortal>
29
+ <DialogOverlay
30
+ class="fixed inset-0 z-50 grid place-items-center overflow-y-auto bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
31
+ >
32
+ <DialogContent
33
+ :class="
34
+ cn(
35
+ 'relative z-50 grid w-full max-w-lg my-8 gap-4 border border-border bg-background p-6 shadow-lg duration-200 sm:rounded-lg md:w-full',
36
+ props.class
37
+ )
38
+ "
39
+ v-bind="forwarded"
40
+ @pointer-down-outside="
41
+ (event) => {
42
+ const originalEvent = event.detail.originalEvent
43
+ const target = originalEvent.target as HTMLElement
44
+ if (originalEvent.offsetX > target.clientWidth || originalEvent.offsetY > target.clientHeight) {
45
+ event.preventDefault()
46
+ }
47
+ }
48
+ "
49
+ >
50
+ <slot />
51
+
52
+ <DialogClose class="absolute top-3 right-3 p-0.5 transition-colors rounded-md hover:bg-secondary">
53
+ <X class="w-4 h-4" />
54
+ <span class="sr-only">Close</span>
55
+ </DialogClose>
56
+ </DialogContent>
57
+ </DialogOverlay>
58
+ </DialogPortal>
59
+ </template>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { DialogTitle, type DialogTitleProps, useForwardProps } from 'radix-vue'
4
+ import { computed, type HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<DialogTitleProps & { 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
+ <DialogTitle
19
+ v-bind="forwardedProps"
20
+ :class="cn('text-lg font-semibold leading-none tracking-tight', props.class)"
21
+ >
22
+ <slot />
23
+ </DialogTitle>
24
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { DialogTrigger, type DialogTriggerProps } from 'radix-vue'
3
+
4
+ const props = defineProps<DialogTriggerProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <DialogTrigger v-bind="props">
9
+ <slot />
10
+ </DialogTrigger>
11
+ </template>
@@ -0,0 +1,9 @@
1
+ export { default as Dialog } from './Dialog.vue'
2
+ export { default as DialogClose } from './DialogClose.vue'
3
+ export { default as DialogContent } from './DialogContent.vue'
4
+ export { default as DialogDescription } from './DialogDescription.vue'
5
+ export { default as DialogFooter } from './DialogFooter.vue'
6
+ export { default as DialogHeader } from './DialogHeader.vue'
7
+ export { default as DialogScrollContent } from './DialogScrollContent.vue'
8
+ export { default as DialogTitle } from './DialogTitle.vue'
9
+ export { default as DialogTrigger } from './DialogTrigger.vue'