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,95 @@
1
+ import type { Component, InputHTMLAttributes } from 'vue'
2
+ import type { z, ZodAny } from 'zod'
3
+ import type { INPUT_COMPONENTS } from './constant'
4
+
5
+ export interface FieldProps {
6
+ fieldName: string
7
+ label?: string
8
+ required?: boolean
9
+ config?: ConfigItem
10
+ disabled?: boolean
11
+ }
12
+
13
+ export interface Shape {
14
+ type: string
15
+ default?: any
16
+ required?: boolean
17
+ options?: string[]
18
+ schema?: ZodAny
19
+ }
20
+
21
+ export interface InputComponents {
22
+ date: Component;
23
+ select: Component;
24
+ radio: Component;
25
+ checkbox: Component;
26
+ switch: Component;
27
+ textarea: Component;
28
+ number: Component;
29
+ string: Component;
30
+ file: Component;
31
+ array: Component;
32
+ object: Component;
33
+ }
34
+
35
+ export interface ConfigItem {
36
+ /** Value for the `FormLabel` */
37
+ label?: string
38
+ /** Value for the `FormDescription` */
39
+ description?: string
40
+ /** Pick which component to be rendered. */
41
+ component?: keyof typeof INPUT_COMPONENTS | Component
42
+ /** Hide `FormLabel`. */
43
+ hideLabel?: boolean
44
+ inputProps?: InputHTMLAttributes
45
+ }
46
+
47
+ // Define a type to unwrap an array
48
+ type UnwrapArray<T> = T extends (infer U)[] ? U : never
49
+
50
+ export type Config<SchemaType extends object> = {
51
+ // If SchemaType.key is an object, create a nested Config, otherwise ConfigItem
52
+ [Key in keyof SchemaType]?:
53
+ SchemaType[Key] extends any[]
54
+ ? UnwrapArray<Config<SchemaType[Key]>>
55
+ : SchemaType[Key] extends object
56
+ ? Config<SchemaType[Key]>
57
+ : ConfigItem;
58
+ }
59
+
60
+ export enum DependencyType {
61
+ DISABLES,
62
+ REQUIRES,
63
+ HIDES,
64
+ SETS_OPTIONS,
65
+ }
66
+
67
+ interface BaseDependency<SchemaType extends z.infer<z.ZodObject<any, any>>> {
68
+ sourceField: keyof SchemaType
69
+ type: DependencyType
70
+ targetField: keyof SchemaType
71
+ when: (sourceFieldValue: any, targetFieldValue: any) => boolean
72
+ }
73
+
74
+ export type ValueDependency<SchemaType extends z.infer<z.ZodObject<any, any>>> =
75
+ BaseDependency<SchemaType> & {
76
+ type:
77
+ | DependencyType.DISABLES
78
+ | DependencyType.REQUIRES
79
+ | DependencyType.HIDES
80
+ }
81
+
82
+ export type EnumValues = readonly [string, ...string[]]
83
+
84
+ export type OptionsDependency<
85
+ SchemaType extends z.infer<z.ZodObject<any, any>>,
86
+ > = BaseDependency<SchemaType> & {
87
+ type: DependencyType.SETS_OPTIONS
88
+
89
+ // Partial array of values from sourceField that will trigger the dependency
90
+ options: EnumValues
91
+ }
92
+
93
+ export type Dependency<SchemaType extends z.infer<z.ZodObject<any, any>>> =
94
+ | ValueDependency<SchemaType>
95
+ | OptionsDependency<SchemaType>
@@ -0,0 +1,188 @@
1
+ import type { z } from 'zod'
2
+
3
+ // TODO: This should support recursive ZodEffects but TypeScript doesn't allow circular type definitions.
4
+ export type ZodObjectOrWrapped =
5
+ | z.ZodObject<any, any>
6
+ | z.ZodEffects<z.ZodObject<any, any>>
7
+
8
+ /**
9
+ * Beautify a camelCase string.
10
+ * e.g. "myString" -> "My String"
11
+ */
12
+ export function beautifyObjectName(string: string) {
13
+ // Remove bracketed indices
14
+ // if numbers only return the string
15
+ let output = string.replace(/\[\d+\]/g, '').replace(/([A-Z])/g, ' $1')
16
+ output = output.charAt(0).toUpperCase() + output.slice(1)
17
+ return output
18
+ }
19
+
20
+ /**
21
+ * Parse string and extract the index
22
+ * @param string
23
+ * @returns index or undefined
24
+ */
25
+ export function getIndexIfArray(string: string) {
26
+ const indexRegex = /\[(\d+)\]/
27
+ // Match the index
28
+ const match = string.match(indexRegex)
29
+ // Extract the index (number)
30
+ const index = match ? Number.parseInt(match[1]) : undefined
31
+ return index
32
+ }
33
+
34
+ /**
35
+ * Get the lowest level Zod type.
36
+ * This will unpack optionals, refinements, etc.
37
+ */
38
+ export function getBaseSchema<
39
+ ChildType extends z.ZodAny | z.AnyZodObject = z.ZodAny,
40
+ >(schema: ChildType | z.ZodEffects<ChildType>): ChildType | null {
41
+ if (!schema)
42
+ return null;
43
+ if ('innerType' in schema._def)
44
+ return getBaseSchema(schema._def.innerType as ChildType)
45
+
46
+ if ('schema' in schema._def)
47
+ return getBaseSchema(schema._def.schema as ChildType)
48
+
49
+ return schema as ChildType
50
+ }
51
+
52
+ /**
53
+ * Get the type name of the lowest level Zod type.
54
+ * This will unpack optionals, refinements, etc.
55
+ */
56
+ export function getBaseType(schema: z.ZodAny) {
57
+ const baseSchema = getBaseSchema(schema)
58
+ return baseSchema ? baseSchema._def.typeName : '';
59
+ }
60
+
61
+ /**
62
+ * Search for a "ZodDefault" in the Zod stack and return its value.
63
+ */
64
+ export function getDefaultValueInZodStack(schema: z.ZodAny): any {
65
+ const typedSchema = schema as unknown as z.ZodDefault<
66
+ z.ZodNumber | z.ZodString
67
+ >
68
+
69
+ if (typedSchema._def.typeName === 'ZodDefault')
70
+ return typedSchema._def.defaultValue()
71
+
72
+ if ('innerType' in typedSchema._def) {
73
+ return getDefaultValueInZodStack(
74
+ typedSchema._def.innerType as unknown as z.ZodAny,
75
+ )
76
+ }
77
+ if ('schema' in typedSchema._def) {
78
+ return getDefaultValueInZodStack(
79
+ (typedSchema._def as any).schema as z.ZodAny,
80
+ )
81
+ }
82
+
83
+ return undefined
84
+ }
85
+
86
+ export function getObjectFormSchema(
87
+ schema: ZodObjectOrWrapped,
88
+ ): z.ZodObject<any, any> {
89
+ if (schema?._def.typeName === 'ZodEffects') {
90
+ const typedSchema = schema as z.ZodEffects<z.ZodObject<any, any>>
91
+ return getObjectFormSchema(typedSchema._def.schema)
92
+ }
93
+ return schema as z.ZodObject<any, any>
94
+ }
95
+
96
+ function isIndex(value: unknown): value is number {
97
+ return Number(value) >= 0;
98
+ }
99
+ /**
100
+ * Constructs a path with dot paths for arrays to use brackets to be compatible with vee-validate path syntax
101
+ */
102
+ export function normalizeFormPath(path: string): string {
103
+ const pathArr = path.split('.')
104
+ if (!pathArr.length)
105
+ return '';
106
+
107
+ let fullPath = String(pathArr[0])
108
+ for (let i = 1; i < pathArr.length; i++) {
109
+ if (isIndex(pathArr[i])) {
110
+ fullPath += `[${pathArr[i]}]`
111
+ continue
112
+ }
113
+
114
+ fullPath += `.${pathArr[i]}`
115
+ }
116
+
117
+ return fullPath
118
+ }
119
+
120
+ type NestedRecord = Record<string, unknown> | { [k: string]: NestedRecord }
121
+ /**
122
+ * Checks if the path opted out of nested fields using `[fieldName]` syntax
123
+ */
124
+ export function isNotNestedPath(path: string) {
125
+ return /^\[.+\]$/.test(path)
126
+ }
127
+ function isObject(obj: unknown): obj is Record<string, unknown> {
128
+ return obj !== null && !!obj && typeof obj === 'object' && !Array.isArray(obj);
129
+ }
130
+ function isContainerValue(value: unknown): value is Record<string, unknown> {
131
+ return isObject(value) || Array.isArray(value)
132
+ }
133
+ function cleanupNonNestedPath(path: string) {
134
+ if (isNotNestedPath(path))
135
+ return path.replace(/\[|\]/g, '');
136
+
137
+ return path
138
+ }
139
+
140
+ /**
141
+ * Gets a nested property value from an object
142
+ */
143
+ export function getFromPath<TValue = unknown>(object: NestedRecord | undefined, path: string): TValue | undefined
144
+ export function getFromPath<TValue = unknown, TFallback = TValue>(
145
+ object: NestedRecord | undefined,
146
+ path: string,
147
+ fallback?: TFallback,
148
+ ): TValue | TFallback
149
+ export function getFromPath<TValue = unknown, TFallback = TValue>(
150
+ object: NestedRecord | undefined,
151
+ path: string,
152
+ fallback?: TFallback,
153
+ ): TValue | TFallback | undefined {
154
+ if (!object)
155
+ return fallback
156
+
157
+ if (isNotNestedPath(path))
158
+ return object[cleanupNonNestedPath(path)] as TValue | undefined
159
+
160
+ const resolvedValue = (path || '')
161
+ .split(/\.|\[(\d+)\]/)
162
+ .filter(Boolean)
163
+ .reduce((acc, propKey) => {
164
+ if (isContainerValue(acc) && propKey in acc)
165
+ return acc[propKey]
166
+
167
+ return fallback
168
+ }, object as unknown)
169
+
170
+ return resolvedValue as TValue | undefined
171
+ }
172
+
173
+ type Booleanish = boolean | 'true' | 'false'
174
+
175
+ export function booleanishToBoolean(value: Booleanish) {
176
+ switch (value) {
177
+ case 'true':
178
+ case true:
179
+ return true;
180
+ case 'false':
181
+ case false:
182
+ return false;
183
+ }
184
+ }
185
+
186
+ export function maybeBooleanishToBoolean(value?: Booleanish) {
187
+ return value ? booleanishToBoolean(value) : undefined
188
+ }
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { AvatarRoot } from 'radix-vue'
4
+ import type { HTMLAttributes } from 'vue'
5
+ import { avatarVariant, type AvatarVariants } from '.'
6
+
7
+ const props = withDefaults(
8
+ defineProps<{
9
+ class?: HTMLAttributes['class']
10
+ size?: AvatarVariants['size']
11
+ shape?: AvatarVariants['shape']
12
+ }>(),
13
+ {
14
+ size: 'sm',
15
+ shape: 'circle',
16
+ }
17
+ )
18
+ </script>
19
+
20
+ <template>
21
+ <AvatarRoot :class="cn(avatarVariant({ size, shape }), props.class)">
22
+ <slot />
23
+ </AvatarRoot>
24
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { AvatarFallback, type AvatarFallbackProps } from 'radix-vue'
3
+
4
+ const props = defineProps<AvatarFallbackProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <AvatarFallback v-bind="props">
9
+ <slot />
10
+ </AvatarFallback>
11
+ </template>
@@ -0,0 +1,9 @@
1
+ <script setup lang="ts">
2
+ import { AvatarImage, type AvatarImageProps } from 'radix-vue'
3
+
4
+ const props = defineProps<AvatarImageProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <AvatarImage v-bind="props" class="h-full w-full object-cover" />
9
+ </template>
@@ -0,0 +1,24 @@
1
+ import { cva, type VariantProps } from 'class-variance-authority'
2
+
3
+ export { default as Avatar } from './Avatar.vue'
4
+ export { default as AvatarFallback } from './AvatarFallback.vue'
5
+ export { default as AvatarImage } from './AvatarImage.vue'
6
+
7
+ export const avatarVariant = cva(
8
+ 'inline-flex items-center justify-center font-normal text-foreground select-none shrink-0 bg-secondary overflow-hidden',
9
+ {
10
+ variants: {
11
+ size: {
12
+ sm: 'h-10 w-10 text-xs',
13
+ base: 'h-16 w-16 text-2xl',
14
+ lg: 'h-32 w-32 text-5xl',
15
+ },
16
+ shape: {
17
+ circle: 'rounded-full',
18
+ square: 'rounded-md',
19
+ },
20
+ },
21
+ }
22
+ )
23
+
24
+ export type AvatarVariants = VariantProps<typeof avatarVariant>
@@ -0,0 +1,16 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { type BadgeVariants, badgeVariants } from '.'
5
+
6
+ const props = defineProps<{
7
+ variant?: BadgeVariants['variant']
8
+ class?: HTMLAttributes['class']
9
+ }>()
10
+ </script>
11
+
12
+ <template>
13
+ <div :class="cn(badgeVariants({ variant }), props.class)">
14
+ <slot />
15
+ </div>
16
+ </template>
@@ -0,0 +1,22 @@
1
+ import { cva, type VariantProps } from 'class-variance-authority'
2
+
3
+ export { default as Badge } from './Badge.vue'
4
+
5
+ export const badgeVariants = cva(
6
+ 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',
11
+ secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',
12
+ destructive: 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',
13
+ outline: 'text-foreground',
14
+ },
15
+ },
16
+ defaultVariants: {
17
+ variant: 'default',
18
+ },
19
+ }
20
+ )
21
+
22
+ export type BadgeVariants = VariantProps<typeof badgeVariants>
@@ -0,0 +1,13 @@
1
+ <script lang="ts" setup>
2
+ import type { HTMLAttributes } from 'vue'
3
+
4
+ const props = defineProps<{
5
+ class?: HTMLAttributes['class']
6
+ }>()
7
+ </script>
8
+
9
+ <template>
10
+ <nav aria-label="breadcrumb" :class="props.class">
11
+ <slot />
12
+ </nav>
13
+ </template>
@@ -0,0 +1,22 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { MoreHorizontal } from 'lucide-vue-next'
4
+ import type { HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<{
7
+ class?: HTMLAttributes['class']
8
+ }>()
9
+ </script>
10
+
11
+ <template>
12
+ <span
13
+ role="presentation"
14
+ aria-hidden="true"
15
+ :class="cn('flex h-9 w-9 items-center justify-center', props.class)"
16
+ >
17
+ <slot>
18
+ <MoreHorizontal class="h-4 w-4" />
19
+ </slot>
20
+ <span class="sr-only">More</span>
21
+ </span>
22
+ </template>
@@ -0,0 +1,14 @@
1
+ <script lang="ts" setup>
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
+ <li :class="cn('inline-flex items-center gap-1.5', props.class)">
12
+ <slot />
13
+ </li>
14
+ </template>
@@ -0,0 +1,19 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { Primitive, type PrimitiveProps } from 'radix-vue'
4
+ import type { HTMLAttributes } from 'vue'
5
+
6
+ const props = withDefaults(defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>(), {
7
+ as: 'a',
8
+ })
9
+ </script>
10
+
11
+ <template>
12
+ <Primitive
13
+ :as="as"
14
+ :as-child="asChild"
15
+ :class="cn('transition-colors hover:text-foreground', props.class)"
16
+ >
17
+ <slot />
18
+ </Primitive>
19
+ </template>
@@ -0,0 +1,16 @@
1
+ <script lang="ts" setup>
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
+ <ol
12
+ :class="cn('flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5', props.class)"
13
+ >
14
+ <slot />
15
+ </ol>
16
+ </template>
@@ -0,0 +1,19 @@
1
+ <script lang="ts" setup>
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
12
+ role="link"
13
+ aria-disabled="true"
14
+ aria-current="page"
15
+ :class="cn('font-normal text-foreground', props.class)"
16
+ >
17
+ <slot />
18
+ </span>
19
+ </template>
@@ -0,0 +1,21 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { ChevronRight } from 'lucide-vue-next'
4
+ import type { HTMLAttributes } from 'vue'
5
+
6
+ const props = defineProps<{
7
+ class?: HTMLAttributes['class']
8
+ }>()
9
+ </script>
10
+
11
+ <template>
12
+ <li
13
+ role="presentation"
14
+ aria-hidden="true"
15
+ :class="cn('[&>svg]:w-3.5 [&>svg]:h-3.5', props.class)"
16
+ >
17
+ <slot>
18
+ <ChevronRight />
19
+ </slot>
20
+ </li>
21
+ </template>
@@ -0,0 +1,7 @@
1
+ export { default as Breadcrumb } from './Breadcrumb.vue'
2
+ export { default as BreadcrumbEllipsis } from './BreadcrumbEllipsis.vue'
3
+ export { default as BreadcrumbItem } from './BreadcrumbItem.vue'
4
+ export { default as BreadcrumbLink } from './BreadcrumbLink.vue'
5
+ export { default as BreadcrumbList } from './BreadcrumbList.vue'
6
+ export { default as BreadcrumbPage } from './BreadcrumbPage.vue'
7
+ export { default as BreadcrumbSeparator } from './BreadcrumbSeparator.vue'
@@ -0,0 +1,26 @@
1
+ <script setup lang="ts">
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { Primitive, type PrimitiveProps } from 'radix-vue'
4
+ import type { HTMLAttributes } from 'vue'
5
+ import { type ButtonVariants, buttonVariants } from '.'
6
+
7
+ interface Props extends /* @vue-ignore */ PrimitiveProps {
8
+ variant?: ButtonVariants['variant']
9
+ size?: ButtonVariants['size']
10
+ class?: HTMLAttributes['class']
11
+ }
12
+
13
+ const props = withDefaults(defineProps<Props>(), {
14
+ as: 'button',
15
+ })
16
+ </script>
17
+
18
+ <template>
19
+ <Primitive
20
+ :as="as"
21
+ :as-child="asChild"
22
+ :class="cn(buttonVariants({ variant, size }), props.class)"
23
+ >
24
+ <slot />
25
+ </Primitive>
26
+ </template>
@@ -0,0 +1,31 @@
1
+ import { cva, type VariantProps } from 'class-variance-authority'
2
+
3
+ export { default as Button } from './Button.vue'
4
+
5
+ export const buttonVariants = cva(
6
+ 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: 'bg-primary text-primary-foreground hover:bg-primary/90',
11
+ destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
12
+ outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
13
+ secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
14
+ ghost: 'hover:bg-accent hover:text-accent-foreground',
15
+ link: 'text-primary underline-offset-4 hover:underline',
16
+ },
17
+ size: {
18
+ default: 'h-10 px-4 py-2',
19
+ sm: 'h-9 rounded-md px-3',
20
+ lg: 'h-11 rounded-md px-8',
21
+ icon: 'h-10 w-10',
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: 'default',
26
+ size: 'default',
27
+ },
28
+ }
29
+ )
30
+
31
+ export type ButtonVariants = VariantProps<typeof buttonVariants>
@@ -0,0 +1,80 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from 'fulldev-ui/lib/utils'
3
+ import { CalendarRoot, type CalendarRootEmits, type CalendarRootProps, useForwardPropsEmits } from 'radix-vue'
4
+ import { computed, type HTMLAttributes } from 'vue'
5
+ import {
6
+ CalendarCell,
7
+ CalendarCellTrigger,
8
+ CalendarGrid,
9
+ CalendarGridBody,
10
+ CalendarGridHead,
11
+ CalendarGridRow,
12
+ CalendarHeadCell,
13
+ CalendarHeader,
14
+ CalendarHeading,
15
+ CalendarNextButton,
16
+ CalendarPrevButton,
17
+ } from '.'
18
+
19
+ const props = defineProps<CalendarRootProps & { class?: HTMLAttributes['class'] }>()
20
+
21
+ const emits = defineEmits<CalendarRootEmits>()
22
+
23
+ const delegatedProps = computed(() => {
24
+ const { class: _, ...delegated } = props
25
+
26
+ return delegated
27
+ })
28
+
29
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
30
+ </script>
31
+
32
+ <template>
33
+ <CalendarRoot
34
+ v-slot="{ grid, weekDays }"
35
+ :class="cn('p-3', props.class)"
36
+ v-bind="forwarded"
37
+ >
38
+ <CalendarHeader>
39
+ <CalendarPrevButton />
40
+ <CalendarHeading />
41
+ <CalendarNextButton />
42
+ </CalendarHeader>
43
+
44
+ <div class="flex flex-col gap-y-4 mt-4 sm:flex-row sm:gap-x-4 sm:gap-y-0">
45
+ <CalendarGrid
46
+ v-for="month in grid"
47
+ :key="month.value.toString()"
48
+ >
49
+ <CalendarGridHead>
50
+ <CalendarGridRow>
51
+ <CalendarHeadCell
52
+ v-for="day in weekDays"
53
+ :key="day"
54
+ >
55
+ {{ day }}
56
+ </CalendarHeadCell>
57
+ </CalendarGridRow>
58
+ </CalendarGridHead>
59
+ <CalendarGridBody>
60
+ <CalendarGridRow
61
+ v-for="(weekDates, index) in month.rows"
62
+ :key="`weekDate-${index}`"
63
+ class="mt-2 w-full"
64
+ >
65
+ <CalendarCell
66
+ v-for="weekDate in weekDates"
67
+ :key="weekDate.toString()"
68
+ :date="weekDate"
69
+ >
70
+ <CalendarCellTrigger
71
+ :day="weekDate"
72
+ :month="month.value"
73
+ />
74
+ </CalendarCell>
75
+ </CalendarGridRow>
76
+ </CalendarGridBody>
77
+ </CalendarGrid>
78
+ </div>
79
+ </CalendarRoot>
80
+ </template>