export const colors = {
  // Primary Colors
  primary: {
    50: "#f0fdf4",
    100: "#dcfce7",
    200: "#bbf7d0",
    300: "#86efac",
    400: "#4ade80",
    500: "#22c55e",
    600: "#16a34a",
    700: "#15803d",
    800: "#166534",
    900: "#14532d",
    950: "#052e16",
  },

  // Secondary Colors (Blue)
  secondary: {
    50: "#eff6ff",
    100: "#dbeafe",
    200: "#bfdbfe",
    300: "#93c5fd",
    400: "#60a5fa",
    500: "#3b82f6",
    600: "#2563eb",
    700: "#1d4ed8",
    800: "#1e40af",
    900: "#1e3a8a",
    950: "#172554",
  },

  // Neutral Colors
  neutral: {
    50: "#fafafa",
    100: "#f5f5f5",
    200: "#e5e5e5",
    300: "#d4d4d4",
    400: "#a3a3a3",
    500: "#737373",
    600: "#525252",
    700: "#404040",
    800: "#262626",
    900: "#171717",
    950: "#0a0a0a",
  },

  // Status Colors
  success: {
    50: "#f0fdf4",
    100: "#dcfce7",
    200: "#bbf7d0",
    300: "#86efac",
    400: "#4ade80",
    500: "#22c55e",
    600: "#16a34a",
    700: "#15803d",
    800: "#166534",
    900: "#14532d",
  },

  error: {
    50: "#fef2f2",
    100: "#fee2e2",
    200: "#fecaca",
    300: "#fca5a5",
    400: "#f87171",
    500: "#ef4444",
    600: "#dc2626",
    700: "#b91c1c",
    800: "#991b1b",
    900: "#7f1d1d",
  },

  warning: {
    50: "#fffbeb",
    100: "#fef3c7",
    200: "#fde68a",
    300: "#fcd34d",
    400: "#fbbf24",
    500: "#f59e0b",
    600: "#d97706",
    700: "#b45309",
    800: "#92400e",
    900: "#78350f",
  },

  info: {
    50: "#eff6ff",
    100: "#dbeafe",
    200: "#bfdbfe",
    300: "#93c5fd",
    400: "#60a5fa",
    500: "#3b82f6",
    600: "#2563eb",
    700: "#1d4ed8",
    800: "#1e40af",
    900: "#1e3a8a",
  },

  // Teal Colors (Brand accent)
  teal: {
    50: "#f0fdfa",
    100: "#ccfbf1",
    200: "#99f6e4",
    300: "#5eead4",
    400: "#2dd4bf",
    500: "#14b8a6",
    600: "#0d9488",
    700: "#0f766e",
    800: "#115e59",
    900: "#134e4a",
  },

  // Dark Colors (Brand dark)
  dark: {
    50: "#f8fafc",
    100: "#f1f5f9",
    200: "#e2e8f0",
    300: "#cbd5e1",
    400: "#94a3b8",
    500: "#64748b",
    600: "#475569",
    700: "#334155",
    800: "#1e293b",
    900: "#0f172a",
    950: "#020617",
  },

  // Login specific colors
  login: {
    primary: "#3aea83",
    darkStart: "#464861",
    darkEnd: "#111628",
  },
};

export const typography = {
  fontFamily: {
    sans: ["Vazirmatn", "Inter", "ui-sans-serif", "system-ui", "sans-serif"],
    mono: ["ui-monospace", "SFMono-Regular", "Consolas", "monospace"],
  },

  fontSize: {
    xs: ["0.75rem", { lineHeight: "1rem" }],
    sm: ["0.875rem", { lineHeight: "1.25rem" }],
    base: ["1rem", { lineHeight: "1.5rem" }],
    lg: ["1.125rem", { lineHeight: "1.75rem" }],
    xl: ["1.25rem", { lineHeight: "1.75rem" }],
    "2xl": ["1.5rem", { lineHeight: "2rem" }],
    "3xl": ["1.875rem", { lineHeight: "2.25rem" }],
    "4xl": ["2.25rem", { lineHeight: "2.5rem" }],
    "5xl": ["3rem", { lineHeight: "1" }],
    "6xl": ["3.75rem", { lineHeight: "1" }],
  },

  fontWeight: {
    thin: "100",
    extralight: "200",
    light: "300",
    normal: "400",
    medium: "500",
    semibold: "600",
    bold: "700",
    extrabold: "800",
    black: "900",
  },
};

export const spacing = {
  px: "1px",
  0: "0px",
  0.5: "0.125rem",
  1: "0.25rem",
  1.5: "0.375rem",
  2: "0.5rem",
  2.5: "0.625rem",
  3: "0.75rem",
  3.5: "0.875rem",
  4: "1rem",
  5: "1.25rem",
  6: "1.5rem",
  7: "1.75rem",
  8: "2rem",
  9: "2.25rem",
  10: "2.5rem",
  11: "2.75rem",
  12: "3rem",
  14: "3.5rem",
  16: "4rem",
  20: "5rem",
  24: "6rem",
  28: "7rem",
  32: "8rem",
  36: "9rem",
  40: "10rem",
  44: "11rem",
  48: "12rem",
  52: "13rem",
  56: "14rem",
  60: "15rem",
  64: "16rem",
  72: "18rem",
  80: "20rem",
  96: "24rem",
};

export const borderRadius = {
  none: "0px",
  sm: "0.125rem",
  DEFAULT: "0.25rem",
  md: "0.375rem",
  lg: "0.5rem",
  xl: "0.75rem",
  "2xl": "1rem",
  "3xl": "1.5rem",
  full: "9999px",
};

export const shadows = {
  sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
  DEFAULT: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
  md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
  lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
  xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
  "2xl": "0 25px 50px -12px rgb(0 0 0 / 0.25)",
  inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",
  none: "0 0 #0000",
};

