hunk.code_window:         return (
             <TextAlignmentWrapper colorScheme={theme.colorScheme}>
               {textAlignments.map(([dir, icon], i) => (
                 <Button
                   key={`align-${dir}-btn`}
                   onClick={(e) => {
                     e.preventDefault();
                     e.stopPropagation();
                     field.onChange(dir);
  
hunk.labels: keep keep keep keep replace keep keep keep keep
hunk.after_edit:                 key={`align-${dir as string}-btn`}
  
hunk.file_path: apps/web/src/pages/templates/components/email-editor/ContentRow.tsx
hunk.type: replace
file: import { IPushOptions, IPushProvider } from '@novu/stateless';
  import { ChannelTypeEnum } from '@novu/shared';
  import { ICredentials } from '@novu/dal';
  import { IPushHandler } from '../interfaces';
  
  export abstract class BasePushHandler implements IPushHandler {
    protected provider: IPushProvider;
  
    protected constructor(private providerId: string, private channelType: string) {}
  
    canHandle(providerId: string, channelType: ChannelTypeEnum) {
      return providerId === this.providerId && channelType === this.channelType;
    }
  
    async send(options: IPushOptions) {
      if (process.env.NODE_ENV === 'test') {
        throw new Error('Currently 3rd-party packages test are not support on test env');
      }
  
      return await this.provider.sendMessage(options);
    }
  
    abstract buildProvider(credentials: ICredentials);
  }
  