diff --git a/Gemfile b/Gemfile
index e9667ae..23d47ed 100644
--- a/Gemfile
+++ b/Gemfile
@@ -33,3 +33,5 @@ gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
+
+gem 'jekyll-node-module'
diff --git a/Gemfile.lock b/Gemfile.lock
index ea10424..743e8a5 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -40,6 +40,8 @@ GEM
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
+ jekyll-node-module (0.1.3)
+ jekyll (>= 2.0, < 5.0)
jekyll-postcss-v2 (1.0.2)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
@@ -127,6 +129,7 @@ DEPENDENCIES
http_parser.rb (~> 0.6.0)
jekyll
jekyll-feed (~> 0.12)
+ jekyll-node-module
jekyll-postcss-v2
tzinfo (>= 1, < 3)
tzinfo-data
diff --git a/_config.yml b/_config.yml
index 06697f2..5c0bd96 100644
--- a/_config.yml
+++ b/_config.yml
@@ -34,6 +34,18 @@ collections:
- glossary
- resources
+plugins:
+ - jekyll-node-module
+
+node_modules:
+ modules_dir: node_modules
+ assets:
+ js: assets/scripts
+ css: assets/styles
+ copy:
+ - source: "@scottlogic/tech-carbon-estimator"
+ target: assets/tech-carbon-estimator
+
# Exclude from processing.
# The following items will not be processed, by default.
# Any item listed under the `exclude:` key here will be automatically added to
diff --git a/_data/navigation.yml b/_data/navigation.yml
index 3288597..88342b6 100644
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -10,3 +10,5 @@
link: /glossary
- name: About
link: /about
+#- name: Carbon Estimator
+# link: /estimator
diff --git a/_layouts/default.html b/_layouts/default.html
index 47047c8..d8c8dde 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -5,11 +5,19 @@
{{ page.title }}
-
+
+
+ {% if page.includeEstimator == true %}
+
+
+
+
+
+ {% endif %}
diff --git a/package-lock.json b/package-lock.json
index a2a6d57..1b114e8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,10 +1,12 @@
{
- "name": "jareth-Technology-Carbon-Standard",
+ "name": "Technology-Carbon-Standard",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
+ "name": "Technology-Carbon-Standard",
"devDependencies": {
+ "@scottlogic/tech-carbon-estimator": "^0.0.1",
"@tailwindcss/typography": "^0.5.10",
"autoprefixer": "^10.4.17",
"cssnano": "^6.0.3",
@@ -25,6 +27,182 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@angular/animations": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.11.tgz",
+ "integrity": "sha512-1y1Egag5jbdUSUWVK+KA39N9VFDrzq9ObjbAhrXFlXKa0npBRw5bprEEeLFQMETMP9Mpjbmj2PoASfl4vqj/Iw==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "17.3.11"
+ }
+ },
+ "node_modules/@angular/cdk": {
+ "version": "17.3.10",
+ "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.10.tgz",
+ "integrity": "sha512-b1qktT2c1TTTe5nTji/kFAVW92fULK0YhYAvJ+BjZTPKu2FniZNe8o4qqQ0pUuvtMu+ZQxp/QqFYoidIVCjScg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "optionalDependencies": {
+ "parse5": "^7.1.2"
+ },
+ "peerDependencies": {
+ "@angular/common": "^17.0.0 || ^18.0.0",
+ "@angular/core": "^17.0.0 || ^18.0.0",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/common": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.11.tgz",
+ "integrity": "sha512-WG+HQjUaQziYLGdbcv2aW+G73uroN5VF9yk4qWYcolW+VB8SV/DOAol8uFVgCF21cIOl5+wfJZvA4r5oG3dYaw==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "17.3.11",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/compiler": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.11.tgz",
+ "integrity": "sha512-ingRoREDPkeZGSa13DlztSjZgGArNcmsAWjj+f+vQgQekTjkfQD/N+Bix/LSt5ZdbSjHMtrkDMyRPwbNyk5Keg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "17.3.11"
+ },
+ "peerDependenciesMeta": {
+ "@angular/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular/core": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.11.tgz",
+ "integrity": "sha512-2wPZwXFei3kVxK2ylIH6CdGebrC4kvooFx7qoX+250OITAEFMODJGdh/e3x0DpFUjlRvQtIFQ+YpQlfC5JnL4g==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "rxjs": "^6.5.3 || ^7.4.0",
+ "zone.js": "~0.14.0"
+ }
+ },
+ "node_modules/@angular/elements": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/elements/-/elements-17.3.11.tgz",
+ "integrity": "sha512-Ojd4Qc0b4Ptbu5F6xf5bfuNOCNS++1qx27VDe9NXtehaUIopaVhsGv3lVkRjHgsTT9Yefuiw1BubXDLoyMBIjA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "17.3.11",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/forms": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.11.tgz",
+ "integrity": "sha512-719flo/1L64YOAxL3pzszTK+7bczVVOQDXT1khnjb48GVZdBUBwW2D+cFbqSW1VMuWWr2Amwy1lL4YM5S7qPJQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "17.3.11",
+ "@angular/core": "17.3.11",
+ "@angular/platform-browser": "17.3.11",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/platform-browser": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.11.tgz",
+ "integrity": "sha512-sWjMy8qKH6AOt5YV4OMoPhExCbGdRIPjNSwUrxCm8a8Zz5DamoX3Sib9yRk1etjBuRj+oJySSxISJim2OYXJQQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/animations": "17.3.11",
+ "@angular/common": "17.3.11",
+ "@angular/core": "17.3.11"
+ },
+ "peerDependenciesMeta": {
+ "@angular/animations": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular/platform-browser-dynamic": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.11.tgz",
+ "integrity": "sha512-JPA0enJyJQ5H340WQ2wfXbCCHzjBiAljEDMr/Siw/CzSe0XI8aQYDqKMLUMtRyCdYhNCEYjnBWgXBi9Za9blZg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "17.3.11",
+ "@angular/compiler": "17.3.11",
+ "@angular/core": "17.3.11",
+ "@angular/platform-browser": "17.3.11"
+ }
+ },
+ "node_modules/@angular/router": {
+ "version": "17.3.11",
+ "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.11.tgz",
+ "integrity": "sha512-A3aU6uHAeJfsfCw1dgNXHn2Kjw/UieRMnFwENkzz96YFCvFPCEZjy/mODuE3zHludMuqVsJhM/uUxWu8ATRTcA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^18.13.0 || >=20.9.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "17.3.11",
+ "@angular/core": "17.3.11",
+ "@angular/platform-browser": "17.3.11",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -135,6 +313,31 @@
"node": ">=14"
}
},
+ "node_modules/@scottlogic/tech-carbon-estimator": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/@scottlogic/tech-carbon-estimator/-/tech-carbon-estimator-0.0.1.tgz",
+ "integrity": "sha512-fb447g0v/k0sR8X3kvlKXnSILKS0L+UpyB5Kwexd4HLuIJaJIpIyh257qU6WeauGhcXZQgi0Sn1JbxF9iQiGqA==",
+ "dev": true,
+ "dependencies": {
+ "@angular/animations": "^17.2.0",
+ "@angular/cdk": "^17.2.2",
+ "@angular/common": "^17.2.0",
+ "@angular/compiler": "^17.2.0",
+ "@angular/core": "^17.2.0",
+ "@angular/elements": "^17.2.3",
+ "@angular/forms": "^17.2.0",
+ "@angular/platform-browser": "^17.2.0",
+ "@angular/platform-browser-dynamic": "^17.2.0",
+ "@angular/router": "^17.2.0",
+ "@tgwf/co2": "^0.14.3",
+ "lodash-es": "^4.17.21",
+ "ng-apexcharts": "^1.9.0",
+ "rxjs": "~7.8.0",
+ "tailwindcss-scoped-preflight": "^3.2.5",
+ "tslib": "^2.3.0",
+ "zone.js": "~0.14.3"
+ }
+ },
"node_modules/@sindresorhus/merge-streams": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.1.0.tgz",
@@ -175,6 +378,15 @@
"node": ">=4"
}
},
+ "node_modules/@tgwf/co2": {
+ "version": "0.14.4",
+ "resolved": "https://registry.npmjs.org/@tgwf/co2/-/co2-0.14.4.tgz",
+ "integrity": "sha512-837dH4n6cGt2s3ssR3Yt904WHy/MDmYZmnHCla6e73YjxIWmvLgYLXUYWzXJ2C5096jTR7yT5tNe1+Dq5bjnNw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/@trysound/sax": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
@@ -184,6 +396,13 @@
"node": ">=10.13.0"
}
},
+ "node_modules/@yr/monotone-cubic-spline": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz",
+ "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
@@ -227,6 +446,22 @@
"node": ">= 8"
}
},
+ "node_modules/apexcharts": {
+ "version": "3.49.1",
+ "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.1.tgz",
+ "integrity": "sha512-MqGtlq/KQuO8j0BBsUJYlRG8VBctKwYdwuBtajHgHTmSgUU3Oai+8oYN/rKCXwXzrUlYA+GiMgotAIbXY2BCGw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@yr/monotone-cubic-spline": "^1.0.3",
+ "svg.draggable.js": "^2.2.2",
+ "svg.easing.js": "^2.0.0",
+ "svg.filter.js": "^2.0.2",
+ "svg.pathmorphing.js": "^0.1.3",
+ "svg.resize.js": "^1.4.3",
+ "svg.select.js": "^3.0.1"
+ }
+ },
"node_modules/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
@@ -301,12 +536,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -884,9 +1119,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -1186,6 +1421,12 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "dev": true
+ },
"node_modules/lodash.castarray": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
@@ -1306,6 +1547,21 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/ng-apexcharts": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/ng-apexcharts/-/ng-apexcharts-1.10.0.tgz",
+ "integrity": "sha512-Bg85iL3uAuALaj7yQ29XsPYGx8cr3gDrlBPYQtWzEbHcIHP1PBl9IEH9CLF7ESxypW/XPbliH3pc95o5+9gIag==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "^17.0.2",
+ "@angular/core": "^17.0.2",
+ "apexcharts": "^3.45.2",
+ "rxjs": "^6.5.5 || ^7.4.0"
+ }
+ },
"node_modules/node-releases": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
@@ -1360,6 +1616,19 @@
"node": ">= 6"
}
},
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -2182,6 +2451,15 @@
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2391,6 +2669,105 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svg.draggable.js": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz",
+ "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "svg.js": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/svg.easing.js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz",
+ "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "svg.js": ">=2.3.x"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/svg.filter.js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz",
+ "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "svg.js": "^2.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/svg.js": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz",
+ "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/svg.pathmorphing.js": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz",
+ "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "svg.js": "^2.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/svg.resize.js": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz",
+ "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "svg.js": "^2.6.5",
+ "svg.select.js": "^2.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/svg.resize.js/node_modules/svg.select.js": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz",
+ "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "svg.js": "^2.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/svg.select.js": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz",
+ "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "svg.js": "^2.6.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/svgo": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz",
@@ -2453,6 +2830,16 @@
"node": ">=14.0.0"
}
},
+ "node_modules/tailwindcss-scoped-preflight": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/tailwindcss-scoped-preflight/-/tailwindcss-scoped-preflight-3.2.6.tgz",
+ "integrity": "sha512-Q0mE+77258D5kIfMOAJ8iOFEUFoeGMqaWG/n8H9deBFwN7E9zB+qmxTmcF6JfmrEkwx6vfBZN7JSneBGYJn4Kg==",
+ "dev": true,
+ "peerDependencies": {
+ "postcss": "^8",
+ "tailwindcss": "^3"
+ }
+ },
"node_modules/tailwindcss/node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -2507,6 +2894,12 @@
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
"dev": true
},
+ "node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
"node_modules/unicorn-magic": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
@@ -2755,6 +3148,12 @@
"engines": {
"node": ">=8"
}
+ },
+ "node_modules/zone.js": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.7.tgz",
+ "integrity": "sha512-0w6DGkX2BPuiK/NLf+4A8FLE43QwBfuqz2dVgi/40Rj1WmqUskCqj329O/pwrqFJLG5X8wkeG2RhIAro441xtg==",
+ "dev": true
}
}
}
diff --git a/package.json b/package.json
index 0960d65..dce9357 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,7 @@
"cssnano": "^6.0.3",
"postcss": "^8.4.33",
"postcss-cli": "^11.0.0",
- "tailwindcss": "^3.4.1"
+ "tailwindcss": "^3.4.1",
+ "@scottlogic/tech-carbon-estimator": "^0.0.1"
}
}
diff --git a/pages/estimator.md b/pages/estimator.md
new file mode 100644
index 0000000..c241d56
--- /dev/null
+++ b/pages/estimator.md
@@ -0,0 +1,21 @@
+---
+layout: default
+title: Carbon Estimator
+permalink: /estimator
+includeEstimator: true
+---
+
+# Technology Carbon Estimator
+
+**The Technology Carbon Estimator is designed to give a high-level overview of the possible areas of carbon impact within your IT estate.**
+
+The estimations are framed within our proposed model of tech emissions – the [Technology Carbon Standard](/) – designed to help you map out, measure and improve the environmental impacts of your technology.
+
+Scott Logic helps organisations achieve their business sustainability goals by improving their technology sustainability. If you'd like to discuss your technology carbon estimate with us, [please get in touch](https://www.scottlogic.com/contact-us?formId=sales-enquiries).
+
+If you experience any issues using the calculator, you can [report them on GitHub](https://github.com/ScottLogic/sl-tech-carbon-estimator/issues).
+
+## Calculate your technology's potential carbon impact
+
+
+