import type { CustomObjectCategoryDefinition } from '../../../core/platform/custom-objects/category'; import { Category, type CategoryProps } from '../category'; import { detachedManifestScope, defineComponent, validateCustomApiName } from './component'; export type DefineCustomObjectCategoryProps = CategoryProps & { apiName: TApiName }; export function defineCategory( props: DefineCustomObjectCategoryProps, ): Category & CustomObjectCategoryDefinition; export function defineCategory(props: CategoryProps): Category | CustomObjectCategoryDefinition { validateCustomApiName(props.apiName); return categoryComponent.register( Object.assign(new Category(detachedManifestScope, props), { apiName: props.apiName, name: props.apiName.replace(/__c$/, ''), displayName: props.name, description: props.description, }), props, ); } export const defineCustomObjectCategory = defineCategory; export const categoryComponent = defineComponent({ type: 'CUSTOM_CATEGORY', define: defineCategory, serialize: (definition) => ({ type: 'CUSTOM_CATEGORY', api_name: definition.apiName, name: definition.displayName, description: definition.description ?? '', }), });