From 645383e5cbe30b68cbdc95a0d56d1b2ae06cca83 Mon Sep 17 00:00:00 2001 From: Abizrh Date: Thu, 7 Aug 2025 14:45:37 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat=20(ui):=20add=20radix=20vue=20?= =?UTF-8?q?components=20library?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/pub/ui/accordion/Accordion.vue | 19 ++ .../pub/ui/accordion/AccordionContent.vue | 26 +++ .../pub/ui/accordion/AccordionItem.vue | 26 +++ .../pub/ui/accordion/AccordionTrigger.vue | 41 +++++ app/components/pub/ui/accordion/index.ts | 4 + .../pub/ui/alert-dialog/AlertDialog.vue | 15 ++ .../pub/ui/alert-dialog/AlertDialogAction.vue | 22 +++ .../pub/ui/alert-dialog/AlertDialogCancel.vue | 22 +++ .../ui/alert-dialog/AlertDialogContent.vue | 43 +++++ .../alert-dialog/AlertDialogDescription.vue | 27 +++ .../pub/ui/alert-dialog/AlertDialogFooter.vue | 21 +++ .../pub/ui/alert-dialog/AlertDialogHeader.vue | 16 ++ .../pub/ui/alert-dialog/AlertDialogTitle.vue | 24 +++ .../ui/alert-dialog/AlertDialogTrigger.vue | 12 ++ app/components/pub/ui/alert-dialog/index.ts | 9 + app/components/pub/ui/alert/Alert.vue | 17 ++ .../pub/ui/alert/AlertDescription.vue | 14 ++ app/components/pub/ui/alert/AlertTitle.vue | 14 ++ app/components/pub/ui/alert/index.ts | 24 +++ .../pub/ui/aspect-ratio/AspectRatio.vue | 12 ++ app/components/pub/ui/aspect-ratio/index.ts | 1 + app/components/pub/ui/avatar/Avatar.vue | 22 +++ .../pub/ui/avatar/AvatarFallback.vue | 12 ++ app/components/pub/ui/avatar/AvatarImage.vue | 10 ++ app/components/pub/ui/avatar/index.ts | 25 +++ app/components/pub/ui/badge/Badge.vue | 17 ++ app/components/pub/ui/badge/index.ts | 26 +++ .../pub/ui/breadcrumb/Breadcrumb.vue | 13 ++ .../pub/ui/breadcrumb/BreadcrumbEllipsis.vue | 22 +++ .../pub/ui/breadcrumb/BreadcrumbItem.vue | 16 ++ .../pub/ui/breadcrumb/BreadcrumbLink.vue | 20 +++ .../pub/ui/breadcrumb/BreadcrumbList.vue | 16 ++ .../pub/ui/breadcrumb/BreadcrumbPage.vue | 19 ++ .../pub/ui/breadcrumb/BreadcrumbSeparator.vue | 21 +++ app/components/pub/ui/breadcrumb/index.ts | 7 + app/components/pub/ui/button/Button.vue | 28 +++ app/components/pub/ui/button/index.ts | 36 ++++ app/components/pub/ui/calendar/Calendar.vue | 62 +++++++ .../pub/ui/calendar/CalendarCell.vue | 26 +++ .../pub/ui/calendar/CalendarCellTrigger.vue | 40 +++++ .../pub/ui/calendar/CalendarGrid.vue | 26 +++ .../pub/ui/calendar/CalendarGridBody.vue | 12 ++ .../pub/ui/calendar/CalendarGridHead.vue | 12 ++ .../pub/ui/calendar/CalendarGridRow.vue | 23 +++ .../pub/ui/calendar/CalendarHeadCell.vue | 23 +++ .../pub/ui/calendar/CalendarHeader.vue | 23 +++ .../pub/ui/calendar/CalendarHeading.vue | 29 +++ .../pub/ui/calendar/CalendarNextButton.vue | 33 ++++ .../pub/ui/calendar/CalendarPrevButton.vue | 33 ++++ app/components/pub/ui/calendar/index.ts | 12 ++ app/components/pub/ui/card/Card.vue | 21 +++ app/components/pub/ui/card/CardContent.vue | 14 ++ .../pub/ui/card/CardDescription.vue | 14 ++ app/components/pub/ui/card/CardFooter.vue | 14 ++ app/components/pub/ui/card/CardHeader.vue | 14 ++ app/components/pub/ui/card/CardTitle.vue | 18 ++ app/components/pub/ui/card/index.ts | 6 + app/components/pub/ui/carousel/Carousel.vue | 44 +++++ .../pub/ui/carousel/CarouselContent.vue | 29 +++ .../pub/ui/carousel/CarouselItem.vue | 23 +++ .../pub/ui/carousel/CarouselNext.vue | 30 ++++ .../pub/ui/carousel/CarouselPrevious.vue | 30 ++++ app/components/pub/ui/carousel/index.ts | 10 ++ app/components/pub/ui/carousel/interface.ts | 20 +++ app/components/pub/ui/carousel/useCarousel.ts | 59 +++++++ .../pub/ui/chart-area/AreaChart.vue | 137 +++++++++++++++ app/components/pub/ui/chart-area/index.ts | 66 +++++++ app/components/pub/ui/chart-bar/BarChart.vue | 116 ++++++++++++ app/components/pub/ui/chart-bar/index.ts | 66 +++++++ .../pub/ui/chart-donut/DonutChart.vue | 101 +++++++++++ app/components/pub/ui/chart-donut/index.ts | 39 +++++ .../pub/ui/chart-line/LineChart.vue | 106 +++++++++++ app/components/pub/ui/chart-line/index.ts | 66 +++++++ .../pub/ui/chart/ChartCrosshair.vue | 45 +++++ app/components/pub/ui/chart/ChartLegend.vue | 50 ++++++ .../pub/ui/chart/ChartSingleTooltip.vue | 66 +++++++ app/components/pub/ui/chart/ChartTooltip.vue | 40 +++++ app/components/pub/ui/chart/index.ts | 18 ++ app/components/pub/ui/chart/interface.ts | 64 +++++++ app/components/pub/ui/checkbox/Checkbox.vue | 33 ++++ app/components/pub/ui/checkbox/index.ts | 1 + .../pub/ui/collapsible/Collapsible.vue | 15 ++ .../pub/ui/collapsible/CollapsibleContent.vue | 12 ++ .../pub/ui/collapsible/CollapsibleTrigger.vue | 12 ++ app/components/pub/ui/collapsible/index.ts | 3 + app/components/pub/ui/command/Command.vue | 31 ++++ .../pub/ui/command/CommandDialog.vue | 27 +++ .../pub/ui/command/CommandEmpty.vue | 21 +++ .../pub/ui/command/CommandGroup.vue | 30 ++++ .../pub/ui/command/CommandInput.vue | 35 ++++ app/components/pub/ui/command/CommandItem.vue | 27 +++ app/components/pub/ui/command/CommandList.vue | 28 +++ .../pub/ui/command/CommandSeparator.vue | 24 +++ .../pub/ui/command/CommandShortcut.vue | 14 ++ app/components/pub/ui/command/index.ts | 9 + .../pub/ui/context-menu/ContextMenu.vue | 15 ++ .../context-menu/ContextMenuCheckboxItem.vue | 41 +++++ .../ui/context-menu/ContextMenuContent.vue | 37 ++++ .../pub/ui/context-menu/ContextMenuGroup.vue | 12 ++ .../pub/ui/context-menu/ContextMenuItem.vue | 35 ++++ .../pub/ui/context-menu/ContextMenuLabel.vue | 27 +++ .../pub/ui/context-menu/ContextMenuPortal.vue | 12 ++ .../ui/context-menu/ContextMenuRadioGroup.vue | 19 ++ .../ui/context-menu/ContextMenuRadioItem.vue | 41 +++++ .../ui/context-menu/ContextMenuSeparator.vue | 22 +++ .../ui/context-menu/ContextMenuShortcut.vue | 14 ++ .../pub/ui/context-menu/ContextMenuSub.vue | 19 ++ .../ui/context-menu/ContextMenuSubContent.vue | 36 ++++ .../ui/context-menu/ContextMenuSubTrigger.vue | 36 ++++ .../ui/context-menu/ContextMenuTrigger.vue | 14 ++ app/components/pub/ui/context-menu/index.ts | 14 ++ app/components/pub/ui/dialog/Dialog.vue | 15 ++ app/components/pub/ui/dialog/DialogClose.vue | 12 ++ .../pub/ui/dialog/DialogContent.vue | 51 ++++++ .../pub/ui/dialog/DialogDescription.vue | 26 +++ app/components/pub/ui/dialog/DialogFooter.vue | 19 ++ app/components/pub/ui/dialog/DialogHeader.vue | 16 ++ .../pub/ui/dialog/DialogScrollContent.vue | 60 +++++++ app/components/pub/ui/dialog/DialogTitle.vue | 31 ++++ .../pub/ui/dialog/DialogTrigger.vue | 12 ++ app/components/pub/ui/dialog/index.ts | 9 + app/components/pub/ui/drawer/Drawer.vue | 19 ++ .../pub/ui/drawer/DrawerContent.vue | 28 +++ .../pub/ui/drawer/DrawerDescription.vue | 21 +++ app/components/pub/ui/drawer/DrawerFooter.vue | 14 ++ app/components/pub/ui/drawer/DrawerHeader.vue | 14 ++ .../pub/ui/drawer/DrawerOverlay.vue | 19 ++ app/components/pub/ui/drawer/DrawerTitle.vue | 21 +++ app/components/pub/ui/drawer/index.ts | 8 + .../pub/ui/dropdown-menu/DropdownMenu.vue | 15 ++ .../DropdownMenuCheckboxItem.vue | 41 +++++ .../ui/dropdown-menu/DropdownMenuContent.vue | 39 +++++ .../ui/dropdown-menu/DropdownMenuGroup.vue | 12 ++ .../pub/ui/dropdown-menu/DropdownMenuItem.vue | 30 ++++ .../ui/dropdown-menu/DropdownMenuLabel.vue | 26 +++ .../dropdown-menu/DropdownMenuRadioGroup.vue | 19 ++ .../dropdown-menu/DropdownMenuRadioItem.vue | 42 +++++ .../dropdown-menu/DropdownMenuSeparator.vue | 24 +++ .../ui/dropdown-menu/DropdownMenuShortcut.vue | 14 ++ .../pub/ui/dropdown-menu/DropdownMenuSub.vue | 19 ++ .../dropdown-menu/DropdownMenuSubContent.vue | 31 ++++ .../dropdown-menu/DropdownMenuSubTrigger.vue | 35 ++++ .../ui/dropdown-menu/DropdownMenuTrigger.vue | 14 ++ app/components/pub/ui/dropdown-menu/index.ts | 16 ++ app/components/pub/ui/form/FormControl.vue | 17 ++ .../pub/ui/form/FormDescription.vue | 20 +++ app/components/pub/ui/form/FormItem.vue | 19 ++ app/components/pub/ui/form/FormLabel.vue | 23 +++ app/components/pub/ui/form/FormMessage.vue | 16 ++ app/components/pub/ui/form/index.ts | 7 + app/components/pub/ui/form/injectionKeys.ts | 3 + app/components/pub/ui/form/useFormField.ts | 29 +++ .../pub/ui/hover-card/HoverCard.vue | 15 ++ .../pub/ui/hover-card/HoverCardContent.vue | 43 +++++ .../pub/ui/hover-card/HoverCardTrigger.vue | 12 ++ app/components/pub/ui/hover-card/index.ts | 3 + app/components/pub/ui/input/Input.vue | 24 +++ app/components/pub/ui/input/index.ts | 1 + app/components/pub/ui/label/Label.vue | 29 +++ app/components/pub/ui/label/index.ts | 1 + app/components/pub/ui/menubar/Menubar.vue | 36 ++++ .../pub/ui/menubar/MenubarCheckboxItem.vue | 40 +++++ .../pub/ui/menubar/MenubarContent.vue | 45 +++++ .../pub/ui/menubar/MenubarGroup.vue | 12 ++ app/components/pub/ui/menubar/MenubarItem.vue | 36 ++++ .../pub/ui/menubar/MenubarLabel.vue | 14 ++ app/components/pub/ui/menubar/MenubarMenu.vue | 12 ++ .../pub/ui/menubar/MenubarRadioGroup.vue | 20 +++ .../pub/ui/menubar/MenubarRadioItem.vue | 40 +++++ .../pub/ui/menubar/MenubarSeparator.vue | 21 +++ .../pub/ui/menubar/MenubarShortcut.vue | 14 ++ app/components/pub/ui/menubar/MenubarSub.vue | 20 +++ .../pub/ui/menubar/MenubarSubContent.vue | 40 +++++ .../pub/ui/menubar/MenubarSubTrigger.vue | 31 ++++ .../pub/ui/menubar/MenubarTrigger.vue | 31 ++++ app/components/pub/ui/menubar/index.ts | 15 ++ .../pub/ui/navigation-menu/NavigationMenu.vue | 34 ++++ .../navigation-menu/NavigationMenuContent.vue | 35 ++++ .../NavigationMenuIndicator.vue | 26 +++ .../ui/navigation-menu/NavigationMenuItem.vue | 12 ++ .../ui/navigation-menu/NavigationMenuLink.vue | 19 ++ .../ui/navigation-menu/NavigationMenuList.vue | 31 ++++ .../navigation-menu/NavigationMenuTrigger.vue | 36 ++++ .../NavigationMenuViewport.vue | 35 ++++ .../pub/ui/navigation-menu/index.ts | 12 ++ .../pub/ui/number-field/NumberField.vue | 24 +++ .../ui/number-field/NumberFieldContent.vue | 14 ++ .../ui/number-field/NumberFieldDecrement.vue | 26 +++ .../ui/number-field/NumberFieldIncrement.vue | 26 +++ .../pub/ui/number-field/NumberFieldInput.vue | 8 + app/components/pub/ui/number-field/index.ts | 5 + .../pub/ui/pagination/PaginationEllipsis.vue | 23 +++ .../pub/ui/pagination/PaginationFirst.vue | 30 ++++ .../pub/ui/pagination/PaginationLast.vue | 30 ++++ .../pub/ui/pagination/PaginationNext.vue | 30 ++++ .../pub/ui/pagination/PaginationPrev.vue | 30 ++++ app/components/pub/ui/pagination/index.ts | 10 ++ app/components/pub/ui/pin-input/PinInput.vue | 25 +++ .../pub/ui/pin-input/PinInputGroup.vue | 20 +++ .../pub/ui/pin-input/PinInputInput.vue | 20 +++ .../pub/ui/pin-input/PinInputSeparator.vue | 15 ++ app/components/pub/ui/pin-input/index.ts | 4 + app/components/pub/ui/popover/Popover.vue | 15 ++ .../pub/ui/popover/PopoverContent.vue | 49 ++++++ .../pub/ui/popover/PopoverTrigger.vue | 12 ++ app/components/pub/ui/popover/index.ts | 3 + app/components/pub/ui/progress/Progress.vue | 41 +++++ app/components/pub/ui/progress/index.ts | 1 + .../pub/ui/radio-group/RadioGroup.vue | 27 +++ .../pub/ui/radio-group/RadioGroupItem.vue | 38 ++++ app/components/pub/ui/radio-group/index.ts | 2 + .../pub/ui/range-calendar/RangeCalendar.vue | 62 +++++++ .../ui/range-calendar/RangeCalendarCell.vue | 26 +++ .../RangeCalendarCellTrigger.vue | 42 +++++ .../ui/range-calendar/RangeCalendarGrid.vue | 26 +++ .../range-calendar/RangeCalendarGridBody.vue | 12 ++ .../range-calendar/RangeCalendarGridHead.vue | 12 ++ .../range-calendar/RangeCalendarGridRow.vue | 23 +++ .../range-calendar/RangeCalendarHeadCell.vue | 23 +++ .../ui/range-calendar/RangeCalendarHeader.vue | 23 +++ .../range-calendar/RangeCalendarHeading.vue | 29 +++ .../RangeCalendarNextButton.vue | 34 ++++ .../RangeCalendarPrevButton.vue | 34 ++++ app/components/pub/ui/range-calendar/index.ts | 12 ++ .../pub/ui/resizable/ResizableHandle.vue | 28 +++ .../pub/ui/resizable/ResizablePanelGroup.vue | 23 +++ app/components/pub/ui/resizable/index.ts | 3 + .../pub/ui/scroll-area/ScrollArea.vue | 31 ++++ .../pub/ui/scroll-area/ScrollBar.vue | 32 ++++ app/components/pub/ui/scroll-area/index.ts | 2 + app/components/pub/ui/select/Select.vue | 15 ++ .../pub/ui/select/SelectContent.vue | 54 ++++++ app/components/pub/ui/select/SelectGroup.vue | 21 +++ app/components/pub/ui/select/SelectItem.vue | 45 +++++ .../pub/ui/select/SelectItemText.vue | 12 ++ app/components/pub/ui/select/SelectLabel.vue | 14 ++ .../pub/ui/select/SelectScrollDownButton.vue | 25 +++ .../pub/ui/select/SelectScrollUpButton.vue | 25 +++ .../pub/ui/select/SelectSeparator.vue | 19 ++ .../pub/ui/select/SelectTrigger.vue | 32 ++++ app/components/pub/ui/select/SelectValue.vue | 12 ++ app/components/pub/ui/select/index.ts | 11 ++ app/components/pub/ui/separator/Separator.vue | 40 +++++ app/components/pub/ui/separator/index.ts | 1 + app/components/pub/ui/sheet/Sheet.vue | 15 ++ app/components/pub/ui/sheet/SheetClose.vue | 12 ++ app/components/pub/ui/sheet/SheetContent.vue | 63 +++++++ .../pub/ui/sheet/SheetDescription.vue | 24 +++ app/components/pub/ui/sheet/SheetFooter.vue | 19 ++ app/components/pub/ui/sheet/SheetHeader.vue | 16 ++ app/components/pub/ui/sheet/SheetTitle.vue | 24 +++ app/components/pub/ui/sheet/SheetTrigger.vue | 12 ++ app/components/pub/ui/sheet/index.ts | 32 ++++ app/components/pub/ui/sidebar/Sidebar.vue | 99 +++++++++++ .../pub/ui/sidebar/SidebarContent.vue | 17 ++ .../pub/ui/sidebar/SidebarFooter.vue | 17 ++ .../pub/ui/sidebar/SidebarGroup.vue | 17 ++ .../pub/ui/sidebar/SidebarGroupAction.vue | 27 +++ .../pub/ui/sidebar/SidebarGroupContent.vue | 17 ++ .../pub/ui/sidebar/SidebarGroupLabel.vue | 24 +++ .../pub/ui/sidebar/SidebarHeader.vue | 17 ++ .../pub/ui/sidebar/SidebarInput.vue | 20 +++ .../pub/ui/sidebar/SidebarInset.vue | 20 +++ app/components/pub/ui/sidebar/SidebarMenu.vue | 17 ++ .../pub/ui/sidebar/SidebarMenuAction.vue | 35 ++++ .../pub/ui/sidebar/SidebarMenuBadge.vue | 25 +++ .../pub/ui/sidebar/SidebarMenuButton.vue | 54 ++++++ .../pub/ui/sidebar/SidebarMenuButtonChild.vue | 35 ++++ .../pub/ui/sidebar/SidebarMenuItem.vue | 17 ++ .../pub/ui/sidebar/SidebarMenuSkeleton.vue | 27 +++ .../pub/ui/sidebar/SidebarMenuSub.vue | 21 +++ .../pub/ui/sidebar/SidebarMenuSubButton.vue | 35 ++++ .../pub/ui/sidebar/SidebarMenuSubItem.vue | 9 + .../pub/ui/sidebar/SidebarProvider.vue | 102 +++++++++++ app/components/pub/ui/sidebar/SidebarRail.vue | 32 ++++ .../pub/ui/sidebar/SidebarSeparator.vue | 15 ++ .../pub/ui/sidebar/SidebarTrigger.vue | 20 +++ app/components/pub/ui/sidebar/index.ts | 52 ++++++ app/components/pub/ui/sidebar/utils.ts | 19 ++ app/components/pub/ui/skeleton/Skeleton.vue | 14 ++ app/components/pub/ui/skeleton/index.ts | 1 + app/components/pub/ui/slider/Slider.vue | 37 ++++ app/components/pub/ui/slider/index.ts | 1 + app/components/pub/ui/sonner/Sonner.vue | 23 +++ app/components/pub/ui/sonner/index.ts | 1 + app/components/pub/ui/stepper/Stepper.vue | 32 ++++ .../pub/ui/stepper/StepperDescription.vue | 24 +++ .../pub/ui/stepper/StepperIndicator.vue | 36 ++++ app/components/pub/ui/stepper/StepperItem.vue | 28 +++ .../pub/ui/stepper/StepperSeparator.vue | 32 ++++ .../pub/ui/stepper/StepperTitle.vue | 24 +++ .../pub/ui/stepper/StepperTrigger.vue | 27 +++ app/components/pub/ui/stepper/index.ts | 7 + app/components/pub/ui/switch/Switch.vue | 38 ++++ app/components/pub/ui/switch/index.ts | 1 + app/components/pub/ui/table/Table.vue | 16 ++ app/components/pub/ui/table/TableBody.vue | 14 ++ app/components/pub/ui/table/TableCaption.vue | 14 ++ app/components/pub/ui/table/TableCell.vue | 21 +++ app/components/pub/ui/table/TableEmpty.vue | 38 ++++ app/components/pub/ui/table/TableFooter.vue | 14 ++ app/components/pub/ui/table/TableHead.vue | 14 ++ app/components/pub/ui/table/TableHeader.vue | 14 ++ app/components/pub/ui/table/TableRow.vue | 14 ++ app/components/pub/ui/table/index.ts | 8 + .../pub/ui/table/separator/Separator.vue | 40 +++++ .../pub/ui/table/separator/index.ts | 1 + app/components/pub/ui/tabs/Tabs.vue | 15 ++ app/components/pub/ui/tabs/TabsContent.vue | 24 +++ app/components/pub/ui/tabs/TabsList.vue | 27 +++ app/components/pub/ui/tabs/TabsTrigger.vue | 29 +++ app/components/pub/ui/tabs/index.ts | 4 + .../pub/ui/tags-input/TagsInput.vue | 24 +++ .../pub/ui/tags-input/TagsInputInput.vue | 21 +++ .../pub/ui/tags-input/TagsInputItem.vue | 24 +++ .../pub/ui/tags-input/TagsInputItemDelete.vue | 25 +++ .../pub/ui/tags-input/TagsInputItemText.vue | 21 +++ app/components/pub/ui/tags-input/index.ts | 5 + app/components/pub/ui/textarea/Textarea.vue | 24 +++ app/components/pub/ui/textarea/index.ts | 1 + app/components/pub/ui/toast/Toast.vue | 30 ++++ app/components/pub/ui/toast/ToastAction.vue | 21 +++ app/components/pub/ui/toast/ToastClose.vue | 24 +++ .../pub/ui/toast/ToastDescription.vue | 21 +++ app/components/pub/ui/toast/ToastProvider.vue | 12 ++ app/components/pub/ui/toast/ToastTitle.vue | 21 +++ app/components/pub/ui/toast/ToastViewport.vue | 19 ++ app/components/pub/ui/toast/Toaster.vue | 30 ++++ app/components/pub/ui/toast/index.ts | 39 +++++ app/components/pub/ui/toast/use-toast.ts | 165 ++++++++++++++++++ .../pub/ui/toggle-group/ToggleGroup.vue | 36 ++++ .../pub/ui/toggle-group/ToggleGroupItem.vue | 37 ++++ app/components/pub/ui/toggle-group/index.ts | 2 + app/components/pub/ui/toggle/Toggle.vue | 38 ++++ app/components/pub/ui/toggle/index.ts | 28 +++ app/components/pub/ui/tooltip/Tooltip.vue | 15 ++ .../pub/ui/tooltip/TooltipContent.vue | 33 ++++ .../pub/ui/tooltip/TooltipProvider.vue | 12 ++ .../pub/ui/tooltip/TooltipTrigger.vue | 12 ++ app/components/pub/ui/tooltip/index.ts | 4 + nuxt.config.ts | 33 +++- 341 files changed, 8563 insertions(+), 1 deletion(-) create mode 100644 app/components/pub/ui/accordion/Accordion.vue create mode 100644 app/components/pub/ui/accordion/AccordionContent.vue create mode 100644 app/components/pub/ui/accordion/AccordionItem.vue create mode 100644 app/components/pub/ui/accordion/AccordionTrigger.vue create mode 100644 app/components/pub/ui/accordion/index.ts create mode 100644 app/components/pub/ui/alert-dialog/AlertDialog.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogAction.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogCancel.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogContent.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogDescription.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogFooter.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogHeader.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogTitle.vue create mode 100644 app/components/pub/ui/alert-dialog/AlertDialogTrigger.vue create mode 100644 app/components/pub/ui/alert-dialog/index.ts create mode 100644 app/components/pub/ui/alert/Alert.vue create mode 100644 app/components/pub/ui/alert/AlertDescription.vue create mode 100644 app/components/pub/ui/alert/AlertTitle.vue create mode 100644 app/components/pub/ui/alert/index.ts create mode 100644 app/components/pub/ui/aspect-ratio/AspectRatio.vue create mode 100644 app/components/pub/ui/aspect-ratio/index.ts create mode 100644 app/components/pub/ui/avatar/Avatar.vue create mode 100644 app/components/pub/ui/avatar/AvatarFallback.vue create mode 100644 app/components/pub/ui/avatar/AvatarImage.vue create mode 100644 app/components/pub/ui/avatar/index.ts create mode 100644 app/components/pub/ui/badge/Badge.vue create mode 100644 app/components/pub/ui/badge/index.ts create mode 100644 app/components/pub/ui/breadcrumb/Breadcrumb.vue create mode 100644 app/components/pub/ui/breadcrumb/BreadcrumbEllipsis.vue create mode 100644 app/components/pub/ui/breadcrumb/BreadcrumbItem.vue create mode 100644 app/components/pub/ui/breadcrumb/BreadcrumbLink.vue create mode 100644 app/components/pub/ui/breadcrumb/BreadcrumbList.vue create mode 100644 app/components/pub/ui/breadcrumb/BreadcrumbPage.vue create mode 100644 app/components/pub/ui/breadcrumb/BreadcrumbSeparator.vue create mode 100644 app/components/pub/ui/breadcrumb/index.ts create mode 100644 app/components/pub/ui/button/Button.vue create mode 100644 app/components/pub/ui/button/index.ts create mode 100644 app/components/pub/ui/calendar/Calendar.vue create mode 100644 app/components/pub/ui/calendar/CalendarCell.vue create mode 100644 app/components/pub/ui/calendar/CalendarCellTrigger.vue create mode 100644 app/components/pub/ui/calendar/CalendarGrid.vue create mode 100644 app/components/pub/ui/calendar/CalendarGridBody.vue create mode 100644 app/components/pub/ui/calendar/CalendarGridHead.vue create mode 100644 app/components/pub/ui/calendar/CalendarGridRow.vue create mode 100644 app/components/pub/ui/calendar/CalendarHeadCell.vue create mode 100644 app/components/pub/ui/calendar/CalendarHeader.vue create mode 100644 app/components/pub/ui/calendar/CalendarHeading.vue create mode 100644 app/components/pub/ui/calendar/CalendarNextButton.vue create mode 100644 app/components/pub/ui/calendar/CalendarPrevButton.vue create mode 100644 app/components/pub/ui/calendar/index.ts create mode 100644 app/components/pub/ui/card/Card.vue create mode 100644 app/components/pub/ui/card/CardContent.vue create mode 100644 app/components/pub/ui/card/CardDescription.vue create mode 100644 app/components/pub/ui/card/CardFooter.vue create mode 100644 app/components/pub/ui/card/CardHeader.vue create mode 100644 app/components/pub/ui/card/CardTitle.vue create mode 100644 app/components/pub/ui/card/index.ts create mode 100644 app/components/pub/ui/carousel/Carousel.vue create mode 100644 app/components/pub/ui/carousel/CarouselContent.vue create mode 100644 app/components/pub/ui/carousel/CarouselItem.vue create mode 100644 app/components/pub/ui/carousel/CarouselNext.vue create mode 100644 app/components/pub/ui/carousel/CarouselPrevious.vue create mode 100644 app/components/pub/ui/carousel/index.ts create mode 100644 app/components/pub/ui/carousel/interface.ts create mode 100644 app/components/pub/ui/carousel/useCarousel.ts create mode 100644 app/components/pub/ui/chart-area/AreaChart.vue create mode 100644 app/components/pub/ui/chart-area/index.ts create mode 100644 app/components/pub/ui/chart-bar/BarChart.vue create mode 100644 app/components/pub/ui/chart-bar/index.ts create mode 100644 app/components/pub/ui/chart-donut/DonutChart.vue create mode 100644 app/components/pub/ui/chart-donut/index.ts create mode 100644 app/components/pub/ui/chart-line/LineChart.vue create mode 100644 app/components/pub/ui/chart-line/index.ts create mode 100644 app/components/pub/ui/chart/ChartCrosshair.vue create mode 100644 app/components/pub/ui/chart/ChartLegend.vue create mode 100644 app/components/pub/ui/chart/ChartSingleTooltip.vue create mode 100644 app/components/pub/ui/chart/ChartTooltip.vue create mode 100644 app/components/pub/ui/chart/index.ts create mode 100644 app/components/pub/ui/chart/interface.ts create mode 100644 app/components/pub/ui/checkbox/Checkbox.vue create mode 100644 app/components/pub/ui/checkbox/index.ts create mode 100644 app/components/pub/ui/collapsible/Collapsible.vue create mode 100644 app/components/pub/ui/collapsible/CollapsibleContent.vue create mode 100644 app/components/pub/ui/collapsible/CollapsibleTrigger.vue create mode 100644 app/components/pub/ui/collapsible/index.ts create mode 100644 app/components/pub/ui/command/Command.vue create mode 100644 app/components/pub/ui/command/CommandDialog.vue create mode 100644 app/components/pub/ui/command/CommandEmpty.vue create mode 100644 app/components/pub/ui/command/CommandGroup.vue create mode 100644 app/components/pub/ui/command/CommandInput.vue create mode 100644 app/components/pub/ui/command/CommandItem.vue create mode 100644 app/components/pub/ui/command/CommandList.vue create mode 100644 app/components/pub/ui/command/CommandSeparator.vue create mode 100644 app/components/pub/ui/command/CommandShortcut.vue create mode 100644 app/components/pub/ui/command/index.ts create mode 100644 app/components/pub/ui/context-menu/ContextMenu.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuCheckboxItem.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuContent.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuGroup.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuItem.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuLabel.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuPortal.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuRadioGroup.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuRadioItem.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuSeparator.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuShortcut.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuSub.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuSubContent.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuSubTrigger.vue create mode 100644 app/components/pub/ui/context-menu/ContextMenuTrigger.vue create mode 100644 app/components/pub/ui/context-menu/index.ts create mode 100644 app/components/pub/ui/dialog/Dialog.vue create mode 100644 app/components/pub/ui/dialog/DialogClose.vue create mode 100644 app/components/pub/ui/dialog/DialogContent.vue create mode 100644 app/components/pub/ui/dialog/DialogDescription.vue create mode 100644 app/components/pub/ui/dialog/DialogFooter.vue create mode 100644 app/components/pub/ui/dialog/DialogHeader.vue create mode 100644 app/components/pub/ui/dialog/DialogScrollContent.vue create mode 100644 app/components/pub/ui/dialog/DialogTitle.vue create mode 100644 app/components/pub/ui/dialog/DialogTrigger.vue create mode 100644 app/components/pub/ui/dialog/index.ts create mode 100644 app/components/pub/ui/drawer/Drawer.vue create mode 100644 app/components/pub/ui/drawer/DrawerContent.vue create mode 100644 app/components/pub/ui/drawer/DrawerDescription.vue create mode 100644 app/components/pub/ui/drawer/DrawerFooter.vue create mode 100644 app/components/pub/ui/drawer/DrawerHeader.vue create mode 100644 app/components/pub/ui/drawer/DrawerOverlay.vue create mode 100644 app/components/pub/ui/drawer/DrawerTitle.vue create mode 100644 app/components/pub/ui/drawer/index.ts create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenu.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuCheckboxItem.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuContent.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuGroup.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuItem.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuLabel.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuRadioGroup.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuRadioItem.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuSeparator.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuShortcut.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuSub.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuSubContent.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuSubTrigger.vue create mode 100644 app/components/pub/ui/dropdown-menu/DropdownMenuTrigger.vue create mode 100644 app/components/pub/ui/dropdown-menu/index.ts create mode 100644 app/components/pub/ui/form/FormControl.vue create mode 100644 app/components/pub/ui/form/FormDescription.vue create mode 100644 app/components/pub/ui/form/FormItem.vue create mode 100644 app/components/pub/ui/form/FormLabel.vue create mode 100644 app/components/pub/ui/form/FormMessage.vue create mode 100644 app/components/pub/ui/form/index.ts create mode 100644 app/components/pub/ui/form/injectionKeys.ts create mode 100644 app/components/pub/ui/form/useFormField.ts create mode 100644 app/components/pub/ui/hover-card/HoverCard.vue create mode 100644 app/components/pub/ui/hover-card/HoverCardContent.vue create mode 100644 app/components/pub/ui/hover-card/HoverCardTrigger.vue create mode 100644 app/components/pub/ui/hover-card/index.ts create mode 100644 app/components/pub/ui/input/Input.vue create mode 100644 app/components/pub/ui/input/index.ts create mode 100644 app/components/pub/ui/label/Label.vue create mode 100644 app/components/pub/ui/label/index.ts create mode 100644 app/components/pub/ui/menubar/Menubar.vue create mode 100644 app/components/pub/ui/menubar/MenubarCheckboxItem.vue create mode 100644 app/components/pub/ui/menubar/MenubarContent.vue create mode 100644 app/components/pub/ui/menubar/MenubarGroup.vue create mode 100644 app/components/pub/ui/menubar/MenubarItem.vue create mode 100644 app/components/pub/ui/menubar/MenubarLabel.vue create mode 100644 app/components/pub/ui/menubar/MenubarMenu.vue create mode 100644 app/components/pub/ui/menubar/MenubarRadioGroup.vue create mode 100644 app/components/pub/ui/menubar/MenubarRadioItem.vue create mode 100644 app/components/pub/ui/menubar/MenubarSeparator.vue create mode 100644 app/components/pub/ui/menubar/MenubarShortcut.vue create mode 100644 app/components/pub/ui/menubar/MenubarSub.vue create mode 100644 app/components/pub/ui/menubar/MenubarSubContent.vue create mode 100644 app/components/pub/ui/menubar/MenubarSubTrigger.vue create mode 100644 app/components/pub/ui/menubar/MenubarTrigger.vue create mode 100644 app/components/pub/ui/menubar/index.ts create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenu.vue create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenuContent.vue create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenuIndicator.vue create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenuItem.vue create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenuLink.vue create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenuList.vue create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenuTrigger.vue create mode 100644 app/components/pub/ui/navigation-menu/NavigationMenuViewport.vue create mode 100644 app/components/pub/ui/navigation-menu/index.ts create mode 100644 app/components/pub/ui/number-field/NumberField.vue create mode 100644 app/components/pub/ui/number-field/NumberFieldContent.vue create mode 100644 app/components/pub/ui/number-field/NumberFieldDecrement.vue create mode 100644 app/components/pub/ui/number-field/NumberFieldIncrement.vue create mode 100644 app/components/pub/ui/number-field/NumberFieldInput.vue create mode 100644 app/components/pub/ui/number-field/index.ts create mode 100644 app/components/pub/ui/pagination/PaginationEllipsis.vue create mode 100644 app/components/pub/ui/pagination/PaginationFirst.vue create mode 100644 app/components/pub/ui/pagination/PaginationLast.vue create mode 100644 app/components/pub/ui/pagination/PaginationNext.vue create mode 100644 app/components/pub/ui/pagination/PaginationPrev.vue create mode 100644 app/components/pub/ui/pagination/index.ts create mode 100644 app/components/pub/ui/pin-input/PinInput.vue create mode 100644 app/components/pub/ui/pin-input/PinInputGroup.vue create mode 100644 app/components/pub/ui/pin-input/PinInputInput.vue create mode 100644 app/components/pub/ui/pin-input/PinInputSeparator.vue create mode 100644 app/components/pub/ui/pin-input/index.ts create mode 100644 app/components/pub/ui/popover/Popover.vue create mode 100644 app/components/pub/ui/popover/PopoverContent.vue create mode 100644 app/components/pub/ui/popover/PopoverTrigger.vue create mode 100644 app/components/pub/ui/popover/index.ts create mode 100644 app/components/pub/ui/progress/Progress.vue create mode 100644 app/components/pub/ui/progress/index.ts create mode 100644 app/components/pub/ui/radio-group/RadioGroup.vue create mode 100644 app/components/pub/ui/radio-group/RadioGroupItem.vue create mode 100644 app/components/pub/ui/radio-group/index.ts create mode 100644 app/components/pub/ui/range-calendar/RangeCalendar.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarCell.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarCellTrigger.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarGrid.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarGridBody.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarGridHead.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarGridRow.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarHeadCell.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarHeader.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarHeading.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarNextButton.vue create mode 100644 app/components/pub/ui/range-calendar/RangeCalendarPrevButton.vue create mode 100644 app/components/pub/ui/range-calendar/index.ts create mode 100644 app/components/pub/ui/resizable/ResizableHandle.vue create mode 100644 app/components/pub/ui/resizable/ResizablePanelGroup.vue create mode 100644 app/components/pub/ui/resizable/index.ts create mode 100644 app/components/pub/ui/scroll-area/ScrollArea.vue create mode 100644 app/components/pub/ui/scroll-area/ScrollBar.vue create mode 100644 app/components/pub/ui/scroll-area/index.ts create mode 100644 app/components/pub/ui/select/Select.vue create mode 100644 app/components/pub/ui/select/SelectContent.vue create mode 100644 app/components/pub/ui/select/SelectGroup.vue create mode 100644 app/components/pub/ui/select/SelectItem.vue create mode 100644 app/components/pub/ui/select/SelectItemText.vue create mode 100644 app/components/pub/ui/select/SelectLabel.vue create mode 100644 app/components/pub/ui/select/SelectScrollDownButton.vue create mode 100644 app/components/pub/ui/select/SelectScrollUpButton.vue create mode 100644 app/components/pub/ui/select/SelectSeparator.vue create mode 100644 app/components/pub/ui/select/SelectTrigger.vue create mode 100644 app/components/pub/ui/select/SelectValue.vue create mode 100644 app/components/pub/ui/select/index.ts create mode 100644 app/components/pub/ui/separator/Separator.vue create mode 100644 app/components/pub/ui/separator/index.ts create mode 100644 app/components/pub/ui/sheet/Sheet.vue create mode 100644 app/components/pub/ui/sheet/SheetClose.vue create mode 100644 app/components/pub/ui/sheet/SheetContent.vue create mode 100644 app/components/pub/ui/sheet/SheetDescription.vue create mode 100644 app/components/pub/ui/sheet/SheetFooter.vue create mode 100644 app/components/pub/ui/sheet/SheetHeader.vue create mode 100644 app/components/pub/ui/sheet/SheetTitle.vue create mode 100644 app/components/pub/ui/sheet/SheetTrigger.vue create mode 100644 app/components/pub/ui/sheet/index.ts create mode 100644 app/components/pub/ui/sidebar/Sidebar.vue create mode 100644 app/components/pub/ui/sidebar/SidebarContent.vue create mode 100644 app/components/pub/ui/sidebar/SidebarFooter.vue create mode 100644 app/components/pub/ui/sidebar/SidebarGroup.vue create mode 100644 app/components/pub/ui/sidebar/SidebarGroupAction.vue create mode 100644 app/components/pub/ui/sidebar/SidebarGroupContent.vue create mode 100644 app/components/pub/ui/sidebar/SidebarGroupLabel.vue create mode 100644 app/components/pub/ui/sidebar/SidebarHeader.vue create mode 100644 app/components/pub/ui/sidebar/SidebarInput.vue create mode 100644 app/components/pub/ui/sidebar/SidebarInset.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenu.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuAction.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuBadge.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuButton.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuButtonChild.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuItem.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuSkeleton.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuSub.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuSubButton.vue create mode 100644 app/components/pub/ui/sidebar/SidebarMenuSubItem.vue create mode 100644 app/components/pub/ui/sidebar/SidebarProvider.vue create mode 100644 app/components/pub/ui/sidebar/SidebarRail.vue create mode 100644 app/components/pub/ui/sidebar/SidebarSeparator.vue create mode 100644 app/components/pub/ui/sidebar/SidebarTrigger.vue create mode 100644 app/components/pub/ui/sidebar/index.ts create mode 100644 app/components/pub/ui/sidebar/utils.ts create mode 100644 app/components/pub/ui/skeleton/Skeleton.vue create mode 100644 app/components/pub/ui/skeleton/index.ts create mode 100644 app/components/pub/ui/slider/Slider.vue create mode 100644 app/components/pub/ui/slider/index.ts create mode 100644 app/components/pub/ui/sonner/Sonner.vue create mode 100644 app/components/pub/ui/sonner/index.ts create mode 100644 app/components/pub/ui/stepper/Stepper.vue create mode 100644 app/components/pub/ui/stepper/StepperDescription.vue create mode 100644 app/components/pub/ui/stepper/StepperIndicator.vue create mode 100644 app/components/pub/ui/stepper/StepperItem.vue create mode 100644 app/components/pub/ui/stepper/StepperSeparator.vue create mode 100644 app/components/pub/ui/stepper/StepperTitle.vue create mode 100644 app/components/pub/ui/stepper/StepperTrigger.vue create mode 100644 app/components/pub/ui/stepper/index.ts create mode 100644 app/components/pub/ui/switch/Switch.vue create mode 100644 app/components/pub/ui/switch/index.ts create mode 100644 app/components/pub/ui/table/Table.vue create mode 100644 app/components/pub/ui/table/TableBody.vue create mode 100644 app/components/pub/ui/table/TableCaption.vue create mode 100644 app/components/pub/ui/table/TableCell.vue create mode 100644 app/components/pub/ui/table/TableEmpty.vue create mode 100644 app/components/pub/ui/table/TableFooter.vue create mode 100644 app/components/pub/ui/table/TableHead.vue create mode 100644 app/components/pub/ui/table/TableHeader.vue create mode 100644 app/components/pub/ui/table/TableRow.vue create mode 100644 app/components/pub/ui/table/index.ts create mode 100644 app/components/pub/ui/table/separator/Separator.vue create mode 100644 app/components/pub/ui/table/separator/index.ts create mode 100644 app/components/pub/ui/tabs/Tabs.vue create mode 100644 app/components/pub/ui/tabs/TabsContent.vue create mode 100644 app/components/pub/ui/tabs/TabsList.vue create mode 100644 app/components/pub/ui/tabs/TabsTrigger.vue create mode 100644 app/components/pub/ui/tabs/index.ts create mode 100644 app/components/pub/ui/tags-input/TagsInput.vue create mode 100644 app/components/pub/ui/tags-input/TagsInputInput.vue create mode 100644 app/components/pub/ui/tags-input/TagsInputItem.vue create mode 100644 app/components/pub/ui/tags-input/TagsInputItemDelete.vue create mode 100644 app/components/pub/ui/tags-input/TagsInputItemText.vue create mode 100644 app/components/pub/ui/tags-input/index.ts create mode 100644 app/components/pub/ui/textarea/Textarea.vue create mode 100644 app/components/pub/ui/textarea/index.ts create mode 100644 app/components/pub/ui/toast/Toast.vue create mode 100644 app/components/pub/ui/toast/ToastAction.vue create mode 100644 app/components/pub/ui/toast/ToastClose.vue create mode 100644 app/components/pub/ui/toast/ToastDescription.vue create mode 100644 app/components/pub/ui/toast/ToastProvider.vue create mode 100644 app/components/pub/ui/toast/ToastTitle.vue create mode 100644 app/components/pub/ui/toast/ToastViewport.vue create mode 100644 app/components/pub/ui/toast/Toaster.vue create mode 100644 app/components/pub/ui/toast/index.ts create mode 100644 app/components/pub/ui/toast/use-toast.ts create mode 100644 app/components/pub/ui/toggle-group/ToggleGroup.vue create mode 100644 app/components/pub/ui/toggle-group/ToggleGroupItem.vue create mode 100644 app/components/pub/ui/toggle-group/index.ts create mode 100644 app/components/pub/ui/toggle/Toggle.vue create mode 100644 app/components/pub/ui/toggle/index.ts create mode 100644 app/components/pub/ui/tooltip/Tooltip.vue create mode 100644 app/components/pub/ui/tooltip/TooltipContent.vue create mode 100644 app/components/pub/ui/tooltip/TooltipProvider.vue create mode 100644 app/components/pub/ui/tooltip/TooltipTrigger.vue create mode 100644 app/components/pub/ui/tooltip/index.ts diff --git a/app/components/pub/ui/accordion/Accordion.vue b/app/components/pub/ui/accordion/Accordion.vue new file mode 100644 index 00000000..1cd25bbe --- /dev/null +++ b/app/components/pub/ui/accordion/Accordion.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/accordion/AccordionContent.vue b/app/components/pub/ui/accordion/AccordionContent.vue new file mode 100644 index 00000000..585ad9bb --- /dev/null +++ b/app/components/pub/ui/accordion/AccordionContent.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/accordion/AccordionItem.vue b/app/components/pub/ui/accordion/AccordionItem.vue new file mode 100644 index 00000000..d0875a90 --- /dev/null +++ b/app/components/pub/ui/accordion/AccordionItem.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/accordion/AccordionTrigger.vue b/app/components/pub/ui/accordion/AccordionTrigger.vue new file mode 100644 index 00000000..36ff1cad --- /dev/null +++ b/app/components/pub/ui/accordion/AccordionTrigger.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/components/pub/ui/accordion/index.ts b/app/components/pub/ui/accordion/index.ts new file mode 100644 index 00000000..9340ac06 --- /dev/null +++ b/app/components/pub/ui/accordion/index.ts @@ -0,0 +1,4 @@ +export { default as Accordion } from './Accordion.vue' +export { default as AccordionContent } from './AccordionContent.vue' +export { default as AccordionItem } from './AccordionItem.vue' +export { default as AccordionTrigger } from './AccordionTrigger.vue' diff --git a/app/components/pub/ui/alert-dialog/AlertDialog.vue b/app/components/pub/ui/alert-dialog/AlertDialog.vue new file mode 100644 index 00000000..aaa22d70 --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialog.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogAction.vue b/app/components/pub/ui/alert-dialog/AlertDialogAction.vue new file mode 100644 index 00000000..38956c41 --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogAction.vue @@ -0,0 +1,22 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogCancel.vue b/app/components/pub/ui/alert-dialog/AlertDialogCancel.vue new file mode 100644 index 00000000..624b1962 --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogCancel.vue @@ -0,0 +1,22 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogContent.vue b/app/components/pub/ui/alert-dialog/AlertDialogContent.vue new file mode 100644 index 00000000..3ecf1506 --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogContent.vue @@ -0,0 +1,43 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogDescription.vue b/app/components/pub/ui/alert-dialog/AlertDialogDescription.vue new file mode 100644 index 00000000..3c78b776 --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogDescription.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogFooter.vue b/app/components/pub/ui/alert-dialog/AlertDialogFooter.vue new file mode 100644 index 00000000..55d0a0eb --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogFooter.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogHeader.vue b/app/components/pub/ui/alert-dialog/AlertDialogHeader.vue new file mode 100644 index 00000000..c61c4495 --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogHeader.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogTitle.vue b/app/components/pub/ui/alert-dialog/AlertDialogTitle.vue new file mode 100644 index 00000000..c39522ab --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogTitle.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/AlertDialogTrigger.vue b/app/components/pub/ui/alert-dialog/AlertDialogTrigger.vue new file mode 100644 index 00000000..e790748f --- /dev/null +++ b/app/components/pub/ui/alert-dialog/AlertDialogTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/alert-dialog/index.ts b/app/components/pub/ui/alert-dialog/index.ts new file mode 100644 index 00000000..448d5198 --- /dev/null +++ b/app/components/pub/ui/alert-dialog/index.ts @@ -0,0 +1,9 @@ +export { default as AlertDialog } from './AlertDialog.vue' +export { default as AlertDialogAction } from './AlertDialogAction.vue' +export { default as AlertDialogCancel } from './AlertDialogCancel.vue' +export { default as AlertDialogContent } from './AlertDialogContent.vue' +export { default as AlertDialogDescription } from './AlertDialogDescription.vue' +export { default as AlertDialogFooter } from './AlertDialogFooter.vue' +export { default as AlertDialogHeader } from './AlertDialogHeader.vue' +export { default as AlertDialogTitle } from './AlertDialogTitle.vue' +export { default as AlertDialogTrigger } from './AlertDialogTrigger.vue' diff --git a/app/components/pub/ui/alert/Alert.vue b/app/components/pub/ui/alert/Alert.vue new file mode 100644 index 00000000..f23fe2fa --- /dev/null +++ b/app/components/pub/ui/alert/Alert.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/alert/AlertDescription.vue b/app/components/pub/ui/alert/AlertDescription.vue new file mode 100644 index 00000000..2971a877 --- /dev/null +++ b/app/components/pub/ui/alert/AlertDescription.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/alert/AlertTitle.vue b/app/components/pub/ui/alert/AlertTitle.vue new file mode 100644 index 00000000..e28dd37e --- /dev/null +++ b/app/components/pub/ui/alert/AlertTitle.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/alert/index.ts b/app/components/pub/ui/alert/index.ts new file mode 100644 index 00000000..36bf919b --- /dev/null +++ b/app/components/pub/ui/alert/index.ts @@ -0,0 +1,24 @@ +import type { VariantProps } from 'class-variance-authority' +import { cva } from 'class-variance-authority' + +export { default as Alert } from './Alert.vue' +export { default as AlertDescription } from './AlertDescription.vue' +export { default as AlertTitle } from './AlertTitle.vue' + +export const alertVariants = cva( + 'relative w-full rounded-lg border px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground', + { + variants: { + variant: { + default: 'bg-background text-foreground', + destructive: + 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, +) + +export type AlertVariants = VariantProps diff --git a/app/components/pub/ui/aspect-ratio/AspectRatio.vue b/app/components/pub/ui/aspect-ratio/AspectRatio.vue new file mode 100644 index 00000000..69ad8fef --- /dev/null +++ b/app/components/pub/ui/aspect-ratio/AspectRatio.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/aspect-ratio/index.ts b/app/components/pub/ui/aspect-ratio/index.ts new file mode 100644 index 00000000..3faf121c --- /dev/null +++ b/app/components/pub/ui/aspect-ratio/index.ts @@ -0,0 +1 @@ +export { default as AspectRatio } from './AspectRatio.vue' diff --git a/app/components/pub/ui/avatar/Avatar.vue b/app/components/pub/ui/avatar/Avatar.vue new file mode 100644 index 00000000..c6b9432e --- /dev/null +++ b/app/components/pub/ui/avatar/Avatar.vue @@ -0,0 +1,22 @@ + + + diff --git a/app/components/pub/ui/avatar/AvatarFallback.vue b/app/components/pub/ui/avatar/AvatarFallback.vue new file mode 100644 index 00000000..1ac23e62 --- /dev/null +++ b/app/components/pub/ui/avatar/AvatarFallback.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/avatar/AvatarImage.vue b/app/components/pub/ui/avatar/AvatarImage.vue new file mode 100644 index 00000000..6ef58f74 --- /dev/null +++ b/app/components/pub/ui/avatar/AvatarImage.vue @@ -0,0 +1,10 @@ + + + diff --git a/app/components/pub/ui/avatar/index.ts b/app/components/pub/ui/avatar/index.ts new file mode 100644 index 00000000..d26e9112 --- /dev/null +++ b/app/components/pub/ui/avatar/index.ts @@ -0,0 +1,25 @@ +import type { VariantProps } from 'class-variance-authority' +import { cva } from 'class-variance-authority' + +export { default as Avatar } from './Avatar.vue' +export { default as AvatarFallback } from './AvatarFallback.vue' +export { default as AvatarImage } from './AvatarImage.vue' + +export const avatarVariant = cva( + 'inline-flex items-center justify-center font-normal text-foreground select-none shrink-0 bg-secondary overflow-hidden', + { + variants: { + size: { + sm: 'h-10 w-10 text-xs', + base: 'h-16 w-16 text-2xl', + lg: 'h-32 w-32 text-5xl', + }, + shape: { + circle: 'rounded-full', + square: 'rounded-md', + }, + }, + }, +) + +export type AvatarVariants = VariantProps diff --git a/app/components/pub/ui/badge/Badge.vue b/app/components/pub/ui/badge/Badge.vue new file mode 100644 index 00000000..c811fdbe --- /dev/null +++ b/app/components/pub/ui/badge/Badge.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/badge/index.ts b/app/components/pub/ui/badge/index.ts new file mode 100644 index 00000000..4f3e6d83 --- /dev/null +++ b/app/components/pub/ui/badge/index.ts @@ -0,0 +1,26 @@ +import type { VariantProps } from 'class-variance-authority' +import { cva } from 'class-variance-authority' + +export { default as Badge } from './Badge.vue' + +export const badgeVariants = cva( + 'inline-flex items-center rounded-md 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', + { + variants: { + variant: { + default: + 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80', + secondary: + 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80', + destructive: + 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80', + outline: 'text-foreground', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, +) + +export type BadgeVariants = VariantProps diff --git a/app/components/pub/ui/breadcrumb/Breadcrumb.vue b/app/components/pub/ui/breadcrumb/Breadcrumb.vue new file mode 100644 index 00000000..72ca1437 --- /dev/null +++ b/app/components/pub/ui/breadcrumb/Breadcrumb.vue @@ -0,0 +1,13 @@ + + + diff --git a/app/components/pub/ui/breadcrumb/BreadcrumbEllipsis.vue b/app/components/pub/ui/breadcrumb/BreadcrumbEllipsis.vue new file mode 100644 index 00000000..cfccf9fe --- /dev/null +++ b/app/components/pub/ui/breadcrumb/BreadcrumbEllipsis.vue @@ -0,0 +1,22 @@ + + + diff --git a/app/components/pub/ui/breadcrumb/BreadcrumbItem.vue b/app/components/pub/ui/breadcrumb/BreadcrumbItem.vue new file mode 100644 index 00000000..42e721cd --- /dev/null +++ b/app/components/pub/ui/breadcrumb/BreadcrumbItem.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/pub/ui/breadcrumb/BreadcrumbLink.vue b/app/components/pub/ui/breadcrumb/BreadcrumbLink.vue new file mode 100644 index 00000000..5d301fb8 --- /dev/null +++ b/app/components/pub/ui/breadcrumb/BreadcrumbLink.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/breadcrumb/BreadcrumbList.vue b/app/components/pub/ui/breadcrumb/BreadcrumbList.vue new file mode 100644 index 00000000..60856cc4 --- /dev/null +++ b/app/components/pub/ui/breadcrumb/BreadcrumbList.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/pub/ui/breadcrumb/BreadcrumbPage.vue b/app/components/pub/ui/breadcrumb/BreadcrumbPage.vue new file mode 100644 index 00000000..fe43bda6 --- /dev/null +++ b/app/components/pub/ui/breadcrumb/BreadcrumbPage.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/breadcrumb/BreadcrumbSeparator.vue b/app/components/pub/ui/breadcrumb/BreadcrumbSeparator.vue new file mode 100644 index 00000000..8b56104b --- /dev/null +++ b/app/components/pub/ui/breadcrumb/BreadcrumbSeparator.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/breadcrumb/index.ts b/app/components/pub/ui/breadcrumb/index.ts new file mode 100644 index 00000000..05909832 --- /dev/null +++ b/app/components/pub/ui/breadcrumb/index.ts @@ -0,0 +1,7 @@ +export { default as Breadcrumb } from './Breadcrumb.vue' +export { default as BreadcrumbEllipsis } from './BreadcrumbEllipsis.vue' +export { default as BreadcrumbItem } from './BreadcrumbItem.vue' +export { default as BreadcrumbLink } from './BreadcrumbLink.vue' +export { default as BreadcrumbList } from './BreadcrumbList.vue' +export { default as BreadcrumbPage } from './BreadcrumbPage.vue' +export { default as BreadcrumbSeparator } from './BreadcrumbSeparator.vue' diff --git a/app/components/pub/ui/button/Button.vue b/app/components/pub/ui/button/Button.vue new file mode 100644 index 00000000..1195f80f --- /dev/null +++ b/app/components/pub/ui/button/Button.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/pub/ui/button/index.ts b/app/components/pub/ui/button/index.ts new file mode 100644 index 00000000..4a3a7eb4 --- /dev/null +++ b/app/components/pub/ui/button/index.ts @@ -0,0 +1,36 @@ +import type { VariantProps } from 'class-variance-authority' +import { cva } from 'class-variance-authority' + +export { default as Button } from './Button.vue' + +export const buttonVariants = cva( + 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50', + { + variants: { + variant: { + default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90', + destructive: + 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90', + outline: + 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground', + secondary: + 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2', + xs: 'h-7 rounded px-2 text-xs', + sm: 'h-8 rounded-md px-3 text-xs', + lg: 'h-10 rounded-md px-8', + icon: 'h-9 w-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +) + +export type ButtonVariants = VariantProps diff --git a/app/components/pub/ui/calendar/Calendar.vue b/app/components/pub/ui/calendar/Calendar.vue new file mode 100644 index 00000000..faf86ff6 --- /dev/null +++ b/app/components/pub/ui/calendar/Calendar.vue @@ -0,0 +1,62 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarCell.vue b/app/components/pub/ui/calendar/CalendarCell.vue new file mode 100644 index 00000000..cfbfb88b --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarCell.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarCellTrigger.vue b/app/components/pub/ui/calendar/CalendarCellTrigger.vue new file mode 100644 index 00000000..b8ae8e53 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarCellTrigger.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarGrid.vue b/app/components/pub/ui/calendar/CalendarGrid.vue new file mode 100644 index 00000000..9f8fa7f4 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarGrid.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarGridBody.vue b/app/components/pub/ui/calendar/CalendarGridBody.vue new file mode 100644 index 00000000..ab24c1e4 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarGridBody.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarGridHead.vue b/app/components/pub/ui/calendar/CalendarGridHead.vue new file mode 100644 index 00000000..2f3025d0 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarGridHead.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarGridRow.vue b/app/components/pub/ui/calendar/CalendarGridRow.vue new file mode 100644 index 00000000..5310a3c7 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarGridRow.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarHeadCell.vue b/app/components/pub/ui/calendar/CalendarHeadCell.vue new file mode 100644 index 00000000..95f773f8 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarHeadCell.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarHeader.vue b/app/components/pub/ui/calendar/CalendarHeader.vue new file mode 100644 index 00000000..50255fe2 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarHeader.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarHeading.vue b/app/components/pub/ui/calendar/CalendarHeading.vue new file mode 100644 index 00000000..ca5bfb58 --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarHeading.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarNextButton.vue b/app/components/pub/ui/calendar/CalendarNextButton.vue new file mode 100644 index 00000000..0297b15d --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarNextButton.vue @@ -0,0 +1,33 @@ + + + diff --git a/app/components/pub/ui/calendar/CalendarPrevButton.vue b/app/components/pub/ui/calendar/CalendarPrevButton.vue new file mode 100644 index 00000000..9cde027e --- /dev/null +++ b/app/components/pub/ui/calendar/CalendarPrevButton.vue @@ -0,0 +1,33 @@ + + + diff --git a/app/components/pub/ui/calendar/index.ts b/app/components/pub/ui/calendar/index.ts new file mode 100644 index 00000000..5239a1bd --- /dev/null +++ b/app/components/pub/ui/calendar/index.ts @@ -0,0 +1,12 @@ +export { default as Calendar } from './Calendar.vue' +export { default as CalendarCell } from './CalendarCell.vue' +export { default as CalendarCellTrigger } from './CalendarCellTrigger.vue' +export { default as CalendarGrid } from './CalendarGrid.vue' +export { default as CalendarGridBody } from './CalendarGridBody.vue' +export { default as CalendarGridHead } from './CalendarGridHead.vue' +export { default as CalendarGridRow } from './CalendarGridRow.vue' +export { default as CalendarHeadCell } from './CalendarHeadCell.vue' +export { default as CalendarHeader } from './CalendarHeader.vue' +export { default as CalendarHeading } from './CalendarHeading.vue' +export { default as CalendarNextButton } from './CalendarNextButton.vue' +export { default as CalendarPrevButton } from './CalendarPrevButton.vue' diff --git a/app/components/pub/ui/card/Card.vue b/app/components/pub/ui/card/Card.vue new file mode 100644 index 00000000..94b69033 --- /dev/null +++ b/app/components/pub/ui/card/Card.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/card/CardContent.vue b/app/components/pub/ui/card/CardContent.vue new file mode 100644 index 00000000..785913a1 --- /dev/null +++ b/app/components/pub/ui/card/CardContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/card/CardDescription.vue b/app/components/pub/ui/card/CardDescription.vue new file mode 100644 index 00000000..d5faedd5 --- /dev/null +++ b/app/components/pub/ui/card/CardDescription.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/card/CardFooter.vue b/app/components/pub/ui/card/CardFooter.vue new file mode 100644 index 00000000..1ed2efe5 --- /dev/null +++ b/app/components/pub/ui/card/CardFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/card/CardHeader.vue b/app/components/pub/ui/card/CardHeader.vue new file mode 100644 index 00000000..951d227e --- /dev/null +++ b/app/components/pub/ui/card/CardHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/card/CardTitle.vue b/app/components/pub/ui/card/CardTitle.vue new file mode 100644 index 00000000..fc302e25 --- /dev/null +++ b/app/components/pub/ui/card/CardTitle.vue @@ -0,0 +1,18 @@ + + + diff --git a/app/components/pub/ui/card/index.ts b/app/components/pub/ui/card/index.ts new file mode 100644 index 00000000..9ff6d5e7 --- /dev/null +++ b/app/components/pub/ui/card/index.ts @@ -0,0 +1,6 @@ +export { default as Card } from './Card.vue' +export { default as CardContent } from './CardContent.vue' +export { default as CardDescription } from './CardDescription.vue' +export { default as CardFooter } from './CardFooter.vue' +export { default as CardHeader } from './CardHeader.vue' +export { default as CardTitle } from './CardTitle.vue' diff --git a/app/components/pub/ui/carousel/Carousel.vue b/app/components/pub/ui/carousel/Carousel.vue new file mode 100644 index 00000000..0a5551f1 --- /dev/null +++ b/app/components/pub/ui/carousel/Carousel.vue @@ -0,0 +1,44 @@ + + + diff --git a/app/components/pub/ui/carousel/CarouselContent.vue b/app/components/pub/ui/carousel/CarouselContent.vue new file mode 100644 index 00000000..6b40f14a --- /dev/null +++ b/app/components/pub/ui/carousel/CarouselContent.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/components/pub/ui/carousel/CarouselItem.vue b/app/components/pub/ui/carousel/CarouselItem.vue new file mode 100644 index 00000000..9c168237 --- /dev/null +++ b/app/components/pub/ui/carousel/CarouselItem.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/carousel/CarouselNext.vue b/app/components/pub/ui/carousel/CarouselNext.vue new file mode 100644 index 00000000..687a5773 --- /dev/null +++ b/app/components/pub/ui/carousel/CarouselNext.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/carousel/CarouselPrevious.vue b/app/components/pub/ui/carousel/CarouselPrevious.vue new file mode 100644 index 00000000..c8440e41 --- /dev/null +++ b/app/components/pub/ui/carousel/CarouselPrevious.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/carousel/index.ts b/app/components/pub/ui/carousel/index.ts new file mode 100644 index 00000000..c37ad02d --- /dev/null +++ b/app/components/pub/ui/carousel/index.ts @@ -0,0 +1,10 @@ +export { default as Carousel } from './Carousel.vue' +export { default as CarouselContent } from './CarouselContent.vue' +export { default as CarouselItem } from './CarouselItem.vue' +export { default as CarouselNext } from './CarouselNext.vue' +export { default as CarouselPrevious } from './CarouselPrevious.vue' +export { useCarousel } from './useCarousel' + +export type { + EmblaCarouselType as CarouselApi, +} from 'embla-carousel' diff --git a/app/components/pub/ui/carousel/interface.ts b/app/components/pub/ui/carousel/interface.ts new file mode 100644 index 00000000..99c4f1a8 --- /dev/null +++ b/app/components/pub/ui/carousel/interface.ts @@ -0,0 +1,20 @@ +import type { + EmblaCarouselType as CarouselApi, + EmblaOptionsType as CarouselOptions, + EmblaPluginType as CarouselPlugin, +} from 'embla-carousel' +import type { HTMLAttributes, Ref } from 'vue' + +export interface CarouselProps { + opts?: CarouselOptions | Ref + plugins?: CarouselPlugin[] | Ref + orientation?: 'horizontal' | 'vertical' +} + +export interface CarouselEmits { + (e: 'init-api', payload: CarouselApi): void +} + +export interface WithClassAsProps { + class?: HTMLAttributes['class'] +} diff --git a/app/components/pub/ui/carousel/useCarousel.ts b/app/components/pub/ui/carousel/useCarousel.ts new file mode 100644 index 00000000..4fb58ddd --- /dev/null +++ b/app/components/pub/ui/carousel/useCarousel.ts @@ -0,0 +1,59 @@ +import type { + EmblaCarouselType as CarouselApi, +} from 'embla-carousel' +import type { CarouselEmits, CarouselProps } from './interface' +import { createInjectionState } from '@vueuse/core' +import emblaCarouselVue from 'embla-carousel-vue' +import { onMounted, ref } from 'vue' + +const [useProvideCarousel, useInjectCarousel] = createInjectionState( + ({ + opts, + orientation, + plugins, + }: CarouselProps, emits: CarouselEmits) => { + const [emblaNode, emblaApi] = emblaCarouselVue({ + ...opts, + axis: orientation === 'horizontal' ? 'x' : 'y', + }, plugins) + + function scrollPrev() { + emblaApi.value?.scrollPrev() + } + function scrollNext() { + emblaApi.value?.scrollNext() + } + + const canScrollNext = ref(true) + const canScrollPrev = ref(true) + + function onSelect(api: CarouselApi) { + canScrollNext.value = api.canScrollNext() + canScrollPrev.value = api.canScrollPrev() + } + + onMounted(() => { + if (!emblaApi.value) + return + + emblaApi.value?.on('init', onSelect) + emblaApi.value?.on('reInit', onSelect) + emblaApi.value?.on('select', onSelect) + + emits('init-api', emblaApi.value) + }) + + return { carouselRef: emblaNode, carouselApi: emblaApi, canScrollPrev, canScrollNext, scrollPrev, scrollNext, orientation } + }, +) + +function useCarousel() { + const carouselState = useInjectCarousel() + + if (!carouselState) + throw new Error('useCarousel must be used within a ') + + return carouselState +} + +export { useCarousel, useProvideCarousel } diff --git a/app/components/pub/ui/chart-area/AreaChart.vue b/app/components/pub/ui/chart-area/AreaChart.vue new file mode 100644 index 00000000..cf219519 --- /dev/null +++ b/app/components/pub/ui/chart-area/AreaChart.vue @@ -0,0 +1,137 @@ + + + diff --git a/app/components/pub/ui/chart-area/index.ts b/app/components/pub/ui/chart-area/index.ts new file mode 100644 index 00000000..2415a56c --- /dev/null +++ b/app/components/pub/ui/chart-area/index.ts @@ -0,0 +1,66 @@ +import type { Spacing } from '@unovis/ts' + +export { default as AreaChart } from './AreaChart.vue' + +type KeyOf> = Extract + +export interface BaseChartProps> { + /** + * The source data, in which each entry is a dictionary. + */ + data: T[] + /** + * Select the categories from your data. Used to populate the legend and toolip. + */ + categories: KeyOf[] + /** + * Sets the key to map the data to the axis. + */ + index: KeyOf + /** + * Change the default colors. + */ + colors?: string[] + /** + * Margin of each the container + */ + margin?: Spacing + /** + * Change the opacity of the non-selected field + * @default 0.2 + */ + filterOpacity?: number + /** + * Function to format X label + */ + xFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Function to format Y label + */ + yFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Controls the visibility of the X axis. + * @default true + */ + showXAxis?: boolean + /** + * Controls the visibility of the Y axis. + * @default true + */ + showYAxis?: boolean + /** + * Controls the visibility of tooltip. + * @default true + */ + showTooltip?: boolean + /** + * Controls the visibility of legend. + * @default true + */ + showLegend?: boolean + /** + * Controls the visibility of gridline. + * @default true + */ + showGridLine?: boolean +} diff --git a/app/components/pub/ui/chart-bar/BarChart.vue b/app/components/pub/ui/chart-bar/BarChart.vue new file mode 100644 index 00000000..b0d18b7e --- /dev/null +++ b/app/components/pub/ui/chart-bar/BarChart.vue @@ -0,0 +1,116 @@ + + + diff --git a/app/components/pub/ui/chart-bar/index.ts b/app/components/pub/ui/chart-bar/index.ts new file mode 100644 index 00000000..762f2ce3 --- /dev/null +++ b/app/components/pub/ui/chart-bar/index.ts @@ -0,0 +1,66 @@ +import type { Spacing } from '@unovis/ts' + +export { default as BarChart } from './BarChart.vue' + +type KeyOf> = Extract + +export interface BaseChartProps> { + /** + * The source data, in which each entry is a dictionary. + */ + data: T[] + /** + * Select the categories from your data. Used to populate the legend and toolip. + */ + categories: KeyOf[] + /** + * Sets the key to map the data to the axis. + */ + index: KeyOf + /** + * Change the default colors. + */ + colors?: string[] + /** + * Margin of each the container + */ + margin?: Spacing + /** + * Change the opacity of the non-selected field + * @default 0.2 + */ + filterOpacity?: number + /** + * Function to format X label + */ + xFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Function to format Y label + */ + yFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Controls the visibility of the X axis. + * @default true + */ + showXAxis?: boolean + /** + * Controls the visibility of the Y axis. + * @default true + */ + showYAxis?: boolean + /** + * Controls the visibility of tooltip. + * @default true + */ + showTooltip?: boolean + /** + * Controls the visibility of legend. + * @default true + */ + showLegend?: boolean + /** + * Controls the visibility of gridline. + * @default true + */ + showGridLine?: boolean +} diff --git a/app/components/pub/ui/chart-donut/DonutChart.vue b/app/components/pub/ui/chart-donut/DonutChart.vue new file mode 100644 index 00000000..ddf1889b --- /dev/null +++ b/app/components/pub/ui/chart-donut/DonutChart.vue @@ -0,0 +1,101 @@ + + + diff --git a/app/components/pub/ui/chart-donut/index.ts b/app/components/pub/ui/chart-donut/index.ts new file mode 100644 index 00000000..db2b49d0 --- /dev/null +++ b/app/components/pub/ui/chart-donut/index.ts @@ -0,0 +1,39 @@ +import type { Spacing } from '@unovis/ts' + +export { default as DonutChart } from './DonutChart.vue' + +type KeyOf> = Extract + +export interface BaseChartProps> { + /** + * The source data, in which each entry is a dictionary. + */ + data: T[] + /** + * Sets the key to map the data to the axis. + */ + index: KeyOf + /** + * Change the default colors. + */ + colors?: string[] + /** + * Margin of each the container + */ + margin?: Spacing + /** + * Change the opacity of the non-selected field + * @default 0.2 + */ + filterOpacity?: number + /** + * Controls the visibility of tooltip. + * @default true + */ + showTooltip?: boolean + /** + * Controls the visibility of legend. + * @default true + */ + showLegend?: boolean +} diff --git a/app/components/pub/ui/chart-line/LineChart.vue b/app/components/pub/ui/chart-line/LineChart.vue new file mode 100644 index 00000000..a269b2cb --- /dev/null +++ b/app/components/pub/ui/chart-line/LineChart.vue @@ -0,0 +1,106 @@ + + + diff --git a/app/components/pub/ui/chart-line/index.ts b/app/components/pub/ui/chart-line/index.ts new file mode 100644 index 00000000..1078d270 --- /dev/null +++ b/app/components/pub/ui/chart-line/index.ts @@ -0,0 +1,66 @@ +import type { Spacing } from '@unovis/ts' + +export { default as LineChart } from './LineChart.vue' + +type KeyOf> = Extract + +export interface BaseChartProps> { + /** + * The source data, in which each entry is a dictionary. + */ + data: T[] + /** + * Select the categories from your data. Used to populate the legend and toolip. + */ + categories: KeyOf[] + /** + * Sets the key to map the data to the axis. + */ + index: KeyOf + /** + * Change the default colors. + */ + colors?: string[] + /** + * Margin of each the container + */ + margin?: Spacing + /** + * Change the opacity of the non-selected field + * @default 0.2 + */ + filterOpacity?: number + /** + * Function to format X label + */ + xFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Function to format Y label + */ + yFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Controls the visibility of the X axis. + * @default true + */ + showXAxis?: boolean + /** + * Controls the visibility of the Y axis. + * @default true + */ + showYAxis?: boolean + /** + * Controls the visibility of tooltip. + * @default true + */ + showTooltip?: boolean + /** + * Controls the visibility of legend. + * @default true + */ + showLegend?: boolean + /** + * Controls the visibility of gridline. + * @default true + */ + showGridLine?: boolean +} diff --git a/app/components/pub/ui/chart/ChartCrosshair.vue b/app/components/pub/ui/chart/ChartCrosshair.vue new file mode 100644 index 00000000..f49600f6 --- /dev/null +++ b/app/components/pub/ui/chart/ChartCrosshair.vue @@ -0,0 +1,45 @@ + + + diff --git a/app/components/pub/ui/chart/ChartLegend.vue b/app/components/pub/ui/chart/ChartLegend.vue new file mode 100644 index 00000000..225adc94 --- /dev/null +++ b/app/components/pub/ui/chart/ChartLegend.vue @@ -0,0 +1,50 @@ + + + diff --git a/app/components/pub/ui/chart/ChartSingleTooltip.vue b/app/components/pub/ui/chart/ChartSingleTooltip.vue new file mode 100644 index 00000000..17594762 --- /dev/null +++ b/app/components/pub/ui/chart/ChartSingleTooltip.vue @@ -0,0 +1,66 @@ + + + diff --git a/app/components/pub/ui/chart/ChartTooltip.vue b/app/components/pub/ui/chart/ChartTooltip.vue new file mode 100644 index 00000000..24907f5f --- /dev/null +++ b/app/components/pub/ui/chart/ChartTooltip.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/components/pub/ui/chart/index.ts b/app/components/pub/ui/chart/index.ts new file mode 100644 index 00000000..7426ca17 --- /dev/null +++ b/app/components/pub/ui/chart/index.ts @@ -0,0 +1,18 @@ +export { default as ChartCrosshair } from './ChartCrosshair.vue' +export { default as ChartLegend } from './ChartLegend.vue' +export { default as ChartSingleTooltip } from './ChartSingleTooltip.vue' +export { default as ChartTooltip } from './ChartTooltip.vue' + +export function defaultColors(count: number = 3) { + const quotient = Math.floor(count / 2) + const remainder = count % 2 + + const primaryCount = quotient + remainder + const secondaryCount = quotient + return [ + ...Array.from(Array.from({ length: primaryCount }).keys()).map(i => `hsl(var(--primary) / ${1 - (1 / primaryCount) * i})`), + ...Array.from(Array.from({ length: secondaryCount }).keys()).map(i => `hsl(var(--vis-secondary-color) / ${1 - (1 / secondaryCount) * i})`), + ] +} + +export * from './interface' diff --git a/app/components/pub/ui/chart/interface.ts b/app/components/pub/ui/chart/interface.ts new file mode 100644 index 00000000..c3838afc --- /dev/null +++ b/app/components/pub/ui/chart/interface.ts @@ -0,0 +1,64 @@ +import type { Spacing } from '@unovis/ts' + +type KeyOf> = Extract + +export interface BaseChartProps> { + /** + * The source data, in which each entry is a dictionary. + */ + data: T[] + /** + * Select the categories from your data. Used to populate the legend and toolip. + */ + categories: KeyOf[] + /** + * Sets the key to map the data to the axis. + */ + index: KeyOf + /** + * Change the default colors. + */ + colors?: string[] + /** + * Margin of each the container + */ + margin?: Spacing + /** + * Change the opacity of the non-selected field + * @default 0.2 + */ + filterOpacity?: number + /** + * Function to format X label + */ + xFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Function to format Y label + */ + yFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string + /** + * Controls the visibility of the X axis. + * @default true + */ + showXAxis?: boolean + /** + * Controls the visibility of the Y axis. + * @default true + */ + showYAxis?: boolean + /** + * Controls the visibility of tooltip. + * @default true + */ + showTooltip?: boolean + /** + * Controls the visibility of legend. + * @default true + */ + showLegend?: boolean + /** + * Controls the visibility of gridline. + * @default true + */ + showGridLine?: boolean +} diff --git a/app/components/pub/ui/checkbox/Checkbox.vue b/app/components/pub/ui/checkbox/Checkbox.vue new file mode 100644 index 00000000..c846eae0 --- /dev/null +++ b/app/components/pub/ui/checkbox/Checkbox.vue @@ -0,0 +1,33 @@ + + + diff --git a/app/components/pub/ui/checkbox/index.ts b/app/components/pub/ui/checkbox/index.ts new file mode 100644 index 00000000..8c28c286 --- /dev/null +++ b/app/components/pub/ui/checkbox/index.ts @@ -0,0 +1 @@ +export { default as Checkbox } from './Checkbox.vue' diff --git a/app/components/pub/ui/collapsible/Collapsible.vue b/app/components/pub/ui/collapsible/Collapsible.vue new file mode 100644 index 00000000..fae7919c --- /dev/null +++ b/app/components/pub/ui/collapsible/Collapsible.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/collapsible/CollapsibleContent.vue b/app/components/pub/ui/collapsible/CollapsibleContent.vue new file mode 100644 index 00000000..5c82af24 --- /dev/null +++ b/app/components/pub/ui/collapsible/CollapsibleContent.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/collapsible/CollapsibleTrigger.vue b/app/components/pub/ui/collapsible/CollapsibleTrigger.vue new file mode 100644 index 00000000..e3074994 --- /dev/null +++ b/app/components/pub/ui/collapsible/CollapsibleTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/collapsible/index.ts b/app/components/pub/ui/collapsible/index.ts new file mode 100644 index 00000000..abab9567 --- /dev/null +++ b/app/components/pub/ui/collapsible/index.ts @@ -0,0 +1,3 @@ +export { default as Collapsible } from './Collapsible.vue' +export { default as CollapsibleContent } from './CollapsibleContent.vue' +export { default as CollapsibleTrigger } from './CollapsibleTrigger.vue' diff --git a/app/components/pub/ui/command/Command.vue b/app/components/pub/ui/command/Command.vue new file mode 100644 index 00000000..dda41937 --- /dev/null +++ b/app/components/pub/ui/command/Command.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/pub/ui/command/CommandDialog.vue b/app/components/pub/ui/command/CommandDialog.vue new file mode 100644 index 00000000..efe417df --- /dev/null +++ b/app/components/pub/ui/command/CommandDialog.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/command/CommandEmpty.vue b/app/components/pub/ui/command/CommandEmpty.vue new file mode 100644 index 00000000..21368efa --- /dev/null +++ b/app/components/pub/ui/command/CommandEmpty.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/command/CommandGroup.vue b/app/components/pub/ui/command/CommandGroup.vue new file mode 100644 index 00000000..eaca02de --- /dev/null +++ b/app/components/pub/ui/command/CommandGroup.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/command/CommandInput.vue b/app/components/pub/ui/command/CommandInput.vue new file mode 100644 index 00000000..e2e2b1d0 --- /dev/null +++ b/app/components/pub/ui/command/CommandInput.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/command/CommandItem.vue b/app/components/pub/ui/command/CommandItem.vue new file mode 100644 index 00000000..adca1fef --- /dev/null +++ b/app/components/pub/ui/command/CommandItem.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/command/CommandList.vue b/app/components/pub/ui/command/CommandList.vue new file mode 100644 index 00000000..d540cf08 --- /dev/null +++ b/app/components/pub/ui/command/CommandList.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/pub/ui/command/CommandSeparator.vue b/app/components/pub/ui/command/CommandSeparator.vue new file mode 100644 index 00000000..9000939f --- /dev/null +++ b/app/components/pub/ui/command/CommandSeparator.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/command/CommandShortcut.vue b/app/components/pub/ui/command/CommandShortcut.vue new file mode 100644 index 00000000..0d4da921 --- /dev/null +++ b/app/components/pub/ui/command/CommandShortcut.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/command/index.ts b/app/components/pub/ui/command/index.ts new file mode 100644 index 00000000..0e35f4b9 --- /dev/null +++ b/app/components/pub/ui/command/index.ts @@ -0,0 +1,9 @@ +export { default as Command } from './Command.vue' +export { default as CommandDialog } from './CommandDialog.vue' +export { default as CommandEmpty } from './CommandEmpty.vue' +export { default as CommandGroup } from './CommandGroup.vue' +export { default as CommandInput } from './CommandInput.vue' +export { default as CommandItem } from './CommandItem.vue' +export { default as CommandList } from './CommandList.vue' +export { default as CommandSeparator } from './CommandSeparator.vue' +export { default as CommandShortcut } from './CommandShortcut.vue' diff --git a/app/components/pub/ui/context-menu/ContextMenu.vue b/app/components/pub/ui/context-menu/ContextMenu.vue new file mode 100644 index 00000000..363e9c6b --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenu.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuCheckboxItem.vue b/app/components/pub/ui/context-menu/ContextMenuCheckboxItem.vue new file mode 100644 index 00000000..62f6c481 --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuCheckboxItem.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuContent.vue b/app/components/pub/ui/context-menu/ContextMenuContent.vue new file mode 100644 index 00000000..651d3b26 --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuContent.vue @@ -0,0 +1,37 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuGroup.vue b/app/components/pub/ui/context-menu/ContextMenuGroup.vue new file mode 100644 index 00000000..4dda085d --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuGroup.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuItem.vue b/app/components/pub/ui/context-menu/ContextMenuItem.vue new file mode 100644 index 00000000..1773330c --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuItem.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuLabel.vue b/app/components/pub/ui/context-menu/ContextMenuLabel.vue new file mode 100644 index 00000000..5ad9742a --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuLabel.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuPortal.vue b/app/components/pub/ui/context-menu/ContextMenuPortal.vue new file mode 100644 index 00000000..28e2192d --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuPortal.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuRadioGroup.vue b/app/components/pub/ui/context-menu/ContextMenuRadioGroup.vue new file mode 100644 index 00000000..a40feffb --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuRadioGroup.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuRadioItem.vue b/app/components/pub/ui/context-menu/ContextMenuRadioItem.vue new file mode 100644 index 00000000..05ff7bde --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuRadioItem.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuSeparator.vue b/app/components/pub/ui/context-menu/ContextMenuSeparator.vue new file mode 100644 index 00000000..c03377f9 --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuSeparator.vue @@ -0,0 +1,22 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuShortcut.vue b/app/components/pub/ui/context-menu/ContextMenuShortcut.vue new file mode 100644 index 00000000..0d4da921 --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuShortcut.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuSub.vue b/app/components/pub/ui/context-menu/ContextMenuSub.vue new file mode 100644 index 00000000..0d3c61db --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuSub.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuSubContent.vue b/app/components/pub/ui/context-menu/ContextMenuSubContent.vue new file mode 100644 index 00000000..2d7adb69 --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuSubContent.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuSubTrigger.vue b/app/components/pub/ui/context-menu/ContextMenuSubTrigger.vue new file mode 100644 index 00000000..77eeb378 --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuSubTrigger.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/pub/ui/context-menu/ContextMenuTrigger.vue b/app/components/pub/ui/context-menu/ContextMenuTrigger.vue new file mode 100644 index 00000000..136ee589 --- /dev/null +++ b/app/components/pub/ui/context-menu/ContextMenuTrigger.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/context-menu/index.ts b/app/components/pub/ui/context-menu/index.ts new file mode 100644 index 00000000..3ed59e63 --- /dev/null +++ b/app/components/pub/ui/context-menu/index.ts @@ -0,0 +1,14 @@ +export { default as ContextMenu } from './ContextMenu.vue' +export { default as ContextMenuCheckboxItem } from './ContextMenuCheckboxItem.vue' +export { default as ContextMenuContent } from './ContextMenuContent.vue' +export { default as ContextMenuGroup } from './ContextMenuGroup.vue' +export { default as ContextMenuItem } from './ContextMenuItem.vue' +export { default as ContextMenuLabel } from './ContextMenuLabel.vue' +export { default as ContextMenuRadioGroup } from './ContextMenuRadioGroup.vue' +export { default as ContextMenuRadioItem } from './ContextMenuRadioItem.vue' +export { default as ContextMenuSeparator } from './ContextMenuSeparator.vue' +export { default as ContextMenuShortcut } from './ContextMenuShortcut.vue' +export { default as ContextMenuSub } from './ContextMenuSub.vue' +export { default as ContextMenuSubContent } from './ContextMenuSubContent.vue' +export { default as ContextMenuSubTrigger } from './ContextMenuSubTrigger.vue' +export { default as ContextMenuTrigger } from './ContextMenuTrigger.vue' diff --git a/app/components/pub/ui/dialog/Dialog.vue b/app/components/pub/ui/dialog/Dialog.vue new file mode 100644 index 00000000..5f6a5632 --- /dev/null +++ b/app/components/pub/ui/dialog/Dialog.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogClose.vue b/app/components/pub/ui/dialog/DialogClose.vue new file mode 100644 index 00000000..1fa61805 --- /dev/null +++ b/app/components/pub/ui/dialog/DialogClose.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogContent.vue b/app/components/pub/ui/dialog/DialogContent.vue new file mode 100644 index 00000000..bb1842bb --- /dev/null +++ b/app/components/pub/ui/dialog/DialogContent.vue @@ -0,0 +1,51 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogDescription.vue b/app/components/pub/ui/dialog/DialogDescription.vue new file mode 100644 index 00000000..373381e0 --- /dev/null +++ b/app/components/pub/ui/dialog/DialogDescription.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogFooter.vue b/app/components/pub/ui/dialog/DialogFooter.vue new file mode 100644 index 00000000..ac2d0c18 --- /dev/null +++ b/app/components/pub/ui/dialog/DialogFooter.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogHeader.vue b/app/components/pub/ui/dialog/DialogHeader.vue new file mode 100644 index 00000000..b2c9085d --- /dev/null +++ b/app/components/pub/ui/dialog/DialogHeader.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogScrollContent.vue b/app/components/pub/ui/dialog/DialogScrollContent.vue new file mode 100644 index 00000000..15a2031e --- /dev/null +++ b/app/components/pub/ui/dialog/DialogScrollContent.vue @@ -0,0 +1,60 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogTitle.vue b/app/components/pub/ui/dialog/DialogTitle.vue new file mode 100644 index 00000000..d815c4b1 --- /dev/null +++ b/app/components/pub/ui/dialog/DialogTitle.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/pub/ui/dialog/DialogTrigger.vue b/app/components/pub/ui/dialog/DialogTrigger.vue new file mode 100644 index 00000000..b966b29d --- /dev/null +++ b/app/components/pub/ui/dialog/DialogTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/dialog/index.ts b/app/components/pub/ui/dialog/index.ts new file mode 100644 index 00000000..ca8cfeae --- /dev/null +++ b/app/components/pub/ui/dialog/index.ts @@ -0,0 +1,9 @@ +export { default as Dialog } from './Dialog.vue' +export { default as DialogClose } from './DialogClose.vue' +export { default as DialogContent } from './DialogContent.vue' +export { default as DialogDescription } from './DialogDescription.vue' +export { default as DialogFooter } from './DialogFooter.vue' +export { default as DialogHeader } from './DialogHeader.vue' +export { default as DialogScrollContent } from './DialogScrollContent.vue' +export { default as DialogTitle } from './DialogTitle.vue' +export { default as DialogTrigger } from './DialogTrigger.vue' diff --git a/app/components/pub/ui/drawer/Drawer.vue b/app/components/pub/ui/drawer/Drawer.vue new file mode 100644 index 00000000..8be66568 --- /dev/null +++ b/app/components/pub/ui/drawer/Drawer.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/drawer/DrawerContent.vue b/app/components/pub/ui/drawer/DrawerContent.vue new file mode 100644 index 00000000..9639a6f3 --- /dev/null +++ b/app/components/pub/ui/drawer/DrawerContent.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/pub/ui/drawer/DrawerDescription.vue b/app/components/pub/ui/drawer/DrawerDescription.vue new file mode 100644 index 00000000..33c01401 --- /dev/null +++ b/app/components/pub/ui/drawer/DrawerDescription.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/drawer/DrawerFooter.vue b/app/components/pub/ui/drawer/DrawerFooter.vue new file mode 100644 index 00000000..1eb35278 --- /dev/null +++ b/app/components/pub/ui/drawer/DrawerFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/drawer/DrawerHeader.vue b/app/components/pub/ui/drawer/DrawerHeader.vue new file mode 100644 index 00000000..ecef7a67 --- /dev/null +++ b/app/components/pub/ui/drawer/DrawerHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/drawer/DrawerOverlay.vue b/app/components/pub/ui/drawer/DrawerOverlay.vue new file mode 100644 index 00000000..bda38ce2 --- /dev/null +++ b/app/components/pub/ui/drawer/DrawerOverlay.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/drawer/DrawerTitle.vue b/app/components/pub/ui/drawer/DrawerTitle.vue new file mode 100644 index 00000000..04d48646 --- /dev/null +++ b/app/components/pub/ui/drawer/DrawerTitle.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/drawer/index.ts b/app/components/pub/ui/drawer/index.ts new file mode 100644 index 00000000..d41b7928 --- /dev/null +++ b/app/components/pub/ui/drawer/index.ts @@ -0,0 +1,8 @@ +export { default as Drawer } from './Drawer.vue' +export { default as DrawerContent } from './DrawerContent.vue' +export { default as DrawerDescription } from './DrawerDescription.vue' +export { default as DrawerFooter } from './DrawerFooter.vue' +export { default as DrawerHeader } from './DrawerHeader.vue' +export { default as DrawerOverlay } from './DrawerOverlay.vue' +export { default as DrawerTitle } from './DrawerTitle.vue' +export { DrawerClose, DrawerPortal, DrawerTrigger } from 'vaul-vue' diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenu.vue b/app/components/pub/ui/dropdown-menu/DropdownMenu.vue new file mode 100644 index 00000000..c9e77fe7 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenu.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuCheckboxItem.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuCheckboxItem.vue new file mode 100644 index 00000000..12d948a2 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuCheckboxItem.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuContent.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuContent.vue new file mode 100644 index 00000000..95e82df6 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuContent.vue @@ -0,0 +1,39 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuGroup.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuGroup.vue new file mode 100644 index 00000000..e9711764 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuGroup.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuItem.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuItem.vue new file mode 100644 index 00000000..234cbc87 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuItem.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuLabel.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuLabel.vue new file mode 100644 index 00000000..156e28ca --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuLabel.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuRadioGroup.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuRadioGroup.vue new file mode 100644 index 00000000..c21b27a8 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuRadioGroup.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuRadioItem.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuRadioItem.vue new file mode 100644 index 00000000..db5b802d --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuRadioItem.vue @@ -0,0 +1,42 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuSeparator.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuSeparator.vue new file mode 100644 index 00000000..6bb639e1 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuSeparator.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuShortcut.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuShortcut.vue new file mode 100644 index 00000000..abaeda64 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuShortcut.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuSub.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuSub.vue new file mode 100644 index 00000000..af6bac43 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuSub.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuSubContent.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuSubContent.vue new file mode 100644 index 00000000..0cba446a --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuSubContent.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuSubTrigger.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuSubTrigger.vue new file mode 100644 index 00000000..fdb058e7 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuSubTrigger.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/DropdownMenuTrigger.vue b/app/components/pub/ui/dropdown-menu/DropdownMenuTrigger.vue new file mode 100644 index 00000000..baf0f7c0 --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/DropdownMenuTrigger.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/dropdown-menu/index.ts b/app/components/pub/ui/dropdown-menu/index.ts new file mode 100644 index 00000000..6011f35c --- /dev/null +++ b/app/components/pub/ui/dropdown-menu/index.ts @@ -0,0 +1,16 @@ +export { default as DropdownMenu } from './DropdownMenu.vue' + +export { default as DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem.vue' +export { default as DropdownMenuContent } from './DropdownMenuContent.vue' +export { default as DropdownMenuGroup } from './DropdownMenuGroup.vue' +export { default as DropdownMenuItem } from './DropdownMenuItem.vue' +export { default as DropdownMenuLabel } from './DropdownMenuLabel.vue' +export { default as DropdownMenuRadioGroup } from './DropdownMenuRadioGroup.vue' +export { default as DropdownMenuRadioItem } from './DropdownMenuRadioItem.vue' +export { default as DropdownMenuSeparator } from './DropdownMenuSeparator.vue' +export { default as DropdownMenuShortcut } from './DropdownMenuShortcut.vue' +export { default as DropdownMenuSub } from './DropdownMenuSub.vue' +export { default as DropdownMenuSubContent } from './DropdownMenuSubContent.vue' +export { default as DropdownMenuSubTrigger } from './DropdownMenuSubTrigger.vue' +export { default as DropdownMenuTrigger } from './DropdownMenuTrigger.vue' +export { DropdownMenuPortal } from 'radix-vue' diff --git a/app/components/pub/ui/form/FormControl.vue b/app/components/pub/ui/form/FormControl.vue new file mode 100644 index 00000000..ca813eab --- /dev/null +++ b/app/components/pub/ui/form/FormControl.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/form/FormDescription.vue b/app/components/pub/ui/form/FormDescription.vue new file mode 100644 index 00000000..93000660 --- /dev/null +++ b/app/components/pub/ui/form/FormDescription.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/form/FormItem.vue b/app/components/pub/ui/form/FormItem.vue new file mode 100644 index 00000000..a4c1e8df --- /dev/null +++ b/app/components/pub/ui/form/FormItem.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/form/FormLabel.vue b/app/components/pub/ui/form/FormLabel.vue new file mode 100644 index 00000000..05a51929 --- /dev/null +++ b/app/components/pub/ui/form/FormLabel.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/form/FormMessage.vue b/app/components/pub/ui/form/FormMessage.vue new file mode 100644 index 00000000..98dd4fc7 --- /dev/null +++ b/app/components/pub/ui/form/FormMessage.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/pub/ui/form/index.ts b/app/components/pub/ui/form/index.ts new file mode 100644 index 00000000..1a3be118 --- /dev/null +++ b/app/components/pub/ui/form/index.ts @@ -0,0 +1,7 @@ +export { default as FormControl } from './FormControl.vue' +export { default as FormDescription } from './FormDescription.vue' +export { default as FormItem } from './FormItem.vue' +export { default as FormLabel } from './FormLabel.vue' +export { default as FormMessage } from './FormMessage.vue' +export { FORM_ITEM_INJECTION_KEY } from './injectionKeys' +export { Form, Field as FormField, FieldArray as FormFieldArray } from 'vee-validate' diff --git a/app/components/pub/ui/form/injectionKeys.ts b/app/components/pub/ui/form/injectionKeys.ts new file mode 100644 index 00000000..5b9ee8f6 --- /dev/null +++ b/app/components/pub/ui/form/injectionKeys.ts @@ -0,0 +1,3 @@ +import type { InjectionKey } from 'vue' + +export const FORM_ITEM_INJECTION_KEY = Symbol('id') as InjectionKey diff --git a/app/components/pub/ui/form/useFormField.ts b/app/components/pub/ui/form/useFormField.ts new file mode 100644 index 00000000..2da133b8 --- /dev/null +++ b/app/components/pub/ui/form/useFormField.ts @@ -0,0 +1,29 @@ +import { FieldContextKey, useFieldError, useIsFieldDirty, useIsFieldTouched, useIsFieldValid } from 'vee-validate' +import { inject } from 'vue' +import { FORM_ITEM_INJECTION_KEY } from './injectionKeys' + +export function useFormField() { + const fieldContext = inject(FieldContextKey) + const fieldItemContext = inject(FORM_ITEM_INJECTION_KEY) + const fieldState = { + valid: useIsFieldValid(), + isDirty: useIsFieldDirty(), + isTouched: useIsFieldTouched(), + error: useFieldError(), + } + + if (!fieldContext) + throw new Error('useFormField should be used within ') + + const { name } = fieldContext + const id = fieldItemContext + + return { + id, + name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + } +} diff --git a/app/components/pub/ui/hover-card/HoverCard.vue b/app/components/pub/ui/hover-card/HoverCard.vue new file mode 100644 index 00000000..ef13ea57 --- /dev/null +++ b/app/components/pub/ui/hover-card/HoverCard.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/hover-card/HoverCardContent.vue b/app/components/pub/ui/hover-card/HoverCardContent.vue new file mode 100644 index 00000000..f35e3809 --- /dev/null +++ b/app/components/pub/ui/hover-card/HoverCardContent.vue @@ -0,0 +1,43 @@ + + + diff --git a/app/components/pub/ui/hover-card/HoverCardTrigger.vue b/app/components/pub/ui/hover-card/HoverCardTrigger.vue new file mode 100644 index 00000000..b3907564 --- /dev/null +++ b/app/components/pub/ui/hover-card/HoverCardTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/hover-card/index.ts b/app/components/pub/ui/hover-card/index.ts new file mode 100644 index 00000000..9e4ccc2a --- /dev/null +++ b/app/components/pub/ui/hover-card/index.ts @@ -0,0 +1,3 @@ +export { default as HoverCard } from './HoverCard.vue' +export { default as HoverCardContent } from './HoverCardContent.vue' +export { default as HoverCardTrigger } from './HoverCardTrigger.vue' diff --git a/app/components/pub/ui/input/Input.vue b/app/components/pub/ui/input/Input.vue new file mode 100644 index 00000000..81140b40 --- /dev/null +++ b/app/components/pub/ui/input/Input.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/input/index.ts b/app/components/pub/ui/input/index.ts new file mode 100644 index 00000000..a691dd6c --- /dev/null +++ b/app/components/pub/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from './Input.vue' diff --git a/app/components/pub/ui/label/Label.vue b/app/components/pub/ui/label/Label.vue new file mode 100644 index 00000000..04232226 --- /dev/null +++ b/app/components/pub/ui/label/Label.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/components/pub/ui/label/index.ts b/app/components/pub/ui/label/index.ts new file mode 100644 index 00000000..572c2f01 --- /dev/null +++ b/app/components/pub/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from './Label.vue' diff --git a/app/components/pub/ui/menubar/Menubar.vue b/app/components/pub/ui/menubar/Menubar.vue new file mode 100644 index 00000000..614a545f --- /dev/null +++ b/app/components/pub/ui/menubar/Menubar.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarCheckboxItem.vue b/app/components/pub/ui/menubar/MenubarCheckboxItem.vue new file mode 100644 index 00000000..f566f317 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarCheckboxItem.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarContent.vue b/app/components/pub/ui/menubar/MenubarContent.vue new file mode 100644 index 00000000..d1de1ae9 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarContent.vue @@ -0,0 +1,45 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarGroup.vue b/app/components/pub/ui/menubar/MenubarGroup.vue new file mode 100644 index 00000000..e2e79d92 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarGroup.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarItem.vue b/app/components/pub/ui/menubar/MenubarItem.vue new file mode 100644 index 00000000..e1457d60 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarItem.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarLabel.vue b/app/components/pub/ui/menubar/MenubarLabel.vue new file mode 100644 index 00000000..34089911 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarLabel.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarMenu.vue b/app/components/pub/ui/menubar/MenubarMenu.vue new file mode 100644 index 00000000..3e0bc452 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarMenu.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarRadioGroup.vue b/app/components/pub/ui/menubar/MenubarRadioGroup.vue new file mode 100644 index 00000000..0bc7a0a6 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarRadioGroup.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarRadioItem.vue b/app/components/pub/ui/menubar/MenubarRadioItem.vue new file mode 100644 index 00000000..a4d72455 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarRadioItem.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarSeparator.vue b/app/components/pub/ui/menubar/MenubarSeparator.vue new file mode 100644 index 00000000..6850518e --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarSeparator.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarShortcut.vue b/app/components/pub/ui/menubar/MenubarShortcut.vue new file mode 100644 index 00000000..0d4da921 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarShortcut.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarSub.vue b/app/components/pub/ui/menubar/MenubarSub.vue new file mode 100644 index 00000000..f1c8395d --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarSub.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarSubContent.vue b/app/components/pub/ui/menubar/MenubarSubContent.vue new file mode 100644 index 00000000..5986c7d9 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarSubContent.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarSubTrigger.vue b/app/components/pub/ui/menubar/MenubarSubTrigger.vue new file mode 100644 index 00000000..7bdbec92 --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarSubTrigger.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/pub/ui/menubar/MenubarTrigger.vue b/app/components/pub/ui/menubar/MenubarTrigger.vue new file mode 100644 index 00000000..7538fe7a --- /dev/null +++ b/app/components/pub/ui/menubar/MenubarTrigger.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/pub/ui/menubar/index.ts b/app/components/pub/ui/menubar/index.ts new file mode 100644 index 00000000..600c23ea --- /dev/null +++ b/app/components/pub/ui/menubar/index.ts @@ -0,0 +1,15 @@ +export { default as Menubar } from './Menubar.vue' +export { default as MenubarCheckboxItem } from './MenubarCheckboxItem.vue' +export { default as MenubarContent } from './MenubarContent.vue' +export { default as MenubarGroup } from './MenubarGroup.vue' +export { default as MenubarItem } from './MenubarItem.vue' +export { default as MenubarLabel } from './MenubarLabel.vue' +export { default as MenubarMenu } from './MenubarMenu.vue' +export { default as MenubarRadioGroup } from './MenubarRadioGroup.vue' +export { default as MenubarRadioItem } from './MenubarRadioItem.vue' +export { default as MenubarSeparator } from './MenubarSeparator.vue' +export { default as MenubarShortcut } from './MenubarShortcut.vue' +export { default as MenubarSub } from './MenubarSub.vue' +export { default as MenubarSubContent } from './MenubarSubContent.vue' +export { default as MenubarSubTrigger } from './MenubarSubTrigger.vue' +export { default as MenubarTrigger } from './MenubarTrigger.vue' diff --git a/app/components/pub/ui/navigation-menu/NavigationMenu.vue b/app/components/pub/ui/navigation-menu/NavigationMenu.vue new file mode 100644 index 00000000..f7fc216c --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenu.vue @@ -0,0 +1,34 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/NavigationMenuContent.vue b/app/components/pub/ui/navigation-menu/NavigationMenuContent.vue new file mode 100644 index 00000000..e6b5060f --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenuContent.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/NavigationMenuIndicator.vue b/app/components/pub/ui/navigation-menu/NavigationMenuIndicator.vue new file mode 100644 index 00000000..018c0868 --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenuIndicator.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/NavigationMenuItem.vue b/app/components/pub/ui/navigation-menu/NavigationMenuItem.vue new file mode 100644 index 00000000..09e26ca2 --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenuItem.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/NavigationMenuLink.vue b/app/components/pub/ui/navigation-menu/NavigationMenuLink.vue new file mode 100644 index 00000000..4179154d --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenuLink.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/NavigationMenuList.vue b/app/components/pub/ui/navigation-menu/NavigationMenuList.vue new file mode 100644 index 00000000..7275908c --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenuList.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/NavigationMenuTrigger.vue b/app/components/pub/ui/navigation-menu/NavigationMenuTrigger.vue new file mode 100644 index 00000000..c15f094d --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenuTrigger.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/NavigationMenuViewport.vue b/app/components/pub/ui/navigation-menu/NavigationMenuViewport.vue new file mode 100644 index 00000000..b6cdfc54 --- /dev/null +++ b/app/components/pub/ui/navigation-menu/NavigationMenuViewport.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/navigation-menu/index.ts b/app/components/pub/ui/navigation-menu/index.ts new file mode 100644 index 00000000..fd0ef971 --- /dev/null +++ b/app/components/pub/ui/navigation-menu/index.ts @@ -0,0 +1,12 @@ +import { cva } from 'class-variance-authority' + +export { default as NavigationMenu } from './NavigationMenu.vue' +export { default as NavigationMenuContent } from './NavigationMenuContent.vue' +export { default as NavigationMenuItem } from './NavigationMenuItem.vue' +export { default as NavigationMenuLink } from './NavigationMenuLink.vue' +export { default as NavigationMenuList } from './NavigationMenuList.vue' +export { default as NavigationMenuTrigger } from './NavigationMenuTrigger.vue' + +export const navigationMenuTriggerStyle = cva( + 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50', +) diff --git a/app/components/pub/ui/number-field/NumberField.vue b/app/components/pub/ui/number-field/NumberField.vue new file mode 100644 index 00000000..020ea0bc --- /dev/null +++ b/app/components/pub/ui/number-field/NumberField.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/number-field/NumberFieldContent.vue b/app/components/pub/ui/number-field/NumberFieldContent.vue new file mode 100644 index 00000000..12c8d7ed --- /dev/null +++ b/app/components/pub/ui/number-field/NumberFieldContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/number-field/NumberFieldDecrement.vue b/app/components/pub/ui/number-field/NumberFieldDecrement.vue new file mode 100644 index 00000000..77fe4586 --- /dev/null +++ b/app/components/pub/ui/number-field/NumberFieldDecrement.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/number-field/NumberFieldIncrement.vue b/app/components/pub/ui/number-field/NumberFieldIncrement.vue new file mode 100644 index 00000000..e4e12f24 --- /dev/null +++ b/app/components/pub/ui/number-field/NumberFieldIncrement.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/number-field/NumberFieldInput.vue b/app/components/pub/ui/number-field/NumberFieldInput.vue new file mode 100644 index 00000000..2d91d9ed --- /dev/null +++ b/app/components/pub/ui/number-field/NumberFieldInput.vue @@ -0,0 +1,8 @@ + + + diff --git a/app/components/pub/ui/number-field/index.ts b/app/components/pub/ui/number-field/index.ts new file mode 100644 index 00000000..5489697d --- /dev/null +++ b/app/components/pub/ui/number-field/index.ts @@ -0,0 +1,5 @@ +export { default as NumberField } from './NumberField.vue' +export { default as NumberFieldContent } from './NumberFieldContent.vue' +export { default as NumberFieldDecrement } from './NumberFieldDecrement.vue' +export { default as NumberFieldIncrement } from './NumberFieldIncrement.vue' +export { default as NumberFieldInput } from './NumberFieldInput.vue' diff --git a/app/components/pub/ui/pagination/PaginationEllipsis.vue b/app/components/pub/ui/pagination/PaginationEllipsis.vue new file mode 100644 index 00000000..b26177c9 --- /dev/null +++ b/app/components/pub/ui/pagination/PaginationEllipsis.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/pagination/PaginationFirst.vue b/app/components/pub/ui/pagination/PaginationFirst.vue new file mode 100644 index 00000000..af1caf2b --- /dev/null +++ b/app/components/pub/ui/pagination/PaginationFirst.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/pagination/PaginationLast.vue b/app/components/pub/ui/pagination/PaginationLast.vue new file mode 100644 index 00000000..fc4cea8d --- /dev/null +++ b/app/components/pub/ui/pagination/PaginationLast.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/pagination/PaginationNext.vue b/app/components/pub/ui/pagination/PaginationNext.vue new file mode 100644 index 00000000..24203dfb --- /dev/null +++ b/app/components/pub/ui/pagination/PaginationNext.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/pagination/PaginationPrev.vue b/app/components/pub/ui/pagination/PaginationPrev.vue new file mode 100644 index 00000000..81fe1be0 --- /dev/null +++ b/app/components/pub/ui/pagination/PaginationPrev.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/pub/ui/pagination/index.ts b/app/components/pub/ui/pagination/index.ts new file mode 100644 index 00000000..3a0b1817 --- /dev/null +++ b/app/components/pub/ui/pagination/index.ts @@ -0,0 +1,10 @@ +export { default as PaginationEllipsis } from './PaginationEllipsis.vue' +export { default as PaginationFirst } from './PaginationFirst.vue' +export { default as PaginationLast } from './PaginationLast.vue' +export { default as PaginationNext } from './PaginationNext.vue' +export { default as PaginationPrev } from './PaginationPrev.vue' +export { + PaginationRoot as Pagination, + PaginationList, + PaginationListItem, +} from 'radix-vue' diff --git a/app/components/pub/ui/pin-input/PinInput.vue b/app/components/pub/ui/pin-input/PinInput.vue new file mode 100644 index 00000000..1152b78b --- /dev/null +++ b/app/components/pub/ui/pin-input/PinInput.vue @@ -0,0 +1,25 @@ + + + diff --git a/app/components/pub/ui/pin-input/PinInputGroup.vue b/app/components/pub/ui/pin-input/PinInputGroup.vue new file mode 100644 index 00000000..7b008a5f --- /dev/null +++ b/app/components/pub/ui/pin-input/PinInputGroup.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/pin-input/PinInputInput.vue b/app/components/pub/ui/pin-input/PinInputInput.vue new file mode 100644 index 00000000..5091e777 --- /dev/null +++ b/app/components/pub/ui/pin-input/PinInputInput.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/pin-input/PinInputSeparator.vue b/app/components/pub/ui/pin-input/PinInputSeparator.vue new file mode 100644 index 00000000..2ffeb810 --- /dev/null +++ b/app/components/pub/ui/pin-input/PinInputSeparator.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/pin-input/index.ts b/app/components/pub/ui/pin-input/index.ts new file mode 100644 index 00000000..e645e414 --- /dev/null +++ b/app/components/pub/ui/pin-input/index.ts @@ -0,0 +1,4 @@ +export { default as PinInput } from './PinInput.vue' +export { default as PinInputGroup } from './PinInputGroup.vue' +export { default as PinInputInput } from './PinInputInput.vue' +export { default as PinInputSeparator } from './PinInputSeparator.vue' diff --git a/app/components/pub/ui/popover/Popover.vue b/app/components/pub/ui/popover/Popover.vue new file mode 100644 index 00000000..da5f7096 --- /dev/null +++ b/app/components/pub/ui/popover/Popover.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/popover/PopoverContent.vue b/app/components/pub/ui/popover/PopoverContent.vue new file mode 100644 index 00000000..665efa30 --- /dev/null +++ b/app/components/pub/ui/popover/PopoverContent.vue @@ -0,0 +1,49 @@ + + + diff --git a/app/components/pub/ui/popover/PopoverTrigger.vue b/app/components/pub/ui/popover/PopoverTrigger.vue new file mode 100644 index 00000000..6c944497 --- /dev/null +++ b/app/components/pub/ui/popover/PopoverTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/popover/index.ts b/app/components/pub/ui/popover/index.ts new file mode 100644 index 00000000..c621f9b1 --- /dev/null +++ b/app/components/pub/ui/popover/index.ts @@ -0,0 +1,3 @@ +export { default as Popover } from './Popover.vue' +export { default as PopoverContent } from './PopoverContent.vue' +export { default as PopoverTrigger } from './PopoverTrigger.vue' diff --git a/app/components/pub/ui/progress/Progress.vue b/app/components/pub/ui/progress/Progress.vue new file mode 100644 index 00000000..0a1e90af --- /dev/null +++ b/app/components/pub/ui/progress/Progress.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/components/pub/ui/progress/index.ts b/app/components/pub/ui/progress/index.ts new file mode 100644 index 00000000..eace9893 --- /dev/null +++ b/app/components/pub/ui/progress/index.ts @@ -0,0 +1 @@ +export { default as Progress } from './Progress.vue' diff --git a/app/components/pub/ui/radio-group/RadioGroup.vue b/app/components/pub/ui/radio-group/RadioGroup.vue new file mode 100644 index 00000000..7fbcf9b8 --- /dev/null +++ b/app/components/pub/ui/radio-group/RadioGroup.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/radio-group/RadioGroupItem.vue b/app/components/pub/ui/radio-group/RadioGroupItem.vue new file mode 100644 index 00000000..57d452b9 --- /dev/null +++ b/app/components/pub/ui/radio-group/RadioGroupItem.vue @@ -0,0 +1,38 @@ + + + diff --git a/app/components/pub/ui/radio-group/index.ts b/app/components/pub/ui/radio-group/index.ts new file mode 100644 index 00000000..fa1da9c2 --- /dev/null +++ b/app/components/pub/ui/radio-group/index.ts @@ -0,0 +1,2 @@ +export { default as RadioGroup } from './RadioGroup.vue' +export { default as RadioGroupItem } from './RadioGroupItem.vue' diff --git a/app/components/pub/ui/range-calendar/RangeCalendar.vue b/app/components/pub/ui/range-calendar/RangeCalendar.vue new file mode 100644 index 00000000..631d5780 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendar.vue @@ -0,0 +1,62 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarCell.vue b/app/components/pub/ui/range-calendar/RangeCalendarCell.vue new file mode 100644 index 00000000..b6f9a1cc --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarCell.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarCellTrigger.vue b/app/components/pub/ui/range-calendar/RangeCalendarCellTrigger.vue new file mode 100644 index 00000000..5c8aaef1 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarCellTrigger.vue @@ -0,0 +1,42 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarGrid.vue b/app/components/pub/ui/range-calendar/RangeCalendarGrid.vue new file mode 100644 index 00000000..9a1295c5 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarGrid.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarGridBody.vue b/app/components/pub/ui/range-calendar/RangeCalendarGridBody.vue new file mode 100644 index 00000000..b841dd99 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarGridBody.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarGridHead.vue b/app/components/pub/ui/range-calendar/RangeCalendarGridHead.vue new file mode 100644 index 00000000..6e2bcec7 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarGridHead.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarGridRow.vue b/app/components/pub/ui/range-calendar/RangeCalendarGridRow.vue new file mode 100644 index 00000000..fad16899 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarGridRow.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarHeadCell.vue b/app/components/pub/ui/range-calendar/RangeCalendarHeadCell.vue new file mode 100644 index 00000000..92769853 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarHeadCell.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarHeader.vue b/app/components/pub/ui/range-calendar/RangeCalendarHeader.vue new file mode 100644 index 00000000..b99648f5 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarHeader.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarHeading.vue b/app/components/pub/ui/range-calendar/RangeCalendarHeading.vue new file mode 100644 index 00000000..0f592bc5 --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarHeading.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarNextButton.vue b/app/components/pub/ui/range-calendar/RangeCalendarNextButton.vue new file mode 100644 index 00000000..201151cb --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarNextButton.vue @@ -0,0 +1,34 @@ + + + diff --git a/app/components/pub/ui/range-calendar/RangeCalendarPrevButton.vue b/app/components/pub/ui/range-calendar/RangeCalendarPrevButton.vue new file mode 100644 index 00000000..503ce5cb --- /dev/null +++ b/app/components/pub/ui/range-calendar/RangeCalendarPrevButton.vue @@ -0,0 +1,34 @@ + + + diff --git a/app/components/pub/ui/range-calendar/index.ts b/app/components/pub/ui/range-calendar/index.ts new file mode 100644 index 00000000..7ba1637e --- /dev/null +++ b/app/components/pub/ui/range-calendar/index.ts @@ -0,0 +1,12 @@ +export { default as RangeCalendar } from './RangeCalendar.vue' +export { default as RangeCalendarCell } from './RangeCalendarCell.vue' +export { default as RangeCalendarCellTrigger } from './RangeCalendarCellTrigger.vue' +export { default as RangeCalendarGrid } from './RangeCalendarGrid.vue' +export { default as RangeCalendarGridBody } from './RangeCalendarGridBody.vue' +export { default as RangeCalendarGridHead } from './RangeCalendarGridHead.vue' +export { default as RangeCalendarGridRow } from './RangeCalendarGridRow.vue' +export { default as RangeCalendarHeadCell } from './RangeCalendarHeadCell.vue' +export { default as RangeCalendarHeader } from './RangeCalendarHeader.vue' +export { default as RangeCalendarHeading } from './RangeCalendarHeading.vue' +export { default as RangeCalendarNextButton } from './RangeCalendarNextButton.vue' +export { default as RangeCalendarPrevButton } from './RangeCalendarPrevButton.vue' diff --git a/app/components/pub/ui/resizable/ResizableHandle.vue b/app/components/pub/ui/resizable/ResizableHandle.vue new file mode 100644 index 00000000..7b57f64d --- /dev/null +++ b/app/components/pub/ui/resizable/ResizableHandle.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/pub/ui/resizable/ResizablePanelGroup.vue b/app/components/pub/ui/resizable/ResizablePanelGroup.vue new file mode 100644 index 00000000..397c0b1d --- /dev/null +++ b/app/components/pub/ui/resizable/ResizablePanelGroup.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/resizable/index.ts b/app/components/pub/ui/resizable/index.ts new file mode 100644 index 00000000..605e8106 --- /dev/null +++ b/app/components/pub/ui/resizable/index.ts @@ -0,0 +1,3 @@ +export { default as ResizableHandle } from './ResizableHandle.vue' +export { default as ResizablePanelGroup } from './ResizablePanelGroup.vue' +export { SplitterPanel as ResizablePanel } from 'radix-vue' diff --git a/app/components/pub/ui/scroll-area/ScrollArea.vue b/app/components/pub/ui/scroll-area/ScrollArea.vue new file mode 100644 index 00000000..46a132cf --- /dev/null +++ b/app/components/pub/ui/scroll-area/ScrollArea.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/pub/ui/scroll-area/ScrollBar.vue b/app/components/pub/ui/scroll-area/ScrollBar.vue new file mode 100644 index 00000000..fadaf9ef --- /dev/null +++ b/app/components/pub/ui/scroll-area/ScrollBar.vue @@ -0,0 +1,32 @@ + + + diff --git a/app/components/pub/ui/scroll-area/index.ts b/app/components/pub/ui/scroll-area/index.ts new file mode 100644 index 00000000..2bd4fae5 --- /dev/null +++ b/app/components/pub/ui/scroll-area/index.ts @@ -0,0 +1,2 @@ +export { default as ScrollArea } from './ScrollArea.vue' +export { default as ScrollBar } from './ScrollBar.vue' diff --git a/app/components/pub/ui/select/Select.vue b/app/components/pub/ui/select/Select.vue new file mode 100644 index 00000000..adc42fdf --- /dev/null +++ b/app/components/pub/ui/select/Select.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/select/SelectContent.vue b/app/components/pub/ui/select/SelectContent.vue new file mode 100644 index 00000000..d06ac835 --- /dev/null +++ b/app/components/pub/ui/select/SelectContent.vue @@ -0,0 +1,54 @@ + + + diff --git a/app/components/pub/ui/select/SelectGroup.vue b/app/components/pub/ui/select/SelectGroup.vue new file mode 100644 index 00000000..ef6b3c15 --- /dev/null +++ b/app/components/pub/ui/select/SelectGroup.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/select/SelectItem.vue b/app/components/pub/ui/select/SelectItem.vue new file mode 100644 index 00000000..f1c81907 --- /dev/null +++ b/app/components/pub/ui/select/SelectItem.vue @@ -0,0 +1,45 @@ + + + diff --git a/app/components/pub/ui/select/SelectItemText.vue b/app/components/pub/ui/select/SelectItemText.vue new file mode 100644 index 00000000..a8db38b4 --- /dev/null +++ b/app/components/pub/ui/select/SelectItemText.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/select/SelectLabel.vue b/app/components/pub/ui/select/SelectLabel.vue new file mode 100644 index 00000000..4869948e --- /dev/null +++ b/app/components/pub/ui/select/SelectLabel.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/select/SelectScrollDownButton.vue b/app/components/pub/ui/select/SelectScrollDownButton.vue new file mode 100644 index 00000000..345134e5 --- /dev/null +++ b/app/components/pub/ui/select/SelectScrollDownButton.vue @@ -0,0 +1,25 @@ + + + diff --git a/app/components/pub/ui/select/SelectScrollUpButton.vue b/app/components/pub/ui/select/SelectScrollUpButton.vue new file mode 100644 index 00000000..5e369815 --- /dev/null +++ b/app/components/pub/ui/select/SelectScrollUpButton.vue @@ -0,0 +1,25 @@ + + + diff --git a/app/components/pub/ui/select/SelectSeparator.vue b/app/components/pub/ui/select/SelectSeparator.vue new file mode 100644 index 00000000..79987f54 --- /dev/null +++ b/app/components/pub/ui/select/SelectSeparator.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/select/SelectTrigger.vue b/app/components/pub/ui/select/SelectTrigger.vue new file mode 100644 index 00000000..cfcf80b4 --- /dev/null +++ b/app/components/pub/ui/select/SelectTrigger.vue @@ -0,0 +1,32 @@ + + + diff --git a/app/components/pub/ui/select/SelectValue.vue b/app/components/pub/ui/select/SelectValue.vue new file mode 100644 index 00000000..6f37eb55 --- /dev/null +++ b/app/components/pub/ui/select/SelectValue.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/select/index.ts b/app/components/pub/ui/select/index.ts new file mode 100644 index 00000000..31b92946 --- /dev/null +++ b/app/components/pub/ui/select/index.ts @@ -0,0 +1,11 @@ +export { default as Select } from './Select.vue' +export { default as SelectContent } from './SelectContent.vue' +export { default as SelectGroup } from './SelectGroup.vue' +export { default as SelectItem } from './SelectItem.vue' +export { default as SelectItemText } from './SelectItemText.vue' +export { default as SelectLabel } from './SelectLabel.vue' +export { default as SelectScrollDownButton } from './SelectScrollDownButton.vue' +export { default as SelectScrollUpButton } from './SelectScrollUpButton.vue' +export { default as SelectSeparator } from './SelectSeparator.vue' +export { default as SelectTrigger } from './SelectTrigger.vue' +export { default as SelectValue } from './SelectValue.vue' diff --git a/app/components/pub/ui/separator/Separator.vue b/app/components/pub/ui/separator/Separator.vue new file mode 100644 index 00000000..b1a98f14 --- /dev/null +++ b/app/components/pub/ui/separator/Separator.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/components/pub/ui/separator/index.ts b/app/components/pub/ui/separator/index.ts new file mode 100644 index 00000000..2287bcb9 --- /dev/null +++ b/app/components/pub/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from './Separator.vue' diff --git a/app/components/pub/ui/sheet/Sheet.vue b/app/components/pub/ui/sheet/Sheet.vue new file mode 100644 index 00000000..5f6a5632 --- /dev/null +++ b/app/components/pub/ui/sheet/Sheet.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/sheet/SheetClose.vue b/app/components/pub/ui/sheet/SheetClose.vue new file mode 100644 index 00000000..1fa61805 --- /dev/null +++ b/app/components/pub/ui/sheet/SheetClose.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/sheet/SheetContent.vue b/app/components/pub/ui/sheet/SheetContent.vue new file mode 100644 index 00000000..a8561bfb --- /dev/null +++ b/app/components/pub/ui/sheet/SheetContent.vue @@ -0,0 +1,63 @@ + + + diff --git a/app/components/pub/ui/sheet/SheetDescription.vue b/app/components/pub/ui/sheet/SheetDescription.vue new file mode 100644 index 00000000..06b21bba --- /dev/null +++ b/app/components/pub/ui/sheet/SheetDescription.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/sheet/SheetFooter.vue b/app/components/pub/ui/sheet/SheetFooter.vue new file mode 100644 index 00000000..ac2d0c18 --- /dev/null +++ b/app/components/pub/ui/sheet/SheetFooter.vue @@ -0,0 +1,19 @@ + + + diff --git a/app/components/pub/ui/sheet/SheetHeader.vue b/app/components/pub/ui/sheet/SheetHeader.vue new file mode 100644 index 00000000..541f48f5 --- /dev/null +++ b/app/components/pub/ui/sheet/SheetHeader.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/pub/ui/sheet/SheetTitle.vue b/app/components/pub/ui/sheet/SheetTitle.vue new file mode 100644 index 00000000..b1661957 --- /dev/null +++ b/app/components/pub/ui/sheet/SheetTitle.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/sheet/SheetTrigger.vue b/app/components/pub/ui/sheet/SheetTrigger.vue new file mode 100644 index 00000000..b966b29d --- /dev/null +++ b/app/components/pub/ui/sheet/SheetTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/pub/ui/sheet/index.ts b/app/components/pub/ui/sheet/index.ts new file mode 100644 index 00000000..603fa39d --- /dev/null +++ b/app/components/pub/ui/sheet/index.ts @@ -0,0 +1,32 @@ +import type { VariantProps } from 'class-variance-authority' +import { cva } from 'class-variance-authority' + +export { default as Sheet } from './Sheet.vue' +export { default as SheetClose } from './SheetClose.vue' +export { default as SheetContent } from './SheetContent.vue' +export { default as SheetDescription } from './SheetDescription.vue' +export { default as SheetFooter } from './SheetFooter.vue' +export { default as SheetHeader } from './SheetHeader.vue' +export { default as SheetTitle } from './SheetTitle.vue' +export { default as SheetTrigger } from './SheetTrigger.vue' + +export const sheetVariants = cva( + 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500', + { + variants: { + side: { + top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top', + bottom: + 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom', + left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm', + right: + 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm', + }, + }, + defaultVariants: { + side: 'right', + }, + }, +) + +export type SheetVariants = VariantProps diff --git a/app/components/pub/ui/sidebar/Sidebar.vue b/app/components/pub/ui/sidebar/Sidebar.vue new file mode 100644 index 00000000..8a0c8bc8 --- /dev/null +++ b/app/components/pub/ui/sidebar/Sidebar.vue @@ -0,0 +1,99 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarContent.vue b/app/components/pub/ui/sidebar/SidebarContent.vue new file mode 100644 index 00000000..4b6244a4 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarContent.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarFooter.vue b/app/components/pub/ui/sidebar/SidebarFooter.vue new file mode 100644 index 00000000..9d145c05 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarFooter.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarGroup.vue b/app/components/pub/ui/sidebar/SidebarGroup.vue new file mode 100644 index 00000000..adc6843c --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarGroup.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarGroupAction.vue b/app/components/pub/ui/sidebar/SidebarGroupAction.vue new file mode 100644 index 00000000..74cac4ea --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarGroupAction.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarGroupContent.vue b/app/components/pub/ui/sidebar/SidebarGroupContent.vue new file mode 100644 index 00000000..37390c93 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarGroupContent.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarGroupLabel.vue b/app/components/pub/ui/sidebar/SidebarGroupLabel.vue new file mode 100644 index 00000000..83826c3e --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarGroupLabel.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarHeader.vue b/app/components/pub/ui/sidebar/SidebarHeader.vue new file mode 100644 index 00000000..eecaddb2 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarHeader.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarInput.vue b/app/components/pub/ui/sidebar/SidebarInput.vue new file mode 100644 index 00000000..e38d141e --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarInput.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarInset.vue b/app/components/pub/ui/sidebar/SidebarInset.vue new file mode 100644 index 00000000..cc7d45dc --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarInset.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenu.vue b/app/components/pub/ui/sidebar/SidebarMenu.vue new file mode 100644 index 00000000..3bfd73e6 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenu.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuAction.vue b/app/components/pub/ui/sidebar/SidebarMenuAction.vue new file mode 100644 index 00000000..cc6ced01 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuAction.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuBadge.vue b/app/components/pub/ui/sidebar/SidebarMenuBadge.vue new file mode 100644 index 00000000..f8789687 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuBadge.vue @@ -0,0 +1,25 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuButton.vue b/app/components/pub/ui/sidebar/SidebarMenuButton.vue new file mode 100644 index 00000000..e97c8fa6 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuButton.vue @@ -0,0 +1,54 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuButtonChild.vue b/app/components/pub/ui/sidebar/SidebarMenuButtonChild.vue new file mode 100644 index 00000000..43bea5eb --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuButtonChild.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuItem.vue b/app/components/pub/ui/sidebar/SidebarMenuItem.vue new file mode 100644 index 00000000..b6000734 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuItem.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuSkeleton.vue b/app/components/pub/ui/sidebar/SidebarMenuSkeleton.vue new file mode 100644 index 00000000..3011fb0f --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuSkeleton.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuSub.vue b/app/components/pub/ui/sidebar/SidebarMenuSub.vue new file mode 100644 index 00000000..0bb5af79 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuSub.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuSubButton.vue b/app/components/pub/ui/sidebar/SidebarMenuSubButton.vue new file mode 100644 index 00000000..353b3ae7 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuSubButton.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarMenuSubItem.vue b/app/components/pub/ui/sidebar/SidebarMenuSubItem.vue new file mode 100644 index 00000000..b04030b0 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarMenuSubItem.vue @@ -0,0 +1,9 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarProvider.vue b/app/components/pub/ui/sidebar/SidebarProvider.vue new file mode 100644 index 00000000..d252f951 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarProvider.vue @@ -0,0 +1,102 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarRail.vue b/app/components/pub/ui/sidebar/SidebarRail.vue new file mode 100644 index 00000000..9b644cdd --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarRail.vue @@ -0,0 +1,32 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarSeparator.vue b/app/components/pub/ui/sidebar/SidebarSeparator.vue new file mode 100644 index 00000000..d4ef82fa --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarSeparator.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/sidebar/SidebarTrigger.vue b/app/components/pub/ui/sidebar/SidebarTrigger.vue new file mode 100644 index 00000000..cf4937e7 --- /dev/null +++ b/app/components/pub/ui/sidebar/SidebarTrigger.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pub/ui/sidebar/index.ts b/app/components/pub/ui/sidebar/index.ts new file mode 100644 index 00000000..a6de2196 --- /dev/null +++ b/app/components/pub/ui/sidebar/index.ts @@ -0,0 +1,52 @@ +import type { VariantProps } from 'class-variance-authority' +import { cva } from 'class-variance-authority' + +export { default as Sidebar } from './Sidebar.vue' +export { default as SidebarContent } from './SidebarContent.vue' +export { default as SidebarFooter } from './SidebarFooter.vue' +export { default as SidebarGroup } from './SidebarGroup.vue' +export { default as SidebarGroupAction } from './SidebarGroupAction.vue' +export { default as SidebarGroupContent } from './SidebarGroupContent.vue' +export { default as SidebarGroupLabel } from './SidebarGroupLabel.vue' +export { default as SidebarHeader } from './SidebarHeader.vue' +export { default as SidebarInput } from './SidebarInput.vue' +export { default as SidebarInset } from './SidebarInset.vue' +export { default as SidebarMenu } from './SidebarMenu.vue' +export { default as SidebarMenuAction } from './SidebarMenuAction.vue' +export { default as SidebarMenuBadge } from './SidebarMenuBadge.vue' +export { default as SidebarMenuButton } from './SidebarMenuButton.vue' +export { default as SidebarMenuItem } from './SidebarMenuItem.vue' +export { default as SidebarMenuSkeleton } from './SidebarMenuSkeleton.vue' +export { default as SidebarMenuSub } from './SidebarMenuSub.vue' +export { default as SidebarMenuSubButton } from './SidebarMenuSubButton.vue' +export { default as SidebarMenuSubItem } from './SidebarMenuSubItem.vue' +export { default as SidebarProvider } from './SidebarProvider.vue' +export { default as SidebarRail } from './SidebarRail.vue' +export { default as SidebarSeparator } from './SidebarSeparator.vue' +export { default as SidebarTrigger } from './SidebarTrigger.vue' + +export { useSidebar } from './utils' + +export const sidebarMenuButtonVariants = cva( + 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-[current=page]:bg-sidebar-accent aria-[current=page]:font-medium aria-[current=page]:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', + { + variants: { + variant: { + default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground', + outline: + 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]', + }, + size: { + default: 'h-8 text-sm', + sm: 'h-7 text-xs', + lg: 'h-12 text-sm group-data-[collapsible=icon]:!p-0', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +) + +export type SidebarMenuButtonVariants = VariantProps diff --git a/app/components/pub/ui/sidebar/utils.ts b/app/components/pub/ui/sidebar/utils.ts new file mode 100644 index 00000000..3ded66c4 --- /dev/null +++ b/app/components/pub/ui/sidebar/utils.ts @@ -0,0 +1,19 @@ +import type { ComputedRef, Ref } from 'vue' +import { createContext } from 'radix-vue' + +export const SIDEBAR_COOKIE_NAME = 'sidebar:state' +export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 +export const SIDEBAR_WIDTH = '16rem' +export const SIDEBAR_WIDTH_MOBILE = '18rem' +export const SIDEBAR_WIDTH_ICON = '3rem' +export const SIDEBAR_KEYBOARD_SHORTCUT = 'b' + +export const [useSidebar, provideSidebarContext] = createContext<{ + state: ComputedRef<'expanded' | 'collapsed'> + open: Ref + setOpen: (value: boolean) => void + isMobile: Ref + openMobile: Ref + setOpenMobile: (value: boolean) => void + toggleSidebar: () => void +}>('Sidebar') diff --git a/app/components/pub/ui/skeleton/Skeleton.vue b/app/components/pub/ui/skeleton/Skeleton.vue new file mode 100644 index 00000000..94bc183a --- /dev/null +++ b/app/components/pub/ui/skeleton/Skeleton.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/skeleton/index.ts b/app/components/pub/ui/skeleton/index.ts new file mode 100644 index 00000000..be21fad3 --- /dev/null +++ b/app/components/pub/ui/skeleton/index.ts @@ -0,0 +1 @@ +export { default as Skeleton } from './Skeleton.vue' diff --git a/app/components/pub/ui/slider/Slider.vue b/app/components/pub/ui/slider/Slider.vue new file mode 100644 index 00000000..b56a323c --- /dev/null +++ b/app/components/pub/ui/slider/Slider.vue @@ -0,0 +1,37 @@ + + + diff --git a/app/components/pub/ui/slider/index.ts b/app/components/pub/ui/slider/index.ts new file mode 100644 index 00000000..1c945deb --- /dev/null +++ b/app/components/pub/ui/slider/index.ts @@ -0,0 +1 @@ +export { default as Slider } from './Slider.vue' diff --git a/app/components/pub/ui/sonner/Sonner.vue b/app/components/pub/ui/sonner/Sonner.vue new file mode 100644 index 00000000..bd67f874 --- /dev/null +++ b/app/components/pub/ui/sonner/Sonner.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/pub/ui/sonner/index.ts b/app/components/pub/ui/sonner/index.ts new file mode 100644 index 00000000..8d3d4062 --- /dev/null +++ b/app/components/pub/ui/sonner/index.ts @@ -0,0 +1 @@ +export { default as Sonner } from './Sonner.vue' diff --git a/app/components/pub/ui/stepper/Stepper.vue b/app/components/pub/ui/stepper/Stepper.vue new file mode 100644 index 00000000..a9bb7826 --- /dev/null +++ b/app/components/pub/ui/stepper/Stepper.vue @@ -0,0 +1,32 @@ + + + diff --git a/app/components/pub/ui/stepper/StepperDescription.vue b/app/components/pub/ui/stepper/StepperDescription.vue new file mode 100644 index 00000000..dbf68040 --- /dev/null +++ b/app/components/pub/ui/stepper/StepperDescription.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/stepper/StepperIndicator.vue b/app/components/pub/ui/stepper/StepperIndicator.vue new file mode 100644 index 00000000..75e3751c --- /dev/null +++ b/app/components/pub/ui/stepper/StepperIndicator.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/pub/ui/stepper/StepperItem.vue b/app/components/pub/ui/stepper/StepperItem.vue new file mode 100644 index 00000000..1d3b9450 --- /dev/null +++ b/app/components/pub/ui/stepper/StepperItem.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/pub/ui/stepper/StepperSeparator.vue b/app/components/pub/ui/stepper/StepperSeparator.vue new file mode 100644 index 00000000..50e9b131 --- /dev/null +++ b/app/components/pub/ui/stepper/StepperSeparator.vue @@ -0,0 +1,32 @@ + + + diff --git a/app/components/pub/ui/stepper/StepperTitle.vue b/app/components/pub/ui/stepper/StepperTitle.vue new file mode 100644 index 00000000..70e672c9 --- /dev/null +++ b/app/components/pub/ui/stepper/StepperTitle.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/stepper/StepperTrigger.vue b/app/components/pub/ui/stepper/StepperTrigger.vue new file mode 100644 index 00000000..0c426da1 --- /dev/null +++ b/app/components/pub/ui/stepper/StepperTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/stepper/index.ts b/app/components/pub/ui/stepper/index.ts new file mode 100644 index 00000000..a4065a57 --- /dev/null +++ b/app/components/pub/ui/stepper/index.ts @@ -0,0 +1,7 @@ +export { default as Stepper } from './Stepper.vue' +export { default as StepperDescription } from './StepperDescription.vue' +export { default as StepperIndicator } from './StepperIndicator.vue' +export { default as StepperItem } from './StepperItem.vue' +export { default as StepperSeparator } from './StepperSeparator.vue' +export { default as StepperTitle } from './StepperTitle.vue' +export { default as StepperTrigger } from './StepperTrigger.vue' diff --git a/app/components/pub/ui/switch/Switch.vue b/app/components/pub/ui/switch/Switch.vue new file mode 100644 index 00000000..bb9c199a --- /dev/null +++ b/app/components/pub/ui/switch/Switch.vue @@ -0,0 +1,38 @@ + + + diff --git a/app/components/pub/ui/switch/index.ts b/app/components/pub/ui/switch/index.ts new file mode 100644 index 00000000..87b4b17d --- /dev/null +++ b/app/components/pub/ui/switch/index.ts @@ -0,0 +1 @@ +export { default as Switch } from './Switch.vue' diff --git a/app/components/pub/ui/table/Table.vue b/app/components/pub/ui/table/Table.vue new file mode 100644 index 00000000..4d5412cf --- /dev/null +++ b/app/components/pub/ui/table/Table.vue @@ -0,0 +1,16 @@ + + + diff --git a/app/components/pub/ui/table/TableBody.vue b/app/components/pub/ui/table/TableBody.vue new file mode 100644 index 00000000..ab7a937d --- /dev/null +++ b/app/components/pub/ui/table/TableBody.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/table/TableCaption.vue b/app/components/pub/ui/table/TableCaption.vue new file mode 100644 index 00000000..3904c563 --- /dev/null +++ b/app/components/pub/ui/table/TableCaption.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/table/TableCell.vue b/app/components/pub/ui/table/TableCell.vue new file mode 100644 index 00000000..4a4da400 --- /dev/null +++ b/app/components/pub/ui/table/TableCell.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/table/TableEmpty.vue b/app/components/pub/ui/table/TableEmpty.vue new file mode 100644 index 00000000..6576cdde --- /dev/null +++ b/app/components/pub/ui/table/TableEmpty.vue @@ -0,0 +1,38 @@ + + + diff --git a/app/components/pub/ui/table/TableFooter.vue b/app/components/pub/ui/table/TableFooter.vue new file mode 100644 index 00000000..693a4386 --- /dev/null +++ b/app/components/pub/ui/table/TableFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/table/TableHead.vue b/app/components/pub/ui/table/TableHead.vue new file mode 100644 index 00000000..e882b608 --- /dev/null +++ b/app/components/pub/ui/table/TableHead.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/table/TableHeader.vue b/app/components/pub/ui/table/TableHeader.vue new file mode 100644 index 00000000..220352f6 --- /dev/null +++ b/app/components/pub/ui/table/TableHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/table/TableRow.vue b/app/components/pub/ui/table/TableRow.vue new file mode 100644 index 00000000..5b9e8749 --- /dev/null +++ b/app/components/pub/ui/table/TableRow.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/pub/ui/table/index.ts b/app/components/pub/ui/table/index.ts new file mode 100644 index 00000000..5bfa3862 --- /dev/null +++ b/app/components/pub/ui/table/index.ts @@ -0,0 +1,8 @@ +export { default as Table } from './Table.vue' +export { default as TableBody } from './TableBody.vue' +export { default as TableCaption } from './TableCaption.vue' +export { default as TableCell } from './TableCell.vue' +export { default as TableEmpty } from './TableEmpty.vue' +export { default as TableHead } from './TableHead.vue' +export { default as TableHeader } from './TableHeader.vue' +export { default as TableRow } from './TableRow.vue' diff --git a/app/components/pub/ui/table/separator/Separator.vue b/app/components/pub/ui/table/separator/Separator.vue new file mode 100644 index 00000000..ac098256 --- /dev/null +++ b/app/components/pub/ui/table/separator/Separator.vue @@ -0,0 +1,40 @@ + + + diff --git a/app/components/pub/ui/table/separator/index.ts b/app/components/pub/ui/table/separator/index.ts new file mode 100644 index 00000000..2287bcb9 --- /dev/null +++ b/app/components/pub/ui/table/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from './Separator.vue' diff --git a/app/components/pub/ui/tabs/Tabs.vue b/app/components/pub/ui/tabs/Tabs.vue new file mode 100644 index 00000000..8feda3f7 --- /dev/null +++ b/app/components/pub/ui/tabs/Tabs.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/pub/ui/tabs/TabsContent.vue b/app/components/pub/ui/tabs/TabsContent.vue new file mode 100644 index 00000000..dc6d9f8a --- /dev/null +++ b/app/components/pub/ui/tabs/TabsContent.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/tabs/TabsList.vue b/app/components/pub/ui/tabs/TabsList.vue new file mode 100644 index 00000000..f4bd9c04 --- /dev/null +++ b/app/components/pub/ui/tabs/TabsList.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/pub/ui/tabs/TabsTrigger.vue b/app/components/pub/ui/tabs/TabsTrigger.vue new file mode 100644 index 00000000..bb8d92c9 --- /dev/null +++ b/app/components/pub/ui/tabs/TabsTrigger.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/components/pub/ui/tabs/index.ts b/app/components/pub/ui/tabs/index.ts new file mode 100644 index 00000000..a5e58dc0 --- /dev/null +++ b/app/components/pub/ui/tabs/index.ts @@ -0,0 +1,4 @@ +export { default as Tabs } from './Tabs.vue' +export { default as TabsContent } from './TabsContent.vue' +export { default as TabsList } from './TabsList.vue' +export { default as TabsTrigger } from './TabsTrigger.vue' diff --git a/app/components/pub/ui/tags-input/TagsInput.vue b/app/components/pub/ui/tags-input/TagsInput.vue new file mode 100644 index 00000000..a6cc3d7b --- /dev/null +++ b/app/components/pub/ui/tags-input/TagsInput.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/tags-input/TagsInputInput.vue b/app/components/pub/ui/tags-input/TagsInputInput.vue new file mode 100644 index 00000000..83365804 --- /dev/null +++ b/app/components/pub/ui/tags-input/TagsInputInput.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/tags-input/TagsInputItem.vue b/app/components/pub/ui/tags-input/TagsInputItem.vue new file mode 100644 index 00000000..e074a475 --- /dev/null +++ b/app/components/pub/ui/tags-input/TagsInputItem.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/pub/ui/tags-input/TagsInputItemDelete.vue b/app/components/pub/ui/tags-input/TagsInputItemDelete.vue new file mode 100644 index 00000000..77489a36 --- /dev/null +++ b/app/components/pub/ui/tags-input/TagsInputItemDelete.vue @@ -0,0 +1,25 @@ + + + diff --git a/app/components/pub/ui/tags-input/TagsInputItemText.vue b/app/components/pub/ui/tags-input/TagsInputItemText.vue new file mode 100644 index 00000000..5c8888cf --- /dev/null +++ b/app/components/pub/ui/tags-input/TagsInputItemText.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/pub/ui/tags-input/index.ts b/app/components/pub/ui/tags-input/index.ts new file mode 100644 index 00000000..31305f34 --- /dev/null +++ b/app/components/pub/ui/tags-input/index.ts @@ -0,0 +1,5 @@ +export { default as TagsInput } from './TagsInput.vue' +export { default as TagsInputInput } from './TagsInputInput.vue' +export { default as TagsInputItem } from './TagsInputItem.vue' +export { default as TagsInputItemDelete } from './TagsInputItemDelete.vue' +export { default as TagsInputItemText } from './TagsInputItemText.vue' diff --git a/app/components/pub/ui/textarea/Textarea.vue b/app/components/pub/ui/textarea/Textarea.vue new file mode 100644 index 00000000..1dee55d2 --- /dev/null +++ b/app/components/pub/ui/textarea/Textarea.vue @@ -0,0 +1,24 @@ + + +