🏷️ Menu bar component interface file added

This commit is contained in:
Paul Valerie GOMA 2025-07-30 10:43:18 +02:00
parent 0ebc29b3df
commit e46ba8127d

View File

@ -0,0 +1,91 @@
import type { HTMLAttributes } from "vue"
import type { RouteLocationRaw } from "vue-router"
import type { MenuItem } from "primevue/menuitem"
/**
* Describes a link or button item in a menu bar.
*/
export interface IVMenuBarLinks {
/** Whether the item should be rendered as a button */
button?: boolean;
/** Name of the icon to display on the left */
icon?: string;
/** Whether the icon appears on the right side */
iconRight?: boolean;
/** Text label for the item */
label?: string;
/** Target URL if rendered as an anchor (<a>) */
target?: string;
/** Callback executed when the item is clicked */
onClick?: ($event: MouseEvent) => void;
/** Navigation route */
to?: RouteLocationRaw;
}
/**
* Extends PrimeVue's MenuItem with optional routing capabilities.
* Excludes 'style' and 'class' to avoid conflicts with Vue attributes.
*/
export interface IVMenuItem
extends Partial<Omit<MenuItem, 'style' | 'class'>>,
Partial<Pick<IVMenuBarLinks, 'to'>> {}
/**
* Interface for configuring a customizable menu bar component.
*/
export default interface IVMenuBar {
/** HTML id for the searchbar input */
searchbarId?: string;
/** Title of the service or application */
serviceTitle?: string;
/** Description of the service */
serviceDescription?: string;
/** Text displayed beside the logo (can be multiline) */
logoText?: string | string[];
/** Whether to show the logo */
logo?: boolean;
/** Bound model value for the search input */
modelValue?: string;
/** Placeholder text for the search input */
placeholder?: string;
/** List of quick link items with additional HTML attributes */
quickLinks?: (IVMenuItem & HTMLAttributes)[];
/** Label for the search input (accessibility) */
searchLabel?: string;
/** ARIA label for the quick links section */
quickLinksAriaLabel?: string;
/** Whether to display the search bar */
showSearch?: boolean;
/** Label describing the search bar visibility */
showSearchLabel?: string;
/** Label for the main menu toggle button */
menuLabel?: string;
/** Label used in modal menus */
menuModalLabel?: string;
/** Label for closing the modal menu */
closeMenuModalLabel?: string;
/** Responsive breakpoints (e.g. Tailwind-style classes) */
breakpoints?: string;
}