import type { ComponentType, ReactElement, ReactNode } from 'react'; export type RecordValues< T extends Record< string, unknown > > = T[ keyof T ]; export type SnakeToCamelCase< S extends string | number | symbol > = S extends `${ infer T }_${ infer U }` ? `${ T }${ Capitalize< SnakeToCamelCase< U > > }` : S; export type CamelCaseType< InputType extends Record< string, unknown > | object, > = { [ K in keyof InputType as SnakeToCamelCase< K > ]: InputType[ K ]; }; export type ShipmentRecord< T > = Record< `shipment_${ number | string }`, T >; export type DeepPartial< T > = T extends object ? { [ P in keyof T ]?: DeepPartial< T[ P ] >; } : T; export type SnakeCaseType< T > = { [ K in keyof T as K extends string ? SnakeToCamelCase< K > : K ]: T[ K ]; }; export const isCallableElement = ( type: ReactElement | ComponentType | ReactNode ): type is ( props: unknown ) => ReactElement | null => typeof type === 'function';