Skip to main content

Custom Component API Reference

Detailed description of all APIs available for custom component development.

Basic Types for Custom Components​

CustomComponentRenderProps​

All custom components receive properties through the CustomComponentRenderProps type:

import { CustomComponentRenderProps } from '@hops/custom-component';

interface OwnProps {
// Custom properties
label: string;
placeholder: string;
}

function MyComponent(props: CustomComponentRenderProps<OwnProps>): ReactElement {
// Component implementation
}

CustomComponentRenderProps includes user-defined properties and may also include additional internal properties:

  • name: string the name of the component
  • isHidden: boolean | undefined: whether the component is hidden or not

Hooks​

useComponentState​

A hook that manages component state and makes it accessible externally.

Type Signature:

function useComponentState<T>(name: string, initialValue: T): [T, (value: T) => void];

Parameters:

  • name: Unique identifier for the state (string)
  • initialValue: Initial value

Return Value:

  • An array containing the current state value and a function to update the state

Usage Example:

const [value, setValue] = useComponentState<string>('inputValue', '');
const [numberValue, setNumberValue] = useComponentState<number>(10, '');

// Update state
setValue('New value');
setNumberValue((value) => value + 1);

useLogger​

A hook for logging within components. Useful for development and debugging.

Type Signature:

function useLogger(): Logger;

interface Logger {
trace(message: string): void;
debug(message: string): void;
info(message: string): void;
warn(message: string): void;
error(message: string): void;
}

Return Value:

  • A Logger object that provides logging methods

Usage Example:

const logger = useLogger();

// Output logs
logger.trace('Detailed log message');
logger.debug('Debug message');
logger.info('Info message');
logger.warn('Warning message');
logger.error('Error message');

Supported Libraries and Versions​

The following libraries can be used in custom components:

LibraryVersionDescription
React18.2.0UI component library
React DOM18.2.0React's DOM rendering library
@hops/design-system-Hops design system components
@hops/custom-component-Custom component API
note

Please contact the Hops team(contact@hopsoffice.com) if you need to use other external libraries.