/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectionToken } from "@ogre-tools/injectable"; import type { IComputedValue } from "mobx"; import type React from "react"; export type PreferenceItemComponent = React.ComponentType<{ children: React.ReactElement; item: T; }>; export interface PreferenceTab { kind: "tab"; id: string; parentId: string; pathId: string; label: string; orderNumber: number; isShown?: IComputedValue | boolean; } export interface PreferenceTabGroup { kind: "tab-group"; id: string; parentId: "preference-tabs"; label: string; orderNumber: number; isShown?: IComputedValue | boolean; iconName?: string; } export interface PreferencePage { kind: "page"; id: string; parentId: string; isShown?: IComputedValue | boolean; childSeparator?: () => React.ReactElement; Component: PreferenceItemComponent; } export interface PreferenceItem { kind: "item"; id: string; parentId: string; orderNumber: number; isShown?: IComputedValue | boolean; childSeparator?: () => React.ReactElement; Component: PreferenceItemComponent; } export type PreferenceTypes = PreferenceTabGroup | PreferenceTab | PreferenceItem | PreferencePage; export const preferenceItemInjectionToken = getInjectionToken({ id: "preference-item-injection-token", });