Step 4: Add admin UI page for pricing configuration

- Add pricing API functions to admin.ts
- Create admin pricing page with form and validation
- Add MANAGE_PRICING permission to auth context
- Add pricing to admin navigation
- Add translations for pricing page (en, ca, es)
- Update PageLayout and Header types for new page
This commit is contained in:
counterweight 2025-12-26 20:17:48 +01:00
parent 4d0dad8e2b
commit d838d1be96
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
11 changed files with 509 additions and 5 deletions

View file

@ -109,5 +109,31 @@
"clearFailed": "Error en netejar",
"copyFailed": "Error en copiar"
}
},
"pricing": {
"title": "Configuració de Preus",
"subtitle": "Configura els preus de prima i els límits d'import de les operacions",
"premiumSettings": "Configuració de Prima",
"premiumBuy": "Prima per COMPRAR",
"premiumSell": "Prima per VENDRE",
"smallTradeThreshold": "Umbral d'Operacions Petites",
"smallTradeExtraPremium": "Prima Extra per Operacions Petites",
"tradeLimitsBuy": "Límits d'Import d'Operacions (COMPRAR)",
"tradeLimitsSell": "Límits d'Import d'Operacions (VENDRE)",
"minAmount": "Import Mínim",
"maxAmount": "Import Màxim",
"save": "Guardar Canvis",
"success": "Configuració de preus guardada correctament",
"confirmSave": "Estàs segur que vols guardar aquests canvis de preus? Això afectarà totes les noves operacions immediatament.",
"validation": {
"premiumRange": "La prima ha de ser entre -100% i 100%",
"positive": "L'import ha de ser positiu",
"minMaxBuy": "El mínim ha de ser menor que el màxim per COMPRAR",
"minMaxSell": "El mínim ha de ser menor que el màxim per VENDRE"
},
"errors": {
"loadFailed": "Error en carregar la configuració de preus",
"saveFailed": "Error en guardar la configuració de preus"
}
}
}

View file

@ -7,5 +7,6 @@
"trades": "Operacions",
"availability": "Disponibilitat",
"invites": "Invitacions",
"prices": "Preus"
"prices": "Preus",
"pricing": "Preus"
}

View file

@ -109,5 +109,31 @@
"clearFailed": "Failed to clear",
"copyFailed": "Failed to copy"
}
},
"pricing": {
"title": "Pricing Configuration",
"subtitle": "Configure premium pricing and trade amount limits",
"premiumSettings": "Premium Settings",
"premiumBuy": "Premium for BUY",
"premiumSell": "Premium for SELL",
"smallTradeThreshold": "Small Trade Threshold",
"smallTradeExtraPremium": "Extra Premium for Small Trades",
"tradeLimitsBuy": "Trade Amount Limits (BUY)",
"tradeLimitsSell": "Trade Amount Limits (SELL)",
"minAmount": "Minimum Amount",
"maxAmount": "Maximum Amount",
"save": "Save Changes",
"success": "Pricing configuration saved successfully",
"confirmSave": "Are you sure you want to save these pricing changes? This will affect all new trades immediately.",
"validation": {
"premiumRange": "Premium must be between -100% and 100%",
"positive": "Amount must be positive",
"minMaxBuy": "Minimum must be less than maximum for BUY",
"minMaxSell": "Minimum must be less than maximum for SELL"
},
"errors": {
"loadFailed": "Failed to load pricing configuration",
"saveFailed": "Failed to save pricing configuration"
}
}
}

View file

@ -7,5 +7,6 @@
"trades": "Trades",
"availability": "Availability",
"invites": "Invites",
"prices": "Prices"
"prices": "Prices",
"pricing": "Pricing"
}

View file

@ -109,5 +109,31 @@
"clearFailed": "Error al limpiar",
"copyFailed": "Error al copiar"
}
},
"pricing": {
"title": "Configuración de Precios",
"subtitle": "Configura los precios de prima y los límites de importe de las operaciones",
"premiumSettings": "Configuración de Prima",
"premiumBuy": "Prima para COMPRAR",
"premiumSell": "Prima para VENDER",
"smallTradeThreshold": "Umbral de Operaciones Pequeñas",
"smallTradeExtraPremium": "Prima Extra para Operaciones Pequeñas",
"tradeLimitsBuy": "Límites de Importe de Operaciones (COMPRAR)",
"tradeLimitsSell": "Límites de Importe de Operaciones (VENDER)",
"minAmount": "Importe Mínimo",
"maxAmount": "Importe Máximo",
"save": "Guardar Cambios",
"success": "Configuración de precios guardada correctamente",
"confirmSave": "¿Estás seguro de que quieres guardar estos cambios de precios? Esto afectará todas las nuevas operaciones inmediatamente.",
"validation": {
"premiumRange": "La prima debe estar entre -100% y 100%",
"positive": "El importe debe ser positivo",
"minMaxBuy": "El mínimo debe ser menor que el máximo para COMPRAR",
"minMaxSell": "El mínimo debe ser menor que el máximo para VENDER"
},
"errors": {
"loadFailed": "Error al cargar la configuración de precios",
"saveFailed": "Error al guardar la configuración de precios"
}
}
}

View file

@ -7,5 +7,6 @@
"trades": "Operaciones",
"availability": "Disponibilidad",
"invites": "Invitaciones",
"prices": "Precios"
"prices": "Precios",
"pricing": "Precios"
}