@edgedev/create-edge-app 1.0.41 → 1.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.dev +1 -0
- package/.vscode/settings.json +1 -1
- package/app.vue +72 -21
- package/assets/css/tailwind.css +78 -0
- package/bin/cli.js +1 -1
- package/components/subToolbar.vue +4 -13
- package/components/ui/accordion/Accordion.vue +19 -0
- package/components/ui/accordion/AccordionContent.vue +24 -0
- package/components/ui/accordion/AccordionItem.vue +24 -0
- package/components/ui/accordion/AccordionTrigger.vue +39 -0
- package/components/ui/accordion/index.js +4 -0
- package/components/ui/accordion/index.ts +4 -0
- package/components/ui/alert/Alert.vue +16 -0
- package/components/ui/alert/AlertDescription.vue +14 -0
- package/components/ui/alert/AlertTitle.vue +14 -0
- package/components/ui/alert/index.js +21 -0
- package/components/ui/alert/index.ts +23 -0
- package/components/ui/alert-dialog/AlertDialog.vue +14 -0
- package/components/ui/alert-dialog/AlertDialogAction.vue +20 -0
- package/components/ui/alert-dialog/AlertDialogCancel.vue +20 -0
- package/components/ui/alert-dialog/AlertDialogContent.vue +42 -0
- package/components/ui/alert-dialog/AlertDialogDescription.vue +25 -0
- package/components/ui/alert-dialog/AlertDialogFooter.vue +21 -0
- package/components/ui/alert-dialog/AlertDialogHeader.vue +16 -0
- package/components/ui/alert-dialog/AlertDialogTitle.vue +22 -0
- package/components/ui/alert-dialog/AlertDialogTrigger.vue +11 -0
- package/components/ui/alert-dialog/index.ts +9 -0
- package/components/ui/aspect-ratio/AspectRatio.vue +11 -0
- package/components/ui/aspect-ratio/index.ts +1 -0
- package/components/ui/auto-form/AutoForm.vue +105 -0
- package/components/ui/auto-form/AutoFormField.vue +45 -0
- package/components/ui/auto-form/AutoFormFieldArray.vue +110 -0
- package/components/ui/auto-form/AutoFormFieldBoolean.vue +41 -0
- package/components/ui/auto-form/AutoFormFieldDate.vue +57 -0
- package/components/ui/auto-form/AutoFormFieldEnum.vue +49 -0
- package/components/ui/auto-form/AutoFormFieldFile.vue +74 -0
- package/components/ui/auto-form/AutoFormFieldInput.vue +36 -0
- package/components/ui/auto-form/AutoFormFieldNumber.vue +32 -0
- package/components/ui/auto-form/AutoFormFieldObject.vue +78 -0
- package/components/ui/auto-form/AutoFormLabel.vue +14 -0
- package/components/ui/auto-form/constant.ts +39 -0
- package/components/ui/auto-form/dependencies.ts +92 -0
- package/components/ui/auto-form/index.ts +15 -0
- package/components/ui/auto-form/interface.ts +81 -0
- package/components/ui/auto-form/utils.ts +171 -0
- package/components/ui/avatar/Avatar.vue +21 -0
- package/components/ui/avatar/AvatarFallback.vue +11 -0
- package/components/ui/avatar/AvatarImage.vue +9 -0
- package/components/ui/avatar/index.ts +24 -0
- package/components/ui/badge/Badge.vue +16 -0
- package/components/ui/badge/index.ts +25 -0
- package/components/ui/breadcrumb/Breadcrumb.vue +13 -0
- package/components/ui/breadcrumb/BreadcrumbEllipsis.vue +22 -0
- package/components/ui/breadcrumb/BreadcrumbItem.vue +16 -0
- package/components/ui/breadcrumb/BreadcrumbLink.vue +19 -0
- package/components/ui/breadcrumb/BreadcrumbList.vue +16 -0
- package/components/ui/breadcrumb/BreadcrumbPage.vue +19 -0
- package/components/ui/breadcrumb/BreadcrumbSeparator.vue +21 -0
- package/components/ui/breadcrumb/index.ts +7 -0
- package/components/ui/button/Button.vue +26 -0
- package/components/ui/button/index.js +33 -0
- package/components/ui/button/index.ts +35 -0
- package/components/ui/calendar/Calendar.vue +60 -0
- package/components/ui/calendar/CalendarCell.vue +24 -0
- package/components/ui/calendar/CalendarCellTrigger.vue +38 -0
- package/components/ui/calendar/CalendarGrid.vue +24 -0
- package/components/ui/calendar/CalendarGridBody.vue +11 -0
- package/components/ui/calendar/CalendarGridHead.vue +11 -0
- package/components/ui/calendar/CalendarGridRow.vue +21 -0
- package/components/ui/calendar/CalendarHeadCell.vue +21 -0
- package/components/ui/calendar/CalendarHeader.vue +21 -0
- package/components/ui/calendar/CalendarHeading.vue +27 -0
- package/components/ui/calendar/CalendarNextButton.vue +32 -0
- package/components/ui/calendar/CalendarPrevButton.vue +32 -0
- package/components/ui/calendar/index.ts +12 -0
- package/components/ui/card/Card.vue +21 -0
- package/components/ui/card/CardContent.vue +14 -0
- package/components/ui/card/CardDescription.vue +14 -0
- package/components/ui/card/CardFooter.vue +14 -0
- package/components/ui/card/CardHeader.vue +14 -0
- package/components/ui/card/CardTitle.vue +18 -0
- package/components/ui/card/index.js +6 -0
- package/components/ui/card/index.ts +6 -0
- package/components/ui/carousel/Carousel.vue +44 -0
- package/components/ui/carousel/CarouselContent.vue +29 -0
- package/components/ui/carousel/CarouselItem.vue +23 -0
- package/components/ui/carousel/CarouselNext.vue +30 -0
- package/components/ui/carousel/CarouselPrevious.vue +30 -0
- package/components/ui/carousel/index.ts +10 -0
- package/components/ui/carousel/interface.ts +20 -0
- package/components/ui/carousel/useCarousel.ts +59 -0
- package/components/ui/chart/ChartCrosshair.vue +44 -0
- package/components/ui/chart/ChartLegend.vue +50 -0
- package/components/ui/chart/ChartSingleTooltip.vue +63 -0
- package/components/ui/chart/ChartTooltip.vue +40 -0
- package/components/ui/chart/index.ts +18 -0
- package/components/ui/chart/interface.ts +64 -0
- package/components/ui/chart-area/AreaChart.vue +136 -0
- package/components/ui/chart-area/index.ts +66 -0
- package/components/ui/chart-bar/BarChart.vue +115 -0
- package/components/ui/chart-bar/index.ts +66 -0
- package/components/ui/chart-donut/DonutChart.vue +100 -0
- package/components/ui/chart-donut/index.ts +39 -0
- package/components/ui/chart-line/LineChart.vue +105 -0
- package/components/ui/chart-line/index.ts +66 -0
- package/components/ui/checkbox/Checkbox.vue +33 -0
- package/components/ui/checkbox/index.ts +1 -0
- package/components/ui/collapsible/Collapsible.vue +15 -0
- package/components/ui/collapsible/CollapsibleContent.vue +11 -0
- package/components/ui/collapsible/CollapsibleTrigger.vue +11 -0
- package/components/ui/collapsible/index.ts +3 -0
- package/components/ui/command/Command.vue +30 -0
- package/components/ui/command/CommandDialog.vue +21 -0
- package/components/ui/command/CommandEmpty.vue +20 -0
- package/components/ui/command/CommandGroup.vue +29 -0
- package/components/ui/command/CommandInput.vue +33 -0
- package/components/ui/command/CommandItem.vue +26 -0
- package/components/ui/command/CommandList.vue +27 -0
- package/components/ui/command/CommandSeparator.vue +23 -0
- package/components/ui/command/CommandShortcut.vue +14 -0
- package/components/ui/command/index.js +9 -0
- package/components/ui/command/index.ts +9 -0
- package/components/ui/context-menu/ContextMenu.vue +15 -0
- package/components/ui/context-menu/ContextMenuCheckboxItem.vue +40 -0
- package/components/ui/context-menu/ContextMenuContent.vue +36 -0
- package/components/ui/context-menu/ContextMenuGroup.vue +11 -0
- package/components/ui/context-menu/ContextMenuItem.vue +34 -0
- package/components/ui/context-menu/ContextMenuLabel.vue +25 -0
- package/components/ui/context-menu/ContextMenuPortal.vue +11 -0
- package/components/ui/context-menu/ContextMenuRadioGroup.vue +19 -0
- package/components/ui/context-menu/ContextMenuRadioItem.vue +40 -0
- package/components/ui/context-menu/ContextMenuSeparator.vue +20 -0
- package/components/ui/context-menu/ContextMenuShortcut.vue +14 -0
- package/components/ui/context-menu/ContextMenuSub.vue +19 -0
- package/components/ui/context-menu/ContextMenuSubContent.vue +35 -0
- package/components/ui/context-menu/ContextMenuSubTrigger.vue +34 -0
- package/components/ui/context-menu/ContextMenuTrigger.vue +13 -0
- package/components/ui/context-menu/index.ts +14 -0
- package/components/ui/dialog/Dialog.vue +14 -0
- package/components/ui/dialog/DialogClose.vue +11 -0
- package/components/ui/dialog/DialogContent.vue +50 -0
- package/components/ui/dialog/DialogDescription.vue +24 -0
- package/components/ui/dialog/DialogFooter.vue +19 -0
- package/components/ui/dialog/DialogHeader.vue +16 -0
- package/components/ui/dialog/DialogScrollContent.vue +59 -0
- package/components/ui/dialog/DialogTitle.vue +29 -0
- package/components/ui/dialog/DialogTrigger.vue +11 -0
- package/components/ui/dialog/index.js +9 -0
- package/components/ui/dialog/index.ts +9 -0
- package/components/ui/drawer/Drawer.vue +19 -0
- package/components/ui/drawer/DrawerContent.vue +28 -0
- package/components/ui/drawer/DrawerDescription.vue +20 -0
- package/components/ui/drawer/DrawerFooter.vue +14 -0
- package/components/ui/drawer/DrawerHeader.vue +14 -0
- package/components/ui/drawer/DrawerOverlay.vue +18 -0
- package/components/ui/drawer/DrawerTitle.vue +20 -0
- package/components/ui/drawer/index.ts +8 -0
- package/components/ui/dropdown-menu/DropdownMenu.vue +14 -0
- package/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +40 -0
- package/components/ui/dropdown-menu/DropdownMenuContent.vue +38 -0
- package/components/ui/dropdown-menu/DropdownMenuGroup.vue +11 -0
- package/components/ui/dropdown-menu/DropdownMenuItem.vue +28 -0
- package/components/ui/dropdown-menu/DropdownMenuLabel.vue +24 -0
- package/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +19 -0
- package/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +41 -0
- package/components/ui/dropdown-menu/DropdownMenuSeparator.vue +22 -0
- package/components/ui/dropdown-menu/DropdownMenuShortcut.vue +14 -0
- package/components/ui/dropdown-menu/DropdownMenuSub.vue +19 -0
- package/components/ui/dropdown-menu/DropdownMenuSubContent.vue +30 -0
- package/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +33 -0
- package/components/ui/dropdown-menu/DropdownMenuTrigger.vue +13 -0
- package/components/ui/dropdown-menu/index.ts +16 -0
- package/components/ui/form/FormControl.vue +16 -0
- package/components/ui/form/FormDescription.vue +20 -0
- package/components/ui/form/FormItem.vue +19 -0
- package/components/ui/form/FormLabel.vue +23 -0
- package/components/ui/form/FormMessage.vue +16 -0
- package/components/ui/form/index.js +7 -0
- package/components/ui/form/index.ts +7 -0
- package/components/ui/form/injectionKeys.js +1 -0
- package/components/ui/form/injectionKeys.ts +4 -0
- package/components/ui/form/useFormField.js +36 -0
- package/components/ui/form/useFormField.ts +30 -0
- package/components/ui/hover-card/HoverCard.vue +14 -0
- package/components/ui/hover-card/HoverCardContent.vue +41 -0
- package/components/ui/hover-card/HoverCardTrigger.vue +11 -0
- package/components/ui/hover-card/index.ts +3 -0
- package/components/ui/input/Input.vue +24 -0
- package/components/ui/input/index.js +1 -0
- package/components/ui/input/index.ts +1 -0
- package/components/ui/label/Label.vue +27 -0
- package/components/ui/label/index.js +1 -0
- package/components/ui/label/index.ts +1 -0
- package/components/ui/menubar/Menubar.vue +35 -0
- package/components/ui/menubar/MenubarCheckboxItem.vue +40 -0
- package/components/ui/menubar/MenubarContent.vue +43 -0
- package/components/ui/menubar/MenubarGroup.vue +11 -0
- package/components/ui/menubar/MenubarItem.vue +35 -0
- package/components/ui/menubar/MenubarLabel.vue +13 -0
- package/components/ui/menubar/MenubarMenu.vue +11 -0
- package/components/ui/menubar/MenubarRadioGroup.vue +20 -0
- package/components/ui/menubar/MenubarRadioItem.vue +40 -0
- package/components/ui/menubar/MenubarSeparator.vue +19 -0
- package/components/ui/menubar/MenubarShortcut.vue +14 -0
- package/components/ui/menubar/MenubarSub.vue +19 -0
- package/components/ui/menubar/MenubarSubContent.vue +39 -0
- package/components/ui/menubar/MenubarSubTrigger.vue +30 -0
- package/components/ui/menubar/MenubarTrigger.vue +29 -0
- package/components/ui/menubar/index.ts +15 -0
- package/components/ui/navigation-menu/NavigationMenu.vue +33 -0
- package/components/ui/navigation-menu/NavigationMenuContent.vue +34 -0
- package/components/ui/navigation-menu/NavigationMenuIndicator.vue +24 -0
- package/components/ui/navigation-menu/NavigationMenuItem.vue +11 -0
- package/components/ui/navigation-menu/NavigationMenuLink.vue +19 -0
- package/components/ui/navigation-menu/NavigationMenuList.vue +29 -0
- package/components/ui/navigation-menu/NavigationMenuTrigger.vue +34 -0
- package/components/ui/navigation-menu/NavigationMenuViewport.vue +33 -0
- package/components/ui/navigation-menu/index.ts +12 -0
- package/components/ui/number-field/NumberField.vue +23 -0
- package/components/ui/number-field/NumberFieldContent.vue +14 -0
- package/components/ui/number-field/NumberFieldDecrement.vue +25 -0
- package/components/ui/number-field/NumberFieldIncrement.vue +25 -0
- package/components/ui/number-field/NumberFieldInput.vue +8 -0
- package/components/ui/number-field/index.ts +5 -0
- package/components/ui/pagination/PaginationEllipsis.vue +22 -0
- package/components/ui/pagination/PaginationFirst.vue +29 -0
- package/components/ui/pagination/PaginationLast.vue +29 -0
- package/components/ui/pagination/PaginationNext.vue +29 -0
- package/components/ui/pagination/PaginationPrev.vue +29 -0
- package/components/ui/pagination/index.ts +10 -0
- package/components/ui/pin-input/PinInput.vue +23 -0
- package/components/ui/pin-input/PinInputGroup.vue +18 -0
- package/components/ui/pin-input/PinInputInput.vue +18 -0
- package/components/ui/pin-input/PinInputSeparator.vue +15 -0
- package/components/ui/pin-input/index.ts +4 -0
- package/components/ui/popover/Popover.vue +15 -0
- package/components/ui/popover/PopoverContent.vue +48 -0
- package/components/ui/popover/PopoverTrigger.vue +11 -0
- package/components/ui/popover/index.js +3 -0
- package/components/ui/popover/index.ts +3 -0
- package/components/ui/progress/Progress.vue +39 -0
- package/components/ui/progress/index.js +1 -0
- package/components/ui/progress/index.ts +1 -0
- package/components/ui/radio-group/RadioGroup.vue +25 -0
- package/components/ui/radio-group/RadioGroupItem.vue +39 -0
- package/components/ui/radio-group/index.ts +2 -0
- package/components/ui/range-calendar/RangeCalendar.vue +60 -0
- package/components/ui/range-calendar/RangeCalendarCell.vue +24 -0
- package/components/ui/range-calendar/RangeCalendarCellTrigger.vue +40 -0
- package/components/ui/range-calendar/RangeCalendarGrid.vue +24 -0
- package/components/ui/range-calendar/RangeCalendarGridBody.vue +11 -0
- package/components/ui/range-calendar/RangeCalendarGridHead.vue +11 -0
- package/components/ui/range-calendar/RangeCalendarGridRow.vue +21 -0
- package/components/ui/range-calendar/RangeCalendarHeadCell.vue +21 -0
- package/components/ui/range-calendar/RangeCalendarHeader.vue +21 -0
- package/components/ui/range-calendar/RangeCalendarHeading.vue +27 -0
- package/components/ui/range-calendar/RangeCalendarNextButton.vue +32 -0
- package/components/ui/range-calendar/RangeCalendarPrevButton.vue +32 -0
- package/components/ui/range-calendar/index.ts +12 -0
- package/components/ui/resizable/ResizableHandle.vue +26 -0
- package/components/ui/resizable/ResizablePanelGroup.vue +21 -0
- package/components/ui/resizable/index.ts +3 -0
- package/components/ui/scroll-area/ScrollArea.vue +29 -0
- package/components/ui/scroll-area/ScrollBar.vue +30 -0
- package/components/ui/scroll-area/index.ts +2 -0
- package/components/ui/select/Select.vue +15 -0
- package/components/ui/select/SelectContent.vue +53 -0
- package/components/ui/select/SelectGroup.vue +19 -0
- package/components/ui/select/SelectItem.vue +44 -0
- package/components/ui/select/SelectItemText.vue +11 -0
- package/components/ui/select/SelectLabel.vue +13 -0
- package/components/ui/select/SelectScrollDownButton.vue +24 -0
- package/components/ui/select/SelectScrollUpButton.vue +24 -0
- package/components/ui/select/SelectSeparator.vue +17 -0
- package/components/ui/select/SelectTrigger.vue +31 -0
- package/components/ui/select/SelectValue.vue +11 -0
- package/components/ui/select/index.ts +11 -0
- package/components/ui/separator/Separator.vue +20 -0
- package/components/ui/separator/index.js +1 -0
- package/components/ui/separator/index.ts +1 -0
- package/components/ui/sheet/Sheet.vue +14 -0
- package/components/ui/sheet/SheetClose.vue +11 -0
- package/components/ui/sheet/SheetContent.vue +56 -0
- package/components/ui/sheet/SheetDescription.vue +22 -0
- package/components/ui/sheet/SheetFooter.vue +19 -0
- package/components/ui/sheet/SheetHeader.vue +16 -0
- package/components/ui/sheet/SheetTitle.vue +22 -0
- package/components/ui/sheet/SheetTrigger.vue +11 -0
- package/components/ui/sheet/index.ts +31 -0
- package/components/ui/skeleton/Skeleton.vue +14 -0
- package/components/ui/skeleton/index.ts +1 -0
- package/components/ui/slider/Slider.vue +36 -0
- package/components/ui/slider/index.ts +1 -0
- package/components/ui/sonner/Sonner.vue +22 -0
- package/components/ui/sonner/index.ts +1 -0
- package/components/ui/switch/Switch.vue +37 -0
- package/components/ui/switch/index.ts +1 -0
- package/components/ui/table/Table.vue +16 -0
- package/components/ui/table/TableBody.vue +14 -0
- package/components/ui/table/TableCaption.vue +14 -0
- package/components/ui/table/TableCell.vue +21 -0
- package/components/ui/table/TableEmpty.vue +37 -0
- package/components/ui/table/TableFooter.vue +14 -0
- package/components/ui/table/TableHead.vue +14 -0
- package/components/ui/table/TableHeader.vue +14 -0
- package/components/ui/table/TableRow.vue +14 -0
- package/components/ui/table/index.ts +8 -0
- package/components/ui/tabs/Tabs.vue +15 -0
- package/components/ui/tabs/TabsContent.vue +22 -0
- package/components/ui/tabs/TabsList.vue +25 -0
- package/components/ui/tabs/TabsTrigger.vue +27 -0
- package/components/ui/tabs/index.ts +4 -0
- package/components/ui/tags-input/TagsInput.vue +22 -0
- package/components/ui/tags-input/TagsInputInput.vue +19 -0
- package/components/ui/tags-input/TagsInputItem.vue +22 -0
- package/components/ui/tags-input/TagsInputItemDelete.vue +24 -0
- package/components/ui/tags-input/TagsInputItemText.vue +19 -0
- package/components/ui/tags-input/index.ts +5 -0
- package/components/ui/textarea/Textarea.vue +24 -0
- package/components/ui/textarea/index.ts +1 -0
- package/components/ui/toast/Toast.vue +28 -0
- package/components/ui/toast/ToastAction.vue +19 -0
- package/components/ui/toast/ToastClose.vue +22 -0
- package/components/ui/toast/ToastDescription.vue +19 -0
- package/components/ui/toast/ToastProvider.vue +11 -0
- package/components/ui/toast/ToastTitle.vue +19 -0
- package/components/ui/toast/ToastViewport.vue +17 -0
- package/components/ui/toast/Toaster.vue +30 -0
- package/components/ui/toast/index.ts +38 -0
- package/components/ui/toast/use-toast.ts +165 -0
- package/components/ui/toggle/Toggle.vue +35 -0
- package/components/ui/toggle/index.ts +27 -0
- package/components/ui/toggle-group/ToggleGroup.vue +34 -0
- package/components/ui/toggle-group/ToggleGroupItem.vue +35 -0
- package/components/ui/toggle-group/index.ts +2 -0
- package/components/ui/tooltip/Tooltip.vue +14 -0
- package/components/ui/tooltip/TooltipContent.vue +31 -0
- package/components/ui/tooltip/TooltipProvider.vue +11 -0
- package/components/ui/tooltip/TooltipTrigger.vue +11 -0
- package/components/ui/tooltip/index.ts +4 -0
- package/components/ui/v-calendar/Calendar.vue +331 -0
- package/components/ui/v-calendar/index.ts +22 -0
- package/components.json +17 -0
- package/edge-components-install.sh +1 -0
- package/jsconfig.json +9 -0
- package/lib/utils.ts +6 -0
- package/nuxt.config.ts +28 -11
- package/package.json +33 -14
- package/pages/app/account/[page].vue +71 -0
- package/pages/app/dashboard/[[collection]]/[[docId]].vue +181 -0
- package/pages/app/login.vue +9 -7
- package/pages/app/signup.vue +9 -7
- package/plugins/icons.ts +72 -0
- package/tailwind.config.js +85 -0
- package/components/.gitkeep +0 -0
- package/components/account.vue +0 -107
- package/components/billing.vue +0 -8
- package/components/bottomMenu.vue +0 -35
- package/components/dashboard.vue +0 -186
- package/components/editor.vue +0 -247
- package/components/topMenu.vue +0 -17
- package/components/userMenu.vue +0 -64
- package/composables/vuetify.ts +0 -10
- package/pages/app/[[page]]/[[collection]]/[[docId]].vue +0 -48
- package/plugins/edgeFirebaseFramework.ts +0 -5
- package/plugins/vuetify.ts +0 -14
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { MenubarSub, type MenubarSubEmits, useForwardPropsEmits } from 'radix-vue'
|
|
3
|
+
|
|
4
|
+
interface MenubarSubRootProps {
|
|
5
|
+
defaultOpen?: boolean
|
|
6
|
+
open?: boolean
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const props = defineProps<MenubarSubRootProps>()
|
|
10
|
+
const emits = defineEmits<MenubarSubEmits>()
|
|
11
|
+
|
|
12
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<MenubarSub v-bind="forwarded">
|
|
17
|
+
<slot />
|
|
18
|
+
</MenubarSub>
|
|
19
|
+
</template>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import {
|
|
4
|
+
MenubarPortal,
|
|
5
|
+
MenubarSubContent,
|
|
6
|
+
type MenubarSubContentEmits,
|
|
7
|
+
type MenubarSubContentProps,
|
|
8
|
+
useForwardPropsEmits,
|
|
9
|
+
} from 'radix-vue'
|
|
10
|
+
import { cn } from '@/lib/utils'
|
|
11
|
+
|
|
12
|
+
const props = defineProps<MenubarSubContentProps & { class?: HTMLAttributes['class'] }>()
|
|
13
|
+
|
|
14
|
+
const emits = defineEmits<MenubarSubContentEmits>()
|
|
15
|
+
|
|
16
|
+
const delegatedProps = computed(() => {
|
|
17
|
+
const { class: _, ...delegated } = props
|
|
18
|
+
|
|
19
|
+
return delegated
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<template>
|
|
26
|
+
<MenubarPortal>
|
|
27
|
+
<MenubarSubContent
|
|
28
|
+
v-bind="forwarded"
|
|
29
|
+
:class="
|
|
30
|
+
cn(
|
|
31
|
+
'z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
|
|
32
|
+
props.class,
|
|
33
|
+
)
|
|
34
|
+
"
|
|
35
|
+
>
|
|
36
|
+
<slot />
|
|
37
|
+
</MenubarSubContent>
|
|
38
|
+
</MenubarPortal>
|
|
39
|
+
</template>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { MenubarSubTrigger, type MenubarSubTriggerProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { ChevronRight } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '@/lib/utils'
|
|
6
|
+
|
|
7
|
+
const props = defineProps<MenubarSubTriggerProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
|
|
8
|
+
|
|
9
|
+
const delegatedProps = computed(() => {
|
|
10
|
+
const { class: _, ...delegated } = props
|
|
11
|
+
|
|
12
|
+
return delegated
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<MenubarSubTrigger
|
|
20
|
+
v-bind="forwardedProps"
|
|
21
|
+
:class="cn(
|
|
22
|
+
'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',
|
|
23
|
+
inset && 'pl-8',
|
|
24
|
+
props.class,
|
|
25
|
+
)"
|
|
26
|
+
>
|
|
27
|
+
<slot />
|
|
28
|
+
<ChevronRight class="ml-auto h-4 w-4" />
|
|
29
|
+
</MenubarSubTrigger>
|
|
30
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { MenubarTrigger, type MenubarTriggerProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '@/lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<MenubarTriggerProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
|
|
8
|
+
const delegatedProps = computed(() => {
|
|
9
|
+
const { class: _, ...delegated } = props
|
|
10
|
+
|
|
11
|
+
return delegated
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<MenubarTrigger
|
|
19
|
+
v-bind="forwardedProps"
|
|
20
|
+
:class="
|
|
21
|
+
cn(
|
|
22
|
+
'flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',
|
|
23
|
+
props.class,
|
|
24
|
+
)
|
|
25
|
+
"
|
|
26
|
+
>
|
|
27
|
+
<slot />
|
|
28
|
+
</MenubarTrigger>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { default as Menubar } from './Menubar.vue'
|
|
2
|
+
export { default as MenubarItem } from './MenubarItem.vue'
|
|
3
|
+
export { default as MenubarContent } from './MenubarContent.vue'
|
|
4
|
+
export { default as MenubarGroup } from './MenubarGroup.vue'
|
|
5
|
+
export { default as MenubarMenu } from './MenubarMenu.vue'
|
|
6
|
+
export { default as MenubarRadioGroup } from './MenubarRadioGroup.vue'
|
|
7
|
+
export { default as MenubarRadioItem } from './MenubarRadioItem.vue'
|
|
8
|
+
export { default as MenubarCheckboxItem } from './MenubarCheckboxItem.vue'
|
|
9
|
+
export { default as MenubarSeparator } from './MenubarSeparator.vue'
|
|
10
|
+
export { default as MenubarSub } from './MenubarSub.vue'
|
|
11
|
+
export { default as MenubarSubContent } from './MenubarSubContent.vue'
|
|
12
|
+
export { default as MenubarSubTrigger } from './MenubarSubTrigger.vue'
|
|
13
|
+
export { default as MenubarTrigger } from './MenubarTrigger.vue'
|
|
14
|
+
export { default as MenubarShortcut } from './MenubarShortcut.vue'
|
|
15
|
+
export { default as MenubarLabel } from './MenubarLabel.vue'
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import {
|
|
4
|
+
NavigationMenuRoot,
|
|
5
|
+
type NavigationMenuRootEmits,
|
|
6
|
+
type NavigationMenuRootProps,
|
|
7
|
+
useForwardPropsEmits,
|
|
8
|
+
} from 'radix-vue'
|
|
9
|
+
import NavigationMenuViewport from './NavigationMenuViewport.vue'
|
|
10
|
+
import { cn } from '@/lib/utils'
|
|
11
|
+
|
|
12
|
+
const props = defineProps<NavigationMenuRootProps & { class?: HTMLAttributes['class'] }>()
|
|
13
|
+
|
|
14
|
+
const emits = defineEmits<NavigationMenuRootEmits>()
|
|
15
|
+
|
|
16
|
+
const delegatedProps = computed(() => {
|
|
17
|
+
const { class: _, ...delegated } = props
|
|
18
|
+
|
|
19
|
+
return delegated
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<template>
|
|
26
|
+
<NavigationMenuRoot
|
|
27
|
+
v-bind="forwarded"
|
|
28
|
+
:class="cn('relative z-10 flex max-w-max flex-1 items-center justify-center', props.class)"
|
|
29
|
+
>
|
|
30
|
+
<slot />
|
|
31
|
+
<NavigationMenuViewport />
|
|
32
|
+
</NavigationMenuRoot>
|
|
33
|
+
</template>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import {
|
|
4
|
+
NavigationMenuContent,
|
|
5
|
+
type NavigationMenuContentEmits,
|
|
6
|
+
type NavigationMenuContentProps,
|
|
7
|
+
useForwardPropsEmits,
|
|
8
|
+
} from 'radix-vue'
|
|
9
|
+
import { cn } from '@/lib/utils'
|
|
10
|
+
|
|
11
|
+
const props = defineProps<NavigationMenuContentProps & { class?: HTMLAttributes['class'] }>()
|
|
12
|
+
|
|
13
|
+
const emits = defineEmits<NavigationMenuContentEmits>()
|
|
14
|
+
|
|
15
|
+
const delegatedProps = computed(() => {
|
|
16
|
+
const { class: _, ...delegated } = props
|
|
17
|
+
|
|
18
|
+
return delegated
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<NavigationMenuContent
|
|
26
|
+
v-bind="forwarded"
|
|
27
|
+
:class="cn(
|
|
28
|
+
'left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto',
|
|
29
|
+
props.class,
|
|
30
|
+
)"
|
|
31
|
+
>
|
|
32
|
+
<slot />
|
|
33
|
+
</NavigationMenuContent>
|
|
34
|
+
</template>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { NavigationMenuIndicator, type NavigationMenuIndicatorProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '@/lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<NavigationMenuIndicatorProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
|
|
8
|
+
const delegatedProps = computed(() => {
|
|
9
|
+
const { class: _, ...delegated } = props
|
|
10
|
+
|
|
11
|
+
return delegated
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<NavigationMenuIndicator
|
|
19
|
+
v-bind="forwardedProps"
|
|
20
|
+
:class="cn('top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in', props.class)"
|
|
21
|
+
>
|
|
22
|
+
<div class="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
|
|
23
|
+
</NavigationMenuIndicator>
|
|
24
|
+
</template>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { NavigationMenuItem, type NavigationMenuItemProps } from 'radix-vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps<NavigationMenuItemProps>()
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<template>
|
|
8
|
+
<NavigationMenuItem v-bind="props">
|
|
9
|
+
<slot />
|
|
10
|
+
</NavigationMenuItem>
|
|
11
|
+
</template>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
NavigationMenuLink,
|
|
4
|
+
type NavigationMenuLinkEmits,
|
|
5
|
+
type NavigationMenuLinkProps,
|
|
6
|
+
useForwardPropsEmits,
|
|
7
|
+
} from 'radix-vue'
|
|
8
|
+
|
|
9
|
+
const props = defineProps<NavigationMenuLinkProps>()
|
|
10
|
+
const emits = defineEmits<NavigationMenuLinkEmits>()
|
|
11
|
+
|
|
12
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<NavigationMenuLink v-bind="forwarded">
|
|
17
|
+
<slot />
|
|
18
|
+
</NavigationMenuLink>
|
|
19
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { NavigationMenuList, type NavigationMenuListProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '@/lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<NavigationMenuListProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
|
|
8
|
+
const delegatedProps = computed(() => {
|
|
9
|
+
const { class: _, ...delegated } = props
|
|
10
|
+
|
|
11
|
+
return delegated
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<NavigationMenuList
|
|
19
|
+
v-bind="forwardedProps"
|
|
20
|
+
:class="
|
|
21
|
+
cn(
|
|
22
|
+
'group flex flex-1 list-none items-center justify-center gap-x-1',
|
|
23
|
+
props.class,
|
|
24
|
+
)
|
|
25
|
+
"
|
|
26
|
+
>
|
|
27
|
+
<slot />
|
|
28
|
+
</NavigationMenuList>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import {
|
|
4
|
+
NavigationMenuTrigger,
|
|
5
|
+
type NavigationMenuTriggerProps,
|
|
6
|
+
useForwardProps,
|
|
7
|
+
} from 'radix-vue'
|
|
8
|
+
import { ChevronDown } from 'lucide-vue-next'
|
|
9
|
+
import { navigationMenuTriggerStyle } from '.'
|
|
10
|
+
import { cn } from '@/lib/utils'
|
|
11
|
+
|
|
12
|
+
const props = defineProps<NavigationMenuTriggerProps & { class?: HTMLAttributes['class'] }>()
|
|
13
|
+
|
|
14
|
+
const delegatedProps = computed(() => {
|
|
15
|
+
const { class: _, ...delegated } = props
|
|
16
|
+
|
|
17
|
+
return delegated
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<NavigationMenuTrigger
|
|
25
|
+
v-bind="forwardedProps"
|
|
26
|
+
:class="cn(navigationMenuTriggerStyle(), 'group', props.class)"
|
|
27
|
+
>
|
|
28
|
+
<slot />
|
|
29
|
+
<ChevronDown
|
|
30
|
+
class="relative top-px ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
|
|
31
|
+
aria-hidden="true"
|
|
32
|
+
/>
|
|
33
|
+
</NavigationMenuTrigger>
|
|
34
|
+
</template>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import {
|
|
4
|
+
NavigationMenuViewport,
|
|
5
|
+
type NavigationMenuViewportProps,
|
|
6
|
+
useForwardProps,
|
|
7
|
+
} from 'radix-vue'
|
|
8
|
+
import { cn } from '@/lib/utils'
|
|
9
|
+
|
|
10
|
+
const props = defineProps<NavigationMenuViewportProps & { class?: HTMLAttributes['class'] }>()
|
|
11
|
+
|
|
12
|
+
const delegatedProps = computed(() => {
|
|
13
|
+
const { class: _, ...delegated } = props
|
|
14
|
+
|
|
15
|
+
return delegated
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<div class="absolute left-0 top-full flex justify-center">
|
|
23
|
+
<NavigationMenuViewport
|
|
24
|
+
v-bind="forwardedProps"
|
|
25
|
+
:class="
|
|
26
|
+
cn(
|
|
27
|
+
'origin-top-center relative mt-1.5 h-[--radix-navigation-menu-viewport-height] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[--radix-navigation-menu-viewport-width]',
|
|
28
|
+
props.class,
|
|
29
|
+
)
|
|
30
|
+
"
|
|
31
|
+
/>
|
|
32
|
+
</div>
|
|
33
|
+
</template>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cva } from 'class-variance-authority'
|
|
2
|
+
|
|
3
|
+
export { default as NavigationMenu } from './NavigationMenu.vue'
|
|
4
|
+
export { default as NavigationMenuList } from './NavigationMenuList.vue'
|
|
5
|
+
export { default as NavigationMenuItem } from './NavigationMenuItem.vue'
|
|
6
|
+
export { default as NavigationMenuTrigger } from './NavigationMenuTrigger.vue'
|
|
7
|
+
export { default as NavigationMenuContent } from './NavigationMenuContent.vue'
|
|
8
|
+
export { default as NavigationMenuLink } from './NavigationMenuLink.vue'
|
|
9
|
+
|
|
10
|
+
export const navigationMenuTriggerStyle = cva(
|
|
11
|
+
'group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50',
|
|
12
|
+
)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { NumberFieldRootEmits, NumberFieldRootProps } from 'radix-vue'
|
|
3
|
+
import { NumberFieldRoot, useForwardPropsEmits } from 'radix-vue'
|
|
4
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
5
|
+
import { cn } from '@/lib/utils'
|
|
6
|
+
|
|
7
|
+
const props = defineProps<NumberFieldRootProps & { class?: HTMLAttributes['class'] }>()
|
|
8
|
+
const emits = defineEmits<NumberFieldRootEmits>()
|
|
9
|
+
|
|
10
|
+
const delegatedProps = computed(() => {
|
|
11
|
+
const { class: _, ...delegated } = props
|
|
12
|
+
|
|
13
|
+
return delegated
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<NumberFieldRoot v-bind="forwarded" :class="cn('grid gap-1.5', props.class)">
|
|
21
|
+
<slot />
|
|
22
|
+
</NumberFieldRoot>
|
|
23
|
+
</template>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'vue'
|
|
3
|
+
import { cn } from '@/lib/utils'
|
|
4
|
+
|
|
5
|
+
const props = defineProps<{
|
|
6
|
+
class?: HTMLAttributes['class']
|
|
7
|
+
}>()
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<div :class="cn('relative', props.class)">
|
|
12
|
+
<slot />
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { NumberFieldDecrementProps } from 'radix-vue'
|
|
3
|
+
import { NumberFieldDecrement, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
5
|
+
import { Minus } from 'lucide-vue-next'
|
|
6
|
+
import { cn } from '@/lib/utils'
|
|
7
|
+
|
|
8
|
+
const props = defineProps<NumberFieldDecrementProps & { class?: HTMLAttributes['class'] }>()
|
|
9
|
+
|
|
10
|
+
const delegatedProps = computed(() => {
|
|
11
|
+
const { class: _, ...delegated } = props
|
|
12
|
+
|
|
13
|
+
return delegated
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
const forwarded = useForwardProps(delegatedProps)
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<NumberFieldDecrement v-bind="forwarded" :class="cn('absolute top-1/2 -translate-y-1/2 left-0 p-3 disabled:cursor-not-allowed disabled:opacity-20', props.class)">
|
|
21
|
+
<slot>
|
|
22
|
+
<Minus class="h-4 w-4" />
|
|
23
|
+
</slot>
|
|
24
|
+
</NumberFieldDecrement>
|
|
25
|
+
</template>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { NumberFieldIncrementProps } from 'radix-vue'
|
|
3
|
+
import { NumberFieldIncrement, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
5
|
+
import { Plus } from 'lucide-vue-next'
|
|
6
|
+
import { cn } from '@/lib/utils'
|
|
7
|
+
|
|
8
|
+
const props = defineProps<NumberFieldIncrementProps & { class?: HTMLAttributes['class'] }>()
|
|
9
|
+
|
|
10
|
+
const delegatedProps = computed(() => {
|
|
11
|
+
const { class: _, ...delegated } = props
|
|
12
|
+
|
|
13
|
+
return delegated
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
const forwarded = useForwardProps(delegatedProps)
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<NumberFieldIncrement v-bind="forwarded" :class="cn('absolute top-1/2 -translate-y-1/2 right-0 disabled:cursor-not-allowed disabled:opacity-20 p-3', props.class)">
|
|
21
|
+
<slot>
|
|
22
|
+
<Plus class="h-4 w-4" />
|
|
23
|
+
</slot>
|
|
24
|
+
</NumberFieldIncrement>
|
|
25
|
+
</template>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { NumberFieldInput } from 'radix-vue'
|
|
3
|
+
import { cn } from '@/lib/utils'
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<template>
|
|
7
|
+
<NumberFieldInput :class="cn('flex h-10 w-full rounded-md border border-input bg-background px-10 py-2 text-sm text-center ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50')" />
|
|
8
|
+
</template>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as NumberField } from './NumberField.vue'
|
|
2
|
+
export { default as NumberFieldInput } from './NumberFieldInput.vue'
|
|
3
|
+
export { default as NumberFieldIncrement } from './NumberFieldIncrement.vue'
|
|
4
|
+
export { default as NumberFieldDecrement } from './NumberFieldDecrement.vue'
|
|
5
|
+
export { default as NumberFieldContent } from './NumberFieldContent.vue'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationEllipsis, type PaginationEllipsisProps } from 'radix-vue'
|
|
4
|
+
import { MoreHorizontal } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '@/lib/utils'
|
|
6
|
+
|
|
7
|
+
const props = defineProps<PaginationEllipsisProps & { class?: HTMLAttributes['class'] }>()
|
|
8
|
+
|
|
9
|
+
const delegatedProps = computed(() => {
|
|
10
|
+
const { class: _, ...delegated } = props
|
|
11
|
+
|
|
12
|
+
return delegated
|
|
13
|
+
})
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<template>
|
|
17
|
+
<PaginationEllipsis v-bind="delegatedProps" :class="cn('w-9 h-9 flex items-center justify-center', props.class)">
|
|
18
|
+
<slot>
|
|
19
|
+
<MoreHorizontal />
|
|
20
|
+
</slot>
|
|
21
|
+
</PaginationEllipsis>
|
|
22
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationFirst, type PaginationFirstProps } from 'radix-vue'
|
|
4
|
+
import { ChevronsLeft } from 'lucide-vue-next'
|
|
5
|
+
import {
|
|
6
|
+
Button,
|
|
7
|
+
} from '@/components/ui/button'
|
|
8
|
+
import { cn } from '@/lib/utils'
|
|
9
|
+
|
|
10
|
+
const props = withDefaults(defineProps<PaginationFirstProps & { class?: HTMLAttributes['class'] }>(), {
|
|
11
|
+
asChild: true,
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const delegatedProps = computed(() => {
|
|
15
|
+
const { class: _, ...delegated } = props
|
|
16
|
+
|
|
17
|
+
return delegated
|
|
18
|
+
})
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<PaginationFirst v-bind="delegatedProps">
|
|
23
|
+
<Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline">
|
|
24
|
+
<slot>
|
|
25
|
+
<ChevronsLeft class="h-4 w-4" />
|
|
26
|
+
</slot>
|
|
27
|
+
</Button>
|
|
28
|
+
</PaginationFirst>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationLast, type PaginationLastProps } from 'radix-vue'
|
|
4
|
+
import { ChevronsRight } from 'lucide-vue-next'
|
|
5
|
+
import {
|
|
6
|
+
Button,
|
|
7
|
+
} from '@/components/ui/button'
|
|
8
|
+
import { cn } from '@/lib/utils'
|
|
9
|
+
|
|
10
|
+
const props = withDefaults(defineProps<PaginationLastProps & { class?: HTMLAttributes['class'] }>(), {
|
|
11
|
+
asChild: true,
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const delegatedProps = computed(() => {
|
|
15
|
+
const { class: _, ...delegated } = props
|
|
16
|
+
|
|
17
|
+
return delegated
|
|
18
|
+
})
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<PaginationLast v-bind="delegatedProps">
|
|
23
|
+
<Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline">
|
|
24
|
+
<slot>
|
|
25
|
+
<ChevronsRight class="h-4 w-4" />
|
|
26
|
+
</slot>
|
|
27
|
+
</Button>
|
|
28
|
+
</PaginationLast>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationNext, type PaginationNextProps } from 'radix-vue'
|
|
4
|
+
import { ChevronRight } from 'lucide-vue-next'
|
|
5
|
+
import {
|
|
6
|
+
Button,
|
|
7
|
+
} from '@/components/ui/button'
|
|
8
|
+
import { cn } from '@/lib/utils'
|
|
9
|
+
|
|
10
|
+
const props = withDefaults(defineProps<PaginationNextProps & { class?: HTMLAttributes['class'] }>(), {
|
|
11
|
+
asChild: true,
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const delegatedProps = computed(() => {
|
|
15
|
+
const { class: _, ...delegated } = props
|
|
16
|
+
|
|
17
|
+
return delegated
|
|
18
|
+
})
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<PaginationNext v-bind="delegatedProps">
|
|
23
|
+
<Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline">
|
|
24
|
+
<slot>
|
|
25
|
+
<ChevronRight class="h-4 w-4" />
|
|
26
|
+
</slot>
|
|
27
|
+
</Button>
|
|
28
|
+
</PaginationNext>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationPrev, type PaginationPrevProps } from 'radix-vue'
|
|
4
|
+
import { ChevronLeft } from 'lucide-vue-next'
|
|
5
|
+
import {
|
|
6
|
+
Button,
|
|
7
|
+
} from '@/components/ui/button'
|
|
8
|
+
import { cn } from '@/lib/utils'
|
|
9
|
+
|
|
10
|
+
const props = withDefaults(defineProps<PaginationPrevProps & { class?: HTMLAttributes['class'] }>(), {
|
|
11
|
+
asChild: true,
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const delegatedProps = computed(() => {
|
|
15
|
+
const { class: _, ...delegated } = props
|
|
16
|
+
|
|
17
|
+
return delegated
|
|
18
|
+
})
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<PaginationPrev v-bind="delegatedProps">
|
|
23
|
+
<Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline">
|
|
24
|
+
<slot>
|
|
25
|
+
<ChevronLeft class="h-4 w-4" />
|
|
26
|
+
</slot>
|
|
27
|
+
</Button>
|
|
28
|
+
</PaginationPrev>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export {
|
|
2
|
+
PaginationRoot as Pagination,
|
|
3
|
+
PaginationList,
|
|
4
|
+
PaginationListItem,
|
|
5
|
+
} from 'radix-vue'
|
|
6
|
+
export { default as PaginationEllipsis } from './PaginationEllipsis.vue'
|
|
7
|
+
export { default as PaginationFirst } from './PaginationFirst.vue'
|
|
8
|
+
export { default as PaginationLast } from './PaginationLast.vue'
|
|
9
|
+
export { default as PaginationNext } from './PaginationNext.vue'
|
|
10
|
+
export { default as PaginationPrev } from './PaginationPrev.vue'
|