@bl33dz/fa814698dcde12f86a37ac31dd3aedf9 1.0.5 → 1.0.7

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 (388) hide show
  1. package/README.md +80 -95
  2. package/dist/fa814698dcde12f86a37ac31dd3aedf9.css +1 -1
  3. package/dist/perisai-ui.es.js +864 -847
  4. package/dist/perisai-ui.umd.js +1 -1
  5. package/package.json +45 -45
  6. package/src/{global.css → globals.css} +575 -575
  7. package/src/index.ts +178 -176
  8. package/src/lib/utils.ts +6 -6
  9. package/src/shadcn/accordion/Accordion.vue +19 -19
  10. package/src/shadcn/accordion/AccordionContent.vue +23 -23
  11. package/src/shadcn/accordion/AccordionItem.vue +23 -23
  12. package/src/shadcn/accordion/AccordionTrigger.vue +38 -38
  13. package/src/shadcn/accordion/index.ts +4 -4
  14. package/src/shadcn/avatar/Avatar.vue +18 -18
  15. package/src/shadcn/avatar/AvatarFallback.vue +21 -21
  16. package/src/shadcn/avatar/AvatarImage.vue +16 -16
  17. package/src/shadcn/avatar/index.ts +3 -3
  18. package/src/shadcn/breadcrumb/Breadcrumb.vue +8 -8
  19. package/src/shadcn/breadcrumb/BreadcrumbEllipsis.vue +9 -9
  20. package/src/shadcn/breadcrumb/BreadcrumbItem.vue +8 -8
  21. package/src/shadcn/breadcrumb/BreadcrumbLink.vue +8 -8
  22. package/src/shadcn/breadcrumb/BreadcrumbList.vue +8 -8
  23. package/src/shadcn/breadcrumb/BreadcrumbPage.vue +8 -8
  24. package/src/shadcn/breadcrumb/BreadcrumbSeparator.vue +8 -8
  25. package/src/shadcn/breadcrumb/index.ts +7 -7
  26. package/src/shadcn/button/Button.vue +29 -29
  27. package/src/shadcn/button/index.ts +38 -38
  28. package/src/shadcn/calendar/Calendar.vue +64 -64
  29. package/src/shadcn/calendar/CalendarCell.vue +23 -23
  30. package/src/shadcn/calendar/CalendarCellTrigger.vue +39 -39
  31. package/src/shadcn/calendar/CalendarGrid.vue +23 -23
  32. package/src/shadcn/calendar/CalendarGridBody.vue +15 -15
  33. package/src/shadcn/calendar/CalendarGridHead.vue +16 -16
  34. package/src/shadcn/calendar/CalendarGridRow.vue +22 -22
  35. package/src/shadcn/calendar/CalendarHeadCell.vue +23 -23
  36. package/src/shadcn/calendar/CalendarHeader.vue +23 -23
  37. package/src/shadcn/calendar/CalendarHeading.vue +30 -30
  38. package/src/shadcn/calendar/CalendarNextButton.vue +32 -32
  39. package/src/shadcn/calendar/CalendarPrevButton.vue +32 -32
  40. package/src/shadcn/calendar/index.ts +12 -12
  41. package/src/shadcn/card/Card.vue +8 -8
  42. package/src/shadcn/card/CardContent.vue +8 -8
  43. package/src/shadcn/card/CardDescription.vue +8 -8
  44. package/src/shadcn/card/CardHeader.vue +8 -8
  45. package/src/shadcn/card/CardTitle.vue +8 -8
  46. package/src/shadcn/card/index.ts +5 -5
  47. package/src/shadcn/checkbox/Checkbox.vue +38 -38
  48. package/src/shadcn/checkbox/index.ts +1 -1
  49. package/src/shadcn/command/Command.vue +87 -87
  50. package/src/shadcn/command/CommandDialog.vue +31 -31
  51. package/src/shadcn/command/CommandEmpty.vue +27 -27
  52. package/src/shadcn/command/CommandGroup.vue +45 -45
  53. package/src/shadcn/command/CommandInput.vue +39 -39
  54. package/src/shadcn/command/CommandItem.vue +76 -76
  55. package/src/shadcn/command/CommandList.vue +25 -25
  56. package/src/shadcn/command/CommandSeparator.vue +21 -21
  57. package/src/shadcn/command/CommandShortcut.vue +17 -17
  58. package/src/shadcn/command/index.ts +25 -25
  59. package/src/shadcn/context-menu/ContextMenu.vue +18 -18
  60. package/src/shadcn/context-menu/ContextMenuCheckboxItem.vue +38 -38
  61. package/src/shadcn/context-menu/ContextMenuContent.vue +34 -34
  62. package/src/shadcn/context-menu/ContextMenuGroup.vue +15 -15
  63. package/src/shadcn/context-menu/ContextMenuItem.vue +39 -39
  64. package/src/shadcn/context-menu/ContextMenuLabel.vue +22 -22
  65. package/src/shadcn/context-menu/ContextMenuPortal.vue +15 -15
  66. package/src/shadcn/context-menu/ContextMenuRadioGroup.vue +22 -22
  67. package/src/shadcn/context-menu/ContextMenuRadioItem.vue +38 -38
  68. package/src/shadcn/context-menu/ContextMenuSeparator.vue +22 -22
  69. package/src/shadcn/context-menu/ContextMenuShortcut.vue +17 -17
  70. package/src/shadcn/context-menu/ContextMenuSub.vue +22 -22
  71. package/src/shadcn/context-menu/ContextMenuSubContent.vue +33 -33
  72. package/src/shadcn/context-menu/ContextMenuSubTrigger.vue +33 -33
  73. package/src/shadcn/context-menu/ContextMenuTrigger.vue +17 -17
  74. package/src/shadcn/context-menu/index.ts +15 -15
  75. package/src/shadcn/dialog/Dialog.vue +18 -18
  76. package/src/shadcn/dialog/DialogClose.vue +15 -15
  77. package/src/shadcn/dialog/DialogContent.vue +46 -46
  78. package/src/shadcn/dialog/DialogDescription.vue +23 -23
  79. package/src/shadcn/dialog/DialogFooter.vue +15 -15
  80. package/src/shadcn/dialog/DialogHeader.vue +17 -17
  81. package/src/shadcn/dialog/DialogOverlay.vue +21 -21
  82. package/src/shadcn/dialog/DialogScrollContent.vue +56 -56
  83. package/src/shadcn/dialog/DialogTitle.vue +23 -23
  84. package/src/shadcn/dialog/DialogTrigger.vue +15 -15
  85. package/src/shadcn/dialog/index.ts +10 -10
  86. package/src/shadcn/dropdown-menu/DropdownMenu.vue +18 -18
  87. package/src/shadcn/dropdown-menu/DropdownMenuCheckboxItem.vue +38 -38
  88. package/src/shadcn/dropdown-menu/DropdownMenuContent.vue +36 -36
  89. package/src/shadcn/dropdown-menu/DropdownMenuGroup.vue +15 -15
  90. package/src/shadcn/dropdown-menu/DropdownMenuItem.vue +31 -31
  91. package/src/shadcn/dropdown-menu/DropdownMenuLabel.vue +23 -23
  92. package/src/shadcn/dropdown-menu/DropdownMenuRadioGroup.vue +22 -22
  93. package/src/shadcn/dropdown-menu/DropdownMenuRadioItem.vue +39 -39
  94. package/src/shadcn/dropdown-menu/DropdownMenuSeparator.vue +24 -24
  95. package/src/shadcn/dropdown-menu/DropdownMenuShortcut.vue +17 -17
  96. package/src/shadcn/dropdown-menu/DropdownMenuSub.vue +19 -19
  97. package/src/shadcn/dropdown-menu/DropdownMenuSubContent.vue +28 -28
  98. package/src/shadcn/dropdown-menu/DropdownMenuSubTrigger.vue +31 -31
  99. package/src/shadcn/dropdown-menu/DropdownMenuTrigger.vue +17 -17
  100. package/src/shadcn/dropdown-menu/index.ts +16 -16
  101. package/src/shadcn/menubar/Menubar.vue +33 -33
  102. package/src/shadcn/menubar/MenubarCheckboxItem.vue +38 -38
  103. package/src/shadcn/menubar/MenubarContent.vue +42 -42
  104. package/src/shadcn/menubar/MenubarGroup.vue +15 -15
  105. package/src/shadcn/menubar/MenubarItem.vue +37 -37
  106. package/src/shadcn/menubar/MenubarLabel.vue +20 -20
  107. package/src/shadcn/menubar/MenubarMenu.vue +15 -15
  108. package/src/shadcn/menubar/MenubarPortal.vue +5 -5
  109. package/src/shadcn/menubar/MenubarRadioGroup.vue +22 -22
  110. package/src/shadcn/menubar/MenubarRadioItem.vue +38 -38
  111. package/src/shadcn/menubar/MenubarSeparator.vue +21 -21
  112. package/src/shadcn/menubar/MenubarShortcut.vue +17 -17
  113. package/src/shadcn/menubar/MenubarSub.vue +23 -23
  114. package/src/shadcn/menubar/MenubarSubContent.vue +36 -36
  115. package/src/shadcn/menubar/MenubarSubTrigger.vue +28 -28
  116. package/src/shadcn/menubar/MenubarTrigger.vue +28 -28
  117. package/src/shadcn/menubar/index.ts +15 -15
  118. package/src/shadcn/navigation-menu/NavigationMenu.vue +35 -35
  119. package/src/shadcn/navigation-menu/NavigationMenuContent.vue +31 -31
  120. package/src/shadcn/navigation-menu/NavigationMenuIndicator.vue +23 -23
  121. package/src/shadcn/navigation-menu/NavigationMenuItem.vue +21 -21
  122. package/src/shadcn/navigation-menu/NavigationMenuLink.vue +26 -26
  123. package/src/shadcn/navigation-menu/NavigationMenuList.vue +28 -28
  124. package/src/shadcn/navigation-menu/NavigationMenuTrigger.vue +24 -24
  125. package/src/shadcn/navigation-menu/NavigationMenuViewport.vue +31 -31
  126. package/src/shadcn/navigation-menu/index.ts +14 -14
  127. package/src/shadcn/pagination/Pagination.vue +151 -151
  128. package/src/shadcn/pagination/PaginationContent.vue +22 -22
  129. package/src/shadcn/pagination/PaginationEllipsis.vue +25 -25
  130. package/src/shadcn/pagination/PaginationFirst.vue +33 -33
  131. package/src/shadcn/pagination/PaginationItem.vue +31 -31
  132. package/src/shadcn/pagination/PaginationLast.vue +33 -33
  133. package/src/shadcn/pagination/PaginationLink.vue +13 -13
  134. package/src/shadcn/pagination/PaginationNext.vue +22 -22
  135. package/src/shadcn/pagination/PaginationPrevious.vue +33 -33
  136. package/src/shadcn/pagination/index.ts +9 -9
  137. package/src/shadcn/popover/Popover.vue +18 -18
  138. package/src/shadcn/popover/PopoverAnchor.vue +15 -15
  139. package/src/shadcn/popover/PopoverContent.vue +46 -46
  140. package/src/shadcn/popover/PopoverTrigger.vue +15 -15
  141. package/src/shadcn/popover/index.ts +4 -4
  142. package/src/shadcn/radio-group/RadioGroup.vue +24 -24
  143. package/src/shadcn/radio-group/RadioGroupItem.vue +39 -39
  144. package/src/shadcn/radio-group/index.ts +2 -2
  145. package/src/shadcn/range-calendar/RangeCalendar.vue +71 -71
  146. package/src/shadcn/range-calendar/RangeCalendarCell.vue +23 -23
  147. package/src/shadcn/range-calendar/RangeCalendarCellTrigger.vue +41 -41
  148. package/src/shadcn/range-calendar/RangeCalendarGrid.vue +23 -23
  149. package/src/shadcn/range-calendar/RangeCalendarGridBody.vue +15 -15
  150. package/src/shadcn/range-calendar/RangeCalendarGridHead.vue +15 -15
  151. package/src/shadcn/range-calendar/RangeCalendarGridRow.vue +22 -22
  152. package/src/shadcn/range-calendar/RangeCalendarHeadCell.vue +23 -23
  153. package/src/shadcn/range-calendar/RangeCalendarHeader.vue +23 -23
  154. package/src/shadcn/range-calendar/RangeCalendarHeading.vue +30 -30
  155. package/src/shadcn/range-calendar/RangeCalendarNextButton.vue +32 -32
  156. package/src/shadcn/range-calendar/RangeCalendarPrevButton.vue +32 -32
  157. package/src/shadcn/range-calendar/index.ts +12 -12
  158. package/src/shadcn/select/Select.vue +18 -18
  159. package/src/shadcn/select/SelectContent.vue +52 -52
  160. package/src/shadcn/select/SelectGroup.vue +15 -15
  161. package/src/shadcn/select/SelectItem.vue +43 -43
  162. package/src/shadcn/select/SelectItemText.vue +15 -15
  163. package/src/shadcn/select/SelectLabel.vue +17 -17
  164. package/src/shadcn/select/SelectScrollDownButton.vue +26 -26
  165. package/src/shadcn/select/SelectScrollUpButton.vue +26 -26
  166. package/src/shadcn/select/SelectSeparator.vue +19 -19
  167. package/src/shadcn/select/SelectTrigger.vue +33 -33
  168. package/src/shadcn/select/SelectValue.vue +15 -15
  169. package/src/shadcn/select/index.ts +11 -11
  170. package/src/shadcn/separator/Separator.vue +31 -31
  171. package/src/shadcn/separator/index.ts +1 -1
  172. package/src/shadcn/sidebar/MenuGroup.vue +28 -28
  173. package/src/shadcn/sidebar/MenuItemRenderer.vue +23 -23
  174. package/src/shadcn/sidebar/Sidebar.vue +14 -14
  175. package/src/shadcn/sidebar/SidebarDemoContent.vue +26 -26
  176. package/src/shadcn/sidebar/SidebarMenuGroupWithLabel.vue +29 -29
  177. package/src/shadcn/sidebar/SidebarMenuItemWithIcon.vue +103 -103
  178. package/src/shadcn/sidebar/SidebarMenuSub.vue +10 -10
  179. package/src/shadcn/sidebar/SidebarMenuSubItemStyled.vue +38 -38
  180. package/src/shadcn/sidebar/SidebarTrigger.vue +8 -8
  181. package/src/shadcn/sidebar/index.ts +5 -5
  182. package/src/shadcn/slider/Slider.vue +43 -43
  183. package/src/shadcn/slider/index.ts +1 -1
  184. package/src/shadcn/sonner/Sonner.vue +19 -19
  185. package/src/shadcn/sonner/index.ts +1 -1
  186. package/src/shadcn/spinner/Spinner.vue +17 -0
  187. package/src/shadcn/spinner/index.ts +1 -0
  188. package/src/shadcn/switch/Switch.vue +38 -38
  189. package/src/shadcn/switch/index.ts +1 -1
  190. package/src/shadcn/tabs/CardTabsContent.vue +16 -16
  191. package/src/shadcn/tabs/CornerCutTabsTrigger.vue +102 -102
  192. package/src/shadcn/tabs/GridTabsList.vue +30 -30
  193. package/src/shadcn/tabs/ScrollableTabsList.vue +8 -8
  194. package/src/shadcn/tabs/Tabs.vue +23 -23
  195. package/src/shadcn/tabs/TabsContent.vue +21 -21
  196. package/src/shadcn/tabs/TabsList.vue +24 -24
  197. package/src/shadcn/tabs/TabsTrigger.vue +30 -30
  198. package/src/shadcn/tabs/VerticalTabsList.vue +28 -28
  199. package/src/shadcn/tabs/VerticalTabsTrigger.vue +16 -16
  200. package/src/shadcn/tabs/index.ts +10 -10
  201. package/src/shadcn/toggle/Toggle.vue +35 -35
  202. package/src/shadcn/toggle/index.ts +28 -28
  203. package/src/shadcn/tooltip/Tooltip.vue +18 -18
  204. package/src/shadcn/tooltip/TooltipContent.vue +34 -34
  205. package/src/shadcn/tooltip/TooltipProvider.vue +14 -14
  206. package/src/shadcn/tooltip/TooltipTrigger.vue +15 -15
  207. package/src/shadcn/tooltip/index.ts +4 -4
  208. package/src/shadcn/tree/index.ts +2 -0
  209. package/src/ui/InputOTP.vue +69 -69
  210. package/src/ui/InputOTPContext.ts +9 -9
  211. package/src/ui/InputOTPGroup.vue +7 -7
  212. package/src/ui/InputOTPSeparator.vue +8 -8
  213. package/src/ui/InputOTPSlot.vue +61 -61
  214. package/src/ui/PopoverContent.vue +27 -27
  215. package/src/ui/PopoverTrigger.vue +9 -9
  216. package/src/ui/SelectContent.vue +23 -23
  217. package/src/ui/SelectGroup.vue +12 -12
  218. package/src/ui/SelectItem.vue +25 -25
  219. package/src/ui/SelectLabel.vue +16 -16
  220. package/src/ui/SelectSeparator.vue +17 -17
  221. package/src/ui/SelectTrigger.vue +22 -22
  222. package/src/ui/SelectValue.vue +9 -9
  223. package/src/ui/SheetContent.vue +34 -34
  224. package/src/ui/SheetDescription.vue +9 -9
  225. package/src/ui/SheetHeader.vue +11 -11
  226. package/src/ui/SheetTitle.vue +9 -9
  227. package/src/ui/accordion-content.vue +21 -21
  228. package/src/ui/accordion-item.vue +18 -18
  229. package/src/ui/accordion-trigger.vue +14 -14
  230. package/src/ui/accordion.vue +9 -9
  231. package/src/ui/alert-actions.vue +13 -13
  232. package/src/ui/alert-description.vue +13 -13
  233. package/src/ui/alert-title.vue +13 -13
  234. package/src/ui/alert.vue +63 -63
  235. package/src/ui/avatar-fallback.vue +38 -38
  236. package/src/ui/avatar-group.vue +32 -32
  237. package/src/ui/avatar-image.vue +19 -19
  238. package/src/ui/avatar.vue +32 -32
  239. package/src/ui/badge.vue +90 -90
  240. package/src/ui/breadcrumb-item.vue +11 -11
  241. package/src/ui/breadcrumb-separator.vue +9 -9
  242. package/src/ui/breadcrumb.vue +11 -11
  243. package/src/ui/button.vue +76 -76
  244. package/src/ui/card-content.vue +16 -16
  245. package/src/ui/card-description.vue +16 -16
  246. package/src/ui/card-footer.vue +13 -13
  247. package/src/ui/card-header.vue +19 -19
  248. package/src/ui/card-title.vue +16 -16
  249. package/src/ui/card.vue +73 -73
  250. package/src/ui/category-breakdown-metric.vue +205 -205
  251. package/src/ui/checkbox.vue +84 -84
  252. package/src/ui/cn.ts +6 -6
  253. package/src/ui/dialog-body.vue +13 -13
  254. package/src/ui/dialog-close.vue +9 -9
  255. package/src/ui/dialog-content.vue +36 -36
  256. package/src/ui/dialog-description.vue +13 -13
  257. package/src/ui/dialog-footer.vue +13 -13
  258. package/src/ui/dialog-header.vue +13 -13
  259. package/src/ui/dialog-overlay.vue +14 -14
  260. package/src/ui/dialog-portal.vue +9 -9
  261. package/src/ui/dialog-title.vue +13 -13
  262. package/src/ui/dialog-trigger.vue +9 -9
  263. package/src/ui/dialog.vue +9 -9
  264. package/src/ui/dismissible-badges-demo.vue +94 -94
  265. package/src/ui/drawer-content.vue +53 -53
  266. package/src/ui/drawer-description.vue +23 -23
  267. package/src/ui/drawer-footer.vue +22 -22
  268. package/src/ui/drawer-header.vue +22 -22
  269. package/src/ui/drawer-title.vue +23 -23
  270. package/src/ui/drawer-trigger.vue +23 -23
  271. package/src/ui/drawer.vue +34 -34
  272. package/src/ui/dropdown-menu-checkbox-item.vue +27 -27
  273. package/src/ui/dropdown-menu-content.vue +23 -23
  274. package/src/ui/dropdown-menu-group.vue +7 -7
  275. package/src/ui/dropdown-menu-item.vue +19 -19
  276. package/src/ui/dropdown-menu-label.vue +17 -17
  277. package/src/ui/dropdown-menu-portal.vue +8 -8
  278. package/src/ui/dropdown-menu-radio-group.vue +14 -14
  279. package/src/ui/dropdown-menu-radio-item.vue +30 -30
  280. package/src/ui/dropdown-menu-separator.vue +13 -13
  281. package/src/ui/dropdown-menu-shortcut.vue +15 -15
  282. package/src/ui/dropdown-menu-sub-content.vue +8 -8
  283. package/src/ui/dropdown-menu-sub-trigger.vue +8 -8
  284. package/src/ui/dropdown-menu-sub.vue +8 -8
  285. package/src/ui/dropdown-menu-trigger.vue +8 -8
  286. package/src/ui/dropdown-menu.vue +9 -9
  287. package/src/ui/grouped-avatar.vue +19 -19
  288. package/src/ui/icons/Accessibility.vue +7 -7
  289. package/src/ui/icons/AlignLeft.vue +6 -6
  290. package/src/ui/icons/ArrowDown.vue +7 -7
  291. package/src/ui/icons/ArrowUp.vue +7 -7
  292. package/src/ui/icons/ArrowUpDown.vue +8 -8
  293. package/src/ui/icons/BookOpen.vue +6 -6
  294. package/src/ui/icons/Calendar.vue +9 -9
  295. package/src/ui/icons/Check.vue +6 -6
  296. package/src/ui/icons/ChevronRight.vue +6 -6
  297. package/src/ui/icons/Circle.vue +6 -6
  298. package/src/ui/icons/Copy.vue +7 -7
  299. package/src/ui/icons/Dot.vue +6 -6
  300. package/src/ui/icons/Edit.vue +6 -6
  301. package/src/ui/icons/FileText.vue +9 -9
  302. package/src/ui/icons/Folder.vue +6 -6
  303. package/src/ui/icons/FolderOpen.vue +7 -7
  304. package/src/ui/icons/Hash.vue +6 -6
  305. package/src/ui/icons/Home.vue +6 -6
  306. package/src/ui/icons/Minus.vue +6 -6
  307. package/src/ui/icons/MoreHorizontal.vue +8 -8
  308. package/src/ui/icons/Settings.vue +7 -7
  309. package/src/ui/icons/Slash.vue +6 -6
  310. package/src/ui/icons/Trash2.vue +6 -6
  311. package/src/ui/icons/Type.vue +6 -6
  312. package/src/ui/icons/User.vue +7 -7
  313. package/src/ui/input-otp.vue +52 -52
  314. package/src/ui/input.vue +98 -98
  315. package/src/ui/label.vue +19 -19
  316. package/src/ui/pagination.vue +41 -41
  317. package/src/ui/popover.vue +9 -9
  318. package/src/ui/progress.vue +67 -67
  319. package/src/ui/radio-group-item.vue +53 -53
  320. package/src/ui/radio-group.vue +27 -27
  321. package/src/ui/scrollable-tabs-list.vue +148 -148
  322. package/src/ui/select-multiple.vue +135 -135
  323. package/src/ui/select.vue +77 -77
  324. package/src/ui/separator.vue +60 -60
  325. package/src/ui/sheet.vue +50 -50
  326. package/src/ui/sidebar/BaseSidebar.vue +97 -97
  327. package/src/ui/sidebar/BasicSearch.vue +27 -27
  328. package/src/ui/sidebar/ResponsiveSearch.vue +54 -54
  329. package/src/ui/sidebar/Sidebar.vue +227 -227
  330. package/src/ui/sidebar/SidebarCollapseButton.vue +10 -10
  331. package/src/ui/sidebar/SidebarContent.vue +31 -31
  332. package/src/ui/sidebar/SidebarDescription.vue +10 -10
  333. package/src/ui/sidebar/SidebarExpandButton.vue +10 -10
  334. package/src/ui/sidebar/SidebarFooter.vue +10 -10
  335. package/src/ui/sidebar/SidebarGroup.vue +11 -11
  336. package/src/ui/sidebar/SidebarGroupContent.vue +10 -10
  337. package/src/ui/sidebar/SidebarGroupLabel.vue +7 -7
  338. package/src/ui/sidebar/SidebarHeader.vue +10 -10
  339. package/src/ui/sidebar/SidebarInset.vue +19 -19
  340. package/src/ui/sidebar/SidebarMenu.vue +7 -7
  341. package/src/ui/sidebar/SidebarMenuBadge.vue +7 -7
  342. package/src/ui/sidebar/SidebarMenuButton.vue +17 -17
  343. package/src/ui/sidebar/SidebarMenuItem.vue +10 -10
  344. package/src/ui/sidebar/SidebarMenuSub.vue +18 -18
  345. package/src/ui/sidebar/SidebarMenuSubContent.vue +10 -10
  346. package/src/ui/sidebar/SidebarMenuSubItem.vue +10 -10
  347. package/src/ui/sidebar/SidebarMenuSubTrigger.vue +10 -10
  348. package/src/ui/sidebar/SidebarProvider.vue +108 -108
  349. package/src/ui/sidebar/SidebarScrollArea.vue +10 -10
  350. package/src/ui/sidebar/SidebarSection.vue +10 -10
  351. package/src/ui/sidebar/SidebarSeparator.vue +8 -8
  352. package/src/ui/sidebar/SidebarShortcut.vue +10 -10
  353. package/src/ui/sidebar/SidebarTitle.vue +10 -10
  354. package/src/ui/sidebar/SidebarTrigger.vue +27 -27
  355. package/src/ui/sidebar/Wrapper.vue +12 -12
  356. package/src/ui/sidebar/context.ts +8 -8
  357. package/src/ui/sidebar/index.ts +27 -27
  358. package/src/ui/sidebar/sidebarStore.ts +40 -40
  359. package/src/ui/sidebar/types.ts +30 -30
  360. package/src/ui/sidebar/useAutoCollapse.ts +81 -81
  361. package/src/ui/sidebar.vue +24 -24
  362. package/src/ui/skeleton.vue +15 -15
  363. package/src/ui/slider.vue +32 -32
  364. package/src/ui/sonner.vue +67 -67
  365. package/src/ui/switch.vue +33 -33
  366. package/src/ui/tab-content.vue +28 -28
  367. package/src/ui/tab-list.vue +31 -31
  368. package/src/ui/tab-panel.vue +19 -19
  369. package/src/ui/tab-trigger.vue +34 -34
  370. package/src/ui/tab.vue +30 -30
  371. package/src/ui/table-body.vue +16 -16
  372. package/src/ui/table-caption.vue +20 -20
  373. package/src/ui/table-cell.vue +16 -16
  374. package/src/ui/table-footer.vue +16 -16
  375. package/src/ui/table-header.vue +132 -132
  376. package/src/ui/table-row.vue +16 -16
  377. package/src/ui/table.vue +55 -55
  378. package/src/ui/tabs.vue +33 -33
  379. package/src/ui/textarea.vue +91 -91
  380. package/src/ui/threat-gauge.vue +137 -137
  381. package/src/ui/toggle.vue +69 -69
  382. package/src/ui/tooltip-content.vue +52 -52
  383. package/src/ui/tooltip-provider.vue +13 -13
  384. package/src/ui/tooltip-root.vue +9 -9
  385. package/src/ui/tooltip-trigger.vue +13 -13
  386. package/src/ui/tooltip.vue +22 -22
  387. package/src/ui/utils.ts +6 -6
  388. package/vite.config.ts +39 -39
