'use client';

import type { StatusEntry } from '@/components/ui/domain/StatusBadge/StatusBadge';
import { maskPhoneFromHint } from '@/lib/format';
import type { UserRow } from './UsersMgmt';

export const ACCOUNT_STATE_STATUS_MAP: Record<string, StatusEntry> = {
  ACTIVE: { tone: 'success', labelKey: 'state_active' },
  FROZEN: { tone: 'warning', labelKey: 'state_frozen' },
  DELETED_PENDING: { tone: 'danger', labelKey: 'state_deleted_pending' },
  DELETED: { tone: 'neutral', labelKey: 'state_deleted' },
};

export const FILTER_KEYS = [
  'states',
  'roles',
  'search',
  'purchaseActivity',
  'hasEmail',
  'emailVerified',
  'hasShippingAddress',
  'cityCode',
  'sort',
] as const;

export const SEGMENT_PARAM_KEYS = ['joinedFrom', 'joinedTo'] as const;
export const PARAM_KEYS = [...FILTER_KEYS, ...SEGMENT_PARAM_KEYS];

export const RECENT_STORAGE_KEY = 'multideal:admin:users:recent';
export const MAX_RECENT = 10;
export const SELECT_ALL = '__all__';
export const PAGE_LIMIT = 20;

export function userDisplayLabel(row: UserRow): string {
  return row.displayName || maskPhoneFromHint(row.phoneHint) || '—';
}

export function isoDaysAgo(days: number): string {
  const d = new Date();
  d.setDate(d.getDate() - days);
  return d.toISOString().slice(0, 10);
}
