import { IMagicBellTheme } from '../context/Theme.js';

export const fonts = {
  sans: `Inter, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif, -apple-system, system`,
  mono: `ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace`,
};

const colors = {
  bg: '#FFFFFF',
  caption: '#181B20',
  text: '#3A424D',
  ghost: '#6E7D91',
  stroke: '#EFEEF1',
  accent: '#5225C1',
  badge: '#F80808',
  bgHighlight: '#F8F5FF',
  bgActive: '#F2EDFC',
  transparent: 'transparent',
};

const prose: IMagicBellTheme['prose'] = {
  headings: colors.caption,
  links: colors.caption,
  bold: colors.caption,
  hr: colors.stroke,
  quotes: colors.text,
  quoteBorders: colors.stroke,
  captions: colors.caption,
  code: colors.text,
  preCode: colors.stroke,
  preBg: colors.text,
  thBorders: colors.stroke,
  tdBorders: colors.stroke,
  buttonBorders: colors.text,
  buttons: colors.caption,
  fontMono: fonts.mono,
};

const icon: IMagicBellTheme['icon'] = {
  borderColor: colors.accent,
  width: '24px',
};

const tabs: IMagicBellTheme['tabs'] = {
  margin: '-8px 0 -16px 0',
  spacing: '4px',
  fontSize: '12px',
  fontWeight: 500,
  color: colors.ghost,
  activeColor: colors.accent,
};

const header: IMagicBellTheme['header'] = {
  backgroundColor: colors.bg,
  backgroundOpacity: 1,
  borderRadius: '16px',
  fontFamily: fonts.sans,
  fontSize: '15px',
  fontWeight: 400,
  textAlign: 'left',
  textColor: colors.accent,
  textTransform: 'none',
  padding: '16px',
  borderColor: colors.stroke,
};

const footer: IMagicBellTheme['footer'] = {
  ...header,
  fontSize: '12px', // set for backward compatibility
  padding: '8px 16px',
};

const banner: IMagicBellTheme['banner'] = {
  backgroundColor: colors.bgHighlight,
  backgroundOpacity: 1,
  textColor: colors.text,
  fontFamily: fonts.sans,
  textAlign: 'left',
  fontSize: '12px',
  boxShadow: `inset 0 1px 0 0 ${colors.stroke}`,
};

const unseenBadge: IMagicBellTheme['unseenBadge'] = {
  backgroundColor: colors.badge,
  backgroundOpacity: 1,
  borderColor: 'white',
  borderRadius: '4px',
  fontFamily: fonts.sans,
  fontWeight: 400,
  fontSize: '9px',
  textAlign: 'center',
  textColor: 'white',
  textTransform: 'none',
  padding: '2px 3px',
};

const container: IMagicBellTheme['container'] = {
  backgroundColor: colors.bg,
  backgroundOpacity: 1,
  borderRadius: '8px',
  fontFamily: fonts.sans,
  fontWeight: 'inherit',
  fontSize: '16px',
  textAlign: 'left',
  textColor: colors.text,
  textTransform: 'none',
  boxShadow: '0px 0px 6px rgba(0, 0, 0, 0.08), 0px 5px 12px rgba(0, 0, 0, 0.16)',
  borderColor: colors.transparent,
};

const defaultNotification: IMagicBellTheme['notification']['default'] = {
  backgroundColor: colors.bg,
  backgroundOpacity: 1,
  borderRadius: '16px',
  fontFamily: fonts.sans,
  fontSize: '12px',
  fontWeight: 400,
  textAlign: 'left',
  textColor: colors.text,
  textTransform: 'none',
  margin: '8px',
  padding: '16px 8px',
  title: {
    fontFamily: 'inherit',
    fontSize: 'inherit',
    fontWeight: 600,
    textColor: colors.caption,
  },
  hover: {
    backgroundColor: colors.bgActive,
    backgroundOpacity: 1,
  },
  state: {
    color: colors.transparent,
  },
};

const unreadNotification: IMagicBellTheme['notification']['unread'] = {
  ...defaultNotification,
  backgroundColor: colors.bgHighlight,
  hover: {
    backgroundColor: colors.bgActive,
    backgroundOpacity: 1,
  },
  state: {
    color: colors.accent,
  },
};

const dialog: IMagicBellTheme['dialog'] = {
  backgroundColor: colors.bg,
  textColor: colors.text,
  accentColor: colors.accent,
};

export const lightTheme: IMagicBellTheme = {
  prose,
  icon,
  tabs,
  header,
  footer,
  banner,
  dialog,
  unseenBadge,
  container,
  notification: {
    default: defaultNotification,
    unread: unreadNotification,
    unseen: unreadNotification,
  },
};