export const animations = {
  spin: "spin 1s linear infinite",
  ping: "ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",
  pulse: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
  bounce: "bounce 1s infinite",
  fadeIn: "fadeIn 0.3s ease-in-out",
  fadeOut: "fadeOut 0.3s ease-in-out",
  slideInRight: "slideInRight 0.3s ease-out",
  slideInLeft: "slideInLeft 0.3s ease-out",
  slideUp: "slideUp 0.3s ease-out",
  slideDown: "slideDown 0.3s ease-out",
};

export const breakpoints = {
  sm: "640px",
  md: "768px",
  lg: "1024px",
  xl: "1280px",
  "2xl": "1536px",
};

export const zIndex = {
  auto: "auto",
  0: "0",
  10: "10",
  20: "20",
  30: "30",
  40: "40",
  50: "50",
  dropdown: "1000",
  sticky: "1020",
  fixed: "1030",
  modal: "1040",
  popover: "1050",
  tooltip: "1060",
  toast: "1070",
};

// Component-specific design tokens
export const components = {
  button: {
    sizes: {
      sm: {
        height: "2rem",
        padding: "0 0.75rem",
        fontSize: "0.875rem",
      },
      md: {
        height: "2.5rem",
        padding: "0 1rem",
        fontSize: "0.875rem",
      },
      lg: {
        height: "3rem",
        padding: "0 1.5rem",
        fontSize: "1rem",
      },
    },
    variants: {
      primary: {
        background: colors.primary[500],
        color: "white",
        hover: colors.primary[600],
        active: colors.primary[700],
      },
      secondary: {
        background: colors.secondary[500],
        color: "white",
        hover: colors.secondary[600],
        active: colors.secondary[700],
      },
      teal: {
        background: colors.teal[500],
        color: colors.dark[900],
        hover: colors.teal[600],
        active: colors.teal[700],
      },
      outline: {
        background: "transparent",
        color: colors.neutral[700],
        border: colors.neutral[300],
        hover: colors.neutral[50],
      },
      ghost: {
        background: "transparent",
        color: colors.neutral[700],
        hover: colors.neutral[100],
      },
    },
  },

  input: {
    sizes: {
      sm: {
        height: "2rem",
        padding: "0 0.75rem",
        fontSize: "0.875rem",
      },
      md: {
        height: "2.5rem",
        padding: "0 0.75rem",
        fontSize: "0.875rem",
      },
      lg: {
        height: "3rem",
        padding: "0 1rem",
        fontSize: "1rem",
      },
    },
    states: {
      default: {
        border: colors.neutral[300],
        background: "white",
      },
      focus: {
        border: colors.primary[500],
        boxShadow: `0 0 0 3px ${colors.primary[100]}`,
      },
      error: {
        border: colors.error[500],
        boxShadow: `0 0 0 3px ${colors.error[100]}`,
      },
      disabled: {
        background: colors.neutral[100],
        color: colors.neutral[400],
        cursor: "not-allowed",
      },
    },
  },

  card: {
    default: {
      background: "white",
      border: colors.neutral[200],
      borderRadius: borderRadius.lg,
      boxShadow: shadows.sm,
      padding: spacing[6],
    },
    hover: {
      boxShadow: shadows.md,
    },
  },
};

// RTL-specific adjustments
export const rtl = {
  marginRight: "marginLeft",
  marginLeft: "marginRight",
  paddingRight: "paddingLeft",
  paddingLeft: "paddingRight",
  right: "left",
  left: "right",
  borderRightWidth: "borderLeftWidth",
  borderLeftWidth: "borderRightWidth",
  borderRightColor: "borderLeftColor",
  borderLeftColor: "borderRightColor",
};

// Theme variants
export const themes = {
  light: {
    background: colors.neutral[50],
    foreground: colors.neutral[900],
    card: "white",
    cardForeground: colors.neutral[900],
    popover: "white",
    popoverForeground: colors.neutral[900],
    primary: colors.primary[500],
    primaryForeground: "white",
    secondary: colors.neutral[100],
    secondaryForeground: colors.neutral[900],
    muted: colors.neutral[100],
    mutedForeground: colors.neutral[500],
    accent: colors.neutral[100],
    accentForeground: colors.neutral[900],
    destructive: colors.error[500],
    destructiveForeground: "white",
    border: colors.neutral[200],
    input: colors.neutral[200],
    ring: colors.primary[500],
    teal: colors.teal[500],
    tealForeground: colors.dark[900],
    dark: colors.dark[900],
    darkForeground: "white",
    loginPrimary: colors.login.primary,
    loginDarkStart: colors.login.darkStart,
    loginDarkEnd: colors.login.darkEnd,
  },

  dark: {
    background: colors.dark[950],
    foreground: colors.neutral[50],
    card: colors.dark[900],
    cardForeground: colors.neutral[50],
    popover: colors.dark[900],
    popoverForeground: colors.neutral[50],
    primary: colors.primary[400],
    primaryForeground: colors.neutral[900],
    secondary: colors.neutral[800],
    secondaryForeground: colors.neutral[50],
    muted: colors.neutral[800],
    mutedForeground: colors.neutral[400],
    accent: colors.neutral[800],
    accentForeground: colors.neutral[50],
    destructive: colors.error[400],
    destructiveForeground: colors.neutral[50],
    border: colors.neutral[800],
    input: colors.neutral[800],
    ring: colors.primary[400],
    teal: colors.teal[400],
    tealForeground: colors.dark[50],
    dark: colors.dark[800],
    darkForeground: colors.neutral[50],
    loginPrimary: colors.login.primary,
    loginDarkStart: colors.login.darkStart,
    loginDarkEnd: colors.login.darkEnd,
  },
};
