import { type MantineTheme } from '@mantine/core';

import { type MantineShade } from '../types';

export const parseCSSVarId = (id: string) => id.replace(/[^a-zA-Z0-9]/g, '_');

export const getPrimaryShade = (theme: MantineTheme): number =>
  typeof theme.primaryShade === 'number'
    ? theme.primaryShade
    : (theme.primaryShade?.dark ?? 7);

export const getPrimaryColor = (
  theme: MantineTheme,
  shade?: MantineShade,
): string => theme.colors[theme.primaryColor][shade ?? getPrimaryShade(theme)];

export function dataVariable(
  name: string,
  value: boolean | number | string | undefined,
) {
  const key = `data-${name}`;
  switch (typeof value) {
    case 'boolean':
      return value ? { [key]: '' } : null;
    case 'number':
      return { [key]: `${value}` };
    case 'string':
      return { [key]: value };
    default:
      return null;
  }
}
