From 57593b4370ef6eca972fd16a5400e624667064f5 Mon Sep 17 00:00:00 2001 From: Liviu Burcusel Date: Sun, 21 Dec 2025 13:17:58 +0100 Subject: [PATCH] GF-4 (#4) Start work on main layout --- app/components/ui/input/Input.vue | 35 ++++++ app/components/ui/input/index.ts | 1 + app/components/ui/separator/Separator.vue | 27 +++++ app/components/ui/separator/index.ts | 1 + app/components/ui/sheet/Sheet.vue | 15 +++ app/components/ui/sheet/SheetClose.vue | 12 +++ app/components/ui/sheet/SheetContent.vue | 60 +++++++++++ app/components/ui/sheet/SheetDescription.vue | 21 ++++ app/components/ui/sheet/SheetFooter.vue | 12 +++ app/components/ui/sheet/SheetHeader.vue | 12 +++ app/components/ui/sheet/SheetOverlay.vue | 26 +++++ app/components/ui/sheet/SheetTitle.vue | 17 +++ app/components/ui/sheet/SheetTrigger.vue | 12 +++ app/components/ui/sheet/index.ts | 8 ++ app/components/ui/sidebar/Sidebar.vue | 100 ++++++++++++++++++ app/components/ui/sidebar/SidebarContent.vue | 18 ++++ app/components/ui/sidebar/SidebarFooter.vue | 14 +++ app/components/ui/sidebar/SidebarGroup.vue | 14 +++ .../ui/sidebar/SidebarGroupAction.vue | 31 ++++++ .../ui/sidebar/SidebarGroupContent.vue | 14 +++ .../ui/sidebar/SidebarGroupLabel.vue | 30 ++++++ app/components/ui/sidebar/SidebarHeader.vue | 14 +++ app/components/ui/sidebar/SidebarInput.vue | 15 +++ app/components/ui/sidebar/SidebarInset.vue | 23 ++++ app/components/ui/sidebar/SidebarMenu.vue | 14 +++ .../ui/sidebar/SidebarMenuAction.vue | 42 ++++++++ .../ui/sidebar/SidebarMenuBadge.vue | 28 +++++ .../ui/sidebar/SidebarMenuButton.vue | 49 +++++++++ .../ui/sidebar/SidebarMenuButtonChild.vue | 36 +++++++ app/components/ui/sidebar/SidebarMenuItem.vue | 14 +++ .../ui/sidebar/SidebarMenuSkeleton.vue | 31 ++++++ app/components/ui/sidebar/SidebarMenuSub.vue | 24 +++++ .../ui/sidebar/SidebarMenuSubButton.vue | 43 ++++++++ .../ui/sidebar/SidebarMenuSubItem.vue | 14 +++ app/components/ui/sidebar/SidebarProvider.vue | 92 ++++++++++++++++ app/components/ui/sidebar/SidebarRail.vue | 35 ++++++ .../ui/sidebar/SidebarSeparator.vue | 15 +++ app/components/ui/sidebar/SidebarTrigger.vue | 27 +++++ app/components/ui/sidebar/index.ts | 60 +++++++++++ app/components/ui/sidebar/utils.ts | 19 ++++ app/components/ui/skeleton/Skeleton.vue | 14 +++ app/components/ui/skeleton/index.ts | 1 + app/components/ui/tooltip/Tooltip.vue | 15 +++ app/components/ui/tooltip/TooltipContent.vue | 41 +++++++ app/components/ui/tooltip/TooltipProvider.vue | 14 +++ app/components/ui/tooltip/TooltipTrigger.vue | 12 +++ app/components/ui/tooltip/index.ts | 4 + app/layouts/Default.vue | 15 ++- app/layouts/default/Sidebar.vue | 45 ++++++++ 49 files changed, 1233 insertions(+), 3 deletions(-) create mode 100644 app/components/ui/input/Input.vue create mode 100644 app/components/ui/input/index.ts create mode 100644 app/components/ui/separator/Separator.vue create mode 100644 app/components/ui/separator/index.ts create mode 100644 app/components/ui/sheet/Sheet.vue create mode 100644 app/components/ui/sheet/SheetClose.vue create mode 100644 app/components/ui/sheet/SheetContent.vue create mode 100644 app/components/ui/sheet/SheetDescription.vue create mode 100644 app/components/ui/sheet/SheetFooter.vue create mode 100644 app/components/ui/sheet/SheetHeader.vue create mode 100644 app/components/ui/sheet/SheetOverlay.vue create mode 100644 app/components/ui/sheet/SheetTitle.vue create mode 100644 app/components/ui/sheet/SheetTrigger.vue create mode 100644 app/components/ui/sheet/index.ts create mode 100644 app/components/ui/sidebar/Sidebar.vue create mode 100644 app/components/ui/sidebar/SidebarContent.vue create mode 100644 app/components/ui/sidebar/SidebarFooter.vue create mode 100644 app/components/ui/sidebar/SidebarGroup.vue create mode 100644 app/components/ui/sidebar/SidebarGroupAction.vue create mode 100644 app/components/ui/sidebar/SidebarGroupContent.vue create mode 100644 app/components/ui/sidebar/SidebarGroupLabel.vue create mode 100644 app/components/ui/sidebar/SidebarHeader.vue create mode 100644 app/components/ui/sidebar/SidebarInput.vue create mode 100644 app/components/ui/sidebar/SidebarInset.vue create mode 100644 app/components/ui/sidebar/SidebarMenu.vue create mode 100644 app/components/ui/sidebar/SidebarMenuAction.vue create mode 100644 app/components/ui/sidebar/SidebarMenuBadge.vue create mode 100644 app/components/ui/sidebar/SidebarMenuButton.vue create mode 100644 app/components/ui/sidebar/SidebarMenuButtonChild.vue create mode 100644 app/components/ui/sidebar/SidebarMenuItem.vue create mode 100644 app/components/ui/sidebar/SidebarMenuSkeleton.vue create mode 100644 app/components/ui/sidebar/SidebarMenuSub.vue create mode 100644 app/components/ui/sidebar/SidebarMenuSubButton.vue create mode 100644 app/components/ui/sidebar/SidebarMenuSubItem.vue create mode 100644 app/components/ui/sidebar/SidebarProvider.vue create mode 100644 app/components/ui/sidebar/SidebarRail.vue create mode 100644 app/components/ui/sidebar/SidebarSeparator.vue create mode 100644 app/components/ui/sidebar/SidebarTrigger.vue create mode 100644 app/components/ui/sidebar/index.ts create mode 100644 app/components/ui/sidebar/utils.ts create mode 100644 app/components/ui/skeleton/Skeleton.vue create mode 100644 app/components/ui/skeleton/index.ts create mode 100644 app/components/ui/tooltip/Tooltip.vue create mode 100644 app/components/ui/tooltip/TooltipContent.vue create mode 100644 app/components/ui/tooltip/TooltipProvider.vue create mode 100644 app/components/ui/tooltip/TooltipTrigger.vue create mode 100644 app/components/ui/tooltip/index.ts create mode 100644 app/layouts/default/Sidebar.vue diff --git a/app/components/ui/input/Input.vue b/app/components/ui/input/Input.vue new file mode 100644 index 0000000..68f51b2 --- /dev/null +++ b/app/components/ui/input/Input.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/ui/input/index.ts b/app/components/ui/input/index.ts new file mode 100644 index 0000000..110f046 --- /dev/null +++ b/app/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from "./Input.vue"; diff --git a/app/components/ui/separator/Separator.vue b/app/components/ui/separator/Separator.vue new file mode 100644 index 0000000..9983e49 --- /dev/null +++ b/app/components/ui/separator/Separator.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/ui/separator/index.ts b/app/components/ui/separator/index.ts new file mode 100644 index 0000000..aae7f1a --- /dev/null +++ b/app/components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from "./Separator.vue"; diff --git a/app/components/ui/sheet/Sheet.vue b/app/components/ui/sheet/Sheet.vue new file mode 100644 index 0000000..ecdbffe --- /dev/null +++ b/app/components/ui/sheet/Sheet.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/ui/sheet/SheetClose.vue b/app/components/ui/sheet/SheetClose.vue new file mode 100644 index 0000000..cc15741 --- /dev/null +++ b/app/components/ui/sheet/SheetClose.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/ui/sheet/SheetContent.vue b/app/components/ui/sheet/SheetContent.vue new file mode 100644 index 0000000..e428f9b --- /dev/null +++ b/app/components/ui/sheet/SheetContent.vue @@ -0,0 +1,60 @@ + + + diff --git a/app/components/ui/sheet/SheetDescription.vue b/app/components/ui/sheet/SheetDescription.vue new file mode 100644 index 0000000..9a8eb2f --- /dev/null +++ b/app/components/ui/sheet/SheetDescription.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/ui/sheet/SheetFooter.vue b/app/components/ui/sheet/SheetFooter.vue new file mode 100644 index 0000000..5c88d03 --- /dev/null +++ b/app/components/ui/sheet/SheetFooter.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/ui/sheet/SheetHeader.vue b/app/components/ui/sheet/SheetHeader.vue new file mode 100644 index 0000000..6614d6a --- /dev/null +++ b/app/components/ui/sheet/SheetHeader.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/ui/sheet/SheetOverlay.vue b/app/components/ui/sheet/SheetOverlay.vue new file mode 100644 index 0000000..4817197 --- /dev/null +++ b/app/components/ui/sheet/SheetOverlay.vue @@ -0,0 +1,26 @@ + + + diff --git a/app/components/ui/sheet/SheetTitle.vue b/app/components/ui/sheet/SheetTitle.vue new file mode 100644 index 0000000..d2a3344 --- /dev/null +++ b/app/components/ui/sheet/SheetTitle.vue @@ -0,0 +1,17 @@ + + + diff --git a/app/components/ui/sheet/SheetTrigger.vue b/app/components/ui/sheet/SheetTrigger.vue new file mode 100644 index 0000000..a57258e --- /dev/null +++ b/app/components/ui/sheet/SheetTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/ui/sheet/index.ts b/app/components/ui/sheet/index.ts new file mode 100644 index 0000000..b94a071 --- /dev/null +++ b/app/components/ui/sheet/index.ts @@ -0,0 +1,8 @@ +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"; diff --git a/app/components/ui/sidebar/Sidebar.vue b/app/components/ui/sidebar/Sidebar.vue new file mode 100644 index 0000000..46ab1b7 --- /dev/null +++ b/app/components/ui/sidebar/Sidebar.vue @@ -0,0 +1,100 @@ + + + diff --git a/app/components/ui/sidebar/SidebarContent.vue b/app/components/ui/sidebar/SidebarContent.vue new file mode 100644 index 0000000..bbd5679 --- /dev/null +++ b/app/components/ui/sidebar/SidebarContent.vue @@ -0,0 +1,18 @@ + + + diff --git a/app/components/ui/sidebar/SidebarFooter.vue b/app/components/ui/sidebar/SidebarFooter.vue new file mode 100644 index 0000000..b3ea649 --- /dev/null +++ b/app/components/ui/sidebar/SidebarFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/sidebar/SidebarGroup.vue b/app/components/ui/sidebar/SidebarGroup.vue new file mode 100644 index 0000000..4934501 --- /dev/null +++ b/app/components/ui/sidebar/SidebarGroup.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/sidebar/SidebarGroupAction.vue b/app/components/ui/sidebar/SidebarGroupAction.vue new file mode 100644 index 0000000..c1e4825 --- /dev/null +++ b/app/components/ui/sidebar/SidebarGroupAction.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/ui/sidebar/SidebarGroupContent.vue b/app/components/ui/sidebar/SidebarGroupContent.vue new file mode 100644 index 0000000..a4ac1eb --- /dev/null +++ b/app/components/ui/sidebar/SidebarGroupContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/sidebar/SidebarGroupLabel.vue b/app/components/ui/sidebar/SidebarGroupLabel.vue new file mode 100644 index 0000000..2c0939b --- /dev/null +++ b/app/components/ui/sidebar/SidebarGroupLabel.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/ui/sidebar/SidebarHeader.vue b/app/components/ui/sidebar/SidebarHeader.vue new file mode 100644 index 0000000..afb6314 --- /dev/null +++ b/app/components/ui/sidebar/SidebarHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/sidebar/SidebarInput.vue b/app/components/ui/sidebar/SidebarInput.vue new file mode 100644 index 0000000..c494bcf --- /dev/null +++ b/app/components/ui/sidebar/SidebarInput.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/ui/sidebar/SidebarInset.vue b/app/components/ui/sidebar/SidebarInset.vue new file mode 100644 index 0000000..48df112 --- /dev/null +++ b/app/components/ui/sidebar/SidebarInset.vue @@ -0,0 +1,23 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenu.vue b/app/components/ui/sidebar/SidebarMenu.vue new file mode 100644 index 0000000..128ba8c --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenu.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuAction.vue b/app/components/ui/sidebar/SidebarMenuAction.vue new file mode 100644 index 0000000..6505579 --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuAction.vue @@ -0,0 +1,42 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuBadge.vue b/app/components/ui/sidebar/SidebarMenuBadge.vue new file mode 100644 index 0000000..688ff90 --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuBadge.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuButton.vue b/app/components/ui/sidebar/SidebarMenuButton.vue new file mode 100644 index 0000000..7f89b24 --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuButton.vue @@ -0,0 +1,49 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuButtonChild.vue b/app/components/ui/sidebar/SidebarMenuButtonChild.vue new file mode 100644 index 0000000..1f1d77f --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuButtonChild.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuItem.vue b/app/components/ui/sidebar/SidebarMenuItem.vue new file mode 100644 index 0000000..77dc213 --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuItem.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuSkeleton.vue b/app/components/ui/sidebar/SidebarMenuSkeleton.vue new file mode 100644 index 0000000..4075fd3 --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuSkeleton.vue @@ -0,0 +1,31 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuSub.vue b/app/components/ui/sidebar/SidebarMenuSub.vue new file mode 100644 index 0000000..d8d450e --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuSub.vue @@ -0,0 +1,24 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuSubButton.vue b/app/components/ui/sidebar/SidebarMenuSubButton.vue new file mode 100644 index 0000000..48c689f --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuSubButton.vue @@ -0,0 +1,43 @@ + + + diff --git a/app/components/ui/sidebar/SidebarMenuSubItem.vue b/app/components/ui/sidebar/SidebarMenuSubItem.vue new file mode 100644 index 0000000..559dc60 --- /dev/null +++ b/app/components/ui/sidebar/SidebarMenuSubItem.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/sidebar/SidebarProvider.vue b/app/components/ui/sidebar/SidebarProvider.vue new file mode 100644 index 0000000..9a57a1b --- /dev/null +++ b/app/components/ui/sidebar/SidebarProvider.vue @@ -0,0 +1,92 @@ + + + diff --git a/app/components/ui/sidebar/SidebarRail.vue b/app/components/ui/sidebar/SidebarRail.vue new file mode 100644 index 0000000..5c71ca2 --- /dev/null +++ b/app/components/ui/sidebar/SidebarRail.vue @@ -0,0 +1,35 @@ + + + diff --git a/app/components/ui/sidebar/SidebarSeparator.vue b/app/components/ui/sidebar/SidebarSeparator.vue new file mode 100644 index 0000000..03a5f34 --- /dev/null +++ b/app/components/ui/sidebar/SidebarSeparator.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/ui/sidebar/SidebarTrigger.vue b/app/components/ui/sidebar/SidebarTrigger.vue new file mode 100644 index 0000000..c706d97 --- /dev/null +++ b/app/components/ui/sidebar/SidebarTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/ui/sidebar/index.ts b/app/components/ui/sidebar/index.ts new file mode 100644 index 0000000..62db485 --- /dev/null +++ b/app/components/ui/sidebar/index.ts @@ -0,0 +1,60 @@ +import type { VariantProps } from "class-variance-authority"; +import type { HTMLAttributes } from "vue"; +import { cva } from "class-variance-authority"; + +export interface SidebarProps { + side?: "left" | "right"; + variant?: "sidebar" | "floating" | "inset"; + collapsible?: "offcanvas" | "icon" | "none"; + class?: HTMLAttributes["class"]; +} + +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-hidden 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 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/ui/sidebar/utils.ts b/app/components/ui/sidebar/utils.ts new file mode 100644 index 0000000..4c08290 --- /dev/null +++ b/app/components/ui/sidebar/utils.ts @@ -0,0 +1,19 @@ +import type { ComputedRef, Ref } from "vue"; +import { createContext } from "reka-ui"; + +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/ui/skeleton/Skeleton.vue b/app/components/ui/skeleton/Skeleton.vue new file mode 100644 index 0000000..15eadfc --- /dev/null +++ b/app/components/ui/skeleton/Skeleton.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/skeleton/index.ts b/app/components/ui/skeleton/index.ts new file mode 100644 index 0000000..72cb1d9 --- /dev/null +++ b/app/components/ui/skeleton/index.ts @@ -0,0 +1 @@ +export { default as Skeleton } from "./Skeleton.vue"; diff --git a/app/components/ui/tooltip/Tooltip.vue b/app/components/ui/tooltip/Tooltip.vue new file mode 100644 index 0000000..4efee8c --- /dev/null +++ b/app/components/ui/tooltip/Tooltip.vue @@ -0,0 +1,15 @@ + + + diff --git a/app/components/ui/tooltip/TooltipContent.vue b/app/components/ui/tooltip/TooltipContent.vue new file mode 100644 index 0000000..b3feaed --- /dev/null +++ b/app/components/ui/tooltip/TooltipContent.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/components/ui/tooltip/TooltipProvider.vue b/app/components/ui/tooltip/TooltipProvider.vue new file mode 100644 index 0000000..7eb50dd --- /dev/null +++ b/app/components/ui/tooltip/TooltipProvider.vue @@ -0,0 +1,14 @@ + + + diff --git a/app/components/ui/tooltip/TooltipTrigger.vue b/app/components/ui/tooltip/TooltipTrigger.vue new file mode 100644 index 0000000..e624a66 --- /dev/null +++ b/app/components/ui/tooltip/TooltipTrigger.vue @@ -0,0 +1,12 @@ + + + diff --git a/app/components/ui/tooltip/index.ts b/app/components/ui/tooltip/index.ts new file mode 100644 index 0000000..0a8a878 --- /dev/null +++ b/app/components/ui/tooltip/index.ts @@ -0,0 +1,4 @@ +export { default as Tooltip } from "./Tooltip.vue"; +export { default as TooltipContent } from "./TooltipContent.vue"; +export { default as TooltipProvider } from "./TooltipProvider.vue"; +export { default as TooltipTrigger } from "./TooltipTrigger.vue"; diff --git a/app/layouts/Default.vue b/app/layouts/Default.vue index 56a8b72..2d676cd 100644 --- a/app/layouts/Default.vue +++ b/app/layouts/Default.vue @@ -1,5 +1,14 @@ + + diff --git a/app/layouts/default/Sidebar.vue b/app/layouts/default/Sidebar.vue new file mode 100644 index 0000000..0f0f43d --- /dev/null +++ b/app/layouts/default/Sidebar.vue @@ -0,0 +1,45 @@ + + +