import { HttpTypes } from "@medusajs/types" export enum ColumnAlignment { LEFT = "left", CENTER = "center", RIGHT = "right", } const DEFAULT_COLUMN_ORDER = 500 /** * Determines the appropriate column alignment based on the column metadata */ export function getColumnAlignment(column: HttpTypes.AdminViewColumn): ColumnAlignment { // Currency columns should be right-aligned if (column.semantic_type === "currency" || column.data_type === "currency") { return ColumnAlignment.RIGHT } // Number columns should be right-aligned (except identifiers) if (column.data_type === "number" && column.context !== "identifier") { return ColumnAlignment.RIGHT } // Total/amount/price columns should be right-aligned if ( column.field.includes("total") || column.field.includes("amount") || column.field.includes("price") ) { return ColumnAlignment.RIGHT } // Country columns should be center-aligned if (column.field === "country" || column.field.includes("country_code")) { return ColumnAlignment.CENTER } // Default to left alignment return ColumnAlignment.LEFT } /** * Gets the initial column visibility state from API columns */ export function getInitialColumnVisibility( apiColumns: HttpTypes.AdminViewColumn[] ): Record { const visibility: Record = {} apiColumns.forEach(column => { visibility[column.field] = column.default_visible }) return visibility } /** * Gets the initial column order from API columns */ export function getInitialColumnOrder( apiColumns: HttpTypes.AdminViewColumn[] ): string[] { const sortedColumns = [...apiColumns].sort((a, b) => { const orderA = a.default_order ?? DEFAULT_COLUMN_ORDER const orderB = b.default_order ?? DEFAULT_COLUMN_ORDER return orderA - orderB }) return sortedColumns.map(col => col.field) }