diff --git a/main/coverage/clover.xml b/main/coverage/clover.xml
new file mode 100644
index 0000000000..e373468b7e
--- /dev/null
+++ b/main/coverage/clover.xml
@@ -0,0 +1,1006 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main/coverage/coverage-final.json b/main/coverage/coverage-final.json
new file mode 100644
index 0000000000..253d1319ba
--- /dev/null
+++ b/main/coverage/coverage-final.json
@@ -0,0 +1,89 @@
+{"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/index.js","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ActionButton.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ActionButton.js","statementMap":{"0":{"start":{"line":11,"column":4},"end":{"line":11,"column":108}},"1":{"start":{"line":13,"column":4},"end":{"line":13,"column":118}},"2":{"start":{"line":15,"column":4},"end":{"line":15,"column":121}},"3":{"start":{"line":17,"column":4},"end":{"line":17,"column":109}},"4":{"start":{"line":19,"column":4},"end":{"line":19,"column":89}},"5":{"start":{"line":22,"column":4},"end":{"line":32,"column":10}},"6":{"start":{"line":35,"column":2},"end":{"line":45,"column":5}},"7":{"start":{"line":36,"column":15},"end":{"line":36,"column":48}},"8":{"start":{"line":37,"column":4},"end":{"line":44,"column":5}},"9":{"start":{"line":38,"column":6},"end":{"line":43,"column":9}},"10":{"start":{"line":39,"column":8},"end":{"line":42,"column":9}},"11":{"start":{"line":40,"column":10},"end":{"line":40,"column":33}},"12":{"start":{"line":41,"column":10},"end":{"line":41,"column":23}},"13":{"start":{"line":47,"column":2},"end":{"line":105,"column":4}},"14":{"start":{"line":108,"column":0},"end":{"line":232,"column":2}}},"fnMap":{"0":{"name":"ActionButton","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":28}},"loc":{"start":{"line":8,"column":36},"end":{"line":106,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":35,"column":12},"end":{"line":35,"column":13}},"loc":{"start":{"line":35,"column":18},"end":{"line":45,"column":3}},"line":35},"2":{"name":"(anonymous_2)","decl":{"start":{"line":38,"column":39},"end":{"line":38,"column":40}},"loc":{"start":{"line":38,"column":50},"end":{"line":43,"column":7}},"line":38}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":4},"end":{"line":32,"column":10}},"type":"cond-expr","locations":[{"start":{"line":23,"column":8},"end":{"line":23,"column":15}},{"start":{"line":24,"column":8},"end":{"line":32,"column":10}}],"line":22},"1":{"loc":{"start":{"line":24,"column":8},"end":{"line":32,"column":10}},"type":"cond-expr","locations":[{"start":{"line":25,"column":8},"end":{"line":25,"column":17}},{"start":{"line":26,"column":8},"end":{"line":32,"column":10}}],"line":24},"2":{"loc":{"start":{"line":26,"column":8},"end":{"line":32,"column":10}},"type":"cond-expr","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":17}},{"start":{"line":28,"column":8},"end":{"line":32,"column":10}}],"line":26},"3":{"loc":{"start":{"line":28,"column":8},"end":{"line":32,"column":10}},"type":"cond-expr","locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":14}},{"start":{"line":30,"column":8},"end":{"line":32,"column":10}}],"line":28},"4":{"loc":{"start":{"line":30,"column":8},"end":{"line":32,"column":10}},"type":"cond-expr","locations":[{"start":{"line":31,"column":8},"end":{"line":31,"column":12}},{"start":{"line":32,"column":8},"end":{"line":32,"column":10}}],"line":30},"5":{"loc":{"start":{"line":37,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":44,"column":5}},{"start":{},"end":{}}],"line":37},"6":{"loc":{"start":{"line":39,"column":8},"end":{"line":42,"column":9}},"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":42,"column":9}},{"start":{},"end":{}}],"line":39},"7":{"loc":{"start":{"line":39,"column":12},"end":{"line":39,"column":57}},"type":"binary-expr","locations":[{"start":{"line":39,"column":12},"end":{"line":39,"column":36}},{"start":{"line":39,"column":40},"end":{"line":39,"column":57}}],"line":39},"8":{"loc":{"start":{"line":47,"column":9},"end":{"line":105,"column":3}},"type":"cond-expr","locations":[{"start":{"line":48,"column":4},"end":{"line":70,"column":11}},{"start":{"line":72,"column":4},"end":{"line":104,"column":13}}],"line":47},"9":{"loc":{"start":{"line":50,"column":21},"end":{"line":50,"column":66}},"type":"cond-expr","locations":[{"start":{"line":50,"column":39},"end":{"line":50,"column":54}},{"start":{"line":50,"column":57},"end":{"line":50,"column":66}}],"line":50},"10":{"loc":{"start":{"line":55,"column":15},"end":{"line":55,"column":39}},"type":"binary-expr","locations":[{"start":{"line":55,"column":15},"end":{"line":55,"column":27}},{"start":{"line":55,"column":31},"end":{"line":55,"column":39}}],"line":55},"11":{"loc":{"start":{"line":62,"column":7},"end":{"line":64,"column":19}},"type":"cond-expr","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":70}},{"start":{"line":64,"column":10},"end":{"line":64,"column":19}}],"line":62},"12":{"loc":{"start":{"line":62,"column":7},"end":{"line":62,"column":35}},"type":"binary-expr","locations":[{"start":{"line":62,"column":7},"end":{"line":62,"column":17}},{"start":{"line":62,"column":21},"end":{"line":62,"column":35}}],"line":62},"13":{"loc":{"start":{"line":67,"column":7},"end":{"line":69,"column":19}},"type":"cond-expr","locations":[{"start":{"line":68,"column":8},"end":{"line":68,"column":70}},{"start":{"line":69,"column":10},"end":{"line":69,"column":19}}],"line":67},"14":{"loc":{"start":{"line":67,"column":7},"end":{"line":67,"column":34}},"type":"binary-expr","locations":[{"start":{"line":67,"column":7},"end":{"line":67,"column":17}},{"start":{"line":67,"column":21},"end":{"line":67,"column":34}}],"line":67},"15":{"loc":{"start":{"line":73,"column":24},"end":{"line":73,"column":75}},"type":"cond-expr","locations":[{"start":{"line":73,"column":45},"end":{"line":73,"column":63}},{"start":{"line":73,"column":66},"end":{"line":73,"column":75}}],"line":73},"16":{"loc":{"start":{"line":74,"column":21},"end":{"line":74,"column":66}},"type":"cond-expr","locations":[{"start":{"line":74,"column":39},"end":{"line":74,"column":54}},{"start":{"line":74,"column":57},"end":{"line":74,"column":66}}],"line":74},"17":{"loc":{"start":{"line":80,"column":15},"end":{"line":80,"column":39}},"type":"binary-expr","locations":[{"start":{"line":80,"column":15},"end":{"line":80,"column":27}},{"start":{"line":80,"column":31},"end":{"line":80,"column":39}}],"line":80},"18":{"loc":{"start":{"line":83,"column":32},"end":{"line":83,"column":78}},"type":"cond-expr","locations":[{"start":{"line":83,"column":58},"end":{"line":83,"column":66}},{"start":{"line":83,"column":69},"end":{"line":83,"column":78}}],"line":83},"19":{"loc":{"start":{"line":85,"column":7},"end":{"line":87,"column":19}},"type":"cond-expr","locations":[{"start":{"line":86,"column":8},"end":{"line":86,"column":70}},{"start":{"line":87,"column":10},"end":{"line":87,"column":19}}],"line":85},"20":{"loc":{"start":{"line":85,"column":7},"end":{"line":85,"column":35}},"type":"binary-expr","locations":[{"start":{"line":85,"column":7},"end":{"line":85,"column":17}},{"start":{"line":85,"column":21},"end":{"line":85,"column":35}}],"line":85},"21":{"loc":{"start":{"line":88,"column":7},"end":{"line":95,"column":19}},"type":"cond-expr","locations":[{"start":{"line":89,"column":8},"end":{"line":94,"column":11}},{"start":{"line":95,"column":10},"end":{"line":95,"column":19}}],"line":88},"22":{"loc":{"start":{"line":88,"column":7},"end":{"line":88,"column":42}},"type":"binary-expr","locations":[{"start":{"line":88,"column":7},"end":{"line":88,"column":24}},{"start":{"line":88,"column":28},"end":{"line":88,"column":42}}],"line":88},"23":{"loc":{"start":{"line":101,"column":7},"end":{"line":103,"column":19}},"type":"cond-expr","locations":[{"start":{"line":102,"column":8},"end":{"line":102,"column":70}},{"start":{"line":103,"column":10},"end":{"line":103,"column":19}}],"line":101},"24":{"loc":{"start":{"line":101,"column":7},"end":{"line":101,"column":34}},"type":"binary-expr","locations":[{"start":{"line":101,"column":7},"end":{"line":101,"column":17}},{"start":{"line":101,"column":21},"end":{"line":101,"column":34}}],"line":101}},"s":{"0":75,"1":75,"2":75,"3":75,"4":75,"5":75,"6":75,"7":75,"8":75,"9":67,"10":1,"11":1,"12":1,"13":75,"14":17},"f":{"0":75,"1":75,"2":1},"b":{"0":[5,70],"1":[2,68],"2":[1,67],"3":[1,66],"4":[2,64],"5":[67,8],"6":[1,0],"7":[1,0],"8":[19,56],"9":[6,13],"10":[19,11],"11":[0,19],"12":[19,4],"13":[4,15],"14":[19,4],"15":[0,56],"16":[12,44],"17":[56,17],"18":[24,32],"19":[0,56],"20":[56,0],"21":[6,50],"22":[56,6],"23":[0,56],"24":[56,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"857e59e63979d7363a4a0ecee2ad91304079e4aa"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ActionButton.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ActionButton.stories.js","statementMap":{"0":{"start":{"line":8,"column":17},"end":{"line":8,"column":53}},"1":{"start":{"line":8,"column":27},"end":{"line":8,"column":53}},"2":{"start":{"line":10,"column":23},"end":{"line":10,"column":40}},"3":{"start":{"line":11,"column":25},"end":{"line":11,"column":42}},"4":{"start":{"line":12,"column":25},"end":{"line":12,"column":42}},"5":{"start":{"line":13,"column":22},"end":{"line":13,"column":39}},"6":{"start":{"line":14,"column":20},"end":{"line":14,"column":37}},"7":{"start":{"line":16,"column":0},"end":{"line":20,"column":2}},"8":{"start":{"line":22,"column":0},"end":{"line":27,"column":2}},"9":{"start":{"line":29,"column":0},"end":{"line":34,"column":2}},"10":{"start":{"line":36,"column":0},"end":{"line":41,"column":2}},"11":{"start":{"line":43,"column":0},"end":{"line":48,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":53}},"line":8}},"branchMap":{},"s":{"0":1,"1":7,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":7},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"15410beefc2a3767daf1bc32866e0bdbe619631d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Alert.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Alert.js","statementMap":{"0":{"start":{"line":12,"column":2},"end":{"line":38,"column":4}},"1":{"start":{"line":41,"column":0},"end":{"line":50,"column":2}}},"fnMap":{"0":{"name":"Alert","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":21}},"loc":{"start":{"line":11,"column":29},"end":{"line":39,"column":1}},"line":11}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":10},"end":{"line":16,"column":66}},"type":"cond-expr","locations":[{"start":{"line":16,"column":27},"end":{"line":16,"column":45}},{"start":{"line":16,"column":48},"end":{"line":16,"column":66}}],"line":16},"1":{"loc":{"start":{"line":20,"column":11},"end":{"line":28,"column":11}},"type":"cond-expr","locations":[{"start":{"line":21,"column":12},"end":{"line":25,"column":14}},{"start":{"line":27,"column":12},"end":{"line":27,"column":79}}],"line":20}},"s":{"0":2,"1":1},"f":{"0":2},"b":{"0":[0,2],"1":[0,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7bd61701a7b80a1a915241faa1e6ff92412d63eb"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Alert.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Alert.stories.js","statementMap":{"0":{"start":{"line":8,"column":17},"end":{"line":8,"column":46}},"1":{"start":{"line":8,"column":27},"end":{"line":8,"column":46}},"2":{"start":{"line":10,"column":23},"end":{"line":10,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":15,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":46}},"line":8}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f28f2e4857c791b2b1e5eb333dbe17b97d54877d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Banner.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Banner.js","statementMap":{"0":{"start":{"line":8,"column":22},"end":{"line":26,"column":1}},"1":{"start":{"line":9,"column":2},"end":{"line":25,"column":4}},"2":{"start":{"line":28,"column":0},"end":{"line":38,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":22},"end":{"line":8,"column":23}},"loc":{"start":{"line":8,"column":51},"end":{"line":26,"column":1}},"line":8}},"branchMap":{},"s":{"0":4,"1":4,"2":4},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b0bd9d01708f094cf2dd1bc4d7ccbc8467b0f5f8"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Banner.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Banner.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":47}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":47}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":13,"column":0},"end":{"line":16,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":47}},"line":9}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e5d2172c491ed23a79bcec2411ec811097a3fab7"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Breadcrumb.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Breadcrumb.js","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":47,"column":4}},"1":{"start":{"line":24,"column":14},"end":{"line":42,"column":16}},"2":{"start":{"line":50,"column":0},"end":{"line":67,"column":2}}},"fnMap":{"0":{"name":"Breadcrumb","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":26}},"loc":{"start":{"line":9,"column":34},"end":{"line":48,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":28},"end":{"line":23,"column":29}},"loc":{"start":{"line":23,"column":43},"end":{"line":43,"column":13}},"line":23}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":9},"end":{"line":44,"column":16}},"type":"cond-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":43,"column":14}},{"start":{"line":44,"column":12},"end":{"line":44,"column":16}}],"line":22}},"s":{"0":11,"1":4,"2":4},"f":{"0":11,"1":4},"b":{"0":[2,8]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"13fb26c661e894273cf9b1879cdb89d6ecbadd75"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Breadcrumb.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Breadcrumb.stories.js","statementMap":{"0":{"start":{"line":8,"column":17},"end":{"line":8,"column":51}},"1":{"start":{"line":8,"column":27},"end":{"line":8,"column":51}},"2":{"start":{"line":10,"column":23},"end":{"line":10,"column":40}},"3":{"start":{"line":11,"column":25},"end":{"line":11,"column":42}},"4":{"start":{"line":13,"column":0},"end":{"line":19,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":51}},"line":8}},"branchMap":{},"s":{"0":1,"1":3,"2":1,"3":1,"4":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ba06e78454c0637cf7f825a0cc5c42688a4b6850"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/CheckBox.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/CheckBox.js","statementMap":{"0":{"start":{"line":7,"column":28},"end":{"line":11,"column":8}},"1":{"start":{"line":12,"column":2},"end":{"line":51,"column":4}},"2":{"start":{"line":25,"column":10},"end":{"line":29,"column":11}},"3":{"start":{"line":54,"column":0},"end":{"line":58,"column":2}},"4":{"start":{"line":60,"column":0},"end":{"line":129,"column":2}}},"fnMap":{"0":{"name":"CheckBox","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":24}},"loc":{"start":{"line":6,"column":32},"end":{"line":52,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":18},"end":{"line":24,"column":19}},"loc":{"start":{"line":25,"column":10},"end":{"line":29,"column":11}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":28},"end":{"line":11,"column":8}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":10,"column":7}},{"start":{"line":11,"column":6},"end":{"line":11,"column":8}}],"line":7},"1":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":57}},"type":"cond-expr","locations":[{"start":{"line":15,"column":26},"end":{"line":15,"column":47}},{"start":{"line":15,"column":50},"end":{"line":15,"column":57}}],"line":15},"2":{"loc":{"start":{"line":26,"column":12},"end":{"line":26,"column":73}},"type":"cond-expr","locations":[{"start":{"line":26,"column":33},"end":{"line":26,"column":57}},{"start":{"line":26,"column":60},"end":{"line":26,"column":73}}],"line":26},"3":{"loc":{"start":{"line":32,"column":22},"end":{"line":32,"column":54}},"type":"cond-expr","locations":[{"start":{"line":32,"column":36},"end":{"line":32,"column":42}},{"start":{"line":32,"column":45},"end":{"line":32,"column":54}}],"line":32},"4":{"loc":{"start":{"line":39,"column":10},"end":{"line":39,"column":56}},"type":"cond-expr","locations":[{"start":{"line":39,"column":25},"end":{"line":39,"column":40}},{"start":{"line":39,"column":43},"end":{"line":39,"column":56}}],"line":39},"5":{"loc":{"start":{"line":40,"column":21},"end":{"line":40,"column":71}},"type":"cond-expr","locations":[{"start":{"line":40,"column":35},"end":{"line":40,"column":59}},{"start":{"line":40,"column":62},"end":{"line":40,"column":71}}],"line":40},"6":{"loc":{"start":{"line":43,"column":9},"end":{"line":47,"column":21}},"type":"cond-expr","locations":[{"start":{"line":44,"column":10},"end":{"line":46,"column":14}},{"start":{"line":47,"column":12},"end":{"line":47,"column":21}}],"line":43}},"s":{"0":145,"1":145,"2":6,"3":9,"4":9},"f":{"0":145,"1":6},"b":{"0":[12,133],"1":[127,18],"2":[4,2],"3":[0,145],"4":[0,145],"5":[0,145],"6":[0,145]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2361dbe58b2cd89fa17306405dbe671c148d3068"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/CheckBox.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/CheckBox.stories.js","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"1":{"start":{"line":18,"column":17},"end":{"line":18,"column":49}},"2":{"start":{"line":18,"column":27},"end":{"line":18,"column":49}},"3":{"start":{"line":20,"column":25},"end":{"line":20,"column":42}},"4":{"start":{"line":21,"column":0},"end":{"line":27,"column":2}},"5":{"start":{"line":29,"column":23},"end":{"line":29,"column":40}},"6":{"start":{"line":30,"column":0},"end":{"line":37,"column":2}},"7":{"start":{"line":39,"column":28},"end":{"line":39,"column":45}},"8":{"start":{"line":40,"column":0},"end":{"line":47,"column":2}},"9":{"start":{"line":49,"column":24},"end":{"line":49,"column":41}},"10":{"start":{"line":50,"column":0},"end":{"line":57,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":49}},"line":18}},"branchMap":{},"s":{"0":0,"1":1,"2":4,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"f":{"0":0,"1":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1f10911fb44eb38d7804db00dc612e847bfe0862"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DateModified.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DateModified.js","statementMap":{"0":{"start":{"line":5,"column":16},"end":{"line":5,"column":40}},"1":{"start":{"line":7,"column":22},"end":{"line":7,"column":26}},"2":{"start":{"line":8,"column":2},"end":{"line":12,"column":3}},"3":{"start":{"line":9,"column":4},"end":{"line":11,"column":38}},"4":{"start":{"line":10,"column":6},"end":{"line":10,"column":70}},"5":{"start":{"line":11,"column":11},"end":{"line":11,"column":38}},"6":{"start":{"line":14,"column":2},"end":{"line":25,"column":4}},"7":{"start":{"line":28,"column":0},"end":{"line":30,"column":2}},"8":{"start":{"line":32,"column":0},"end":{"line":35,"column":2}}},"fnMap":{"0":{"name":"DateModified","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":28}},"loc":{"start":{"line":4,"column":36},"end":{"line":26,"column":1}},"line":4}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":12,"column":3}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":12,"column":3}},{"start":{},"end":{}}],"line":8},"1":{"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":38}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":11,"column":38}},{"start":{"line":11,"column":11},"end":{"line":11,"column":38}}],"line":9},"2":{"loc":{"start":{"line":18,"column":9},"end":{"line":22,"column":9}},"type":"cond-expr","locations":[{"start":{"line":19,"column":10},"end":{"line":19,"column":44}},{"start":{"line":21,"column":10},"end":{"line":21,"column":69}}],"line":18}},"s":{"0":10,"1":10,"2":10,"3":4,"4":2,"5":2,"6":10,"7":4,"8":4},"f":{"0":10},"b":{"0":[4,6],"1":[2,2],"2":[6,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b47e8b8e6632c84d136bd818a53e2d91830efeaa"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DateModified.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DateModified.stories.js","statementMap":{"0":{"start":{"line":8,"column":17},"end":{"line":8,"column":53}},"1":{"start":{"line":8,"column":27},"end":{"line":8,"column":53}},"2":{"start":{"line":10,"column":23},"end":{"line":10,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":14,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":53}},"line":8}},"branchMap":{},"s":{"0":1,"1":3,"2":1,"3":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c7686e4fa030e25863fce92ad7dbc9e5feadfa51"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ErrorLabel.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ErrorLabel.js","statementMap":{"0":{"start":{"line":7,"column":2},"end":{"line":13,"column":4}},"1":{"start":{"line":16,"column":0},"end":{"line":23,"column":2}}},"fnMap":{"0":{"name":"ErrorLabel","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":26}},"loc":{"start":{"line":6,"column":34},"end":{"line":14,"column":1}},"line":6}},"branchMap":{},"s":{"0":5,"1":13},"f":{"0":5},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f9976b7520de2dd3c5c185fcdf700f31d3987048"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ErrorLabel.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ErrorLabel.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":51}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":51}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":14,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":51}},"line":9}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c5ee6f0f12533617e78fd48b2b41a161cea2aac7"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/HTMList.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/HTMList.js","statementMap":{"0":{"start":{"line":4,"column":20},"end":{"line":12,"column":8}},"1":{"start":{"line":5,"column":4},"end":{"line":12,"column":8}},"2":{"start":{"line":7,"column":24},"end":{"line":7,"column":28}},"3":{"start":{"line":9,"column":8},"end":{"line":11,"column":13}},"4":{"start":{"line":14,"column":2},"end":{"line":18,"column":4}},"5":{"start":{"line":21,"column":0},"end":{"line":26,"column":2}}},"fnMap":{"0":{"name":"HTMList","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":23}},"loc":{"start":{"line":3,"column":77},"end":{"line":19,"column":1}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":20},"end":{"line":4,"column":21}},"loc":{"start":{"line":5,"column":4},"end":{"line":12,"column":8}},"line":5},"2":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":14},"end":{"line":7,"column":15}},"loc":{"start":{"line":7,"column":24},"end":{"line":7,"column":28}},"line":7},"3":{"name":"(anonymous_3)","decl":{"start":{"line":8,"column":11},"end":{"line":8,"column":12}},"loc":{"start":{"line":9,"column":8},"end":{"line":11,"column":13}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":26},"end":{"line":3,"column":36}},"type":"default-arg","locations":[{"start":{"line":3,"column":32},"end":{"line":3,"column":36}}],"line":3},"1":{"loc":{"start":{"line":14,"column":9},"end":{"line":18,"column":3}},"type":"cond-expr","locations":[{"start":{"line":15,"column":4},"end":{"line":15,"column":59}},{"start":{"line":17,"column":4},"end":{"line":17,"column":59}}],"line":14}},"s":{"0":7,"1":7,"2":18,"3":13,"4":7,"5":1},"f":{"0":7,"1":7,"2":18,"3":13},"b":{"0":[5],"1":[6,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d498c2a8969f2a4dc6c4848d2e6043776020fa92"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiTextField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiTextField.js","statementMap":{"0":{"start":{"line":9,"column":16},"end":{"line":9,"column":40}},"1":{"start":{"line":11,"column":2},"end":{"line":54,"column":4}},"2":{"start":{"line":41,"column":25},"end":{"line":41,"column":62}},"3":{"start":{"line":57,"column":0},"end":{"line":60,"column":2}},"4":{"start":{"line":62,"column":0},"end":{"line":146,"column":2}}},"fnMap":{"0":{"name":"MultiTextField","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":30}},"loc":{"start":{"line":8,"column":38},"end":{"line":55,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":41,"column":18},"end":{"line":41,"column":19}},"loc":{"start":{"line":41,"column":25},"end":{"line":41,"column":62}},"line":41}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":8},"end":{"line":14,"column":58}},"type":"cond-expr","locations":[{"start":{"line":14,"column":26},"end":{"line":14,"column":47}},{"start":{"line":14,"column":50},"end":{"line":14,"column":58}}],"line":14},"1":{"loc":{"start":{"line":19,"column":10},"end":{"line":19,"column":44}},"type":"cond-expr","locations":[{"start":{"line":19,"column":28},"end":{"line":19,"column":39}},{"start":{"line":19,"column":42},"end":{"line":19,"column":44}}],"line":19},"2":{"loc":{"start":{"line":23,"column":9},"end":{"line":27,"column":21}},"type":"cond-expr","locations":[{"start":{"line":24,"column":10},"end":{"line":26,"column":14}},{"start":{"line":27,"column":12},"end":{"line":27,"column":21}}],"line":23},"3":{"loc":{"start":{"line":33,"column":7},"end":{"line":33,"column":69}},"type":"cond-expr","locations":[{"start":{"line":33,"column":21},"end":{"line":33,"column":57}},{"start":{"line":33,"column":60},"end":{"line":33,"column":69}}],"line":33},"4":{"loc":{"start":{"line":36,"column":10},"end":{"line":36,"column":66}},"type":"cond-expr","locations":[{"start":{"line":36,"column":24},"end":{"line":36,"column":49}},{"start":{"line":36,"column":52},"end":{"line":36,"column":66}}],"line":36}},"s":{"0":4,"1":4,"2":1,"3":8,"4":8},"f":{"0":4,"1":1},"b":{"0":[0,4],"1":[1,3],"2":[0,4],"3":[0,4],"4":[0,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0284fece7a312230cc9e53f0a5a9156ce1330f72"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiTextField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiTextField.stories.js","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"1":{"start":{"line":18,"column":17},"end":{"line":18,"column":57}},"2":{"start":{"line":18,"column":27},"end":{"line":18,"column":57}},"3":{"start":{"line":20,"column":23},"end":{"line":20,"column":40}},"4":{"start":{"line":21,"column":0},"end":{"line":27,"column":2}},"5":{"start":{"line":29,"column":25},"end":{"line":29,"column":42}},"6":{"start":{"line":30,"column":0},"end":{"line":37,"column":2}},"7":{"start":{"line":39,"column":24},"end":{"line":39,"column":41}},"8":{"start":{"line":40,"column":0},"end":{"line":49,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":57}},"line":18}},"branchMap":{},"s":{"0":0,"1":1,"2":2,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{"0":0,"1":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e95af57a53f1f61570fadb1270af4036342f4321"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ProjectInfo.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ProjectInfo.js","statementMap":{"0":{"start":{"line":7,"column":16},"end":{"line":7,"column":40}},"1":{"start":{"line":8,"column":34},"end":{"line":8,"column":49}},"2":{"start":{"line":10,"column":2},"end":{"line":42,"column":4}},"3":{"start":{"line":45,"column":0},"end":{"line":52,"column":2}}},"fnMap":{"0":{"name":"ProjectInfo","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":27}},"loc":{"start":{"line":6,"column":35},"end":{"line":43,"column":1}},"line":6}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":11},"end":{"line":15,"column":78}},"type":"cond-expr","locations":[{"start":{"line":15,"column":32},"end":{"line":15,"column":41}},{"start":{"line":15,"column":44},"end":{"line":15,"column":78}}],"line":15},"1":{"loc":{"start":{"line":19,"column":11},"end":{"line":19,"column":74}},"type":"cond-expr","locations":[{"start":{"line":19,"column":30},"end":{"line":19,"column":39}},{"start":{"line":19,"column":42},"end":{"line":19,"column":74}}],"line":19}},"s":{"0":3,"1":3,"2":3,"3":2},"f":{"0":3},"b":{"0":[0,3],"1":[1,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"25449d2c0846d59f452f46cceab566cdb8f3f252"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ProjectInfo.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/ProjectInfo.stories.js","statementMap":{"0":{"start":{"line":8,"column":17},"end":{"line":8,"column":52}},"1":{"start":{"line":8,"column":27},"end":{"line":8,"column":52}},"2":{"start":{"line":10,"column":23},"end":{"line":10,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":17,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":52}},"line":8}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"74c812eb1223bc6186d9f3f5c9b2a6ed97663cce"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioButton.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioButton.js","statementMap":{"0":{"start":{"line":7,"column":28},"end":{"line":13,"column":7}},"1":{"start":{"line":14,"column":2},"end":{"line":48,"column":4}},"2":{"start":{"line":23,"column":10},"end":{"line":23,"column":41}},"3":{"start":{"line":26,"column":10},"end":{"line":32,"column":11}},"4":{"start":{"line":27,"column":12},"end":{"line":27,"column":31}},"5":{"start":{"line":28,"column":12},"end":{"line":30,"column":13}},"6":{"start":{"line":29,"column":14},"end":{"line":29,"column":45}},"7":{"start":{"line":31,"column":12},"end":{"line":31,"column":43}},"8":{"start":{"line":51,"column":0},"end":{"line":53,"column":2}},"9":{"start":{"line":55,"column":0},"end":{"line":115,"column":2}}},"fnMap":{"0":{"name":"RadioButton","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":27}},"loc":{"start":{"line":6,"column":35},"end":{"line":49,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":18},"end":{"line":22,"column":19}},"loc":{"start":{"line":22,"column":25},"end":{"line":24,"column":9}},"line":22},"2":{"name":"(anonymous_2)","decl":{"start":{"line":25,"column":17},"end":{"line":25,"column":18}},"loc":{"start":{"line":25,"column":24},"end":{"line":33,"column":9}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":28},"end":{"line":13,"column":7}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":10,"column":7}},{"start":{"line":11,"column":6},"end":{"line":13,"column":7}}],"line":7},"1":{"loc":{"start":{"line":12,"column":24},"end":{"line":12,"column":46}},"type":"binary-expr","locations":[{"start":{"line":12,"column":24},"end":{"line":12,"column":37}},{"start":{"line":12,"column":41},"end":{"line":12,"column":46}}],"line":12},"2":{"loc":{"start":{"line":26,"column":10},"end":{"line":32,"column":11}},"type":"if","locations":[{"start":{"line":26,"column":10},"end":{"line":32,"column":11}},{"start":{},"end":{}}],"line":26},"3":{"loc":{"start":{"line":28,"column":12},"end":{"line":30,"column":13}},"type":"if","locations":[{"start":{"line":28,"column":12},"end":{"line":30,"column":13}},{"start":{},"end":{}}],"line":28},"4":{"loc":{"start":{"line":41,"column":10},"end":{"line":41,"column":51}},"type":"cond-expr","locations":[{"start":{"line":41,"column":31},"end":{"line":41,"column":46}},{"start":{"line":41,"column":49},"end":{"line":41,"column":51}}],"line":41},"5":{"loc":{"start":{"line":42,"column":11},"end":{"line":42,"column":51}},"type":"cond-expr","locations":[{"start":{"line":42,"column":31},"end":{"line":42,"column":46}},{"start":{"line":42,"column":49},"end":{"line":42,"column":51}}],"line":42}},"s":{"0":16,"1":16,"2":3,"3":1,"4":1,"5":1,"6":0,"7":1,"8":2,"9":2},"f":{"0":16,"1":3,"2":1},"b":{"0":[15,1],"1":[1,1],"2":[1,0],"3":[0,1],"4":[4,12],"5":[4,12]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8387c8300b81c0b0b4606ef9d7e8061b628962d8"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioButton.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioButton.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":52}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":52}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":18,"column":2}},"4":{"start":{"line":20,"column":23},"end":{"line":20,"column":40}},"5":{"start":{"line":21,"column":0},"end":{"line":28,"column":2}},"6":{"start":{"line":30,"column":28},"end":{"line":30,"column":45}},"7":{"start":{"line":31,"column":0},"end":{"line":38,"column":2}},"8":{"start":{"line":40,"column":28},"end":{"line":40,"column":45}},"9":{"start":{"line":41,"column":0},"end":{"line":48,"column":2}},"10":{"start":{"line":50,"column":27},"end":{"line":50,"column":44}},"11":{"start":{"line":51,"column":0},"end":{"line":58,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":52}},"line":9}},"branchMap":{},"s":{"0":1,"1":7,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":7},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2c520a64a3211dcf5af130853c6288438078cf1d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioField.js","statementMap":{"0":{"start":{"line":7,"column":28},"end":{"line":11,"column":8}},"1":{"start":{"line":12,"column":2},"end":{"line":47,"column":4}},"2":{"start":{"line":25,"column":10},"end":{"line":29,"column":11}},"3":{"start":{"line":42,"column":23},"end":{"line":42,"column":77}},"4":{"start":{"line":50,"column":0},"end":{"line":53,"column":2}},"5":{"start":{"line":55,"column":0},"end":{"line":114,"column":2}}},"fnMap":{"0":{"name":"RadioField","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":26}},"loc":{"start":{"line":6,"column":34},"end":{"line":48,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":18},"end":{"line":24,"column":19}},"loc":{"start":{"line":25,"column":10},"end":{"line":29,"column":11}},"line":25},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":17},"end":{"line":42,"column":18}},"loc":{"start":{"line":42,"column":23},"end":{"line":42,"column":77}},"line":42}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":28},"end":{"line":11,"column":8}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":10,"column":7}},{"start":{"line":11,"column":6},"end":{"line":11,"column":8}}],"line":7},"1":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":52}},"type":"cond-expr","locations":[{"start":{"line":15,"column":26},"end":{"line":15,"column":47}},{"start":{"line":15,"column":50},"end":{"line":15,"column":52}}],"line":15},"2":{"loc":{"start":{"line":26,"column":12},"end":{"line":26,"column":73}},"type":"cond-expr","locations":[{"start":{"line":26,"column":33},"end":{"line":26,"column":57}},{"start":{"line":26,"column":60},"end":{"line":26,"column":73}}],"line":26},"3":{"loc":{"start":{"line":32,"column":22},"end":{"line":32,"column":54}},"type":"cond-expr","locations":[{"start":{"line":32,"column":36},"end":{"line":32,"column":42}},{"start":{"line":32,"column":45},"end":{"line":32,"column":54}}],"line":32},"4":{"loc":{"start":{"line":39,"column":10},"end":{"line":39,"column":60}},"type":"cond-expr","locations":[{"start":{"line":39,"column":24},"end":{"line":39,"column":48}},{"start":{"line":39,"column":51},"end":{"line":39,"column":60}}],"line":39}},"s":{"0":8,"1":8,"2":1,"3":0,"4":9,"5":9},"f":{"0":8,"1":1,"2":0},"b":{"0":[8,0],"1":[0,8],"2":[0,1],"3":[0,8],"4":[0,8]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"de13ec0aa03f3c9b4a0470ea03f72a2868744a29"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/RadioField.stories.js","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"1":{"start":{"line":18,"column":17},"end":{"line":18,"column":51}},"2":{"start":{"line":18,"column":27},"end":{"line":18,"column":51}},"3":{"start":{"line":20,"column":25},"end":{"line":20,"column":42}},"4":{"start":{"line":21,"column":0},"end":{"line":27,"column":2}},"5":{"start":{"line":29,"column":23},"end":{"line":29,"column":40}},"6":{"start":{"line":30,"column":0},"end":{"line":37,"column":2}},"7":{"start":{"line":39,"column":28},"end":{"line":39,"column":45}},"8":{"start":{"line":40,"column":0},"end":{"line":47,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":51}},"line":18}},"branchMap":{},"s":{"0":0,"1":1,"2":4,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{"0":0,"1":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"40c839f92ae3fa3f0196f0c858f0787e214298cc"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SearchBar.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SearchBar.js","statementMap":{"0":{"start":{"line":7,"column":2},"end":{"line":30,"column":4}},"1":{"start":{"line":33,"column":0},"end":{"line":53,"column":2}}},"fnMap":{"0":{"name":"SearchBar","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":25}},"loc":{"start":{"line":6,"column":33},"end":{"line":31,"column":1}},"line":6}},"branchMap":{},"s":{"0":2,"1":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1c7b11853c0895522d3205862f5f974abf434d1a"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SearchBar.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SearchBar.stories.js","statementMap":{"0":{"start":{"line":8,"column":17},"end":{"line":8,"column":50}},"1":{"start":{"line":8,"column":27},"end":{"line":8,"column":50}},"2":{"start":{"line":10,"column":23},"end":{"line":10,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":14,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":50}},"line":8}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b14522770b9d5ffeedf778c1cb463c0259148758"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SelectField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SelectField.js","statementMap":{"0":{"start":{"line":6,"column":16},"end":{"line":6,"column":40}},"1":{"start":{"line":8,"column":28},"end":{"line":12,"column":8}},"2":{"start":{"line":14,"column":2},"end":{"line":19,"column":3}},"3":{"start":{"line":15,"column":4},"end":{"line":18,"column":7}},"4":{"start":{"line":16,"column":21},"end":{"line":16,"column":44}},"5":{"start":{"line":17,"column":6},"end":{"line":17,"column":74}},"6":{"start":{"line":21,"column":2},"end":{"line":81,"column":4}},"7":{"start":{"line":49,"column":25},"end":{"line":49,"column":62}},"8":{"start":{"line":61,"column":10},"end":{"line":65,"column":12}},"9":{"start":{"line":84,"column":0},"end":{"line":86,"column":2}},"10":{"start":{"line":88,"column":0},"end":{"line":166,"column":2}}},"fnMap":{"0":{"name":"SelectField","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":27}},"loc":{"start":{"line":5,"column":35},"end":{"line":82,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":23},"end":{"line":15,"column":24}},"loc":{"start":{"line":15,"column":39},"end":{"line":18,"column":5}},"line":15},"2":{"name":"(anonymous_2)","decl":{"start":{"line":49,"column":18},"end":{"line":49,"column":19}},"loc":{"start":{"line":49,"column":25},"end":{"line":49,"column":62}},"line":49},"3":{"name":"(anonymous_3)","decl":{"start":{"line":60,"column":27},"end":{"line":60,"column":28}},"loc":{"start":{"line":60,"column":52},"end":{"line":66,"column":9}},"line":60}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":28},"end":{"line":12,"column":8}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":11,"column":7}},{"start":{"line":12,"column":6},"end":{"line":12,"column":8}}],"line":8},"1":{"loc":{"start":{"line":14,"column":2},"end":{"line":19,"column":3}},"type":"if","locations":[{"start":{"line":14,"column":2},"end":{"line":19,"column":3}},{"start":{},"end":{}}],"line":14},"2":{"loc":{"start":{"line":24,"column":8},"end":{"line":24,"column":60}},"type":"cond-expr","locations":[{"start":{"line":24,"column":26},"end":{"line":24,"column":47}},{"start":{"line":24,"column":50},"end":{"line":24,"column":60}}],"line":24},"3":{"loc":{"start":{"line":29,"column":10},"end":{"line":29,"column":44}},"type":"cond-expr","locations":[{"start":{"line":29,"column":28},"end":{"line":29,"column":39}},{"start":{"line":29,"column":42},"end":{"line":29,"column":44}}],"line":29},"4":{"loc":{"start":{"line":33,"column":9},"end":{"line":37,"column":21}},"type":"cond-expr","locations":[{"start":{"line":34,"column":10},"end":{"line":36,"column":14}},{"start":{"line":37,"column":12},"end":{"line":37,"column":21}}],"line":33},"5":{"loc":{"start":{"line":40,"column":7},"end":{"line":40,"column":69}},"type":"cond-expr","locations":[{"start":{"line":40,"column":21},"end":{"line":40,"column":57}},{"start":{"line":40,"column":60},"end":{"line":40,"column":69}}],"line":40},"6":{"loc":{"start":{"line":43,"column":10},"end":{"line":43,"column":66}},"type":"cond-expr","locations":[{"start":{"line":43,"column":24},"end":{"line":43,"column":49}},{"start":{"line":43,"column":52},"end":{"line":43,"column":66}}],"line":43},"7":{"loc":{"start":{"line":48,"column":22},"end":{"line":48,"column":54}},"type":"cond-expr","locations":[{"start":{"line":48,"column":36},"end":{"line":48,"column":42}},{"start":{"line":48,"column":45},"end":{"line":48,"column":54}}],"line":48},"8":{"loc":{"start":{"line":67,"column":9},"end":{"line":78,"column":9}},"type":"cond-expr","locations":[{"start":{"line":68,"column":10},"end":{"line":75,"column":19}},{"start":{"line":77,"column":10},"end":{"line":77,"column":12}}],"line":67}},"s":{"0":2,"1":2,"2":2,"3":2,"4":6,"5":6,"6":2,"7":0,"8":8,"9":1,"10":1},"f":{"0":2,"1":6,"2":0,"3":8},"b":{"0":[0,2],"1":[2,0],"2":[0,2],"3":[0,2],"4":[0,2],"5":[0,2],"6":[0,2],"7":[0,2],"8":[0,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4dc778ca1dfa1c0d7baf591a568921dc91b2a23d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SelectField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/SelectField.stories.js","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"1":{"start":{"line":18,"column":17},"end":{"line":18,"column":52}},"2":{"start":{"line":18,"column":27},"end":{"line":18,"column":52}},"3":{"start":{"line":20,"column":23},"end":{"line":20,"column":40}},"4":{"start":{"line":21,"column":0},"end":{"line":49,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":52}},"line":18}},"branchMap":{},"s":{"0":0,"1":1,"2":2,"3":1,"4":1},"f":{"0":0,"1":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"060108a0034eb21826fa30a6ad9279201fe4fddc"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TableOfContents.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TableOfContents.js","statementMap":{"0":{"start":{"line":4,"column":2},"end":{"line":22,"column":4}},"1":{"start":{"line":10,"column":12},"end":{"line":17,"column":17}},"2":{"start":{"line":25,"column":0},"end":{"line":34,"column":2}}},"fnMap":{"0":{"name":"TableOfContents","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":31}},"loc":{"start":{"line":3,"column":39},"end":{"line":23,"column":1}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":30},"end":{"line":9,"column":31}},"loc":{"start":{"line":10,"column":12},"end":{"line":17,"column":17}},"line":10}},"branchMap":{},"s":{"0":2,"1":2,"2":1},"f":{"0":2,"1":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"68a381a6ebc5f43ebf320ffdab11375c92ed4354"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TableOfContents.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TableOfContents.stories.js","statementMap":{"0":{"start":{"line":8,"column":17},"end":{"line":8,"column":56}},"1":{"start":{"line":8,"column":27},"end":{"line":8,"column":56}},"2":{"start":{"line":10,"column":23},"end":{"line":10,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":15,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":56}},"line":8}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9b5f5e62a68e6c5d315200f938d93414f7e6477d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TextField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TextField.js","statementMap":{"0":{"start":{"line":9,"column":16},"end":{"line":9,"column":40}},"1":{"start":{"line":11,"column":28},"end":{"line":15,"column":8}},"2":{"start":{"line":16,"column":2},"end":{"line":68,"column":4}},"3":{"start":{"line":61,"column":25},"end":{"line":61,"column":62}},"4":{"start":{"line":71,"column":0},"end":{"line":74,"column":2}},"5":{"start":{"line":76,"column":0},"end":{"line":176,"column":2}}},"fnMap":{"0":{"name":"TextField","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":25}},"loc":{"start":{"line":8,"column":33},"end":{"line":69,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":61,"column":18},"end":{"line":61,"column":19}},"loc":{"start":{"line":61,"column":25},"end":{"line":61,"column":62}},"line":61}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":28},"end":{"line":15,"column":8}},"type":"cond-expr","locations":[{"start":{"line":12,"column":6},"end":{"line":14,"column":7}},{"start":{"line":15,"column":6},"end":{"line":15,"column":8}}],"line":11},"1":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":60}},"type":"cond-expr","locations":[{"start":{"line":19,"column":26},"end":{"line":19,"column":47}},{"start":{"line":19,"column":50},"end":{"line":19,"column":60}}],"line":19},"2":{"loc":{"start":{"line":24,"column":10},"end":{"line":24,"column":44}},"type":"cond-expr","locations":[{"start":{"line":24,"column":28},"end":{"line":24,"column":39}},{"start":{"line":24,"column":42},"end":{"line":24,"column":44}}],"line":24},"3":{"loc":{"start":{"line":28,"column":9},"end":{"line":32,"column":21}},"type":"cond-expr","locations":[{"start":{"line":29,"column":10},"end":{"line":31,"column":14}},{"start":{"line":32,"column":12},"end":{"line":32,"column":21}}],"line":28},"4":{"loc":{"start":{"line":35,"column":7},"end":{"line":44,"column":7}},"type":"cond-expr","locations":[{"start":{"line":36,"column":8},"end":{"line":41,"column":12}},{"start":{"line":43,"column":8},"end":{"line":43,"column":10}}],"line":35},"5":{"loc":{"start":{"line":46,"column":7},"end":{"line":46,"column":69}},"type":"cond-expr","locations":[{"start":{"line":46,"column":21},"end":{"line":46,"column":57}},{"start":{"line":46,"column":60},"end":{"line":46,"column":69}}],"line":46},"6":{"loc":{"start":{"line":49,"column":10},"end":{"line":49,"column":66}},"type":"cond-expr","locations":[{"start":{"line":49,"column":24},"end":{"line":49,"column":49}},{"start":{"line":49,"column":52},"end":{"line":49,"column":66}}],"line":49},"7":{"loc":{"start":{"line":50,"column":12},"end":{"line":50,"column":42}},"type":"cond-expr","locations":[{"start":{"line":50,"column":28},"end":{"line":50,"column":37}},{"start":{"line":50,"column":40},"end":{"line":50,"column":42}}],"line":50},"8":{"loc":{"start":{"line":60,"column":22},"end":{"line":60,"column":54}},"type":"cond-expr","locations":[{"start":{"line":60,"column":36},"end":{"line":60,"column":42}},{"start":{"line":60,"column":45},"end":{"line":60,"column":54}}],"line":60}},"s":{"0":6,"1":6,"2":6,"3":2,"4":8,"5":8},"f":{"0":6,"1":2},"b":{"0":[3,3],"1":[0,6],"2":[1,5],"3":[0,6],"4":[0,6],"5":[0,6],"6":[0,6],"7":[0,6],"8":[0,6]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1a8f30eccaa3fc9476a969a54bfed456c34118a9"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TextField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/TextField.stories.js","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"1":{"start":{"line":18,"column":17},"end":{"line":18,"column":50}},"2":{"start":{"line":18,"column":27},"end":{"line":18,"column":50}},"3":{"start":{"line":20,"column":23},"end":{"line":20,"column":40}},"4":{"start":{"line":21,"column":0},"end":{"line":27,"column":2}},"5":{"start":{"line":29,"column":28},"end":{"line":29,"column":45}},"6":{"start":{"line":30,"column":0},"end":{"line":37,"column":2}},"7":{"start":{"line":39,"column":25},"end":{"line":39,"column":42}},"8":{"start":{"line":40,"column":0},"end":{"line":48,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":50}},"line":18}},"branchMap":{},"s":{"0":0,"1":1,"2":4,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{"0":0,"1":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"12a7fb839353e64f3383019a4f7a402276bee374"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CallToAction.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CallToAction.js","statementMap":{"0":{"start":{"line":10,"column":16},"end":{"line":10,"column":40}},"1":{"start":{"line":11,"column":2},"end":{"line":78,"column":4}},"2":{"start":{"line":81,"column":0},"end":{"line":120,"column":2}}},"fnMap":{"0":{"name":"CallToAction","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":28}},"loc":{"start":{"line":9,"column":36},"end":{"line":79,"column":1}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":15},"end":{"line":43,"column":15}},"type":"cond-expr","locations":[{"start":{"line":30,"column":16},"end":{"line":37,"column":22}},{"start":{"line":39,"column":16},"end":{"line":42,"column":18}}],"line":29},"1":{"loc":{"start":{"line":53,"column":22},"end":{"line":59,"column":35}},"type":"cond-expr","locations":[{"start":{"line":54,"column":24},"end":{"line":58,"column":26}},{"start":{"line":59,"column":26},"end":{"line":59,"column":35}}],"line":53},"2":{"loc":{"start":{"line":61,"column":29},"end":{"line":61,"column":77}},"type":"cond-expr","locations":[{"start":{"line":61,"column":52},"end":{"line":61,"column":65}},{"start":{"line":61,"column":68},"end":{"line":61,"column":77}}],"line":61},"3":{"loc":{"start":{"line":65,"column":17},"end":{"line":71,"column":17}},"type":"binary-expr","locations":[{"start":{"line":65,"column":17},"end":{"line":65,"column":38}},{"start":{"line":66,"column":18},"end":{"line":70,"column":25}}],"line":65}},"s":{"0":3,"1":3,"2":1},"f":{"0":3},"b":{"0":[2,1],"1":[0,3],"2":[0,3],"3":[3,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"701b2d8f9c3aaea66bfec407c38907a7a12016bc"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CallToAction.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CallToAction.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":53}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":53}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":12,"column":25},"end":{"line":12,"column":42}},"4":{"start":{"line":13,"column":0},"end":{"line":18,"column":2}},"5":{"start":{"line":20,"column":0},"end":{"line":25,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":53}},"line":9}},"branchMap":{},"s":{"0":1,"1":3,"2":1,"3":1,"4":1,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c1699a0be85431a85e768f472a24920d5138096d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Card.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Card.js","statementMap":{"0":{"start":{"line":10,"column":20},"end":{"line":90,"column":1}},"1":{"start":{"line":11,"column":21},"end":{"line":16,"column":3}},"2":{"start":{"line":18,"column":20},"end":{"line":18,"column":58}},"3":{"start":{"line":20,"column":2},"end":{"line":89,"column":4}},"4":{"start":{"line":92,"column":0},"end":{"line":152,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":20},"end":{"line":10,"column":21}},"loc":{"start":{"line":10,"column":31},"end":{"line":90,"column":1}},"line":10}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":20},"end":{"line":18,"column":58}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":41}},{"start":{"line":18,"column":45},"end":{"line":18,"column":58}}],"line":18},"1":{"loc":{"start":{"line":29,"column":9},"end":{"line":39,"column":9}},"type":"cond-expr","locations":[{"start":{"line":30,"column":10},"end":{"line":36,"column":16}},{"start":{"line":38,"column":10},"end":{"line":38,"column":12}}],"line":29},"2":{"loc":{"start":{"line":43,"column":13},"end":{"line":53,"column":13}},"type":"cond-expr","locations":[{"start":{"line":44,"column":14},"end":{"line":50,"column":15}},{"start":{"line":52,"column":14},"end":{"line":52,"column":16}}],"line":43},"3":{"loc":{"start":{"line":44,"column":14},"end":{"line":50,"column":15}},"type":"cond-expr","locations":[{"start":{"line":45,"column":16},"end":{"line":47,"column":22}},{"start":{"line":49,"column":16},"end":{"line":49,"column":18}}],"line":44},"4":{"loc":{"start":{"line":55,"column":11},"end":{"line":64,"column":11}},"type":"cond-expr","locations":[{"start":{"line":56,"column":12},"end":{"line":61,"column":19}},{"start":{"line":63,"column":12},"end":{"line":63,"column":14}}],"line":55},"5":{"loc":{"start":{"line":66,"column":9},"end":{"line":72,"column":9}},"type":"cond-expr","locations":[{"start":{"line":67,"column":10},"end":{"line":69,"column":14}},{"start":{"line":71,"column":10},"end":{"line":71,"column":12}}],"line":66},"6":{"loc":{"start":{"line":76,"column":9},"end":{"line":86,"column":9}},"type":"cond-expr","locations":[{"start":{"line":77,"column":10},"end":{"line":83,"column":12}},{"start":{"line":85,"column":10},"end":{"line":85,"column":12}}],"line":76}},"s":{"0":3,"1":5,"2":5,"3":5,"4":3},"f":{"0":5},"b":{"0":[5,4],"1":[2,3],"2":[0,5],"3":[0,0],"4":[2,3],"5":[0,5],"6":[0,5]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"547337aa56fa93f3781e7e8abbc6f8ac07bf81e0"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Card.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Card.stories.js","statementMap":{"0":{"start":{"line":10,"column":17},"end":{"line":10,"column":45}},"1":{"start":{"line":10,"column":27},"end":{"line":10,"column":45}},"2":{"start":{"line":12,"column":23},"end":{"line":12,"column":40}},"3":{"start":{"line":13,"column":23},"end":{"line":13,"column":40}},"4":{"start":{"line":14,"column":25},"end":{"line":14,"column":42}},"5":{"start":{"line":15,"column":24},"end":{"line":15,"column":41}},"6":{"start":{"line":16,"column":26},"end":{"line":16,"column":43}},"7":{"start":{"line":18,"column":0},"end":{"line":24,"column":2}},"8":{"start":{"line":26,"column":0},"end":{"line":33,"column":2}},"9":{"start":{"line":35,"column":0},"end":{"line":42,"column":2}},"10":{"start":{"line":44,"column":0},"end":{"line":50,"column":2}},"11":{"start":{"line":52,"column":0},"end":{"line":59,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":17},"end":{"line":10,"column":18}},"loc":{"start":{"line":10,"column":27},"end":{"line":10,"column":45}},"line":10}},"branchMap":{},"s":{"0":1,"1":3,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2e2da0fb3a6abb851564ef1a45a237bf31baebf8"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CopyToClipboard.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CopyToClipboard.js","statementMap":{"0":{"start":{"line":6,"column":28},"end":{"line":10,"column":8}},"1":{"start":{"line":11,"column":2},"end":{"line":36,"column":4}},"2":{"start":{"line":20,"column":25},"end":{"line":20,"column":62}},"3":{"start":{"line":39,"column":0},"end":{"line":42,"column":2}},"4":{"start":{"line":44,"column":0},"end":{"line":136,"column":2}}},"fnMap":{"0":{"name":"CopyToClipboard","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":31}},"loc":{"start":{"line":5,"column":39},"end":{"line":37,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":18},"end":{"line":20,"column":19}},"loc":{"start":{"line":20,"column":25},"end":{"line":20,"column":62}},"line":20}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":28},"end":{"line":10,"column":8}},"type":"cond-expr","locations":[{"start":{"line":7,"column":6},"end":{"line":9,"column":7}},{"start":{"line":10,"column":6},"end":{"line":10,"column":8}}],"line":6}},"s":{"0":4,"1":4,"2":1,"3":2,"4":2},"f":{"0":4,"1":1},"b":{"0":[4,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"bc0835bff11bd3549e57ce3e31aa35254945bcef"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CopyToClipboard.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CopyToClipboard.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":56}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":56}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":13,"column":0},"end":{"line":22,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":56}},"line":9}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3f25d214d88bdfd33845b3eb47504df5a4cace87"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Details.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Details.js","statementMap":{"0":{"start":{"line":7,"column":2},"end":{"line":16,"column":4}},"1":{"start":{"line":19,"column":0},"end":{"line":44,"column":2}}},"fnMap":{"0":{"name":"Details","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":23}},"loc":{"start":{"line":6,"column":31},"end":{"line":17,"column":1}},"line":6}},"branchMap":{},"s":{"0":22,"1":7},"f":{"0":22},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b7785466445b9cf9d425d3edb22f24479f342d90"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Details.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Details.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":48}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":48}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":17,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":48}},"line":9}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d9b80512d9456e87f718ae7bea687ae8676a0f0f"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ErrorBox.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ErrorBox.js","statementMap":{"0":{"start":{"line":8,"column":2},"end":{"line":40,"column":4}},"1":{"start":{"line":24,"column":10},"end":{"line":36,"column":12}},"2":{"start":{"line":29,"column":31},"end":{"line":29,"column":48}},"3":{"start":{"line":43,"column":0},"end":{"line":45,"column":2}},"4":{"start":{"line":47,"column":0},"end":{"line":69,"column":2}}},"fnMap":{"0":{"name":"ErrorBox","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":24}},"loc":{"start":{"line":7,"column":32},"end":{"line":41,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":26},"end":{"line":23,"column":27}},"loc":{"start":{"line":23,"column":44},"end":{"line":37,"column":9}},"line":23},"2":{"name":"(anonymous_2)","decl":{"start":{"line":29,"column":25},"end":{"line":29,"column":26}},"loc":{"start":{"line":29,"column":31},"end":{"line":29,"column":48}},"line":29}},"branchMap":{},"s":{"0":3,"1":9,"2":1,"3":1,"4":1},"f":{"0":3,"1":9,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"68c79e4beeff3c91f01aff07e957d98f66d347c7"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ErrorBox.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ErrorBox.stories.js","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":16,"column":12}},"1":{"start":{"line":21,"column":17},"end":{"line":21,"column":49}},"2":{"start":{"line":21,"column":27},"end":{"line":21,"column":49}},"3":{"start":{"line":23,"column":23},"end":{"line":23,"column":40}},"4":{"start":{"line":25,"column":0},"end":{"line":41,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":9,"column":6},"end":{"line":16,"column":12}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":17},"end":{"line":21,"column":18}},"loc":{"start":{"line":21,"column":27},"end":{"line":21,"column":49}},"line":21}},"branchMap":{},"s":{"0":0,"1":1,"2":3,"3":1,"4":1},"f":{"0":0,"1":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a226db6b059163ad7eaef7f35808bf4e70453faf"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/FeedbackWidget.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/FeedbackWidget.js","statementMap":{"0":{"start":{"line":15,"column":30},"end":{"line":298,"column":1}},"1":{"start":{"line":21,"column":36},"end":{"line":21,"column":51}},"2":{"start":{"line":22,"column":44},"end":{"line":22,"column":59}},"3":{"start":{"line":23,"column":16},"end":{"line":23,"column":40}},"4":{"start":{"line":24,"column":34},"end":{"line":24,"column":65}},"5":{"start":{"line":25,"column":16},"end":{"line":25,"column":69}},"6":{"start":{"line":26,"column":28},"end":{"line":26,"column":42}},"7":{"start":{"line":27,"column":18},"end":{"line":27,"column":22}},"8":{"start":{"line":29,"column":2},"end":{"line":29,"column":27}},"9":{"start":{"line":31,"column":2},"end":{"line":36,"column":21}},"10":{"start":{"line":32,"column":4},"end":{"line":35,"column":5}},"11":{"start":{"line":33,"column":6},"end":{"line":33,"column":27}},"12":{"start":{"line":34,"column":6},"end":{"line":34,"column":22}},"13":{"start":{"line":39,"column":21},"end":{"line":55,"column":4}},"14":{"start":{"line":43,"column":8},"end":{"line":52,"column":11}},"15":{"start":{"line":44,"column":10},"end":{"line":51,"column":11}},"16":{"start":{"line":46,"column":14},"end":{"line":46,"column":52}},"17":{"start":{"line":47,"column":14},"end":{"line":47,"column":20}},"18":{"start":{"line":49,"column":14},"end":{"line":49,"column":52}},"19":{"start":{"line":50,"column":14},"end":{"line":50,"column":20}},"20":{"start":{"line":53,"column":8},"end":{"line":53,"column":22}},"21":{"start":{"line":58,"column":4},"end":{"line":58,"column":54}},"22":{"start":{"line":61,"column":34},"end":{"line":61,"column":46}},"23":{"start":{"line":62,"column":44},"end":{"line":62,"column":56}},"24":{"start":{"line":63,"column":25},"end":{"line":69,"column":4}},"25":{"start":{"line":71,"column":24},"end":{"line":119,"column":3}},"26":{"start":{"line":73,"column":4},"end":{"line":73,"column":23}},"27":{"start":{"line":75,"column":4},"end":{"line":75,"column":31}},"28":{"start":{"line":77,"column":21},"end":{"line":77,"column":33}},"29":{"start":{"line":79,"column":26},"end":{"line":79,"column":58}},"30":{"start":{"line":81,"column":4},"end":{"line":85,"column":6}},"31":{"start":{"line":88,"column":22},"end":{"line":91,"column":6}},"32":{"start":{"line":92,"column":18},"end":{"line":92,"column":37}},"33":{"start":{"line":94,"column":4},"end":{"line":118,"column":5}},"34":{"start":{"line":96,"column":23},"end":{"line":102,"column":8}},"35":{"start":{"line":105,"column":6},"end":{"line":111,"column":7}},"36":{"start":{"line":106,"column":8},"end":{"line":106,"column":49}},"37":{"start":{"line":107,"column":8},"end":{"line":107,"column":24}},"38":{"start":{"line":108,"column":8},"end":{"line":108,"column":23}},"39":{"start":{"line":110,"column":8},"end":{"line":110,"column":46}},"40":{"start":{"line":113,"column":6},"end":{"line":113,"column":25}},"41":{"start":{"line":114,"column":6},"end":{"line":114,"column":30}},"42":{"start":{"line":115,"column":6},"end":{"line":115,"column":28}},"43":{"start":{"line":117,"column":6},"end":{"line":117,"column":38}},"44":{"start":{"line":121,"column":2},"end":{"line":297,"column":4}},"45":{"start":{"line":176,"column":43},"end":{"line":176,"column":65}},"46":{"start":{"line":202,"column":22},"end":{"line":202,"column":35}},"47":{"start":{"line":203,"column":22},"end":{"line":203,"column":37}},"48":{"start":{"line":272,"column":37},"end":{"line":272,"column":71}},"49":{"start":{"line":274,"column":22},"end":{"line":274,"column":72}},"50":{"start":{"line":300,"column":0},"end":{"line":305,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":15,"column":30},"end":{"line":15,"column":31}},"loc":{"start":{"line":20,"column":6},"end":{"line":298,"column":1}},"line":20},"1":{"name":"(anonymous_1)","decl":{"start":{"line":31,"column":12},"end":{"line":31,"column":13}},"loc":{"start":{"line":31,"column":18},"end":{"line":36,"column":3}},"line":31},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":13},"end":{"line":42,"column":14}},"loc":{"start":{"line":42,"column":25},"end":{"line":54,"column":7}},"line":42},"3":{"name":"(anonymous_3)","decl":{"start":{"line":43,"column":23},"end":{"line":43,"column":24}},"loc":{"start":{"line":43,"column":34},"end":{"line":52,"column":9}},"line":43},"4":{"name":"setFocusAfterSubmit","decl":{"start":{"line":57,"column":11},"end":{"line":57,"column":30}},"loc":{"start":{"line":57,"column":33},"end":{"line":59,"column":3}},"line":57},"5":{"name":"(anonymous_5)","decl":{"start":{"line":71,"column":24},"end":{"line":71,"column":25}},"loc":{"start":{"line":71,"column":37},"end":{"line":119,"column":3}},"line":71},"6":{"name":"(anonymous_6)","decl":{"start":{"line":176,"column":37},"end":{"line":176,"column":38}},"loc":{"start":{"line":176,"column":43},"end":{"line":176,"column":65}},"line":176},"7":{"name":"(anonymous_7)","decl":{"start":{"line":201,"column":29},"end":{"line":201,"column":30}},"loc":{"start":{"line":201,"column":35},"end":{"line":204,"column":21}},"line":201},"8":{"name":"(anonymous_8)","decl":{"start":{"line":272,"column":30},"end":{"line":272,"column":31}},"loc":{"start":{"line":272,"column":37},"end":{"line":272,"column":71}},"line":272},"9":{"name":"(anonymous_9)","decl":{"start":{"line":273,"column":29},"end":{"line":273,"column":30}},"loc":{"start":{"line":274,"column":22},"end":{"line":274,"column":72}},"line":274}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":4},"end":{"line":35,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":35,"column":5}},{"start":{},"end":{}}],"line":32},"1":{"loc":{"start":{"line":44,"column":10},"end":{"line":51,"column":11}},"type":"switch","locations":[{"start":{"line":45,"column":12},"end":{"line":47,"column":20}},{"start":{"line":48,"column":12},"end":{"line":50,"column":20}}],"line":44},"2":{"loc":{"start":{"line":94,"column":4},"end":{"line":118,"column":5}},"type":"if","locations":[{"start":{"line":94,"column":4},"end":{"line":118,"column":5}},{"start":{"line":116,"column":11},"end":{"line":118,"column":5}}],"line":94},"3":{"loc":{"start":{"line":105,"column":6},"end":{"line":111,"column":7}},"type":"if","locations":[{"start":{"line":105,"column":6},"end":{"line":111,"column":7}},{"start":{"line":109,"column":13},"end":{"line":111,"column":7}}],"line":105},"4":{"loc":{"start":{"line":105,"column":10},"end":{"line":105,"column":60}},"type":"binary-expr","locations":[{"start":{"line":105,"column":10},"end":{"line":105,"column":33}},{"start":{"line":105,"column":37},"end":{"line":105,"column":60}}],"line":105},"5":{"loc":{"start":{"line":123,"column":7},"end":{"line":295,"column":7}},"type":"cond-expr","locations":[{"start":{"line":124,"column":8},"end":{"line":292,"column":20}},{"start":{"line":294,"column":8},"end":{"line":294,"column":10}}],"line":123},"6":{"loc":{"start":{"line":138,"column":15},"end":{"line":188,"column":15}},"type":"cond-expr","locations":[{"start":{"line":139,"column":16},"end":{"line":185,"column":22}},{"start":{"line":187,"column":16},"end":{"line":187,"column":18}}],"line":138},"7":{"loc":{"start":{"line":140,"column":19},"end":{"line":184,"column":19}},"type":"cond-expr","locations":[{"start":{"line":141,"column":20},"end":{"line":181,"column":26}},{"start":{"line":183,"column":20},"end":{"line":183,"column":22}}],"line":140},"8":{"loc":{"start":{"line":143,"column":24},"end":{"line":145,"column":45}},"type":"cond-expr","locations":[{"start":{"line":144,"column":28},"end":{"line":144,"column":62}},{"start":{"line":145,"column":28},"end":{"line":145,"column":45}}],"line":143},"9":{"loc":{"start":{"line":151,"column":27},"end":{"line":163,"column":27}},"type":"cond-expr","locations":[{"start":{"line":152,"column":28},"end":{"line":160,"column":30}},{"start":{"line":162,"column":28},"end":{"line":162,"column":30}}],"line":151},"10":{"loc":{"start":{"line":256,"column":19},"end":{"line":261,"column":31}},"type":"cond-expr","locations":[{"start":{"line":257,"column":20},"end":{"line":260,"column":22}},{"start":{"line":261,"column":22},"end":{"line":261,"column":31}}],"line":256}},"s":{"0":5,"1":10,"2":10,"3":10,"4":10,"5":10,"6":10,"7":10,"8":10,"9":10,"10":7,"11":2,"12":2,"13":10,"14":1,"15":1,"16":0,"17":0,"18":1,"19":1,"20":1,"21":0,"22":10,"23":10,"24":10,"25":10,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":1,"44":10,"45":0,"46":0,"47":0,"48":0,"49":0,"50":5},"f":{"0":10,"1":7,"2":1,"3":1,"4":0,"5":1,"6":0,"7":0,"8":0,"9":0},"b":{"0":[2,5],"1":[0,1],"2":[0,1],"3":[0,0],"4":[0,0],"5":[8,2],"6":[0,8],"7":[0,0],"8":[0,0],"9":[0,0],"10":[2,6]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7c9bbc108b79ed0c1303fb4cb1f591b77f28c48e"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/FeedbackWidget.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/FeedbackWidget.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":55}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":55}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":13,"column":0},"end":{"line":15,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":55}},"line":9}},"branchMap":{},"s":{"0":1,"1":4,"2":1,"3":1},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6b6f2eadbe1fec75f27756a267a16670b063bffc"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Filter.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Filter.js","statementMap":{"0":{"start":{"line":8,"column":2},"end":{"line":37,"column":4}},"1":{"start":{"line":20,"column":12},"end":{"line":32,"column":14}},"2":{"start":{"line":40,"column":0},"end":{"line":71,"column":2}}},"fnMap":{"0":{"name":"Filter","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":22}},"loc":{"start":{"line":7,"column":30},"end":{"line":38,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":19,"column":29},"end":{"line":19,"column":30}},"loc":{"start":{"line":20,"column":12},"end":{"line":32,"column":14}},"line":20}},"branchMap":{},"s":{"0":3,"1":9,"2":1},"f":{"0":3,"1":9},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"aef3568eb5c66a96c8f276114a7001150da0736f"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Filter.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Filter.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":47}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":47}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":13,"column":0},"end":{"line":32,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":47}},"line":9}},"branchMap":{},"s":{"0":1,"1":3,"2":1,"3":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c762a8a9368b4123c4a4288b8970dfb2a5c009c8"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/List.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/List.js","statementMap":{"0":{"start":{"line":7,"column":16},"end":{"line":7,"column":18}},"1":{"start":{"line":8,"column":2},"end":{"line":28,"column":4}},"2":{"start":{"line":12,"column":10},"end":{"line":14,"column":207}},"3":{"start":{"line":15,"column":8},"end":{"line":15,"column":41}},"4":{"start":{"line":15,"column":27},"end":{"line":15,"column":41}},"5":{"start":{"line":16,"column":8},"end":{"line":25,"column":10}},"6":{"start":{"line":31,"column":0},"end":{"line":41,"column":2}}},"fnMap":{"0":{"name":"List","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":20}},"loc":{"start":{"line":6,"column":28},"end":{"line":29,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":23},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":38},"end":{"line":26,"column":7}},"line":10}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":41}},"type":"if","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":41}},{"start":{},"end":{}}],"line":15}},"s":{"0":2,"1":2,"2":8,"3":8,"4":6,"5":8,"6":1},"f":{"0":2,"1":8},"b":{"0":[6,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3cb766608b38c074a7a94543bdfb38ee36403255"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/List.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/List.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":50}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":50}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":13,"column":0},"end":{"line":15,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":50}},"line":9}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1e7a6692400a128558ca0d2321cca60adec2b65d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Menu.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Menu.js","statementMap":{"0":{"start":{"line":11,"column":21},"end":{"line":11,"column":32}},"1":{"start":{"line":12,"column":17},"end":{"line":12,"column":28}},"2":{"start":{"line":13,"column":34},"end":{"line":13,"column":49}},"3":{"start":{"line":15,"column":2},"end":{"line":91,"column":4}},"4":{"start":{"line":29,"column":25},"end":{"line":29,"column":47}},"5":{"start":{"line":44,"column":25},"end":{"line":44,"column":47}},"6":{"start":{"line":64,"column":27},"end":{"line":64,"column":47}},"7":{"start":{"line":65,"column":30},"end":{"line":65,"column":56}},"8":{"start":{"line":67,"column":10},"end":{"line":87,"column":12}},"9":{"start":{"line":94,"column":0},"end":{"line":121,"column":2}}},"fnMap":{"0":{"name":"Menu","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":20}},"loc":{"start":{"line":9,"column":28},"end":{"line":92,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":19},"end":{"line":29,"column":20}},"loc":{"start":{"line":29,"column":25},"end":{"line":29,"column":47}},"line":29},"2":{"name":"(anonymous_2)","decl":{"start":{"line":44,"column":19},"end":{"line":44,"column":20}},"loc":{"start":{"line":44,"column":25},"end":{"line":44,"column":47}},"line":44},"3":{"name":"(anonymous_3)","decl":{"start":{"line":63,"column":25},"end":{"line":63,"column":26}},"loc":{"start":{"line":63,"column":40},"end":{"line":88,"column":9}},"line":63}},"branchMap":{"0":{"loc":{"start":{"line":46,"column":12},"end":{"line":46,"column":36}},"type":"cond-expr","locations":[{"start":{"line":46,"column":23},"end":{"line":46,"column":25}},{"start":{"line":46,"column":28},"end":{"line":46,"column":36}}],"line":46},"1":{"loc":{"start":{"line":59,"column":40},"end":{"line":59,"column":64}},"type":"cond-expr","locations":[{"start":{"line":59,"column":51},"end":{"line":59,"column":59}},{"start":{"line":59,"column":62},"end":{"line":59,"column":64}}],"line":59},"2":{"loc":{"start":{"line":72,"column":28},"end":{"line":72,"column":52}},"type":"cond-expr","locations":[{"start":{"line":72,"column":39},"end":{"line":72,"column":45}},{"start":{"line":72,"column":48},"end":{"line":72,"column":52}}],"line":72},"3":{"loc":{"start":{"line":77,"column":18},"end":{"line":81,"column":42}},"type":"cond-expr","locations":[{"start":{"line":78,"column":22},"end":{"line":80,"column":44}},{"start":{"line":81,"column":22},"end":{"line":81,"column":42}}],"line":77},"4":{"loc":{"start":{"line":78,"column":22},"end":{"line":80,"column":44}},"type":"cond-expr","locations":[{"start":{"line":79,"column":24},"end":{"line":79,"column":36}},{"start":{"line":80,"column":24},"end":{"line":80,"column":44}}],"line":78}},"s":{"0":4,"1":4,"2":4,"3":4,"4":1,"5":0,"6":12,"7":12,"8":12,"9":1},"f":{"0":4,"1":1,"2":0,"3":12},"b":{"0":[1,3],"1":[1,3],"2":[0,12],"3":[0,12],"4":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"017be5d76b5cc3d4b08235e441f7893c6fba411a"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Menu.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Menu.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":50}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":50}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":13,"column":0},"end":{"line":30,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":50}},"line":9}},"branchMap":{},"s":{"0":1,"1":3,"2":1,"3":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"273a087b74d37e318558be5b9103e3bcb24a8728"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalListField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalListField.js","statementMap":{"0":{"start":{"line":10,"column":42},"end":{"line":10,"column":74}},"1":{"start":{"line":11,"column":26},"end":{"line":21,"column":3}},"2":{"start":{"line":12,"column":4},"end":{"line":16,"column":5}},"3":{"start":{"line":13,"column":6},"end":{"line":13,"column":30}},"4":{"start":{"line":15,"column":6},"end":{"line":15,"column":29}},"5":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"6":{"start":{"line":19,"column":6},"end":{"line":19,"column":53}},"7":{"start":{"line":22,"column":23},"end":{"line":30,"column":4}},"8":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"9":{"start":{"line":24,"column":6},"end":{"line":24,"column":16}},"10":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"11":{"start":{"line":27,"column":6},"end":{"line":27,"column":15}},"12":{"start":{"line":29,"column":4},"end":{"line":29,"column":13}},"13":{"start":{"line":31,"column":2},"end":{"line":76,"column":4}},"14":{"start":{"line":79,"column":0},"end":{"line":81,"column":2}},"15":{"start":{"line":83,"column":0},"end":{"line":152,"column":2}}},"fnMap":{"0":{"name":"OptionalListField","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":33}},"loc":{"start":{"line":9,"column":41},"end":{"line":77,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":26},"end":{"line":11,"column":27}},"loc":{"start":{"line":11,"column":55},"end":{"line":21,"column":3}},"line":11},"2":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":48},"end":{"line":22,"column":49}},"loc":{"start":{"line":22,"column":58},"end":{"line":30,"column":3}},"line":22}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":51},"end":{"line":10,"column":73}},"type":"binary-expr","locations":[{"start":{"line":10,"column":51},"end":{"line":10,"column":64}},{"start":{"line":10,"column":68},"end":{"line":10,"column":73}}],"line":10},"1":{"loc":{"start":{"line":12,"column":4},"end":{"line":16,"column":5}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":16,"column":5}},{"start":{"line":14,"column":11},"end":{"line":16,"column":5}}],"line":12},"2":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},{"start":{},"end":{}}],"line":18},"3":{"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},{"start":{},"end":{}}],"line":23},"4":{"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},{"start":{},"end":{}}],"line":26},"5":{"loc":{"start":{"line":33,"column":7},"end":{"line":59,"column":7}},"type":"cond-expr","locations":[{"start":{"line":34,"column":8},"end":{"line":45,"column":10}},{"start":{"line":47,"column":8},"end":{"line":58,"column":10}}],"line":33},"6":{"loc":{"start":{"line":60,"column":7},"end":{"line":74,"column":19}},"type":"cond-expr","locations":[{"start":{"line":61,"column":8},"end":{"line":73,"column":19}},{"start":{"line":74,"column":10},"end":{"line":74,"column":19}}],"line":60},"7":{"loc":{"start":{"line":60,"column":7},"end":{"line":60,"column":61}},"type":"binary-expr","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":26}},{"start":{"line":60,"column":30},"end":{"line":60,"column":43}},{"start":{"line":60,"column":48},"end":{"line":60,"column":61}}],"line":60},"8":{"loc":{"start":{"line":63,"column":13},"end":{"line":69,"column":13}},"type":"cond-expr","locations":[{"start":{"line":64,"column":14},"end":{"line":66,"column":18}},{"start":{"line":68,"column":14},"end":{"line":68,"column":16}}],"line":63}},"s":{"0":5,"1":5,"2":1,"3":0,"4":1,"5":1,"6":0,"7":5,"8":5,"9":0,"10":5,"11":5,"12":0,"13":5,"14":1,"15":1},"f":{"0":5,"1":1,"2":5},"b":{"0":[5,2],"1":[0,1],"2":[0,1],"3":[0,5],"4":[5,0],"5":[4,1],"6":[4,1],"7":[5,2,4],"8":[0,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"20032f32f71d27ef13f957aad41220bdd865b533"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalListField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalListField.stories.js","statementMap":{"0":{"start":{"line":11,"column":6},"end":{"line":15,"column":12}},"1":{"start":{"line":20,"column":17},"end":{"line":20,"column":58}},"2":{"start":{"line":20,"column":27},"end":{"line":20,"column":58}},"3":{"start":{"line":22,"column":24},"end":{"line":22,"column":41}},"4":{"start":{"line":23,"column":0},"end":{"line":46,"column":2}},"5":{"start":{"line":48,"column":33},"end":{"line":48,"column":50}},"6":{"start":{"line":49,"column":0},"end":{"line":74,"column":2}},"7":{"start":{"line":76,"column":34},"end":{"line":76,"column":51}},"8":{"start":{"line":77,"column":0},"end":{"line":102,"column":2}},"9":{"start":{"line":104,"column":21},"end":{"line":104,"column":38}},"10":{"start":{"line":105,"column":0},"end":{"line":131,"column":2}},"11":{"start":{"line":133,"column":28},"end":{"line":133,"column":45}},"12":{"start":{"line":134,"column":0},"end":{"line":159,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":11,"column":6},"end":{"line":15,"column":12}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":17},"end":{"line":20,"column":18}},"loc":{"start":{"line":20,"column":27},"end":{"line":20,"column":58}},"line":20}},"branchMap":{},"s":{"0":0,"1":1,"2":4,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"f":{"0":0,"1":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"488f3b8e9b9cc8ad570af097ab24034216c0a6ac"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalTextField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalTextField.js","statementMap":{"0":{"start":{"line":13,"column":42},"end":{"line":13,"column":74}},"1":{"start":{"line":14,"column":40},"end":{"line":14,"column":61}},"2":{"start":{"line":15,"column":16},"end":{"line":15,"column":40}},"3":{"start":{"line":16,"column":26},"end":{"line":28,"column":3}},"4":{"start":{"line":17,"column":4},"end":{"line":23,"column":5}},"5":{"start":{"line":18,"column":6},"end":{"line":18,"column":30}},"6":{"start":{"line":19,"column":6},"end":{"line":19,"column":37}},"7":{"start":{"line":21,"column":6},"end":{"line":21,"column":29}},"8":{"start":{"line":22,"column":6},"end":{"line":22,"column":36}},"9":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"10":{"start":{"line":26,"column":6},"end":{"line":26,"column":53}},"11":{"start":{"line":29,"column":2},"end":{"line":103,"column":4}},"12":{"start":{"line":106,"column":0},"end":{"line":108,"column":2}},"13":{"start":{"line":110,"column":0},"end":{"line":264,"column":2}}},"fnMap":{"0":{"name":"OptionalTextField","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":33}},"loc":{"start":{"line":12,"column":41},"end":{"line":104,"column":1}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":26},"end":{"line":16,"column":27}},"loc":{"start":{"line":16,"column":55},"end":{"line":28,"column":3}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":76,"column":66},"end":{"line":76,"column":67}},"loc":{"start":{"line":76,"column":72},"end":{"line":76,"column":74}},"line":76},"3":{"name":"(anonymous_3)","decl":{"start":{"line":94,"column":66},"end":{"line":94,"column":67}},"loc":{"start":{"line":94,"column":72},"end":{"line":94,"column":74}},"line":94}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":51},"end":{"line":13,"column":73}},"type":"binary-expr","locations":[{"start":{"line":13,"column":51},"end":{"line":13,"column":64}},{"start":{"line":13,"column":68},"end":{"line":13,"column":73}}],"line":13},"1":{"loc":{"start":{"line":17,"column":4},"end":{"line":23,"column":5}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":23,"column":5}},{"start":{"line":20,"column":11},"end":{"line":23,"column":5}}],"line":17},"2":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":5}},{"start":{},"end":{}}],"line":25},"3":{"loc":{"start":{"line":31,"column":7},"end":{"line":46,"column":7}},"type":"binary-expr","locations":[{"start":{"line":31,"column":7},"end":{"line":31,"column":39}},{"start":{"line":32,"column":8},"end":{"line":45,"column":10}}],"line":31},"4":{"loc":{"start":{"line":47,"column":7},"end":{"line":60,"column":7}},"type":"binary-expr","locations":[{"start":{"line":47,"column":7},"end":{"line":47,"column":41}},{"start":{"line":48,"column":8},"end":{"line":59,"column":10}}],"line":47},"5":{"loc":{"start":{"line":61,"column":7},"end":{"line":101,"column":19}},"type":"cond-expr","locations":[{"start":{"line":62,"column":8},"end":{"line":100,"column":9}},{"start":{"line":101,"column":10},"end":{"line":101,"column":19}}],"line":61},"6":{"loc":{"start":{"line":61,"column":7},"end":{"line":61,"column":61}},"type":"binary-expr","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":26}},{"start":{"line":61,"column":30},"end":{"line":61,"column":43}},{"start":{"line":61,"column":48},"end":{"line":61,"column":61}}],"line":61},"7":{"loc":{"start":{"line":62,"column":8},"end":{"line":100,"column":9}},"type":"cond-expr","locations":[{"start":{"line":63,"column":10},"end":{"line":82,"column":12}},{"start":{"line":84,"column":10},"end":{"line":99,"column":12}}],"line":62},"8":{"loc":{"start":{"line":76,"column":14},"end":{"line":76,"column":74}},"type":"cond-expr","locations":[{"start":{"line":76,"column":40},"end":{"line":76,"column":63}},{"start":{"line":76,"column":66},"end":{"line":76,"column":74}}],"line":76},"9":{"loc":{"start":{"line":94,"column":14},"end":{"line":94,"column":74}},"type":"cond-expr","locations":[{"start":{"line":94,"column":40},"end":{"line":94,"column":63}},{"start":{"line":94,"column":66},"end":{"line":94,"column":74}}],"line":94}},"s":{"0":132,"1":132,"2":132,"3":132,"4":3,"5":0,"6":0,"7":3,"8":3,"9":3,"10":0,"11":132,"12":7,"13":7},"f":{"0":132,"1":3,"2":0,"3":0},"b":{"0":[132,131],"1":[0,3],"2":[0,3],"3":[132,131],"4":[132,1],"5":[4,128],"6":[132,131,129],"7":[2,2],"8":[0,2],"9":[0,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8634d2958cbaba034f4412b2fc9922d18709bc78"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalTextField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/OptionalTextField.stories.js","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"1":{"start":{"line":18,"column":17},"end":{"line":18,"column":58}},"2":{"start":{"line":18,"column":27},"end":{"line":18,"column":58}},"3":{"start":{"line":20,"column":24},"end":{"line":20,"column":41}},"4":{"start":{"line":21,"column":0},"end":{"line":30,"column":2}},"5":{"start":{"line":32,"column":22},"end":{"line":32,"column":39}},"6":{"start":{"line":33,"column":0},"end":{"line":43,"column":2}},"7":{"start":{"line":45,"column":21},"end":{"line":45,"column":38}},"8":{"start":{"line":46,"column":0},"end":{"line":57,"column":2}},"9":{"start":{"line":59,"column":28},"end":{"line":59,"column":45}},"10":{"start":{"line":60,"column":0},"end":{"line":70,"column":2}},"11":{"start":{"line":72,"column":25},"end":{"line":72,"column":42}},"12":{"start":{"line":73,"column":0},"end":{"line":85,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":9,"column":6},"end":{"line":13,"column":12}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":58}},"line":18}},"branchMap":{},"s":{"0":0,"1":1,"2":3,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"f":{"0":0,"1":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f3e59dbd14560c6a06de307d20ffa1ea90764fb7"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Quote.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Quote.js","statementMap":{"0":{"start":{"line":7,"column":2},"end":{"line":18,"column":4}},"1":{"start":{"line":21,"column":0},"end":{"line":36,"column":2}}},"fnMap":{"0":{"name":"Quote","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":29},"end":{"line":19,"column":1}},"line":6}},"branchMap":{},"s":{"0":2,"1":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"914151f048ff6674b34078ad362358f66eaf5bdc"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Quote.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Quote.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":52}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":52}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":13,"column":0},"end":{"line":16,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":52}},"line":9}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8546b91a33b2b077c74b81930be5d6aa06d8fcf1"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TextButtonField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TextButtonField.js","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":13,"column":38}},"1":{"start":{"line":11,"column":4},"end":{"line":13,"column":38}},"2":{"start":{"line":15,"column":2},"end":{"line":41,"column":4}},"3":{"start":{"line":44,"column":0},"end":{"line":98,"column":2}}},"fnMap":{"0":{"name":"TextButtonField","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":31}},"loc":{"start":{"line":7,"column":39},"end":{"line":42,"column":1}},"line":7}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":13,"column":38}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":13,"column":38}},{"start":{},"end":{}}],"line":10},"1":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":37}},"type":"cond-expr","locations":[{"start":{"line":12,"column":9},"end":{"line":12,"column":25}},{"start":{"line":13,"column":9},"end":{"line":13,"column":36}}],"line":11},"2":{"loc":{"start":{"line":17,"column":7},"end":{"line":24,"column":7}},"type":"cond-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":18,"column":63}},{"start":{"line":20,"column":8},"end":{"line":23,"column":10}}],"line":17},"3":{"loc":{"start":{"line":26,"column":7},"end":{"line":39,"column":7}},"type":"cond-expr","locations":[{"start":{"line":27,"column":8},"end":{"line":36,"column":10}},{"start":{"line":38,"column":8},"end":{"line":38,"column":10}}],"line":26}},"s":{"0":6,"1":5,"2":6,"3":1},"f":{"0":6},"b":{"0":[5,1],"1":[2,3],"2":[0,6],"3":[6,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"14bda22fd1f2f14d443929d2c285edd59149910e"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TextButtonField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TextButtonField.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":72}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":72}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":12,"column":25},"end":{"line":12,"column":42}},"4":{"start":{"line":13,"column":24},"end":{"line":13,"column":41}},"5":{"start":{"line":14,"column":22},"end":{"line":14,"column":39}},"6":{"start":{"line":16,"column":0},"end":{"line":22,"column":2}},"7":{"start":{"line":24,"column":0},"end":{"line":29,"column":2}},"8":{"start":{"line":31,"column":0},"end":{"line":37,"column":2}},"9":{"start":{"line":39,"column":0},"end":{"line":45,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":72}},"line":9}},"branchMap":{},"s":{"0":1,"1":6,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{"0":6},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f29622407ea811475770188efda9193be04d2174"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Footer.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Footer.js","statementMap":{"0":{"start":{"line":9,"column":2},"end":{"line":86,"column":4}},"1":{"start":{"line":23,"column":14},"end":{"line":32,"column":16}},"2":{"start":{"line":49,"column":16},"end":{"line":66,"column":18}},"3":{"start":{"line":89,"column":0},"end":{"line":118,"column":2}}},"fnMap":{"0":{"name":"Footer","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":22}},"loc":{"start":{"line":8,"column":30},"end":{"line":87,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":38},"end":{"line":22,"column":39}},"loc":{"start":{"line":22,"column":56},"end":{"line":33,"column":13}},"line":22},"2":{"name":"(anonymous_2)","decl":{"start":{"line":48,"column":31},"end":{"line":48,"column":32}},"loc":{"start":{"line":48,"column":49},"end":{"line":67,"column":15}},"line":48}},"branchMap":{"0":{"loc":{"start":{"line":53,"column":22},"end":{"line":55,"column":74}},"type":"cond-expr","locations":[{"start":{"line":54,"column":26},"end":{"line":54,"column":87}},{"start":{"line":55,"column":26},"end":{"line":55,"column":74}}],"line":53}},"s":{"0":1,"1":8,"2":8,"3":1},"f":{"0":1,"1":8,"2":8},"b":{"0":[1,7]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5087a391e8615a1a28515c9eca0aac3a96550549"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Footer.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Footer.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":47}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":47}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":12,"column":0},"end":{"line":88,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":47}},"line":9}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9a8452c83eb0146eee297096df7518c1081011de"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Layout.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Layout.js","statementMap":{"0":{"start":{"line":14,"column":22},"end":{"line":156,"column":1}},"1":{"start":{"line":27,"column":16},"end":{"line":27,"column":40}},"2":{"start":{"line":28,"column":19},"end":{"line":28,"column":48}},"3":{"start":{"line":29,"column":2},"end":{"line":32,"column":11}},"4":{"start":{"line":34,"column":2},"end":{"line":155,"column":4}},"5":{"start":{"line":158,"column":0},"end":{"line":225,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":14,"column":22},"end":{"line":14,"column":23}},"loc":{"start":{"line":26,"column":6},"end":{"line":156,"column":1}},"line":26}},"branchMap":{"0":{"loc":{"start":{"line":28,"column":19},"end":{"line":28,"column":48}},"type":"cond-expr","locations":[{"start":{"line":28,"column":37},"end":{"line":28,"column":41}},{"start":{"line":28,"column":44},"end":{"line":28,"column":48}}],"line":28},"1":{"loc":{"start":{"line":30,"column":4},"end":{"line":32,"column":10}},"type":"cond-expr","locations":[{"start":{"line":31,"column":8},"end":{"line":31,"column":28}},{"start":{"line":32,"column":8},"end":{"line":32,"column":10}}],"line":30},"2":{"loc":{"start":{"line":30,"column":4},"end":{"line":30,"column":59}},"type":"binary-expr","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":33}},{"start":{"line":30,"column":37},"end":{"line":30,"column":59}}],"line":30},"3":{"loc":{"start":{"line":50,"column":9},"end":{"line":60,"column":9}},"type":"cond-expr","locations":[{"start":{"line":51,"column":10},"end":{"line":57,"column":12}},{"start":{"line":59,"column":10},"end":{"line":59,"column":12}}],"line":50},"4":{"loc":{"start":{"line":72,"column":21},"end":{"line":72,"column":78}},"type":"cond-expr","locations":[{"start":{"line":72,"column":41},"end":{"line":72,"column":58}},{"start":{"line":72,"column":61},"end":{"line":72,"column":78}}],"line":72},"5":{"loc":{"start":{"line":86,"column":15},"end":{"line":86,"column":46}},"type":"cond-expr","locations":[{"start":{"line":86,"column":35},"end":{"line":86,"column":39}},{"start":{"line":86,"column":42},"end":{"line":86,"column":46}}],"line":86},"6":{"loc":{"start":{"line":99,"column":15},"end":{"line":99,"column":57}},"type":"cond-expr","locations":[{"start":{"line":99,"column":35},"end":{"line":99,"column":44}},{"start":{"line":99,"column":47},"end":{"line":99,"column":57}}],"line":99},"7":{"loc":{"start":{"line":112,"column":9},"end":{"line":114,"column":16}},"type":"cond-expr","locations":[{"start":{"line":113,"column":10},"end":{"line":113,"column":66}},{"start":{"line":114,"column":12},"end":{"line":114,"column":16}}],"line":112},"8":{"loc":{"start":{"line":112,"column":9},"end":{"line":112,"column":34}},"type":"binary-expr","locations":[{"start":{"line":112,"column":9},"end":{"line":112,"column":19}},{"start":{"line":112,"column":23},"end":{"line":112,"column":34}}],"line":112}},"s":{"0":3,"1":7,"2":7,"3":7,"4":7,"5":3},"f":{"0":7},"b":{"0":[0,7],"1":[7,0],"2":[7,7],"3":[0,7],"4":[7,0],"5":[7,0],"6":[7,0],"7":[2,5],"8":[7,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"767969a8536c431c743d51af94c87afb24fa4471"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Layout.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Layout.stories.js","statementMap":{"0":{"start":{"line":9,"column":19},"end":{"line":21,"column":1}},"1":{"start":{"line":10,"column":2},"end":{"line":20,"column":4}},"2":{"start":{"line":23,"column":17},"end":{"line":23,"column":68}},"3":{"start":{"line":23,"column":27},"end":{"line":23,"column":68}},"4":{"start":{"line":25,"column":24},"end":{"line":25,"column":41}},"5":{"start":{"line":26,"column":26},"end":{"line":26,"column":43}},"6":{"start":{"line":28,"column":0},"end":{"line":31,"column":2}},"7":{"start":{"line":33,"column":0},"end":{"line":38,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":19},"end":{"line":9,"column":20}},"loc":{"start":{"line":9,"column":25},"end":{"line":21,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":17},"end":{"line":23,"column":18}},"loc":{"start":{"line":23,"column":27},"end":{"line":23,"column":68}},"line":23}},"branchMap":{},"s":{"0":1,"1":7,"2":1,"3":7,"4":1,"5":1,"6":1,"7":1},"f":{"0":7,"1":7},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"fa998bebdd094c5292aea015bd36a1110983f7e0"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/PhaseBanner.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/PhaseBanner.js","statementMap":{"0":{"start":{"line":12,"column":27},"end":{"line":110,"column":1}},"1":{"start":{"line":20,"column":42},"end":{"line":20,"column":57}},"2":{"start":{"line":21,"column":16},"end":{"line":21,"column":40}},"3":{"start":{"line":22,"column":17},"end":{"line":22,"column":36}},"4":{"start":{"line":24,"column":2},"end":{"line":32,"column":4}},"5":{"start":{"line":25,"column":4},"end":{"line":29,"column":5}},"6":{"start":{"line":26,"column":6},"end":{"line":26,"column":35}},"7":{"start":{"line":28,"column":6},"end":{"line":28,"column":34}},"8":{"start":{"line":31,"column":4},"end":{"line":31,"column":35}},"9":{"start":{"line":34,"column":2},"end":{"line":109,"column":4}},"10":{"start":{"line":112,"column":0},"end":{"line":133,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":27},"end":{"line":12,"column":28}},"loc":{"start":{"line":19,"column":6},"end":{"line":110,"column":1}},"line":19},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":15},"end":{"line":24,"column":16}},"loc":{"start":{"line":24,"column":28},"end":{"line":32,"column":3}},"line":24}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":4},"end":{"line":29,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":29,"column":5}},{"start":{"line":27,"column":11},"end":{"line":29,"column":5}}],"line":25},"1":{"loc":{"start":{"line":40,"column":14},"end":{"line":40,"column":42}},"type":"cond-expr","locations":[{"start":{"line":40,"column":31},"end":{"line":40,"column":37}},{"start":{"line":40,"column":40},"end":{"line":40,"column":42}}],"line":40},"2":{"loc":{"start":{"line":49,"column":13},"end":{"line":60,"column":13}},"type":"cond-expr","locations":[{"start":{"line":50,"column":14},"end":{"line":57,"column":16}},{"start":{"line":59,"column":14},"end":{"line":59,"column":16}}],"line":49},"3":{"loc":{"start":{"line":68,"column":9},"end":{"line":99,"column":9}},"type":"cond-expr","locations":[{"start":{"line":69,"column":10},"end":{"line":96,"column":16}},{"start":{"line":98,"column":10},"end":{"line":98,"column":12}}],"line":68}},"s":{"0":4,"1":3,"2":3,"3":3,"4":3,"5":1,"6":0,"7":1,"8":1,"9":3,"10":4},"f":{"0":3,"1":1},"b":{"0":[0,1],"1":[2,1],"2":[2,1],"3":[2,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2086ab5e8ecf14c039f8553e9d1f861e5ab5ba67"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/PhaseBanner.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/PhaseBanner.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":52}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":52}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}},"3":{"start":{"line":12,"column":28},"end":{"line":12,"column":45}},"4":{"start":{"line":14,"column":0},"end":{"line":17,"column":2}},"5":{"start":{"line":19,"column":0},"end":{"line":23,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":52}},"line":9}},"branchMap":{},"s":{"0":1,"1":2,"2":1,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2ad2ba3e09977408647854af514684bc9872812d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ReportAProblem.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ReportAProblem.js","statementMap":{"0":{"start":{"line":15,"column":36},"end":{"line":15,"column":51}},"1":{"start":{"line":16,"column":22},"end":{"line":16,"column":38}},"2":{"start":{"line":18,"column":44},"end":{"line":18,"column":59}},"3":{"start":{"line":20,"column":24},"end":{"line":96,"column":3}},"4":{"start":{"line":22,"column":27},"end":{"line":22,"column":32}},"5":{"start":{"line":25,"column":24},"end":{"line":25,"column":62}},"6":{"start":{"line":26,"column":4},"end":{"line":32,"column":5}},"7":{"start":{"line":26,"column":21},"end":{"line":26,"column":22}},"8":{"start":{"line":27,"column":6},"end":{"line":31,"column":7}},"9":{"start":{"line":28,"column":8},"end":{"line":30,"column":9}},"10":{"start":{"line":29,"column":10},"end":{"line":29,"column":34}},"11":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"12":{"start":{"line":37,"column":21},"end":{"line":37,"column":43}},"13":{"start":{"line":40,"column":4},"end":{"line":43,"column":5}},"14":{"start":{"line":41,"column":28},"end":{"line":41,"column":50}},"15":{"start":{"line":42,"column":6},"end":{"line":42,"column":45}},"16":{"start":{"line":46,"column":23},"end":{"line":46,"column":52}},"17":{"start":{"line":47,"column":20},"end":{"line":47,"column":41}},"18":{"start":{"line":51,"column":4},"end":{"line":71,"column":5}},"19":{"start":{"line":52,"column":6},"end":{"line":60,"column":8}},"20":{"start":{"line":62,"column":6},"end":{"line":70,"column":8}},"21":{"start":{"line":73,"column":4},"end":{"line":75,"column":5}},"22":{"start":{"line":74,"column":6},"end":{"line":74,"column":50}},"23":{"start":{"line":78,"column":4},"end":{"line":89,"column":7}},"24":{"start":{"line":88,"column":6},"end":{"line":88,"column":21}},"25":{"start":{"line":91,"column":4},"end":{"line":93,"column":5}},"26":{"start":{"line":92,"column":6},"end":{"line":92,"column":25}},"27":{"start":{"line":95,"column":4},"end":{"line":95,"column":27}},"28":{"start":{"line":98,"column":2},"end":{"line":370,"column":4}},"29":{"start":{"line":373,"column":0},"end":{"line":378,"column":2}}},"fnMap":{"0":{"name":"ReportAProblem","decl":{"start":{"line":14,"column":16},"end":{"line":14,"column":30}},"loc":{"start":{"line":14,"column":38},"end":{"line":371,"column":1}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":24},"end":{"line":20,"column":25}},"loc":{"start":{"line":20,"column":31},"end":{"line":96,"column":3}},"line":20},"2":{"name":"(anonymous_2)","decl":{"start":{"line":84,"column":13},"end":{"line":84,"column":14}},"loc":{"start":{"line":84,"column":20},"end":{"line":89,"column":5}},"line":84}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":6},"end":{"line":31,"column":7}},"type":"if","locations":[{"start":{"line":27,"column":6},"end":{"line":31,"column":7}},{"start":{},"end":{}}],"line":27},"1":{"loc":{"start":{"line":28,"column":8},"end":{"line":30,"column":9}},"type":"if","locations":[{"start":{"line":28,"column":8},"end":{"line":30,"column":9}},{"start":{},"end":{}}],"line":28},"2":{"loc":{"start":{"line":51,"column":4},"end":{"line":71,"column":5}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":71,"column":5}},{"start":{"line":61,"column":11},"end":{"line":71,"column":5}}],"line":51},"3":{"loc":{"start":{"line":91,"column":4},"end":{"line":93,"column":5}},"type":"if","locations":[{"start":{"line":91,"column":4},"end":{"line":93,"column":5}},{"start":{},"end":{}}],"line":91},"4":{"loc":{"start":{"line":105,"column":9},"end":{"line":122,"column":9}},"type":"cond-expr","locations":[{"start":{"line":106,"column":10},"end":{"line":119,"column":13}},{"start":{"line":121,"column":10},"end":{"line":121,"column":12}}],"line":105},"5":{"loc":{"start":{"line":124,"column":7},"end":{"line":368,"column":7}},"type":"cond-expr","locations":[{"start":{"line":125,"column":8},"end":{"line":125,"column":10}},{"start":{"line":127,"column":8},"end":{"line":367,"column":11}}],"line":124},"6":{"loc":{"start":{"line":350,"column":15},"end":{"line":354,"column":27}},"type":"cond-expr","locations":[{"start":{"line":351,"column":16},"end":{"line":353,"column":18}},{"start":{"line":354,"column":18},"end":{"line":354,"column":27}}],"line":350}},"s":{"0":20,"1":19,"2":19,"3":19,"4":3,"5":3,"6":3,"7":3,"8":24,"9":21,"10":1,"11":3,"12":3,"13":3,"14":5,"15":5,"16":3,"17":3,"18":3,"19":0,"20":3,"21":3,"22":21,"23":3,"24":0,"25":3,"26":1,"27":3,"28":19,"29":6},"f":{"0":20,"1":3,"2":0},"b":{"0":[21,3],"1":[1,20],"2":[0,3],"3":[1,2],"4":[1,18],"5":[1,18],"6":[2,16]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"aab2c7918d1dd6e334399d6e51f4ce93a6a88906"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ReportAProblem.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ReportAProblem.stories.js","statementMap":{"0":{"start":{"line":9,"column":17},"end":{"line":9,"column":55}},"1":{"start":{"line":9,"column":27},"end":{"line":9,"column":55}},"2":{"start":{"line":11,"column":23},"end":{"line":11,"column":40}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":17},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":55}},"line":9}},"branchMap":{},"s":{"0":1,"1":5,"2":1},"f":{"0":5},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d29be7f648557f0474151c64e2ffc2eeff8aeb14"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/notify/submitEmail.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/notify/submitEmail.js","statementMap":{"0":{"start":{"line":3,"column":27},"end":{"line":30,"column":1}},"1":{"start":{"line":11,"column":25},"end":{"line":27,"column":4}},"2":{"start":{"line":29,"column":2},"end":{"line":29,"column":62}},"3":{"start":{"line":32,"column":41},"end":{"line":65,"column":1}},"4":{"start":{"line":42,"column":25},"end":{"line":63,"column":4}},"5":{"start":{"line":64,"column":2},"end":{"line":64,"column":62}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":27},"end":{"line":3,"column":28}},"loc":{"start":{"line":10,"column":5},"end":{"line":30,"column":1}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":32,"column":41},"end":{"line":32,"column":42}},"loc":{"start":{"line":41,"column":5},"end":{"line":65,"column":1}},"line":41}},"branchMap":{},"s":{"0":2,"1":1,"2":1,"3":2,"4":0,"5":0},"f":{"0":1,"1":0},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"64121f88f74f2700c145bf99f2a9d5af31e58cbb"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/createBreadcrumbs.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/createBreadcrumbs.js","statementMap":{"0":{"start":{"line":1,"column":33},"end":{"line":12,"column":1}},"1":{"start":{"line":2,"column":2},"end":{"line":11,"column":5}},"2":{"start":{"line":3,"column":4},"end":{"line":10,"column":6}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":33},"end":{"line":1,"column":34}},"loc":{"start":{"line":1,"column":62},"end":{"line":12,"column":1}},"line":1},"1":{"name":"(anonymous_1)","decl":{"start":{"line":2,"column":29},"end":{"line":2,"column":30}},"loc":{"start":{"line":2,"column":49},"end":{"line":11,"column":3}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":77}},"type":"cond-expr","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":50}},{"start":{"line":5,"column":53},"end":{"line":5,"column":77}}],"line":5},"1":{"loc":{"start":{"line":7,"column":8},"end":{"line":9,"column":39}},"type":"cond-expr","locations":[{"start":{"line":8,"column":12},"end":{"line":8,"column":39}},{"start":{"line":9,"column":12},"end":{"line":9,"column":39}}],"line":7}},"s":{"0":1,"1":1,"2":1},"f":{"0":1,"1":1},"b":{"0":[0,1],"1":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4ff228440cfccf8b1af92ac32e0771b0ff6dfd8b"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/getAllUpdateIds.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/getAllUpdateIds.js","statementMap":{"0":{"start":{"line":2,"column":2},"end":{"line":15,"column":5}},"1":{"start":{"line":2,"column":33},"end":{"line":15,"column":3}}},"fnMap":{"0":{"name":"getAllUpdateIds","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":31}},"loc":{"start":{"line":1,"column":39},"end":{"line":16,"column":1}},"line":1},"1":{"name":"(anonymous_1)","decl":{"start":{"line":2,"column":23},"end":{"line":2,"column":24}},"loc":{"start":{"line":2,"column":33},"end":{"line":15,"column":3}},"line":2}},"branchMap":{},"s":{"0":0,"1":0},"f":{"0":0,"1":0},"b":{}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/maskEmail.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/maskEmail.js","statementMap":{"0":{"start":{"line":3,"column":20},"end":{"line":3,"column":22}},"1":{"start":{"line":4,"column":10},"end":{"line":4,"column":11}},"2":{"start":{"line":6,"column":2},"end":{"line":16,"column":3}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":16}},"4":{"start":{"line":7,"column":4},"end":{"line":15,"column":5}},"5":{"start":{"line":8,"column":6},"end":{"line":8,"column":30}},"6":{"start":{"line":9,"column":11},"end":{"line":15,"column":5}},"7":{"start":{"line":10,"column":6},"end":{"line":10,"column":25}},"8":{"start":{"line":11,"column":6},"end":{"line":11,"column":13}},"9":{"start":{"line":13,"column":6},"end":{"line":13,"column":30}},"10":{"start":{"line":14,"column":6},"end":{"line":14,"column":12}},"11":{"start":{"line":18,"column":2},"end":{"line":18,"column":21}}},"fnMap":{"0":{"name":"maskEmail","decl":{"start":{"line":2,"column":16},"end":{"line":2,"column":25}},"loc":{"start":{"line":2,"column":33},"end":{"line":19,"column":1}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":4},"end":{"line":15,"column":5}},"type":"if","locations":[{"start":{"line":7,"column":4},"end":{"line":15,"column":5}},{"start":{"line":9,"column":11},"end":{"line":15,"column":5}}],"line":7},"1":{"loc":{"start":{"line":9,"column":11},"end":{"line":15,"column":5}},"type":"if","locations":[{"start":{"line":9,"column":11},"end":{"line":15,"column":5}},{"start":{"line":12,"column":11},"end":{"line":15,"column":5}}],"line":9},"2":{"loc":{"start":{"line":9,"column":15},"end":{"line":9,"column":61}},"type":"binary-expr","locations":[{"start":{"line":9,"column":15},"end":{"line":9,"column":31}},{"start":{"line":9,"column":35},"end":{"line":9,"column":51}},{"start":{"line":9,"column":55},"end":{"line":9,"column":61}}],"line":9}},"s":{"0":1,"1":1,"2":1,"3":1,"4":14,"5":1,"6":13,"7":10,"8":10,"9":3,"10":3,"11":1},"f":{"0":1},"b":{"0":[1,13],"1":[10,3],"2":[13,12,11]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2c319a415cf9287df92d50f88488af57238eb4bb"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/stripFeedback.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/stripFeedback.js","statementMap":{"0":{"start":{"line":3,"column":2},"end":{"line":6,"column":4}},"1":{"start":{"line":9,"column":2},"end":{"line":12,"column":4}},"2":{"start":{"line":15,"column":2},"end":{"line":18,"column":4}},"3":{"start":{"line":21,"column":2},"end":{"line":24,"column":4}},"4":{"start":{"line":25,"column":2},"end":{"line":28,"column":4}},"5":{"start":{"line":30,"column":2},"end":{"line":30,"column":25}}},"fnMap":{"0":{"name":"stripFeedback","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":29}},"loc":{"start":{"line":1,"column":47},"end":{"line":31,"column":1}},"line":1}},"branchMap":{},"s":{"0":7,"1":7,"2":7,"3":7,"4":7,"5":7},"f":{"0":7},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d0915e4032d8d1101c90ae4a5d38458236eb2b5f"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/middlewares/initMiddleware.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/middlewares/initMiddleware.js","statementMap":{"0":{"start":{"line":4,"column":2},"end":{"line":12,"column":7}},"1":{"start":{"line":5,"column":4},"end":{"line":12,"column":6}},"2":{"start":{"line":6,"column":6},"end":{"line":11,"column":9}},"3":{"start":{"line":7,"column":8},"end":{"line":9,"column":9}},"4":{"start":{"line":8,"column":10},"end":{"line":8,"column":32}},"5":{"start":{"line":10,"column":8},"end":{"line":10,"column":31}}},"fnMap":{"0":{"name":"initMiddleware","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":38}},"loc":{"start":{"line":3,"column":51},"end":{"line":13,"column":1}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":10}},"loc":{"start":{"line":5,"column":4},"end":{"line":12,"column":6}},"line":5},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":17}},"loc":{"start":{"line":5,"column":37},"end":{"line":12,"column":5}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":27},"end":{"line":6,"column":28}},"loc":{"start":{"line":6,"column":39},"end":{"line":11,"column":7}},"line":6}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":8},"end":{"line":9,"column":9}},"type":"if","locations":[{"start":{"line":7,"column":8},"end":{"line":9,"column":9}},{"start":{},"end":{}}],"line":7}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0]}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/middlewares/joi.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/middlewares/joi.js","statementMap":{"0":{"start":{"line":12,"column":2},"end":{"line":24,"column":4}},"1":{"start":{"line":13,"column":22},"end":{"line":13,"column":62}},"2":{"start":{"line":14,"column":18},"end":{"line":14,"column":37}},"3":{"start":{"line":15,"column":4},"end":{"line":23,"column":5}},"4":{"start":{"line":16,"column":6},"end":{"line":16,"column":31}},"5":{"start":{"line":18,"column":26},"end":{"line":18,"column":31}},"6":{"start":{"line":19,"column":22},"end":{"line":21,"column":8}},"7":{"start":{"line":20,"column":8},"end":{"line":20,"column":52}},"8":{"start":{"line":22,"column":6},"end":{"line":22,"column":47}}},"fnMap":{"0":{"name":"validate","decl":{"start":{"line":11,"column":24},"end":{"line":11,"column":32}},"loc":{"start":{"line":11,"column":64},"end":{"line":25,"column":1}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":10}},"loc":{"start":{"line":12,"column":29},"end":{"line":24,"column":3}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":34},"end":{"line":19,"column":35}},"loc":{"start":{"line":19,"column":41},"end":{"line":21,"column":7}},"line":19}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":50},"end":{"line":11,"column":62}},"type":"default-arg","locations":[{"start":{"line":11,"column":60},"end":{"line":11,"column":62}}],"line":11},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":23,"column":5}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":23,"column":5}},{"start":{"line":17,"column":11},"end":{"line":23,"column":5}}],"line":15}},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":1,"6":1,"7":2,"8":1},"f":{"0":1,"1":1,"2":2},"b":{"0":[0],"1":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c484cc6eabb2eee8fcbd18f7de461eca0e65b74d"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/404.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/404.js","statementMap":{"0":{"start":{"line":12,"column":16},"end":{"line":12,"column":40}},"1":{"start":{"line":13,"column":30},"end":{"line":13,"column":45}},"2":{"start":{"line":14,"column":17},"end":{"line":14,"column":28}},"3":{"start":{"line":15,"column":21},"end":{"line":15,"column":50}},"4":{"start":{"line":17,"column":2},"end":{"line":29,"column":9}},"5":{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},"6":{"start":{"line":19,"column":6},"end":{"line":19,"column":58}},"7":{"start":{"line":20,"column":6},"end":{"line":20,"column":56}},"8":{"start":{"line":24,"column":4},"end":{"line":28,"column":5}},"9":{"start":{"line":25,"column":6},"end":{"line":25,"column":35}},"10":{"start":{"line":27,"column":6},"end":{"line":27,"column":22}},"11":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"12":{"start":{"line":33,"column":4},"end":{"line":33,"column":23}},"13":{"start":{"line":36,"column":2},"end":{"line":246,"column":4}},"14":{"start":{"line":249,"column":30},"end":{"line":261,"column":1}},"15":{"start":{"line":250,"column":19},"end":{"line":250,"column":72}},"16":{"start":{"line":252,"column":2},"end":{"line":260,"column":4}}},"fnMap":{"0":{"name":"error404","decl":{"start":{"line":11,"column":24},"end":{"line":11,"column":32}},"loc":{"start":{"line":11,"column":40},"end":{"line":247,"column":1}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":12},"end":{"line":17,"column":13}},"loc":{"start":{"line":17,"column":18},"end":{"line":29,"column":3}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":249,"column":30},"end":{"line":249,"column":31}},"loc":{"start":{"line":249,"column":52},"end":{"line":261,"column":1}},"line":249}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},{"start":{},"end":{}}],"line":18},"1":{"loc":{"start":{"line":19,"column":30},"end":{"line":19,"column":57}},"type":"binary-expr","locations":[{"start":{"line":19,"column":30},"end":{"line":19,"column":51}},{"start":{"line":19,"column":55},"end":{"line":19,"column":57}}],"line":19},"2":{"loc":{"start":{"line":24,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":28,"column":5}},{"start":{"line":26,"column":11},"end":{"line":28,"column":5}}],"line":24},"3":{"loc":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"type":"if","locations":[{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},{"start":{},"end":{}}],"line":32},"4":{"loc":{"start":{"line":40,"column":11},"end":{"line":44,"column":11}},"type":"cond-expr","locations":[{"start":{"line":41,"column":12},"end":{"line":41,"column":52}},{"start":{"line":43,"column":12},"end":{"line":43,"column":14}}],"line":40},"5":{"loc":{"start":{"line":63,"column":21},"end":{"line":63,"column":58}},"type":"cond-expr","locations":[{"start":{"line":63,"column":45},"end":{"line":63,"column":50}},{"start":{"line":63,"column":53},"end":{"line":63,"column":58}}],"line":63},"6":{"loc":{"start":{"line":78,"column":14},"end":{"line":80,"column":57}},"type":"cond-expr","locations":[{"start":{"line":79,"column":18},"end":{"line":79,"column":60}},{"start":{"line":80,"column":18},"end":{"line":80,"column":57}}],"line":78},"7":{"loc":{"start":{"line":130,"column":16},"end":{"line":132,"column":58}},"type":"cond-expr","locations":[{"start":{"line":131,"column":20},"end":{"line":131,"column":58}},{"start":{"line":132,"column":20},"end":{"line":132,"column":58}}],"line":130},"8":{"loc":{"start":{"line":135,"column":16},"end":{"line":137,"column":59}},"type":"cond-expr","locations":[{"start":{"line":136,"column":20},"end":{"line":136,"column":59}},{"start":{"line":137,"column":20},"end":{"line":137,"column":59}}],"line":135},"9":{"loc":{"start":{"line":174,"column":20},"end":{"line":176,"column":63}},"type":"cond-expr","locations":[{"start":{"line":175,"column":24},"end":{"line":175,"column":63}},{"start":{"line":176,"column":24},"end":{"line":176,"column":63}}],"line":174},"10":{"loc":{"start":{"line":226,"column":18},"end":{"line":228,"column":60}},"type":"cond-expr","locations":[{"start":{"line":227,"column":22},"end":{"line":227,"column":60}},{"start":{"line":228,"column":22},"end":{"line":228,"column":60}}],"line":226},"11":{"loc":{"start":{"line":231,"column":18},"end":{"line":233,"column":61}},"type":"cond-expr","locations":[{"start":{"line":232,"column":22},"end":{"line":232,"column":61}},{"start":{"line":233,"column":22},"end":{"line":233,"column":61}}],"line":231},"12":{"loc":{"start":{"line":240,"column":7},"end":{"line":244,"column":7}},"type":"cond-expr","locations":[{"start":{"line":241,"column":8},"end":{"line":241,"column":71}},{"start":{"line":243,"column":8},"end":{"line":243,"column":10}}],"line":240}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":1,"6":0,"7":0,"8":1,"9":0,"10":1,"11":2,"12":1,"13":1,"14":1,"15":0,"16":0},"f":{"0":2,"1":1,"2":0},"b":{"0":[0,1],"1":[0,0],"2":[0,1],"3":[1,1],"4":[0,1],"5":[0,1],"6":[0,1],"7":[0,1],"8":[0,1],"9":[0,1],"10":[0,1],"11":[0,1],"12":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a990004def25137dda3561802d6a9ffd51622bbf"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/500.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/500.js","statementMap":{"0":{"start":{"line":12,"column":16},"end":{"line":12,"column":40}},"1":{"start":{"line":13,"column":30},"end":{"line":13,"column":45}},"2":{"start":{"line":14,"column":17},"end":{"line":14,"column":28}},"3":{"start":{"line":15,"column":21},"end":{"line":15,"column":50}},"4":{"start":{"line":17,"column":2},"end":{"line":29,"column":9}},"5":{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},"6":{"start":{"line":19,"column":6},"end":{"line":19,"column":58}},"7":{"start":{"line":20,"column":6},"end":{"line":20,"column":56}},"8":{"start":{"line":24,"column":4},"end":{"line":28,"column":5}},"9":{"start":{"line":25,"column":6},"end":{"line":25,"column":35}},"10":{"start":{"line":27,"column":6},"end":{"line":27,"column":22}},"11":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"12":{"start":{"line":33,"column":4},"end":{"line":33,"column":23}},"13":{"start":{"line":36,"column":2},"end":{"line":272,"column":4}},"14":{"start":{"line":275,"column":30},"end":{"line":287,"column":1}},"15":{"start":{"line":276,"column":19},"end":{"line":276,"column":72}},"16":{"start":{"line":278,"column":2},"end":{"line":286,"column":4}}},"fnMap":{"0":{"name":"error500","decl":{"start":{"line":11,"column":24},"end":{"line":11,"column":32}},"loc":{"start":{"line":11,"column":40},"end":{"line":273,"column":1}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":12},"end":{"line":17,"column":13}},"loc":{"start":{"line":17,"column":18},"end":{"line":29,"column":3}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":275,"column":30},"end":{"line":275,"column":31}},"loc":{"start":{"line":275,"column":52},"end":{"line":287,"column":1}},"line":275}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},{"start":{},"end":{}}],"line":18},"1":{"loc":{"start":{"line":19,"column":30},"end":{"line":19,"column":57}},"type":"binary-expr","locations":[{"start":{"line":19,"column":30},"end":{"line":19,"column":51}},{"start":{"line":19,"column":55},"end":{"line":19,"column":57}}],"line":19},"2":{"loc":{"start":{"line":24,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":28,"column":5}},{"start":{"line":26,"column":11},"end":{"line":28,"column":5}}],"line":24},"3":{"loc":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"type":"if","locations":[{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},{"start":{},"end":{}}],"line":32},"4":{"loc":{"start":{"line":40,"column":11},"end":{"line":44,"column":11}},"type":"cond-expr","locations":[{"start":{"line":41,"column":12},"end":{"line":41,"column":52}},{"start":{"line":43,"column":12},"end":{"line":43,"column":14}}],"line":40},"5":{"loc":{"start":{"line":74,"column":21},"end":{"line":74,"column":58}},"type":"cond-expr","locations":[{"start":{"line":74,"column":45},"end":{"line":74,"column":50}},{"start":{"line":74,"column":53},"end":{"line":74,"column":58}}],"line":74},"6":{"loc":{"start":{"line":156,"column":16},"end":{"line":158,"column":58}},"type":"cond-expr","locations":[{"start":{"line":157,"column":20},"end":{"line":157,"column":58}},{"start":{"line":158,"column":20},"end":{"line":158,"column":58}}],"line":156},"7":{"loc":{"start":{"line":161,"column":16},"end":{"line":163,"column":59}},"type":"cond-expr","locations":[{"start":{"line":162,"column":20},"end":{"line":162,"column":59}},{"start":{"line":163,"column":20},"end":{"line":163,"column":59}}],"line":161},"8":{"loc":{"start":{"line":200,"column":20},"end":{"line":202,"column":63}},"type":"cond-expr","locations":[{"start":{"line":201,"column":24},"end":{"line":201,"column":63}},{"start":{"line":202,"column":24},"end":{"line":202,"column":63}}],"line":200},"9":{"loc":{"start":{"line":252,"column":18},"end":{"line":254,"column":60}},"type":"cond-expr","locations":[{"start":{"line":253,"column":22},"end":{"line":253,"column":60}},{"start":{"line":254,"column":22},"end":{"line":254,"column":60}}],"line":252},"10":{"loc":{"start":{"line":257,"column":18},"end":{"line":259,"column":61}},"type":"cond-expr","locations":[{"start":{"line":258,"column":22},"end":{"line":258,"column":61}},{"start":{"line":259,"column":22},"end":{"line":259,"column":61}}],"line":257},"11":{"loc":{"start":{"line":266,"column":7},"end":{"line":270,"column":7}},"type":"cond-expr","locations":[{"start":{"line":267,"column":8},"end":{"line":267,"column":71}},{"start":{"line":269,"column":8},"end":{"line":269,"column":10}}],"line":266}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":1,"6":0,"7":0,"8":1,"9":0,"10":1,"11":2,"12":1,"13":1,"14":1,"15":0,"16":0},"f":{"0":2,"1":1,"2":0},"b":{"0":[0,1],"1":[0,0],"2":[0,1],"3":[1,1],"4":[0,1],"5":[0,1],"6":[0,1],"7":[0,1],"8":[0,1],"9":[0,1],"10":[0,1],"11":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4828615a79f7c9c552c6d35c197fb8b04cf983cd"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/_app.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/_app.js","statementMap":{"0":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"1":{"start":{"line":12,"column":2},"end":{"line":24,"column":4}}},"fnMap":{"0":{"name":"MyApp","decl":{"start":{"line":11,"column":9},"end":{"line":11,"column":14}},"loc":{"start":{"line":11,"column":41},"end":{"line":25,"column":1}},"line":11}},"branchMap":{},"s":{"0":0,"1":0},"f":{"0":0},"b":{}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/error.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/error.js","statementMap":{"0":{"start":{"line":12,"column":16},"end":{"line":12,"column":40}},"1":{"start":{"line":13,"column":20},"end":{"line":13,"column":31}},"2":{"start":{"line":14,"column":21},"end":{"line":14,"column":50}},"3":{"start":{"line":16,"column":21},"end":{"line":16,"column":43}},"4":{"start":{"line":18,"column":4},"end":{"line":18,"column":69}},"5":{"start":{"line":20,"column":4},"end":{"line":20,"column":71}},"6":{"start":{"line":22,"column":4},"end":{"line":22,"column":71}},"7":{"start":{"line":24,"column":4},"end":{"line":24,"column":73}},"8":{"start":{"line":26,"column":2},"end":{"line":31,"column":9}},"9":{"start":{"line":27,"column":4},"end":{"line":30,"column":5}},"10":{"start":{"line":28,"column":6},"end":{"line":28,"column":58}},"11":{"start":{"line":29,"column":6},"end":{"line":29,"column":56}},"12":{"start":{"line":33,"column":2},"end":{"line":459,"column":4}},"13":{"start":{"line":462,"column":30},"end":{"line":474,"column":1}},"14":{"start":{"line":463,"column":19},"end":{"line":463,"column":75}},"15":{"start":{"line":465,"column":2},"end":{"line":473,"column":4}}},"fnMap":{"0":{"name":"ErrorPage","decl":{"start":{"line":11,"column":24},"end":{"line":11,"column":33}},"loc":{"start":{"line":11,"column":41},"end":{"line":460,"column":1}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":12},"end":{"line":26,"column":13}},"loc":{"start":{"line":26,"column":18},"end":{"line":31,"column":3}},"line":26},"2":{"name":"(anonymous_2)","decl":{"start":{"line":462,"column":30},"end":{"line":462,"column":31}},"loc":{"start":{"line":462,"column":52},"end":{"line":474,"column":1}},"line":462}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":21},"end":{"line":16,"column":43}},"type":"binary-expr","locations":[{"start":{"line":16,"column":21},"end":{"line":16,"column":37}},{"start":{"line":16,"column":41},"end":{"line":16,"column":43}}],"line":16},"1":{"loc":{"start":{"line":18,"column":4},"end":{"line":18,"column":69}},"type":"binary-expr","locations":[{"start":{"line":18,"column":4},"end":{"line":18,"column":20}},{"start":{"line":18,"column":24},"end":{"line":18,"column":69}}],"line":18},"2":{"loc":{"start":{"line":20,"column":4},"end":{"line":20,"column":71}},"type":"binary-expr","locations":[{"start":{"line":20,"column":4},"end":{"line":20,"column":22}},{"start":{"line":20,"column":26},"end":{"line":20,"column":71}}],"line":20},"3":{"loc":{"start":{"line":22,"column":4},"end":{"line":22,"column":71}},"type":"binary-expr","locations":[{"start":{"line":22,"column":4},"end":{"line":22,"column":22}},{"start":{"line":22,"column":26},"end":{"line":22,"column":71}}],"line":22},"4":{"loc":{"start":{"line":24,"column":4},"end":{"line":24,"column":73}},"type":"binary-expr","locations":[{"start":{"line":24,"column":4},"end":{"line":24,"column":24}},{"start":{"line":24,"column":28},"end":{"line":24,"column":73}}],"line":24},"5":{"loc":{"start":{"line":27,"column":4},"end":{"line":30,"column":5}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":30,"column":5}},{"start":{},"end":{}}],"line":27},"6":{"loc":{"start":{"line":28,"column":30},"end":{"line":28,"column":57}},"type":"binary-expr","locations":[{"start":{"line":28,"column":30},"end":{"line":28,"column":51}},{"start":{"line":28,"column":55},"end":{"line":28,"column":57}}],"line":28},"7":{"loc":{"start":{"line":37,"column":11},"end":{"line":41,"column":11}},"type":"cond-expr","locations":[{"start":{"line":38,"column":12},"end":{"line":38,"column":52}},{"start":{"line":40,"column":12},"end":{"line":40,"column":14}}],"line":37},"8":{"loc":{"start":{"line":53,"column":14},"end":{"line":55,"column":57}},"type":"cond-expr","locations":[{"start":{"line":54,"column":18},"end":{"line":54,"column":53}},{"start":{"line":55,"column":18},"end":{"line":55,"column":57}}],"line":53},"9":{"loc":{"start":{"line":75,"column":21},"end":{"line":75,"column":58}},"type":"cond-expr","locations":[{"start":{"line":75,"column":45},"end":{"line":75,"column":50}},{"start":{"line":75,"column":53},"end":{"line":75,"column":58}}],"line":75},"10":{"loc":{"start":{"line":106,"column":14},"end":{"line":108,"column":57}},"type":"cond-expr","locations":[{"start":{"line":107,"column":18},"end":{"line":107,"column":60}},{"start":{"line":108,"column":18},"end":{"line":108,"column":57}}],"line":106},"11":{"loc":{"start":{"line":143,"column":14},"end":{"line":145,"column":57}},"type":"cond-expr","locations":[{"start":{"line":144,"column":18},"end":{"line":144,"column":53}},{"start":{"line":145,"column":18},"end":{"line":145,"column":57}}],"line":143},"12":{"loc":{"start":{"line":167,"column":14},"end":{"line":169,"column":57}},"type":"cond-expr","locations":[{"start":{"line":168,"column":18},"end":{"line":168,"column":53}},{"start":{"line":169,"column":18},"end":{"line":169,"column":57}}],"line":167},"13":{"loc":{"start":{"line":180,"column":18},"end":{"line":182,"column":60}},"type":"cond-expr","locations":[{"start":{"line":181,"column":22},"end":{"line":181,"column":60}},{"start":{"line":182,"column":22},"end":{"line":182,"column":60}}],"line":180},"14":{"loc":{"start":{"line":185,"column":18},"end":{"line":187,"column":61}},"type":"cond-expr","locations":[{"start":{"line":186,"column":22},"end":{"line":186,"column":61}},{"start":{"line":187,"column":22},"end":{"line":187,"column":61}}],"line":185},"15":{"loc":{"start":{"line":203,"column":19},"end":{"line":213,"column":19}},"type":"cond-expr","locations":[{"start":{"line":204,"column":20},"end":{"line":210,"column":24}},{"start":{"line":212,"column":20},"end":{"line":212,"column":22}}],"line":203},"16":{"loc":{"start":{"line":220,"column":19},"end":{"line":297,"column":19}},"type":"cond-expr","locations":[{"start":{"line":221,"column":20},"end":{"line":253,"column":23}},{"start":{"line":254,"column":22},"end":{"line":297,"column":19}}],"line":220},"17":{"loc":{"start":{"line":254,"column":22},"end":{"line":297,"column":19}},"type":"cond-expr","locations":[{"start":{"line":255,"column":20},"end":{"line":280,"column":23}},{"start":{"line":283,"column":20},"end":{"line":296,"column":26}}],"line":254},"18":{"loc":{"start":{"line":305,"column":22},"end":{"line":307,"column":65}},"type":"cond-expr","locations":[{"start":{"line":306,"column":26},"end":{"line":306,"column":65}},{"start":{"line":307,"column":26},"end":{"line":307,"column":65}}],"line":305},"19":{"loc":{"start":{"line":325,"column":19},"end":{"line":335,"column":19}},"type":"cond-expr","locations":[{"start":{"line":326,"column":20},"end":{"line":332,"column":24}},{"start":{"line":334,"column":20},"end":{"line":334,"column":22}}],"line":325},"20":{"loc":{"start":{"line":342,"column":19},"end":{"line":419,"column":19}},"type":"cond-expr","locations":[{"start":{"line":343,"column":20},"end":{"line":375,"column":23}},{"start":{"line":376,"column":22},"end":{"line":419,"column":19}}],"line":342},"21":{"loc":{"start":{"line":376,"column":22},"end":{"line":419,"column":19}},"type":"cond-expr","locations":[{"start":{"line":377,"column":20},"end":{"line":402,"column":23}},{"start":{"line":405,"column":20},"end":{"line":418,"column":26}}],"line":376},"22":{"loc":{"start":{"line":439,"column":18},"end":{"line":441,"column":60}},"type":"cond-expr","locations":[{"start":{"line":440,"column":22},"end":{"line":440,"column":60}},{"start":{"line":441,"column":22},"end":{"line":441,"column":60}}],"line":439},"23":{"loc":{"start":{"line":444,"column":18},"end":{"line":446,"column":61}},"type":"cond-expr","locations":[{"start":{"line":445,"column":22},"end":{"line":445,"column":61}},{"start":{"line":446,"column":22},"end":{"line":446,"column":61}}],"line":444},"24":{"loc":{"start":{"line":453,"column":7},"end":{"line":457,"column":7}},"type":"cond-expr","locations":[{"start":{"line":454,"column":8},"end":{"line":454,"column":71}},{"start":{"line":456,"column":8},"end":{"line":456,"column":10}}],"line":453}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"f":{"0":0,"1":0,"2":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0]}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/home.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/home.js","statementMap":{"0":{"start":{"line":11,"column":21},"end":{"line":11,"column":50}},"1":{"start":{"line":12,"column":28},"end":{"line":12,"column":59}},"2":{"start":{"line":14,"column":26},"end":{"line":19,"column":4}},"3":{"start":{"line":15,"column":4},"end":{"line":18,"column":6}},"4":{"start":{"line":21,"column":33},"end":{"line":58,"column":4}},"5":{"start":{"line":22,"column":4},"end":{"line":57,"column":9}},"6":{"start":{"line":60,"column":2},"end":{"line":65,"column":9}},"7":{"start":{"line":61,"column":4},"end":{"line":64,"column":5}},"8":{"start":{"line":62,"column":6},"end":{"line":62,"column":58}},"9":{"start":{"line":63,"column":6},"end":{"line":63,"column":56}},"10":{"start":{"line":67,"column":2},"end":{"line":388,"column":4}},"11":{"start":{"line":391,"column":30},"end":{"line":409,"column":1}},"12":{"start":{"line":392,"column":29},"end":{"line":394,"column":3}},"13":{"start":{"line":395,"column":36},"end":{"line":397,"column":3}},"14":{"start":{"line":399,"column":2},"end":{"line":408,"column":4}}},"fnMap":{"0":{"name":"Home","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":28}},"loc":{"start":{"line":10,"column":36},"end":{"line":389,"column":1}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":49},"end":{"line":14,"column":50}},"loc":{"start":{"line":14,"column":62},"end":{"line":19,"column":3}},"line":14},"2":{"name":"(anonymous_2)","decl":{"start":{"line":21,"column":53},"end":{"line":21,"column":54}},"loc":{"start":{"line":22,"column":4},"end":{"line":57,"column":9}},"line":22},"3":{"name":"(anonymous_3)","decl":{"start":{"line":60,"column":12},"end":{"line":60,"column":13}},"loc":{"start":{"line":60,"column":18},"end":{"line":65,"column":3}},"line":60},"4":{"name":"(anonymous_4)","decl":{"start":{"line":391,"column":30},"end":{"line":391,"column":31}},"loc":{"start":{"line":391,"column":52},"end":{"line":409,"column":1}},"line":391}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":10},"end":{"line":28,"column":19}},"type":"cond-expr","locations":[{"start":{"line":27,"column":14},"end":{"line":27,"column":18}},{"start":{"line":28,"column":14},"end":{"line":28,"column":19}}],"line":26},"1":{"loc":{"start":{"line":30,"column":18},"end":{"line":30,"column":79}},"type":"cond-expr","locations":[{"start":{"line":30,"column":42},"end":{"line":30,"column":54}},{"start":{"line":30,"column":57},"end":{"line":30,"column":79}}],"line":30},"2":{"loc":{"start":{"line":34,"column":10},"end":{"line":40,"column":74}},"type":"cond-expr","locations":[{"start":{"line":35,"column":14},"end":{"line":37,"column":65}},{"start":{"line":38,"column":14},"end":{"line":40,"column":74}}],"line":34},"3":{"loc":{"start":{"line":35,"column":14},"end":{"line":37,"column":65}},"type":"cond-expr","locations":[{"start":{"line":36,"column":16},"end":{"line":36,"column":65}},{"start":{"line":37,"column":16},"end":{"line":37,"column":65}}],"line":35},"4":{"loc":{"start":{"line":38,"column":14},"end":{"line":40,"column":74}},"type":"cond-expr","locations":[{"start":{"line":39,"column":14},"end":{"line":39,"column":74}},{"start":{"line":40,"column":14},"end":{"line":40,"column":74}}],"line":38},"5":{"loc":{"start":{"line":43,"column":10},"end":{"line":45,"column":49}},"type":"cond-expr","locations":[{"start":{"line":44,"column":14},"end":{"line":44,"column":49}},{"start":{"line":45,"column":14},"end":{"line":45,"column":49}}],"line":43},"6":{"loc":{"start":{"line":47,"column":15},"end":{"line":47,"column":76}},"type":"cond-expr","locations":[{"start":{"line":47,"column":39},"end":{"line":47,"column":56}},{"start":{"line":47,"column":59},"end":{"line":47,"column":76}}],"line":47},"7":{"loc":{"start":{"line":49,"column":10},"end":{"line":49,"column":77}},"type":"cond-expr","locations":[{"start":{"line":49,"column":34},"end":{"line":49,"column":54}},{"start":{"line":49,"column":57},"end":{"line":49,"column":77}}],"line":49},"8":{"loc":{"start":{"line":52,"column":10},"end":{"line":54,"column":62}},"type":"cond-expr","locations":[{"start":{"line":53,"column":14},"end":{"line":53,"column":62}},{"start":{"line":54,"column":14},"end":{"line":54,"column":62}}],"line":52},"9":{"loc":{"start":{"line":61,"column":4},"end":{"line":64,"column":5}},"type":"if","locations":[{"start":{"line":61,"column":4},"end":{"line":64,"column":5}},{"start":{},"end":{}}],"line":61},"10":{"loc":{"start":{"line":62,"column":30},"end":{"line":62,"column":57}},"type":"binary-expr","locations":[{"start":{"line":62,"column":30},"end":{"line":62,"column":51}},{"start":{"line":62,"column":55},"end":{"line":62,"column":57}}],"line":62},"11":{"loc":{"start":{"line":72,"column":10},"end":{"line":72,"column":79}},"type":"cond-expr","locations":[{"start":{"line":72,"column":34},"end":{"line":72,"column":55}},{"start":{"line":72,"column":58},"end":{"line":72,"column":79}}],"line":72},"12":{"loc":{"start":{"line":77,"column":11},"end":{"line":81,"column":11}},"type":"cond-expr","locations":[{"start":{"line":78,"column":12},"end":{"line":78,"column":52}},{"start":{"line":80,"column":12},"end":{"line":80,"column":14}}],"line":77},"13":{"loc":{"start":{"line":85,"column":13},"end":{"line":87,"column":39}},"type":"cond-expr","locations":[{"start":{"line":86,"column":16},"end":{"line":86,"column":39}},{"start":{"line":87,"column":16},"end":{"line":87,"column":39}}],"line":85},"14":{"loc":{"start":{"line":92,"column":14},"end":{"line":94,"column":67}},"type":"cond-expr","locations":[{"start":{"line":93,"column":18},"end":{"line":93,"column":67}},{"start":{"line":94,"column":18},"end":{"line":94,"column":67}}],"line":92},"15":{"loc":{"start":{"line":103,"column":14},"end":{"line":105,"column":39}},"type":"cond-expr","locations":[{"start":{"line":104,"column":18},"end":{"line":104,"column":39}},{"start":{"line":105,"column":18},"end":{"line":105,"column":39}}],"line":103},"16":{"loc":{"start":{"line":113,"column":14},"end":{"line":113,"column":77}},"type":"cond-expr","locations":[{"start":{"line":113,"column":38},"end":{"line":113,"column":56}},{"start":{"line":113,"column":59},"end":{"line":113,"column":77}}],"line":113},"17":{"loc":{"start":{"line":118,"column":21},"end":{"line":118,"column":58}},"type":"cond-expr","locations":[{"start":{"line":118,"column":45},"end":{"line":118,"column":50}},{"start":{"line":118,"column":53},"end":{"line":118,"column":58}}],"line":118},"18":{"loc":{"start":{"line":124,"column":14},"end":{"line":126,"column":67}},"type":"cond-expr","locations":[{"start":{"line":125,"column":18},"end":{"line":125,"column":67}},{"start":{"line":126,"column":18},"end":{"line":126,"column":67}}],"line":124},"19":{"loc":{"start":{"line":137,"column":14},"end":{"line":139,"column":57}},"type":"cond-expr","locations":[{"start":{"line":138,"column":18},"end":{"line":138,"column":60}},{"start":{"line":139,"column":18},"end":{"line":139,"column":57}}],"line":137},"20":{"loc":{"start":{"line":159,"column":16},"end":{"line":161,"column":41}},"type":"cond-expr","locations":[{"start":{"line":160,"column":20},"end":{"line":160,"column":41}},{"start":{"line":161,"column":20},"end":{"line":161,"column":41}}],"line":159},"21":{"loc":{"start":{"line":168,"column":14},"end":{"line":168,"column":77}},"type":"cond-expr","locations":[{"start":{"line":168,"column":38},"end":{"line":168,"column":56}},{"start":{"line":168,"column":59},"end":{"line":168,"column":77}}],"line":168},"22":{"loc":{"start":{"line":174,"column":14},"end":{"line":176,"column":67}},"type":"cond-expr","locations":[{"start":{"line":175,"column":18},"end":{"line":175,"column":67}},{"start":{"line":176,"column":18},"end":{"line":176,"column":67}}],"line":174},"23":{"loc":{"start":{"line":186,"column":14},"end":{"line":186,"column":77}},"type":"cond-expr","locations":[{"start":{"line":186,"column":38},"end":{"line":186,"column":56}},{"start":{"line":186,"column":59},"end":{"line":186,"column":77}}],"line":186},"24":{"loc":{"start":{"line":197,"column":16},"end":{"line":199,"column":41}},"type":"cond-expr","locations":[{"start":{"line":198,"column":20},"end":{"line":198,"column":41}},{"start":{"line":199,"column":20},"end":{"line":199,"column":41}}],"line":197},"25":{"loc":{"start":{"line":206,"column":14},"end":{"line":206,"column":77}},"type":"cond-expr","locations":[{"start":{"line":206,"column":38},"end":{"line":206,"column":56}},{"start":{"line":206,"column":59},"end":{"line":206,"column":77}}],"line":206},"26":{"loc":{"start":{"line":213,"column":14},"end":{"line":215,"column":67}},"type":"cond-expr","locations":[{"start":{"line":214,"column":18},"end":{"line":214,"column":67}},{"start":{"line":215,"column":18},"end":{"line":215,"column":67}}],"line":213},"27":{"loc":{"start":{"line":225,"column":14},"end":{"line":225,"column":77}},"type":"cond-expr","locations":[{"start":{"line":225,"column":38},"end":{"line":225,"column":56}},{"start":{"line":225,"column":59},"end":{"line":225,"column":77}}],"line":225},"28":{"loc":{"start":{"line":236,"column":18},"end":{"line":240,"column":30}},"type":"cond-expr","locations":[{"start":{"line":237,"column":22},"end":{"line":238,"column":30}},{"start":{"line":239,"column":22},"end":{"line":240,"column":30}}],"line":236},"29":{"loc":{"start":{"line":245,"column":15},"end":{"line":247,"column":78}},"type":"cond-expr","locations":[{"start":{"line":246,"column":18},"end":{"line":246,"column":78}},{"start":{"line":247,"column":18},"end":{"line":247,"column":78}}],"line":245},"30":{"loc":{"start":{"line":250,"column":15},"end":{"line":252,"column":78}},"type":"cond-expr","locations":[{"start":{"line":251,"column":18},"end":{"line":251,"column":78}},{"start":{"line":252,"column":18},"end":{"line":252,"column":78}}],"line":250},"31":{"loc":{"start":{"line":263,"column":22},"end":{"line":265,"column":71}},"type":"cond-expr","locations":[{"start":{"line":264,"column":26},"end":{"line":264,"column":71}},{"start":{"line":265,"column":26},"end":{"line":265,"column":71}}],"line":263},"32":{"loc":{"start":{"line":276,"column":17},"end":{"line":279,"column":28}},"type":"cond-expr","locations":[{"start":{"line":277,"column":20},"end":{"line":277,"column":80}},{"start":{"line":278,"column":20},"end":{"line":279,"column":28}}],"line":276},"33":{"loc":{"start":{"line":282,"column":17},"end":{"line":285,"column":28}},"type":"cond-expr","locations":[{"start":{"line":283,"column":20},"end":{"line":283,"column":80}},{"start":{"line":284,"column":20},"end":{"line":285,"column":28}}],"line":282},"34":{"loc":{"start":{"line":290,"column":21},"end":{"line":294,"column":43}},"type":"cond-expr","locations":[{"start":{"line":291,"column":24},"end":{"line":292,"column":43}},{"start":{"line":293,"column":24},"end":{"line":294,"column":43}}],"line":290},"35":{"loc":{"start":{"line":299,"column":21},"end":{"line":303,"column":43}},"type":"cond-expr","locations":[{"start":{"line":300,"column":24},"end":{"line":301,"column":43}},{"start":{"line":302,"column":24},"end":{"line":303,"column":43}}],"line":299},"36":{"loc":{"start":{"line":310,"column":13},"end":{"line":313,"column":24}},"type":"cond-expr","locations":[{"start":{"line":311,"column":16},"end":{"line":311,"column":76}},{"start":{"line":312,"column":16},"end":{"line":313,"column":24}}],"line":310},"37":{"loc":{"start":{"line":322,"column":16},"end":{"line":324,"column":53}},"type":"cond-expr","locations":[{"start":{"line":323,"column":20},"end":{"line":323,"column":53}},{"start":{"line":324,"column":20},"end":{"line":324,"column":53}}],"line":322},"38":{"loc":{"start":{"line":327,"column":16},"end":{"line":373,"column":17}},"type":"cond-expr","locations":[{"start":{"line":328,"column":18},"end":{"line":349,"column":21}},{"start":{"line":351,"column":18},"end":{"line":372,"column":21}}],"line":327},"39":{"loc":{"start":{"line":382,"column":7},"end":{"line":386,"column":7}},"type":"cond-expr","locations":[{"start":{"line":383,"column":8},"end":{"line":383,"column":71}},{"start":{"line":385,"column":8},"end":{"line":385,"column":10}}],"line":382}},"s":{"0":1,"1":1,"2":1,"3":4,"4":1,"5":1,"6":1,"7":1,"8":0,"9":0,"10":1,"11":1,"12":0,"13":0,"14":0},"f":{"0":1,"1":4,"2":1,"3":1,"4":0},"b":{"0":[1,0],"1":[0,1],"2":[0,1],"3":[0,0],"4":[0,1],"5":[0,1],"6":[0,1],"7":[0,1],"8":[0,1],"9":[0,1],"10":[0,0],"11":[0,1],"12":[0,1],"13":[0,1],"14":[0,1],"15":[0,1],"16":[0,1],"17":[0,1],"18":[0,1],"19":[0,1],"20":[0,1],"21":[0,1],"22":[0,1],"23":[0,1],"24":[0,1],"25":[0,1],"26":[0,1],"27":[0,1],"28":[0,1],"29":[0,1],"30":[0,1],"31":[0,1],"32":[0,1],"33":[0,1],"34":[0,1],"35":[0,1],"36":[0,1],"37":[0,1],"38":[0,1],"39":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"cc30978ae8b1c189cfb0f171c33096f58469bd4b"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/index.js","statementMap":{"0":{"start":{"line":9,"column":16},"end":{"line":9,"column":40}},"1":{"start":{"line":11,"column":2},"end":{"line":17,"column":9}},"2":{"start":{"line":12,"column":4},"end":{"line":15,"column":5}},"3":{"start":{"line":13,"column":6},"end":{"line":13,"column":58}},"4":{"start":{"line":14,"column":6},"end":{"line":14,"column":56}},"5":{"start":{"line":16,"column":4},"end":{"line":16,"column":41}},"6":{"start":{"line":19,"column":2},"end":{"line":194,"column":4}},"7":{"start":{"line":197,"column":34},"end":{"line":203,"column":2}},"8":{"start":{"line":197,"column":57},"end":{"line":203,"column":1}}},"fnMap":{"0":{"name":"Index","decl":{"start":{"line":8,"column":24},"end":{"line":8,"column":29}},"loc":{"start":{"line":8,"column":37},"end":{"line":195,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":12},"end":{"line":11,"column":13}},"loc":{"start":{"line":11,"column":18},"end":{"line":17,"column":3}},"line":11},"2":{"name":"(anonymous_2)","decl":{"start":{"line":197,"column":34},"end":{"line":197,"column":35}},"loc":{"start":{"line":197,"column":57},"end":{"line":203,"column":1}},"line":197}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":4},"end":{"line":15,"column":5}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":15,"column":5}},{"start":{},"end":{}}],"line":12},"1":{"loc":{"start":{"line":13,"column":30},"end":{"line":13,"column":57}},"type":"binary-expr","locations":[{"start":{"line":13,"column":30},"end":{"line":13,"column":51}},{"start":{"line":13,"column":55},"end":{"line":13,"column":57}}],"line":13},"2":{"loc":{"start":{"line":23,"column":9},"end":{"line":27,"column":9}},"type":"cond-expr","locations":[{"start":{"line":24,"column":10},"end":{"line":24,"column":50}},{"start":{"line":26,"column":10},"end":{"line":26,"column":12}}],"line":23},"3":{"loc":{"start":{"line":54,"column":19},"end":{"line":54,"column":56}},"type":"cond-expr","locations":[{"start":{"line":54,"column":43},"end":{"line":54,"column":48}},{"start":{"line":54,"column":51},"end":{"line":54,"column":56}}],"line":54},"4":{"loc":{"start":{"line":188,"column":7},"end":{"line":192,"column":7}},"type":"cond-expr","locations":[{"start":{"line":189,"column":8},"end":{"line":189,"column":71}},{"start":{"line":191,"column":8},"end":{"line":191,"column":10}}],"line":188},"5":{"loc":{"start":{"line":199,"column":12},"end":{"line":199,"column":26}},"type":"binary-expr","locations":[{"start":{"line":199,"column":12},"end":{"line":199,"column":18}},{"start":{"line":199,"column":22},"end":{"line":199,"column":26}}],"line":199},"6":{"loc":{"start":{"line":200,"column":23},"end":{"line":200,"column":60}},"type":"binary-expr","locations":[{"start":{"line":200,"column":23},"end":{"line":200,"column":54}},{"start":{"line":200,"column":58},"end":{"line":200,"column":60}}],"line":200}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":1,"6":1,"7":1,"8":0},"f":{"0":1,"1":1,"2":0},"b":{"0":[0,1],"1":[0,0],"2":[0,1],"3":[0,1],"4":[0,1],"5":[0,0],"6":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b17e7654477b23b955914b47b2300f61cb98551f"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/notsupported.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/notsupported.js","statementMap":{"0":{"start":{"line":11,"column":16},"end":{"line":11,"column":40}},"1":{"start":{"line":12,"column":34},"end":{"line":12,"column":49}},"2":{"start":{"line":13,"column":34},"end":{"line":13,"column":49}},"3":{"start":{"line":14,"column":21},"end":{"line":14,"column":50}},"4":{"start":{"line":16,"column":2},"end":{"line":21,"column":9}},"5":{"start":{"line":17,"column":4},"end":{"line":20,"column":5}},"6":{"start":{"line":18,"column":6},"end":{"line":18,"column":58}},"7":{"start":{"line":19,"column":6},"end":{"line":19,"column":56}},"8":{"start":{"line":24,"column":4},"end":{"line":24,"column":22}},"9":{"start":{"line":25,"column":4},"end":{"line":25,"column":23}},"10":{"start":{"line":29,"column":4},"end":{"line":29,"column":22}},"11":{"start":{"line":30,"column":4},"end":{"line":30,"column":23}},"12":{"start":{"line":32,"column":2},"end":{"line":481,"column":4}},"13":{"start":{"line":484,"column":30},"end":{"line":496,"column":1}},"14":{"start":{"line":485,"column":19},"end":{"line":485,"column":76}},"15":{"start":{"line":487,"column":2},"end":{"line":495,"column":4}}},"fnMap":{"0":{"name":"notSupported","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":36}},"loc":{"start":{"line":10,"column":44},"end":{"line":482,"column":1}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":13}},"loc":{"start":{"line":16,"column":18},"end":{"line":21,"column":3}},"line":16},"2":{"name":"onClickEn","decl":{"start":{"line":23,"column":11},"end":{"line":23,"column":20}},"loc":{"start":{"line":23,"column":23},"end":{"line":26,"column":3}},"line":23},"3":{"name":"onClickFr","decl":{"start":{"line":28,"column":11},"end":{"line":28,"column":20}},"loc":{"start":{"line":28,"column":23},"end":{"line":31,"column":3}},"line":28},"4":{"name":"(anonymous_4)","decl":{"start":{"line":484,"column":30},"end":{"line":484,"column":31}},"loc":{"start":{"line":484,"column":52},"end":{"line":496,"column":1}},"line":484}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":20,"column":5}},{"start":{},"end":{}}],"line":17},"1":{"loc":{"start":{"line":18,"column":30},"end":{"line":18,"column":57}},"type":"binary-expr","locations":[{"start":{"line":18,"column":30},"end":{"line":18,"column":51}},{"start":{"line":18,"column":55},"end":{"line":18,"column":57}}],"line":18},"2":{"loc":{"start":{"line":36,"column":11},"end":{"line":40,"column":11}},"type":"cond-expr","locations":[{"start":{"line":37,"column":12},"end":{"line":37,"column":52}},{"start":{"line":39,"column":12},"end":{"line":39,"column":14}}],"line":36},"3":{"loc":{"start":{"line":79,"column":21},"end":{"line":79,"column":58}},"type":"cond-expr","locations":[{"start":{"line":79,"column":45},"end":{"line":79,"column":50}},{"start":{"line":79,"column":53},"end":{"line":79,"column":58}}],"line":79},"4":{"loc":{"start":{"line":85,"column":14},"end":{"line":87,"column":57}},"type":"cond-expr","locations":[{"start":{"line":86,"column":18},"end":{"line":86,"column":60}},{"start":{"line":87,"column":18},"end":{"line":87,"column":57}}],"line":85},"5":{"loc":{"start":{"line":162,"column":16},"end":{"line":164,"column":58}},"type":"cond-expr","locations":[{"start":{"line":163,"column":20},"end":{"line":163,"column":58}},{"start":{"line":164,"column":20},"end":{"line":164,"column":58}}],"line":162},"6":{"loc":{"start":{"line":167,"column":16},"end":{"line":169,"column":59}},"type":"cond-expr","locations":[{"start":{"line":168,"column":20},"end":{"line":168,"column":59}},{"start":{"line":169,"column":20},"end":{"line":169,"column":59}}],"line":167},"7":{"loc":{"start":{"line":190,"column":20},"end":{"line":192,"column":63}},"type":"cond-expr","locations":[{"start":{"line":191,"column":24},"end":{"line":191,"column":63}},{"start":{"line":192,"column":24},"end":{"line":192,"column":63}}],"line":190},"8":{"loc":{"start":{"line":218,"column":18},"end":{"line":220,"column":61}},"type":"cond-expr","locations":[{"start":{"line":219,"column":22},"end":{"line":219,"column":61}},{"start":{"line":220,"column":22},"end":{"line":220,"column":61}}],"line":218},"9":{"loc":{"start":{"line":223,"column":18},"end":{"line":225,"column":62}},"type":"cond-expr","locations":[{"start":{"line":224,"column":22},"end":{"line":224,"column":62}},{"start":{"line":225,"column":22},"end":{"line":225,"column":62}}],"line":223},"10":{"loc":{"start":{"line":237,"column":18},"end":{"line":239,"column":61}},"type":"cond-expr","locations":[{"start":{"line":238,"column":22},"end":{"line":238,"column":61}},{"start":{"line":239,"column":22},"end":{"line":239,"column":61}}],"line":237},"11":{"loc":{"start":{"line":242,"column":18},"end":{"line":244,"column":62}},"type":"cond-expr","locations":[{"start":{"line":243,"column":22},"end":{"line":243,"column":62}},{"start":{"line":244,"column":22},"end":{"line":244,"column":62}}],"line":242},"12":{"loc":{"start":{"line":256,"column":18},"end":{"line":258,"column":61}},"type":"cond-expr","locations":[{"start":{"line":257,"column":22},"end":{"line":257,"column":61}},{"start":{"line":258,"column":22},"end":{"line":258,"column":61}}],"line":256},"13":{"loc":{"start":{"line":261,"column":18},"end":{"line":263,"column":62}},"type":"cond-expr","locations":[{"start":{"line":262,"column":22},"end":{"line":262,"column":62}},{"start":{"line":263,"column":22},"end":{"line":263,"column":62}}],"line":261},"14":{"loc":{"start":{"line":275,"column":18},"end":{"line":277,"column":61}},"type":"cond-expr","locations":[{"start":{"line":276,"column":22},"end":{"line":276,"column":61}},{"start":{"line":277,"column":22},"end":{"line":277,"column":61}}],"line":275},"15":{"loc":{"start":{"line":280,"column":18},"end":{"line":282,"column":62}},"type":"cond-expr","locations":[{"start":{"line":281,"column":22},"end":{"line":281,"column":62}},{"start":{"line":282,"column":22},"end":{"line":282,"column":62}}],"line":280},"16":{"loc":{"start":{"line":301,"column":28},"end":{"line":301,"column":62}},"type":"cond-expr","locations":[{"start":{"line":301,"column":39},"end":{"line":301,"column":48}},{"start":{"line":301,"column":51},"end":{"line":301,"column":62}}],"line":301},"17":{"loc":{"start":{"line":302,"column":29},"end":{"line":302,"column":69}},"type":"cond-expr","locations":[{"start":{"line":302,"column":40},"end":{"line":302,"column":56}},{"start":{"line":302,"column":59},"end":{"line":302,"column":69}}],"line":302},"18":{"loc":{"start":{"line":377,"column":30},"end":{"line":377,"column":65}},"type":"cond-expr","locations":[{"start":{"line":377,"column":41},"end":{"line":377,"column":49}},{"start":{"line":377,"column":52},"end":{"line":377,"column":65}}],"line":377},"19":{"loc":{"start":{"line":379,"column":31},"end":{"line":379,"column":71}},"type":"cond-expr","locations":[{"start":{"line":379,"column":42},"end":{"line":379,"column":58}},{"start":{"line":379,"column":61},"end":{"line":379,"column":71}}],"line":379},"20":{"loc":{"start":{"line":461,"column":18},"end":{"line":463,"column":60}},"type":"cond-expr","locations":[{"start":{"line":462,"column":22},"end":{"line":462,"column":60}},{"start":{"line":463,"column":22},"end":{"line":463,"column":60}}],"line":461},"21":{"loc":{"start":{"line":466,"column":18},"end":{"line":468,"column":61}},"type":"cond-expr","locations":[{"start":{"line":467,"column":22},"end":{"line":467,"column":61}},{"start":{"line":468,"column":22},"end":{"line":468,"column":61}}],"line":466},"22":{"loc":{"start":{"line":475,"column":7},"end":{"line":479,"column":7}},"type":"cond-expr","locations":[{"start":{"line":476,"column":8},"end":{"line":476,"column":71}},{"start":{"line":478,"column":8},"end":{"line":478,"column":10}}],"line":475}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":1,"13":1,"14":0,"15":0},"f":{"0":1,"1":1,"2":0,"3":0,"4":0},"b":{"0":[0,1],"1":[0,0],"2":[0,1],"3":[0,1],"4":[0,1],"5":[0,1],"6":[0,1],"7":[0,1],"8":[0,1],"9":[0,1],"10":[0,1],"11":[0,1],"12":[0,1],"13":[0,1],"14":[0,1],"15":[0,1],"16":[0,1],"17":[0,1],"18":[0,1],"19":[0,1],"20":[0,1],"21":[0,1],"22":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"358d7b49d1b8e47fbab66ccb554c68853655ce5f"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/healthcheck.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/healthcheck.js","statementMap":{"0":{"start":{"line":3,"column":2},"end":{"line":3,"column":49}}},"fnMap":{"0":{"name":"handler","decl":{"start":{"line":2,"column":24},"end":{"line":2,"column":31}},"loc":{"start":{"line":2,"column":42},"end":{"line":4,"column":1}},"line":2}},"branchMap":{},"s":{"0":0},"f":{"0":0},"b":{}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/report-a-problem.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/report-a-problem.js","statementMap":{"0":{"start":{"line":8,"column":2},"end":{"line":60,"column":3}},"1":{"start":{"line":10,"column":4},"end":{"line":56,"column":5}},"2":{"start":{"line":14,"column":6},"end":{"line":14,"column":32}},"3":{"start":{"line":16,"column":6},"end":{"line":55,"column":7}},"4":{"start":{"line":17,"column":31},"end":{"line":44,"column":9}},"5":{"start":{"line":46,"column":8},"end":{"line":51,"column":9}},"6":{"start":{"line":47,"column":10},"end":{"line":47,"column":36}},"7":{"start":{"line":49,"column":10},"end":{"line":49,"column":43}},"8":{"start":{"line":50,"column":10},"end":{"line":50,"column":39}},"9":{"start":{"line":53,"column":8},"end":{"line":53,"column":25}},"10":{"start":{"line":54,"column":8},"end":{"line":54,"column":37}},"11":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":60}}},"fnMap":{"0":{"name":"handler","decl":{"start":{"line":7,"column":15},"end":{"line":7,"column":22}},"loc":{"start":{"line":7,"column":33},"end":{"line":61,"column":1}},"line":7}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":60,"column":3}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":60,"column":3}},{"start":{"line":57,"column":9},"end":{"line":60,"column":3}}],"line":8},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":56,"column":5}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":56,"column":5}},{"start":{"line":15,"column":11},"end":{"line":56,"column":5}}],"line":10},"2":{"loc":{"start":{"line":11,"column":6},"end":{"line":12,"column":43}},"type":"binary-expr","locations":[{"start":{"line":11,"column":6},"end":{"line":11,"column":39}},{"start":{"line":12,"column":6},"end":{"line":12,"column":43}}],"line":11},"3":{"loc":{"start":{"line":20,"column":23},"end":{"line":20,"column":55}},"type":"binary-expr","locations":[{"start":{"line":20,"column":23},"end":{"line":20,"column":42}},{"start":{"line":20,"column":46},"end":{"line":20,"column":55}}],"line":20},"4":{"loc":{"start":{"line":46,"column":8},"end":{"line":51,"column":9}},"type":"if","locations":[{"start":{"line":46,"column":8},"end":{"line":51,"column":9}},{"start":{"line":48,"column":15},"end":{"line":51,"column":9}}],"line":46}},"s":{"0":5,"1":5,"2":2,"3":3,"4":3,"5":2,"6":1,"7":1,"8":1,"9":1,"10":1,"11":0,"12":0},"f":{"0":5},"b":{"0":[5,0],"1":[2,3],"2":[5,4],"3":[3,0],"4":[1,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"daabb193eaa4520bee2cc19293fa4a2ed7f57131"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/robots.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/robots.js","statementMap":{"0":{"start":{"line":8,"column":2},"end":{"line":16,"column":3}},"1":{"start":{"line":9,"column":4},"end":{"line":9,"column":33}},"2":{"start":{"line":10,"column":4},"end":{"line":10,"column":34}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":41}},"4":{"start":{"line":12,"column":4},"end":{"line":12,"column":46}},"5":{"start":{"line":14,"column":4},"end":{"line":14,"column":33}},"6":{"start":{"line":15,"column":4},"end":{"line":15,"column":31}},"7":{"start":{"line":17,"column":2},"end":{"line":17,"column":12}}},"fnMap":{"0":{"name":"handler","decl":{"start":{"line":7,"column":30},"end":{"line":7,"column":37}},"loc":{"start":{"line":7,"column":48},"end":{"line":18,"column":1}},"line":7}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":16,"column":3}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":16,"column":3}},{"start":{"line":13,"column":9},"end":{"line":16,"column":3}}],"line":8}},"s":{"0":2,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":2},"f":{"0":2},"b":{"0":[1,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"dfacc08f62bbdf218f1c83f7b7931346443a4506"}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-navigator/[id].js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-navigator/[id].js","statementMap":{"0":{"start":{"line":13,"column":21},"end":{"line":13,"column":45}},"1":{"start":{"line":14,"column":23},"end":{"line":14,"column":55}},"2":{"start":{"line":16,"column":2},"end":{"line":21,"column":9}},"3":{"start":{"line":17,"column":4},"end":{"line":20,"column":5}},"4":{"start":{"line":18,"column":6},"end":{"line":18,"column":58}},"5":{"start":{"line":19,"column":6},"end":{"line":19,"column":56}},"6":{"start":{"line":23,"column":2},"end":{"line":419,"column":4}},"7":{"start":{"line":424,"column":19},"end":{"line":426,"column":3}},"8":{"start":{"line":428,"column":16},"end":{"line":428,"column":60}},"9":{"start":{"line":429,"column":2},"end":{"line":433,"column":5}},"10":{"start":{"line":430,"column":4},"end":{"line":432,"column":52}},"11":{"start":{"line":434,"column":2},"end":{"line":437,"column":4}},"12":{"start":{"line":440,"column":30},"end":{"line":467,"column":1}},"13":{"start":{"line":442,"column":19},"end":{"line":444,"column":3}},"14":{"start":{"line":446,"column":31},"end":{"line":448,"column":3}},"15":{"start":{"line":449,"column":16},"end":{"line":449,"column":43}},"16":{"start":{"line":451,"column":19},"end":{"line":456,"column":4}},"17":{"start":{"line":452,"column":4},"end":{"line":455,"column":6}},"18":{"start":{"line":458,"column":2},"end":{"line":466,"column":4}}},"fnMap":{"0":{"name":"DynamicBenefitNavigatorPage","decl":{"start":{"line":12,"column":24},"end":{"line":12,"column":51}},"loc":{"start":{"line":12,"column":59},"end":{"line":420,"column":1}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":13}},"loc":{"start":{"line":16,"column":18},"end":{"line":21,"column":3}},"line":16},"2":{"name":"getStaticPaths","decl":{"start":{"line":422,"column":22},"end":{"line":422,"column":36}},"loc":{"start":{"line":422,"column":39},"end":{"line":438,"column":1}},"line":422},"3":{"name":"(anonymous_3)","decl":{"start":{"line":429,"column":12},"end":{"line":429,"column":13}},"loc":{"start":{"line":429,"column":22},"end":{"line":433,"column":3}},"line":429},"4":{"name":"(anonymous_4)","decl":{"start":{"line":440,"column":30},"end":{"line":440,"column":31}},"loc":{"start":{"line":440,"column":60},"end":{"line":467,"column":1}},"line":440},"5":{"name":"(anonymous_5)","decl":{"start":{"line":451,"column":32},"end":{"line":451,"column":33}},"loc":{"start":{"line":451,"column":42},"end":{"line":456,"column":3}},"line":451}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":20,"column":5}},{"start":{},"end":{}}],"line":17},"1":{"loc":{"start":{"line":18,"column":30},"end":{"line":18,"column":57}},"type":"binary-expr","locations":[{"start":{"line":18,"column":30},"end":{"line":18,"column":51}},{"start":{"line":18,"column":55},"end":{"line":18,"column":57}}],"line":18},"2":{"loc":{"start":{"line":28,"column":10},"end":{"line":28,"column":79}},"type":"cond-expr","locations":[{"start":{"line":28,"column":34},"end":{"line":28,"column":55}},{"start":{"line":28,"column":58},"end":{"line":28,"column":79}}],"line":28},"3":{"loc":{"start":{"line":37,"column":11},"end":{"line":41,"column":11}},"type":"cond-expr","locations":[{"start":{"line":38,"column":12},"end":{"line":38,"column":52}},{"start":{"line":40,"column":12},"end":{"line":40,"column":14}}],"line":37},"4":{"loc":{"start":{"line":45,"column":13},"end":{"line":47,"column":72}},"type":"cond-expr","locations":[{"start":{"line":46,"column":16},"end":{"line":46,"column":61}},{"start":{"line":47,"column":16},"end":{"line":47,"column":72}}],"line":45},"5":{"loc":{"start":{"line":52,"column":14},"end":{"line":52,"column":77}},"type":"cond-expr","locations":[{"start":{"line":52,"column":38},"end":{"line":52,"column":56}},{"start":{"line":52,"column":59},"end":{"line":52,"column":77}}],"line":52},"6":{"loc":{"start":{"line":61,"column":14},"end":{"line":63,"column":39}},"type":"cond-expr","locations":[{"start":{"line":62,"column":18},"end":{"line":62,"column":39}},{"start":{"line":63,"column":18},"end":{"line":63,"column":39}}],"line":61},"7":{"loc":{"start":{"line":71,"column":14},"end":{"line":71,"column":77}},"type":"cond-expr","locations":[{"start":{"line":71,"column":38},"end":{"line":71,"column":56}},{"start":{"line":71,"column":59},"end":{"line":71,"column":77}}],"line":71},"8":{"loc":{"start":{"line":76,"column":21},"end":{"line":76,"column":58}},"type":"cond-expr","locations":[{"start":{"line":76,"column":45},"end":{"line":76,"column":50}},{"start":{"line":76,"column":53},"end":{"line":76,"column":58}}],"line":76},"9":{"loc":{"start":{"line":82,"column":14},"end":{"line":84,"column":57}},"type":"cond-expr","locations":[{"start":{"line":83,"column":18},"end":{"line":83,"column":60}},{"start":{"line":84,"column":18},"end":{"line":84,"column":57}}],"line":82},"10":{"loc":{"start":{"line":98,"column":14},"end":{"line":98,"column":77}},"type":"cond-expr","locations":[{"start":{"line":98,"column":38},"end":{"line":98,"column":56}},{"start":{"line":98,"column":59},"end":{"line":98,"column":77}}],"line":98},"11":{"loc":{"start":{"line":116,"column":16},"end":{"line":118,"column":41}},"type":"cond-expr","locations":[{"start":{"line":117,"column":20},"end":{"line":117,"column":41}},{"start":{"line":118,"column":20},"end":{"line":118,"column":41}}],"line":116},"12":{"loc":{"start":{"line":125,"column":14},"end":{"line":125,"column":77}},"type":"cond-expr","locations":[{"start":{"line":125,"column":38},"end":{"line":125,"column":56}},{"start":{"line":125,"column":59},"end":{"line":125,"column":77}}],"line":125},"13":{"loc":{"start":{"line":143,"column":14},"end":{"line":143,"column":77}},"type":"cond-expr","locations":[{"start":{"line":143,"column":38},"end":{"line":143,"column":56}},{"start":{"line":143,"column":59},"end":{"line":143,"column":77}}],"line":143},"14":{"loc":{"start":{"line":154,"column":16},"end":{"line":156,"column":41}},"type":"cond-expr","locations":[{"start":{"line":155,"column":20},"end":{"line":155,"column":41}},{"start":{"line":156,"column":20},"end":{"line":156,"column":41}}],"line":154},"15":{"loc":{"start":{"line":163,"column":14},"end":{"line":163,"column":77}},"type":"cond-expr","locations":[{"start":{"line":163,"column":38},"end":{"line":163,"column":56}},{"start":{"line":163,"column":59},"end":{"line":163,"column":77}}],"line":163},"16":{"loc":{"start":{"line":182,"column":14},"end":{"line":182,"column":77}},"type":"cond-expr","locations":[{"start":{"line":182,"column":38},"end":{"line":182,"column":56}},{"start":{"line":182,"column":59},"end":{"line":182,"column":77}}],"line":182},"17":{"loc":{"start":{"line":191,"column":14},"end":{"line":191,"column":77}},"type":"cond-expr","locations":[{"start":{"line":191,"column":38},"end":{"line":191,"column":56}},{"start":{"line":191,"column":59},"end":{"line":191,"column":77}}],"line":191},"18":{"loc":{"start":{"line":197,"column":16},"end":{"line":197,"column":73}},"type":"cond-expr","locations":[{"start":{"line":197,"column":40},"end":{"line":197,"column":55}},{"start":{"line":197,"column":58},"end":{"line":197,"column":73}}],"line":197},"19":{"loc":{"start":{"line":200,"column":15},"end":{"line":202,"column":40}},"type":"cond-expr","locations":[{"start":{"line":201,"column":18},"end":{"line":201,"column":40}},{"start":{"line":202,"column":18},"end":{"line":202,"column":40}}],"line":200},"20":{"loc":{"start":{"line":209,"column":16},"end":{"line":209,"column":73}},"type":"cond-expr","locations":[{"start":{"line":209,"column":40},"end":{"line":209,"column":55}},{"start":{"line":209,"column":58},"end":{"line":209,"column":73}}],"line":209},"21":{"loc":{"start":{"line":212,"column":15},"end":{"line":214,"column":40}},"type":"cond-expr","locations":[{"start":{"line":213,"column":18},"end":{"line":213,"column":40}},{"start":{"line":214,"column":18},"end":{"line":214,"column":40}}],"line":212},"22":{"loc":{"start":{"line":233,"column":17},"end":{"line":236,"column":28}},"type":"cond-expr","locations":[{"start":{"line":234,"column":20},"end":{"line":234,"column":80}},{"start":{"line":235,"column":20},"end":{"line":236,"column":28}}],"line":233},"23":{"loc":{"start":{"line":239,"column":17},"end":{"line":242,"column":28}},"type":"cond-expr","locations":[{"start":{"line":240,"column":20},"end":{"line":240,"column":80}},{"start":{"line":241,"column":20},"end":{"line":242,"column":28}}],"line":239},"24":{"loc":{"start":{"line":246,"column":20},"end":{"line":250,"column":36}},"type":"cond-expr","locations":[{"start":{"line":247,"column":24},"end":{"line":248,"column":36}},{"start":{"line":249,"column":24},"end":{"line":250,"column":36}}],"line":246},"25":{"loc":{"start":{"line":253,"column":19},"end":{"line":257,"column":30}},"type":"cond-expr","locations":[{"start":{"line":254,"column":22},"end":{"line":255,"column":30}},{"start":{"line":256,"column":22},"end":{"line":257,"column":30}}],"line":253},"26":{"loc":{"start":{"line":260,"column":19},"end":{"line":264,"column":30}},"type":"cond-expr","locations":[{"start":{"line":261,"column":22},"end":{"line":262,"column":30}},{"start":{"line":263,"column":22},"end":{"line":264,"column":30}}],"line":260},"27":{"loc":{"start":{"line":269,"column":17},"end":{"line":272,"column":28}},"type":"cond-expr","locations":[{"start":{"line":270,"column":20},"end":{"line":270,"column":80}},{"start":{"line":271,"column":20},"end":{"line":272,"column":28}}],"line":269},"28":{"loc":{"start":{"line":276,"column":17},"end":{"line":279,"column":28}},"type":"cond-expr","locations":[{"start":{"line":277,"column":20},"end":{"line":277,"column":80}},{"start":{"line":278,"column":20},"end":{"line":279,"column":28}}],"line":276},"29":{"loc":{"start":{"line":283,"column":17},"end":{"line":286,"column":28}},"type":"cond-expr","locations":[{"start":{"line":284,"column":20},"end":{"line":284,"column":80}},{"start":{"line":285,"column":20},"end":{"line":286,"column":28}}],"line":283},"30":{"loc":{"start":{"line":290,"column":17},"end":{"line":293,"column":28}},"type":"cond-expr","locations":[{"start":{"line":291,"column":20},"end":{"line":291,"column":80}},{"start":{"line":292,"column":20},"end":{"line":293,"column":28}}],"line":290},"31":{"loc":{"start":{"line":296,"column":17},"end":{"line":299,"column":28}},"type":"cond-expr","locations":[{"start":{"line":297,"column":20},"end":{"line":297,"column":80}},{"start":{"line":298,"column":20},"end":{"line":299,"column":28}}],"line":296},"32":{"loc":{"start":{"line":302,"column":17},"end":{"line":305,"column":28}},"type":"cond-expr","locations":[{"start":{"line":303,"column":20},"end":{"line":303,"column":80}},{"start":{"line":304,"column":20},"end":{"line":305,"column":28}}],"line":302},"33":{"loc":{"start":{"line":309,"column":17},"end":{"line":312,"column":28}},"type":"cond-expr","locations":[{"start":{"line":310,"column":20},"end":{"line":310,"column":80}},{"start":{"line":311,"column":20},"end":{"line":312,"column":28}}],"line":309},"34":{"loc":{"start":{"line":315,"column":17},"end":{"line":319,"column":28}},"type":"cond-expr","locations":[{"start":{"line":316,"column":20},"end":{"line":317,"column":28}},{"start":{"line":318,"column":20},"end":{"line":319,"column":28}}],"line":315},"35":{"loc":{"start":{"line":322,"column":17},"end":{"line":326,"column":28}},"type":"cond-expr","locations":[{"start":{"line":323,"column":20},"end":{"line":324,"column":28}},{"start":{"line":325,"column":20},"end":{"line":326,"column":28}}],"line":322},"36":{"loc":{"start":{"line":330,"column":17},"end":{"line":334,"column":28}},"type":"cond-expr","locations":[{"start":{"line":331,"column":20},"end":{"line":332,"column":28}},{"start":{"line":333,"column":20},"end":{"line":334,"column":28}}],"line":330},"37":{"loc":{"start":{"line":337,"column":17},"end":{"line":341,"column":28}},"type":"cond-expr","locations":[{"start":{"line":338,"column":20},"end":{"line":339,"column":28}},{"start":{"line":340,"column":20},"end":{"line":341,"column":28}}],"line":337},"38":{"loc":{"start":{"line":344,"column":17},"end":{"line":348,"column":28}},"type":"cond-expr","locations":[{"start":{"line":345,"column":20},"end":{"line":346,"column":28}},{"start":{"line":347,"column":20},"end":{"line":348,"column":28}}],"line":344},"39":{"loc":{"start":{"line":351,"column":17},"end":{"line":355,"column":28}},"type":"cond-expr","locations":[{"start":{"line":352,"column":20},"end":{"line":353,"column":28}},{"start":{"line":354,"column":20},"end":{"line":355,"column":28}}],"line":351},"40":{"loc":{"start":{"line":359,"column":17},"end":{"line":363,"column":28}},"type":"cond-expr","locations":[{"start":{"line":360,"column":20},"end":{"line":361,"column":28}},{"start":{"line":362,"column":20},"end":{"line":363,"column":28}}],"line":359},"41":{"loc":{"start":{"line":366,"column":17},"end":{"line":370,"column":28}},"type":"cond-expr","locations":[{"start":{"line":367,"column":20},"end":{"line":368,"column":28}},{"start":{"line":369,"column":20},"end":{"line":370,"column":28}}],"line":366},"42":{"loc":{"start":{"line":373,"column":17},"end":{"line":377,"column":28}},"type":"cond-expr","locations":[{"start":{"line":374,"column":20},"end":{"line":375,"column":28}},{"start":{"line":376,"column":20},"end":{"line":377,"column":28}}],"line":373},"43":{"loc":{"start":{"line":381,"column":19},"end":{"line":385,"column":41}},"type":"cond-expr","locations":[{"start":{"line":382,"column":22},"end":{"line":383,"column":41}},{"start":{"line":384,"column":22},"end":{"line":385,"column":41}}],"line":381},"44":{"loc":{"start":{"line":388,"column":19},"end":{"line":392,"column":41}},"type":"cond-expr","locations":[{"start":{"line":389,"column":22},"end":{"line":390,"column":41}},{"start":{"line":391,"column":22},"end":{"line":392,"column":41}}],"line":388},"45":{"loc":{"start":{"line":395,"column":19},"end":{"line":399,"column":41}},"type":"cond-expr","locations":[{"start":{"line":396,"column":22},"end":{"line":397,"column":41}},{"start":{"line":398,"column":22},"end":{"line":399,"column":41}}],"line":395},"46":{"loc":{"start":{"line":403,"column":17},"end":{"line":407,"column":28}},"type":"cond-expr","locations":[{"start":{"line":404,"column":20},"end":{"line":405,"column":28}},{"start":{"line":406,"column":20},"end":{"line":407,"column":28}}],"line":403},"47":{"loc":{"start":{"line":413,"column":7},"end":{"line":417,"column":7}},"type":"cond-expr","locations":[{"start":{"line":414,"column":8},"end":{"line":414,"column":71}},{"start":{"line":416,"column":8},"end":{"line":416,"column":10}}],"line":413},"48":{"loc":{"start":{"line":430,"column":4},"end":{"line":432,"column":51}},"type":"cond-expr","locations":[{"start":{"line":431,"column":9},"end":{"line":431,"column":50}},{"start":{"line":432,"column":9},"end":{"line":432,"column":50}}],"line":430},"49":{"loc":{"start":{"line":453,"column":6},"end":{"line":454,"column":47}},"type":"binary-expr","locations":[{"start":{"line":453,"column":6},"end":{"line":453,"column":47}},{"start":{"line":454,"column":6},"end":{"line":454,"column":47}}],"line":453}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0]}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-navigator/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-navigator/index.js","statementMap":{"0":{"start":{"line":14,"column":21},"end":{"line":14,"column":50}},"1":{"start":{"line":15,"column":24},"end":{"line":15,"column":51}},"2":{"start":{"line":16,"column":31},"end":{"line":24,"column":3}},"3":{"start":{"line":19,"column":8},"end":{"line":22,"column":31}},"4":{"start":{"line":25,"column":26},"end":{"line":34,"column":3}},"5":{"start":{"line":37,"column":21},"end":{"line":37,"column":23}},"6":{"start":{"line":39,"column":4},"end":{"line":75,"column":5}},"7":{"start":{"line":40,"column":6},"end":{"line":74,"column":7}},"8":{"start":{"line":41,"column":8},"end":{"line":43,"column":10}},"9":{"start":{"line":44,"column":13},"end":{"line":74,"column":7}},"10":{"start":{"line":45,"column":26},"end":{"line":49,"column":10}},"11":{"start":{"line":46,"column":10},"end":{"line":48,"column":15}},"12":{"start":{"line":50,"column":8},"end":{"line":54,"column":10}},"13":{"start":{"line":55,"column":13},"end":{"line":74,"column":7}},"14":{"start":{"line":56,"column":26},"end":{"line":60,"column":10}},"15":{"start":{"line":57,"column":10},"end":{"line":59,"column":15}},"16":{"start":{"line":61,"column":8},"end":{"line":65,"column":10}},"17":{"start":{"line":66,"column":13},"end":{"line":74,"column":7}},"18":{"start":{"line":67,"column":8},"end":{"line":71,"column":10}},"19":{"start":{"line":72,"column":13},"end":{"line":74,"column":7}},"20":{"start":{"line":73,"column":8},"end":{"line":73,"column":34}},"21":{"start":{"line":77,"column":4},"end":{"line":77,"column":20}},"22":{"start":{"line":80,"column":32},"end":{"line":103,"column":4}},"23":{"start":{"line":81,"column":4},"end":{"line":102,"column":9}},"24":{"start":{"line":105,"column":2},"end":{"line":110,"column":9}},"25":{"start":{"line":106,"column":4},"end":{"line":109,"column":5}},"26":{"start":{"line":107,"column":6},"end":{"line":107,"column":58}},"27":{"start":{"line":108,"column":6},"end":{"line":108,"column":56}},"28":{"start":{"line":112,"column":2},"end":{"line":783,"column":4}},"29":{"start":{"line":786,"column":30},"end":{"line":807,"column":1}},"30":{"start":{"line":788,"column":29},"end":{"line":790,"column":3}},"31":{"start":{"line":792,"column":31},"end":{"line":794,"column":3}},"32":{"start":{"line":796,"column":2},"end":{"line":806,"column":4}}},"fnMap":{"0":{"name":"BenefitsNavigatorOverview","decl":{"start":{"line":13,"column":24},"end":{"line":13,"column":49}},"loc":{"start":{"line":13,"column":57},"end":{"line":784,"column":1}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":6},"end":{"line":18,"column":7}},"loc":{"start":{"line":19,"column":8},"end":{"line":22,"column":31}},"line":19},"2":{"name":"generateReactElements","decl":{"start":{"line":36,"column":11},"end":{"line":36,"column":32}},"loc":{"start":{"line":36,"column":39},"end":{"line":78,"column":3}},"line":36},"3":{"name":"(anonymous_3)","decl":{"start":{"line":45,"column":43},"end":{"line":45,"column":44}},"loc":{"start":{"line":46,"column":10},"end":{"line":48,"column":15}},"line":46},"4":{"name":"(anonymous_4)","decl":{"start":{"line":56,"column":43},"end":{"line":56,"column":44}},"loc":{"start":{"line":57,"column":10},"end":{"line":59,"column":15}},"line":57},"5":{"name":"(anonymous_5)","decl":{"start":{"line":80,"column":48},"end":{"line":80,"column":49}},"loc":{"start":{"line":81,"column":4},"end":{"line":102,"column":9}},"line":81},"6":{"name":"(anonymous_6)","decl":{"start":{"line":105,"column":12},"end":{"line":105,"column":13}},"loc":{"start":{"line":105,"column":18},"end":{"line":110,"column":3}},"line":105},"7":{"name":"(anonymous_7)","decl":{"start":{"line":786,"column":30},"end":{"line":786,"column":31}},"loc":{"start":{"line":786,"column":52},"end":{"line":807,"column":1}},"line":786}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":8},"end":{"line":22,"column":31}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":31}},{"start":{"line":20,"column":8},"end":{"line":20,"column":29}},{"start":{"line":21,"column":8},"end":{"line":21,"column":37}},{"start":{"line":22,"column":8},"end":{"line":22,"column":31}}],"line":19},"1":{"loc":{"start":{"line":40,"column":6},"end":{"line":74,"column":7}},"type":"if","locations":[{"start":{"line":40,"column":6},"end":{"line":74,"column":7}},{"start":{"line":44,"column":13},"end":{"line":74,"column":7}}],"line":40},"2":{"loc":{"start":{"line":44,"column":13},"end":{"line":74,"column":7}},"type":"if","locations":[{"start":{"line":44,"column":13},"end":{"line":74,"column":7}},{"start":{"line":55,"column":13},"end":{"line":74,"column":7}}],"line":44},"3":{"loc":{"start":{"line":55,"column":13},"end":{"line":74,"column":7}},"type":"if","locations":[{"start":{"line":55,"column":13},"end":{"line":74,"column":7}},{"start":{"line":66,"column":13},"end":{"line":74,"column":7}}],"line":55},"4":{"loc":{"start":{"line":66,"column":13},"end":{"line":74,"column":7}},"type":"if","locations":[{"start":{"line":66,"column":13},"end":{"line":74,"column":7}},{"start":{"line":72,"column":13},"end":{"line":74,"column":7}}],"line":66},"5":{"loc":{"start":{"line":72,"column":13},"end":{"line":74,"column":7}},"type":"if","locations":[{"start":{"line":72,"column":13},"end":{"line":74,"column":7}},{"start":{},"end":{}}],"line":72},"6":{"loc":{"start":{"line":85,"column":10},"end":{"line":87,"column":73}},"type":"cond-expr","locations":[{"start":{"line":86,"column":14},"end":{"line":86,"column":73}},{"start":{"line":87,"column":14},"end":{"line":87,"column":73}}],"line":85},"7":{"loc":{"start":{"line":90,"column":10},"end":{"line":92,"column":48}},"type":"cond-expr","locations":[{"start":{"line":91,"column":14},"end":{"line":91,"column":48}},{"start":{"line":92,"column":14},"end":{"line":92,"column":48}}],"line":90},"8":{"loc":{"start":{"line":94,"column":15},"end":{"line":94,"column":74}},"type":"cond-expr","locations":[{"start":{"line":94,"column":39},"end":{"line":94,"column":55}},{"start":{"line":94,"column":58},"end":{"line":94,"column":74}}],"line":94},"9":{"loc":{"start":{"line":95,"column":14},"end":{"line":95,"column":79}},"type":"cond-expr","locations":[{"start":{"line":95,"column":38},"end":{"line":95,"column":57}},{"start":{"line":95,"column":60},"end":{"line":95,"column":79}}],"line":95},"10":{"loc":{"start":{"line":97,"column":10},"end":{"line":99,"column":48}},"type":"cond-expr","locations":[{"start":{"line":98,"column":14},"end":{"line":98,"column":48}},{"start":{"line":99,"column":14},"end":{"line":99,"column":48}}],"line":97},"11":{"loc":{"start":{"line":106,"column":4},"end":{"line":109,"column":5}},"type":"if","locations":[{"start":{"line":106,"column":4},"end":{"line":109,"column":5}},{"start":{},"end":{}}],"line":106},"12":{"loc":{"start":{"line":107,"column":30},"end":{"line":107,"column":57}},"type":"binary-expr","locations":[{"start":{"line":107,"column":30},"end":{"line":107,"column":51}},{"start":{"line":107,"column":55},"end":{"line":107,"column":57}}],"line":107},"13":{"loc":{"start":{"line":117,"column":10},"end":{"line":117,"column":79}},"type":"cond-expr","locations":[{"start":{"line":117,"column":34},"end":{"line":117,"column":55}},{"start":{"line":117,"column":58},"end":{"line":117,"column":79}}],"line":117},"14":{"loc":{"start":{"line":126,"column":11},"end":{"line":130,"column":11}},"type":"cond-expr","locations":[{"start":{"line":127,"column":12},"end":{"line":127,"column":52}},{"start":{"line":129,"column":12},"end":{"line":129,"column":14}}],"line":126},"15":{"loc":{"start":{"line":134,"column":13},"end":{"line":136,"column":72}},"type":"cond-expr","locations":[{"start":{"line":135,"column":16},"end":{"line":135,"column":61}},{"start":{"line":136,"column":16},"end":{"line":136,"column":72}}],"line":134},"16":{"loc":{"start":{"line":141,"column":14},"end":{"line":143,"column":67}},"type":"cond-expr","locations":[{"start":{"line":142,"column":18},"end":{"line":142,"column":67}},{"start":{"line":143,"column":18},"end":{"line":143,"column":67}}],"line":141},"17":{"loc":{"start":{"line":153,"column":16},"end":{"line":155,"column":41}},"type":"cond-expr","locations":[{"start":{"line":154,"column":20},"end":{"line":154,"column":41}},{"start":{"line":155,"column":20},"end":{"line":155,"column":41}}],"line":153},"18":{"loc":{"start":{"line":163,"column":14},"end":{"line":165,"column":39}},"type":"cond-expr","locations":[{"start":{"line":164,"column":18},"end":{"line":164,"column":39}},{"start":{"line":165,"column":18},"end":{"line":165,"column":39}}],"line":163},"19":{"loc":{"start":{"line":173,"column":14},"end":{"line":173,"column":77}},"type":"cond-expr","locations":[{"start":{"line":173,"column":38},"end":{"line":173,"column":56}},{"start":{"line":173,"column":59},"end":{"line":173,"column":77}}],"line":173},"20":{"loc":{"start":{"line":178,"column":21},"end":{"line":178,"column":58}},"type":"cond-expr","locations":[{"start":{"line":178,"column":45},"end":{"line":178,"column":50}},{"start":{"line":178,"column":53},"end":{"line":178,"column":58}}],"line":178},"21":{"loc":{"start":{"line":184,"column":14},"end":{"line":186,"column":57}},"type":"cond-expr","locations":[{"start":{"line":185,"column":18},"end":{"line":185,"column":60}},{"start":{"line":186,"column":18},"end":{"line":186,"column":57}}],"line":184},"22":{"loc":{"start":{"line":200,"column":14},"end":{"line":202,"column":67}},"type":"cond-expr","locations":[{"start":{"line":201,"column":18},"end":{"line":201,"column":67}},{"start":{"line":202,"column":18},"end":{"line":202,"column":67}}],"line":200},"23":{"loc":{"start":{"line":220,"column":16},"end":{"line":222,"column":41}},"type":"cond-expr","locations":[{"start":{"line":221,"column":20},"end":{"line":221,"column":41}},{"start":{"line":222,"column":20},"end":{"line":222,"column":41}}],"line":220},"24":{"loc":{"start":{"line":229,"column":14},"end":{"line":229,"column":77}},"type":"cond-expr","locations":[{"start":{"line":229,"column":38},"end":{"line":229,"column":56}},{"start":{"line":229,"column":59},"end":{"line":229,"column":77}}],"line":229},"25":{"loc":{"start":{"line":235,"column":14},"end":{"line":237,"column":67}},"type":"cond-expr","locations":[{"start":{"line":236,"column":18},"end":{"line":236,"column":67}},{"start":{"line":237,"column":18},"end":{"line":237,"column":67}}],"line":235},"26":{"loc":{"start":{"line":247,"column":14},"end":{"line":249,"column":58}},"type":"cond-expr","locations":[{"start":{"line":248,"column":18},"end":{"line":248,"column":58}},{"start":{"line":249,"column":18},"end":{"line":249,"column":58}}],"line":247},"27":{"loc":{"start":{"line":260,"column":16},"end":{"line":262,"column":41}},"type":"cond-expr","locations":[{"start":{"line":261,"column":20},"end":{"line":261,"column":41}},{"start":{"line":262,"column":20},"end":{"line":262,"column":41}}],"line":260},"28":{"loc":{"start":{"line":269,"column":14},"end":{"line":269,"column":77}},"type":"cond-expr","locations":[{"start":{"line":269,"column":38},"end":{"line":269,"column":56}},{"start":{"line":269,"column":59},"end":{"line":269,"column":77}}],"line":269},"29":{"loc":{"start":{"line":276,"column":14},"end":{"line":278,"column":67}},"type":"cond-expr","locations":[{"start":{"line":277,"column":18},"end":{"line":277,"column":67}},{"start":{"line":278,"column":18},"end":{"line":278,"column":67}}],"line":276},"30":{"loc":{"start":{"line":288,"column":14},"end":{"line":290,"column":58}},"type":"cond-expr","locations":[{"start":{"line":289,"column":18},"end":{"line":289,"column":58}},{"start":{"line":290,"column":18},"end":{"line":290,"column":58}}],"line":288},"31":{"loc":{"start":{"line":303,"column":20},"end":{"line":307,"column":32}},"type":"cond-expr","locations":[{"start":{"line":304,"column":24},"end":{"line":305,"column":32}},{"start":{"line":306,"column":24},"end":{"line":307,"column":32}}],"line":303},"32":{"loc":{"start":{"line":316,"column":24},"end":{"line":318,"column":73}},"type":"cond-expr","locations":[{"start":{"line":317,"column":28},"end":{"line":317,"column":73}},{"start":{"line":318,"column":28},"end":{"line":318,"column":73}}],"line":316},"33":{"loc":{"start":{"line":321,"column":24},"end":{"line":323,"column":68}},"type":"cond-expr","locations":[{"start":{"line":322,"column":28},"end":{"line":322,"column":68}},{"start":{"line":323,"column":28},"end":{"line":323,"column":68}}],"line":321},"34":{"loc":{"start":{"line":332,"column":17},"end":{"line":335,"column":28}},"type":"cond-expr","locations":[{"start":{"line":333,"column":20},"end":{"line":333,"column":80}},{"start":{"line":334,"column":20},"end":{"line":335,"column":28}}],"line":332},"35":{"loc":{"start":{"line":341,"column":20},"end":{"line":343,"column":54}},"type":"cond-expr","locations":[{"start":{"line":342,"column":24},"end":{"line":342,"column":54}},{"start":{"line":343,"column":24},"end":{"line":343,"column":54}}],"line":341},"36":{"loc":{"start":{"line":346,"column":20},"end":{"line":348,"column":54}},"type":"cond-expr","locations":[{"start":{"line":347,"column":24},"end":{"line":347,"column":54}},{"start":{"line":348,"column":24},"end":{"line":348,"column":54}}],"line":346},"37":{"loc":{"start":{"line":351,"column":20},"end":{"line":353,"column":54}},"type":"cond-expr","locations":[{"start":{"line":352,"column":24},"end":{"line":352,"column":54}},{"start":{"line":353,"column":24},"end":{"line":353,"column":54}}],"line":351},"38":{"loc":{"start":{"line":359,"column":20},"end":{"line":363,"column":38}},"type":"cond-expr","locations":[{"start":{"line":360,"column":24},"end":{"line":361,"column":38}},{"start":{"line":362,"column":24},"end":{"line":363,"column":38}}],"line":359},"39":{"loc":{"start":{"line":366,"column":20},"end":{"line":370,"column":32}},"type":"cond-expr","locations":[{"start":{"line":367,"column":24},"end":{"line":368,"column":32}},{"start":{"line":369,"column":24},"end":{"line":370,"column":32}}],"line":366},"40":{"loc":{"start":{"line":373,"column":20},"end":{"line":375,"column":57}},"type":"cond-expr","locations":[{"start":{"line":374,"column":24},"end":{"line":374,"column":57}},{"start":{"line":375,"column":24},"end":{"line":375,"column":57}}],"line":373},"41":{"loc":{"start":{"line":378,"column":20},"end":{"line":380,"column":70}},"type":"cond-expr","locations":[{"start":{"line":379,"column":24},"end":{"line":379,"column":70}},{"start":{"line":380,"column":24},"end":{"line":380,"column":70}}],"line":378},"42":{"loc":{"start":{"line":383,"column":20},"end":{"line":387,"column":32}},"type":"cond-expr","locations":[{"start":{"line":384,"column":24},"end":{"line":385,"column":32}},{"start":{"line":386,"column":24},"end":{"line":387,"column":32}}],"line":383},"43":{"loc":{"start":{"line":395,"column":15},"end":{"line":397,"column":78}},"type":"cond-expr","locations":[{"start":{"line":396,"column":18},"end":{"line":396,"column":78}},{"start":{"line":397,"column":18},"end":{"line":397,"column":78}}],"line":395},"44":{"loc":{"start":{"line":400,"column":15},"end":{"line":402,"column":78}},"type":"cond-expr","locations":[{"start":{"line":401,"column":18},"end":{"line":401,"column":78}},{"start":{"line":402,"column":18},"end":{"line":402,"column":78}}],"line":400},"45":{"loc":{"start":{"line":405,"column":15},"end":{"line":407,"column":78}},"type":"cond-expr","locations":[{"start":{"line":406,"column":18},"end":{"line":406,"column":78}},{"start":{"line":407,"column":18},"end":{"line":407,"column":78}}],"line":405},"46":{"loc":{"start":{"line":411,"column":17},"end":{"line":415,"column":39}},"type":"cond-expr","locations":[{"start":{"line":412,"column":20},"end":{"line":413,"column":39}},{"start":{"line":414,"column":20},"end":{"line":415,"column":39}}],"line":411},"47":{"loc":{"start":{"line":418,"column":17},"end":{"line":422,"column":39}},"type":"cond-expr","locations":[{"start":{"line":419,"column":20},"end":{"line":420,"column":39}},{"start":{"line":421,"column":20},"end":{"line":422,"column":39}}],"line":418},"48":{"loc":{"start":{"line":425,"column":17},"end":{"line":429,"column":39}},"type":"cond-expr","locations":[{"start":{"line":426,"column":20},"end":{"line":427,"column":39}},{"start":{"line":428,"column":20},"end":{"line":429,"column":39}}],"line":425},"49":{"loc":{"start":{"line":433,"column":15},"end":{"line":435,"column":78}},"type":"cond-expr","locations":[{"start":{"line":434,"column":18},"end":{"line":434,"column":78}},{"start":{"line":435,"column":18},"end":{"line":435,"column":78}}],"line":433},"50":{"loc":{"start":{"line":439,"column":17},"end":{"line":442,"column":28}},"type":"cond-expr","locations":[{"start":{"line":440,"column":20},"end":{"line":440,"column":80}},{"start":{"line":441,"column":20},"end":{"line":442,"column":28}}],"line":439},"51":{"loc":{"start":{"line":448,"column":22},"end":{"line":452,"column":50}},"type":"cond-expr","locations":[{"start":{"line":449,"column":26},"end":{"line":450,"column":50}},{"start":{"line":451,"column":26},"end":{"line":452,"column":50}}],"line":448},"52":{"loc":{"start":{"line":455,"column":22},"end":{"line":459,"column":45}},"type":"cond-expr","locations":[{"start":{"line":456,"column":26},"end":{"line":457,"column":45}},{"start":{"line":458,"column":26},"end":{"line":459,"column":45}}],"line":455},"53":{"loc":{"start":{"line":467,"column":23},"end":{"line":471,"column":53}},"type":"cond-expr","locations":[{"start":{"line":468,"column":26},"end":{"line":469,"column":53}},{"start":{"line":470,"column":26},"end":{"line":471,"column":53}}],"line":467},"54":{"loc":{"start":{"line":474,"column":23},"end":{"line":478,"column":53}},"type":"cond-expr","locations":[{"start":{"line":475,"column":26},"end":{"line":476,"column":53}},{"start":{"line":477,"column":26},"end":{"line":478,"column":53}}],"line":474},"55":{"loc":{"start":{"line":482,"column":25},"end":{"line":486,"column":66}},"type":"cond-expr","locations":[{"start":{"line":483,"column":28},"end":{"line":484,"column":66}},{"start":{"line":485,"column":28},"end":{"line":486,"column":66}}],"line":482},"56":{"loc":{"start":{"line":489,"column":25},"end":{"line":493,"column":66}},"type":"cond-expr","locations":[{"start":{"line":490,"column":28},"end":{"line":491,"column":66}},{"start":{"line":492,"column":28},"end":{"line":493,"column":66}}],"line":489},"57":{"loc":{"start":{"line":496,"column":25},"end":{"line":500,"column":66}},"type":"cond-expr","locations":[{"start":{"line":497,"column":28},"end":{"line":498,"column":66}},{"start":{"line":499,"column":28},"end":{"line":500,"column":66}}],"line":496},"58":{"loc":{"start":{"line":509,"column":22},"end":{"line":513,"column":48}},"type":"cond-expr","locations":[{"start":{"line":510,"column":26},"end":{"line":511,"column":48}},{"start":{"line":512,"column":26},"end":{"line":513,"column":48}}],"line":509},"59":{"loc":{"start":{"line":516,"column":22},"end":{"line":520,"column":46}},"type":"cond-expr","locations":[{"start":{"line":517,"column":26},"end":{"line":518,"column":46}},{"start":{"line":519,"column":26},"end":{"line":520,"column":46}}],"line":516},"60":{"loc":{"start":{"line":529,"column":22},"end":{"line":533,"column":50}},"type":"cond-expr","locations":[{"start":{"line":530,"column":26},"end":{"line":531,"column":50}},{"start":{"line":532,"column":26},"end":{"line":533,"column":50}}],"line":529},"61":{"loc":{"start":{"line":536,"column":22},"end":{"line":540,"column":45}},"type":"cond-expr","locations":[{"start":{"line":537,"column":26},"end":{"line":538,"column":45}},{"start":{"line":539,"column":26},"end":{"line":540,"column":45}}],"line":536},"62":{"loc":{"start":{"line":548,"column":23},"end":{"line":552,"column":53}},"type":"cond-expr","locations":[{"start":{"line":549,"column":26},"end":{"line":550,"column":53}},{"start":{"line":551,"column":26},"end":{"line":552,"column":53}}],"line":548},"63":{"loc":{"start":{"line":555,"column":23},"end":{"line":559,"column":53}},"type":"cond-expr","locations":[{"start":{"line":556,"column":26},"end":{"line":557,"column":53}},{"start":{"line":558,"column":26},"end":{"line":559,"column":53}}],"line":555},"64":{"loc":{"start":{"line":563,"column":25},"end":{"line":567,"column":66}},"type":"cond-expr","locations":[{"start":{"line":564,"column":28},"end":{"line":565,"column":66}},{"start":{"line":566,"column":28},"end":{"line":567,"column":66}}],"line":563},"65":{"loc":{"start":{"line":570,"column":25},"end":{"line":574,"column":66}},"type":"cond-expr","locations":[{"start":{"line":571,"column":28},"end":{"line":572,"column":66}},{"start":{"line":573,"column":28},"end":{"line":574,"column":66}}],"line":570},"66":{"loc":{"start":{"line":577,"column":25},"end":{"line":581,"column":66}},"type":"cond-expr","locations":[{"start":{"line":578,"column":28},"end":{"line":579,"column":66}},{"start":{"line":580,"column":28},"end":{"line":581,"column":66}}],"line":577},"67":{"loc":{"start":{"line":590,"column":22},"end":{"line":594,"column":48}},"type":"cond-expr","locations":[{"start":{"line":591,"column":26},"end":{"line":592,"column":48}},{"start":{"line":593,"column":26},"end":{"line":594,"column":48}}],"line":590},"68":{"loc":{"start":{"line":597,"column":22},"end":{"line":601,"column":46}},"type":"cond-expr","locations":[{"start":{"line":598,"column":26},"end":{"line":599,"column":46}},{"start":{"line":600,"column":26},"end":{"line":601,"column":46}}],"line":597},"69":{"loc":{"start":{"line":610,"column":22},"end":{"line":614,"column":50}},"type":"cond-expr","locations":[{"start":{"line":611,"column":26},"end":{"line":612,"column":50}},{"start":{"line":613,"column":26},"end":{"line":614,"column":50}}],"line":610},"70":{"loc":{"start":{"line":617,"column":22},"end":{"line":621,"column":45}},"type":"cond-expr","locations":[{"start":{"line":618,"column":26},"end":{"line":619,"column":45}},{"start":{"line":620,"column":26},"end":{"line":621,"column":45}}],"line":617},"71":{"loc":{"start":{"line":629,"column":23},"end":{"line":633,"column":53}},"type":"cond-expr","locations":[{"start":{"line":630,"column":26},"end":{"line":631,"column":53}},{"start":{"line":632,"column":26},"end":{"line":633,"column":53}}],"line":629},"72":{"loc":{"start":{"line":636,"column":23},"end":{"line":640,"column":53}},"type":"cond-expr","locations":[{"start":{"line":637,"column":26},"end":{"line":638,"column":53}},{"start":{"line":639,"column":26},"end":{"line":640,"column":53}}],"line":636},"73":{"loc":{"start":{"line":644,"column":25},"end":{"line":648,"column":66}},"type":"cond-expr","locations":[{"start":{"line":645,"column":28},"end":{"line":646,"column":66}},{"start":{"line":647,"column":28},"end":{"line":648,"column":66}}],"line":644},"74":{"loc":{"start":{"line":651,"column":25},"end":{"line":655,"column":66}},"type":"cond-expr","locations":[{"start":{"line":652,"column":28},"end":{"line":653,"column":66}},{"start":{"line":654,"column":28},"end":{"line":655,"column":66}}],"line":651},"75":{"loc":{"start":{"line":658,"column":25},"end":{"line":662,"column":66}},"type":"cond-expr","locations":[{"start":{"line":659,"column":28},"end":{"line":660,"column":66}},{"start":{"line":661,"column":28},"end":{"line":662,"column":66}}],"line":658},"76":{"loc":{"start":{"line":665,"column":25},"end":{"line":669,"column":66}},"type":"cond-expr","locations":[{"start":{"line":666,"column":28},"end":{"line":667,"column":66}},{"start":{"line":668,"column":28},"end":{"line":669,"column":66}}],"line":665},"77":{"loc":{"start":{"line":672,"column":25},"end":{"line":676,"column":66}},"type":"cond-expr","locations":[{"start":{"line":673,"column":28},"end":{"line":674,"column":66}},{"start":{"line":675,"column":28},"end":{"line":676,"column":66}}],"line":672},"78":{"loc":{"start":{"line":685,"column":22},"end":{"line":689,"column":48}},"type":"cond-expr","locations":[{"start":{"line":686,"column":26},"end":{"line":687,"column":48}},{"start":{"line":688,"column":26},"end":{"line":689,"column":48}}],"line":685},"79":{"loc":{"start":{"line":692,"column":22},"end":{"line":696,"column":46}},"type":"cond-expr","locations":[{"start":{"line":693,"column":26},"end":{"line":694,"column":46}},{"start":{"line":695,"column":26},"end":{"line":696,"column":46}}],"line":692},"80":{"loc":{"start":{"line":707,"column":17},"end":{"line":710,"column":28}},"type":"cond-expr","locations":[{"start":{"line":708,"column":20},"end":{"line":708,"column":80}},{"start":{"line":709,"column":20},"end":{"line":710,"column":28}}],"line":707},"81":{"loc":{"start":{"line":713,"column":17},"end":{"line":716,"column":28}},"type":"cond-expr","locations":[{"start":{"line":714,"column":20},"end":{"line":714,"column":80}},{"start":{"line":715,"column":20},"end":{"line":716,"column":28}}],"line":713},"82":{"loc":{"start":{"line":719,"column":17},"end":{"line":722,"column":28}},"type":"cond-expr","locations":[{"start":{"line":720,"column":20},"end":{"line":720,"column":80}},{"start":{"line":721,"column":20},"end":{"line":722,"column":28}}],"line":719},"83":{"loc":{"start":{"line":731,"column":17},"end":{"line":734,"column":28}},"type":"cond-expr","locations":[{"start":{"line":732,"column":20},"end":{"line":732,"column":80}},{"start":{"line":733,"column":20},"end":{"line":734,"column":28}}],"line":731},"84":{"loc":{"start":{"line":741,"column":13},"end":{"line":743,"column":40}},"type":"cond-expr","locations":[{"start":{"line":742,"column":16},"end":{"line":742,"column":33}},{"start":{"line":743,"column":16},"end":{"line":743,"column":40}}],"line":741},"85":{"loc":{"start":{"line":777,"column":7},"end":{"line":781,"column":7}},"type":"cond-expr","locations":[{"start":{"line":778,"column":8},"end":{"line":778,"column":71}},{"start":{"line":780,"column":8},"end":{"line":780,"column":10}}],"line":777}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},"b":{"0":[0,0,0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0],"67":[0,0],"68":[0,0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0],"75":[0,0],"76":[0,0],"77":[0,0],"78":[0,0],"79":[0,0],"80":[0,0],"81":[0,0],"82":[0,0],"83":[0,0],"84":[0,0],"85":[0,0]}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/dashboard/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/dashboard/index.js","statementMap":{"0":{"start":{"line":13,"column":21},"end":{"line":13,"column":50}},"1":{"start":{"line":14,"column":31},"end":{"line":22,"column":3}},"2":{"start":{"line":17,"column":8},"end":{"line":20,"column":31}},"3":{"start":{"line":23,"column":26},"end":{"line":32,"column":3}},"4":{"start":{"line":34,"column":2},"end":{"line":39,"column":9}},"5":{"start":{"line":35,"column":4},"end":{"line":38,"column":5}},"6":{"start":{"line":36,"column":6},"end":{"line":36,"column":58}},"7":{"start":{"line":37,"column":6},"end":{"line":37,"column":56}},"8":{"start":{"line":41,"column":2},"end":{"line":421,"column":4}},"9":{"start":{"line":424,"column":30},"end":{"line":444,"column":1}},"10":{"start":{"line":426,"column":29},"end":{"line":428,"column":3}},"11":{"start":{"line":430,"column":31},"end":{"line":432,"column":3}},"12":{"start":{"line":434,"column":2},"end":{"line":443,"column":4}}},"fnMap":{"0":{"name":"MscaDashboard","decl":{"start":{"line":12,"column":24},"end":{"line":12,"column":37}},"loc":{"start":{"line":12,"column":45},"end":{"line":422,"column":1}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":6},"end":{"line":16,"column":7}},"loc":{"start":{"line":17,"column":8},"end":{"line":20,"column":31}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":34,"column":12},"end":{"line":34,"column":13}},"loc":{"start":{"line":34,"column":18},"end":{"line":39,"column":3}},"line":34},"3":{"name":"(anonymous_3)","decl":{"start":{"line":424,"column":30},"end":{"line":424,"column":31}},"loc":{"start":{"line":424,"column":52},"end":{"line":444,"column":1}},"line":424}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":8},"end":{"line":20,"column":31}},"type":"binary-expr","locations":[{"start":{"line":17,"column":8},"end":{"line":17,"column":31}},{"start":{"line":18,"column":8},"end":{"line":18,"column":29}},{"start":{"line":19,"column":8},"end":{"line":19,"column":37}},{"start":{"line":20,"column":8},"end":{"line":20,"column":31}}],"line":17},"1":{"loc":{"start":{"line":35,"column":4},"end":{"line":38,"column":5}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":38,"column":5}},{"start":{},"end":{}}],"line":35},"2":{"loc":{"start":{"line":36,"column":30},"end":{"line":36,"column":57}},"type":"binary-expr","locations":[{"start":{"line":36,"column":30},"end":{"line":36,"column":51}},{"start":{"line":36,"column":55},"end":{"line":36,"column":57}}],"line":36},"3":{"loc":{"start":{"line":46,"column":10},"end":{"line":46,"column":79}},"type":"cond-expr","locations":[{"start":{"line":46,"column":34},"end":{"line":46,"column":55}},{"start":{"line":46,"column":58},"end":{"line":46,"column":79}}],"line":46},"4":{"loc":{"start":{"line":55,"column":11},"end":{"line":59,"column":11}},"type":"cond-expr","locations":[{"start":{"line":56,"column":12},"end":{"line":56,"column":52}},{"start":{"line":58,"column":12},"end":{"line":58,"column":14}}],"line":55},"5":{"loc":{"start":{"line":63,"column":13},"end":{"line":65,"column":72}},"type":"cond-expr","locations":[{"start":{"line":64,"column":16},"end":{"line":64,"column":61}},{"start":{"line":65,"column":16},"end":{"line":65,"column":72}}],"line":63},"6":{"loc":{"start":{"line":70,"column":14},"end":{"line":72,"column":67}},"type":"cond-expr","locations":[{"start":{"line":71,"column":18},"end":{"line":71,"column":67}},{"start":{"line":72,"column":18},"end":{"line":72,"column":67}}],"line":70},"7":{"loc":{"start":{"line":82,"column":16},"end":{"line":84,"column":41}},"type":"cond-expr","locations":[{"start":{"line":83,"column":20},"end":{"line":83,"column":41}},{"start":{"line":84,"column":20},"end":{"line":84,"column":41}}],"line":82},"8":{"loc":{"start":{"line":92,"column":14},"end":{"line":94,"column":39}},"type":"cond-expr","locations":[{"start":{"line":93,"column":18},"end":{"line":93,"column":39}},{"start":{"line":94,"column":18},"end":{"line":94,"column":39}}],"line":92},"9":{"loc":{"start":{"line":102,"column":14},"end":{"line":102,"column":77}},"type":"cond-expr","locations":[{"start":{"line":102,"column":38},"end":{"line":102,"column":56}},{"start":{"line":102,"column":59},"end":{"line":102,"column":77}}],"line":102},"10":{"loc":{"start":{"line":107,"column":21},"end":{"line":107,"column":58}},"type":"cond-expr","locations":[{"start":{"line":107,"column":45},"end":{"line":107,"column":50}},{"start":{"line":107,"column":53},"end":{"line":107,"column":58}}],"line":107},"11":{"loc":{"start":{"line":113,"column":14},"end":{"line":115,"column":57}},"type":"cond-expr","locations":[{"start":{"line":114,"column":18},"end":{"line":114,"column":60}},{"start":{"line":115,"column":18},"end":{"line":115,"column":57}}],"line":113},"12":{"loc":{"start":{"line":129,"column":14},"end":{"line":131,"column":67}},"type":"cond-expr","locations":[{"start":{"line":130,"column":18},"end":{"line":130,"column":67}},{"start":{"line":131,"column":18},"end":{"line":131,"column":67}}],"line":129},"13":{"loc":{"start":{"line":149,"column":16},"end":{"line":151,"column":41}},"type":"cond-expr","locations":[{"start":{"line":150,"column":20},"end":{"line":150,"column":41}},{"start":{"line":151,"column":20},"end":{"line":151,"column":41}}],"line":149},"14":{"loc":{"start":{"line":158,"column":14},"end":{"line":158,"column":77}},"type":"cond-expr","locations":[{"start":{"line":158,"column":38},"end":{"line":158,"column":56}},{"start":{"line":158,"column":59},"end":{"line":158,"column":77}}],"line":158},"15":{"loc":{"start":{"line":164,"column":14},"end":{"line":166,"column":78}},"type":"cond-expr","locations":[{"start":{"line":165,"column":18},"end":{"line":165,"column":78}},{"start":{"line":166,"column":18},"end":{"line":166,"column":78}}],"line":164},"16":{"loc":{"start":{"line":176,"column":14},"end":{"line":176,"column":77}},"type":"cond-expr","locations":[{"start":{"line":176,"column":38},"end":{"line":176,"column":56}},{"start":{"line":176,"column":59},"end":{"line":176,"column":77}}],"line":176},"17":{"loc":{"start":{"line":187,"column":16},"end":{"line":189,"column":41}},"type":"cond-expr","locations":[{"start":{"line":188,"column":20},"end":{"line":188,"column":41}},{"start":{"line":189,"column":20},"end":{"line":189,"column":41}}],"line":187},"18":{"loc":{"start":{"line":196,"column":14},"end":{"line":196,"column":77}},"type":"cond-expr","locations":[{"start":{"line":196,"column":38},"end":{"line":196,"column":56}},{"start":{"line":196,"column":59},"end":{"line":196,"column":77}}],"line":196},"19":{"loc":{"start":{"line":203,"column":14},"end":{"line":205,"column":78}},"type":"cond-expr","locations":[{"start":{"line":204,"column":18},"end":{"line":204,"column":78}},{"start":{"line":205,"column":18},"end":{"line":205,"column":78}}],"line":203},"20":{"loc":{"start":{"line":215,"column":14},"end":{"line":215,"column":77}},"type":"cond-expr","locations":[{"start":{"line":215,"column":38},"end":{"line":215,"column":56}},{"start":{"line":215,"column":59},"end":{"line":215,"column":77}}],"line":215},"21":{"loc":{"start":{"line":228,"column":20},"end":{"line":230,"column":42}},"type":"cond-expr","locations":[{"start":{"line":229,"column":24},"end":{"line":229,"column":42}},{"start":{"line":230,"column":24},"end":{"line":230,"column":42}}],"line":228},"22":{"loc":{"start":{"line":239,"column":24},"end":{"line":241,"column":73}},"type":"cond-expr","locations":[{"start":{"line":240,"column":28},"end":{"line":240,"column":73}},{"start":{"line":241,"column":28},"end":{"line":241,"column":73}}],"line":239},"23":{"loc":{"start":{"line":244,"column":24},"end":{"line":246,"column":75}},"type":"binary-expr","locations":[{"start":{"line":244,"column":25},"end":{"line":246,"column":68}},{"start":{"line":246,"column":73},"end":{"line":246,"column":75}}],"line":244},"24":{"loc":{"start":{"line":244,"column":25},"end":{"line":246,"column":68}},"type":"cond-expr","locations":[{"start":{"line":245,"column":28},"end":{"line":245,"column":68}},{"start":{"line":246,"column":28},"end":{"line":246,"column":68}}],"line":244},"25":{"loc":{"start":{"line":255,"column":17},"end":{"line":258,"column":28}},"type":"cond-expr","locations":[{"start":{"line":256,"column":20},"end":{"line":256,"column":80}},{"start":{"line":257,"column":20},"end":{"line":258,"column":28}}],"line":255},"26":{"loc":{"start":{"line":264,"column":20},"end":{"line":266,"column":54}},"type":"cond-expr","locations":[{"start":{"line":265,"column":24},"end":{"line":265,"column":54}},{"start":{"line":266,"column":24},"end":{"line":266,"column":54}}],"line":264},"27":{"loc":{"start":{"line":269,"column":20},"end":{"line":271,"column":54}},"type":"cond-expr","locations":[{"start":{"line":270,"column":24},"end":{"line":270,"column":54}},{"start":{"line":271,"column":24},"end":{"line":271,"column":54}}],"line":269},"28":{"loc":{"start":{"line":274,"column":20},"end":{"line":276,"column":54}},"type":"cond-expr","locations":[{"start":{"line":275,"column":24},"end":{"line":275,"column":54}},{"start":{"line":276,"column":24},"end":{"line":276,"column":54}}],"line":274},"29":{"loc":{"start":{"line":282,"column":20},"end":{"line":286,"column":32}},"type":"cond-expr","locations":[{"start":{"line":283,"column":24},"end":{"line":284,"column":32}},{"start":{"line":285,"column":24},"end":{"line":286,"column":32}}],"line":282},"30":{"loc":{"start":{"line":289,"column":20},"end":{"line":293,"column":32}},"type":"cond-expr","locations":[{"start":{"line":290,"column":24},"end":{"line":291,"column":32}},{"start":{"line":292,"column":24},"end":{"line":293,"column":32}}],"line":289},"31":{"loc":{"start":{"line":296,"column":20},"end":{"line":298,"column":57}},"type":"cond-expr","locations":[{"start":{"line":297,"column":24},"end":{"line":297,"column":57}},{"start":{"line":298,"column":24},"end":{"line":298,"column":57}}],"line":296},"32":{"loc":{"start":{"line":301,"column":20},"end":{"line":303,"column":70}},"type":"cond-expr","locations":[{"start":{"line":302,"column":24},"end":{"line":302,"column":70}},{"start":{"line":303,"column":24},"end":{"line":303,"column":70}}],"line":301},"33":{"loc":{"start":{"line":306,"column":20},"end":{"line":310,"column":32}},"type":"cond-expr","locations":[{"start":{"line":307,"column":24},"end":{"line":308,"column":32}},{"start":{"line":309,"column":24},"end":{"line":310,"column":32}}],"line":306},"34":{"loc":{"start":{"line":319,"column":17},"end":{"line":322,"column":28}},"type":"cond-expr","locations":[{"start":{"line":320,"column":20},"end":{"line":320,"column":80}},{"start":{"line":321,"column":20},"end":{"line":322,"column":28}}],"line":319},"35":{"loc":{"start":{"line":325,"column":17},"end":{"line":328,"column":28}},"type":"cond-expr","locations":[{"start":{"line":326,"column":20},"end":{"line":326,"column":80}},{"start":{"line":327,"column":20},"end":{"line":328,"column":28}}],"line":325},"36":{"loc":{"start":{"line":331,"column":17},"end":{"line":334,"column":28}},"type":"cond-expr","locations":[{"start":{"line":332,"column":20},"end":{"line":332,"column":80}},{"start":{"line":333,"column":20},"end":{"line":334,"column":28}}],"line":331},"37":{"loc":{"start":{"line":337,"column":17},"end":{"line":340,"column":28}},"type":"cond-expr","locations":[{"start":{"line":338,"column":20},"end":{"line":338,"column":80}},{"start":{"line":339,"column":20},"end":{"line":340,"column":28}}],"line":337},"38":{"loc":{"start":{"line":343,"column":17},"end":{"line":346,"column":28}},"type":"cond-expr","locations":[{"start":{"line":344,"column":20},"end":{"line":344,"column":80}},{"start":{"line":345,"column":20},"end":{"line":346,"column":28}}],"line":343},"39":{"loc":{"start":{"line":349,"column":17},"end":{"line":352,"column":28}},"type":"cond-expr","locations":[{"start":{"line":350,"column":20},"end":{"line":350,"column":80}},{"start":{"line":351,"column":20},"end":{"line":352,"column":28}}],"line":349},"40":{"loc":{"start":{"line":355,"column":17},"end":{"line":358,"column":28}},"type":"cond-expr","locations":[{"start":{"line":356,"column":20},"end":{"line":356,"column":80}},{"start":{"line":357,"column":20},"end":{"line":358,"column":28}}],"line":355},"41":{"loc":{"start":{"line":361,"column":17},"end":{"line":364,"column":28}},"type":"cond-expr","locations":[{"start":{"line":362,"column":20},"end":{"line":362,"column":80}},{"start":{"line":363,"column":20},"end":{"line":364,"column":28}}],"line":361},"42":{"loc":{"start":{"line":367,"column":17},"end":{"line":370,"column":28}},"type":"cond-expr","locations":[{"start":{"line":368,"column":20},"end":{"line":368,"column":80}},{"start":{"line":369,"column":20},"end":{"line":370,"column":28}}],"line":367},"43":{"loc":{"start":{"line":373,"column":17},"end":{"line":376,"column":28}},"type":"cond-expr","locations":[{"start":{"line":374,"column":20},"end":{"line":374,"column":80}},{"start":{"line":375,"column":20},"end":{"line":376,"column":28}}],"line":373},"44":{"loc":{"start":{"line":379,"column":17},"end":{"line":383,"column":28}},"type":"cond-expr","locations":[{"start":{"line":380,"column":20},"end":{"line":381,"column":28}},{"start":{"line":382,"column":20},"end":{"line":383,"column":28}}],"line":379},"45":{"loc":{"start":{"line":415,"column":7},"end":{"line":419,"column":7}},"type":"cond-expr","locations":[{"start":{"line":416,"column":8},"end":{"line":416,"column":71}},{"start":{"line":418,"column":8},"end":{"line":418,"column":10}}],"line":415}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0,0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0]}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/oas-benefits-estimator/[id].js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/oas-benefits-estimator/[id].js","statementMap":{"0":{"start":{"line":13,"column":16},"end":{"line":13,"column":40}},"1":{"start":{"line":14,"column":21},"end":{"line":14,"column":45}},"2":{"start":{"line":15,"column":23},"end":{"line":15,"column":55}},"3":{"start":{"line":17,"column":2},"end":{"line":22,"column":9}},"4":{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},"5":{"start":{"line":19,"column":6},"end":{"line":19,"column":58}},"6":{"start":{"line":20,"column":6},"end":{"line":20,"column":56}},"7":{"start":{"line":24,"column":2},"end":{"line":450,"column":4}},"8":{"start":{"line":455,"column":19},"end":{"line":457,"column":3}},"9":{"start":{"line":459,"column":16},"end":{"line":459,"column":60}},"10":{"start":{"line":461,"column":2},"end":{"line":465,"column":5}},"11":{"start":{"line":462,"column":4},"end":{"line":464,"column":52}},"12":{"start":{"line":466,"column":2},"end":{"line":469,"column":4}},"13":{"start":{"line":472,"column":30},"end":{"line":498,"column":1}},"14":{"start":{"line":474,"column":19},"end":{"line":476,"column":3}},"15":{"start":{"line":478,"column":31},"end":{"line":480,"column":3}},"16":{"start":{"line":481,"column":16},"end":{"line":481,"column":43}},"17":{"start":{"line":483,"column":19},"end":{"line":488,"column":4}},"18":{"start":{"line":484,"column":4},"end":{"line":487,"column":6}},"19":{"start":{"line":489,"column":2},"end":{"line":497,"column":4}}},"fnMap":{"0":{"name":"OASUpdatePage","decl":{"start":{"line":12,"column":24},"end":{"line":12,"column":37}},"loc":{"start":{"line":12,"column":45},"end":{"line":451,"column":1}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":12},"end":{"line":17,"column":13}},"loc":{"start":{"line":17,"column":18},"end":{"line":22,"column":3}},"line":17},"2":{"name":"getStaticPaths","decl":{"start":{"line":453,"column":22},"end":{"line":453,"column":36}},"loc":{"start":{"line":453,"column":39},"end":{"line":470,"column":1}},"line":453},"3":{"name":"(anonymous_3)","decl":{"start":{"line":461,"column":12},"end":{"line":461,"column":13}},"loc":{"start":{"line":461,"column":22},"end":{"line":465,"column":3}},"line":461},"4":{"name":"(anonymous_4)","decl":{"start":{"line":472,"column":30},"end":{"line":472,"column":31}},"loc":{"start":{"line":472,"column":60},"end":{"line":498,"column":1}},"line":472},"5":{"name":"(anonymous_5)","decl":{"start":{"line":483,"column":32},"end":{"line":483,"column":33}},"loc":{"start":{"line":483,"column":42},"end":{"line":488,"column":3}},"line":483}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":21,"column":5}},{"start":{},"end":{}}],"line":18},"1":{"loc":{"start":{"line":19,"column":30},"end":{"line":19,"column":57}},"type":"binary-expr","locations":[{"start":{"line":19,"column":30},"end":{"line":19,"column":51}},{"start":{"line":19,"column":55},"end":{"line":19,"column":57}}],"line":19},"2":{"loc":{"start":{"line":29,"column":10},"end":{"line":29,"column":79}},"type":"cond-expr","locations":[{"start":{"line":29,"column":34},"end":{"line":29,"column":55}},{"start":{"line":29,"column":58},"end":{"line":29,"column":79}}],"line":29},"3":{"loc":{"start":{"line":38,"column":11},"end":{"line":42,"column":11}},"type":"cond-expr","locations":[{"start":{"line":39,"column":12},"end":{"line":39,"column":52}},{"start":{"line":41,"column":12},"end":{"line":41,"column":14}}],"line":38},"4":{"loc":{"start":{"line":46,"column":13},"end":{"line":48,"column":72}},"type":"cond-expr","locations":[{"start":{"line":47,"column":16},"end":{"line":47,"column":61}},{"start":{"line":48,"column":16},"end":{"line":48,"column":72}}],"line":46},"5":{"loc":{"start":{"line":53,"column":14},"end":{"line":53,"column":77}},"type":"cond-expr","locations":[{"start":{"line":53,"column":38},"end":{"line":53,"column":56}},{"start":{"line":53,"column":59},"end":{"line":53,"column":77}}],"line":53},"6":{"loc":{"start":{"line":62,"column":14},"end":{"line":64,"column":39}},"type":"cond-expr","locations":[{"start":{"line":63,"column":18},"end":{"line":63,"column":39}},{"start":{"line":64,"column":18},"end":{"line":64,"column":39}}],"line":62},"7":{"loc":{"start":{"line":72,"column":14},"end":{"line":72,"column":77}},"type":"cond-expr","locations":[{"start":{"line":72,"column":38},"end":{"line":72,"column":56}},{"start":{"line":72,"column":59},"end":{"line":72,"column":77}}],"line":72},"8":{"loc":{"start":{"line":77,"column":21},"end":{"line":77,"column":58}},"type":"cond-expr","locations":[{"start":{"line":77,"column":45},"end":{"line":77,"column":50}},{"start":{"line":77,"column":53},"end":{"line":77,"column":58}}],"line":77},"9":{"loc":{"start":{"line":83,"column":14},"end":{"line":85,"column":57}},"type":"cond-expr","locations":[{"start":{"line":84,"column":18},"end":{"line":84,"column":60}},{"start":{"line":85,"column":18},"end":{"line":85,"column":57}}],"line":83},"10":{"loc":{"start":{"line":99,"column":14},"end":{"line":99,"column":77}},"type":"cond-expr","locations":[{"start":{"line":99,"column":38},"end":{"line":99,"column":56}},{"start":{"line":99,"column":59},"end":{"line":99,"column":77}}],"line":99},"11":{"loc":{"start":{"line":117,"column":16},"end":{"line":119,"column":41}},"type":"cond-expr","locations":[{"start":{"line":118,"column":20},"end":{"line":118,"column":41}},{"start":{"line":119,"column":20},"end":{"line":119,"column":41}}],"line":117},"12":{"loc":{"start":{"line":126,"column":14},"end":{"line":126,"column":77}},"type":"cond-expr","locations":[{"start":{"line":126,"column":38},"end":{"line":126,"column":56}},{"start":{"line":126,"column":59},"end":{"line":126,"column":77}}],"line":126},"13":{"loc":{"start":{"line":132,"column":14},"end":{"line":134,"column":78}},"type":"cond-expr","locations":[{"start":{"line":133,"column":18},"end":{"line":133,"column":78}},{"start":{"line":134,"column":18},"end":{"line":134,"column":78}}],"line":132},"14":{"loc":{"start":{"line":144,"column":14},"end":{"line":144,"column":77}},"type":"cond-expr","locations":[{"start":{"line":144,"column":38},"end":{"line":144,"column":56}},{"start":{"line":144,"column":59},"end":{"line":144,"column":77}}],"line":144},"15":{"loc":{"start":{"line":155,"column":16},"end":{"line":157,"column":41}},"type":"cond-expr","locations":[{"start":{"line":156,"column":20},"end":{"line":156,"column":41}},{"start":{"line":157,"column":20},"end":{"line":157,"column":41}}],"line":155},"16":{"loc":{"start":{"line":164,"column":14},"end":{"line":164,"column":77}},"type":"cond-expr","locations":[{"start":{"line":164,"column":38},"end":{"line":164,"column":56}},{"start":{"line":164,"column":59},"end":{"line":164,"column":77}}],"line":164},"17":{"loc":{"start":{"line":171,"column":14},"end":{"line":173,"column":78}},"type":"cond-expr","locations":[{"start":{"line":172,"column":18},"end":{"line":172,"column":78}},{"start":{"line":173,"column":18},"end":{"line":173,"column":78}}],"line":171},"18":{"loc":{"start":{"line":183,"column":14},"end":{"line":183,"column":77}},"type":"cond-expr","locations":[{"start":{"line":183,"column":38},"end":{"line":183,"column":56}},{"start":{"line":183,"column":59},"end":{"line":183,"column":77}}],"line":183},"19":{"loc":{"start":{"line":192,"column":14},"end":{"line":194,"column":78}},"type":"cond-expr","locations":[{"start":{"line":193,"column":18},"end":{"line":193,"column":78}},{"start":{"line":194,"column":18},"end":{"line":194,"column":78}}],"line":192},"20":{"loc":{"start":{"line":200,"column":16},"end":{"line":200,"column":73}},"type":"cond-expr","locations":[{"start":{"line":200,"column":40},"end":{"line":200,"column":55}},{"start":{"line":200,"column":58},"end":{"line":200,"column":73}}],"line":200},"21":{"loc":{"start":{"line":203,"column":15},"end":{"line":205,"column":40}},"type":"cond-expr","locations":[{"start":{"line":204,"column":18},"end":{"line":204,"column":40}},{"start":{"line":205,"column":18},"end":{"line":205,"column":40}}],"line":203},"22":{"loc":{"start":{"line":212,"column":16},"end":{"line":212,"column":73}},"type":"cond-expr","locations":[{"start":{"line":212,"column":40},"end":{"line":212,"column":55}},{"start":{"line":212,"column":58},"end":{"line":212,"column":73}}],"line":212},"23":{"loc":{"start":{"line":215,"column":15},"end":{"line":217,"column":40}},"type":"cond-expr","locations":[{"start":{"line":216,"column":18},"end":{"line":216,"column":40}},{"start":{"line":217,"column":18},"end":{"line":217,"column":40}}],"line":215},"24":{"loc":{"start":{"line":228,"column":15},"end":{"line":230,"column":78}},"type":"cond-expr","locations":[{"start":{"line":229,"column":18},"end":{"line":229,"column":78}},{"start":{"line":230,"column":18},"end":{"line":230,"column":78}}],"line":228},"25":{"loc":{"start":{"line":233,"column":15},"end":{"line":235,"column":78}},"type":"cond-expr","locations":[{"start":{"line":234,"column":18},"end":{"line":234,"column":78}},{"start":{"line":235,"column":18},"end":{"line":235,"column":78}}],"line":233},"26":{"loc":{"start":{"line":242,"column":22},"end":{"line":244,"column":71}},"type":"cond-expr","locations":[{"start":{"line":243,"column":26},"end":{"line":243,"column":71}},{"start":{"line":244,"column":26},"end":{"line":244,"column":71}}],"line":242},"27":{"loc":{"start":{"line":247,"column":22},"end":{"line":249,"column":66}},"type":"cond-expr","locations":[{"start":{"line":248,"column":26},"end":{"line":248,"column":66}},{"start":{"line":249,"column":26},"end":{"line":249,"column":66}}],"line":247},"28":{"loc":{"start":{"line":258,"column":15},"end":{"line":260,"column":78}},"type":"cond-expr","locations":[{"start":{"line":259,"column":18},"end":{"line":259,"column":78}},{"start":{"line":260,"column":18},"end":{"line":260,"column":78}}],"line":258},"29":{"loc":{"start":{"line":263,"column":15},"end":{"line":265,"column":78}},"type":"cond-expr","locations":[{"start":{"line":264,"column":18},"end":{"line":264,"column":78}},{"start":{"line":265,"column":18},"end":{"line":265,"column":78}}],"line":263},"30":{"loc":{"start":{"line":268,"column":15},"end":{"line":270,"column":78}},"type":"cond-expr","locations":[{"start":{"line":269,"column":18},"end":{"line":269,"column":78}},{"start":{"line":270,"column":18},"end":{"line":270,"column":78}}],"line":268},"31":{"loc":{"start":{"line":274,"column":17},"end":{"line":278,"column":39}},"type":"cond-expr","locations":[{"start":{"line":275,"column":20},"end":{"line":276,"column":39}},{"start":{"line":277,"column":20},"end":{"line":278,"column":39}}],"line":274},"32":{"loc":{"start":{"line":281,"column":17},"end":{"line":285,"column":39}},"type":"cond-expr","locations":[{"start":{"line":282,"column":20},"end":{"line":283,"column":39}},{"start":{"line":284,"column":20},"end":{"line":285,"column":39}}],"line":281},"33":{"loc":{"start":{"line":288,"column":17},"end":{"line":292,"column":39}},"type":"cond-expr","locations":[{"start":{"line":289,"column":20},"end":{"line":290,"column":39}},{"start":{"line":291,"column":20},"end":{"line":292,"column":39}}],"line":288},"34":{"loc":{"start":{"line":296,"column":15},"end":{"line":298,"column":78}},"type":"cond-expr","locations":[{"start":{"line":297,"column":18},"end":{"line":297,"column":78}},{"start":{"line":298,"column":18},"end":{"line":298,"column":78}}],"line":296},"35":{"loc":{"start":{"line":301,"column":15},"end":{"line":303,"column":78}},"type":"cond-expr","locations":[{"start":{"line":302,"column":18},"end":{"line":302,"column":78}},{"start":{"line":303,"column":18},"end":{"line":303,"column":78}}],"line":301},"36":{"loc":{"start":{"line":306,"column":15},"end":{"line":308,"column":78}},"type":"cond-expr","locations":[{"start":{"line":307,"column":18},"end":{"line":307,"column":78}},{"start":{"line":308,"column":18},"end":{"line":308,"column":78}}],"line":306},"37":{"loc":{"start":{"line":311,"column":15},"end":{"line":313,"column":79}},"type":"cond-expr","locations":[{"start":{"line":312,"column":18},"end":{"line":312,"column":79}},{"start":{"line":313,"column":18},"end":{"line":313,"column":79}}],"line":311},"38":{"loc":{"start":{"line":316,"column":15},"end":{"line":318,"column":79}},"type":"cond-expr","locations":[{"start":{"line":317,"column":18},"end":{"line":317,"column":79}},{"start":{"line":318,"column":18},"end":{"line":318,"column":79}}],"line":316},"39":{"loc":{"start":{"line":321,"column":15},"end":{"line":323,"column":79}},"type":"cond-expr","locations":[{"start":{"line":322,"column":18},"end":{"line":322,"column":79}},{"start":{"line":323,"column":18},"end":{"line":323,"column":79}}],"line":321},"40":{"loc":{"start":{"line":326,"column":15},"end":{"line":328,"column":79}},"type":"cond-expr","locations":[{"start":{"line":327,"column":18},"end":{"line":327,"column":79}},{"start":{"line":328,"column":18},"end":{"line":328,"column":79}}],"line":326},"41":{"loc":{"start":{"line":331,"column":15},"end":{"line":333,"column":79}},"type":"cond-expr","locations":[{"start":{"line":332,"column":18},"end":{"line":332,"column":79}},{"start":{"line":333,"column":18},"end":{"line":333,"column":79}}],"line":331},"42":{"loc":{"start":{"line":336,"column":15},"end":{"line":338,"column":79}},"type":"cond-expr","locations":[{"start":{"line":337,"column":18},"end":{"line":337,"column":79}},{"start":{"line":338,"column":18},"end":{"line":338,"column":79}}],"line":336},"43":{"loc":{"start":{"line":342,"column":17},"end":{"line":346,"column":39}},"type":"cond-expr","locations":[{"start":{"line":343,"column":20},"end":{"line":344,"column":39}},{"start":{"line":345,"column":20},"end":{"line":346,"column":39}}],"line":342},"44":{"loc":{"start":{"line":349,"column":17},"end":{"line":353,"column":39}},"type":"cond-expr","locations":[{"start":{"line":350,"column":20},"end":{"line":351,"column":39}},{"start":{"line":352,"column":20},"end":{"line":353,"column":39}}],"line":349},"45":{"loc":{"start":{"line":357,"column":15},"end":{"line":359,"column":79}},"type":"cond-expr","locations":[{"start":{"line":358,"column":18},"end":{"line":358,"column":79}},{"start":{"line":359,"column":18},"end":{"line":359,"column":79}}],"line":357},"46":{"loc":{"start":{"line":363,"column":17},"end":{"line":367,"column":39}},"type":"cond-expr","locations":[{"start":{"line":364,"column":20},"end":{"line":365,"column":39}},{"start":{"line":366,"column":20},"end":{"line":367,"column":39}}],"line":363},"47":{"loc":{"start":{"line":370,"column":17},"end":{"line":374,"column":39}},"type":"cond-expr","locations":[{"start":{"line":371,"column":20},"end":{"line":372,"column":39}},{"start":{"line":373,"column":20},"end":{"line":374,"column":39}}],"line":370},"48":{"loc":{"start":{"line":377,"column":17},"end":{"line":381,"column":39}},"type":"cond-expr","locations":[{"start":{"line":378,"column":20},"end":{"line":379,"column":39}},{"start":{"line":380,"column":20},"end":{"line":381,"column":39}}],"line":377},"49":{"loc":{"start":{"line":385,"column":15},"end":{"line":387,"column":79}},"type":"cond-expr","locations":[{"start":{"line":386,"column":18},"end":{"line":386,"column":79}},{"start":{"line":387,"column":18},"end":{"line":387,"column":79}}],"line":385},"50":{"loc":{"start":{"line":390,"column":15},"end":{"line":392,"column":79}},"type":"cond-expr","locations":[{"start":{"line":391,"column":18},"end":{"line":391,"column":79}},{"start":{"line":392,"column":18},"end":{"line":392,"column":79}}],"line":390},"51":{"loc":{"start":{"line":395,"column":15},"end":{"line":397,"column":79}},"type":"cond-expr","locations":[{"start":{"line":396,"column":18},"end":{"line":396,"column":79}},{"start":{"line":397,"column":18},"end":{"line":397,"column":79}}],"line":395},"52":{"loc":{"start":{"line":404,"column":16},"end":{"line":406,"column":62}},"type":"cond-expr","locations":[{"start":{"line":405,"column":20},"end":{"line":405,"column":62}},{"start":{"line":406,"column":20},"end":{"line":406,"column":62}}],"line":404},"53":{"loc":{"start":{"line":409,"column":16},"end":{"line":411,"column":53}},"type":"cond-expr","locations":[{"start":{"line":410,"column":20},"end":{"line":410,"column":53}},{"start":{"line":411,"column":20},"end":{"line":411,"column":53}}],"line":409},"54":{"loc":{"start":{"line":419,"column":12},"end":{"line":421,"column":49}},"type":"cond-expr","locations":[{"start":{"line":420,"column":16},"end":{"line":420,"column":49}},{"start":{"line":421,"column":16},"end":{"line":421,"column":49}}],"line":419},"55":{"loc":{"start":{"line":424,"column":12},"end":{"line":426,"column":76}},"type":"cond-expr","locations":[{"start":{"line":425,"column":16},"end":{"line":425,"column":76}},{"start":{"line":426,"column":16},"end":{"line":426,"column":76}}],"line":424},"56":{"loc":{"start":{"line":431,"column":14},"end":{"line":433,"column":67}},"type":"cond-expr","locations":[{"start":{"line":432,"column":18},"end":{"line":432,"column":67}},{"start":{"line":433,"column":18},"end":{"line":433,"column":67}}],"line":431},"57":{"loc":{"start":{"line":435,"column":14},"end":{"line":437,"column":76}},"type":"cond-expr","locations":[{"start":{"line":436,"column":18},"end":{"line":436,"column":76}},{"start":{"line":437,"column":18},"end":{"line":437,"column":76}}],"line":435},"58":{"loc":{"start":{"line":444,"column":7},"end":{"line":448,"column":7}},"type":"cond-expr","locations":[{"start":{"line":445,"column":8},"end":{"line":445,"column":71}},{"start":{"line":447,"column":8},"end":{"line":447,"column":10}}],"line":444},"59":{"loc":{"start":{"line":462,"column":4},"end":{"line":464,"column":51}},"type":"cond-expr","locations":[{"start":{"line":463,"column":9},"end":{"line":463,"column":50}},{"start":{"line":464,"column":9},"end":{"line":464,"column":50}}],"line":462},"60":{"loc":{"start":{"line":485,"column":6},"end":{"line":486,"column":47}},"type":"binary-expr","locations":[{"start":{"line":485,"column":6},"end":{"line":485,"column":47}},{"start":{"line":486,"column":6},"end":{"line":486,"column":47}}],"line":485}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0]}}
+,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/oas-benefits-estimator/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/oas-benefits-estimator/index.js","statementMap":{"0":{"start":{"line":14,"column":21},"end":{"line":14,"column":50}},"1":{"start":{"line":15,"column":24},"end":{"line":15,"column":51}},"2":{"start":{"line":16,"column":31},"end":{"line":24,"column":3}},"3":{"start":{"line":19,"column":8},"end":{"line":22,"column":31}},"4":{"start":{"line":25,"column":26},"end":{"line":34,"column":3}},"5":{"start":{"line":36,"column":32},"end":{"line":59,"column":4}},"6":{"start":{"line":37,"column":4},"end":{"line":58,"column":9}},"7":{"start":{"line":61,"column":2},"end":{"line":66,"column":9}},"8":{"start":{"line":62,"column":4},"end":{"line":65,"column":5}},"9":{"start":{"line":63,"column":6},"end":{"line":63,"column":58}},"10":{"start":{"line":64,"column":6},"end":{"line":64,"column":56}},"11":{"start":{"line":68,"column":2},"end":{"line":453,"column":4}},"12":{"start":{"line":456,"column":30},"end":{"line":477,"column":1}},"13":{"start":{"line":458,"column":29},"end":{"line":460,"column":3}},"14":{"start":{"line":462,"column":31},"end":{"line":464,"column":3}},"15":{"start":{"line":466,"column":2},"end":{"line":476,"column":4}}},"fnMap":{"0":{"name":"OasBenefitsEstimator","decl":{"start":{"line":13,"column":24},"end":{"line":13,"column":44}},"loc":{"start":{"line":13,"column":52},"end":{"line":454,"column":1}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":6},"end":{"line":18,"column":7}},"loc":{"start":{"line":19,"column":8},"end":{"line":22,"column":31}},"line":19},"2":{"name":"(anonymous_2)","decl":{"start":{"line":36,"column":48},"end":{"line":36,"column":49}},"loc":{"start":{"line":37,"column":4},"end":{"line":58,"column":9}},"line":37},"3":{"name":"(anonymous_3)","decl":{"start":{"line":61,"column":12},"end":{"line":61,"column":13}},"loc":{"start":{"line":61,"column":18},"end":{"line":66,"column":3}},"line":61},"4":{"name":"(anonymous_4)","decl":{"start":{"line":456,"column":30},"end":{"line":456,"column":31}},"loc":{"start":{"line":456,"column":52},"end":{"line":477,"column":1}},"line":456}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":8},"end":{"line":22,"column":31}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":31}},{"start":{"line":20,"column":8},"end":{"line":20,"column":29}},{"start":{"line":21,"column":8},"end":{"line":21,"column":37}},{"start":{"line":22,"column":8},"end":{"line":22,"column":31}}],"line":19},"1":{"loc":{"start":{"line":41,"column":10},"end":{"line":43,"column":73}},"type":"cond-expr","locations":[{"start":{"line":42,"column":14},"end":{"line":42,"column":73}},{"start":{"line":43,"column":14},"end":{"line":43,"column":73}}],"line":41},"2":{"loc":{"start":{"line":46,"column":10},"end":{"line":48,"column":55}},"type":"binary-expr","locations":[{"start":{"line":46,"column":11},"end":{"line":48,"column":48}},{"start":{"line":48,"column":53},"end":{"line":48,"column":55}}],"line":46},"3":{"loc":{"start":{"line":46,"column":11},"end":{"line":48,"column":48}},"type":"cond-expr","locations":[{"start":{"line":47,"column":14},"end":{"line":47,"column":48}},{"start":{"line":48,"column":14},"end":{"line":48,"column":48}}],"line":46},"4":{"loc":{"start":{"line":50,"column":15},"end":{"line":50,"column":74}},"type":"cond-expr","locations":[{"start":{"line":50,"column":39},"end":{"line":50,"column":55}},{"start":{"line":50,"column":58},"end":{"line":50,"column":74}}],"line":50},"5":{"loc":{"start":{"line":51,"column":14},"end":{"line":51,"column":79}},"type":"cond-expr","locations":[{"start":{"line":51,"column":38},"end":{"line":51,"column":57}},{"start":{"line":51,"column":60},"end":{"line":51,"column":79}}],"line":51},"6":{"loc":{"start":{"line":53,"column":10},"end":{"line":55,"column":48}},"type":"cond-expr","locations":[{"start":{"line":54,"column":14},"end":{"line":54,"column":48}},{"start":{"line":55,"column":14},"end":{"line":55,"column":48}}],"line":53},"7":{"loc":{"start":{"line":62,"column":4},"end":{"line":65,"column":5}},"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":65,"column":5}},{"start":{},"end":{}}],"line":62},"8":{"loc":{"start":{"line":63,"column":30},"end":{"line":63,"column":57}},"type":"binary-expr","locations":[{"start":{"line":63,"column":30},"end":{"line":63,"column":51}},{"start":{"line":63,"column":55},"end":{"line":63,"column":57}}],"line":63},"9":{"loc":{"start":{"line":73,"column":10},"end":{"line":73,"column":79}},"type":"cond-expr","locations":[{"start":{"line":73,"column":34},"end":{"line":73,"column":55}},{"start":{"line":73,"column":58},"end":{"line":73,"column":79}}],"line":73},"10":{"loc":{"start":{"line":82,"column":11},"end":{"line":86,"column":11}},"type":"cond-expr","locations":[{"start":{"line":83,"column":12},"end":{"line":83,"column":52}},{"start":{"line":85,"column":12},"end":{"line":85,"column":14}}],"line":82},"11":{"loc":{"start":{"line":90,"column":13},"end":{"line":92,"column":72}},"type":"cond-expr","locations":[{"start":{"line":91,"column":16},"end":{"line":91,"column":61}},{"start":{"line":92,"column":16},"end":{"line":92,"column":72}}],"line":90},"12":{"loc":{"start":{"line":97,"column":14},"end":{"line":99,"column":67}},"type":"cond-expr","locations":[{"start":{"line":98,"column":18},"end":{"line":98,"column":67}},{"start":{"line":99,"column":18},"end":{"line":99,"column":67}}],"line":97},"13":{"loc":{"start":{"line":109,"column":16},"end":{"line":111,"column":41}},"type":"cond-expr","locations":[{"start":{"line":110,"column":20},"end":{"line":110,"column":41}},{"start":{"line":111,"column":20},"end":{"line":111,"column":41}}],"line":109},"14":{"loc":{"start":{"line":119,"column":14},"end":{"line":121,"column":39}},"type":"cond-expr","locations":[{"start":{"line":120,"column":18},"end":{"line":120,"column":39}},{"start":{"line":121,"column":18},"end":{"line":121,"column":39}}],"line":119},"15":{"loc":{"start":{"line":129,"column":14},"end":{"line":129,"column":77}},"type":"cond-expr","locations":[{"start":{"line":129,"column":38},"end":{"line":129,"column":56}},{"start":{"line":129,"column":59},"end":{"line":129,"column":77}}],"line":129},"16":{"loc":{"start":{"line":134,"column":21},"end":{"line":134,"column":58}},"type":"cond-expr","locations":[{"start":{"line":134,"column":45},"end":{"line":134,"column":50}},{"start":{"line":134,"column":53},"end":{"line":134,"column":58}}],"line":134},"17":{"loc":{"start":{"line":140,"column":14},"end":{"line":142,"column":57}},"type":"cond-expr","locations":[{"start":{"line":141,"column":18},"end":{"line":141,"column":60}},{"start":{"line":142,"column":18},"end":{"line":142,"column":57}}],"line":140},"18":{"loc":{"start":{"line":156,"column":14},"end":{"line":158,"column":67}},"type":"cond-expr","locations":[{"start":{"line":157,"column":18},"end":{"line":157,"column":67}},{"start":{"line":158,"column":18},"end":{"line":158,"column":67}}],"line":156},"19":{"loc":{"start":{"line":176,"column":16},"end":{"line":178,"column":41}},"type":"cond-expr","locations":[{"start":{"line":177,"column":20},"end":{"line":177,"column":41}},{"start":{"line":178,"column":20},"end":{"line":178,"column":41}}],"line":176},"20":{"loc":{"start":{"line":185,"column":14},"end":{"line":185,"column":77}},"type":"cond-expr","locations":[{"start":{"line":185,"column":38},"end":{"line":185,"column":56}},{"start":{"line":185,"column":59},"end":{"line":185,"column":77}}],"line":185},"21":{"loc":{"start":{"line":191,"column":14},"end":{"line":193,"column":78}},"type":"cond-expr","locations":[{"start":{"line":192,"column":18},"end":{"line":192,"column":78}},{"start":{"line":193,"column":18},"end":{"line":193,"column":78}}],"line":191},"22":{"loc":{"start":{"line":203,"column":14},"end":{"line":203,"column":77}},"type":"cond-expr","locations":[{"start":{"line":203,"column":38},"end":{"line":203,"column":56}},{"start":{"line":203,"column":59},"end":{"line":203,"column":77}}],"line":203},"23":{"loc":{"start":{"line":214,"column":16},"end":{"line":216,"column":41}},"type":"cond-expr","locations":[{"start":{"line":215,"column":20},"end":{"line":215,"column":41}},{"start":{"line":216,"column":20},"end":{"line":216,"column":41}}],"line":214},"24":{"loc":{"start":{"line":223,"column":14},"end":{"line":223,"column":77}},"type":"cond-expr","locations":[{"start":{"line":223,"column":38},"end":{"line":223,"column":56}},{"start":{"line":223,"column":59},"end":{"line":223,"column":77}}],"line":223},"25":{"loc":{"start":{"line":230,"column":14},"end":{"line":232,"column":78}},"type":"cond-expr","locations":[{"start":{"line":231,"column":18},"end":{"line":231,"column":78}},{"start":{"line":232,"column":18},"end":{"line":232,"column":78}}],"line":230},"26":{"loc":{"start":{"line":242,"column":14},"end":{"line":242,"column":77}},"type":"cond-expr","locations":[{"start":{"line":242,"column":38},"end":{"line":242,"column":56}},{"start":{"line":242,"column":59},"end":{"line":242,"column":77}}],"line":242},"27":{"loc":{"start":{"line":255,"column":20},"end":{"line":259,"column":32}},"type":"cond-expr","locations":[{"start":{"line":256,"column":24},"end":{"line":257,"column":32}},{"start":{"line":258,"column":24},"end":{"line":259,"column":32}}],"line":255},"28":{"loc":{"start":{"line":268,"column":24},"end":{"line":270,"column":73}},"type":"cond-expr","locations":[{"start":{"line":269,"column":28},"end":{"line":269,"column":73}},{"start":{"line":270,"column":28},"end":{"line":270,"column":73}}],"line":268},"29":{"loc":{"start":{"line":273,"column":24},"end":{"line":275,"column":75}},"type":"binary-expr","locations":[{"start":{"line":273,"column":25},"end":{"line":275,"column":68}},{"start":{"line":275,"column":73},"end":{"line":275,"column":75}}],"line":273},"30":{"loc":{"start":{"line":273,"column":25},"end":{"line":275,"column":68}},"type":"cond-expr","locations":[{"start":{"line":274,"column":28},"end":{"line":274,"column":68}},{"start":{"line":275,"column":28},"end":{"line":275,"column":68}}],"line":273},"31":{"loc":{"start":{"line":284,"column":17},"end":{"line":287,"column":28}},"type":"cond-expr","locations":[{"start":{"line":285,"column":20},"end":{"line":285,"column":80}},{"start":{"line":286,"column":20},"end":{"line":287,"column":28}}],"line":284},"32":{"loc":{"start":{"line":293,"column":20},"end":{"line":295,"column":54}},"type":"cond-expr","locations":[{"start":{"line":294,"column":24},"end":{"line":294,"column":54}},{"start":{"line":295,"column":24},"end":{"line":295,"column":54}}],"line":293},"33":{"loc":{"start":{"line":298,"column":20},"end":{"line":300,"column":54}},"type":"cond-expr","locations":[{"start":{"line":299,"column":24},"end":{"line":299,"column":54}},{"start":{"line":300,"column":24},"end":{"line":300,"column":54}}],"line":298},"34":{"loc":{"start":{"line":303,"column":20},"end":{"line":305,"column":54}},"type":"cond-expr","locations":[{"start":{"line":304,"column":24},"end":{"line":304,"column":54}},{"start":{"line":305,"column":24},"end":{"line":305,"column":54}}],"line":303},"35":{"loc":{"start":{"line":311,"column":20},"end":{"line":315,"column":32}},"type":"cond-expr","locations":[{"start":{"line":312,"column":24},"end":{"line":313,"column":32}},{"start":{"line":314,"column":24},"end":{"line":315,"column":32}}],"line":311},"36":{"loc":{"start":{"line":318,"column":20},"end":{"line":322,"column":32}},"type":"cond-expr","locations":[{"start":{"line":319,"column":24},"end":{"line":320,"column":32}},{"start":{"line":321,"column":24},"end":{"line":322,"column":32}}],"line":318},"37":{"loc":{"start":{"line":325,"column":20},"end":{"line":327,"column":57}},"type":"cond-expr","locations":[{"start":{"line":326,"column":24},"end":{"line":326,"column":57}},{"start":{"line":327,"column":24},"end":{"line":327,"column":57}}],"line":325},"38":{"loc":{"start":{"line":330,"column":20},"end":{"line":332,"column":70}},"type":"cond-expr","locations":[{"start":{"line":331,"column":24},"end":{"line":331,"column":70}},{"start":{"line":332,"column":24},"end":{"line":332,"column":70}}],"line":330},"39":{"loc":{"start":{"line":335,"column":20},"end":{"line":339,"column":32}},"type":"cond-expr","locations":[{"start":{"line":336,"column":24},"end":{"line":337,"column":32}},{"start":{"line":338,"column":24},"end":{"line":339,"column":32}}],"line":335},"40":{"loc":{"start":{"line":347,"column":15},"end":{"line":349,"column":78}},"type":"cond-expr","locations":[{"start":{"line":348,"column":18},"end":{"line":348,"column":78}},{"start":{"line":349,"column":18},"end":{"line":349,"column":78}}],"line":347},"41":{"loc":{"start":{"line":356,"column":16},"end":{"line":358,"column":62}},"type":"cond-expr","locations":[{"start":{"line":357,"column":20},"end":{"line":357,"column":62}},{"start":{"line":358,"column":20},"end":{"line":358,"column":62}}],"line":356},"42":{"loc":{"start":{"line":361,"column":16},"end":{"line":363,"column":53}},"type":"cond-expr","locations":[{"start":{"line":362,"column":20},"end":{"line":362,"column":53}},{"start":{"line":363,"column":20},"end":{"line":363,"column":53}}],"line":361},"43":{"loc":{"start":{"line":368,"column":15},"end":{"line":370,"column":78}},"type":"cond-expr","locations":[{"start":{"line":369,"column":18},"end":{"line":369,"column":78}},{"start":{"line":370,"column":18},"end":{"line":370,"column":78}}],"line":368},"44":{"loc":{"start":{"line":373,"column":15},"end":{"line":375,"column":78}},"type":"cond-expr","locations":[{"start":{"line":374,"column":18},"end":{"line":374,"column":78}},{"start":{"line":375,"column":18},"end":{"line":375,"column":78}}],"line":373},"45":{"loc":{"start":{"line":378,"column":15},"end":{"line":380,"column":78}},"type":"cond-expr","locations":[{"start":{"line":379,"column":18},"end":{"line":379,"column":78}},{"start":{"line":380,"column":18},"end":{"line":380,"column":78}}],"line":378},"46":{"loc":{"start":{"line":383,"column":15},"end":{"line":385,"column":78}},"type":"cond-expr","locations":[{"start":{"line":384,"column":18},"end":{"line":384,"column":78}},{"start":{"line":385,"column":18},"end":{"line":385,"column":78}}],"line":383},"47":{"loc":{"start":{"line":389,"column":13},"end":{"line":391,"column":77}},"type":"cond-expr","locations":[{"start":{"line":390,"column":16},"end":{"line":390,"column":77}},{"start":{"line":391,"column":16},"end":{"line":391,"column":77}}],"line":389},"48":{"loc":{"start":{"line":398,"column":16},"end":{"line":400,"column":62}},"type":"cond-expr","locations":[{"start":{"line":399,"column":20},"end":{"line":399,"column":62}},{"start":{"line":400,"column":20},"end":{"line":400,"column":62}}],"line":398},"49":{"loc":{"start":{"line":403,"column":16},"end":{"line":405,"column":53}},"type":"cond-expr","locations":[{"start":{"line":404,"column":20},"end":{"line":404,"column":53}},{"start":{"line":405,"column":20},"end":{"line":405,"column":53}}],"line":403},"50":{"loc":{"start":{"line":411,"column":13},"end":{"line":413,"column":51}},"type":"cond-expr","locations":[{"start":{"line":412,"column":16},"end":{"line":412,"column":51}},{"start":{"line":413,"column":16},"end":{"line":413,"column":51}}],"line":411},"51":{"loc":{"start":{"line":422,"column":12},"end":{"line":424,"column":49}},"type":"cond-expr","locations":[{"start":{"line":423,"column":16},"end":{"line":423,"column":49}},{"start":{"line":424,"column":16},"end":{"line":424,"column":49}}],"line":422},"52":{"loc":{"start":{"line":427,"column":12},"end":{"line":429,"column":76}},"type":"cond-expr","locations":[{"start":{"line":428,"column":16},"end":{"line":428,"column":76}},{"start":{"line":429,"column":16},"end":{"line":429,"column":76}}],"line":427},"53":{"loc":{"start":{"line":434,"column":14},"end":{"line":436,"column":67}},"type":"cond-expr","locations":[{"start":{"line":435,"column":18},"end":{"line":435,"column":67}},{"start":{"line":436,"column":18},"end":{"line":436,"column":67}}],"line":434},"54":{"loc":{"start":{"line":438,"column":14},"end":{"line":440,"column":76}},"type":"cond-expr","locations":[{"start":{"line":439,"column":18},"end":{"line":439,"column":76}},{"start":{"line":440,"column":18},"end":{"line":440,"column":76}}],"line":438},"55":{"loc":{"start":{"line":447,"column":7},"end":{"line":451,"column":7}},"type":"cond-expr","locations":[{"start":{"line":448,"column":8},"end":{"line":448,"column":71}},{"start":{"line":450,"column":8},"end":{"line":450,"column":10}}],"line":447}},"s":{"0":1,"1":1,"2":1,"3":12,"4":1,"5":1,"6":1,"7":1,"8":1,"9":0,"10":0,"11":1,"12":1,"13":0,"14":0,"15":0},"f":{"0":1,"1":12,"2":1,"3":1,"4":0},"b":{"0":[12,11,10,9],"1":[0,1],"2":[1,1],"3":[0,1],"4":[0,1],"5":[0,1],"6":[0,1],"7":[0,1],"8":[0,0],"9":[0,1],"10":[0,1],"11":[0,1],"12":[0,1],"13":[0,1],"14":[0,1],"15":[0,1],"16":[0,1],"17":[0,1],"18":[0,1],"19":[0,1],"20":[0,1],"21":[0,1],"22":[0,1],"23":[0,1],"24":[0,1],"25":[0,1],"26":[0,1],"27":[0,1],"28":[0,1],"29":[1,1],"30":[0,1],"31":[0,1],"32":[0,1],"33":[0,1],"34":[0,1],"35":[0,1],"36":[0,1],"37":[0,1],"38":[0,1],"39":[0,1],"40":[0,1],"41":[0,1],"42":[0,1],"43":[0,1],"44":[0,1],"45":[0,1],"46":[0,1],"47":[0,1],"48":[0,1],"49":[0,1],"50":[0,1],"51":[0,1],"52":[0,1],"53":[0,1],"54":[0,1],"55":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a465ad977ed55d793cd1bc64fec740b69ecf555c"}
+}
diff --git a/main/coverage/lcov-report/base.css b/main/coverage/lcov-report/base.css
new file mode 100644
index 0000000000..f418035b46
--- /dev/null
+++ b/main/coverage/lcov-report/base.css
@@ -0,0 +1,224 @@
+body, html {
+ margin:0; padding: 0;
+ height: 100%;
+}
+body {
+ font-family: Helvetica Neue, Helvetica, Arial;
+ font-size: 14px;
+ color:#333;
+}
+.small { font-size: 12px; }
+*, *:after, *:before {
+ -webkit-box-sizing:border-box;
+ -moz-box-sizing:border-box;
+ box-sizing:border-box;
+ }
+h1 { font-size: 20px; margin: 0;}
+h2 { font-size: 14px; }
+pre {
+ font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
+ margin: 0;
+ padding: 0;
+ -moz-tab-size: 2;
+ -o-tab-size: 2;
+ tab-size: 2;
+}
+a { color:#0074D9; text-decoration:none; }
+a:hover { text-decoration:underline; }
+.strong { font-weight: bold; }
+.space-top1 { padding: 10px 0 0 0; }
+.pad2y { padding: 20px 0; }
+.pad1y { padding: 10px 0; }
+.pad2x { padding: 0 20px; }
+.pad2 { padding: 20px; }
+.pad1 { padding: 10px; }
+.space-left2 { padding-left:55px; }
+.space-right2 { padding-right:20px; }
+.center { text-align:center; }
+.clearfix { display:block; }
+.clearfix:after {
+ content:'';
+ display:block;
+ height:0;
+ clear:both;
+ visibility:hidden;
+ }
+.fl { float: left; }
+@media only screen and (max-width:640px) {
+ .col3 { width:100%; max-width:100%; }
+ .hide-mobile { display:none!important; }
+}
+
+.quiet {
+ color: #7f7f7f;
+ color: rgba(0,0,0,0.5);
+}
+.quiet a { opacity: 0.7; }
+
+.fraction {
+ font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
+ font-size: 10px;
+ color: #555;
+ background: #E8E8E8;
+ padding: 4px 5px;
+ border-radius: 3px;
+ vertical-align: middle;
+}
+
+div.path a:link, div.path a:visited { color: #333; }
+table.coverage {
+ border-collapse: collapse;
+ margin: 10px 0 0 0;
+ padding: 0;
+}
+
+table.coverage td {
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+}
+table.coverage td.line-count {
+ text-align: right;
+ padding: 0 5px 0 20px;
+}
+table.coverage td.line-coverage {
+ text-align: right;
+ padding-right: 10px;
+ min-width:20px;
+}
+
+table.coverage td span.cline-any {
+ display: inline-block;
+ padding: 0 5px;
+ width: 100%;
+}
+.missing-if-branch {
+ display: inline-block;
+ margin-right: 5px;
+ border-radius: 3px;
+ position: relative;
+ padding: 0 4px;
+ background: #333;
+ color: yellow;
+}
+
+.skip-if-branch {
+ display: none;
+ margin-right: 10px;
+ position: relative;
+ padding: 0 4px;
+ background: #ccc;
+ color: white;
+}
+.missing-if-branch .typ, .skip-if-branch .typ {
+ color: inherit !important;
+}
+.coverage-summary {
+ border-collapse: collapse;
+ width: 100%;
+}
+.coverage-summary tr { border-bottom: 1px solid #bbb; }
+.keyline-all { border: 1px solid #ddd; }
+.coverage-summary td, .coverage-summary th { padding: 10px; }
+.coverage-summary tbody { border: 1px solid #bbb; }
+.coverage-summary td { border-right: 1px solid #bbb; }
+.coverage-summary td:last-child { border-right: none; }
+.coverage-summary th {
+ text-align: left;
+ font-weight: normal;
+ white-space: nowrap;
+}
+.coverage-summary th.file { border-right: none !important; }
+.coverage-summary th.pct { }
+.coverage-summary th.pic,
+.coverage-summary th.abs,
+.coverage-summary td.pct,
+.coverage-summary td.abs { text-align: right; }
+.coverage-summary td.file { white-space: nowrap; }
+.coverage-summary td.pic { min-width: 120px !important; }
+.coverage-summary tfoot td { }
+
+.coverage-summary .sorter {
+ height: 10px;
+ width: 7px;
+ display: inline-block;
+ margin-left: 0.5em;
+ background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
+}
+.coverage-summary .sorted .sorter {
+ background-position: 0 -20px;
+}
+.coverage-summary .sorted-desc .sorter {
+ background-position: 0 -10px;
+}
+.status-line { height: 10px; }
+/* yellow */
+.cbranch-no { background: yellow !important; color: #111; }
+/* dark red */
+.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
+.low .chart { border:1px solid #C21F39 }
+.highlighted,
+.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
+ background: #C21F39 !important;
+}
+/* medium red */
+.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
+/* light red */
+.low, .cline-no { background:#FCE1E5 }
+/* light green */
+.high, .cline-yes { background:rgb(230,245,208) }
+/* medium green */
+.cstat-yes { background:rgb(161,215,106) }
+/* dark green */
+.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
+.high .chart { border:1px solid rgb(77,146,33) }
+/* dark yellow (gold) */
+.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
+.medium .chart { border:1px solid #f9cd0b; }
+/* light yellow */
+.medium { background: #fff4c2; }
+
+.cstat-skip { background: #ddd; color: #111; }
+.fstat-skip { background: #ddd; color: #111 !important; }
+.cbranch-skip { background: #ddd !important; color: #111; }
+
+span.cline-neutral { background: #eaeaea; }
+
+.coverage-summary td.empty {
+ opacity: .5;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ line-height: 1;
+ color: #888;
+}
+
+.cover-fill, .cover-empty {
+ display:inline-block;
+ height: 12px;
+}
+.chart {
+ line-height: 0;
+}
+.cover-empty {
+ background: white;
+}
+.cover-full {
+ border-right: none !important;
+}
+pre.prettyprint {
+ border: none !important;
+ padding: 0 !important;
+ margin: 0 !important;
+}
+.com { color: #999 !important; }
+.ignore-none { color: #999; font-weight: normal; }
+
+.wrapper {
+ min-height: 100%;
+ height: auto !important;
+ height: 100%;
+ margin: 0 auto -48px;
+}
+.footer, .push {
+ height: 48px;
+}
diff --git a/main/coverage/lcov-report/block-navigation.js b/main/coverage/lcov-report/block-navigation.js
new file mode 100644
index 0000000000..cc12130231
--- /dev/null
+++ b/main/coverage/lcov-report/block-navigation.js
@@ -0,0 +1,87 @@
+/* eslint-disable */
+var jumpToCode = (function init() {
+ // Classes of code we would like to highlight in the file view
+ var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
+
+ // Elements to highlight in the file listing view
+ var fileListingElements = ['td.pct.low'];
+
+ // We don't want to select elements that are direct descendants of another match
+ var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
+
+ // Selecter that finds elements on the page to which we can jump
+ var selector =
+ fileListingElements.join(', ') +
+ ', ' +
+ notSelector +
+ missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
+
+ // The NodeList of matching elements
+ var missingCoverageElements = document.querySelectorAll(selector);
+
+ var currentIndex;
+
+ function toggleClass(index) {
+ missingCoverageElements
+ .item(currentIndex)
+ .classList.remove('highlighted');
+ missingCoverageElements.item(index).classList.add('highlighted');
+ }
+
+ function makeCurrent(index) {
+ toggleClass(index);
+ currentIndex = index;
+ missingCoverageElements.item(index).scrollIntoView({
+ behavior: 'smooth',
+ block: 'center',
+ inline: 'center'
+ });
+ }
+
+ function goToPrevious() {
+ var nextIndex = 0;
+ if (typeof currentIndex !== 'number' || currentIndex === 0) {
+ nextIndex = missingCoverageElements.length - 1;
+ } else if (missingCoverageElements.length > 1) {
+ nextIndex = currentIndex - 1;
+ }
+
+ makeCurrent(nextIndex);
+ }
+
+ function goToNext() {
+ var nextIndex = 0;
+
+ if (
+ typeof currentIndex === 'number' &&
+ currentIndex < missingCoverageElements.length - 1
+ ) {
+ nextIndex = currentIndex + 1;
+ }
+
+ makeCurrent(nextIndex);
+ }
+
+ return function jump(event) {
+ if (
+ document.getElementById('fileSearch') === document.activeElement &&
+ document.activeElement != null
+ ) {
+ // if we're currently focused on the search input, we don't want to navigate
+ return;
+ }
+
+ switch (event.which) {
+ case 78: // n
+ case 74: // j
+ goToNext();
+ break;
+ case 66: // b
+ case 75: // k
+ case 80: // p
+ goToPrevious();
+ break;
+ }
+ };
+})();
+window.addEventListener('keydown', jumpToCode);
diff --git a/main/coverage/lcov-report/components/atoms/ActionButton.js.html b/main/coverage/lcov-report/components/atoms/ActionButton.js.html
new file mode 100644
index 0000000000..54c85fe27e
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/ActionButton.js.html
@@ -0,0 +1,781 @@
+
+
+
+
+
+ Code coverage report for components/atoms/ActionButton.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 15/15
+
+
+
+
+ 84%
+ Branches
+ 42/50
+
+
+
+
+ 100%
+ Functions
+ 3/3
+
+
+
+
+ 100%
+ Lines
+ 15/15
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+
+
+
+
+
+
+
+
+
+75x
+
+75x
+
+75x
+
+75x
+
+75x
+
+
+75x
+
+
+
+
+
+
+
+
+
+
+
+
+75x
+75x
+75x
+67x
+1x
+1x
+1x
+
+
+
+
+
+75x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+17x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import Link from "next/link";
+import { useEffect } from "react";
+
+/**
+ * Button component
+ */
+export function ActionButton(props) {
+ //Styling for buttons and links
+ const PRIMARY =
+ "text-multi-neutrals-white bg-multi-blue-blue70 hover:bg-multi-blue-blue60g focus:bg-multi-blue-blue60g";
+ const SECONDARY =
+ "text-multi-blue-blue60b bg-multi-neutrals-grey30a hover:bg-multi-neutrals-grey50a focus:bg-multi-neutrals-grey60";
+ const SUPERTASK =
+ "text-multi-neutrals-white bg-specific-green-green50 hover:bg-specific-green-green70 focus:bg-sepcific-green-green70";
+ const DANGER =
+ "text-multi-neutrals-white bg-specific-red-red50 hover:bg-specific-red-red70 focus:bg-specific-red-red70";
+ const LINK =
+ "text-multi-blue-blue60c hover:text-multi-blue-blue50b focus:text-multi-blue-blue60f";
+
+ const style =
+ props.style === "primary"
+ ? PRIMARY
+ : props.style === "secondary"
+ ? SECONDARY
+ : props.style === "supertask"
+ ? SUPERTASK
+ : props.style === "danger"
+ ? DANGER
+ : props.style === "link"
+ ? LINK
+ : "";
+
+ //Activate Links with spacebar
+ useEffect(() => {
+ let link = document.getElementById(props.id);
+ if (link) {
+ link.addEventListener("keydown", (event) => {
+ E if (event.key === "Spacebar" || event.key === " ") {
+ event.preventDefault();
+ link.click();
+ }
+ });
+ }
+ });
+
+ return props.href ? (
+ <Link
+ href={props.href}
+ aria-label={`${props.ariaLabel ? props.ariaLabel : undefined}`}
+ className={`flex flex-row ${style} focus:ring focus:ring-offset-4 ring-multi-blue-blue60f py-2 px-4 rounded-sm w-fit text-base font-display ${props.custom}`}
+ onClick={props.onClick}
+ id={props.id}
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy || props.id}
+ data-cy-button={props.dataCyButton}
+ disabled={props.disabled}
+ role="button"
+ draggable="false"
+ lang={props.lang}
+ >
+ {props.icon && !props.iconEnd ? (
+ <span className={props.icon} data-testid={props.dataTestId} />
+ ) : undefined}
+ {props.text}
+ {props.children}
+ {props.icon && props.iconEnd ? (
+ <span className={props.icon} data-testid={props.dataTestId} />
+ ) : undefined}
+ </Link>
+ ) : (
+ <button
+ aria-expanded={`${props.ariaExpanded ? props.ariaExpanded : undefined}`}
+ aria-label={`${props.ariaLabel ? props.ariaLabel : undefined}`}
+ className={`flex flex-row ${style} focus:ring focus:ring-offset-4 ring-multi-blue-blue60f py-2 px-4 rounded-sm w-fit text-base font-display ${props.custom}`}
+ onClick={props.onClick}
+ type={props.type}
+ id={props.id}
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy || props.id}
+ data-cy-button={props.dataCyButton}
+ disabled={props.disabled}
+ data-gc-analytics-submit={props.analyticsTracking ? "submit" : undefined}
+ >
+ {props.icon && !props.iconEnd ? (
+ <span className={props.icon} data-testid={props.dataTestId} />
+ ) : undefined}
+ {props.imageSource && props.imageAlt ? (
+ <>
+ <img src={props.imageSource} alt={props.imageAlt} />
+ <span className={props.imageSpanClass} data-testid={props.dataTestId}>
+ {props.imageSpanText}
+ </span>
+ </>
+ ) : undefined}
+ <span className="flex">
+ {props.text}
+ {props.expandIcon}
+ </span>
+ {props.children}
+ {props.icon && props.iconEnd ? (
+ <span className={props.icon} data-testid={props.dataTestId} />
+ ) : undefined}
+ </button>
+ );
+}
+
+ActionButton.propTypes = {
+ /**
+ * This will add an icon inside the button when needed
+ */
+ icon: PropTypes.string,
+
+ /**
+ * This is for placing an icon at the end of the component
+ */
+ iconEnd: PropTypes.bool,
+
+ /**
+ * The text that the button will display
+ */
+ text: PropTypes.string,
+
+ /**
+ * Style link as a button when there's a href
+ */
+ href: PropTypes.string,
+
+ /**
+ * Identify which button being clicked
+ */
+ id: PropTypes.string.isRequired,
+
+ /**
+ * Lang attribute for links that do not match the language of the top level document
+ */
+ lang: PropTypes.string,
+ /**
+ * the type of the button
+ */
+ type: PropTypes.oneOf(["submit", "reset"]),
+
+ /**
+ * Secondary color styling option
+ */
+ secondary: PropTypes.bool,
+
+ /**
+ * Tertiary color styling option
+ */
+ tertiary: PropTypes.bool,
+
+ /**
+ * Custom button styling option
+ */
+ custom: PropTypes.string,
+
+ /**
+ * Callback for a click event on the button
+ */
+ onClick: PropTypes.func,
+
+ /**
+ * User must input one of the follow button styles to apply
+ * to their button. To apply the link style, the user must
+ * also add a value to the href prop
+ */
+ style: PropTypes.oneOf([
+ "supertask",
+ "primary",
+ "secondary",
+ "danger",
+ "link",
+ ]),
+
+ /**
+ * any other elements you want to add to the button
+ */
+ children: PropTypes.oneOfType([
+ PropTypes.string,
+ PropTypes.element,
+ PropTypes.arrayOf(PropTypes.element),
+ ]),
+ /**
+ * Test id for unit test
+ */
+ dataTestId: PropTypes.string,
+ /**
+ * Test id for e2e test
+ */
+ dataCy: PropTypes.string,
+ /**
+ * Test id for e2e test
+ */
+ dataCyButton: PropTypes.string,
+ /**
+ * Enabled or disabled the button
+ */
+ disabled: PropTypes.bool,
+ /**
+ * For tracking reset or submit on forms for analytics
+ */
+ analyticsTracking: PropTypes.bool,
+ /**
+ * Expand icon that will show the Feedback as popup
+ */
+ expandIcon: PropTypes.object,
+ /**
+ * Aria expanded state
+ */
+ ariaExpanded: PropTypes.string,
+ /**
+ * Aria label
+ */
+ ariaLabel: PropTypes.string,
+ /**
+ * Image source
+ */
+ imageSource: PropTypes.string,
+ /**
+ * Image alt
+ */
+ imageAlt: PropTypes.string,
+ /**
+ * Image span text
+ */
+ imageSpanText: PropTypes.string,
+ /**
+ * Image span classname
+ */
+ imageSpanClass: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/ActionButton.stories.js.html b/main/coverage/lcov-report/components/atoms/ActionButton.stories.js.html
new file mode 100644
index 0000000000..5555fed555
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/ActionButton.stories.js.html
@@ -0,0 +1,229 @@
+
+
+
+
+
+ Code coverage report for components/atoms/ActionButton.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 12/12
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 11/11
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+
+
+
+
+
+
+7x
+
+1x
+1x
+1x
+1x
+1x
+
+1x
+
+
+
+
+
+1x
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+1x
+
+
+
+
+
+ import { ActionButton } from "./ActionButton";
+
+export default {
+ title: "Components/Atoms/ActionButton",
+ component: ActionButton,
+};
+
+const Template = (args) => <ActionButton {...args} />;
+
+export const Primary = Template.bind({});
+export const Secondary = Template.bind({});
+export const Supertask = Template.bind({});
+export const Danger = Template.bind({});
+export const Link = Template.bind({});
+
+Primary.args = {
+ id: "primary",
+ style: "primary",
+ text: "Primary",
+};
+
+Secondary.args = {
+ id: "secondary",
+ text: "Secondary",
+ style: "secondary",
+ secondary: true,
+};
+
+Supertask.args = {
+ id: "supertask",
+ text: "Supertask",
+ style: "supertask",
+ tertiary: true,
+};
+
+Danger.args = {
+ id: "danger",
+ text: "Danger",
+ style: "danger",
+ disabled: true,
+};
+
+Link.args = {
+ id: "link",
+ text: "Link",
+ style: "link",
+ href: "/",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/Alert.js.html b/main/coverage/lcov-report/components/atoms/Alert.js.html
new file mode 100644
index 0000000000..cddc650cd8
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/Alert.js.html
@@ -0,0 +1,235 @@
+
+
+
+
+
+ Code coverage report for components/atoms/Alert.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 2/2
+
+
+
+
+ 50%
+ Branches
+ 2/4
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 2/2
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+
+
+
+
+
+
+
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faCircleInfo } from "@fortawesome/free-solid-svg-icons";
+import { faTriangleExclamation } from "@fortawesome/free-solid-svg-icons";
+
+/**
+ * Contextual alert component meant to draw attention to a short important message.
+ * Currently only has the option for an info alert, but other options can be added later so the alert
+ * can be customized.
+ */
+export function Alert(props) {
+ return (
+ <div className="layout-container">
+ <div
+ className={`relative border-l-6 min-h-40px my-10 ${
+ props.triangle ? "border-[#EE7100]" : "border-[#269ABC]"
+ }`}
+ >
+ <span className="absolute py-1 top-4 -left-3.5 bg-white">
+ {props.triangle ? (
+ <FontAwesomeIcon
+ icon={faTriangleExclamation}
+ color={"#EE7100"}
+ size="xl"
+ />
+ ) : (
+ <FontAwesomeIcon icon={faCircleInfo} color={"#269ABC"} size="xl" />
+ )}
+ </span>
+ <div className="ml-6">
+ <h3 className="text-h3 font-display">
+ <>{props.title}</>
+ </h3>
+ <p className="text-p">{props.text}</p>
+ </div>
+ </div>
+ </div>
+ );
+}
+
+Alert.propTypes = {
+ /**
+ * The title for the alert
+ */
+ title: PropTypes.string,
+ /**
+ * The description for the alert, accepts a string or JSX
+ */
+ text: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/Alert.stories.js.html b/main/coverage/lcov-report/components/atoms/Alert.stories.js.html
new file mode 100644
index 0000000000..73a68960ed
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/Alert.stories.js.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+ Code coverage report for components/atoms/Alert.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+
+ import { Alert } from "./Alert";
+
+export default {
+ title: "Components/Atoms/Alert",
+ component: Alert,
+};
+
+const Template = (args) => <Alert {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ title: "Alert Title",
+ text: "Alert Text",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/Banner.js.html b/main/coverage/lcov-report/components/atoms/Banner.js.html
new file mode 100644
index 0000000000..0bc4167e19
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/Banner.js.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+ Code coverage report for components/atoms/Banner.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 3/3
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+
+
+
+
+
+
+4x
+4x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import PropTypes from "prop-types";
+
+/**
+ * Displays the banner on the page
+ */
+
+export const Banner = ({ siteTitle, headline }) => {
+ return (
+ <div className="bg-banner-img-mobile bg-center bg-cover py-8 sm:bg-banner-img sm:bg-right">
+ <div className="lg:container xxs:mx-0 xxs:px-0 lg:mx-auto lg:px-6 xxl:mx-auto">
+ <div className="bg-black bg-opacity-90 text-white p-4 xxs:w-screen lg:bg-opacity-30 lg:w-2/3 xl:w-1/2">
+ <h1
+ className="text-h1 font-medium pt-4 pb-2 break-words"
+ id="pageMainTitle"
+ tabIndex="-1"
+ >
+ {siteTitle}
+ </h1>
+ <hr className="border-2 border-hr-red-bar bg-hr-red-bar bg-opacity-90 border-opacity-90 w-3/4" />
+ <p className="text-base font-normal py-4 break-words">{headline}</p>
+ </div>
+ </div>
+ </div>
+ );
+};
+
+Banner.propTypes = {
+ /**
+ * Text area that displays the title for the page
+ */
+ siteTitle: PropTypes.string.isRequired,
+
+ /**
+ * text area for headline in the banner
+ */
+ headline: PropTypes.string.isRequired,
+};
+
+export default Banner;
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/Banner.stories.js.html b/main/coverage/lcov-report/components/atoms/Banner.stories.js.html
new file mode 100644
index 0000000000..053ea3869f
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/Banner.stories.js.html
@@ -0,0 +1,133 @@
+
+
+
+
+
+ Code coverage report for components/atoms/Banner.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+
+ import React from "react";
+import Banner from "./Banner";
+
+export default {
+ title: "Components/Atoms/Banner",
+ component: Banner,
+};
+
+const Template = (args) => <Banner {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ siteTitle: "Banner Text",
+ headline: "Banner Headline",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/Breadcrumb.js.html b/main/coverage/lcov-report/components/atoms/Breadcrumb.js.html
new file mode 100644
index 0000000000..451a0710b3
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/Breadcrumb.js.html
@@ -0,0 +1,286 @@
+
+
+
+
+
+ Code coverage report for components/atoms/Breadcrumb.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 3/3
+
+
+
+
+ 100%
+ Branches
+ 2/2
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+
+
+
+
+
+
+
+
+11x
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import Link from "next/link";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faChevronRight } from "@fortawesome/free-solid-svg-icons";
+
+/**
+ * Breadcrumb component
+ */
+export function Breadcrumb(props) {
+ return (
+ <nav aria-label="breadcrumbs">
+ <ul className="block text-custom-blue-dark text-base font-body -ml-4 -my-4 ">
+ <li className="inline-block min-w-0 max-w-full truncate px-1 -my-4">
+ <Link
+ href="https://www.canada.ca/"
+ className="text-sm hover:text-custom-blue-link visited:text-purple-700 underline"
+ >
+ Canada.ca
+ </Link>
+ </li>
+
+ {props.items
+ ? props.items.map((item, key) => {
+ return (
+ <li
+ key={key}
+ className="inline-block min-w-0 max-w-full truncate -my-4 px-1"
+ >
+ <span className="inline-block mr-4">
+ <FontAwesomeIcon
+ icon={faChevronRight}
+ className="text-xs text-gray-breadcrumb"
+ />
+ </span>
+ <Link
+ href={item.link}
+ className="text-sm hover:text-canada-footer-hover-font-blue text-canada-footer-font visited:text-purple-700 underline"
+ >
+ {item.text}
+ </Link>
+ </li>
+ );
+ })
+ : null}
+ </ul>
+ </nav>
+ );
+}
+
+Breadcrumb.propTypes = {
+ /**
+ * Array of Items for the breadcrumb
+ */
+ items: PropTypes.arrayOf(
+ PropTypes.shape({
+ /**
+ * Text for the breadcrumb
+ */
+ text: PropTypes.string,
+
+ /**
+ * Link for the breadcrumb
+ */
+ link: PropTypes.string,
+ })
+ ),
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/Breadcrumb.stories.js.html b/main/coverage/lcov-report/components/atoms/Breadcrumb.stories.js.html
new file mode 100644
index 0000000000..3fcd99fa86
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/Breadcrumb.stories.js.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+ Code coverage report for components/atoms/Breadcrumb.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 5/5
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 4/4
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+
+
+
+
+
+
+3x
+
+1x
+1x
+
+1x
+
+
+
+
+
+
+ import { Breadcrumb } from "./Breadcrumb";
+
+export default {
+ title: "Components/Atoms/Breadcrumb",
+ component: Breadcrumb,
+};
+
+const Template = (args) => <Breadcrumb {...args} />;
+
+export const Primary = Template.bind({});
+export const WithItems = Template.bind({});
+
+WithItems.args = {
+ items: [
+ { text: "Link1", link: "/" },
+ { text: "Link2", link: "/" },
+ { text: "Link3", link: "/" },
+ ],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/CheckBox.js.html b/main/coverage/lcov-report/components/atoms/CheckBox.js.html
new file mode 100644
index 0000000000..07014084d5
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/CheckBox.js.html
@@ -0,0 +1,472 @@
+
+
+
+
+
+ Code coverage report for components/atoms/CheckBox.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 5/5
+
+
+
+
+ 71.42%
+ Branches
+ 10/14
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 5/5
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+
+
+
+
+
+145x
+
+
+
+
+145x
+
+
+
+
+
+
+
+
+
+
+
+
+6x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+9x
+
+
+
+
+
+9x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * check box component for forms
+ */
+export function CheckBox(props) {
+ const ifControlledProps = !props.uncontrolled
+ ? {
+ checked: props.checked,
+ }
+ : {};
+ return (
+ <div
+ className={`block leading-tight relative pl-40px h-46px clear-left${
+ props.className ? " " + props.className : " mb-4"
+ }`}
+ >
+ <input
+ className="control-input cursor-pointer appearance-none w-40px h-40px absolute left-0 m-0 z-1 opacity-0"
+ id={props.id}
+ name={props.name}
+ value={props.value}
+ type="checkbox"
+ onChange={(e) =>
+ props.onChange(
+ props.uncontrolled ? !e.currentTarget.checked : props.checked,
+ props.name,
+ props.value
+ )
+ }
+ aria-required={props.required}
+ aria-invalid={props.error ? "true" : undefined}
+ data-cy={props.dataCy}
+ data-testid={props.dataTestId}
+ {...ifControlledProps}
+ />
+ <label
+ className={`checkbox-label control-label inline-block cursor-pointer pt-4px pb-5px px-15px text-sm lg:text-p leading-tight sm:leading-6 ${
+ props.bolded ? "font-semibold" : "font-normal"
+ } font-body${props.error ? " text-error-border-red" : undefined}`}
+ htmlFor={props.id}
+ >
+ {props.showRequiredLabel ? (
+ <b className="text-error-border-red" aria-hidden="true">
+ *
+ </b>
+ ) : undefined}{" "}
+ {props.label} {<p className="sr-only">{props.expandState}</p>}
+ </label>
+ </div>
+ );
+}
+
+CheckBox.defaultProps = {
+ checked: false,
+ value: "true",
+ showRequiredLabel: false,
+};
+
+CheckBox.propTypes = {
+ /**
+ * additional css for the component
+ */
+ className: PropTypes.string,
+ /**
+ * whether or not the checkbox is checked
+ */
+ checked: PropTypes.bool.isRequired,
+
+ /**
+ * the value of the field when the checkbox is checked
+ */
+ value: PropTypes.string,
+
+ /**
+ * the name of the checkbox
+ */
+ name: PropTypes.string.isRequired,
+
+ /**
+ * the id of the checkbox
+ */
+ id: PropTypes.string.isRequired,
+
+ /**
+ * the label for the checkbox
+ */
+ label: PropTypes.string.isRequired,
+
+ /**
+ * whether or not there is an error
+ */
+ error: PropTypes.bool,
+
+ /**
+ * whether or not the field is required
+ */
+ required: PropTypes.bool,
+
+ /**
+ * show the "* ... (required)" in the label. in lists, this isn't necessary, but for an individual checkbox without a parent fieldset this is required
+ */
+ showRequiredLabel: PropTypes.bool,
+
+ /**
+ * callback to handle change in checked state, takes three arguments, the checked state, the name and the value
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * boolean flag to specify that this input should not be controlled by react
+ */
+ uncontrolled: PropTypes.bool,
+
+ /**
+ * boolean flag to specify when label content should be bolded
+ */
+ bolded: PropTypes.bool,
+
+ /**
+ * testing selector for cypress
+ */
+ dataCy: PropTypes.string,
+
+ /**
+ * testing selector for unit tests
+ */
+ dataTestId: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/CheckBox.stories.js.html b/main/coverage/lcov-report/components/atoms/CheckBox.stories.js.html
new file mode 100644
index 0000000000..b75f76075c
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/CheckBox.stories.js.html
@@ -0,0 +1,256 @@
+
+
+
+
+
+ Code coverage report for components/atoms/CheckBox.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 90.9%
+ Statements
+ 10/11
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 90%
+ Lines
+ 9/10
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+1x
+1x
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+ import React from "react";
+import { CheckBox } from "./CheckBox";
+
+export default {
+ title: "Components/Atoms/CheckBox",
+ component: CheckBox,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex justify-center">
+ <div className="w-96">
+ <Story />
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <CheckBox {...args} />;
+
+export const UnChecked = Template.bind({});
+UnChecked.args = {
+ id: "checkbox 1",
+ name: "ChexBox1",
+ value: "IsChecked",
+ label: "I am a checkbox",
+ dataTestId: "unchecked-checkbox",
+};
+
+export const Checked = Template.bind({});
+Checked.args = {
+ id: "checkbox 1",
+ name: "ChexBox1",
+ value: "IsChecked",
+ label: "I am a checkbox",
+ dataTestId: "checked-checkbox",
+ checked: true,
+};
+
+export const UnControlled = Template.bind({});
+UnControlled.args = {
+ id: "checkbox 1",
+ name: "ChexBox1",
+ value: "IsChecked",
+ label: "I am an uncontrolled checkbox",
+ dataTestId: "uncontrolled-checkbox",
+ uncontrolled: true,
+};
+
+export const Required = Template.bind({});
+Required.args = {
+ id: "checkbox 1",
+ name: "ChexBox1",
+ value: "IsChecked",
+ label: "I am an uncontrolled checkbox",
+ dataTestId: "required-checkbox",
+ showRequiredLabel: true,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/DateModified.js.html b/main/coverage/lcov-report/components/atoms/DateModified.js.html
new file mode 100644
index 0000000000..b621ee1d12
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/DateModified.js.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+ Code coverage report for components/atoms/DateModified.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 9/9
+
+
+
+
+ 100%
+ Branches
+ 6/6
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 9/9
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+
+
+
+10x
+
+10x
+10x
+4x
+2x
+2x
+
+
+10x
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+
+
+4x
+
+
+
+ import PropTypes from "prop-types";
+import { useTranslation } from "next-i18next";
+
+export function DateModified(props) {
+ const { t } = useTranslation("common");
+ // TeamCity build dates are received in the format yyyyMMdd
+ let dateFormatted = "NA";
+ if (props.date) {
+ if (!props.date.match(/(?=\S*['-])([a-zA-Z'-]+)/gm)) {
+ dateFormatted = props.date.replace(/^(.{4})(.{2})/gm, "$1-$2-");
+ } else dateFormatted = props.date;
+ }
+
+ return (
+ <dl className="mt-8 py-2 font-body font-normal text-sm">
+ <dt className="inline">{t("dateModified")}</dt>
+ <dd className="inline">
+ {dateFormatted === "NA" ? (
+ <time>{` ${dateFormatted}`}</time>
+ ) : (
+ <time dateTime={dateFormatted}>{` ${dateFormatted}`}</time>
+ )}
+ </dd>
+ </dl>
+ );
+}
+
+DateModified.defaultProps = {
+ date: process.env.NEXT_PUBLIC_BUILD_DATE,
+};
+
+DateModified.propTypes = {
+ // Date string in format yyyyMMdd
+ date: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/DateModified.stories.js.html b/main/coverage/lcov-report/components/atoms/DateModified.stories.js.html
new file mode 100644
index 0000000000..67a148b2ed
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/DateModified.stories.js.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+ Code coverage report for components/atoms/DateModified.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+
+
+
+
+
+
+3x
+
+1x
+
+1x
+
+
+ import { DateModified } from "./DateModified";
+
+export default {
+ title: "Components/Atoms/DateModified",
+ component: DateModified,
+};
+
+const Template = (args) => <DateModified {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ date: "20200420",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/ErrorLabel.js.html b/main/coverage/lcov-report/components/atoms/ErrorLabel.js.html
new file mode 100644
index 0000000000..36d992215a
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/ErrorLabel.js.html
@@ -0,0 +1,154 @@
+
+
+
+
+
+ Code coverage report for components/atoms/ErrorLabel.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 2/2
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 2/2
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+
+
+
+
+
+5x
+
+
+
+
+
+
+
+
+13x
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * error label component that is used with form inputs to display error messages
+ */
+export function ErrorLabel(props) {
+ return (
+ <div
+ className={`error-label border-l-4 border-error-border-red px-3 py-1 bg-error-background-red font-body font-bold mb-5px text-sm lg:text-p ${props.className}`}
+ >
+ {props.message}
+ </div>
+ );
+}
+
+ErrorLabel.propTypes = {
+ message: PropTypes.string.isRequired,
+
+ /**
+ * Prop for adding some classes
+ */
+ className: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/ErrorLabel.stories.js.html b/main/coverage/lcov-report/components/atoms/ErrorLabel.stories.js.html
new file mode 100644
index 0000000000..ad7344db2a
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/ErrorLabel.stories.js.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+ Code coverage report for components/atoms/ErrorLabel.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+
+
+
+
+
+
+
+2x
+
+1x
+1x
+
+
+ import React from "react";
+import { ErrorLabel } from "./ErrorLabel";
+
+export default {
+ title: "Components/Atoms/ErrorLabel",
+ component: ErrorLabel,
+};
+
+const Template = (args) => <ErrorLabel {...args} />;
+
+export const Primary = Template.bind({});
+Primary.args = {
+ message: "Error 1: This is a message",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/HTMList.js.html b/main/coverage/lcov-report/components/atoms/HTMList.js.html
new file mode 100644
index 0000000000..6d9cfaa67c
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/HTMList.js.html
@@ -0,0 +1,163 @@
+
+
+
+
+
+ Code coverage report for components/atoms/HTMList.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 6/6
+
+
+
+
+ 100%
+ Branches
+ 3/3
+
+
+
+
+ 100%
+ Functions
+ 4/4
+
+
+
+
+ 100%
+ Lines
+ 6/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+
+
+7x
+7x
+
+18x
+
+13x
+
+
+
+
+7x
+
+
+
+
+
+
+1x
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+export function HTMList({ tag = "ul", content, listClassName, liClassName }) {
+ const parseList = (content) =>
+ content
+ .split("*") // split the string on asterisks
+ .filter((item) => item) // filter out empty strings
+ .map((item, index) => (
+ <li className={liClassName} key={index}>
+ {item.trim()}
+ </li>
+ ));
+
+ return tag === "ul" ? (
+ <ul className={listClassName}>{parseList(content)}</ul>
+ ) : (
+ <ol className={listClassName}>{parseList(content)}</ol>
+ );
+}
+
+HTMList.propTypes = {
+ tag: PropTypes.string,
+ content: PropTypes.string.isRequired,
+ listClassName: PropTypes.string,
+ liClassName: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/MultiTextField.js.html b/main/coverage/lcov-report/components/atoms/MultiTextField.js.html
new file mode 100644
index 0000000000..b0b487fe2b
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/MultiTextField.js.html
@@ -0,0 +1,523 @@
+
+
+
+
+
+ Code coverage report for components/atoms/MultiTextField.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 5/5
+
+
+
+
+ 60%
+ Branches
+ 6/10
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 5/5
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+
+
+
+
+
+
+
+4x
+
+4x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+8x
+
+
+
+
+8x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { ErrorLabel } from "./ErrorLabel";
+import { useTranslation } from "next-i18next";
+
+/**
+ * multi line text field
+ */
+export function MultiTextField(props) {
+ const { t } = useTranslation("common");
+
+ return (
+ <div
+ className={`block leading-tight${
+ props.className ? " " + props.className : " mb-12"
+ }`}
+ >
+ <label
+ className={`block leading-tight text-sm lg:text-p font-body mb-5px ${
+ props.boldLabel ? "font-bold" : ""
+ }`}
+ htmlFor={props.id}
+ >
+ {props.required ? (
+ <b className="text-error-border-red" aria-hidden="true">
+ *
+ </b>
+ ) : undefined}{" "}
+ {props.label}{" "}
+ </label>
+ <p id={props.describedby} className="text-sm lg:text-g mb-5 leading-30px">
+ {t("doNotInclude")}
+ </p>
+ {props.error ? <ErrorLabel message={props.error} /> : undefined}
+ <textarea
+ className={`text-input font-body w-full min-h-40px shadow-sm text-form-input-gray border-2 py-6px px-12px ${
+ props.error ? "border-error-border-red" : "border-black"
+ }`}
+ id={props.id}
+ name={props.name}
+ placeholder={props.placeholder}
+ onChange={(e) => props.onChange(e.currentTarget.value)}
+ cols={props.cols}
+ rows={props.rows}
+ spellCheck={props.spellCheck}
+ wrap={props.wrap}
+ required={props.required}
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy}
+ aria-describedby={props.describedby}
+ >
+ {props.value}
+ </textarea>
+ </div>
+ );
+}
+
+MultiTextField.defaultProps = {
+ spellCheck: true,
+ wrap: "soft",
+};
+
+MultiTextField.propTypes = {
+ /**
+ * additional css for the component
+ */
+ className: PropTypes.string,
+
+ /**
+ * the id of the multi text field
+ */
+ id: PropTypes.string.isRequired,
+ /**
+ * the name of the multi text field
+ */
+ name: PropTypes.string.isRequired,
+ /**
+ * the label for the multi text field
+ */
+ label: PropTypes.string.isRequired,
+
+ /**
+ * the value for the multi text field
+ */
+ value: PropTypes.string,
+
+ /**
+ * message to display if there is an error
+ */
+ error: PropTypes.string,
+
+ /**
+ * whether or not the field is required
+ */
+ required: PropTypes.bool,
+
+ /**
+ * whether or not spellchecking is enabled for this field, by default it is
+ */
+ spellCheck: PropTypes.bool,
+
+ /**
+ * whether or not the label is bold
+ */
+ boldLabel: PropTypes.bool,
+ /**
+ * whether to soft wrap or hard wrap the field
+ */
+ wrap: PropTypes.oneOf(["soft", "hard"]),
+ /**
+ * the placeholder for the multi text field
+ */
+ placeholder: PropTypes.string,
+ /**
+ * how much lines should the multi text field show
+ */
+ rows: PropTypes.number,
+ /**
+ * how much columns should the multi text field show
+ */
+ cols: PropTypes.number,
+ /**
+ * the minimum length of characters for the multi text field
+ */
+ minLength: PropTypes.number,
+ /**
+ * the maximum length of characters for the multi text field
+ */
+ maxLength: PropTypes.number,
+ /**
+ * call back for when the value of the multi text field changes
+ */
+ onChange: PropTypes.func,
+ /**
+ * unit test selector
+ */
+ dataTestId: PropTypes.string,
+ /**
+ * cypress selector
+ */
+ dataCy: PropTypes.string,
+
+ /**
+ * aria-describedby label id
+ */
+ describedby: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/MultiTextField.stories.js.html b/main/coverage/lcov-report/components/atoms/MultiTextField.stories.js.html
new file mode 100644
index 0000000000..b0e11f453f
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/MultiTextField.stories.js.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+ Code coverage report for components/atoms/MultiTextField.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 88.88%
+ Statements
+ 8/9
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 87.5%
+ Lines
+ 7/8
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2x
+
+1x
+1x
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { MultiTextField } from "./MultiTextField";
+
+export default {
+ title: "Components/Atoms/MultiTextField",
+ component: MultiTextField,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex justify-center">
+ <div className="w-96">
+ <Story />
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <MultiTextField i {...args} />;
+
+export const Primary = Template.bind({});
+Primary.args = {
+ id: "multiTextField1",
+ name: "multiTextField1",
+ label: "I am a multi text field",
+ dataTestId: "multitext-one",
+ placeholder: "some placeholder text",
+};
+
+export const BoldLabel = Template.bind({});
+BoldLabel.args = {
+ id: "multiTextField1",
+ name: "multiTextField1",
+ label: "I am a multi text field",
+ dataTestId: "multitext-bold",
+ placeholder: "some placeholder text",
+ boldLabel: true,
+};
+
+export const HardWrap = Template.bind({});
+HardWrap.args = {
+ id: "multiTextField1",
+ name: "multiTextField1",
+ label: "I am a multi text field",
+ dataTestId: "multitext-hard-wrap",
+ placeholder: "some placeholder text",
+ cols: 30,
+ rows: 5,
+ wrap: "hard",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/ProjectInfo.js.html b/main/coverage/lcov-report/components/atoms/ProjectInfo.js.html
new file mode 100644
index 0000000000..15e0e1473b
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/ProjectInfo.js.html
@@ -0,0 +1,241 @@
+
+
+
+
+
+ Code coverage report for components/atoms/ProjectInfo.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 75%
+ Branches
+ 3/4
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 4/4
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+
+
+
+
+
+3x
+3x
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2x
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { useTranslation } from "next-i18next";
+import { useState } from "react";
+import { HelpIcon } from "@dts-stn/service-canada-design-system";
+
+export function ProjectInfo(props) {
+ const { t } = useTranslation("common");
+ const [showInfo, setShowInfo] = useState(false);
+
+ return (
+ <>
+ <div className="grid grid-cols-1 xl:grid-cols-3 gap-x-2 text-[20px]">
+ <strong className="font-body col-span-1">{props.termStarted}</strong>
+ <p className="col-span-2">
+ {!props.dateStarted ? undefined : props.dateStarted.substring(0, 10)}
+ </p>
+ <strong className="font-body col-span-1">{props.termEnded}</strong>
+ <p className="col-span-2">
+ {!props.dateEnded ? undefined : props.dateEnded.substring(0, 10)}
+ </p>
+ <strong className="font-body col-span-1 my-auto">
+ {props.termStage}
+ </strong>
+ <div className="flex col-span-2 items-end">
+ <div className="shrink-0 flex">
+ <p className="my-auto">{props.stage}</p>
+ <div className="my-auto">
+ <HelpIcon
+ lang={props.locale}
+ title={props.stage}
+ body={props.definition}
+ />
+ </div>
+ </div>
+ </div>
+ <strong className="font-body col-span-1 col-start-1">
+ {props.termSummary}
+ </strong>
+ <p className="col-span-2">{props.summary}</p>
+ </div>
+ </>
+ );
+}
+
+ProjectInfo.propTypes = {
+ dateStarted: PropTypes.string,
+ dateEnded: PropTypes.string,
+ stage: PropTypes.string,
+ summary: PropTypes.string,
+ info: PropTypes.string,
+ locale: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/ProjectInfo.stories.js.html b/main/coverage/lcov-report/components/atoms/ProjectInfo.stories.js.html
new file mode 100644
index 0000000000..8a003d12a1
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/ProjectInfo.stories.js.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+ Code coverage report for components/atoms/ProjectInfo.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+
+
+
+ import { ProjectInfo } from "./ProjectInfo";
+
+export default {
+ title: "Components/Atoms/ProjectInfo",
+ component: ProjectInfo,
+};
+
+const Template = (args) => <ProjectInfo {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ dateStarted: "2021-01-01",
+ dateEnded: "2022-03-31",
+ stage: "Alpha",
+ summary: "Project status",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/RadioButton.js.html b/main/coverage/lcov-report/components/atoms/RadioButton.js.html
new file mode 100644
index 0000000000..c0dc73a1ea
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/RadioButton.js.html
@@ -0,0 +1,430 @@
+
+
+
+
+
+ Code coverage report for components/atoms/RadioButton.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 90%
+ Statements
+ 9/10
+
+
+
+
+ 83.33%
+ Branches
+ 10/12
+
+
+
+
+ 100%
+ Functions
+ 3/3
+
+
+
+
+ 90%
+ Lines
+ 9/10
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+
+
+
+
+
+16x
+
+
+
+
+
+
+16x
+
+
+
+
+
+
+
+
+3x
+
+
+1x
+1x
+1x
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2x
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * Radio input styled as a button
+ **/
+export function RadioButton(props) {
+ const ifControlledProps = !props.uncontrolled
+ ? {
+ checked: props.checked,
+ }
+ : {
+ defaultChecked: props.checked || false,
+ };
+ return (
+ <div className="flex relative">
+ <input
+ type="radio"
+ className="radio-button absolute top-0 left-0 w-full h-full appearance-none cursor-pointer"
+ id={props.id}
+ name={props.name}
+ value={props.value}
+ onChange={(e) => {
+ props.onChange(props.value, e);
+ }}
+ onKeyUp={(e) => {
+ E if (e.key === "Enter") {
+ e.preventDefault();
+ I if (props.uncontrolled) {
+ e.currentTarget.checked = true;
+ }
+ props.onChange(props.value, e);
+ }
+ }}
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy}
+ required={props.required}
+ {...ifControlledProps}
+ />
+ <label
+ className={`radio-button-label font-body float-left text-xs px-5 py-3 border border-solid border-gray-600 border-opacity-50${
+ props.roundedFront ? " rounded-l-lg" : ""
+ }${props.roundedBack ? " rounded-r-lg" : ""}`}
+ htmlFor={props.id}
+ >
+ {props.label}
+ </label>
+ </div>
+ );
+}
+
+RadioButton.defaultProps = {
+ checked: false,
+};
+
+RadioButton.propTypes = {
+ /**
+ * the id for the input
+ */
+ id: PropTypes.string.isRequired,
+
+ /**
+ * the name for the input
+ */
+ name: PropTypes.string.isRequired,
+
+ /**
+ * the value for the input
+ */
+ value: PropTypes.string.isRequired,
+
+ /**
+ * the label for the radio button
+ */
+ label: PropTypes.string.isRequired,
+
+ /**
+ * whether or not the field is required
+ */
+ required: PropTypes.bool,
+
+ /**
+ * whether the radio button is checked or not
+ */
+ checked: PropTypes.bool,
+
+ /**
+ * Should the button be rounded in the front
+ */
+ roundedFront: PropTypes.bool,
+
+ /**
+ * Should the button be rounded in the back
+ */
+ roundedBack: PropTypes.bool,
+
+ /**
+ * if the input is controlled by react or not
+ */
+ uncontrolled: PropTypes.bool,
+
+ /**
+ * onChange callback
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * unit test selector
+ */
+ dataTestId: PropTypes.string,
+
+ /**
+ * cypress test selector
+ */
+ dataCy: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/RadioButton.stories.js.html b/main/coverage/lcov-report/components/atoms/RadioButton.stories.js.html
new file mode 100644
index 0000000000..4d7e46b107
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/RadioButton.stories.js.html
@@ -0,0 +1,259 @@
+
+
+
+
+
+ Code coverage report for components/atoms/RadioButton.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 12/12
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 11/11
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+
+
+
+
+
+
+
+7x
+
+1x
+1x
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+ import React from "react";
+import { RadioButton } from "./RadioButton";
+
+export default {
+ title: "Components/Atoms/RadioButton",
+ component: RadioButton,
+};
+
+const Template = (args) => <RadioButton {...args} />;
+
+export const Primary = Template.bind({});
+Primary.args = {
+ id: "radio-button-1",
+ name: "radio_button_1",
+ value: "Some Value",
+ label: "My Radio Button",
+ dataTestId: "primary",
+};
+
+export const Checked = Template.bind({});
+Checked.args = {
+ id: "radio-button-checked",
+ name: "radio_button_checked",
+ value: "Some Value",
+ label: "My Radio Button",
+ dataTestId: "checked",
+ checked: true,
+};
+
+export const UnControlled = Template.bind({});
+UnControlled.args = {
+ id: "radio-button-uncontrolled",
+ name: "radio_button_uncontrolled",
+ value: "Some Value",
+ label: "My Radio Button",
+ dataTestId: "uncontrolled",
+ uncontrolled: true,
+};
+
+export const RoundedFront = Template.bind({});
+RoundedFront.args = {
+ id: "radio-button-rounded-front",
+ name: "radio_button_rounded_front",
+ value: "Some Value",
+ label: "My Radio Button",
+ dataTestId: "roundedFront",
+ roundedFront: true,
+};
+
+export const RoundedBack = Template.bind({});
+RoundedBack.args = {
+ id: "radio-button-rounded-back",
+ name: "radio_button_rounded_back",
+ value: "Some Value",
+ label: "My Radio Button",
+ dataTestId: "roundedBack",
+ roundedBack: true,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/RadioField.js.html b/main/coverage/lcov-report/components/atoms/RadioField.js.html
new file mode 100644
index 0000000000..bb8f05971f
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/RadioField.js.html
@@ -0,0 +1,427 @@
+
+
+
+
+
+ Code coverage report for components/atoms/RadioField.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 83.33%
+ Statements
+ 5/6
+
+
+
+
+ 50%
+ Branches
+ 5/10
+
+
+
+
+ 66.66%
+ Functions
+ 2/3
+
+
+
+
+ 83.33%
+ Lines
+ 5/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+
+
+
+
+
+8x
+
+
+
+
+8x
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+9x
+
+
+
+
+9x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * radio field
+ */
+export function RadioField(props) {
+ const ifControlledProps = !props.uncontrolled
+ ? {
+ checked: props.checked,
+ }
+ : {};
+ return (
+ <div
+ className={`block leading-tight relative pl-40px h-40px clear-left mb-10px${
+ props.className ? " " + props.className : ""
+ }`}
+ >
+ <input
+ className="control-input cursor-pointer appearance-none w-40px h-40px absolute left-0 m-0 z-1 opacity-0"
+ id={props.id}
+ name={props.name}
+ value={props.value}
+ type="radio"
+ onChange={(e) =>
+ props.onChange(
+ props.uncontrolled ? !e.currentTarget.checked : props.checked,
+ props.name,
+ props.value
+ )
+ }
+ aria-required={props.required}
+ aria-invalid={props.error ? "true" : undefined}
+ data-cy={props.dataCy}
+ data-testid={props.dataTestId}
+ {...ifControlledProps}
+ />
+ <label
+ className={`radio-field-label control-label inline-block cursor-pointer pt-4px pb-5px px-15px text-sm lg:text-p leading-tight sm:leading-6 font-normal font-body${
+ props.error ? " text-error-border-red" : undefined
+ }`}
+ htmlFor={props.id}
+ onClick={() => props.onChange(props.checked, props.name, props.value)}
+ >
+ {props.label}
+ </label>
+ </div>
+ );
+}
+
+RadioField.defaultProps = {
+ checked: false,
+ value: "true",
+};
+
+RadioField.propTypes = {
+ /**
+ * additional css for the component
+ */
+ className: PropTypes.string,
+ /**
+ * whether or not the checkbox is checked
+ */
+ checked: PropTypes.bool.isRequired,
+
+ /**
+ * the value of the field when the checkbox is checked
+ */
+ value: PropTypes.string,
+
+ /**
+ * the name of the checkbox
+ */
+ name: PropTypes.string.isRequired,
+
+ /**
+ * whether or not there is an error
+ */
+ error: PropTypes.bool,
+
+ /**
+ * whether or not the field is required
+ */
+ required: PropTypes.bool,
+
+ /**
+ * the id of the checkbox
+ */
+ id: PropTypes.string.isRequired,
+
+ /**
+ * the label for the checkbox
+ */
+ label: PropTypes.string.isRequired,
+
+ /**
+ * callback to handle change in checked state, takes three arguments, the checked state, the name and the value
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * boolean flag to specify that this input should not be controlled by react
+ */
+ uncontrolled: PropTypes.bool,
+
+ /**
+ * testing selector for cypress
+ */
+ dataCy: PropTypes.string,
+
+ /**
+ * testing selector for unit tests
+ */
+ dataTestId: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/RadioField.stories.js.html b/main/coverage/lcov-report/components/atoms/RadioField.stories.js.html
new file mode 100644
index 0000000000..68e3f5a467
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/RadioField.stories.js.html
@@ -0,0 +1,226 @@
+
+
+
+
+
+ Code coverage report for components/atoms/RadioField.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 88.88%
+ Statements
+ 8/9
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 87.5%
+ Lines
+ 7/8
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+1x
+1x
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+ import React from "react";
+import { RadioField } from "./RadioField";
+
+export default {
+ title: "Components/Atoms/RadioField",
+ component: RadioField,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex justify-center">
+ <div className="w-96">
+ <Story />
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <RadioField {...args} />;
+
+export const UnChecked = Template.bind({});
+UnChecked.args = {
+ id: "radio 1",
+ name: "RadioField1",
+ value: "IsChecked",
+ label: "I am a radio button",
+ dataTestId: "unchecked-radio-field",
+};
+
+export const Checked = Template.bind({});
+Checked.args = {
+ id: "radio 1",
+ name: "RadioField1",
+ value: "IsChecked",
+ label: "I am a radio button",
+ dataTestId: "checked-radio-field",
+ checked: true,
+};
+
+export const UnControlled = Template.bind({});
+UnControlled.args = {
+ id: "radio 1",
+ name: "RadioField1",
+ value: "IsChecked",
+ label: "I am an uncontrolled checkbox",
+ dataTestId: "uncontrolled-checkbox",
+ uncontrolled: true,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/SearchBar.js.html b/main/coverage/lcov-report/components/atoms/SearchBar.js.html
new file mode 100644
index 0000000000..e3895bf8d1
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/SearchBar.js.html
@@ -0,0 +1,244 @@
+
+
+
+
+
+ Code coverage report for components/atoms/SearchBar.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 2/2
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 2/2
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+
+
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * component
+ */
+export function SearchBar(props) {
+ return (
+ <form
+ className="w-full inline-flex h-9 lg:w-full xl:w-80 w-full border border-solid border-gray-light-100"
+ onSubmit={props.onSubmit}
+ data-cy={props.dataCy}
+ >
+ <input
+ type="text"
+ placeholder={props.placeholder}
+ className="placeholder-text-gray text-text-gray font-body py-1 px-2 focus:outline-none w-full"
+ onChange={props.onChange}
+ />
+
+ <button
+ title="Search bar button"
+ type="submit"
+ className={
+ "bg-custom-blue-dark text-white text-center text-base rounded-none pt-0.5 h-full w-10 hover:bg-gray-dark active:bg-gray-dark focus:bg-gray-dark"
+ }
+ >
+ <span className="icon-search" />
+ </button>
+ </form>
+ );
+}
+
+SearchBar.propTypes = {
+ /**
+ * Placeholder for the search bar
+ */
+ placeholder: PropTypes.string.isRequired,
+
+ /**
+ * Action to do on input change
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * Action to do on form submit
+ */
+ onSubmit: PropTypes.func,
+
+ /**
+ * Test id for cypress test
+ */
+ dataCy: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/SearchBar.stories.js.html b/main/coverage/lcov-report/components/atoms/SearchBar.stories.js.html
new file mode 100644
index 0000000000..8a62598195
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/SearchBar.stories.js.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+ Code coverage report for components/atoms/SearchBar.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+ import { SearchBar } from "./SearchBar";
+
+export default {
+ title: "Components/Atoms/SearchBar",
+ component: SearchBar,
+};
+
+const Template = (args) => <SearchBar {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ placeholder: "Search Canada.ca",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/SelectField.js.html b/main/coverage/lcov-report/components/atoms/SelectField.js.html
new file mode 100644
index 0000000000..8ff7d80bce
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/SelectField.js.html
@@ -0,0 +1,583 @@
+
+
+
+
+
+ Code coverage report for components/atoms/SelectField.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 90.9%
+ Statements
+ 10/11
+
+
+
+
+ 50%
+ Branches
+ 9/18
+
+
+
+
+ 75%
+ Functions
+ 3/4
+
+
+
+
+ 90.9%
+ Lines
+ 10/11
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+
+
+
+
+2x
+
+2x
+
+
+
+
+
+2x
+2x
+6x
+6x
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+8x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { ErrorLabel } from "./ErrorLabel";
+import { useTranslation } from "next-i18next";
+
+export function SelectField(props) {
+ const { t } = useTranslation("common");
+
+ const ifControlledProps = !props.uncontrolled
+ ? {
+ value: props.value,
+ }
+ : {};
+
+ E if (!props.ignoreSort) {
+ props.options.sort(function (a, b) {
+ var collator = new Intl.Collator("fr");
+ return collator.compare(a.name.toLowerCase(), b.name.toLowerCase());
+ });
+ }
+
+ return (
+ <div
+ className={`block leading-tight${
+ props.className ? " " + props.className : " mb-10px"
+ }`}
+ >
+ <label
+ className={`select-field-label block leading-tight text-sm lg:text-p font-body mb-5 ${
+ props.boldLabel ? "font-bold" : ""
+ }`}
+ htmlFor={props.id + "-choice"}
+ >
+ {props.required ? (
+ <b className="text-error-border-red" aria-hidden="true">
+ *
+ </b>
+ ) : undefined}{" "}
+ {props.label}{" "}
+ </label>
+ {props.error ? <ErrorLabel message={props.error} /> : undefined}
+ <select
+ className={`text-input select-field bg-white font-body w-full min-h-40px shadow-sm border-2 py-6px px-12px ${
+ props.error ? "border-error-border-red" : "border-black"
+ }`}
+ id={props.id + "-choice"}
+ name={props.name}
+ aria-required={props.required}
+ aria-invalid={props.error ? "true" : undefined}
+ onChange={(e ) => props.onChange(e.currentTarget.value)}
+ {...ifControlledProps}
+ data-testid={props.dataTestId + "-choice"}
+ data-cy={props.dataCy + "-choice"}
+ >
+ <option
+ key="default"
+ value=""
+ data-testid="default"
+ data-cy="default"
+ />
+ {props.options.map(({ id, name, value }) => {
+ return (
+ <option key={id} value={value} data-testid={id} data-cy={id}>
+ {name}
+ </option>
+ );
+ })}
+ {props.other ? (
+ <option
+ key={"other"}
+ value={"other"}
+ data-testid={"other"}
+ data-cy={"other"}
+ >
+ {t("reportAProblemOther")}
+ </option>
+ ) : (
+ ""
+ )}
+ </select>
+ </div>
+ );
+}
+
+SelectField.defaultProps = {
+ value: "",
+};
+
+SelectField.propTypes = {
+ /**
+ * additional css for the component
+ */
+ className: PropTypes.string,
+
+ /**
+ * the id of the text field
+ */
+ id: PropTypes.string.isRequired,
+
+ /**
+ * the name of the text field
+ */
+ name: PropTypes.string.isRequired,
+
+ /**
+ * the label of the text field
+ */
+ label: PropTypes.string.isRequired,
+
+ /**
+ * whether ot not the field is required
+ */
+ required: PropTypes.bool,
+
+ /**
+ * value of the text field
+ */
+ value: PropTypes.string.isRequired,
+
+ /**
+ * call back for when the value of the text field changes
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * message to display if there is an error
+ */
+ error: PropTypes.string,
+
+ /**
+ * Other option for dropdown
+ */
+ other: PropTypes.bool,
+
+ /**
+ * if label should be bold
+ */
+ boldLabel: PropTypes.bool,
+
+ /**
+ * boolean flag to specify that this input should be uncontrolled by react
+ */
+ uncontrolled: PropTypes.bool,
+
+ options: PropTypes.arrayOf(
+ PropTypes.shape({
+ id: PropTypes.string.isRequired,
+ name: PropTypes.string.isRequired,
+ value: PropTypes.string.isRequired,
+ })
+ ),
+
+ /**
+ * unit test selector
+ */
+ dataTestId: PropTypes.string,
+
+ /**
+ * cypress tests selector
+ */
+ dataCy: PropTypes.string,
+
+ /**
+ * if true, skip sorting the options
+ */
+ ignoreSort: PropTypes.bool,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/SelectField.stories.js.html b/main/coverage/lcov-report/components/atoms/SelectField.stories.js.html
new file mode 100644
index 0000000000..b026126984
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/SelectField.stories.js.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+ Code coverage report for components/atoms/SelectField.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 80%
+ Statements
+ 4/5
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 75%
+ Lines
+ 3/4
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2x
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { SelectField } from "./SelectField";
+
+export default {
+ title: "Components/Atoms/SelectField",
+ component: SelectField,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex justify-center">
+ <div className="w-96">
+ <Story />
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <SelectField {...args} />;
+
+export const Primary = Template.bind({});
+Primary.args = {
+ id: "select-field-1",
+ name: "selectField1",
+ label: "I am a select field",
+ uncontrolled: true,
+ dataTestId: "select-field-1",
+ options: [
+ {
+ id: "option1",
+ name: "Option 1",
+ value: "option1",
+ },
+ {
+ id: "option2",
+ name: "Option 2",
+ value: "option2",
+ },
+ {
+ id: "option3",
+ name: "Option 3",
+ value: "option3",
+ },
+ {
+ id: "option4",
+ name: "Option 4",
+ value: "option4",
+ },
+ ],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/TableOfContents.js.html b/main/coverage/lcov-report/components/atoms/TableOfContents.js.html
new file mode 100644
index 0000000000..0d146b1452
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/TableOfContents.js.html
@@ -0,0 +1,187 @@
+
+
+
+
+
+ Code coverage report for components/atoms/TableOfContents.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 3/3
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+
+
+2x
+
+
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+export function TableOfContents(props) {
+ return (
+ <>
+ <h2 className="font-semibold">{props.title}</h2>
+ <nav>
+ <ul className="leading-4 list-disc">
+ {props.headings.map((heading) => (
+ <li key={heading.id}>
+ <a
+ className="underline text-custom-blue-link underline hover:text-custom-blue-projects-link"
+ href={`#${heading.id}`}
+ >
+ {heading.text}
+ </a>
+ </li>
+ ))}
+ </ul>
+ </nav>
+ </>
+ );
+}
+
+TableOfContents.propTypes = {
+ /**
+ * The title for the table of contents
+ */
+ title: PropTypes.string,
+ /**
+ * An array of headings
+ */
+ headings: PropTypes.array,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/TableOfContents.stories.js.html b/main/coverage/lcov-report/components/atoms/TableOfContents.stories.js.html
new file mode 100644
index 0000000000..11335921a7
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/TableOfContents.stories.js.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+ Code coverage report for components/atoms/TableOfContents.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+
+ import { TableOfContents } from "./TableOfContents";
+
+export default {
+ title: "Components/Atoms/TableOfContents",
+ component: TableOfContents,
+};
+
+const Template = (args) => <TableOfContents {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ title: "Table of Contents Title",
+ headings: [{ id: "heading-one", text: "Heading one" }],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/TextField.js.html b/main/coverage/lcov-report/components/atoms/TextField.js.html
new file mode 100644
index 0000000000..e7e65aa370
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/TextField.js.html
@@ -0,0 +1,613 @@
+
+
+
+
+
+ Code coverage report for components/atoms/TextField.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 6/6
+
+
+
+
+ 61.11%
+ Branches
+ 11/18
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 6/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+
+
+
+
+
+
+
+6x
+
+6x
+
+
+
+
+6x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+8x
+
+
+
+
+8x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { ErrorLabel } from "./ErrorLabel";
+import { useTranslation } from "next-i18next";
+
+/**
+ * text field component
+ */
+export function TextField(props) {
+ const { t } = useTranslation("common");
+
+ const ifControlledProps = !props.uncontrolled
+ ? {
+ value: props.value,
+ }
+ : {};
+ return (
+ <div
+ className={`block leading-tight${
+ props.className ? " " + props.className : " mb-10px"
+ }`}
+ >
+ <label
+ className={`block leading-tight text-sm lg:text-p font-body mb-5 ${
+ props.boldLabel ? "font-bold" : ""
+ }`}
+ htmlFor={props.id}
+ >
+ {props.required ? (
+ <b className="text-error-border-red" aria-hidden="true">
+ *
+ </b>
+ ) : undefined}{" "}
+ {props.label}{" "}
+ </label>
+ {props.describedby ? (
+ <p
+ id={props.describedby}
+ className="text-xs lg:text-sm mb-5 leading-30px"
+ >
+ {t("doNotInclude")}
+ </p>
+ ) : (
+ ""
+ )}
+
+ {props.error ? <ErrorLabel message={props.error} /> : undefined}
+ <input
+ className={`text-input font-body w-full lg:w-3/4 min-h-40px shadow-sm text-form-input-gray border-2 py-6px px-12px ${
+ props.error ? "border-error-border-red" : "border-black"
+ } ${props.exclude ? "exclude" : ""}`}
+ id={props.id}
+ aria-describedby={props.describedby}
+ name={props.name}
+ placeholder={props.placeholder}
+ type={props.type}
+ min={props.min}
+ max={props.max}
+ step={props.step}
+ aria-required={props.required}
+ aria-invalid={props.error ? "true" : undefined}
+ onChange={(e) => props.onChange(e.currentTarget.value)}
+ {...ifControlledProps}
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy}
+ autoComplete={props.autoComplete}
+ />
+ </div>
+ );
+}
+
+TextField.defaultProps = {
+ value: "",
+ type: "text",
+};
+
+TextField.propTypes = {
+ /**
+ * additional css for the component
+ */
+ className: PropTypes.string,
+
+ /**
+ * the id of the text field
+ */
+ id: PropTypes.string.isRequired,
+
+ /**
+ * the name of the text field
+ */
+ name: PropTypes.string.isRequired,
+
+ /**
+ * the label of the text field
+ */
+ label: PropTypes.string.isRequired,
+
+ /**
+ * whether ot not the field is required
+ */
+ required: PropTypes.bool,
+
+ /**
+ * value of the text field
+ */
+ value: PropTypes.string,
+
+ /**
+ * placeholder for the text field,
+ */
+ placeholder: PropTypes.string,
+
+ /**
+ * the type of the input
+ */
+ type: PropTypes.string,
+
+ /**
+ * call back for when the value of the text field changes
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * message to display if there is an error
+ */
+ error: PropTypes.string,
+
+ /**
+ * if label should be bold
+ */
+ boldLabel: PropTypes.bool,
+
+ /**
+ * boolean flag to specify that this input should be uncontrolled by react
+ */
+ uncontrolled: PropTypes.bool,
+
+ /**
+ * min value allowed
+ */
+ min: PropTypes.number,
+
+ /**
+ * max value allowed
+ */
+ max: PropTypes.number,
+
+ /**
+ * the legal number of intervals
+ */
+ step: PropTypes.number,
+
+ /**
+ * unit test selector
+ */
+ dataTestId: PropTypes.string,
+
+ /**
+ * cypress tests selector
+ */
+ dataCy: PropTypes.string,
+
+ /**
+ * Exclude option for adding exclude class to the textfield
+ */
+ exclude: PropTypes.bool,
+
+ /**
+ * aria-describedby label id
+ */
+ describedby: PropTypes.string,
+
+ /**
+ * Option to enable autocomplete on field
+ */
+ autocomplete: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/TextField.stories.js.html b/main/coverage/lcov-report/components/atoms/TextField.stories.js.html
new file mode 100644
index 0000000000..ada058235d
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/TextField.stories.js.html
@@ -0,0 +1,229 @@
+
+
+
+
+
+ Code coverage report for components/atoms/TextField.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 88.88%
+ Statements
+ 8/9
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 87.5%
+ Lines
+ 7/8
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+1x
+1x
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+ import React from "react";
+import { TextField } from "./TextField";
+
+export default {
+ title: "Components/Atoms/TextField",
+ component: TextField,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex justify-center">
+ <div className="w-96">
+ <Story />
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <TextField {...args} />;
+
+export const Primary = Template.bind({});
+Primary.args = {
+ id: "textField1",
+ name: "textField1",
+ label: "I am a text field",
+ dataTestId: "textbox-controlled",
+ placeholder: "Some placeholder text",
+};
+
+export const UnControlled = Template.bind({});
+UnControlled.args = {
+ id: "textField1",
+ name: "textField1",
+ label: "I am a text field",
+ placeholder: "Some placeholder text",
+ dataTestId: "textbox-uncontrolled",
+ uncontrolled: true,
+};
+
+export const BoldLabel = Template.bind({});
+BoldLabel.args = {
+ id: "textField1",
+ name: "textField1",
+ label: "I am a text field",
+ placeholder: "Some placeholder text",
+ dataTestId: "textbox-bold",
+ uncontrolled: true,
+ boldLabel: true,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/atoms/index.html b/main/coverage/lcov-report/components/atoms/index.html
new file mode 100644
index 0000000000..130417c1aa
--- /dev/null
+++ b/main/coverage/lcov-report/components/atoms/index.html
@@ -0,0 +1,566 @@
+
+
+
+
+
+ Code coverage report for components/atoms
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 95.83%
+ Statements
+ 184/192
+
+
+
+
+ 72.18%
+ Branches
+ 109/151
+
+
+
+
+ 86.79%
+ Functions
+ 46/53
+
+
+
+
+ 95.48%
+ Lines
+ 169/177
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ ActionButton.js
+
+
+
+ 100%
+ 15/15
+ 84%
+ 42/50
+ 100%
+ 3/3
+ 100%
+ 15/15
+
+
+
+ ActionButton.stories.js
+
+
+
+ 100%
+ 12/12
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 11/11
+
+
+
+ Alert.js
+
+
+
+ 100%
+ 2/2
+ 50%
+ 2/4
+ 100%
+ 1/1
+ 100%
+ 2/2
+
+
+
+ Alert.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ Banner.js
+
+
+
+ 100%
+ 3/3
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ Banner.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ Breadcrumb.js
+
+
+
+ 100%
+ 3/3
+ 100%
+ 2/2
+ 100%
+ 2/2
+ 100%
+ 3/3
+
+
+
+ Breadcrumb.stories.js
+
+
+
+ 100%
+ 5/5
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 4/4
+
+
+
+ CheckBox.js
+
+
+
+ 100%
+ 5/5
+ 71.42%
+ 10/14
+ 100%
+ 2/2
+ 100%
+ 5/5
+
+
+
+ CheckBox.stories.js
+
+
+
+ 90.9%
+ 10/11
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 90%
+ 9/10
+
+
+
+ DateModified.js
+
+
+
+ 100%
+ 9/9
+ 100%
+ 6/6
+ 100%
+ 1/1
+ 100%
+ 9/9
+
+
+
+ DateModified.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ ErrorLabel.js
+
+
+
+ 100%
+ 2/2
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 2/2
+
+
+
+ ErrorLabel.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ HTMList.js
+
+
+
+ 100%
+ 6/6
+ 100%
+ 3/3
+ 100%
+ 4/4
+ 100%
+ 6/6
+
+
+
+ MultiTextField.js
+
+
+
+ 100%
+ 5/5
+ 60%
+ 6/10
+ 100%
+ 2/2
+ 100%
+ 5/5
+
+
+
+ MultiTextField.stories.js
+
+
+
+ 88.88%
+ 8/9
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 87.5%
+ 7/8
+
+
+
+ ProjectInfo.js
+
+
+
+ 100%
+ 4/4
+ 75%
+ 3/4
+ 100%
+ 1/1
+ 100%
+ 4/4
+
+
+
+ ProjectInfo.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ RadioButton.js
+
+
+
+ 90%
+ 9/10
+ 83.33%
+ 10/12
+ 100%
+ 3/3
+ 90%
+ 9/10
+
+
+
+ RadioButton.stories.js
+
+
+
+ 100%
+ 12/12
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 11/11
+
+
+
+ RadioField.js
+
+
+
+ 83.33%
+ 5/6
+ 50%
+ 5/10
+ 66.66%
+ 2/3
+ 83.33%
+ 5/6
+
+
+
+ RadioField.stories.js
+
+
+
+ 88.88%
+ 8/9
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 87.5%
+ 7/8
+
+
+
+ SearchBar.js
+
+
+
+ 100%
+ 2/2
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 2/2
+
+
+
+ SearchBar.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ SelectField.js
+
+
+
+ 90.9%
+ 10/11
+ 50%
+ 9/18
+ 75%
+ 3/4
+ 90.9%
+ 10/11
+
+
+
+ SelectField.stories.js
+
+
+
+ 80%
+ 4/5
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 75%
+ 3/4
+
+
+
+ TableOfContents.js
+
+
+
+ 100%
+ 3/3
+ 100%
+ 0/0
+ 100%
+ 2/2
+ 100%
+ 3/3
+
+
+
+ TableOfContents.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ TextField.js
+
+
+
+ 100%
+ 6/6
+ 61.11%
+ 11/18
+ 100%
+ 2/2
+ 100%
+ 6/6
+
+
+
+ TextField.stories.js
+
+
+
+ 88.88%
+ 8/9
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 87.5%
+ 7/8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/index.html b/main/coverage/lcov-report/components/index.html
new file mode 100644
index 0000000000..9dc088a7ac
--- /dev/null
+++ b/main/coverage/lcov-report/components/index.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Code coverage report for components
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/0
+
+
+
+
+ 0%
+ Branches
+ 0/0
+
+
+
+
+ 0%
+ Functions
+ 0/0
+
+
+
+
+ 0%
+ Lines
+ 0/0
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ index.js
+
+
+
+ 0%
+ 0/0
+ 0%
+ 0/0
+ 0%
+ 0/0
+ 0%
+ 0/0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/index.js.html b/main/coverage/lcov-report/components/index.js.html
new file mode 100644
index 0000000000..5d42f1f21d
--- /dev/null
+++ b/main/coverage/lcov-report/components/index.js.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+ Code coverage report for components/index.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/0
+
+
+
+
+ 0%
+ Branches
+ 0/0
+
+
+
+
+ 0%
+ Functions
+ 0/0
+
+
+
+
+ 0%
+ Lines
+ 0/0
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+ import "prop-types";
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/CallToAction.js.html b/main/coverage/lcov-report/components/molecules/CallToAction.js.html
new file mode 100644
index 0000000000..fc42ced47e
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/CallToAction.js.html
@@ -0,0 +1,445 @@
+
+
+
+
+
+ Code coverage report for components/molecules/CallToAction.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 3/3
+
+
+
+
+ 62.5%
+ Branches
+ 5/8
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+
+
+
+
+
+
+
+
+3x
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { ActionButton } from "../atoms/ActionButton";
+import Link from "next/link";
+import { useTranslation } from "next-i18next";
+
+/**
+ * A section that will have a title, small description, and a link to some action we want to user to make
+ */
+export function CallToAction(props) {
+ const { t } = useTranslation("common");
+ return (
+ <div className="bg-[#ebf2fc] text-[#333] my-12">
+ <div className="layout-container pb-10 pt-10 text-sm md:text-base">
+ <div>
+ <div className="flex flex-col">
+ <div className="flex -my-2">
+ <img
+ className="mb-2 -ml-4"
+ src="/cta_icon.svg"
+ alt=""
+ width="60"
+ height="53"
+ />
+ <h3 className="lg:text-h1 ml-2">
+ <>{props.title}</>
+ </h3>
+ </div>
+ <aside className="pt-3 border-l-2 ml-2 lg:ml-3.5 border-custom-blue-blue xl:w-3/4">
+ {props.description ? (
+ <div className="pl-4">
+ <p className="text-base lg:text-p ml-6 pb-3 whitespace-pre-line">
+ {props.description}
+ </p>
+ <p className="text-base lg:text-p ml-6 pb-3 whitespace-pre-line">
+ {props.disclaimer}
+ </p>
+ </div>
+ ) : (
+ <div
+ className="text-base lg:text-p ml-6 pb-3 whitespace-pre-line"
+ dangerouslySetInnerHTML={{ __html: props.html }}
+ />
+ )}
+ <div className="ml-6">
+ <p className="flex mb-4 pl-4 text-center">
+ <ActionButton
+ id="become-a-participant-btn"
+ custom={`py-1.5 px-3 rounded text-white text-base lg:text-p font-display bg-custom-blue-dark hover:bg-custom-blue-light border border-custom-blue-darker active:bg-custom-blue-darker hover:ring-2 hover:ring-white`}
+ className=""
+ href={props.href}
+ text={props.hrefText}
+ expandIcon={
+ props.feedbackActive ? (
+ <img
+ className="px-2"
+ src="/feedback-icon-white.svg"
+ alt=""
+ />
+ ) : undefined
+ }
+ onClick={props.feedbackActive ? props.clicked : undefined}
+ ariaExpanded={props.ariaExpanded}
+ />
+ </p>
+ {props.showPrivacyLink && (
+ <Link href={t("privacyRedirect")} locale={props.lang}>
+ <a className="pl-4 text-base lg:text-p underline flex xl:inline lg:mr-10">
+ {t("privacyLinkText")}
+ </a>
+ </Link>
+ )}
+ </div>
+ </aside>
+ </div>
+ </div>
+ </div>
+ </div>
+ );
+}
+
+CallToAction.propTypes = {
+ /**
+ * title of the call to action
+ */
+ title: PropTypes.string.isRequired,
+
+ /**
+ * a short description about what the call to action is about - string format
+ */
+ description: PropTypes.string,
+ /**
+ * a short disclaimer after the description - ie. for a sign up banner an explanation that participation is voluntary
+ */
+ disclaimer: PropTypes.string,
+
+ /**
+ * a short description about what the call to action is about - html format
+ */
+ html: PropTypes.string,
+
+ /**
+ * the url to the action
+ */
+ href: PropTypes.string.isRequired,
+
+ /**
+ * url text to be displayed
+ */
+ hrefText: PropTypes.string.isRequired,
+
+ /**
+ * Aria expanded state
+ */
+ ariaExpanded: PropTypes.string,
+
+ /**
+ * Show or hide privacy link
+ */
+ showPrivacyLink: PropTypes.bool,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/CallToAction.stories.js.html b/main/coverage/lcov-report/components/molecules/CallToAction.stories.js.html
new file mode 100644
index 0000000000..bb909ec72d
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/CallToAction.stories.js.html
@@ -0,0 +1,160 @@
+
+
+
+
+
+ Code coverage report for components/molecules/CallToAction.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 6/6
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 5/5
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+
+
+
+
+
+
+
+3x
+
+1x
+1x
+1x
+
+
+
+
+
+
+1x
+
+
+
+
+
+ import React from "react";
+import { CallToAction } from "./CallToAction";
+
+export default {
+ title: "Components/Molecules/CallToAction",
+ component: CallToAction,
+};
+
+const Template = (args) => <CallToAction {...args} />;
+
+export const Primary = Template.bind({});
+export const Secondary = Template.bind({});
+Primary.args = {
+ title: "the title",
+ description: "a description that should be short and concise",
+ href: "#",
+ hrefText: "the link text",
+};
+
+Secondary.args = {
+ title: "the title",
+ html: "<h1>Title</h1><p>Text</p>",
+ href: "#",
+ hrefText: "the link text",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Card.js.html b/main/coverage/lcov-report/components/molecules/Card.js.html
new file mode 100644
index 0000000000..57fa747d8f
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Card.js.html
@@ -0,0 +1,547 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Card.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 5/5
+
+
+
+
+ 64.28%
+ Branches
+ 9/14
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 5/5
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+
+
+
+
+
+
+
+
+3x
+5x
+
+
+
+
+
+
+5x
+
+5x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import PropTypes from "prop-types";
+import Link from "next/link";
+import { ActionButton } from "../atoms/ActionButton";
+
+/**
+ * Displays an experiment card on the page
+ */
+
+export const Card = (props) => {
+ const tagColours = {
+ current_projects: "custom-green",
+ past_projects: "custom-gray",
+ upcoming_projects: "custom-blue",
+ new_update: "new-update",
+ };
+
+ const tagColour = tagColours[props.tag] ?? "custom-gray";
+
+ return (
+ <Link href={props.href}>
+ <div
+ className={`group card-shadow border border-custom-gray-border rounded-md pb-4 hover:cursor-pointer ${
+ "border-" + tagColour
+ }`}
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy}
+ >
+ {props.showImage ? (
+ <div className="h-80 flex justify-center">
+ <img
+ src={props.imgSrc}
+ alt={props.imgAlt}
+ className="object-contain rounded-md"
+ />
+ </div>
+ ) : (
+ ""
+ )}
+ <div className="flex">
+ <p className="block font-display text-lg text-custom-blue-projects-link font-bold underline underline-offset-4 my-1 py-2 px-6 items-center group-hover:no-underline group-hover:text-custom-blue-projects-link-hover">
+ {props.title}
+ {props.showIcon ? (
+ props.href.substring(0, 8) === "https://" ? (
+ <div className="h-4 w-4 ml-1 mt-1 relative">
+ <img src={props.icon} alt={props.iconAlt} />
+ </div>
+ ) : (
+ ""
+ )
+ ) : (
+ ""
+ )}
+ </p>
+ {props.showTag ? (
+ <span
+ className={`block w-max py-2 px-2 font-body font-bold border-l-4 mr-6 mt-auto mb-auto border-${tagColour}-darker bg-${tagColour}-lighter
+ `}
+ >
+ {props.tagLabel}
+ </span>
+ ) : (
+ ""
+ )}
+ </div>
+ {props.showDate ? (
+ <p className="ml-6 text-base text-custom-gray-date">
+ {"Posted: " + props.datePosted.substring(0, 10)}
+ </p>
+ ) : (
+ ""
+ )}
+ <p className="text-custom-gray-text mx-6 leading-30px text-lg">
+ {props.description}
+ </p>
+ {props.showButton ? (
+ <ActionButton
+ href={props.btnHref}
+ text={props.btnText}
+ id={props.btnId}
+ dataCy={props.btnId}
+ className="flex mt-6 mb-2 ml-4 rounded xxs:w-full xs:w-fit py-2 bg-[#EAEBED] text-custom-blue-text focus:ring-inset focus:ring-2 focus:ring-black hover:bg-details-button-hover-gray text-center border border-details-button-gray"
+ />
+ ) : (
+ ""
+ )}
+ </div>
+ </Link>
+ );
+};
+
+Card.propTypes = {
+ /**
+ * Title of the experiment card.
+ */
+ title: PropTypes.string.isRequired,
+
+ /**
+ * tag of the experiment card
+ */
+ tag: PropTypes.string,
+
+ /**
+ * Link of the card
+ */
+ href: PropTypes.string,
+
+ /**
+ * the label of the tag card
+ */
+ tagLabel: PropTypes.string,
+
+ /**
+ * Description of the experiment card.
+ */
+ description: PropTypes.string.isRequired,
+
+ /**
+ * the test id for unit tests
+ */
+ dataTestId: PropTypes.string,
+
+ /**
+ * the test id for cypress test
+ */
+ dataCy: PropTypes.string,
+
+ /**
+ * Boolean value to show or hide image
+ */
+ showImage: PropTypes.bool,
+
+ /**
+ * Boolean value to show or hide button
+ */
+ showButton: PropTypes.bool,
+
+ /**
+ * Boolean value to show or hide date
+ */
+ showDate: PropTypes.bool,
+
+ /**
+ * Boolean value to show or hide icon beside title
+ */
+ showIcon: PropTypes.bool,
+
+ /**
+ * Boolean value to show or hide tag
+ */
+ showTag: PropTypes.bool,
+};
+
+export default Card;
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Card.stories.js.html b/main/coverage/lcov-report/components/molecules/Card.stories.js.html
new file mode 100644
index 0000000000..3faa84bf2c
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Card.stories.js.html
@@ -0,0 +1,262 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Card.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 12/12
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 11/11
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+
+
+
+
+
+
+
+
+3x
+
+1x
+1x
+1x
+1x
+1x
+
+1x
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+ import React from "react";
+import Card from "./Card";
+import Image from "../../public/placeholder.png";
+
+export default {
+ title: "Components/Molecules/Card",
+ component: Card,
+};
+
+const Template = (args) => <Card {...args} />;
+
+export const Primary = Template.bind({});
+export const WithTag = Template.bind({});
+export const WithImage = Template.bind({});
+export const WithDate = Template.bind({});
+export const WithButton = Template.bind({});
+
+Primary.args = {
+ title: "Title",
+ href: "/some/link",
+ description: "Description",
+ imgSrc: "/placeholderImg",
+ imgAlt: "placeholderAlt",
+};
+
+WithTag.args = {
+ showTag: true,
+ title: "Title",
+ tag: "experiment_tag",
+ tagLabel: "Experiment tag",
+ description: "Description",
+ href: "/some/link",
+};
+
+WithImage.args = {
+ showImage: true,
+ title: "Title",
+ description: "Description",
+ href: "/somelink",
+ imgSrc: Image,
+ imgAlt: "placeholderAlt",
+};
+
+WithDate.args = {
+ showDate: true,
+ title: "Title",
+ href: "/somelink",
+ datePosted: "2022-01-01",
+ description: "Description",
+};
+
+WithButton.args = {
+ showButton: true,
+ title: "Title",
+ description: "Description",
+ href: "/somelink",
+ btnHref: "/somelink",
+ btnText: "Button text",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/CopyToClipboard.js.html b/main/coverage/lcov-report/components/molecules/CopyToClipboard.js.html
new file mode 100644
index 0000000000..e51b7bc2a9
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/CopyToClipboard.js.html
@@ -0,0 +1,493 @@
+
+
+
+
+
+ Code coverage report for components/molecules/CopyToClipboard.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 5/5
+
+
+
+
+ 50%
+ Branches
+ 1/2
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 5/5
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+
+
+
+
+4x
+
+
+
+
+4x
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2x
+
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import Clipboard from "react-copy-to-clipboard";
+import { ActionButton } from "../atoms/ActionButton";
+
+export function CopyToClipboard(props) {
+ const ifControlledProps = !props.uncontrolled
+ ? {
+ value: props.value,
+ }
+ : {};
+ return (
+ <div>
+ <input
+ className={`font-body w-full min-h-40px py-6px px-12px text-center ${props.textFieldStyle}`}
+ id={props.id}
+ aria-describedby={props.describedby}
+ name={props.name}
+ placeholder={props.placeholder}
+ type={props.type}
+ onChange={(e) => props.onChange(e.currentTarget.value)}
+ {...ifControlledProps}
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy}
+ aria-label={props.aria_label}
+ />
+ <Clipboard text={props.value}>
+ <ActionButton
+ id={props.buttonId}
+ className={`w-full ${props.buttonStyle}`}
+ onClick={props.onClick}
+ >
+ {props.buttonText}
+ </ActionButton>
+ </Clipboard>
+ </div>
+ );
+}
+
+CopyToClipboard.defaultProps = {
+ value: "",
+ type: "text",
+};
+
+CopyToClipboard.propTypes = {
+ /**
+ * additional css for the component
+ */
+ className: PropTypes.string,
+
+ /**
+ * the id of the text field
+ */
+ id: PropTypes.string.isRequired,
+
+ /**
+ * the name of the text field
+ */
+ name: PropTypes.string.isRequired,
+
+ /**
+ * value of the text field
+ */
+ value: PropTypes.string,
+
+ /**
+ * placeholder for the text field,
+ */
+ placeholder: PropTypes.string,
+
+ /**
+ * the type of the input
+ */
+ type: PropTypes.string,
+
+ /**
+ * call back for when the value of the text field changes
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * call back for when the link has been copied
+ */
+ onClick: PropTypes.func,
+
+ /**
+ * message to display if there is an error
+ */
+ error: PropTypes.string,
+
+ /**
+ * if label should be bold
+ */
+ boldLabel: PropTypes.bool,
+
+ /**
+ * boolean flag to specify that this input should be uncontrolled by react
+ */
+ uncontrolled: PropTypes.bool,
+
+ /**
+ * unit test selector
+ */
+ dataTestId: PropTypes.string,
+
+ /**
+ * cypress tests selector
+ */
+ dataCy: PropTypes.string,
+
+ /**
+ * aria-describedby label id
+ */
+ describedby: PropTypes.string,
+
+ /**
+ * aria-label
+ */
+ aria_label: PropTypes.string,
+
+ /**
+ * Text for ActionButton
+ */
+ buttonText: PropTypes.string,
+ /**
+ * id for ActionButton
+ */
+ buttonId: PropTypes.string,
+ /**
+ * Custom styling for the button
+ */
+ buttonStyle: PropTypes.string,
+ /**
+ * Custom styling for the text field
+ */
+ textFieldStyle: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/CopyToClipboard.stories.js.html b/main/coverage/lcov-report/components/molecules/CopyToClipboard.stories.js.html
new file mode 100644
index 0000000000..04b272ceb1
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/CopyToClipboard.stories.js.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+ Code coverage report for components/molecules/CopyToClipboard.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { CopyToClipboard } from "./CopyToClipboard";
+
+export default {
+ title: "Components/Molecules/CopyToClipboard",
+ component: CopyToClipboard,
+};
+
+const Template = (args) => <CopyToClipboard {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ buttonId: "clipboardButton",
+ buttonText: "Copy link",
+ buttonStyle: "ieButton",
+ id: "clipboard",
+ name: "theClipboard",
+ textFieldStyle: "ieTextField",
+ dataTestId: "clipboard-controlled",
+ aria_label: "clipboard",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Details.js.html b/main/coverage/lcov-report/components/molecules/Details.js.html
new file mode 100644
index 0000000000..286fab4404
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Details.js.html
@@ -0,0 +1,217 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Details.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 2/2
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 2/2
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+
+
+
+
+
+22x
+
+
+
+
+
+
+
+
+
+
+
+7x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * Drop Down Element
+ */
+export function Details(props) {
+ return (
+ <details data-testid={props.dataTestId} data-cy={props.dataCy}>
+ <summary className="max-w-450px w-full bg-details-button-gray focus:ring-inset focus:ring-2 focus:ring-black active:bg-details-button-active-gray hover:bg-details-button-hover-gray rounded py-12px px-5px font-body text-sm text-center text-canada-footer-font cursor-pointer border border-outset border-details-button-gray">
+ {props.label}
+ </summary>
+ <div className="max-w-450px w-full min-h-200px bg-gray-light-200 mt-1 p-15px border border-details-border-gray rounded ring-inset ring-1 ring-gray-light-200">
+ {props.children}
+ </div>
+ </details>
+ );
+}
+
+Details.propTypes = {
+ /**
+ * id for the details element
+ */
+ id: PropTypes.string,
+
+ /**
+ * the label of the details button
+ */
+ label: PropTypes.string.isRequired,
+
+ /**
+ * the content for the details element
+ */
+ children: PropTypes.node,
+
+ /**
+ * unit test selector
+ */
+ dataTestId: PropTypes.string,
+
+ /**
+ * cypress selector
+ */
+ dataCy: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Details.stories.js.html b/main/coverage/lcov-report/components/molecules/Details.stories.js.html
new file mode 100644
index 0000000000..2156d6c7ce
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Details.stories.js.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Details.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+
+
+
+
+
+
+
+2x
+
+1x
+1x
+
+
+
+
+
+ import React from "react";
+import { Details } from "./Details";
+
+export default {
+ title: "Components/Molecules/Details",
+ component: Details,
+};
+
+const Template = (args) => <Details {...args} />;
+
+export const Primary = Template.bind({});
+Primary.args = {
+ id: "unopenedDetails",
+ label: "A Drop Down",
+ children: "Content",
+ dataTestId: "details",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/ErrorBox.js.html b/main/coverage/lcov-report/components/molecules/ErrorBox.js.html
new file mode 100644
index 0000000000..5d8b0ed070
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/ErrorBox.js.html
@@ -0,0 +1,292 @@
+
+
+
+
+
+ Code coverage report for components/molecules/ErrorBox.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 5/5
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 3/3
+
+
+
+
+ 100%
+ Lines
+ 5/5
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+9x
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { ActionButton } from "../atoms/ActionButton";
+
+/**
+ * error box to be used to summarise error in forms
+ */
+export function ErrorBox(props) {
+ return (
+ <div
+ id="error-box"
+ className="relative border-l-4 border-error-border-red min-h-40px my-10"
+ data-cy="error-box"
+ role="alert"
+ aria-atomic="true"
+ >
+ <span className="icon-error absolute top-1 -left-2.5 bg-white" />
+ <p className="font-bold ml-4 text-p mb-2 lg:text-h4">{props.text}</p>
+ <ul
+ className="w-full list-disc list-outside leading-loose pl-8 text-sm lg:text-p"
+ data-cy="error-box-items"
+ id="error-box-items"
+ >
+ {props.errors.map(({ id, text }) => {
+ return (
+ <li key={`${id}-${text}`} className="mb-2">
+ <ActionButton
+ id={`${id}-${text}`}
+ custom="font-body hover:text-canada-footer-hover-font-blue text-canada-footer-font underline inline-block text-left"
+ onClick={() => props.onClick(id)}
+ dataCy={`error-item-${id}`}
+ className="" // This is to avoid all the "undefined" class names applied.
+ >
+ {text}
+ </ActionButton>
+ </li>
+ );
+ })}
+ </ul>
+ </div>
+ );
+}
+
+ErrorBox.defaultProps = {
+ errors: [],
+};
+
+ErrorBox.propTypes = {
+ /**
+ * An array of error messages to display. Each object contains the id of the element which
+ * when the text is clicked the browser will scroll too
+ */
+ text: PropTypes.string.isRequired,
+ errors: PropTypes.arrayOf(
+ PropTypes.shape({
+ /**
+ * the id of the element on the page to scroll too
+ */
+ id: PropTypes.string.isRequired,
+ /**
+ * the text to display for the error component
+ */
+ text: PropTypes.string.isRequired,
+ })
+ ),
+ /**
+ * onClick callback
+ */
+ onClick: PropTypes.func,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/ErrorBox.stories.js.html b/main/coverage/lcov-report/components/molecules/ErrorBox.stories.js.html
new file mode 100644
index 0000000000..8b0786f0c7
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/ErrorBox.stories.js.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+ Code coverage report for components/molecules/ErrorBox.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 80%
+ Statements
+ 4/5
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 75%
+ Lines
+ 3/4
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+1x
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { ErrorBox } from "./ErrorBox";
+
+export default {
+ title: "Components/Molecules/ErrorBox",
+ component: ErrorBox,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex items-center flex-col">
+ <div className="w-96">
+ <Story />
+ </div>
+ <div id="someid" className="mt-80">
+ Some element with an id
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <ErrorBox {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ text: "The form could not be submitted because three errors were found",
+ errors: [
+ {
+ id: "someid",
+ text: "Some Error 1",
+ },
+ {
+ id: "someid",
+ text: "Some Error 2",
+ },
+ {
+ id: "someid",
+ text: "Some Error 3",
+ },
+ ],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/FeedbackWidget.js.html b/main/coverage/lcov-report/components/molecules/FeedbackWidget.js.html
new file mode 100644
index 0000000000..657e3f619b
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/FeedbackWidget.js.html
@@ -0,0 +1,1006 @@
+
+
+
+
+
+ Code coverage report for components/molecules/FeedbackWidget.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 66.66%
+ Statements
+ 34/51
+
+
+
+
+ 40.9%
+ Branches
+ 9/22
+
+
+
+
+ 50%
+ Functions
+ 5/10
+
+
+
+
+ 66.66%
+ Lines
+ 34/51
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+
+
+
+
+
+
+
+
+
+
+
+
+
+5x
+
+
+
+
+
+10x
+10x
+10x
+10x
+10x
+10x
+10x
+
+10x
+
+10x
+7x
+2x
+2x
+
+
+
+
+10x
+
+
+
+1x
+1x
+
+
+
+
+1x
+1x
+
+
+1x
+
+
+
+
+
+
+
+10x
+10x
+10x
+
+
+
+
+
+
+
+10x
+
+1x
+
+1x
+
+1x
+
+1x
+
+1x
+
+
+
+
+
+
+1x
+
+
+
+1x
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+10x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5x
+
+
+
+
+
+
+
+ import React, { useEffect, useState, useRef } from "react";
+import PropTypes from "prop-types";
+import { useTranslation } from "next-i18next";
+import { ActionButton } from "../atoms/ActionButton";
+import Joi from "joi";
+import { ErrorLabel } from "../atoms/ErrorLabel";
+import FocusTrap from "focus-trap-react";
+import lockScroll from "react-lock-scroll";
+import { stripFeedback } from "../../lib/utils/stripFeedback";
+
+/**
+ * Displays the PhaseBanner on the page
+ */
+
+export const FeedbackWidget = ({
+ showFeedback,
+ toggleForm,
+ projectName,
+ path,
+}) => {
+ const [submitted, setSubmitted] = useState(false);
+ const [feedbackClose, setFeedbackClose] = useState(false);
+ const { t } = useTranslation("common");
+ const [response, setResponse] = useState(t("thankYouFeedback"));
+ const email = process.env.NEXT_PUBLIC_NOTIFY_REPORT_A_PROBLEM_EMAIL;
+ const [count, setCount] = useState(2000);
+ var maxLength = 2000;
+
+ lockScroll(showFeedback);
+
+ useEffect(() => {
+ if (!showFeedback) {
+ setFeedbackError("");
+ setFeedback("");
+ }
+ }, [showFeedback]);
+
+ // Joi form validation schema.
+ const formSchema = Joi.object({
+ feedback: Joi.string()
+ .required()
+ .error((errors) => {
+ errors.forEach((error) => {
+ switch (error.code) {
+ case "any.required":
+ error.message = t("feedbackRequired");
+ break;
+ default:
+ error.message = t("feedbackRequired");
+ break;
+ }
+ });
+ return errors;
+ }),
+ });
+
+ function setFocusAfterSubmit( ) {
+ document.getElementById("feedbackButton").focus();
+ }
+
+ const [feedback, setFeedback] = useState("");
+ const [feedbackError, setFeedbackError] = useState("");
+ const feedbackObject = useRef({
+ feedbackToSend: {
+ project: "",
+ pageUrl: "",
+ feedback: "",
+ },
+ });
+
+ let onSubmitHandler = async (e) => {
+ // prevent default behaviour of form
+ e.preventDefault();
+ // clear out error values
+ await setFeedbackError("");
+ // compile feedback into object to be validated
+ const formData = { feedback };
+ //Strip personal identifier information from feedback
+ var cleanedFeedback = stripFeedback(formData.feedback);
+ // set values in feedback object
+ feedbackObject.current.feedbackToSend = {
+ project: projectName,
+ pageUrl: path,
+ feedback: cleanedFeedback,
+ };
+
+ // validate data using Joi schema
+ const { error } = formSchema.validate(formData, {
+ abortEarly: false,
+ allowUnknown: true,
+ });
+ const valid = error === undefined;
+
+ I if (valid) {
+ //Submit data to the api
+ const response = await fetch("/api/feedback", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(feedbackObject.current.feedbackToSend),
+ });
+
+ // if the response is good, show thank you message
+ if (response.status === 201 || response.status === 200) {
+ await setResponse(t("thankYouFeedback"));
+ setFeedback("");
+ setCount(2000);
+ } else {
+ await setResponse(t("sorryFeedback"));
+ }
+
+ setSubmitted(true);
+ setFeedbackClose(false);
+ setFocusAfterSubmit();
+ } else {
+ setFeedbackError(error.message);
+ }
+ };
+
+ return (
+ <>
+ {showFeedback ? (
+ <FocusTrap
+ focusTrapOptions={{
+ initialFocus: false,
+ fallbackFocus: "#feedbackClose",
+ }}
+ >
+ <div
+ className="fixed top-0 left-0 w-screen h-full flex justify-center items-center"
+ style={{ background: "rgba(71, 71, 71, 0.8)" }}
+ >
+ <div
+ className="w-auto mx-12 md:mx-24 bg-white shadow-lg border-black border-4"
+ data-testid="feedbackDropdown"
+ >
+ {submitted ? (
+ <div role="status" className="w-full">
+ {!feedbackClose ? (
+ <div
+ className={`${
+ response === t("thankYouFeedback")
+ ? "bg-custom-green-darker font-bold"
+ : "bg-circle-color"
+ } text-white flex py-2`}
+ >
+ <div className="layout-container flex">
+ <span className="flex flex-col text-xs lg:text-sm font-body mt-2 mb-4 w-full">
+ {response}
+ {response === t("sorryFeedback") ? (
+ <ActionButton
+ id="link-mail"
+ ariaLabel="Service Canada email"
+ dataCy="link-mail"
+ dataTestId="link-mail"
+ href={`mailto:${email}`}
+ text={email}
+ custom="w-max text-xs lg:text-sm underline outline-none focus:outline-white-solid"
+ />
+ ) : (
+ ""
+ )}
+ </span>
+ <div className="w-1/4 flex justify-end">
+ <ActionButton
+ id="feedbackClose"
+ ariaLabel="Close the expanded feedback section"
+ dataCy="closeButton"
+ dataTestId="closeButton"
+ custom="font-body text-gray-dark-100 flex -py-1 mt-2.5 lg:mt-0 outline-none focus:outline-white-solid items-center"
+ imageSource="/close-x.svg"
+ imageAlt="Close button"
+ imageSpanClass="text-xs text-white leading-4 lg:text-sm underline ml-1 lg:ml-2 lg:leading-10"
+ imageSpanText={t("close")}
+ onClick={() => setFeedbackClose(true)}
+ tabindex="-1"
+ />
+ </div>
+ </div>
+ </div>
+ ) : (
+ ""
+ )}
+ </div>
+ ) : (
+ ""
+ )}
+ <div className="layout-container text-gray-dark-100 pb-4">
+ <div className="pt-4">
+ <ActionButton
+ id="feedbackClose"
+ ariaLabel="Close the expanded feedback section"
+ dataCy="closeButton"
+ dataTestId="closeButton"
+ custom="flex float-right font-body text-gray-dark-100 flex mt-2.5 lg:mt-0 outline-none focus:outline-white-solid items-center"
+ imageSource="/close-x.svg"
+ imageAlt="Close button"
+ imageSpanClass="text-xs leading-4 lg:text-sm underline ml-2 lg:leading-10"
+ imageSpanText={t("close")}
+ onClick={() => {
+ toggleForm();
+ setCount(2000);
+ }}
+ />
+ </div>
+ <h2 className="text-h4 lg:text-h3 lg:text-sm font-display pt-6 mb-4 w-48 sm:w-auto">
+ {t("improveService")}
+ </h2>
+ <ul className="list-outside list-disc px-6 pb-3">
+ <li className="text-xs lg:text-sm pt-2 pb-1 font-body">
+ <strong>{t("reportAProblemNoReply")}</strong>
+ </li>
+ <li className="text-xs lg:text-sm font-body mb-0">
+ <strong>{t("confidential")}</strong>
+ <ActionButton
+ ariaLabel="Privacy page link"
+ id="link-privacyPage"
+ dataCy="link-privacyPage"
+ dataTestId="link-privacyPage"
+ href={t("privacyLink")}
+ text={t("reportAProblemPrivacyStatement")}
+ custom="text-xs lg:text-sm underline ml-2 outline-none focus:outline-white-solid"
+ />
+ </li>
+ </ul>
+ <form
+ data-gc-analytics-formname="ESDC|EDSC:ServiceCanadaLabsFeedback-Form"
+ data-gc-analytics-collect='[{"value":"input,select","emptyField":"N/A"}]'
+ className="w-full"
+ action="#"
+ onSubmit={onSubmitHandler}
+ aria-live="polite"
+ >
+ <label
+ htmlFor="feedbackTextArea"
+ className="text-xs lg:text-sm font-body"
+ >
+ <b
+ className="text-error-border-red mr-1"
+ aria-hidden="true"
+ >
+ *
+ </b>
+ <b>{t("doBetter")}</b>
+ </label>
+ <div id="feedbackInfo">
+ <p className="text-xs lg:text-sm my-2">
+ {t("doNotInclude")}
+ </p>
+ <p className="text-xs lg:text-sm mb-1 mt-4">
+ {count}
+ {t("maximum2000")}
+ </p>
+ </div>
+ {feedbackError ? (
+ <ErrorLabel
+ message={feedbackError}
+ className="text-black mt-4"
+ />
+ ) : undefined}
+ <textarea
+ aria-describedby="feedbackInfo"
+ id="feedbackTextArea"
+ name="feedbackTextArea"
+ maxLength="2000"
+ rows="5"
+ className={
+ "text-input font-body w-full min-h-40px shadow-sm text-form-input-gray border-2 border-gray-dark-100 my-2 py-6px px-12px rounded"
+ }
+ value={feedback}
+ onChange={(e ) => setFeedback(e.currentTarget.value)}
+ onInput={(e ) =>
+ setCount(maxLength - e.currentTarget.value.length)
+ }
+ aria-required="true"
+ />
+ <ActionButton
+ id="feedback-submit"
+ ariaLabel="Submit feedback"
+ custom="outline-none focus:outline-black-solid rounded block w-full lg:w-auto lg:px-12 text-xs lg:text-sm py-2 mt-2 font-bold bg-custom-blue-blue text-white border border-custom-blue-blue active:bg-custom-blue-dark hover:bg-custom-blue-light flex justify-center"
+ type="submit"
+ dataCy="feedback-submit"
+ dataTestId="feedback-submit"
+ text={t("reportAProblemSubmit")}
+ analyticsTracking
+ />
+ </form>
+ </div>
+ </div>
+ </div>
+ </FocusTrap>
+ ) : (
+ ""
+ )}
+ </>
+ );
+};
+
+FeedbackWidget.propTypes = {
+ /**
+ * This is for showing the feedback component
+ */
+ feedbackActive: PropTypes.bool,
+};
+
+export default FeedbackWidget;
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/FeedbackWidget.stories.js.html b/main/coverage/lcov-report/components/molecules/FeedbackWidget.stories.js.html
new file mode 100644
index 0000000000..2755d6f12b
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/FeedbackWidget.stories.js.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+ Code coverage report for components/molecules/FeedbackWidget.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
+
+
+
+
+
+
+4x
+
+1x
+
+1x
+
+
+ import React from "react";
+import FeedbackWidget from "./FeedbackWidget";
+
+export default {
+ title: "Components/Molecules/FeedbackWidget",
+ component: FeedbackWidget,
+};
+
+const Template = (args) => <FeedbackWidget {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ showFeedback: true,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Filter.js.html b/main/coverage/lcov-report/components/molecules/Filter.js.html
new file mode 100644
index 0000000000..c453485901
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Filter.js.html
@@ -0,0 +1,298 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Filter.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 3/3
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+9x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { RadioButton } from "../atoms/RadioButton";
+
+/**
+ * Filter Experiments component
+ */
+export function Filter(props) {
+ return (
+ <form
+ className="my-12"
+ data-testid={props.dataTestId}
+ data-cy={props.dataCy}
+ >
+ <fieldset>
+ <legend className="md:float-left font-body pb-3 pt-2 pr-4 text-sm md:text-base">
+ {props.label}
+ </legend>
+ <div className={"flex"}>
+ {props.options.map(({ id, label, checked }, index) => (
+ <RadioButton
+ key={id}
+ label={label}
+ value={id}
+ name={id}
+ id={id}
+ dataTestId={id}
+ dataCy={id}
+ onChange={props.onChange}
+ checked={checked}
+ roundedFront={index === 0}
+ roundedBack={index === props.options.length - 1}
+ />
+ ))}
+ </div>
+ </fieldset>
+ </form>
+ );
+}
+
+Filter.propTypes = {
+ /**
+ * options for the filter
+ */
+ options: PropTypes.arrayOf(
+ PropTypes.shape({
+ id: PropTypes.string.isRequired,
+ label: PropTypes.string.isRequired,
+ checked: PropTypes.bool,
+ })
+ ).isRequired,
+
+ /**
+ * filter label
+ */
+ label: PropTypes.string,
+
+ /**
+ * Action to do on input change
+ */
+ onChange: PropTypes.func,
+
+ /**
+ * Test id for unit tests
+ */
+ dataTestId: PropTypes.string,
+
+ /**
+ * Test id for cypress test
+ */
+ dataCy: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Filter.stories.js.html b/main/coverage/lcov-report/components/molecules/Filter.stories.js.html
new file mode 100644
index 0000000000..9e4fb16108
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Filter.stories.js.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Filter.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+
+
+
+
+
+
+
+3x
+
+1x
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { Filter } from "./Filter";
+
+export default {
+ title: "Components/Molecules/Filter",
+ component: Filter,
+};
+
+const Template = (args) => <Filter {...args} />;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ label: "Filter By",
+ options: [
+ {
+ id: "all",
+ label: "All",
+ checked: false,
+ },
+ {
+ id: "coming_soon",
+ label: "Coming Soon",
+ checked: false,
+ },
+ {
+ id: "alpha",
+ label: "Alpha",
+ checked: true,
+ },
+ ],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/List.js.html b/main/coverage/lcov-report/components/molecules/List.js.html
new file mode 100644
index 0000000000..0321bbb37f
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/List.js.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+ Code coverage report for components/molecules/List.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 7/7
+
+
+
+
+ 100%
+ Branches
+ 2/2
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 6/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+
+
+
+
+
+2x
+2x
+
+
+
+8x
+
+
+8x
+8x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * List component
+ */
+export function List(props) {
+ let opacity = 40;
+ return (
+ <ul className={props.className}>
+ {props.items.map((item, key) => {
+ let className =
+ "bg-opacity-" +
+ opacity +
+ " bg-circle-color text-shadow-about-circles flex-shrink-0 mr-4 mb-2 rounded-full h-36 w-36 flex items-center justify-center text-white font-bold font-display text-h1xxl relative md:left-0 -left-14";
+ if (opacity < 100) opacity += 20;
+ return (
+ <li key={key} className="flex">
+ <span className={className} role="presentation">
+ {key + 1}
+ </span>
+ <p className="text-sm md:text-p my-auto leading-normal font-body">
+ {item}
+ </p>
+ </li>
+ );
+ })}
+ </ul>
+ );
+}
+
+List.propTypes = {
+ /**
+ * List items
+ */
+ items: PropTypes.arrayOf(String).isRequired,
+
+ /**
+ * Option for styling component
+ */
+ className: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/List.stories.js.html b/main/coverage/lcov-report/components/molecules/List.stories.js.html
new file mode 100644
index 0000000000..b9c956df13
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/List.stories.js.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+ Code coverage report for components/molecules/List.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+ import React from "react";
+import { List } from "./List";
+
+export default {
+ title: "Components/Molecules/List",
+ component: List,
+};
+
+const Template = (args) => <List {...args}></List>;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ items: ["Item 1", "Item 2", "Item 3", "Item 4"],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Menu.js.html b/main/coverage/lcov-report/components/molecules/Menu.js.html
new file mode 100644
index 0000000000..fdeba5bfb9
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Menu.js.html
@@ -0,0 +1,448 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Menu.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 90%
+ Statements
+ 9/10
+
+
+
+
+ 60%
+ Branches
+ 6/10
+
+
+
+
+ 75%
+ Functions
+ 3/4
+
+
+
+
+ 90%
+ Lines
+ 9/10
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+
+
+
+
+
+
+
+
+
+4x
+4x
+4x
+
+4x
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+12x
+12x
+
+12x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useState } from "react";
+
+/**
+ * Menu component
+ */
+export function Menu(props) {
+ //Router
+ const { asPath } = useRouter();
+ const router = useRouter();
+ const [showMenu, setShowMenu] = useState(false);
+
+ return (
+ <nav
+ title="Menu"
+ className="layout-container lg:justify-end lg:flex"
+ data-cy="menu"
+ role="navigation"
+ aria-labelledby="mainSiteNav"
+ >
+ <h3 className="sr-only" id="mainSiteNav">
+ Menu
+ </h3>
+ <div className="flex justify-between">
+ <button
+ id="menuButton"
+ onClick={() => setShowMenu(!showMenu)}
+ className="text-h4 text-canada-footer-font focus:outline-none focus:ring-2 focus:ring-black mb-4 py-1"
+ aria-haspopup="true"
+ aria-expanded={showMenu}
+ aria-controls="menuDropdown"
+ data-testid="menuButton"
+ >
+ <span className="inline-block align-middle icon-menu" />
+ <span className="inline-block align-middle pl-3 font-body text-p leading-none">
+ {props.menuButtonTitle}
+ </span>
+ </button>
+
+ <button
+ id="menuClose"
+ onClick={() => setShowMenu(!showMenu)}
+ className={`${
+ showMenu ? "" : "hidden"
+ } sr-only mb-4 text-canada-footer-font outline-none focus:not-sr-only focus:outline-black-solid lg:invisible`}
+ aria-expanded={showMenu}
+ aria-controls="menuDropdown"
+ aria-label="Close the expanded menu options"
+ data-testid="menuCloseButton"
+ >
+ <img src="/close-x-menu.svg" alt="Close button"></img>
+ </button>
+ </div>
+
+ <ul
+ id="menuDropdown"
+ className={`menuDropdown mt-2 ${showMenu ? "active" : ""}`}
+ role="menu"
+ aria-expanded={showMenu}
+ >
+ {props.items.map((item, key) => {
+ const exactURL = asPath === item.link; // it's exactly this url
+ const includesURL = asPath.includes(item.link); // it's a child of this url (eg, "/projects/app" includes "/projects")
+
+ return (
+ <li
+ key={key}
+ className={`py-3 lg:py-0 cursor-pointer text-custom-blue-projects-link list-none -my-2 -ml-2`}
+ role="menuitem"
+ aria-current={exactURL ? "page" : null}
+ >
+ <Link
+ href={item.link}
+ className={`font-body text-base ${
+ includesURL
+ ? router.pathname !== "/signup/privacy"
+ ? "activePage"
+ : "menuLink underline"
+ : "menuLink underline"
+ }`}
+ >
+ {item.text}
+ </Link>
+ </li>
+ );
+ })}
+ </ul>
+ </nav>
+ );
+}
+
+Menu.propTypes = {
+ /**
+ * Menu title for small screens
+ */
+ menuButtonTitle: PropTypes.string.isRequired,
+
+ /**
+ * text for sign up button
+ */
+ signUpText: PropTypes.string.isRequired,
+
+ /**
+ * Array of Items for the menu
+ */
+ items: PropTypes.arrayOf(
+ PropTypes.shape({
+ /**
+ * Text for the menu
+ */
+ text: PropTypes.string,
+
+ /**
+ * Link for the menu
+ */
+ link: PropTypes.string,
+ })
+ ).isRequired,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Menu.stories.js.html b/main/coverage/lcov-report/components/molecules/Menu.stories.js.html
new file mode 100644
index 0000000000..673a9b2c95
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Menu.stories.js.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Menu.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+
+
+
+
+
+
+
+3x
+
+1x
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { Menu } from "./Menu";
+
+export default {
+ title: "Components/Molecules/Menu",
+ component: Menu,
+};
+
+const Template = (args) => <Menu {...args}></Menu>;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ menuButtonTitle: "Menu",
+ signUpText: "Sign up",
+ items: [
+ {
+ link: "#",
+ text: "Link1",
+ },
+ {
+ link: "#",
+ text: "Link2",
+ },
+ {
+ link: "#",
+ text: "Link3",
+ },
+ ],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/OptionalListField.js.html b/main/coverage/lcov-report/components/molecules/OptionalListField.js.html
new file mode 100644
index 0000000000..c576523b45
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/OptionalListField.js.html
@@ -0,0 +1,541 @@
+
+
+
+
+
+ Code coverage report for components/molecules/OptionalListField.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 75%
+ Statements
+ 12/16
+
+
+
+
+ 73.68%
+ Branches
+ 14/19
+
+
+
+
+ 100%
+ Functions
+ 3/3
+
+
+
+
+ 75%
+ Lines
+ 12/16
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+
+
+
+
+
+
+
+
+5x
+5x
+1x
+
+
+1x
+
+
+1x
+
+
+
+5x
+5x
+
+
+5x
+5x
+
+
+
+5x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import { useState } from "react";
+import { CheckBox } from "../atoms/CheckBox";
+import { RadioField } from "../atoms/RadioField";
+import PropTypes from "prop-types";
+
+/**
+ * An optional list field (radio, checkbox) that is enabled by a checkbox
+ */
+export function OptionalListField(props) {
+ let [showListField, setShowListField] = useState(props.checked || false);
+ let handleCheckChange = (wasChecked, name, value) => {
+ I if (wasChecked) {
+ setShowListField(false);
+ } else {
+ setShowListField(true);
+ }
+
+ I if (props.onControlChange) {
+ props.onControlChange(wasChecked, name, value);
+ }
+ };
+ let sortedChildren = [...props.children].sort((a, b) => {
+ I if (a.props.label < b.props.label) {
+ return -1;
+ }
+ E if (b.props.label < a.props.label) {
+ return 1;
+ }
+ return 0;
+ });
+ return (
+ <>
+ {props.controlType === "checkbox" ? (
+ <CheckBox
+ label={props.controlLabel}
+ id={props.controlId}
+ name={props.controlName}
+ checked={props.checked}
+ uncontrolled={props.uncontrolled}
+ value={props.controlValue}
+ onChange={handleCheckChange}
+ dataTestId={props.controlDataTestId}
+ required={props.controlRequired}
+ dataCy={props.controlDataCy}
+ />
+ ) : (
+ <RadioField
+ label={props.controlLabel}
+ id={props.controlId}
+ name={props.controlName}
+ checked={props.checked}
+ uncontrolled={props.uncontrolled}
+ value={props.controlValue}
+ onChange={handleCheckChange}
+ required={props.controlRequired}
+ dataTestId={props.controlDataTestId}
+ dataCy={props.controlDataCy}
+ />
+ )}
+ {(props.uncontrolled && showListField) || props.checked ? (
+ <fieldset className="mb-10px">
+ <legend className="block leading-tight text-sm font-body mb-5px font-bold">
+ {props.listFieldRequired ? (
+ <b className="text-error-border-red" aria-hidden="true">
+ *
+ </b>
+ ) : (
+ ""
+ )}
+ {props.listLabel}
+ </legend>
+ <div className="gap-4">{sortedChildren}</div>
+ </fieldset>
+ ) : undefined}
+ </>
+ );
+}
+
+OptionalListField.defaultProps = {
+ controlType: "checkbox",
+};
+
+OptionalListField.propTypes = {
+ /**
+ * the type of field that should be used
+ */
+ controlType: PropTypes.oneOf(["checkbox", "radiofield"]),
+ /**
+ * the id for the checkbox
+ */
+ controlId: PropTypes.string.isRequired,
+
+ /**
+ * the name for the checkbox
+ */
+ controlName: PropTypes.string.isRequired,
+
+ /**
+ * the label for the checkbox
+ */
+ controlLabel: PropTypes.string.isRequired,
+
+ /**
+ * the value for the checkbox
+ */
+ controlValue: PropTypes.string,
+
+ /**
+ * whether or not the checkbox is checked
+ */
+ checked: PropTypes.bool,
+
+ /**
+ * boolean flag to denote whether or not the inputs are controlled
+ */
+ uncontrolled: PropTypes.bool,
+
+ /**
+ * whether or not the control is required
+ */
+ controlRequired: PropTypes.bool,
+
+ /**
+ * the test id for the checkbox to select in unit tests
+ */
+ controlDataTestId: PropTypes.string,
+
+ /**
+ * the cypress selector for the checkbox
+ */
+ controlDataCy: PropTypes.string,
+
+ /**
+ * callback when the checkbox changes
+ */
+ onControlChange: PropTypes.func,
+
+ /**
+ * whether or not the list field is required
+ */
+ listFieldRequired: PropTypes.bool,
+
+ /**
+ * list items to display
+ */
+ children: PropTypes.arrayOf(PropTypes.element),
+
+ /**
+ * legend text for the list items
+ */
+ listLabel: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/OptionalListField.stories.js.html b/main/coverage/lcov-report/components/molecules/OptionalListField.stories.js.html
new file mode 100644
index 0000000000..4cba6db167
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/OptionalListField.stories.js.html
@@ -0,0 +1,562 @@
+
+
+
+
+
+ Code coverage report for components/molecules/OptionalListField.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 92.3%
+ Statements
+ 12/13
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 91.66%
+ Lines
+ 11/12
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { OptionalListField } from "./OptionalListField";
+import { CheckBox } from "../atoms/CheckBox";
+import { RadioField } from "../atoms/RadioField";
+
+export default {
+ title: "Components/Molecules/OptionalListField",
+ component: OptionalListField,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex justify-center">
+ <div className="w-96">
+ <Story />
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <OptionalListField {...args} />;
+
+export const UnOpened = Template.bind({});
+UnOpened.args = {
+ controlId: "nutella-check-1",
+ controlName: "nutellaCheckOne",
+ controlLabel: "Do you not like Nutella ?",
+ controlValue: "unopened",
+ controlDataTestId: "unopened-check-1",
+ listLabel: "Please check all the reasons why you are wrong.",
+ children: [
+ <CheckBox
+ key="key1"
+ label="I don't like fake chocolate spread"
+ name="reasons"
+ value="dislike"
+ id="reasons-dislike"
+ />,
+ <CheckBox
+ key="key2"
+ label="I make poor choices"
+ name="reasons"
+ value="poor-choice"
+ id="reasons-poor-choice"
+ />,
+ ],
+};
+
+export const Opened_Checkboxes = Template.bind({});
+Opened_Checkboxes.args = {
+ controlId: "nutella-check-1",
+ controlName: "nutellaCheckOne",
+ controlLabel: "Do you not like Nutella ?",
+ checked: true,
+ controlDataTestId: "opened-check-1",
+ listLabel: "Please check all the reasons why you are wrong.",
+ children: [
+ <CheckBox
+ key="key1"
+ label="I don't like fake chocolate spread"
+ name="reasons"
+ value="dislike"
+ id="reasons-dislike"
+ dataTestId="reasons-dislike"
+ />,
+ <CheckBox
+ key="key2"
+ label="I make poor choices"
+ name="reasons"
+ value="poor-choice"
+ id="reasons-poor-choice"
+ dataTestId="reasons-poor-choice"
+ />,
+ ],
+};
+
+export const Opened_Radiofields = Template.bind({});
+Opened_Radiofields.args = {
+ controlId: "nutella-check-1",
+ controlName: "nutellaCheckOne",
+ controlLabel: "Do you not like Nutella ?",
+ checked: true,
+ controlDataTestId: "opened-check-1",
+ listLabel: "Please check all the reasons why you are wrong.",
+ children: [
+ <RadioField
+ key="key1"
+ label="I don't like fake chocolate spread"
+ name="reasons"
+ value="dislike"
+ id="reasons-dislike"
+ dataTestId="reasons-dislike"
+ />,
+ <RadioField
+ key="key2"
+ label="I make poor choices"
+ name="reasons"
+ value="poor-choice"
+ id="reasons-poor-choice"
+ dataTestId="reasons-poor-choice"
+ />,
+ ],
+};
+
+export const Radio = Template.bind({});
+Radio.args = {
+ controlType: "radiofield",
+ controlId: "nutella-check-1",
+ controlName: "nutellaCheckOne",
+ controlLabel: "Do you not like Nutella ?",
+ checked: true,
+ controlDataTestId: "radio-check-1",
+ listLabel: "Please check all the reasons why you are wrong.",
+ children: [
+ <CheckBox
+ key="key1"
+ label="I don't like fake chocolate spread"
+ name="reasons"
+ value="dislike"
+ id="reasons-dislike"
+ dataTestId="reasons-dislike"
+ />,
+ <CheckBox
+ key="key2"
+ label="I make poor choices"
+ name="reasons"
+ value="poor-choice"
+ id="reasons-poor-choice"
+ dataTestId="reasons-poor-choice"
+ />,
+ ],
+};
+
+export const UnControlled = Template.bind({});
+UnControlled.args = {
+ controlId: "nutella-check-1",
+ controlName: "nutellaCheckOne",
+ controlLabel: "Do you not like Nutella ?",
+ uncontrolled: true,
+ controlDataTestId: "uncontrolled-check-1",
+ listLabel: "Please check all the reasons why you are wrong.",
+ children: [
+ <CheckBox
+ key="key1"
+ label="I don't like fake chocolate spread"
+ name="reasons"
+ value="dislike"
+ id="reasons-dislike"
+ dataTestId="reasons-dislike"
+ />,
+ <CheckBox
+ key="key2"
+ label="I make poor choices"
+ name="reasons"
+ value="poor-choice"
+ id="reasons-poor-choice"
+ dataTestId="reasons-poor-choice"
+ />,
+ ],
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/OptionalTextField.js.html b/main/coverage/lcov-report/components/molecules/OptionalTextField.js.html
new file mode 100644
index 0000000000..dc8158d7eb
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/OptionalTextField.js.html
@@ -0,0 +1,877 @@
+
+
+
+
+
+ Code coverage report for components/molecules/OptionalTextField.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 78.57%
+ Statements
+ 11/14
+
+
+
+
+ 80.95%
+ Branches
+ 17/21
+
+
+
+
+ 50%
+ Functions
+ 2/4
+
+
+
+
+ 78.57%
+ Lines
+ 11/14
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+
+
+
+
+
+
+
+
+
+
+
+132x
+132x
+132x
+132x
+3x
+
+
+
+3x
+3x
+
+
+3x
+
+
+
+132x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+7x
+
+
+
+7x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import { useState } from "react";
+import { CheckBox } from "../atoms/CheckBox";
+import { TextField } from "../atoms/TextField";
+import { MultiTextField } from "../atoms/MultiTextField";
+import { RadioField } from "../atoms/RadioField";
+import { useTranslation } from "next-i18next";
+import PropTypes from "prop-types";
+
+/**
+ * An optional text box that is enabled by a checkbox
+ */
+export function OptionalTextField(props) {
+ let [showTextField, setShowTextField] = useState(props.checked || false);
+ const [expandState, setExpandState] = useState("collapsed");
+ const { t } = useTranslation("common");
+ let handleCheckChange = (wasChecked, name, value) => {
+ I if (wasChecked) {
+ setShowTextField(false);
+ setExpandState(t("collapsed"));
+ } else {
+ setShowTextField(true);
+ setExpandState(t("expanded"));
+ }
+
+ I if (props.onControlChange) {
+ props.onControlChange(wasChecked, name, value);
+ }
+ };
+ return (
+ <>
+ {props.controlType === "checkbox" && (
+ <CheckBox
+ label={props.controlLabel}
+ id={props.controlId}
+ name={props.controlName}
+ className={props.checkBoxStyle}
+ checked={props.checked}
+ uncontrolled={props.uncontrolled}
+ value={props.controlValue}
+ onChange={handleCheckChange}
+ dataTestId={props.controlDataTestId}
+ required={props.controlRequired}
+ dataCy={props.controlDataCy}
+ expandState={expandState}
+ />
+ )}
+ {props.controlType === "radiofield" && (
+ <RadioField
+ label={props.controlLabel}
+ id={props.controlId}
+ name={props.controlName}
+ checked={props.checked}
+ uncontrolled={props.uncontrolled}
+ value={props.controlValue}
+ onChange={handleCheckChange}
+ required={props.controlRequired}
+ dataTestId={props.controlDataTestId}
+ dataCy={props.controlDataCy}
+ />
+ )}
+ {(props.uncontrolled && showTextField) || props.checked ? (
+ props.multiText ? (
+ <MultiTextField
+ label={props.textFieldLabel}
+ placeholder={props.textFieldPlaceHolder}
+ name={props.textFieldName}
+ id={props.textFieldId}
+ value={props.textFieldValue}
+ boldLabel={props.textLabelBold}
+ rows={props.rows}
+ cols={props.cols}
+ spellCheck={props.spellCheck}
+ wrap={props.wrap}
+ required={props.textFieldRequired}
+ onChange={
+ props.onTextFieldChange ? props.onTextFieldChange : () => {}
+ }
+ dataTestId={props.textFieldDataTestId}
+ dataCy={props.textFieldDataCy}
+ error={props.error}
+ describedby={props.describedby}
+ />
+ ) : (
+ <TextField
+ label={props.textFieldLabel}
+ placeholder={props.textFieldPlaceHolder}
+ name={props.textFieldName}
+ id={props.textFieldId}
+ value={props.textFieldValue}
+ boldLabel={props.textLabelBold}
+ uncontrolled={props.uncontrolled}
+ required={props.textFieldRequired}
+ onChange={
+ props.onTextFieldChange ? props.onTextFieldChange : () => {}
+ }
+ dataTestId={props.textFieldDataTestId}
+ describedby={props.describedby}
+ dataCy={props.textFieldDataCy}
+ />
+ )
+ ) : undefined}
+ </>
+ );
+}
+
+OptionalTextField.defaultProps = {
+ controlType: "checkbox",
+};
+
+OptionalTextField.propTypes = {
+ /**
+ * the type of field that should be used
+ */
+ controlType: PropTypes.oneOf(["checkbox", "radiofield"]),
+ /**
+ * the id for the checkbox
+ */
+ controlId: PropTypes.string.isRequired,
+
+ /**
+ * the id for the text field
+ */
+ textFieldId: PropTypes.string.isRequired,
+
+ /**
+ * the name for the checkbox
+ */
+ controlName: PropTypes.string.isRequired,
+
+ /**
+ * the name for the text field
+ */
+ textFieldName: PropTypes.string.isRequired,
+
+ /**
+ * the label for the checkbox
+ */
+ controlLabel: PropTypes.string.isRequired,
+
+ /**
+ * the label for the text field
+ */
+ textFieldLabel: PropTypes.string.isRequired,
+
+ /**
+ * whether or not the text label is bold
+ */
+ textLabelBold: PropTypes.bool,
+
+ /**
+ * the value for the checkbox
+ */
+ controlValue: PropTypes.string,
+
+ /**
+ * the value for the text field
+ */
+ textFieldValue: PropTypes.string,
+
+ /**
+ * text field placeholder
+ */
+ textFieldPlaceHolder: PropTypes.string,
+
+ /**
+ * whether or not the checkbox is checked
+ */
+ checked: PropTypes.bool,
+
+ /**
+ * boolean flag to denote whether or not the inputs are controlled
+ */
+ uncontrolled: PropTypes.bool,
+
+ /**
+ * whether or not the control is required
+ */
+ controlRequired: PropTypes.bool,
+
+ /**
+ * whether or not the text field is required
+ */
+ textFieldRequired: PropTypes.bool,
+
+ /**
+ * the test id for the checkbox to select in unit tests
+ */
+ controlDataTestId: PropTypes.string,
+
+ /**
+ * the test id for the text field to select in unit tests
+ */
+ textFieldDataTestId: PropTypes.string,
+
+ /**
+ * the cypress selector for the checkbox
+ */
+ controlDataCy: PropTypes.string,
+
+ /**
+ * the cypress selector for the text field
+ */
+ textFieldDataCy: PropTypes.string,
+
+ /**
+ * callback when the checkbox changes
+ */
+ onControlChange: PropTypes.func,
+
+ /**
+ * callback when the text field changes
+ */
+ onTextFieldChange: PropTypes.func,
+
+ /**
+ * whether or not its a multi text field
+ */
+ multiText: PropTypes.bool,
+
+ /**
+ * how much lines should the multi text field show
+ */
+ rows: PropTypes.number,
+
+ /**
+ * how much columns the multi text field has
+ */
+ cols: PropTypes.number,
+
+ /**
+ * the minimum amount of characters for the multi text field
+ */
+ minLength: PropTypes.number,
+
+ /**
+ * the maximum amount of characters for the multi text field
+ */
+ maxLength: PropTypes.number,
+
+ /**
+ * the wrap preference for the multi text field
+ */
+ wrap: PropTypes.oneOf(["hard", "soft"]),
+
+ /**
+ * whether or not to spellcheck for the multi text field
+ */
+ spellCheck: PropTypes.bool,
+
+ /**
+ * message to display if there is an error
+ */
+ error: PropTypes.string,
+
+ /**
+ * aria-describedby label id
+ */
+ describedby: PropTypes.string,
+
+ /**
+ * Styling for checkbox
+ */
+ checkBoxStyle: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/OptionalTextField.stories.js.html b/main/coverage/lcov-report/components/molecules/OptionalTextField.stories.js.html
new file mode 100644
index 0000000000..ff5290e181
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/OptionalTextField.stories.js.html
@@ -0,0 +1,340 @@
+
+
+
+
+
+ Code coverage report for components/molecules/OptionalTextField.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 92.3%
+ Statements
+ 12/13
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 91.66%
+ Lines
+ 11/12
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import { OptionalTextField } from "./OptionalTextField";
+
+export default {
+ title: "Components/Molecules/OptionalTextField",
+ component: OptionalTextField,
+ decorators: [
+ (S tory) => (
+ <div className="w-full flex justify-center">
+ <div className="w-96">
+ <Story />
+ </div>
+ </div>
+ ),
+ ],
+};
+
+const Template = (args) => <OptionalTextField {...args} />;
+
+export const UnOpened = Template.bind({});
+UnOpened.args = {
+ controlId: "nutella-check-1",
+ textFieldId: "nutella-text-1",
+ controlName: "nutellaCheckOne",
+ textFieldName: "nutellaTextOne",
+ controlLabel: "Do you not like Nutella ?",
+ textFieldLabel: "Please explain why you are wrong ?",
+ controlDataTestId: "unopened-check-1",
+ textFieldDataTestId: "unopened-text-1",
+};
+
+export const Opened = Template.bind({});
+Opened.args = {
+ controlId: "nutella-check-1",
+ textFieldId: "nutella-text-1",
+ controlName: "nutellaCheckOne",
+ textFieldName: "nutellaTextOne",
+ controlLabel: "Do you not like Nutella ?",
+ checked: true,
+ textFieldLabel: "Please explain why you are wrong ?",
+ controlDataTestId: "opened-check-1",
+ textFieldDataTestId: "opened-text-1",
+};
+
+export const Radio = Template.bind({});
+Radio.args = {
+ controlType: "radiofield",
+ controlId: "nutella-check-1",
+ textFieldId: "nutella-text-1",
+ controlName: "nutellaCheckOne",
+ textFieldName: "nutellaTextOne",
+ controlLabel: "Do you not like Nutella ?",
+ checked: true,
+ textFieldLabel: "Please explain why you are wrong ?",
+ controlDataTestId: "radio-check-1",
+ textFieldDataTestId: "radio-text-1",
+};
+
+export const UnControlled = Template.bind({});
+UnControlled.args = {
+ controlId: "nutella-check-1",
+ textFieldId: "nutella-text-1",
+ controlName: "nutellaCheckOne",
+ textFieldName: "nutellaTextOne",
+ controlLabel: "Do you not like Nutella ?",
+ uncontrolled: true,
+ textFieldLabel: "Please explain why you are wrong ?",
+ controlDataTestId: "uncontrolled-check-1",
+ textFieldDataTestId: "uncontrolled-text-1",
+};
+
+export const MultiText = Template.bind({});
+MultiText.args = {
+ controlId: "nutella-check-1",
+ textFieldId: "nutella-text-1",
+ controlName: "nutellaCheckOne",
+ textFieldName: "nutellaTextOne",
+ controlLabel: "Do you not like Nutella ?",
+ uncontrolled: true,
+ multiText: true,
+ rows: 5,
+ textFieldLabel: "Please explain why you are wrong ?",
+ controlDataTestId: "multitext-check-1",
+ textFieldDataTestId: "multitext-text-1",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Quote.js.html b/main/coverage/lcov-report/components/molecules/Quote.js.html
new file mode 100644
index 0000000000..fb70fb28fe
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Quote.js.html
@@ -0,0 +1,193 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Quote.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 2/2
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 2/2
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+
+
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+
+/**
+ * Quote component
+ */
+export function Quote(props) {
+ return (
+ <figure
+ title="Quote"
+ className={
+ props.className +
+ " border-l-4 text-sm md:text-p pl-4 leading-normal font-body"
+ }
+ >
+ <blockquote className="max-w-sm">{props.text}</blockquote>
+ <figcaption className="text-gray-500 pt-4"> — {props.author}</figcaption>
+ </figure>
+ );
+}
+
+Quote.propTypes = {
+ /**
+ * Option for styling component
+ */
+ className: PropTypes.string,
+
+ /**
+ * Quote
+ */
+ text: PropTypes.string,
+
+ /**
+ * Author
+ */
+ author: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/Quote.stories.js.html b/main/coverage/lcov-report/components/molecules/Quote.stories.js.html
new file mode 100644
index 0000000000..abe05f760f
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/Quote.stories.js.html
@@ -0,0 +1,133 @@
+
+
+
+
+
+ Code coverage report for components/molecules/Quote.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+
+
+
+
+
+
+
+2x
+
+1x
+
+1x
+
+
+
+ import React from "react";
+import { Quote } from "./Quote";
+
+export default {
+ title: "Components/Molecules/Quote",
+ component: Quote,
+};
+
+const Template = (args) => <Quote {...args}></Quote>;
+
+export const Primary = Template.bind({});
+
+Primary.args = {
+ text: "Some quote",
+ author: "Author",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/TextButtonField.js.html b/main/coverage/lcov-report/components/molecules/TextButtonField.js.html
new file mode 100644
index 0000000000..c1beb114bf
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/TextButtonField.js.html
@@ -0,0 +1,379 @@
+
+
+
+
+
+ Code coverage report for components/molecules/TextButtonField.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 75%
+ Branches
+ 6/8
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 4/4
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+
+
+
+
+
+
+
+
+6x
+5x
+
+
+
+6x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { ActionButton } from "../atoms/ActionButton";
+
+/**
+ * component
+ */
+export function TextButtonField(props) {
+ //Verification for styling
+ let secondary;
+ if (props.custom === undefined)
+ props.secondary === undefined
+ ? (secondary = true)
+ : (secondary = props.secondary);
+
+ return (
+ <div className={props.className + " mb-4 mx-0"}>
+ {props.html === undefined ? (
+ <div className="textbuttonField">{props.children}</div>
+ ) : (
+ <div
+ className="textbuttonField"
+ dangerouslySetInnerHTML={{ __html: props.html }}
+ />
+ )}
+
+ {props.buttonText ? (
+ <ActionButton
+ id={props.idButton}
+ className={"mt-2 text-xs md:text-base"}
+ text={props.buttonText}
+ secondary={secondary}
+ disabled={props.disabled}
+ custom={props.custom}
+ href={props.href}
+ dataCyButton={props.dataCyButton}
+ />
+ ) : (
+ ""
+ )}
+ </div>
+ );
+}
+
+TextButtonField.propTypes = {
+ /**
+ * Option for styling component
+ */
+ className: PropTypes.string,
+
+ /**
+ * Option for html
+ */
+ html: PropTypes.string,
+
+ /**
+ * Contenty
+ */
+ children: PropTypes.oneOfType([
+ PropTypes.string,
+ PropTypes.element,
+ PropTypes.arrayOf(PropTypes.element),
+ ]),
+
+ /**
+ * Button id
+ */
+ idButton: PropTypes.string,
+
+ /**
+ * Button link
+ */
+ href: PropTypes.string,
+
+ /**
+ * Button text
+ */
+ buttonText: PropTypes.string,
+
+ /**
+ * Button secondary
+ */
+ secondary: PropTypes.bool,
+
+ /**
+ * Button disabled
+ */
+ disabled: PropTypes.bool,
+
+ /**
+ * Button custom
+ */
+ custom: PropTypes.string,
+
+ /**
+ * Test id for cypress test for the button
+ */
+ dataCyButton: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/TextButtonField.stories.js.html b/main/coverage/lcov-report/components/molecules/TextButtonField.stories.js.html
new file mode 100644
index 0000000000..abe774ce97
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/TextButtonField.stories.js.html
@@ -0,0 +1,220 @@
+
+
+
+
+
+ Code coverage report for components/molecules/TextButtonField.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 10/10
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 9/9
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+
+
+
+
+
+
+
+6x
+
+1x
+1x
+1x
+1x
+
+1x
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+ import React from "react";
+import { TextButtonField } from "./TextButtonField";
+
+export default {
+ title: "Components/Molecules/TextButtonField",
+ component: TextButtonField,
+};
+
+const Template = (args) => <TextButtonField {...args}></TextButtonField>;
+
+export const Primary = Template.bind({});
+export const Secondary = Template.bind({});
+export const Disabled = Template.bind({});
+export const Custom = Template.bind({});
+
+Primary.args = {
+ title: "Primary",
+ html: "<h1>Title</h1><p>Text</p>",
+ idButton: "Button1",
+ buttonText: "Button",
+ secondary: false,
+};
+
+Secondary.args = {
+ title: "Secondary",
+ html: "<h1>Title</h1><p>Text</p>",
+ buttonText: "Button",
+ idButton: "Button2",
+};
+
+Disabled.args = {
+ title: "Disabled",
+ html: "<h1>Title</h1><p>Text</p>",
+ buttonText: "Button",
+ idButton: "Button3",
+ disabled: true,
+};
+
+Custom.args = {
+ title: "Custom",
+ html: "<h1>Title</h1><p>Text</p>",
+ buttonText: "Button",
+ idButton: "Button4",
+ custom: "bg-red-100",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/molecules/index.html b/main/coverage/lcov-report/components/molecules/index.html
new file mode 100644
index 0000000000..eafec317e2
--- /dev/null
+++ b/main/coverage/lcov-report/components/molecules/index.html
@@ -0,0 +1,491 @@
+
+
+
+
+
+ Code coverage report for components/molecules
+
+
+
+
+
+
+
+
+
+
+
+
All files components/molecules
+
+
+
+ 86.91%
+ Statements
+ 186/214
+
+
+
+
+ 65.09%
+ Branches
+ 69/106
+
+
+
+
+ 78.43%
+ Functions
+ 40/51
+
+
+
+
+ 86%
+ Lines
+ 172/200
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ CallToAction.js
+
+
+
+ 100%
+ 3/3
+ 62.5%
+ 5/8
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ CallToAction.stories.js
+
+
+
+ 100%
+ 6/6
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 5/5
+
+
+
+ Card.js
+
+
+
+ 100%
+ 5/5
+ 64.28%
+ 9/14
+ 100%
+ 1/1
+ 100%
+ 5/5
+
+
+
+ Card.stories.js
+
+
+
+ 100%
+ 12/12
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 11/11
+
+
+
+ CopyToClipboard.js
+
+
+
+ 100%
+ 5/5
+ 50%
+ 1/2
+ 100%
+ 2/2
+ 100%
+ 5/5
+
+
+
+ CopyToClipboard.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ Details.js
+
+
+
+ 100%
+ 2/2
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 2/2
+
+
+
+ Details.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ ErrorBox.js
+
+
+
+ 100%
+ 5/5
+ 100%
+ 0/0
+ 100%
+ 3/3
+ 100%
+ 5/5
+
+
+
+ ErrorBox.stories.js
+
+
+
+ 80%
+ 4/5
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 75%
+ 3/4
+
+
+
+ FeedbackWidget.js
+
+
+
+ 66.66%
+ 34/51
+ 40.9%
+ 9/22
+ 50%
+ 5/10
+ 66.66%
+ 34/51
+
+
+
+ FeedbackWidget.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ Filter.js
+
+
+
+ 100%
+ 3/3
+ 100%
+ 0/0
+ 100%
+ 2/2
+ 100%
+ 3/3
+
+
+
+ Filter.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ List.js
+
+
+
+ 100%
+ 7/7
+ 100%
+ 2/2
+ 100%
+ 2/2
+ 100%
+ 6/6
+
+
+
+ List.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ Menu.js
+
+
+
+ 90%
+ 9/10
+ 60%
+ 6/10
+ 75%
+ 3/4
+ 90%
+ 9/10
+
+
+
+ Menu.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ OptionalListField.js
+
+
+
+ 75%
+ 12/16
+ 73.68%
+ 14/19
+ 100%
+ 3/3
+ 75%
+ 12/16
+
+
+
+ OptionalListField.stories.js
+
+
+
+ 92.3%
+ 12/13
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 91.66%
+ 11/12
+
+
+
+ OptionalTextField.js
+
+
+
+ 78.57%
+ 11/14
+ 80.95%
+ 17/21
+ 50%
+ 2/4
+ 78.57%
+ 11/14
+
+
+
+ OptionalTextField.stories.js
+
+
+
+ 92.3%
+ 12/13
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 91.66%
+ 11/12
+
+
+
+ Quote.js
+
+
+
+ 100%
+ 2/2
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 2/2
+
+
+
+ Quote.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ TextButtonField.js
+
+
+
+ 100%
+ 4/4
+ 75%
+ 6/8
+ 100%
+ 1/1
+ 100%
+ 4/4
+
+
+
+ TextButtonField.stories.js
+
+
+
+ 100%
+ 10/10
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 9/9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/Footer.js.html b/main/coverage/lcov-report/components/organisms/Footer.js.html
new file mode 100644
index 0000000000..c2898b460d
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/Footer.js.html
@@ -0,0 +1,439 @@
+
+
+
+
+
+ Code coverage report for components/organisms/Footer.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 2/2
+
+
+
+
+ 100%
+ Functions
+ 3/3
+
+
+
+
+ 100%
+ Lines
+ 4/4
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+8x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+8x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { ActionButton } from "../atoms/ActionButton";
+
+/**
+ * footer element for all pages
+ */
+
+export function Footer(props) {
+ return (
+ <div className="w-full">
+ <div className="w-full h-auto footerBackground bg-custom-blue-dark">
+ <div
+ className="w-full py-7 layout-container"
+ role="navigation"
+ aria-labelledby="footerNav1"
+ >
+ <h3 className="sr-only" id="footerNav1">
+ {props.footerNav1}
+ </h3>
+ <ul className="flex flex-col text-xs lg:grid lg:grid-cols-2 xl:grid xl:grid-cols-3 lg:gap-1 -ml-4">
+ {" "}
+ {props.footerBoxLinks.map((value, index) => {
+ return (
+ <li
+ key={index}
+ className="text-xs text-white w-64 lg:w-80 my-2.5 hover:underline list-none"
+ >
+ <a className="font-body" href={value.footerBoxlink}>
+ {value.footerBoxLinkText}
+ </a>
+ </li>
+ );
+ })}
+ </ul>
+ </div>
+ </div>
+ <div className="w-full h-full bg-footer-background-color pb-4">
+ <div className="h-auto bg-footer-white pt-5 layout-container flex flex-col xl:flex xl:flex-row md:justify-between">
+ <div
+ className="mt-3.5 xl:mt-5"
+ role="navigation"
+ aria-labelledby="footerNav2"
+ >
+ <h3 className="sr-only" id="footerNav2">
+ {props.footerNav2}
+ </h3>
+ <ul className="flex flex-col md:grid md:grid-cols-2 xl:flex lg:flex-row -ml-4">
+ {props.links.map((value, index) => {
+ return (
+ <li
+ key={index}
+ className={
+ index === 0
+ ? "lg:mb-4 mb-5 lg:list-inside list-disc xl:list-none text-xxs"
+ : "lg:mb-4 mb-5 lg:list-inside list-disc text-xxs"
+ }
+ >
+ <a
+ className="text-xs font-body hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ data-cy="social-media-link"
+ href={value.link}
+ >
+ {value.linkText}
+ </a>
+ </li>
+ );
+ })}
+ </ul>
+ </div>
+ <div className="flex items-center justify-between">
+ <ActionButton
+ id="TopOfPageButton"
+ href="#"
+ custom="text-left w-32 flex flex-col lg:hidden"
+ text={props.topOfPage}
+ icon="icon-up-caret"
+ iconEnd
+ />
+ <span className="flex relative footer-logo">
+ <img src={props.footerLogoImage} alt={props.footerLogoAltText} />
+ </span>
+ </div>
+ </div>
+ </div>
+ </div>
+ );
+}
+
+Footer.propTypes = {
+ /**
+ * array of objects containing the link text and link
+ */
+ footerBoxLinks: PropTypes.arrayOf(
+ PropTypes.shape({
+ footerBoxlink: PropTypes.string.isRequired,
+ footerBoxLinkText: PropTypes.string.isRequired,
+ })
+ ),
+ /**
+ * array of objects containing the link text and link
+ */
+ links: PropTypes.arrayOf(
+ PropTypes.shape({
+ link: PropTypes.string.isRequired,
+ linkText: PropTypes.string.isRequired,
+ })
+ ),
+
+ /**
+ * alt text for footer canada-ca logo
+ */
+ footerLogoAltText: PropTypes.string.isRequired,
+
+ /**
+ * image path for footer logo
+ */
+ footerLogoImage: PropTypes.string.isRequired,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/Footer.stories.js.html b/main/coverage/lcov-report/components/organisms/Footer.stories.js.html
new file mode 100644
index 0000000000..f1df94a846
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/Footer.stories.js.html
@@ -0,0 +1,349 @@
+
+
+
+
+
+ Code coverage report for components/organisms/Footer.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 4/4
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+
+
+
+
+
+
+
+1x
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import { Footer } from "./Footer";
+import logo from "../../public/wmms-blk.svg";
+
+export default {
+ title: "Components/Organisms/Footer",
+ component: Footer,
+};
+
+const Template = (args) => <Footer {...args} />;
+
+export const Primary = Template.bind({});
+Primary.args = {
+ links: [
+ {
+ link: "https://some-link-1.com",
+ linkText: "some-link-1",
+ },
+ {
+ link: "https://some-link-2.com",
+ linkText: "some-lin-2",
+ },
+ {
+ link: "https://some-link-3.com",
+ linkText: "some-link-3",
+ },
+ {
+ link: "https://some-link-4.com",
+ linkText: "some-link-4",
+ },
+ {
+ link: "https://some-link-5.com",
+ linkText: "some-link-5",
+ },
+ {
+ link: "https://some-link-6.com",
+ linkText: "some-link-6",
+ },
+ {
+ link: "https://some-link-7.com",
+ linkText: "some-link-7",
+ },
+ {
+ link: "https://some-link-8.com",
+ linkText: "some-link-8",
+ },
+ ],
+
+ footerBoxLinks: [
+ {
+ footerBoxlink: "https://some-link-11.com",
+ footerBoxLinkText: "some-link-11",
+ },
+ {
+ footerBoxlink: "https://some-link-22.com",
+ footerBoxLinkText: "some-lin-22",
+ },
+ {
+ footerBoxlink: "https://some-link-33.com",
+ footerBoxLinkText: "some-link-33",
+ },
+ {
+ footerBoxlink: "https://some-link-44.com",
+ footerBoxLinkText: "some-link-44",
+ },
+ {
+ footerBoxlink: "https://some-link-55.com",
+ footerBoxLinkText: "some-link-55",
+ },
+ {
+ footerBoxlink: "https://some-link-66.com",
+ footerBoxLinkText: "some-link-66",
+ },
+ {
+ footerBoxlink: "https://some-link-77.com",
+ footerBoxLinkText: "some-link-77",
+ },
+ {
+ footerBoxlink: "https://some-link-88.com",
+ footerBoxLinkText: "some-link-88",
+ },
+ ],
+
+ footerLogoAltText: "Symbol of the Government of Canada",
+ footerLogoImage: logo,
+ reportBtnText: "Report a problem",
+ reportDescription:
+ "Experiencing an issue with this product or have you spotted an error?",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/Layout.js.html b/main/coverage/lcov-report/components/organisms/Layout.js.html
new file mode 100644
index 0000000000..f875d377c7
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/Layout.js.html
@@ -0,0 +1,760 @@
+
+
+
+
+
+ Code coverage report for components/organisms/Layout.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 6/6
+
+
+
+
+ 66.66%
+ Branches
+ 12/18
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 6/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+7x
+7x
+7x
+
+
+
+
+7x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import PropTypes from "prop-types";
+import { Banner } from "../atoms/Banner";
+import { Footer } from "@dts-stn/service-canada-design-system";
+import { PhaseBanner } from "./PhaseBanner";
+import { ReportAProblem } from "./ReportAProblem";
+import Link from "next/link";
+import { useTranslation } from "next-i18next";
+import { DateModified } from "../atoms/DateModified";
+import { Breadcrumb } from "../atoms/Breadcrumb";
+
+/**
+ * Component which defines the layout of the page for all screen sizes
+ */
+export const Layout = ({
+ bannerText,
+ bannerTitle,
+ children,
+ locale,
+ langUrl,
+ breadcrumbItems,
+ feedbackActive,
+ showDisclaimer,
+ projectName,
+ path,
+ dateModifiedOverride,
+}) => {
+ const { t } = useTranslation("common");
+ const language = locale === "en" ? "fr" : "en";
+ path =
+ typeof window !== "undefined" && window.location.origin
+ ? window.location.href
+ : "";
+
+ return (
+ <div className="overflow-x-hidden">
+ <nav className="skip-main">
+ <a
+ id="skipToMainContent"
+ className="bg-white text-custom-blue-dark text-lg underline py-1 px-2 focus:outline-dark-goldenrod hover:bg-gray-dark"
+ href="#pageMainTitle"
+ data-cy-button={"skip-Content"}
+ draggable="false"
+ >
+ {t("skipToMainContentBtn")}
+ </a>
+ </nav>
+ <header>
+ <h2 className="sr-only">{t("globalHeader")}</h2>
+ <h3 className="sr-only">{t("testSiteNotice")}</h3>
+ {showDisclaimer ? (
+ <PhaseBanner
+ phase={t("phaseBannerTag")}
+ feedbackActive={feedbackActive}
+ text={t("phaseBannerText")}
+ projectName={projectName}
+ path={path}
+ />
+ ) : (
+ ""
+ )}
+ <div className="layout-container flex-col flex lg:flex lg:flex-row justify-between mt-2">
+ <div
+ className="flex flex-row justify-between items-center lg:mt-7 mt-1.5"
+ role="navigation"
+ aria-labelledby="officialSiteNav"
+ >
+ <h3 className="sr-only" id="officialSiteNav">
+ {t("officialSiteNavigation")}
+ </h3>
+ <a href="https://www.canada.ca">
+ <img
+ src={language === "en" ? "/sig-blk-fr.svg" : "/sig-blk-en.svg"}
+ alt={t("symbol")}
+ width="375"
+ height="35"
+ />
+ </a>
+ <h3 className="sr-only">{t("languageSelection")}</h3>
+ <Link
+ key={language}
+ href={langUrl}
+ locale={language}
+ data-testid="languageLink1"
+ className="visible lg:invisible ml-6 sm:ml-16 underline font-body font-bold text-canada-footer-font lg:text-sm text-base hover:text-canada-footer-hover-font-blue"
+ >
+ {language === "en" ? "EN" : "FR"}
+ </Link>
+ </div>
+ <div className="flex-col flex">
+ <Link
+ key={language}
+ href={langUrl}
+ locale={language}
+ data-testid="languageLink3"
+ className="lg:visible invisible pb-0 lg:pb-2 self-end underline font-body text-canada-footer-font hover:text-canada-footer-hover-font-blue"
+ data-cy="toggle-language-link"
+ lang={language}
+ >
+ {language === "en" ? "English" : "Français"}
+ </Link>
+ </div>
+ </div>
+
+ <div className="border-t pb-2 mt-4">
+ <div className="layout-container mt-10 mb-2">
+ <Breadcrumb items={breadcrumbItems} />
+ </div>
+ </div>
+ </header>
+
+ <main>
+ {bannerText && bannerTitle ? (
+ <Banner siteTitle={bannerTitle} headline={bannerText} />
+ ) : null}
+ <div>{children}</div>
+ <div className="mt-12">
+ <h2 className="sr-only">{t("siteFooter")}</h2>
+ <div className="layout-container mt-5">
+ <ReportAProblem />
+ </div>
+ <div className="layout-container mb-2">
+ <DateModified date={dateModifiedOverride} />
+ </div>
+ </div>
+ </main>
+
+ <Footer
+ id="footer"
+ lang={locale}
+ btnLink={"#"}
+ brandLinks={[
+ {
+ id: "link1",
+ text: t("footerSocialMedia"),
+ href: t("footerSocialMediaURL"),
+ },
+ {
+ id: "link2",
+ text: t("footerMobileApp"),
+ href: t("footerMobileAppURL"),
+ },
+ {
+ id: "link3",
+ text: t("footerTermsAndCondition"),
+ href: t("footerTermsAndConditionURL"),
+ },
+ {
+ id: "link4",
+ text: t("footerPrivacy"),
+ href: t("footerPrivacyURL"),
+ },
+ ]}
+ />
+ </div>
+ );
+};
+
+Layout.propTypes = {
+ /**
+ * text for the banner
+ */
+ bannerText: PropTypes.string,
+
+ /**
+ * title of the banner
+ */
+ bannerTitle: PropTypes.string,
+
+ /**
+ * child elements that will constitute the page
+ */
+ children: PropTypes.oneOfType([
+ PropTypes.string,
+ PropTypes.element,
+ PropTypes.arrayOf(PropTypes.element),
+ ]),
+
+ /**
+ * currently active locale
+ */
+ locale: PropTypes.string,
+
+ /**
+ * URL to use for navigation when changing locales
+ */
+ langUrl: PropTypes.string,
+
+ /**
+ * Array of Items for the breadcrumb
+ */
+ breadcrumbItems: PropTypes.arrayOf(
+ PropTypes.shape({
+ /**
+ * Text for the breadcrumb
+ */
+ text: PropTypes.string,
+
+ /**
+ * Link for the breadcrumb
+ */
+ link: PropTypes.string,
+ })
+ ),
+
+ /**
+ * For activating feedback on active projects pages
+ */
+ feedbackActive: PropTypes.bool,
+ /**
+ * Boolean that determines whether the disclaimer at the top of the screen is shown or not
+ */
+ showDisclaimer: PropTypes.bool,
+ /**
+ * Project/page name that feedback is coming from
+ */
+ projectName: PropTypes.string,
+ /**
+ * Path that the feedback is coming from
+ */
+ path: PropTypes.string,
+ /**
+ * Manual override for date modified component
+ */
+ dateModifiedOverride: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/Layout.stories.js.html b/main/coverage/lcov-report/components/organisms/Layout.stories.js.html
new file mode 100644
index 0000000000..649c9f8ab3
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/Layout.stories.js.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+ Code coverage report for components/organisms/Layout.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 8/8
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 7/7
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+
+
+
+
+
+
+
+1x
+7x
+
+
+
+
+
+
+
+
+
+
+
+
+7x
+
+1x
+1x
+
+1x
+
+
+
+
+1x
+
+
+
+
+
+ import React from "react";
+import { Layout } from "./Layout";
+
+export default {
+ title: "Components/Organisms/Layout",
+ component: Layout,
+};
+
+const sampleText = () => {
+ return (
+ <p data-testid="child-element">
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+ veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
+ cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
+ est laborum.
+ </p>
+ );
+};
+
+const Template = (args) => <Layout {...args}>{sampleText()}</Layout>;
+
+export const NoBanner = Template.bind({});
+export const WithBanner = Template.bind({});
+
+NoBanner.args = {
+ langUrl: "someUrl",
+ locale: "someLocale",
+};
+
+WithBanner.args = {
+ bannerTitle: "Banner Title",
+ bannerText: "Banner Text",
+ langUrl: "someUrl",
+ locale: "someLocale",
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/PhaseBanner.js.html b/main/coverage/lcov-report/components/organisms/PhaseBanner.js.html
new file mode 100644
index 0000000000..f9cb1536df
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/PhaseBanner.js.html
@@ -0,0 +1,490 @@
+
+
+
+
+
+ Code coverage report for components/organisms/PhaseBanner.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 90.9%
+ Statements
+ 10/11
+
+
+
+
+ 87.5%
+ Branches
+ 7/8
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 90.9%
+ Lines
+ 10/11
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+
+
+
+
+
+
+
+
+
+
+4x
+
+
+
+
+
+
+
+3x
+3x
+3x
+
+3x
+1x
+
+
+1x
+
+
+1x
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import React from "react";
+import PropTypes from "prop-types";
+import { useTranslation } from "next-i18next";
+import { useState, useRef } from "react";
+import { FeedbackWidget } from "../molecules/FeedbackWidget";
+import { ActionButton } from "../atoms/ActionButton";
+
+/**
+ * Displays the PhaseBanner on the page
+ */
+
+export const PhaseBanner = ({
+ phase,
+ text,
+ feedbackActive,
+ projectName,
+ path,
+ toggleForm,
+}) => {
+ const [showFeedback, setShowFeedback] = useState(false);
+ const { t } = useTranslation("common");
+ const toggle = useRef("Collapsed");
+
+ toggleForm = async (e) => {
+ I if (showFeedback) {
+ toggle.current = "Collapsed";
+ } else {
+ toggle.current = "Expanded";
+ }
+
+ setShowFeedback(!showFeedback);
+ };
+
+ return (
+ <>
+ <div className="bg-circle-color">
+ <div className="block lg:flex py-4 layout-container">
+ <div
+ className={`flex justify-between lg:block lg:w-max ${
+ feedbackActive ? "mt-2" : ""
+ }`}
+ >
+ <span
+ className="font-body text-xs text-white border block w-max px-4 py-1 my-auto leading-6 items-center"
+ role="alert"
+ >
+ {phase}
+ </span>
+ {feedbackActive ? (
+ <ActionButton
+ id="back-projects"
+ dataCy="back-projects"
+ dataTestId="back-projects"
+ custom="font-body w-max text-xs underline text-white block outline-none focus:outline-white-solid h-full flex items-center -mt-2 py-2"
+ text={t("backProjects")}
+ href={t("breadCrumbsHref2")}
+ />
+ ) : (
+ ""
+ )}
+ </div>
+ <div className="lg:ml-4 xl:ml-8 xxl:ml-12">
+ <p className="mt-2 lg:mt-0 h-full font-body text-xs lg:text-sm text-white lg:ml-4 my-auto flex items-center">
+ {text}
+ </p>
+ </div>
+ </div>
+ {feedbackActive ? (
+ <div className="py-4 outline-none bg-custom-blue-blue font-body text-xs lg:text-sm text-white flex items-center lg:my-0">
+ <div className="flex layout-container">
+ <span
+ className="invisible hidden md:block font-body text-xs text-white border block w-max px-4 py-1 my-auto leading-6 items-center"
+ role="alert"
+ >
+ {phase}
+ </span>
+ <div className="lg:ml-6 xl:ml-12 xxl:ml-14 my-auto">
+ <button
+ id="feedbackButton"
+ onClick={toggleForm}
+ className="flex focus:outline-white-solid items-center lg:ml-4 my-auto"
+ data-testid="feedbackButton"
+ >
+ <strong className="underline">
+ {t("giveFeedback")}
+ <span className="sr-only">{toggle.current}</span>
+ </strong>
+ <img
+ className="px-2 flex items-center"
+ src="/feedback-icon-white.svg"
+ alt=""
+ />
+ </button>
+ </div>
+ </div>
+ </div>
+ ) : (
+ ""
+ )}
+ </div>
+
+ <FeedbackWidget
+ showFeedback={showFeedback}
+ toggleForm={toggleForm}
+ projectName={projectName}
+ path={path}
+ />
+ </>
+ );
+};
+
+PhaseBanner.propTypes = {
+ /**
+ * Phase stage in the PhaseBanner
+ */
+ phase: PropTypes.string.isRequired,
+ /**
+ * Phasebanner text
+ */
+ text: PropTypes.string.isRequired,
+ /**
+ * This is for showing the feedback component
+ */
+ feedbackActive: PropTypes.bool,
+ /**
+ * Project/page name that feedback is coming from
+ */
+ projectName: PropTypes.string,
+ /**
+ * Path that the feedback is coming from
+ */
+ path: PropTypes.string,
+};
+
+export default PhaseBanner;
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/PhaseBanner.stories.js.html b/main/coverage/lcov-report/components/organisms/PhaseBanner.stories.js.html
new file mode 100644
index 0000000000..6aab30574c
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/PhaseBanner.stories.js.html
@@ -0,0 +1,154 @@
+
+
+
+
+
+ Code coverage report for components/organisms/PhaseBanner.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 6/6
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 5/5
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+
+
+
+
+
+
+
+2x
+
+1x
+1x
+
+1x
+
+
+
+
+1x
+
+
+
+
+ import React from "react";
+import PhaseBanner from "./PhaseBanner";
+
+export default {
+ title: "Components/Atoms/PhaseBanner",
+ component: PhaseBanner,
+};
+
+const Template = (args) => <PhaseBanner {...args} />;
+
+export const Primary = Template.bind({});
+export const WithFeedback = Template.bind({});
+
+Primary.args = {
+ phase: "PhaseBanner Phase",
+ text: "PhaseBanner Text",
+};
+
+WithFeedback.args = {
+ phase: "PhaseBanner Phase",
+ text: "PhaseBanner Text",
+ feedbackActive: true,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/ReportAProblem.js.html b/main/coverage/lcov-report/components/organisms/ReportAProblem.js.html
new file mode 100644
index 0000000000..46ecad5af4
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/ReportAProblem.js.html
@@ -0,0 +1,1219 @@
+
+
+
+
+
+ Code coverage report for components/organisms/ReportAProblem.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 93.33%
+ Statements
+ 28/30
+
+
+
+
+ 92.85%
+ Branches
+ 13/14
+
+
+
+
+ 66.66%
+ Functions
+ 2/3
+
+
+
+
+ 93.1%
+ Lines
+ 27/29
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+
+
+
+
+
+
+
+
+
+
+
+
+
+20x
+19x
+
+19x
+
+19x
+
+3x
+
+
+3x
+3x
+24x
+21x
+1x
+
+
+
+
+
+3x
+
+3x
+
+
+3x
+5x
+5x
+
+
+
+3x
+3x
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+3x
+21x
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+1x
+
+
+3x
+
+
+19x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6x
+
+
+
+
+
+ import PropTypes from "prop-types";
+import Link from "next/link";
+import { useState } from "react";
+import { useTranslation } from "next-i18next";
+import { OptionalTextField } from "../molecules/OptionalTextField";
+import { Details } from "../molecules/Details";
+import { ActionButton } from "../atoms/ActionButton";
+import { stripFeedback } from "../../lib/utils/stripFeedback";
+import { ErrorLabel } from "../atoms/ErrorLabel";
+
+/**
+ * Report a problem button to report technical issues on the page.
+ */
+export function ReportAProblem(props) {
+ const [submitted, setSubmitted] = useState(false);
+ const { t, i18n } = useTranslation();
+
+ const [submittedOnce, setSubmittedOnce] = useState(false);
+
+ let onSubmitHandler = (e) => {
+ //Checking if at least one checkbox is selected
+ let checkBoxSelected = false;
+
+ //Check the checkboxes
+ let inputElements = document.getElementsByTagName("input");
+ for (let index = 0; index < inputElements.length; index++) {
+ if (inputElements[index].type == "checkbox") {
+ if (inputElements[index].checked) {
+ checkBoxSelected = true;
+ }
+ }
+ }
+
+ // prevent default behaviour of form
+ e.preventDefault();
+ // create FormData object from form
+ const formData = new FormData(e.target);
+
+ // Iterate through key/value pairs and strip personal identifier information from each value
+ for (var pair of formData.entries()) {
+ let cleanedFeedback = stripFeedback(pair[1]);
+ formData.set(pair[0], cleanedFeedback);
+ }
+ // create URLSearchParams object from FormData object
+ // this will be used to create url encoded string of names and values of the form fields
+ const urlEncoded = new URLSearchParams(formData);
+ let urlString = urlEncoded.toString();
+ //Replace the values with yes for GCNotify
+ let values;
+
+ I if (formData.get("language").toString().localeCompare("fr") == 0) {
+ values = [
+ "Informations+incorrectes",
+ "Informations+impr%C3%A9cises",
+ "Vous+n%E2%80%99avez+pas+trouv%C3%A9+ce+que+vous+cherchiez",
+ "La+page+ne+fonctionne+pas+avec+vos+technologies+d%E2%80%99adaptation",
+ "Vous+%C3%AAtes+inquiet+pour+votre+vie+priv%C3%A9e",
+ "Vous+ne+savez+pas+o%C3%B9+trouver+de+l%E2%80%99aide",
+ "Autres",
+ ];
+ } else {
+ values = [
+ "Incorrect+Information",
+ "Unclear+Information",
+ "You+didn%E2%80%99t+find+what+you+were+looking+for",
+ "Page+does+not+work+with+your+adaptive+technologies",
+ "You%E2%80%99re+worried+about+your+privacy",
+ "You+don%E2%80%99t+know+where+else+to+go+for+help",
+ "Other",
+ ];
+ }
+
+ for (const value of values) {
+ urlString = urlString.replace(value, "yes");
+ }
+
+ // call report a problem API route
+ fetch("/api/report-a-problem", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
+ },
+ body: urlString,
+ }).catch((e ) => {
+ // handle error if fetch fails
+ // fetch only fails if there is no internet connection not for the actual
+ // request so there is nothing really to do here other than to log it
+ console.log(e);
+ });
+
+ if (checkBoxSelected) {
+ setSubmitted(true);
+ }
+ //Make sure the form was submitted at least once
+ setSubmittedOnce(true);
+ };
+
+ return (
+ <Details
+ label={t("footerReportProblemButtonString", { lng: props.language })}
+ dataCy="report-a-problem-details"
+ dataTestId="report-a-problem-details"
+ >
+ <div role="status">
+ {submitted ? (
+ <>
+ <h2 className="text-h3 font-display mb-4 font-bold">
+ <b>
+ {t("reportAProblemThankYouForYourHelp", {
+ lng: props.language,
+ })}
+ </b>
+ </h2>
+ <p className="text-sm font-body">
+ {t("reportAProblemYouWillNotBeContacted", {
+ lng: props.language,
+ })}
+ </p>
+ </>
+ ) : (
+ ""
+ )}
+ </div>
+ {submitted ? (
+ ""
+ ) : (
+ <>
+ <h2 className="text-base font-body">
+ {t("reportAProblemTitle", { lng: props.language })}
+ </h2>
+ <ul className="list-outside list-disc px-6 py-2">
+ <li className="text-xs sm:text-sm font-body mb-4 leading-tight sm:leading-6">
+ <b>{t("reportAProblemNoReply", { lng: props.language })}</b>
+ </li>
+ <li className="text-xs sm:text-sm font-body my-4 leading-tight sm:leading-6">
+ <b>
+ {t("reportAProblemFeedbackConfidential", {
+ lng: props.language,
+ })}
+ </b>{" "}
+ <Link
+ href="/signup/privacy"
+ className="underline text-xs sm:text-sm font-body hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {t("reportAProblemPrivacyStatement", { lng: props.language })}
+ </Link>
+ </li>
+ </ul>
+ <form
+ data-gc-analytics-formname="ESDC|EDSC:ServiceCanadaLabsReport-Problem"
+ data-gc-analytics-collect='[{"value":"input,select","emptyField":"N/A"}]'
+ className="w-full"
+ action="#"
+ onSubmit={onSubmitHandler}
+ >
+ <input
+ type="hidden"
+ id="language"
+ name="language"
+ value={i18n.language}
+ />
+ <fieldset>
+ <legend className="text-base sm:text-p font-body font-normal mb-6">
+ <b className="text-error-border-red mr-2" aria-hidden="true">
+ *
+ </b>
+ {t("reportAProblemCheckAllThatApply", { lng: props.language })}
+ </legend>
+ <OptionalTextField
+ controlId="incorrectInformationCheckBox"
+ textFieldId="incorrectInformationTextField"
+ controlName="incorrect_information"
+ textFieldName="incorrect_information_details"
+ controlLabel={t("reportAProblemIncorrectInformation", {
+ lng: props.language,
+ })}
+ textFieldLabel={t("reportAProblemProvideMoreDetails", {
+ lng: props.language,
+ })}
+ uncontrolled={true}
+ multiText={true}
+ textLabelBold={true}
+ wrap="hard"
+ maxLength={750}
+ controlDataTestId="incorrectInformation-checkbox"
+ textFieldDataTestId="incorrectInformation-text"
+ controlDataCy="incorrectInformation-checkbox"
+ textFieldDataCy="incorrectInformation-text"
+ describedby="incorrectInformation"
+ OptionalTextField
+ checkBoxStyle="mb-4 inline-block"
+ controlValue={t("reportAProblemIncorrectInformation", {
+ lng: props.language,
+ })}
+ />
+ <OptionalTextField
+ controlId="unclearInformationCheckBox"
+ textFieldId="unclearInformationTextField"
+ controlName="unclear_information"
+ textFieldName="unclear_information_details"
+ controlLabel={t("reportAProblemUnclearInformation", {
+ lng: props.language,
+ })}
+ textFieldLabel={t("reportAProblemProvideMoreDetails", {
+ lng: props.language,
+ })}
+ uncontrolled={true}
+ multiText={true}
+ textLabelBold={true}
+ wrap="hard"
+ maxLength={750}
+ controlDataTestId="unclearInformation-checkbox"
+ textFieldDataTestId="unclearInformation-text"
+ controlDataCy="unclearInformation-checkbox"
+ textFieldDataCy="unclearInformation-text"
+ describedby="unclearInformation"
+ checkBoxStyle="mb-4 inline-block"
+ controlValue={t("reportAProblemUnclearInformation", {
+ lng: props.language,
+ })}
+ />
+ <OptionalTextField
+ controlId="infoNotFoundCheckBox"
+ textFieldId="infoNotFoundTextField"
+ controlName="info_not_found"
+ textFieldName="info_not_found_details"
+ controlLabel={t("reportAProblemDidNotFindWhatYoureLookingFor", {
+ lng: props.language,
+ })}
+ textFieldLabel={t("reportAProblemProvideMoreDetails", {
+ lng: props.language,
+ })}
+ uncontrolled={true}
+ multiText={true}
+ textLabelBold={true}
+ wrap="hard"
+ maxLength={750}
+ controlDataTestId="infoNotFound-checkbox"
+ textFieldDataTestId="infoNotFound-text"
+ controlDataCy="infoNotFound-checkbox"
+ textFieldDataCy="infoNotFound-text"
+ describedby="infoNotFound"
+ checkBoxStyle="lg:mb-8 mb-4 inline-block"
+ controlValue={t("reportAProblemDidNotFindWhatYoureLookingFor", {
+ lng: props.language,
+ })}
+ />
+ <OptionalTextField
+ controlId="adaptiveTechnologyCheckBox"
+ textFieldId="adaptiveTechnologyTextField"
+ controlName="adaptive_technology"
+ textFieldName="adaptive_technology_details"
+ controlLabel={t(
+ "reportAProblemPageDoesNotWorkWithAdaptiveTechnology",
+ { lng: props.language }
+ )}
+ textFieldLabel={t("reportAProblemProvideMoreDetails", {
+ lng: props.language,
+ })}
+ uncontrolled={true}
+ multiText={true}
+ textLabelBold={true}
+ wrap="hard"
+ maxLength={750}
+ controlDataTestId="adaptiveTechnology-checkbox"
+ textFieldDataTestId="adaptiveTechnology-text"
+ controlDataCy="adaptiveTechnology-checkbox"
+ textFieldDataCy="adaptiveTechnology-text"
+ describedby="adaptiveTechnology"
+ checkBoxStyle="mb-8 inline-block"
+ controlValue={t(
+ "reportAProblemPageDoesNotWorkWithAdaptiveTechnology",
+ { lng: props.language }
+ )}
+ />
+ <OptionalTextField
+ controlId="privacyIssuesCheckBox"
+ textFieldId="privacyIssuesTextField"
+ controlName="privacy_issues"
+ textFieldName="privacy_issues_details"
+ controlLabel={t("reportAProblemYoureWorriedAboutYourPrivacy", {
+ lng: props.language,
+ })}
+ textFieldLabel={t("reportAProblemProvideMoreDetails", {
+ lng: props.language,
+ })}
+ uncontrolled={true}
+ multiText={true}
+ textLabelBold={true}
+ wrap="hard"
+ maxLength={750}
+ controlDataTestId="privacyIssues-checkbox"
+ textFieldDataTestId="privacyIssues-text"
+ controlDataCy="privacyIssues-checkbox"
+ textFieldDataCy="privacyIssues-text"
+ describedby="privacyIssues"
+ checkBoxStyle="mb-4 inline-block"
+ controlValue={t("reportAProblemYoureWorriedAboutYourPrivacy", {
+ lng: props.language,
+ })}
+ />
+ <OptionalTextField
+ controlId="noWhereElseToGoCheckBox"
+ textFieldId="noWhereElseToGoTextField"
+ controlName="no_where_else_to_go"
+ textFieldName="no_where_else_to_go_details"
+ controlLabel={t("reportAProblemNoWhereElseToGo", {
+ lng: props.language,
+ })}
+ textFieldLabel={t("reportAProblemProvideMoreDetails", {
+ lng: props.language,
+ })}
+ uncontrolled={true}
+ multiText={true}
+ textLabelBold={true}
+ wrap="hard"
+ maxLength={750}
+ controlDataTestId="noWhereElseToGo-checkbox"
+ textFieldDataTestId="noWhereElseToGo-text"
+ controlDataCy="noWhereElseToGo-checkbox"
+ textFieldDataCy="noWhereElseToGo-text"
+ describedby="noWhereElseToGo"
+ checkBoxStyle="lg:mb-8 mb-4 inline-block"
+ controlValue={t("reportAProblemNoWhereElseToGo", {
+ lng: props.language,
+ })}
+ />
+ <OptionalTextField
+ controlId="otherCheckBox"
+ textFieldId="otherTextField"
+ controlName="other"
+ textFieldName="other_details"
+ controlLabel={t("reportAProblemOther", { lng: props.language })}
+ textFieldLabel={t("reportAProblemProvideMoreDetails", {
+ lng: props.language,
+ })}
+ uncontrolled={true}
+ multiText={true}
+ textLabelBold={true}
+ wrap="hard"
+ maxLength={750}
+ controlDataTestId="other-checkbox"
+ textFieldDataTestId="other-text"
+ controlDataCy="other-checkbox"
+ textFieldDataCy="other-text"
+ describedby="other"
+ checkBoxStyle="mb-4"
+ controlValue={t("reportAProblemOther", { lng: props.language })}
+ />
+ {submittedOnce ? (
+ <ErrorLabel
+ message={t("reportAProblemError", { lng: props.language })}
+ />
+ ) : undefined}
+ </fieldset>
+ <ActionButton
+ id="submit"
+ className="rounded block mt-4"
+ type="submit"
+ dataCy="report-a-problem-submit"
+ dataTestId="report-a-problem-submit"
+ analyticsTracking
+ >
+ {t("reportAProblemSubmit", { lng: props.language })}
+ </ActionButton>
+ </form>
+ </>
+ )}
+ </Details>
+ );
+}
+
+ReportAProblem.propTypes = {
+ /**
+ * Translation language
+ */
+ language: PropTypes.string,
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/ReportAProblem.stories.js.html b/main/coverage/lcov-report/components/organisms/ReportAProblem.stories.js.html
new file mode 100644
index 0000000000..72c79c1531
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/ReportAProblem.stories.js.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+ Code coverage report for components/organisms/ReportAProblem.stories.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 3/3
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 2/2
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+
+
+
+
+
+
+
+5x
+
+1x
+ import React from "react";
+import { ReportAProblem } from "./ReportAProblem";
+
+export default {
+ title: "Components/Organisms/ReportAProblem",
+ component: ReportAProblem,
+};
+
+const Template = (args) => <ReportAProblem {...args} />;
+
+export const Primary = Template.bind({});
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/components/organisms/index.html b/main/coverage/lcov-report/components/organisms/index.html
new file mode 100644
index 0000000000..d61549c4a9
--- /dev/null
+++ b/main/coverage/lcov-report/components/organisms/index.html
@@ -0,0 +1,221 @@
+
+
+
+
+
+ Code coverage report for components/organisms
+
+
+
+
+
+
+
+
+
+
+
+
All files components/organisms
+
+
+
+ 95.83%
+ Statements
+ 69/72
+
+
+
+
+ 80.95%
+ Branches
+ 34/42
+
+
+
+
+ 92.85%
+ Functions
+ 13/14
+
+
+
+
+ 95.52%
+ Lines
+ 64/67
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ Footer.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 2/2
+ 100%
+ 3/3
+ 100%
+ 4/4
+
+
+
+ Footer.stories.js
+
+
+
+ 100%
+ 4/4
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 3/3
+
+
+
+ Layout.js
+
+
+
+ 100%
+ 6/6
+ 66.66%
+ 12/18
+ 100%
+ 1/1
+ 100%
+ 6/6
+
+
+
+ Layout.stories.js
+
+
+
+ 100%
+ 8/8
+ 100%
+ 0/0
+ 100%
+ 2/2
+ 100%
+ 7/7
+
+
+
+ PhaseBanner.js
+
+
+
+ 90.9%
+ 10/11
+ 87.5%
+ 7/8
+ 100%
+ 2/2
+ 90.9%
+ 10/11
+
+
+
+ PhaseBanner.stories.js
+
+
+
+ 100%
+ 6/6
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 5/5
+
+
+
+ ReportAProblem.js
+
+
+
+ 93.33%
+ 28/30
+ 92.85%
+ 13/14
+ 66.66%
+ 2/3
+ 93.1%
+ 27/29
+
+
+
+ ReportAProblem.stories.js
+
+
+
+ 100%
+ 3/3
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 2/2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/favicon.png b/main/coverage/lcov-report/favicon.png
new file mode 100644
index 0000000000..c1525b811a
Binary files /dev/null and b/main/coverage/lcov-report/favicon.png differ
diff --git a/main/coverage/lcov-report/index.html b/main/coverage/lcov-report/index.html
new file mode 100644
index 0000000000..5f36a2b1a9
--- /dev/null
+++ b/main/coverage/lcov-report/index.html
@@ -0,0 +1,281 @@
+
+
+
+
+
+ Code coverage report for All files
+
+
+
+
+
+
+
+
+
+
+
+
All files
+
+
+
+ 74.62%
+ Statements
+ 550/737
+
+
+
+
+ 32.53%
+ Branches
+ 381/1171
+
+
+
+
+ 66.48%
+ Functions
+ 125/188
+
+
+
+
+ 73.57%
+ Lines
+ 515/700
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ components
+
+
+
+ 0%
+ 0/0
+ 0%
+ 0/0
+ 0%
+ 0/0
+ 0%
+ 0/0
+
+
+
+ components/atoms
+
+
+
+ 95.83%
+ 184/192
+ 72.18%
+ 109/151
+ 86.79%
+ 46/53
+ 95.48%
+ 169/177
+
+
+
+ components/molecules
+
+
+
+ 86.91%
+ 186/214
+ 65.09%
+ 69/106
+ 78.43%
+ 40/51
+ 86%
+ 172/200
+
+
+
+ components/organisms
+
+
+
+ 95.83%
+ 69/72
+ 80.95%
+ 34/42
+ 92.85%
+ 13/14
+ 95.52%
+ 64/67
+
+
+
+ lib/notify
+
+
+
+ 66.66%
+ 4/6
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 66.66%
+ 4/6
+
+
+
+ lib/utils
+
+
+
+ 91.3%
+ 21/23
+ 81.81%
+ 9/11
+ 66.66%
+ 4/6
+ 95.23%
+ 20/21
+
+
+
+ middlewares
+
+
+
+ 53.33%
+ 8/15
+ 20%
+ 1/5
+ 42.85%
+ 3/7
+ 53.33%
+ 8/15
+
+
+
+ pages
+
+
+
+ 52.17%
+ 48/92
+ 37.08%
+ 89/240
+ 52.17%
+ 12/23
+ 52.74%
+ 48/91
+
+
+
+ pages/api
+
+
+
+ 86.36%
+ 19/22
+ 83.33%
+ 10/12
+ 66.66%
+ 2/3
+ 86.36%
+ 19/22
+
+
+
+ pages/projects/benefits-navigator
+
+
+
+ 0%
+ 0/52
+ 0%
+ 0/274
+ 0%
+ 0/14
+ 0%
+ 0/52
+
+
+
+ pages/projects/dashboard
+
+
+
+ 0%
+ 0/13
+ 0%
+ 0/94
+ 0%
+ 0/4
+ 0%
+ 0/13
+
+
+
+ pages/projects/oas-benefits-estimator
+
+
+
+ 30.55%
+ 11/36
+ 25.42%
+ 60/236
+ 36.36%
+ 4/11
+ 30.55%
+ 11/36
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/lib/notify/index.html b/main/coverage/lcov-report/lib/notify/index.html
new file mode 100644
index 0000000000..1ddf452df4
--- /dev/null
+++ b/main/coverage/lcov-report/lib/notify/index.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Code coverage report for lib/notify
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 66.66%
+ Statements
+ 4/6
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 66.66%
+ Lines
+ 4/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ submitEmail.js
+
+
+
+ 66.66%
+ 4/6
+ 100%
+ 0/0
+ 50%
+ 1/2
+ 66.66%
+ 4/6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/lib/notify/submitEmail.js.html b/main/coverage/lcov-report/lib/notify/submitEmail.js.html
new file mode 100644
index 0000000000..9e746b1010
--- /dev/null
+++ b/main/coverage/lcov-report/lib/notify/submitEmail.js.html
@@ -0,0 +1,280 @@
+
+
+
+
+
+ Code coverage report for lib/notify/submitEmail.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 66.66%
+ Statements
+ 4/6
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 50%
+ Functions
+ 1/2
+
+
+
+
+ 66.66%
+ Lines
+ 4/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+
+2x
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import "node-fetch";
+
+export const submitEmail = async (
+ data,
+ defaults,
+ templateId,
+ email,
+ notifyApiAddress,
+ notifyApiKey
+) => {
+ const notifyResponse = await fetch(notifyApiAddress, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `ApiKey-v1 ${notifyApiKey}`,
+ },
+ body: JSON.stringify({
+ email_address: email,
+ template_id: templateId,
+ // notify requires all values in the template to be present
+ // in the request.... highly annoying but providing defaults solves this
+ personalisation: {
+ ...defaults,
+ ...data,
+ },
+ }),
+ });
+
+ return [notifyResponse.status, await notifyResponse.json()];
+};
+
+export const submitEmailWithAttachment = as ync (
+ data,
+ defaults,
+ templateId,
+ email,
+ file,
+ fileName,
+ notifyApiAddress,
+ notifyApiKey
+) => {
+ const notifyResponse = await fetch(notifyApiAddress, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `ApiKey-v1 ${notifyApiKey}`,
+ },
+ body: JSON.stringify({
+ email_address: email,
+ template_id: templateId,
+ // notify requires all values in the template to be present
+ // in the request.... highly annoying but providing defaults solves this
+ personalisation: {
+ application_file: {
+ file: file,
+ filename: fileName,
+ sending_method: "attach",
+ },
+ ...defaults,
+ ...data,
+ },
+ }),
+ });
+ return [notifyResponse.status, await notifyResponse.json()];
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/lib/utils/createBreadcrumbs.js.html b/main/coverage/lcov-report/lib/utils/createBreadcrumbs.js.html
new file mode 100644
index 0000000000..a05cc5c85c
--- /dev/null
+++ b/main/coverage/lcov-report/lib/utils/createBreadcrumbs.js.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+ Code coverage report for lib/utils/createBreadcrumbs.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 3/3
+
+
+
+
+ 50%
+ Branches
+ 2/4
+
+
+
+
+ 100%
+ Functions
+ 2/2
+
+
+
+
+ 100%
+ Lines
+ 3/3
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13 1x
+1x
+1x
+
+
+
+
+
+
+
+
+
+ export const createBreadcrumbs = (breadcrumbArray, locale) => {
+ return breadcrumbArray.map((breadCrumbItem) => {
+ return {
+ text:
+ locale === "en" ? breadCrumbItem.scTitleEn : breadCrumbItem.scTitleFr,
+ link:
+ locale === "en"
+ ? breadCrumbItem.scPageNameEn
+ : breadCrumbItem.scPageNameFr,
+ };
+ });
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/lib/utils/getAllUpdateIds.js.html b/main/coverage/lcov-report/lib/utils/getAllUpdateIds.js.html
new file mode 100644
index 0000000000..fbc4ac2759
--- /dev/null
+++ b/main/coverage/lcov-report/lib/utils/getAllUpdateIds.js.html
@@ -0,0 +1,133 @@
+
+
+
+
+
+ Code coverage report for lib/utils/getAllUpdateIds.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/2
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 0%
+ Functions
+ 0/2
+
+
+
+
+ 0%
+ Lines
+ 0/1
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ export function getAllUpdateIds( items) {
+ return items.flatMap((i tem) => [
+ {
+ params: {
+ id: item.scPageNameEn,
+ },
+ locale: "en",
+ },
+ {
+ params: {
+ id: item.scPageNameFr,
+ },
+ locale: "fr",
+ },
+ ]);
+}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/lib/utils/index.html b/main/coverage/lcov-report/lib/utils/index.html
new file mode 100644
index 0000000000..92e0cf0668
--- /dev/null
+++ b/main/coverage/lcov-report/lib/utils/index.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+ Code coverage report for lib/utils
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 91.3%
+ Statements
+ 21/23
+
+
+
+
+ 81.81%
+ Branches
+ 9/11
+
+
+
+
+ 66.66%
+ Functions
+ 4/6
+
+
+
+
+ 95.23%
+ Lines
+ 20/21
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ createBreadcrumbs.js
+
+
+
+ 100%
+ 3/3
+ 50%
+ 2/4
+ 100%
+ 2/2
+ 100%
+ 3/3
+
+
+
+ getAllUpdateIds.js
+
+
+
+ 0%
+ 0/2
+ 100%
+ 0/0
+ 0%
+ 0/2
+ 0%
+ 0/1
+
+
+
+ maskEmail.js
+
+
+
+ 100%
+ 12/12
+ 100%
+ 7/7
+ 100%
+ 1/1
+ 100%
+ 11/11
+
+
+
+ stripFeedback.js
+
+
+
+ 100%
+ 6/6
+ 100%
+ 0/0
+ 100%
+ 1/1
+ 100%
+ 6/6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/lib/utils/maskEmail.js.html b/main/coverage/lcov-report/lib/utils/maskEmail.js.html
new file mode 100644
index 0000000000..cab0f15ec3
--- /dev/null
+++ b/main/coverage/lcov-report/lib/utils/maskEmail.js.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+ Code coverage report for lib/utils/maskEmail.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 12/12
+
+
+
+
+ 100%
+ Branches
+ 7/7
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 11/11
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+
+1x
+1x
+
+1x
+14x
+1x
+13x
+10x
+10x
+
+3x
+3x
+
+
+
+1x
+
+ //Function for masking email to get in the thank you page later
+export function maskEmail(email) {
+ let maskedEmail = "";
+ let x = 0;
+
+ for (var i = 0; i < email.length; i++) {
+ if (i === 0) {
+ maskedEmail += email[i];
+ } else if (email[i] !== "@" && email[i] !== "." && x <= 3) {
+ maskedEmail += "*";
+ x += 1;
+ } else {
+ maskedEmail += email[i];
+ x = 0;
+ }
+ }
+
+ return maskedEmail;
+}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/lib/utils/stripFeedback.js.html b/main/coverage/lcov-report/lib/utils/stripFeedback.js.html
new file mode 100644
index 0000000000..5783aaedb1
--- /dev/null
+++ b/main/coverage/lcov-report/lib/utils/stripFeedback.js.html
@@ -0,0 +1,178 @@
+
+
+
+
+
+ Code coverage report for lib/utils/stripFeedback.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 6/6
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 6/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+
+7x
+
+
+
+
+
+7x
+
+
+
+
+
+7x
+
+
+
+
+
+7x
+
+
+
+7x
+
+
+
+
+7x
+
+ export function stripFeedback(feedbackToClean) {
+ //Remove postal code from feedback
+ feedbackToClean = feedbackToClean.replaceAll(
+ /[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ -]?\d[ABCEGHJ-NPRSTV-Z]\d/gim,
+ "### ###"
+ );
+
+ //Remove SIN from feedback
+ feedbackToClean = feedbackToClean.replaceAll(
+ /(\d{3}\s*\d{3}\s*\d{3}|\d{3}\D*\d{3}\D*\d{3})/gm,
+ "### ### ###"
+ );
+
+ //Remove email from feedback
+ feedbackToClean = feedbackToClean.replaceAll(
+ /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*/gim,
+ "####@####.####"
+ );
+
+ //Removes phone number from feedback
+ feedbackToClean = feedbackToClean.replaceAll(
+ /(\+\d{1,2}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}/gm,
+ "# ### ### ###"
+ );
+ feedbackToClean = feedbackToClean.replaceAll(
+ /(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?/gm,
+ "# ### ### ###"
+ );
+
+ return feedbackToClean;
+}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/middlewares/index.html b/main/coverage/lcov-report/middlewares/index.html
new file mode 100644
index 0000000000..c239981c16
--- /dev/null
+++ b/main/coverage/lcov-report/middlewares/index.html
@@ -0,0 +1,131 @@
+
+
+
+
+
+ Code coverage report for middlewares
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 53.33%
+ Statements
+ 8/15
+
+
+
+
+ 20%
+ Branches
+ 1/5
+
+
+
+
+ 42.85%
+ Functions
+ 3/7
+
+
+
+
+ 53.33%
+ Lines
+ 8/15
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ initMiddleware.js
+
+
+
+ 0%
+ 0/6
+ 0%
+ 0/2
+ 0%
+ 0/4
+ 0%
+ 0/6
+
+
+
+ joi.js
+
+
+
+ 88.88%
+ 8/9
+ 33.33%
+ 1/3
+ 100%
+ 3/3
+ 88.88%
+ 8/9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/middlewares/initMiddleware.js.html b/main/coverage/lcov-report/middlewares/initMiddleware.js.html
new file mode 100644
index 0000000000..b46735521c
--- /dev/null
+++ b/main/coverage/lcov-report/middlewares/initMiddleware.js.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+ Code coverage report for middlewares/initMiddleware.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/6
+
+
+
+
+ 0%
+ Branches
+ 0/2
+
+
+
+
+ 0%
+ Functions
+ 0/4
+
+
+
+
+ 0%
+ Lines
+ 0/6
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+
+
+
+
+
+
+
+
+
+
+
+
+ // Helper method to wait for a middleware to execute before continuing
+// And to throw an error when an error happens in a middleware
+export default function initMiddleware( middleware) {
+ return (r eq, res) =>
+ new Promise((r esolve, reject) => {
+ middleware(req, res, (r esult) => {
+ if (result instanceof Error) {
+ return reject(result);
+ }
+ return resolve(result);
+ });
+ });
+}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/middlewares/joi.js.html b/main/coverage/lcov-report/middlewares/joi.js.html
new file mode 100644
index 0000000000..b96f9fe2f9
--- /dev/null
+++ b/main/coverage/lcov-report/middlewares/joi.js.html
@@ -0,0 +1,160 @@
+
+
+
+
+
+ Code coverage report for middlewares/joi.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 88.88%
+ Statements
+ 8/9
+
+
+
+
+ 33.33%
+ Branches
+ 1/3
+
+
+
+
+ 100%
+ Functions
+ 3/3
+
+
+
+
+ 88.88%
+ Lines
+ 8/9
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+1x
+1x
+
+
+1x
+1x
+2x
+
+1x
+
+
+
+ import { Schema, ValidationOptions } from "joi"; //lgtm [js/unused-local-variable]
+import { NextApiHandler } from "next"; //lgtm [js/unused-local-variable]
+
+/**
+ * middleware to validate body of request with Joi schema
+ * if valid handler will be called otherwise a 400 response with the errors will be returned
+ * @param schema {Schema} - joi validation schema
+ * @param handler {NextApiHandler} - the next handler to call if the schema is valid
+ * @param options {ValidationOptions} - the Joi validations options
+ */
+export default function validate(schema, handler, options = {}) {
+ return async (req, res) => {
+ const { error } = await schema.validate(req.body, options);
+ const valid = error === undefined;
+ I if (valid) {
+ return handler(req, res);
+ } else {
+ const { details } = error;
+ const message = details.map((i) => {
+ return { path: i.path, message: i.message };
+ });
+ res.status(400).json({ error: message });
+ }
+ };
+}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/404.js.html b/main/coverage/lcov-report/pages/404.js.html
new file mode 100644
index 0000000000..2fbfe8461c
--- /dev/null
+++ b/main/coverage/lcov-report/pages/404.js.html
@@ -0,0 +1,868 @@
+
+
+
+
+
+ Code coverage report for pages/404.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 70.58%
+ Statements
+ 12/17
+
+
+
+
+ 50%
+ Branches
+ 13/26
+
+
+
+
+ 66.66%
+ Functions
+ 2/3
+
+
+
+
+ 70.58%
+ Lines
+ 12/17
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+
+
+
+
+
+
+
+
+
+
+2x
+2x
+2x
+2x
+
+2x
+1x
+
+
+
+
+
+1x
+
+
+1x
+
+
+
+
+2x
+1x
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { useTranslation } from "next-i18next";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import Link from "next/link";
+import { ReportAProblem } from "../components/organisms/ReportAProblem";
+import { ActionButton } from "../components/atoms/ActionButton";
+import { useEffect, useState } from "react";
+import { useRouter } from "next/router";
+import aemServiceInstance from "../services/aemServiceInstance";
+
+export default function error404(props) {
+ const { t } = useTranslation("common");
+ const [loaded, setLoaded] = useState(false);
+ const router = useRouter();
+ const [pageData] = useState(props.pageData.item);
+
+ useEffect(() => {
+ I if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+
+ //If using Internet Explorer, redirect to /notsupported
+ I if (window.document.documentMode) {
+ router.push("/notsupported");
+ } else {
+ setLoaded(true);
+ }
+ }, []);
+
+ //If using Internet Explorer, render empty page so page doesn't flash before redirect
+ if (!loaded) {
+ return <div></div>;
+ }
+
+ return (
+ <>
+ <div className="min-h-screen relative">
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title data-gc-analytics-error="404">
+ {pageData.scContentEn.json[0].content[0].value} (404) |{" "}
+ {pageData.scContentFr.json[0].content[0].value} (404)
+ </title>
+ <meta
+ name="description"
+ content={`${t("404errorMetaDescription")}`}
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+
+ {/* DCMI Meta Tags */}
+ <meta name="dcterms.title" content={`404 — ${t("siteTitle")}`} />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2/T"
+ />
+ <meta
+ name="dcterms.description"
+ content={`${t("404errorMetaDescription")}`}
+ />
+ <meta
+ name="dcterms.subject"
+ title="gccore"
+ content={t("metaSubject")}
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-06-01" />
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta name="dcterms.spatial" content="Canada" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca/" + `${props.locale}` + "/404"
+ }
+ />
+ <meta property="og:title" content={`404 — ${t("siteTitle")}`} />
+ <meta
+ property="og:description"
+ content={`${t("404errorMetaDescription")}`}
+ />
+ <meta property="og:image" content={`${t("metaImage")}`} />
+ <meta property="og:image:alt" content={`${t("siteTitle")}`} />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca/" + `${props.locale}` + "/404"
+ }
+ />
+ <meta property="twitter:title" content={`500 — ${t("siteTitle")}`} />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content={`${t("404errorMetaDescription")}`}
+ />
+ <meta property="twitter:image" content={`${t("metaImage")}`} />
+ <meta property="twitter:image:alt" content={`${t("siteTitle")}`} />
+ </Head>
+ <section className="layout-container pb-44">
+ <div className="pt-6">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageEn._path
+ : pageData.scGcImages[0].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageAltTextEn
+ : pageData.scGcImages[0].scImageAltTextFr
+ }
+ width={575}
+ height={59}
+ />
+ </div>
+ <div className="flex flex-col lg:flex-row justify-between items-center lg:items-start mt-8">
+ <div>
+ <div className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 xl:h-400px lg:h-500px mb-8 lg:mb-0">
+ <h1 className="font-bold font-display mb-4">
+ {pageData.scContentEn.json[0].content[0].value}
+ </h1>
+ <p className="font-bold font-body mb-8">
+ {pageData.scContentEn.json[1].content[0].value}
+ </p>
+ <p className="font-body text-sm mb-4 leading-30px">
+ {pageData.scContentEn.json[2].content[0].value}
+ </p>
+ <div className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentEn.json[3].content[0].value}
+ <Link
+ href={pageData.scContentEn.json[3].content[1].data.href}
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentEn.json[3].content[1].value}
+ </Link>
+ </p>
+ </div>
+ </div>
+ <ReportAProblem language={"en"} />
+ </div>
+ <div className="flex items-center justify-center circle-background my-8 mx-4 lg:mt-0 lightbulb-bg shrink-0">
+ <span className="relative lightbulb">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[0].scImageEn._path
+ : pageData.scImageList[0].scImageFr._path
+ }`}
+ alt=""
+ />
+ </span>
+ </div>
+ <div>
+ <div
+ className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 xl:h-400px lg:h-500px mb-8 lg:mb-0"
+ lang="fr"
+ >
+ <h1 className="font-bold font-display mb-4">
+ {pageData.scContentFr.json[0].content[0].value}
+ </h1>
+ <p className="font-bold font-body mb-8">
+ {pageData.scContentFr.json[1].content[0].value}
+ </p>
+ <p className="font-body text-sm mb-4 leading-30px">
+ {pageData.scContentFr.json[2].content[0].value}
+ </p>
+ <div className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentFr.json[3].content[0].value}
+ <Link
+ href={pageData.scContentFr.json[3].content[1].data.href}
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentFr.json[3].content[1].value}
+ </Link>
+ </p>
+ </div>
+ </div>
+ <ReportAProblem language="fr" />
+ </div>
+ </div>
+ </section>
+ <footer className="h-100px w-screen bg-footer-background-color absolute bottom-0">
+ <div className="layout-container flex justify-between lg:flex-row-reverse pt-4 lg:pt-0 lg:mt-8">
+ <ActionButton
+ id="404TopOfPageButton"
+ href="#"
+ custom="text-left w-32 flex flex-col lg:hidden"
+ text="Top of page / Haut de la page"
+ icon="icon-up-caret"
+ iconEnd
+ />
+ <span className="relative footer-logo">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageEn._path
+ : pageData.scGcImages[1].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageAltTextEn
+ : pageData.scGcImages[1].scImageAltTextFr
+ }
+ />
+ </span>
+ </div>
+ </footer>
+ </div>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ const { data } = await aemServiceInstance.getFragment("error404Query");
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ ...(await serverSideTranslations("en", ["common"])),
+ ...(await serverSideTranslations("fr", ["common"])),
+ pageData: data.scLabsErrorPagev1ByPath,
+ },
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/500.js.html b/main/coverage/lcov-report/pages/500.js.html
new file mode 100644
index 0000000000..519f023336
--- /dev/null
+++ b/main/coverage/lcov-report/pages/500.js.html
@@ -0,0 +1,946 @@
+
+
+
+
+
+ Code coverage report for pages/500.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 70.58%
+ Statements
+ 12/17
+
+
+
+
+ 50%
+ Branches
+ 12/24
+
+
+
+
+ 66.66%
+ Functions
+ 2/3
+
+
+
+
+ 70.58%
+ Lines
+ 12/17
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+
+
+
+
+
+
+
+
+
+
+2x
+2x
+2x
+2x
+
+2x
+1x
+
+
+
+
+
+1x
+
+
+1x
+
+
+
+
+2x
+1x
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { useTranslation } from "next-i18next";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import Link from "next/link";
+import { ReportAProblem } from "../components/organisms/ReportAProblem";
+import { ActionButton } from "../components/atoms/ActionButton";
+import { useEffect, useState } from "react";
+import { useRouter } from "next/router";
+import aemServiceInstance from "../services/aemServiceInstance";
+
+export default function error500(props) {
+ const { t } = useTranslation("common");
+ const [loaded, setLoaded] = useState(false);
+ const router = useRouter();
+ const [pageData] = useState(props.pageData.item);
+
+ useEffect(() => {
+ I if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+
+ //If using Internet Explorer, redirect to /notsupported
+ I if (window.document.documentMode) {
+ router.push("/notsupported");
+ } else {
+ setLoaded(true);
+ }
+ }, []);
+
+ //If using Internet Explorer, render empty page so page doesn't flash before redirect
+ if (!loaded) {
+ return <div></div>;
+ }
+
+ return (
+ <>
+ <div className="min-h-screen relative">
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title data-gc-analytics-error="500">
+ {pageData.scContentEn.json[0].content[0].value} (500) |{" "}
+ {pageData.scContentFr.json[0].content[0].value} (500)
+ </title>
+ <meta
+ name="description"
+ content="Error message stating that the server is down, or the URL is incorrect or expired"
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta content="width=device-width, initial-scale=1" name="viewport" />
+ <meta name="robots" content="noindex, nofollow" />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ property="dcterms:title"
+ lang="en"
+ content="The web site has reported an error (500)"
+ />
+ <meta
+ property="dcterms:title"
+ lang="fr"
+ content="Le site Web a signalé une erreur (500)"
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2"
+ />
+ <meta
+ property="dcterms:description"
+ lang="en"
+ content="Error message stating that the server is down, or the URL is incorrect or expired."
+ />
+ <meta
+ property="dcterms:description"
+ lang="fr"
+ content="Message d’erreur indiquant que le serveur est en panne ou l’URL est incorrecte ou expirée."
+ />
+ <meta property="dcterms:creator" lang="en" content="Service Canada" />
+ <meta property="dcterms:creator" lang="fr" content="Service Canada" />
+ <meta
+ property="dcterms:subject"
+ lang="en"
+ title="gccore"
+ content="GV Government and Politics;Government services"
+ />
+ <meta
+ property="dcterms:subject"
+ lang="fr"
+ title="gccore"
+ content="GV Gouvernement et vie politique;Services gouvernementaux"
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-06-22" />
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta property="dcterms:issued" content="2021-06-22" />
+ <meta property="dcterms:modified" content="2021-MM-DD" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca/" + `${props.locale}` + "/500"
+ }
+ />
+ <meta
+ property="og:title"
+ content="The web site has reported an error (500) | Le site Web a signalé une
+ erreur (500)"
+ />
+ <meta
+ property="og:description"
+ content="Error message stating that the server is down, or the URL is incorrect or expired"
+ />
+ <meta property="og:image" content={`${t("metaImage")}`} />
+ <meta property="og:image:alt" content={`${t("siteTitle")}`} />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca/" + `${props.locale}` + "/500"
+ }
+ />
+ <meta
+ property="twitter:title"
+ content="Error message stating that the server is down, or the URL is incorrect or expired"
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content="Error message stating that the server is down, or the URL is incorrect or expired"
+ />
+ <meta property="twitter:image" content={`${t("metaImage")}`} />
+ <meta property="twitter:image:alt" content={`${t("siteTitle")}`} />
+ </Head>
+ <section className="layout-container pb-44">
+ <div className="pt-6">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageEn._path
+ : pageData.scGcImages[0].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageAltTextEn
+ : pageData.scGcImages[0].scImageAltTextFr
+ }
+ width={575}
+ height={59}
+ />
+ </div>
+ <div className="flex flex-col lg:flex-row justify-between items-center lg:items-start mt-8">
+ <div>
+ <div className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 xl:h-400px lg:h-500px mb-8 lg:mb-0">
+ <h1 className="font-bold font-display mb-4">
+ {pageData.scContentEn.json[0].content[0].value}
+ </h1>
+ <p className="font-bold font-body mb-8">
+ {pageData.scContentEn.json[1].content[0].value}
+ </p>
+ <p className="font-body text-sm mb-4 leading-30px">
+ {pageData.scContentEn.json[2].content[0].value}
+ </p>
+ <div className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentEn.json[3].content[0].value}
+ <Link
+ href={pageData.scContentEn.json[3].content[1].data.href}
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentEn.json[3].content[1].value}
+ </Link>
+ </p>
+ </div>
+ </div>
+ <ReportAProblem language={"en"} />
+ </div>
+ <div className="flex items-center justify-center circle-background my-8 lg:mt-0 lightbulb-bg">
+ <span className="relative lightbulb">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[0].scImageEn._path
+ : pageData.scImageList[0].scImageFr._path
+ }`}
+ alt=""
+ />
+ </span>
+ </div>
+ <div>
+ <div
+ className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 xl:h-400px lg:h-500px mb-8 lg:mb-0"
+ lang="fr"
+ >
+ <h1 className="font-bold font-display mb-4">
+ {pageData.scContentFr.json[0].content[0].value}
+ </h1>
+ <p className="font-bold font-body mb-8">
+ {pageData.scContentFr.json[1].content[0].value}
+ </p>
+ <p className="font-body text-sm mb-4 leading-30px">
+ {pageData.scContentFr.json[2].content[0].value}
+ </p>
+ <div className="flex">
+ <span className="error50-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentFr.json[3].content[0].value}
+ <Link
+ href={pageData.scContentFr.json[3].content[1].data.href}
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentFr.json[3].content[1].value}
+ </Link>
+ </p>
+ </div>
+ </div>
+ <ReportAProblem language="fr" />
+ </div>
+ </div>
+ </section>
+ <footer className="h-100px w-screen bg-footer-background-color absolute bottom-0">
+ <div className="layout-container flex justify-between lg:flex-row-reverse pt-4 lg:pt-0 lg:mt-8">
+ <ActionButton
+ id="404TopOfPageButton"
+ href="#"
+ custom="text-left w-32 flex flex-col lg:hidden"
+ text="Top of page / Haut de la page"
+ icon="icon-up-caret"
+ iconEnd
+ />
+ <span className="relative footer-logo">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageEn._path
+ : pageData.scGcImages[1].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageAltTextEn
+ : pageData.scGcImages[1].scImageAltTextFr
+ }
+ />
+ </span>
+ </div>
+ </footer>
+ </div>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ const { data } = await aemServiceInstance.getFragment("error500Query");
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ ...(await serverSideTranslations("en", ["common"])),
+ ...(await serverSideTranslations("fr", ["common"])),
+ pageData: data.scLabsErrorPagev1ByPath,
+ },
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/_app.js.html b/main/coverage/lcov-report/pages/_app.js.html
new file mode 100644
index 0000000000..a385c89496
--- /dev/null
+++ b/main/coverage/lcov-report/pages/_app.js.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+ Code coverage report for pages/_app.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/2
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 0%
+ Functions
+ 0/1
+
+
+
+
+ 0%
+ Lines
+ 0/2
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import { appWithTranslation } from "next-i18next";
+import "../styles/globals.css";
+import "../styles/forms.css";
+import "../styles/menu.css";
+import Head from "next/head";
+import { config } from "@fortawesome/fontawesome-svg-core";
+import "@fortawesome/fontawesome-svg-core/styles.css";
+
+config.autoAddCss = false;
+
+function MyApp( { Component, pageProps }) {
+ return (
+ <>
+ <Head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta
+ name="og:builddate"
+ content={process.env.NEXT_PUBLIC_BUILD_DATE}
+ />
+ <meta name="og:buildid" content={process.env.NEXT_PUBLIC_BUILD_ID} />
+ </Head>
+ <Component {...pageProps} />
+ </>
+ );
+}
+
+export default appWithTranslation(MyApp);
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/api/healthcheck.js.html b/main/coverage/lcov-report/pages/api/healthcheck.js.html
new file mode 100644
index 0000000000..fe1a710ba1
--- /dev/null
+++ b/main/coverage/lcov-report/pages/api/healthcheck.js.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Code coverage report for pages/api/healthcheck.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/1
+
+
+
+
+ 100%
+ Branches
+ 0/0
+
+
+
+
+ 0%
+ Functions
+ 0/1
+
+
+
+
+ 0%
+ Lines
+ 0/1
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+
+
+
+ // TODO: add checks for the status of the CMS
+export default function handler( req, res) {
+ res.status(200).json({ message: "Status OK" });
+}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/api/index.html b/main/coverage/lcov-report/pages/api/index.html
new file mode 100644
index 0000000000..91b5631ac2
--- /dev/null
+++ b/main/coverage/lcov-report/pages/api/index.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+ Code coverage report for pages/api
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 86.36%
+ Statements
+ 19/22
+
+
+
+
+ 83.33%
+ Branches
+ 10/12
+
+
+
+
+ 66.66%
+ Functions
+ 2/3
+
+
+
+
+ 86.36%
+ Lines
+ 19/22
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ healthcheck.js
+
+
+
+ 0%
+ 0/1
+ 100%
+ 0/0
+ 0%
+ 0/1
+ 0%
+ 0/1
+
+
+
+ report-a-problem.js
+
+
+
+ 84.61%
+ 11/13
+ 80%
+ 8/10
+ 100%
+ 1/1
+ 84.61%
+ 11/13
+
+
+
+ robots.js
+
+
+
+ 100%
+ 8/8
+ 100%
+ 2/2
+ 100%
+ 1/1
+ 100%
+ 8/8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/api/report-a-problem.js.html b/main/coverage/lcov-report/pages/api/report-a-problem.js.html
new file mode 100644
index 0000000000..b20dc23106
--- /dev/null
+++ b/main/coverage/lcov-report/pages/api/report-a-problem.js.html
@@ -0,0 +1,274 @@
+
+
+
+
+
+ Code coverage report for pages/api/report-a-problem.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 84.61%
+ Statements
+ 11/13
+
+
+
+
+ 80%
+ Branches
+ 8/10
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 84.61%
+ Lines
+ 11/13
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+
+
+
+
+
+
+5x
+
+5x
+
+
+
+2x
+
+3x
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2x
+1x
+
+1x
+1x
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+ import { submitEmail } from "../../lib/notify/submitEmail";
+
+/**
+ * API handler for report a problem functionality. This will take form submissions
+ * and call GC Notify service with the appropriate template and data
+ */
+async function handler(req, res) {
+ if (req.method === "POST") {
+ // if there is no data specified we don't want to call notify
+ if (
+ Object.keys(req.body).length <= 1 ||
+ !process.env.REPORT_A_PROBLEM_ENABLED
+ ) {
+ res.status(200).end("OK");
+ } else {
+ try {
+ const notifyResponse = await submitEmail(
+ {
+ ...req.body,
+ page_name: req.headers.referer || "unknown",
+ },
+ {
+ page_name: "unknown",
+ language: "unknown",
+ incorrect_information: "no",
+ incorrect_information_details: "",
+ unclear_information: "no",
+ unclear_information_details: "",
+ info_not_found: "no",
+ info_not_found_details: "",
+ adaptive_technology: "no",
+ adaptive_technology_details: "",
+ privacy_issues: "no",
+ privacy_issues_details: "",
+ no_where_else_to_go: "no",
+ no_where_else_to_go_details: "",
+ other: "no",
+ other_details: "",
+ },
+ process.env.NOTIFY_REPORT_A_PROBLEM_TEMPLATE_ID,
+ process.env.NEXT_PUBLIC_NOTIFY_REPORT_A_PROBLEM_EMAIL,
+ process.env.NOTIFY_BASE_API_URL + "/v2/notifications/email",
+ process.env.NOTIFY_API_KEY
+ );
+
+ if (notifyResponse[0] === 201) {
+ res.status(200).end("OK");
+ } else {
+ console.error(notifyResponse[1]);
+ res.status(500).end("ERROR");
+ }
+ } catch (e) {
+ console.error(e);
+ res.status(500).end("ERROR");
+ }
+ }
+ } else E {
+ res.setHeader("Allow", ["POST"]);
+ res.status(405).end(`Method ${req.method} Not Allowed`);
+ }
+}
+
+export default handler;
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/api/robots.js.html b/main/coverage/lcov-report/pages/api/robots.js.html
new file mode 100644
index 0000000000..6fccac4386
--- /dev/null
+++ b/main/coverage/lcov-report/pages/api/robots.js.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+ Code coverage report for pages/api/robots.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 8/8
+
+
+
+
+ 100%
+ Branches
+ 2/2
+
+
+
+
+ 100%
+ Functions
+ 1/1
+
+
+
+
+ 100%
+ Lines
+ 8/8
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+
+
+
+
+
+
+2x
+1x
+1x
+1x
+1x
+
+1x
+1x
+
+2x
+
+ /**
+ * Disallow web crawlers to scrape our dev site, while only blocking crawlers from scraping the api routes in production
+ * @param req
+ * @param res
+ * @returns {Promise<void>}
+ */
+export default async function handler(req, res) {
+ if (process.env.NODE_ENV === "production") {
+ res.write("User-agent: *\n");
+ res.write("Disallow: /api\n");
+ res.write("Disallow: /projects/*\n");
+ res.write("Disallow: /notsupported.js\n");
+ } else {
+ res.write("User-agent: *\n");
+ res.write("Disallow: /\n");
+ }
+ res.end();
+}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/error.js.html b/main/coverage/lcov-report/pages/error.js.html
new file mode 100644
index 0000000000..50f07040ea
--- /dev/null
+++ b/main/coverage/lcov-report/pages/error.js.html
@@ -0,0 +1,1507 @@
+
+
+
+
+
+ Code coverage report for pages/error.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/16
+
+
+
+
+ 0%
+ Branches
+ 0/50
+
+
+
+
+ 0%
+ Functions
+ 0/3
+
+
+
+
+ 0%
+ Lines
+ 0/16
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import Link from "next/link";
+import { ReportAProblem } from "../components/organisms/ReportAProblem";
+import { ActionButton } from "../components/atoms/ActionButton";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useTranslation } from "next-i18next";
+import { useRouter } from "next/router";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../services/aemServiceInstance";
+
+export default function ErrorPage( props) {
+ const { t } = useTranslation("common");
+ const { query } = useRouter();
+ const [pageData] = useState(props.pageData.item);
+
+ const statusCode = query.statusCode || "";
+ const errorTitle =
+ query.errorTitle || pageData.scContentEn.json[0].content[0].value;
+ const errorTitleFr =
+ query.errorTitleFr || pageData.scContentFr.json[0].content[0].value;
+ const errorMessage =
+ query.errorMessage || pageData.scContentEn.json[1].content[0].value;
+ const errorMessageFr =
+ query.errorMessageFr || pageData.scContentFr.json[1].content[0].value;
+
+ useEffect(() => {
+ if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ return (
+ <>
+ <div className="min-h-screen relative">
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title data-gc-analytics-error={props.statusCode}>
+ {pageData.scContentEn.json[0].content[0].value} |{" "}
+ {pageData.scContentFr.json[0].content[0].value}
+ </title>
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta content="width=device-width, initial-scale=1" name="viewport" />
+ <meta
+ name="description"
+ content={
+ props.locale === "en"
+ ? `${errorTitle}` + `${errorMessage}`
+ : `${errorTitleFr}` + `${errorMessageFr}`
+ }
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <meta name="robots" content="noindex, nofollow" />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ property="dcterms:title"
+ lang="en"
+ content="The web site has reported an error"
+ />
+ <meta
+ property="dcterms:title"
+ lang="fr"
+ content="Le site Web a signalé une erreur"
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2"
+ />
+ <meta property="dcterms:creator" lang="en" content="Service Canada" />
+ <meta property="dcterms:creator" lang="fr" content="Service Canada" />
+
+ <meta
+ property="dcterms:subject"
+ lang="en"
+ title="gccore"
+ content="GV Government and Politics;Government services"
+ />
+ <meta
+ property="dcterms:subject"
+ lang="fr"
+ title="gccore"
+ content="GV Gouvernement et vie politique;Services gouvernementaux"
+ />
+ <meta
+ property="dcterms:description"
+ lang="en"
+ content="Error message stating that the site has reported an error."
+ />
+ <meta
+ property="dcterms:description"
+ lang="fr"
+ content="Message d’erreur indiquant que le site a signalé une erreur."
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-06-28" />
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta property="dcterms:modified" content="2021-12-16" />
+ <meta property="dcterms:issued" content="2021-06-28" />
+ <meta
+ name="dcterms.subject"
+ content="GV Government and Politics;Government services"
+ />
+ <meta name="dcterms.language" title="ISO639-2" content="eng" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca/" + `${props.locale}` + "/error"
+ }
+ />
+ <meta
+ property="og:title"
+ content="The web site has reported an error | Le site Web a signalé une erreur"
+ />
+ <meta
+ property="og:description"
+ content={
+ props.locale === "en"
+ ? `${errorTitle}` + `${errorMessage}`
+ : `${errorTitleFr}` + `${errorMessageFr}`
+ }
+ />
+ <meta property="og:image" content={`${t("metaImage")}`} />
+ <meta property="og:image:alt" content={`${t("siteTitle")}`} />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca/" + `${props.locale}` + "/error"
+ }
+ />
+ <meta
+ property="twitter:title"
+ content="The web site has reported an error | Le site Web a signalé une erreur"
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content={
+ props.locale === "en"
+ ? `${errorTitle}` + `${errorMessage}`
+ : `${errorTitleFr}` + `${errorMessageFr}`
+ }
+ />
+ <meta property="twitter:image" content={`${t("metaImage")}`} />
+ <meta property="twitter:image:alt" content={`${t("siteTitle")}`} />
+ </Head>
+ <main>
+ <section className="layout-container pb-44">
+ <div className="pt-6">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageEn._path
+ : pageData.scGcImages[0].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageAltTextEn
+ : pageData.scGcImages[0].scImageAltTextFr
+ }
+ width={575}
+ height={59}
+ />
+ </div>
+ <div className="flex flex-col lg:flex-row justify-between items-center lg:items-start mt-8">
+ {/* Left Side (English section) */}
+ <div>
+ <div className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 lg:h-500px mb-8 lg:mb-0">
+ <h1
+ className="font-bold font-display mb-4"
+ data-testid="heading-en"
+ >
+ {errorTitle}
+ </h1>
+ {statusCode ? (
+ <p
+ className="font-bold font-body mb-8"
+ data-testid="statuscode-en"
+ >
+ {pageData.scContentEn.json[2].content[0].value}{" "}
+ {statusCode}
+ </p>
+ ) : (
+ ""
+ )}
+ <p
+ className="font-body text-p font-bold mb-4 leading-30px"
+ data-testid="errormessage-en"
+ >
+ {errorMessage}
+ </p>
+ {errorMessage === "Wrong URL" ? (
+ <>
+ {/* Wrong URL English Section */}
+ <p className="font-body text-sm leading-30px mb-5">
+ {pageData.scContentEn.json[3].content[0].value}
+ </p>
+ <ul>
+ <li className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentEn.json[4].content[0].value}
+ </p>
+ </li>
+ <li className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentEn.json[5].content[0].value}
+ <a
+ href={`mailto:${process.env.NEXT_PUBLIC_NOTIFY_REPORT_A_PROBLEM_EMAIL}`}
+ className="text-custom-blue-link underline"
+ >
+ {
+ process.env
+ .NEXT_PUBLIC_NOTIFY_REPORT_A_PROBLEM_EMAIL
+ }
+ </a>{" "}
+ {pageData.scContentEn.json[6].content[0].value}
+ </p>
+ </li>
+ </ul>
+ <p className="font-body text-sm leading-30px mt-5">
+ {pageData.scContentEn.json[7].content[0].value}
+ </p>
+ </>
+ ) : errorMessage === "Expired URL" ? (
+ <>
+ {/* Expired URL English Section */}
+ <p className="font-body text-sm leading-30px mb-5">
+ {pageData.scContentEn.json[8].content[0].value}
+ </p>
+ <ul>
+ <li className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ <Link
+ href={
+ pageData.scContentEn.json[9].content[0].data
+ .href
+ }
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentEn.json[9].content[0].value}
+ </Link>{" "}
+ {pageData.scContentEn.json[9].content[1].value}
+ </p>
+ </li>
+ </ul>
+ <p className="font-body text-sm leading-30px mt-5">
+ {pageData.scContentEn.json[7].content[0].value}
+ </p>
+ </>
+ ) : (
+ /* General Error English Section */
+ <div className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentEn.json[10].content[0].value}
+ <Link
+ href={
+ pageData.scContentEn.json[10].content[1].data.href
+ }
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentEn.json[10].content[1].value}
+ </Link>
+ </p>
+ </div>
+ )}
+ </div>
+ <ReportAProblem language="en" />
+ </div>
+ <div className="flex items-center justify-center circle-background my-8 lg:mt-0 lightbulb-bg">
+ <span className="relative lightbulb">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[0].scImageEn._path
+ : pageData.scImageList[0].scImageFr._path
+ }`}
+ alt=""
+ />
+ </span>
+ </div>
+ {/* Right Side (French section) */}
+ <div>
+ <div
+ className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 lg:h-500px mb-8 lg:mb-0"
+ lang="fr"
+ >
+ <h1
+ className="font-bold font-display mb-4"
+ data-testid="heading-fr"
+ >
+ {errorTitleFr}
+ </h1>
+ {statusCode ? (
+ <p
+ className="font-bold font-body mb-8"
+ data-testid="statuscode-fr"
+ >
+ {pageData.scContentFr.json[2].content[0].value}{" "}
+ {statusCode}
+ </p>
+ ) : (
+ ""
+ )}
+ <p
+ className="font-body text-p font-bold mb-4 leading-30px"
+ data-testid="errormessage-fr"
+ >
+ {errorMessageFr}
+ </p>
+ {errorMessageFr === "URL erronée" ? (
+ <>
+ {/* Wrong URL French Section */}
+ <p className="font-body text-sm leading-30px mb-5">
+ {pageData.scContentFr.json[3].content[0].value}
+ </p>
+ <ul>
+ <li className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentFr.json[4].content[0].value}
+ </p>
+ </li>
+ <li className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentFr.json[5].content[0].value}
+ <a
+ href={`mailto:${process.env.NEXT_PUBLIC_NOTIFY_REPORT_A_PROBLEM_EMAIL}`}
+ className="text-custom-blue-link underline"
+ >
+ {
+ process.env
+ .NEXT_PUBLIC_NOTIFY_REPORT_A_PROBLEM_EMAIL
+ }
+ </a>{" "}
+ {pageData.scContentFr.json[6].content[0].value}
+ </p>
+ </li>
+ </ul>
+ <p className="font-body text-sm leading-30px mt-5">
+ {pageData.scContentFr.json[7].content[0].value}
+ </p>
+ </>
+ ) : errorMessageFr === "URL expirée" ? (
+ <>
+ {/* Expired URL French Section */}
+ <p className="font-body text-sm leading-30px mb-5">
+ {pageData.scContentFr.json[8].content[0].value}
+ </p>
+ <ul>
+ <li className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ <Link
+ href={
+ pageData.scContentFr.json[9].content[0].data
+ .href
+ }
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentFr.json[9].content[0].value}
+ </Link>{" "}
+ {pageData.scContentFr.json[9].content[1].value}
+ </p>
+ </li>
+ </ul>
+ <p className="font-body text-sm leading-30px mt-5">
+ {pageData.scContentFr.json[7].content[0].value}
+ </p>
+ </>
+ ) : (
+ /* General Error French Section */
+ <div className="flex">
+ <span className="error404-link" />
+ <p className="font-body text-sm leading-30px">
+ {pageData.scContentFr.json[10].content[0].value}
+ <Link
+ href={
+ pageData.scContentFr.json[10].content[1].data.href
+ }
+ className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ >
+ {pageData.scContentFr.json[10].content[1].value}
+ </Link>
+ </p>
+ </div>
+ )}
+ </div>
+ <ReportAProblem language="fr" />
+ </div>
+ </div>
+ </section>
+ </main>
+ <footer className="h-100px w-screen bg-footer-background-color absolute bottom-0">
+ <div className="layout-container flex justify-between lg:flex-row-reverse pt-4 lg:pt-0 lg:mt-8">
+ <ActionButton
+ id="errorTopOfPageButton"
+ href="#"
+ custom="text-left w-32 flex flex-col lg:hidden"
+ text="Top of page / Haut de la page"
+ icon="icon-up-caret"
+ iconEnd
+ />
+ <span className="relative footer-logo">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageEn._path
+ : pageData.scGcImages[1].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageAltTextEn
+ : pageData.scGcImages[1].scImageAltTextFr
+ }
+ />
+ </span>
+ </div>
+ </footer>
+ </div>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ const { data } = await aemServiceInstance.getFragment("customErrorQuery");
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ ...(await serverSideTranslations("en", ["common"])),
+ ...(await serverSideTranslations("fr", ["common"])),
+ pageData: data.scLabsErrorPagev1ByPath,
+ },
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/home.js.html b/main/coverage/lcov-report/pages/home.js.html
new file mode 100644
index 0000000000..eba50ab072
--- /dev/null
+++ b/main/coverage/lcov-report/pages/home.js.html
@@ -0,0 +1,1312 @@
+
+
+
+
+
+ Code coverage report for pages/home.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 66.66%
+ Statements
+ 10/15
+
+
+
+
+ 47.5%
+ Branches
+ 38/80
+
+
+
+
+ 80%
+ Functions
+ 4/5
+
+
+
+
+ 66.66%
+ Lines
+ 10/15
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+1x
+4x
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import Card from "../components/molecules/Card";
+import { ContextualAlert } from "@dts-stn/service-canada-design-system";
+import aemServiceInstance from "../services/aemServiceInstance";
+import { Heading } from "@dts-stn/service-canada-design-system";
+
+export default function Home(props) {
+ const [pageData] = useState(props.pageData.item);
+ const [experimentsData] = useState(props.experimentsData);
+
+ const currentProjects = experimentsData.filter((project) => {
+ return (
+ project.scLabProjectStatus[0] ===
+ "gc:custom/decd-endc/project-status/current"
+ );
+ });
+
+ const displayCurrentProjects = currentProjects.map((project) => (
+ <li key={project.scId} className="list-none ml-0">
+ <Card
+ showImage
+ showTag={
+ project.scTitleEn === "Old Age Security Benefits Estimator"
+ ? true
+ : false
+ }
+ tagLabel={props.locale === "en" ? "New update" : "Nouvelle mise à jour"}
+ tag="new_update"
+ imgSrc={
+ // TODO images should always be fetched from the same place in the response data i.e. using the socialMediaImage field
+ project.scId === "BENEFITS-NAVIGATOR-OVERVIEW"
+ ? props.locale === "en"
+ ? `${project.scFragments[0].scImageEn._publishUrl}`
+ : `${project.scFragments[0].scImageFr._publishUrl}`
+ : props.locale === "en"
+ ? `https://www.canada.ca${project.scSocialMediaImageEn._path}`
+ : `https://www.canada.ca${project.scSocialMediaImageFr._path}`
+ }
+ imgAlt={
+ props.locale === "en"
+ ? project.scSocialMediaImageAltTextEn
+ : project.scSocialMediaImageAltTextFr
+ }
+ title={props.locale === "en" ? project.scTitleEn : project.scTitleFr}
+ href={
+ props.locale === "en" ? project.scPageNameEn : project.scPageNameFr
+ }
+ description={
+ props.locale === "en"
+ ? project.scDescriptionEn.json[0].content[0].value
+ : project.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ </li>
+ ));
+
+ useEffect(() => {
+ I if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ return (
+ <>
+ <Layout
+ locale={props.locale}
+ langUrl={
+ props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+ }
+ dateModifiedOverride={pageData.scDateModifiedOverwrite}
+ >
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title>
+ {props.locale === "en"
+ ? pageData.scShortTitleEn
+ : pageData.scShortTitleFr}
+ </title>
+ <meta
+ name="description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta
+ name="keywords"
+ content={
+ props.locale === "en"
+ ? pageData.scKeywordsEn
+ : pageData.scKeywordsFr
+ }
+ />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ name="dcterms.title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2/T"
+ />
+ <meta
+ name="dcterms.description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ name="dcterms.subject"
+ title="gccore"
+ content={pageData.scSubject}
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-03-18" />
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta name="dcterms.spatial" content="Canada" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="og:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ property="og:description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ property="og:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="og:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="twitter:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ property="twitter:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="twitter:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ </Head>
+ <section className="layout-container">
+ <div className="grid grid-cols-4">
+ <div className="col-span-4">
+ <Heading
+ tabIndex="-1"
+ id="pageMainTitle"
+ title={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[0].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[0].content[0]
+ .value
+ }
+ />
+ </div>
+ <p className="font-body col-span-4 xl:col-span-2 row-start-2">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+ : pageData.scFragments[0].scContentFr.json[1].content[0].value}
+ </p>
+ <p className="font-body col-span-4 xl:col-span-2 row-start-3 pt-4 xxl:pt-0">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[2].content[0].value
+ : pageData.scFragments[0].scContentFr.json[2].content[0].value}
+ </p>
+ <div className="hidden xl:grid col-span-2 col-start-3 row-start-2 row-span-2">
+ <div className="flex justify-center">
+ <span
+ className="w-full"
+ style={{ height: "260px", width: "380px", minWidth: "380px" }}
+ role="presentation"
+ >
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[1].scImageEn._publishUrl
+ : pageData.scFragments[1].scImageFr._publishUrl
+ }
+ alt=""
+ />
+ </span>
+ </div>
+ </div>
+ </div>
+ <div className="lg:flex">
+ <span className="w-full">
+ <h2>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[3].content[0].value
+ : pageData.scFragments[0].scContentFr.json[3].content[0]
+ .value}{" "}
+ </h2>
+ <p className="font-body">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[4].content[0].value
+ : pageData.scFragments[0].scContentFr.json[4].content[0]
+ .value}{" "}
+ </p>
+ <ul>
+ <li>
+ <p className="font-body">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[5].content[0]
+ .content[0].value
+ : pageData.scFragments[0].scContentFr.json[5].content[0]
+ .content[0].value}{" "}
+ </p>
+ </li>
+ <li>
+ <p className="font-body">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[5].content[1]
+ .content[0].value
+ : pageData.scFragments[0].scContentFr.json[5].content[1]
+ .content[0].value}{" "}
+ </p>
+ </li>
+ </ul>
+ </span>
+ </div>
+ <h2>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[6].content[0].value
+ : pageData.scFragments[0].scContentFr.json[6].content[0]
+ .value}{" "}
+ </h2>
+ <div className="mb-8">
+ <ContextualAlert
+ id="info-alert"
+ type="info"
+ alert_icon_alt_text="info icon"
+ alert_icon_id="info icon"
+ message_heading={
+ props.locale === "en"
+ ? pageData.scFragments[2].scTitleEn
+ : pageData.scFragments[2].scTitleFr
+ }
+ message_body={
+ props.locale === "en" ? (
+ <>
+ {
+ pageData.scFragments[2].scContentEn.json[0].content[0]
+ .value
+ }
+ <a
+ className="underline text-canada-footer-font hover:text-canada-footer-hover-font-blue"
+ href={
+ pageData.scFragments[2].scContentEn.json[0].content[1]
+ .data.href
+ }
+ >
+ {
+ pageData.scFragments[2].scContentEn.json[0].content[1]
+ .value
+ }
+ </a>
+ {
+ pageData.scFragments[2].scContentEn.json[0].content[2]
+ .value
+ }
+ </>
+ ) : (
+ <>
+ {
+ pageData.scFragments[2].scContentFr.json[0].content[0]
+ .value
+ }
+ <a
+ className="underline text-canada-footer-font hover:text-canada-footer-hover-font-blue"
+ href={
+ pageData.scFragments[2].scContentFr.json[0].content[1]
+ .data.href
+ }
+ >
+ {
+ pageData.scFragments[2].scContentFr.json[0].content[1]
+ .value
+ }
+ </a>
+ {
+ pageData.scFragments[2].scContentEn.json[0].content[2]
+ .value
+ }
+ </>
+ )
+ }
+ />
+ </div>
+ <ul className="grid lg:grid-cols-2 gap-x-4 gap-y-4 list-none ml-0">
+ {displayCurrentProjects}
+ </ul>
+ </section>
+ </Layout>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ const { data: pageData } = await aemServiceInstance.getFragment(
+ "homePageQuery"
+ );
+ const { data: experimentsData } = await aemServiceInstance.getFragment(
+ "projectQuery"
+ );
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ pageData: pageData.scLabsPagev1ByPath,
+ experimentsData: experimentsData.scLabsPagev1List.items,
+ ...(await serverSideTranslations(locale, ["common"])),
+ },
+ revalidate: 10,
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/index.html b/main/coverage/lcov-report/pages/index.html
new file mode 100644
index 0000000000..54d22217f9
--- /dev/null
+++ b/main/coverage/lcov-report/pages/index.html
@@ -0,0 +1,206 @@
+
+
+
+
+
+ Code coverage report for pages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 52.17%
+ Statements
+ 48/92
+
+
+
+
+ 37.08%
+ Branches
+ 89/240
+
+
+
+
+ 52.17%
+ Functions
+ 12/23
+
+
+
+
+ 52.74%
+ Lines
+ 48/91
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ 404.js
+
+
+
+ 70.58%
+ 12/17
+ 50%
+ 13/26
+ 66.66%
+ 2/3
+ 70.58%
+ 12/17
+
+
+
+ 500.js
+
+
+
+ 70.58%
+ 12/17
+ 50%
+ 12/24
+ 66.66%
+ 2/3
+ 70.58%
+ 12/17
+
+
+
+ _app.js
+
+
+
+ 0%
+ 0/2
+ 100%
+ 0/0
+ 0%
+ 0/1
+ 0%
+ 0/2
+
+
+
+ error.js
+
+
+
+ 0%
+ 0/16
+ 0%
+ 0/50
+ 0%
+ 0/3
+ 0%
+ 0/16
+
+
+
+ home.js
+
+
+
+ 66.66%
+ 10/15
+ 47.5%
+ 38/80
+ 80%
+ 4/5
+ 66.66%
+ 10/15
+
+
+
+ index.js
+
+
+
+ 66.66%
+ 6/9
+ 28.57%
+ 4/14
+ 66.66%
+ 2/3
+ 75%
+ 6/8
+
+
+
+ notsupported.js
+
+
+
+ 50%
+ 8/16
+ 47.82%
+ 22/46
+ 40%
+ 2/5
+ 50%
+ 8/16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/index.js.html b/main/coverage/lcov-report/pages/index.js.html
new file mode 100644
index 0000000000..77af7ea803
--- /dev/null
+++ b/main/coverage/lcov-report/pages/index.js.html
@@ -0,0 +1,694 @@
+
+
+
+
+
+ Code coverage report for pages/index.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 66.66%
+ Statements
+ 6/9
+
+
+
+
+ 28.57%
+ Branches
+ 4/14
+
+
+
+
+ 66.66%
+ Functions
+ 2/3
+
+
+
+
+ 75%
+ Lines
+ 6/8
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+
+
+
+
+
+
+
+1x
+
+1x
+1x
+
+
+
+1x
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+ import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useTranslation } from "next-i18next";
+import { ActionButton } from "../components/atoms/ActionButton";
+import Link from "next/link";
+import { useEffect } from "react";
+
+export default function Index(props) {
+ const { t } = useTranslation("common");
+
+ useEffect(() => {
+ I if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ document.documentElement.lang = "en";
+ }, []);
+
+ return (
+ <>
+ <div className="splash-bg splash-image bg-splash-img-mobile xs:bg-splash-img bg-no-repeat fixed left-0 top-0 w-full h-full -z-1" />
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title>Service Canada Labs | Laboratoires de Service Canada</title>
+ <meta
+ name="description"
+ content="Explore the Service Canada Labs in English or French."
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta content="width=device-width, initial-scale=1" name="viewport" />
+ <meta name="robots" content="noindex, follow" />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ property="dcterms:title"
+ lang="en"
+ content="Service Canada Labs"
+ />
+ <meta
+ property="dcterms:title"
+ lang="fr"
+ content="Laboratoires de Service Canada"
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2"
+ />
+ <meta property="dcterms:creator" lang="en" content="Service Canada" />
+ <meta property="dcterms:creator" lang="fr" content="Service Canada" />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta name="dcterms.service" content="ESDC-EDSC_SCLabs-LaboratoireSC" />
+ <meta name="dcterms.issued" content="2021-05-06" />
+ <meta property="dcterms:modified" content="2021-12-16" />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-05-06" />
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta
+ property="dcterms:description"
+ lang="en"
+ content="Explore the Service Canada Labs in English or French."
+ />
+ <meta
+ property="dcterms:description"
+ lang="fr"
+ content="Explorez les laboratoires de Service Canda en français ou en anglais."
+ />
+ <meta
+ property="dcterms:subject"
+ lang="en"
+ title="gccore"
+ content="GV Government and Politics;Government services"
+ />
+ <meta
+ property="dcterms:subject"
+ lang="fr"
+ title="gccore"
+ content="GV Gouvernement et vie politique;Services gouvernementaux"
+ />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta property="og:url" content={"https://alpha.service.canada.ca/"} />
+ <meta
+ property="og:title"
+ content="Service Canada Labs | Laboratoires de Service Canada"
+ />
+ <meta
+ property="og:description"
+ content="Explore the Service Canada Labs in English or French."
+ />
+ <meta property="og:image" content={`${t("metaImage")}`} />
+ <meta property="og:image:alt" content={`${t("siteTitle")}`} />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={"https://alpha.service.canada.ca/"}
+ />
+ <meta
+ property="twitter:title"
+ content="Service Canada Labs | Laboratoires de Service Canada"
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content="Explore the Service Canada Labs in English or French."
+ />
+ <meta property="twitter:image" content={`${t("metaImage")}`} />
+ <meta property="twitter:image:alt" content={`${t("siteTitle")}`} />
+ </Head>
+ <main className="h-full flex justify-center">
+ <div className="splash-cta fixed flex flex-col sm:justify-center sm:items-center">
+ <div className="z-10 bg-white h-auto min-w-300px w-300px xl:w-500px">
+ <h1 className="sr-only">alpha.service.canada.ca</h1>
+ <div className="p-4">
+ <img
+ src={"/sig-blk-en.svg"}
+ alt={"Government of Canada / Gouvernement du Canada"}
+ width="300"
+ height="35"
+ />
+ </div>
+ <div className="flex w-max container mx-auto py-6 font-display">
+ <h2
+ className="text-p text-right xl:text-h4 mr-6 w-32 xl:w-40"
+ lang="en"
+ >
+ Service Canada Labs
+ </h2>
+ <h2 className="text-p xl:text-h4 w-32 xl:w-40" lang="fr">
+ Laboratoires de Service Canada
+ </h2>
+ </div>
+ <div className="flex w-max container pb-6 mx-auto font-display">
+ <ActionButton
+ id="english-button"
+ style="primary"
+ text="English"
+ lang="en"
+ custom="justify-center w-7.5rem xl:w-138px mr-6 text-lg"
+ href="/en/home"
+ />
+ <ActionButton
+ id="french-button"
+ style="primary"
+ text="Français"
+ href="/fr/accueil"
+ lang="fr"
+ custom="justify-center w-7.5rem xl:w-138px text-lg"
+ />
+ </div>
+ </div>
+ <div className="relative py-7 bg-splash-page-bottom text-p h-auto min-w-300px w-300px flex justify-between container p-6 xl:w-500px xl:items-center">
+ <div className="w-28 text-base xl:text-p xl:w-max font-body">
+ <Link
+ href="https://www.canada.ca/en/transparency/terms.html"
+ className="inline-block w-28 xl:w-max mr-0 hover:text-canada-footer-hover-font-blue text-canada-footer-font splash-link"
+ >
+ Terms & conditions
+ </Link>
+ <Link
+ href="https://www.canada.ca/fr/transparence/avis.html"
+ className="inline-block hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+ lang="fr"
+ >
+ Avis
+ </Link>
+ </div>
+ <img
+ src="/wmms-blk.svg"
+ alt="Symbol of the Government of Canada / Symbole du gouvernement du Canada"
+ width="150"
+ height="25"
+ />
+ </div>
+ </div>
+ </main>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getServerSideProps = as ync ({ locale }) => ({
+ props: {
+ locale: locale ?? "en",
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? "",
+ ...(await serverSideTranslations(locale, ["common"])),
+ },
+});
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/notsupported.js.html b/main/coverage/lcov-report/pages/notsupported.js.html
new file mode 100644
index 0000000000..b9a2290136
--- /dev/null
+++ b/main/coverage/lcov-report/pages/notsupported.js.html
@@ -0,0 +1,1573 @@
+
+
+
+
+
+ Code coverage report for pages/notsupported.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50%
+ Statements
+ 8/16
+
+
+
+
+ 47.82%
+ Branches
+ 22/46
+
+
+
+
+ 40%
+ Functions
+ 2/5
+
+
+
+
+ 50%
+ Lines
+ 8/16
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+
+
+
+
+
+
+
+
+
+1x
+1x
+1x
+1x
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { useTranslation } from "next-i18next";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { ActionButton } from "../components/atoms/ActionButton";
+import { useEffect } from "react";
+import { CopyToClipboard } from "../components/molecules/CopyToClipboard";
+import { useState } from "react";
+import aemServiceInstance from "../services/aemServiceInstance";
+
+export default function notSupported(props) {
+ const { t } = useTranslation("common");
+ const [enCopied, setEnCopied] = useState(false);
+ const [frCopied, setFrCopied] = useState(false);
+ const [pageData] = useState(props.pageData.item);
+
+ useEffect(() => {
+ I if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ function onClickEn( ) {
+ setEnCopied(true);
+ setFrCopied(false);
+ }
+
+ function onClickFr( ) {
+ setFrCopied(true);
+ setEnCopied(false);
+ }
+ return (
+ <>
+ <div className="min-h-screen relative">
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title data-gc-analytics-error="notSupported">
+ {pageData.scContentEn.json[0].content[0].value} |{" "}
+ {pageData.scContentFr.json[0].content[0].value}
+ </title>
+ <meta
+ name="description"
+ content="Error message stating that the site will not work with Internet Explorer."
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta content="width=device-width, initial-scale=1" name="viewport" />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ property="dcterms:title"
+ lang="en"
+ content="Sorry, this site will not work with Internet Explorer"
+ />
+ <meta
+ property="dcterms:title"
+ lang="fr"
+ content="Désolé, ce site ne fonctionne pas avec Internet Explorer"
+ />
+ <meta
+ property="dcterms:description"
+ lang="en"
+ content="Error message stating that the site will not work with Internet Explorer."
+ />
+ <meta
+ property="dcterms:description"
+ lang="fr"
+ content="Message d’erreur indiquant que le site ne fonctionne pas avec Internet Explorer."
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2"
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta
+ property="dcterms:subject"
+ lang="fr"
+ title="gccore"
+ content="GV Gouvernement et vie politique;Services gouvernementaux"
+ />
+ <meta
+ property="dcterms:subject"
+ lang="en"
+ title="gccore"
+ content="GV Government and Politics;Government services"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-11-25" />
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta property="dcterms:issued" content="2021-11-25" />
+ <meta property="dcterms:modified" content="2021-12-16" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca/" +
+ `${props.locale}` +
+ "/notsupported"
+ }
+ />
+ <meta
+ property="og:title"
+ content={`Browser not supported — ${t("siteTitle")}`}
+ />
+ <meta
+ property="og:description"
+ content="Sorry, this site will not work with Internet Explorer | Désolé, ce
+ site ne fonctionne pas avec Internet Explorer"
+ />
+ <meta property="og:image" content={`${t("metaImage")}`} />
+ <meta property="og:image:alt" content={`${t("siteTitle")}`} />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca/" +
+ `${props.locale}` +
+ "/notsupported"
+ }
+ />
+ <meta
+ property="twitter:title"
+ content={`Browser not supported — ${t("siteTitle")}`}
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content="Sorry, this site will not work with Internet Explorer | Désolé, ce
+ site ne fonctionne pas avec Internet Explorer"
+ />
+ <meta property="twitter:image" content={`${t("metaImage")}`} />
+ <meta property="twitter:image:alt" content={`${t("siteTitle")}`} />
+ </Head>
+ <section className="xs:px-0 lg:mx-auto lg:px-6 container">
+ <div className="pt-6">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageEn._path
+ : pageData.scGcImages[0].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[0].scImageAltTextEn
+ : pageData.scGcImages[0].scImageAltTextFr
+ }
+ width={575}
+ height={59}
+ />
+ </div>
+ <div className="flex flex-col lg:flex-row justify-between items-center lg:items-start mt-8">
+ <div>
+ <div className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 xl:h-400px lg:h-500px mb-8 lg:mb-0">
+ <h1 className="font-bold font-display mb-4">
+ {pageData.scContentEn.json[0].content[0].value}
+ </h1>
+ <p className="font-body text-sm mb-4 leading-normal">
+ {pageData.scContentEn.json[1].content[0].value}
+ </p>
+ </div>
+ </div>
+ <div className="flex items-center justify-center circle-background my-8 lg:mt-0 lightbulb-bg">
+ <span className="relative lightbulb">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[0].scImageEn._path
+ : pageData.scImageList[0].scImageFr._path
+ }`}
+ alt=""
+ />
+ </span>
+ </div>
+ <div>
+ <div
+ className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 xl:h-400px lg:h-500px mb-8 lg:mb-0"
+ lang="fr"
+ >
+ <h1 className="font-bold font-display mb-4">
+ {pageData.scContentFr.json[0].content[0].value}
+ </h1>
+ <p className="font-body text-sm mb-4 leading-normal">
+ {pageData.scContentFr.json[1].content[0].value}
+ </p>
+ </div>
+ </div>
+ </div>
+ </section>
+ <section className="-mt-0 lg:-mt-36 sm:-mt-4 pb-5">
+ <div className="flex items-center justify-center">
+ <figure className="mx-4">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[1].scImageEn._path
+ : pageData.scImageList[1].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scImageList[1].scImageAltTextEn
+ : pageData.scImageList[1].scImageAltTextFr
+ }
+ width="98"
+ height="98"
+ />
+ <figcaption className="flex items-center justify-center">
+ Chrome
+ </figcaption>
+ </figure>
+ <figure className="mx-4">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[2].scImageEn._path
+ : pageData.scImageList[2].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scImageList[2].scImageAltTextEn
+ : pageData.scImageList[2].scImageAltTextFr
+ }
+ width="98"
+ height="98"
+ />
+ <figcaption className="flex items-center justify-center">
+ Safari
+ </figcaption>
+ </figure>
+ <figure className="mx-4">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[3].scImageEn._path
+ : pageData.scImageList[3].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scImageList[3].scImageAltTextEn
+ : pageData.scImageList[3].scImageAltTextFr
+ }
+ width="94"
+ height="94"
+ />
+ <figcaption className="pt-1.5 flex items-center justify-center">
+ Edge
+ </figcaption>
+ </figure>
+ <figure className="mx-4">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scImageList[4].scImageEn._path
+ : pageData.scImageList[4].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scImageList[4].scImageAltTextEn
+ : pageData.scImageList[4].scImageAltTextFr
+ }
+ width="98"
+ height="98"
+ />
+ <figcaption className="flex items-center justify-center">
+ Firefox
+ </figcaption>
+ </figure>
+ </div>
+ </section>
+ <section className="xs:px-0 lg:mx-auto lg:px-6 container pb-44">
+ <div className="flex flex-col lg:flex-row justify-between items-center lg:items-start mt-8">
+ <div className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 mb-8 lg:mb-0">
+ <p className="font-body text-sm mb-4 leading-normal">
+ {pageData.scCopyToClipboardLabelEn}
+ </p>
+ <CopyToClipboard
+ buttonId="enClipboardButton"
+ buttonText={enCopied ? "Copied!" : "Copy link"}
+ buttonStyle={enCopied ? "ieButtonCopied" : "ieButton"}
+ value="http://alpha.service.canada.ca/home"
+ onClick={onClickEn}
+ id="enClipboard"
+ name="clipboard_en"
+ textFieldStyle="ieTextField"
+ aria_label="Copy the link below and paste in that browser."
+ />
+ <p className="font-body text-sm pt-6 leading-normal">
+ {pageData.scBrowserDownloadLinksEn.json[0].content[0].value}
+ </p>
+ <ul className="underline pt-4 font-body text-sm ieLinksList">
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksEn.json[1].content[0]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksEn.json[1].content[0]
+ .content[0].value
+ }
+ </a>
+ </li>
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksEn.json[1].content[1]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksEn.json[1].content[1]
+ .content[0].value
+ }
+ </a>
+ </li>
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksEn.json[1].content[2]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksEn.json[1].content[2]
+ .content[0].value
+ }
+ </a>
+ </li>
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksEn.json[1].content[3]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksEn.json[1].content[3]
+ .content[0].value
+ }
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div>
+ <div
+ className="relative h-auto xl:w-96 xxl:w-400px lg:w-72 mb-8 lg:mb-0"
+ lang="fr"
+ >
+ <p className="font-body text-sm mb-4 leading-normal">
+ {pageData.scCopyToClipboardLabelFr}
+ </p>
+ <CopyToClipboard
+ buttonText={frCopied ? "Copié!" : "Copier lien"}
+ buttonId="frClipboardButton"
+ buttonStyle={frCopied ? "ieButtonCopied" : "ieButton"}
+ value="http://alpha.service.canada.ca/fr/home"
+ onClick={onClickFr}
+ id="frClipboard"
+ name="clipboard_fr"
+ textFieldStyle="ieTextField"
+ aria_label="Vous n'avez qu'Ã copier le lien ci-dessous et le coller dans ce navigateur."
+ />
+ <p className="font-body text-sm pt-6 leading-normal">
+ {pageData.scBrowserDownloadLinksFr.json[0].content[0].value}
+ </p>
+ <ul className="underline pt-4 font-body text-sm ieLinksList">
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksFr.json[1].content[0]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksFr.json[1].content[0]
+ .content[0].value
+ }
+ </a>
+ </li>
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksFr.json[1].content[1]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksFr.json[1].content[1]
+ .content[0].value
+ }
+ </a>
+ </li>
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksFr.json[1].content[2]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksFr.json[1].content[2]
+ .content[0].value
+ }
+ </a>
+ </li>
+ <li className="browser-item">
+ <a
+ href={
+ pageData.scBrowserDownloadLinksFr.json[1].content[3]
+ .content[0].data.href
+ }
+ >
+ {
+ pageData.scBrowserDownloadLinksFr.json[1].content[3]
+ .content[0].value
+ }
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </section>
+ <footer className="h-100px w-screen bgGray absolute bottom-0">
+ <div className="layout-container flex justify-between lg:flex-row-reverse pt-4 lg:pt-0 lg:mt-8">
+ <ActionButton
+ id="404TopOfPageButton"
+ href="#"
+ custom="text-left w-32 flex flex-col lg:hidden"
+ text="Top of page / Haut de la page"
+ icon="icon-up-caret"
+ iconEnd
+ />
+ <span className="relative footer-logo">
+ <img
+ src={`https://www.canada.ca${
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageEn._path
+ : pageData.scGcImages[1].scImageFr._path
+ }`}
+ alt={
+ props.locale === "en"
+ ? pageData.scGcImages[1].scImageAltTextEn
+ : pageData.scGcImages[1].scImageAltTextFr
+ }
+ />
+ </span>
+ </div>
+ </footer>
+ </div>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ const { data } = await aemServiceInstance.getFragment("notsupportedQuery");
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ ...(await serverSideTranslations("en", ["common"])),
+ ...(await serverSideTranslations("fr", ["common"])),
+ pageData: data.scLabsErrorPagev1ByPath,
+ },
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/benefits-navigator/[id].js.html b/main/coverage/lcov-report/pages/projects/benefits-navigator/[id].js.html
new file mode 100644
index 0000000000..cbfc592409
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/benefits-navigator/[id].js.html
@@ -0,0 +1,1486 @@
+
+
+
+
+
+ Code coverage report for pages/projects/benefits-navigator/[id].js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/19
+
+
+
+
+ 0%
+ Branches
+ 0/100
+
+
+
+
+ 0%
+ Functions
+ 0/6
+
+
+
+
+ 0%
+ Lines
+ 0/19
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useTranslation } from "next-i18next";
+import { Layout } from "../../../components/organisms/Layout";
+import { ActionButton } from "../../../components/atoms/ActionButton";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { CTA, Heading } from "@dts-stn/service-canada-design-system";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+
+export default function DynamicBenefitNavigatorPage( props) {
+ const [pageData] = useState(props.pageData);
+ const [dictionary] = useState(props.dictionary.items);
+
+ useEffect(() => {
+ if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ return (
+ <>
+ <Layout
+ locale={props.locale}
+ langUrl={
+ props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+ }
+ dateModifiedOverride={pageData.scDateModifiedOverwrite}
+ breadcrumbItems={createBreadcrumbs(
+ pageData.scBreadcrumbParentPages,
+ props.locale
+ )}
+ >
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title>
+ {props.locale === "en"
+ ? `${pageData.scTitleEn} - Service Canada Labs`
+ : `${pageData.scTitleFr} - Laboratoires de Service Canada`}
+ </title>
+ <meta
+ name="description"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta
+ name="keywords"
+ content={
+ props.locale === "en"
+ ? pageData.scKeywordsEn
+ : pageData.scKeywordsFr
+ }
+ />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ name="dcterms.title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2/T"
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2023-07-07" />
+
+ <meta name="dcterms.modified" title="W3CDTF" content="2023-07-07" />
+ <meta
+ name="dcterms.description"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.subject"
+ title="gccore"
+ content={pageData.scSubject}
+ />
+ <meta name="dcterms.spatial" content="Canada" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="og:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ {/* <meta
+ property="og:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[1].content[0].value
+ : pageData.scFragments[1].scContentFr.json[1].content[0].value
+ }
+ /> */}
+ <meta
+ property="og:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="og:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="twitter:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ {/* <meta
+ property="twitter:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[1].content[0].value
+ : pageData.scFragments[1].scContentFr.json[1].content[0].value
+ }
+ /> */}
+ <meta
+ property="twitter:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="twitter:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ </Head>
+ <section className="layout-container mb-12">
+ <Heading
+ tabIndex="-1"
+ id="pageMainTitle"
+ title={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <div id="postedOnUpdatedOnSection" className="grid grid-cols-12">
+ <p
+ className={`col-span-6 sm:col-span-4 ${
+ props.locale === "en" ? "lg:col-span-2" : "lg:col-span-3"
+ } font-bold`}
+ >
+ {props.locale === "en"
+ ? dictionary[9].scTermEn
+ : dictionary[9].scTermFr}
+ </p>
+ <p className="col-span-6 col-start-7 sm:col-start-5 lg:col-span-2 md:col-start-5 mt-0">
+ {pageData.scDateModifiedOverwrite}
+ </p>
+ <p
+ className={`row-start-2 col-span-6 sm:col-span-4 mt-0 ${
+ props.locale === "en" ? "lg:col-span-2" : "lg:col-span-3"
+ } font-bold`}
+ >
+ {props.locale === "en"
+ ? dictionary[4].scTermEn
+ : dictionary[4].scTermFr}
+ </p>
+ <p className="row-start-2 col-span-6 col-start-7 sm:col-start-5 lg:col-span-2 md:col-start-5 mt-auto">
+ {pageData.scDateModifiedOverwrite}
+ </p>
+ </div>
+
+ {/* Main */}
+ <div id="mainContentSection" className="flex flex-row-reverse mt-12">
+ <div className="hidden md:block">
+ <img
+ src={pageData.scFragments[1].scImageEn._publishUrl}
+ alt=""
+ height={pageData.scFragments[1].scImageEn.height}
+ width={pageData.scFragments[1].scImageEn.width}
+ />
+ </div>
+ <div className="w-[750px] grow">
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+ : pageData.scFragments[0].scContentFr.json[1].content[0]
+ .value}
+ </p>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[2].content[0].value
+ : pageData.scFragments[0].scContentFr.json[2].content[0]
+ .value}
+ <a
+ className="underline underline-offset-4"
+ href={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[2].content[1]
+ .data.href
+ : pageData.scFragments[0].scContentFr.json[2].content[1]
+ .data.href
+ }
+ >
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[2].content[1]
+ .value
+ : pageData.scFragments[0].scContentFr.json[2].content[1]
+ .value}
+ </a>
+ <span className="text-lg pl-1">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[2].content[2]
+ .value
+ : pageData.scFragments[0].scContentFr.json[2].content[2]
+ .value}
+ </span>
+ </p>
+
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[3].content[0].value
+ : pageData.scFragments[0].scContentFr.json[3].content[0]
+ .value}
+ </p>
+
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[4].content[0].value
+ : pageData.scFragments[0].scContentFr.json[4].content[0]
+ .value}
+ </p>
+
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[5].content[0].value
+ : pageData.scFragments[0].scContentFr.json[5].content[0]
+ .value}
+ </p>
+
+ <h2>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[6].content[0].value
+ : pageData.scFragments[0].scContentFr.json[6].content[0]
+ .value}
+ </h2>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[7].content[0].value
+ : pageData.scFragments[0].scContentFr.json[7].content[0]
+ .value}
+ </p>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[8].content[0].value
+ : pageData.scFragments[0].scContentFr.json[8].content[0]
+ .value}
+ </p>
+
+ <h2>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[9].content[0].value
+ : pageData.scFragments[0].scContentFr.json[9].content[0]
+ .value}
+ </h2>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[10].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[10].content[0]
+ .value}
+ </p>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[11].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[11].content[0]
+ .value}
+ </p>
+
+ <h2>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[12].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[12].content[0]
+ .value}
+ </h2>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[13].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[13].content[0]
+ .value}
+ </p>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[14].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[14].content[0]
+ .value}
+ </p>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[15].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[15].content[0]
+ .value}
+ </p>
+
+ <h2>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[16].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[16].content[0]
+ .value}
+ </h2>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[17].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[17].content[0]
+ .value}
+ </p>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[18].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[18].content[0]
+ .value}
+ </p>
+ <ul>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[19].content[0]
+ .content[0].value
+ : pageData.scFragments[0].scContentFr.json[19].content[0]
+ .content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[19].content[1]
+ .content[0].value
+ : pageData.scFragments[0].scContentFr.json[19].content[1]
+ .content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[19].content[2]
+ .content[0].value
+ : pageData.scFragments[0].scContentFr.json[19].content[2]
+ .content[0].value}
+ </li>
+ </ul>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[20].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[20].content[0]
+ .value}
+ </p>
+ </div>
+ </div>
+ </section>
+ </Layout>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export async function getStaticPaths( ) {
+ // Get pages data
+ const { data } = await aemServiceInstance.getFragment(
+ "benefitsNavigatorArticlesQuery"
+ );
+ // Get paths for dynamic routes from the page name data
+ const paths = getAllUpdateIds(data.scLabsPagev1List.items);
+ paths.map((p ath) => {
+ path.locale === "en"
+ ? (path.params.id = path.params.id.slice(32))
+ : (path.params.id = path.params.id.slice(35));
+ });
+ return {
+ paths,
+ fallback: false,
+ };
+}
+
+export const getStaticProps = as ync ({ locale, params }) => {
+ // Get pages data
+ const { data } = await aemServiceInstance.getFragment(
+ "benefitsNavigatorArticlesQuery"
+ );
+ // get dictionary
+ const { data: dictionary } = await aemServiceInstance.getFragment(
+ "dictionaryQuery"
+ );
+ const pages = data.scLabsPagev1List.items;
+ // Return page data that matches the current page being built
+ const pageData = pages.filter((p age) => {
+ return (
+ page.scPageNameEn.slice(32) === params.id ||
+ page.scPageNameFr.slice(35) === params.id
+ );
+ });
+
+ return {
+ props: {
+ locale: locale,
+ pageData: pageData[0],
+ dictionary: dictionary.dictionaryV1List,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ ...(await serverSideTranslations(locale, ["common", "vc"])),
+ },
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/benefits-navigator/index.html b/main/coverage/lcov-report/pages/projects/benefits-navigator/index.html
new file mode 100644
index 0000000000..739ee5237c
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/benefits-navigator/index.html
@@ -0,0 +1,131 @@
+
+
+
+
+
+ Code coverage report for pages/projects/benefits-navigator
+
+
+
+
+
+
+
+
+
+
+
+
All files pages/projects/benefits-navigator
+
+
+
+ 0%
+ Statements
+ 0/52
+
+
+
+
+ 0%
+ Branches
+ 0/274
+
+
+
+
+ 0%
+ Functions
+ 0/14
+
+
+
+
+ 0%
+ Lines
+ 0/52
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ [id].js
+
+
+
+ 0%
+ 0/19
+ 0%
+ 0/100
+ 0%
+ 0/6
+ 0%
+ 0/19
+
+
+
+ index.js
+
+
+
+ 0%
+ 0/33
+ 0%
+ 0/174
+ 0%
+ 0/8
+ 0%
+ 0/33
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/benefits-navigator/index.js.html b/main/coverage/lcov-report/pages/projects/benefits-navigator/index.js.html
new file mode 100644
index 0000000000..6e368234ba
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/benefits-navigator/index.js.html
@@ -0,0 +1,2506 @@
+
+
+
+
+
+ Code coverage report for pages/projects/benefits-navigator/index.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/33
+
+
+
+
+ 0%
+ Branches
+ 0/174
+
+
+
+
+ 0%
+ Functions
+ 0/8
+
+
+
+
+ 0%
+ Lines
+ 0/33
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../../../components/organisms/Layout";
+import { ActionButton } from "../../../components//atoms/ActionButton";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import { CTA, Collapse } from "@dts-stn/service-canada-design-system";
+import { Heading } from "@dts-stn/service-canada-design-system";
+import Card from "../../../components/molecules/Card";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+
+export default function BenefitsNavigatorOverview( props) {
+ const [pageData] = useState(props.pageData.item);
+ const [updatesData] = useState(props.updatesData);
+ const [filteredDictionary] = useState(
+ props.dictionary.items.filter(
+ (i tem) =>
+ item.scId === "STARTED" ||
+ item.scId === "ENDED" ||
+ item.scId === "PROJECT-STAGE" ||
+ item.scId === "SUMMARY"
+ )
+ );
+ const stageDictionary = {
+ en: {
+ "gc:custom/decd-endc/project-stage/alpha": "Alpha",
+ "gc:custom/decd-endc/project-stage/beta": "Beta",
+ },
+ fr: {
+ "gc:custom/decd-endc/project-stage/alpha": "Alpha",
+ "gc:custom/decd-endc/project-stage/beta": "Bêta",
+ },
+ };
+
+ function generateReactElements( json) {
+ const elements = [];
+
+ for (const item of json) {
+ if (item.nodeType === "paragraph") {
+ elements.push(
+ <p key={elements.length}>{generateReactElements(item.content)}</p>
+ );
+ } else if (item.nodeType === "unordered-list") {
+ const listItems = item.content.map((l istItem, index) => (
+ <li key={index} className="my-0">
+ {generateReactElements(listItem.content)}
+ </li>
+ ));
+ elements.push(
+ <ul key={elements.length} className="mb-0">
+ {listItems}
+ </ul>
+ );
+ } else if (item.nodeType === "ordered-list") {
+ const listItems = item.content.map((l istItem, index) => (
+ <li key={index} className="my-0">
+ {generateReactElements(listItem.content)}
+ </li>
+ ));
+ elements.push(
+ <ol key={elements.length} className="mb-0">
+ {listItems}
+ </ol>
+ );
+ } else if (item.nodeType === "list-item") {
+ elements.push(
+ <li key={elements.length} className="my-0">
+ {generateReactElements(item.content)}
+ </li>
+ );
+ } else if (item.nodeType === "text") {
+ elements.push(item.value);
+ }
+ }
+
+ return elements;
+ }
+
+ const displayProjectUpdates = updatesData.map((u pdate) => (
+ <li key={update.scId} className="list-none ml-0 col-span-12 lg:col-span-4">
+ <Card
+ showImage
+ imgSrc={
+ props.locale === "en"
+ ? `https://www.canada.ca${update.scSocialMediaImageEn._path}`
+ : `https://www.canada.ca${update.scSocialMediaImageFr._path}`
+ }
+ imgAlt={
+ props.locale === "en"
+ ? update.scSocialMediaImageAltTextEn
+ : update.scSocialMediaImageAltTextFr
+ }
+ title={props.locale === "en" ? update.scTitleEn : update.scTitleFr}
+ href={props.locale === "en" ? update.scPageNameEn : update.scPageNameFr}
+ description={`${
+ props.locale === "en"
+ ? props.dictionary.items[9].scTermEn
+ : props.dictionary.items[9].scTermFr
+ } ${update.scDateModifiedOverwrite}`}
+ />
+ </li>
+ ));
+
+ useEffect(() => {
+ if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ return (
+ <>
+ <Layout
+ locale={props.locale}
+ langUrl={
+ props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+ }
+ dateModifiedOverride={pageData.scDateModifiedOverwrite}
+ breadcrumbItems={createBreadcrumbs(
+ pageData.scBreadcrumbParentPages,
+ props.locale
+ )}
+ >
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title>
+ {props.locale === "en"
+ ? `${pageData.scTitleEn} - Service Canada Labs`
+ : `${pageData.scTitleFr} - Laboratoires de Service Canada`}
+ </title>
+ <meta
+ name="description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link
+ rel="canonical"
+ href={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta
+ name="keywords"
+ content={
+ props.locale === "en"
+ ? pageData.scKeywordsEn
+ : pageData.scKeywordsFr
+ }
+ />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ name="dcterms.title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2/T"
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-07-20" />
+
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta
+ name="dcterms.description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ name="dcterms.subject"
+ title="gccore"
+ content={pageData.scSubject}
+ />
+ <meta name="dcterms.spatial" content="Canada" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="og:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ property="og:description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ property="og:image"
+ content={pageData.scFragments[0].scImageEn._publishUrl}
+ />
+ <meta
+ property="og:image:alt"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[0].scImageAltTextEn
+ : pageData.scFragments[0].scImageAltTextFr
+ }
+ />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="twitter:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ property="twitter:image"
+ content={pageData.scFragments[0].scImageEn._publishUrl}
+ />
+ <meta
+ property="twitter:image:alt"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[0].scImageAltTextEn
+ : pageData.scFragments[0].scImageAltTextFr
+ }
+ />
+ </Head>
+
+ <div className="layout-container">
+ <section aria-labelledby="pageMainTitle">
+ <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+ <div className="col-span-2">
+ <Heading
+ tabIndex="-1"
+ id="pageMainTitle"
+ title={
+ props.locale === "en"
+ ? pageData.scFragments[2].scContentEn.json[0].content[0]
+ .value
+ : pageData.scFragments[2].scContentFr.json[0].content[0]
+ .value
+ }
+ />
+ </div>
+ <div className="hidden lg:grid row-span-2 row-start-2 col-start-2 p-0 mx-4">
+ <div className="flex justify-center">
+ <div className="object-fill max-w-350px">
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[0].scImageEn._publishUrl
+ : pageData.scFragments[0].scImageFr._publishUrl
+ }
+ alt={
+ props.locale === "en"
+ ? pageData.scFragments[0].scImageAltTextEn
+ : pageData.scFragments[0].scImageAltTextFr
+ }
+ width={468}
+ height={462}
+ />
+ </div>
+ </div>
+ </div>
+ <p className="row-start-2 font-body text-lg mb-4">
+ {props.locale === "en"
+ ? pageData.scFragments[2].scContentEn.json[1].content[0].value
+ : pageData.scFragments[2].scContentFr.json[1].content[0]
+ .value}
+ </p>
+ <div className="row-start-3">
+ <ProjectInfo
+ locale={props.locale}
+ termStarted={
+ props.locale === "en"
+ ? filteredDictionary[2].scTermEn
+ : filteredDictionary[2].scTermFr
+ }
+ termStage={
+ props.locale === "en"
+ ? filteredDictionary[1].scTermEn
+ : filteredDictionary[1].scTermFr
+ }
+ termSummary={
+ props.locale === "en"
+ ? filteredDictionary[3].scTermEn
+ : filteredDictionary[3].scTermFr
+ }
+ dateStarted={
+ pageData.scFragments[2].scContentEn.json[2].content[0].value
+ }
+ term={
+ props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[0].content[0]
+ .value + " "
+ : pageData.scFragments[1].scContentFr.json[0].content[0]
+ .value + " "
+ }
+ definition={
+ props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[0].content[1]
+ .value
+ : pageData.scFragments[1].scContentFr.json[0].content[1]
+ .value
+ }
+ information={
+ props.locale === "en"
+ ? pageData.scFragments[1].scTitleEn
+ : pageData.scFragments[1].scTitleFr
+ }
+ stage={
+ props.locale === "en"
+ ? stageDictionary.en[pageData.scLabProjectStage]
+ : stageDictionary.fr[pageData.scLabProjectStage]
+ }
+ summary={
+ props.locale === "en"
+ ? pageData.scFragments[2].scContentEn.json[4].content[0]
+ .value
+ : pageData.scFragments[2].scContentFr.json[4].content[0]
+ .value
+ }
+ />
+ </div>
+ </div>
+ </section>
+ <div className="grid grid-cols-12">
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[0].content[0].value
+ : pageData.scFragments[3].scContentFr.json[0].content[0].value}
+ </h2>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[1].content[0].value
+ : pageData.scFragments[3].scContentFr.json[1].content[0].value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[2].content[0].value
+ : pageData.scFragments[3].scContentFr.json[2].content[0].value}
+ </p>
+ <ul className="col-span-12 xl:col-span-8">
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[3].content[0]
+ .content[0].value
+ : pageData.scFragments[3].scContentFr.json[3].content[0]
+ .content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[3].content[1]
+ .content[0].value
+ : pageData.scFragments[3].scContentFr.json[3].content[1]
+ .content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[3].content[2]
+ .content[0].value
+ : pageData.scFragments[3].scContentFr.json[3].content[2]
+ .content[0].value}
+ </li>
+ </ul>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[4].content[0].value
+ : pageData.scFragments[3].scContentFr.json[4].content[0].value}
+ </p>
+ <div id="feature-section" className="col-span-12">
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[4].scContentEn.json[0].content[0].value
+ : pageData.scFragments[4].scContentFr.json[0].content[0]
+ .value}
+ </h2>
+ <div id="feature-1" className="grid grid-cols-12 gap-x-6 mb-9">
+ <div className="mb-6 object-fill col-span-12 row-start-1 xl:row-start-1 xl:col-span-8">
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scImageEn._publishUrl
+ : pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scImageFr._publishUrl
+ }
+ alt={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scImageAltTextEn
+ : pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scImageAltTextFr
+ }
+ className="w-full"
+ />
+ </div>
+ <div className="col-span-12 row-start-3 xl:col-span-4 xl:row-start-1">
+ <div className="py-4 pl-4 border-l-4 border-multi-blue-blue60f">
+ <h3 className="mb-2">
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scContentEn
+ .json[0].content[0].value
+ : pageData.scFragments[4].scFragments[0].scContentFr
+ .json[0].content[0].value}
+ </h3>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scContentEn
+ .json[1].content[0].value
+ : pageData.scFragments[4].scFragments[0].scContentFr
+ .json[1].content[0].value}
+ </p>
+ <ul>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scContentEn
+ .json[2].content[0].content[0].value
+ : pageData.scFragments[4].scFragments[0].scContentFr
+ .json[2].content[0].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scContentEn
+ .json[2].content[1].content[0].value
+ : pageData.scFragments[4].scFragments[0].scContentFr
+ .json[2].content[1].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scContentEn
+ .json[2].content[2].content[0].value
+ : pageData.scFragments[4].scFragments[0].scContentFr
+ .json[2].content[2].content[0].value}
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div className="mb-6 col-span-12 xl:col-span-8 row-start-2 xl:row-start-2">
+ <Collapse
+ id="image-text-collapse-1"
+ title={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scLongDescHeadingEn
+ : pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scLongDescHeadingFr
+ }
+ children={generateReactElements(
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scLongDescEn.json
+ : pageData.scFragments[4].scFragments[0].scFragments[0]
+ .scLongDescFr.json
+ )}
+ />
+ </div>
+ </div>
+ <div id="feature-2" className="grid grid-cols-12 gap-x-6 mb-9">
+ <div className="mb-6 object-fill col-span-12 row-start-1 xl:row-start-1 xl:col-span-8">
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scImageEn._publishUrl
+ : pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scImageFr._publishUrl
+ }
+ alt={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scImageAltTextEn
+ : pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scImageAltTextFr
+ }
+ className="w-full"
+ />
+ </div>
+ <div className="col-span-12 row-start-3 xl:col-span-4 xl:row-start-1">
+ <div className="p-4 border-l-4 border-multi-blue-blue60f">
+ <h3 className="mb-2">
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scContentEn
+ .json[0].content[0].value
+ : pageData.scFragments[4].scFragments[1].scContentFr
+ .json[0].content[0].value}
+ </h3>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scContentEn
+ .json[1].content[0].value
+ : pageData.scFragments[4].scFragments[1].scContentFr
+ .json[1].content[0].value}
+ </p>
+ <ul>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scContentEn
+ .json[2].content[0].content[0].value
+ : pageData.scFragments[4].scFragments[1].scContentFr
+ .json[2].content[0].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scContentEn
+ .json[2].content[1].content[0].value
+ : pageData.scFragments[4].scFragments[1].scContentFr
+ .json[2].content[1].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scContentEn
+ .json[2].content[2].content[0].value
+ : pageData.scFragments[4].scFragments[1].scContentFr
+ .json[2].content[2].content[0].value}
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div className="mb-6 col-span-12 xl:col-span-8 row-start-2 xl:row-start-2">
+ <Collapse
+ id="image-text-collapse-2"
+ title={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scLongDescHeadingEn
+ : pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scLongDescHeadingFr
+ }
+ children={generateReactElements(
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scLongDescEn.json
+ : pageData.scFragments[4].scFragments[1].scFragments[0]
+ .scLongDescFr.json
+ )}
+ />
+ </div>
+ </div>
+ <div id="feature-3" className="grid grid-cols-12 gap-x-6">
+ <div className="mb-6 object-fill col-span-12 row-start-1 xl:row-start-1 xl:col-span-8">
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scImageEn._publishUrl
+ : pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scImageFr._publishUrl
+ }
+ alt={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scImageAltTextEn
+ : pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scImageAltTextFr
+ }
+ className="w-full"
+ />
+ </div>
+ <div className="col-span-12 row-start-3 xl:col-span-4 xl:row-start-1">
+ <div className="p-4 border-l-4 border-multi-blue-blue60f">
+ <h3 className="mb-2">
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scContentEn
+ .json[0].content[0].value
+ : pageData.scFragments[4].scFragments[2].scContentFr
+ .json[0].content[0].value}
+ </h3>
+ <p>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scContentEn
+ .json[1].content[0].value
+ : pageData.scFragments[4].scFragments[2].scContentFr
+ .json[1].content[0].value}
+ </p>
+ <ul>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scContentEn
+ .json[2].content[0].content[0].value
+ : pageData.scFragments[4].scFragments[2].scContentFr
+ .json[2].content[0].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scContentEn
+ .json[2].content[1].content[0].value
+ : pageData.scFragments[4].scFragments[2].scContentFr
+ .json[2].content[1].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scContentEn
+ .json[2].content[2].content[0].value
+ : pageData.scFragments[4].scFragments[2].scContentFr
+ .json[2].content[2].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scContentEn
+ .json[2].content[3].content[0].value
+ : pageData.scFragments[4].scFragments[2].scContentFr
+ .json[2].content[3].content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scContentEn
+ .json[2].content[4].content[0].value
+ : pageData.scFragments[4].scFragments[2].scContentFr
+ .json[2].content[4].content[0].value}
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div className="mb-6 col-span-12 xl:col-span-8 row-start-2 xl:row-start-2">
+ <Collapse
+ id="image-text-collapse-3"
+ title={
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scLongDescHeadingEn
+ : pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scLongDescHeadingFr
+ }
+ children={generateReactElements(
+ props.locale === "en"
+ ? pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scLongDescEn.json
+ : pageData.scFragments[4].scFragments[2].scFragments[0]
+ .scLongDescFr.json
+ )}
+ />
+ </div>
+ </div>
+ </div>
+ <section
+ id="BENEFITS-NAVIGATOR-HELP-DESIGN"
+ className="grid grid-cols-12 col-span-12"
+ >
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[5].scContentEn.json[0].content[0].value
+ : pageData.scFragments[5].scContentFr.json[0].content[0]
+ .value}
+ </h2>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[5].scContentEn.json[1].content[0].value
+ : pageData.scFragments[5].scContentFr.json[1].content[0]
+ .value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[5].scContentEn.json[2].content[0].value
+ : pageData.scFragments[5].scContentFr.json[2].content[0]
+ .value}
+ <a
+ className="underline underline-offset-4"
+ href={`mailto:${pageData.scFragments[5].scContentEn.json[2].content[1].value}`}
+ >
+ {pageData.scFragments[5].scContentEn.json[2].content[1].value}
+ </a>
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[5].scContentEn.json[3].content[0].value
+ : pageData.scFragments[5].scContentFr.json[3].content[0]
+ .value}
+ </p>
+ </section>
+ </div>
+
+ {/* Todo: add locale files and use i18next for translations */}
+ <h2>
+ {props.locale === "en"
+ ? "Project updates"
+ : "Mises à jour du projet"}
+ </h2>
+ <ul className="grid lg:grid-cols-12 gap-x-4 lg:gap-y-12 list-none ml-0">
+ {displayProjectUpdates}
+ </ul>
+ </div>
+
+ {/* <CTA
+ heading={
+ props.locale === "en"
+ ? pageData.scFragments[6].scTitleEn
+ : pageData.scFragments[6].scTitleFr
+ }
+ body={
+ props.locale === "en"
+ ? pageData.scFragments[6].scContentEn.json[0].content[0].value
+ : pageData.scFragments[6].scContentFr.json[0].content[0].value
+ }
+ ButtonProps={{
+ id: "cta-btn",
+ text:
+ props.locale === "en"
+ ? pageData.scFragments[6].scLabsButton[0].scTitleEn
+ : pageData.scFragments[6].scLabsButton[0].scTitleFr,
+ href:
+ props.locale === "en"
+ ? pageData.scFragments[6].scLabsButton[0].scDestinationURLEn
+ : pageData.scFragments[6].scLabsButton[0].scDestinationURLFr,
+ className:
+ "w-fit bg-[#26374A] mt-4 text-white visited:text-white hover:bg-[#1C578A] hover:no-underline hover:text-white active:bg-[#16446C]",
+ }}
+ containerClass="layout-container my-4"
+ /> */}
+ </Layout>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ // get page data from AEM
+ const { data: pageData } = await aemServiceInstance.getFragment(
+ "benefitsNavigatorQuery"
+ );
+ // get dictionary
+ const { data: dictionary } = await aemServiceInstance.getFragment(
+ "dictionaryQuery"
+ );
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ pageData: pageData.scLabsPagev1ByPath,
+ updatesData: pageData.scLabsPagev1ByPath.item.scLabProjectUpdates,
+ dictionary: dictionary.dictionaryV1List,
+ ...(await serverSideTranslations(locale, ["common"])),
+ },
+ // revalidate: 10,
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/dashboard/index.html b/main/coverage/lcov-report/pages/projects/dashboard/index.html
new file mode 100644
index 0000000000..5e3ebf696e
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/dashboard/index.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Code coverage report for pages/projects/dashboard
+
+
+
+
+
+
+
+
+
+
+
+
All files pages/projects/dashboard
+
+
+
+ 0%
+ Statements
+ 0/13
+
+
+
+
+ 0%
+ Branches
+ 0/94
+
+
+
+
+ 0%
+ Functions
+ 0/4
+
+
+
+
+ 0%
+ Lines
+ 0/13
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ index.js
+
+
+
+ 0%
+ 0/13
+ 0%
+ 0/94
+ 0%
+ 0/4
+ 0%
+ 0/13
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/dashboard/index.js.html b/main/coverage/lcov-report/pages/projects/dashboard/index.js.html
new file mode 100644
index 0000000000..cd2d9c1471
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/dashboard/index.js.html
@@ -0,0 +1,1417 @@
+
+
+
+
+
+ Code coverage report for pages/projects/dashboard/index.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/13
+
+
+
+
+ 0%
+ Branches
+ 0/94
+
+
+
+
+ 0%
+ Functions
+ 0/4
+
+
+
+
+ 0%
+ Lines
+ 0/13
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../../../components/organisms/Layout";
+import { ActionButton } from "../../../components//atoms/ActionButton";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import { CTA } from "@dts-stn/service-canada-design-system";
+import { Heading } from "@dts-stn/service-canada-design-system";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+
+export default function MscaDashboard( props) {
+ const [pageData] = useState(props.pageData.item);
+ const [filteredDictionary] = useState(
+ props.dictionary.items.filter(
+ (i tem) =>
+ item.scId === "STARTED" ||
+ item.scId === "ENDED" ||
+ item.scId === "PROJECT-STAGE" ||
+ item.scId === "SUMMARY"
+ )
+ );
+ const stageDictionary = {
+ en: {
+ "gc:custom/decd-endc/project-stage/alpha": "Alpha",
+ "gc:custom/decd-endc/project-stage/beta": "Beta",
+ },
+ fr: {
+ "gc:custom/decd-endc/project-stage/alpha": "Alpha",
+ "gc:custom/decd-endc/project-stage/beta": "Bêta",
+ },
+ };
+
+ useEffect(() => {
+ if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ return (
+ <>
+ <Layout
+ locale={props.locale}
+ langUrl={
+ props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+ }
+ dateModifiedOverride={pageData.scDateModifiedOverwrite}
+ breadcrumbItems={createBreadcrumbs(
+ pageData.scBreadcrumbParentPages,
+ props.locale
+ )}
+ >
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title>
+ {props.locale === "en"
+ ? `${pageData.scTitleEn} - Service Canada Labs`
+ : `${pageData.scTitleFr} - Laboratoires de Service Canada`}
+ </title>
+ <meta
+ name="description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link
+ rel="canonical"
+ href={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta
+ name="keywords"
+ content={
+ props.locale === "en"
+ ? pageData.scKeywordsEn
+ : pageData.scKeywordsFr
+ }
+ />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ name="dcterms.title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2/T"
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-07-20" />
+
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta
+ name="dcterms.description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ name="dcterms.subject"
+ title="gccore"
+ content={pageData.scSubject}
+ />
+ <meta name="dcterms.spatial" content="Canada" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="og:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ property="og:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[0].content[0].value
+ : pageData.scFragments[0].scContentFr.json[0].content[0].value
+ }
+ />
+ {/* <meta
+ property="og:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ /> */}
+ <meta
+ property="og:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="twitter:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+ : pageData.scFragments[0].scContentFr.json[1].content[0].value
+ }
+ />
+ {/* <meta
+ property="twitter:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ /> */}
+ <meta
+ property="twitter:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ </Head>
+
+ <div className="layout-container">
+ <section aria-labelledby="pageMainTitle">
+ <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+ <div className="col-span-2">
+ <Heading
+ tabIndex="-1"
+ id="pageMainTitle"
+ title={
+ props.locale === "en"
+ ? pageData.scTitleEn
+ : pageData.scTitleFr
+ }
+ />
+ </div>
+ <div className="hidden lg:grid row-span-2 row-start-2 col-start-2 p-0 mx-4">
+ <div className="flex justify-center">
+ <div className="object-fill h-auto w-auto max-w-450px">
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[1].scImageEn._publishUrl
+ : pageData.scFragments[1].scImageFr._publishUrl
+ }
+ alt={
+ (props.locale === "en"
+ ? pageData.scFragments[1].scImageAltTextEn
+ : pageData.scFragments[1].scImageAltTextFr) ?? ""
+ }
+ width={468}
+ height={462}
+ />
+ </div>
+ </div>
+ </div>
+ <p className="row-start-2 font-body text-lg mb-4">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+ : pageData.scFragments[0].scContentFr.json[1].content[0]
+ .value}
+ </p>
+ <div className="row-start-3">
+ <ProjectInfo
+ locale={props.locale}
+ termStarted={
+ props.locale === "en"
+ ? filteredDictionary[2].scTermEn
+ : filteredDictionary[2].scTermFr
+ }
+ termStage={
+ props.locale === "en"
+ ? filteredDictionary[1].scTermEn
+ : filteredDictionary[1].scTermFr
+ }
+ termSummary={
+ props.locale === "en"
+ ? filteredDictionary[3].scTermEn
+ : filteredDictionary[3].scTermFr
+ }
+ dateStarted={
+ pageData.scFragments[0].scContentEn.json[2].content[0].value
+ }
+ term={
+ props.locale === "en"
+ ? pageData.scFragments[2].scContentEn.json[0].content[0]
+ .value
+ : pageData.scFragments[2].scContentFr.json[0].content[0]
+ .value
+ }
+ definition={
+ props.locale === "en"
+ ? pageData.scFragments[2].scContentEn.json[0].content[1]
+ .value
+ : pageData.scFragments[2].scContentFr.json[0].content[1]
+ .value
+ }
+ information={
+ props.locale === "en"
+ ? pageData.scFragments[2].scTitleEn
+ : pageData.scFragments[2].scTitleFr
+ }
+ stage={
+ props.locale === "en"
+ ? stageDictionary.en[pageData.scLabProjectStage]
+ : stageDictionary.fr[pageData.scLabProjectStage]
+ }
+ summary={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[4].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[4].content[0]
+ .value
+ }
+ />
+ </div>
+ </div>
+ </section>
+ <section id="pageMainContent">
+ <div className="grid grid-cols-12">
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[0].content[0].value
+ : pageData.scFragments[3].scContentFr.json[0].content[0]
+ .value}
+ </h2>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[1].content[0].value
+ : pageData.scFragments[3].scContentFr.json[1].content[0]
+ .value}
+ </p>
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[2].content[0].value
+ : pageData.scFragments[3].scContentFr.json[2].content[0]
+ .value}
+ </h2>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[3].content[0].value
+ : pageData.scFragments[3].scContentFr.json[3].content[0]
+ .value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[4].content[0].value
+ : pageData.scFragments[3].scContentFr.json[4].content[0]
+ .value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[5].content[0].value
+ : pageData.scFragments[3].scContentFr.json[5].content[0]
+ .value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[6].content[0].value
+ : pageData.scFragments[3].scContentFr.json[6].content[0]
+ .value}
+ </p>
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[7].content[0].value
+ : pageData.scFragments[3].scContentFr.json[7].content[0]
+ .value}
+ </h2>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[8].content[0].value
+ : pageData.scFragments[3].scContentFr.json[8].content[0]
+ .value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[9].content[0].value
+ : pageData.scFragments[3].scContentFr.json[9].content[0]
+ .value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[10].content[0]
+ .value
+ : pageData.scFragments[3].scContentFr.json[10].content[0]
+ .value}
+ </p>
+ </div>
+ </section>
+ </div>
+ {/* <CTA
+ heading={
+ props.locale === "en"
+ ? pageData.scFragments[6].scTitleEn
+ : pageData.scFragments[6].scTitleFr
+ }
+ body={
+ props.locale === "en"
+ ? pageData.scFragments[6].scContentEn.json[0].content[0].value
+ : pageData.scFragments[6].scContentFr.json[0].content[0].value
+ }
+ ButtonProps={{
+ id: "cta-btn",
+ text:
+ props.locale === "en"
+ ? pageData.scFragments[6].scLabsButton[0].scTitleEn
+ : pageData.scFragments[6].scLabsButton[0].scTitleFr,
+ href:
+ props.locale === "en"
+ ? pageData.scFragments[6].scLabsButton[0].scDestinationURLEn
+ : pageData.scFragments[6].scLabsButton[0].scDestinationURLFr,
+ className:
+ "w-fit bg-[#26374A] mt-4 text-white visited:text-white hover:bg-[#1C578A] hover:no-underline hover:text-white active:bg-[#16446C]",
+ }}
+ containerClass="layout-container my-4"
+ /> */}
+ </Layout>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ // get page data from AEM
+ const { data: pageData } = await aemServiceInstance.getFragment(
+ "mscadPageQuery"
+ );
+ // get dictionary
+ const { data: dictionary } = await aemServiceInstance.getFragment(
+ "dictionaryQuery"
+ );
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ pageData: pageData.scLabsPagev1ByPath,
+ dictionary: dictionary.dictionaryV1List,
+ ...(await serverSideTranslations(locale, ["common"])),
+ },
+ // revalidate: 10,
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/[id].js.html b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/[id].js.html
new file mode 100644
index 0000000000..c8326e92ba
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/[id].js.html
@@ -0,0 +1,1579 @@
+
+
+
+
+
+ Code coverage report for pages/projects/oas-benefits-estimator/[id].js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Statements
+ 0/20
+
+
+
+
+ 0%
+ Branches
+ 0/122
+
+
+
+
+ 0%
+ Functions
+ 0/6
+
+
+
+
+ 0%
+ Lines
+ 0/20
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useTranslation } from "next-i18next";
+import { Layout } from "../../../components/organisms/Layout";
+import { ActionButton } from "../../../components/atoms/ActionButton";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { CTA, Heading } from "@dts-stn/service-canada-design-system";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+
+export default function OASUpdatePage( props) {
+ const { t } = useTranslation("common");
+ const [pageData] = useState(props.pageData);
+ const [dictionary] = useState(props.dictionary.items);
+
+ useEffect(() => {
+ if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ return (
+ <>
+ <Layout
+ locale={props.locale}
+ langUrl={
+ props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+ }
+ dateModifiedOverride={pageData.scDateModifiedOverwrite}
+ breadcrumbItems={createBreadcrumbs(
+ pageData.scBreadcrumbParentPages,
+ props.locale
+ )}
+ >
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title>
+ {props.locale === "en"
+ ? `${pageData.scTitleEn} - Service Canada Labs`
+ : `${pageData.scTitleFr} - Laboratoires de Service Canada`}
+ </title>
+ <meta
+ name="description"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta
+ name="keywords"
+ content={
+ props.locale === "en"
+ ? pageData.scKeywordsEn
+ : pageData.scKeywordsFr
+ }
+ />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ name="dcterms.title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2/T"
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2023-07-07" />
+
+ <meta name="dcterms.modified" title="W3CDTF" content="2023-07-07" />
+ <meta
+ name="dcterms.description"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.subject"
+ title="gccore"
+ content={pageData.scSubject}
+ />
+ <meta name="dcterms.spatial" content="Canada" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="og:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ property="og:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[1].content[0].value
+ : pageData.scFragments[1].scContentFr.json[1].content[0].value
+ }
+ />
+ <meta
+ property="og:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="og:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="twitter:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[1].content[0].value
+ : pageData.scFragments[1].scContentFr.json[1].content[0].value
+ }
+ />
+ <meta
+ property="twitter:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="twitter:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ </Head>
+ <section className="layout-container mb-12">
+ <Heading
+ tabIndex="-1"
+ id="pageMainTitle"
+ title={
+ props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[0].content[0].value
+ : pageData.scFragments[1].scContentFr.json[0].content[0].value
+ }
+ />
+ <div id="postedOnUpdatedOnSection" className="grid grid-cols-12">
+ <p
+ className={`col-span-6 sm:col-span-4 ${
+ props.locale === "en" ? "lg:col-span-2" : "lg:col-span-3"
+ } font-bold`}
+ >
+ {props.locale === "en"
+ ? dictionary[9].scTermEn
+ : dictionary[9].scTermFr}
+ </p>
+ <p className="col-span-6 col-start-7 sm:col-start-5 lg:col-span-2 md:col-start-5 mt-0">
+ {pageData.scDateModifiedOverwrite}
+ </p>
+ <p
+ className={`row-start-2 col-span-6 sm:col-span-4 mt-0 ${
+ props.locale === "en" ? "lg:col-span-2" : "lg:col-span-3"
+ } font-bold`}
+ >
+ {props.locale === "en"
+ ? dictionary[4].scTermEn
+ : dictionary[4].scTermFr}
+ </p>
+ <p className="row-start-2 col-span-6 col-start-7 sm:col-start-5 lg:col-span-2 md:col-start-5 mt-auto">
+ {pageData.scDateModifiedOverwrite}
+ </p>
+ </div>
+ <div
+ id="mainContentSection"
+ className="grid grid-cols-12 pt-16 gap-x-2"
+ >
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[1].content[0].value
+ : pageData.scFragments[1].scContentFr.json[1].content[0].value}
+ </p>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[2].content[0].value
+ : pageData.scFragments[1].scContentFr.json[2].content[0].value}
+ </p>
+ <div className="hidden lg:grid col-start-9 col-span-4 row-start-1 row-span-2">
+ <div className="flex justify-center">
+ <div className="h-auto max-w-xs">
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[0].scImageEn._publishUrl
+ : pageData.scFragments[0].scImageFr._publishUrl
+ }
+ alt={
+ props.locale === "en"
+ ? pageData.scFragments[0].scImageAltTextEn
+ : pageData.scFragments[0].scImageAltTextFr
+ }
+ width={468}
+ height={462}
+ />
+ </div>
+ </div>
+ </div>
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[3].content[0].value
+ : pageData.scFragments[1].scContentFr.json[3].content[0].value}
+ </h2>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[4].content[0].value
+ : pageData.scFragments[1].scContentFr.json[4].content[0].value}
+ </p>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[5].content[0].value
+ : pageData.scFragments[1].scContentFr.json[5].content[0].value}
+ </p>
+ <ul className="col-span-12 lg:col-span-8">
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[6].content[0]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[6].content[0]
+ .content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[6].content[1]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[6].content[1]
+ .content[0].value}
+ </li>
+ <li>
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[6].content[2]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[6].content[2]
+ .content[0].value}
+ </li>
+ </ul>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[7].content[0].value
+ : pageData.scFragments[1].scContentFr.json[7].content[0].value}
+ </p>
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[8].content[0].value
+ : pageData.scFragments[1].scContentFr.json[8].content[0].value}
+ </h2>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[9].content[0].value
+ : pageData.scFragments[1].scContentFr.json[9].content[0].value}
+ </p>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[10].content[0].value
+ : pageData.scFragments[1].scContentFr.json[10].content[0].value}
+ </p>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[11].content[0].value
+ : pageData.scFragments[1].scContentFr.json[11].content[0].value}
+ </p>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[12].content[0].value
+ : pageData.scFragments[1].scContentFr.json[12].content[0].value}
+ </p>
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[13].content[0].value
+ : pageData.scFragments[1].scContentFr.json[13].content[0].value}
+ </h2>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[14].content[0].value
+ : pageData.scFragments[1].scContentFr.json[14].content[0].value}
+ </p>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[15].content[0].value
+ : pageData.scFragments[1].scContentFr.json[15].content[0].value}
+ </p>
+ <ul className="col-span-12 lg:col-span-8">
+ <li className="text-[20px]">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[16].content[0]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[16].content[0]
+ .content[0].value}
+ </li>
+ <li className="text-[20px]">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[16].content[1]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[16].content[1]
+ .content[0].value}
+ </li>
+ </ul>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[17].content[0].value
+ : pageData.scFragments[1].scContentFr.json[17].content[0].value}
+ </p>
+ <ul className="col-span-12 lg:col-span-8">
+ <li className="text-[20px]">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[18].content[0]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[18].content[0]
+ .content[0].value}
+ </li>
+ <li className="text-[20px]">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[18].content[1]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[18].content[1]
+ .content[0].value}
+ </li>
+ <li className="text-[20px]">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[18].content[2]
+ .content[0].value
+ : pageData.scFragments[1].scContentFr.json[18].content[2]
+ .content[0].value}
+ </li>
+ </ul>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[19].content[0].value
+ : pageData.scFragments[1].scContentFr.json[19].content[0].value}
+ </p>
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[20].content[0].value
+ : pageData.scFragments[1].scContentFr.json[20].content[0].value}
+ </h2>
+ <p className="col-span-12 lg:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[1].scContentEn.json[21].content[0].value
+ : pageData.scFragments[1].scContentFr.json[21].content[0].value}
+ </p>
+ <ActionButton
+ id="feedback-btn"
+ style="secondary"
+ custom="col-span-12 mt-8"
+ href={
+ props.locale === "en"
+ ? pageData.scFragments[2].scDestinationURLEn
+ : pageData.scFragments[2].scDestinationURLFr
+ }
+ text={
+ props.locale === "en"
+ ? pageData.scFragments[2].scTitleEn
+ : pageData.scFragments[2].scTitleFr
+ }
+ ariaExpanded={props.ariaExpanded}
+ />
+ </div>
+ </section>
+ <CTA
+ heading={
+ props.locale === "en"
+ ? pageData.scFragments[3].scTitleEn
+ : pageData.scFragments[3].scTitleFr
+ }
+ body={
+ props.locale === "en"
+ ? pageData.scFragments[3].scContentEn.json[0].content[0].value
+ : pageData.scFragments[3].scContentFr.json[0].content[0].value
+ }
+ ButtonProps={{
+ id: "cta-btn",
+ text:
+ props.locale === "en"
+ ? pageData.scFragments[3].scLabsButton[0].scTitleEn
+ : pageData.scFragments[3].scLabsButton[0].scTitleFr,
+ href:
+ props.locale === "en"
+ ? pageData.scFragments[3].scLabsButton[0].scDestinationURLEn
+ : pageData.scFragments[3].scLabsButton[0].scDestinationURLFr,
+ className:
+ "w-fit bg-[#26374A] mt-4 text-white visited:text-white hover:bg-[#1C578A] hover:no-underline hover:text-white active:bg-[#16446C]",
+ }}
+ containerClass="layout-container my-4"
+ />
+ </Layout>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export async function getStaticPaths( ) {
+ // Get pages data
+ const { data } = await aemServiceInstance.getFragment(
+ "oasBenefitsEstimatorArticlesQuery"
+ );
+ // Get paths for dynamic routes from the page name data
+ const paths = getAllUpdateIds(data.scLabsPagev1List.items);
+ // Remove characters preceding the page name itself i.e. change "/en/projects/oas-benefits-estimator/what-we-learned" to "what-we-learned"
+ paths.map((p ath) => {
+ path.locale === "en"
+ ? (path.params.id = path.params.id.slice(36))
+ : (path.params.id = path.params.id.slice(38));
+ });
+ return {
+ paths,
+ fallback: false,
+ };
+}
+
+export const getStaticProps = as ync ({ locale, params }) => {
+ // Get pages data
+ const { data } = await aemServiceInstance.getFragment(
+ "oasBenefitsEstimatorArticlesQuery"
+ );
+ // get dictionary
+ const { data: dictionary } = await aemServiceInstance.getFragment(
+ "dictionaryQuery"
+ );
+ const pages = data.scLabsPagev1List.items;
+ // Return page data that matches the current page being built
+ const pageData = pages.filter((p age) => {
+ return (
+ page.scPageNameEn.slice(36) === params.id ||
+ page.scPageNameFr.slice(38) === params.id
+ );
+ });
+ return {
+ props: {
+ locale: locale,
+ pageData: pageData[0],
+ dictionary: dictionary.dictionaryV1List,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ ...(await serverSideTranslations(locale, ["common", "vc"])),
+ },
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.html b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.html
new file mode 100644
index 0000000000..5e8114535d
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.html
@@ -0,0 +1,131 @@
+
+
+
+
+
+ Code coverage report for pages/projects/oas-benefits-estimator
+
+
+
+
+
+
+
+
+
+
+
+
All files pages/projects/oas-benefits-estimator
+
+
+
+ 30.55%
+ Statements
+ 11/36
+
+
+
+
+ 25.42%
+ Branches
+ 60/236
+
+
+
+
+ 36.36%
+ Functions
+ 4/11
+
+
+
+
+ 30.55%
+ Lines
+ 11/36
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File
+
+ Statements
+
+ Branches
+
+ Functions
+
+ Lines
+
+
+
+
+ [id].js
+
+
+
+ 0%
+ 0/20
+ 0%
+ 0/122
+ 0%
+ 0/6
+ 0%
+ 0/20
+
+
+
+ index.js
+
+
+
+ 68.75%
+ 11/16
+ 52.63%
+ 60/114
+ 80%
+ 4/5
+ 68.75%
+ 11/16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.js.html b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.js.html
new file mode 100644
index 0000000000..cbfdbe3665
--- /dev/null
+++ b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.js.html
@@ -0,0 +1,1516 @@
+
+
+
+
+
+ Code coverage report for pages/projects/oas-benefits-estimator/index.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 68.75%
+ Statements
+ 11/16
+
+
+
+
+ 52.63%
+ Branches
+ 60/114
+
+
+
+
+ 80%
+ Functions
+ 4/5
+
+
+
+
+ 68.75%
+ Lines
+ 11/16
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b , p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+1x
+
+
+12x
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+1x
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../../../components/organisms/Layout";
+import { ActionButton } from "../../../components//atoms/ActionButton";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import { CTA } from "@dts-stn/service-canada-design-system";
+import { Heading } from "@dts-stn/service-canada-design-system";
+import Card from "../../../components/molecules/Card";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+
+export default function OasBenefitsEstimator(props) {
+ const [pageData] = useState(props.pageData.item);
+ const [updatesData] = useState(props.updatesData);
+ const [filteredDictionary] = useState(
+ props.dictionary.items.filter(
+ (item) =>
+ item.scId === "STARTED" ||
+ item.scId === "ENDED" ||
+ item.scId === "PROJECT-STAGE" ||
+ item.scId === "SUMMARY"
+ )
+ );
+ const stageDictionary = {
+ en: {
+ "gc:custom/decd-endc/project-stage/alpha": "Alpha",
+ "gc:custom/decd-endc/project-stage/beta": "Beta",
+ },
+ fr: {
+ "gc:custom/decd-endc/project-stage/alpha": "Alpha",
+ "gc:custom/decd-endc/project-stage/beta": "Bêta",
+ },
+ };
+
+ const displayProjectUpdates = updatesData.map((update) => (
+ <li key={update.scId} className="list-none ml-0 col-span-12 lg:col-span-4">
+ <Card
+ showImage
+ imgSrc={
+ props.locale === "en"
+ ? `https://www.canada.ca${update.scSocialMediaImageEn._path}`
+ : `https://www.canada.ca${update.scSocialMediaImageFr._path}`
+ }
+ imgAlt={
+ (props.locale === "en"
+ ? update.scSocialMediaImageAltTextEn
+ : update.scSocialMediaImageAltTextFr) ?? ""
+ }
+ title={props.locale === "en" ? update.scTitleEn : update.scTitleFr}
+ href={props.locale === "en" ? update.scPageNameEn : update.scPageNameFr}
+ description={`${
+ props.locale === "en"
+ ? props.dictionary.items[9].scTermEn
+ : props.dictionary.items[9].scTermFr
+ } ${update.scDateModifiedOverwrite}`}
+ />
+ </li>
+ ));
+
+ useEffect(() => {
+ I if (props.adobeAnalyticsUrl) {
+ window.adobeDataLayer = window.adobeDataLayer || [];
+ window.adobeDataLayer.push({ event: "pageLoad" });
+ }
+ }, []);
+
+ return (
+ <>
+ <Layout
+ locale={props.locale}
+ langUrl={
+ props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+ }
+ dateModifiedOverride={pageData.scDateModifiedOverwrite}
+ breadcrumbItems={createBreadcrumbs(
+ pageData.scBreadcrumbParentPages,
+ props.locale
+ )}
+ >
+ <Head>
+ {props.adobeAnalyticsUrl ? (
+ <script src={props.adobeAnalyticsUrl} />
+ ) : (
+ ""
+ )}
+
+ {/* Primary HTML Meta Tags */}
+ <title>
+ {props.locale === "en"
+ ? `${pageData.scTitleEn} - Service Canada Labs`
+ : `${pageData.scTitleFr} - Laboratoires de Service Canada`}
+ </title>
+ <meta
+ name="description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta name="author" content="Service Canada" />
+ <link rel="icon" href="/favicon.ico" />
+ <link
+ rel="canonical"
+ href={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <link rel="schema.dcterms" href="http://purl.org/dc/terms/" />
+ <meta
+ name="keywords"
+ content={
+ props.locale === "en"
+ ? pageData.scKeywordsEn
+ : pageData.scKeywordsFr
+ }
+ />
+
+ {/* DCMI Meta Tags */}
+ <meta
+ name="dcterms.title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ name="dcterms.language"
+ content={props.locale === "en" ? "eng" : "fra"}
+ title="ISO639-2/T"
+ />
+ <meta
+ name="dcterms.creator"
+ content={
+ props.locale === "en"
+ ? "Employment and Social Development Canada"
+ : "Emploi et Développement social Canada"
+ }
+ />
+ <meta name="dcterms.accessRights" content="2" />
+ <meta
+ name="dcterms.service"
+ content="ESDC-EDSC_SCLabs-LaboratoireSC"
+ />
+ <meta name="dcterms.issued" title="W3CDTF" content="2021-07-20" />
+
+ <meta name="dcterms.modified" title="W3CDTF" content="2021-12-16" />
+ <meta
+ name="dcterms.description"
+ content={
+ props.locale === "en"
+ ? pageData.scDescriptionEn.json[0].content[0].value
+ : pageData.scDescriptionFr.json[0].content[0].value
+ }
+ />
+ <meta
+ name="dcterms.subject"
+ title="gccore"
+ content={pageData.scSubject}
+ />
+ <meta name="dcterms.spatial" content="Canada" />
+
+ {/* Open Graph / Facebook */}
+ <meta property="og:type" content="website" />
+ <meta property="og:locale" content={props.locale} />
+ <meta
+ property="og:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="og:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta
+ property="og:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[0].content[0].value
+ : pageData.scFragments[0].scContentFr.json[0].content[0].value
+ }
+ />
+ <meta
+ property="og:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="og:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+
+ {/* Twitter */}
+ <meta property="twitter:card" content="summary_large_image" />
+ <meta
+ property="twitter:url"
+ content={
+ "https://alpha.service.canada.ca" +
+ `${
+ props.locale === "en"
+ ? pageData.scPageNameEn
+ : pageData.scPageNameFr
+ }`
+ }
+ />
+ <meta
+ property="twitter:title"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ <meta name="twitter:creator" content="Service Canada" />
+ <meta
+ property="twitter:description"
+ content={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+ : pageData.scFragments[0].scContentFr.json[1].content[0].value
+ }
+ />
+ <meta
+ property="twitter:image"
+ content={pageData.scSocialMediaImageEn._publishUrl}
+ />
+ <meta
+ property="twitter:image:alt"
+ content={
+ props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+ }
+ />
+ </Head>
+
+ <div className="layout-container">
+ <section aria-labelledby="pageMainTitle">
+ <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+ <div className="col-span-2">
+ <Heading
+ tabIndex="-1"
+ id="pageMainTitle"
+ title={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[0].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[0].content[0]
+ .value
+ }
+ />
+ </div>
+ <div className="hidden lg:grid row-span-2 row-start-2 col-start-2 p-0 mx-4">
+ <div className="flex justify-center">
+ <div className="object-fill h-auto w-auto max-w-450px">
+ <img
+ src={
+ props.locale === "en"
+ ? pageData.scFragments[1].scImageEn._publishUrl
+ : pageData.scFragments[1].scImageFr._publishUrl
+ }
+ alt={
+ (props.locale === "en"
+ ? pageData.scFragments[1].scImageAltTextEn
+ : pageData.scFragments[1].scImageAltTextFr) ?? ""
+ }
+ width={468}
+ height={462}
+ />
+ </div>
+ </div>
+ </div>
+ <p className="row-start-2 font-body text-lg mb-4">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+ : pageData.scFragments[0].scContentFr.json[1].content[0]
+ .value}
+ </p>
+ <div className="row-start-3">
+ <ProjectInfo
+ locale={props.locale}
+ termStarted={
+ props.locale === "en"
+ ? filteredDictionary[2].scTermEn
+ : filteredDictionary[2].scTermFr
+ }
+ termStage={
+ props.locale === "en"
+ ? filteredDictionary[1].scTermEn
+ : filteredDictionary[1].scTermFr
+ }
+ termSummary={
+ props.locale === "en"
+ ? filteredDictionary[3].scTermEn
+ : filteredDictionary[3].scTermFr
+ }
+ dateStarted={
+ pageData.scFragments[0].scContentEn.json[2].content[0].value
+ }
+ term={
+ props.locale === "en"
+ ? pageData.scFragments[2].scContentEn.json[0].content[0]
+ .value
+ : pageData.scFragments[2].scContentFr.json[0].content[0]
+ .value
+ }
+ definition={
+ props.locale === "en"
+ ? pageData.scFragments[2].scContentEn.json[0].content[1]
+ .value
+ : pageData.scFragments[2].scContentFr.json[0].content[1]
+ .value
+ }
+ information={
+ props.locale === "en"
+ ? pageData.scFragments[2].scTitleEn
+ : pageData.scFragments[2].scTitleFr
+ }
+ stage={
+ props.locale === "en"
+ ? stageDictionary.en[pageData.scLabProjectStage]
+ : stageDictionary.fr[pageData.scLabProjectStage]
+ }
+ summary={
+ props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[4].content[0]
+ .value
+ : pageData.scFragments[0].scContentFr.json[4].content[0]
+ .value
+ }
+ />
+ </div>
+ </div>
+ </section>
+ <div className="grid grid-cols-12">
+ <h2 className="col-span-12 text-[20px]">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[5].content[0].value
+ : pageData.scFragments[0].scContentFr.json[5].content[0].value}
+ </h2>
+ <ActionButton
+ id="try-btn"
+ style="primary"
+ custom="col-span-12"
+ href={
+ props.locale === "en"
+ ? pageData.scFragments[4].scDestinationURLEn
+ : pageData.scFragments[4].scDestinationURLFr
+ }
+ text={
+ props.locale === "en"
+ ? pageData.scFragments[4].scTitleEn
+ : pageData.scFragments[4].scTitleFr
+ }
+ ariaExpanded={props.ariaExpanded}
+ />
+ <h2 className="col-span-12">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[6].content[0].value
+ : pageData.scFragments[0].scContentFr.json[6].content[0].value}
+ </h2>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[7].content[0].value
+ : pageData.scFragments[0].scContentFr.json[7].content[0].value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[8].content[0].value
+ : pageData.scFragments[0].scContentFr.json[8].content[0].value}
+ </p>
+ <p className="col-span-12 xl:col-span-8">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[9].content[0].value
+ : pageData.scFragments[0].scContentFr.json[9].content[0].value}
+ </p>
+ </div>
+ <h2 className="text-[20px]">
+ {props.locale === "en"
+ ? pageData.scFragments[0].scContentEn.json[10].content[0].value
+ : pageData.scFragments[0].scContentFr.json[10].content[0].value}
+ </h2>
+ <div className="grid md:flex">
+ <ActionButton
+ id="feedback-btn-2"
+ style="secondary"
+ href={
+ props.locale === "en"
+ ? pageData.scFragments[5].scDestinationURLEn
+ : pageData.scFragments[5].scDestinationURLFr
+ }
+ text={
+ props.locale === "en"
+ ? pageData.scFragments[5].scTitleEn
+ : pageData.scFragments[5].scTitleFr
+ }
+ ariaExpanded={props.ariaExpanded}
+ />
+ </div>
+ <h2>
+ {props.locale === "en"
+ ? props.dictionary.items[11].scTermEn
+ : props.dictionary.items[11].scTermFr}
+ </h2>
+ <ul className="grid lg:grid-cols-12 gap-x-4 lg:gap-y-12 list-none ml-0 mb-12">
+ {displayProjectUpdates}
+ </ul>
+ </div>
+
+ <CTA
+ heading={
+ props.locale === "en"
+ ? pageData.scFragments[6].scTitleEn
+ : pageData.scFragments[6].scTitleFr
+ }
+ body={
+ props.locale === "en"
+ ? pageData.scFragments[6].scContentEn.json[0].content[0].value
+ : pageData.scFragments[6].scContentFr.json[0].content[0].value
+ }
+ ButtonProps={{
+ id: "cta-btn",
+ text:
+ props.locale === "en"
+ ? pageData.scFragments[6].scLabsButton[0].scTitleEn
+ : pageData.scFragments[6].scLabsButton[0].scTitleFr,
+ href:
+ props.locale === "en"
+ ? pageData.scFragments[6].scLabsButton[0].scDestinationURLEn
+ : pageData.scFragments[6].scLabsButton[0].scDestinationURLFr,
+ className:
+ "w-fit bg-[#26374A] mt-4 text-white visited:text-white hover:bg-[#1C578A] hover:no-underline hover:text-white active:bg-[#16446C]",
+ }}
+ containerClass="layout-container my-4"
+ />
+ </Layout>
+ {props.adobeAnalyticsUrl ? (
+ <script type="text/javascript">_satellite.pageBottom()</script>
+ ) : (
+ ""
+ )}
+ </>
+ );
+}
+
+export const getStaticProps = as ync ({ locale }) => {
+ // get page data from AEM
+ const { data: pageData } = await aemServiceInstance.getFragment(
+ "oasBenefitsEstimatorQuery"
+ );
+ // get dictionary
+ const { data: dictionary } = await aemServiceInstance.getFragment(
+ "dictionaryQuery"
+ );
+
+ return {
+ props: {
+ locale: locale,
+ adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL,
+ pageData: pageData.scLabsPagev1ByPath,
+ updatesData: pageData.scLabsPagev1ByPath.item.scLabProjectUpdates,
+ dictionary: dictionary.dictionaryV1List,
+ ...(await serverSideTranslations(locale, ["common"])),
+ },
+ // revalidate: 10,
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/coverage/lcov-report/prettify.css b/main/coverage/lcov-report/prettify.css
new file mode 100644
index 0000000000..b317a7cda3
--- /dev/null
+++ b/main/coverage/lcov-report/prettify.css
@@ -0,0 +1 @@
+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
diff --git a/main/coverage/lcov-report/prettify.js b/main/coverage/lcov-report/prettify.js
new file mode 100644
index 0000000000..b3225238f2
--- /dev/null
+++ b/main/coverage/lcov-report/prettify.js
@@ -0,0 +1,2 @@
+/* eslint-disable */
+window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^