From f6eadda912e7f57b4a8af8c710a21f5753dbd014 Mon Sep 17 00:00:00 2001 From: DaxServer Date: Sat, 18 Oct 2025 13:45:49 +0200 Subject: [PATCH 1/2] feat: migrate header, sidebar, maincontent inset to shadcn components --- frontend/.biomelintrc-auto-import.json | 72 +++++ frontend/auto-imports.d.ts | 263 +++++++++++++++++- frontend/components.d.ts | 65 ++++- .../components/ui/breadcrumb/Breadcrumb.vue | 17 ++ .../ui/breadcrumb/BreadcrumbEllipsis.vue | 23 ++ .../ui/breadcrumb/BreadcrumbItem.vue | 17 ++ .../ui/breadcrumb/BreadcrumbLink.vue | 21 ++ .../ui/breadcrumb/BreadcrumbList.vue | 17 ++ .../ui/breadcrumb/BreadcrumbPage.vue | 20 ++ .../ui/breadcrumb/BreadcrumbSeparator.vue | 22 ++ .../src/components/ui/breadcrumb/index.ts | 7 + frontend/src/components/ui/button/Button.vue | 1 - .../ui/dropdown-menu/DropdownMenu.vue | 18 ++ .../DropdownMenuCheckboxItem.vue | 33 +++ .../ui/dropdown-menu/DropdownMenuContent.vue | 31 +++ .../ui/dropdown-menu/DropdownMenuGroup.vue | 15 + .../ui/dropdown-menu/DropdownMenuItem.vue | 36 +++ .../ui/dropdown-menu/DropdownMenuLabel.vue | 25 ++ .../dropdown-menu/DropdownMenuRadioGroup.vue | 18 ++ .../dropdown-menu/DropdownMenuRadioItem.vue | 34 +++ .../dropdown-menu/DropdownMenuSeparator.vue | 23 ++ .../ui/dropdown-menu/DropdownMenuShortcut.vue | 17 ++ .../ui/dropdown-menu/DropdownMenuSub.vue | 15 + .../dropdown-menu/DropdownMenuSubContent.vue | 24 ++ .../dropdown-menu/DropdownMenuSubTrigger.vue | 29 ++ .../ui/dropdown-menu/DropdownMenuTrigger.vue | 17 ++ .../src/components/ui/dropdown-menu/index.ts | 15 + frontend/src/components/ui/input/Input.vue | 31 +++ frontend/src/components/ui/input/index.ts | 1 + frontend/src/components/ui/label/Label.vue | 26 ++ frontend/src/components/ui/label/index.ts | 1 + .../src/components/ui/separator/Separator.vue | 27 ++ frontend/src/components/ui/separator/index.ts | 1 + frontend/src/components/ui/sheet/Sheet.vue | 18 ++ .../src/components/ui/sheet/SheetClose.vue | 15 + .../src/components/ui/sheet/SheetContent.vue | 57 ++++ .../components/ui/sheet/SheetDescription.vue | 21 ++ .../src/components/ui/sheet/SheetFooter.vue | 16 ++ .../src/components/ui/sheet/SheetHeader.vue | 15 + .../src/components/ui/sheet/SheetOverlay.vue | 21 ++ .../src/components/ui/sheet/SheetTitle.vue | 21 ++ .../src/components/ui/sheet/SheetTrigger.vue | 15 + frontend/src/components/ui/sheet/index.ts | 8 + .../src/components/ui/sidebar/Sidebar.vue | 96 +++++++ .../components/ui/sidebar/SidebarContent.vue | 18 ++ .../components/ui/sidebar/SidebarFooter.vue | 18 ++ .../components/ui/sidebar/SidebarGroup.vue | 18 ++ .../ui/sidebar/SidebarGroupAction.vue | 29 ++ .../ui/sidebar/SidebarGroupContent.vue | 18 ++ .../ui/sidebar/SidebarGroupLabel.vue | 27 ++ .../components/ui/sidebar/SidebarHeader.vue | 18 ++ .../components/ui/sidebar/SidebarInput.vue | 22 ++ .../components/ui/sidebar/SidebarInset.vue | 21 ++ .../src/components/ui/sidebar/SidebarMenu.vue | 18 ++ .../ui/sidebar/SidebarMenuAction.vue | 40 +++ .../ui/sidebar/SidebarMenuBadge.vue | 26 ++ .../ui/sidebar/SidebarMenuButton.vue | 53 ++++ .../ui/sidebar/SidebarMenuButtonChild.vue | 36 +++ .../components/ui/sidebar/SidebarMenuItem.vue | 18 ++ .../ui/sidebar/SidebarMenuSkeleton.vue | 35 +++ .../components/ui/sidebar/SidebarMenuSub.vue | 22 ++ .../ui/sidebar/SidebarMenuSubButton.vue | 41 +++ .../ui/sidebar/SidebarMenuSubItem.vue | 18 ++ .../components/ui/sidebar/SidebarProvider.vue | 92 ++++++ .../src/components/ui/sidebar/SidebarRail.vue | 33 +++ .../ui/sidebar/SidebarSeparator.vue | 19 ++ .../components/ui/sidebar/SidebarTrigger.vue | 27 ++ frontend/src/components/ui/sidebar/index.ts | 60 ++++ frontend/src/components/ui/sidebar/utils.ts | 19 ++ .../src/components/ui/skeleton/Skeleton.vue | 17 ++ frontend/src/components/ui/skeleton/index.ts | 1 + .../src/components/ui/tooltip/Tooltip.vue | 18 ++ .../components/ui/tooltip/TooltipContent.vue | 37 +++ .../components/ui/tooltip/TooltipProvider.vue | 14 + .../components/ui/tooltip/TooltipTrigger.vue | 15 + frontend/src/components/ui/tooltip/index.ts | 4 + frontend/src/core/layouts/DefaultLayout.vue | 72 ++++- .../components/WikibaseSchemaEditor.vue | 4 +- frontend/src/shared/components/Header.vue | 58 ++-- frontend/src/shared/components/Sidebar.vue | 58 ---- 80 files changed, 2217 insertions(+), 112 deletions(-) create mode 100644 frontend/src/components/ui/breadcrumb/Breadcrumb.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbItem.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbLink.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbList.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbPage.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbSeparator.vue create mode 100644 frontend/src/components/ui/breadcrumb/index.ts create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenu.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuContent.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuGroup.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuItem.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuLabel.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSub.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue create mode 100644 frontend/src/components/ui/dropdown-menu/index.ts create mode 100644 frontend/src/components/ui/input/Input.vue create mode 100644 frontend/src/components/ui/input/index.ts create mode 100644 frontend/src/components/ui/label/Label.vue create mode 100644 frontend/src/components/ui/label/index.ts create mode 100644 frontend/src/components/ui/separator/Separator.vue create mode 100644 frontend/src/components/ui/separator/index.ts create mode 100644 frontend/src/components/ui/sheet/Sheet.vue create mode 100644 frontend/src/components/ui/sheet/SheetClose.vue create mode 100644 frontend/src/components/ui/sheet/SheetContent.vue create mode 100644 frontend/src/components/ui/sheet/SheetDescription.vue create mode 100644 frontend/src/components/ui/sheet/SheetFooter.vue create mode 100644 frontend/src/components/ui/sheet/SheetHeader.vue create mode 100644 frontend/src/components/ui/sheet/SheetOverlay.vue create mode 100644 frontend/src/components/ui/sheet/SheetTitle.vue create mode 100644 frontend/src/components/ui/sheet/SheetTrigger.vue create mode 100644 frontend/src/components/ui/sheet/index.ts create mode 100644 frontend/src/components/ui/sidebar/Sidebar.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarContent.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarFooter.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroup.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroupAction.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroupContent.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroupLabel.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarHeader.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarInput.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarInset.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenu.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuAction.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuBadge.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuButton.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuButtonChild.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuItem.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSkeleton.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSub.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSubButton.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSubItem.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarProvider.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarRail.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarSeparator.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarTrigger.vue create mode 100644 frontend/src/components/ui/sidebar/index.ts create mode 100644 frontend/src/components/ui/sidebar/utils.ts create mode 100644 frontend/src/components/ui/skeleton/Skeleton.vue create mode 100644 frontend/src/components/ui/skeleton/index.ts create mode 100644 frontend/src/components/ui/tooltip/Tooltip.vue create mode 100644 frontend/src/components/ui/tooltip/TooltipContent.vue create mode 100644 frontend/src/components/ui/tooltip/TooltipProvider.vue create mode 100644 frontend/src/components/ui/tooltip/TooltipTrigger.vue create mode 100644 frontend/src/components/ui/tooltip/index.ts delete mode 100644 frontend/src/shared/components/Sidebar.vue diff --git a/frontend/.biomelintrc-auto-import.json b/frontend/.biomelintrc-auto-import.json index 848bccc..86140a5 100644 --- a/frontend/.biomelintrc-auto-import.json +++ b/frontend/.biomelintrc-auto-import.json @@ -5,6 +5,13 @@ "ApiClient", "ApiKey", "ApiPlugin", + "Breadcrumb", + "BreadcrumbEllipsis", + "BreadcrumbItem", + "BreadcrumbLink", + "BreadcrumbList", + "BreadcrumbPage", + "BreadcrumbSeparator", "Button", "ButtonVariants", "ColumnInfo", @@ -24,6 +31,21 @@ "DropTargetType", "DropValidation", "DropZoneConfig", + "DropdownMenu", + "DropdownMenuCheckboxItem", + "DropdownMenuContent", + "DropdownMenuGroup", + "DropdownMenuItem", + "DropdownMenuLabel", + "DropdownMenuPortal", + "DropdownMenuRadioGroup", + "DropdownMenuRadioItem", + "DropdownMenuSeparator", + "DropdownMenuShortcut", + "DropdownMenuSub", + "DropdownMenuSubContent", + "DropdownMenuSubTrigger", + "DropdownMenuTrigger", "EffectScope", "ExtendedError", "ExtendedErrorCode", @@ -35,6 +57,7 @@ "FileUploadUploaderEvent", "FrontendErrorCode", "InjectionKey", + "Input", "ItemSchema", "Label", "MaybeRef", @@ -51,10 +74,52 @@ "Ref", "ReferenceSchemaMapping", "RequiredFieldHighlight", + "SIDEBAR_COOKIE_MAX_AGE", + "SIDEBAR_COOKIE_NAME", + "SIDEBAR_KEYBOARD_SHORTCUT", + "SIDEBAR_WIDTH", + "SIDEBAR_WIDTH_ICON", + "SIDEBAR_WIDTH_MOBILE", "SchemaCompletenessResult", "SchemaDragDropContext", "SchemaRequest", + "Separator", "ShallowRef", + "Sheet", + "SheetClose", + "SheetContent", + "SheetDescription", + "SheetFooter", + "SheetHeader", + "SheetTitle", + "SheetTrigger", + "Sidebar", + "SidebarContent", + "SidebarFooter", + "SidebarGroup", + "SidebarGroupAction", + "SidebarGroupContent", + "SidebarGroupLabel", + "SidebarHeader", + "SidebarInput", + "SidebarInset", + "SidebarMenu", + "SidebarMenuAction", + "SidebarMenuBadge", + "SidebarMenuButton", + "SidebarMenuButtonProps", + "SidebarMenuButtonVariants", + "SidebarMenuItem", + "SidebarMenuSkeleton", + "SidebarMenuSub", + "SidebarMenuSubButton", + "SidebarMenuSubItem", + "SidebarProps", + "SidebarProvider", + "SidebarRail", + "SidebarSeparator", + "SidebarTrigger", + "Skeleton", "Slot", "Slots", "StatementRank", @@ -63,6 +128,10 @@ "StatementSchemaMapping", "TermsSchemaMapping", "TieredMenu", + "Tooltip", + "TooltipContent", + "TooltipProvider", + "TooltipTrigger", "TransformationFunction", "TransformationParameter", "TransformationRule", @@ -160,6 +229,7 @@ "pausableWatch", "provide", "provideLocal", + "provideSidebarContext", "reactify", "reactifyObject", "reactive", @@ -182,6 +252,7 @@ "shallowReactive", "shallowReadonly", "shallowRef", + "sidebarMenuButtonVariants", "storeToRefs", "syncRef", "syncRefs", @@ -351,6 +422,7 @@ "useScrollLock", "useSessionStorage", "useShare", + "useSidebar", "useSlots", "useSorted", "useSpeechRecognition", diff --git a/frontend/auto-imports.d.ts b/frontend/auto-imports.d.ts index 5484359..1a4d52a 100644 --- a/frontend/auto-imports.d.ts +++ b/frontend/auto-imports.d.ts @@ -8,10 +8,77 @@ export {} declare global { const ApiKey: typeof import('./src/core/plugins/api')['ApiKey'] const ApiPlugin: typeof import('./src/core/plugins/api')['ApiPlugin'] + const Breadcrumb: typeof import('./src/components/ui/breadcrumb/index')['Breadcrumb'] + const BreadcrumbEllipsis: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbEllipsis'] + const BreadcrumbItem: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbItem'] + const BreadcrumbLink: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbLink'] + const BreadcrumbList: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbList'] + const BreadcrumbPage: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbPage'] + const BreadcrumbSeparator: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbSeparator'] const Button: typeof import('./src/components/ui/button/index')['Button'] + const DropdownMenu: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenu'] + const DropdownMenuCheckboxItem: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuCheckboxItem'] + const DropdownMenuContent: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuContent'] + const DropdownMenuGroup: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuGroup'] + const DropdownMenuItem: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuItem'] + const DropdownMenuLabel: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuLabel'] + const DropdownMenuPortal: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuPortal'] + const DropdownMenuRadioGroup: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuRadioGroup'] + const DropdownMenuRadioItem: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuRadioItem'] + const DropdownMenuSeparator: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSeparator'] + const DropdownMenuShortcut: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuShortcut'] + const DropdownMenuSub: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSub'] + const DropdownMenuSubContent: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSubContent'] + const DropdownMenuSubTrigger: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSubTrigger'] + const DropdownMenuTrigger: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuTrigger'] const EffectScope: typeof import('vue')['EffectScope'] + const Input: typeof import('./src/components/ui/input/index')['Input'] + const Label: typeof import('./src/components/ui/label/index')['Label'] const MenuItem: typeof import('primevue/menuitem')['MenuItem'] const RefreshCcw: typeof import('lucide-vue-next')['RefreshCcw'] + const SIDEBAR_COOKIE_MAX_AGE: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_COOKIE_MAX_AGE'] + const SIDEBAR_COOKIE_NAME: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_COOKIE_NAME'] + const SIDEBAR_KEYBOARD_SHORTCUT: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_KEYBOARD_SHORTCUT'] + const SIDEBAR_WIDTH: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_WIDTH'] + const SIDEBAR_WIDTH_ICON: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_WIDTH_ICON'] + const SIDEBAR_WIDTH_MOBILE: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_WIDTH_MOBILE'] + const Separator: typeof import('./src/components/ui/separator/index')['Separator'] + const Sheet: typeof import('./src/components/ui/sheet/index')['Sheet'] + const SheetClose: typeof import('./src/components/ui/sheet/index')['SheetClose'] + const SheetContent: typeof import('./src/components/ui/sheet/index')['SheetContent'] + const SheetDescription: typeof import('./src/components/ui/sheet/index')['SheetDescription'] + const SheetFooter: typeof import('./src/components/ui/sheet/index')['SheetFooter'] + const SheetHeader: typeof import('./src/components/ui/sheet/index')['SheetHeader'] + const SheetTitle: typeof import('./src/components/ui/sheet/index')['SheetTitle'] + const SheetTrigger: typeof import('./src/components/ui/sheet/index')['SheetTrigger'] + const Sidebar: typeof import('./src/components/ui/sidebar/index')['Sidebar'] + const SidebarContent: typeof import('./src/components/ui/sidebar/index')['SidebarContent'] + const SidebarFooter: typeof import('./src/components/ui/sidebar/index')['SidebarFooter'] + const SidebarGroup: typeof import('./src/components/ui/sidebar/index')['SidebarGroup'] + const SidebarGroupAction: typeof import('./src/components/ui/sidebar/index')['SidebarGroupAction'] + const SidebarGroupContent: typeof import('./src/components/ui/sidebar/index')['SidebarGroupContent'] + const SidebarGroupLabel: typeof import('./src/components/ui/sidebar/index')['SidebarGroupLabel'] + const SidebarHeader: typeof import('./src/components/ui/sidebar/index')['SidebarHeader'] + const SidebarInput: typeof import('./src/components/ui/sidebar/index')['SidebarInput'] + const SidebarInset: typeof import('./src/components/ui/sidebar/index')['SidebarInset'] + const SidebarMenu: typeof import('./src/components/ui/sidebar/index')['SidebarMenu'] + const SidebarMenuAction: typeof import('./src/components/ui/sidebar/index')['SidebarMenuAction'] + const SidebarMenuBadge: typeof import('./src/components/ui/sidebar/index')['SidebarMenuBadge'] + const SidebarMenuButton: typeof import('./src/components/ui/sidebar/index')['SidebarMenuButton'] + const SidebarMenuItem: typeof import('./src/components/ui/sidebar/index')['SidebarMenuItem'] + const SidebarMenuSkeleton: typeof import('./src/components/ui/sidebar/index')['SidebarMenuSkeleton'] + const SidebarMenuSub: typeof import('./src/components/ui/sidebar/index')['SidebarMenuSub'] + const SidebarMenuSubButton: typeof import('./src/components/ui/sidebar/index')['SidebarMenuSubButton'] + const SidebarMenuSubItem: typeof import('./src/components/ui/sidebar/index')['SidebarMenuSubItem'] + const SidebarProvider: typeof import('./src/components/ui/sidebar/index')['SidebarProvider'] + const SidebarRail: typeof import('./src/components/ui/sidebar/index')['SidebarRail'] + const SidebarSeparator: typeof import('./src/components/ui/sidebar/index')['SidebarSeparator'] + const SidebarTrigger: typeof import('./src/components/ui/sidebar/index')['SidebarTrigger'] + const Skeleton: typeof import('./src/components/ui/skeleton/index')['Skeleton'] + const Tooltip: typeof import('./src/components/ui/tooltip/index')['Tooltip'] + const TooltipContent: typeof import('./src/components/ui/tooltip/index')['TooltipContent'] + const TooltipProvider: typeof import('./src/components/ui/tooltip/index')['TooltipProvider'] + const TooltipTrigger: typeof import('./src/components/ui/tooltip/index')['TooltipTrigger'] const ValidationMessages: typeof import('./src/shared/types/wikibase-schema')['ValidationMessages'] const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] const api: typeof import('./src/core/plugins/api')['api'] @@ -93,6 +160,7 @@ declare global { const pausableWatch: typeof import('@vueuse/core')['pausableWatch'] const provide: typeof import('vue')['provide'] const provideLocal: typeof import('@vueuse/core')['provideLocal'] + const provideSidebarContext: typeof import('./src/components/ui/sidebar/utils')['provideSidebarContext'] const reactify: typeof import('@vueuse/core')['reactify'] const reactifyObject: typeof import('@vueuse/core')['reactifyObject'] const reactive: typeof import('vue')['reactive'] @@ -115,6 +183,7 @@ declare global { const shallowReactive: typeof import('vue')['shallowReactive'] const shallowReadonly: typeof import('vue')['shallowReadonly'] const shallowRef: typeof import('vue')['shallowRef'] + const sidebarMenuButtonVariants: typeof import('./src/components/ui/sidebar/index')['sidebarMenuButtonVariants'] const storeToRefs: typeof import('pinia')['storeToRefs'] const syncRef: typeof import('@vueuse/core')['syncRef'] const syncRefs: typeof import('@vueuse/core')['syncRefs'] @@ -284,6 +353,7 @@ declare global { const useScrollLock: typeof import('@vueuse/core')['useScrollLock'] const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage'] const useShare: typeof import('@vueuse/core')['useShare'] + const useSidebar: typeof import('./src/components/ui/sidebar/utils')['useSidebar'] const useSlots: typeof import('vue')['useSlots'] const useSorted: typeof import('@vueuse/core')['useSorted'] const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition'] @@ -404,7 +474,6 @@ declare global { ReferenceSchemaMapping, StatementRank, StatementSchemaMapping, - Label, Alias, TermsSchemaMapping, ItemSchema, @@ -415,6 +484,12 @@ declare global { export type { ButtonVariants } from './src/components/ui/button/index' import('./src/components/ui/button/index') // @ts-ignore + export type { SidebarMenuButtonProps } from './src/components/ui/sidebar/SidebarMenuButtonChild.vue' + import('./src/components/ui/sidebar/SidebarMenuButtonChild.vue') + // @ts-ignore + export type { SidebarProps, SidebarMenuButtonVariants } from './src/components/ui/sidebar/index' + import('./src/components/ui/sidebar/index') + // @ts-ignore export type { ProjectColumn } from './src/features/data-processing/composables/useColumnGeneration' import('./src/features/data-processing/composables/useColumnGeneration') // @ts-ignore @@ -490,8 +565,187 @@ declare module 'vue' { interface ComponentCustomProperties { readonly ApiKey: UnwrapRef readonly ApiPlugin: UnwrapRef + readonly Breadcrumb: UnwrapRef< + typeof import('./src/components/ui/breadcrumb/index')['Breadcrumb'] + > + readonly BreadcrumbEllipsis: UnwrapRef< + typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbEllipsis'] + > + readonly BreadcrumbItem: UnwrapRef< + typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbItem'] + > + readonly BreadcrumbLink: UnwrapRef< + typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbLink'] + > + readonly BreadcrumbList: UnwrapRef< + typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbList'] + > + readonly BreadcrumbPage: UnwrapRef< + typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbPage'] + > + readonly BreadcrumbSeparator: UnwrapRef< + typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbSeparator'] + > readonly Button: UnwrapRef + readonly DropdownMenu: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenu'] + > + readonly DropdownMenuCheckboxItem: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuCheckboxItem'] + > + readonly DropdownMenuContent: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuContent'] + > + readonly DropdownMenuGroup: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuGroup'] + > + readonly DropdownMenuItem: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuItem'] + > + readonly DropdownMenuLabel: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuLabel'] + > + readonly DropdownMenuPortal: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuPortal'] + > + readonly DropdownMenuRadioGroup: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuRadioGroup'] + > + readonly DropdownMenuRadioItem: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuRadioItem'] + > + readonly DropdownMenuSeparator: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSeparator'] + > + readonly DropdownMenuShortcut: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuShortcut'] + > + readonly DropdownMenuSub: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSub'] + > + readonly DropdownMenuSubContent: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSubContent'] + > + readonly DropdownMenuSubTrigger: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSubTrigger'] + > + readonly DropdownMenuTrigger: UnwrapRef< + typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuTrigger'] + > readonly EffectScope: UnwrapRef + readonly Input: UnwrapRef + readonly Label: UnwrapRef + readonly SIDEBAR_COOKIE_MAX_AGE: UnwrapRef< + typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_COOKIE_MAX_AGE'] + > + readonly SIDEBAR_COOKIE_NAME: UnwrapRef< + typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_COOKIE_NAME'] + > + readonly SIDEBAR_KEYBOARD_SHORTCUT: UnwrapRef< + typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_KEYBOARD_SHORTCUT'] + > + readonly SIDEBAR_WIDTH: UnwrapRef< + typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_WIDTH'] + > + readonly SIDEBAR_WIDTH_ICON: UnwrapRef< + typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_WIDTH_ICON'] + > + readonly SIDEBAR_WIDTH_MOBILE: UnwrapRef< + typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_WIDTH_MOBILE'] + > + readonly Separator: UnwrapRef + readonly Sheet: UnwrapRef + readonly SheetClose: UnwrapRef + readonly SheetContent: UnwrapRef< + typeof import('./src/components/ui/sheet/index')['SheetContent'] + > + readonly SheetDescription: UnwrapRef< + typeof import('./src/components/ui/sheet/index')['SheetDescription'] + > + readonly SheetFooter: UnwrapRef + readonly SheetHeader: UnwrapRef + readonly SheetTitle: UnwrapRef + readonly SheetTrigger: UnwrapRef< + typeof import('./src/components/ui/sheet/index')['SheetTrigger'] + > + readonly Sidebar: UnwrapRef + readonly SidebarContent: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarContent'] + > + readonly SidebarFooter: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarFooter'] + > + readonly SidebarGroup: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarGroup'] + > + readonly SidebarGroupAction: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarGroupAction'] + > + readonly SidebarGroupContent: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarGroupContent'] + > + readonly SidebarGroupLabel: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarGroupLabel'] + > + readonly SidebarHeader: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarHeader'] + > + readonly SidebarInput: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarInput'] + > + readonly SidebarInset: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarInset'] + > + readonly SidebarMenu: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenu'] + > + readonly SidebarMenuAction: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuAction'] + > + readonly SidebarMenuBadge: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuBadge'] + > + readonly SidebarMenuButton: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuButton'] + > + readonly SidebarMenuItem: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuItem'] + > + readonly SidebarMenuSkeleton: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuSkeleton'] + > + readonly SidebarMenuSub: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuSub'] + > + readonly SidebarMenuSubButton: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuSubButton'] + > + readonly SidebarMenuSubItem: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarMenuSubItem'] + > + readonly SidebarProvider: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarProvider'] + > + readonly SidebarRail: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarRail'] + > + readonly SidebarSeparator: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarSeparator'] + > + readonly SidebarTrigger: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['SidebarTrigger'] + > + readonly Skeleton: UnwrapRef + readonly Tooltip: UnwrapRef + readonly TooltipContent: UnwrapRef< + typeof import('./src/components/ui/tooltip/index')['TooltipContent'] + > + readonly TooltipProvider: UnwrapRef< + typeof import('./src/components/ui/tooltip/index')['TooltipProvider'] + > + readonly TooltipTrigger: UnwrapRef< + typeof import('./src/components/ui/tooltip/index')['TooltipTrigger'] + > readonly ValidationMessages: UnwrapRef< typeof import('./src/shared/types/wikibase-schema')['ValidationMessages'] > @@ -585,6 +839,9 @@ declare module 'vue' { readonly pausableWatch: UnwrapRef readonly provide: UnwrapRef readonly provideLocal: UnwrapRef + readonly provideSidebarContext: UnwrapRef< + typeof import('./src/components/ui/sidebar/utils')['provideSidebarContext'] + > readonly reactify: UnwrapRef readonly reactifyObject: UnwrapRef readonly reactive: UnwrapRef @@ -607,6 +864,9 @@ declare module 'vue' { readonly shallowReactive: UnwrapRef readonly shallowReadonly: UnwrapRef readonly shallowRef: UnwrapRef + readonly sidebarMenuButtonVariants: UnwrapRef< + typeof import('./src/components/ui/sidebar/index')['sidebarMenuButtonVariants'] + > readonly storeToRefs: UnwrapRef readonly syncRef: UnwrapRef readonly syncRefs: UnwrapRef @@ -832,6 +1092,7 @@ declare module 'vue' { readonly useScrollLock: UnwrapRef readonly useSessionStorage: UnwrapRef readonly useShare: UnwrapRef + readonly useSidebar: UnwrapRef readonly useSlots: UnwrapRef readonly useSorted: UnwrapRef readonly useSpeechRecognition: UnwrapRef diff --git a/frontend/components.d.ts b/frontend/components.d.ts index a572a57..4e5d380 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -10,6 +10,13 @@ declare module 'vue' { export interface GlobalComponents { AutoComplete: typeof import('primevue/autocomplete')['default'] BasePropertyValueEditor: typeof import('./src/features/wikibase-schema/components/BasePropertyValueEditor.vue')['default'] + Breadcrumb: typeof import('./src/components/ui/breadcrumb/Breadcrumb.vue')['default'] + BreadcrumbEllipsis: typeof import('./src/components/ui/breadcrumb/BreadcrumbEllipsis.vue')['default'] + BreadcrumbItem: typeof import('./src/components/ui/breadcrumb/BreadcrumbItem.vue')['default'] + BreadcrumbLink: typeof import('./src/components/ui/breadcrumb/BreadcrumbLink.vue')['default'] + BreadcrumbList: typeof import('./src/components/ui/breadcrumb/BreadcrumbList.vue')['default'] + BreadcrumbPage: typeof import('./src/components/ui/breadcrumb/BreadcrumbPage.vue')['default'] + BreadcrumbSeparator: typeof import('./src/components/ui/breadcrumb/BreadcrumbSeparator.vue')['default'] Button: typeof import('./src/components/ui/button/Button.vue')['default'] Card: typeof import('primevue/card')['default'] Checkbox: typeof import('primevue/checkbox')['default'] @@ -25,9 +32,27 @@ declare module 'vue' { DataTabPanel: typeof import('./src/features/data-processing/components/DataTabPanel.vue')['default'] DefaultLayout: typeof import('./src/core/layouts/DefaultLayout.vue')['default'] Dialog: typeof import('primevue/dialog')['default'] + Divider: typeof import('primevue/divider')['default'] + DropdownMenu: typeof import('./src/components/ui/dropdown-menu/DropdownMenu.vue')['default'] + DropdownMenuCheckboxItem: typeof import('./src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue')['default'] + DropdownMenuContent: typeof import('./src/components/ui/dropdown-menu/DropdownMenuContent.vue')['default'] + DropdownMenuGroup: typeof import('./src/components/ui/dropdown-menu/DropdownMenuGroup.vue')['default'] + DropdownMenuItem: typeof import('./src/components/ui/dropdown-menu/DropdownMenuItem.vue')['default'] + DropdownMenuLabel: typeof import('./src/components/ui/dropdown-menu/DropdownMenuLabel.vue')['default'] + DropdownMenuRadioGroup: typeof import('./src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue')['default'] + DropdownMenuRadioItem: typeof import('./src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue')['default'] + DropdownMenuSeparator: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSeparator.vue')['default'] + DropdownMenuShortcut: typeof import('./src/components/ui/dropdown-menu/DropdownMenuShortcut.vue')['default'] + DropdownMenuSub: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSub.vue')['default'] + DropdownMenuSubContent: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSubContent.vue')['default'] + DropdownMenuSubTrigger: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue')['default'] + DropdownMenuTrigger: typeof import('./src/components/ui/dropdown-menu/DropdownMenuTrigger.vue')['default'] DropZone: typeof import('./src/features/wikibase-schema/components/DropZone.vue')['default'] + FileUpload: typeof import('primevue/fileupload')['default'] Header: typeof import('./src/shared/components/Header.vue')['default'] + Input: typeof import('./src/components/ui/input/Input.vue')['default'] InputText: typeof import('primevue/inputtext')['default'] + Label: typeof import('./src/components/ui/label/Label.vue')['default'] MainContent: typeof import('./src/shared/components/MainContent.vue')['default'] OpenProject: typeof import('./src/features/project-management/pages/OpenProject.vue')['default'] Paginator: typeof import('primevue/paginator')['default'] @@ -46,7 +71,41 @@ declare module 'vue' { SchemaSelector: typeof import('./src/features/wikibase-schema/components/SchemaSelector.vue')['default'] SchemaTabPanel: typeof import('./src/features/wikibase-schema/components/SchemaTabPanel.vue')['default'] Select: typeof import('primevue/select')['default'] - Sidebar: typeof import('./src/shared/components/Sidebar.vue')['default'] + Separator: typeof import('./src/components/ui/separator/Separator.vue')['default'] + Sheet: typeof import('./src/components/ui/sheet/Sheet.vue')['default'] + SheetClose: typeof import('./src/components/ui/sheet/SheetClose.vue')['default'] + SheetContent: typeof import('./src/components/ui/sheet/SheetContent.vue')['default'] + SheetDescription: typeof import('./src/components/ui/sheet/SheetDescription.vue')['default'] + SheetFooter: typeof import('./src/components/ui/sheet/SheetFooter.vue')['default'] + SheetHeader: typeof import('./src/components/ui/sheet/SheetHeader.vue')['default'] + SheetOverlay: typeof import('./src/components/ui/sheet/SheetOverlay.vue')['default'] + SheetTitle: typeof import('./src/components/ui/sheet/SheetTitle.vue')['default'] + SheetTrigger: typeof import('./src/components/ui/sheet/SheetTrigger.vue')['default'] + Sidebar: typeof import('./src/components/ui/sidebar/Sidebar.vue')['default'] + SidebarContent: typeof import('./src/components/ui/sidebar/SidebarContent.vue')['default'] + SidebarFooter: typeof import('./src/components/ui/sidebar/SidebarFooter.vue')['default'] + SidebarGroup: typeof import('./src/components/ui/sidebar/SidebarGroup.vue')['default'] + SidebarGroupAction: typeof import('./src/components/ui/sidebar/SidebarGroupAction.vue')['default'] + SidebarGroupContent: typeof import('./src/components/ui/sidebar/SidebarGroupContent.vue')['default'] + SidebarGroupLabel: typeof import('./src/components/ui/sidebar/SidebarGroupLabel.vue')['default'] + SidebarHeader: typeof import('./src/components/ui/sidebar/SidebarHeader.vue')['default'] + SidebarInput: typeof import('./src/components/ui/sidebar/SidebarInput.vue')['default'] + SidebarInset: typeof import('./src/components/ui/sidebar/SidebarInset.vue')['default'] + SidebarMenu: typeof import('./src/components/ui/sidebar/SidebarMenu.vue')['default'] + SidebarMenuAction: typeof import('./src/components/ui/sidebar/SidebarMenuAction.vue')['default'] + SidebarMenuBadge: typeof import('./src/components/ui/sidebar/SidebarMenuBadge.vue')['default'] + SidebarMenuButton: typeof import('./src/components/ui/sidebar/SidebarMenuButton.vue')['default'] + SidebarMenuButtonChild: typeof import('./src/components/ui/sidebar/SidebarMenuButtonChild.vue')['default'] + SidebarMenuItem: typeof import('./src/components/ui/sidebar/SidebarMenuItem.vue')['default'] + SidebarMenuSkeleton: typeof import('./src/components/ui/sidebar/SidebarMenuSkeleton.vue')['default'] + SidebarMenuSub: typeof import('./src/components/ui/sidebar/SidebarMenuSub.vue')['default'] + SidebarMenuSubButton: typeof import('./src/components/ui/sidebar/SidebarMenuSubButton.vue')['default'] + SidebarMenuSubItem: typeof import('./src/components/ui/sidebar/SidebarMenuSubItem.vue')['default'] + SidebarProvider: typeof import('./src/components/ui/sidebar/SidebarProvider.vue')['default'] + SidebarRail: typeof import('./src/components/ui/sidebar/SidebarRail.vue')['default'] + SidebarSeparator: typeof import('./src/components/ui/sidebar/SidebarSeparator.vue')['default'] + SidebarTrigger: typeof import('./src/components/ui/sidebar/SidebarTrigger.vue')['default'] + Skeleton: typeof import('./src/components/ui/skeleton/Skeleton.vue')['default'] StatementEditor: typeof import('./src/features/wikibase-schema/components/StatementEditor.vue')['default'] StatementManager: typeof import('./src/features/wikibase-schema/components/StatementManager.vue')['default'] Tab: typeof import('primevue/tab')['default'] @@ -60,6 +119,10 @@ declare module 'vue' { TieredMenu: typeof import('primevue/tieredmenu')['default'] Toast: typeof import('primevue/toast')['default'] ToggleSwitch: typeof import('primevue/toggleswitch')['default'] + Tooltip: typeof import('./src/components/ui/tooltip/Tooltip.vue')['default'] + TooltipContent: typeof import('./src/components/ui/tooltip/TooltipContent.vue')['default'] + TooltipProvider: typeof import('./src/components/ui/tooltip/TooltipProvider.vue')['default'] + TooltipTrigger: typeof import('./src/components/ui/tooltip/TooltipTrigger.vue')['default'] ValidationDisplay: typeof import('./src/features/wikibase-schema/components/ValidationDisplay.vue')['default'] ValueMappingEditor: typeof import('./src/features/wikibase-schema/components/ValueMappingEditor.vue')['default'] WikibaseSchemaEditor: typeof import('./src/features/wikibase-schema/components/WikibaseSchemaEditor.vue')['default'] diff --git a/frontend/src/components/ui/breadcrumb/Breadcrumb.vue b/frontend/src/components/ui/breadcrumb/Breadcrumb.vue new file mode 100644 index 0000000..b99dcea --- /dev/null +++ b/frontend/src/components/ui/breadcrumb/Breadcrumb.vue @@ -0,0 +1,17 @@ + + + diff --git a/frontend/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue b/frontend/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue new file mode 100644 index 0000000..6aa567e --- /dev/null +++ b/frontend/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue @@ -0,0 +1,23 @@ + + + diff --git a/frontend/src/components/ui/breadcrumb/BreadcrumbItem.vue b/frontend/src/components/ui/breadcrumb/BreadcrumbItem.vue new file mode 100644 index 0000000..de61bc8 --- /dev/null +++ b/frontend/src/components/ui/breadcrumb/BreadcrumbItem.vue @@ -0,0 +1,17 @@ + + + diff --git a/frontend/src/components/ui/breadcrumb/BreadcrumbLink.vue b/frontend/src/components/ui/breadcrumb/BreadcrumbLink.vue new file mode 100644 index 0000000..3f722da --- /dev/null +++ b/frontend/src/components/ui/breadcrumb/BreadcrumbLink.vue @@ -0,0 +1,21 @@ + + + diff --git a/frontend/src/components/ui/breadcrumb/BreadcrumbList.vue b/frontend/src/components/ui/breadcrumb/BreadcrumbList.vue new file mode 100644 index 0000000..ac7effd --- /dev/null +++ b/frontend/src/components/ui/breadcrumb/BreadcrumbList.vue @@ -0,0 +1,17 @@ + + + diff --git a/frontend/src/components/ui/breadcrumb/BreadcrumbPage.vue b/frontend/src/components/ui/breadcrumb/BreadcrumbPage.vue new file mode 100644 index 0000000..8f764c0 --- /dev/null +++ b/frontend/src/components/ui/breadcrumb/BreadcrumbPage.vue @@ -0,0 +1,20 @@ + + + diff --git a/frontend/src/components/ui/breadcrumb/BreadcrumbSeparator.vue b/frontend/src/components/ui/breadcrumb/BreadcrumbSeparator.vue new file mode 100644 index 0000000..00e9bda --- /dev/null +++ b/frontend/src/components/ui/breadcrumb/BreadcrumbSeparator.vue @@ -0,0 +1,22 @@ + + + diff --git a/frontend/src/components/ui/breadcrumb/index.ts b/frontend/src/components/ui/breadcrumb/index.ts new file mode 100644 index 0000000..0590983 --- /dev/null +++ b/frontend/src/components/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/frontend/src/components/ui/button/Button.vue b/frontend/src/components/ui/button/Button.vue index 54e37ed..323911d 100644 --- a/frontend/src/components/ui/button/Button.vue +++ b/frontend/src/components/ui/button/Button.vue @@ -20,7 +20,6 @@ const props = withDefaults(defineProps(), {