presentation/components/menu.component.ts
presentation/components/menu.component.ts is a file in Bane's Lab Site. 20 lines of code and 3 definitions.
import { ICON_BASE_CLASS } from "#configuration/icons/element.icons";
import type { PageEntry } from "#types/page.types";
import { ROUTE_REQUESTED } from "#core/ids/route.ids";
import { createElement } from "#core/factories/element.factory";
import { emitEvent } from "#core/buses/base.bus";
export const PAGE_ATTRIBUTE = "data-page";
export const createMenuButton = function createMenuButton(page: PageEntry): HTMLButtonElement {
const button = createElement("button", {
attributes: { [PAGE_ATTRIBUTE]: page.id, title: page.title, type: "button" },
children: [
createElement("i", { className: `${ICON_BASE_CLASS} ${page.icon}` }),
createElement("span", { className: "tab-label", text: page.title }),
],
className: `tab-button ${page.accent}`,
});
button.addEventListener("click", () => {
emitEvent({ name: ROUTE_REQUESTED, page: page.id });
});
return button;
};