import type { Preset } from '../components/Grid/Grid.types';

export type FooterHeights = Record<
  Preset,
  Record<'draggable' | 'none', Record<'small' | 'medium', number>>
>;

export interface GridSizePreset {
  footerHeights: FooterHeights;
  aspectRatio: number;
  imagePlacement: 'side' | 'top';
}

export const topGridSizePreset: GridSizePreset = {
  imagePlacement: 'top',
  footerHeights: {
    empty: {
      draggable: {
        small: 0,
        medium: 0,
      },
      none: {
        small: 0,
        medium: 0,
      },
    },
    title: {
      draggable: {
        small: 48,
        medium: 60,
      },
      none: {
        small: 42,
        medium: 60,
      },
    },
    full: {
      draggable: {
        small: 57,
        medium: 78,
      },
      none: {
        small: 57,
        medium: 78,
      },
    },
    footer: {
      draggable: {
        small: 99,
        medium: 120,
      },
      none: {
        small: 99,
        medium: 120,
      },
    },
  },
  aspectRatio: 0.625,
};

export const sideGridSizePreset: GridSizePreset = {
  imagePlacement: 'side',
  footerHeights: {
    empty: {
      draggable: {
        small: 54,
        medium: 76,
      },
      none: {
        small: 54,
        medium: 76,
      },
    },
    title: {
      draggable: {
        small: 54,
        medium: 76,
      },
      none: {
        small: 54,
        medium: 76,
      },
    },
    full: {
      draggable: {
        small: 56,
        medium: 76,
      },
      none: {
        small: 56,
        medium: 76,
      },
    },
    footer: {
      draggable: {
        small: 98,
        medium: 118,
      },
      none: {
        small: 98,
        medium: 118,
      },
    },
  },
  aspectRatio: 0,
};

export const gridSizePresets = {
  top: topGridSizePreset,
  side: sideGridSizePreset,
};
