Refactor sidebar navigation and update translations

- Updated sidebar navigation titles and URLs to use new reference data keys for consistency.
- Added additional items to the general catalogs section in the sidebar.
- Changed the user avatar fallback text from "CN" to "AS" for better representation.
This commit is contained in:
2025-11-04 21:40:48 -06:00
parent f886498bac
commit dd566f408b
8 changed files with 340 additions and 119 deletions

1
frontend/.gitignore vendored
View File

@@ -25,3 +25,4 @@ vite.config.ts.timestamp-*
# Paraglide
src/lib/paraglide
frontend/project.inlang/cache/

View File

@@ -12,6 +12,9 @@ npx sv create
# create a new project in my-app
npx sv create my-app
# compile paraglide
cd frontend && sudo rm -rf src/lib/paraglide && pnpm paraglide-js compile --project ./project.inlang --outdir ./src/lib/paraglide
```
## Developing

View File

@@ -2,35 +2,80 @@
"$schema": "https://inlang.com/schema/inlang-message-format",
"hello_world": "Hello, {name} from en!",
"sidebar": {
"catalogos_fijos": "Fixed Catalogs",
"codigos_pedimento_regimen": "Pedimento and Regime Codes",
"contenedores": "Containers",
"paises": "Countries",
"tipos_moneda": "Currency Types",
"secciones_aduanas": "Customs Sections",
"recintos": "Customs Warehouses",
"incoterms": "Incoterms",
"tipos_factura": "Invoice Types",
"tipos_material": "Material Types",
"metodos_pago": "Payment Methods",
"codigos_pedimento": "Pedimento Codes",
"regimenes_pedimentos": "Pedimento Regimes",
"sectores": "Sectors",
"estados": "States",
"metodos_transporte": "Transportation Modes",
"tipos_transporte": "Transportation Types",
"metodos_valoracion": "Valuation Methods",
"inventarios": "Inventories",
"gestionar_inventarios": "Manage Inventories",
"reportes": "Reports",
"pedimentos": "Pedimentos",
"nuevo_pedimento": "New Pedimento",
"consultar": "Search",
"historial": "History",
"configuracion": "Settings",
"general": "General",
"licencia": "License",
"usuarios": "Users",
"ayuda": "Help"
"reference_data": {
"title": "Fixed Catalogs",
"codes_pedimento_regimen": "Pedimento and Regime Codes",
"containers": "Containers",
"countries": "Countries",
"currency_types": "Currency Types",
"customs_sections": "Customs Sections",
"customs_warehouses": "Customs Warehouses",
"incoterms": "Incoterms",
"invoice_types": "Invoice Types",
"material_types": "Material Types",
"payment_methods": "Payment Methods",
"pedimento_codes": "Pedimento Codes",
"pedimento_regimes": "Pedimento Regimes",
"sectors": "Sectors",
"states": "States",
"transportation_modes": "Transportation Modes",
"transportation_types": "Transportation Types",
"valuation_methods": "Valuation Methods",
"configuracion": "Settings",
"general": "General",
"licencia": "License",
"usuarios": "Users",
"ayuda": "Help"
},
"general_catalogs": {
"title": "General Catalogs",
"company_information": "Company Information",
"packages": "Packages",
"concepts": "Concepts",
"classification": "Classification",
"identifiers": "Identifiers",
"incoterms": "Incoterms",
"inpc": "I.N.P.C",
"fixed_legends": "Fixed Legends",
"seals": "Seals",
"valuation_methods": "Valuation Methods",
"countries": "Countries",
"ports": "Ports",
"unit_measures": "Unit Measures",
"um_customs_mex": "U.M. Customs Mexico",
"um_customs_ame": "U.M. Customs America",
"um_ace": "U.M. ACE",
"um_oma": "U.M. OMA",
"conversions": "Conversions",
"equivalences": "Equivalences",
"exchange_rates": "Exchange Rates",
"currency_types": "Currency Types",
"multi_currency": "Multi Currency",
"invoice_types": "Invoice Types",
"electronic_signatures": "Electronic Signatures",
"billing_errors": "Billing Errors",
"customs_warehouses": "Customs Warehouses",
"locations": "Locations",
"doda": "DODA",
"packing_list": "Packing List",
"prevalidators": "Prevalidators",
"electronic_notices": "Electronic Notices",
"back_flush": "Back Flush",
"crossing_notice": "Crossing Notice"
},
"pedimentos": {
"title": "Pedimentos",
"pedimento_management": "Pedimento Management",
"pedimento_codes": "Pedimento Codes",
"customs_regimes": "Customs Regimes",
"payment_methods": "Payment Methods",
"customs_sections": "Customs Sections",
"anexo_22_app_31": "Anexo 22 App 3"
},
"nav_user": {
"profile": "Profile",
"settings": "Settings",
"logout": "Logout"
}
}
}

View File

@@ -1,36 +1,76 @@
{
"$schema": "https://inlang.com/schema/inlang-message-format",
"hello_world": "Hello, {name} from es!",
"sidebar": {
"catalogos_fijos": "Catálogos Fijos",
"codigos_pedimento_regimen": "Códigos de Pedimento y Régimen",
"contenedores": "Contenedores",
"paises": "Países",
"tipos_moneda": "Tipos de moneda",
"secciones_aduanas": "Secciones de aduanas",
"recintos": "Recintos",
"incoterms": "Incoterms",
"tipos_factura": "Tipos de factura",
"tipos_material": "Tipos de material",
"metodos_pago": "Métodos de pago",
"codigos_pedimento": "Códigos de pedimento",
"regimenes_pedimentos": "Regímenes de pedimentos",
"sectores": "Sectores",
"estados": "Estados",
"metodos_transporte": "Métodos de transporte",
"tipos_transporte": "Tipos de transporte",
"metodos_valoracion": "Métodos de valoración",
"inventarios": "Inventarios",
"gestionar_inventarios": "Gestionar Inventarios",
"reportes": "Reportes",
"pedimentos": "Pedimentos",
"nuevo_pedimento": "Nuevo Pedimento",
"consultar": "Consultar",
"historial": "Historial",
"configuracion": "Configuración",
"general": "General",
"licencia": "Licencia",
"usuarios": "Usuarios",
"ayuda": "Ayuda"
}
}
"$schema": "https://inlang.com/schema/inlang-message-format",
"hello_world": "Hello, {name} from es!",
"sidebar": {
"reference_data": {
"title": "Catálogos Fijos",
"codes_pedimento_regimen": "Códigos de Pedimento y Régimen",
"containers": "Contenedores",
"countries": "Países",
"currency_types": "Tipos de moneda",
"customs_sections": "Secciones de aduanas",
"customs_warehouses": "Recintos",
"incoterms": "Incoterms",
"invoice_types": "Tipos de factura",
"material_types": "Tipos de material",
"payment_methods": "Métodos de pago",
"pedimento_codes": "Códigos de pedimento",
"pedimento_regimes": "Regímenes de pedimentos",
"sectors": "Sectores",
"states": "Estados",
"transportation_modes": "Métodos de transporte",
"transportation_types": "Tipos de transporte",
"valuation_methods": "Métodos de valoración",
"configuracion": "Configuración",
"general": "General",
"licencia": "Licencia",
"usuarios": "Usuarios",
"ayuda": "Ayuda"
},
"general_catalogs": {
"title": "Catalogos Generales",
"company_information": "Información de la empresa",
"packages": "Bultos",
"concepts": "Conceptos",
"classification": "Clasificación",
"identifiers": "Identificadores",
"incoterms": "Incoterms",
"inpc": "I.N.P.C",
"fixed_legends": "Leyendas fijas",
"seals": "Precintos",
"valuation_methods": "Metódos de valoración",
"countries": "Países",
"ports": "Puertos",
"unit_measures": "Unidades de medida",
"um_customs_mex": "U.M. Aduanas Mexicanas",
"um_customs_ame": "U.M. Aduanas Americanas",
"um_ace": "U.M. ACE",
"um_oma": "U.M. OMA",
"conversions": "Conversiones",
"equivalences": "Equivalencias",
"exchange_rates": "Tipos de cambio",
"currency_types": "Tipos de moneda",
"multi_currency": "Multi Moneda",
"invoice_types": "Tipos de factura",
"electronic_signatures": "Firmas electrónicas",
"billing_errors": "Errores de facturación",
"customs_warehouses": "Recintos",
"locations": "Localizaciones",
"doda": "DODA",
"packing_list": "Packing List",
"prevalidators": "Prevalidadores",
"electronic_notices": "Avisos electrónicos",
"back_flush": "Back Flush",
"crossing_notice": "Aviso de cruce"
},
"pedimentos": {
"title": "Pedimentos",
"pedimento_management": "Gestión de Pedimentos",
"pedimento_codes": "Claves de Pedimento",
"customs_regimes": "Regímenes Aduaneros",
"payment_methods": "Formas de Pago",
"customs_sections": "Secciones Aduaneras",
"anexo_22_app_31": "Anexo 22 App 3"
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -65,130 +65,266 @@ export function getSidebarData(): SidebarData {
],
navMain: [
{
title: m["sidebar.catalogos_fijos"](),
title: m["sidebar.reference_data.title"](),
url: "/dashboard",
icon: SquareTerminalIcon,
items: [
{
title: m["sidebar.codigos_pedimento_regimen"](),
title: m["sidebar.reference_data.codes_pedimento_regimen"](),
url: "/dashboard/reference_data/code_pedimento_regimens",
},
{
title: m["sidebar.contenedores"](),
title: m["sidebar.reference_data.containers"](),
url: "/dashboard/reference_data/containers",
},
{
title: m["sidebar.paises"](),
title: m["sidebar.reference_data.countries"](),
url: "/dashboard/reference_data/countries",
},
{
title: m["sidebar.tipos_moneda"](),
title: m["sidebar.reference_data.currency_types"](),
url: "/dashboard/reference_data/currency_types",
},
{
title: m["sidebar.secciones_aduanas"](),
title: m["sidebar.reference_data.customs_sections"](),
url: "/dashboard/reference_data/customs_sections",
},
{
title: m["sidebar.recintos"](),
title: m["sidebar.reference_data.customs_warehouses"](),
url: "/dashboard/reference_data/customs_warehouses",
},
{
title: m["sidebar.incoterms"](),
title: m["sidebar.reference_data.incoterms"](),
url: "/dashboard/reference_data/incoterms",
},
{
title: m["sidebar.tipos_factura"](),
title: m["sidebar.reference_data.invoice_types"](),
url: "/dashboard/reference_data/invoice_types",
},
{
title: m["sidebar.tipos_material"](),
title: m["sidebar.reference_data.material_types"](),
url: "/dashboard/reference_data/material_types",
},
{
title: m["sidebar.metodos_pago"](),
title: m["sidebar.reference_data.payment_methods"](),
url: "/dashboard/reference_data/payment_methods",
},
{
title: m["sidebar.codigos_pedimento"](),
title: m["sidebar.reference_data.pedimento_codes"](),
url: "/dashboard/reference_data/pedimento_codes",
},
{
title: m["sidebar.regimenes_pedimentos"](),
title: m["sidebar.reference_data.pedimento_regimes"](),
url: "/dashboard/reference_data/pedimento_regimens",
},
{
title: m["sidebar.sectores"](),
title: m["sidebar.reference_data.sectors"](),
url: "/dashboard/reference_data/sectors",
},
{
title: m["sidebar.estados"](),
title: m["sidebar.reference_data.states"](),
url: "/dashboard/reference_data/states",
},
{
title: m["sidebar.metodos_transporte"](),
title: m["sidebar.reference_data.transportation_modes"](),
url: "/dashboard/reference_data/transport_modes",
},
{
title: m["sidebar.tipos_transporte"](),
title: m["sidebar.reference_data.transportation_types"](),
url: "/dashboard/reference_data/transport_types",
},
{
title: m["sidebar.metodos_valoracion"](),
title: m["sidebar.reference_data.valuation_methods"](),
url: "/dashboard/reference_data/valuation_methods",
},
],
isActive: true,
isActive: false,
},
{
title: m["sidebar.inventarios"](),
title: m["sidebar.general_catalogs.title"](),
url: "#",
icon: BotIcon,
items: [
{
title: m["sidebar.gestionar_inventarios"](),
title: m["sidebar.general_catalogs.company_information"](),
url: "#",
},
{
title: m["sidebar.reportes"](),
title: m["sidebar.general_catalogs.packages"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.concepts"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.classification"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.identifiers"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.incoterms"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.inpc"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.fixed_legends"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.seals"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.valuation_methods"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.countries"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.ports"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.unit_measures"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.um_customs_mex"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.um_customs_ame"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.um_ace"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.um_oma"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.conversions"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.equivalences"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.exchange_rates"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.currency_types"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.multi_currency"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.invoice_types"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.electronic_signatures"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.billing_errors"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.customs_warehouses"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.locations"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.doda"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.packing_list"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.prevalidators"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.electronic_notices"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.back_flush"](),
url: "#",
},
{
title: m["sidebar.general_catalogs.crossing_notice"](),
url: "#",
},
],
},
{
title: m["sidebar.pedimentos"](),
title: m["sidebar.pedimentos.title"](),
url: "#",
icon: BookOpenIcon,
items: [
{
title: m["sidebar.nuevo_pedimento"](),
title: m["sidebar.pedimentos.pedimento_management"](),
url: "#",
},
{
title: m["sidebar.consultar"](),
title: m["sidebar.pedimentos.pedimento_codes"](),
url: "#",
},
{
title: m["sidebar.historial"](),
title: m["sidebar.pedimentos.customs_regimes"](),
url: "#",
},
{
title: m["sidebar.pedimentos.payment_methods"](),
url: "#",
},
{
title: m["sidebar.pedimentos.customs_sections"](),
url: "#",
},
{
title: m["sidebar.pedimentos.anexo_22_app_31"](),
url: "#",
},
],
},
{
title: m["sidebar.configuracion"](),
title: m["sidebar.reference_data.configuracion"](),
url: "#",
icon: Settings2Icon,
items: [
{
title: m["sidebar.general"](),
title: m["sidebar.reference_data.general"](),
url: "#",
},
{
title: m["sidebar.licencia"](),
title: m["sidebar.reference_data.licencia"](),
url: "#",
},
{
title: m["sidebar.usuarios"](),
title: m["sidebar.reference_data.usuarios"](),
url: "#",
},
],
@@ -196,12 +332,12 @@ export function getSidebarData(): SidebarData {
],
projects: [
{
name: m["sidebar.reportes"](),
name: m["sidebar.reference_data.usuarios"](),
url: "#",
icon: ChartPieIcon,
},
{
name: m["sidebar.ayuda"](),
name: m["sidebar.reference_data.ayuda"](),
url: "#",
icon: FrameIcon,
},

View File

@@ -11,8 +11,9 @@
import SparklesIcon from "@lucide/svelte/icons/sparkles";
import LanguagesIcon from "@lucide/svelte/icons/languages";
import { logout } from "$lib/auth";
import { setLocale, locales } from "$lib/paraglide/runtime";
import { cookieName } from "$lib/paraglide/runtime";
import { page } from "$app/state";
import { browser } from "$app/environment";
let { user }: { user: { name: string; email: string; avatar: string } } = $props();
const sidebar = useSidebar();
@@ -25,9 +26,21 @@
}
function toggleLanguage() {
// Alternar entre 'en' y 'es'
const newLocale = currentLocale === 'en' ? 'es' : 'en';
setLocale(newLocale);
if (!browser) return;
// Leer la cookie actual para obtener el idioma real
const cookies = document.cookie.split(';').map(c => c.trim());
const localeCookie = cookies.find(c => c.startsWith(`${cookieName}=`));
const current = localeCookie ? localeCookie.split('=')[1] : 'en';
// Alternar el idioma
const newLocale = current === 'en' ? 'es' : 'en';
// Establecer la cookie del idioma
document.cookie = `${cookieName}=${newLocale}; path=/; max-age=34560000; SameSite=Lax`;
// Recargar la página para que el servidor procese el nuevo idioma
window.location.reload();
}
</script>
@@ -43,7 +56,7 @@
>
<Avatar.Root class="size-8 rounded-lg">
<Avatar.Image src={user.avatar} alt={user.name} />
<Avatar.Fallback class="rounded-lg">CN</Avatar.Fallback>
<Avatar.Fallback class="rounded-lg">AS</Avatar.Fallback>
</Avatar.Root>
<div class="grid flex-1 text-left text-sm leading-tight">
<span class="truncate font-medium">{user.name}</span>