Landing imporvement

This commit is contained in:
Urtzi Alfaro
2025-11-08 12:02:18 +01:00
parent a1cd7958ed
commit 4678f96f8f
16 changed files with 475 additions and 393 deletions

View File

@@ -177,12 +177,36 @@ function ActionItemCard({
{/* Action Buttons */} {/* Action Buttons */}
<div className="flex flex-wrap gap-2"> <div className="flex flex-wrap gap-2">
{(action.actions || []).map((button, index) => { {(action.actions || []).map((button, index) => {
const buttonStyles = { const buttonStyles: Record<string, React.CSSProperties> = {
primary: 'bg-blue-600 hover:bg-blue-700 text-white', primary: {
secondary: 'bg-gray-200 hover:bg-gray-300 text-gray-800', backgroundColor: 'var(--color-info-600)',
tertiary: 'bg-white hover:bg-gray-50 text-gray-700 border border-gray-300', color: 'var(--text-inverse, #ffffff)',
},
secondary: {
backgroundColor: 'var(--bg-tertiary)',
color: 'var(--text-primary)',
},
tertiary: {
backgroundColor: 'var(--bg-primary)',
color: 'var(--text-primary)',
border: '1px solid var(--border-primary)',
},
}; };
const hoverStyles: Record<string, React.CSSProperties> = {
primary: {
backgroundColor: 'var(--color-info-700)',
},
secondary: {
backgroundColor: 'var(--bg-quaternary)',
},
tertiary: {
backgroundColor: 'var(--bg-secondary)',
},
};
const [isHovered, setIsHovered] = useState(false);
const handleClick = () => { const handleClick = () => {
if (button.action === 'approve' && onApprove) { if (button.action === 'approve' && onApprove) {
onApprove(action.id); onApprove(action.id);
@@ -193,11 +217,19 @@ function ActionItemCard({
} }
}; };
const currentStyle = {
...buttonStyles[button.type],
...(isHovered ? hoverStyles[button.type] : {}),
};
return ( return (
<button <button
key={index} key={index}
onClick={handleClick} onClick={handleClick}
className={`${buttonStyles[button.type]} px-4 py-2 rounded-lg font-semibold text-sm transition-colors duration-200 flex items-center gap-2 min-h-[44px]`} onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
className="px-4 py-2 rounded-lg font-semibold text-sm transition-colors duration-200 flex items-center gap-2 min-h-[44px]"
style={currentStyle}
> >
{button.action === 'approve' && <CheckCircle2 className="w-4 h-4" />} {button.action === 'approve' && <CheckCircle2 className="w-4 h-4" />}
{button.action === 'view_details' && <Eye className="w-4 h-4" />} {button.action === 'view_details' && <Eye className="w-4 h-4" />}

View File

@@ -67,7 +67,7 @@ function TimelineItemCard({
return ( return (
<div <div
className="flex gap-4 p-4 rounded-lg border hover:shadow-md transition-shadow duration-200" className="flex gap-4 p-4 md:p-5 rounded-lg border-2 hover:shadow-md transition-all duration-200"
style={{ style={{
backgroundColor: 'var(--bg-primary)', backgroundColor: 'var(--bg-primary)',
borderColor: 'var(--border-primary)', borderColor: 'var(--border-primary)',

View File

@@ -160,38 +160,33 @@
}, },
"sustainability": { "sustainability": {
"badge": "System Feature", "badge": "System Feature",
"title": "Help the Planet, Access Economic Aid", "title": "Environmental Impact and Sustainability",
"un_sdg": { "un_sdg": {
"title": "Automatic UN SDG 12.3 Compliance", "title": "Automatic UN SDG 12.3 Compliance",
"description": "Without doing anything extra, you comply with United Nations Sustainable Development Goal 12.3 (food waste reduction).", "description": "Without doing anything extra, you comply with United Nations Sustainable Development Goal 12.3 (food waste reduction).",
"benefit": "You receive automatic certification → Credibility with customers" "benefit": "You receive automatic certification → Credibility with customers"
}, },
"grants": { "benefits": {
"title": "Eligible for 5 Grant Programs:", "title": "Sustainability Features:",
"pima": { "impact_tracking": {
"title": "PIMA Adapta (MITECO)", "title": "Environmental Impact Tracking",
"amount": "Up to €50,000", "description": "Automatic measurement of CO₂, water, and food waste with detailed metrics"
"description": "Circular economy projects. Your system = certified waste reduction"
}, },
"tourism": { "sdg_compliance": {
"title": "Tourism Sustainability Plans", "title": "SDG 12.3 Compliance",
"amount": "Up to €30,000", "description": "Automatic tracking of United Nations Sustainable Development Goals compliance"
"description": "For bakeries in tourist areas"
}, },
"moves": { "reporting": {
"title": "MOVES Circular (Businesses)", "title": "Sustainability Reports",
"amount": "Up to €20,000", "description": "Automatic generation of reports ready for audits and environmental certifications"
"description": "Sustainable digital transformation"
}, },
"regional": { "certification": {
"title": "Regional Circular Economy Grants", "title": "Certification Preparation",
"amount": "Variable", "description": "Data and documentation ready for sustainability certification applications"
"description": "Depends on your autonomous region"
}, },
"tax": { "data_export": {
"title": "Tax Benefits", "title": "Environmental Data Export",
"amount": "Up to 25% reduction", "description": "Export your sustainability metrics in standard formats for external reports and audits"
"description": "Deduction for sustainability investment"
} }
}, },
"how_it_works": { "how_it_works": {

View File

@@ -137,36 +137,16 @@
"cta": "See All Features" "cta": "See All Features"
}, },
"pillar3": { "pillar3": {
"title": "📊 Your Data, Your Grants", "title": "Your Data, Your Environmental Impact",
"intro": "Your operational data is 100% yours. Never shared. Never sold. And it opens doors to European funding.", "intro": "100% of your data belongs to you. Measure your environmental impact automatically and generate sustainability reports that comply with international standards.",
"data_ownership": { "data_ownership_value": "100%",
"title": "100% Data Ownership", "data_ownership": "Data ownership",
"item1": "Your sales, inventory, suppliers, recipes: all yours", "co2_metric": "CO₂",
"item2": "GDPR compliance guaranteed (Spanish company)", "co2": "Automatic measurement",
"item3": "Export your data whenever, wherever you want" "sdg_value": "SDG 12.3",
}, "sdg": "Compliance tracking",
"sustainability": { "sustainability_title": "Automated Sustainability Reports",
"title": "Certified Waste Reduction", "sustainability_desc": "Generate reports that comply with international sustainability standards and food waste reduction",
"intro": "Without doing anything extra, you comply with UN Sustainable Development Goal 12.3 (food waste reduction).",
"item1": "You receive automatic certification",
"item2": "Environmental impact metrics (kg CO₂, liters of water)",
"item3": "Reports ready for grant applications"
},
"grants": {
"title": "Eligible for €50,000 in European Grants",
"pima": "PIMA Adapta (MITECO) - Up to €50,000",
"tourism": "Tourism Sustainability Plans - Up to €30,000",
"moves": "MOVES Circular (Businesses) - Up to €20,000",
"regional": "Regional Circular Economy Grants - Variable",
"tax": "Tax Benefits - Up to 25% reduction",
"help": "We help you with the application process"
},
"impact": {
"co2": "reduced per month",
"co2_equivalent": "(equivalent to 3 trees planted)",
"water": "water saved per year",
"certification": "Certified UN SDG 12.3"
},
"cta": "See All Features" "cta": "See All Features"
} }
}, },

View File

@@ -50,41 +50,68 @@
"grants": { "grants": {
"title": "Grant Program Eligibility", "title": "Grant Program Eligibility",
"overall_readiness": "Overall Readiness", "overall_readiness": "Overall Readiness",
"categories": {
"european_union": "European Union",
"spain": "Spain",
"regional": "Regional",
"international": "International"
},
"programs": { "programs": {
"life_circular_economy": "LIFE Programme - Circular Economy", "horizon_europe_food_systems": "Horizon Europe - Cluster 6 Food Systems",
"life_circular_economy_description": "EU LIFE Programme supporting circular economy initiatives for food waste reduction", "horizon_europe_food_systems_description": "R&I funding for sustainable food systems, bioeconomy, and waste reduction",
"life_circular_economy_funding": "€73M available for circular economy projects", "horizon_europe_food_systems_funding": "€3M - €12M per project",
"life_circular_economy_deadline": "Application deadline: September 23, 2025", "horizon_europe_food_systems_deadline": "Application deadline: February 18, 2026",
"life_circular_economy_requirement": "Requires 15% waste reduction from baseline", "horizon_europe_food_systems_requirement": "Requires 20% waste reduction from baseline",
"life_circular_economy_link": "https://cinea.ec.europa.eu/life-calls-proposals-2025_en", "horizon_europe_food_systems_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6",
"horizon_europe_food_systems_category": "european_union",
"horizon_europe_cluster_6": "Horizon Europe - Cluster 6 Food Systems", "horizon_europe_circular_sme": "Horizon Europe - Circular Transformation SME",
"horizon_europe_cluster_6_description": "R&I funding for sustainable food systems, bioeconomy, and waste reduction", "horizon_europe_circular_sme_description": "Innovative solutions for sustainable and circular transformation of SMEs",
"horizon_europe_cluster_6_funding": "€880M+ annually for food systems projects", "horizon_europe_circular_sme_funding": "€10M total program",
"horizon_europe_cluster_6_deadline": "Rolling calls throughout 2025", "horizon_europe_circular_sme_deadline": "Application deadline: February 18, 2026",
"horizon_europe_cluster_6_requirement": "Requires 20% waste reduction from baseline", "horizon_europe_circular_sme_requirement": "Requires 15% waste reduction from baseline",
"horizon_europe_cluster_6_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6", "horizon_europe_circular_sme_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6",
"horizon_europe_circular_sme_category": "european_union",
"fedima_sustainability_grant": "Fedima Sustainability Grant", "eit_food_impact_2026": "EIT Food - Impact Funding 2026",
"fedima_sustainability_grant_description": "Bi-annual grant for local bakery sustainability initiatives", "eit_food_impact_2026_description": "Support for food systems innovation and waste reduction projects",
"fedima_sustainability_grant_funding": "€20,000 per award", "eit_food_impact_2026_funding": "€50,000 - €1M per project",
"fedima_sustainability_grant_deadline": "Next deadline: June 30, 2025", "eit_food_impact_2026_deadline": "Rolling applications 2026",
"fedima_sustainability_grant_requirement": "Requires 15% waste reduction (bakery-specific)", "eit_food_impact_2026_requirement": "Requires 15% waste reduction from baseline",
"fedima_sustainability_grant_link": "https://grant.fedima.org", "eit_food_impact_2026_link": "https://www.eitfood.eu/open-calls/impact-funding-framework",
"eit_food_impact_2026_category": "european_union",
"eit_food_retail": "EIT Food - Retail Innovation", "eib_circular_economy": "EIB - Circular Economy Initiative",
"eit_food_retail_description": "Support for retail food product launches addressing critical challenges", "eib_circular_economy_description": "European Investment Bank loans for circular economy projects",
"eit_food_retail_funding": "€15,000 - €45,000 per project", "eib_circular_economy_funding": "Up to €12.5M per project",
"eit_food_retail_deadline": "Rolling applications", "eib_circular_economy_deadline": "Ongoing process 2026",
"eit_food_retail_requirement": "Requires 20% waste reduction and retail innovation", "eib_circular_economy_requirement": "Requires 10% waste reduction from baseline",
"eit_food_retail_link": "https://www.eitfood.eu/funding", "eib_circular_economy_link": "https://www.eib.org/en/products/loans/sme-mid-caps/index.htm",
"eib_circular_economy_category": "european_union",
"circular_economy_perte": "Circular Economy PERTE",
"circular_economy_perte_description": "Strategic Project for Economic Recovery and Transformation - Circular Economy",
"circular_economy_perte_funding": "€150,000 - €10M per project",
"circular_economy_perte_deadline": "Rolling calls until 2026",
"circular_economy_perte_requirement": "Requires 15% waste reduction from baseline",
"circular_economy_perte_link": "https://www.miteco.gob.es",
"circular_economy_perte_category": "spain",
"planes_turismo_2026": "Tourism Sustainability Plans",
"planes_turismo_2026_description": "Support for sustainability in tourism destinations, including bakeries in tourist areas",
"planes_turismo_2026_funding": "Variable by region",
"planes_turismo_2026_deadline": "Until December 31, 2026",
"planes_turismo_2026_requirement": "Requires 10% waste reduction, location in tourism zone",
"planes_turismo_2026_link": "https://www.mintur.gob.es",
"planes_turismo_2026_category": "spain",
"un_sdg_certified": "UN SDG 12.3 Certification", "un_sdg_certified": "UN SDG 12.3 Certification",
"un_sdg_certified_description": "Official certification for achieving SDG 12.3 targets", "un_sdg_certified_description": "Official certification for achieving SDG 12.3 targets",
"un_sdg_certified_funding": "Certification (not funding)", "un_sdg_certified_funding": "Certification (not funding)",
"un_sdg_certified_deadline": "Ongoing certification process", "un_sdg_certified_deadline": "Ongoing certification process",
"un_sdg_certified_requirement": "Requires 50% waste reduction from baseline", "un_sdg_certified_requirement": "Requires 50% waste reduction from baseline",
"un_sdg_certified_link": "https://sdgs.un.org/goals/goal12" "un_sdg_certified_link": "https://sdgs.un.org/goals/goal12",
"un_sdg_certified_category": "international"
}, },
"confidence": { "confidence": {
"high": "High Confidence", "high": "High Confidence",
@@ -119,10 +146,12 @@
"export_error": "Failed to export report", "export_error": "Failed to export report",
"types": { "types": {
"general": "General Sustainability Report", "general": "General Sustainability Report",
"life_circular_economy": "LIFE Programme - Circular Economy Application", "horizon_europe_food_systems": "Horizon Europe - Food Systems Application",
"horizon_europe_cluster_6": "Horizon Europe Cluster 6 Application", "horizon_europe_circular_sme": "Horizon Europe - Circular Transformation SME Application",
"fedima_sustainability_grant": "Fedima Sustainability Grant Application", "eit_food_impact_2026": "EIT Food - Impact Funding 2026 Application",
"eit_food_retail": "EIT Food Retail Innovation Application", "eib_circular_economy": "EIB - Circular Economy Application",
"circular_economy_perte": "Circular Economy PERTE Application",
"planes_turismo_2026": "Tourism Sustainability Plans Application",
"un_sdg": "UN SDG 12.3 Certification Report" "un_sdg": "UN SDG 12.3 Certification Report"
} }
} }

View File

@@ -160,38 +160,33 @@
}, },
"sustainability": { "sustainability": {
"badge": "Funcionalidad del Sistema", "badge": "Funcionalidad del Sistema",
"title": "Ayuda al Planeta, Accede a Ayudas Económicas", "title": "Impacto Ambiental y Sostenibilidad",
"un_sdg": { "un_sdg": {
"title": "Cumplimiento Automático ODS 12.3 (ONU)", "title": "Cumplimiento Automático ODS 12.3 (ONU)",
"description": "Sin hacer nada extra, cumples con el Objetivo de Desarrollo Sostenible 12.3 de Naciones Unidas (reducción desperdicio alimentario).", "description": "Sin hacer nada extra, cumples con el Objetivo de Desarrollo Sostenible 12.3 de Naciones Unidas (reducción desperdicio alimentario).",
"benefit": "Recibes certificación automática → Credibilidad con clientes" "benefit": "Recibes certificación automática → Credibilidad con clientes"
}, },
"grants": { "benefits": {
"title": "Elegible para 5 Programas de Ayudas:", "title": "Funcionalidades de Sostenibilidad:",
"pima": { "impact_tracking": {
"title": "PIMA Adapta (MITECO)", "title": "Seguimiento de Impacto Ambiental",
"amount": "Hasta €50,000", "description": "Medición automática de CO₂, agua y desperdicio alimentario con métricas detalladas"
"description": "Proyectos de economía circular. Tu sistema = reducción desperdicio certificada"
}, },
"tourism": { "sdg_compliance": {
"title": "Planes de Sostenibilidad Turística", "title": "Cumplimiento ODS 12.3",
"amount": "Hasta €30,000", "description": "Seguimiento automático del cumplimiento de los Objetivos de Desarrollo Sostenible de la ONU"
"description": "Para panaderías en zonas turísticas"
}, },
"moves": { "reporting": {
"title": "MOVES Circular (Empresas)", "title": "Informes de Sostenibilidad",
"amount": "Hasta €20,000", "description": "Generación automática de informes listos para auditorías y certificaciones ambientales"
"description": "Transformación digital sostenible"
}, },
"regional": { "certification": {
"title": "Ayudas Economía Circular Autonómicas", "title": "Preparación para Certificaciones",
"amount": "Variable", "description": "Datos y documentación listos para solicitudes de certificaciones de sostenibilidad"
"description": "Depende de tu comunidad autónoma"
}, },
"tax": { "data_export": {
"title": "Bonificaciones Fiscales", "title": "Exportación de Datos Ambientales",
"amount": "Hasta 25% reducción", "description": "Exporta tus métricas de sostenibilidad en formatos estándar para reportes externos y auditorías"
"description": "Deducción por inversión en sostenibilidad"
} }
}, },
"how_it_works": { "how_it_works": {

View File

@@ -137,36 +137,16 @@
"cta": "Ver Todas las Funcionalidades" "cta": "Ver Todas las Funcionalidades"
}, },
"pillar3": { "pillar3": {
"title": "📊 Tus Datos, Tus Subvenciones", "title": "Tus Datos, Tu Impacto Ambiental",
"intro": "Tus datos operativos son 100% tuyos. Nunca compartidos. Nunca vendidos. Y además, te abren puertas a financiación europea.", "intro": "100% de tus datos te pertenecen. Mide tu impacto ambiental automáticamente y genera informes de sostenibilidad que cumplen con los estándares internacionales.",
"data_ownership": { "data_ownership_value": "100%",
"title": "100% Propiedad de Tus Datos", "data_ownership": "Propiedad de datos",
"item1": "Tus ventas, inventario, proveedores, recetas: todo tuyo", "co2_metric": "CO₂",
"item2": "Cumplimiento RGPD garantizado (empresa española)", "co2": "Medición automática",
"item3": "Exporta tus datos cuando quieras, a donde quieras" "sdg_value": "ODS 12.3",
}, "sdg": "Seguimiento de cumplimiento",
"sustainability": { "sustainability_title": "Informes de Sostenibilidad Automatizados",
"title": "Reducción de Desperdicios Certificada", "sustainability_desc": "Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario",
"intro": "Sin hacer nada extra, cumples con el Objetivo de Desarrollo Sostenible 12.3 de la ONU (reducción desperdicio alimentario).",
"item1": "Recibes certificación automática",
"item2": "Métricas de impacto ambiental (kg CO₂, litros agua)",
"item3": "Reportes listos para solicitudes de ayudas"
},
"grants": {
"title": "Elegible para €50,000 en Ayudas Europeas",
"pima": "PIMA Adapta (MITECO) - Hasta €50,000",
"tourism": "Planes de Sostenibilidad Turística - Hasta €30,000",
"moves": "MOVES Circular (Empresas) - Hasta €20,000",
"regional": "Ayudas Economía Circular Autonómicas - Variable",
"tax": "Bonificaciones Fiscales - Hasta 25% reducción",
"help": "Te ayudamos con el proceso de solicitud"
},
"impact": {
"co2": "reducidos al mes",
"co2_equivalent": "(equivale a 3 árboles plantados)",
"water": "agua ahorrada al año",
"certification": "Certificado ODS 12.3 ONU"
},
"cta": "Ver Todas las Funcionalidades" "cta": "Ver Todas las Funcionalidades"
} }
}, },

View File

@@ -50,41 +50,68 @@
"grants": { "grants": {
"title": "Elegibilidad para Subvenciones", "title": "Elegibilidad para Subvenciones",
"overall_readiness": "Preparación General", "overall_readiness": "Preparación General",
"categories": {
"european_union": "Unión Europea",
"spain": "España",
"regional": "Regional",
"international": "Internacional"
},
"programs": { "programs": {
"life_circular_economy": "Programa LIFE - Economía Circular", "horizon_europe_food_systems": "Horizonte Europa - Cluster 6 Sistemas Alimentarios",
"life_circular_economy_description": "Programa LIFE de la UE para iniciativas de economía circular y reducción de desperdicio alimentario", "horizon_europe_food_systems_description": "Financiación I+D para sistemas alimentarios sostenibles, bioeconomía y reducción de desperdicio",
"life_circular_economy_funding": "€73M disponibles para proyectos de economía circular", "horizon_europe_food_systems_funding": "€3M - €12M por proyecto",
"life_circular_economy_deadline": "Fecha límite: 23 de septiembre de 2025", "horizon_europe_food_systems_deadline": "Fecha límite: 18 de febrero de 2026",
"life_circular_economy_requirement": "Requiere 15% de reducción de desperdicio desde línea base", "horizon_europe_food_systems_requirement": "Requiere 20% de reducción de desperdicio desde línea base",
"life_circular_economy_link": "https://cinea.ec.europa.eu/life-calls-proposals-2025_en", "horizon_europe_food_systems_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6",
"horizon_europe_food_systems_category": "european_union",
"horizon_europe_cluster_6": "Horizonte Europa - Cluster 6 Sistemas Alimentarios", "horizon_europe_circular_sme": "Horizonte Europa - Transformación Circular PYME",
"horizon_europe_cluster_6_description": "Financiación I+D para sistemas alimentarios sostenibles, bioeconomía y reducción de desperdicio", "horizon_europe_circular_sme_description": "Soluciones innovadoras para la transformación sostenible y circular de PYMEs",
"horizon_europe_cluster_6_funding": "€880M+ anuales para proyectos de sistemas alimentarios", "horizon_europe_circular_sme_funding": "€10M programa total",
"horizon_europe_cluster_6_deadline": "Convocatorias continuas durante 2025", "horizon_europe_circular_sme_deadline": "Fecha límite: 18 de febrero de 2026",
"horizon_europe_cluster_6_requirement": "Requiere 20% de reducción de desperdicio desde línea base", "horizon_europe_circular_sme_requirement": "Requiere 15% de reducción de desperdicio desde línea base",
"horizon_europe_cluster_6_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6", "horizon_europe_circular_sme_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6",
"horizon_europe_circular_sme_category": "european_union",
"fedima_sustainability_grant": "Subvención de Sostenibilidad Fedima", "eit_food_impact_2026": "EIT Food - Financiación de Impacto 2026",
"fedima_sustainability_grant_description": "Subvención semestral para iniciativas locales de sostenibilidad en panaderías", "eit_food_impact_2026_description": "Apoyo para proyectos de innovación en sistemas alimentarios y reducción de desperdicio",
"fedima_sustainability_grant_funding": "€20.000 por proyecto", "eit_food_impact_2026_funding": "€50.000 - €1M por proyecto",
"fedima_sustainability_grant_deadline": "Próxima fecha límite: 30 de junio de 2025", "eit_food_impact_2026_deadline": "Solicitudes continuas 2026",
"fedima_sustainability_grant_requirement": "Requiere 15% de reducción de desperdicio (específico para panaderías)", "eit_food_impact_2026_requirement": "Requiere 15% de reducción de desperdicio desde línea base",
"fedima_sustainability_grant_link": "https://grant.fedima.org", "eit_food_impact_2026_link": "https://www.eitfood.eu/open-calls/impact-funding-framework",
"eit_food_impact_2026_category": "european_union",
"eit_food_retail": "EIT Food - Innovación en Retail", "eib_circular_economy": "BEI - Iniciativa Economía Circular",
"eit_food_retail_description": "Apoyo para lanzamientos de productos alimentarios en retail que aborden desafíos críticos", "eib_circular_economy_description": "Préstamos del Banco Europeo de Inversiones para proyectos de economía circular",
"eit_food_retail_funding": "€15.000 - €45.000 por proyecto", "eib_circular_economy_funding": "Hasta €12.5M por proyecto",
"eit_food_retail_deadline": "Solicitudes continuas", "eib_circular_economy_deadline": "Proceso continuo 2026",
"eit_food_retail_requirement": "Requiere 20% de reducción de desperdicio e innovación en retail", "eib_circular_economy_requirement": "Requiere 10% de reducción de desperdicio desde línea base",
"eit_food_retail_link": "https://www.eitfood.eu/funding", "eib_circular_economy_link": "https://www.eib.org/en/products/loans/sme-mid-caps/index.htm",
"eib_circular_economy_category": "european_union",
"circular_economy_perte": "PERTE Economía Circular",
"circular_economy_perte_description": "Proyecto Estratégico para la Recuperación y Transformación Económica - Economía Circular",
"circular_economy_perte_funding": "€150.000 - €10M por proyecto",
"circular_economy_perte_deadline": "Convocatorias continuas hasta 2026",
"circular_economy_perte_requirement": "Requiere 15% de reducción de desperdicio desde línea base",
"circular_economy_perte_link": "https://www.miteco.gob.es",
"circular_economy_perte_category": "spain",
"planes_turismo_2026": "Planes de Sostenibilidad Turística",
"planes_turismo_2026_description": "Apoyo para sostenibilidad en destinos turísticos, incluyendo panaderías en zonas turísticas",
"planes_turismo_2026_funding": "Variable según región",
"planes_turismo_2026_deadline": "Hasta 31 de diciembre de 2026",
"planes_turismo_2026_requirement": "Requiere 10% de reducción de desperdicio, ubicación en zona turística",
"planes_turismo_2026_link": "https://www.mintur.gob.es",
"planes_turismo_2026_category": "spain",
"un_sdg_certified": "Certificación ODS 12.3 de la ONU", "un_sdg_certified": "Certificación ODS 12.3 de la ONU",
"un_sdg_certified_description": "Certificación oficial por alcanzar los objetivos del ODS 12.3", "un_sdg_certified_description": "Certificación oficial por alcanzar los objetivos del ODS 12.3",
"un_sdg_certified_funding": "Certificación (no financiación)", "un_sdg_certified_funding": "Certificación (no financiación)",
"un_sdg_certified_deadline": "Proceso de certificación continuo", "un_sdg_certified_deadline": "Proceso de certificación continuo",
"un_sdg_certified_requirement": "Requiere 50% de reducción de desperdicio desde línea base", "un_sdg_certified_requirement": "Requiere 50% de reducción de desperdicio desde línea base",
"un_sdg_certified_link": "https://sdgs.un.org/goals/goal12" "un_sdg_certified_link": "https://sdgs.un.org/goals/goal12",
"un_sdg_certified_category": "international"
}, },
"confidence": { "confidence": {
"high": "Alta Confianza", "high": "Alta Confianza",
@@ -119,10 +146,12 @@
"export_error": "Error al exportar el informe", "export_error": "Error al exportar el informe",
"types": { "types": {
"general": "Informe General de Sostenibilidad", "general": "Informe General de Sostenibilidad",
"life_circular_economy": "Solicitud Programa LIFE - Economía Circular", "horizon_europe_food_systems": "Solicitud Horizonte Europa - Sistemas Alimentarios",
"horizon_europe_cluster_6": "Solicitud Horizonte Europa Cluster 6", "horizon_europe_circular_sme": "Solicitud Horizonte Europa - Transformación Circular PYME",
"fedima_sustainability_grant": "Solicitud Subvención Sostenibilidad Fedima", "eit_food_impact_2026": "Solicitud EIT Food - Financiación de Impacto 2026",
"eit_food_retail": "Solicitud EIT Food Innovación en Retail", "eib_circular_economy": "Solicitud BEI - Economía Circular",
"circular_economy_perte": "Solicitud PERTE Economía Circular",
"planes_turismo_2026": "Solicitud Planes de Sostenibilidad Turística",
"un_sdg": "Informe Certificación ODS 12.3 ONU" "un_sdg": "Informe Certificación ODS 12.3 ONU"
} }
} }

View File

@@ -160,38 +160,33 @@
}, },
"sustainability": { "sustainability": {
"badge": "Sistemaren Ezaugarria", "badge": "Sistemaren Ezaugarria",
"title": "Planetari Lagundu, Laguntza Ekonomikoetara Sartu", "title": "Ingurumen Inpaktua eta Iraunkortasuna",
"un_sdg": { "un_sdg": {
"title": "NBEren GIH 12.3 Betetzea Automatikoa", "title": "NBEren GIH 12.3 Betetzea Automatikoa",
"description": "Ezer gehigarri egin gabe, Nazio Batuen Garapen Iraunkorreko 12.3 Helburua betetzen duzu (elikagaien hondakinen murrizketa).", "description": "Ezer gehigarri egin gabe, Nazio Batuen Garapen Iraunkorreko 12.3 Helburua betetzen duzu (elikagaien hondakinen murrizketa).",
"benefit": "Ziurtagiri automatikoa jasotzen duzu → Bezeroekin sinesgarritasuna" "benefit": "Ziurtagiri automatikoa jasotzen duzu → Bezeroekin sinesgarritasuna"
}, },
"grants": { "benefits": {
"title": "5 Laguntza Programetarako Kaudimena:", "title": "Iraunkortasun Ezaugarriak:",
"pima": { "impact_tracking": {
"title": "PIMA Adapta (MITECO)", "title": "Ingurumen Inpaktuaren Jarraipena",
"amount": "€50.000 arte", "description": "CO₂, ur eta elikagai-hondakinen neurketa automatikoa metriken xehetasunekin"
"description": "Ekonomia zirkularreko proiektuak. Zure sistema = hondakinen murrizketaren ziurtagiria"
}, },
"tourism": { "sdg_compliance": {
"title": "Turismo Iraunkortasuneko Planak", "title": "GIH 12.3 Betetze",
"amount": "€30.000 arte", "description": "Nazio Batuen Garapen Iraunkorreko Helburuen betetzearen jarraipena automatikoa"
"description": "Turismo eremuetako okindegientzat"
}, },
"moves": { "reporting": {
"title": "MOVES Zirkularra (Enpresak)", "title": "Iraunkortasun Txostenak",
"amount": "€20.000 arte", "description": "Auditorietarako eta ingurumen ziurtagirietarako txostenen sorkuntza automatikoa"
"description": "Transformazio digital iraunkorra"
}, },
"regional": { "certification": {
"title": "Autonomi Erkidegoetako Ekonomia Zirkularreko Laguntzak", "title": "Ziurtagirietarako Prestaketa",
"amount": "Aldakorra", "description": "Datuak eta dokumentazioa iraunkortasun ziurtagirietarako eskaerei prest"
"description": "Zure autonomi erkidegoaren araberakoa"
}, },
"tax": { "data_export": {
"title": "Zerga Onak", "title": "Ingurumen Datuen Esportazioa",
"amount": "%25 arte murrizketa", "description": "Esportatu zure iraunkortasun-metrikak formatu estandarretan kanpoko txostenetarako eta auditorietarako"
"description": "Iraunkortasuneko inbertsioagatik kenkaria"
} }
}, },
"how_it_works": { "how_it_works": {

View File

@@ -137,36 +137,16 @@
"cta": "Ikusi Ezaugarri Guztiak" "cta": "Ikusi Ezaugarri Guztiak"
}, },
"pillar3": { "pillar3": {
"title": "📊 Zure Datuak, Zure Diru-laguntzak", "title": "Zure Datuak, Zure Ingurumen Inpaktua",
"intro": "Zure datu operatiboak 100% zureak dira. Inoiz partekatuak. Inoiz salduak. Eta gainera, Europako finantziaziora ateak irekitzen dizkizu.", "intro": "Zure datuen %100 zureak dira. Neurtu zure ingurumen-inpaktua automatikoki eta sortu nazioarteko estandarrak betetzen dituzten iraunkortasun-txostenak.",
"data_ownership": { "data_ownership_value": "100%",
"title": "Datuen %100eko Jabetza", "data_ownership": "Datuen jabetza",
"item1": "Zure salmentak, inbentarioa, hornitzaileak, errezetak: guztiak zureak", "co2_metric": "CO₂",
"item2": "RGPD betetzea bermatuta (Espainiako enpresa)", "co2": "Neurketa automatikoa",
"item3": "Esportatu zure datuak nahi duzunean, nahi duzun tokira" "sdg_value": "GIH 12.3",
}, "sdg": "Betetze-jarraipena",
"sustainability": { "sustainability_title": "Iraunkortasun Txosten Automatizatuak",
"title": "Hondakinen Murrizketa Ziurtatua", "sustainability_desc": "Sortu nazioarteko iraunkortasun estandarrak eta elikagai-hondakinen murrizketarekin bat datozen txostenak",
"intro": "Ezer gehigarri egin gabe, Nazio Batuen Garapen Iraunkorreko 12.3 Helburua betetzen duzu (elikagaien hondakinen murrizketa).",
"item1": "Ziurtagiri automatikoa jasotzen duzu",
"item2": "Ingurumen-inpaktuaren metrikak (kg CO₂, ur litroak)",
"item3": "Diru-laguntzen eskaerako txostenak prest"
},
"grants": {
"title": "€50,000ko Sarbidea Europako Laguntzetara",
"pima": "PIMA Adapta (MITECO) - €50,000 arte",
"tourism": "Turismo Iraunkortasuneko Planak - €30,000 arte",
"moves": "MOVES Zirkularra (Enpresak) - €20,000 arte",
"regional": "Autonomi Erkidegoetako Ekonomia Zirkularreko Laguntzak - Aldakorra",
"tax": "Zerga Onak - %25 arte murrizketa",
"help": "Eskaera prozesuan laguntzen dizugu"
},
"impact": {
"co2": "hilean murriztuta",
"co2_equivalent": "(3 zuhaitz landatzearen baliokidea)",
"water": "urtean ura aurreztuta",
"certification": "NBE GIH 12.3 Ziurtatua"
},
"cta": "Ikusi Ezaugarri Guztiak" "cta": "Ikusi Ezaugarri Guztiak"
} }
}, },

View File

@@ -50,41 +50,68 @@
"grants": { "grants": {
"title": "Diru-laguntzetarako Gaitasuna", "title": "Diru-laguntzetarako Gaitasuna",
"overall_readiness": "Prestutasun Orokorra", "overall_readiness": "Prestutasun Orokorra",
"categories": {
"european_union": "Europar Batasuna",
"spain": "Espainia",
"regional": "Eskualdekoa",
"international": "Nazioartekoa"
},
"programs": { "programs": {
"life_circular_economy": "LIFE Programa - Ekonomia Zirkularra", "horizon_europe_food_systems": "Horizonte Europa - 6. multzoa Elikagai Sistemak",
"life_circular_economy_description": "EBren LIFE Programa ekonomia zirkularreko ekimenetarako eta elikagai-hondakinen murrizketarako", "horizon_europe_food_systems_description": "I+G finantzaketa elikagai sistema jasangarrietarako, bioekonomiako eta hondakinen murrizketarako",
"life_circular_economy_funding": "€73M eskuragarri ekonomia zirkularreko proiektuetarako", "horizon_europe_food_systems_funding": "€3M - €12M proiektu bakoitzeko",
"life_circular_economy_deadline": "Azken eguna: 2025eko irailaren 23a", "horizon_europe_food_systems_deadline": "Azken eguna: 2026ko otsailaren 18a",
"life_circular_economy_requirement": "%15eko hondakinen murrizketa behar da oinarri-lerrotik", "horizon_europe_food_systems_requirement": "%20ko hondakinen murrizketa behar da oinarri-lerrotik",
"life_circular_economy_link": "https://cinea.ec.europa.eu/life-calls-proposals-2025_en", "horizon_europe_food_systems_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6",
"horizon_europe_food_systems_category": "european_union",
"horizon_europe_cluster_6": "Horizonte Europa - 6. multzoa Elikagai Sistemak", "horizon_europe_circular_sme": "Horizonte Europa - ETE Eraldaketa Zirkularra",
"horizon_europe_cluster_6_description": "I+G finantzaketa elikagai sistema jasangarrietarako, bioekonomiako eta hondakinen murrizketarako", "horizon_europe_circular_sme_description": "Irtenbide berritzaileak ETEen eraldaketa jasangarri eta zirkularrerako",
"horizon_europe_cluster_6_funding": "€880M+ urtero elikagai sistemen proiektuetarako", "horizon_europe_circular_sme_funding": "€10M programa osoa",
"horizon_europe_cluster_6_deadline": "Deialdi jarraitua 2025ean", "horizon_europe_circular_sme_deadline": "Azken eguna: 2026ko otsailaren 18a",
"horizon_europe_cluster_6_requirement": "%20ko hondakinen murrizketa behar da oinarri-lerrotik", "horizon_europe_circular_sme_requirement": "%15eko hondakinen murrizketa behar da oinarri-lerrotik",
"horizon_europe_cluster_6_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6", "horizon_europe_circular_sme_link": "https://research-and-innovation.ec.europa.eu/funding/cluster-6",
"horizon_europe_circular_sme_category": "european_union",
"fedima_sustainability_grant": "Fedimaren Iraunkortasun Diru-laguntza", "eit_food_impact_2026": "EIT Food - Inpaktu Finantzaketa 2026",
"fedima_sustainability_grant_description": "Sei hilabeteko diru-laguntza okindegietako iraunkortasun ekimen lokaletarako", "eit_food_impact_2026_description": "Laguntza elikagai sistemen berrikuntza eta hondakinen murrizketa proiektuetarako",
"fedima_sustainability_grant_funding": "€20.000 proiektu bakoitzeko", "eit_food_impact_2026_funding": "€50.000 - €1M proiektu bakoitzeko",
"fedima_sustainability_grant_deadline": "Hurrengo azken eguna: 2025eko ekainaren 30a", "eit_food_impact_2026_deadline": "Eskaera jarraitua 2026an",
"fedima_sustainability_grant_requirement": "%15eko hondakinen murrizketa behar da (okindegia-espezifikoa)", "eit_food_impact_2026_requirement": "%15eko hondakinen murrizketa behar da oinarri-lerrotik",
"fedima_sustainability_grant_link": "https://grant.fedima.org", "eit_food_impact_2026_link": "https://www.eitfood.eu/open-calls/impact-funding-framework",
"eit_food_impact_2026_category": "european_union",
"eit_food_retail": "EIT Food - Salmenta Berrikuntza", "eib_circular_economy": "BEI - Ekonomia Zirkularraren Ekimena",
"eit_food_retail_description": "Laguntza elikagai-produktuen salmentetarako erronka kritikoak gainditzeko", "eib_circular_economy_description": "Europako Inbertsio Bankuko maileguak ekonomia zirkularreko proiektuetarako",
"eit_food_retail_funding": "€15.000 - €45.000 proiektu bakoitzeko", "eib_circular_economy_funding": "€12.5M arte proiektu bakoitzeko",
"eit_food_retail_deadline": "Eskaera jarraitua", "eib_circular_economy_deadline": "Prozesu jarraitua 2026an",
"eit_food_retail_requirement": "%20ko hondakinen murrizketa eta salmentako berrikuntza behar da", "eib_circular_economy_requirement": "%10eko hondakinen murrizketa behar da oinarri-lerrotik",
"eit_food_retail_link": "https://www.eitfood.eu/funding", "eib_circular_economy_link": "https://www.eib.org/en/products/loans/sme-mid-caps/index.htm",
"eib_circular_economy_category": "european_union",
"circular_economy_perte": "Ekonomia Zirkularraren PERTE",
"circular_economy_perte_description": "Berreskuratze eta Eraldaketa Ekonomikorako Proiektu Estrategikoa - Ekonomia Zirkularra",
"circular_economy_perte_funding": "€150.000 - €10M proiektu bakoitzeko",
"circular_economy_perte_deadline": "Deialdi jarraitua 2026ra arte",
"circular_economy_perte_requirement": "%15eko hondakinen murrizketa behar da oinarri-lerrotik",
"circular_economy_perte_link": "https://www.miteco.gob.es",
"circular_economy_perte_category": "spain",
"planes_turismo_2026": "Turismo Iraunkortasun Planak",
"planes_turismo_2026_description": "Turismo destinoetako iraunkortasunerako laguntza, turismo-eremuetako okindegiak barne",
"planes_turismo_2026_funding": "Aldakorra eskualdeka",
"planes_turismo_2026_deadline": "2026ko abenduaren 31ra arte",
"planes_turismo_2026_requirement": "%10eko hondakinen murrizketa, turismo-eremuan kokapena",
"planes_turismo_2026_link": "https://www.mintur.gob.es",
"planes_turismo_2026_category": "spain",
"un_sdg_certified": "NBEren GIH 12.3 Ziurtagiria", "un_sdg_certified": "NBEren GIH 12.3 Ziurtagiria",
"un_sdg_certified_description": "Ziurtagiri ofiziala GIH 12.3 helburuak lortzeagatik", "un_sdg_certified_description": "Ziurtagiri ofiziala GIH 12.3 helburuak lortzeagatik",
"un_sdg_certified_funding": "Ziurtagiria (ez finantzaketa)", "un_sdg_certified_funding": "Ziurtagiria (ez finantzaketa)",
"un_sdg_certified_deadline": "Ziurtagiri-prozesua etengabea", "un_sdg_certified_deadline": "Ziurtagiri-prozesua etengabea",
"un_sdg_certified_requirement": "%50eko hondakinen murrizketa behar da oinarri-lerrotik", "un_sdg_certified_requirement": "%50eko hondakinen murrizketa behar da oinarri-lerrotik",
"un_sdg_certified_link": "https://sdgs.un.org/goals/goal12" "un_sdg_certified_link": "https://sdgs.un.org/goals/goal12",
"un_sdg_certified_category": "international"
}, },
"confidence": { "confidence": {
"high": "Konfiantza Handia", "high": "Konfiantza Handia",
@@ -119,10 +146,12 @@
"export_error": "Errorea txostena esportatzean", "export_error": "Errorea txostena esportatzean",
"types": { "types": {
"general": "Iraunkortasun Txosten Orokorra", "general": "Iraunkortasun Txosten Orokorra",
"life_circular_economy": "LIFE Programa Eskaera - Ekonomia Zirkularra", "horizon_europe_food_systems": "Horizonte Europa - Elikagai Sistemak Eskaera",
"horizon_europe_cluster_6": "Horizonte Europa 6. multzoa Eskaera", "horizon_europe_circular_sme": "Horizonte Europa - ETE Eraldaketa Zirkularra Eskaera",
"fedima_sustainability_grant": "Fedima Iraunkortasun Diru-laguntza Eskaera", "eit_food_impact_2026": "EIT Food - Inpaktu Finantzaketa 2026 Eskaera",
"eit_food_retail": "EIT Food Salmenta Berrikuntza Eskaera", "eib_circular_economy": "BEI - Ekonomia Zirkularra Eskaera",
"circular_economy_perte": "Ekonomia Zirkularraren PERTE Eskaera",
"planes_turismo_2026": "Turismo Iraunkortasun Planak Eskaera",
"un_sdg": "NBE GIH 12.3 Ziurtagiri Txostena" "un_sdg": "NBE GIH 12.3 Ziurtagiri Txostena"
} }
} }

View File

@@ -28,7 +28,9 @@ import {
Target, Target,
TreeDeciduous, TreeDeciduous,
Droplets, Droplets,
Award Award,
Database,
FileText
} from 'lucide-react'; } from 'lucide-react';
const FeaturesPage: React.FC = () => { const FeaturesPage: React.FC = () => {
@@ -648,7 +650,7 @@ const FeaturesPage: React.FC = () => {
<span>{t('features:sustainability.badge', 'Funcionalidad del Sistema')}</span> <span>{t('features:sustainability.badge', 'Funcionalidad del Sistema')}</span>
</div> </div>
<h2 className="text-3xl lg:text-4xl font-extrabold text-[var(--text-primary)] mb-4"> <h2 className="text-3xl lg:text-4xl font-extrabold text-[var(--text-primary)] mb-4">
{t('features:sustainability.title', 'Ayuda al Planeta, Accede a Ayudas Económicas')} {t('features:sustainability.title', 'Impacto Ambiental y Sostenibilidad')}
</h2> </h2>
</div> </div>
@@ -676,26 +678,23 @@ const FeaturesPage: React.FC = () => {
</div> </div>
</div> </div>
{/* Grant Programs */} {/* Sustainability Benefits */}
<div className="max-w-6xl mx-auto mb-12"> <div className="max-w-6xl mx-auto mb-12">
<h3 className="text-2xl font-bold text-[var(--text-primary)] mb-6 text-center"> <h3 className="text-2xl font-bold text-[var(--text-primary)] mb-6 text-center">
{t('features:sustainability.grants.title', 'Elegible para 5 Programas de Ayudas:')} {t('features:sustainability.benefits.title', 'Funcionalidades de Sostenibilidad:')}
</h3> </h3>
<div className="grid md:grid-cols-2 gap-6"> <div className="grid md:grid-cols-2 gap-6">
<div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]"> <div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]">
<div className="flex items-start gap-4"> <div className="flex items-start gap-4">
<div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0"> <div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0">
<Euro className="w-5 h-5 text-[var(--color-primary)]" /> <TreeDeciduous className="w-5 h-5 text-[var(--color-primary)]" />
</div> </div>
<div> <div>
<h4 className="font-bold text-[var(--text-primary)] mb-2"> <h4 className="font-bold text-[var(--text-primary)] mb-2">
{t('features:sustainability.grants.pima.title', 'PIMA Adapta (MITECO)')} {t('features:sustainability.benefits.impact_tracking.title', 'Seguimiento de Impacto Ambiental')}
</h4> </h4>
<p className="text-sm text-[var(--text-secondary)] mb-2">
{t('features:sustainability.grants.pima.amount', 'Hasta €50,000')}
</p>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('features:sustainability.grants.pima.description', 'Proyectos de economía circular. Tu sistema = reducción desperdicio certificada')} {t('features:sustainability.benefits.impact_tracking.description', 'Medición automática de CO₂, agua y desperdicio alimentario con métricas detalladas')}
</p> </p>
</div> </div>
</div> </div>
@@ -704,17 +703,14 @@ const FeaturesPage: React.FC = () => {
<div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]"> <div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]">
<div className="flex items-start gap-4"> <div className="flex items-start gap-4">
<div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0"> <div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0">
<Euro className="w-5 h-5 text-[var(--color-primary)]" /> <Globe className="w-5 h-5 text-[var(--color-primary)]" />
</div> </div>
<div> <div>
<h4 className="font-bold text-[var(--text-primary)] mb-2"> <h4 className="font-bold text-[var(--text-primary)] mb-2">
{t('features:sustainability.grants.tourism.title', 'Planes de Sostenibilidad Turística')} {t('features:sustainability.benefits.sdg_compliance.title', 'Cumplimiento ODS 12.3')}
</h4> </h4>
<p className="text-sm text-[var(--text-secondary)] mb-2">
{t('features:sustainability.grants.tourism.amount', 'Hasta €30,000')}
</p>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('features:sustainability.grants.tourism.description', 'Para panaderías en zonas turísticas')} {t('features:sustainability.benefits.sdg_compliance.description', 'Seguimiento automático del cumplimiento de los Objetivos de Desarrollo Sostenible de la ONU')}
</p> </p>
</div> </div>
</div> </div>
@@ -723,17 +719,14 @@ const FeaturesPage: React.FC = () => {
<div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]"> <div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]">
<div className="flex items-start gap-4"> <div className="flex items-start gap-4">
<div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0"> <div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0">
<Euro className="w-5 h-5 text-[var(--color-primary)]" /> <FileText className="w-5 h-5 text-[var(--color-primary)]" />
</div> </div>
<div> <div>
<h4 className="font-bold text-[var(--text-primary)] mb-2"> <h4 className="font-bold text-[var(--text-primary)] mb-2">
{t('features:sustainability.grants.moves.title', 'MOVES Circular (Empresas)')} {t('features:sustainability.benefits.reporting.title', 'Informes de Sostenibilidad')}
</h4> </h4>
<p className="text-sm text-[var(--text-secondary)] mb-2">
{t('features:sustainability.grants.moves.amount', 'Hasta €20,000')}
</p>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('features:sustainability.grants.moves.description', 'Transformación digital sostenible')} {t('features:sustainability.benefits.reporting.description', 'Generación automática de informes listos para auditorías y certificaciones ambientales')}
</p> </p>
</div> </div>
</div> </div>
@@ -742,17 +735,14 @@ const FeaturesPage: React.FC = () => {
<div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]"> <div className="bg-[var(--bg-secondary)] rounded-xl p-6 border border-[var(--border-primary)]">
<div className="flex items-start gap-4"> <div className="flex items-start gap-4">
<div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0"> <div className="w-10 h-10 bg-[var(--color-primary)]/10 rounded-lg flex items-center justify-center flex-shrink-0">
<Euro className="w-5 h-5 text-[var(--color-primary)]" /> <Award className="w-5 h-5 text-[var(--color-primary)]" />
</div> </div>
<div> <div>
<h4 className="font-bold text-[var(--text-primary)] mb-2"> <h4 className="font-bold text-[var(--text-primary)] mb-2">
{t('features:sustainability.grants.regional.title', 'Ayudas Economía Circular Autonómicas')} {t('features:sustainability.benefits.certification.title', 'Preparación para Certificaciones')}
</h4> </h4>
<p className="text-sm text-[var(--text-secondary)] mb-2">
{t('features:sustainability.grants.regional.amount', 'Variable')}
</p>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('features:sustainability.grants.regional.description', 'Depende de tu comunidad autónoma')} {t('features:sustainability.benefits.certification.description', 'Datos y documentación listos para solicitudes de certificaciones de sostenibilidad')}
</p> </p>
</div> </div>
</div> </div>
@@ -761,17 +751,14 @@ const FeaturesPage: React.FC = () => {
<div className="md:col-span-2 bg-gradient-to-r from-[var(--color-primary)]/10 to-green-500/10 rounded-xl p-6 border-2 border-[var(--color-primary)]"> <div className="md:col-span-2 bg-gradient-to-r from-[var(--color-primary)]/10 to-green-500/10 rounded-xl p-6 border-2 border-[var(--color-primary)]">
<div className="flex items-start gap-4"> <div className="flex items-start gap-4">
<div className="w-10 h-10 bg-[var(--color-primary)] rounded-lg flex items-center justify-center flex-shrink-0"> <div className="w-10 h-10 bg-[var(--color-primary)] rounded-lg flex items-center justify-center flex-shrink-0">
<Award className="w-5 h-5 text-white" /> <Database className="w-5 h-5 text-white" />
</div> </div>
<div> <div>
<h4 className="font-bold text-[var(--text-primary)] mb-2"> <h4 className="font-bold text-[var(--text-primary)] mb-2">
{t('features:sustainability.grants.tax.title', 'Bonificaciones Fiscales')} {t('features:sustainability.benefits.data_export.title', 'Exportación de Datos Ambientales')}
</h4> </h4>
<p className="text-sm text-[var(--text-secondary)] mb-2">
{t('features:sustainability.grants.tax.amount', 'Hasta 25% reducción')}
</p>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('features:sustainability.grants.tax.description', 'Deducción por inversión en sostenibilidad')} {t('features:sustainability.benefits.data_export.description', 'Exporta tus métricas de sostenibilidad en formatos estándar para reportes externos y auditorías')}
</p> </p>
</div> </div>
</div> </div>

View File

@@ -342,7 +342,7 @@ const LandingPage: React.FC = () => {
</div> </div>
</div> </div>
{/* Pilar 3: Tus Datos, Tus Subvenciones */} {/* Pilar 3: Tus Datos, Tu Impacto Ambiental */}
<div className="bg-[var(--bg-primary)] rounded-2xl p-8 lg:p-12 border-2 border-green-600 shadow-xl"> <div className="bg-[var(--bg-primary)] rounded-2xl p-8 lg:p-12 border-2 border-green-600 shadow-xl">
<div className="flex items-start gap-6"> <div className="flex items-start gap-6">
<div className="w-16 h-16 bg-green-600 rounded-2xl flex items-center justify-center flex-shrink-0"> <div className="w-16 h-16 bg-green-600 rounded-2xl flex items-center justify-center flex-shrink-0">
@@ -350,39 +350,45 @@ const LandingPage: React.FC = () => {
</div> </div>
<div className="flex-1"> <div className="flex-1">
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4"> <h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4">
{t('landing:pillar3.title', '🌱 Tus Datos, Tus Subvenciones')} {t('landing:pillar3.title', 'Tus Datos, Tu Impacto Ambiental')}
</h3> </h3>
<p className="text-lg text-[var(--text-secondary)] mb-6"> <p className="text-lg text-[var(--text-secondary)] mb-6">
{t('landing:pillar3.intro', '100% de tus datos te pertenecen. Cumples ODS 12.3 de la ONU automáticamente, lo que te hace elegible para subvenciones de sostenibilidad.')} {t('landing:pillar3.intro', '100% de tus datos te pertenecen. Mide tu impacto ambiental automáticamente y genera informes de sostenibilidad que cumplen con los estándares internacionales.')}
</p> </p>
<div className="grid md:grid-cols-3 gap-4 mb-6"> <div className="grid md:grid-cols-3 gap-4 mb-6">
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-green-600 mb-2">500-2,000</div> <div className="text-3xl font-bold text-green-600 mb-2">
{t('landing:pillar3.data_ownership_value', '100%')}
</div>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.savings', 'Ahorro mensual')} {t('landing:pillar3.data_ownership', 'Propiedad de datos')}
</p> </p>
</div> </div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-blue-600 mb-2">85kg CO</div> <div className="text-3xl font-bold text-blue-600 mb-2">
{t('landing:pillar3.co2_metric', 'CO₂')}
</div>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.co2', 'Reducidos al mes')} {t('landing:pillar3.co2', 'Medición automática')}
</p> </p>
</div> </div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-amber-600 mb-2">5</div> <div className="text-3xl font-bold text-amber-600 mb-2">
{t('landing:pillar3.sdg_value', 'ODS 12.3')}
</div>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.grants', 'Programas de ayudas')} {t('landing:pillar3.sdg', 'Seguimiento de cumplimiento')}
</p> </p>
</div> </div>
</div> </div>
<div className="bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 rounded-lg p-4 border-l-4 border-green-600"> <div className="bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 rounded-lg p-4 border-l-4 border-green-600">
<p className="font-bold text-[var(--text-primary)] mb-2"> <p className="font-bold text-[var(--text-primary)] mb-2">
{t('landing:pillar3.grants_title', '💶 Elegible para hasta €50,000 en subvenciones')} {t('landing:pillar3.sustainability_title', 'Informes de Sostenibilidad Automatizados')}
</p> </p>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.grants_desc', 'PIMA Adapta, Planes Turismo, MOVES Circular, y más')} {t('landing:pillar3.sustainability_desc', 'Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario')}
</p> </p>
</div> </div>
</div> </div>

View File

@@ -52,50 +52,50 @@
--color-success-light: #4ade80; --color-success-light: #4ade80;
--color-success-dark: #16a34a; --color-success-dark: #16a34a;
/* Warning Colors */ /* Warning Colors - Inverted scale for dark mode */
--color-warning-50: #fffbeb; --color-warning-50: #422006;
--color-warning-100: #fef3c7; --color-warning-100: #78350f;
--color-warning-200: #fde68a; --color-warning-200: #9a3412;
--color-warning-300: #fcd34d; --color-warning-300: #c2410c;
--color-warning-400: #fbbf24; --color-warning-400: #ea580c;
--color-warning-500: #f59e0b; --color-warning-500: #f59e0b;
--color-warning-600: #ea580c; --color-warning-600: #fbbf24;
--color-warning-700: #c2410c; --color-warning-700: #fcd34d;
--color-warning-800: #9a3412; --color-warning-800: #fde68a;
--color-warning-900: #7c2d12; --color-warning-900: #fef3c7;
--color-warning: #fb923c; /* Brighter for dark theme */ --color-warning: #fb923c; /* Brighter for dark theme */
--color-warning-light: #fdba74; --color-warning-light: #fdba74;
--color-warning-dark: #ea580c; --color-warning-dark: #ea580c;
/* Error Colors */ /* Error Colors - Inverted scale for dark mode */
--color-error-50: #fef2f2; --color-error-50: #450a0a;
--color-error-100: #fee2e2; --color-error-100: #7f1d1d;
--color-error-200: #fecaca; --color-error-200: #991b1b;
--color-error-300: #fca5a5; --color-error-300: #b91c1c;
--color-error-400: #f87171; --color-error-400: #dc2626;
--color-error-500: #ef4444; --color-error-500: #ef4444;
--color-error-600: #dc2626; --color-error-600: #f87171;
--color-error-700: #b91c1c; --color-error-700: #fca5a5;
--color-error-800: #991b1b; --color-error-800: #fecaca;
--color-error-900: #7f1d1d; --color-error-900: #fee2e2;
--color-error: #ef4444; /* Brighter for dark theme */ --color-error: #ef4444; /* Brighter for dark theme */
--color-error-light: #f87171; --color-error-light: #f87171;
--color-error-dark: #dc2626; --color-error-dark: #dc2626;
/* Info Colors */ /* Info Colors - Adjusted for dark mode */
--color-info-50: #eff6ff; --color-info-50: #0c4a6e;
--color-info-100: #dbeafe; --color-info-100: #075985;
--color-info-200: #bfdbfe; --color-info-200: #0369a1;
--color-info-300: #93c5fd; --color-info-300: #0284c7;
--color-info-400: #60a5fa; --color-info-400: #0ea5e9;
--color-info-500: #3b82f6; --color-info-500: #38bdf8;
--color-info-600: #0284c7; --color-info-600: #38bdf8;
--color-info-700: #0369a1; --color-info-700: #60a5fa;
--color-info-800: #075985; --color-info-800: #93c5fd;
--color-info-900: #0c4a6e; --color-info-900: #bfdbfe;
--color-info: #0ea5e9; /* Brighter for dark theme */ --color-info: #38bdf8; /* Brighter cyan for dark theme */
--color-info-light: #0ea5e9; --color-info-light: #60a5fa;
--color-info-dark: #0369a1; --color-info-dark: #0ea5e9;
/* === THEME-SPECIFIC COLORS === */ /* === THEME-SPECIFIC COLORS === */
@@ -116,10 +116,10 @@
--text-muted: #64748b; --text-muted: #64748b;
--text-disabled: #475569; --text-disabled: #475569;
/* Border Colors */ /* Border Colors - Enhanced visibility for dark mode */
--border-primary: #334155; --border-primary: #475569;
--border-secondary: #475569; --border-secondary: #64748b;
--border-tertiary: #64748b; --border-tertiary: #94a3b8;
--border-focus: #f59e0b; --border-focus: #f59e0b;
--border-error: #ef4444; --border-error: #ef4444;
--border-success: #22c55e; --border-success: #22c55e;

View File

@@ -734,44 +734,65 @@ class SustainabilityService:
def _assess_grant_readiness(self, sdg_compliance: Dict[str, Any]) -> Dict[str, Any]: def _assess_grant_readiness(self, sdg_compliance: Dict[str, Any]) -> Dict[str, Any]:
""" """
Assess readiness for EU grant programs accessible to Spanish bakeries and retail. Assess readiness for EU grant programs accessible to Spanish bakeries and retail.
Based on 2025 research and Spain's Law 1/2025 on food waste prevention. Based on 2026 verified research. Updated Dec 2025.
""" """
reduction = sdg_compliance['sdg_12_3']['reduction_achieved'] reduction = sdg_compliance['sdg_12_3']['reduction_achieved']
grants = { grants = {
'life_circular_economy': { 'horizon_europe_food_systems': {
'eligible': reduction >= 15,
'confidence': 'high' if reduction >= 25 else 'medium' if reduction >= 15 else 'low',
'requirements_met': reduction >= 15,
'funding_eur': 73_000_000, # €73M available for circular economy
'deadline': '2025-09-23',
'program_type': 'grant'
},
'horizon_europe_cluster_6': {
'eligible': reduction >= 20, 'eligible': reduction >= 20,
'confidence': 'high' if reduction >= 35 else 'medium' if reduction >= 20 else 'low', 'confidence': 'high' if reduction >= 35 else 'medium' if reduction >= 20 else 'low',
'requirements_met': reduction >= 20, 'requirements_met': reduction >= 20,
'funding_eur': 880_000_000, # €880M+ annually for food systems 'funding_eur': 12_000_000, # €3-12M per project
'deadline': 'rolling_2025', 'deadline': '2026-02-18',
'program_type': 'grant' 'program_type': 'grant',
'category': 'European Union'
}, },
'fedima_sustainability_grant': { 'horizon_europe_circular_sme': {
'eligible': reduction >= 15, 'eligible': reduction >= 15,
'confidence': 'high' if reduction >= 20 else 'medium' if reduction >= 15 else 'low', 'confidence': 'high' if reduction >= 25 else 'medium' if reduction >= 15 else 'low',
'requirements_met': reduction >= 15, 'requirements_met': reduction >= 15,
'funding_eur': 20_000, # €20k bi-annual 'funding_eur': 10_000_000, # €10M total program
'deadline': '2025-06-30', 'deadline': '2026-02-18',
'program_type': 'grant', 'program_type': 'grant',
'sector_specific': 'bakery' 'category': 'European Union'
}, },
'eit_food_retail': { 'eit_food_impact_2026': {
'eligible': reduction >= 20, 'eligible': reduction >= 15,
'confidence': 'high' if reduction >= 30 else 'medium' if reduction >= 20 else 'low', 'confidence': 'high' if reduction >= 25 else 'medium' if reduction >= 15 else 'low',
'requirements_met': reduction >= 20, 'requirements_met': reduction >= 15,
'funding_eur': 45_000, # €15-45k range 'funding_eur': 1_000_000, # €50K-1M range
'deadline': 'rolling', 'deadline': 'rolling_2026',
'program_type': 'grant', 'program_type': 'grant',
'sector_specific': 'retail' 'category': 'European Union'
},
'eib_circular_economy': {
'eligible': reduction >= 10,
'confidence': 'high' if reduction >= 20 else 'medium' if reduction >= 10 else 'low',
'requirements_met': reduction >= 10,
'funding_eur': 12_500_000, # Up to €12.5M loans
'deadline': 'ongoing_2026',
'program_type': 'loan',
'category': 'European Union'
},
'circular_economy_perte': {
'eligible': reduction >= 15,
'confidence': 'high' if reduction >= 25 else 'medium' if reduction >= 15 else 'low',
'requirements_met': reduction >= 15,
'funding_eur': 10_000_000, # €150K-10M range
'deadline': 'rolling_until_2026',
'program_type': 'grant',
'category': 'Spain'
},
'planes_turismo_2026': {
'eligible': reduction >= 10,
'confidence': 'medium',
'requirements_met': reduction >= 10,
'funding_eur': 500_000, # Variable by region
'deadline': '2026-12-31',
'program_type': 'grant',
'category': 'Spain',
'sector_specific': 'tourism'
}, },
'un_sdg_certified': { 'un_sdg_certified': {
'eligible': reduction >= 50, 'eligible': reduction >= 50,
@@ -779,7 +800,8 @@ class SustainabilityService:
'requirements_met': reduction >= 50, 'requirements_met': reduction >= 50,
'funding_eur': 0, # Certification, not funding 'funding_eur': 0, # Certification, not funding
'deadline': 'ongoing', 'deadline': 'ongoing',
'program_type': 'certification' 'program_type': 'certification',
'category': 'International'
} }
} }

View File

@@ -189,30 +189,46 @@ async def generate_orchestration_for_tenant(
runs_created = 0 runs_created = 0
steps_created = 0 steps_created = 0
# Special case: Create at least 1 recent completed run for "today" (for dashboard visibility)
# This ensures the dashboard "Listo Para Planificar Tu Día" shows data
today_run_created = False
for i in range(total_runs): for i in range(total_runs):
# Determine temporal distribution # For the first run, create it for today with completed status
rand_temporal = random.random() if i == 0 and not today_run_created:
cumulative = 0
temporal_category = None
for category, details in orch_config["temporal_distribution"].items():
cumulative += details["percentage"]
if rand_temporal <= cumulative:
temporal_category = details
break
if not temporal_category:
temporal_category = orch_config["temporal_distribution"]["completed"] temporal_category = orch_config["temporal_distribution"]["completed"]
# Use current time instead of BASE_REFERENCE_DATE
now = datetime.now(timezone.utc)
# Set offset to create run that started yesterday and completed today
offset_days = 0 # Today
run_date = now.date()
today_run_created = True
# Force status to completed for dashboard visibility
status = "completed"
else:
# Determine temporal distribution
rand_temporal = random.random()
cumulative = 0
temporal_category = None
# Calculate run date for category, details in orch_config["temporal_distribution"].items():
offset_days = random.randint( cumulative += details["percentage"]
temporal_category["offset_days_min"], if rand_temporal <= cumulative:
temporal_category["offset_days_max"] temporal_category = details
) break
run_date = calculate_date_from_offset(offset_days)
# Select status if not temporal_category:
status = random.choice(temporal_category["statuses"]) temporal_category = orch_config["temporal_distribution"]["completed"]
# Calculate run date
offset_days = random.randint(
temporal_category["offset_days_min"],
temporal_category["offset_days_max"]
)
run_date = calculate_date_from_offset(offset_days)
# Select status
status = random.choice(temporal_category["statuses"])
# Select run type # Select run type
run_type_choice = weighted_choice(orch_config["run_types"]) run_type_choice = weighted_choice(orch_config["run_types"])
@@ -232,19 +248,26 @@ async def generate_orchestration_for_tenant(
run_number = generate_run_number(tenant_id, i + 1, run_type) run_number = generate_run_number(tenant_id, i + 1, run_type)
# Calculate timing based on status # Calculate timing based on status
started_at = calculate_datetime_from_offset(offset_days - 1) # For today's run (i==0), use current datetime instead of BASE_REFERENCE_DATE
completed_at = None if i == 0 and today_run_created:
duration_seconds = None now = datetime.now(timezone.utc)
started_at = now - timedelta(hours=2) # Started 2 hours ago
completed_at = now - timedelta(minutes=30) # Completed 30 minutes ago
duration_seconds = int((completed_at - started_at).total_seconds())
else:
started_at = calculate_datetime_from_offset(offset_days - 1)
completed_at = None
duration_seconds = None
if status in ["completed", "partial_success"]: if status in ["completed", "partial_success"]:
completed_at = calculate_datetime_from_offset(offset_days) completed_at = calculate_datetime_from_offset(offset_days)
duration_seconds = int((completed_at - started_at).total_seconds()) duration_seconds = int((completed_at - started_at).total_seconds())
elif status == "failed": elif status == "failed":
completed_at = calculate_datetime_from_offset(offset_days - 0.5) completed_at = calculate_datetime_from_offset(offset_days - 0.5)
duration_seconds = int((completed_at - started_at).total_seconds()) duration_seconds = int((completed_at - started_at).total_seconds())
elif status == "cancelled": elif status == "cancelled":
completed_at = calculate_datetime_from_offset(offset_days - 0.2) completed_at = calculate_datetime_from_offset(offset_days - 0.2)
duration_seconds = int((completed_at - started_at).total_seconds()) duration_seconds = int((completed_at - started_at).total_seconds())
# Generate step timing # Generate step timing
forecasting_started_at = started_at forecasting_started_at = started_at