@@ -1,31 +1,31 @@
1
- <script setup lang="ts">
2
- import type { NavigationMenuViewportProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import {
6
- NavigationMenuViewport,
7
- useForwardProps,
8
- } from "reka-ui"
9
- import { cn } from "@/lib/utils"
10
-
11
- const props = defineProps<NavigationMenuViewportProps & { class?: HTMLAttributes["class"] }>()
12
-
13
- const delegatedProps = reactiveOmit(props, "class")
14
-
15
- const forwardedProps = useForwardProps(delegatedProps)
16
- </script>
17
-
18
- <template>
19
- <div class="absolute top-full left-0 isolate z-50 flex justify-center">
20
- <NavigationMenuViewport
21
- data-slot="navigation-menu-viewport"
22
- v-bind="forwardedProps"
23
- :class="
24
- cn(
25
- 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--reka-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--reka-navigation-menu-viewport-width)] left-[var(--reka-navigation-menu-viewport-left)]',
26
- props.class,
27
- )
28
- "
29
- />
30
- </div>
31
- </template>
1
+ <script setup lang="ts">
2
+ import type { NavigationMenuViewportProps } from "reka-ui"
3
+ import type { HTMLAttributes } from "vue"
4
+ import { reactiveOmit } from "@vueuse/core"
5
+ import {
6
+ NavigationMenuViewport,
7
+ useForwardProps,
8
+ } from "reka-ui"
9
+ import { cn } from "@/lib/utils"
10
+
11
+ const props = defineProps<NavigationMenuViewportProps & { class?: HTMLAttributes["class"] }>()
12
+
13
+ const delegatedProps = reactiveOmit(props, "class")
14
+
15
+ const forwardedProps = useForwardProps(delegatedProps)
16
+ </script>
17
+
18
+ <template>
19
+ <div class="absolute top-full left-0 isolate z-50 flex justify-center">
20
+ <NavigationMenuViewport
21
+ data-slot="navigation-menu-viewport"
22
+ v-bind="forwardedProps"
23
+ :class="
24
+ cn(
25
+ 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--reka-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--reka-navigation-menu-viewport-width)] left-[var(--reka-navigation-menu-viewport-left)]',
26
+ props.class,
27
+ )
28
+ "
29
+ />
30
+ </div>
31
+ </template>
@@ -1,14 +1,14 @@
1
- import { cva } from "class-variance-authority"
2
-
3
- export { default as NavigationMenu } from "./NavigationMenu.vue"
4
- export { default as NavigationMenuContent } from "./NavigationMenuContent.vue"
5
- export { default as NavigationMenuIndicator } from "./NavigationMenuIndicator.vue"
6
- export { default as NavigationMenuItem } from "./NavigationMenuItem.vue"
7
- export { default as NavigationMenuLink } from "./NavigationMenuLink.vue"
8
- export { default as NavigationMenuList } from "./NavigationMenuList.vue"
9
- export { default as NavigationMenuTrigger } from "./NavigationMenuTrigger.vue"
10
- export { default as NavigationMenuViewport } from "./NavigationMenuViewport.vue"
11
-
12
- export const navigationMenuTriggerStyle = cva(
13
- "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1",
14
- )
1
+ import { cva } from "class-variance-authority"
2
+
3
+ export { default as NavigationMenu } from "./NavigationMenu.vue"
4
+ export { default as NavigationMenuContent } from "./NavigationMenuContent.vue"
5
+ export { default as NavigationMenuIndicator } from "./NavigationMenuIndicator.vue"
6
+ export { default as NavigationMenuItem } from "./NavigationMenuItem.vue"
7
+ export { default as NavigationMenuLink } from "./NavigationMenuLink.vue"
8
+ export { default as NavigationMenuList } from "./NavigationMenuList.vue"
9
+ export { default as NavigationMenuTrigger } from "./NavigationMenuTrigger.vue"
10
+ export { default as NavigationMenuViewport } from "./NavigationMenuViewport.vue"
11
+
12
+ export const navigationMenuTriggerStyle = cva(
13
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1",
14
+ )
@@ -1,151 +1,151 @@
1
- <script setup lang="ts">
2
- import type { PaginationRootEmits, PaginationRootProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import { PaginationRoot, useForwardPropsEmits } from "reka-ui"
6
- import PaginationContent from './PaginationContent.vue';
7
- import PaginationItem from './PaginationItem.vue';
8
- import PaginationLink from './PaginationLink.vue';
9
- import PaginationPrevious from './PaginationPrevious.vue';
10
- import PaginationNext from './PaginationNext.vue';
11
- import PaginationEllipsis from './PaginationEllipsis.vue';
12
- import { cn } from "@/lib/utils"
13
- import Select from '@/ui/select.vue';
14
- import SelectTrigger from '@/ui/SelectTrigger.vue';
15
- import SelectValue from '@/ui/SelectValue.vue';
16
- import SelectContent from '@/ui/SelectContent.vue';
17
- import SelectItem from '@/ui/SelectItem.vue';
18
- import { ref, computed, watch } from 'vue';
19
-
20
- const props = defineProps<PaginationRootProps & {
21
- class?: HTMLAttributes["class"];
22
- /**
23
- * Optional variant for custom pagination UIs (e.g. 'withPageSize')
24
- */
25
- variant?: string;
26
- }>()
27
- const emits = defineEmits<PaginationRootEmits>()
28
-
29
- const delegatedProps = reactiveOmit(props, "class")
30
- const forwarded = useForwardPropsEmits(delegatedProps, emits)
31
-
32
- // --- withPageSize variant logic ---
33
- const pageSizeOptions = [5, 10, 25, 50, 100];
34
- const pageSize = ref(props.itemsPerPage ?? 10);
35
- const pageSizeString = computed({
36
- get: () => String(pageSize.value),
37
- set: (val: string) => {
38
- const num = parseInt(val, 10);
39
- if (pageSizeOptions.includes(num)) pageSize.value = num;
40
- },
41
- });
42
- const currentPage = ref(props.page ?? 1);
43
- const totalItems = computed(() => props.total ?? 500);
44
- const totalPages = computed(() => Math.ceil(totalItems.value / pageSize.value));
45
- const startItem = computed(() => (currentPage.value - 1) * pageSize.value + 1);
46
- const endItem = computed(() => Math.min(currentPage.value * pageSize.value, totalItems.value));
47
-
48
- function handlePageSizeChange(val: string) {
49
- pageSizeString.value = val;
50
- currentPage.value = 1;
51
- }
52
- function handlePrevious() {
53
- if (currentPage.value > 1) currentPage.value--;
54
- }
55
- function handleNext() {
56
- if (currentPage.value < totalPages.value) currentPage.value++;
57
- }
58
- function setPage(page: number) {
59
- if (page >= 1 && page <= totalPages.value) currentPage.value = page;
60
- }
61
-
62
- // Generate pagination items (pages and ellipsis)
63
- const paginationItems = computed(() => {
64
- const items = [];
65
- const siblingCount = 2;
66
- const total = totalPages.value;
67
- const page = currentPage.value;
68
- if (total <= 7) {
69
- for (let i = 1; i <= total; i++) {
70
- items.push({ type: 'page', page: i, key: `page-${i}` });
71
- }
72
- } else {
73
- items.push({ type: 'page', page: 1, key: 'page-1' });
74
- if (page > 2 + siblingCount) {
75
- items.push({ type: 'ellipsis', key: 'ellipsis-1' });
76
- }
77
- const start = Math.max(2, page - siblingCount);
78
- const end = Math.min(total - 1, page + siblingCount);
79
- for (let i = start; i <= end; i++) {
80
- items.push({ type: 'page', page: i, key: `page-${i}` });
81
- }
82
- if (page < total - 1 - siblingCount) {
83
- items.push({ type: 'ellipsis', key: 'ellipsis-2' });
84
- }
85
- items.push({ type: 'page', page: total, key: `page-${total}` });
86
- }
87
- return items;
88
- });
89
-
90
- watch(pageSize, () => {
91
- if (currentPage.value > totalPages.value) {
92
- currentPage.value = totalPages.value || 1;
93
- }
94
- });
95
- </script>
96
-
97
- <template>
98
- <div v-if="variant === 'withPageSize'">
99
- <div class="flex items-center">
100
- <!-- Left side: Page size selector and results info -->
101
- <div class="flex w-full items-center gap-6">
102
- <Select v-model="pageSizeString" @update:modelValue="handlePageSizeChange">
103
- <SelectTrigger class="w-20">
104
- <SelectValue />
105
- </SelectTrigger>
106
- <SelectContent>
107
- <SelectItem value="5">5</SelectItem>
108
- <SelectItem value="10">10</SelectItem>
109
- <SelectItem value="25">25</SelectItem>
110
- <SelectItem value="50">50</SelectItem>
111
- <SelectItem value="100">100</SelectItem>
112
- </SelectContent>
113
- </Select>
114
- <div class="text-sm text-muted-foreground">
115
- Results: {{ startItem }} - {{ endItem }} of {{ totalItems }}
116
- </div>
117
- </div>
118
- <!-- Right side: Navigation using Pagination components -->
119
- <PaginationRoot role="navigation" aria-label="pagination" data-slot="pagination" :itemsPerPage="pageSize"
120
- :class="cn('mx-auto flex justify-center', props.class)">
121
- <PaginationContent>
122
- <PaginationItem>
123
- <PaginationPrevious @click="handlePrevious" :style="{
124
- pointerEvents: currentPage === 1 ? 'none' : 'auto',
125
- opacity: currentPage === 1 ? 0.5 : 1,
126
- }" />
127
- </PaginationItem>
128
- <template v-for="item in paginationItems" :key="item.key">
129
- <PaginationItem v-if="item.type === 'page'" :value="item.page">
130
- <PaginationLink :isActive="item.page === currentPage" @click="() => setPage(item.page)">{{
131
- item.page }}</PaginationLink>
132
- </PaginationItem>
133
- <PaginationItem v-else-if="item.type === 'ellipsis'">
134
- <PaginationEllipsis />
135
- </PaginationItem>
136
- </template>
137
- <PaginationItem>
138
- <PaginationNext @click="handleNext" :style="{
139
- pointerEvents: currentPage === totalPages ? 'none' : 'auto',
140
- opacity: currentPage === totalPages ? 0.5 : 1,
141
- }" />
142
- </PaginationItem>
143
- </PaginationContent>
144
- </PaginationRoot>
145
- </div>
146
- </div>
147
- <PaginationRoot v-else v-slot="slotProps" data-slot="pagination" v-bind="forwarded" :itemsPerPage="pageSize"
148
- :class="cn('mx-auto flex w-full justify-center', props.class)">
149
- <slot v-bind="slotProps" />
150
- </PaginationRoot>
151
- </template>
1
+ <script setup lang="ts">
2
+ import type { PaginationRootEmits, PaginationRootProps } from "reka-ui"
3
+ import type { HTMLAttributes } from "vue"
4
+ import { reactiveOmit } from "@vueuse/core"
5
+ import { PaginationRoot, useForwardPropsEmits } from "reka-ui"
6
+ import PaginationContent from './PaginationContent.vue';
7
+ import PaginationItem from './PaginationItem.vue';
8
+ import PaginationLink from './PaginationLink.vue';
9
+ import PaginationPrevious from './PaginationPrevious.vue';
10
+ import PaginationNext from './PaginationNext.vue';
11
+ import PaginationEllipsis from './PaginationEllipsis.vue';
12
+ import { cn } from "@/lib/utils"
13
+ import Select from '@/ui/select.vue';
14
+ import SelectTrigger from '@/ui/SelectTrigger.vue';
15
+ import SelectValue from '@/ui/SelectValue.vue';
16
+ import SelectContent from '@/ui/SelectContent.vue';
17
+ import SelectItem from '@/ui/SelectItem.vue';
18
+ import { ref, computed, watch } from 'vue';
19
+
20
+ const props = defineProps<PaginationRootProps & {
21
+ class?: HTMLAttributes["class"];
22
+ /**
23
+ * Optional variant for custom pagination UIs (e.g. 'withPageSize')
24
+ */
25
+ variant?: string;
26
+ }>()
27
+ const emits = defineEmits<PaginationRootEmits>()
28
+
29
+ const delegatedProps = reactiveOmit(props, "class")
30
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
31
+
32
+ // --- withPageSize variant logic ---
33
+ const pageSizeOptions = [5, 10, 25, 50, 100];
34
+ const pageSize = ref(props.itemsPerPage ?? 10);
35
+ const pageSizeString = computed({
36
+ get: () => String(pageSize.value),
37
+ set: (val: string) => {
38
+ const num = parseInt(val, 10);
39
+ if (pageSizeOptions.includes(num)) pageSize.value = num;
40
+ },
41
+ });
42
+ const currentPage = ref(props.page ?? 1);
43
+ const totalItems = computed(() => props.total ?? 500);
44
+ const totalPages = computed(() => Math.ceil(totalItems.value / pageSize.value));
45
+ const startItem = computed(() => (currentPage.value - 1) * pageSize.value + 1);
46
+ const endItem = computed(() => Math.min(currentPage.value * pageSize.value, totalItems.value));
47
+
48
+ function handlePageSizeChange(val: string) {
49
+ pageSizeString.value = val;
50
+ currentPage.value = 1;
51
+ }
52
+ function handlePrevious() {
53
+ if (currentPage.value > 1) currentPage.value--;
54
+ }
55
+ function handleNext() {
56
+ if (currentPage.value < totalPages.value) currentPage.value++;
57
+ }
58
+ function setPage(page: number) {
59
+ if (page >= 1 && page <= totalPages.value) currentPage.value = page;
60
+ }
61
+
62
+ // Generate pagination items (pages and ellipsis)
63
+ const paginationItems = computed(() => {
64
+ const items = [];
65
+ const siblingCount = 2;
66
+ const total = totalPages.value;
67
+ const page = currentPage.value;
68
+ if (total <= 7) {
69
+ for (let i = 1; i <= total; i++) {
70
+ items.push({ type: 'page', page: i, key: `page-${i}` });
71
+ }
72
+ } else {
73
+ items.push({ type: 'page', page: 1, key: 'page-1' });
74
+ if (page > 2 + siblingCount) {
75
+ items.push({ type: 'ellipsis', key: 'ellipsis-1' });
76
+ }
77
+ const start = Math.max(2, page - siblingCount);
78
+ const end = Math.min(total - 1, page + siblingCount);
79
+ for (let i = start; i <= end; i++) {
80
+ items.push({ type: 'page', page: i, key: `page-${i}` });
81
+ }
82
+ if (page < total - 1 - siblingCount) {
83
+ items.push({ type: 'ellipsis', key: 'ellipsis-2' });
84
+ }
85
+ items.push({ type: 'page', page: total, key: `page-${total}` });
86
+ }
87
+ return items;
88
+ });
89
+
90
+ watch(pageSize, () => {
91
+ if (currentPage.value > totalPages.value) {
92
+ currentPage.value = totalPages.value || 1;
93
+ }
94
+ });
95
+ </script>
96
+
97
+ <template>
98
+ <div v-if="variant === 'withPageSize'">
99
+ <div class="flex items-center">
100
+ <!-- Left side: Page size selector and results info -->
101
+ <div class="flex w-full items-center gap-6">
102
+ <Select v-model="pageSizeString" @update:modelValue="handlePageSizeChange">
103
+ <SelectTrigger class="w-20">
104
+ <SelectValue />
105
+ </SelectTrigger>
106
+ <SelectContent>
107
+ <SelectItem value="5">5</SelectItem>
108
+ <SelectItem value="10">10</SelectItem>
109
+ <SelectItem value="25">25</SelectItem>
110
+ <SelectItem value="50">50</SelectItem>
111
+ <SelectItem value="100">100</SelectItem>
112
+ </SelectContent>
113
+ </Select>
114
+ <div class="text-sm text-muted-foreground">
115
+ Results: {{ startItem }} - {{ endItem }} of {{ totalItems }}
116
+ </div>
117
+ </div>
118
+ <!-- Right side: Navigation using Pagination components -->
119
+ <PaginationRoot role="navigation" aria-label="pagination" data-slot="pagination" :itemsPerPage="pageSize"
120
+ :class="cn('mx-auto flex justify-center', props.class)">
121
+ <PaginationContent>
122
+ <PaginationItem>
123
+ <PaginationPrevious @click="handlePrevious" :style="{
124
+ pointerEvents: currentPage === 1 ? 'none' : 'auto',
125
+ opacity: currentPage === 1 ? 0.5 : 1,
126
+ }" />
127
+ </PaginationItem>
128
+ <template v-for="item in paginationItems" :key="item.key">
129
+ <PaginationItem v-if="item.type === 'page'" :value="item.page">
130
+ <PaginationLink :isActive="item.page === currentPage" @click="() => setPage(item.page)">{{
131
+ item.page }}</PaginationLink>
132
+ </PaginationItem>
133
+ <PaginationItem v-else-if="item.type === 'ellipsis'">
134
+ <PaginationEllipsis />
135
+ </PaginationItem>
136
+ </template>
137
+ <PaginationItem>
138
+ <PaginationNext @click="handleNext" :style="{
139
+ pointerEvents: currentPage === totalPages ? 'none' : 'auto',
140
+ opacity: currentPage === totalPages ? 0.5 : 1,
141
+ }" />
142
+ </PaginationItem>
143
+ </PaginationContent>
144
+ </PaginationRoot>
145
+ </div>
146
+ </div>
147
+ <PaginationRoot v-else v-slot="slotProps" data-slot="pagination" v-bind="forwarded" :itemsPerPage="pageSize"
148
+ :class="cn('mx-auto flex w-full justify-center', props.class)">
149
+ <slot v-bind="slotProps" />
150
+ </PaginationRoot>
151
+ </template>
@@ -1,22 +1,22 @@
1
- <script setup lang="ts">
2
- import type { PaginationListProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import { PaginationList } from "reka-ui"
6
- import { cn } from "@/lib/utils"
7
-
8
- const props = defineProps<PaginationListProps & { class?: HTMLAttributes["class"] }>()
9
-
10
- const delegatedProps = reactiveOmit(props, "class")
11
- </script>
12
-
13
- <template>
14
- <PaginationList
15
- v-slot="slotProps"
16
- data-slot="pagination-content"
17
- v-bind="delegatedProps"
18
- :class="cn('flex flex-row items-center gap-1', props.class)"
19
- >
20
- <slot v-bind="slotProps" />
21
- </PaginationList>
22
- </template>
1
+ <script setup lang="ts">
2
+ import type { PaginationListProps } from "reka-ui"
3
+ import type { HTMLAttributes } from "vue"
4
+ import { reactiveOmit } from "@vueuse/core"
5
+ import { PaginationList } from "reka-ui"
6
+ import { cn } from "@/lib/utils"
7
+
8
+ const props = defineProps<PaginationListProps & { class?: HTMLAttributes["class"] }>()
9
+
10
+ const delegatedProps = reactiveOmit(props, "class")
11
+ </script>
12
+
13
+ <template>
14
+ <PaginationList
15
+ v-slot="slotProps"
16
+ data-slot="pagination-content"
17
+ v-bind="delegatedProps"
18
+ :class="cn('flex flex-row items-center gap-1', props.class)"
19
+ >
20
+ <slot v-bind="slotProps" />
21
+ </PaginationList>
22
+ </template>
@@ -1,25 +1,25 @@
1
- <script setup lang="ts">
2
- import type { PaginationEllipsisProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import { MoreHorizontal } from "lucide-vue-next"
6
- import { PaginationEllipsis } from "reka-ui"
7
- import { cn } from "@/lib/utils"
8
-
9
- const props = defineProps<PaginationEllipsisProps & { class?: HTMLAttributes["class"] }>()
10
-
11
- const delegatedProps = reactiveOmit(props, "class")
12
- </script>
13
-
14
- <template>
15
- <PaginationEllipsis
16
- data-slot="pagination-ellipsis"
17
- v-bind="delegatedProps"
18
- :class="cn('flex size-9 items-center justify-center', props.class)"
19
- >
20
- <slot>
21
- <MoreHorizontal class="size-4" />
22
- <span class="sr-only">More pages</span>
23
- </slot>
24
- </PaginationEllipsis>
25
- </template>
1
+ <script setup lang="ts">
2
+ import type { PaginationEllipsisProps } from "reka-ui"
3
+ import type { HTMLAttributes } from "vue"
4
+ import { reactiveOmit } from "@vueuse/core"
5
+ import { MoreHorizontal } from "lucide-vue-next"
6
+ import { PaginationEllipsis } from "reka-ui"
7
+ import { cn } from "@/lib/utils"
8
+
9
+ const props = defineProps<PaginationEllipsisProps & { class?: HTMLAttributes["class"] }>()
10
+
11
+ const delegatedProps = reactiveOmit(props, "class")
12
+ </script>
13
+
14
+ <template>
15
+ <PaginationEllipsis
16
+ data-slot="pagination-ellipsis"
17
+ v-bind="delegatedProps"
18
+ :class="cn('flex size-9 items-center justify-center', props.class)"
19
+ >
20
+ <slot>
21
+ <MoreHorizontal class="size-4" />
22
+ <span class="sr-only">More pages</span>
23
+ </slot>
24
+ </PaginationEllipsis>
25
+ </template>
@@ -1,33 +1,33 @@
1
- <script setup lang="ts">
2
- import type { PaginationFirstProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import type { ButtonVariants } from '@/shadcn/button'
5
- import { reactiveOmit } from "@vueuse/core"
6
- import { ChevronLeftIcon } from "lucide-vue-next"
7
- import { PaginationFirst, useForwardProps } from "reka-ui"
8
- import { cn } from "@/lib/utils"
9
- import { buttonVariants } from '@/shadcn/button'
10
-
11
- const props = withDefaults(defineProps<PaginationFirstProps & {
12
- size?: ButtonVariants["size"]
13
- class?: HTMLAttributes["class"]
14
- }>(), {
15
- size: "default",
16
- })
17
-
18
- const delegatedProps = reactiveOmit(props, "class", "size")
19
- const forwarded = useForwardProps(delegatedProps)
20
- </script>
21
-
22
- <template>
23
- <PaginationFirst
24
- data-slot="pagination-first"
25
- :class="cn(buttonVariants({ variant: 'ghost', size }), 'gap-1 px-2.5 sm:pr-2.5', props.class)"
26
- v-bind="forwarded"
27
- >
28
- <slot>
29
- <ChevronLeftIcon />
30
- <span class="hidden sm:block">First</span>
31
- </slot>
32
- </PaginationFirst>
33
- </template>
1
+ <script setup lang="ts">
2
+ import type { PaginationFirstProps } from "reka-ui"
3
+ import type { HTMLAttributes } from "vue"
4
+ import type { ButtonVariants } from '@/shadcn/button'
5
+ import { reactiveOmit } from "@vueuse/core"
6
+ import { ChevronLeftIcon } from "lucide-vue-next"
7
+ import { PaginationFirst, useForwardProps } from "reka-ui"
8
+ import { cn } from "@/lib/utils"
9
+ import { buttonVariants } from '@/shadcn/button'
10
+
11
+ const props = withDefaults(defineProps<PaginationFirstProps & {
12
+ size?: ButtonVariants["size"]
13
+ class?: HTMLAttributes["class"]
14
+ }>(), {
15
+ size: "default",
16
+ })
17
+
18
+ const delegatedProps = reactiveOmit(props, "class", "size")
19
+ const forwarded = useForwardProps(delegatedProps)
20
+ </script>
21
+
22
+ <template>
23
+ <PaginationFirst
24
+ data-slot="pagination-first"
25
+ :class="cn(buttonVariants({ variant: 'ghost', size }), 'gap-1 px-2.5 sm:pr-2.5', props.class)"
26
+ v-bind="forwarded"
27
+ >
28
+ <slot>
29
+ <ChevronLeftIcon />
30
+ <span class="hidden sm:block">First</span>
31
+ </slot>
32
+ </PaginationFirst>
33
+ </template>
@@ -1,31 +1,31 @@
1
- <script setup lang="ts">
2
- import type { PaginationListItemProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import type { ButtonVariants } from '@/shadcn/button'
5
- import { reactiveOmit } from "@vueuse/core"
6
- import { PaginationListItem } from "reka-ui"
7
- import { cn } from "@/lib/utils"
8
- import { buttonVariants } from '@/shadcn/button'
9
-
10
- const props = withDefaults(defineProps<PaginationListItemProps & {
11
- size?: ButtonVariants["size"]
12
- class?: HTMLAttributes["class"]
13
- isActive?: boolean
14
- }>(), {
15
- size: "icon",
16
- })
17
-
18
- const delegatedProps = reactiveOmit(props, "class", "size", "isActive")
19
- </script>
20
-
21
- <template>
22
- <PaginationListItem data-slot="pagination-item" v-bind="delegatedProps" :class="cn(
23
- buttonVariants({
24
- variant: isActive ? 'outline' : 'ghost',
25
- size,
26
- }),
27
- 'block w-auto',
28
- props.class)">
29
- <slot />
30
- </PaginationListItem>
31
- </template>
1
+ <script setup lang="ts">
2
+ import type { PaginationListItemProps } from "reka-ui"
3
+ import type { HTMLAttributes } from "vue"
4
+ import type { ButtonVariants } from '@/shadcn/button'
5
+ import { reactiveOmit } from "@vueuse/core"
6
+ import { PaginationListItem } from "reka-ui"
7
+ import { cn } from "@/lib/utils"
8
+ import { buttonVariants } from '@/shadcn/button'
9
+
10
+ const props = withDefaults(defineProps<PaginationListItemProps & {
11
+ size?: ButtonVariants["size"]
12
+ class?: HTMLAttributes["class"]
13
+ isActive?: boolean
14
+ }>(), {
15
+ size: "icon",
16
+ })
17
+
18
+ const delegatedProps = reactiveOmit(props, "class", "size", "isActive")
19
+ </script>
20
+
21
+ <template>
22
+ <PaginationListItem data-slot="pagination-item" v-bind="delegatedProps" :class="cn(
23
+ buttonVariants({
24
+ variant: isActive ? 'outline' : 'ghost',
25
+ size,
26
+ }),
27
+ 'block w-auto',
28
+ props.class)">
29
+ <slot />
30
+ </PaginationListItem>
31
+ </template>