riksdagsmonitor 0.8.14 → 0.8.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/cia/dashboard-init.d.ts +26 -0
- package/dist/lib/cia/dashboard-init.d.ts.map +1 -0
- package/dist/lib/cia/dashboard-init.js +108 -0
- package/dist/lib/cia/dashboard-init.js.map +1 -0
- package/dist/lib/cia/data-loader.d.ts +408 -0
- package/dist/lib/cia/data-loader.d.ts.map +1 -0
- package/dist/lib/cia/data-loader.js +867 -0
- package/dist/lib/cia/data-loader.js.map +1 -0
- package/dist/lib/cia/election-predictions.d.ts +78 -0
- package/dist/lib/cia/election-predictions.d.ts.map +1 -0
- package/dist/lib/cia/election-predictions.js +259 -0
- package/dist/lib/cia/election-predictions.js.map +1 -0
- package/dist/lib/cia/i18n-translations.d.ts +111 -0
- package/dist/lib/cia/i18n-translations.d.ts.map +1 -0
- package/dist/lib/cia/i18n-translations.js +619 -0
- package/dist/lib/cia/i18n-translations.js.map +1 -0
- package/dist/lib/cia/visualizations.d.ts +64 -0
- package/dist/lib/cia/visualizations.d.ts.map +1 -0
- package/dist/lib/cia/visualizations.js +662 -0
- package/dist/lib/cia/visualizations.js.map +1 -0
- package/dist/lib/dashboards/anomaly-detection.d.ts +44 -0
- package/dist/lib/dashboards/anomaly-detection.d.ts.map +1 -0
- package/dist/lib/dashboards/anomaly-detection.js +1017 -0
- package/dist/lib/dashboards/anomaly-detection.js.map +1 -0
- package/dist/lib/dashboards/coalition-dashboard.d.ts +36 -0
- package/dist/lib/dashboards/coalition-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/coalition-dashboard.js +645 -0
- package/dist/lib/dashboards/coalition-dashboard.js.map +1 -0
- package/dist/lib/dashboards/coalition-loader.d.ts +43 -0
- package/dist/lib/dashboards/coalition-loader.d.ts.map +1 -0
- package/dist/lib/dashboards/coalition-loader.js +701 -0
- package/dist/lib/dashboards/coalition-loader.js.map +1 -0
- package/dist/lib/dashboards/committees-dashboard.d.ts +23 -0
- package/dist/lib/dashboards/committees-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/committees-dashboard.js +886 -0
- package/dist/lib/dashboards/committees-dashboard.js.map +1 -0
- package/dist/lib/dashboards/election-cycle.d.ts +62 -0
- package/dist/lib/dashboards/election-cycle.d.ts.map +1 -0
- package/dist/lib/dashboards/election-cycle.js +484 -0
- package/dist/lib/dashboards/election-cycle.js.map +1 -0
- package/dist/lib/dashboards/ministry-dashboard.d.ts +46 -0
- package/dist/lib/dashboards/ministry-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/ministry-dashboard.js +1114 -0
- package/dist/lib/dashboards/ministry-dashboard.js.map +1 -0
- package/dist/lib/dashboards/party-dashboard.d.ts +56 -0
- package/dist/lib/dashboards/party-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/party-dashboard.js +981 -0
- package/dist/lib/dashboards/party-dashboard.js.map +1 -0
- package/dist/lib/dashboards/politician-dashboard.d.ts +41 -0
- package/dist/lib/dashboards/politician-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/politician-dashboard.js +611 -0
- package/dist/lib/dashboards/politician-dashboard.js.map +1 -0
- package/dist/lib/dashboards/pre-election.d.ts +64 -0
- package/dist/lib/dashboards/pre-election.d.ts.map +1 -0
- package/dist/lib/dashboards/pre-election.js +604 -0
- package/dist/lib/dashboards/pre-election.js.map +1 -0
- package/dist/lib/dashboards/risk-dashboard.d.ts +37 -0
- package/dist/lib/dashboards/risk-dashboard.d.ts.map +1 -0
- package/dist/lib/dashboards/risk-dashboard.js +863 -0
- package/dist/lib/dashboards/risk-dashboard.js.map +1 -0
- package/dist/lib/dashboards/seasonal-patterns.d.ts +24 -0
- package/dist/lib/dashboards/seasonal-patterns.d.ts.map +1 -0
- package/dist/lib/dashboards/seasonal-patterns.js +535 -0
- package/dist/lib/dashboards/seasonal-patterns.js.map +1 -0
- package/dist/lib/dashboards/stats-loader.d.ts +35 -0
- package/dist/lib/dashboards/stats-loader.d.ts.map +1 -0
- package/dist/lib/dashboards/stats-loader.js +145 -0
- package/dist/lib/dashboards/stats-loader.js.map +1 -0
- package/dist/lib/{chart-factory.d.ts → shared/chart-factory.d.ts} +9 -2
- package/dist/lib/shared/chart-factory.d.ts.map +1 -0
- package/dist/lib/{chart-factory.js → shared/chart-factory.js} +9 -2
- package/dist/lib/shared/chart-factory.js.map +1 -0
- package/dist/lib/shared/data-loader.d.ts.map +1 -0
- package/dist/lib/shared/data-loader.js.map +1 -0
- package/dist/lib/shared/dom-utils.d.ts.map +1 -0
- package/dist/lib/shared/dom-utils.js.map +1 -0
- package/dist/lib/shared/error-boundary.d.ts.map +1 -0
- package/dist/lib/shared/error-boundary.js.map +1 -0
- package/dist/lib/shared/fallback-ui.d.ts.map +1 -0
- package/dist/lib/shared/fallback-ui.js.map +1 -0
- package/dist/lib/shared/index.d.ts.map +1 -0
- package/dist/lib/shared/index.js.map +1 -0
- package/dist/lib/shared/logger.d.ts.map +1 -0
- package/dist/lib/shared/logger.js.map +1 -0
- package/dist/lib/shared/register-globals.d.ts +14 -0
- package/dist/lib/shared/register-globals.d.ts.map +1 -0
- package/dist/lib/shared/register-globals.js +21 -0
- package/dist/lib/shared/register-globals.js.map +1 -0
- package/dist/lib/{theme.d.ts → shared/theme.d.ts} +1 -18
- package/dist/lib/shared/theme.d.ts.map +1 -0
- package/dist/lib/{theme.js → shared/theme.js} +1 -18
- package/dist/lib/shared/theme.js.map +1 -0
- package/dist/lib/shared/types.d.ts.map +1 -0
- package/dist/lib/shared/types.js.map +1 -0
- package/dist/lib/ui/back-to-top.d.ts +13 -0
- package/dist/lib/ui/back-to-top.d.ts.map +1 -0
- package/dist/lib/ui/back-to-top.js +48 -0
- package/dist/lib/ui/back-to-top.js.map +1 -0
- package/dist/scripts/analysis-reader.d.ts +241 -0
- package/dist/scripts/analysis-reader.d.ts.map +1 -0
- package/dist/scripts/analysis-reader.js +495 -0
- package/dist/scripts/analysis-reader.js.map +1 -0
- package/dist/scripts/article-quality-enhancer.d.ts +148 -0
- package/dist/scripts/article-quality-enhancer.d.ts.map +1 -0
- package/dist/scripts/article-quality-enhancer.js +430 -0
- package/dist/scripts/article-quality-enhancer.js.map +1 -0
- package/dist/scripts/article-template/constants.d.ts +104 -0
- package/dist/scripts/article-template/constants.d.ts.map +1 -0
- package/dist/scripts/article-template/constants.js +225 -0
- package/dist/scripts/article-template/constants.js.map +1 -0
- package/dist/scripts/article-template/helpers.d.ts +83 -0
- package/dist/scripts/article-template/helpers.d.ts.map +1 -0
- package/dist/scripts/article-template/helpers.js +236 -0
- package/dist/scripts/article-template/helpers.js.map +1 -0
- package/dist/scripts/article-template/index.d.ts +39 -0
- package/dist/scripts/article-template/index.d.ts.map +1 -0
- package/dist/scripts/article-template/index.js +37 -0
- package/dist/scripts/article-template/index.js.map +1 -0
- package/dist/scripts/article-template/registry.d.ts +64 -0
- package/dist/scripts/article-template/registry.d.ts.map +1 -0
- package/dist/scripts/article-template/registry.js +405 -0
- package/dist/scripts/article-template/registry.js.map +1 -0
- package/dist/scripts/article-template/template.d.ts +18 -0
- package/dist/scripts/article-template/template.d.ts.map +1 -0
- package/dist/scripts/article-template/template.js +359 -0
- package/dist/scripts/article-template/template.js.map +1 -0
- package/dist/scripts/article-template/types.d.ts +90 -0
- package/dist/scripts/article-template/types.d.ts.map +1 -0
- package/dist/scripts/article-template/types.js +96 -0
- package/dist/scripts/article-template/types.js.map +1 -0
- package/dist/scripts/article-template.d.ts +18 -0
- package/dist/scripts/article-template.d.ts.map +1 -0
- package/dist/scripts/article-template.js +18 -0
- package/dist/scripts/article-template.js.map +1 -0
- package/dist/scripts/catalog-downloaded-data.d.ts +66 -0
- package/dist/scripts/catalog-downloaded-data.d.ts.map +1 -0
- package/dist/scripts/catalog-downloaded-data.js +239 -0
- package/dist/scripts/catalog-downloaded-data.js.map +1 -0
- package/dist/scripts/check-cia-schema-updates.d.ts +186 -0
- package/dist/scripts/check-cia-schema-updates.d.ts.map +1 -0
- package/dist/scripts/check-cia-schema-updates.js +363 -0
- package/dist/scripts/check-cia-schema-updates.js.map +1 -0
- package/dist/scripts/data-transformers/calendar.d.ts +16 -0
- package/dist/scripts/data-transformers/calendar.d.ts.map +1 -0
- package/dist/scripts/data-transformers/calendar.js +137 -0
- package/dist/scripts/data-transformers/calendar.js.map +1 -0
- package/dist/scripts/data-transformers/constants/committee-names.d.ts +15 -0
- package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/committee-names.js +30 -0
- package/dist/scripts/data-transformers/constants/committee-names.js.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +11 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.js +900 -0
- package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +11 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.js +900 -0
- package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels.d.ts +13 -0
- package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/content-labels.js +18 -0
- package/dist/scripts/data-transformers/constants/content-labels.js.map +1 -0
- package/dist/scripts/data-transformers/constants/index.d.ts +15 -0
- package/dist/scripts/data-transformers/constants/index.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/index.js +15 -0
- package/dist/scripts/data-transformers/constants/index.js.map +1 -0
- package/dist/scripts/data-transformers/constants/locale-map.d.ts +13 -0
- package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants/locale-map.js +17 -0
- package/dist/scripts/data-transformers/constants/locale-map.js.map +1 -0
- package/dist/scripts/data-transformers/constants.d.ts +14 -0
- package/dist/scripts/data-transformers/constants.d.ts.map +1 -0
- package/dist/scripts/data-transformers/constants.js +14 -0
- package/dist/scripts/data-transformers/constants.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +64 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +805 -0
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +50 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +310 -0
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/committee.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/committee.js +247 -0
- package/dist/scripts/data-transformers/content-generators/committee.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +124 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js +564 -0
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +82 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +321 -0
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/generic.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/generic.js +295 -0
- package/dist/scripts/data-transformers/content-generators/generic.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/index.d.ts +84 -0
- package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/index.js +47 -0
- package/dist/scripts/data-transformers/content-generators/index.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.js +124 -0
- package/dist/scripts/data-transformers/content-generators/interpellations.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +137 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js +286 -0
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +17 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.js +212 -0
- package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +17 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.js +173 -0
- package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/motions.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/motions.js +158 -0
- package/dist/scripts/data-transformers/content-generators/motions.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +52 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js +244 -0
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/propositions.js +263 -0
- package/dist/scripts/data-transformers/content-generators/propositions.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +92 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.js +257 -0
- package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/shared.d.ts +123 -0
- package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/shared.js +919 -0
- package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +50 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.js +177 -0
- package/dist/scripts/data-transformers/content-generators/swot-section.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +12 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.js +332 -0
- package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +1 -0
- package/dist/scripts/data-transformers/content-generators.d.ts +15 -0
- package/dist/scripts/data-transformers/content-generators.d.ts.map +1 -0
- package/dist/scripts/data-transformers/content-generators.js +14 -0
- package/dist/scripts/data-transformers/content-generators.js.map +1 -0
- package/dist/scripts/data-transformers/document-analysis.d.ts +58 -0
- package/dist/scripts/data-transformers/document-analysis.d.ts.map +1 -0
- package/dist/scripts/data-transformers/document-analysis.js +396 -0
- package/dist/scripts/data-transformers/document-analysis.js.map +1 -0
- package/dist/scripts/data-transformers/helpers.d.ts +144 -0
- package/dist/scripts/data-transformers/helpers.d.ts.map +1 -0
- package/dist/scripts/data-transformers/helpers.js +408 -0
- package/dist/scripts/data-transformers/helpers.js.map +1 -0
- package/dist/scripts/data-transformers/index.d.ts +45 -0
- package/dist/scripts/data-transformers/index.d.ts.map +1 -0
- package/dist/scripts/data-transformers/index.js +66 -0
- package/dist/scripts/data-transformers/index.js.map +1 -0
- package/dist/scripts/data-transformers/metadata.d.ts +42 -0
- package/dist/scripts/data-transformers/metadata.d.ts.map +1 -0
- package/dist/scripts/data-transformers/metadata.js +385 -0
- package/dist/scripts/data-transformers/metadata.js.map +1 -0
- package/dist/scripts/data-transformers/policy-analysis.d.ts +105 -0
- package/dist/scripts/data-transformers/policy-analysis.d.ts.map +1 -0
- package/dist/scripts/data-transformers/policy-analysis.js +686 -0
- package/dist/scripts/data-transformers/policy-analysis.js.map +1 -0
- package/dist/scripts/data-transformers/risk-analysis.d.ts +104 -0
- package/dist/scripts/data-transformers/risk-analysis.d.ts.map +1 -0
- package/dist/scripts/data-transformers/risk-analysis.js +279 -0
- package/dist/scripts/data-transformers/risk-analysis.js.map +1 -0
- package/dist/scripts/data-transformers/types.d.ts +260 -0
- package/dist/scripts/data-transformers/types.d.ts.map +1 -0
- package/dist/scripts/data-transformers/types.js +11 -0
- package/dist/scripts/data-transformers/types.js.map +1 -0
- package/dist/scripts/data-transformers.d.ts +23 -0
- package/dist/scripts/data-transformers.d.ts.map +1 -0
- package/dist/scripts/data-transformers.js +35 -0
- package/dist/scripts/data-transformers.js.map +1 -0
- package/dist/scripts/deep-inspection/index.d.ts +55 -0
- package/dist/scripts/deep-inspection/index.d.ts.map +1 -0
- package/dist/scripts/deep-inspection/index.js +66 -0
- package/dist/scripts/deep-inspection/index.js.map +1 -0
- package/dist/scripts/detect-swedish-leakage.d.ts +69 -0
- package/dist/scripts/detect-swedish-leakage.d.ts.map +1 -0
- package/dist/scripts/detect-swedish-leakage.js +417 -0
- package/dist/scripts/detect-swedish-leakage.js.map +1 -0
- package/dist/scripts/editorial-framework.d.ts +121 -0
- package/dist/scripts/editorial-framework.d.ts.map +1 -0
- package/dist/scripts/editorial-framework.js +364 -0
- package/dist/scripts/editorial-framework.js.map +1 -0
- package/dist/scripts/editorial-pillars.d.ts +43 -0
- package/dist/scripts/editorial-pillars.d.ts.map +1 -0
- package/dist/scripts/editorial-pillars.js +215 -0
- package/dist/scripts/editorial-pillars.js.map +1 -0
- package/dist/scripts/extract-news-metadata.d.ts +12 -0
- package/dist/scripts/extract-news-metadata.d.ts.map +1 -0
- package/dist/scripts/extract-news-metadata.js +107 -0
- package/dist/scripts/extract-news-metadata.js.map +1 -0
- package/dist/scripts/extract-vocabulary.d.ts +15 -0
- package/dist/scripts/extract-vocabulary.d.ts.map +1 -0
- package/dist/scripts/extract-vocabulary.js +255 -0
- package/dist/scripts/extract-vocabulary.js.map +1 -0
- package/dist/scripts/fix-article-navigation.d.ts +37 -0
- package/dist/scripts/fix-article-navigation.d.ts.map +1 -0
- package/dist/scripts/fix-article-navigation.js +198 -0
- package/dist/scripts/fix-article-navigation.js.map +1 -0
- package/dist/scripts/fix-keywords-localization.d.ts +18 -0
- package/dist/scripts/fix-keywords-localization.d.ts.map +1 -0
- package/dist/scripts/fix-keywords-localization.js +270 -0
- package/dist/scripts/fix-keywords-localization.js.map +1 -0
- package/dist/scripts/fix-old-articles-branding.d.ts +17 -0
- package/dist/scripts/fix-old-articles-branding.d.ts.map +1 -0
- package/dist/scripts/fix-old-articles-branding.js +229 -0
- package/dist/scripts/fix-old-articles-branding.js.map +1 -0
- package/dist/scripts/generate-news-backport.d.ts +16 -0
- package/dist/scripts/generate-news-backport.d.ts.map +1 -0
- package/dist/scripts/generate-news-backport.js +379 -0
- package/dist/scripts/generate-news-backport.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +124 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +529 -0
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +59 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.js +116 -0
- package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +58 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.js +144 -0
- package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/config.d.ts +58 -0
- package/dist/scripts/generate-news-enhanced/config.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/config.js +286 -0
- package/dist/scripts/generate-news-enhanced/config.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/generators.d.ts +119 -0
- package/dist/scripts/generate-news-enhanced/generators.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/generators.js +2131 -0
- package/dist/scripts/generate-news-enhanced/generators.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/helpers.d.ts +122 -0
- package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/helpers.js +468 -0
- package/dist/scripts/generate-news-enhanced/helpers.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/index.d.ts +19 -0
- package/dist/scripts/generate-news-enhanced/index.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/index.js +221 -0
- package/dist/scripts/generate-news-enhanced/index.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +46 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js +1227 -0
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +1 -0
- package/dist/scripts/generate-news-enhanced/types.d.ts +34 -0
- package/dist/scripts/generate-news-enhanced/types.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced/types.js +9 -0
- package/dist/scripts/generate-news-enhanced/types.js.map +1 -0
- package/dist/scripts/generate-news-enhanced.d.ts +25 -0
- package/dist/scripts/generate-news-enhanced.d.ts.map +1 -0
- package/dist/scripts/generate-news-enhanced.js +37 -0
- package/dist/scripts/generate-news-enhanced.js.map +1 -0
- package/dist/scripts/generate-news-indexes/constants.d.ts +20 -0
- package/dist/scripts/generate-news-indexes/constants.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/constants.js +308 -0
- package/dist/scripts/generate-news-indexes/constants.js.map +1 -0
- package/dist/scripts/generate-news-indexes/helpers.d.ts +73 -0
- package/dist/scripts/generate-news-indexes/helpers.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/helpers.js +352 -0
- package/dist/scripts/generate-news-indexes/helpers.js.map +1 -0
- package/dist/scripts/generate-news-indexes/index.d.ts +20 -0
- package/dist/scripts/generate-news-indexes/index.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/index.js +75 -0
- package/dist/scripts/generate-news-indexes/index.js.map +1 -0
- package/dist/scripts/generate-news-indexes/template.d.ts +25 -0
- package/dist/scripts/generate-news-indexes/template.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/template.js +644 -0
- package/dist/scripts/generate-news-indexes/template.js.map +1 -0
- package/dist/scripts/generate-news-indexes/types.d.ts +96 -0
- package/dist/scripts/generate-news-indexes/types.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes/types.js +9 -0
- package/dist/scripts/generate-news-indexes/types.js.map +1 -0
- package/dist/scripts/generate-news-indexes.d.ts +20 -0
- package/dist/scripts/generate-news-indexes.d.ts.map +1 -0
- package/dist/scripts/generate-news-indexes.js +19 -0
- package/dist/scripts/generate-news-indexes.js.map +1 -0
- package/dist/scripts/generate-rss.d.ts +48 -0
- package/dist/scripts/generate-rss.d.ts.map +1 -0
- package/dist/scripts/generate-rss.js +299 -0
- package/dist/scripts/generate-rss.js.map +1 -0
- package/dist/scripts/generate-sitemap-html.d.ts +79 -0
- package/dist/scripts/generate-sitemap-html.d.ts.map +1 -0
- package/dist/scripts/generate-sitemap-html.js +878 -0
- package/dist/scripts/generate-sitemap-html.js.map +1 -0
- package/dist/scripts/generate-sitemap.d.ts +23 -0
- package/dist/scripts/generate-sitemap.d.ts.map +1 -0
- package/dist/scripts/generate-sitemap.js +476 -0
- package/dist/scripts/generate-sitemap.js.map +1 -0
- package/dist/scripts/generate-types-from-cia-schemas.d.ts +176 -0
- package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +1 -0
- package/dist/scripts/generate-types-from-cia-schemas.js +318 -0
- package/dist/scripts/generate-types-from-cia-schemas.js.map +1 -0
- package/dist/scripts/government-role-validator.d.ts +65 -0
- package/dist/scripts/government-role-validator.d.ts.map +1 -0
- package/dist/scripts/government-role-validator.js +217 -0
- package/dist/scripts/government-role-validator.js.map +1 -0
- package/dist/scripts/html-utils.d.ts +17 -0
- package/dist/scripts/html-utils.d.ts.map +1 -0
- package/dist/scripts/html-utils.js +29 -0
- package/dist/scripts/html-utils.js.map +1 -0
- package/dist/scripts/load-cia-stats.d.ts +89 -0
- package/dist/scripts/load-cia-stats.d.ts.map +1 -0
- package/dist/scripts/load-cia-stats.js +400 -0
- package/dist/scripts/load-cia-stats.js.map +1 -0
- package/dist/scripts/mcp-client/client.d.ts +73 -0
- package/dist/scripts/mcp-client/client.d.ts.map +1 -0
- package/dist/scripts/mcp-client/client.js +526 -0
- package/dist/scripts/mcp-client/client.js.map +1 -0
- package/dist/scripts/mcp-client/document-types.d.ts +23 -0
- package/dist/scripts/mcp-client/document-types.d.ts.map +1 -0
- package/dist/scripts/mcp-client/document-types.js +62 -0
- package/dist/scripts/mcp-client/document-types.js.map +1 -0
- package/dist/scripts/mcp-client/index.d.ts +34 -0
- package/dist/scripts/mcp-client/index.d.ts.map +1 -0
- package/dist/scripts/mcp-client/index.js +67 -0
- package/dist/scripts/mcp-client/index.js.map +1 -0
- package/dist/scripts/mcp-client/transport.d.ts +32 -0
- package/dist/scripts/mcp-client/transport.d.ts.map +1 -0
- package/dist/scripts/mcp-client/transport.js +102 -0
- package/dist/scripts/mcp-client/transport.js.map +1 -0
- package/dist/scripts/mcp-client.d.ts +18 -0
- package/dist/scripts/mcp-client.d.ts.map +1 -0
- package/dist/scripts/mcp-client.js +18 -0
- package/dist/scripts/mcp-client.js.map +1 -0
- package/dist/scripts/mcp-query-cli.d.ts +25 -0
- package/dist/scripts/mcp-query-cli.d.ts.map +1 -0
- package/dist/scripts/mcp-query-cli.js +66 -0
- package/dist/scripts/mcp-query-cli.js.map +1 -0
- package/dist/scripts/news-types/breaking-news.d.ts +178 -0
- package/dist/scripts/news-types/breaking-news.d.ts.map +1 -0
- package/dist/scripts/news-types/breaking-news.js +432 -0
- package/dist/scripts/news-types/breaking-news.js.map +1 -0
- package/dist/scripts/news-types/committee-reports.d.ts +212 -0
- package/dist/scripts/news-types/committee-reports.d.ts.map +1 -0
- package/dist/scripts/news-types/committee-reports.js +404 -0
- package/dist/scripts/news-types/committee-reports.js.map +1 -0
- package/dist/scripts/news-types/month-ahead.d.ts +71 -0
- package/dist/scripts/news-types/month-ahead.d.ts.map +1 -0
- package/dist/scripts/news-types/month-ahead.js +392 -0
- package/dist/scripts/news-types/month-ahead.js.map +1 -0
- package/dist/scripts/news-types/monthly-review.d.ts +61 -0
- package/dist/scripts/news-types/monthly-review.d.ts.map +1 -0
- package/dist/scripts/news-types/monthly-review.js +417 -0
- package/dist/scripts/news-types/monthly-review.js.map +1 -0
- package/dist/scripts/news-types/motions.d.ts +214 -0
- package/dist/scripts/news-types/motions.d.ts.map +1 -0
- package/dist/scripts/news-types/motions.js +447 -0
- package/dist/scripts/news-types/motions.js.map +1 -0
- package/dist/scripts/news-types/propositions.d.ts +204 -0
- package/dist/scripts/news-types/propositions.d.ts.map +1 -0
- package/dist/scripts/news-types/propositions.js +401 -0
- package/dist/scripts/news-types/propositions.js.map +1 -0
- package/dist/scripts/news-types/week-ahead.d.ts +231 -0
- package/dist/scripts/news-types/week-ahead.d.ts.map +1 -0
- package/dist/scripts/news-types/week-ahead.js +441 -0
- package/dist/scripts/news-types/week-ahead.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/analysis.d.ts +47 -0
- package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/analysis.js +276 -0
- package/dist/scripts/news-types/weekly-review/analysis.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts +51 -0
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/data-loader.js +298 -0
- package/dist/scripts/news-types/weekly-review/data-loader.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/generator.d.ts +18 -0
- package/dist/scripts/news-types/weekly-review/generator.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/generator.js +284 -0
- package/dist/scripts/news-types/weekly-review/generator.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/index.d.ts +20 -0
- package/dist/scripts/news-types/weekly-review/index.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/index.js +23 -0
- package/dist/scripts/news-types/weekly-review/index.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/types.d.ts +72 -0
- package/dist/scripts/news-types/weekly-review/types.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/types.js +20 -0
- package/dist/scripts/news-types/weekly-review/types.js.map +1 -0
- package/dist/scripts/news-types/weekly-review/validation.d.ts +10 -0
- package/dist/scripts/news-types/weekly-review/validation.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review/validation.js +95 -0
- package/dist/scripts/news-types/weekly-review/validation.js.map +1 -0
- package/dist/scripts/news-types/weekly-review.d.ts +15 -0
- package/dist/scripts/news-types/weekly-review.d.ts.map +1 -0
- package/dist/scripts/news-types/weekly-review.js +14 -0
- package/dist/scripts/news-types/weekly-review.js.map +1 -0
- package/dist/scripts/party-variants.d.ts +23 -0
- package/dist/scripts/party-variants.d.ts.map +1 -0
- package/dist/scripts/party-variants.js +50 -0
- package/dist/scripts/party-variants.js.map +1 -0
- package/dist/scripts/pipeline/index.d.ts +19 -0
- package/dist/scripts/pipeline/index.d.ts.map +1 -0
- package/dist/scripts/pipeline/index.js +17 -0
- package/dist/scripts/pipeline/index.js.map +1 -0
- package/dist/scripts/pipeline/orchestrator.d.ts +56 -0
- package/dist/scripts/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/scripts/pipeline/orchestrator.js +147 -0
- package/dist/scripts/pipeline/orchestrator.js.map +1 -0
- package/dist/scripts/pipeline/types.d.ts +117 -0
- package/dist/scripts/pipeline/types.d.ts.map +1 -0
- package/dist/scripts/pipeline/types.js +13 -0
- package/dist/scripts/pipeline/types.js.map +1 -0
- package/dist/scripts/pipeline/validation.d.ts +66 -0
- package/dist/scripts/pipeline/validation.d.ts.map +1 -0
- package/dist/scripts/pipeline/validation.js +129 -0
- package/dist/scripts/pipeline/validation.js.map +1 -0
- package/dist/scripts/populate-analysis-data.d.ts +41 -0
- package/dist/scripts/populate-analysis-data.d.ts.map +1 -0
- package/dist/scripts/populate-analysis-data.js +255 -0
- package/dist/scripts/populate-analysis-data.js.map +1 -0
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts +80 -0
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/data-downloader.js +230 -0
- package/dist/scripts/pre-article-analysis/data-downloader.js.map +1 -0
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts +141 -0
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/data-persistence.js +345 -0
- package/dist/scripts/pre-article-analysis/data-persistence.js.map +1 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +158 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.js +648 -0
- package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +1 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +58 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.js +142 -0
- package/dist/scripts/pre-article-analysis/pdf-converter.js.map +1 -0
- package/dist/scripts/pre-article-analysis.d.ts +41 -0
- package/dist/scripts/pre-article-analysis.d.ts.map +1 -0
- package/dist/scripts/pre-article-analysis.js +591 -0
- package/dist/scripts/pre-article-analysis.js.map +1 -0
- package/dist/scripts/scb-client.d.ts +104 -0
- package/dist/scripts/scb-client.d.ts.map +1 -0
- package/dist/scripts/scb-client.js +286 -0
- package/dist/scripts/scb-client.js.map +1 -0
- package/dist/scripts/scb-context.d.ts +88 -0
- package/dist/scripts/scb-context.d.ts.map +1 -0
- package/dist/scripts/scb-context.js +307 -0
- package/dist/scripts/scb-context.js.map +1 -0
- package/dist/scripts/shared/version.d.ts +9 -0
- package/dist/scripts/shared/version.d.ts.map +1 -0
- package/dist/scripts/shared/version.js +28 -0
- package/dist/scripts/shared/version.js.map +1 -0
- package/dist/scripts/statistical-claims-detector.d.ts +119 -0
- package/dist/scripts/statistical-claims-detector.d.ts.map +1 -0
- package/dist/scripts/statistical-claims-detector.js +391 -0
- package/dist/scripts/statistical-claims-detector.js.map +1 -0
- package/dist/scripts/sync-cia-schemas.d.ts +52 -0
- package/dist/scripts/sync-cia-schemas.d.ts.map +1 -0
- package/dist/scripts/sync-cia-schemas.js +195 -0
- package/dist/scripts/sync-cia-schemas.js.map +1 -0
- package/dist/scripts/translation-dictionary.d.ts +45 -0
- package/dist/scripts/translation-dictionary.d.ts.map +1 -0
- package/dist/scripts/translation-dictionary.js +3642 -0
- package/dist/scripts/translation-dictionary.js.map +1 -0
- package/dist/scripts/types/article.d.ts +392 -0
- package/dist/scripts/types/article.d.ts.map +1 -0
- package/dist/scripts/types/article.js +6 -0
- package/dist/scripts/types/article.js.map +1 -0
- package/dist/scripts/types/content.d.ts +167 -0
- package/dist/scripts/types/content.d.ts.map +1 -0
- package/dist/scripts/types/content.js +6 -0
- package/dist/scripts/types/content.js.map +1 -0
- package/dist/scripts/types/editorial.d.ts +17 -0
- package/dist/scripts/types/editorial.d.ts.map +1 -0
- package/dist/scripts/types/editorial.js +6 -0
- package/dist/scripts/types/editorial.js.map +1 -0
- package/dist/scripts/types/language.d.ts +7 -0
- package/dist/scripts/types/language.d.ts.map +1 -0
- package/dist/scripts/types/language.js +6 -0
- package/dist/scripts/types/language.js.map +1 -0
- package/dist/scripts/types/mcp.d.ts +117 -0
- package/dist/scripts/types/mcp.d.ts.map +1 -0
- package/dist/scripts/types/mcp.js +6 -0
- package/dist/scripts/types/mcp.js.map +1 -0
- package/dist/scripts/types/party.d.ts +9 -0
- package/dist/scripts/types/party.d.ts.map +1 -0
- package/dist/scripts/types/party.js +6 -0
- package/dist/scripts/types/party.js.map +1 -0
- package/dist/scripts/types/validation.d.ts +136 -0
- package/dist/scripts/types/validation.d.ts.map +1 -0
- package/dist/scripts/types/validation.js +6 -0
- package/dist/scripts/types/validation.js.map +1 -0
- package/dist/scripts/types/workflow.d.ts +78 -0
- package/dist/scripts/types/workflow.d.ts.map +1 -0
- package/dist/scripts/types/workflow.js +6 -0
- package/dist/scripts/types/workflow.js.map +1 -0
- package/dist/scripts/update-stats-from-cia.d.ts +44 -0
- package/dist/scripts/update-stats-from-cia.d.ts.map +1 -0
- package/dist/scripts/update-stats-from-cia.js +310 -0
- package/dist/scripts/update-stats-from-cia.js.map +1 -0
- package/dist/scripts/validate-against-cia-schemas.d.ts +126 -0
- package/dist/scripts/validate-against-cia-schemas.d.ts.map +1 -0
- package/dist/scripts/validate-against-cia-schemas.js +299 -0
- package/dist/scripts/validate-against-cia-schemas.js.map +1 -0
- package/dist/scripts/validate-cross-references.d.ts +49 -0
- package/dist/scripts/validate-cross-references.d.ts.map +1 -0
- package/dist/scripts/validate-cross-references.js +183 -0
- package/dist/scripts/validate-cross-references.js.map +1 -0
- package/dist/scripts/validate-file-ownership.d.ts +68 -0
- package/dist/scripts/validate-file-ownership.d.ts.map +1 -0
- package/dist/scripts/validate-file-ownership.js +135 -0
- package/dist/scripts/validate-file-ownership.js.map +1 -0
- package/dist/scripts/validate-news-translations.d.ts +27 -0
- package/dist/scripts/validate-news-translations.d.ts.map +1 -0
- package/dist/scripts/validate-news-translations.js +258 -0
- package/dist/scripts/validate-news-translations.js.map +1 -0
- package/dist/scripts/validate-translations.d.ts +162 -0
- package/dist/scripts/validate-translations.d.ts.map +1 -0
- package/dist/scripts/validate-translations.js +378 -0
- package/dist/scripts/validate-translations.js.map +1 -0
- package/dist/scripts/workflow-state-coordinator.d.ts +354 -0
- package/dist/scripts/workflow-state-coordinator.d.ts.map +1 -0
- package/dist/scripts/workflow-state-coordinator.js +876 -0
- package/dist/scripts/workflow-state-coordinator.js.map +1 -0
- package/dist/scripts/world-bank-client.d.ts +122 -0
- package/dist/scripts/world-bank-client.d.ts.map +1 -0
- package/dist/scripts/world-bank-client.js +192 -0
- package/dist/scripts/world-bank-client.js.map +1 -0
- package/dist/scripts/world-bank-context.d.ts +88 -0
- package/dist/scripts/world-bank-context.d.ts.map +1 -0
- package/dist/scripts/world-bank-context.js +331 -0
- package/dist/scripts/world-bank-context.js.map +1 -0
- package/package.json +33 -8
- package/dist/lib/chart-factory.d.ts.map +0 -1
- package/dist/lib/chart-factory.js.map +0 -1
- package/dist/lib/data-loader.d.ts.map +0 -1
- package/dist/lib/data-loader.js.map +0 -1
- package/dist/lib/dom-utils.d.ts.map +0 -1
- package/dist/lib/dom-utils.js.map +0 -1
- package/dist/lib/error-boundary.d.ts.map +0 -1
- package/dist/lib/error-boundary.js.map +0 -1
- package/dist/lib/fallback-ui.d.ts.map +0 -1
- package/dist/lib/fallback-ui.js.map +0 -1
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/theme.d.ts.map +0 -1
- package/dist/lib/theme.js.map +0 -1
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js.map +0 -1
- /package/dist/lib/{data-loader.d.ts → shared/data-loader.d.ts} +0 -0
- /package/dist/lib/{data-loader.js → shared/data-loader.js} +0 -0
- /package/dist/lib/{dom-utils.d.ts → shared/dom-utils.d.ts} +0 -0
- /package/dist/lib/{dom-utils.js → shared/dom-utils.js} +0 -0
- /package/dist/lib/{error-boundary.d.ts → shared/error-boundary.d.ts} +0 -0
- /package/dist/lib/{error-boundary.js → shared/error-boundary.js} +0 -0
- /package/dist/lib/{fallback-ui.d.ts → shared/fallback-ui.d.ts} +0 -0
- /package/dist/lib/{fallback-ui.js → shared/fallback-ui.js} +0 -0
- /package/dist/lib/{index.d.ts → shared/index.d.ts} +0 -0
- /package/dist/lib/{index.js → shared/index.js} +0 -0
- /package/dist/lib/{logger.d.ts → shared/logger.d.ts} +0 -0
- /package/dist/lib/{logger.js → shared/logger.js} +0 -0
- /package/dist/lib/{types.d.ts → shared/types.d.ts} +0 -0
- /package/dist/lib/{types.js → shared/types.js} +0 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module article-template/constants
|
|
3
|
+
* @description Localisation lookup tables for article template rendering.
|
|
4
|
+
* Contains breadcrumb, footer, tagline, locale, event calendar, and watch
|
|
5
|
+
* section translations for all 14 supported languages.
|
|
6
|
+
*
|
|
7
|
+
* @author Hack23 AB
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Breadcrumb translations for all supported languages
|
|
12
|
+
*/
|
|
13
|
+
export const BREADCRUMB_TRANSLATIONS = {
|
|
14
|
+
en: { home: 'Home', news: 'News' },
|
|
15
|
+
sv: { home: 'Hem', news: 'Nyheter' },
|
|
16
|
+
da: { home: 'Hjem', news: 'Nyheder' },
|
|
17
|
+
no: { home: 'Hjem', news: 'Nyheter' },
|
|
18
|
+
fi: { home: 'Etusivu', news: 'Uutiset' },
|
|
19
|
+
de: { home: 'Startseite', news: 'Nachrichten' },
|
|
20
|
+
fr: { home: 'Accueil', news: 'Actualités' },
|
|
21
|
+
es: { home: 'Inicio', news: 'Noticias' },
|
|
22
|
+
nl: { home: 'Home', news: 'Nieuws' },
|
|
23
|
+
ar: { home: 'الرئيسية', news: 'أخبار' },
|
|
24
|
+
he: { home: 'בית', news: 'חדשות' },
|
|
25
|
+
ja: { home: 'ホーム', news: 'ニュース' },
|
|
26
|
+
ko: { home: '홈', news: '뉴스' },
|
|
27
|
+
zh: { home: '主页', news: '新闻' }
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Footer label translations for all 14 languages
|
|
31
|
+
*/
|
|
32
|
+
export const FOOTER_LABELS = {
|
|
33
|
+
en: { sourcesTitle: 'Sources and Data', dataSources: 'Data Sources', generatedBy: 'Generated by', generatedByValue: 'Automated News System using riksdag-regering-mcp', analysisTools: 'Analysis Tools', analysisToolsValue: 'AI-assisted journalism with human editorial oversight', backToNews: 'Back to News', skipToContent: 'Skip to main content', themeToDark: 'Switch to dark theme', themeToLight: 'Switch to light theme' },
|
|
34
|
+
sv: { sourcesTitle: 'Källor och data', dataSources: 'Datakällor', generatedBy: 'Genererad av', generatedByValue: 'Automatiserat nyhetssystem med riksdag-regering-mcp', analysisTools: 'Analysverktyg', analysisToolsValue: 'AI-assisterad journalistik med mänsklig granskning', backToNews: 'Tillbaka till nyheter', skipToContent: 'Hoppa till huvudinnehåll', themeToDark: 'Byt till mörkt tema', themeToLight: 'Byt till ljust tema' },
|
|
35
|
+
da: { sourcesTitle: 'Kilder og data', dataSources: 'Datakilder', generatedBy: 'Genereret af', generatedByValue: 'Automatiseret nyhedssystem med riksdag-regering-mcp', analysisTools: 'Analyseværktøjer', analysisToolsValue: 'AI-assisteret journalistik med redaktionel gennemgang', backToNews: 'Tilbage til nyheder', skipToContent: 'Gå til hovedindhold', themeToDark: 'Skift til mørkt tema', themeToLight: 'Skift til lyst tema' },
|
|
36
|
+
no: { sourcesTitle: 'Kilder og data', dataSources: 'Datakilder', generatedBy: 'Generert av', generatedByValue: 'Automatisert nyhetssystem med riksdag-regering-mcp', analysisTools: 'Analyseverktøy', analysisToolsValue: 'AI-assistert journalistikk med redaksjonell gjennomgang', backToNews: 'Tilbake til nyheter', skipToContent: 'Hopp til hovedinnhold', themeToDark: 'Bytt til mørkt tema', themeToLight: 'Bytt til lyst tema' },
|
|
37
|
+
fi: { sourcesTitle: 'Lähteet ja data', dataSources: 'Datalähteet', generatedBy: 'Luonut', generatedByValue: 'Automatisoitu uutisjärjestelmä riksdag-regering-mcp:llä', analysisTools: 'Analyysityökalut', analysisToolsValue: 'Tekoälyavusteinen journalismi toimituksellisella valvonnalla', backToNews: 'Takaisin uutisiin', skipToContent: 'Siirry pääsisältöön', themeToDark: 'Vaihda tummaan teemaan', themeToLight: 'Vaihda vaaleaan teemaan' },
|
|
38
|
+
de: { sourcesTitle: 'Quellen und Daten', dataSources: 'Datenquellen', generatedBy: 'Erstellt von', generatedByValue: 'Automatisiertes Nachrichtensystem mit riksdag-regering-mcp', analysisTools: 'Analysewerkzeuge', analysisToolsValue: 'KI-gestützter Journalismus mit redaktioneller Aufsicht', backToNews: 'Zurück zu Nachrichten', skipToContent: 'Zum Hauptinhalt springen', themeToDark: 'Zum dunklen Design wechseln', themeToLight: 'Zum hellen Design wechseln' },
|
|
39
|
+
fr: { sourcesTitle: 'Sources et données', dataSources: 'Sources de données', generatedBy: 'Généré par', generatedByValue: 'Système automatisé avec riksdag-regering-mcp', analysisTools: 'Outils d\'analyse', analysisToolsValue: 'Journalisme assisté par IA avec supervision rédactionnelle', backToNews: 'Retour aux actualités', skipToContent: 'Aller au contenu principal', themeToDark: 'Basculer vers le thème sombre', themeToLight: 'Basculer vers le thème clair' },
|
|
40
|
+
es: { sourcesTitle: 'Fuentes y datos', dataSources: 'Fuentes de datos', generatedBy: 'Generado por', generatedByValue: 'Sistema automatizado con riksdag-regering-mcp', analysisTools: 'Herramientas de análisis', analysisToolsValue: 'Periodismo asistido por IA con supervisión editorial', backToNews: 'Volver a noticias', skipToContent: 'Saltar al contenido principal', themeToDark: 'Cambiar al tema oscuro', themeToLight: 'Cambiar al tema claro' },
|
|
41
|
+
nl: { sourcesTitle: 'Bronnen en data', dataSources: 'Databronnen', generatedBy: 'Gegenereerd door', generatedByValue: 'Geautomatiseerd nieuwssysteem met riksdag-regering-mcp', analysisTools: 'Analysetools', analysisToolsValue: 'AI-ondersteunde journalistiek met redactioneel toezicht', backToNews: 'Terug naar nieuws', skipToContent: 'Ga naar hoofdinhoud', themeToDark: 'Schakel over naar donkere modus', themeToLight: 'Schakel over naar lichte modus' },
|
|
42
|
+
ar: { sourcesTitle: 'المصادر والبيانات', dataSources: 'مصادر البيانات', generatedBy: 'تم إنشاؤه بواسطة', generatedByValue: 'نظام أخبار آلي مع riksdag-regering-mcp', analysisTools: 'أدوات التحليل', analysisToolsValue: 'صحافة بمساعدة الذكاء الاصطناعي مع إشراف تحريري', backToNews: 'العودة إلى الأخبار', skipToContent: 'الانتقال إلى المحتوى الرئيسي', themeToDark: 'التبديل إلى الوضع الداكن', themeToLight: 'التبديل إلى الوضع الفاتح' },
|
|
43
|
+
he: { sourcesTitle: 'מקורות ונתונים', dataSources: 'מקורות נתונים', generatedBy: 'נוצר על ידי', generatedByValue: 'מערכת חדשות אוטומטית עם riksdag-regering-mcp', analysisTools: 'כלי ניתוח', analysisToolsValue: 'עיתונות בסיוע AI עם פיקוח עריכתי', backToNews: 'חזרה לחדשות', skipToContent: 'דלג לתוכן הראשי', themeToDark: 'עבור למצב כהה', themeToLight: 'עבור למצב בהיר' },
|
|
44
|
+
ja: { sourcesTitle: 'ソースとデータ', dataSources: 'データソース', generatedBy: '生成者', generatedByValue: 'riksdag-regering-mcpによる自動ニュースシステム', analysisTools: '分析ツール', analysisToolsValue: 'AI支援ジャーナリズム(編集監督付き)', backToNews: 'ニュースに戻る', skipToContent: 'メインコンテンツへスキップ', themeToDark: 'ダークテーマに切り替え', themeToLight: 'ライトテーマに切り替え' },
|
|
45
|
+
ko: { sourcesTitle: '출처 및 데이터', dataSources: '데이터 소스', generatedBy: '생성자', generatedByValue: 'riksdag-regering-mcp 자동 뉴스 시스템', analysisTools: '분석 도구', analysisToolsValue: '편집 감독이 있는 AI 지원 저널리즘', backToNews: '뉴스로 돌아가기', skipToContent: '메인 콘텐츠로 건너뛰기', themeToDark: '어두운 테마로 전환', themeToLight: '밝은 테마로 전환' },
|
|
46
|
+
zh: { sourcesTitle: '来源和数据', dataSources: '数据来源', generatedBy: '生成者', generatedByValue: '使用riksdag-regering-mcp的自动新闻系统', analysisTools: '分析工具', analysisToolsValue: '人工编辑监督下的AI辅助新闻', backToNews: '返回新闻', skipToContent: '跳转到主要内容', themeToDark: '切换到深色主题', themeToLight: '切换到浅色主题' }
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Site tagline translations for all 14 languages
|
|
50
|
+
*/
|
|
51
|
+
export const SITE_TAGLINE = {
|
|
52
|
+
en: 'Latest news and analysis from Sweden\'s Riksdag. AI-generated political intelligence based on OSINT/INTOP data covering parliament, government, and agencies with systematic transparency.',
|
|
53
|
+
sv: 'Senaste nyheter och analyser från Sveriges riksdag. AI-genererad politisk underrättelsejournalistik baserad på OSINT/INTOP-data som bevakar riksdagen, regeringen och myndigheter med systematisk transparens.',
|
|
54
|
+
da: 'Seneste nyheder og analyser fra Sveriges Riksdag. AI-genereret politisk efterretningsjournalistik baseret på OSINT/INTOP-data, der dækker parlament, regering og myndigheder med systematisk gennemsigtighed.',
|
|
55
|
+
no: 'Siste nyheter og analyser fra Sveriges riksdag. AI-generert politisk etterretningsjournalistikk basert på OSINT/INTOP-data som dekker parlament, regjering og myndigheter med systematisk åpenhet.',
|
|
56
|
+
fi: 'Uusimmat uutiset ja analyysit Ruotsin valtiopäiviltä. Tekoälyn tuottama poliittinen tiedustelujournalismi OSINT/INTOP-dataan perustuen, joka kattaa eduskunnan, hallituksen ja viranomaiset järjestelmällisellä läpinäkyvyydellä.',
|
|
57
|
+
de: 'Aktuelle Nachrichten und Analysen aus dem schwedischen Riksdag. KI-generierter politischer Nachrichtendienst-Journalismus basierend auf OSINT/INTOP-Daten über Parlament, Regierung und Behörden mit systematischer Transparenz.',
|
|
58
|
+
fr: 'Dernières nouvelles et analyses du Riksdag suédois. Journalisme de renseignement politique généré par IA basé sur des données OSINT/INTOP couvrant le parlement, le gouvernement et les agences avec une transparence systématique.',
|
|
59
|
+
es: 'Últimas noticias y análisis del Riksdag sueco. Periodismo de inteligencia política generado por IA basado en datos OSINT/INTOP que cubre el parlamento, el gobierno y las agencias con transparencia sistemática.',
|
|
60
|
+
nl: 'Laatste nieuws en analyses van de Zweedse Riksdag. AI-gegenereerde politieke inlichtingenjournalistiek gebaseerd op OSINT/INTOP-data over parlement, regering en instanties met systematische transparantie.',
|
|
61
|
+
ar: 'أحدث الأخبار والتحليلات من البرلمان السويدي. صحافة استخبارات سياسية مولّدة بالذكاء الاصطناعي مبنية على بيانات OSINT/INTOP تغطي البرلمان والحكومة والوكالات بشفافية منهجية.',
|
|
62
|
+
he: 'חדשות ניתוחים אחרונים מהריקסדאג השוודי. עיתונות מודיעין פוליטי מבוססת AI ונתוני OSINT/INTOP המכסה פרלמנט, ממשלה וסוכנויות עם שקיפות שיטתית.',
|
|
63
|
+
ja: 'スウェーデン議会リクスダーグの最新ニュースと分析。OSINT/INTOPデータに基づくAI生成の政治インテリジェンスジャーナリズムで、議会、政府、機関を体系的な透明性で報道。',
|
|
64
|
+
ko: '스웨덴 의회 릭스다그의 최신 뉴스와 분석. OSINT/INTOP 데이터 기반 AI 생성 정치 인텔리전스 저널리즘으로 의회, 정부, 기관을 체계적인 투명성으로 보도.',
|
|
65
|
+
zh: '来自瑞典议会的最新新闻和分析。基于OSINT/INTOP数据的AI生成政治情报新闻,以系统性透明度报道议会、政府和机构。'
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* OG locale map for all 14 languages
|
|
69
|
+
*/
|
|
70
|
+
export const OG_LOCALE_MAP = {
|
|
71
|
+
en: 'en_US', sv: 'sv_SE', da: 'da_DK', no: 'nb_NO', fi: 'fi_FI',
|
|
72
|
+
de: 'de_DE', fr: 'fr_FR', es: 'es_ES', nl: 'nl_NL', ar: 'ar_SA',
|
|
73
|
+
he: 'he_IL', ja: 'ja_JP', ko: 'ko_KR', zh: 'zh_CN'
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Article category type labels for all 14 languages
|
|
77
|
+
*/
|
|
78
|
+
export const TYPE_LABELS = {
|
|
79
|
+
en: { prospective: 'The Week Ahead', retrospective: 'Weekly Review', analysis: 'Analysis', breaking: 'Breaking News' },
|
|
80
|
+
sv: { prospective: 'Veckan som kommer', retrospective: 'Veckans återblick', analysis: 'Analys', breaking: 'Senaste nytt' },
|
|
81
|
+
da: { prospective: 'Ugen fremover', retrospective: 'Ugens tilbageblik', analysis: 'Analyse', breaking: 'Seneste nyt' },
|
|
82
|
+
no: { prospective: 'Uka som kommer', retrospective: 'Ukens tilbakeblikk', analysis: 'Analyse', breaking: 'Siste nytt' },
|
|
83
|
+
fi: { prospective: 'Tuleva viikko', retrospective: 'Viikon katsaus', analysis: 'Analyysi', breaking: 'Viimeisimmät' },
|
|
84
|
+
de: { prospective: 'Woche voraus', retrospective: 'Wochenrückblick', analysis: 'Analyse', breaking: 'Eilmeldung' },
|
|
85
|
+
fr: { prospective: 'Semaine à venir', retrospective: 'Revue de la semaine', analysis: 'Analyse', breaking: 'Dernière heure' },
|
|
86
|
+
es: { prospective: 'Semana próxima', retrospective: 'Revisión semanal', analysis: 'Análisis', breaking: 'Última hora' },
|
|
87
|
+
nl: { prospective: 'Week vooruit', retrospective: 'Weekoverzicht', analysis: 'Analyse', breaking: 'Laatste nieuws' },
|
|
88
|
+
ar: { prospective: 'الأسبوع القادم', retrospective: 'مراجعة الأسبوع', analysis: 'تحليل', breaking: 'أخبار عاجلة' },
|
|
89
|
+
he: { prospective: 'השבוע הקרוב', retrospective: 'סיכום שבועי', analysis: 'ניתוח', breaking: 'חדשות אחרונות' },
|
|
90
|
+
ja: { prospective: '来週の展望', retrospective: '週間レビュー', analysis: '分析', breaking: '速報' },
|
|
91
|
+
ko: { prospective: '다음 주 전망', retrospective: '주간 리뷰', analysis: '분석', breaking: '속보' },
|
|
92
|
+
zh: { prospective: '下周展望', retrospective: '每周回顾', analysis: '分析', breaking: '突发新闻' }
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Event calendar section titles for all 14 languages
|
|
96
|
+
*/
|
|
97
|
+
export const EVENT_CALENDAR_TITLES = {
|
|
98
|
+
en: 'Event Calendar',
|
|
99
|
+
sv: 'Veckans händelser',
|
|
100
|
+
da: 'Ugens begivenheder',
|
|
101
|
+
no: 'Ukens hendelser',
|
|
102
|
+
fi: 'Viikon tapahtumat',
|
|
103
|
+
de: 'Veranstaltungskalender',
|
|
104
|
+
fr: 'Calendrier des événements',
|
|
105
|
+
es: 'Calendario de eventos',
|
|
106
|
+
nl: 'Evenementenkalender',
|
|
107
|
+
ar: 'تقويم الأحداث',
|
|
108
|
+
he: 'לוח אירועים',
|
|
109
|
+
ja: 'イベントカレンダー',
|
|
110
|
+
ko: '일정 캘린더',
|
|
111
|
+
zh: '活动日历'
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Watch section titles for all 14 languages
|
|
115
|
+
*/
|
|
116
|
+
export const WATCH_SECTION_TITLES = {
|
|
117
|
+
en: 'What to Watch This Week',
|
|
118
|
+
sv: 'Vad man ska följa denna vecka',
|
|
119
|
+
da: 'Hvad man skal følge denne uge',
|
|
120
|
+
no: 'Hva man bør følge denne uken',
|
|
121
|
+
fi: 'Mitä seurata tällä viikolla',
|
|
122
|
+
de: 'Worauf diese Woche zu achten ist',
|
|
123
|
+
fr: 'À suivre cette semaine',
|
|
124
|
+
es: 'Qué observar esta semana',
|
|
125
|
+
nl: 'Wat te volgen deze week',
|
|
126
|
+
ar: 'ما يجب متابعته هذا الأسبوع',
|
|
127
|
+
he: 'מה לעקוב אחריו השבוע',
|
|
128
|
+
ja: '今週の注目ポイント',
|
|
129
|
+
ko: '이번 주 주목할 사항',
|
|
130
|
+
zh: '本周关注要点'
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Locale map for Intl date formatting across all 14 languages
|
|
134
|
+
*/
|
|
135
|
+
export const LOCALE_MAP = {
|
|
136
|
+
en: 'en-GB', sv: 'sv-SE', da: 'da-DK', no: 'no-NO', fi: 'fi-FI',
|
|
137
|
+
de: 'de-DE', fr: 'fr-FR', es: 'es-ES', nl: 'nl-NL', ar: 'ar-SA',
|
|
138
|
+
he: 'he-IL', ja: 'ja-JP', ko: 'ko-KR', zh: 'zh-CN'
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Language display names with flag emojis for all 14 languages.
|
|
142
|
+
* Used by the article language switcher nav.
|
|
143
|
+
*/
|
|
144
|
+
export const LANG_DISPLAY = {
|
|
145
|
+
en: { flag: '🇬🇧', name: 'English' },
|
|
146
|
+
sv: { flag: '🇸🇪', name: 'Svenska' },
|
|
147
|
+
da: { flag: '🇩🇰', name: 'Dansk' },
|
|
148
|
+
no: { flag: '🇳🇴', name: 'Norsk' },
|
|
149
|
+
fi: { flag: '🇫🇮', name: 'Suomi' },
|
|
150
|
+
de: { flag: '🇩🇪', name: 'Deutsch' },
|
|
151
|
+
fr: { flag: '🇫🇷', name: 'Français' },
|
|
152
|
+
es: { flag: '🇪🇸', name: 'Español' },
|
|
153
|
+
nl: { flag: '🇳🇱', name: 'Nederlands' },
|
|
154
|
+
ar: { flag: '🇸🇦', name: 'العربية' },
|
|
155
|
+
he: { flag: '🇮🇱', name: 'עברית' },
|
|
156
|
+
ja: { flag: '🇯🇵', name: '日本語' },
|
|
157
|
+
ko: { flag: '🇰🇷', name: '한국어' },
|
|
158
|
+
zh: { flag: '🇨🇳', name: '中文' }
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* All 14 supported language codes in display order.
|
|
162
|
+
* Single source of truth — derived from LANG_DISPLAY keys.
|
|
163
|
+
*/
|
|
164
|
+
export const ALL_LANG_CODES = Object.keys(LANG_DISPLAY);
|
|
165
|
+
/**
|
|
166
|
+
* Localized aria-label for the language switcher nav element.
|
|
167
|
+
* Used on the `<nav>` wrapping article language links so screen readers
|
|
168
|
+
* announce the landmark in the page's own language.
|
|
169
|
+
*/
|
|
170
|
+
export const LANG_SWITCHER_ARIA_LABELS = {
|
|
171
|
+
en: 'Language versions',
|
|
172
|
+
sv: 'Språkversioner',
|
|
173
|
+
da: 'Sprogversioner',
|
|
174
|
+
no: 'Språkversjoner',
|
|
175
|
+
fi: 'Kieliversiot',
|
|
176
|
+
de: 'Sprachversionen',
|
|
177
|
+
fr: 'Versions linguistiques',
|
|
178
|
+
es: 'Versiones de idioma',
|
|
179
|
+
nl: 'Taalversies',
|
|
180
|
+
ar: 'إصدارات اللغة',
|
|
181
|
+
he: 'גרסאות שפה',
|
|
182
|
+
ja: '言語バージョン',
|
|
183
|
+
ko: '언어 버전',
|
|
184
|
+
zh: '语言版本'
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Localized aria-label text for language grid links in the footer.
|
|
188
|
+
* Matches the pattern used in index.html (e.g. "Switch to English", "Byt till Svenska").
|
|
189
|
+
*/
|
|
190
|
+
export const LANG_ARIA_LABELS = {
|
|
191
|
+
en: 'Switch to English',
|
|
192
|
+
sv: 'Byt till Svenska',
|
|
193
|
+
da: 'Skift til Dansk',
|
|
194
|
+
no: 'Bytt til Norsk',
|
|
195
|
+
fi: 'Vaihda Suomeksi',
|
|
196
|
+
de: 'Wechseln zu Deutsch',
|
|
197
|
+
fr: 'Passer au Français',
|
|
198
|
+
es: 'Cambiar a Español',
|
|
199
|
+
nl: 'Schakel naar Nederlands',
|
|
200
|
+
ar: 'التبديل إلى العربية',
|
|
201
|
+
he: 'עבור לעברית',
|
|
202
|
+
ja: '日本語に切り替え',
|
|
203
|
+
ko: '한국어로 전환',
|
|
204
|
+
zh: '切换到中文'
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Site footer section heading translations for all 14 languages
|
|
208
|
+
*/
|
|
209
|
+
export const SITE_FOOTER_LABELS = {
|
|
210
|
+
en: { about: 'About Riksdagsmonitor', aboutText: 'Live intelligence platform for Swedish Parliament monitoring using CIA OSINT capabilities.', quickLinks: 'Quick Links', home: 'Home', news: 'News', ciaplatform: 'CIA Platform', companyLinkedin: 'Company LinkedIn', publicIsms: 'Public ISMS', securityPolicy: 'Security Policy', privacyPolicy: 'Privacy Policy', contactUs: 'Contact Us', builtBy: 'Built by Hack23 AB', builtByText: 'Swedish cybersecurity consultancy specializing in political transparency and open-source intelligence.', languages: 'Languages', dashboard: 'Dashboard', location: 'Gothenburg, Sweden', statMPs: '<strong>349 MPs</strong> tracked', statRiskRules: '<strong>45 risk rules</strong> active', statLanguages: '<strong>14 languages</strong> supported', statHistoricalData: '<strong>50+ years</strong> historical data', disclaimer: 'Ongoing improvements \u2014 please', disclaimerLink: 'report any issues on GitHub' },
|
|
211
|
+
sv: { about: 'Om Riksdagsmonitor', aboutText: 'Plattform för övervakning av Sveriges riksdag med CIA OSINT-kapacitet.', quickLinks: 'Snabblänkar', home: 'Hem', news: 'Nyheter', ciaplatform: 'CIA-plattformen', companyLinkedin: 'Företagets LinkedIn', publicIsms: 'Publik ISMS', securityPolicy: 'Säkerhetspolicy', privacyPolicy: 'Integritetspolicy', contactUs: 'Kontakta oss', builtBy: 'Byggd av Hack23 AB', builtByText: 'Svenskt cybersäkerhetsföretag specialiserat på politisk transparens och öppen källkodsintelligens.', languages: 'Språk', dashboard: 'Instrumentpanel', location: 'Göteborg, Sverige', statMPs: '<strong>349 ledamöter</strong> övervakade', statRiskRules: '<strong>45 riskregler</strong> aktiva', statLanguages: '<strong>14 språk</strong> stöds', statHistoricalData: '<strong>50+ år</strong> historisk data', disclaimer: 'P\u00e5g\u00e5ende f\u00f6rb\u00e4ttringar \u2014 v\u00e4nligen', disclaimerLink: 'rapportera eventuella problem p\u00e5 GitHub' },
|
|
212
|
+
da: { about: 'Om Riksdagsmonitor', aboutText: 'Platform til overvågning af det svenske parlament med CIA OSINT-kapacitet.', quickLinks: 'Hurtige links', home: 'Hjem', news: 'Nyheder', ciaplatform: 'CIA-platformen', companyLinkedin: 'Virksomhedens LinkedIn', publicIsms: 'Offentlig ISMS', securityPolicy: 'Sikkerhedspolitik', privacyPolicy: 'Privatlivspolitik', contactUs: 'Kontakt os', builtBy: 'Bygget af Hack23 AB', builtByText: 'Svensk cybersikkerhedskonsulentfirma specialiseret i politisk gennemsigtighed.', languages: 'Sprog', dashboard: 'Dashboard', location: 'Göteborg, Sverige', statMPs: '<strong>349 medlemmer</strong> overvåget', statRiskRules: '<strong>45 risikoregler</strong> aktive', statLanguages: '<strong>14 sprog</strong> understøttet', statHistoricalData: '<strong>50+ år</strong> historiske data', disclaimer: 'L\u00f8bende forbedringer \u2014 venligst', disclaimerLink: 'rapporter eventuelle problemer p\u00e5 GitHub' },
|
|
213
|
+
no: { about: 'Om Riksdagsmonitor', aboutText: 'Plattform for overvåking av det svenske parlamentet med CIA OSINT-kapasitet.', quickLinks: 'Hurtiglenker', home: 'Hjem', news: 'Nyheter', ciaplatform: 'CIA-plattformen', companyLinkedin: 'Selskapets LinkedIn', publicIsms: 'Offentlig ISMS', securityPolicy: 'Sikkerhetspolicy', privacyPolicy: 'Personvernpolicy', contactUs: 'Kontakt oss', builtBy: 'Bygget av Hack23 AB', builtByText: 'Svensk cybersikkerhetskonsulentfirma spesialisert på politisk åpenhet.', languages: 'Språk', dashboard: 'Dashbord', location: 'Göteborg, Sverige', statMPs: '<strong>349 representanter</strong> fulgt', statRiskRules: '<strong>45 risikoregler</strong> aktive', statLanguages: '<strong>14 språk</strong> støttes', statHistoricalData: '<strong>50+ år</strong> med historiske data', disclaimer: 'P\u00e5g\u00e5ende forbedringer \u2014 vennligst', disclaimerLink: 'rapporter eventuelle problemer p\u00e5 GitHub' },
|
|
214
|
+
fi: { about: 'Tietoa Riksdagsmonitorista', aboutText: 'Ruotsin valtiopäivien seurantaalusta CIA OSINT -kyvyillä.', quickLinks: 'Pikalinkit', home: 'Etusivu', news: 'Uutiset', ciaplatform: 'CIA Platform', companyLinkedin: 'Yrityksen LinkedIn', publicIsms: 'Julkinen ISMS', securityPolicy: 'Tietoturvakäytäntö', privacyPolicy: 'Tietosuojakäytäntö', contactUs: 'Ota yhteyttä', builtBy: 'Tekijä: Hack23 AB', builtByText: 'Ruotsalainen kyberturvallisuuskonsultointi erikoistunut poliittiseen läpinäkyvyyteen.', languages: 'Kielet', dashboard: 'Koontinäyttö', location: 'Göteborg, Ruotsi', statMPs: '<strong>349 kansanedustajaa</strong> seurannassa', statRiskRules: '<strong>45 riskisääntöä</strong> aktiivisena', statLanguages: '<strong>14 kieltä</strong> tuettuna', statHistoricalData: '<strong>Yli 50 vuotta</strong> historiallista dataa', disclaimer: 'Jatkuvia parannuksia \u2014 ole hyv\u00e4 ja', disclaimerLink: 'ilmoita mahdollisista ongelmista GitHubissa' },
|
|
215
|
+
de: { about: 'Über Riksdagsmonitor', aboutText: 'Plattform zur Überwachung des schwedischen Parlaments mit CIA OSINT-Fähigkeiten.', quickLinks: 'Schnelllinks', home: 'Startseite', news: 'Nachrichten', ciaplatform: 'CIA-Plattform', companyLinkedin: 'Unternehmens-LinkedIn', publicIsms: 'Öffentliches ISMS', securityPolicy: 'Sicherheitsrichtlinie', privacyPolicy: 'Datenschutzrichtlinie', contactUs: 'Kontakt', builtBy: 'Erstellt von Hack23 AB', builtByText: 'Schwedische Cybersicherheitsberatung für politische Transparenz.', languages: 'Sprachen', dashboard: 'Dashboard', location: 'Göteborg, Schweden', statMPs: '<strong>349 Abgeordnete</strong> überwacht', statRiskRules: '<strong>45 Risikoregeln</strong> aktiv', statLanguages: '<strong>14 Sprachen</strong> unterstützt', statHistoricalData: '<strong>50+ Jahre</strong> historische Daten', disclaimer: 'Laufende Verbesserungen \u2014 bitte', disclaimerLink: 'melden Sie Probleme auf GitHub' },
|
|
216
|
+
fr: { about: 'À propos de Riksdagsmonitor', aboutText: 'Plateforme de surveillance du Parlement suédois avec capacités CIA OSINT.', quickLinks: 'Liens rapides', home: 'Accueil', news: 'Actualités', ciaplatform: 'CIA Platform', companyLinkedin: "LinkedIn de l'entreprise", publicIsms: 'ISMS public', securityPolicy: 'Politique de sécurité', privacyPolicy: 'Politique de confidentialité', contactUs: 'Nous contacter', builtBy: 'Créé par Hack23 AB', builtByText: 'Conseil suédois en cybersécurité spécialisé dans la transparence politique.', languages: 'Langues', dashboard: 'Tableau de bord', location: 'Göteborg, Suède', statMPs: '<strong>349 députés</strong> suivis', statRiskRules: '<strong>45 règles de risque</strong> actives', statLanguages: '<strong>14 langues</strong> prises en charge', statHistoricalData: '<strong>50+ ans</strong> de données historiques', disclaimer: 'Am\u00e9liorations en cours \u2014 veuillez', disclaimerLink: 'signaler tout probl\u00e8me sur GitHub' },
|
|
217
|
+
es: { about: 'Acerca de Riksdagsmonitor', aboutText: 'Plataforma de monitoreo del Parlamento sueco con capacidades CIA OSINT.', quickLinks: 'Enlaces rápidos', home: 'Inicio', news: 'Noticias', ciaplatform: 'Plataforma CIA', companyLinkedin: 'LinkedIn de la empresa', publicIsms: 'ISMS público', securityPolicy: 'Política de seguridad', privacyPolicy: 'Política de privacidad', contactUs: 'Contáctenos', builtBy: 'Creado por Hack23 AB', builtByText: 'Consultoría sueca de ciberseguridad especializada en transparencia política.', languages: 'Idiomas', dashboard: 'Panel', location: 'Gotemburgo, Suecia', statMPs: '<strong>349 diputados</strong> rastreados', statRiskRules: '<strong>45 reglas de riesgo</strong> activas', statLanguages: '<strong>14 idiomas</strong> admitidos', statHistoricalData: '<strong>Más de 50 años</strong> de datos históricos', disclaimer: 'Mejoras en curso \u2014 por favor', disclaimerLink: 'reporte cualquier problema en GitHub' },
|
|
218
|
+
nl: { about: 'Over Riksdagsmonitor', aboutText: 'Platform voor monitoring van het Zweedse parlement met CIA OSINT-capaciteiten.', quickLinks: 'Snelkoppelingen', home: 'Start', news: 'Nieuws', ciaplatform: 'CIA Platform', companyLinkedin: 'Bedrijfs-LinkedIn', publicIsms: 'Openbaar ISMS', securityPolicy: 'Beveiligingsbeleid', privacyPolicy: 'Privacybeleid', contactUs: 'Contact opnemen', builtBy: 'Gebouwd door Hack23 AB', builtByText: 'Zweeds cybersecurity-adviesbureau gespecialiseerd in politieke transparantie.', languages: 'Talen', dashboard: 'Dashboard', location: 'Göteborg, Zweden', statMPs: '<strong>349 parlementariërs</strong> gevolgd', statRiskRules: '<strong>45 risicoregels</strong> actief', statLanguages: '<strong>14 talen</strong> ondersteund', statHistoricalData: '<strong>50+ jaar</strong> historische data', disclaimer: 'Doorlopende verbeteringen \u2014 gelieve', disclaimerLink: 'eventuele problemen te melden op GitHub' },
|
|
219
|
+
ar: { about: 'حول Riksdagsmonitor', aboutText: 'منصة لمراقبة البرلمان السويدي باستخدام قدرات CIA OSINT.', quickLinks: 'روابط سريعة', home: 'الرئيسية', news: 'الأخبار', ciaplatform: 'منصة CIA', companyLinkedin: 'لينكدإن الشركة', publicIsms: 'ISMS العام', securityPolicy: 'سياسة الأمن', privacyPolicy: 'سياسة الخصوصية', contactUs: 'تواصل معنا', builtBy: 'بواسطة Hack23 AB', builtByText: 'شركة استشارات أمن سيبراني سويدية متخصصة في الشفافية السياسية.', languages: 'اللغات', dashboard: 'لوحة التحكم', location: 'غوتنبرغ، السويد', statMPs: 'تتبّع <strong>349 نائباً</strong>', statRiskRules: '<strong>45 قاعدة مخاطر</strong> نشطة', statLanguages: 'دعم <strong>14 لغة</strong>', statHistoricalData: 'بيانات تاريخية لأكثر من <strong>50 عاماً</strong>', disclaimer: '\u062a\u062d\u0633\u064a\u0646\u0627\u062a \u0645\u0633\u062a\u0645\u0631\u0629 \u2014 \u064a\u0631\u062c\u0649', disclaimerLink: '\u0627\u0644\u0625\u0628\u0644\u0627\u063a \u0639\u0646 \u0623\u064a \u0645\u0634\u0627\u0643\u0644 \u0639\u0644\u0649 GitHub' },
|
|
220
|
+
he: { about: 'אודות Riksdagsmonitor', aboutText: 'פלטפורמה לניטור הפרלמנט השוודי עם יכולות CIA OSINT.', quickLinks: 'קישורים מהירים', home: 'בית', news: 'חדשות', ciaplatform: 'פלטפורמת CIA', companyLinkedin: 'לינקדאין החברה', publicIsms: 'ISMS ציבורי', securityPolicy: 'מדיניות אבטחה', privacyPolicy: 'מדיניות פרטיות', contactUs: 'צור קשר', builtBy: 'נבנה על ידי Hack23 AB', builtByText: 'חברת ייעוץ אבטחת סייבר שוודית המתמחה בשקיפות פוליטית.', languages: 'שפות', dashboard: 'לוח מחוונים', location: 'גטבורג, שוודיה', statMPs: '<strong>349 חברי פרלמנט</strong> במעקב', statRiskRules: '<strong>45 כללי סיכון</strong> פעילים', statLanguages: '<strong>14 שפות</strong> נתמכות', statHistoricalData: '<strong>50+ שנים</strong> של נתונים היסטוריים', disclaimer: '\u05e9\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd \u05de\u05ea\u05de\u05e9\u05db\u05d9\u05dd \u2014 \u05e0\u05d0', disclaimerLink: '\u05dc\u05d3\u05d5\u05d5\u05d7 \u05e2\u05dc \u05d1\u05e2\u05d9\u05d5\u05ea \u05d1-GitHub' },
|
|
221
|
+
ja: { about: 'Riksdagsmonitorについて', aboutText: 'CIA OSINT機能によるスウェーデン議会監視プラットフォーム。', quickLinks: 'クイックリンク', home: 'ホーム', news: 'ニュース', ciaplatform: 'CIA プラットフォーム', companyLinkedin: '企業LinkedIn', publicIsms: '公開ISMS', securityPolicy: 'セキュリティポリシー', privacyPolicy: 'プライバシーポリシー', contactUs: 'お問い合わせ', builtBy: 'Hack23 AB 製', builtByText: '政治的透明性を専門とするスウェーデンのサイバーセキュリティコンサルタント。', languages: '言語', dashboard: 'ダッシュボード', location: 'ヨーテボリ(スウェーデン)', statMPs: '<strong>349名の議員</strong>を追跡', statRiskRules: '<strong>45のリスクルール</strong>を運用', statLanguages: '<strong>14言語</strong>をサポート', statHistoricalData: '<strong>50年以上</strong>の履歴データ', disclaimer: '\u7d99\u7d9a\u7684\u306a\u6539\u5584\u3092\u884c\u3063\u3066\u3044\u307e\u3059 \u2014', disclaimerLink: '\u554f\u984c\u304c\u3042\u308c\u3070GitHub\u3067\u5831\u544a\u3057\u3066\u304f\u3060\u3055\u3044' },
|
|
222
|
+
ko: { about: 'Riksdagsmonitor 소개', aboutText: 'CIA OSINT 기능을 활용한 스웨덴 의회 모니터링 플랫폼.', quickLinks: '빠른 링크', home: '홈', news: '뉴스', ciaplatform: 'CIA 플랫폼', companyLinkedin: '회사 LinkedIn', publicIsms: '공개 ISMS', securityPolicy: '보안 정책', privacyPolicy: '개인정보 보호정책', contactUs: '문의하기', builtBy: 'Hack23 AB 제작', builtByText: '정치적 투명성을 전문으로 하는 스웨덴 사이버 보안 컨설팅.', languages: '언어', dashboard: '대시보드', location: '스웨덴 예테보리', statMPs: '<strong>349명 의원</strong> 추적', statRiskRules: '<strong>45개 위험 규칙</strong> 운영', statLanguages: '<strong>14개 언어</strong> 지원', statHistoricalData: '<strong>50년+</strong> 역사 데이터', disclaimer: '\uc9c0\uc18d\uc801\uc73c\ub85c \uac1c\uc120 \uc911\uc785\ub2c8\ub2e4 \u2014', disclaimerLink: '\ubb38\uc81c\uac00 \uc788\uc73c\uba74 GitHub\uc5d0 \ubcf4\uace0\ud574\uc8fc\uc138\uc694' },
|
|
223
|
+
zh: { about: '关于Riksdagsmonitor', aboutText: '利用CIA OSINT能力监测瑞典议会的平台。', quickLinks: '快速链接', home: '首页', news: '新闻', ciaplatform: 'CIA 平台', companyLinkedin: '公司 LinkedIn', publicIsms: '公开 ISMS', securityPolicy: '安全政策', privacyPolicy: '隐私政策', contactUs: '联系我们', builtBy: 'Hack23 AB 构建', builtByText: '专注于政治透明度的瑞典网络安全咨询公司。', languages: '语言', dashboard: '仪表板', location: '瑞典哥德堡', statMPs: '已追踪 <strong>349 名议员</strong>', statRiskRules: '已启用 <strong>45 条风险规则</strong>', statLanguages: '支持 <strong>14 种语言</strong>', statHistoricalData: '覆盖 <strong>50+ 年</strong>历史数据', disclaimer: '\u6301\u7eed\u6539\u8fdb\u4e2d\u2014\u2014\u8bf7', disclaimerLink: '\u5728 GitHub \u4e0a\u62a5\u544a\u4efb\u4f55\u95ee\u9898' }
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../scripts/article-template/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module article-template/helpers
|
|
3
|
+
* @description Formatting, sanitisation, and HTML section generators
|
|
4
|
+
* for article templates. Includes date formatting, event calendar grid,
|
|
5
|
+
* and watch section rendering.
|
|
6
|
+
*
|
|
7
|
+
* @author Hack23 AB
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*/
|
|
10
|
+
import type { Language } from '../types/language.js';
|
|
11
|
+
import type { EventGridItem, WatchPoint } from '../types/article.js';
|
|
12
|
+
import type { BreadcrumbLabels, FooterLabelSet } from '../types/content.js';
|
|
13
|
+
/**
|
|
14
|
+
* Map a language code to its BCP-47 hreflang value.
|
|
15
|
+
* Norwegian files use the filename suffix 'no' but must be advertised as 'nb' (Bokmål) per BCP-47.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hreflangCode(lang: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Get breadcrumb name for a given language
|
|
20
|
+
*/
|
|
21
|
+
export declare function getBreadcrumbName(lang: Language | string, type: keyof BreadcrumbLabels): string;
|
|
22
|
+
/**
|
|
23
|
+
* Get footer label for a given language
|
|
24
|
+
*/
|
|
25
|
+
export declare function getFooterLabel(lang: Language | string, key: keyof FooterLabelSet): string;
|
|
26
|
+
/**
|
|
27
|
+
* Get the news index filename for a language (en → index.html, others → index_{lang}.html)
|
|
28
|
+
*/
|
|
29
|
+
export declare function getNewsIndexFilename(lang: Language | string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Remove orphaned `</p>` tags that appear immediately after `</ul>` or `</ol>`.
|
|
32
|
+
* Browsers auto-close `<p>` before block-level list elements, so AI-generated
|
|
33
|
+
* markup of the form `<p>intro</p><ul>…</ul></p>` leaves a dangling `</p>`.
|
|
34
|
+
* This function removes only that specific trailing `</p>` and does not attempt
|
|
35
|
+
* any other HTML repair.
|
|
36
|
+
*/
|
|
37
|
+
export declare function fixHtmlNesting(htmlContent: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Sanitize article body content for JSON-LD structured data.
|
|
40
|
+
* Removes newlines and normalizes whitespace to prevent invalid JSON.
|
|
41
|
+
* Callers should apply {@link fixHtmlNesting} to the raw HTML *before*
|
|
42
|
+
* escaping and passing it here, so the regex has a chance to match.
|
|
43
|
+
*/
|
|
44
|
+
export declare function sanitizeArticleBody(htmlContent: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Format date for display using locale-appropriate formatting
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatDate(date: Date, lang?: Language | string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Format date range for event calendar title
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatDateRange(events: ReadonlyArray<EventGridItem>, lang?: Language | string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Generate event calendar HTML section
|
|
55
|
+
*/
|
|
56
|
+
export declare function generateEventCalendar(events: ReadonlyArray<EventGridItem>, lang?: Language): string;
|
|
57
|
+
/**
|
|
58
|
+
* Generate "Watch Section" with key points.
|
|
59
|
+
*
|
|
60
|
+
* `WatchPoint.title` and `.description` are expected to be **pre-escaped HTML**
|
|
61
|
+
* (or trusted HTML containing translation markers such as `svSpan()`).
|
|
62
|
+
* Upstream producers (`extractWatchPoints()`) already call `escapeHtml()` and
|
|
63
|
+
* may inject `<span data-translate>` markers. AI-pipeline watch points are
|
|
64
|
+
* plain text and must be escaped at the *call site* before passing them here
|
|
65
|
+
* — see `generators.ts` deep-inspection path.
|
|
66
|
+
*/
|
|
67
|
+
export declare function generateWatchSection(watchPoints: ReadonlyArray<WatchPoint>, lang?: Language): string;
|
|
68
|
+
/**
|
|
69
|
+
* Generate the article language switcher navigation bar.
|
|
70
|
+
*
|
|
71
|
+
* @param baseSlug - The article base slug without language suffix (e.g. "2026-02-13-evening-analysis")
|
|
72
|
+
* @param currentLang - The current article language
|
|
73
|
+
* @returns HTML nav element string
|
|
74
|
+
*/
|
|
75
|
+
export declare function generateArticleLanguageSwitcher(baseSlug: string, currentLang: Language | string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Generate the full site footer matching index.html structure.
|
|
78
|
+
*
|
|
79
|
+
* @param lang - The current language
|
|
80
|
+
* @returns HTML footer element string
|
|
81
|
+
*/
|
|
82
|
+
export declare function generateSiteFooter(lang: Language | string): string;
|
|
83
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../scripts/article-template/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgB5E;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,GAAG,MAAM,CAE/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,cAAc,GAAG,MAAM,CAEzF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAGpE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,QAAQ,GAAG,MAAa,GAAG,MAAM,CAQ7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,GAAE,QAAQ,GAAG,MAAa,GAAG,MAAM,CAsB5G;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,GAAE,QAAe,GAAG,MAAM,CAsBzG;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,IAAI,GAAE,QAAe,GAAG,MAAM,CAY1G;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CASxG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAgElE"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module article-template/helpers
|
|
3
|
+
* @description Formatting, sanitisation, and HTML section generators
|
|
4
|
+
* for article templates. Includes date formatting, event calendar grid,
|
|
5
|
+
* and watch section rendering.
|
|
6
|
+
*
|
|
7
|
+
* @author Hack23 AB
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { BREADCRUMB_TRANSLATIONS, FOOTER_LABELS, EVENT_CALENDAR_TITLES, WATCH_SECTION_TITLES, LOCALE_MAP, LANG_DISPLAY, SITE_FOOTER_LABELS, ALL_LANG_CODES, LANG_ARIA_LABELS, LANG_SWITCHER_ARIA_LABELS, } from './constants.js';
|
|
11
|
+
import { PKG_VERSION } from '../shared/version.js';
|
|
12
|
+
import { escapeHtml } from '../html-utils.js';
|
|
13
|
+
/**
|
|
14
|
+
* Map a language code to its BCP-47 hreflang value.
|
|
15
|
+
* Norwegian files use the filename suffix 'no' but must be advertised as 'nb' (Bokmål) per BCP-47.
|
|
16
|
+
*/
|
|
17
|
+
export function hreflangCode(lang) {
|
|
18
|
+
return lang === 'no' ? 'nb' : lang;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get breadcrumb name for a given language
|
|
22
|
+
*/
|
|
23
|
+
export function getBreadcrumbName(lang, type) {
|
|
24
|
+
return BREADCRUMB_TRANSLATIONS[lang]?.[type] || BREADCRUMB_TRANSLATIONS.en[type];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get footer label for a given language
|
|
28
|
+
*/
|
|
29
|
+
export function getFooterLabel(lang, key) {
|
|
30
|
+
return FOOTER_LABELS[lang]?.[key] || FOOTER_LABELS.en[key];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the news index filename for a language (en → index.html, others → index_{lang}.html)
|
|
34
|
+
*/
|
|
35
|
+
export function getNewsIndexFilename(lang) {
|
|
36
|
+
if (lang === 'en')
|
|
37
|
+
return 'index.html';
|
|
38
|
+
return `index_${lang}.html`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Remove orphaned `</p>` tags that appear immediately after `</ul>` or `</ol>`.
|
|
42
|
+
* Browsers auto-close `<p>` before block-level list elements, so AI-generated
|
|
43
|
+
* markup of the form `<p>intro</p><ul>…</ul></p>` leaves a dangling `</p>`.
|
|
44
|
+
* This function removes only that specific trailing `</p>` and does not attempt
|
|
45
|
+
* any other HTML repair.
|
|
46
|
+
*/
|
|
47
|
+
export function fixHtmlNesting(htmlContent) {
|
|
48
|
+
return htmlContent.replace(/<\/(ul|ol)>\s*<\/p>/g, '</$1>');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Sanitize article body content for JSON-LD structured data.
|
|
52
|
+
* Removes newlines and normalizes whitespace to prevent invalid JSON.
|
|
53
|
+
* Callers should apply {@link fixHtmlNesting} to the raw HTML *before*
|
|
54
|
+
* escaping and passing it here, so the regex has a chance to match.
|
|
55
|
+
*/
|
|
56
|
+
export function sanitizeArticleBody(htmlContent) {
|
|
57
|
+
return htmlContent
|
|
58
|
+
.substring(0, 500)
|
|
59
|
+
.replace(/\n/g, ' ')
|
|
60
|
+
.replace(/\s+/g, ' ')
|
|
61
|
+
.trim();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Format date for display using locale-appropriate formatting
|
|
65
|
+
*/
|
|
66
|
+
export function formatDate(date, lang = 'en') {
|
|
67
|
+
const locale = LOCALE_MAP[lang] || 'en-GB';
|
|
68
|
+
const options = { year: 'numeric', month: 'long', day: 'numeric' };
|
|
69
|
+
try {
|
|
70
|
+
return date.toLocaleDateString(locale, options);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return date.toLocaleDateString('en-GB', options);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Format date range for event calendar title
|
|
78
|
+
*/
|
|
79
|
+
export function formatDateRange(events, lang = 'en') {
|
|
80
|
+
if (events.length === 0)
|
|
81
|
+
return '';
|
|
82
|
+
const firstEvent = events[0];
|
|
83
|
+
const lastEvent = events[events.length - 1];
|
|
84
|
+
if (!firstEvent || !lastEvent)
|
|
85
|
+
return '';
|
|
86
|
+
if (!firstEvent.date || !lastEvent.date)
|
|
87
|
+
return '';
|
|
88
|
+
const locale = LOCALE_MAP[lang] || 'en-GB';
|
|
89
|
+
const longOptions = { month: 'long', day: 'numeric', year: 'numeric' };
|
|
90
|
+
const shortOptions = { month: 'long', day: 'numeric' };
|
|
91
|
+
try {
|
|
92
|
+
const startDate = new Date(firstEvent.date).toLocaleDateString(locale, longOptions);
|
|
93
|
+
const endDate = new Date(lastEvent.date).toLocaleDateString(locale, shortOptions);
|
|
94
|
+
return `${startDate} – ${endDate}`;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
const startDate = new Date(firstEvent.date).toLocaleDateString('en-GB', longOptions);
|
|
98
|
+
const endDate = new Date(lastEvent.date).toLocaleDateString('en-GB', shortOptions);
|
|
99
|
+
return `${startDate} – ${endDate}`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Generate event calendar HTML section
|
|
104
|
+
*/
|
|
105
|
+
export function generateEventCalendar(events, lang = 'en') {
|
|
106
|
+
const title = EVENT_CALENDAR_TITLES[lang] || EVENT_CALENDAR_TITLES.en;
|
|
107
|
+
const firstEvt = events[0];
|
|
108
|
+
const weekLabel = events.length > 0 && firstEvt?.date ?
|
|
109
|
+
`${formatDateRange(events, lang)}` : '';
|
|
110
|
+
return `
|
|
111
|
+
<section class="event-calendar" aria-label="${title}">
|
|
112
|
+
<h2>${title}${weekLabel ? `: ${weekLabel}` : ''}</h2>
|
|
113
|
+
<div class="calendar-grid">
|
|
114
|
+
${events.map(event => ` <div class="calendar-day${event.isToday ? ' today' : ''}" aria-label="${event.dayLabel}">
|
|
115
|
+
<div class="day-header">${event.dayName}</div>
|
|
116
|
+
<span class="day-date">${event.dayNumber}</span>
|
|
117
|
+
<ul class="event-list">
|
|
118
|
+
${event.items.map(item => ` <li class="event-item">
|
|
119
|
+
<span class="event-time">${item.time}</span>
|
|
120
|
+
<span class="event-title">${item.title}</span>
|
|
121
|
+
</li>`).join('\n')}
|
|
122
|
+
</ul>
|
|
123
|
+
</div>`).join('\n')}
|
|
124
|
+
</div>
|
|
125
|
+
</section>`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Generate "Watch Section" with key points.
|
|
129
|
+
*
|
|
130
|
+
* `WatchPoint.title` and `.description` are expected to be **pre-escaped HTML**
|
|
131
|
+
* (or trusted HTML containing translation markers such as `svSpan()`).
|
|
132
|
+
* Upstream producers (`extractWatchPoints()`) already call `escapeHtml()` and
|
|
133
|
+
* may inject `<span data-translate>` markers. AI-pipeline watch points are
|
|
134
|
+
* plain text and must be escaped at the *call site* before passing them here
|
|
135
|
+
* — see `generators.ts` deep-inspection path.
|
|
136
|
+
*/
|
|
137
|
+
export function generateWatchSection(watchPoints, lang = 'en') {
|
|
138
|
+
const title = WATCH_SECTION_TITLES[lang] || WATCH_SECTION_TITLES.en;
|
|
139
|
+
return `
|
|
140
|
+
<section class="watch-section">
|
|
141
|
+
<h2>${title}</h2>
|
|
142
|
+
<ul class="watch-list">
|
|
143
|
+
${watchPoints.map(point => ` <li>
|
|
144
|
+
<strong>${point.title}:</strong> ${point.description}
|
|
145
|
+
</li>`).join('\n')}
|
|
146
|
+
</ul>
|
|
147
|
+
</section>`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Generate the article language switcher navigation bar.
|
|
151
|
+
*
|
|
152
|
+
* @param baseSlug - The article base slug without language suffix (e.g. "2026-02-13-evening-analysis")
|
|
153
|
+
* @param currentLang - The current article language
|
|
154
|
+
* @returns HTML nav element string
|
|
155
|
+
*/
|
|
156
|
+
export function generateArticleLanguageSwitcher(baseSlug, currentLang) {
|
|
157
|
+
const links = ALL_LANG_CODES.map(l => {
|
|
158
|
+
const display = LANG_DISPLAY[l];
|
|
159
|
+
const active = l === currentLang ? ' active' : '';
|
|
160
|
+
const ariaCurrent = l === currentLang ? ' aria-current="page"' : '';
|
|
161
|
+
return ` <a href="${baseSlug}-${l}.html" class="lang-link${active}" hreflang="${hreflangCode(l)}"${ariaCurrent}>${display.flag} ${display.name}</a>`;
|
|
162
|
+
}).join('\n');
|
|
163
|
+
const ariaLabel = LANG_SWITCHER_ARIA_LABELS[currentLang] || LANG_SWITCHER_ARIA_LABELS.en;
|
|
164
|
+
return ` <nav class="language-switcher" role="navigation" aria-label="${ariaLabel}">\n${links}\n </nav>`;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Generate the full site footer matching index.html structure.
|
|
168
|
+
*
|
|
169
|
+
* @param lang - The current language
|
|
170
|
+
* @returns HTML footer element string
|
|
171
|
+
*/
|
|
172
|
+
export function generateSiteFooter(lang) {
|
|
173
|
+
const normalizedLang = ALL_LANG_CODES.includes(lang)
|
|
174
|
+
? lang
|
|
175
|
+
: 'en';
|
|
176
|
+
const labels = SITE_FOOTER_LABELS[normalizedLang];
|
|
177
|
+
const homePath = normalizedLang === 'en' ? '../index.html' : `../index_${normalizedLang}.html`;
|
|
178
|
+
const newsPath = getNewsIndexFilename(normalizedLang);
|
|
179
|
+
const dashboardPath = normalizedLang === 'en' ? '../dashboard/index.html' : `../dashboard/index_${normalizedLang}.html`;
|
|
180
|
+
return `<footer role="contentinfo">
|
|
181
|
+
<div class="footer-content">
|
|
182
|
+
<div class="footer-section">
|
|
183
|
+
<a href="${homePath}" aria-label="Riksdagsmonitor Home">
|
|
184
|
+
<img src="../images/riksdagsmonitor-logo.webp" alt="Riksdagsmonitor" class="footer-logo" width="80" height="80" loading="lazy">
|
|
185
|
+
</a>
|
|
186
|
+
<h3>${labels.about}</h3>
|
|
187
|
+
<p>${labels.aboutText}</p>
|
|
188
|
+
<ul class="footer-stats">
|
|
189
|
+
<li>${labels.statMPs}</li>
|
|
190
|
+
<li>${labels.statRiskRules}</li>
|
|
191
|
+
<li>${labels.statLanguages}</li>
|
|
192
|
+
<li>${labels.statHistoricalData}</li>
|
|
193
|
+
</ul>
|
|
194
|
+
</div>
|
|
195
|
+
<div class="footer-section">
|
|
196
|
+
<h3>${labels.quickLinks}</h3>
|
|
197
|
+
<ul>
|
|
198
|
+
<li><a href="${homePath}">${labels.home}</a></li>
|
|
199
|
+
<li><a href="${newsPath}">${labels.news}</a></li>
|
|
200
|
+
<li><a href="${dashboardPath}">${labels.dashboard}</a></li>
|
|
201
|
+
<li><a href="https://www.hack23.com/cia" target="_blank" rel="noopener noreferrer">${labels.ciaplatform}</a></li>
|
|
202
|
+
<li><a href="https://github.com/Hack23/riksdagsmonitor" target="_blank" rel="noopener noreferrer">GitHub Repository</a></li>
|
|
203
|
+
<li><a href="https://www.riksdagen.se" target="_blank" rel="noopener noreferrer">Sveriges Riksdag</a></li>
|
|
204
|
+
</ul>
|
|
205
|
+
</div>
|
|
206
|
+
<div class="footer-section">
|
|
207
|
+
<h3>${labels.builtBy}</h3>
|
|
208
|
+
<p>${labels.builtByText}</p>
|
|
209
|
+
<ul>
|
|
210
|
+
<li><a href="https://www.hack23.com" target="_blank" rel="noopener noreferrer">Hack23.com</a></li>
|
|
211
|
+
<li><a href="https://www.linkedin.com/company/hack23/" target="_blank" rel="noopener noreferrer">${labels.companyLinkedin}</a></li>
|
|
212
|
+
<li><a href="https://github.com/Hack23/ISMS-PUBLIC" target="_blank" rel="noopener noreferrer">${labels.publicIsms}</a></li>
|
|
213
|
+
<li><a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/Information_Security_Policy.md" target="_blank" rel="noopener noreferrer">${labels.securityPolicy}</a></li>
|
|
214
|
+
<li><a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/Privacy_Policy.md" target="_blank" rel="noopener noreferrer">${labels.privacyPolicy}</a></li>
|
|
215
|
+
<li><a href="mailto:info@hack23.com">${labels.contactUs}</a></li>
|
|
216
|
+
</ul>
|
|
217
|
+
</div>
|
|
218
|
+
<div class="footer-section">
|
|
219
|
+
<h3>${labels.languages}</h3>
|
|
220
|
+
<div class="language-grid">
|
|
221
|
+
${ALL_LANG_CODES.map(l => {
|
|
222
|
+
const display = LANG_DISPLAY[l];
|
|
223
|
+
const ariaLabel = LANG_ARIA_LABELS[l];
|
|
224
|
+
const href = l === 'en' ? '../index.html' : `../index_${l}.html`;
|
|
225
|
+
return ` <a href="${href}" title="${display.name}" aria-label="${ariaLabel}"><span aria-hidden="true">${display.flag}</span> ${l.toUpperCase()}</a>`;
|
|
226
|
+
}).join('\n')}
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
<div class="footer-bottom">
|
|
231
|
+
<p>© 2008-<time datetime="2026">2026</time> <a href="https://www.hack23.com" target="_blank" rel="noopener noreferrer">Hack23 AB</a> (Org.nr 5595347807) | ${labels.location} | v${escapeHtml(String(PKG_VERSION))}</p>
|
|
232
|
+
<p class="footer-disclaimer">⚠️ ${labels.disclaimer} <a href="https://github.com/Hack23/riksdagsmonitor/issues" target="_blank" rel="noopener noreferrer">${labels.disclaimerLink}</a>.</p>
|
|
233
|
+
</div>
|
|
234
|
+
</footer>`;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=helpers.js.map
|