export const LIST_PAGE_SIZE = 50

export const LIST_PAGE_SIZE_MAX = 500

export const LIST_PAGE_SIZE_OPTIONS = [50, 100, 250, 500] as const

export type ListPageSize = (typeof LIST_PAGE_SIZE_OPTIONS)[number]

export function isListPageSize(value: number): value is ListPageSize {
  return (LIST_PAGE_SIZE_OPTIONS as readonly number[]).includes(value)
}

/** Clamp persisted/UI page size to a supported API value. */
export function normalizeListPageSize(value: number): ListPageSize {
  if (isListPageSize(value) && value <= LIST_PAGE_SIZE_MAX) return value
  const allowed = LIST_PAGE_SIZE_OPTIONS.filter((n) => n <= LIST_PAGE_SIZE_MAX)
  for (let i = allowed.length - 1; i >= 0; i--) {
    if (value >= allowed[i]!) return allowed[i]!
  }
  return LIST_PAGE_SIZE
}
